summaryrefslogtreecommitdiffstats
path: root/drivers/misc/cxl/cxl.h
diff options
context:
space:
mode:
authorIan Munsie <imunsie@au1.ibm.com>2016-07-14 07:17:04 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2016-07-14 20:26:52 +1000
commita19bd79e31769626d288cc016e21a31b6f47bf6f (patch)
treeda10b02e662c4541f75db8ded6ca65bc76efe3c5 /drivers/misc/cxl/cxl.h
parent62ccf2d2efefa01d0eb92cd6ecbb45ea0499fb1c (diff)
downloadop-kernel-dev-a19bd79e31769626d288cc016e21a31b6f47bf6f.zip
op-kernel-dev-a19bd79e31769626d288cc016e21a31b6f47bf6f.tar.gz
cxl: Allow a default context to be associated with an external pci_dev
The cxl kernel API has a concept of a default context associated with each PCI device under the virtual PHB. The Mellanox CX4 will also use the cxl kernel API, but it does not use a virtual PHB - rather, the AFU appears as a physical function as a peer to the networking functions. In order to allow the kernel API to work with those networking functions, we will need to associate a default context with them as well. To this end, refactor the corresponding code to do this in vphb.c and export it so that it can be called from the PHB code. Signed-off-by: Ian Munsie <imunsie@au1.ibm.com> Reviewed-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com> Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'drivers/misc/cxl/cxl.h')
-rw-r--r--drivers/misc/cxl/cxl.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/misc/cxl/cxl.h b/drivers/misc/cxl/cxl.h
index d4aae6f..b81f476 100644
--- a/drivers/misc/cxl/cxl.h
+++ b/drivers/misc/cxl/cxl.h
@@ -719,9 +719,15 @@ static inline u64 cxl_p2n_read(struct cxl_afu *afu, cxl_p2n_reg_t reg)
ssize_t cxl_pci_afu_read_err_buffer(struct cxl_afu *afu, char *buf,
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 {
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;
};
int register_cxl_calls(struct cxl_calls *calls);
OpenPOWER on IntegriCloud