Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 a19bd79e31769626d288cc016e21a31b6f47bf6f.

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>

authored by

Frederic Barrat and committed by
Michael Ellerman
f18a4e1d 322dc4af

+28 -97
+1 -1
drivers/misc/cxl/Makefile
··· 4 4 5 5 cxl-y += main.o file.o irq.o fault.o native.o 6 6 cxl-y += context.o sysfs.o pci.o trace.o 7 - cxl-y += vphb.o phb.o api.o cxllib.o 7 + cxl-y += vphb.o api.o cxllib.o 8 8 cxl-$(CONFIG_PPC_PSERIES) += flash.o guest.o of.o hcalls.o 9 9 cxl-$(CONFIG_DEBUG_FS) += debugfs.o 10 10 obj-$(CONFIG_CXL) += cxl.o
-35
drivers/misc/cxl/base.c
··· 106 106 } 107 107 EXPORT_SYMBOL_GPL(cxl_update_properties); 108 108 109 - /* 110 - * API calls into the driver that may be called from the PHB code and must be 111 - * built in. 112 - */ 113 - bool cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu) 114 - { 115 - bool ret; 116 - struct cxl_calls *calls; 117 - 118 - calls = cxl_calls_get(); 119 - if (!calls) 120 - return false; 121 - 122 - ret = calls->cxl_pci_associate_default_context(dev, afu); 123 - 124 - cxl_calls_put(calls); 125 - 126 - return ret; 127 - } 128 - EXPORT_SYMBOL_GPL(cxl_pci_associate_default_context); 129 - 130 - void cxl_pci_disable_device(struct pci_dev *dev) 131 - { 132 - struct cxl_calls *calls; 133 - 134 - calls = cxl_calls_get(); 135 - if (!calls) 136 - return; 137 - 138 - calls->cxl_pci_disable_device(dev); 139 - 140 - cxl_calls_put(calls); 141 - } 142 - EXPORT_SYMBOL_GPL(cxl_pci_disable_device); 143 - 144 109 static int __init cxl_base_init(void) 145 110 { 146 111 struct device_node *np;
-6
drivers/misc/cxl/cxl.h
··· 867 867 ssize_t cxl_pci_afu_read_err_buffer(struct cxl_afu *afu, char *buf, 868 868 loff_t off, size_t count); 869 869 870 - /* Internal functions wrapped in cxl_base to allow PHB to call them */ 871 - bool _cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu); 872 - void _cxl_pci_disable_device(struct pci_dev *dev); 873 870 874 871 struct cxl_calls { 875 872 void (*cxl_slbia)(struct mm_struct *mm); 876 - bool (*cxl_pci_associate_default_context)(struct pci_dev *dev, struct cxl_afu *afu); 877 - void (*cxl_pci_disable_device)(struct pci_dev *dev); 878 - 879 873 struct module *owner; 880 874 }; 881 875 int register_cxl_calls(struct cxl_calls *calls);
-2
drivers/misc/cxl/main.c
··· 104 104 105 105 static struct cxl_calls cxl_calls = { 106 106 .cxl_slbia = cxl_slbia_core, 107 - .cxl_pci_associate_default_context = _cxl_pci_associate_default_context, 108 - .cxl_pci_disable_device = _cxl_pci_disable_device, 109 107 .owner = THIS_MODULE, 110 108 }; 111 109
-44
drivers/misc/cxl/phb.c
··· 1 - /* 2 - * Copyright 2014-2016 IBM Corp. 3 - * 4 - * This program is free software; you can redistribute it and/or 5 - * modify it under the terms of the GNU General Public License 6 - * as published by the Free Software Foundation; either version 7 - * 2 of the License, or (at your option) any later version. 8 - */ 9 - 10 - #include <linux/pci.h> 11 - #include "cxl.h" 12 - 13 - bool _cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu) 14 - { 15 - struct cxl_context *ctx; 16 - 17 - /* 18 - * Allocate a context to do cxl things to. This is used for interrupts 19 - * in the peer model using a real phb, and if we eventually do DMA ops 20 - * in the virtual phb, we'll need a default context to attach them to. 21 - */ 22 - ctx = cxl_dev_context_init(dev); 23 - if (IS_ERR(ctx)) 24 - return false; 25 - dev->dev.archdata.cxl_ctx = ctx; 26 - 27 - return (cxl_ops->afu_check_and_enable(afu) == 0); 28 - } 29 - /* exported via cxl_base */ 30 - 31 - void _cxl_pci_disable_device(struct pci_dev *dev) 32 - { 33 - struct cxl_context *ctx = cxl_get_context(dev); 34 - 35 - if (ctx) { 36 - if (ctx->status == STARTED) { 37 - dev_err(&dev->dev, "Default context started\n"); 38 - return; 39 - } 40 - dev->dev.archdata.cxl_ctx = NULL; 41 - cxl_release_context(ctx); 42 - } 43 - } 44 - /* exported via cxl_base */
+27 -3
drivers/misc/cxl/vphb.c
··· 44 44 { 45 45 struct pci_controller *phb; 46 46 struct cxl_afu *afu; 47 + struct cxl_context *ctx; 47 48 48 49 phb = pci_bus_to_host(dev->bus); 49 50 afu = (struct cxl_afu *)phb->private_data; ··· 57 56 set_dma_ops(&dev->dev, &dma_nommu_ops); 58 57 set_dma_offset(&dev->dev, PAGE_OFFSET); 59 58 60 - return _cxl_pci_associate_default_context(dev, afu); 59 + /* 60 + * Allocate a context to do cxl things too. If we eventually do real 61 + * DMA ops, we'll need a default context to attach them to 62 + */ 63 + ctx = cxl_dev_context_init(dev); 64 + if (IS_ERR(ctx)) 65 + return false; 66 + dev->dev.archdata.cxl_ctx = ctx; 67 + 68 + return (cxl_ops->afu_check_and_enable(afu) == 0); 69 + } 70 + 71 + static void cxl_pci_disable_device(struct pci_dev *dev) 72 + { 73 + struct cxl_context *ctx = cxl_get_context(dev); 74 + 75 + if (ctx) { 76 + if (ctx->status == STARTED) { 77 + dev_err(&dev->dev, "Default context started\n"); 78 + return; 79 + } 80 + dev->dev.archdata.cxl_ctx = NULL; 81 + cxl_release_context(ctx); 82 + } 61 83 } 62 84 63 85 static resource_size_t cxl_pci_window_alignment(struct pci_bus *bus, ··· 214 190 { 215 191 .probe_mode = cxl_pci_probe_mode, 216 192 .enable_device_hook = cxl_pci_enable_device_hook, 217 - .disable_device = _cxl_pci_disable_device, 218 - .release_device = _cxl_pci_disable_device, 193 + .disable_device = cxl_pci_disable_device, 194 + .release_device = cxl_pci_disable_device, 219 195 .window_alignment = cxl_pci_window_alignment, 220 196 .reset_secondary_bus = cxl_pci_reset_secondary_bus, 221 197 .setup_msi_irqs = cxl_setup_msi_irqs,
-6
include/misc/cxl-base.h
··· 10 10 #ifndef _MISC_CXL_BASE_H 11 11 #define _MISC_CXL_BASE_H 12 12 13 - #include <misc/cxl.h> 14 - 15 13 #ifdef CONFIG_CXL_BASE 16 14 17 15 #define CXL_IRQ_RANGES 4 ··· 39 41 struct cxl_afu *cxl_afu_get(struct cxl_afu *afu); 40 42 void cxl_afu_put(struct cxl_afu *afu); 41 43 void cxl_slbia(struct mm_struct *mm); 42 - bool cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu); 43 - void cxl_pci_disable_device(struct pci_dev *dev); 44 44 45 45 #else /* CONFIG_CXL_BASE */ 46 46 ··· 46 50 static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu) { return NULL; } 47 51 static inline void cxl_afu_put(struct cxl_afu *afu) {} 48 52 static inline void cxl_slbia(struct mm_struct *mm) {} 49 - static inline bool cxl_pci_associate_default_context(struct pci_dev *dev, struct cxl_afu *afu) { return false; } 50 - static inline void cxl_pci_disable_device(struct pci_dev *dev) {} 51 53 52 54 #endif /* CONFIG_CXL_BASE */ 53 55