On Tuesday 21 September 2010 15:41:09 Gleb Natapov wrote: > Hello, > > We are trying to add CPU hot-plug/unplug capability to KVM. We want to > be able to initiate hot-plug/unplug from a host. Our current schema > works like this: > > We have Processor object in DSDT for each potentially available CPU. > Each Processor object has _MAD, _STA, _EJ0. _MAD of present CPU > returns enabled LAPIC structure. _STA of present CPU return 0xf. _MADT > of non present CPU returns disabled LAPIC. _STA returns 0x0. _EJ0 does > nothing. > > When CPU is hot plugged: > > 1. Bit is set in sts register of gpe > 2. acpi interrupt is sent > 3. Linux ACPI evaluates corespondent gpe's _L() method > 4. _L() method determines which CPU's status is changed > 5. For each CPU that changed status from not present to present > call Notify(1) to corespondent Processor() object. > > When CPU is hot unplugged: > > 1. Bit is set in sts register of gpe > 2. acpi interrupt is sent > 3. Linux ACPI evaluates corespondent gpe's _L() method > 4. _L() method determines which CPU's status is changed > 5. For each CPU that changed status from present to non present > call Notify(3) That does not work. > to corespondent Processor() object. > > Now, CPU hot plug appears to be working. But CPU hot unplug does > nothing. I expect that Linux will offline CPU and eject it after > evaluating Notify(3) and seeing that _STA of ejected CPU returns > 0x0 now. > > Any ideas how it is suppose to work? Put a container device, e.g. ACPI0004 above the CPU objects. and call notify (on remove and add) on it instead of the CPU object itself with e.g.: #define ACPI_NOTIFY_BUS_CHECK (u8) 0x00 #define ACPI_NOTIFY_DEVICE_CHECK (u8) 0x01 acpi core should go through the devices and call add()/probe() on devices which appear and remove() on devices which _STA method does not return active anymore. 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