Lines Matching refs:xd
33 #define __x_eoi_page(xd) ((void __iomem *)((xd)->eoi_mmio))
34 #define __x_trig_page(xd) ((void __iomem *)((xd)->trig_mmio))
80 static u8 xive_vm_esb_load(struct xive_irq_data *xd, u32 offset)
84 if (offset == XIVE_ESB_SET_PQ_10 && xd->flags & XIVE_IRQ_FLAG_STORE_EOI)
87 val = __raw_readq(__x_eoi_page(xd) + offset);
95 static void xive_vm_source_eoi(u32 hw_irq, struct xive_irq_data *xd)
98 if (xd->flags & XIVE_IRQ_FLAG_STORE_EOI)
99 __raw_writeq(0, __x_eoi_page(xd) + XIVE_ESB_STORE_EOI);
100 else if (xd->flags & XIVE_IRQ_FLAG_LSI) {
106 __raw_readq(__x_eoi_page(xd) + XIVE_ESB_LOAD_EOI);
119 eoi_val = xive_vm_esb_load(xd, XIVE_ESB_SET_PQ_00);
122 if ((eoi_val & 1) && __x_trig_page(xd))
123 __raw_writeq(0, __x_trig_page(xd));
401 struct xive_irq_data *xd;
439 kvmppc_xive_select_irq(state, &hw_num, &xd);
442 if (!(xd->flags & XIVE_IRQ_FLAG_LSI))
443 xive_vm_esb_load(xd, XIVE_ESB_SET_PQ_11);
446 xive_vm_source_eoi(hw_num, xd);
521 struct xive_irq_data *xd;
559 kvmppc_xive_select_irq(state, &hw_num, &xd);
588 xive_vm_source_eoi(hw_num, xd);
592 __raw_writeq(0, __x_trig_page(xd));
825 static bool xive_irq_trigger(struct xive_irq_data *xd)
828 if (WARN_ON(xd->flags & XIVE_IRQ_FLAG_LSI))
832 if (WARN_ON(!xd->trig_mmio))
835 out_be64(xd->trig_mmio, 0);
920 struct xive_irq_data *xd = irq_data_get_irq_handler_data(d);
922 xive_vm_esb_load(xd, XIVE_ESB_SET_PQ_01);
923 vcpu->arch.xive_esc_raddr = xd->eoi_page;
924 vcpu->arch.xive_esc_vaddr = (__force u64)xd->eoi_mmio;
925 xd->flags |= XIVE_IRQ_FLAG_NO_EOI;
1088 struct xive_irq_data *xd;
1113 kvmppc_xive_select_irq(state, &hw_num, &xd);
1116 val = xive_vm_esb_load(xd, XIVE_ESB_SET_PQ_10);
1148 struct xive_irq_data *xd;
1156 kvmppc_xive_select_irq(state, &hw_num, &xd);
1160 xive_vm_esb_load(xd, XIVE_ESB_SET_PQ_11);
1168 xive_vm_source_eoi(hw_num, xd);
1791 struct xive_irq_data *xd = irq_data_get_irq_handler_data(d);
1798 xd->stale_p = false;
1801 xd->stale_p = true;
2610 static void kvmppc_xive_cleanup_irq(u32 hw_num, struct xive_irq_data *xd)
2612 xive_vm_esb_load(xd, XIVE_ESB_SET_PQ_01);
2833 struct xive_irq_data *xd =
2835 u64 pq = xive_vm_esb_load(xd, XIVE_ESB_GET);
2841 xd->eoi_page);
2856 struct xive_irq_data *xd;
2863 kvmppc_xive_select_irq(state, &hw_num, &xd);
2865 pq = xive_vm_esb_load(xd, XIVE_ESB_GET);
2868 xd->src_chip);