aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/ocxl/link.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-12-27 13:43:24 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2018-12-27 13:43:24 -0500
commit8d6973327ee84c2f40dd9efd8928d4a1186c96e2 (patch)
tree1c6accd71b6e9c4e05d5aaae766b958ad440d320 /drivers/misc/ocxl/link.c
parent6d101ba6be2a26a3e1f513b5e293f0fd2b79ec5c (diff)
parent12526b0d6c580df860b31e59d68e5696e16c6e5b (diff)
Merge tag 'powerpc-4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc updates from Michael Ellerman: "Notable changes: - Mitigations for Spectre v2 on some Freescale (NXP) CPUs. - A large series adding support for pass-through of Nvidia V100 GPUs to guests on Power9. - Another large series to enable hardware assistance for TLB table walk on MPC8xx CPUs. - Some preparatory changes to our DMA code, to make way for further cleanups from Christoph. - Several fixes for our Transactional Memory handling discovered by fuzzing the signal return path. - Support for generating our system call table(s) from a text file like other architectures. - A fix to our page fault handler so that instead of generating a WARN_ON_ONCE, user accesses of kernel addresses instead print a ratelimited and appropriately scary warning. - A cosmetic change to make our unhandled page fault messages more similar to other arches and also more compact and informative. - Freescale updates from Scott: "Highlights include elimination of legacy clock bindings use from dts files, an 83xx watchdog handler, fixes to old dts interrupt errors, and some minor cleanup." And many clean-ups, reworks and minor fixes etc. Thanks to: Alexandre Belloni, Alexey Kardashevskiy, Andrew Donnellan, Aneesh Kumar K.V, Arnd Bergmann, Benjamin Herrenschmidt, Breno Leitao, Christian Lamparter, Christophe Leroy, Christoph Hellwig, Daniel Axtens, Darren Stevens, David Gibson, Diana Craciun, Dmitry V. Levin, Firoz Khan, Geert Uytterhoeven, Greg Kurz, Gustavo Romero, Hari Bathini, Joel Stanley, Kees Cook, Madhavan Srinivasan, Mahesh Salgaonkar, Markus Elfring, Mathieu Malaterre, Michal Suchánek, Naveen N. Rao, Nick Desaulniers, Oliver O'Halloran, Paul Mackerras, Ram Pai, Ravi Bangoria, Rob Herring, Russell Currey, Sabyasachi Gupta, Sam Bobroff, Satheesh Rajendran, Scott Wood, Segher Boessenkool, Stephen Rothwell, Tang Yuantian, Thiago Jung Bauermann, Yangtao Li, Yuantian Tang, Yue Haibing" * tag 'powerpc-4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (201 commits) Revert "powerpc/fsl_pci: simplify fsl_pci_dma_set_mask" powerpc/zImage: Also check for stdout-path powerpc: Fix HMIs on big-endian with CONFIG_RELOCATABLE=y macintosh: Use of_node_name_{eq, prefix} for node name comparisons ide: Use of_node_name_eq for node name comparisons powerpc: Use of_node_name_eq for node name comparisons powerpc/pseries/pmem: Convert to %pOFn instead of device_node.name powerpc/mm: Remove very old comment in hash-4k.h powerpc/pseries: Fix node leak in update_lmb_associativity_index() powerpc/configs/85xx: Enable CONFIG_DEBUG_KERNEL powerpc/dts/fsl: Fix dtc-flagged interrupt errors clk: qoriq: add more compatibles strings powerpc/fsl: Use new clockgen binding powerpc/83xx: handle machine check caused by watchdog timer powerpc/fsl-rio: fix spelling mistake "reserverd" -> "reserved" powerpc/fsl_pci: simplify fsl_pci_dma_set_mask arch/powerpc/fsl_rmu: Use dma_zalloc_coherent vfio_pci: Add NVIDIA GV100GL [Tesla V100 SXM2] subdriver vfio_pci: Allow regions to add own capabilities vfio_pci: Allow mapping extra regions ...
Diffstat (limited to 'drivers/misc/ocxl/link.c')
-rw-r--r--drivers/misc/ocxl/link.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/drivers/misc/ocxl/link.c b/drivers/misc/ocxl/link.c
index 31695a078485..d50b861d7e57 100644
--- a/drivers/misc/ocxl/link.c
+++ b/drivers/misc/ocxl/link.c
@@ -273,9 +273,9 @@ static int setup_xsl_irq(struct pci_dev *dev, struct link *link)
273 spa->irq_name = kasprintf(GFP_KERNEL, "ocxl-xsl-%x-%x-%x", 273 spa->irq_name = kasprintf(GFP_KERNEL, "ocxl-xsl-%x-%x-%x",
274 link->domain, link->bus, link->dev); 274 link->domain, link->bus, link->dev);
275 if (!spa->irq_name) { 275 if (!spa->irq_name) {
276 unmap_irq_registers(spa);
277 dev_err(&dev->dev, "Can't allocate name for xsl interrupt\n"); 276 dev_err(&dev->dev, "Can't allocate name for xsl interrupt\n");
278 return -ENOMEM; 277 rc = -ENOMEM;
278 goto err_xsl;
279 } 279 }
280 /* 280 /*
281 * At some point, we'll need to look into allowing a higher 281 * At some point, we'll need to look into allowing a higher
@@ -283,11 +283,10 @@ static int setup_xsl_irq(struct pci_dev *dev, struct link *link)
283 */ 283 */
284 spa->virq = irq_create_mapping(NULL, hwirq); 284 spa->virq = irq_create_mapping(NULL, hwirq);
285 if (!spa->virq) { 285 if (!spa->virq) {
286 kfree(spa->irq_name);
287 unmap_irq_registers(spa);
288 dev_err(&dev->dev, 286 dev_err(&dev->dev,
289 "irq_create_mapping failed for translation interrupt\n"); 287 "irq_create_mapping failed for translation interrupt\n");
290 return -EINVAL; 288 rc = -EINVAL;
289 goto err_name;
291 } 290 }
292 291
293 dev_dbg(&dev->dev, "hwirq %d mapped to virq %d\n", hwirq, spa->virq); 292 dev_dbg(&dev->dev, "hwirq %d mapped to virq %d\n", hwirq, spa->virq);
@@ -295,15 +294,21 @@ static int setup_xsl_irq(struct pci_dev *dev, struct link *link)
295 rc = request_irq(spa->virq, xsl_fault_handler, 0, spa->irq_name, 294 rc = request_irq(spa->virq, xsl_fault_handler, 0, spa->irq_name,
296 link); 295 link);
297 if (rc) { 296 if (rc) {
298 irq_dispose_mapping(spa->virq);
299 kfree(spa->irq_name);
300 unmap_irq_registers(spa);
301 dev_err(&dev->dev, 297 dev_err(&dev->dev,
302 "request_irq failed for translation interrupt: %d\n", 298 "request_irq failed for translation interrupt: %d\n",
303 rc); 299 rc);
304 return -EINVAL; 300 rc = -EINVAL;
301 goto err_mapping;
305 } 302 }
306 return 0; 303 return 0;
304
305err_mapping:
306 irq_dispose_mapping(spa->virq);
307err_name:
308 kfree(spa->irq_name);
309err_xsl:
310 unmap_irq_registers(spa);
311 return rc;
307} 312}
308 313
309static void release_xsl_irq(struct link *link) 314static void release_xsl_irq(struct link *link)
@@ -566,7 +571,7 @@ int ocxl_link_update_pe(void *link_handle, int pasid, __u16 tid)
566 571
567 mutex_lock(&spa->spa_lock); 572 mutex_lock(&spa->spa_lock);
568 573
569 pe->tid = tid; 574 pe->tid = cpu_to_be32(tid);
570 575
571 /* 576 /*
572 * The barrier makes sure the PE is updated 577 * The barrier makes sure the PE is updated