[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH for-5.0 v2 9/9] acpi: cpuhp: add CPHP_GET_CPU_ID_CMD command
From: |
Laszlo Ersek |
Subject: |
Re: [PATCH for-5.0 v2 9/9] acpi: cpuhp: add CPHP_GET_CPU_ID_CMD command |
Date: |
Mon, 9 Dec 2019 21:46:35 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 12/09/19 14:09, Igor Mammedov wrote:
> Firmware can enumerate present at boot APs by broadcasting wakeup IPI,
> so that woken up secondary CPUs could register them-selves.
> However in CPU hotplug case, it would need to know architecture
> specific CPU IDs for possible and hotplugged CPUs so it could
> prepare environment for and wake hotplugged AP.
>
> Reuse and extend existing CPU hotplug interface to return architecture
> specific ID for currently selected CPU in 2 registers:
> - lower 32 bits in ACPI_CPU_CMD_DATA_OFFSET_RW
> - upper 32 bits in ACPI_CPU_CMD_DATA2_OFFSET_R
>
> On x86, firmware will use CPHP_GET_CPU_ID_CMD for fetching the APIC ID
> when handling hotplug SMI.
>
> Later, CPHP_GET_CPU_ID_CMD will be used on ARM to retrieve MPIDR,
> which serves the similar to APIC ID purpose.
>
> Signed-off-by: Igor Mammedov <address@hidden>
> ---
> v1:
> - s/ACPI_CPU_CMD_DATA2_OFFSET_RW/ACPI_CPU_CMD_DATA2_OFFSET_R/.
> v2:
> - ACPI_CPU_CMD_DATA2_OFFSET_R moved into separate patch
> that adds 'Command data 2' field separately
> - ammend commit message
> ---
> docs/specs/acpi_cpu_hotplug.txt | 3 +++
> hw/acpi/cpu.c | 7 +++++++
> 2 files changed, 10 insertions(+)
>
> diff --git a/docs/specs/acpi_cpu_hotplug.txt b/docs/specs/acpi_cpu_hotplug.txt
> index cb99cf3..a8ce5e7 100644
> --- a/docs/specs/acpi_cpu_hotplug.txt
> +++ b/docs/specs/acpi_cpu_hotplug.txt
> @@ -47,6 +47,7 @@ read access:
> [0x0-0x3] Command data 2: (DWORD access)
> if value last stored in 'Command field':
> 0: reads as 0x0
> + 3: upper 32 bits of architecture specific CPU ID value
> other values: reserved
> [0x4] CPU device status fields: (1 byte access)
> bits:
> @@ -61,6 +62,8 @@ read access:
> [0x8] Command data: (DWORD access)
> contains 0 unless value last stored in 'Command field' is one of:
> 0: contains 'CPU selector' value of a CPU with pending event[s]
> + 3: lower 32 bits of architecture specific CPU ID value
> + (in x86 case: APIC ID)
>
> write access:
> offset:
> diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
> index d475c06..e2c957c 100644
> --- a/hw/acpi/cpu.c
> +++ b/hw/acpi/cpu.c
> @@ -18,6 +18,7 @@ enum {
> CPHP_GET_NEXT_CPU_WITH_EVENT_CMD = 0,
> CPHP_OST_EVENT_CMD = 1,
> CPHP_OST_STATUS_CMD = 2,
> + CPHP_GET_CPU_ID_CMD = 3,
> CPHP_CMD_MAX
> };
>
> @@ -75,6 +76,9 @@ static uint64_t cpu_hotplug_rd(void *opaque, hwaddr addr,
> unsigned size)
> case CPHP_GET_NEXT_CPU_WITH_EVENT_CMD:
> val = cpu_st->selector;
> break;
> + case CPHP_GET_CPU_ID_CMD:
> + val = cdev->arch_id & 0xFFFFFFFF;
> + break;
> default:
> break;
> }
> @@ -85,6 +89,9 @@ static uint64_t cpu_hotplug_rd(void *opaque, hwaddr addr,
> unsigned size)
> case CPHP_GET_NEXT_CPU_WITH_EVENT_CMD:
> val = 0;
> break;
> + case CPHP_GET_CPU_ID_CMD:
> + val = cdev->arch_id >> 32;
> + break;
> default:
> break;
> }
>
Reviewed-by: Laszlo Ersek <address@hidden>
Thanks!
Laszlo
- [PATCH for-5.0 v2 1/9] hw: add compat machines for 5.0, (continued)
- [PATCH for-5.0 v2 1/9] hw: add compat machines for 5.0, Igor Mammedov, 2019/12/09
- [PATCH for-5.0 v2 2/9] q35: implement 128K SMRAM at default SMBASE address, Igor Mammedov, 2019/12/09
- [PATCH for-5.0 v2 3/9] tests: q35: MCH: add default SMBASE SMRAM lock test, Igor Mammedov, 2019/12/09
- [PATCH for-5.0 v2 5/9] acpi: cpuhp: spec: fix 'Command data' description, Igor Mammedov, 2019/12/09
- [PATCH for-5.0 v2 4/9] acpi: cpuhp: spec: clarify 'CPU selector' register usage and endianness, Igor Mammedov, 2019/12/09
- [PATCH for-5.0 v2 6/9] acpi: cpuhp: spec: clarify store into 'Command data' when 'Command field' == 0, Igor Mammedov, 2019/12/09
- [PATCH for-5.0 v2 9/9] acpi: cpuhp: add CPHP_GET_CPU_ID_CMD command, Igor Mammedov, 2019/12/09
- Re: [PATCH for-5.0 v2 9/9] acpi: cpuhp: add CPHP_GET_CPU_ID_CMD command,
Laszlo Ersek <=
- [PATCH for-5.0 v2 7/9] acpi: cpuhp: introduce 'Command data 2' field, Igor Mammedov, 2019/12/09
- [PATCH for-5.0 v2 8/9] acpi: cpuhp: spec: add typical usecases, Igor Mammedov, 2019/12/09
- Re: [PATCH for-5.0 v2 0/9] q35: CPU hotplug with secure boot, part 1+2, Igor Mammedov, 2019/12/19