Re: cpu hotplug: possible_cpus broken (again?) next-20130607

From: Youquan Song
Date: Tue Jun 11 2013 - 20:17:54 EST


On Tue, Jun 11, 2013 at 04:32:34PM -0600, Toshi Kani wrote:
> On Wed, 2013-06-12 at 00:34 +0200, Rafael J. Wysocki wrote:
> > On Tuesday, June 11, 2013 03:17:28 PM Dave Hansen wrote:
> > > On 06/11/2013 03:05 PM, Rafael J. Wysocki wrote:
> > > > On Tuesday, June 11, 2013 02:51:33 PM Dave Hansen wrote:
> > > >> possible_cpus looks broken again. I'm booting with:
> > > >>
> > > >> maxcpus=10 possible_cpus=160
> > > >>
> > > >> But I only get 0-9 in sysfs:
> > > >>
> > > >>> # ls /sys/devices/system/cpu/
> > > >>> cpu0 cpu2 cpu4 cpu6 cpu8 cpufreq kernel_max offline possible probe uevent
> > > >>> cpu1 cpu3 cpu5 cpu7 cpu9 cpuidle modalias online present release
> > > >
> > > > Can you please test the acpi-hotplug branch of the linux-pm.git tree?
> > >
> > > That branch seems to work happily.
> >
> > In that case the problem may have been reintroduced by a merge conflict fix in
> > linux-next.
>
> I believe the problem was introduced by the following change. From the
> description, though, this is exactly what this patch was trying to
> change... Adding Youguan to the list.
>
> commit 3e275a5ba367ab74b3a4e49114307baed989fcac
> Author: Youquan Song <youquan.song@xxxxxxxxx>
> Date: Fri Jun 7 10:07:08 2013 +1000
>
> drivers/base/cpu.c: fix maxcpus boot option
>
Hi Toshi,

Thanks Thoshi for the information.
please try the below patch to fix the issue by moving the code to
store_online.

diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c
index 3d48fc8..2378f42 100644
--- a/drivers/base/cpu.c
+++ b/drivers/base/cpu.c
@@ -60,6 +60,13 @@ static ssize_t __ref store_online(struct device *dev,
kobject_uevent(&dev->kobj, KOBJ_OFFLINE);
break;
case '1':
+#ifdef CONFIG_SMP
+ /* return when cpu number greater than maximum number of
CPUs */
+ if (setup_max_cpus <= num_online_cpus() + 1) {
+ cpu_hotplug_driver_unlock();
+ return -EINVAL;
+ }
+#endif
from_nid = cpu_to_node(cpuid);
ret = cpu_up(cpuid);

Thanks
-Youquan

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/