Re: CPU hotplug broken with 2GB VMSPLIT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2006-12-01 at 01:20 +0800, Nathan Lynch wrote:
> Nathan Lynch wrote:
> > Jens Axboe wrote:
> > > On Thu, Nov 30 2006, Jens Axboe wrote:
> > > > Hi,
> > > >
> > > > Just got a new notebook (Lenovo X60), setup a custom kernel and
> then I
> > > > noticed that suspend to ram doesn't work anymore. The machine
> suspends
> > > > just fine, on resume it brings back the text display but reboots
> after
> > > > it has stalled for a few seconds. On the suggestion of Pavel, I
> tried
> > > > testing CPU hotplug, and indeed he was right: I can offline 1 of
> the
> > > > cores fine, bringing it back online freezes the machine for 3-4
> seconds
> > > > and then reboots.
> > > >
> > > > carl:/sys/devices/system/cpu/cpu1 # echo 0 > online
> > > > carl:/sys/devices/system/cpu/cpu1 # dmesg
> > > > Breaking affinity for irq 219
> > > > CPU 1 is now offline
> > > > SMP alternatives: switching to UP code
> > > > carl:/sys/devices/system/cpu/cpu1 # echo 1 > online
> > > > Read from remote host carl: Connection reset by peer
> > > >
> > > > Booting with maxcpus=1 and resume works fine. Does this ring a
> bell with
> > > > anyone? With highmem enabled and the standard vmsplit, cpu
> hotplug works
> > > > fine for me.
> > >
> > > Some more clues - booting with noreplacement doesn't fix it, so I
> think
> > > the alternatives code is off the hook.
> >
> > I don't think this adds any new information, but it has been open
> > awhile:
> >
> > http://bugme.osdl.org/show_bug.cgi?id=6542
> >
> > I was able to narrow it down to the vmsplit setting but I wasn't
> able
> > to debug it further.
> 
> Hmm, I'm pretty sure this is the same problem I reported in March,
> there might be some more information in that thread:
> 
> http://marc.theaimsgroup.com/?t=114039363100002&r=1&w=1
> 
> but I didn't realize it was vmsplit-related at that time.
Does this patch help?

Thanks,
Shaohua

Signed-off-by: Shaohua Li <[email protected]>

diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index 4bb8b77..b5f562e 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -1095,7 +1095,7 @@ static int __cpuinit __smp_prepare_cpu(i
 
 	/* init low mem mapping */
 	clone_pgd_range(swapper_pg_dir, swapper_pg_dir + USER_PGD_PTRS,
-			KERNEL_PGD_PTRS);
+			min_t(unsigned long, KERNEL_PGD_PTRS, USER_PGD_PTRS));
 	flush_tlb_all();
 	schedule_work(&task);
 	wait_for_completion(&done);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux