linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Christian Bruel <christian.bruel@foss.st.com>
Cc: <tglx@linutronix.de>, <robh@kernel.org>, <krzk+dt@kernel.org>,
	<conor+dt@kernel.org>, <mcoquelin.stm32@gmail.com>,
	<alexandre.torgue@foss.st.com>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-stm32@st-md-mailman.stormreply.com>
Subject: Re: [PATCH 2/3] irqchip/gic: Use 0x10000 offset to access GICC_DIR on STM32MP2
Date: Fri, 04 Apr 2025 14:36:12 +0100	[thread overview]
Message-ID: <87y0wgxd4j.wl-maz@kernel.org> (raw)
In-Reply-To: <1213dbfb-821a-4534-947b-acc4eac9da81@foss.st.com>

On Fri, 04 Apr 2025 13:15:05 +0100,
Christian Bruel <christian.bruel@foss.st.com> wrote:
> 
> 
> 
> On 4/3/25 19:50, Marc Zyngier wrote:
> > On Thu, 03 Apr 2025 13:28:04 +0100,
> > Christian Bruel <christian.bruel@foss.st.com> wrote:
> >> 
> >> When GIC_4KNOT64K bit in the GIC configuration register is
> >> 0 (64KB), address block is modified in such a way than only the
> >> first 4KB of the GIC cpu interface are accessible with default
> >> offsets.
> >> With this bit mapping GICC_DIR register is accessible at
> >> offset 0x10000 instead of 0x1000, thus remap accordingly
> > 
> > And I'm pretty sure the whole of the GICC range is correctly
> > accessible at offset 0xF000, giving you the full 8kB you need. That's
> > because each page of the GIC is aliased over two 64kB blocks, as per
> > the integration guidelines so that MMU isolation can be provided on a
> > 64kB boundary.
> 
> Thanks a lot for this explanation, indeed this works like a charm.
> 
> > 
> > Funnily enough, all it takes is to adjust GICC region. You can either:
> > 
> > - make it 128kB wide, and the driver will take care of it (details in
> >    gic_check_eoimode()). On one of my boxes that is similarly
> >    configured, I get:
> > 
> >    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> >    [    0.000000] GIC: Adjusting CPU interface base to 0x00000000780af000
> >    [    0.000000] Root IRQ handler: gic_handle_irq
> >    [    0.000000] GIC: Using split EOI/Deactivate mode
> > 
> >    See below for what I expect to be the correct fix.
> >    - make it 8kB wide from offset 0xF000.
> 
> I checked both and they work. I will go for the former to show real
> 8kB size to be exposed in the DT. And there are a few other
> platforms that use this alias

I think 8kB the wrong option. The GIC *is* supposed to be integrated
over 128kB on arm64 platforms (there was some documentation about that
back in the days, but it has become impossible to search anything on
ARM's stupidly broken website.  My recollection is that it was bundled
with the GICv2m "specification" (only half a page!).

Furthermore, you are supposed to describe the HW. Not your
interpretation of it. Correctly written SW targeting arm64 know about
this anyway.

> > Unless the ST HW folks have been even more creative, none of this
> > overly complicated stuff should be necessary. Just describe the HW
> > correctly.
> 
> I was unable to find this information in the GIC-400 trm
> (https://developer.arm.com/documentation/ddi0471/b/programmers-model/gic-400-register-map). Now
> I also prefer to use GICC alias at
> offset 0xf000 as suggested rather than the quirk solution

Again, this isn't a quirk. It's the one true way for 64bit platforms
that can use pages bigger than 4kB. That's the purpose of the 4Kn64K
parameter in the integration, dropping bits [15:12] from the PA
presented to the CPU interface.

	M.

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


  reply	other threads:[~2025-04-04 13:56 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-03 12:28 [PATCH 0/3] Add ST STM32MP2 GICv2 quirk for EOI split mode Christian Bruel
2025-04-03 12:28 ` [PATCH 1/3] dt-bindings: interrupt-controller: arm,gic: Add st,stm32mp2-cortex-a7-gic Christian Bruel
2025-04-03 12:28 ` [PATCH 2/3] irqchip/gic: Use 0x10000 offset to access GICC_DIR on STM32MP2 Christian Bruel
2025-04-03 15:43   ` Thomas Gleixner
2025-04-04 12:25     ` Christian Bruel
2025-04-03 17:50   ` Marc Zyngier
2025-04-04 12:15     ` Christian Bruel
2025-04-04 13:36       ` Marc Zyngier [this message]
2025-04-04 16:18         ` Christian Bruel
2025-04-04 16:19         ` Christian Bruel
2025-04-03 12:28 ` [PATCH 3/3] arm64: dts: st: add st,stm32mp2-cortex-a7-gic in intc node in stm32mp251.dtsi Christian Bruel
2025-04-03 17:27   ` Marc Zyngier
2025-04-04 12:17     ` Christian Bruel
2025-04-04 12:45       ` Marc Zyngier
2025-04-03 14:35 ` [PATCH 0/3] Add ST STM32MP2 GICv2 quirk for EOI split mode Rob Herring (Arm)

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=87y0wgxd4j.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=alexandre.torgue@foss.st.com \
    --cc=christian.bruel@foss.st.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=robh@kernel.org \
    --cc=tglx@linutronix.de \
    /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;
as well as URLs for NNTP newsgroup(s).