Commit 17d29039 authored by Alastair D'Silva's avatar Alastair D'Silva Committed by Michael Ellerman

Revert "cxl: Add preliminary workaround for CX4 interrupt limitation"

Remove abandonned capi support for the Mellanox CX4.

This reverts commit cbce0917.
Signed-off-by: default avatarAlastair D'Silva <alastair@d-silva.org>
Acked-by: default avatarAndrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 0cfd7335
...@@ -181,21 +181,6 @@ static irq_hw_number_t cxl_find_afu_irq(struct cxl_context *ctx, int num) ...@@ -181,21 +181,6 @@ static irq_hw_number_t cxl_find_afu_irq(struct cxl_context *ctx, int num)
return 0; return 0;
} }
int _cxl_next_msi_hwirq(struct pci_dev *pdev, struct cxl_context **ctx, int *afu_irq)
{
if (*ctx == NULL || *afu_irq == 0) {
*afu_irq = 1;
*ctx = cxl_get_context(pdev);
} else {
(*afu_irq)++;
if (*afu_irq > cxl_get_max_irqs_per_process(pdev)) {
*ctx = list_next_entry(*ctx, extra_irq_contexts);
*afu_irq = 1;
}
}
return cxl_find_afu_irq(*ctx, *afu_irq);
}
/* Exported via cxl_base */
int cxl_set_priv(struct cxl_context *ctx, void *priv) int cxl_set_priv(struct cxl_context *ctx, void *priv)
{ {
......
...@@ -141,23 +141,6 @@ void cxl_pci_disable_device(struct pci_dev *dev) ...@@ -141,23 +141,6 @@ void cxl_pci_disable_device(struct pci_dev *dev)
} }
EXPORT_SYMBOL_GPL(cxl_pci_disable_device); EXPORT_SYMBOL_GPL(cxl_pci_disable_device);
int cxl_next_msi_hwirq(struct pci_dev *pdev, struct cxl_context **ctx, int *afu_irq)
{
int ret;
struct cxl_calls *calls;
calls = cxl_calls_get();
if (!calls)
return -EBUSY;
ret = calls->cxl_next_msi_hwirq(pdev, ctx, afu_irq);
cxl_calls_put(calls);
return ret;
}
EXPORT_SYMBOL_GPL(cxl_next_msi_hwirq);
static int __init cxl_base_init(void) static int __init cxl_base_init(void)
{ {
struct device_node *np; struct device_node *np;
......
...@@ -74,7 +74,6 @@ int cxl_context_init(struct cxl_context *ctx, struct cxl_afu *afu, bool master) ...@@ -74,7 +74,6 @@ int cxl_context_init(struct cxl_context *ctx, struct cxl_afu *afu, bool master)
ctx->pending_afu_err = false; ctx->pending_afu_err = false;
INIT_LIST_HEAD(&ctx->irq_names); INIT_LIST_HEAD(&ctx->irq_names);
INIT_LIST_HEAD(&ctx->extra_irq_contexts);
/* /*
* When we have to destroy all contexts in cxl_context_detach_all() we * When we have to destroy all contexts in cxl_context_detach_all() we
......
...@@ -623,14 +623,6 @@ struct cxl_context { ...@@ -623,14 +623,6 @@ struct cxl_context {
struct rcu_head rcu; struct rcu_head rcu;
/*
* Only used when more interrupts are allocated via
* pci_enable_msix_range than are supported in the default context, to
* use additional contexts to overcome the limitation. i.e. Mellanox
* CX4 only:
*/
struct list_head extra_irq_contexts;
struct mm_struct *mm; struct mm_struct *mm;
u16 tidr; u16 tidr;
...@@ -878,13 +870,11 @@ ssize_t cxl_pci_afu_read_err_buffer(struct cxl_afu *afu, char *buf, ...@@ -878,13 +870,11 @@ ssize_t cxl_pci_afu_read_err_buffer(struct cxl_afu *afu, char *buf,
/* Internal functions wrapped in cxl_base to allow PHB to call them */ /* Internal functions wrapped in cxl_base to allow PHB to call them */
bool _cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu); bool _cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu);
void _cxl_pci_disable_device(struct pci_dev *dev); void _cxl_pci_disable_device(struct pci_dev *dev);
int _cxl_next_msi_hwirq(struct pci_dev *pdev, struct cxl_context **ctx, int *afu_irq);
struct cxl_calls { struct cxl_calls {
void (*cxl_slbia)(struct mm_struct *mm); void (*cxl_slbia)(struct mm_struct *mm);
bool (*cxl_pci_associate_default_context)(struct pci_dev *dev, struct cxl_afu *afu); bool (*cxl_pci_associate_default_context)(struct pci_dev *dev, struct cxl_afu *afu);
void (*cxl_pci_disable_device)(struct pci_dev *dev); void (*cxl_pci_disable_device)(struct pci_dev *dev);
int (*cxl_next_msi_hwirq)(struct pci_dev *pdev, struct cxl_context **ctx, int *afu_irq);
struct module *owner; struct module *owner;
}; };
......
...@@ -106,7 +106,6 @@ static struct cxl_calls cxl_calls = { ...@@ -106,7 +106,6 @@ static struct cxl_calls cxl_calls = {
.cxl_slbia = cxl_slbia_core, .cxl_slbia = cxl_slbia_core,
.cxl_pci_associate_default_context = _cxl_pci_associate_default_context, .cxl_pci_associate_default_context = _cxl_pci_associate_default_context,
.cxl_pci_disable_device = _cxl_pci_disable_device, .cxl_pci_disable_device = _cxl_pci_disable_device,
.cxl_next_msi_hwirq = _cxl_next_msi_hwirq,
.owner = THIS_MODULE, .owner = THIS_MODULE,
}; };
......
...@@ -183,26 +183,6 @@ void cxl_psa_unmap(void __iomem *addr); ...@@ -183,26 +183,6 @@ void cxl_psa_unmap(void __iomem *addr);
/* Get the process element for this context */ /* Get the process element for this context */
int cxl_process_element(struct cxl_context *ctx); int cxl_process_element(struct cxl_context *ctx);
/*
* Limit the number of interrupts that a single context can allocate via
* cxl_start_work. If using the api with a real phb, this may be used to
* request that additional default contexts be created when allocating
* interrupts via pci_enable_msix_range. These will be set to the same running
* state as the default context, and if that is running it will reuse the
* parameters previously passed to cxl_start_context for the default context.
*/
int cxl_set_max_irqs_per_process(struct pci_dev *dev, int irqs);
int cxl_get_max_irqs_per_process(struct pci_dev *dev);
/*
* Use to simultaneously iterate over hardware interrupt numbers, contexts and
* afu interrupt numbers allocated for the device via pci_enable_msix_range and
* is a useful convenience function when working with hardware that has
* limitations on the number of interrupts per process. *ctx and *afu_irq
* should be NULL and 0 to start the iteration.
*/
int cxl_next_msi_hwirq(struct pci_dev *pdev, struct cxl_context **ctx, int *afu_irq);
/* /*
* These calls allow drivers to create their own file descriptors and make them * These calls allow drivers to create their own file descriptors and make them
* identical to the cxl file descriptor user API. An example use case: * identical to the cxl file descriptor user API. An example use case:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment