include/hw/arm/virt.h | 2 ++ hw/arm/virt-acpi-build.c | 20 +++++++++---- hw/arm/virt.c | 60 ++++++++++++++++++++++++++++++++------ tests/data/acpi/virt/FACP | Bin 276 -> 276 bytes tests/data/acpi/virt/GTDT | Bin 96 -> 104 bytes 5 files changed, 67 insertions(+), 15 deletions(-)
This patchset wires up the NS EL2 virtual timer IRQ on the virt board, similarly to what commit 058262e0a8b2 did for the sbsa-ref board. Version 1 was an RFC patchset, originally sent back in autumn: https://patchew.org/QEMU/20230919101240.2569334-1-peter.maydell@linaro.org/ The main reason for it being an RFC is that the change, while correct, triggers a bug in EDK2 guest firmware that makes EDK2 assert on bootup. Since the RFC, we've upgraded our in-tree version of the EDK2 binaries to a version that has the fix for that bug, so I think the QEMU side of these patches is ready to go in now. To accommodate users who might still be using older EDK2 binaries, we only expose the IRQ in the DTB and ACPI tables for virt-9.0 and later machine types. If you see in the guest: ASSERT [ArmTimerDxe] /home/kraxel/projects/qemu/roms/edk2/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c(72): PropSize == 36 || PropSize == 48 then your options are: * update your EDK2 binaries to edk2-stable202311 or newer * use the 'virt-8.2' versioned machine type * not use 'virtualization=on' I'll put something about this into the release notes when this goes into git. (There are other reasons why you probably want a newer EDK2 for AArch64 guests, so this is worth flagging up to our downstream distros who don't take our pre-built firmware binaries.) changes v1->v2: * the change in DTB and ACPI tables is now tied to the machine version * handle change of the ARCH_TIMER_*_IRQ values from PPI numbers to INTIDs * bump the FADT header to indicate ACPI v6.3, since we might be using a 6.3 feature in the GTDT * the avocado tests now all pass, because we have updated our copy of EDK2 in pc-bios/ to a version which has the fix for the bug which would otherwise cause it to assert on bootup * patch 2 commit message improved to give details of the EDK2 assert and state the options for dealing with it (this will also go into the QEMU release notes) thanks -- PMM Peter Maydell (3): tests/qtest/bios-tables-test: Allow changes to virt GTDT hw/arm/virt: Wire up non-secure EL2 virtual timer IRQ tests/qtest/bios-tables-tests: Update virt golden reference include/hw/arm/virt.h | 2 ++ hw/arm/virt-acpi-build.c | 20 +++++++++---- hw/arm/virt.c | 60 ++++++++++++++++++++++++++++++++------ tests/data/acpi/virt/FACP | Bin 276 -> 276 bytes tests/data/acpi/virt/GTDT | Bin 96 -> 104 bytes 5 files changed, 67 insertions(+), 15 deletions(-) -- 2.34.1
On Mon, 22 Jan 2024 at 15:35, Peter Maydell <peter.maydell@linaro.org> wrote: > > This patchset wires up the NS EL2 virtual timer IRQ on the virt > board, similarly to what commit 058262e0a8b2 did for the sbsa-ref board. > > Version 1 was an RFC patchset, originally sent back in autumn: > https://patchew.org/QEMU/20230919101240.2569334-1-peter.maydell@linaro.org/ > The main reason for it being an RFC is that the change, while correct, > triggers a bug in EDK2 guest firmware that makes EDK2 assert on bootup. > Since the RFC, we've upgraded our in-tree version of the EDK2 binaries > to a version that has the fix for that bug, so I think the QEMU side of > these patches is ready to go in now. > > To accommodate users who might still be using older EDK2 binaries, > we only expose the IRQ in the DTB and ACPI tables for virt-9.0 and > later machine types. > > If you see in the guest: > ASSERT [ArmTimerDxe] /home/kraxel/projects/qemu/roms/edk2/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c(72): PropSize == 36 || PropSize == 48 > > then your options are: > * update your EDK2 binaries to edk2-stable202311 or newer > * use the 'virt-8.2' versioned machine type > * not use 'virtualization=on' > > I'll put something about this into the release notes when this > goes into git. (There are other reasons why you probably want a > newer EDK2 for AArch64 guests, so this is worth flagging up to our > downstream distros who don't take our pre-built firmware binaries.) > > changes v1->v2: > * the change in DTB and ACPI tables is now tied to the machine version > * handle change of the ARCH_TIMER_*_IRQ values from PPI numbers to INTIDs > * bump the FADT header to indicate ACPI v6.3, since we might be using > a 6.3 feature in the GTDT > * the avocado tests now all pass, because we have updated our copy > of EDK2 in pc-bios/ to a version which has the fix for the bug > which would otherwise cause it to assert on bootup > * patch 2 commit message improved to give details of the EDK2 assert and > state the options for dealing with it (this will also go into the > QEMU release notes) > > thanks > -- PMM > > Peter Maydell (3): > tests/qtest/bios-tables-test: Allow changes to virt GTDT > hw/arm/virt: Wire up non-secure EL2 virtual timer IRQ > tests/qtest/bios-tables-tests: Update virt golden reference > Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Ping for code review, please? thanks -- PMM On Mon, 22 Jan 2024 at 14:35, Peter Maydell <peter.maydell@linaro.org> wrote: > > This patchset wires up the NS EL2 virtual timer IRQ on the virt > board, similarly to what commit 058262e0a8b2 did for the sbsa-ref board. > > Version 1 was an RFC patchset, originally sent back in autumn: > https://patchew.org/QEMU/20230919101240.2569334-1-peter.maydell@linaro.org/ > The main reason for it being an RFC is that the change, while correct, > triggers a bug in EDK2 guest firmware that makes EDK2 assert on bootup. > Since the RFC, we've upgraded our in-tree version of the EDK2 binaries > to a version that has the fix for that bug, so I think the QEMU side of > these patches is ready to go in now. > > To accommodate users who might still be using older EDK2 binaries, > we only expose the IRQ in the DTB and ACPI tables for virt-9.0 and > later machine types. > > If you see in the guest: > ASSERT [ArmTimerDxe] /home/kraxel/projects/qemu/roms/edk2/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c(72): PropSize == 36 || PropSize == 48 > > then your options are: > * update your EDK2 binaries to edk2-stable202311 or newer > * use the 'virt-8.2' versioned machine type > * not use 'virtualization=on' > > I'll put something about this into the release notes when this > goes into git. (There are other reasons why you probably want a > newer EDK2 for AArch64 guests, so this is worth flagging up to our > downstream distros who don't take our pre-built firmware binaries.) > > changes v1->v2: > * the change in DTB and ACPI tables is now tied to the machine version > * handle change of the ARCH_TIMER_*_IRQ values from PPI numbers to INTIDs > * bump the FADT header to indicate ACPI v6.3, since we might be using > a 6.3 feature in the GTDT > * the avocado tests now all pass, because we have updated our copy > of EDK2 in pc-bios/ to a version which has the fix for the bug > which would otherwise cause it to assert on bootup > * patch 2 commit message improved to give details of the EDK2 assert and > state the options for dealing with it (this will also go into the > QEMU release notes) > > thanks > -- PMM > > Peter Maydell (3): > tests/qtest/bios-tables-test: Allow changes to virt GTDT > hw/arm/virt: Wire up non-secure EL2 virtual timer IRQ > tests/qtest/bios-tables-tests: Update virt golden reference > > include/hw/arm/virt.h | 2 ++ > hw/arm/virt-acpi-build.c | 20 +++++++++---- > hw/arm/virt.c | 60 ++++++++++++++++++++++++++++++++------ > tests/data/acpi/virt/FACP | Bin 276 -> 276 bytes > tests/data/acpi/virt/GTDT | Bin 96 -> 104 bytes > 5 files changed, 67 insertions(+), 15 deletions(-) >
© 2016 - 2024 Red Hat, Inc.