@@ -632,7 +632,8 @@ static void xive_init_eq(uint32_t vp_blk, uint32_t vp_idx,
eq->w7 = SETFIELD(EQ_W7_F0_PRIORITY, 0ul, prio);
eieio();
eq->w0 = EQ_W0_VALID | EQ_W0_ENQUEUE |
- SETFIELD(EQ_W0_QSIZE, 0ul, EQ_QSIZE_64K);
+ SETFIELD(EQ_W0_QSIZE, 0ul, EQ_QSIZE_64K) |
+ EQ_W0_FIRMWARE;
#ifdef EQ_ALWAYS_NOTIFY
eq->w0 |= EQ_W0_UCOND_NOTIFY;
#endif
@@ -355,6 +355,8 @@ struct xive_eq {
#define EQ_W0_ESCALATE_CTL PPC_BIT32(5)
#define EQ_W0_END_OF_INTR PPC_BIT32(6)
#define EQ_W0_QSIZE PPC_BITMASK32(12,15)
+#define EQ_W0_SW0 PPC_BIT32(16)
+#define EQ_W0_FIRMWARE EQ_W0_SW0 /* Owned by FW */
#define EQ_QSIZE_4K 0
#define EQ_QSIZE_64K 4
#define EQ_W0_HWDEP PPC_BITMASK32(24,31)
This will allow us to recognize them later when doing a reset and avoid freeing them Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> --- hw/xive.c | 3 ++- include/xive.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-)