2024-04-10 22:13:30

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH v2 0/7] PCI/MSI: Remove IMS (Interrupt Message Store) support for now

From: Bjorn Helgaas <[email protected]>

IMS (Interrupt Message Store) support appeared in v6.2, but there are no
users yet.

Remove it for now. We can add it back when a user comes along.

I propose to merge this via the PCI tree unless somebody else wants it.


Changes since v1 (https://lore.kernel.org/linux-pci/[email protected]/):
- Revert other IMS commits in IOMMU, apic, genirq, suggested by Kevin

Bjorn Helgaas (7):
Revert "PCI/MSI: Provide stubs for IMS functions"
Revert "PCI/MSI: Provide pci_ims_alloc/free_irq()"
Revert "PCI/MSI: Provide IMS (Interrupt Message Store) support"
Revert "iommu/amd: Enable PCI/IMS"
Revert "iommu/vt-d: Enable PCI/IMS"
Revert "x86/apic/msi: Enable PCI/IMS"
Revert "genirq/msi: Provide constants for PCI/IMS support"

arch/x86/kernel/apic/msi.c | 5 ---
drivers/iommu/amd/iommu.c | 17 +--------
drivers/iommu/intel/irq_remapping.c | 19 ++--------
drivers/pci/msi/api.c | 50 ------------------------
drivers/pci/msi/irqdomain.c | 59 -----------------------------
include/linux/irqdomain_defs.h | 1 -
include/linux/msi.h | 2 -
include/linux/msi_api.h | 1 -
include/linux/pci.h | 26 -------------
9 files changed, 5 insertions(+), 175 deletions(-)

--
2.34.1



2024-04-10 22:13:43

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH v2 1/7] Revert "PCI/MSI: Provide stubs for IMS functions"

From: Bjorn Helgaas <[email protected]>

This reverts commit 41efa431244f6498833ff8ee8dde28c4924c5479.

IMS (Interrupt Message Store) support appeared in v6.2, but there are no
users yet.

Remove it for now. We can add it back when a user comes along. If this is
re-added later, this could be squashed with these commits:

0194425af0c8 ("PCI/MSI: Provide IMS (Interrupt Message Store) support")
c9e5bea27383 ("PCI/MSI: Provide pci_ims_alloc/free_irq()")

which added the non-stub implementations.

Signed-off-by: Bjorn Helgaas <[email protected]>
Reviewed-by: Kevin Tian <[email protected]>
---
include/linux/pci.h | 34 ++++++++--------------------------
1 file changed, 8 insertions(+), 26 deletions(-)

diff --git a/include/linux/pci.h b/include/linux/pci.h
index 16493426a04f..abbef75b2b92 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1658,8 +1658,6 @@ struct msix_entry {
u16 entry; /* Driver uses to specify entry, OS writes */
};

-struct msi_domain_template;
-
#ifdef CONFIG_PCI_MSI
int pci_msi_vec_count(struct pci_dev *dev);
void pci_disable_msi(struct pci_dev *dev);
@@ -1692,11 +1690,6 @@ void pci_msix_free_irq(struct pci_dev *pdev, struct msi_map map);
void pci_free_irq_vectors(struct pci_dev *dev);
int pci_irq_vector(struct pci_dev *dev, unsigned int nr);
const struct cpumask *pci_irq_get_affinity(struct pci_dev *pdev, int vec);
-bool pci_create_ims_domain(struct pci_dev *pdev, const struct msi_domain_template *template,
- unsigned int hwsize, void *data);
-struct msi_map pci_ims_alloc_irq(struct pci_dev *pdev, union msi_instance_cookie *icookie,
- const struct irq_affinity_desc *affdesc);
-void pci_ims_free_irq(struct pci_dev *pdev, struct msi_map map);

#else
static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; }
@@ -1760,25 +1753,6 @@ static inline const struct cpumask *pci_irq_get_affinity(struct pci_dev *pdev,
{
return cpu_possible_mask;
}
-
-static inline bool pci_create_ims_domain(struct pci_dev *pdev,
- const struct msi_domain_template *template,
- unsigned int hwsize, void *data)
-{ return false; }
-
-static inline struct msi_map pci_ims_alloc_irq(struct pci_dev *pdev,
- union msi_instance_cookie *icookie,
- const struct irq_affinity_desc *affdesc)
-{
- struct msi_map map = { .index = -ENOSYS, };
-
- return map;
-}
-
-static inline void pci_ims_free_irq(struct pci_dev *pdev, struct msi_map map)
-{
-}
-
#endif

/**
@@ -2690,6 +2664,14 @@ static inline bool pci_is_thunderbolt_attached(struct pci_dev *pdev)
void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type);
#endif

+struct msi_domain_template;
+
+bool pci_create_ims_domain(struct pci_dev *pdev, const struct msi_domain_template *template,
+ unsigned int hwsize, void *data);
+struct msi_map pci_ims_alloc_irq(struct pci_dev *pdev, union msi_instance_cookie *icookie,
+ const struct irq_affinity_desc *affdesc);
+void pci_ims_free_irq(struct pci_dev *pdev, struct msi_map map);
+
#include <linux/dma-mapping.h>

#define pci_printk(level, pdev, fmt, arg...) \
--
2.34.1


2024-04-10 22:13:57

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH v2 2/7] Revert "PCI/MSI: Provide pci_ims_alloc/free_irq()"

From: Bjorn Helgaas <[email protected]>

This reverts commit c9e5bea273834a63b5e9ba90ad94b305ba50704e.

IMS (Interrupt Message Store) support appeared in v6.2, but there are no
users yet.

Remove it for now. We can add it back when a user comes along. If this is
re-added later, the relevant part of 41efa431244f ("PCI/MSI: Provide stubs
for IMS functions") should be squashed into it.

Signed-off-by: Bjorn Helgaas <[email protected]>
Reviewed-by: Kevin Tian <[email protected]>
---
drivers/pci/msi/api.c | 50 -------------------------------------------
include/linux/pci.h | 3 ---
2 files changed, 53 deletions(-)

diff --git a/drivers/pci/msi/api.c b/drivers/pci/msi/api.c
index be679aa5db64..3c1cd29c5cf2 100644
--- a/drivers/pci/msi/api.c
+++ b/drivers/pci/msi/api.c
@@ -365,56 +365,6 @@ const struct cpumask *pci_irq_get_affinity(struct pci_dev *dev, int nr)
}
EXPORT_SYMBOL(pci_irq_get_affinity);

-/**
- * pci_ims_alloc_irq - Allocate an interrupt on a PCI/IMS interrupt domain
- * @dev: The PCI device to operate on
- * @icookie: Pointer to an IMS implementation specific cookie for this
- * IMS instance (PASID, queue ID, pointer...).
- * The cookie content is copied into the MSI descriptor for the
- * interrupt chip callbacks or domain specific setup functions.
- * @affdesc: Optional pointer to an interrupt affinity descriptor
- *
- * There is no index for IMS allocations as IMS is an implementation
- * specific storage and does not have any direct associations between
- * index, which might be a pure software construct, and device
- * functionality. This association is established by the driver either via
- * the index - if there is a hardware table - or in case of purely software
- * managed IMS implementation the association happens via the
- * irq_write_msi_msg() callback of the implementation specific interrupt
- * chip, which utilizes the provided @icookie to store the MSI message in
- * the appropriate place.
- *
- * Return: A struct msi_map
- *
- * On success msi_map::index contains the allocated index (>= 0) and
- * msi_map::virq the allocated Linux interrupt number (> 0).
- *
- * On fail msi_map::index contains the error code and msi_map::virq
- * is set to 0.
- */
-struct msi_map pci_ims_alloc_irq(struct pci_dev *dev, union msi_instance_cookie *icookie,
- const struct irq_affinity_desc *affdesc)
-{
- return msi_domain_alloc_irq_at(&dev->dev, MSI_SECONDARY_DOMAIN, MSI_ANY_INDEX,
- affdesc, icookie);
-}
-EXPORT_SYMBOL_GPL(pci_ims_alloc_irq);
-
-/**
- * pci_ims_free_irq - Allocate an interrupt on a PCI/IMS interrupt domain
- * which was allocated via pci_ims_alloc_irq()
- * @dev: The PCI device to operate on
- * @map: A struct msi_map describing the interrupt to free as
- * returned from pci_ims_alloc_irq()
- */
-void pci_ims_free_irq(struct pci_dev *dev, struct msi_map map)
-{
- if (WARN_ON_ONCE(map.index < 0 || map.virq <= 0))
- return;
- msi_domain_free_irqs_range(&dev->dev, MSI_SECONDARY_DOMAIN, map.index, map.index);
-}
-EXPORT_SYMBOL_GPL(pci_ims_free_irq);
-
/**
* pci_free_irq_vectors() - Free previously allocated IRQs for a device
* @dev: the PCI device to operate on
diff --git a/include/linux/pci.h b/include/linux/pci.h
index abbef75b2b92..3deb3e42d990 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -2668,9 +2668,6 @@ struct msi_domain_template;

bool pci_create_ims_domain(struct pci_dev *pdev, const struct msi_domain_template *template,
unsigned int hwsize, void *data);
-struct msi_map pci_ims_alloc_irq(struct pci_dev *pdev, union msi_instance_cookie *icookie,
- const struct irq_affinity_desc *affdesc);
-void pci_ims_free_irq(struct pci_dev *pdev, struct msi_map map);

#include <linux/dma-mapping.h>

--
2.34.1


2024-04-10 22:14:31

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH v2 4/7] Revert "iommu/amd: Enable PCI/IMS"

From: Bjorn Helgaas <[email protected]>

This reverts commit fa5745aca1dc819aee6463a2475b5c277f7cf8f6.

IMS (Interrupt Message Store) support appeared in v6.2, but there are no
users yet.

Remove it for now. We can add it back when a user comes along.

Signed-off-by: Bjorn Helgaas <[email protected]>
---
drivers/iommu/amd/iommu.c | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)

diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
index d35c1b8c8e65..31a1a6686329 100644
--- a/drivers/iommu/amd/iommu.c
+++ b/drivers/iommu/amd/iommu.c
@@ -3701,20 +3701,11 @@ static struct irq_chip amd_ir_chip = {
};

static const struct msi_parent_ops amdvi_msi_parent_ops = {
- .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED |
- MSI_FLAG_MULTI_PCI_MSI |
- MSI_FLAG_PCI_IMS,
+ .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED | MSI_FLAG_MULTI_PCI_MSI,
.prefix = "IR-",
.init_dev_msi_info = msi_parent_init_dev_msi_info,
};

-static const struct msi_parent_ops virt_amdvi_msi_parent_ops = {
- .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED |
- MSI_FLAG_MULTI_PCI_MSI,
- .prefix = "vIR-",
- .init_dev_msi_info = msi_parent_init_dev_msi_info,
-};
-
int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
{
struct fwnode_handle *fn;
@@ -3732,11 +3723,7 @@ int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
irq_domain_update_bus_token(iommu->ir_domain, DOMAIN_BUS_AMDVI);
iommu->ir_domain->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT |
IRQ_DOMAIN_FLAG_ISOLATED_MSI;
-
- if (amd_iommu_np_cache)
- iommu->ir_domain->msi_parent_ops = &virt_amdvi_msi_parent_ops;
- else
- iommu->ir_domain->msi_parent_ops = &amdvi_msi_parent_ops;
+ iommu->ir_domain->msi_parent_ops = &amdvi_msi_parent_ops;

return 0;
}
--
2.34.1


2024-04-10 22:14:33

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH v2 3/7] Revert "PCI/MSI: Provide IMS (Interrupt Message Store) support"

From: Bjorn Helgaas <[email protected]>

This reverts commit 0194425af0c87acaad457989a2c6d90dba58e776.

IMS (Interrupt Message Store) support appeared in v6.2, but there are no
users yet.

Remove it for now. We can add it back when a user comes along. If this is
re-added later, the relevant part of 41efa431244f ("PCI/MSI: Provide stubs
for IMS functions") should be squashed into it.

Signed-off-by: Bjorn Helgaas <[email protected]>
Reviewed-by: Kevin Tian <[email protected]>
---
drivers/pci/msi/irqdomain.c | 59 -------------------------------------
include/linux/pci.h | 5 ----
2 files changed, 64 deletions(-)

diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
index cfd84a899c82..03d2dd25790d 100644
--- a/drivers/pci/msi/irqdomain.c
+++ b/drivers/pci/msi/irqdomain.c
@@ -355,65 +355,6 @@ bool pci_msi_domain_supports(struct pci_dev *pdev, unsigned int feature_mask,
return (supported & feature_mask) == feature_mask;
}

-/**
- * pci_create_ims_domain - Create a secondary IMS domain for a PCI device
- * @pdev: The PCI device to operate on
- * @template: The MSI info template which describes the domain
- * @hwsize: The size of the hardware entry table or 0 if the domain
- * is purely software managed
- * @data: Optional pointer to domain specific data to be stored
- * in msi_domain_info::data
- *
- * Return: True on success, false otherwise
- *
- * An IMS domain is expected to have the following constraints:
- * - The index space is managed by the core code
- *
- * - There is no requirement for consecutive index ranges
- *
- * - The interrupt chip must provide the following callbacks:
- * - irq_mask()
- * - irq_unmask()
- * - irq_write_msi_msg()
- *
- * - The interrupt chip must provide the following optional callbacks
- * when the irq_mask(), irq_unmask() and irq_write_msi_msg() callbacks
- * cannot operate directly on hardware, e.g. in the case that the
- * interrupt message store is in queue memory:
- * - irq_bus_lock()
- * - irq_bus_unlock()
- *
- * These callbacks are invoked from preemptible task context and are
- * allowed to sleep. In this case the mandatory callbacks above just
- * store the information. The irq_bus_unlock() callback is supposed
- * to make the change effective before returning.
- *
- * - Interrupt affinity setting is handled by the underlying parent
- * interrupt domain and communicated to the IMS domain via
- * irq_write_msi_msg().
- *
- * The domain is automatically destroyed when the PCI device is removed.
- */
-bool pci_create_ims_domain(struct pci_dev *pdev, const struct msi_domain_template *template,
- unsigned int hwsize, void *data)
-{
- struct irq_domain *domain = dev_get_msi_domain(&pdev->dev);
-
- if (!domain || !irq_domain_is_msi_parent(domain))
- return false;
-
- if (template->info.bus_token != DOMAIN_BUS_PCI_DEVICE_IMS ||
- !(template->info.flags & MSI_FLAG_ALLOC_SIMPLE_MSI_DESCS) ||
- !(template->info.flags & MSI_FLAG_FREE_MSI_DESCS) ||
- !template->chip.irq_mask || !template->chip.irq_unmask ||
- !template->chip.irq_write_msi_msg || template->chip.irq_set_affinity)
- return false;
-
- return msi_create_device_irq_domain(&pdev->dev, MSI_SECONDARY_DOMAIN, template,
- hwsize, data, NULL);
-}
-EXPORT_SYMBOL_GPL(pci_create_ims_domain);
-
/*
* Users of the generic MSI infrastructure expect a device to have a single ID,
* so with DMA aliases we have to pick the least-worst compromise. Devices with
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 3deb3e42d990..98fb20bcd054 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -2664,11 +2664,6 @@ static inline bool pci_is_thunderbolt_attached(struct pci_dev *pdev)
void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type);
#endif

-struct msi_domain_template;
-
-bool pci_create_ims_domain(struct pci_dev *pdev, const struct msi_domain_template *template,
- unsigned int hwsize, void *data);
-
#include <linux/dma-mapping.h>

#define pci_printk(level, pdev, fmt, arg...) \
--
2.34.1


2024-04-10 22:14:43

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH v2 5/7] Revert "iommu/vt-d: Enable PCI/IMS"

From: Bjorn Helgaas <[email protected]>

This reverts commit 810531a1af5393f010d6508b1cb48e6650fc5e8f.

IMS (Interrupt Message Store) support appeared in v6.2, but there are no
users yet.

Remove it for now. We can add it back when a user comes along.

Signed-off-by: Bjorn Helgaas <[email protected]>
---
drivers/iommu/intel/irq_remapping.c | 19 +++----------------
1 file changed, 3 insertions(+), 16 deletions(-)

diff --git a/drivers/iommu/intel/irq_remapping.c b/drivers/iommu/intel/irq_remapping.c
index 566297bc87dd..0f64fa72ac4f 100644
--- a/drivers/iommu/intel/irq_remapping.c
+++ b/drivers/iommu/intel/irq_remapping.c
@@ -82,7 +82,7 @@ static const struct irq_domain_ops intel_ir_domain_ops;

static void iommu_disable_irq_remapping(struct intel_iommu *iommu);
static int __init parse_ioapics_under_ir(void);
-static const struct msi_parent_ops dmar_msi_parent_ops, virt_dmar_msi_parent_ops;
+static const struct msi_parent_ops dmar_msi_parent_ops;

static bool ir_pre_enabled(struct intel_iommu *iommu)
{
@@ -567,11 +567,7 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu)
irq_domain_update_bus_token(iommu->ir_domain, DOMAIN_BUS_DMAR);
iommu->ir_domain->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT |
IRQ_DOMAIN_FLAG_ISOLATED_MSI;
-
- if (cap_caching_mode(iommu->cap))
- iommu->ir_domain->msi_parent_ops = &virt_dmar_msi_parent_ops;
- else
- iommu->ir_domain->msi_parent_ops = &dmar_msi_parent_ops;
+ iommu->ir_domain->msi_parent_ops = &dmar_msi_parent_ops;

ir_table->base = page_address(pages);
ir_table->bitmap = bitmap;
@@ -1421,20 +1417,11 @@ static const struct irq_domain_ops intel_ir_domain_ops = {
};

static const struct msi_parent_ops dmar_msi_parent_ops = {
- .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED |
- MSI_FLAG_MULTI_PCI_MSI |
- MSI_FLAG_PCI_IMS,
+ .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED | MSI_FLAG_MULTI_PCI_MSI,
.prefix = "IR-",
.init_dev_msi_info = msi_parent_init_dev_msi_info,
};

-static const struct msi_parent_ops virt_dmar_msi_parent_ops = {
- .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED |
- MSI_FLAG_MULTI_PCI_MSI,
- .prefix = "vIR-",
- .init_dev_msi_info = msi_parent_init_dev_msi_info,
-};
-
/*
* Support of Interrupt Remapping Unit Hotplug
*/
--
2.34.1


2024-04-10 22:15:03

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH v2 6/7] Revert "x86/apic/msi: Enable PCI/IMS"

From: Bjorn Helgaas <[email protected]>

This reverts commit 6e24c887732901140f4e82ba2315c2e15f06f1d6.

IMS (Interrupt Message Store) support appeared in v6.2, but there are no
users yet.

Remove it for now. We can add it back when a user comes along.

Signed-off-by: Bjorn Helgaas <[email protected]>
---
arch/x86/kernel/apic/msi.c | 5 -----
1 file changed, 5 deletions(-)

diff --git a/arch/x86/kernel/apic/msi.c b/arch/x86/kernel/apic/msi.c
index d9651f15ae4f..340769242dea 100644
--- a/arch/x86/kernel/apic/msi.c
+++ b/arch/x86/kernel/apic/msi.c
@@ -184,7 +184,6 @@ static int x86_msi_prepare(struct irq_domain *domain, struct device *dev,
alloc->type = X86_IRQ_ALLOC_TYPE_PCI_MSI;
return 0;
case DOMAIN_BUS_PCI_DEVICE_MSIX:
- case DOMAIN_BUS_PCI_DEVICE_IMS:
alloc->type = X86_IRQ_ALLOC_TYPE_PCI_MSIX;
return 0;
default:
@@ -229,10 +228,6 @@ static bool x86_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
case DOMAIN_BUS_PCI_DEVICE_MSI:
case DOMAIN_BUS_PCI_DEVICE_MSIX:
break;
- case DOMAIN_BUS_PCI_DEVICE_IMS:
- if (!(pops->supported_flags & MSI_FLAG_PCI_IMS))
- return false;
- break;
default:
WARN_ON_ONCE(1);
return false;
--
2.34.1


2024-04-10 22:15:15

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH v2 7/7] Revert "genirq/msi: Provide constants for PCI/IMS support"

From: Bjorn Helgaas <[email protected]>

This reverts commit e23d4192bf9b612bce5b24f22719fd3cc6edaa69.

IMS (Interrupt Message Store) support appeared in v6.2, but there are no
users yet.

Remove it for now. We can add it back when a user comes along.

Signed-off-by: Bjorn Helgaas <[email protected]>
---
include/linux/irqdomain_defs.h | 1 -
include/linux/msi.h | 2 --
include/linux/msi_api.h | 1 -
3 files changed, 4 deletions(-)

diff --git a/include/linux/irqdomain_defs.h b/include/linux/irqdomain_defs.h
index 5c1fe6f1fcde..36653e2ee1c9 100644
--- a/include/linux/irqdomain_defs.h
+++ b/include/linux/irqdomain_defs.h
@@ -25,7 +25,6 @@ enum irq_domain_bus_token {
DOMAIN_BUS_PCI_DEVICE_MSIX,
DOMAIN_BUS_DMAR,
DOMAIN_BUS_AMDVI,
- DOMAIN_BUS_PCI_DEVICE_IMS,
DOMAIN_BUS_DEVICE_MSI,
DOMAIN_BUS_WIRED_TO_MSI,
};
diff --git a/include/linux/msi.h b/include/linux/msi.h
index 26d07e23052e..84859a9aa091 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -573,8 +573,6 @@ enum {
MSI_FLAG_MSIX_CONTIGUOUS = (1 << 19),
/* PCI/MSI-X vectors can be dynamically allocated/freed post MSI-X enable */
MSI_FLAG_PCI_MSIX_ALLOC_DYN = (1 << 20),
- /* Support for PCI/IMS */
- MSI_FLAG_PCI_IMS = (1 << 21),
};

/**
diff --git a/include/linux/msi_api.h b/include/linux/msi_api.h
index 391087ad99b1..5ae72d1912c4 100644
--- a/include/linux/msi_api.h
+++ b/include/linux/msi_api.h
@@ -15,7 +15,6 @@ struct device;
*/
enum msi_domain_ids {
MSI_DEFAULT_DOMAIN,
- MSI_SECONDARY_DOMAIN,
MSI_MAX_DEVICE_IRQDOMAINS,
};

--
2.34.1


2024-04-10 22:45:20

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [PATCH v2 0/7] PCI/MSI: Remove IMS (Interrupt Message Store) support for now

On Wed, Apr 10 2024 at 17:13, Bjorn Helgaas wrote:
> From: Bjorn Helgaas <[email protected]>
>
> IMS (Interrupt Message Store) support appeared in v6.2, but there are no
> users yet.

Bah.

> Remove it for now. We can add it back when a user comes along.
>
> I propose to merge this via the PCI tree unless somebody else wants it.

Go wild!

Reviewed-by: Thomas Gleixner <[email protected]>

2024-04-10 22:47:57

by Jason Gunthorpe

[permalink] [raw]
Subject: Re: [PATCH v2 0/7] PCI/MSI: Remove IMS (Interrupt Message Store) support for now

On Thu, Apr 11, 2024 at 12:45:08AM +0200, Thomas Gleixner wrote:
> On Wed, Apr 10 2024 at 17:13, Bjorn Helgaas wrote:
> > From: Bjorn Helgaas <[email protected]>
> >
> > IMS (Interrupt Message Store) support appeared in v6.2, but there are no
> > users yet.
>
> Bah.

Still baking here :|

Not sure what is going on with idxd though.

Jason

2024-04-11 05:13:11

by Tian, Kevin

[permalink] [raw]
Subject: RE: [PATCH v2 4/7] Revert "iommu/amd: Enable PCI/IMS"

> From: Bjorn Helgaas <[email protected]>
> Sent: Thursday, April 11, 2024 6:13 AM
>
> From: Bjorn Helgaas <[email protected]>
>
> This reverts commit fa5745aca1dc819aee6463a2475b5c277f7cf8f6.
>
> IMS (Interrupt Message Store) support appeared in v6.2, but there are no
> users yet.
>
> Remove it for now. We can add it back when a user comes along.
>
> Signed-off-by: Bjorn Helgaas <[email protected]>

Reviewed-by: Kevin Tian <[email protected]>

2024-04-11 05:14:16

by Tian, Kevin

[permalink] [raw]
Subject: RE: [PATCH v2 7/7] Revert "genirq/msi: Provide constants for PCI/IMS support"

> From: Bjorn Helgaas <[email protected]>
> Sent: Thursday, April 11, 2024 6:13 AM
>
> From: Bjorn Helgaas <[email protected]>
>
> This reverts commit e23d4192bf9b612bce5b24f22719fd3cc6edaa69.
>
> IMS (Interrupt Message Store) support appeared in v6.2, but there are no
> users yet.
>
> Remove it for now. We can add it back when a user comes along.
>
> Signed-off-by: Bjorn Helgaas <[email protected]>

Reviewed-by: Kevin Tian <[email protected]>

2024-04-11 05:16:09

by Tian, Kevin

[permalink] [raw]
Subject: RE: [PATCH v2 5/7] Revert "iommu/vt-d: Enable PCI/IMS"

> From: Bjorn Helgaas <[email protected]>
> Sent: Thursday, April 11, 2024 6:13 AM
>
> From: Bjorn Helgaas <[email protected]>
>
> This reverts commit 810531a1af5393f010d6508b1cb48e6650fc5e8f.
>
> IMS (Interrupt Message Store) support appeared in v6.2, but there are no
> users yet.
>
> Remove it for now. We can add it back when a user comes along.
>
> Signed-off-by: Bjorn Helgaas <[email protected]>

Reviewed-by: Kevin Tian <[email protected]>

2024-04-11 05:16:27

by Tian, Kevin

[permalink] [raw]
Subject: RE: [PATCH v2 6/7] Revert "x86/apic/msi: Enable PCI/IMS"

> From: Bjorn Helgaas <[email protected]>
> Sent: Thursday, April 11, 2024 6:13 AM
>
> From: Bjorn Helgaas <[email protected]>
>
> This reverts commit 6e24c887732901140f4e82ba2315c2e15f06f1d6.
>
> IMS (Interrupt Message Store) support appeared in v6.2, but there are no
> users yet.
>
> Remove it for now. We can add it back when a user comes along.
>
> Signed-off-by: Bjorn Helgaas <[email protected]>

Reviewed-by: Kevin Tian <[email protected]>

2024-04-12 21:34:34

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH v2 0/7] PCI/MSI: Remove IMS (Interrupt Message Store) support for now

On Wed, Apr 10, 2024 at 05:13:00PM -0500, Bjorn Helgaas wrote:
> From: Bjorn Helgaas <[email protected]>
>
> IMS (Interrupt Message Store) support appeared in v6.2, but there are no
> users yet.
>
> Remove it for now. We can add it back when a user comes along.
>
> I propose to merge this via the PCI tree unless somebody else wants it.
>
>
> Changes since v1 (https://lore.kernel.org/linux-pci/[email protected]/):
> - Revert other IMS commits in IOMMU, apic, genirq, suggested by Kevin
>
> Bjorn Helgaas (7):
> Revert "PCI/MSI: Provide stubs for IMS functions"
> Revert "PCI/MSI: Provide pci_ims_alloc/free_irq()"
> Revert "PCI/MSI: Provide IMS (Interrupt Message Store) support"
> Revert "iommu/amd: Enable PCI/IMS"
> Revert "iommu/vt-d: Enable PCI/IMS"
> Revert "x86/apic/msi: Enable PCI/IMS"
> Revert "genirq/msi: Provide constants for PCI/IMS support"
>
> arch/x86/kernel/apic/msi.c | 5 ---
> drivers/iommu/amd/iommu.c | 17 +--------
> drivers/iommu/intel/irq_remapping.c | 19 ++--------
> drivers/pci/msi/api.c | 50 ------------------------
> drivers/pci/msi/irqdomain.c | 59 -----------------------------
> include/linux/irqdomain_defs.h | 1 -
> include/linux/msi.h | 2 -
> include/linux/msi_api.h | 1 -
> include/linux/pci.h | 26 -------------
> 9 files changed, 5 insertions(+), 175 deletions(-)

I applied this to pci/ims-removal for v6.10.