qemu-e2k/hw/arm
Michael S. Tsirkin 9b897b399e arm/acpi: fix an out of spec _UID for PCI root
On ARM/virt machine type QEMU currently reports an incorrect _UID in
ACPI.

The particular node in question is the primary PciRoot (PCI0 in ACPI),
which gets assigned PCI0 in ACPI UID and 0 in the
DevicePath. This is due to the _UID assigned to it by build_dsdt in
hw/arm/virt-acpi-build.c Which does not correspond to the primary PCI
identifier given by pcibus_num in hw/pci/pci.c

In UEFI v2.8, section "10.4.2 Rules with ACPI _HID and _UID" ends with
the paragraph,

    Root PCI bridges will use the plug and play ID of PNP0A03, This will
    be stored in the ACPI Device Path _HID field, or in the Expanded
    ACPI Device Path _CID field to match the ACPI name space. The _UID
    in the ACPI Device Path structure must match the _UID in the ACPI
    name space.

(See especially the last sentence.)

A similar bug has been reported on i386, on that architecture it has
been reported to confuse at least macOS which uses ACPI UIDs to build
the DevicePath for NVRAM boot options, while OVMF firmware gets them via
an internal channel through QEMU.  When UEFI firmware and ACPI have
different values, this makes the underlying operating system unable to
report its boot option.

Cc: qemu-stable@nongnu.org
Reported-by: Vitaly Cheptsov <vit9696@protonmail.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2020-08-27 08:27:48 -04:00
..
allwinner-a10.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
allwinner-h3.c hw: Mark nd_table[] misuse in realize methods FIXME 2020-07-21 08:41:15 +02:00
armsse.c hw/arm/armsse: Assert info->num_cpus is in-bounds in armsse_realize() 2020-07-20 11:35:17 +01:00
armv7m.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
aspeed_ast2600.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
aspeed_soc.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
aspeed.c Minor changes to: 2020-07-20 11:03:09 +01:00
bcm2835_peripherals.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
bcm2836.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
boot.c hw/arm/boot: Fix MTE for EL3 direct kernel boot 2020-07-27 16:12:10 +01:00
collie.c hw/arm/collie: Put StrongARMState* into a CollieMachineState struct 2020-04-03 19:23:37 +01:00
cubieboard.c qom: Use returned bool to check for failure, Coccinelle part 2020-07-10 15:18:08 +02:00
digic_boards.c qdev: Use returned bool to check for qdev_realize() etc. failure 2020-07-10 15:01:06 +02:00
digic.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
exynos4_boards.c sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 1 2020-06-15 22:06:04 +02:00
exynos4210.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
fsl-imx6.c Add the ability to change the FEC PHY MDIO device number on i.MX6 processor 2020-07-13 14:36:08 +01:00
fsl-imx6ul.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
fsl-imx7.c Add the ability to change the FEC PHY MDIO devices numbers on i.MX7 processor 2020-07-13 14:36:08 +01:00
fsl-imx25.c Add the ability to change the FEC PHY MDIO device number on i.MX25 processor 2020-07-13 14:36:07 +01:00
fsl-imx31.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
gumstix.c hw/arm/gumstix: Simplify since the machines are little-endian only 2020-03-05 16:09:14 +00:00
highbank.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
imx25_pdk.c qdev: Make qdev_prop_set_drive() match the other helpers 2020-06-23 16:07:07 +02:00
integratorcp.c hw/sd/pl181: Do not create SD card within the SD host controller 2020-08-21 16:22:43 +02:00
Kconfig hw: Only compile the usb-dwc2 controller if it is really needed 2020-07-24 16:15:28 +02:00
kzm.c qdev: Convert bus-less devices to qdev_realize() with Coccinelle 2020-06-15 22:06:04 +02:00
mainstone.c hw/arm: Use memory_region_init_rom() with read-only regions 2020-03-17 15:18:46 +01:00
mcimx6ul-evk.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
mcimx7d-sabre.c qdev: Make qdev_prop_set_drive() match the other helpers 2020-06-23 16:07:07 +02:00
meson.build meson: convert hw/arch* 2020-08-21 06:30:33 -04:00
microbit.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
mps2-tz.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
mps2.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
msf2-soc.c msf2-soc, stellaris: Don't wire up SYSRESETREQ 2020-08-03 17:55:03 +01:00
msf2-som.c qdev: Make qdev_prop_set_drive() match the other helpers 2020-06-23 16:07:07 +02:00
musca.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
musicpal.c hw/i2c: Rename i2c_create_slave() as i2c_slave_create_simple() 2020-07-16 12:30:54 -05:00
netduino2.c hw/arm/netduino2, netduinoplus2: Set system_clock_scale 2020-08-03 17:55:03 +01:00
netduinoplus2.c hw/arm/netduino2, netduinoplus2: Set system_clock_scale 2020-08-03 17:55:03 +01:00
nrf51_soc.c hw/arm/nrf51_soc: Set system_clock_scale 2020-08-03 17:55:31 +01:00
nseries.c hw/i2c: Rename i2c_create_slave() as i2c_slave_create_simple() 2020-07-16 12:30:54 -05:00
omap1.c sysbus: Convert to sysbus_realize() etc. with Coccinelle 2020-06-15 22:05:28 +02:00
omap2.c sysbus: Convert to sysbus_realize() etc. with Coccinelle 2020-06-15 22:05:28 +02:00
omap_sx1.c hw/arm: Use memory_region_init_rom() with read-only regions 2020-03-17 15:18:46 +01:00
orangepi.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
palm.c hw/arm/palm.c: Encapsulate misc GPIO handling in a device 2020-07-13 14:36:12 +01:00
pxa2xx_gpio.c sysbus: Convert to sysbus_realize() etc. with Coccinelle 2020-06-15 22:05:28 +02:00
pxa2xx_pic.c hw/arm/pxa2xx_pic: Use LOG_GUEST_ERROR for bad guest register accesses 2020-07-03 16:59:45 +01:00
pxa2xx.c hw/sd/pxa2xx_mmci: Do not create SD card within the SD host controller 2020-08-21 16:22:43 +02:00
raspi.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
realview.c hw/sd/pl181: Do not create SD card within the SD host controller 2020-08-21 16:22:43 +02:00
sabrelite.c qdev: Make qdev_prop_set_drive() match the other helpers 2020-06-23 16:07:07 +02:00
sbsa-ref.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
smmu-common.c hw/arm/smmuv3: Support HAD and advertise SMMUv3.1 support 2020-08-24 10:02:06 +01:00
smmu-internal.h hw/arm/smmu-common: Manage IOTLB block entries 2020-08-24 10:02:06 +01:00
smmuv3-internal.h hw/arm/smmuv3: Advertise SMMUv3.2 range invalidation 2020-08-24 10:02:06 +01:00
smmuv3.c hw/arm/smmuv3: Advertise SMMUv3.2 range invalidation 2020-08-24 10:02:06 +01:00
spitz.c hw/i2c: Rename i2c_create_slave() as i2c_slave_create_simple() 2020-07-16 12:30:54 -05:00
stellaris.c msf2-soc, stellaris: Don't wire up SYSRESETREQ 2020-08-03 17:55:03 +01:00
stm32f205_soc.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
stm32f405_soc.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
strongarm.c sysbus: Convert to sysbus_realize() etc. with Coccinelle 2020-06-15 22:05:28 +02:00
strongarm.h hw/arm/collie: Create the RAM in the board 2019-10-22 17:44:01 +01:00
sysbus-fdt.c hw/arm/virt: vTPM support 2020-03-05 12:18:16 -05:00
tosa.c Minor changes to: 2020-07-20 11:03:09 +01:00
trace-events hw/arm/smmuv3: Support HAD and advertise SMMUv3.1 support 2020-08-24 10:02:06 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
versatilepb.c hw/sd/pl181: Do not create SD card within the SD host controller 2020-08-21 16:22:43 +02:00
vexpress.c hw/sd/pl181: Do not create SD card within the SD host controller 2020-08-21 16:22:43 +02:00
virt-acpi-build.c arm/acpi: fix an out of spec _UID for PCI root 2020-08-27 08:27:48 -04:00
virt.c hw: add compat machines for 5.2 2020-08-19 10:45:48 -04:00
xilinx_zynq.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
xlnx-versal-virt.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
xlnx-versal.c hw: Mark nd_table[] misuse in realize methods FIXME 2020-07-21 08:41:15 +02:00
xlnx-zcu102.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
xlnx-zynqmp.c QOM patches for 2020-07-21 2020-07-21 18:31:52 +01:00
z2.c hw/i2c: Rename i2c_create_slave() as i2c_slave_create_simple() 2020-07-16 12:30:54 -05:00