linux-next: manual merge of the driver-core tree with the s390 tree
From: Stephen Rothwell <hidden>
Date: 2011-12-28 06:26:36
Also in:
lkml
Subsystem:
s390 architecture, the rest · Maintainers:
Heiko Carstens, Vasily Gorbik, Alexander Gordeev, Linus Torvalds
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 <redacted>
Date: Wed, 28 Dec 2011 17:19:21 +1100
Subject: [PATCH] s390: fixup for sysdev removal
Signed-off-by: Stephen Rothwell <redacted>
---
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@canb.auug.org.au
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;
#endifAttachments
- (unnamed) [application/pgp-signature] 836 bytes