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 42FECC3ABC3 for ; Tue, 13 May 2025 18:45:10 +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:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=2eLPFSEsM7G6FQHFKKN54YQActasDWLlOEGR+NWTmPY=; b=A7B0jio/hgoksWSJqmPIUFeiAt 3nSTY7L0qfJ/FlZLb4acN9j2/lQagdDKHOddkOmNkxdV+NqRbGEuzwWUmt9pSxbHCX41++bAbuSf6 tJ/6u2YnypO5YgVYC6qK3iVYZdrp3HPUNtzq77XPqixsEOO8Rc5yBMGGxNjWhU7A5ywwqO3bbUj2K OTkywef3uchvNci3blyX+44exBUu7nTyKE7S8nKJFsyuSOQRSjFOGPEsKlOKqeUksl53paSSeEGfM +66gB6LstV9kGwygclWYd6qXXnSDuVpnkIICPZXvCt6C4KmJ7MC2b+Th5nDw/tpZ0vtj6Du/qLvKT khApzj5Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uEuch-0000000DHUP-1Jh2; Tue, 13 May 2025 18:45:03 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uEtli-0000000D9YO-00pR for linux-arm-kernel@lists.infradead.org; Tue, 13 May 2025 17:50:19 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 3685D5C53DF; Tue, 13 May 2025 17:48:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CADADC4CEEF; Tue, 13 May 2025 17:50:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747158617; bh=U2EbKqHb+bPlK+hv9U4zW5BxtRVz8s8HpEo+8XdTKeU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pD9ah0D/4DL1PAGbWWv/3JSdIlnowg1pKqw5vdOse5aiySbKiRdncbRc5K8l2BGm1 VWhHkMM7ZoW0DtkQDAEKkH5a9S+OC5zJm7Q5IlQaKVboM0+sFf9lpFZOnVC0Em5Jh9 +GWtcWZvY+erO8otYw2PbahkE9VpjKiqTOKOhjgNUmp+FG9fu/nPv+I3PyicaExMWt eAF8Il9Hrd5iiwwZvZPbveWDPKxZOFELaUkItRguUvJhm0GHw74727i9BV4ThBmwQc s89d/f8oZjE4ysci2+7+yOzilw9/diw1Flja8Do+Eowngg75MUaF35nc+UQ1lmVm/t iBGWAQ6iY9yjg== From: Lorenzo Pieralisi Date: Tue, 13 May 2025 19:48:16 +0200 Subject: [PATCH v4 23/26] irqchip/gic-v5: Enable GICv5 SMP booting MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250513-gicv5-host-v4-23-b36e9b15a6c3@kernel.org> References: <20250513-gicv5-host-v4-0-b36e9b15a6c3@kernel.org> In-Reply-To: <20250513-gicv5-host-v4-0-b36e9b15a6c3@kernel.org> To: Marc Zyngier , Thomas Gleixner , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Catalin Marinas , Will Deacon Cc: Arnd Bergmann , Sascha Bischoff , Timothy Hayes , "Liam R. Howlett" , Mark Rutland , Jiri Slaby , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Lorenzo Pieralisi X-Mailer: b4 0.14.2 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250513_105018_127979_4FEEBC68 X-CRM114-Status: GOOD ( 12.79 ) 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 Set up IPIs by allocating IPI IRQs for all cpus and call into arm64 core code to initialise IPIs IRQ descriptors and request the related IRQ. Implement hotplug callback to enable interrupts on a cpu and register the cpu with an IRS. Co-developed-by: Sascha Bischoff Signed-off-by: Sascha Bischoff Co-developed-by: Timothy Hayes Signed-off-by: Timothy Hayes Signed-off-by: Lorenzo Pieralisi Cc: Thomas Gleixner Cc: Marc Zyngier --- drivers/irqchip/irq-gic-v5.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/irqchip/irq-gic-v5.c b/drivers/irqchip/irq-gic-v5.c index 42098cc20df5089ec0a5e0ee86246a3085878a87..599ce7009ca40ba8b87f7e63a56647223ab3f99f 100644 --- a/drivers/irqchip/irq-gic-v5.c +++ b/drivers/irqchip/irq-gic-v5.c @@ -5,6 +5,7 @@ #define pr_fmt(fmt) "GICv5: " fmt +#include #include #include #include @@ -908,6 +909,8 @@ static void gicv5_cpu_enable_interrupts(void) write_sysreg_s(cr0, SYS_ICC_CR0_EL1); } +static int base_ipi_virq; + static int gicv5_starting_cpu(unsigned int cpu) { if (WARN(!gicv5_cpuif_has_gcie(), @@ -919,6 +922,22 @@ static int gicv5_starting_cpu(unsigned int cpu) return gicv5_irs_register_cpu(cpu); } +static void __init gicv5_smp_init(void) +{ + unsigned int num_ipis = GICV5_IPIS_PER_CPU * nr_cpu_ids; + + cpuhp_setup_state_nocalls(CPUHP_AP_IRQ_GIC_STARTING, + "irqchip/arm/gicv5:starting", + gicv5_starting_cpu, NULL); + + base_ipi_virq = irq_domain_alloc_irqs(gicv5_global_data.ipi_domain, + num_ipis, NUMA_NO_NODE, NULL); + if (WARN(base_ipi_virq <= 0, "IPI IRQ allocation was not successful")) + return; + + set_smp_ipi_range_percpu(base_ipi_virq, GICV5_IPIS_PER_CPU, nr_cpu_ids); +} + static void __init gicv5_free_domains(void) { if (gicv5_global_data.ppi_domain) @@ -1040,6 +1059,8 @@ static int __init gicv5_of_init(struct device_node *node, struct device_node *pa if (ret) goto out_int; + gicv5_smp_init(); + return 0; out_int: gicv5_cpu_disable_interrupts(); -- 2.48.0