[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machi
From: |
Laszlo Ersek |
Subject: |
Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types |
Date: |
Thu, 2 Jul 2020 11:48:21 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 Thunderbird/52.9.1 |
On 06/29/20 16:09, Andrew Jones wrote:
> The flash device is exclusively for the host-controlled firmware, so
> we should not expose it to the OS. Exposing it risks the OS messing
> with it, which could break firmware runtime services and surprise the
> OS when all its changes disappear after reboot.
>
> As firmware needs the device and uses DT, we leave the device exposed
> there. It's up to firmware to remove the nodes from DT before sending
> it on to the OS. However, there's no need to force firmware to remove
> tables from ACPI (which it doesn't know how to do anyway), so we
> simply don't add the tables in the first place. But, as we've been
> adding the tables for quite some time and don't want to change the
> default hardware exposed to versioned machines, then we only stop
> exposing the flash device tables for 5.1 and later machine types.
>
> Suggested-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
> Suggested-by: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> ---
> hw/arm/virt-acpi-build.c | 5 ++++-
> hw/arm/virt.c | 3 +++
> include/hw/arm/virt.h | 1 +
> 3 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
> index 1384a2cf2ab4..91f0df7b13a3 100644
> --- a/hw/arm/virt-acpi-build.c
> +++ b/hw/arm/virt-acpi-build.c
> @@ -749,6 +749,7 @@ static void build_fadt_rev5(GArray *table_data,
> BIOSLinker *linker,
> static void
> build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
> {
> + VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
> Aml *scope, *dsdt;
> MachineState *ms = MACHINE(vms);
> const MemMapEntry *memmap = vms->memmap;
> @@ -767,7 +768,9 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
> VirtMachineState *vms)
> acpi_dsdt_add_cpus(scope, vms->smp_cpus);
> acpi_dsdt_add_uart(scope, &memmap[VIRT_UART],
> (irqmap[VIRT_UART] + ARM_SPI_BASE));
> - acpi_dsdt_add_flash(scope, &memmap[VIRT_FLASH]);
> + if (vmc->acpi_expose_flash) {
> + acpi_dsdt_add_flash(scope, &memmap[VIRT_FLASH]);
> + }
> acpi_dsdt_add_fw_cfg(scope, &memmap[VIRT_FW_CFG]);
> acpi_dsdt_add_virtio(scope, &memmap[VIRT_MMIO],
> (irqmap[VIRT_MMIO] + ARM_SPI_BASE),
> NUM_VIRTIO_TRANSPORTS);
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index cd0834ce7faf..5adc9ff799ef 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -2482,9 +2482,12 @@ DEFINE_VIRT_MACHINE_AS_LATEST(5, 1)
>
> static void virt_machine_5_0_options(MachineClass *mc)
> {
> + VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
> +
> virt_machine_5_1_options(mc);
> compat_props_add(mc->compat_props, hw_compat_5_0, hw_compat_5_0_len);
> mc->numa_mem_supported = true;
> + vmc->acpi_expose_flash = true;
> }
> DEFINE_VIRT_MACHINE(5, 0)
>
> diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
> index 31878ddc7223..c65be5fe0bb6 100644
> --- a/include/hw/arm/virt.h
> +++ b/include/hw/arm/virt.h
> @@ -119,6 +119,7 @@ typedef struct {
> bool no_highmem_ecam;
> bool no_ged; /* Machines < 4.2 has no support for ACPI GED device */
> bool kvm_no_adjvtime;
> + bool acpi_expose_flash;
> } VirtMachineClass;
>
> typedef struct {
>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Thank you!
Laszlo
- Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types,
Laszlo Ersek <=
- Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types, Michael S. Tsirkin, 2020/07/02
- Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types, Igor Mammedov, 2020/07/13
- Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types, Andrew Jones, 2020/07/14
- Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types, Michael S. Tsirkin, 2020/07/14
- Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types, Andrew Jones, 2020/07/14
- Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types, Michael S. Tsirkin, 2020/07/14
- Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types, Igor Mammedov, 2020/07/14
- Re: [PATCH 3/4] hw/arm/virt-acpi-build: Only expose flash on older machine types, Andrew Jones, 2020/07/15