Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 9 Jan 2012 16:11:13 +0000 (08:11 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 9 Jan 2012 16:11:13 +0000 (08:11 -0800)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (31 commits)
  [S390] disassembler: mark exception causing instructions
  [S390] Enable exception traces by default
  [S390] return address of compat signals
  [S390] sysctl: get rid of dead declaration
  [S390] dasd: fix fixpoint divide exception in define_extent
  [S390] dasd: add sanity check to detect path connection error
  [S390] qdio: fix kernel panic for zfcp 31-bit
  [S390] Add s390x description to Documentation/kdump/kdump.txt
  [S390] Add VMCOREINFO_SYMBOL(high_memory) to vmcoreinfo
  [S390] dasd: fix expiration handling for recovery requests
  [S390] outstanding interrupts vs. smp_send_stop
  [S390] ipc: call generic sys_ipc demultiplexer
  [S390] zcrypt: Fix error return codes.
  [S390] zcrypt: Rework length parameter checking.
  [S390] cleanup trap handling
  [S390] Remove Kerntypes leftovers
  [S390] topology: increase poll frequency if change is anticipated
  [S390] entry[64].S improvements
  [S390] make arch/s390 subdirectories depend on config option
  [S390] kvm: move cmf host id constant out of lowcore
  ...

Fix up conflicts in arch/s390/kernel/{smp.c,topology.c} due to the
sysdev removal clashing with "topology: get rid of ifdefs" which moved
some of that code around.

1  2 
arch/s390/Kconfig
arch/s390/kernel/setup.c
arch/s390/kernel/smp.c
arch/s390/kernel/topology.c
drivers/s390/net/qeth_core_main.c

Simple merge
Simple merge
@@@ -889,52 -923,21 +923,21 @@@ out
        put_online_cpus();
        return rc ? rc : count;
  }
 -static SYSDEV_ATTR(configure, 0644, cpu_configure_show, cpu_configure_store);
 +static DEVICE_ATTR(configure, 0644, cpu_configure_show, cpu_configure_store);
  #endif /* CONFIG_HOTPLUG_CPU */
  
- static ssize_t cpu_polarization_show(struct device *dev,
-                                    struct device_attribute *attr, char *buf)
- {
-       int cpu = dev->id;
-       ssize_t count;
-       mutex_lock(&smp_cpu_state_mutex);
-       switch (smp_cpu_polarization[cpu]) {
-       case POLARIZATION_HRZ:
-               count = sprintf(buf, "horizontal\n");
-               break;
-       case POLARIZATION_VL:
-               count = sprintf(buf, "vertical:low\n");
-               break;
-       case POLARIZATION_VM:
-               count = sprintf(buf, "vertical:medium\n");
-               break;
-       case POLARIZATION_VH:
-               count = sprintf(buf, "vertical:high\n");
-               break;
-       default:
-               count = sprintf(buf, "unknown\n");
-               break;
-       }
-       mutex_unlock(&smp_cpu_state_mutex);
-       return count;
- }
- static DEVICE_ATTR(polarization, 0444, cpu_polarization_show, NULL);
 -static ssize_t show_cpu_address(struct sys_device *dev,
 -                              struct sysdev_attribute *attr, char *buf)
 +static ssize_t show_cpu_address(struct device *dev,
 +                              struct device_attribute *attr, char *buf)
  {
        return sprintf(buf, "%d\n", __cpu_logical_map[dev->id]);
  }
 -static SYSDEV_ATTR(address, 0444, show_cpu_address, NULL);
 +static DEVICE_ATTR(address, 0444, show_cpu_address, NULL);
  
  static struct attribute *cpu_common_attrs[] = {
  #ifdef CONFIG_HOTPLUG_CPU
 -      &attr_configure.attr,
 +      &dev_attr_configure.attr,
  #endif
 -      &attr_address.attr,
 +      &dev_attr_address.attr,
-       &dev_attr_polarization.attr,
        NULL,
  };
  
@@@ -1108,58 -1120,16 +1120,16 @@@ static ssize_t __ref rescan_store(struc
        rc = smp_rescan_cpus();
        return rc ? rc : count;
  }
 -static SYSDEV_CLASS_ATTR(rescan, 0200, NULL, rescan_store);
 +static DEVICE_ATTR(rescan, 0200, NULL, rescan_store);
  #endif /* CONFIG_HOTPLUG_CPU */
  
- static ssize_t dispatching_show(struct device *dev,
-                               struct device_attribute *attr,
-                               char *buf)
- {
-       ssize_t count;
-       mutex_lock(&smp_cpu_state_mutex);
-       count = sprintf(buf, "%d\n", cpu_management);
-       mutex_unlock(&smp_cpu_state_mutex);
-       return count;
- }
- static ssize_t dispatching_store(struct device *dev,
-                                struct device_attribute *attr,
-                                const char *buf,
-                                size_t count)
- {
-       int val, rc;
-       char delim;
-       if (sscanf(buf, "%d %c", &val, &delim) != 1)
-               return -EINVAL;
-       if (val != 0 && val != 1)
-               return -EINVAL;
-       rc = 0;
-       get_online_cpus();
-       mutex_lock(&smp_cpu_state_mutex);
-       if (cpu_management == val)
-               goto out;
-       rc = topology_set_cpu_management(val);
-       if (!rc)
-               cpu_management = val;
- out:
-       mutex_unlock(&smp_cpu_state_mutex);
-       put_online_cpus();
-       return rc ? rc : count;
- }
- static DEVICE_ATTR(dispatching, 0644, dispatching_show,
-                        dispatching_store);
- static int __init topology_init(void)
+ static int __init s390_smp_init(void)
  {
-       int cpu;
-       int rc;
+       int cpu, rc;
  
        register_cpu_notifier(&smp_cpu_nb);
  #ifdef CONFIG_HOTPLUG_CPU
 -      rc = sysdev_class_create_file(&cpu_sysdev_class, &attr_rescan);
 +      rc = device_create_file(cpu_subsys.dev_root, &dev_attr_rescan);
        if (rc)
                return rc;
  #endif
@@@ -357,10 -358,108 +358,108 @@@ void __init s390_init_cpu_topology(void
        store_topology(info);
        pr_info("The CPU configuration topology of the machine is:");
        for (i = 0; i < TOPOLOGY_NR_MAG; i++)
-               printk(" %d", info->mag[i]);
-       printk(" / %d\n", info->mnest);
+               printk(KERN_CONT " %d", info->mag[i]);
+       printk(KERN_CONT " / %d\n", info->mnest);
        alloc_masks(info, &core_info, 1);
- #ifdef CONFIG_SCHED_BOOK
        alloc_masks(info, &book_info, 2);
- #endif
  }
 -static ssize_t dispatching_show(struct sysdev_class *class,
 -                              struct sysdev_class_attribute *attr,
+ static int cpu_management;
 -static ssize_t dispatching_store(struct sysdev_class *dev,
 -                               struct sysdev_class_attribute *attr,
++static ssize_t dispatching_show(struct device *dev,
++                              struct device_attribute *attr,
+                               char *buf)
+ {
+       ssize_t count;
+       mutex_lock(&smp_cpu_state_mutex);
+       count = sprintf(buf, "%d\n", cpu_management);
+       mutex_unlock(&smp_cpu_state_mutex);
+       return count;
+ }
 -static SYSDEV_CLASS_ATTR(dispatching, 0644, dispatching_show,
++static ssize_t dispatching_store(struct device *dev,
++                               struct device_attribute *attr,
+                                const char *buf,
+                                size_t count)
+ {
+       int val, rc;
+       char delim;
+       if (sscanf(buf, "%d %c", &val, &delim) != 1)
+               return -EINVAL;
+       if (val != 0 && val != 1)
+               return -EINVAL;
+       rc = 0;
+       get_online_cpus();
+       mutex_lock(&smp_cpu_state_mutex);
+       if (cpu_management == val)
+               goto out;
+       rc = topology_set_cpu_management(val);
+       if (rc)
+               goto out;
+       cpu_management = val;
+       topology_expect_change();
+ out:
+       mutex_unlock(&smp_cpu_state_mutex);
+       put_online_cpus();
+       return rc ? rc : count;
+ }
 -static ssize_t cpu_polarization_show(struct sys_device *dev,
 -                                   struct sysdev_attribute *attr, char *buf)
++static DEVICE_ATTR(dispatching, 0644, dispatching_show,
+                        dispatching_store);
 -static SYSDEV_ATTR(polarization, 0444, cpu_polarization_show, NULL);
++static ssize_t cpu_polarization_show(struct device *dev,
++                                   struct device_attribute *attr, char *buf)
+ {
+       int cpu = dev->id;
+       ssize_t count;
+       mutex_lock(&smp_cpu_state_mutex);
+       switch (cpu_read_polarization(cpu)) {
+       case POLARIZATION_HRZ:
+               count = sprintf(buf, "horizontal\n");
+               break;
+       case POLARIZATION_VL:
+               count = sprintf(buf, "vertical:low\n");
+               break;
+       case POLARIZATION_VM:
+               count = sprintf(buf, "vertical:medium\n");
+               break;
+       case POLARIZATION_VH:
+               count = sprintf(buf, "vertical:high\n");
+               break;
+       default:
+               count = sprintf(buf, "unknown\n");
+               break;
+       }
+       mutex_unlock(&smp_cpu_state_mutex);
+       return count;
+ }
 -      &attr_polarization.attr,
++static DEVICE_ATTR(polarization, 0444, cpu_polarization_show, NULL);
+ static struct attribute *topology_cpu_attrs[] = {
 -      return sysfs_create_group(&cpu->sysdev.kobj, &topology_cpu_attr_group);
++      &dev_attr_polarization.attr,
+       NULL,
+ };
+ static struct attribute_group topology_cpu_attr_group = {
+       .attrs = topology_cpu_attrs,
+ };
+ int topology_cpu_init(struct cpu *cpu)
+ {
 -      return sysdev_class_create_file(&cpu_sysdev_class, &attr_dispatching);
++      return sysfs_create_group(&cpu->dev.kobj, &topology_cpu_attr_group);
+ }
+ static int __init topology_init(void)
+ {
+       if (!MACHINE_HAS_TOPOLOGY) {
+               topology_update_polarization_simple();
+               goto out;
+       }
+       set_topology_timer();
+ out:
+       update_cpu_core_map();
++      return device_create_file(cpu_subsys.dev_root, &dev_attr_dispatching);
+ }
+ device_initcall(topology_init);
Simple merge