irq.c (8f47d1a5e545f903cd049c42da31a3be36178447) | irq.c (42d279f9137ab7d5503836baec2739284b278d8f) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* Copyright(c) 2019 Intel Corporation. All rights rsvd. */ 3#include <linux/init.h> 4#include <linux/kernel.h> 5#include <linux/module.h> 6#include <linux/pci.h> 7#include <linux/io-64-nonatomic-lo-hi.h> 8#include <linux/dmaengine.h> --- 75 unchanged lines hidden (view full) --- 84 cause = ioread32(idxd->reg_base + IDXD_INTCAUSE_OFFSET); 85 86 if (cause & IDXD_INTC_ERR) { 87 spin_lock_bh(&idxd->dev_lock); 88 for (i = 0; i < 4; i++) 89 idxd->sw_err.bits[i] = ioread64(idxd->reg_base + 90 IDXD_SWERR_OFFSET + i * sizeof(u64)); 91 iowrite64(IDXD_SWERR_ACK, idxd->reg_base + IDXD_SWERR_OFFSET); | 1// SPDX-License-Identifier: GPL-2.0 2/* Copyright(c) 2019 Intel Corporation. All rights rsvd. */ 3#include <linux/init.h> 4#include <linux/kernel.h> 5#include <linux/module.h> 6#include <linux/pci.h> 7#include <linux/io-64-nonatomic-lo-hi.h> 8#include <linux/dmaengine.h> --- 75 unchanged lines hidden (view full) --- 84 cause = ioread32(idxd->reg_base + IDXD_INTCAUSE_OFFSET); 85 86 if (cause & IDXD_INTC_ERR) { 87 spin_lock_bh(&idxd->dev_lock); 88 for (i = 0; i < 4; i++) 89 idxd->sw_err.bits[i] = ioread64(idxd->reg_base + 90 IDXD_SWERR_OFFSET + i * sizeof(u64)); 91 iowrite64(IDXD_SWERR_ACK, idxd->reg_base + IDXD_SWERR_OFFSET); |
92 93 if (idxd->sw_err.valid && idxd->sw_err.wq_idx_valid) { 94 int id = idxd->sw_err.wq_idx; 95 struct idxd_wq *wq = &idxd->wqs[id]; 96 97 if (wq->type == IDXD_WQT_USER) 98 wake_up_interruptible(&wq->idxd_cdev.err_queue); 99 } else { 100 int i; 101 102 for (i = 0; i < idxd->max_wqs; i++) { 103 struct idxd_wq *wq = &idxd->wqs[i]; 104 105 if (wq->type == IDXD_WQT_USER) 106 wake_up_interruptible(&wq->idxd_cdev.err_queue); 107 } 108 } 109 |
|
92 spin_unlock_bh(&idxd->dev_lock); 93 val |= IDXD_INTC_ERR; 94 95 for (i = 0; i < 4; i++) 96 dev_warn(dev, "err[%d]: %#16.16llx\n", 97 i, idxd->sw_err.bits[i]); 98 err = true; 99 } --- 144 unchanged lines hidden --- | 110 spin_unlock_bh(&idxd->dev_lock); 111 val |= IDXD_INTC_ERR; 112 113 for (i = 0; i < 4; i++) 114 dev_warn(dev, "err[%d]: %#16.16llx\n", 115 i, idxd->sw_err.bits[i]); 116 err = true; 117 } --- 144 unchanged lines hidden --- |