public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Leif Lindholm" <leif@nuviainc.com>
To: Ming Huang <huangming@linux.alibaba.com>
Cc: devel@edk2.groups.io, ardb+tianocore@kernel.org,
	guoheyi@linux.alibaba.com
Subject: Re: [PATCH edk2 v1 1/1] ArmPkg/ArmGicLib: Fix GICR_IPRIORITYR address wrong issue
Date: Mon, 22 Feb 2021 12:52:10 +0000	[thread overview]
Message-ID: <20210222125210.GS1664@vanye> (raw)
In-Reply-To: <20210220070839.29988-1-huangming@linux.alibaba.com>

Hi Ming,

On Sat, Feb 20, 2021 at 15:08:39 +0800, Ming Huang wrote:
> The address of GICR_IPRIORITYR is in SGI_base frame. ARM_GICR_CTLR_FRAME_SIZE
> should add to GicCpuRedistributorBase for GICR_IPRIORITYR. Otherwise RAS
> error(Uncorrected software error) will reported in ArmGicDxe.
> 
> Signed-off-by: Ming Huang <huangming@linux.alibaba.com>
> ---
>  ArmPkg/Drivers/ArmGic/ArmGicLib.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicLib.c b/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> index 8ef32b33a1..7a54972455 100644
> --- a/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> +++ b/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> @@ -235,6 +235,9 @@ ArmGicSetInterruptPriority (
>        return;
>      }
>  
> +    // The address of GICR_IPRIORITYR is in SGI_base frame.
> +    // ARM_GICR_CTLR_FRAME_SIZE should add to GicCpuRedistributorBase for GICR_IPRIORITYR.
> +    GicCpuRedistributorBase += ARM_GICR_CTLR_FRAME_SIZE;

I agree with the error report, but not the fix.
Changing the value of a variable called GicCpuRedistributorBase to
something that is not the base address of the redistributor makes the
code confusing.

If you look at the subsequent function, ArmGicEnableInterrupt, it
resolvess the same situation using the ISENABLER_ADDRESS macro
defined at the top of the file:

#define ISENABLER_ADDRESS(base,offset) ((base) + \
          ARM_GICR_CTLR_FRAME_SIZE +  ARM_GICR_ISENABLER + (4 * offset))

I would suggest creating an IPRIORITY_ADDRESS macro by the same
pattern and using that.

Would that solution be OK with you?

Best Regards,

Leif

>      MmioAndThenOr32 (
>        GicCpuRedistributorBase + ARM_GIC_ICDIPR + (4 * RegOffset),
>        ~(0xff << RegShift),
> -- 
> 2.17.1
> 

  reply	other threads:[~2021-02-22 12:52 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-20  7:08 [PATCH edk2 v1 1/1] ArmPkg/ArmGicLib: Fix GICR_IPRIORITYR address wrong issue Ming Huang
2021-02-22 12:52 ` Leif Lindholm [this message]
2021-02-23  2:04   ` Ming Huang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210222125210.GS1664@vanye \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox