Thread (11 messages) 11 messages, 5 authors, 2012-07-16

Re: [PATCH] ACPI: Add ACPI CPU hot-remove support

From: Toshi Kani <hidden>
Date: 2012-07-06 21:03:36
Also in: lkml

On Fri, 2012-07-06 at 14:09 -0600, Khalid Aziz wrote:
On 07/06/2012 01:13 PM, Toshi Kani wrote:
quoted
For step 2) and 4), I am wondering if they are relevant to CPU hotplug
these days.  In ACPI namespace, a processor object represents a logical
processor (or a core when hyper-threading is disabled).  A physical
processor (i.e. a socket) usually has multiple cores, and memory
controller and bus interface are part of the socket functionality.
Hence, I think step 2) and 4) belong to socket-level hot-removal
operation, which can be implemented as container hot-remove when a
socket is represented with a container object.
What does it mean to eject just a core in that case? If there are seven
other cores in the physical processor and you get a request to eject
one core, what would you expect kernel to do - simply move all processes
and interrupts off of that core, take it out of scheduling consideration
and simply idle the core? If yes, how is that any different from simply
offlining a core? 
Yes, offlining and eject are similar operations to a core as it alone
cannot be removed physically.  Ejecting a core is a logical eject
operation, which updates the status (_STA) of the object in ACPI after
offlining.  The difference from the offlining is that the ejected core
is no longer assigned to the partition.  Here is one example.  Say, a
core is assigned to a guest partition as a dedicated resource (ex. 100%
of its CPU time is bound to the partition).  Offlining this core saves
the power-consumption, but this core is still bound to the partition.
Ejecting the core removes it from the partition (logically), and allows
it to be assigned to other partition as a dedicated resource with
hot-add.

If you are ejecting individual cores at a time, do you
keep track of how many you have ejected and then eject the entire physical
CPU along with memory and IOH associated with the socket when the last
core is ejected?
It depends on the firmware implementation, but typically the answer is
no.  _EJ0 of a core object only removes the associated core object.  It
will require a separate socket hot-remove request to eject the
socket-level resources.  That is, the OS may not call _EJ0 of a socket
object from the core hot-remove operation just because all children
cores are removed. 

Thanks,
-Toshi


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help