diff options
author | James Morse <james.morse@arm.com> | 2023-02-15 10:58:05 +0000 |
---|---|---|
committer | Russell King (Oracle) <rmk+kernel@armlinux.org.uk> | 2024-01-30 10:57:31 +0000 |
commit | 60ea1a699afa35d4dfa3db54aac9b57e8f01a771 (patch) | |
tree | 7102f0aee3ff51927fe82ce4d9254600f7e4070d /include/linux/acpi.h | |
parent | 1b8d0750edc89233ff5b53c8066aa9b273f3ed69 (diff) |
ACPI: Add _OSC bits to advertise OS support for toggling CPU present/enabledaarch64/hotplug-vcpu/v6.8-rc2
Platform firmware can disabled a CPU, or make it not-present by making
an eject-request notification, then waiting for the OS to make it offline
and call _EJx. After the firmware updates _STA with the new status.
Not all operating systems support this. For arm64 making CPUs not-present
has never been supported. For all ACPI architectures, making CPUs disabled
has recently been added. Firmware can't know what the OS has support for.
Add two new _OSC bits to advertise whether the OS supports the _STA enabled
or present bits being toggled for CPUs. This will be important for arm64
if systems that support physical CPU hotplug ever appear as arm64 linux
doesn't currently support this, so firmware shouldn't try.
Advertising this support to firmware is useful for cloud orchestrators
to know whether they can scale a particular VM by adding CPUs.
Signed-off-by: James Morse <james.morse@arm.com>
Tested-by: Miguel Luis <miguel.luis@oracle.com>
Tested-by: Vishnu Pajjuri <vishnu@os.amperecomputing.com>
Tested-by: Jianyong Wu <jianyong.wu@arm.com>
---
I'm assuming Loongarch machines do not support physical CPU hotplug.
Changes since RFC v3:
* Drop ia64 changes
* Update James' comment below "---" to remove reference to ia64
Outstanding commentis:
https://lore.kernel.org/r/20230914175021.000018fd@Huawei.com
https://lore.kernel.org/r/20231215171227.00006550@Huawei.com
Also see:
https://bugzilla.tianocore.org/show_bug.cgi?id=4481
Diffstat (limited to 'include/linux/acpi.h')
-rw-r--r-- | include/linux/acpi.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 18d1537c08db..a388bcfb2328 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -578,12 +578,16 @@ acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context); #define OSC_SB_NATIVE_USB4_SUPPORT 0x00040000 #define OSC_SB_PRM_SUPPORT 0x00200000 #define OSC_SB_FFH_OPR_SUPPORT 0x00400000 +#define OSC_SB_HOTPLUG_ENABLED_SUPPORT 0x00800000 +#define OSC_SB_HOTPLUG_PRESENT_SUPPORT 0x01000000 extern bool osc_sb_apei_support_acked; extern bool osc_pc_lpi_support_confirmed; extern bool osc_sb_native_usb4_support_confirmed; extern bool osc_sb_cppc2_support_acked; extern bool osc_cpc_flexible_adr_space_confirmed; +extern bool osc_sb_hotplug_enabled_support_acked; +extern bool osc_sb_hotplug_present_support_acked; /* USB4 Capabilities */ #define OSC_USB_USB3_TUNNELING 0x00000001 |