[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <174672523272.406.13475096235281643458.tip-bot2@tip-bot2>
Date: Thu, 08 May 2025 17:27:12 -0000
From: "tip-bot2 for Frank Li" <tip-bot2@...utronix.de>
To: linux-tip-commits@...r.kernel.org
Cc: Frank Li <Frank.Li@....com>, Thomas Gleixner <tglx@...utronix.de>,
Marc Zyngier <maz@...nel.org>, x86@...nel.org, linux-kernel@...r.kernel.org
Subject: [tip: irq/msi] platform-msi: Add msi_remove_device_irq_domain() in
platform_device_msi_free_irqs_all()
The following commit has been merged into the irq/msi branch of tip:
Commit-ID: 9a958e1fd40d6fae8c66385687a00ebd9575a7d2
Gitweb: https://git.kernel.org/tip/9a958e1fd40d6fae8c66385687a00ebd9575a7d2
Author: Frank Li <Frank.Li@....com>
AuthorDate: Mon, 14 Apr 2025 14:30:55 -04:00
Committer: Thomas Gleixner <tglx@...utronix.de>
CommitterDate: Wed, 07 May 2025 17:49:00 +02:00
platform-msi: Add msi_remove_device_irq_domain() in platform_device_msi_free_irqs_all()
platform_device_msi_init_and_alloc_irqs() performs two tasks: allocating
the MSI domain for a platform device, and allocate a number of MSIs in that
domain.
platform_device_msi_free_irqs_all() only frees the MSIs, and leaves the MSI
domain alive.
Given that platform_device_msi_init_and_alloc_irqs() is the sole tool a
platform device has to allocate platform MSIs, it makes sense for
platform_device_msi_free_irqs_all() to teardown the MSI domain at the same
time as the MSIs.
This avoids warnings and unexpected behaviours when a driver repeatedly
allocates and frees MSIs.
Signed-off-by: Frank Li <Frank.Li@....com>
Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
Acked-by: Marc Zyngier <maz@...nel.org>
Link: https://lore.kernel.org/all/20250414-ep-msi-v18-1-f69b49917464@nxp.com
---
drivers/base/platform-msi.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/base/platform-msi.c b/drivers/base/platform-msi.c
index 0e60dd6..70db08f 100644
--- a/drivers/base/platform-msi.c
+++ b/drivers/base/platform-msi.c
@@ -95,5 +95,6 @@ EXPORT_SYMBOL_GPL(platform_device_msi_init_and_alloc_irqs);
void platform_device_msi_free_irqs_all(struct device *dev)
{
msi_domain_free_irqs_all(dev, MSI_DEFAULT_DOMAIN);
+ msi_remove_device_irq_domain(dev, MSI_DEFAULT_DOMAIN);
}
EXPORT_SYMBOL_GPL(platform_device_msi_free_irqs_all);
Powered by blists - more mailing lists