<div dir="ltr">Hi Sami,<div><br></div><div>That patch provides the same solution. I'll be sure to check the mailing list before sending the next time.</div><div>Any benefit on marking this as duplicate? If so, how could I do it?<br><div><br></div><div>Thank you,</div><div>Adrián.</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 26 Apr 2021 at 08:56, Sami Mujawar <<a href="mailto:Sami.Mujawar@arm.com">Sami.Mujawar@arm.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





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

</blockquote></div>


 <div width="1" style="color:white;clear:both">_._,_._,_</div> <hr>   Groups.io Links:<p>   You receive all messages sent to this group.    <p> <a target="_blank" href="https://edk2.groups.io/g/devel/message/74445">View/Reply Online (#74445)</a> |    |  <a target="_blank" href="https://groups.io/mt/82327316/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>    <a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |  <a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>  [edk2-devel-archive@redhat.com]<br> <div width="1" style="color:white;clear:both">_._,_._,_</div>