diff mbox

[17/32] xive: Move xive_cpu_state up and clean up layout

Message ID 1479780814-6162-17-git-send-email-benh@kernel.crashing.org
State Superseded
Headers show

Commit Message

Benjamin Herrenschmidt Nov. 22, 2016, 2:13 a.m. UTC
This contains both fields used generally by XIVE for physical
processors (including in exploitation mode) such as the reference
to the physical VPs, and fields specific to the XICS emulation code.

Make them separate and rename eqidx to eqptr as "idx" generally
represent structure indices inside of VSDs and we are soon going to
introduce an eq_idx field.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
 hw/xive.c | 58 ++++++++++++++++++++++++++++++++--------------------------
 1 file changed, 32 insertions(+), 26 deletions(-)
diff mbox

Patch

diff --git a/hw/xive.c b/hw/xive.c
index b6ca24f..35718ad 100644
--- a/hw/xive.c
+++ b/hw/xive.c
@@ -246,6 +246,30 @@  struct xive_src {
 	uint32_t			flags;
 };
 
+struct xive_cpu_state {
+	struct xive	*xive;
+	void		*tm_ring1;
+
+	/* Base HW VP */
+	uint32_t	vp_blk;
+	uint32_t	vp_idx;
+
+	/* Pre-allocated IPI */
+	uint32_t	ipi_irq;
+
+	/* Use for XICS emulation */
+	struct lock	lock;
+	uint8_t		cppr;
+	uint8_t		mfrr;
+	uint8_t		pending;
+	uint8_t		prev_cppr;
+	uint32_t	*eqbuf;
+	uint32_t	eqptr;
+	uint32_t	eqmsk;
+	uint8_t		eqgen;
+	void		*eqmmio;
+};
+
 struct xive {
 	uint32_t	chip_id;
 	uint32_t	block_id;
@@ -1957,24 +1981,6 @@  static void init_one_xive(struct dt_node *np)
 /*
  * XICS emulation
  */
-struct xive_cpu_state {
-	struct xive	*xive;
-	void		*tm_ring1;
-	uint32_t	vp_blk;
-	uint32_t	vp_idx;
-	struct lock	lock;
-	uint8_t		cppr;
-	uint8_t		mfrr;
-	uint8_t		pending;
-	uint8_t		prev_cppr;
-	uint32_t	*eqbuf;
-	uint32_t	eqidx;
-	uint32_t	eqmsk;
-	uint8_t		eqgen;
-	void		*eqmmio;
-	uint32_t	ipi_irq;
-};
-
 static void xive_ipi_init(struct xive *x, struct cpu_thread *cpu)
 {
 	struct xive_cpu_state *xs = cpu->xstate;
@@ -2092,7 +2098,7 @@  static void xive_init_cpu(struct cpu_thread *c)
 
 	/* XXX Find the one eq buffer associated with the VP, for now same BLK/ID */
 	xs->eqbuf = xive_get_eq_buf(x, xs->vp_blk, xs->vp_idx);
-	xs->eqidx = 0;
+	xs->eqptr = 0;
 	xs->eqmsk = (0x10000/4) - 1;
 	xs->eqgen = false;
 	xs->eqmmio = x->eq_mmio + xs->vp_idx * 0x20000;
@@ -2134,17 +2140,17 @@  static uint32_t xive_read_eq(struct xive_cpu_state *xs, bool just_peek)
 
 	xive_cpu_vdbg(this_cpu(), "  EQ %s... IDX=%x MSK=%x G=%d\n",
 		      just_peek ? "peek" : "read",
-		      xs->eqidx, xs->eqmsk, xs->eqgen);
-	cur = xs->eqbuf[xs->eqidx];
+		      xs->eqptr, xs->eqmsk, xs->eqgen);
+	cur = xs->eqbuf[xs->eqptr];
 	xive_cpu_vdbg(this_cpu(), "    cur: %08x [%08x %08x %08x ...]\n", cur,
-		      xs->eqbuf[(xs->eqidx + 1) & xs->eqmsk],
-		      xs->eqbuf[(xs->eqidx + 2) & xs->eqmsk],
-		      xs->eqbuf[(xs->eqidx + 3) & xs->eqmsk]);
+		      xs->eqbuf[(xs->eqptr + 1) & xs->eqmsk],
+		      xs->eqbuf[(xs->eqptr + 2) & xs->eqmsk],
+		      xs->eqbuf[(xs->eqptr + 3) & xs->eqmsk]);
 	if ((cur >> 31) == xs->eqgen)
 		return 0;
 	if (!just_peek) {
-		xs->eqidx = (xs->eqidx + 1) & xs->eqmsk;
-		if (xs->eqidx == 0)
+		xs->eqptr = (xs->eqptr + 1) & xs->eqmsk;
+		if (xs->eqptr == 0)
 			xs->eqgen = !xs->eqgen;
 	}
 	return cur & 0x00ffffff;