From: Marc Zyngier <maz@kernel.org>
To: Zhiyuan Dai <daizhiyuan@phytium.com.cn>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Hector Martin <marcan@marcan.st>, Will Deacon <will@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] irqchip/gic-v3: Fix EOImode semantics in git_cpu_sys_reg_init()
Date: Thu, 28 Oct 2021 09:34:54 +0100 [thread overview]
Message-ID: <8735olbl8x.wl-maz@kernel.org> (raw)
In-Reply-To: <1635408092-5259-1-git-send-email-daizhiyuan@phytium.com.cn>
Hi Zhiuyan,
On Thu, 28 Oct 2021 09:01:31 +0100,
Zhiyuan Dai <daizhiyuan@phytium.com.cn> wrote:
>
> ICC_CTLR_EL1 is a 64-bit register.EOImode, bit [1] EOI mode
> for the current Security state.
>
> current code semantics is set ICC_CTLR_EL1 register to zero.
> This patch only set the EOImode Bit to zero.
>
> refs: See Arm IHI 0069G, page 12-229.
>
> Signed-off-by: Zhiyuan Dai <daizhiyuan@phytium.com.cn>
> ---
> drivers/irqchip/irq-gic-v3.c | 9 +++++++--
> include/linux/irqchip/arm-gic-v3.h | 3 +--
> 2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
> index fd4e9a3..96466fc0 100644
> --- a/drivers/irqchip/irq-gic-v3.c
> +++ b/drivers/irqchip/irq-gic-v3.c
> @@ -967,6 +967,7 @@ static void gic_cpu_sys_reg_init(void)
> u64 need_rss = MPIDR_RS(mpidr);
> bool group0;
> u32 pribits;
> + u32 val;
>
> /*
> * Need to check that the SRE bit has actually been set. If
> @@ -1009,12 +1010,16 @@ static void gic_cpu_sys_reg_init(void)
> */
> gic_write_bpr1(0);
>
> + val = gic_read_ctlr();
> +
> if (static_branch_likely(&supports_deactivate_key)) {
> /* EOI drops priority only (mode 1) */
> - gic_write_ctlr(ICC_CTLR_EL1_EOImode_drop);
> + val |= ICC_CTLR_EL1_EOImode;
> + gic_write_ctlr(val);
> } else {
> /* EOI deactivates interrupt too (mode 0) */
> - gic_write_ctlr(ICC_CTLR_EL1_EOImode_drop_dir);
> + val &= ~ICC_CTLR_EL1_EOImode;
> + gic_write_ctlr(val);
I really wonder why you would need a read-modify-write sequence. There
are no bits in ICC_CTLR_EL1 that we would want to preserve:
- PHME: if it is writable, we really want it to be 0, as we don't use
1:N distribution
- CBPR: We only use G1 interrupts, and we use ICC_BPR1_EL1 for
preemption, hence the value being 0
All the other fields (apart from EOImode, obviously) are read-only or
RES0, as per the architecture.
Can you explain what you are trying to achieve here?
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2021-10-28 8:34 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-28 8:01 [PATCH] irqchip/gic-v3: Fix EOImode semantics in git_cpu_sys_reg_init() Zhiyuan Dai
2021-10-28 8:34 ` Marc Zyngier [this message]
2021-10-28 9:43 ` 戴志远
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-all 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=8735olbl8x.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=daizhiyuan@phytium.com.cn \
--cc=linux-kernel@vger.kernel.org \
--cc=marcan@marcan.st \
--cc=tglx@linutronix.de \
--cc=will@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.