[Top][All Lists]

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

[PATCH for-5.0 8/8] acpi: cpuhp: spec: document procedure for enabling m

From: Igor Mammedov
Subject: [PATCH for-5.0 8/8] acpi: cpuhp: spec: document procedure for enabling modern CPU hotplug
Date: Wed, 4 Dec 2019 18:05:47 +0100

Describe how to enable and detect modern CPU hotplug interface.
Detection part is based on new CPHP_GET_CPU_ID_CMD command,
introduced by "acpi: cpuhp: add CPHP_GET_CPU_ID_CMD command" patch.

Signed-off-by: Igor Mammedov <address@hidden>
 docs/specs/acpi_cpu_hotplug.txt | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/docs/specs/acpi_cpu_hotplug.txt b/docs/specs/acpi_cpu_hotplug.txt
index bb33144..667b264 100644
--- a/docs/specs/acpi_cpu_hotplug.txt
+++ b/docs/specs/acpi_cpu_hotplug.txt
@@ -15,14 +15,14 @@ CPU present bitmap for:
   PIIX-PM  (IO port 0xaf00-0xaf1f, 1-byte access)
   One bit per CPU. Bit position reflects corresponding CPU APIC ID. Read-only.
   The first DWORD in bitmap is used in write mode to switch from legacy
-  to new CPU hotplug interface, write 0 into it to do switch.
+  to modern CPU hotplug interface, write 0 into it to do switch.
 QEMU sets corresponding CPU bit on hot-add event and issues SCI
 with GPE.2 event set. CPU present map is read by ACPI BIOS GPE.2 handler
 to notify OS about CPU hot-add events. CPU hot-remove isn't supported.
-ACPI CPU hotplug interface registers:
+Modern ACPI CPU hotplug interface registers:
 Register block base address:
     ICH9-LPC IO port 0x0cd8
@@ -105,6 +105,24 @@ write access:
               other values: reserved
     Typical usecases:
+        - (x86) Detecting and enabling modern CPU hotplug interface.
+          QEMU starts with legacy CPU hotplug interface enabled. Detecting and
+          switching to modern interface is based on the 2 legacy CPU hotplug 
+            1. Writes into CPU bitmap are ignored.
+            2. CPU bitmap always has bit#0 set, corresponding to boot CPU.
+          Use following steps to detect and enable modern CPU hotplug 
+            1. Store 0x0 to the 'CPU selector' register,
+               attempting to switch to modern mode
+            2. Store 0x0 to the 'CPU selector' register,
+               to ensure valid selector value
+            3. Store 0x3 to the 'Command field' register,
+               sets the 'Command data 2' register into architecture specific
+               CPU identifier mode
+            4. Read the 'Command data 2' register.
+               If read value is 0x0, the modern interface is enabled.
+               Otherwise legacy or no CPU hotplug interface available
         - Get a cpu with pending event
           1. Store 0x0 to the 'CPU selector' register.
           2. Store 0x0 to the 'Command field' register.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]