Re: [PATCH] SLB shadow buffer
From: Milton Miller <hidden>
Date: 2006-08-08 01:17:38
On Mon Aug 7 2006 01:19:19 AM CDT, Michael Neuling wrote:
Updated with comments from Milton.
Better
+#define SHADOW_SLB_BOLTED_STACK_ESID \ + (SLBSHADOW_SAVEAREA + 0x10*(SLB_NUM_BOLTED-1)) +#define SHADOW_SLB_BOLTED_STACK_VSID \ + (SLBSHADOW_SAVEAREA + 0x10*(SLB_NUM_BOLTED-1) + 8) +
Still a bit of magic size, but not likely to change. Maybe an expicit define for the slot?
+ /* Update the last bolted SLB */ + ld r9,PACA_SLBSHADOWPTR(r13) + li r12,0 + std r12,SHADOW_SLB_BOLTED_STACK_ESID(r9) /* Clear ESID */ + std r7,SHADOW_SLB_BOLTED_STACK_VSID(r9) /* Save VSID */ + std r0,SHADOW_SLB_BOLTED_STACK_ESID(r9) /* Save ESID */ +
Still some leading spaces hiding
Index: linux-2.6-ozlabs/include/asm-powerpc/lppaca.h
quoted hunk
@@ -133,5 +135,22 @@ struct > > > lppaca { extern struct lppaca lppaca[]; +/* + * SLB shadow buffer structure as defined in the PAPR. The save_area + * contains adjacent ESID and VSID pairs for each shadowed SLB. The + * ESID is stored in the lower 64bits, then the VSID. + */ +struct slb_shadow { + u32 persistent; // Number of persistent SLBs x00-x03 + u32 buffer_length; // Total shadow buffer length x04-x07 + u64 reserved; // Alignment x08-x0f + struct { + u64 esid; + u64 vsid; + } save_area[SLB_NUM_BOLTED]; // x10-x40 +} ____cacheline_aligned; +
C comments ... or in the separate cleanup patch
+extern struct slb_shadow slb_shadow[]; + #endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_LPPACA_H */ Index: linux-2.6-ozlabs/include/asm-powerpc/paca.h =================================================================== /* accumulated system TB ticks */ u64 startpurr; /* PURR/TB value snapshot */ + + struct slb_shadow *slb_shadow_ptr; };
Do we need the extra line? (I haven't looked at the result) milton