[PATCH v2 0/3] virt: wire up NS EL2 virtual timer IRQ

Peter Maydell posted 3 patches 3 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240122143537.233498-1-peter.maydell@linaro.org
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <anisinha@redhat.com>, Shannon Zhao <shannon.zhaosl@gmail.com>, Peter Maydell <peter.maydell@linaro.org>
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(-)
[PATCH v2 0/3] virt: wire up NS EL2 virtual timer IRQ
Posted by Peter Maydell 3 months, 1 week ago
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
Re: [PATCH v2 0/3] virt: wire up NS EL2 virtual timer IRQ
Posted by Ard Biesheuvel 2 months, 2 weeks ago
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>
Re: [PATCH v2 0/3] virt: wire up NS EL2 virtual timer IRQ
Posted by Peter Maydell 3 months ago
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(-)
>