Re: how CPU hot-plug is suppose to work on Linux?

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

 



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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux