public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH] ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge
@ 2018-11-14 19:27 Ard Biesheuvel
  2018-11-14 20:00 ` Leif Lindholm
  0 siblings, 1 reply; 6+ messages in thread
From: Ard Biesheuvel @ 2018-11-14 19:27 UTC (permalink / raw)
  To: edk2-devel

Fix a typo in the 32-bit ARM version of the GICv3 driver, which uses
the wrong system register encoding to access ICC_IAR1, and attempted
to access ICC_IAR0 instead. This results in boot time hangs both
under QEMU emulation and on real hardware.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S   | 2 +-
 ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
index a72f3c865163..c308d2fa3e2f 100644
--- a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
+++ b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
@@ -66,7 +66,7 @@ ASM_FUNC(ArmGicV3EndOfInterrupt)
 //  VOID
 //  );
 ASM_FUNC(ArmGicV3AcknowledgeInterrupt)
-        mrc     p15, 0, r0, c12, c8, 0 //ICC_IAR1
+        mrc     p15, 0, r0, c12, c12, 0 //ICC_IAR1
         bx      lr
 
 //VOID
diff --git a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
index 4228fb59be54..222047d1ad43 100644
--- a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
+++ b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
@@ -66,7 +66,7 @@
 //  VOID
 //  );
  RVCT_ASM_EXPORT ArmGicV3AcknowledgeInterrupt
-        mrc     p15, 0, r0, c12, c8, 0 //ICC_IAR1
+        mrc     p15, 0, r0, c12, c12, 0 //ICC_IAR1
         bx      lr
 
 //VOID
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge
  2018-11-14 19:27 [PATCH] ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge Ard Biesheuvel
@ 2018-11-14 20:00 ` Leif Lindholm
  2018-11-14 22:11   ` Laszlo Ersek
  0 siblings, 1 reply; 6+ messages in thread
From: Leif Lindholm @ 2018-11-14 20:00 UTC (permalink / raw)
  To: Ard Biesheuvel; +Cc: edk2-devel

On Wed, Nov 14, 2018 at 11:27:24AM -0800, Ard Biesheuvel wrote:
> Fix a typo in the 32-bit ARM version of the GICv3 driver, which uses
> the wrong system register encoding to access ICC_IAR1, and attempted
> to access ICC_IAR0 instead. This results in boot time hangs both
> under QEMU emulation and on real hardware.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>

I would say given how long we've gone without finding this, it's not
justifiable to push this before the stable tag is made - so please
hold off on pushing it until we open the flood gates.

/
    Leif

> ---
>  ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S   | 2 +-
>  ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
> index a72f3c865163..c308d2fa3e2f 100644
> --- a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
> +++ b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
> @@ -66,7 +66,7 @@ ASM_FUNC(ArmGicV3EndOfInterrupt)
>  //  VOID
>  //  );
>  ASM_FUNC(ArmGicV3AcknowledgeInterrupt)
> -        mrc     p15, 0, r0, c12, c8, 0 //ICC_IAR1
> +        mrc     p15, 0, r0, c12, c12, 0 //ICC_IAR1
>          bx      lr
>  
>  //VOID
> diff --git a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
> index 4228fb59be54..222047d1ad43 100644
> --- a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
> +++ b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
> @@ -66,7 +66,7 @@
>  //  VOID
>  //  );
>   RVCT_ASM_EXPORT ArmGicV3AcknowledgeInterrupt
> -        mrc     p15, 0, r0, c12, c8, 0 //ICC_IAR1
> +        mrc     p15, 0, r0, c12, c12, 0 //ICC_IAR1
>          bx      lr
>  
>  //VOID
> -- 
> 2.17.1
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge
  2018-11-14 20:00 ` Leif Lindholm
@ 2018-11-14 22:11   ` Laszlo Ersek
  2018-11-15 12:37     ` Ard Biesheuvel
  0 siblings, 1 reply; 6+ messages in thread
From: Laszlo Ersek @ 2018-11-14 22:11 UTC (permalink / raw)
  To: Leif Lindholm, Ard Biesheuvel; +Cc: edk2-devel

On 11/14/18 21:00, Leif Lindholm wrote:
> On Wed, Nov 14, 2018 at 11:27:24AM -0800, Ard Biesheuvel wrote:
>> Fix a typo in the 32-bit ARM version of the GICv3 driver, which uses
>> the wrong system register encoding to access ICC_IAR1, and attempted
>> to access ICC_IAR0 instead. This results in boot time hangs both
>> under QEMU emulation and on real hardware.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.1
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> 
> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
> 
> I would say given how long we've gone without finding this,

Right, that makes me curious -- what has changed now? What exposed this bug?

Thanks!
Laszlo

> it's not
> justifiable to push this before the stable tag is made - so please
> hold off on pushing it until we open the flood gates.
> 
> /
>     Leif
> 
>> ---
>>  ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S   | 2 +-
>>  ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm | 2 +-
>>  2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
>> index a72f3c865163..c308d2fa3e2f 100644
>> --- a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
>> +++ b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
>> @@ -66,7 +66,7 @@ ASM_FUNC(ArmGicV3EndOfInterrupt)
>>  //  VOID
>>  //  );
>>  ASM_FUNC(ArmGicV3AcknowledgeInterrupt)
>> -        mrc     p15, 0, r0, c12, c8, 0 //ICC_IAR1
>> +        mrc     p15, 0, r0, c12, c12, 0 //ICC_IAR1
>>          bx      lr
>>  
>>  //VOID
>> diff --git a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
>> index 4228fb59be54..222047d1ad43 100644
>> --- a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
>> +++ b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
>> @@ -66,7 +66,7 @@
>>  //  VOID
>>  //  );
>>   RVCT_ASM_EXPORT ArmGicV3AcknowledgeInterrupt
>> -        mrc     p15, 0, r0, c12, c8, 0 //ICC_IAR1
>> +        mrc     p15, 0, r0, c12, c12, 0 //ICC_IAR1
>>          bx      lr
>>  
>>  //VOID
>> -- 
>> 2.17.1
>>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> 



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge
  2018-11-14 22:11   ` Laszlo Ersek
@ 2018-11-15 12:37     ` Ard Biesheuvel
  2018-11-15 12:44       ` Laszlo Ersek
  0 siblings, 1 reply; 6+ messages in thread
From: Ard Biesheuvel @ 2018-11-15 12:37 UTC (permalink / raw)
  To: Laszlo Ersek; +Cc: Leif Lindholm, edk2-devel@lists.01.org

On Wed, 14 Nov 2018 at 14:11, Laszlo Ersek <lersek@redhat.com> wrote:
>
> On 11/14/18 21:00, Leif Lindholm wrote:
> > On Wed, Nov 14, 2018 at 11:27:24AM -0800, Ard Biesheuvel wrote:
> >> Fix a typo in the 32-bit ARM version of the GICv3 driver, which uses
> >> the wrong system register encoding to access ICC_IAR1, and attempted
> >> to access ICC_IAR0 instead. This results in boot time hangs both
> >> under QEMU emulation and on real hardware.
> >>
> >> Contributed-under: TianoCore Contribution Agreement 1.1
> >> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> >
> > Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
> >
> > I would say given how long we've gone without finding this,
>
> Right, that makes me curious -- what has changed now? What exposed this bug?
>

I was regression testing a EFI workaround I put in the kernel for
GICv3, which was apparently the first time anyone tried running
EDK2/ARM on a GICv3 system (which is one of the reasons I wanted to
get you one of the Socionext SynQuacer boards: it has a GICv3 with
GICv2 compatibility and support for 32-bit guests, but sadly, we still
don't have any with fixed silicon)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge
  2018-11-15 12:37     ` Ard Biesheuvel
@ 2018-11-15 12:44       ` Laszlo Ersek
  2018-11-15 13:09         ` Ard Biesheuvel
  0 siblings, 1 reply; 6+ messages in thread
From: Laszlo Ersek @ 2018-11-15 12:44 UTC (permalink / raw)
  To: Ard Biesheuvel; +Cc: Leif Lindholm, edk2-devel@lists.01.org

On 11/15/18 13:37, Ard Biesheuvel wrote:
> On Wed, 14 Nov 2018 at 14:11, Laszlo Ersek <lersek@redhat.com> wrote:
>>
>> On 11/14/18 21:00, Leif Lindholm wrote:
>>> On Wed, Nov 14, 2018 at 11:27:24AM -0800, Ard Biesheuvel wrote:
>>>> Fix a typo in the 32-bit ARM version of the GICv3 driver, which uses
>>>> the wrong system register encoding to access ICC_IAR1, and attempted
>>>> to access ICC_IAR0 instead. This results in boot time hangs both
>>>> under QEMU emulation and on real hardware.
>>>>
>>>> Contributed-under: TianoCore Contribution Agreement 1.1
>>>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>
>>> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
>>>
>>> I would say given how long we've gone without finding this,
>>
>> Right, that makes me curious -- what has changed now? What exposed this bug?
>>
> 
> I was regression testing a EFI workaround I put in the kernel for
> GICv3, which was apparently the first time anyone tried running
> EDK2/ARM on a GICv3 system (which is one of the reasons I wanted to
> get you one of the Socionext SynQuacer boards: it has a GICv3 with
> GICv2 compatibility and support for 32-bit guests, but sadly, we still
> don't have any with fixed silicon)
> 

Thanks!
Laszlo


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge
  2018-11-15 12:44       ` Laszlo Ersek
@ 2018-11-15 13:09         ` Ard Biesheuvel
  0 siblings, 0 replies; 6+ messages in thread
From: Ard Biesheuvel @ 2018-11-15 13:09 UTC (permalink / raw)
  To: Laszlo Ersek; +Cc: Leif Lindholm, edk2-devel@lists.01.org

On Thu, 15 Nov 2018 at 04:44, Laszlo Ersek <lersek@redhat.com> wrote:
>
> On 11/15/18 13:37, Ard Biesheuvel wrote:
> > On Wed, 14 Nov 2018 at 14:11, Laszlo Ersek <lersek@redhat.com> wrote:
> >>
> >> On 11/14/18 21:00, Leif Lindholm wrote:
> >>> On Wed, Nov 14, 2018 at 11:27:24AM -0800, Ard Biesheuvel wrote:
> >>>> Fix a typo in the 32-bit ARM version of the GICv3 driver, which uses
> >>>> the wrong system register encoding to access ICC_IAR1, and attempted
> >>>> to access ICC_IAR0 instead. This results in boot time hangs both
> >>>> under QEMU emulation and on real hardware.
> >>>>
> >>>> Contributed-under: TianoCore Contribution Agreement 1.1
> >>>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> >>>
> >>> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
> >>>
> >>> I would say given how long we've gone without finding this,
> >>
> >> Right, that makes me curious -- what has changed now? What exposed this bug?
> >>
> >
> > I was regression testing a EFI workaround I put in the kernel for
> > GICv3, which was apparently the first time anyone tried running
> > EDK2/ARM on a GICv3 system (which is one of the reasons I wanted to
> > get you one of the Socionext SynQuacer boards: it has a GICv3 with
> > GICv2 compatibility and support for 32-bit guests, but sadly, we still
> > don't have any with fixed silicon)
> >
>
> Thanks!
> Laszlo

Pushed as 66127011a544b90e800eb3619e84c2f94a354903


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-11-15 13:09 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-14 19:27 [PATCH] ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge Ard Biesheuvel
2018-11-14 20:00 ` Leif Lindholm
2018-11-14 22:11   ` Laszlo Ersek
2018-11-15 12:37     ` Ard Biesheuvel
2018-11-15 12:44       ` Laszlo Ersek
2018-11-15 13:09         ` Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox