Revert "cxl: Allow a default context to be associated with an external pci_dev"
Remove abandonned capi support for the Mellanox CX4.
This reverts commit a19bd79e31
.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Acked-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
322dc4af6c
commit
f18a4e1d97
7 changed files with 28 additions and 97 deletions
|
@ -4,7 +4,7 @@ ccflags-$(CONFIG_PPC_WERROR) += -Werror
|
||||||
|
|
||||||
cxl-y += main.o file.o irq.o fault.o native.o
|
cxl-y += main.o file.o irq.o fault.o native.o
|
||||||
cxl-y += context.o sysfs.o pci.o trace.o
|
cxl-y += context.o sysfs.o pci.o trace.o
|
||||||
cxl-y += vphb.o phb.o api.o cxllib.o
|
cxl-y += vphb.o api.o cxllib.o
|
||||||
cxl-$(CONFIG_PPC_PSERIES) += flash.o guest.o of.o hcalls.o
|
cxl-$(CONFIG_PPC_PSERIES) += flash.o guest.o of.o hcalls.o
|
||||||
cxl-$(CONFIG_DEBUG_FS) += debugfs.o
|
cxl-$(CONFIG_DEBUG_FS) += debugfs.o
|
||||||
obj-$(CONFIG_CXL) += cxl.o
|
obj-$(CONFIG_CXL) += cxl.o
|
||||||
|
|
|
@ -106,41 +106,6 @@ int cxl_update_properties(struct device_node *dn,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(cxl_update_properties);
|
EXPORT_SYMBOL_GPL(cxl_update_properties);
|
||||||
|
|
||||||
/*
|
|
||||||
* API calls into the driver that may be called from the PHB code and must be
|
|
||||||
* built in.
|
|
||||||
*/
|
|
||||||
bool cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu)
|
|
||||||
{
|
|
||||||
bool ret;
|
|
||||||
struct cxl_calls *calls;
|
|
||||||
|
|
||||||
calls = cxl_calls_get();
|
|
||||||
if (!calls)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
ret = calls->cxl_pci_associate_default_context(dev, afu);
|
|
||||||
|
|
||||||
cxl_calls_put(calls);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(cxl_pci_associate_default_context);
|
|
||||||
|
|
||||||
void cxl_pci_disable_device(struct pci_dev *dev)
|
|
||||||
{
|
|
||||||
struct cxl_calls *calls;
|
|
||||||
|
|
||||||
calls = cxl_calls_get();
|
|
||||||
if (!calls)
|
|
||||||
return;
|
|
||||||
|
|
||||||
calls->cxl_pci_disable_device(dev);
|
|
||||||
|
|
||||||
cxl_calls_put(calls);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(cxl_pci_disable_device);
|
|
||||||
|
|
||||||
static int __init cxl_base_init(void)
|
static int __init cxl_base_init(void)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
|
|
|
@ -867,15 +867,9 @@ static inline bool cxl_is_power9_dd1(void)
|
||||||
ssize_t cxl_pci_afu_read_err_buffer(struct cxl_afu *afu, char *buf,
|
ssize_t cxl_pci_afu_read_err_buffer(struct cxl_afu *afu, char *buf,
|
||||||
loff_t off, size_t count);
|
loff_t off, size_t count);
|
||||||
|
|
||||||
/* 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);
|
|
||||||
void _cxl_pci_disable_device(struct pci_dev *dev);
|
|
||||||
|
|
||||||
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);
|
|
||||||
void (*cxl_pci_disable_device)(struct pci_dev *dev);
|
|
||||||
|
|
||||||
struct module *owner;
|
struct module *owner;
|
||||||
};
|
};
|
||||||
int register_cxl_calls(struct cxl_calls *calls);
|
int register_cxl_calls(struct cxl_calls *calls);
|
||||||
|
|
|
@ -104,8 +104,6 @@ static inline void cxl_slbia_core(struct mm_struct *mm)
|
||||||
|
|
||||||
static struct cxl_calls cxl_calls = {
|
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_disable_device = _cxl_pci_disable_device,
|
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2014-2016 IBM Corp.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation; either version
|
|
||||||
* 2 of the License, or (at your option) any later version.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/pci.h>
|
|
||||||
#include "cxl.h"
|
|
||||||
|
|
||||||
bool _cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu)
|
|
||||||
{
|
|
||||||
struct cxl_context *ctx;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Allocate a context to do cxl things to. This is used for interrupts
|
|
||||||
* in the peer model using a real phb, and if we eventually do DMA ops
|
|
||||||
* in the virtual phb, we'll need a default context to attach them to.
|
|
||||||
*/
|
|
||||||
ctx = cxl_dev_context_init(dev);
|
|
||||||
if (IS_ERR(ctx))
|
|
||||||
return false;
|
|
||||||
dev->dev.archdata.cxl_ctx = ctx;
|
|
||||||
|
|
||||||
return (cxl_ops->afu_check_and_enable(afu) == 0);
|
|
||||||
}
|
|
||||||
/* exported via cxl_base */
|
|
||||||
|
|
||||||
void _cxl_pci_disable_device(struct pci_dev *dev)
|
|
||||||
{
|
|
||||||
struct cxl_context *ctx = cxl_get_context(dev);
|
|
||||||
|
|
||||||
if (ctx) {
|
|
||||||
if (ctx->status == STARTED) {
|
|
||||||
dev_err(&dev->dev, "Default context started\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dev->dev.archdata.cxl_ctx = NULL;
|
|
||||||
cxl_release_context(ctx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* exported via cxl_base */
|
|
|
@ -44,6 +44,7 @@ static bool cxl_pci_enable_device_hook(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
struct pci_controller *phb;
|
struct pci_controller *phb;
|
||||||
struct cxl_afu *afu;
|
struct cxl_afu *afu;
|
||||||
|
struct cxl_context *ctx;
|
||||||
|
|
||||||
phb = pci_bus_to_host(dev->bus);
|
phb = pci_bus_to_host(dev->bus);
|
||||||
afu = (struct cxl_afu *)phb->private_data;
|
afu = (struct cxl_afu *)phb->private_data;
|
||||||
|
@ -56,7 +57,30 @@ static bool cxl_pci_enable_device_hook(struct pci_dev *dev)
|
||||||
set_dma_ops(&dev->dev, &dma_nommu_ops);
|
set_dma_ops(&dev->dev, &dma_nommu_ops);
|
||||||
set_dma_offset(&dev->dev, PAGE_OFFSET);
|
set_dma_offset(&dev->dev, PAGE_OFFSET);
|
||||||
|
|
||||||
return _cxl_pci_associate_default_context(dev, afu);
|
/*
|
||||||
|
* Allocate a context to do cxl things too. If we eventually do real
|
||||||
|
* DMA ops, we'll need a default context to attach them to
|
||||||
|
*/
|
||||||
|
ctx = cxl_dev_context_init(dev);
|
||||||
|
if (IS_ERR(ctx))
|
||||||
|
return false;
|
||||||
|
dev->dev.archdata.cxl_ctx = ctx;
|
||||||
|
|
||||||
|
return (cxl_ops->afu_check_and_enable(afu) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cxl_pci_disable_device(struct pci_dev *dev)
|
||||||
|
{
|
||||||
|
struct cxl_context *ctx = cxl_get_context(dev);
|
||||||
|
|
||||||
|
if (ctx) {
|
||||||
|
if (ctx->status == STARTED) {
|
||||||
|
dev_err(&dev->dev, "Default context started\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dev->dev.archdata.cxl_ctx = NULL;
|
||||||
|
cxl_release_context(ctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static resource_size_t cxl_pci_window_alignment(struct pci_bus *bus,
|
static resource_size_t cxl_pci_window_alignment(struct pci_bus *bus,
|
||||||
|
@ -190,8 +214,8 @@ static struct pci_controller_ops cxl_pci_controller_ops =
|
||||||
{
|
{
|
||||||
.probe_mode = cxl_pci_probe_mode,
|
.probe_mode = cxl_pci_probe_mode,
|
||||||
.enable_device_hook = cxl_pci_enable_device_hook,
|
.enable_device_hook = cxl_pci_enable_device_hook,
|
||||||
.disable_device = _cxl_pci_disable_device,
|
.disable_device = cxl_pci_disable_device,
|
||||||
.release_device = _cxl_pci_disable_device,
|
.release_device = cxl_pci_disable_device,
|
||||||
.window_alignment = cxl_pci_window_alignment,
|
.window_alignment = cxl_pci_window_alignment,
|
||||||
.reset_secondary_bus = cxl_pci_reset_secondary_bus,
|
.reset_secondary_bus = cxl_pci_reset_secondary_bus,
|
||||||
.setup_msi_irqs = cxl_setup_msi_irqs,
|
.setup_msi_irqs = cxl_setup_msi_irqs,
|
||||||
|
|
|
@ -10,8 +10,6 @@
|
||||||
#ifndef _MISC_CXL_BASE_H
|
#ifndef _MISC_CXL_BASE_H
|
||||||
#define _MISC_CXL_BASE_H
|
#define _MISC_CXL_BASE_H
|
||||||
|
|
||||||
#include <misc/cxl.h>
|
|
||||||
|
|
||||||
#ifdef CONFIG_CXL_BASE
|
#ifdef CONFIG_CXL_BASE
|
||||||
|
|
||||||
#define CXL_IRQ_RANGES 4
|
#define CXL_IRQ_RANGES 4
|
||||||
|
@ -41,8 +39,6 @@ static inline void cxl_ctx_put(void)
|
||||||
struct cxl_afu *cxl_afu_get(struct cxl_afu *afu);
|
struct cxl_afu *cxl_afu_get(struct cxl_afu *afu);
|
||||||
void cxl_afu_put(struct cxl_afu *afu);
|
void cxl_afu_put(struct cxl_afu *afu);
|
||||||
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);
|
|
||||||
void cxl_pci_disable_device(struct pci_dev *dev);
|
|
||||||
|
|
||||||
#else /* CONFIG_CXL_BASE */
|
#else /* CONFIG_CXL_BASE */
|
||||||
|
|
||||||
|
@ -50,8 +46,6 @@ static inline bool cxl_ctx_in_use(void) { return false; }
|
||||||
static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu) { return NULL; }
|
static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu) { return NULL; }
|
||||||
static inline void cxl_afu_put(struct cxl_afu *afu) {}
|
static inline void cxl_afu_put(struct cxl_afu *afu) {}
|
||||||
static inline void cxl_slbia(struct mm_struct *mm) {}
|
static inline void cxl_slbia(struct mm_struct *mm) {}
|
||||||
static inline bool cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu) { return false; }
|
|
||||||
static inline void cxl_pci_disable_device(struct pci_dev *dev) {}
|
|
||||||
|
|
||||||
#endif /* CONFIG_CXL_BASE */
|
#endif /* CONFIG_CXL_BASE */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue