On Thu, 27 Oct 2011 11:32:45 +0200 Michael Holzheu <holzheu at linux.vnet.ibm.com> wrote: > From: Michael Holzheu <holzheu at linux.vnet.ibm.com> > > Currently no udev events for memory hotplug "online" and "offline" are > generated: > > # udevadm monitor > # echo offline > /sys/devices/system/memory/memory4/state > ==> No event > > When kdump is loaded, kexec detects the current memory configuration and > stores it in the pre-allocated ELF core header. Therefore, for kdump it is > necessary to reload the kdump kernel with kexec when the memory > configuration changes (e.g. for online/offline hotplug memory). > > In order to do this automatically, udev rules should be used. This kernel > patch adds udev events for "online" and "offline". Together with this kernel > patch, the following udev rules for online/offline have to be added to > "/etc/udev/rules.d/98-kexec.rules": > > SUBSYSTEM=="memory", ACTION=="online", PROGRAM="/etc/init.d/kdump restart" > SUBSYSTEM=="memory", ACTION=="offline", PROGRAM="/etc/init.d/kdump restart" > > Signed-off-by: Michael Holzheu <holzheu at linux.vnet.ibm.com> > --- > drivers/base/memory.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > --- a/drivers/base/memory.c > +++ b/drivers/base/memory.c > @@ -310,11 +310,15 @@ store_mem_state(struct sys_device *dev, > > mem = container_of(dev, struct memory_block, sysdev); > > - if (!strncmp(buf, "online", min((int)count, 6))) > + if (!strncmp(buf, "online", min((int)count, 6))) { > ret = memory_block_change_state(mem, MEM_ONLINE, MEM_OFFLINE); > - else if(!strncmp(buf, "offline", min((int)count, 7))) > + if (ret == 0) > + kobject_uevent(&dev->kobj, KOBJ_ONLINE); > + } else if (!strncmp(buf, "offline", min((int)count, 7))) { > ret = memory_block_change_state(mem, MEM_OFFLINE, MEM_ONLINE); > - > + if (ret == 0) > + kobject_uevent(&dev->kobj, KOBJ_OFFLINE); > + } ot: what on earth is up with that min() thing which Dave-who-doesn't-know-about-min_t added to the strncmp() calls?