* [edk2-devel] [PATCH edk2-platforms 0/1] Platform/QemuSbsa: define NS EL2 virtual timer in GTDT @ 2023-09-20 8:25 Marcin Juszkiewicz 2023-09-20 8:25 ` [edk2-devel] [PATCH edk2-platforms 1/1] " Marcin Juszkiewicz 0 siblings, 1 reply; 4+ messages in thread From: Marcin Juszkiewicz @ 2023-09-20 8:25 UTC (permalink / raw) To: devel; +Cc: Leif Lindholm, Graeme Gregory, Ard Biesheuvel, Marcin Juszkiewicz Arm BSA (Base System Architecture) specification requires Armv8.1+ cpus to have non-secure EL2 virtual timer. Which we lacked. In previous week I wrote a small patch to QEMU which enabled it for SBSA Reference Platform. Leif Lindholm refactored code around timers to make it more readable. Then he added missing timer into EDK2 ArmPkg and to "virt" platform. This patch enables NS EL2 virtual timer on SBSA Reference Platform. Marcin Juszkiewicz (1): Platform/QemuSbsa: define NS EL2 virtual timer in GTDT Platform/Qemu/SbsaQemu/SbsaQemu.dsc | 2 ++ Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf | 1 + Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) -- 2.41.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108901): https://edk2.groups.io/g/devel/message/108901 Mute This Topic: https://groups.io/mt/101474459/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 4+ messages in thread
* [edk2-devel] [PATCH edk2-platforms 1/1] Platform/QemuSbsa: define NS EL2 virtual timer in GTDT 2023-09-20 8:25 [edk2-devel] [PATCH edk2-platforms 0/1] Platform/QemuSbsa: define NS EL2 virtual timer in GTDT Marcin Juszkiewicz @ 2023-09-20 8:25 ` Marcin Juszkiewicz 2023-09-20 10:04 ` Leif Lindholm 0 siblings, 1 reply; 4+ messages in thread From: Marcin Juszkiewicz @ 2023-09-20 8:25 UTC (permalink / raw) To: devel; +Cc: Leif Lindholm, Graeme Gregory, Ard Biesheuvel, Marcin Juszkiewicz Armv8.1+ cpus have Virtual Host Extension (VHE) which added non-secure EL2 virtual timer. This change adds it into GTDT to fullfil Arm BSA (Base System Architecture) requirements. Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> --- Platform/Qemu/SbsaQemu/SbsaQemu.dsc | 2 ++ Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf | 1 + Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Platform/Qemu/SbsaQemu/SbsaQemu.dsc b/Platform/Qemu/SbsaQemu/SbsaQemu.dsc index be406144c242..8bea9793451a 100644 --- a/Platform/Qemu/SbsaQemu/SbsaQemu.dsc +++ b/Platform/Qemu/SbsaQemu/SbsaQemu.dsc @@ -447,6 +447,8 @@ [PcdsFixedAtBuild.common] gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|27 # PPI #10 gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum|26 + # PPI #12 + gArmTokenSpaceGuid.PcdArmArchTimerHypVirtIntrNum|28 ## PL031 RealTimeClock gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x60010000 diff --git a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf b/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf index 97021f7971c7..343c75f0b4ec 100644 --- a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf +++ b/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf @@ -36,6 +36,7 @@ [FixedPcd] gArmTokenSpaceGuid.PcdArmArchTimerIntrNum gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum + gArmTokenSpaceGuid.PcdArmArchTimerHypVirtIntrNum gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision diff --git a/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc b/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc index ba145aff6413..b5e8f8405d61 100644 --- a/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc +++ b/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc @@ -91,8 +91,8 @@ SBSA_PLATFORM_TIMER_COUNT, // UINT32 PlatformTimerCount sizeof(EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE), // UINT32 PlatformTimerOffset - 0, // UINT32 VirtualPL2TimerGSIV - 0 // UINT32 VirtualPL2TimerFlags + FixedPcdGet32 (PcdArmArchTimerHypVirtIntrNum),// UINT32 VirtualPL2TimerGSIV + GTDT_GTIMER_FLAGS // UINT32 VirtualPL2TimerFlags }, EFI_ACPI_6_3_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT( SBSAQEMU_WDT_REFRESH_FRAME_BASE, -- 2.41.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108902): https://edk2.groups.io/g/devel/message/108902 Mute This Topic: https://groups.io/mt/101474460/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [edk2-devel] [PATCH edk2-platforms 1/1] Platform/QemuSbsa: define NS EL2 virtual timer in GTDT 2023-09-20 8:25 ` [edk2-devel] [PATCH edk2-platforms 1/1] " Marcin Juszkiewicz @ 2023-09-20 10:04 ` Leif Lindholm 2023-09-20 11:49 ` Marcin Juszkiewicz 0 siblings, 1 reply; 4+ messages in thread From: Leif Lindholm @ 2023-09-20 10:04 UTC (permalink / raw) To: Marcin Juszkiewicz; +Cc: devel, Graeme Gregory, Ard Biesheuvel On Wed, Sep 20, 2023 at 10:25:09 +0200, Marcin Juszkiewicz wrote: > Armv8.1+ cpus have Virtual Host Extension (VHE) which added non-secure > EL2 virtual timer. > > This change adds it into GTDT to fullfil Arm BSA (Base System > Architecture) requirements. > > Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> > --- > Platform/Qemu/SbsaQemu/SbsaQemu.dsc | 2 ++ > Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf | 1 + > Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc | 4 ++-- > 3 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/Platform/Qemu/SbsaQemu/SbsaQemu.dsc b/Platform/Qemu/SbsaQemu/SbsaQemu.dsc > index be406144c242..8bea9793451a 100644 > --- a/Platform/Qemu/SbsaQemu/SbsaQemu.dsc > +++ b/Platform/Qemu/SbsaQemu/SbsaQemu.dsc > @@ -447,6 +447,8 @@ [PcdsFixedAtBuild.common] > gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|27 > # PPI #10 > gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum|26 > + # PPI #12 > + gArmTokenSpaceGuid.PcdArmArchTimerHypVirtIntrNum|28 > > ## PL031 RealTimeClock > gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x60010000 > diff --git a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf b/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf > index 97021f7971c7..343c75f0b4ec 100644 > --- a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf > +++ b/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf > @@ -36,6 +36,7 @@ [FixedPcd] > gArmTokenSpaceGuid.PcdArmArchTimerIntrNum > gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum > gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum > + gArmTokenSpaceGuid.PcdArmArchTimerHypVirtIntrNum > > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision > diff --git a/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc b/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc > index ba145aff6413..b5e8f8405d61 100644 > --- a/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc > +++ b/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc > @@ -91,8 +91,8 @@ > SBSA_PLATFORM_TIMER_COUNT, // UINT32 PlatformTimerCount > sizeof(EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE), > // UINT32 PlatformTimerOffset > - 0, // UINT32 VirtualPL2TimerGSIV > - 0 // UINT32 VirtualPL2TimerFlags > + FixedPcdGet32 (PcdArmArchTimerHypVirtIntrNum),// UINT32 VirtualPL2TimerGSIV > + GTDT_GTIMER_FLAGS // UINT32 VirtualPL2TimerFlags It's still valid to use other CPUs than "max" with this platform. Don't we need to conditionalise this based on the contents of the VH bits in ID_AA64MFR1_EL1? Ideally, we'd add a helper function in edk2 ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c, like ArmHasCcidx(), and conditionalise on that. Hmm, but we'd probably also need to move from .aslc to manually construction GTDT in SbsaQemuAcpiDxe... If you're up for doing the GTDT rework, I could create the ArmLib helper function. / Leif > }, > EFI_ACPI_6_3_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT( > SBSAQEMU_WDT_REFRESH_FRAME_BASE, > -- > 2.41.0 > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108905): https://edk2.groups.io/g/devel/message/108905 Mute This Topic: https://groups.io/mt/101474460/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/1913456212/xyzzy [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [edk2-devel] [PATCH edk2-platforms 1/1] Platform/QemuSbsa: define NS EL2 virtual timer in GTDT 2023-09-20 10:04 ` Leif Lindholm @ 2023-09-20 11:49 ` Marcin Juszkiewicz 0 siblings, 0 replies; 4+ messages in thread From: Marcin Juszkiewicz @ 2023-09-20 11:49 UTC (permalink / raw) To: Leif Lindholm; +Cc: devel, Graeme Gregory, Ard Biesheuvel W dniu 20.09.2023 o 12:04, Leif Lindholm pisze: > On Wed, Sep 20, 2023 at 10:25:09 +0200, Marcin Juszkiewicz wrote: >> Armv8.1+ cpus have Virtual Host Extension (VHE) which added non-secure >> EL2 virtual timer. > It's still valid to use other CPUs than "max" with this platform. > Don't we need to conditionalise this based on the contents of the VH > bits in ID_AA64MFR1_EL1? Most of cpu cores available for SBSA Reference Platform are v8.2+ ones. And default is Neoverse-N1. > Ideally, we'd add a helper function in edk2 > ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c, like ArmHasCcidx(), and > conditionalise on that. > > Hmm, but we'd probably also need to move from .aslc to manually > construction GTDT in SbsaQemuAcpiDxe... > > If you're up for doing the GTDT rework, I could create the ArmLib > helper function. Sooner or later it needs to be done anyway as we need to add system timers there (which iirc only Ampere does in EDK2). -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108908): https://edk2.groups.io/g/devel/message/108908 Mute This Topic: https://groups.io/mt/101474460/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-09-20 11:49 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-09-20 8:25 [edk2-devel] [PATCH edk2-platforms 0/1] Platform/QemuSbsa: define NS EL2 virtual timer in GTDT Marcin Juszkiewicz 2023-09-20 8:25 ` [edk2-devel] [PATCH edk2-platforms 1/1] " Marcin Juszkiewicz 2023-09-20 10:04 ` Leif Lindholm 2023-09-20 11:49 ` Marcin Juszkiewicz
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox