From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9543E2F3C2B; Thu, 26 Jun 2025 14:49:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949373; cv=none; b=trl9gXPXvo8SuEGJetGVxR3uD7eNwMlWZEf4RhLlLCop0yQ6J+1M8NEqEJSbf0aMahQeREjutEbU/FZKWrpIWKJnytB/c5tVvcZfcmuKJVzr1ZRj9sCvCSxA/NkUB5ADrlMN4sllLytbhm7Tpi6x8wLApD+OhjB29WF+KRbKJpw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949373; c=relaxed/simple; bh=7Cu/YiJLdCgjYtpiL5xrmhAxb6RxQOSpItWxdcw5T8c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DsDzOQxB1tMqCtBIMRFQzn+nvjqpnWBGi/yjTKU8ezons+4ppbeOiHK3e6fOF6EdloX5PcYxk+WIngJN5ox1pW9ALlOpYrv8hjUs/hThpJ7yE0Rnqq1MH/fJBxHNG94YlW4mp3WpAkK+mUCd7Gp6CAFfNLyjhh79imTUTJRBA1o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=MOZ6E7iC; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=65z1qE3l; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="MOZ6E7iC"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="65z1qE3l" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949370; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=R1h6sQyjT8FDCPgBDdSgNZubpG9nhAkbkG2lkhugPhQ=; b=MOZ6E7iCTTEcetQzCELuNNuAx46vOhJE14mS5kWCVx4b/hnfKfKTmEpmq/QC0A9/FB0qAi k6gq5qNFLVX/E/WI4svdHeFVdjv4MFup2wUKRr6oPKVlV0PH14Qth60GR9sA84tuam5m3x YfD899AMdpHiYFtrCB4BcIg1Y8sWAa41X89Hq+yurNqbxgHh7rxn13z0QiIKruUeacYL4J ptyXr6wwLw3rTN+FMbHwc+qBSsVoxW/+c9UYdyXY1Tmutcb9OQyrGQysQdiyOJxlcj3I5z hzuqwRtzKP4YyLhzvgFaG1+1FO0FV1iLpuoUmY/H0jJKTdgDW+41KgIETpvJ6A== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949370; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=R1h6sQyjT8FDCPgBDdSgNZubpG9nhAkbkG2lkhugPhQ=; b=65z1qE3l+CngzEH4hNvhsaFiTqSH3y7pkFbPyEi+jWPHv0rSZHOo5JR2/C0Qje6SB9PiLj p6dBstpI32Jtq3AQ== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Nam Cao Subject: [PATCH 01/12] irqdomain: Add device pointer to irq_domain_info and msi_domain_info Date: Thu, 26 Jun 2025 16:48:58 +0200 Message-Id: <943e52403b20cf13c320d55bd4446b4562466aab.1750860131.git.namcao@linutronix.de> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Gleixner Add device pointer to irq_domain_info and msi_domain_info, so that device can be specified at domain creation. Signed-off-by: Thomas Gleixner Signed-off-by: Nam Cao --- include/linux/irqdomain.h | 2 ++ include/linux/msi.h | 2 ++ kernel/irq/irqdomain.c | 1 + kernel/irq/msi.c | 3 ++- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index 7387d183029b7..266b5e5bb8ced 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h @@ -279,6 +279,7 @@ struct irq_domain_chip_generic_info; * domains are added using same fwnode * @ops: Domain operation callbacks * @host_data: Controller private data pointer + * @dev: Device which creates the domain * @dgc_info: Geneneric chip information structure pointer used to * create generic chips for the domain if not NULL. * @init: Function called when the domain is created. @@ -298,6 +299,7 @@ struct irq_domain_info { const char *name_suffix; const struct irq_domain_ops *ops; void *host_data; + struct device *dev; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY /** * @parent: Pointer to the parent irq domain used in a hierarchy domain diff --git a/include/linux/msi.h b/include/linux/msi.h index 6863540f4b717..77227d23ea84b 100644 --- a/include/linux/msi.h +++ b/include/linux/msi.h @@ -488,6 +488,7 @@ struct msi_domain_ops { * gets initialized to the maximum software index limit * by the domain creation code. * @ops: The callback data structure + * @dev: Device which creates the domain * @chip: Optional: associated interrupt chip * @chip_data: Optional: associated interrupt chip data * @handler: Optional: associated interrupt flow handler @@ -501,6 +502,7 @@ struct msi_domain_info { enum irq_domain_bus_token bus_token; unsigned int hwsize; struct msi_domain_ops *ops; + struct device *dev; struct irq_chip *chip; void *chip_data; irq_flow_handler_t handler; diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index c8b6de09047be..4afbd3ac532fb 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -317,6 +317,7 @@ static struct irq_domain *__irq_domain_instantiate(cons= t struct irq_domain_info =20 domain->flags |=3D info->domain_flags; domain->exit =3D info->exit; + domain->dev =3D info->dev; =20 #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY if (info->parent) { diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c index 9febe797a5f6a..9b09ad3f9914c 100644 --- a/kernel/irq/msi.c +++ b/kernel/irq/msi.c @@ -889,6 +889,7 @@ static struct irq_domain *__msi_create_irq_domain(struc= t fwnode_handle *fwnode, =20 if (domain) { irq_domain_update_bus_token(domain, info->bus_token); + domain->dev =3D info->dev; if (info->flags & MSI_FLAG_PARENT_PM_DEV) domain->pm_dev =3D parent->pm_dev; } @@ -1051,6 +1052,7 @@ bool msi_create_device_irq_domain(struct device *dev,= unsigned int domid, bundle->info.data =3D domain_data; bundle->info.chip_data =3D chip_data; bundle->info.alloc_data =3D &bundle->alloc_info; + bundle->info.dev =3D dev; =20 pops =3D parent->msi_parent_ops; snprintf(bundle->name, sizeof(bundle->name), "%s%s-%s", @@ -1089,7 +1091,6 @@ bool msi_create_device_irq_domain(struct device *dev,= unsigned int domid, if (!domain) return false; =20 - domain->dev =3D dev; dev->msi.data->__domains[domid].domain =3D domain; =20 if (msi_domain_prepare_irqs(domain, dev, hwsize, &bundle->alloc_info)) { --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14A922EB5B9; Thu, 26 Jun 2025 14:49:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949373; cv=none; b=KOaWwpmD9GVtxzLmuvB3M8eXDeHtdFNZ1xwmS4/Je0dl+wJz2EqA9j/MPE0uiO/Zi5tyV4rsy47+f6Hnxmnqn8jaqPGjbDFSs8ifNYuRZoG9r7wVTRz4GifHCPbh/pASe3TcZyqzXu8T5npY7AURpDaNqTLoinIdWnqjT2P6Euo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949373; c=relaxed/simple; bh=Tdajg+4kEdVbvLNhYKhYfqYw5bemqLDjktbDhTTjFyc=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ucfNN4ioD5xvXSmLuSBz8gVDc4XRT0CwmRGRZn1twqHcmMQOWUCfW3eAhQB5hy7+B8cnF8vGluX3ltP523o97wD6rx/JojgTb4N3KP6UpZsVnJhY/GG/B4UjUdIoPf2B4ZAqrTAiqrPjUg8kfPD5MYuOWNWX/AFzbhIfaUIRrOA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Le0CtdFB; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Mzr5HnfB; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Le0CtdFB"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Mzr5HnfB" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949370; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fupjHTV5DnOmVcgCuGo7Gn43pEA+0f/cXil9unSCcGQ=; b=Le0CtdFBiqX2btBCd9aUHwSpvNJJiERCenIY0xuoHYXzpcWz2J+t6YAvYp0KU/Ah9dP9Fj aqOGCEsXMWdkZdfNy2manEE695M6vy8P3+cS8qpYiZYHsKvkdmAWebgkaazG398a+Y5Bsp U3TtFq3Re6osMhOL5sP/6tgiASvW1/GDVOgJJhX3P/oBJ3tLGToiEHKNwBRJbnLAOqABKN XSZROilhPoyjGfqXrJBqR/9D7VFdFzhs88J4n0uEM1hF6Se8qjzY5WWJiXMG3KcMOQ/eF4 bVtOKD+LeaQ3bP4pak/PmNjfsHaJYPkG715aZJ4vJqjFVWocYyBh1pGn1D5teA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949370; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fupjHTV5DnOmVcgCuGo7Gn43pEA+0f/cXil9unSCcGQ=; b=Mzr5HnfB60mMPL7NGoooAyg1xNzdkmbmHxXDYU5fjXyt0j9iN7EVzDaRqZ7rQSd7VG1RaK /trtgHhcMHyE3rDQ== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Subject: [PATCH 02/12] irqchip/bcm2712-mip: Switch to msi_create_parent_irq_domain() Date: Thu, 26 Jun 2025 16:48:59 +0200 Message-Id: <92a6d68db014e945337c10649a41605da05783da.1750860131.git.namcao@linutronix.de> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Gleixner Switch to use the concise helper to create an MSI parent domain. Signed-off-by: Thomas Gleixner Signed-off-by: Nam Cao --- drivers/irqchip/irq-bcm2712-mip.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/irqchip/irq-bcm2712-mip.c b/drivers/irqchip/irq-bcm271= 2-mip.c index 63de5ef6cf2db..9bd7bc0bf6d59 100644 --- a/drivers/irqchip/irq-bcm2712-mip.c +++ b/drivers/irqchip/irq-bcm2712-mip.c @@ -172,18 +172,18 @@ static const struct msi_parent_ops mip_msi_parent_ops= =3D { =20 static int mip_init_domains(struct mip_priv *mip, struct device_node *np) { - struct irq_domain *middle; - - middle =3D irq_domain_create_hierarchy(mip->parent, 0, mip->num_msis, of_= fwnode_handle(np), - &mip_middle_domain_ops, mip); - if (!middle) + struct irq_domain_info info =3D { + .fwnode =3D of_fwnode_handle(np), + .ops =3D &mip_middle_domain_ops, + .host_data =3D mip, + .size =3D mip->num_msis, + .parent =3D mip->parent, + .dev =3D mip->dev, + }; + + if (!msi_create_parent_irq_domain(&info, &mip_msi_parent_ops)) return -ENOMEM; =20 - irq_domain_update_bus_token(middle, DOMAIN_BUS_GENERIC_MSI); - middle->dev =3D mip->dev; - middle->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT; - middle->msi_parent_ops =3D &mip_msi_parent_ops; - /* * All MSI-X unmasked for the host, masked for the VPU, and edge-triggere= d. */ --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 291F22F4339; Thu, 26 Jun 2025 14:49:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949375; cv=none; b=q6nVDzj/prcmN5U5/5cjcXkiUmx2xv66CqcadUv4VxwsbpTR2y0GcgtIbXb3yOiCEmgSmdgKcXM07D6w65flMXZw1tX8b50AUqp1SI60LykRLmkD1AQqgFUpWJ2kj/Wbu72wcjFNABxBuHosVjMliKa4w6n8X9d1WAeVao1EpL4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949375; c=relaxed/simple; bh=A044Rnz3lpWcem70RAC14SAiokFrVW/lHMS3VbedEvg=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ij5M/c39pihN944hNR9tkpxduFTWc4acQUNbcpVymRCRZ3GN0PV2JTUHR1bILGX82Zlc7UDE2YzdeQsgpA/ofMnF4QAtATEOZOMjFlaNA1NsY0qmm9RBP+GnAVmfHi0ItA5Rw1gfDkpcFReihkOBlqSq/ik6M3DzypnQYupgneg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=k6cTJKEH; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=kU8nVJGp; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="k6cTJKEH"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="kU8nVJGp" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949371; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CCV6bFUUfFxB0dupoRA2S4Wd06kQQS9OF6OfS/2EiHI=; b=k6cTJKEHb4brrQG+gymKJzNH1BBvN4SJI81xlJS1r/FFDjmgyleaNSMFtZqIGoBm26e8z7 VjQzuu9WHfbyu6cXIJlSq66QsLl7l4U9l46T113HkmjWShQ1EwAjDXDpVr11NwCpvqwJ7q R8a2d8tkccRtd5ZG2bmIr6dfC86Hijrndx1CsbROK/bC7qMgXrmMxv6eD5xkxfIhAGi1mk xVz7dTRBmNzFnbvt0ER1s05EQKtfZXAFpd7ZiTa8WbfNHptOMJ8/dpwUeHyGu+OZ7bnKb3 9M9xkbRWqXxDD2htW826eHnbiN6+69z7Gvz2VlbAuZY6QB5ka2eD/6SWu9lMbg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949371; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CCV6bFUUfFxB0dupoRA2S4Wd06kQQS9OF6OfS/2EiHI=; b=kU8nVJGpjIPyZGszjEtsn7WcpYNC9r9///57gdt2gHQ6773b68/ZNF0LCSlkKermKJAZfZ 1Sr2D3sI0N58NBAA== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Subject: [PATCH 03/12] irqchip/riscv-imsic: Convert to msi_create_parent_irq_domain() helper Date: Thu, 26 Jun 2025 16:49:00 +0200 Message-Id: In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Marc Zyngier Now that we have a concise helper to create an MSI parent domain, switch the RISC-V letter soup over to that. Signed-off-by: Marc Zyngier Signed-off-by: Thomas Gleixner Signed-off-by: Nam Cao Link: https://lore.kernel.org/all/20241204124549.607054-6-maz@kernel.org --- Cc: Anup Patel Cc: Paul Walmsley Cc: Palmer Dabbelt Cc: Albert Ou Cc: Alexandre Ghiti Cc: linux-riscv@lists.infradead.org Cc: linux-kernel@vger.kernel.org --- drivers/irqchip/irq-riscv-imsic-platform.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/irqchip/irq-riscv-imsic-platform.c b/drivers/irqchip/i= rq-riscv-imsic-platform.c index 1b9fbfce95816..74a2a28f94030 100644 --- a/drivers/irqchip/irq-riscv-imsic-platform.c +++ b/drivers/irqchip/irq-riscv-imsic-platform.c @@ -307,6 +307,11 @@ static const struct msi_parent_ops imsic_msi_parent_op= s =3D { =20 int imsic_irqdomain_init(void) { + struct irq_domain_info info =3D { + .fwnode =3D imsic->fwnode, + .ops =3D &imsic_base_domain_ops, + .host_data =3D imsic, + }; struct imsic_global_config *global; =20 if (!imsic || !imsic->fwnode) { @@ -320,16 +325,11 @@ int imsic_irqdomain_init(void) } =20 /* Create Base IRQ domain */ - imsic->base_domain =3D irq_domain_create_tree(imsic->fwnode, - &imsic_base_domain_ops, imsic); + imsic->base_domain =3D msi_create_parent_irq_domain(&info, &imsic_msi_par= ent_ops); if (!imsic->base_domain) { pr_err("%pfwP: failed to create IMSIC base domain\n", imsic->fwnode); return -ENOMEM; } - imsic->base_domain->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT; - imsic->base_domain->msi_parent_ops =3D &imsic_msi_parent_ops; - - irq_domain_update_bus_token(imsic->base_domain, DOMAIN_BUS_NEXUS); =20 global =3D &imsic->global; pr_info("%pfwP: hart-index-bits: %d, guest-index-bits: %d\n", --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E13BE2F49F9; Thu, 26 Jun 2025 14:49:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949376; cv=none; b=mbeXoi9hWMCH0hEdcVgMWjpyvltJ/tun3j/4PO/LF2Dn9DbAnlZVY9K+ZeOUBeO07GswAueuFXemiv+1pENj2qZ51EYGFcbgdeVCFYNs+95ljViyhpgU9AvIXUJ+sZbQf7BJqiKISquq5YdT/od89gf1YbsG77uR6rUadpKetnk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949376; c=relaxed/simple; bh=zC8Fx3exL5csc20jytlOr6DB9UfsssCTE87hiKOBIwo=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ICeFcfEK2yaBzH/ezeX+Nx5gMlXnh28JKW1+sMfZNmOtUMv+NCaS7q/cCL0ChiEf9Liu/J9d5qkQND8XE7RLR0cWF+VVrIoALggwqzaBQUQmtdH4/4sUXyhi0NrMCx+11hZrfgX4B+qRnH3+HEhrMinNsMxg6jKzG6AN6PkHsiI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=hl/CvgJf; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=5gjOj5qE; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="hl/CvgJf"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="5gjOj5qE" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949373; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KDPZSiRjIrBu3L0mAoo4Z14oMd2brpt/a9a8i/MwVwI=; b=hl/CvgJftBwQuXGwjera4DNcyc5KVFTYYYBRaCt85BBXlSr+NOFo4liMuDDuGuEDA08JRR 9kECWWNebtVKtUi6O1IoEVtQfHvtcCqC+reamRDMcr++uzHi7FFtyTEpnTfWmY6gk30WC0 Syr9/80XY+6W8o3ZmLzLHnXSUNpPA0/qoauBU5ySTQQmv3xy2jWhBAaeSP58EtNtLVh/86 vcDNk4VSgK6x6g3qbIJx+dXFCZXTbjURylPipzpVGBiGYAZ+Lm+VG7ZG5VXeerfQ2RmCMq EkmPeLlGSYNN3Nzgb2CcsM3t/mDRooZ7h6g/gya1dYzqVjwo4xJ0dg1919KmhA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949373; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KDPZSiRjIrBu3L0mAoo4Z14oMd2brpt/a9a8i/MwVwI=; b=5gjOj5qEa8MI8tht7YvPXgkn/vPlU41HeXiQrs+o8JZv31+Zigm+RjLGCTQDWDnW4G+BEP LHS+nX0A6GMC8rAg== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Subject: [PATCH 04/12] irqchip/imx-mu-msi: Convert to msi_create_parent_irq_domain() helper Date: Thu, 26 Jun 2025 16:49:01 +0200 Message-Id: <4f05fff99b6cc5875d2f4dadd31707e2dedaafc8.1750860131.git.namcao@linutronix.de> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Marc Zyngier Now that we have a concise helper to create an MSI parent domain, switch the IMX letter soup over to that. Signed-off-by: Marc Zyngier Signed-off-by: Thomas Gleixner Link: https://lore.kernel.org/all/20241204124549.607054-7-maz@kernel.org Reviewed-by: Frank Li --- Cc: Shawn Guo Cc: Sascha Hauer Cc: Pengutronix Kernel Team Cc: Fabio Estevam Cc: imx@lists.linux.dev Cc: linux-arm-kernel@lists.infradead.org --- drivers/irqchip/irq-imx-mu-msi.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/irqchip/irq-imx-mu-msi.c b/drivers/irqchip/irq-imx-mu-= msi.c index 137da1927d144..d2a4e8a61a42b 100644 --- a/drivers/irqchip/irq-imx-mu-msi.c +++ b/drivers/irqchip/irq-imx-mu-msi.c @@ -223,21 +223,21 @@ static const struct msi_parent_ops imx_mu_msi_parent_= ops =3D { =20 static int imx_mu_msi_domains_init(struct imx_mu_msi *msi_data, struct dev= ice *dev) { - struct fwnode_handle *fwnodes =3D dev_fwnode(dev); + struct irq_domain_info info =3D { + .ops =3D &imx_mu_msi_domain_ops, + .fwnode =3D dev_fwnode(dev), + .size =3D IMX_MU_CHANS, + .host_data =3D msi_data, + }; struct irq_domain *parent; =20 /* Initialize MSI domain parent */ - parent =3D irq_domain_create_linear(fwnodes, IMX_MU_CHANS, - &imx_mu_msi_domain_ops, msi_data); + parent =3D msi_create_parent_irq_domain(&info, &imx_mu_msi_parent_ops); if (!parent) { dev_err(dev, "failed to create IRQ domain\n"); return -ENOMEM; } - - irq_domain_update_bus_token(parent, DOMAIN_BUS_NEXUS); parent->dev =3D parent->pm_dev =3D dev; - parent->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT; - parent->msi_parent_ops =3D &imx_mu_msi_parent_ops; return 0; } =20 --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9ACF228934F; Thu, 26 Jun 2025 14:49:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949377; cv=none; b=SEj4m1v8dpowaq8kvt+Tw/LnBU0aqO6SGZtia0LKuhwVgZFf1lxB8zlqiXOf0ggSkvP0sNKDTxjn00DSsMpyhQVVls+OiL9XYjH+KG388kHwNxA1qqoKJsS3gFyQEuEgherTyanJOjYdrxYFOm3s6lKNIApsIWV9ot78BHFPaS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949377; c=relaxed/simple; bh=pv/4BBYnostM9chYE73eMVzgU77CZiNCj9OwEuIsQM0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NzBeyZJ1RNI5AiH6recJWsEfZPQLf5oMR4yZEfcdrrTfxinv7A/zZUhZV6FhmoAbNuUL+KPwIjq6MdC6vgBGka10z0YgrrGi8WvEU3WHQWCQHMy6m1al+uyophHSLvn78ILbGyzsqbITIuRccm0GeIhYLYQeeVYs2JEdJR4Kn3k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=nSaQCQ+I; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=F9dx+Urf; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="nSaQCQ+I"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="F9dx+Urf" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949374; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nkXJXJkvLwHuTpAwjvS0vUf4fEyF+xPIPCi5NiqwgZg=; b=nSaQCQ+IHhLsvffHxI3+qDKzxsBniO963XIYMSa4/MbUUJpX9o3IIyBndFYw+n5M6fqFUh 3q+2Bc7BB2MVeC+voczKHzEkh/o3xC/gGaS2zbgaVyw/hsP5Fa5qWVHUPTYmVZwmC2DZZV KbEahyUeLdN7tOaJW72bbNwsCm6c6jg4wGtwFXMowZEchV1mt3cp7Cxyx8im6LpMMJyp3D 0cFqLcXGdZfh/YBzlIWhXoIIBRGd7uUb7Qx+UudeF4a2tqe/kBwwgi2EuB39GqOKkh24rZ i29wjE42TIH6U4S8Ac4x/Qp/fJL0TrN8ME+hFIFFtqTKAoZJtZabqMaLSgs+Wg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949374; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nkXJXJkvLwHuTpAwjvS0vUf4fEyF+xPIPCi5NiqwgZg=; b=F9dx+UrfW5xu7dgNLVw0va+kP/3CyD/ZP0gDAyjIwhjycwqtJWLNkZnRpOSgHoReXhxaDD LOvuAc7P2JErQxAA== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Nam Cao Subject: [PATCH 05/12] irqchip/loongson-pch-msi.c: Switch to msi_create_parent_irq_domain() Date: Thu, 26 Jun 2025 16:49:02 +0200 Message-Id: <7ae78d7b7e33ad8ca1ec2ba28957546c81ba86f7.1750860131.git.namcao@linutronix.de> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Gleixner Switch to use the concise helper to create an MSI parent domain. Signed-off-by: Thomas Gleixner Signed-off-by: Nam Cao --- Cc: Huacai Chen Cc: Jiaxun Yang Cc: linux-mips@vger.kernel.org --- drivers/irqchip/irq-loongson-pch-msi.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/drivers/irqchip/irq-loongson-pch-msi.c b/drivers/irqchip/irq-l= oongson-pch-msi.c index a0257c7bef108..4aedc9b90ff77 100644 --- a/drivers/irqchip/irq-loongson-pch-msi.c +++ b/drivers/irqchip/irq-loongson-pch-msi.c @@ -153,26 +153,21 @@ static struct msi_parent_ops pch_msi_parent_ops =3D { .init_dev_msi_info =3D msi_lib_init_dev_msi_info, }; =20 -static int pch_msi_init_domains(struct pch_msi_data *priv, - struct irq_domain *parent, +static int pch_msi_init_domains(struct pch_msi_data *priv, struct irq_doma= in *parent, struct fwnode_handle *domain_handle) { - struct irq_domain *middle_domain; - - middle_domain =3D irq_domain_create_hierarchy(parent, 0, priv->num_irqs, - domain_handle, - &pch_msi_middle_domain_ops, - priv); - if (!middle_domain) { + struct irq_domain_info info =3D { + .ops =3D &pch_msi_middle_domain_ops, + .size =3D priv->num_irqs, + .parent =3D parent, + .host_data =3D priv, + .fwnode =3D domain_handle, + }; + + if (!msi_create_parent_irq_domain(&info, &pch_msi_parent_ops)) { pr_err("Failed to create the MSI middle domain\n"); return -ENOMEM; } - - irq_domain_update_bus_token(middle_domain, DOMAIN_BUS_NEXUS); - - middle_domain->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT; - middle_domain->msi_parent_ops =3D &pch_msi_parent_ops; - return 0; } =20 --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 571292F531D; Thu, 26 Jun 2025 14:49:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949377; cv=none; b=fON8YNsU7zNWcUAj+u7KQeodiLhHXfsZ82rxKYX6SN4iPlFnZBCW2zDpgXBazOQNbQZrnoiYpoH0jzS2kRx1txZwcKrHBOqJGeq4TGLlSQN50XFU5mqA93JLLDRkC2pBOVSJcD7eRaH15xN3ZMR/FVniAU4t8mxRmOuEjlwGhLo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949377; c=relaxed/simple; bh=KJqGjiCZWU9fj4zotEjWwy5zPpJjIZO+4otyCmaUWAg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LPYHttKeG5XVBbzbsahTY7W8XbfKTpzQ4WfGiYq091Wnr8O+W/JYqHsK0IxL9ILp6Fm6HQ9Kr7sOyaamouaizbU1ucOhkgn5kxuBrbNLyASSB78Qi+hQ997HR7TCs3mGED1aiCOBMHrLgVo5nMlUjls5h3UR1tP2/IAneEc9Ycc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Q89pqfCd; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=xxE65vbv; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Q89pqfCd"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="xxE65vbv" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949375; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QQJvh+4qMJpBwXh0oz+ildmCIKYnFwkVpJiG0W9NSek=; b=Q89pqfCdat4vTT56i2MTX0cTaMwEjsqBm0u4pbQnqmzE0GD2jw+bQLBlo/pBmMGqNAA0Qi IKr2QvMqOX0DRNXW90uw9oHztaPjiVlvXBFiF/aOqOgvpaQ87+cJuATK29xIkL+q9W/e2M t0p5DWIbScJ+4w9ctgp1UJXODLgYog+boNeuXrfqMuQxenCHgmvPdcibhqLp7kk7OxcBpb KopyBUISrjxix+ONfrCI9WMMwfd7rxwufRt3hoF63Ls1srjswmZK2RcKQ6EeeYhQScDfV9 ZBbW94kOKIvU3Kh57llhjE8i1PBVG4WT5t3mTGLHXX6JC3cTSmAQXEk9QRY1uQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949375; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QQJvh+4qMJpBwXh0oz+ildmCIKYnFwkVpJiG0W9NSek=; b=xxE65vbvF2hQ7Y9sZ9cCcwBqJ1qtggiCp0YusxI6VwHfX7Psmg4sc3ccQUZF44/xzfh1Jh 2lSa5cZxvKNYFKBg== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Nam Cao Subject: [PATCH 06/12] irqchip/sg2042-msi: Switch to msi_create_parent_irq_domain() Date: Thu, 26 Jun 2025 16:49:03 +0200 Message-Id: <3e901db1a4c87678af053019774d95b73bfb9ef9.1750860131.git.namcao@linutronix.de> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Gleixner Switch to use the concise helper to create an MSI parent domain. Signed-off-by: Thomas Gleixner Signed-off-by: Nam Cao --- drivers/irqchip/irq-sg2042-msi.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/drivers/irqchip/irq-sg2042-msi.c b/drivers/irqchip/irq-sg2042-= msi.c index af16bc5a3c8b5..bcfddc51bc6a1 100644 --- a/drivers/irqchip/irq-sg2042-msi.c +++ b/drivers/irqchip/irq-sg2042-msi.c @@ -219,20 +219,18 @@ static const struct msi_parent_ops sg2044_msi_parent_= ops =3D { static int sg204x_msi_init_domains(struct sg204x_msi_chipdata *data, struct irq_domain *plic_domain, struct device *dev) { - struct fwnode_handle *fwnode =3D dev_fwnode(dev); - struct irq_domain *middle_domain; - - middle_domain =3D irq_domain_create_hierarchy(plic_domain, 0, data->num_i= rqs, fwnode, - &sg204x_msi_middle_domain_ops, data); - if (!middle_domain) { + struct irq_domain_info info =3D { + .ops =3D &sg204x_msi_middle_domain_ops, + .parent =3D plic_domain, + .size =3D data->num_irqs, + .fwnode =3D dev_fwnode(dev), + .host_data =3D data, + }; + + if (!msi_create_parent_irq_domain(&info, data->chip_info->parent_ops)) { pr_err("Failed to create the MSI middle domain\n"); return -ENOMEM; } - - irq_domain_update_bus_token(middle_domain, DOMAIN_BUS_NEXUS); - - middle_domain->flags |=3D IRQ_DOMAIN_FLAG_MSI_PARENT; - middle_domain->msi_parent_ops =3D data->chip_info->parent_ops; return 0; } =20 --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51EF12F546A; Thu, 26 Jun 2025 14:49:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949379; cv=none; b=Ae5x0oec/kUbzs+hFmkV5JVzifjRQFtGEeW+hzMZ6LDBmlEFky8sCnJ8Af0VPiMPRy7SqHvNQnGAX5uouHUBeRFMmuJ0Nur+zFZy5zE9xzipcK0nVlHH9S7iNQzVh2QssHvVVvcsCCINQxB5FrBgBMKm8Tnb+R7Lsu3mTPcwfuo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949379; c=relaxed/simple; bh=IxxZJ2wFToK0kupYSlOdZAg0mHWGENSw1e3uN8ZAHmg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=i3LEAqkP9LnQBGFZ1QNdmlLLDYXwnLjTLpPJjBRToR3Fxqp/y5aMOez2Bo1ZEcEdBviZ1ZGwut70QUKJWyPVrGv/qVlm9edHCJaneOChtKNXNBUuwsjYViWAl6O3NaCbYN+BMmXPukZKS8jAI9/uBlFAKUM9j4Z6Rphn5SxJwqY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=mknJkKZ3; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=zh/sN6K5; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="mknJkKZ3"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="zh/sN6K5" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949375; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pKzcREMF/JSs7xXlqj/sW2W9jbHL2lsx1h1l0bkVD/k=; b=mknJkKZ3dsxzRYSiFcfJAu8ZW0SvTtRoiLXI+AItcOAmWaNPgnHkjQSUezF9K1TXydwAiY SperwGoSIVLi++KTIn3bMYSZ2lOnCiBj0Ts3LIrZs2tKAiv+UFGDjfzbYQd1FyQ69rKg0N K0cxzDk8398RDbeMhu1rFKyUt3eBaXaI6sP6ghQjlbMq0OYu2KR5U9U86ZXStAKt068mjY W7MhZ3WIaBMp8pq7UWxlS/lcdV6R60bVqg4IQIl2WbC790qDBWAAO2F+thAsz8Ui88ZydK xALxRwiZe5MoA68JoVqyhBrwozvsxggJsWbA30nfBR4Gqo+9JkGxB3liXIediQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949375; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pKzcREMF/JSs7xXlqj/sW2W9jbHL2lsx1h1l0bkVD/k=; b=zh/sN6K5PYvw9e+ovearVI0kjX5nowPlZtz10Zu4nVjSVwP16igkDrKBXczXR3H3H4b0LD Yo36rnD4pBvjeiAA== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Nam Cao Subject: [PATCH 07/12] irqchip/alpine-msi: Clean up whitespace style Date: Thu, 26 Jun 2025 16:49:04 +0200 Message-Id: <3bbf719fcd974b0f52a832552b986116bdc70203.1750860131.git.namcao@linutronix.de> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Gleixner Tidy up the code style. Whitespace changes only. Signed-off-by: Thomas Gleixner Signed-off-by: Nam Cao --- Cc: Antoine Tenart Cc: linux-arm-kernel@lists.infradead.org --- drivers/irqchip/irq-alpine-msi.c | 37 +++++++++++--------------------- 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/drivers/irqchip/irq-alpine-msi.c b/drivers/irqchip/irq-alpine-= msi.c index a5289dc26dca0..7e379a6985a6a 100644 --- a/drivers/irqchip/irq-alpine-msi.c +++ b/drivers/irqchip/irq-alpine-msi.c @@ -29,11 +29,11 @@ #define ALPINE_MSIX_SPI_TARGET_CLUSTER0 BIT(16) =20 struct alpine_msix_data { - spinlock_t msi_map_lock; - phys_addr_t addr; - u32 spi_first; /* The SGI number that MSIs start */ - u32 num_spis; /* The number of SGIs for MSIs */ - unsigned long *msi_map; + spinlock_t msi_map_lock; + phys_addr_t addr; + u32 spi_first; /* The SGI number that MSIs start */ + u32 num_spis; /* The number of SGIs for MSIs */ + unsigned long *msi_map; }; =20 static void alpine_msix_mask_msi_irq(struct irq_data *d) @@ -76,8 +76,7 @@ static int alpine_msix_allocate_sgi(struct alpine_msix_da= ta *priv, int num_req) return priv->spi_first + first; } =20 -static void alpine_msix_free_sgi(struct alpine_msix_data *priv, unsigned s= gi, - int num_req) +static void alpine_msix_free_sgi(struct alpine_msix_data *priv, unsigned i= nt sgi, int num_req) { int first =3D sgi - priv->spi_first; =20 @@ -88,14 +87,12 @@ static void alpine_msix_free_sgi(struct alpine_msix_dat= a *priv, unsigned sgi, spin_unlock(&priv->msi_map_lock); } =20 -static void alpine_msix_compose_msi_msg(struct irq_data *data, - struct msi_msg *msg) +static void alpine_msix_compose_msi_msg(struct irq_data *data, struct msi_= msg *msg) { struct alpine_msix_data *priv =3D irq_data_get_irq_chip_data(data); phys_addr_t msg_addr =3D priv->addr; =20 msg_addr |=3D (data->hwirq << 3); - msg->address_hi =3D upper_32_bits(msg_addr); msg->address_lo =3D lower_32_bits(msg_addr); msg->data =3D 0; @@ -116,8 +113,7 @@ static struct irq_chip middle_irq_chip =3D { .irq_compose_msi_msg =3D alpine_msix_compose_msi_msg, }; =20 -static int alpine_msix_gic_domain_alloc(struct irq_domain *domain, - unsigned int virq, int sgi) +static int alpine_msix_gic_domain_alloc(struct irq_domain *domain, unsigne= d int virq, int sgi) { struct irq_fwspec fwspec; struct irq_data *d; @@ -138,12 +134,10 @@ static int alpine_msix_gic_domain_alloc(struct irq_do= main *domain, =20 d =3D irq_domain_get_irq_data(domain->parent, virq); d->chip->irq_set_type(d, IRQ_TYPE_EDGE_RISING); - return 0; } =20 -static int alpine_msix_middle_domain_alloc(struct irq_domain *domain, - unsigned int virq, +static int alpine_msix_middle_domain_alloc(struct irq_domain *domain, unsi= gned int virq, unsigned int nr_irqs, void *args) { struct alpine_msix_data *priv =3D domain->host_data; @@ -161,7 +155,6 @@ static int alpine_msix_middle_domain_alloc(struct irq_d= omain *domain, irq_domain_set_hwirq_and_chip(domain, virq + i, sgi + i, &middle_irq_chip, priv); } - return 0; =20 err_sgi: @@ -170,8 +163,7 @@ static int alpine_msix_middle_domain_alloc(struct irq_d= omain *domain, return err; } =20 -static void alpine_msix_middle_domain_free(struct irq_domain *domain, - unsigned int virq, +static void alpine_msix_middle_domain_free(struct irq_domain *domain, unsi= gned int virq, unsigned int nr_irqs) { struct irq_data *d =3D irq_domain_get_irq_data(domain, virq); @@ -186,8 +178,7 @@ static const struct irq_domain_ops alpine_msix_middle_d= omain_ops =3D { .free =3D alpine_msix_middle_domain_free, }; =20 -static int alpine_msix_init_domains(struct alpine_msix_data *priv, - struct device_node *node) +static int alpine_msix_init_domains(struct alpine_msix_data *priv, struct = device_node *node) { struct irq_domain *middle_domain, *msi_domain, *gic_domain; struct device_node *gic_node; @@ -224,8 +215,7 @@ static int alpine_msix_init_domains(struct alpine_msix_= data *priv, return 0; } =20 -static int alpine_msix_init(struct device_node *node, - struct device_node *parent) +static int alpine_msix_init(struct device_node *node, struct device_node *= parent) { struct alpine_msix_data *priv; struct resource res; @@ -271,8 +261,7 @@ static int alpine_msix_init(struct device_node *node, goto err_priv; } =20 - pr_debug("Registering %d msixs, starting at %d\n", - priv->num_spis, priv->spi_first); + pr_debug("Registering %d msixs, starting at %d\n", priv->num_spis, priv->= spi_first); =20 ret =3D alpine_msix_init_domains(priv, node); if (ret) --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B4D2B2F547A; Thu, 26 Jun 2025 14:49:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949379; cv=none; b=S3VAP+8WRxoW0QYzCrC5kml6h0wFn1onYZEIzEQ0W5AplkKSiOYEuAn3u0Pqy/ArnKCUAl5mV+vvP3UiGb4UfM/cyx5PESuQ/T02kOK5qxr50fs6weELeuyAku1xbTAB15wFOJF36aZfHC2BHxzynksm5X2WQDtqZMnrXjROOq4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949379; c=relaxed/simple; bh=L0XKbe8Qa702YJqL8CmRi5qnaGzCPPWZf27atfQlU0U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=V9kualG1F4zL+2xwOgUT2+plRmA7/ybb6VbuMF5h+L3C8YVJWvLO5atq+1M6TgZLOIlCAbf5tM4Jw6lAqYpgqYIGlUzATY5kuDvEE6nT2/gmK+ApeX2hi2hDjPX107ZELwirxmX31sBqh5JkkqQX7qGrmlMn8IaGH+vNkOiw2Mc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=d7RpVYHG; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=l9HDPg8d; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="d7RpVYHG"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="l9HDPg8d" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949376; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Pi9UqFBmG0ABPdW7goJnL2FLekqeOwHCLTz3aDeGlnw=; b=d7RpVYHGdlxfyf0WiFnopVOhvS5IgLshX910+umF5VObQhNZ1ujRTniufW5dMtsTPKSlhF urakTifQAqOHMw+5EqyQT2e6ndF2HKPA64Z/NNCLq82v1jodx0BWqZfzeh8nVbO6rc6Cf4 76E4Z0oMVNZh5Pc6drneoWcbeYh6qlNZCFBHk7x9CzCFrQdY42qUN/Sj7F+chf+3hQ76qD dEeGlxLv/RnLcUbgoOt26UCaTr5Daxb3TZY9s6iSX0IYZm9LZm/hvhyrSCwggfMs6MIWQ1 Px1LLCDY8obutNGKEwgmRKIc17WjuRdOg/LEDGZMwsGTdNuFFWMMSoYwq8FUkA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949376; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Pi9UqFBmG0ABPdW7goJnL2FLekqeOwHCLTz3aDeGlnw=; b=l9HDPg8d9E07sSs5ILVUEbh58kaGOI05w6928VyvfHfE8vIWVBWMGdIIjPat2eWzCBI9lX 8pXUG5ZKCqOW6XCg== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Nam Cao Subject: [PATCH 08/12] irqchip/alpine-msi: Convert to lock guards Date: Thu, 26 Jun 2025 16:49:05 +0200 Message-Id: <7886b9595aaf8e102f79364784f68dec9c49b023.1750860131.git.namcao@linutronix.de> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Gleixner Convert lock/unlock pairs to guards and tidy up the code. No functional change. Signed-off-by: Thomas Gleixner Signed-off-by: Nam Cao --- Cc: Antoine Tenart Cc: linux-arm-kernel@lists.infradead.org --- drivers/irqchip/irq-alpine-msi.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/drivers/irqchip/irq-alpine-msi.c b/drivers/irqchip/irq-alpine-= msi.c index 7e379a6985a6a..cf188e5feefc0 100644 --- a/drivers/irqchip/irq-alpine-msi.c +++ b/drivers/irqchip/irq-alpine-msi.c @@ -60,19 +60,12 @@ static int alpine_msix_allocate_sgi(struct alpine_msix_= data *priv, int num_req) { int first; =20 - spin_lock(&priv->msi_map_lock); - - first =3D bitmap_find_next_zero_area(priv->msi_map, priv->num_spis, 0, - num_req, 0); - if (first >=3D priv->num_spis) { - spin_unlock(&priv->msi_map_lock); + guard(spinlock)(&priv->msi_map_lock); + first =3D bitmap_find_next_zero_area(priv->msi_map, priv->num_spis, 0, nu= m_req, 0); + if (first >=3D priv->num_spis) return -ENOSPC; - } =20 bitmap_set(priv->msi_map, first, num_req); - - spin_unlock(&priv->msi_map_lock); - return priv->spi_first + first; } =20 @@ -80,11 +73,8 @@ static void alpine_msix_free_sgi(struct alpine_msix_data= *priv, unsigned int sgi { int first =3D sgi - priv->spi_first; =20 - spin_lock(&priv->msi_map_lock); - + guard(spinlock)(&priv->msi_map_lock); bitmap_clear(priv->msi_map, first, num_req); - - spin_unlock(&priv->msi_map_lock); } =20 static void alpine_msix_compose_msi_msg(struct irq_data *data, struct msi_= msg *msg) --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D2342F9498; Thu, 26 Jun 2025 14:49:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949380; cv=none; b=FLM2hNL90+7G8uV6p1YvH0V3pe/7UwqGTfXjuT7MNTsWW0/nAAOXHZpHskJH+ig1DSBQbFXnF/QwRPkroyeP98To8P2azIWLJI2t/dwMNoNzxFo22acQ9QL/y5ukUAbuGaSIqrz6p/V69Te//XmAumURxjo20q2+4Gls06LmgKU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949380; c=relaxed/simple; bh=ZFlAGtOpezGZLMwLXedEkRGUAwxZFBwzVvo1qs4Vuy4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Yy8PNtYikAB2HClvUQlkQdijDz5H/Hi/UlqzHvv6JKCXHd9Gvw0G8OBQz4W7ZOTfhBPoOr61eVGe+JmOdrz9vkpVe3IGQEm+juTqdk+2KxKRQLY+DZKKYh/pudT4GLdgUrfzil0TEMQIwzZoS6T36NVzZbiBHnYT2qj0u0fxx4g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Idsc8a/+; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=JBEOGIcD; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Idsc8a/+"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="JBEOGIcD" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949377; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Z2aznJGf1J+nG8uzCfZ1sNahDbmhHRYzTMg4koq1VzA=; b=Idsc8a/+lTtARTa2nNQrRNQvokiSlvPFnhxaytrQ1nkjwUGdApgKmyVsjOyhGmvOp4ruxo wHOArztVX7uJfBbPcb5uK+/ha9KjEzBrVLjNkwu4ToXBKnDeNVvgtVZ8Jffcp3WCHD51dl tyLoQN/tcNmUDMdoQU3HAuCbuIfqzUKHZmtWJodFHRT7kxMZyK/w2cMUg7W6AvnE+ddqoX 5JplpIQjp7LKjWwfnjsu2LpTon/d3QZLEUXZUD1WroEV9z9Yy82LiFMJ1LklSdz+Pdc8vG ZHYAO9xbNSUowGTAn9O4rGFjA7rTnPg3VI26DrrCoifOHT9hriabbgAbyz0+TQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949377; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Z2aznJGf1J+nG8uzCfZ1sNahDbmhHRYzTMg4koq1VzA=; b=JBEOGIcDy1WIGOz1iEnahNhZLPLAPyxSPGYQw3pRNaIE4sX+XH1TNAh/rWBgqYtgSBL7GW zn74SJJMSYMKUdCA== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Nam Cao Subject: [PATCH 09/12] irqchip/alpine-msi: Convert to __free Date: Thu, 26 Jun 2025 16:49:06 +0200 Message-Id: In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Gleixner Tidy up the code with __free. No functional change. Signed-off-by: Thomas Gleixner Signed-off-by: Nam Cao --- Cc: Antoine Tenart Cc: linux-arm-kernel@lists.infradead.org --- drivers/irqchip/irq-alpine-msi.c | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/drivers/irqchip/irq-alpine-msi.c b/drivers/irqchip/irq-alpine-= msi.c index cf188e5feefc0..43d6db290138a 100644 --- a/drivers/irqchip/irq-alpine-msi.c +++ b/drivers/irqchip/irq-alpine-msi.c @@ -207,11 +207,10 @@ static int alpine_msix_init_domains(struct alpine_msi= x_data *priv, struct device =20 static int alpine_msix_init(struct device_node *node, struct device_node *= parent) { - struct alpine_msix_data *priv; + struct alpine_msix_data *priv __free(kfree) =3D kzalloc(sizeof(*priv), GF= P_KERNEL); struct resource res; int ret; =20 - priv =3D kzalloc(sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; =20 @@ -220,7 +219,7 @@ static int alpine_msix_init(struct device_node *node, s= truct device_node *parent ret =3D of_address_to_resource(node, 0, &res); if (ret) { pr_err("Failed to allocate resource\n"); - goto err_priv; + return ret; } =20 /* @@ -235,34 +234,28 @@ static int alpine_msix_init(struct device_node *node,= struct device_node *parent =20 if (of_property_read_u32(node, "al,msi-base-spi", &priv->spi_first)) { pr_err("Unable to parse MSI base\n"); - ret =3D -EINVAL; - goto err_priv; + return -EINVAL; } =20 if (of_property_read_u32(node, "al,msi-num-spis", &priv->num_spis)) { pr_err("Unable to parse MSI numbers\n"); - ret =3D -EINVAL; - goto err_priv; + return -EINVAL; } =20 - priv->msi_map =3D bitmap_zalloc(priv->num_spis, GFP_KERNEL); - if (!priv->msi_map) { - ret =3D -ENOMEM; - goto err_priv; - } + unsigned long *msi_map __free(kfree) =3D bitmap_zalloc(priv->num_spis, GF= P_KERNEL); + + if (!msi_map) + return -ENOMEM; + priv->msi_map =3D msi_map; =20 pr_debug("Registering %d msixs, starting at %d\n", priv->num_spis, priv->= spi_first); =20 ret =3D alpine_msix_init_domains(priv, node); if (ret) - goto err_map; + return ret; =20 + retain_and_null_ptr(priv); + retain_and_null_ptr(msi_map); return 0; - -err_map: - bitmap_free(priv->msi_map); -err_priv: - kfree(priv); - return ret; } IRQCHIP_DECLARE(alpine_msix, "al,alpine-msix", alpine_msix_init); --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BCA522FA621; Thu, 26 Jun 2025 14:49:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949381; cv=none; b=ZeTmHYNRABpvWEr9wlQ4I/n3An6Lw0caK+M7gjKvoxqWzyoHL3APohl5ptCeqB8lfVtItGSQzzSIK6YV4CsJqgz+/QiPm+5ZDQazawgmX/EcqOc2jnSLM4pzLTqb66d3IBi+tDQS6lD32jj+1GzVOlcKvHcfCW7NEZ1nB2FW4ZE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949381; c=relaxed/simple; bh=SZ2njfr0p2LP4U6s4/kpLpooqtZmqtk4nmYeoXC6kgc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=s2UQAIGUSpFyFG+of/nJqO8c94ZCFkn/A74wEDlQQnBnU6+suNAdJr7Zf1YvIP38eEDZlaAJ3nlQ7cDDrjGWF673fg0grPWA/3rZTLRQz/WABpZSp6Ua7+wtbFU1HClJHI1oM70r0U9t7iLPKpUUN4CvLmnwpRFFr7xyJ19XdrQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=CMq1Gxr5; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=VrtZi3tD; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="CMq1Gxr5"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="VrtZi3tD" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949378; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=efayX2kB19e/5fOKxvWIg5Uzbqjfs8VRJ75B0fwk9Gc=; b=CMq1Gxr5Pm9ZIdl+tCHNTj5Y8eDMa6aOMVaWCiah6HMWHVkoqypyaI4kBj2TVhLyHSJZJ8 rKbbdzqWUe7rZAp/7qUj+Jv/rLXVqIlsbVD6O6fHnDVWdnkzaHTSXkHx0HptmbhvX+UrSY Eo4QmPYp0rwnRTMNenqkwXydEI2sAZIX6Jpn9BPXlgrQ9I/dY55qI/JI20zV9LYbDM/GPS tYhU5DmSC0blfhgyHAnJ5ZqIHdkkSsRtVxOTf1tilTSj5RD9uvTWZJqTJifnR8tB/uyNPw oSljTW5mHY1cR5EhI2gPmp5rSyGOMKpnSnlAfCuN2CxIN02tVhPHMsfhEXv0qg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949378; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=efayX2kB19e/5fOKxvWIg5Uzbqjfs8VRJ75B0fwk9Gc=; b=VrtZi3tDzFyI/vKrmM8P7d4h4FoLDKNKc8U1MNdg/bMGAjgPWvWTnKevlK7Ag39wgLEQGj lCAnFdnQjLWGZNBA== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Nam Cao Subject: [PATCH 10/12] irqchip/alpine-msi: Switch to msi_create_parent_irq_domain() Date: Thu, 26 Jun 2025 16:49:07 +0200 Message-Id: In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Thomas Gleixner Move away from the legacy MSI domain setup, switch to use msi_create_parent_irq_domain(). Signed-off-by: Thomas Gleixner Signed-off-by: Nam Cao --- Cc: Antoine Tenart Cc: linux-arm-kernel@lists.infradead.org --- drivers/irqchip/Kconfig | 1 + drivers/irqchip/irq-alpine-msi.c | 69 +++++++++++++------------------- 2 files changed, 28 insertions(+), 42 deletions(-) diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig index 0d196e4471426..dbdb988e4f7e0 100644 --- a/drivers/irqchip/Kconfig +++ b/drivers/irqchip/Kconfig @@ -85,6 +85,7 @@ config ALPINE_MSI bool depends on PCI select PCI_MSI + select IRQ_MSI_LIB select GENERIC_IRQ_CHIP =20 config AL_FIC diff --git a/drivers/irqchip/irq-alpine-msi.c b/drivers/irqchip/irq-alpine-= msi.c index 43d6db290138a..159d9ec7c0ddc 100644 --- a/drivers/irqchip/irq-alpine-msi.c +++ b/drivers/irqchip/irq-alpine-msi.c @@ -14,6 +14,7 @@ =20 #include #include +#include #include #include #include @@ -36,26 +37,6 @@ struct alpine_msix_data { unsigned long *msi_map; }; =20 -static void alpine_msix_mask_msi_irq(struct irq_data *d) -{ - pci_msi_mask_irq(d); - irq_chip_mask_parent(d); -} - -static void alpine_msix_unmask_msi_irq(struct irq_data *d) -{ - pci_msi_unmask_irq(d); - irq_chip_unmask_parent(d); -} - -static struct irq_chip alpine_msix_irq_chip =3D { - .name =3D "MSIx", - .irq_mask =3D alpine_msix_mask_msi_irq, - .irq_unmask =3D alpine_msix_unmask_msi_irq, - .irq_eoi =3D irq_chip_eoi_parent, - .irq_set_affinity =3D irq_chip_set_affinity_parent, -}; - static int alpine_msix_allocate_sgi(struct alpine_msix_data *priv, int num= _req) { int first; @@ -88,12 +69,6 @@ static void alpine_msix_compose_msi_msg(struct irq_data = *data, struct msi_msg *m msg->data =3D 0; } =20 -static struct msi_domain_info alpine_msix_domain_info =3D { - .flags =3D MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | - MSI_FLAG_PCI_MSIX, - .chip =3D &alpine_msix_irq_chip, -}; - static struct irq_chip middle_irq_chip =3D { .name =3D "alpine_msix_middle", .irq_mask =3D irq_chip_mask_parent, @@ -164,13 +139,35 @@ static void alpine_msix_middle_domain_free(struct irq= _domain *domain, unsigned i } =20 static const struct irq_domain_ops alpine_msix_middle_domain_ops =3D { + .select =3D msi_lib_irq_domain_select, .alloc =3D alpine_msix_middle_domain_alloc, .free =3D alpine_msix_middle_domain_free, }; =20 +#define ALPINE_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \ + MSI_FLAG_USE_DEF_CHIP_OPS | \ + MSI_FLAG_PCI_MSI_MASK_PARENT) + +#define ALPINE_MSI_FLAGS_SUPPORTED (MSI_GENERIC_FLAGS_MASK | \ + MSI_FLAG_PCI_MSIX) + +static struct msi_parent_ops alpine_msi_parent_ops =3D { + .supported_flags =3D ALPINE_MSI_FLAGS_SUPPORTED, + .required_flags =3D ALPINE_MSI_FLAGS_REQUIRED, + .chip_flags =3D MSI_CHIP_FLAG_SET_EOI, + .bus_select_token =3D DOMAIN_BUS_NEXUS, + .bus_select_mask =3D MATCH_PCI_MSI, + .prefix =3D "ALPINE-", + .init_dev_msi_info =3D msi_lib_init_dev_msi_info, +}; + static int alpine_msix_init_domains(struct alpine_msix_data *priv, struct = device_node *node) { - struct irq_domain *middle_domain, *msi_domain, *gic_domain; + struct irq_domain_info info =3D { + .fwnode =3D of_fwnode_handle(node), + .ops =3D &alpine_msix_middle_domain_ops, + .host_data =3D priv, + }; struct device_node *gic_node; =20 gic_node =3D of_irq_find_parent(node); @@ -179,29 +176,17 @@ static int alpine_msix_init_domains(struct alpine_msi= x_data *priv, struct device return -ENODEV; } =20 - gic_domain =3D irq_find_host(gic_node); + info.parent =3D irq_find_host(gic_node); of_node_put(gic_node); - if (!gic_domain) { + if (!info.parent) { pr_err("Failed to find the GIC domain\n"); return -ENXIO; } =20 - middle_domain =3D irq_domain_create_hierarchy(gic_domain, 0, 0, NULL, - &alpine_msix_middle_domain_ops, priv); - if (!middle_domain) { - pr_err("Failed to create the MSIX middle domain\n"); - return -ENOMEM; - } - - msi_domain =3D pci_msi_create_irq_domain(of_fwnode_handle(node), - &alpine_msix_domain_info, - middle_domain); - if (!msi_domain) { + if (!msi_create_parent_irq_domain(&info, &alpine_msi_parent_ops)) { pr_err("Failed to create MSI domain\n"); - irq_domain_remove(middle_domain); return -ENOMEM; } - return 0; } =20 --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D929F2FA64C; Thu, 26 Jun 2025 14:49:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949382; cv=none; b=WWBgouxhPBDmJqshfoPoXpN9iUGFiP7YilylhSmyY9S+pS61bzsCa0QxKdiIeW4T8NciWdHp9/DMid7MWvZkvmF2+WAQ4vyEjzYZcdW33uzvrE5Ds98BsJ2VqzP39VnjxgDOLD1QYvGacAzBhcMX5gTO7tnuXLVsq9QtPINrahc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949382; c=relaxed/simple; bh=9xXqq0SCQaMFFktlcV5I8nGAVPisuSnGVPUtO60bpbk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hVHUC4ds79l00shn455PQbjYjT//MFjXILk5AdsjS8wuo+4drKw2SE8hxNFOdxN/tX5pVT/zEyu0jijIbKdG0xvm8bPDsvTluquJNijw+fl9TDGVI5isGPIj2E/DnpVp3h+C3luSj3qwZQxmT3GFwVoMNGc4jUyIQbySepuoDAg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=0L9sJ+J0; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=sbfSD0BW; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="0L9sJ+J0"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="sbfSD0BW" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949379; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/srjJS8SpdA7rae21v1b2OCu0wY7FvRZqCovg9jsm+4=; b=0L9sJ+J0lGMHXi9sXXwJ6qVdupzww1GZ/fr8SasVb+ZcNdO1UiV303eM9JPEyD5GF+PGwn BXMJT6cl+FxmcwI4VhiSONWCOz0v2Y7IzOYSGlwhKdw/GliGm3UzFlyKnwKe1OW+tMsHHw RfI2PWuxS0CIWu2x6OIpoTCqrZMmsi1XdcQ+TSfRCRx4GhZQleagG6TIDmb8sV6LAwBjuG sprTujt2C50JqstWLsakWZZh2ZUUdZVSeAf7b+KR//LnVfluLpfXjnZh/4v2bYWXSE+eH3 hHMdfDRHdJj3nUPd5iRQ3X+ZGiUQczxjPZyprFi4YddPk5fNejsxrlo28b/kQQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949379; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/srjJS8SpdA7rae21v1b2OCu0wY7FvRZqCovg9jsm+4=; b=sbfSD0BWvrAgRhBcegRlcQqgCXdpvvHxqZy65JoSiK8oLqw2C8NkyA+pbt0BNkqMlkxEAj mct9Qnkaw/gXlwBQ== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Nam Cao Subject: [PATCH 11/12] irqchip/armada-370-xp: Switch to msi_create_parent_irq_domain() Date: Thu, 26 Jun 2025 16:49:08 +0200 Message-Id: <976892e3ce64fcf52387833abee08ddfa47d2a82.1750860131.git.namcao@linutronix.de> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move away from the legacy MSI domain setup, switch to use msi_create_parent_irq_domain(). Signed-off-by: Nam Cao --- Cc: Andrew Lunn Cc: Gregory Clement Cc: Sebastian Hesselbarth Cc: linux-arm-kernel@lists.infradead.org --- drivers/irqchip/Kconfig | 1 + drivers/irqchip/irq-armada-370-xp.c | 48 +++++++++++++++-------------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig index dbdb988e4f7e0..afd7bae30a788 100644 --- a/drivers/irqchip/Kconfig +++ b/drivers/irqchip/Kconfig @@ -79,6 +79,7 @@ config ARMADA_370_XP_IRQ bool select GENERIC_IRQ_CHIP select PCI_MSI if PCI + select IRQ_MSI_LIB if PCI select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP =20 config ALPINE_MSI diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-arma= da-370-xp.c index 67b672a788626..a44c49e985b75 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -156,7 +157,6 @@ * @parent_irq: parent IRQ if MPIC is not top-level interrupt controller * @domain: MPIC main interrupt domain * @ipi_domain: IPI domain - * @msi_domain: MSI domain * @msi_inner_domain: MSI inner domain * @msi_used: bitmap of used MSI numbers * @msi_lock: mutex serializing access to @msi_used @@ -176,7 +176,6 @@ struct mpic { struct irq_domain *ipi_domain; #endif #ifdef CONFIG_PCI_MSI - struct irq_domain *msi_domain; struct irq_domain *msi_inner_domain; DECLARE_BITMAP(msi_used, PCI_MSI_FULL_DOORBELL_NR); struct mutex msi_lock; @@ -234,18 +233,6 @@ static void mpic_irq_unmask(struct irq_data *d) =20 #ifdef CONFIG_PCI_MSI =20 -static struct irq_chip mpic_msi_irq_chip =3D { - .name =3D "MPIC MSI", - .irq_mask =3D pci_msi_mask_irq, - .irq_unmask =3D pci_msi_unmask_irq, -}; - -static struct msi_domain_info mpic_msi_domain_info =3D { - .flags =3D (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | - MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX), - .chip =3D &mpic_msi_irq_chip, -}; - static void mpic_compose_msi_msg(struct irq_data *d, struct msi_msg *msg) { unsigned int cpu =3D cpumask_first(irq_data_get_effective_affinity_mask(d= )); @@ -314,6 +301,7 @@ static void mpic_msi_free(struct irq_domain *domain, un= signed int virq, unsigned } =20 static const struct irq_domain_ops mpic_msi_domain_ops =3D { + .select =3D msi_lib_irq_domain_select, .alloc =3D mpic_msi_alloc, .free =3D mpic_msi_free, }; @@ -331,6 +319,21 @@ static void mpic_msi_reenable_percpu(struct mpic *mpic) writel(1, mpic->per_cpu + MPIC_INT_CLEAR_MASK); } =20 +#define MPIC_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \ + MSI_FLAG_USE_DEF_CHIP_OPS) +#define MPIC_MSI_FLAGS_SUPPORTED (MSI_FLAG_MULTI_PCI_MSI | \ + MSI_FLAG_PCI_MSIX | \ + MSI_GENERIC_FLAGS_MASK) + +static const struct msi_parent_ops mpic_msi_parent_ops =3D { + .required_flags =3D MPIC_MSI_FLAGS_REQUIRED, + .supported_flags =3D MPIC_MSI_FLAGS_SUPPORTED, + .bus_select_token =3D DOMAIN_BUS_NEXUS, + .bus_select_mask =3D MATCH_PCI_MSI, + .prefix =3D "MPIC-", + .init_dev_msi_info =3D msi_lib_init_dev_msi_info, +}; + static int __init mpic_msi_init(struct mpic *mpic, struct device_node *nod= e, phys_addr_t main_int_phys_base) { @@ -348,17 +351,16 @@ static int __init mpic_msi_init(struct mpic *mpic, st= ruct device_node *node, mpic->msi_doorbell_mask =3D PCI_MSI_FULL_DOORBELL_MASK; } =20 - mpic->msi_inner_domain =3D irq_domain_create_linear(NULL, mpic->msi_doorb= ell_size, - &mpic_msi_domain_ops, mpic); - if (!mpic->msi_inner_domain) - return -ENOMEM; + struct irq_domain_info info =3D { + .fwnode =3D of_fwnode_handle(node), + .ops =3D &mpic_msi_domain_ops, + .host_data =3D mpic, + .size =3D mpic->msi_doorbell_size, + }; =20 - mpic->msi_domain =3D pci_msi_create_irq_domain(of_fwnode_handle(node), &m= pic_msi_domain_info, - mpic->msi_inner_domain); - if (!mpic->msi_domain) { - irq_domain_remove(mpic->msi_inner_domain); + mpic->msi_inner_domain =3D msi_create_parent_irq_domain(&info, &mpic_msi_= parent_ops); + if (!mpic->msi_inner_domain) return -ENOMEM; - } =20 mpic_msi_reenable_percpu(mpic); =20 --=20 2.39.5 From nobody Wed Oct 8 14:52:40 2025 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79D702FBFE3; Thu, 26 Jun 2025 14:49:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949383; cv=none; b=kjRHXlLHK75O+xYNTnb47sRAoPkbyS6il96R0pSF6TxaX7RD2mghzJv/gkFYKyH1LeXrlL3JLTEEghfoqhDOuPM+tTQMv7aVWbEpMzdwg3Mlrw9biKsFSfOlX8t/fX9om5oK86wHxOd8o7yhosqX/dXsNZ8OWo9ngFUoVupxtdM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750949383; c=relaxed/simple; bh=dp2qjOL8O21ilGvN3hcyhYQWqyZCYJvTUAiWti124QY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=S12dwHdWmCsF88eOA1c6qy0few0RmEQupnvEgHP/3qd3nRhvpxzfvjB2i9yP1FVmYA1sSMAOPOmizuUx+1ZxYRBMI7tJEfCUMxC4AHwGEOCjHE6YXXMQ/wueVlvoiy2VBoBtuMNHzgFYWSUNPTNcsIytFXYXkDioWGuwIl0A58Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=RM5tpvvs; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=3g8rK+mp; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="RM5tpvvs"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="3g8rK+mp" From: Nam Cao DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1750949379; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MIhKQ4RQQi3D5IJg+JFkYdGIygyIoXiLyEsOtUGkCjs=; b=RM5tpvvs+MbLl9f7SQ4Y4ZdLiJ6gkF0qGYmpFYd1vgciUYEome+/nKuo3y8YNQqaRl9zlG vK1suWMloNhESxrs+IfhZ0Ir0uq+WbbIHtZTJ2H8ZkutgRI3Yum3zAczYWNoJ3VR71Mex6 fsgdiE+j3itHmBfek6RXeFNDcJE66HYbToqjerqVB4SG9GKNoyqLM6ubDDe3bIVCXzYX6C 4Ix6zqpNBaIWk0L9nYtIJstz4x+qM9MLqKMPz+0eqHFX2bnBPOr8e8oaetpxb9aab4Myd+ l22+2HQLy3/qGyN+ylhIfZaBxzJtN+2HcbXXw2XRaqbVdVinmwc752tr4tm6OQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1750949379; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MIhKQ4RQQi3D5IJg+JFkYdGIygyIoXiLyEsOtUGkCjs=; b=3g8rK+mpfrVGe4Vw+aUfM9tHYiyJfZRoezDvLVA2kq5SNuyB89vV0NChva4wdm0ota7ehM z4hy2jp1szfWSsCw== To: Marc Zyngier , Thomas Gleixner , Antoine Tenart , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Huacai Chen , Jiaxun Yang , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-mips@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Nam Cao Subject: [PATCH 12/12] irqchip/ls-scfg-msi: Switch to use msi_create_parent_irq_domain() Date: Thu, 26 Jun 2025 16:49:09 +0200 Message-Id: <6d23d93fa1f1e65526698f97c9888fa5d12abc7b.1750860131.git.namcao@linutronix.de> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move away from the legacy MSI domain setup, switch to use msi_create_parent_irq_domain(). Signed-off-by: Nam Cao --- drivers/irqchip/Kconfig | 1 + drivers/irqchip/irq-ls-scfg-msi.c | 49 ++++++++++++++----------------- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig index afd7bae30a788..f1aaf3a0fcdb0 100644 --- a/drivers/irqchip/Kconfig +++ b/drivers/irqchip/Kconfig @@ -436,6 +436,7 @@ config LS_SCFG_MSI def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE select IRQ_MSI_IOMMU depends on PCI_MSI + select IRQ_MSI_LIB =20 config PARTITION_PERCPU bool diff --git a/drivers/irqchip/irq-ls-scfg-msi.c b/drivers/irqchip/irq-ls-scf= g-msi.c index 84bc5e4b47cf5..7eca751d6548b 100644 --- a/drivers/irqchip/irq-ls-scfg-msi.c +++ b/drivers/irqchip/irq-ls-scfg-msi.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -47,7 +48,6 @@ struct ls_scfg_msi { spinlock_t lock; struct platform_device *pdev; struct irq_domain *parent; - struct irq_domain *msi_domain; void __iomem *regs; phys_addr_t msiir_addr; struct ls_scfg_msi_cfg *cfg; @@ -57,17 +57,18 @@ struct ls_scfg_msi { unsigned long *used; }; =20 -static struct irq_chip ls_scfg_msi_irq_chip =3D { - .name =3D "MSI", - .irq_mask =3D pci_msi_mask_irq, - .irq_unmask =3D pci_msi_unmask_irq, -}; - -static struct msi_domain_info ls_scfg_msi_domain_info =3D { - .flags =3D (MSI_FLAG_USE_DEF_DOM_OPS | - MSI_FLAG_USE_DEF_CHIP_OPS | - MSI_FLAG_PCI_MSIX), - .chip =3D &ls_scfg_msi_irq_chip, +#define MPIC_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \ + MSI_FLAG_USE_DEF_CHIP_OPS) +#define MPIC_MSI_FLAGS_SUPPORTED (MSI_FLAG_PCI_MSIX | \ + MSI_GENERIC_FLAGS_MASK) + +static const struct msi_parent_ops ls_scfg_msi_parent_ops =3D { + .required_flags =3D MPIC_MSI_FLAGS_REQUIRED, + .supported_flags =3D MPIC_MSI_FLAGS_SUPPORTED, + .bus_select_token =3D DOMAIN_BUS_NEXUS, + .bus_select_mask =3D MATCH_PCI_MSI, + .prefix =3D "MSI-", + .init_dev_msi_info =3D msi_lib_init_dev_msi_info, }; =20 static int msi_affinity_flag =3D 1; @@ -185,6 +186,7 @@ static void ls_scfg_msi_domain_irq_free(struct irq_doma= in *domain, } =20 static const struct irq_domain_ops ls_scfg_msi_domain_ops =3D { + .select =3D msi_lib_irq_domain_select, .alloc =3D ls_scfg_msi_domain_irq_alloc, .free =3D ls_scfg_msi_domain_irq_free, }; @@ -214,21 +216,15 @@ static void ls_scfg_msi_irq_handler(struct irq_desc *= desc) =20 static int ls_scfg_msi_domains_init(struct ls_scfg_msi *msi_data) { - /* Initialize MSI domain parent */ - msi_data->parent =3D irq_domain_create_linear(NULL, - msi_data->irqs_num, - &ls_scfg_msi_domain_ops, - msi_data); + struct irq_domain_info info =3D { + .fwnode =3D of_fwnode_handle(msi_data->pdev->dev.of_node), + .ops =3D &ls_scfg_msi_domain_ops, + .host_data =3D msi_data, + .size =3D msi_data->irqs_num, + }; + + msi_data->parent =3D msi_create_parent_irq_domain(&info, &ls_scfg_msi_par= ent_ops); if (!msi_data->parent) { - dev_err(&msi_data->pdev->dev, "failed to create IRQ domain\n"); - return -ENOMEM; - } - - msi_data->msi_domain =3D pci_msi_create_irq_domain( - of_fwnode_handle(msi_data->pdev->dev.of_node), - &ls_scfg_msi_domain_info, - msi_data->parent); - if (!msi_data->msi_domain) { dev_err(&msi_data->pdev->dev, "failed to create MSI domain\n"); irq_domain_remove(msi_data->parent); return -ENOMEM; @@ -405,7 +401,6 @@ static void ls_scfg_msi_remove(struct platform_device *= pdev) for (i =3D 0; i < msi_data->msir_num; i++) ls_scfg_msi_teardown_hwirq(&msi_data->msir[i]); =20 - irq_domain_remove(msi_data->msi_domain); irq_domain_remove(msi_data->parent); =20 platform_set_drvdata(pdev, NULL); --=20 2.39.5