From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C1B58D4A5F4 for ; Sun, 18 Jan 2026 11:00:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=HFFFcDemYLzgisk57W1AA75EE04yImmIqnWREmnhQm0=; b=zXdKkvHXOElGbTp6n8BvHxZWJ7 OGmkcAsQhvUT2RW5/Ho/VP4mZKfQhDDIojylreltptCj/b0DNoTbK8mHeFmnUvCFhKx89oFzFS5AA dotF1tmrQ9tCF0iQYCbi5C+Vd1bK1AtSCTkgkR3eAIK7KbazY0WUeS/BrfJ6l1fVK55LIPif2oAGA mBdeFvvZIzCW9q5EG/2JJmcjgvUf70Lj74Sza2QJi/xofBxhwDpCwu4HNXr3h+WaKxVLPauBBVXpA fzG7bu4ynGPVEMRvVBTQcHQH49smdQTND3oPSLVwNt66/0+WH22Mx1+s9C1pcrVAX9/Toh8lc0hiW +6o8YSZg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vhQWQ-0000000HOTl-3Ztu; Sun, 18 Jan 2026 11:00:42 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vhQWN-0000000HOSz-3u4m for linux-arm-kernel@lists.infradead.org; Sun, 18 Jan 2026 11:00:41 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 16DF344431; Sun, 18 Jan 2026 11:00:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D2DDC2BC86; Sun, 18 Jan 2026 11:00:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768734038; bh=ckRbPlV/dNYcRGTMbUnR2/FtLqhLVon9hSop/7dGzKw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=gLfpnukQteg9gXxZAA5U22BLRPHRZf5n1G0LRszlaEIYFLLcBeZ5LBU4FTmlgpcc5 e81VAkSqwpQdfLeIG2dYmoQRP1Bv2/dhin0F6HdhXKwV4RL8gfqCBKlLKI8xqOcLnr GseLEL1A3gdCjXBQA04tP2Rz+1pcDha+sNdp364A24ii9zzEaYG3byU+MojhKEchAP rOPjDP6tt97QuesvpZBqs99r2pxqH4n2BD9h118jHjq4m5Wsp2QtaIvNLH6MkyzcTU ZsIdYcp6sdoPyH1FfbVn/MxQ8tNTLw9H836ZWNsOk0/DCl9/KDv+tWRvVhkJjLvcSx FWxtauzLnWHBw== Date: Sun, 18 Jan 2026 12:00:31 +0100 From: Lorenzo Pieralisi To: "Rafael J. Wysocki" , Len Brown , Robert Moore , Hanjun Guo , Sudeep Holla , Marc Zyngier , Bjorn Helgaas , Thomas Gleixner , Jonathan Cameron Cc: linux-acpi@vger.kernel.org, acpica-devel@lists.linux.dev, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org Subject: Re: [PATCH v3 0/6] irqchip/gic-v5: Code first ACPI boot support Message-ID: References: <20260115-gicv5-host-acpi-v3-0-c13a9a150388@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260115-gicv5-host-acpi-v3-0-c13a9a150388@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260118_030040_014157_988C3F04 X-CRM114-Status: GOOD ( 36.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Thu, Jan 15, 2026 at 10:50:46AM +0100, Lorenzo Pieralisi wrote: > The ACPI and ACPI IORT specifications were updated to support bindings > required to describe GICv5 based systems. > > The ACPI specification GICv5 bindings ECR [1] were approved and the > required changes merged in the ACPICA upstream repository[5]. > > The Arm IORT specification [2] has been updated to include GICv5 IWB > specific bindings in revision E.g. > > Implement kernel code that - based on the aforementioned bindings - adds > support for GICv5 ACPI probing. > > ACPICA changes supporting the bindings were posted [6] - this series > depends on [6] to work and should not be merged stand alone. Hi Thomas, Rafael, I have noticed you pulled this seris into tip (thanks !) - there is a strict dependency on ACPICA patches in [6] though as I tried to convey with the paragraph above and dependencies below: prerequisite-message-id: <12822121.O9o76ZdvQC@rafael.j.wysocki> I don't know what's best/easier to handle this dependency but it is there, I don't want it to cause you any trouble so I reported it as soon as I noticed. Thanks ! Lorenzo > The ACPI bindings were prototyped in edk2 - code available in these > branches [3][4]. > > =========================== > Kernel implementation notes > =========================== > > IRS and ITS probing is triggered using the standard irqchip ACPI probing > mechanism - there is no significant difference compared to previous GIC > versions other. > > The only difference that is worth noting is that GICv3/4 systems include a > single MADT component describing the interrupt controller (ie GIC distributor) > whereas GICv5 systems include one or more IRSes. The probing code is > implemented so that an MADT IRS detection triggers probing for all IRSes > in one go. > > The IWB driver probes like any other ACPI device. IORT code is updated so > that a deviceID for the IWB can be detected. > > The only major change compared to GICv3/4 systems is the GSI namespace that > is split between PPI/SPI IRQs and IWB backed IRQs. > > The main GSI handle - to map an IRQ - has to detect whether to look-up > using the top level GSI domain or an IWB domain in that the two IRQ > namespaces are decoupled. > > IORT code implements the logic to retrieve an IWB domain by looking up its > IWB frame id, as described in [1]. > > Most important implementation detail worth noting is that - at this stage - > ACPI code is not capable of handling devices probe order IRQ dependency on > the interrupt controller driver their IRQ is routed to. > > This is not an issue on GICv3/4 systems in that the full GIC hierarchy > probes earlier than any other device, so by the time IRQs mappings have to > be carried out (ie acpi_register_gsi()) the GIC drivers have already > probed. > > On GICv5 systems, the IWB is modelled as a device and its device driver > probes at device_initcall time. That's when the IWB IRQ domain is actually > registered - which poses problems for devices whose IRQs are IWB routed and > require to resolve the IRQ mapping before the IWB driver has a chance to > probe. > > Work on resolving devices<->IWB probe order dependency has started in > parallel with this series and will be posted shortly. > > For PPI/SPI/LPI backed IRQs the probe dependency is not a problem because > in GICv5 systems the IRSes and ITSes probe early so their IRQ domain are > set in place before devices require IRQ mappings. > > [1] https://github.com/tianocore/edk2/issues/11148 > [2] https://developer.arm.com/documentation/den0049/eg > [3] https://github.com/LeviYeoReum/edk2/tree/levi/gicv5_patch > [4] https://github.com/LeviYeoReum/edk2-platforms/tree/levi/gicv5_patch > [5] https://github.com/acpica/acpica/commits/master/ > [6] https://lore.kernel.org/linux-acpi/12822121.O9o76ZdvQC@rafael.j.wysocki/ > > Signed-off-by: Lorenzo Pieralisi > --- > Changes in v3: > - Dropped ACPICA patches > - Split IRS OF refactoring into a separate patch > - Renamed new fwnode interface according to review > - Applied minor review comments > - Rebased on v6.19-rc5 > - Link to v2: https://lore.kernel.org/r/20251218-gicv5-host-acpi-v2-0-eec76cd1d40b@kernel.org > > Changes in v2: > - Cherry-picked ACPICA upstream changes > - Minor editorial changes > - Removed the "not for merging" tag because now ACPI specs are approved > - Rebased against v6.19-rc1 > - Link to v1: https://lore.kernel.org/r/20251028-gicv5-host-acpi-v1-0-01a862feb5ca@kernel.org > > --- > Lorenzo Pieralisi (6): > irqdomain: Add parent field to struct irqchip_fwid > PCI/MSI: Make the pci_msi_map_rid_ctlr_node() interface firmware agnostic > irqchip/gic-v5: Split IRS probing into OF and generic portions > irqchip/gic-v5: Add ACPI IRS probing > irqchip/gic-v5: Add ACPI ITS probing > irqchip/gic-v5: Add ACPI IWB probing > > drivers/acpi/arm64/iort.c | 193 +++++++++++++++++++----- > drivers/acpi/bus.c | 3 + > drivers/irqchip/irq-gic-its-msi-parent.c | 43 +++--- > drivers/irqchip/irq-gic-v5-irs.c | 247 ++++++++++++++++++++++++------- > drivers/irqchip/irq-gic-v5-its.c | 132 ++++++++++++++++- > drivers/irqchip/irq-gic-v5-iwb.c | 42 ++++-- > drivers/irqchip/irq-gic-v5.c | 138 ++++++++++++++--- > drivers/pci/msi/irqdomain.c | 23 ++- > include/linux/acpi.h | 1 + > include/linux/acpi_iort.h | 11 +- > include/linux/irqchip/arm-gic-v5.h | 8 + > include/linux/irqdomain.h | 30 +++- > include/linux/msi.h | 3 +- > kernel/irq/irqdomain.c | 14 +- > 14 files changed, 734 insertions(+), 154 deletions(-) > --- > base-commit: d0e305301e82474223bf26185e86e7dc2eb85350 > change-id: 20251022-gicv5-host-acpi-d59d6c1d3d07 > prerequisite-message-id: <12822121.O9o76ZdvQC@rafael.j.wysocki> > prerequisite-patch-id: 9f722bfc7e4861af40637017a83826401b3958e4 > prerequisite-patch-id: f619b4724a25a5c2b95032ef4c6d0b53dde45142 > prerequisite-patch-id: 3738d015d93d77b3d381ba8de056be533df48794 > prerequisite-patch-id: 50b1ee01b2ee63f6db21276ec24dadd645f8931e > prerequisite-patch-id: 6671f1c96dc89d5e375196e545c9750c2378f010 > prerequisite-patch-id: b5d91dce8f61ab75796ba6a766d499d7321c0231 > prerequisite-patch-id: 1f433eeb8848ce51c2b2fe601813939a042c6c0e > prerequisite-patch-id: 4f9aab64e4f4a75c18ae692bd903266069100d34 > prerequisite-patch-id: 793a7b3fab40b903ffa0855e0db5336acb69505b > prerequisite-patch-id: 3eeebe1df8abadc1606cc6dadd15031ad46ff64f > prerequisite-patch-id: 3477bb220e91c9cdb4d778ce15e44babbefddf23 > prerequisite-patch-id: 153be22f930d0c05bc04b37006bdb1e286883a92 > prerequisite-patch-id: 1a7dcfd7e1317aeec52c772f3150c115e965af52 > prerequisite-patch-id: 43a604c0109163e51a892d888c728794bca8a0a3 > prerequisite-patch-id: 580debc0f26b7c301160504e2360de6765e7a179 > prerequisite-patch-id: 15f2c86c557c835e4aed0cb914c23e04da1392ed > prerequisite-patch-id: 00986721db8da2e52c733971b482b9cf0c32910e > prerequisite-patch-id: 9d0607df90015bac8768549cbb0a19580f0b2661 > prerequisite-patch-id: f478f56f3ded4d0ce43254418deb5e10f49555ef > prerequisite-patch-id: 6f9563683e92392564935f24cc5e8be23301790c > prerequisite-patch-id: 4d701f77a597391e0d04c5da3d6f1cb24d1e40d0 > prerequisite-patch-id: d70577c2355648acbc7c857c5512df21280e917f > prerequisite-patch-id: 8c6408293baa1a758b0b0b4f078eaf7dbe1404e0 > prerequisite-patch-id: 84008a72aa67b54af8a294a0fc07d2b6eaede597 > prerequisite-patch-id: 97acab35d513bc6b091efa4185a9826262d5ed79 > prerequisite-patch-id: 04652a3bfdf9f4fa2ba829631c899ea3569f11a2 > > Best regards, > -- > Lorenzo Pieralisi >