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

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

 





Thomas Renninger wrote:
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.


Thomas,

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.


Right :(
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);


Okay, I'll fix that up.
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.


Huh -- I wonder if that has to do with they way I'm calling online_pages. I wonder if I have to make that clal "deeper" in the call path and call it on EACH segment that I'm bringing into service...

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

Absolutely no problem :) I didn't mean to leave you out of the conversation :)

P.

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