[edk2-devel] [PATCH] ArmPkg/ArmGicLib: fix maximum interrupts supported

Adrián Herrera adr.her.arc.95 at gmail.com
Tue Apr 27 09:48:01 UTC 2021


Hi Sami,

That patch provides the same solution. I'll be sure to check the mailing
list before sending the next time.
Any benefit on marking this as duplicate? If so, how could I do it?

Thank you,
Adrián.

On Mon, 26 Apr 2021 at 08:56, Sami Mujawar <Sami.Mujawar at arm.com> wrote:

> Hi Adrian,
>
>
>
> I believe there is already a similar patch on the mailing list at
> https://edk2.groups.io/g/devel/message/72596. This patch is pending
> review and tested-by.
>
> Can you check if this patch covers the problems you describe, please?
>
>
>
> Regards,
>
>
>
> Sami Mujawar
>
>
>
> *From: *devel at edk2.groups.io <devel at edk2.groups.io> on behalf of Adrián
> Herrera via groups.io <adr.her.arc.95=gmail.com at groups.io>
> *Date: *Saturday, 24 April 2021 at 03:57
> *To: *devel at edk2.groups.io <devel at edk2.groups.io>
> *Cc: *Adrián Herrera <adr.her.arc.95 at gmail.com>
> *Subject: *[edk2-devel] [PATCH] ArmPkg/ArmGicLib: fix maximum interrupts
> supported
>
> The maximum number of interrupts supported is determined as
> 32 * (GICD_TYPER.ITLinesNumber + 1).
>
> When GICD_TYPER.ITLinesNumber = 0b11111, the maximum number of
> interrupts supported is 1024. However, both GICv2 and GICv3 reserve
> INTIDs 1020-1023 for special purposes.
>
> This results in runtime crashes because:
>   (1) ArmGicLib functions do not guard against special interrupts.
>   (2) ArmGicGetMaxNumInterrupts number includes special interrupts.
>   (2) ArmGicV*Dxe relies on ArmGicGetMaxNumInterrupts, and thus
>       programs special interrupts through ArmGicLib.
>
> ArmGicGetMaxNumInterrupts now does not include special interrupts, that
> is, it reports 1020 instead of 1024 when GICD_TYPER.ITLinesNumber =
> 0b11111.
> This avoids the overhead of guarding ArmGicLib functions while not
> requiring to modify the drivers code.
>
> Signed-off-by: Adrián Herrera <adr.her.arc.95 at gmail.com>
> ---
>  ArmPkg/Drivers/ArmGic/ArmGicLib.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> b/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> index 6b01c88206..dff1401e9c 100644
> --- a/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> +++ b/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> @@ -120,7 +120,10 @@ ArmGicGetMaxNumInterrupts (
>    IN  INTN          GicDistributorBase
>
>
>    )
>
>
>  {
>
>
> -  return 32 * ((MmioRead32 (GicDistributorBase + ARM_GIC_ICDICTR) & 0x1F)
> + 1);
>
>
> +  UINT32 ITLinesNumber;
>
>
> +
>
>
> +  ITLinesNumber = MmioRead32 (GicDistributorBase + ARM_GIC_ICDICTR) &
> 0x1F;
>
>
> +  return MIN (32 * (ITLinesNumber+ 1), 1020);
>
>
>  }
>
>
>
>
>
>  VOID
>
>
> --
> 2.30.0
>
>
>
> 
>
>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#74445): https://edk2.groups.io/g/devel/message/74445
Mute This Topic: https://groups.io/mt/82327316/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20210427/f3dcae2b/attachment.htm>


More information about the edk2-devel-archive mailing list