Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/xive: Remove P9 DD1 flag XIVE_IRQ_FLAG_SHIFT_BUG

This flag was used to support the PHB4 LSIs on P9 DD1 and we have
stopped supporting this CPU when DD2 came out. See skiboot commit:

https://github.com/open-power/skiboot/commit/0b0d15e3c170

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201210171450.1933725-9-clg@kaod.org

authored by

Cédric Le Goater and committed by
Michael Ellerman
4cc0e36d 7b3b3de3

+2 -19
+1 -1
arch/powerpc/include/asm/opal-api.h
··· 1091 1091 OPAL_XIVE_IRQ_TRIGGER_PAGE = 0x00000001, 1092 1092 OPAL_XIVE_IRQ_STORE_EOI = 0x00000002, 1093 1093 OPAL_XIVE_IRQ_LSI = 0x00000004, 1094 - OPAL_XIVE_IRQ_SHIFT_BUG = 0x00000008, 1094 + OPAL_XIVE_IRQ_SHIFT_BUG = 0x00000008, /* P9 DD1.0 workaround */ 1095 1095 OPAL_XIVE_IRQ_MASK_VIA_FW = 0x00000010, 1096 1096 OPAL_XIVE_IRQ_EOI_VIA_FW = 0x00000020, 1097 1097 };
+1 -1
arch/powerpc/include/asm/xive.h
··· 60 60 }; 61 61 #define XIVE_IRQ_FLAG_STORE_EOI 0x01 62 62 #define XIVE_IRQ_FLAG_LSI 0x02 63 - #define XIVE_IRQ_FLAG_SHIFT_BUG 0x04 63 + /* #define XIVE_IRQ_FLAG_SHIFT_BUG 0x04 */ /* P9 DD1.0 workaround */ 64 64 #define XIVE_IRQ_FLAG_MASK_FW 0x08 65 65 #define XIVE_IRQ_FLAG_EOI_FW 0x10 66 66 #define XIVE_IRQ_FLAG_H_INT_ESB 0x20
-3
arch/powerpc/kvm/book3s_xive_native.c
··· 37 37 * ordering. 38 38 */ 39 39 40 - if (xd->flags & XIVE_IRQ_FLAG_SHIFT_BUG) 41 - offset |= offset << 4; 42 - 43 40 val = in_be64(xd->eoi_mmio + offset); 44 41 return (u8)val; 45 42 }
-3
arch/powerpc/kvm/book3s_xive_template.c
··· 61 61 if (offset == XIVE_ESB_SET_PQ_10 && xd->flags & XIVE_IRQ_FLAG_STORE_EOI) 62 62 offset |= XIVE_ESB_LD_ST_MO; 63 63 64 - if (xd->flags & XIVE_IRQ_FLAG_SHIFT_BUG) 65 - offset |= offset << 4; 66 - 67 64 val =__x_readq(__x_eoi_page(xd) + offset); 68 65 #ifdef __LITTLE_ENDIAN__ 69 66 val >>= 64-8;
-9
arch/powerpc/sysdev/xive/common.c
··· 200 200 if (offset == XIVE_ESB_SET_PQ_10 && xd->flags & XIVE_IRQ_FLAG_STORE_EOI) 201 201 offset |= XIVE_ESB_LD_ST_MO; 202 202 203 - /* Handle HW errata */ 204 - if (xd->flags & XIVE_IRQ_FLAG_SHIFT_BUG) 205 - offset |= offset << 4; 206 - 207 203 if ((xd->flags & XIVE_IRQ_FLAG_H_INT_ESB) && xive_ops->esb_rw) 208 204 val = xive_ops->esb_rw(xd->hw_irq, offset, 0, 0); 209 205 else ··· 210 214 211 215 static void xive_esb_write(struct xive_irq_data *xd, u32 offset, u64 data) 212 216 { 213 - /* Handle HW errata */ 214 - if (xd->flags & XIVE_IRQ_FLAG_SHIFT_BUG) 215 - offset |= offset << 4; 216 - 217 217 if ((xd->flags & XIVE_IRQ_FLAG_H_INT_ESB) && xive_ops->esb_rw) 218 218 xive_ops->esb_rw(xd->hw_irq, offset, data, 1); 219 219 else ··· 1304 1312 } xive_irq_flags[] = { 1305 1313 { XIVE_IRQ_FLAG_STORE_EOI, "STORE_EOI" }, 1306 1314 { XIVE_IRQ_FLAG_LSI, "LSI" }, 1307 - { XIVE_IRQ_FLAG_SHIFT_BUG, "SHIFT_BUG" }, 1308 1315 { XIVE_IRQ_FLAG_MASK_FW, "MASK_FW" }, 1309 1316 { XIVE_IRQ_FLAG_EOI_FW, "EOI_FW" }, 1310 1317 { XIVE_IRQ_FLAG_H_INT_ESB, "H_INT_ESB" },
-2
arch/powerpc/sysdev/xive/native.c
··· 64 64 data->flags |= XIVE_IRQ_FLAG_STORE_EOI; 65 65 if (opal_flags & OPAL_XIVE_IRQ_LSI) 66 66 data->flags |= XIVE_IRQ_FLAG_LSI; 67 - if (opal_flags & OPAL_XIVE_IRQ_SHIFT_BUG) 68 - data->flags |= XIVE_IRQ_FLAG_SHIFT_BUG; 69 67 if (opal_flags & OPAL_XIVE_IRQ_MASK_VIA_FW) 70 68 data->flags |= XIVE_IRQ_FLAG_MASK_FW; 71 69 if (opal_flags & OPAL_XIVE_IRQ_EOI_VIA_FW)