* [PATCH] PCI/MSI: Delete pci_msi_create_irq_domain()
@ 2025-07-21 6:36 Nam Cao
2025-10-08 10:24 ` Nam Cao
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Nam Cao @ 2025-07-21 6:36 UTC (permalink / raw)
To: Bjorn Helgaas, Thomas Gleixner, Marc Zyngier, linux-pci,
linux-kernel
Cc: Nam Cao
pci_msi_create_irq_domain() is unused. Delete it.
Signed-off-by: Nam Cao <namcao@linutronix.de>
---
This is the final step in converting to the new MSI interrupt domain setup:
deleting the old setup.
This patch depends on the driver conversion patches listed below. Most
patches have been applied somewhere, except for the first one.
https://lore.kernel.org/lkml/cover.1752868165.git.namcao@linutronix.de/
-> has not been applied anywhere
https://lore.kernel.org/lkml/cover.1750861319.git.namcao@linutronix.de/
-> applied to powerpc/next-test
https://lore.kernel.org/linux-um/cover.1751266049.git.namcao@linutronix.de/
-> applied to uml/next
https://lore.kernel.org/lkml/cover.1750858083.git.namcao@linutronix.de/
-> applied to pci/next
https://lore.kernel.org/lkml/cover.1751875853.git.namcao@linutronix.de/
-> applied to netdev/net-next
https://lore.kernel.org/lkml/cover.1750860131.git.namcao@linutronix.de/
-> applied to tip/irq/drivers
---
drivers/pci/msi/irqdomain.c | 90 -------------------------------------
include/linux/msi.h | 3 --
2 files changed, 93 deletions(-)
diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
index c05152733993..926a16e80192 100644
--- a/drivers/pci/msi/irqdomain.c
+++ b/drivers/pci/msi/irqdomain.c
@@ -49,96 +49,6 @@ static void pci_msi_domain_write_msg(struct irq_data *irq_data, struct msi_msg *
__pci_write_msi_msg(desc, msg);
}
-/**
- * pci_msi_domain_calc_hwirq - Generate a unique ID for an MSI source
- * @desc: Pointer to the MSI descriptor
- *
- * The ID number is only used within the irqdomain.
- */
-static irq_hw_number_t pci_msi_domain_calc_hwirq(struct msi_desc *desc)
-{
- struct pci_dev *dev = msi_desc_to_pci_dev(desc);
-
- return (irq_hw_number_t)desc->msi_index |
- pci_dev_id(dev) << 11 |
- ((irq_hw_number_t)(pci_domain_nr(dev->bus) & 0xFFFFFFFF)) << 27;
-}
-
-static void pci_msi_domain_set_desc(msi_alloc_info_t *arg,
- struct msi_desc *desc)
-{
- arg->desc = desc;
- arg->hwirq = pci_msi_domain_calc_hwirq(desc);
-}
-
-static struct msi_domain_ops pci_msi_domain_ops_default = {
- .set_desc = pci_msi_domain_set_desc,
-};
-
-static void pci_msi_domain_update_dom_ops(struct msi_domain_info *info)
-{
- struct msi_domain_ops *ops = info->ops;
-
- if (ops == NULL) {
- info->ops = &pci_msi_domain_ops_default;
- } else {
- if (ops->set_desc == NULL)
- ops->set_desc = pci_msi_domain_set_desc;
- }
-}
-
-static void pci_msi_domain_update_chip_ops(struct msi_domain_info *info)
-{
- struct irq_chip *chip = info->chip;
-
- BUG_ON(!chip);
- if (!chip->irq_write_msi_msg)
- chip->irq_write_msi_msg = pci_msi_domain_write_msg;
- if (!chip->irq_mask)
- chip->irq_mask = pci_msi_mask_irq;
- if (!chip->irq_unmask)
- chip->irq_unmask = pci_msi_unmask_irq;
-}
-
-/**
- * pci_msi_create_irq_domain - Create a MSI interrupt domain
- * @fwnode: Optional fwnode of the interrupt controller
- * @info: MSI domain info
- * @parent: Parent irq domain
- *
- * Updates the domain and chip ops and creates a MSI interrupt domain.
- *
- * Returns:
- * A domain pointer or NULL in case of failure.
- */
-struct irq_domain *pci_msi_create_irq_domain(struct fwnode_handle *fwnode,
- struct msi_domain_info *info,
- struct irq_domain *parent)
-{
- if (WARN_ON(info->flags & MSI_FLAG_LEVEL_CAPABLE))
- info->flags &= ~MSI_FLAG_LEVEL_CAPABLE;
-
- if (info->flags & MSI_FLAG_USE_DEF_DOM_OPS)
- pci_msi_domain_update_dom_ops(info);
- if (info->flags & MSI_FLAG_USE_DEF_CHIP_OPS)
- pci_msi_domain_update_chip_ops(info);
-
- /* Let the core code free MSI descriptors when freeing interrupts */
- info->flags |= MSI_FLAG_FREE_MSI_DESCS;
-
- info->flags |= MSI_FLAG_ACTIVATE_EARLY | MSI_FLAG_DEV_SYSFS;
- if (IS_ENABLED(CONFIG_GENERIC_IRQ_RESERVATION_MODE))
- info->flags |= MSI_FLAG_MUST_REACTIVATE;
-
- /* PCI-MSI is oneshot-safe */
- info->chip->flags |= IRQCHIP_ONESHOT_SAFE;
- /* Let the core update the bus token */
- info->bus_token = DOMAIN_BUS_PCI_MSI;
-
- return msi_create_irq_domain(fwnode, info, parent);
-}
-EXPORT_SYMBOL_GPL(pci_msi_create_irq_domain);
-
/*
* Per device MSI[-X] domain functionality
*/
diff --git a/include/linux/msi.h b/include/linux/msi.h
index 77227d23ea84..0c0e59af043c 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -703,9 +703,6 @@ void __pci_read_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
void __pci_write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
void pci_msi_mask_irq(struct irq_data *data);
void pci_msi_unmask_irq(struct irq_data *data);
-struct irq_domain *pci_msi_create_irq_domain(struct fwnode_handle *fwnode,
- struct msi_domain_info *info,
- struct irq_domain *parent);
u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev);
struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev);
#else /* CONFIG_PCI_MSI */
--
2.39.5
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] PCI/MSI: Delete pci_msi_create_irq_domain()
2025-07-21 6:36 [PATCH] PCI/MSI: Delete pci_msi_create_irq_domain() Nam Cao
@ 2025-10-08 10:24 ` Nam Cao
2025-10-08 20:20 ` Bjorn Helgaas
2025-10-16 19:13 ` [tip: irq/msi] " tip-bot2 for Nam Cao
2 siblings, 0 replies; 4+ messages in thread
From: Nam Cao @ 2025-10-08 10:24 UTC (permalink / raw)
To: Bjorn Helgaas, Thomas Gleixner, Marc Zyngier, linux-pci,
linux-kernel
Hi Thomas,
Nam Cao <namcao@linutronix.de> writes:
> pci_msi_create_irq_domain() is unused. Delete it.
>
> Signed-off-by: Nam Cao <namcao@linutronix.de>
> ---
> This is the final step in converting to the new MSI interrupt domain setup:
> deleting the old setup.
The last dependencies (powerpc & hyperv) have been merged to 6.18. This
patch can now go in.
Nam
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] PCI/MSI: Delete pci_msi_create_irq_domain()
2025-07-21 6:36 [PATCH] PCI/MSI: Delete pci_msi_create_irq_domain() Nam Cao
2025-10-08 10:24 ` Nam Cao
@ 2025-10-08 20:20 ` Bjorn Helgaas
2025-10-16 19:13 ` [tip: irq/msi] " tip-bot2 for Nam Cao
2 siblings, 0 replies; 4+ messages in thread
From: Bjorn Helgaas @ 2025-10-08 20:20 UTC (permalink / raw)
To: Nam Cao
Cc: Bjorn Helgaas, Thomas Gleixner, Marc Zyngier, linux-pci,
linux-kernel
On Mon, Jul 21, 2025 at 08:36:26AM +0200, Nam Cao wrote:
> pci_msi_create_irq_domain() is unused. Delete it.
>
> Signed-off-by: Nam Cao <namcao@linutronix.de>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
I verified that pci_msi_create_irq_domain() no longer referenced in
current upstream: cd5a0afbdf80 ("Merge tag 'mailbox-v6.18' of
git://git.kernel.org/pub/scm/linux/kernel/git/jassibrar/mailbox")
Thomas, you've merged most irqdomain.c changes; let me know if you
want me to do anything.
> ---
> This is the final step in converting to the new MSI interrupt domain setup:
> deleting the old setup.
>
> This patch depends on the driver conversion patches listed below. Most
> patches have been applied somewhere, except for the first one.
>
> https://lore.kernel.org/lkml/cover.1752868165.git.namcao@linutronix.de/
> -> has not been applied anywhere
>
> https://lore.kernel.org/lkml/cover.1750861319.git.namcao@linutronix.de/
> -> applied to powerpc/next-test
>
> https://lore.kernel.org/linux-um/cover.1751266049.git.namcao@linutronix.de/
> -> applied to uml/next
>
> https://lore.kernel.org/lkml/cover.1750858083.git.namcao@linutronix.de/
> -> applied to pci/next
>
> https://lore.kernel.org/lkml/cover.1751875853.git.namcao@linutronix.de/
> -> applied to netdev/net-next
>
> https://lore.kernel.org/lkml/cover.1750860131.git.namcao@linutronix.de/
> -> applied to tip/irq/drivers
> ---
> drivers/pci/msi/irqdomain.c | 90 -------------------------------------
> include/linux/msi.h | 3 --
> 2 files changed, 93 deletions(-)
>
> diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
> index c05152733993..926a16e80192 100644
> --- a/drivers/pci/msi/irqdomain.c
> +++ b/drivers/pci/msi/irqdomain.c
> @@ -49,96 +49,6 @@ static void pci_msi_domain_write_msg(struct irq_data *irq_data, struct msi_msg *
> __pci_write_msi_msg(desc, msg);
> }
>
> -/**
> - * pci_msi_domain_calc_hwirq - Generate a unique ID for an MSI source
> - * @desc: Pointer to the MSI descriptor
> - *
> - * The ID number is only used within the irqdomain.
> - */
> -static irq_hw_number_t pci_msi_domain_calc_hwirq(struct msi_desc *desc)
> -{
> - struct pci_dev *dev = msi_desc_to_pci_dev(desc);
> -
> - return (irq_hw_number_t)desc->msi_index |
> - pci_dev_id(dev) << 11 |
> - ((irq_hw_number_t)(pci_domain_nr(dev->bus) & 0xFFFFFFFF)) << 27;
> -}
> -
> -static void pci_msi_domain_set_desc(msi_alloc_info_t *arg,
> - struct msi_desc *desc)
> -{
> - arg->desc = desc;
> - arg->hwirq = pci_msi_domain_calc_hwirq(desc);
> -}
> -
> -static struct msi_domain_ops pci_msi_domain_ops_default = {
> - .set_desc = pci_msi_domain_set_desc,
> -};
> -
> -static void pci_msi_domain_update_dom_ops(struct msi_domain_info *info)
> -{
> - struct msi_domain_ops *ops = info->ops;
> -
> - if (ops == NULL) {
> - info->ops = &pci_msi_domain_ops_default;
> - } else {
> - if (ops->set_desc == NULL)
> - ops->set_desc = pci_msi_domain_set_desc;
> - }
> -}
> -
> -static void pci_msi_domain_update_chip_ops(struct msi_domain_info *info)
> -{
> - struct irq_chip *chip = info->chip;
> -
> - BUG_ON(!chip);
> - if (!chip->irq_write_msi_msg)
> - chip->irq_write_msi_msg = pci_msi_domain_write_msg;
> - if (!chip->irq_mask)
> - chip->irq_mask = pci_msi_mask_irq;
> - if (!chip->irq_unmask)
> - chip->irq_unmask = pci_msi_unmask_irq;
> -}
> -
> -/**
> - * pci_msi_create_irq_domain - Create a MSI interrupt domain
> - * @fwnode: Optional fwnode of the interrupt controller
> - * @info: MSI domain info
> - * @parent: Parent irq domain
> - *
> - * Updates the domain and chip ops and creates a MSI interrupt domain.
> - *
> - * Returns:
> - * A domain pointer or NULL in case of failure.
> - */
> -struct irq_domain *pci_msi_create_irq_domain(struct fwnode_handle *fwnode,
> - struct msi_domain_info *info,
> - struct irq_domain *parent)
> -{
> - if (WARN_ON(info->flags & MSI_FLAG_LEVEL_CAPABLE))
> - info->flags &= ~MSI_FLAG_LEVEL_CAPABLE;
> -
> - if (info->flags & MSI_FLAG_USE_DEF_DOM_OPS)
> - pci_msi_domain_update_dom_ops(info);
> - if (info->flags & MSI_FLAG_USE_DEF_CHIP_OPS)
> - pci_msi_domain_update_chip_ops(info);
> -
> - /* Let the core code free MSI descriptors when freeing interrupts */
> - info->flags |= MSI_FLAG_FREE_MSI_DESCS;
> -
> - info->flags |= MSI_FLAG_ACTIVATE_EARLY | MSI_FLAG_DEV_SYSFS;
> - if (IS_ENABLED(CONFIG_GENERIC_IRQ_RESERVATION_MODE))
> - info->flags |= MSI_FLAG_MUST_REACTIVATE;
> -
> - /* PCI-MSI is oneshot-safe */
> - info->chip->flags |= IRQCHIP_ONESHOT_SAFE;
> - /* Let the core update the bus token */
> - info->bus_token = DOMAIN_BUS_PCI_MSI;
> -
> - return msi_create_irq_domain(fwnode, info, parent);
> -}
> -EXPORT_SYMBOL_GPL(pci_msi_create_irq_domain);
> -
> /*
> * Per device MSI[-X] domain functionality
> */
> diff --git a/include/linux/msi.h b/include/linux/msi.h
> index 77227d23ea84..0c0e59af043c 100644
> --- a/include/linux/msi.h
> +++ b/include/linux/msi.h
> @@ -703,9 +703,6 @@ void __pci_read_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
> void __pci_write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
> void pci_msi_mask_irq(struct irq_data *data);
> void pci_msi_unmask_irq(struct irq_data *data);
> -struct irq_domain *pci_msi_create_irq_domain(struct fwnode_handle *fwnode,
> - struct msi_domain_info *info,
> - struct irq_domain *parent);
> u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev);
> struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev);
> #else /* CONFIG_PCI_MSI */
> --
> 2.39.5
>
^ permalink raw reply [flat|nested] 4+ messages in thread* [tip: irq/msi] PCI/MSI: Delete pci_msi_create_irq_domain()
2025-07-21 6:36 [PATCH] PCI/MSI: Delete pci_msi_create_irq_domain() Nam Cao
2025-10-08 10:24 ` Nam Cao
2025-10-08 20:20 ` Bjorn Helgaas
@ 2025-10-16 19:13 ` tip-bot2 for Nam Cao
2 siblings, 0 replies; 4+ messages in thread
From: tip-bot2 for Nam Cao @ 2025-10-16 19:13 UTC (permalink / raw)
To: linux-tip-commits
Cc: Nam Cao, Thomas Gleixner, Bjorn Helgaas, x86, linux-kernel
The following commit has been merged into the irq/msi branch of tip:
Commit-ID: dce745009349fc391271c9415d5e242781ddadd7
Gitweb: https://git.kernel.org/tip/dce745009349fc391271c9415d5e242781ddadd7
Author: Nam Cao <namcao@linutronix.de>
AuthorDate: Mon, 21 Jul 2025 08:36:26 +02:00
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Thu, 16 Oct 2025 21:09:52 +02:00
PCI/MSI: Delete pci_msi_create_irq_domain()
pci_msi_create_irq_domain() is now unused. Delete it.
Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
---
drivers/pci/msi/irqdomain.c | 90 +------------------------------------
include/linux/msi.h | 3 +-
2 files changed, 93 deletions(-)
diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
index ce741ed..a329060 100644
--- a/drivers/pci/msi/irqdomain.c
+++ b/drivers/pci/msi/irqdomain.c
@@ -49,96 +49,6 @@ static void pci_msi_domain_write_msg(struct irq_data *irq_data, struct msi_msg *
__pci_write_msi_msg(desc, msg);
}
-/**
- * pci_msi_domain_calc_hwirq - Generate a unique ID for an MSI source
- * @desc: Pointer to the MSI descriptor
- *
- * The ID number is only used within the irqdomain.
- */
-static irq_hw_number_t pci_msi_domain_calc_hwirq(struct msi_desc *desc)
-{
- struct pci_dev *dev = msi_desc_to_pci_dev(desc);
-
- return (irq_hw_number_t)desc->msi_index |
- pci_dev_id(dev) << 11 |
- ((irq_hw_number_t)(pci_domain_nr(dev->bus) & 0xFFFFFFFF)) << 27;
-}
-
-static void pci_msi_domain_set_desc(msi_alloc_info_t *arg,
- struct msi_desc *desc)
-{
- arg->desc = desc;
- arg->hwirq = pci_msi_domain_calc_hwirq(desc);
-}
-
-static struct msi_domain_ops pci_msi_domain_ops_default = {
- .set_desc = pci_msi_domain_set_desc,
-};
-
-static void pci_msi_domain_update_dom_ops(struct msi_domain_info *info)
-{
- struct msi_domain_ops *ops = info->ops;
-
- if (ops == NULL) {
- info->ops = &pci_msi_domain_ops_default;
- } else {
- if (ops->set_desc == NULL)
- ops->set_desc = pci_msi_domain_set_desc;
- }
-}
-
-static void pci_msi_domain_update_chip_ops(struct msi_domain_info *info)
-{
- struct irq_chip *chip = info->chip;
-
- BUG_ON(!chip);
- if (!chip->irq_write_msi_msg)
- chip->irq_write_msi_msg = pci_msi_domain_write_msg;
- if (!chip->irq_mask)
- chip->irq_mask = pci_msi_mask_irq;
- if (!chip->irq_unmask)
- chip->irq_unmask = pci_msi_unmask_irq;
-}
-
-/**
- * pci_msi_create_irq_domain - Create a MSI interrupt domain
- * @fwnode: Optional fwnode of the interrupt controller
- * @info: MSI domain info
- * @parent: Parent irq domain
- *
- * Updates the domain and chip ops and creates a MSI interrupt domain.
- *
- * Returns:
- * A domain pointer or NULL in case of failure.
- */
-struct irq_domain *pci_msi_create_irq_domain(struct fwnode_handle *fwnode,
- struct msi_domain_info *info,
- struct irq_domain *parent)
-{
- if (WARN_ON(info->flags & MSI_FLAG_LEVEL_CAPABLE))
- info->flags &= ~MSI_FLAG_LEVEL_CAPABLE;
-
- if (info->flags & MSI_FLAG_USE_DEF_DOM_OPS)
- pci_msi_domain_update_dom_ops(info);
- if (info->flags & MSI_FLAG_USE_DEF_CHIP_OPS)
- pci_msi_domain_update_chip_ops(info);
-
- /* Let the core code free MSI descriptors when freeing interrupts */
- info->flags |= MSI_FLAG_FREE_MSI_DESCS;
-
- info->flags |= MSI_FLAG_ACTIVATE_EARLY | MSI_FLAG_DEV_SYSFS;
- if (IS_ENABLED(CONFIG_GENERIC_IRQ_RESERVATION_MODE))
- info->flags |= MSI_FLAG_MUST_REACTIVATE;
-
- /* PCI-MSI is oneshot-safe */
- info->chip->flags |= IRQCHIP_ONESHOT_SAFE;
- /* Let the core update the bus token */
- info->bus_token = DOMAIN_BUS_PCI_MSI;
-
- return msi_create_irq_domain(fwnode, info, parent);
-}
-EXPORT_SYMBOL_GPL(pci_msi_create_irq_domain);
-
/*
* Per device MSI[-X] domain functionality
*/
diff --git a/include/linux/msi.h b/include/linux/msi.h
index d415dd1..8003e32 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -701,9 +701,6 @@ void __pci_read_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
void __pci_write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
void pci_msi_mask_irq(struct irq_data *data);
void pci_msi_unmask_irq(struct irq_data *data);
-struct irq_domain *pci_msi_create_irq_domain(struct fwnode_handle *fwnode,
- struct msi_domain_info *info,
- struct irq_domain *parent);
u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev);
u32 pci_msi_map_rid_ctlr_node(struct pci_dev *pdev, struct device_node **node);
struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev);
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-10-16 19:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-21 6:36 [PATCH] PCI/MSI: Delete pci_msi_create_irq_domain() Nam Cao
2025-10-08 10:24 ` Nam Cao
2025-10-08 20:20 ` Bjorn Helgaas
2025-10-16 19:13 ` [tip: irq/msi] " tip-bot2 for Nam Cao
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.