aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
Diffstat (limited to 'hw')
-rw-r--r--hw/phb4.c1
-rw-r--r--hw/xive.c7
2 files changed, 1 insertions, 7 deletions
diff --git a/hw/phb4.c b/hw/phb4.c
index 3c71427..f02e675 100644
--- a/hw/phb4.c
+++ b/hw/phb4.c
@@ -5738,6 +5738,7 @@ static void phb4_create(struct dt_node *np)
xive_register_hw_source(p->base_msi, p->num_irqs - 8, 16,
p->int_mmio, irq_flags, NULL, NULL);
+ /* XIVE_SRC_SHIFT_BUG is a DD1 workaround */
xive_register_hw_source(p->base_lsi, 8, 16,
p->int_mmio + ((p->num_irqs - 8) << 16),
XIVE_SRC_LSI | XIVE_SRC_SHIFT_BUG,
diff --git a/hw/xive.c b/hw/xive.c
index 4a2b0df..84c1c10 100644
--- a/hw/xive.c
+++ b/hw/xive.c
@@ -2219,9 +2219,6 @@ static void xive_update_irq_mask(struct xive_src *s, uint32_t idx, bool masked)
else
offset = 0xc00; /* PQ = 00 */
- if (s->flags & XIVE_SRC_SHIFT_BUG)
- offset <<= 4;
-
in_be64(mmio_base + offset);
}
@@ -2404,8 +2401,6 @@ static void __xive_source_eoi(struct irq_source *is, uint32_t isn)
in_be64(mmio_base);
else {
offset = 0xc00;
- if (s->flags & XIVE_SRC_SHIFT_BUG)
- offset <<= 4;
eoi_val = in_be64(mmio_base + offset);
xive_vdbg(s->xive, "ISN: %08x EOI=%llx\n",
isn, eoi_val);
@@ -3602,8 +3597,6 @@ static uint64_t xive_convert_irq_flags(uint64_t iflags)
if (iflags & XIVE_SRC_LSI)
oflags |= OPAL_XIVE_IRQ_LSI;
- if (iflags & XIVE_SRC_SHIFT_BUG)
- oflags |= OPAL_XIVE_IRQ_SHIFT_BUG;
return oflags;
}