The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Li Dou <li8d6kernel@163.com>
Cc: tglx@kernel.org, radu@rendec.net,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] irqchip/gic-v3: Remove the ISB between AP0Rn and AP1Rn
Date: Mon, 24 Aug 2026 17:34:34 +0100	[thread overview]
Message-ID: <87bjaro4th.wl-maz@kernel.org> (raw)
In-Reply-To: <20260824023403.1312-1-li8d6kernel@163.com>

On Mon, 24 Aug 2026 03:34:03 +0100,
Li Dou <li8d6kernel@163.com> wrote:
> 
> ARM GICv3 specification says(in section 4.8.4 "System register access to
> the Active Priorities registers"):
> 
> 	an ISB is not required between each write to ICC_AP0R<n>_EL1,
> 	Secure ICC_AP1R<n>_EL1, and Non-secure ICC_AP1R<n>_EL1.
> 
> It means we can use one ISB after resetting AP0Rn and AP1Rn for context
> synchronization. So just remove the previous one.

I'm afraid you have misinterpreted the spec.

Within each of the AP0Rn, Secure AP1Rn and Non-Secure AP1Rn classes,
for any value of 'n', there is no need for any synchronisation.

However, between classes, you absolutely need an ISB. And this is the
reason why, just above the note you quote:

<quote>
Writes to these registers in any order other than the following can
result in UNPREDICTABLE behavior:

1. ICC_AP0R<n>_EL1.
2. Secure ICC_AP1R<n>_EL1.
3. Non-secure ICC_AP1R<n>_EL1.
</quote>

While you can perfectly write each individual register of (1), (2) or
(3) without any synchronisation, you absolutely must have a CSE
*between* each of (1), (2) and (3). Linux being non-secure only, you
only deal with (1) and (3), and you must have an ISB in between.
Without it, reordering can happen and you end-up violating the above
rule.

To conclude, this patch does not optimise anything. Not only this is
something that only happens once per CPU boot (aka *never*), it
instead introduces a very subtle ordering bug.

It therefore must not be applied.

	M.

-- 
Jazz isn't dead. It just smells funny.

  reply	other threads:[~2026-08-24 16:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-24  2:34 [PATCH] irqchip/gic-v3: Remove the ISB between AP0Rn and AP1Rn Li Dou
2026-08-24 16:34 ` Marc Zyngier [this message]
2026-08-25  3:04   ` Li Dou
2026-08-25  7:25     ` Marc Zyngier

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=87bjaro4th.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=li8d6kernel@163.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=radu@rendec.net \
    --cc=tglx@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox