All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: James Morse <james.morse@arm.com>
Cc: <linux-pm@vger.kernel.org>, <loongarch@lists.linux.dev>,
	<linux-acpi@vger.kernel.org>, <linux-arch@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-riscv@lists.infradead.org>, <kvmarm@lists.linux.dev>,
	<x86@kernel.org>, Salil Mehta <salil.mehta@huawei.com>,
	Russell King <linux@armlinux.org.uk>,
	Jean-Philippe Brucker <jean-philippe@linaro.org>,
	<jianyong.wu@arm.com>, <justin.he@arm.com>
Subject: Re: [RFC PATCH v2 34/35] ACPI: Add _OSC bits to advertise OS support for toggling CPU present/enabled
Date: Thu, 14 Sep 2023 17:50:21 +0100	[thread overview]
Message-ID: <20230914175021.000018fd@Huawei.com> (raw)
In-Reply-To: <20230913163823.7880-35-james.morse@arm.com>

On Wed, 13 Sep 2023 16:38:22 +0000
James Morse <james.morse@arm.com> wrote:

> 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.

I'm not sure I like enabling this for all architectures though I guess
everyone will ignore it on those that have long supported 
changing the enabled bit. The hypervisors won't care if Linux claims
to support it or not.  I can see the argument for architectures that might
support it in the future.

I need to think a bit more about this, but maybe just having the online
capable bit OSC is safer in general. I guess it depends on whether there
are hypervisors out there implementing the x86 version of that even though
no one has yet posted patches for Linux.

Perhaps we just call these out as hints that we 'definitely' support them.
Otherwise we might for some architectures so poke it anyway.


OSC is late in boot, so what advantage is there in preventing it working?
We can't change any of the bring up / sizing etc as a result so might as
well let it through.

> 
> 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>
> ---
> I'm assuming ia64 with physical hotplug machines once existed, and
> that Loongarch machines with support for this don't.
> ---
>  arch/ia64/Kconfig             |  1 +
>  arch/x86/Kconfig              |  1 +
>  drivers/acpi/Kconfig          |  9 +++++++++
>  drivers/acpi/acpi_processor.c | 14 +++++++++++++-
>  drivers/acpi/bus.c            | 16 ++++++++++++++++
>  include/linux/acpi.h          |  4 ++++
>  6 files changed, 44 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index 54972f9fe804..13df676bad67 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -17,6 +17,7 @@ config IA64
>  	select ARCH_MIGHT_HAVE_PC_SERIO
>  	select ACPI
>  	select ACPI_HOTPLUG_PRESENT_CPU if ACPI_PROCESSOR && HOTPLUG_CPU
> +	select ACPI_HOTPLUG_IGNORE_OSC  if ACPI
>  	select ACPI_NUMA if NUMA
>  	select ARCH_ENABLE_MEMORY_HOTPLUG
>  	select ARCH_ENABLE_MEMORY_HOTREMOVE
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 295a7a3debb6..5fea3ce9594e 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -61,6 +61,7 @@ config X86
>  	select ACPI_LEGACY_TABLES_LOOKUP	if ACPI
>  	select ACPI_SYSTEM_POWER_STATES_SUPPORT	if ACPI
>  	select ACPI_HOTPLUG_PRESENT_CPU		if ACPI_PROCESSOR && HOTPLUG_CPU
> +	select ACPI_HOTPLUG_IGNORE_OSC		if ACPI && HOTPLUG_CPU
>  	select ARCH_32BIT_OFF_T			if X86_32
>  	select ARCH_CLOCKSOURCE_INIT
>  	select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 417f9f3077d2..c49978b4b11f 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -310,6 +310,15 @@ config ACPI_HOTPLUG_PRESENT_CPU
>  	depends on ACPI_PROCESSOR && HOTPLUG_CPU
>  	select ACPI_CONTAINER
>  
> +config ACPI_HOTPLUG_IGNORE_OSC
> +	bool
> +	depends on ACPI_HOTPLUG_PRESENT_CPU
> +	help
> +	  Ignore whether firmware acknowledged support for toggling the CPU
> +	  present bit in _STA. Some architectures predate the _OSC bits, so
> +	  firmware doesn't know to do this.
> +
> +
>  config ACPI_PROCESSOR_AGGREGATOR
>  	tristate "Processor Aggregator"
>  	depends on ACPI_PROCESSOR
> diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
> index b49859eab01a..87926f22c857 100644
> --- a/drivers/acpi/acpi_processor.c
> +++ b/drivers/acpi/acpi_processor.c
> @@ -181,6 +181,18 @@ static void __init acpi_pcc_cpufreq_init(void)
>  static void __init acpi_pcc_cpufreq_init(void) {}
>  #endif /* CONFIG_X86 */
>  
> +static bool acpi_processor_hotplug_present_supported(void)
> +{
> +	if (!IS_ENABLED(CONFIG_ACPI_HOTPLUG_PRESENT_CPU))
> +		return false;
> +
> +	/* x86 systems pre-date the _OSC bit */
> +	if (IS_ENABLED(CONFIG_ACPI_HOTPLUG_IGNORE_OSC))
> +		return true;
> +
> +	return osc_sb_hotplug_present_support_acked;
> +}
> +
>  /* Initialization */
>  static int acpi_processor_make_present(struct acpi_processor *pr)
>  {
> @@ -188,7 +200,7 @@ static int acpi_processor_make_present(struct acpi_processor *pr)
>  	acpi_status status;
>  	int ret;
>  
> -	if (!IS_ENABLED(CONFIG_ACPI_HOTPLUG_PRESENT_CPU)) {
> +	if (!acpi_processor_hotplug_present_supported()) {

I don't see the advantage of blocking on basis of what the firmware said.
It was clearly lying or didn't understand the question ;)

>  		pr_err_once("Changing CPU present bit is not supported\n");
>  		return -ENODEV;
>  	}
> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> index f41dda2d3493..123c28c2eda3 100644
> --- a/drivers/acpi/bus.c
> +++ b/drivers/acpi/bus.c
> @@ -298,6 +298,13 @@ EXPORT_SYMBOL_GPL(osc_sb_native_usb4_support_confirmed);
>  
>  bool osc_sb_cppc2_support_acked;
>  
> +/*
> + * ACPI 6.? Proposed Operating System Capabilities for modifying CPU
> + * present/enable.
> + */
> +bool osc_sb_hotplug_enabled_support_acked;
> +bool osc_sb_hotplug_present_support_acked;
> +
>  static u8 sb_uuid_str[] = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48";
>  static void acpi_bus_osc_negotiate_platform_control(void)
>  {
> @@ -346,6 +353,11 @@ static void acpi_bus_osc_negotiate_platform_control(void)
>  
>  	if (!ghes_disable)
>  		capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_APEI_SUPPORT;
> +
> +	capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_ENABLED_SUPPORT;
> +	if (IS_ENABLED(CONFIG_ACPI_HOTPLUG_PRESENT_CPU))
> +		capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_PRESENT_SUPPORT;
> +
>  	if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle)))
>  		return;
>  
> @@ -383,6 +395,10 @@ static void acpi_bus_osc_negotiate_platform_control(void)
>  			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_NATIVE_USB4_SUPPORT;
>  		osc_cpc_flexible_adr_space_confirmed =
>  			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_CPC_FLEXIBLE_ADR_SPACE;
> +		osc_sb_hotplug_enabled_support_acked =
> +			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_HOTPLUG_ENABLED_SUPPORT;
> +		osc_sb_hotplug_present_support_acked =
> +			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_HOTPLUG_PRESENT_SUPPORT;
>  	}
>  
>  	kfree(context.ret.pointer);
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index 92cb25349a18..2ba7e0b10bcf 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -580,12 +580,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


WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: James Morse <james.morse@arm.com>
Cc: <linux-pm@vger.kernel.org>, <loongarch@lists.linux.dev>,
	<linux-acpi@vger.kernel.org>, <linux-arch@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-riscv@lists.infradead.org>, <kvmarm@lists.linux.dev>,
	<x86@kernel.org>, Salil Mehta <salil.mehta@huawei.com>,
	Russell King <linux@armlinux.org.uk>,
	Jean-Philippe Brucker <jean-philippe@linaro.org>,
	<jianyong.wu@arm.com>, <justin.he@arm.com>
Subject: Re: [RFC PATCH v2 34/35] ACPI: Add _OSC bits to advertise OS support for toggling CPU present/enabled
Date: Thu, 14 Sep 2023 17:50:21 +0100	[thread overview]
Message-ID: <20230914175021.000018fd@Huawei.com> (raw)
In-Reply-To: <20230913163823.7880-35-james.morse@arm.com>

On Wed, 13 Sep 2023 16:38:22 +0000
James Morse <james.morse@arm.com> wrote:

> 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.

I'm not sure I like enabling this for all architectures though I guess
everyone will ignore it on those that have long supported 
changing the enabled bit. The hypervisors won't care if Linux claims
to support it or not.  I can see the argument for architectures that might
support it in the future.

I need to think a bit more about this, but maybe just having the online
capable bit OSC is safer in general. I guess it depends on whether there
are hypervisors out there implementing the x86 version of that even though
no one has yet posted patches for Linux.

Perhaps we just call these out as hints that we 'definitely' support them.
Otherwise we might for some architectures so poke it anyway.


OSC is late in boot, so what advantage is there in preventing it working?
We can't change any of the bring up / sizing etc as a result so might as
well let it through.

> 
> 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>
> ---
> I'm assuming ia64 with physical hotplug machines once existed, and
> that Loongarch machines with support for this don't.
> ---
>  arch/ia64/Kconfig             |  1 +
>  arch/x86/Kconfig              |  1 +
>  drivers/acpi/Kconfig          |  9 +++++++++
>  drivers/acpi/acpi_processor.c | 14 +++++++++++++-
>  drivers/acpi/bus.c            | 16 ++++++++++++++++
>  include/linux/acpi.h          |  4 ++++
>  6 files changed, 44 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index 54972f9fe804..13df676bad67 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -17,6 +17,7 @@ config IA64
>  	select ARCH_MIGHT_HAVE_PC_SERIO
>  	select ACPI
>  	select ACPI_HOTPLUG_PRESENT_CPU if ACPI_PROCESSOR && HOTPLUG_CPU
> +	select ACPI_HOTPLUG_IGNORE_OSC  if ACPI
>  	select ACPI_NUMA if NUMA
>  	select ARCH_ENABLE_MEMORY_HOTPLUG
>  	select ARCH_ENABLE_MEMORY_HOTREMOVE
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 295a7a3debb6..5fea3ce9594e 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -61,6 +61,7 @@ config X86
>  	select ACPI_LEGACY_TABLES_LOOKUP	if ACPI
>  	select ACPI_SYSTEM_POWER_STATES_SUPPORT	if ACPI
>  	select ACPI_HOTPLUG_PRESENT_CPU		if ACPI_PROCESSOR && HOTPLUG_CPU
> +	select ACPI_HOTPLUG_IGNORE_OSC		if ACPI && HOTPLUG_CPU
>  	select ARCH_32BIT_OFF_T			if X86_32
>  	select ARCH_CLOCKSOURCE_INIT
>  	select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 417f9f3077d2..c49978b4b11f 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -310,6 +310,15 @@ config ACPI_HOTPLUG_PRESENT_CPU
>  	depends on ACPI_PROCESSOR && HOTPLUG_CPU
>  	select ACPI_CONTAINER
>  
> +config ACPI_HOTPLUG_IGNORE_OSC
> +	bool
> +	depends on ACPI_HOTPLUG_PRESENT_CPU
> +	help
> +	  Ignore whether firmware acknowledged support for toggling the CPU
> +	  present bit in _STA. Some architectures predate the _OSC bits, so
> +	  firmware doesn't know to do this.
> +
> +
>  config ACPI_PROCESSOR_AGGREGATOR
>  	tristate "Processor Aggregator"
>  	depends on ACPI_PROCESSOR
> diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
> index b49859eab01a..87926f22c857 100644
> --- a/drivers/acpi/acpi_processor.c
> +++ b/drivers/acpi/acpi_processor.c
> @@ -181,6 +181,18 @@ static void __init acpi_pcc_cpufreq_init(void)
>  static void __init acpi_pcc_cpufreq_init(void) {}
>  #endif /* CONFIG_X86 */
>  
> +static bool acpi_processor_hotplug_present_supported(void)
> +{
> +	if (!IS_ENABLED(CONFIG_ACPI_HOTPLUG_PRESENT_CPU))
> +		return false;
> +
> +	/* x86 systems pre-date the _OSC bit */
> +	if (IS_ENABLED(CONFIG_ACPI_HOTPLUG_IGNORE_OSC))
> +		return true;
> +
> +	return osc_sb_hotplug_present_support_acked;
> +}
> +
>  /* Initialization */
>  static int acpi_processor_make_present(struct acpi_processor *pr)
>  {
> @@ -188,7 +200,7 @@ static int acpi_processor_make_present(struct acpi_processor *pr)
>  	acpi_status status;
>  	int ret;
>  
> -	if (!IS_ENABLED(CONFIG_ACPI_HOTPLUG_PRESENT_CPU)) {
> +	if (!acpi_processor_hotplug_present_supported()) {

I don't see the advantage of blocking on basis of what the firmware said.
It was clearly lying or didn't understand the question ;)

>  		pr_err_once("Changing CPU present bit is not supported\n");
>  		return -ENODEV;
>  	}
> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> index f41dda2d3493..123c28c2eda3 100644
> --- a/drivers/acpi/bus.c
> +++ b/drivers/acpi/bus.c
> @@ -298,6 +298,13 @@ EXPORT_SYMBOL_GPL(osc_sb_native_usb4_support_confirmed);
>  
>  bool osc_sb_cppc2_support_acked;
>  
> +/*
> + * ACPI 6.? Proposed Operating System Capabilities for modifying CPU
> + * present/enable.
> + */
> +bool osc_sb_hotplug_enabled_support_acked;
> +bool osc_sb_hotplug_present_support_acked;
> +
>  static u8 sb_uuid_str[] = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48";
>  static void acpi_bus_osc_negotiate_platform_control(void)
>  {
> @@ -346,6 +353,11 @@ static void acpi_bus_osc_negotiate_platform_control(void)
>  
>  	if (!ghes_disable)
>  		capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_APEI_SUPPORT;
> +
> +	capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_ENABLED_SUPPORT;
> +	if (IS_ENABLED(CONFIG_ACPI_HOTPLUG_PRESENT_CPU))
> +		capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_PRESENT_SUPPORT;
> +
>  	if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle)))
>  		return;
>  
> @@ -383,6 +395,10 @@ static void acpi_bus_osc_negotiate_platform_control(void)
>  			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_NATIVE_USB4_SUPPORT;
>  		osc_cpc_flexible_adr_space_confirmed =
>  			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_CPC_FLEXIBLE_ADR_SPACE;
> +		osc_sb_hotplug_enabled_support_acked =
> +			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_HOTPLUG_ENABLED_SUPPORT;
> +		osc_sb_hotplug_present_support_acked =
> +			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_HOTPLUG_PRESENT_SUPPORT;
>  	}
>  
>  	kfree(context.ret.pointer);
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index 92cb25349a18..2ba7e0b10bcf 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -580,12 +580,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


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: James Morse <james.morse@arm.com>
Cc: <linux-pm@vger.kernel.org>, <loongarch@lists.linux.dev>,
	<linux-acpi@vger.kernel.org>, <linux-arch@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-riscv@lists.infradead.org>, <kvmarm@lists.linux.dev>,
	<x86@kernel.org>, Salil Mehta <salil.mehta@huawei.com>,
	Russell King <linux@armlinux.org.uk>,
	Jean-Philippe Brucker <jean-philippe@linaro.org>,
	<jianyong.wu@arm.com>, <justin.he@arm.com>
Subject: Re: [RFC PATCH v2 34/35] ACPI: Add _OSC bits to advertise OS support for toggling CPU present/enabled
Date: Thu, 14 Sep 2023 17:50:21 +0100	[thread overview]
Message-ID: <20230914175021.000018fd@Huawei.com> (raw)
In-Reply-To: <20230913163823.7880-35-james.morse@arm.com>

On Wed, 13 Sep 2023 16:38:22 +0000
James Morse <james.morse@arm.com> wrote:

> 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.

I'm not sure I like enabling this for all architectures though I guess
everyone will ignore it on those that have long supported 
changing the enabled bit. The hypervisors won't care if Linux claims
to support it or not.  I can see the argument for architectures that might
support it in the future.

I need to think a bit more about this, but maybe just having the online
capable bit OSC is safer in general. I guess it depends on whether there
are hypervisors out there implementing the x86 version of that even though
no one has yet posted patches for Linux.

Perhaps we just call these out as hints that we 'definitely' support them.
Otherwise we might for some architectures so poke it anyway.


OSC is late in boot, so what advantage is there in preventing it working?
We can't change any of the bring up / sizing etc as a result so might as
well let it through.

> 
> 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>
> ---
> I'm assuming ia64 with physical hotplug machines once existed, and
> that Loongarch machines with support for this don't.
> ---
>  arch/ia64/Kconfig             |  1 +
>  arch/x86/Kconfig              |  1 +
>  drivers/acpi/Kconfig          |  9 +++++++++
>  drivers/acpi/acpi_processor.c | 14 +++++++++++++-
>  drivers/acpi/bus.c            | 16 ++++++++++++++++
>  include/linux/acpi.h          |  4 ++++
>  6 files changed, 44 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index 54972f9fe804..13df676bad67 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -17,6 +17,7 @@ config IA64
>  	select ARCH_MIGHT_HAVE_PC_SERIO
>  	select ACPI
>  	select ACPI_HOTPLUG_PRESENT_CPU if ACPI_PROCESSOR && HOTPLUG_CPU
> +	select ACPI_HOTPLUG_IGNORE_OSC  if ACPI
>  	select ACPI_NUMA if NUMA
>  	select ARCH_ENABLE_MEMORY_HOTPLUG
>  	select ARCH_ENABLE_MEMORY_HOTREMOVE
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 295a7a3debb6..5fea3ce9594e 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -61,6 +61,7 @@ config X86
>  	select ACPI_LEGACY_TABLES_LOOKUP	if ACPI
>  	select ACPI_SYSTEM_POWER_STATES_SUPPORT	if ACPI
>  	select ACPI_HOTPLUG_PRESENT_CPU		if ACPI_PROCESSOR && HOTPLUG_CPU
> +	select ACPI_HOTPLUG_IGNORE_OSC		if ACPI && HOTPLUG_CPU
>  	select ARCH_32BIT_OFF_T			if X86_32
>  	select ARCH_CLOCKSOURCE_INIT
>  	select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 417f9f3077d2..c49978b4b11f 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -310,6 +310,15 @@ config ACPI_HOTPLUG_PRESENT_CPU
>  	depends on ACPI_PROCESSOR && HOTPLUG_CPU
>  	select ACPI_CONTAINER
>  
> +config ACPI_HOTPLUG_IGNORE_OSC
> +	bool
> +	depends on ACPI_HOTPLUG_PRESENT_CPU
> +	help
> +	  Ignore whether firmware acknowledged support for toggling the CPU
> +	  present bit in _STA. Some architectures predate the _OSC bits, so
> +	  firmware doesn't know to do this.
> +
> +
>  config ACPI_PROCESSOR_AGGREGATOR
>  	tristate "Processor Aggregator"
>  	depends on ACPI_PROCESSOR
> diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
> index b49859eab01a..87926f22c857 100644
> --- a/drivers/acpi/acpi_processor.c
> +++ b/drivers/acpi/acpi_processor.c
> @@ -181,6 +181,18 @@ static void __init acpi_pcc_cpufreq_init(void)
>  static void __init acpi_pcc_cpufreq_init(void) {}
>  #endif /* CONFIG_X86 */
>  
> +static bool acpi_processor_hotplug_present_supported(void)
> +{
> +	if (!IS_ENABLED(CONFIG_ACPI_HOTPLUG_PRESENT_CPU))
> +		return false;
> +
> +	/* x86 systems pre-date the _OSC bit */
> +	if (IS_ENABLED(CONFIG_ACPI_HOTPLUG_IGNORE_OSC))
> +		return true;
> +
> +	return osc_sb_hotplug_present_support_acked;
> +}
> +
>  /* Initialization */
>  static int acpi_processor_make_present(struct acpi_processor *pr)
>  {
> @@ -188,7 +200,7 @@ static int acpi_processor_make_present(struct acpi_processor *pr)
>  	acpi_status status;
>  	int ret;
>  
> -	if (!IS_ENABLED(CONFIG_ACPI_HOTPLUG_PRESENT_CPU)) {
> +	if (!acpi_processor_hotplug_present_supported()) {

I don't see the advantage of blocking on basis of what the firmware said.
It was clearly lying or didn't understand the question ;)

>  		pr_err_once("Changing CPU present bit is not supported\n");
>  		return -ENODEV;
>  	}
> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> index f41dda2d3493..123c28c2eda3 100644
> --- a/drivers/acpi/bus.c
> +++ b/drivers/acpi/bus.c
> @@ -298,6 +298,13 @@ EXPORT_SYMBOL_GPL(osc_sb_native_usb4_support_confirmed);
>  
>  bool osc_sb_cppc2_support_acked;
>  
> +/*
> + * ACPI 6.? Proposed Operating System Capabilities for modifying CPU
> + * present/enable.
> + */
> +bool osc_sb_hotplug_enabled_support_acked;
> +bool osc_sb_hotplug_present_support_acked;
> +
>  static u8 sb_uuid_str[] = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48";
>  static void acpi_bus_osc_negotiate_platform_control(void)
>  {
> @@ -346,6 +353,11 @@ static void acpi_bus_osc_negotiate_platform_control(void)
>  
>  	if (!ghes_disable)
>  		capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_APEI_SUPPORT;
> +
> +	capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_ENABLED_SUPPORT;
> +	if (IS_ENABLED(CONFIG_ACPI_HOTPLUG_PRESENT_CPU))
> +		capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_PRESENT_SUPPORT;
> +
>  	if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle)))
>  		return;
>  
> @@ -383,6 +395,10 @@ static void acpi_bus_osc_negotiate_platform_control(void)
>  			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_NATIVE_USB4_SUPPORT;
>  		osc_cpc_flexible_adr_space_confirmed =
>  			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_CPC_FLEXIBLE_ADR_SPACE;
> +		osc_sb_hotplug_enabled_support_acked =
> +			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_HOTPLUG_ENABLED_SUPPORT;
> +		osc_sb_hotplug_present_support_acked =
> +			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_HOTPLUG_PRESENT_SUPPORT;
>  	}
>  
>  	kfree(context.ret.pointer);
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index 92cb25349a18..2ba7e0b10bcf 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -580,12 +580,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


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2023-09-14 16:50 UTC|newest]

Thread overview: 456+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-13 16:37 [RFC PATCH v2 00/35] ACPI/arm64: add support for virtual cpuhotplug James Morse
2023-09-13 16:37 ` James Morse
2023-09-13 16:37 ` James Morse
2023-09-13 16:37 ` [RFC PATCH v2 01/35] ACPI: Move ACPI_HOTPLUG_CPU to be disabled on arm64 and riscv James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14  8:54   ` Russell King (Oracle)
2023-09-14  8:54     ` Russell King (Oracle)
2023-09-14  8:54     ` Russell King (Oracle)
2023-09-13 16:37 ` [RFC PATCH v2 02/35] drivers: base: Use present CPUs in GENERIC_CPU_DEVICES James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14  8:20   ` Russell King (Oracle)
2023-09-14  8:20     ` Russell King (Oracle)
2023-09-14  8:20     ` Russell King (Oracle)
2023-09-14 10:56     ` Jonathan Cameron
2023-09-14 10:56       ` Jonathan Cameron
2023-09-14 10:56       ` Jonathan Cameron
2023-09-14 11:11       ` Russell King (Oracle)
2023-09-14 11:11         ` Russell King (Oracle)
2023-09-14 11:11         ` Russell King (Oracle)
2023-09-14 10:56   ` Jonathan Cameron
2023-09-14 10:56     ` Jonathan Cameron
2023-09-14 10:56     ` Jonathan Cameron
2023-09-13 16:37 ` [RFC PATCH v2 03/35] drivers: base: Allow parts of GENERIC_CPU_DEVICES to be overridden James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14  8:33   ` Russell King (Oracle)
2023-09-14  8:33     ` Russell King (Oracle)
2023-09-14  8:33     ` Russell King (Oracle)
2023-09-14 11:00   ` Jonathan Cameron
2023-09-14 11:00     ` Jonathan Cameron
2023-09-14 11:00     ` Jonathan Cameron
2023-09-14 11:05   ` Jonathan Cameron
2023-09-14 11:05     ` Jonathan Cameron
2023-09-14 11:05     ` Jonathan Cameron
2023-09-13 16:37 ` [RFC PATCH v2 04/35] drivers: base: Move cpu_dev_init() after node_dev_init() James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14  9:40   ` Russell King (Oracle)
2023-09-14  9:40     ` Russell King (Oracle)
2023-09-14  9:40     ` Russell King (Oracle)
2023-09-14 11:16   ` Jonathan Cameron
2023-09-14 11:16     ` Jonathan Cameron
2023-09-14 11:16     ` Jonathan Cameron
2023-09-13 16:37 ` [RFC PATCH v2 05/35] drivers: base: Print a warning instead of panic() when register_cpu() fails James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14  9:52   ` Russell King (Oracle)
2023-09-14  9:52     ` Russell King (Oracle)
2023-09-14  9:52     ` Russell King (Oracle)
2023-09-18  3:33   ` Gavin Shan
2023-09-18  3:33     ` Gavin Shan
2023-09-18  3:33     ` Gavin Shan
2023-10-20 11:16     ` Russell King (Oracle)
2023-10-20 11:16       ` Russell King (Oracle)
2023-10-20 11:16       ` Russell King (Oracle)
2023-09-13 16:37 ` [RFC PATCH v2 06/35] arm64: setup: Switch over to GENERIC_CPU_DEVICES using arch_register_cpu() James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14  9:56   ` Russell King (Oracle)
2023-09-14  9:56     ` Russell King (Oracle)
2023-09-14  9:56     ` Russell King (Oracle)
2023-09-14 11:27   ` Jonathan Cameron
2023-09-14 11:27     ` Jonathan Cameron
2023-09-14 11:27     ` Jonathan Cameron
2023-09-14 14:07     ` Russell King (Oracle)
2023-09-14 14:07       ` Russell King (Oracle)
2023-09-14 14:07       ` Russell King (Oracle)
2023-09-14 14:56       ` Jonathan Cameron
2023-09-14 14:56         ` Jonathan Cameron
2023-09-14 14:56         ` Jonathan Cameron
2023-09-13 16:37 ` [RFC PATCH v2 07/35] x86: intel_epb: Don't rely on link order James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14 10:02   ` Russell King (Oracle)
2023-09-14 10:02     ` Russell King (Oracle)
2023-09-14 10:02     ` Russell King (Oracle)
2023-09-18  3:48   ` Gavin Shan
2023-09-18  3:48     ` Gavin Shan
2023-09-18  3:48     ` Gavin Shan
2023-09-13 16:37 ` [RFC PATCH v2 08/35] x86/topology: Switch over to GENERIC_CPU_DEVICES James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14 10:01   ` Russell King (Oracle)
2023-09-14 10:01     ` Russell King (Oracle)
2023-09-14 10:01     ` Russell King (Oracle)
2023-09-14 11:40   ` Jonathan Cameron
2023-09-14 11:40     ` Jonathan Cameron
2023-09-14 11:40     ` Jonathan Cameron
2023-09-13 16:37 ` [RFC PATCH v2 09/35] LoongArch: " James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14 10:03   ` Russell King (Oracle)
2023-09-14 10:03     ` Russell King (Oracle)
2023-09-14 10:03     ` Russell King (Oracle)
2023-09-14 11:47   ` Jonathan Cameron
2023-09-14 11:47     ` Jonathan Cameron
2023-09-14 11:47     ` Jonathan Cameron
2023-09-13 16:37 ` [RFC PATCH v2 10/35] riscv: " James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14 10:04   ` Russell King (Oracle)
2023-09-14 10:04     ` Russell King (Oracle)
2023-09-14 10:04     ` Russell King (Oracle)
2023-09-14 11:48     ` Jonathan Cameron
2023-09-14 11:48       ` Jonathan Cameron
2023-09-14 11:48       ` Jonathan Cameron
2023-09-13 16:37 ` [RFC PATCH v2 11/35] arch_topology: Make register_cpu_capacity_sysctl() tolerant to late CPUs James Morse
2023-09-13 16:37   ` James Morse
2023-09-13 16:37   ` James Morse
2023-09-14 12:01   ` Jonathan Cameron
2023-09-14 12:01     ` Jonathan Cameron
2023-09-14 12:01     ` Jonathan Cameron
2023-10-20 11:53     ` Russell King (Oracle)
2023-10-20 11:53       ` Russell King (Oracle)
2023-10-20 11:53       ` Russell King (Oracle)
2023-10-21 10:56       ` Greg KH
2023-10-21 10:56         ` Greg KH
2023-10-21 10:56         ` Greg KH
2023-10-20 13:44     ` Russell King (Oracle)
2023-10-20 13:44       ` Russell King (Oracle)
2023-10-20 13:44       ` Russell King (Oracle)
2023-11-14 10:04       ` Russell King (Oracle)
2023-11-14 10:04         ` Russell King (Oracle)
2023-11-14 10:04         ` Russell King (Oracle)
2023-11-30 16:46       ` Jonathan Cameron
2023-11-30 16:46         ` Jonathan Cameron
2023-11-30 16:46         ` Jonathan Cameron
2023-09-13 16:38 ` [RFC PATCH v2 12/35] ACPI: Use the acpi_device_is_present() helper in more places James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 12:04   ` Jonathan Cameron
2023-09-14 12:04     ` Jonathan Cameron
2023-09-14 12:04     ` Jonathan Cameron
2023-09-18  4:06   ` Gavin Shan
2023-09-18  4:06     ` Gavin Shan
2023-09-18  4:06     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 13/35] ACPI: Rename acpi_scan_device_not_present() to be about enumeration James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-18  4:13   ` Gavin Shan
2023-09-18  4:13     ` Gavin Shan
2023-09-18  4:13     ` Gavin Shan
2023-10-20 16:01   ` Russell King (Oracle)
2023-10-20 16:01     ` Russell King (Oracle)
2023-10-20 16:01     ` Russell King (Oracle)
2023-10-20 16:41     ` Jonathan Cameron
2023-10-20 16:41       ` Jonathan Cameron
2023-10-20 16:41       ` Jonathan Cameron
2023-09-13 16:38 ` [RFC PATCH v2 14/35] ACPI: Only enumerate enabled (or functional) devices James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 12:27   ` Jonathan Cameron
2023-09-14 12:27     ` Jonathan Cameron
2023-09-14 12:27     ` Jonathan Cameron
2023-09-14 13:09     ` Jonathan Cameron
2023-09-14 13:09       ` Jonathan Cameron
2023-09-14 13:09       ` Jonathan Cameron
2023-10-20 15:32       ` Russell King (Oracle)
2023-10-20 15:32         ` Russell King (Oracle)
2023-10-20 15:32         ` Russell King (Oracle)
2023-10-20 16:43         ` Jonathan Cameron
2023-10-20 16:43           ` Jonathan Cameron
2023-10-20 16:43           ` Jonathan Cameron
2023-09-18  4:38     ` Gavin Shan
2023-09-18  4:38       ` Gavin Shan
2023-09-18  4:38       ` Gavin Shan
2023-09-18 23:43   ` Gavin Shan
2023-09-18 23:43     ` Gavin Shan
2023-09-18 23:43     ` Gavin Shan
2023-10-20 15:45     ` Russell King (Oracle)
2023-10-20 15:45       ` Russell King (Oracle)
2023-10-20 15:45       ` Russell King (Oracle)
2023-09-13 16:38 ` [RFC PATCH v2 15/35] ACPI: processor: Add support for processors described as container packages James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 13:53   ` Jonathan Cameron
2023-09-14 13:53     ` Jonathan Cameron
2023-09-14 13:53     ` Jonathan Cameron
2023-11-03 10:43     ` Russell King (Oracle)
2023-11-03 10:43       ` Russell King (Oracle)
2023-11-03 10:43       ` Russell King (Oracle)
2023-11-03 10:57       ` Russell King (Oracle)
2023-11-03 10:57         ` Russell King (Oracle)
2023-11-03 10:57         ` Russell King (Oracle)
2023-11-03 12:52       ` Jonathan Cameron
2023-11-03 12:52         ` Jonathan Cameron
2023-11-03 12:52         ` Jonathan Cameron
2023-09-18  5:02   ` Gavin Shan
2023-09-18  5:02     ` Gavin Shan
2023-09-18  5:02     ` Gavin Shan
2023-11-03 10:54     ` Russell King (Oracle)
2023-11-03 10:54       ` Russell King (Oracle)
2023-11-03 10:54       ` Russell King (Oracle)
2023-11-03 11:37   ` Russell King (Oracle)
2023-11-03 11:37     ` Russell King (Oracle)
2023-11-03 11:37     ` Russell King (Oracle)
2023-09-13 16:38 ` [RFC PATCH v2 16/35] ACPI: processor: Register CPUs that are online, but not described in the DSDT James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 13:56   ` Jonathan Cameron
2023-09-14 13:56     ` Jonathan Cameron
2023-09-14 13:56     ` Jonathan Cameron
2023-09-18  5:12   ` Gavin Shan
2023-09-18  5:12     ` Gavin Shan
2023-09-18  5:12     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 17/35] ACPI: processor: Register all CPUs from acpi_processor_get_info() James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-18  5:19   ` Gavin Shan
2023-09-18  5:19     ` Gavin Shan
2023-09-18  5:19     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 18/35] ACPI: Rename ACPI_HOTPLUG_CPU to include 'present' James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-18  5:22   ` Gavin Shan
2023-09-18  5:22     ` Gavin Shan
2023-09-18  5:22     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 19/35] ACPI: Move acpi_bus_trim_one() before acpi_scan_hot_remove() James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 14:10   ` Jonathan Cameron
2023-09-14 14:10     ` Jonathan Cameron
2023-09-14 14:10     ` Jonathan Cameron
2023-09-18  5:36   ` Gavin Shan
2023-09-18  5:36     ` Gavin Shan
2023-09-18  5:36     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 20/35] ACPI: Rename acpi_processor_hotadd_init and remove pre-processor guards James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 14:17   ` Jonathan Cameron
2023-09-14 14:17     ` Jonathan Cameron
2023-09-14 14:17     ` Jonathan Cameron
2023-09-18  5:50     ` Gavin Shan
2023-09-18  5:50       ` Gavin Shan
2023-09-18  5:50       ` Gavin Shan
2023-10-23 20:01       ` Russell King (Oracle)
2023-10-23 20:01         ` Russell King (Oracle)
2023-10-23 20:01         ` Russell King (Oracle)
2023-09-13 16:38 ` [RFC PATCH v2 21/35] ACPI: Add post_eject to struct acpi_scan_handler for cpu hotplug James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 14:28   ` Jonathan Cameron
2023-09-14 14:28     ` Jonathan Cameron
2023-09-14 14:28     ` Jonathan Cameron
2023-09-19  0:31   ` Gavin Shan
2023-09-19  0:31     ` Gavin Shan
2023-09-19  0:31     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 22/35] ACPI: Check _STA present bit before making CPUs not present James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 14:31   ` Jonathan Cameron
2023-09-14 14:31     ` Jonathan Cameron
2023-09-14 14:31     ` Jonathan Cameron
2023-11-03 14:09     ` Russell King (Oracle)
2023-11-03 14:09       ` Russell King (Oracle)
2023-11-03 14:09       ` Russell King (Oracle)
2023-09-19  0:45   ` Gavin Shan
2023-09-19  0:45     ` Gavin Shan
2023-09-19  0:45     ` Gavin Shan
2023-11-03 14:37     ` Russell King (Oracle)
2023-11-03 14:37       ` Russell King (Oracle)
2023-11-03 14:37       ` Russell King (Oracle)
2023-09-13 16:38 ` [RFC PATCH v2 23/35] ACPI: Warn when the present bit changes but the feature is not enabled James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 14:32   ` Jonathan Cameron
2023-09-14 14:32     ` Jonathan Cameron
2023-09-14 14:32     ` Jonathan Cameron
2023-09-19  0:49   ` Gavin Shan
2023-09-19  0:49     ` Gavin Shan
2023-09-19  0:49     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 24/35] drivers: base: Implement weak arch_unregister_cpu() James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 14:39   ` Jonathan Cameron
2023-09-14 14:39     ` Jonathan Cameron
2023-09-14 14:39     ` Jonathan Cameron
2023-09-19  0:59   ` Gavin Shan
2023-09-19  0:59     ` Gavin Shan
2023-09-19  0:59     ` Gavin Shan
2023-10-23  8:44     ` Russell King (Oracle)
2023-10-23  8:44       ` Russell King (Oracle)
2023-10-23  8:44       ` Russell King (Oracle)
2023-10-23  8:55       ` Russell King (Oracle)
2023-10-23  8:55         ` Russell King (Oracle)
2023-10-23  8:55         ` Russell King (Oracle)
2023-09-13 16:38 ` [RFC PATCH v2 25/35] LoongArch: Use the __weak version of arch_unregister_cpu() James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 14:41   ` Jonathan Cameron
2023-09-14 14:41     ` Jonathan Cameron
2023-09-14 14:41     ` Jonathan Cameron
2023-10-23  8:48     ` Russell King (Oracle)
2023-10-23  8:48       ` Russell King (Oracle)
2023-10-23  8:48       ` Russell King (Oracle)
2023-09-19  1:09   ` Gavin Shan
2023-09-19  1:09     ` Gavin Shan
2023-09-19  1:09     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 26/35] arm64: acpi: Move get_cpu_for_acpi_id() to a header James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 14:43   ` Jonathan Cameron
2023-09-14 14:43     ` Jonathan Cameron
2023-09-14 14:43     ` Jonathan Cameron
2023-09-19  1:16   ` Gavin Shan
2023-09-19  1:16     ` Gavin Shan
2023-09-19  1:16     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 27/35] ACPICA: Add new MADT GICC flags fields [code first?] James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14  7:57   ` Ard Biesheuvel
2023-09-14  7:57     ` Ard Biesheuvel
2023-09-14  7:57     ` Ard Biesheuvel
2023-09-14 14:54     ` Jonathan Cameron
2023-09-14 14:54       ` Jonathan Cameron
2023-09-14 14:54       ` Jonathan Cameron
2023-09-14 15:34       ` Ard Biesheuvel
2023-09-14 15:34         ` Ard Biesheuvel
2023-09-14 15:34         ` Ard Biesheuvel
2023-09-14 15:49         ` Russell King (Oracle)
2023-09-14 15:49           ` Russell King (Oracle)
2023-09-14 15:49           ` Russell King (Oracle)
2023-09-15  2:29         ` Salil Mehta
2023-09-15  2:29           ` Salil Mehta
2023-09-15  2:29           ` Salil Mehta
2023-09-15  7:09           ` Russell King (Oracle)
2023-09-15  7:09             ` Russell King (Oracle)
2023-09-15  7:09             ` Russell King (Oracle)
2023-09-15  8:45             ` Rafael J. Wysocki
2023-09-15  8:45               ` Rafael J. Wysocki
2023-09-15  8:45               ` Rafael J. Wysocki
2023-09-15  9:34               ` Salil Mehta
2023-09-15  9:34                 ` Salil Mehta
2023-09-15  9:34                 ` Salil Mehta
2023-09-15 10:21                 ` Rafael J. Wysocki
2023-09-15 10:21                   ` Rafael J. Wysocki
2023-09-15 10:21                   ` Rafael J. Wysocki
2023-09-15 14:49                   ` Salil Mehta
2023-09-15 14:49                     ` Salil Mehta
2023-09-15 14:49                     ` Salil Mehta
2023-09-15 15:16                     ` Russell King (Oracle)
2023-09-15 15:16                       ` Russell King (Oracle)
2023-09-15 15:16                       ` Russell King (Oracle)
2023-09-15 16:46                       ` Salil Mehta
2023-09-15 16:46                         ` Salil Mehta
2023-09-15 16:46                         ` Salil Mehta
2023-09-15 13:43                 ` Russell King (Oracle)
2023-09-15 13:43                   ` Russell King (Oracle)
2023-09-15 13:43                   ` Russell King (Oracle)
2023-09-15 15:17                   ` Salil Mehta
2023-09-15 15:17                     ` Salil Mehta
2023-09-15 15:17                     ` Salil Mehta
2023-09-15 15:32                     ` Jonathan Cameron
2023-09-15 15:32                       ` Jonathan Cameron
2023-09-15 15:32                       ` Jonathan Cameron
2023-09-15 17:12                       ` Salil Mehta
2023-09-15 17:12                         ` Salil Mehta
2023-09-15 17:12                         ` Salil Mehta
2023-09-15 15:41                     ` Russell King (Oracle)
2023-09-15 15:41                       ` Russell King (Oracle)
2023-09-15 15:41                       ` Russell King (Oracle)
2023-09-15 17:07                       ` Salil Mehta
2023-09-15 17:07                         ` Salil Mehta
2023-09-15 17:07                         ` Salil Mehta
2023-09-15  9:21             ` Salil Mehta
2023-09-15  9:21               ` Salil Mehta
2023-09-15  9:21               ` Salil Mehta
2023-09-14 14:48   ` Jonathan Cameron
2023-09-14 14:48     ` Jonathan Cameron
2023-09-14 14:48     ` Jonathan Cameron
2023-09-13 16:38 ` [RFC PATCH v2 28/35] arm64, irqchip/gic-v3, ACPI: Move MADT GICC enabled check into a helper James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14  8:09   ` Russell King (Oracle)
2023-09-14  8:09     ` Russell King (Oracle)
2023-09-14  8:09     ` Russell King (Oracle)
2023-09-14 14:58   ` Jonathan Cameron
2023-09-14 14:58     ` Jonathan Cameron
2023-09-14 14:58     ` Jonathan Cameron
2023-09-19  1:23   ` Gavin Shan
2023-09-19  1:23     ` Gavin Shan
2023-09-19  1:23     ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 29/35] irqchip/gic-v3: Don't return errors from gic_acpi_match_gicc() James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 15:02   ` Jonathan Cameron
2023-09-14 15:02     ` Jonathan Cameron
2023-09-14 15:02     ` Jonathan Cameron
2023-10-23 18:58     ` Russell King (Oracle)
2023-10-23 18:58       ` Russell King (Oracle)
2023-10-23 18:58       ` Russell King (Oracle)
2023-09-19  3:39   ` Gavin Shan
2023-09-19  3:39     ` Gavin Shan
2023-09-19  3:39     ` Gavin Shan
2023-09-19  3:51     ` Gavin Shan
2023-09-19  3:51       ` Gavin Shan
2023-09-19  3:51       ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 30/35] irqchip/gic-v3: Add support for ACPI's disabled but 'online capable' CPUs James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14  8:10   ` Russell King (Oracle)
2023-09-14  8:10     ` Russell King (Oracle)
2023-09-14  8:10     ` Russell King (Oracle)
2023-09-19  3:53     ` Gavin Shan
2023-09-19  3:53       ` Gavin Shan
2023-09-19  3:53       ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 31/35] arm64: psci: Ignore DENIED CPUs James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 16:01   ` Jonathan Cameron
2023-09-14 16:01     ` Jonathan Cameron
2023-09-14 16:01     ` Jonathan Cameron
2023-09-19  4:31     ` Gavin Shan
2023-09-19  4:31       ` Gavin Shan
2023-09-19  4:31       ` Gavin Shan
2023-09-13 16:38 ` [RFC PATCH v2 32/35] ACPI: add support to register CPUs based on the _STA enabled bit James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 16:13   ` Jonathan Cameron
2023-09-14 16:13     ` Jonathan Cameron
2023-09-14 16:13     ` Jonathan Cameron
2023-09-19 10:24     ` Russell King (Oracle)
2023-09-19 10:24       ` Russell King (Oracle)
2023-09-19 10:24       ` Russell King (Oracle)
2023-09-19  4:46   ` Gavin Shan
2023-09-19  4:46     ` Gavin Shan
2023-09-19  4:46     ` Gavin Shan
2023-09-19  9:55     ` Russell King (Oracle)
2023-09-19  9:55       ` Russell King (Oracle)
2023-09-19  9:55       ` Russell King (Oracle)
2023-09-13 16:38 ` [RFC PATCH v2 33/35] arm64: document virtual CPU hotplug's expectations James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 16:41   ` Jonathan Cameron
2023-09-14 16:41     ` Jonathan Cameron
2023-09-14 16:41     ` Jonathan Cameron
2023-09-13 16:38 ` [RFC PATCH v2 34/35] ACPI: Add _OSC bits to advertise OS support for toggling CPU present/enabled James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 16:50   ` Jonathan Cameron [this message]
2023-09-14 16:50     ` Jonathan Cameron
2023-09-14 16:50     ` Jonathan Cameron
2023-09-13 16:38 ` [RFC PATCH v2 35/35] cpumask: Add enabled cpumask for present CPUs that can be brought online James Morse
2023-09-13 16:38   ` James Morse
2023-09-13 16:38   ` James Morse
2023-09-14 16:54   ` Jonathan Cameron
2023-09-14 16:54     ` Jonathan Cameron
2023-09-14 16:54     ` Jonathan Cameron
2023-09-18 10:27 ` [RFC PATCH v2 00/35] ACPI/arm64: add support for virtual cpuhotplug Russell King (Oracle)
2023-09-18 10:27   ` Russell King (Oracle)
2023-09-18 10:27   ` Russell King (Oracle)
2023-09-26 13:16 ` Salil Mehta
2023-09-26 13:16   ` Salil Mehta
2023-09-26 13:16   ` Salil Mehta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230914175021.000018fd@Huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=james.morse@arm.com \
    --cc=jean-philippe@linaro.org \
    --cc=jianyong.wu@arm.com \
    --cc=justin.he@arm.com \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux@armlinux.org.uk \
    --cc=loongarch@lists.linux.dev \
    --cc=salil.mehta@huawei.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.