Lines Matching refs:idxd

16 	struct idxd_device *idxd = container_of(work, struct idxd_device, work);  in idxd_device_reinit()  local
17 struct device *dev = &idxd->pdev->dev; in idxd_device_reinit()
20 idxd_device_reset(idxd); in idxd_device_reinit()
21 rc = idxd_device_config(idxd); in idxd_device_reinit()
25 rc = idxd_device_enable(idxd); in idxd_device_reinit()
29 for (i = 0; i < idxd->max_wqs; i++) { in idxd_device_reinit()
30 struct idxd_wq *wq = &idxd->wqs[i]; in idxd_device_reinit()
44 idxd_device_wqs_clear_state(idxd); in idxd_device_reinit()
50 struct idxd_device *idxd = irq_entry->idxd; in idxd_irq_handler() local
52 idxd_mask_msix_vector(idxd, irq_entry->id); in idxd_irq_handler()
56 static int process_misc_interrupts(struct idxd_device *idxd, u32 cause) in process_misc_interrupts() argument
58 struct device *dev = &idxd->pdev->dev; in process_misc_interrupts()
65 spin_lock_bh(&idxd->dev_lock); in process_misc_interrupts()
67 idxd->sw_err.bits[i] = ioread64(idxd->reg_base + in process_misc_interrupts()
70 iowrite64(idxd->sw_err.bits[0] & IDXD_SWERR_ACK, in process_misc_interrupts()
71 idxd->reg_base + IDXD_SWERR_OFFSET); in process_misc_interrupts()
73 if (idxd->sw_err.valid && idxd->sw_err.wq_idx_valid) { in process_misc_interrupts()
74 int id = idxd->sw_err.wq_idx; in process_misc_interrupts()
75 struct idxd_wq *wq = &idxd->wqs[id]; in process_misc_interrupts()
82 for (i = 0; i < idxd->max_wqs; i++) { in process_misc_interrupts()
83 struct idxd_wq *wq = &idxd->wqs[i]; in process_misc_interrupts()
90 spin_unlock_bh(&idxd->dev_lock); in process_misc_interrupts()
95 i, idxd->sw_err.bits[i]); in process_misc_interrupts()
101 complete(idxd->cmd_done); in process_misc_interrupts()
125 gensts.bits = ioread32(idxd->reg_base + IDXD_GENSTATS_OFFSET); in process_misc_interrupts()
127 idxd->state = IDXD_DEV_HALTED; in process_misc_interrupts()
134 INIT_WORK(&idxd->work, idxd_device_reinit); in process_misc_interrupts()
135 queue_work(idxd->wq, &idxd->work); in process_misc_interrupts()
137 spin_lock_bh(&idxd->dev_lock); in process_misc_interrupts()
138 idxd_device_wqs_clear_state(idxd); in process_misc_interrupts()
139 dev_err(&idxd->pdev->dev, in process_misc_interrupts()
143 spin_unlock_bh(&idxd->dev_lock); in process_misc_interrupts()
154 struct idxd_device *idxd = irq_entry->idxd; in idxd_misc_thread() local
158 cause = ioread32(idxd->reg_base + IDXD_INTCAUSE_OFFSET); in idxd_misc_thread()
160 iowrite32(cause, idxd->reg_base + IDXD_INTCAUSE_OFFSET); in idxd_misc_thread()
163 rc = process_misc_interrupts(idxd, cause); in idxd_misc_thread()
166 cause = ioread32(idxd->reg_base + IDXD_INTCAUSE_OFFSET); in idxd_misc_thread()
168 iowrite32(cause, idxd->reg_base + IDXD_INTCAUSE_OFFSET); in idxd_misc_thread()
171 idxd_unmask_msix_vector(idxd, irq_entry->id); in idxd_misc_thread()
271 idxd_unmask_msix_vector(irq_entry->idxd, irq_entry->id); in idxd_wq_thread()