summaryrefslogtreecommitdiff
path: root/include/linux/acpi.h
diff options
context:
space:
mode:
authorJames Morse <james.morse@arm.com>2023-02-15 10:58:05 +0000
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2024-01-30 10:57:31 +0000
commit60ea1a699afa35d4dfa3db54aac9b57e8f01a771 (patch)
tree7102f0aee3ff51927fe82ce4d9254600f7e4070d /include/linux/acpi.h
parent1b8d0750edc89233ff5b53c8066aa9b273f3ed69 (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.h4
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