Re: [RFC PATCH]: ACPI: Automatically online hot-added memory

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

 



On Wednesday 17 March 2010 19:47:55 Prarit Bhargava wrote:
> 
> Thomas Renninger wrote:
> > On Thursday 11 March 2010 09:32:09 chen gong wrote:
> >   
> >> On 2010-3-11 16:07, ykzhao wrote:
> >>     
> > ... 
> >   
> >> BTW, how about using UDEV rules to do this operation. It looks more smooth. I know some
> >> Novell guy is working on it.
> >>     
> > I also know this guy :)
> >
> > These would be the udev rules to automatically add memory/cpus:
> > SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1", RUN+="/bin/logger onlining cpu: $env{DEVPATH}"
> > SUBSYSTEM=="memory", ACTION=="add", TEST=="state", ATTR{state}=="offline", ATTR{state}="online", RUN+="/bin/logger onlining memory: $env{DEVPATH}"
> >
> > But this should be the same as you suggest (at least the memory rule)
> > to do in the kernel:
> > automatically online the memory, once hotadded.
> >
> > I would not add any udev rules before this does not work
> > reliably and currently it is totally broken, mainly because:
> >   - not being able to alloc memory on foreign nodes (at least with slab)
> >   - C-state, throttling and cpufreq set up is done without valid
> >     cpu_data(new_cpu) resulting in wrong C-state (and other) info
> >
> >   
> 
> Thomas, forgive my ignorance of udev rules ... but can one udev rule 
> block another?  ... That's not the best way to explain it ... here's an 
> example:
> 
> CPU hot add on Nehalem-EX.  Memory is brought online.  Memory udev 
> events are generated.  CPU udev events are generated.
> 
> Can the memory udev events block the cpu udev events?  ie) can I be 
> assured that memory will come online before the cpus?
I give up, there are too many open issues.
Onlining cpus and memory in parallel currently is not a good idea.

If the cpu event comes first, you run into other issues. I accidently had
the acpi_memhotplug driver not loaded, in this case a new node was not
created at all and the cpus ended up on the wrong node.

Some comments on your patch:
Your patch misses EXPORT_SYMBOL(_GPL?)(set_memory_state); (I wonder why
drivers/base/memory.c does not export symbols under gpl...) and
EXPORT_SYMBOL_GPL(online_pages);

You also need to set each memory block MEM_ONLINE somehow,
while all memory was active, only one memory block showed "online" here:
/sys/devices/system/node/node3/memory*/state
which has side-effects.

Would be great if you add me to CC if you repost or on related topics.

Thanks,

     Thomas
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux