Hi Greg, Today's linux-next merge of the driver-core tree got a conflict in arch/s390/kernel/smp.c between commit 83a24e329084 ("[S390] topology: get rid of ifdefs") from the s390 tree and commit 8a25a2fd126c ("cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem") from the driver-core tree. I fixed it up (see below) and can carry the fix as necessary. I also applied the following merge fix patch (which may not be correct or enough) for the bits moved into topology.c: From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Date: Wed, 28 Dec 2011 17:19:21 +1100 Subject: [PATCH] s390: fixup for sysdev removal Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> --- arch/s390/kernel/topology.c | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c index 08a059d..b635a8b 100644 --- a/arch/s390/kernel/topology.c +++ b/arch/s390/kernel/topology.c @@ -366,8 +366,8 @@ void __init s390_init_cpu_topology(void) static int cpu_management; -static ssize_t dispatching_show(struct sysdev_class *class, - struct sysdev_class_attribute *attr, +static ssize_t dispatching_show(struct device *dev, + struct device_attribute *attr, char *buf) { ssize_t count; @@ -378,8 +378,8 @@ static ssize_t dispatching_show(struct sysdev_class *class, return count; } -static ssize_t dispatching_store(struct sysdev_class *dev, - struct sysdev_class_attribute *attr, +static ssize_t dispatching_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t count) { @@ -405,11 +405,11 @@ out: put_online_cpus(); return rc ? rc : count; } -static SYSDEV_CLASS_ATTR(dispatching, 0644, dispatching_show, +static DEIVCE_ATTR(dispatching, 0644, dispatching_show, dispatching_store); -static ssize_t cpu_polarization_show(struct sys_device *dev, - struct sysdev_attribute *attr, char *buf) +static ssize_t cpu_polarization_show(struct device *dev, + struct device_attribute *attr, char *buf) { int cpu = dev->id; ssize_t count; @@ -435,10 +435,10 @@ static ssize_t cpu_polarization_show(struct sys_device *dev, mutex_unlock(&smp_cpu_state_mutex); return count; } -static SYSDEV_ATTR(polarization, 0444, cpu_polarization_show, NULL); +static DEVICE_ATTR(polarization, 0444, cpu_polarization_show, NULL); static struct attribute *topology_cpu_attrs[] = { - &attr_polarization.attr, + &dev_attr_polarization.attr, NULL, }; @@ -448,7 +448,7 @@ static struct attribute_group topology_cpu_attr_group = { int topology_cpu_init(struct cpu *cpu) { - return sysfs_create_group(&cpu->sysdev.kobj, &topology_cpu_attr_group); + return sysfs_create_group(&cpu->dev.kobj, &topology_cpu_attr_group); } static int __init topology_init(void) @@ -460,6 +460,6 @@ static int __init topology_init(void) set_topology_timer(); out: update_cpu_core_map(); - return sysdev_class_create_file(&cpu_sysdev_class, &attr_dispatching); + return device_create_file(cpu_subsys.dev_root, &dev_attr_dispatching); } device_initcall(topology_init); -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc arch/s390/kernel/smp.c index b1cd329,66cca03..0000000 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c @@@ -923,21 -889,52 +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 show_cpu_address(struct sys_device *dev, - struct sysdev_attribute *attr, char *buf) -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 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, }; @@@ -1120,16 -1108,58 +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
Attachment:
pgpduO5E7PkVr.pgp
Description: PGP signature