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 kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html