Loading arch/ppc64/kernel/head.S +2 −2 Original line number Diff line number Diff line Loading @@ -96,12 +96,12 @@ END_FTR_SECTION(0, 1) .llong hvReleaseData-KERNELBASE /* * At offset 0x28 and 0x30 are offsets to the msChunks * At offset 0x28 and 0x30 are offsets to the mschunks_map * array (used by the iSeries LPAR debugger to do translation * between physical addresses and absolute addresses) and * to the pidhash table (also used by the debugger) */ .llong msChunks-KERNELBASE .llong mschunks_map-KERNELBASE .llong 0 /* pidhash-KERNELBASE SFRXXX */ /* Offset 0x38 - Pointer to start of embedded System.map */ Loading arch/ppc64/kernel/iSeries_setup.c +9 −8 Original line number Diff line number Diff line Loading @@ -415,20 +415,20 @@ static void __init iSeries_init_early(void) DBG(" <- iSeries_init_early()\n"); } struct msChunks msChunks = { struct mschunks_map mschunks_map = { /* XXX We don't use these, but Piranha might need them. */ .chunk_size = MSCHUNKS_CHUNK_SIZE, .chunk_shift = MSCHUNKS_CHUNK_SHIFT, .chunk_mask = MSCHUNKS_OFFSET_MASK, }; EXPORT_SYMBOL(msChunks); EXPORT_SYMBOL(mschunks_map); void msChunks_alloc(unsigned long num_chunks) void mschunks_alloc(unsigned long num_chunks) { klimit = _ALIGN(klimit, sizeof(u32)); msChunks.abs = (u32 *)klimit; mschunks_map.mapping = (u32 *)klimit; klimit += num_chunks * sizeof(u32); msChunks.num_chunks = num_chunks; mschunks_map.num_chunks = num_chunks; } /* Loading Loading @@ -468,7 +468,7 @@ static void __init build_iSeries_Memory_Map(void) /* Chunk size on iSeries is 256K bytes */ totalChunks = (u32)HvLpConfig_getMsChunks(); msChunks_alloc(totalChunks); mschunks_alloc(totalChunks); /* * Get absolute address of our load area Loading Loading @@ -505,7 +505,7 @@ static void __init build_iSeries_Memory_Map(void) printk("Load area size %dK\n", loadAreaSize * 256); for (nextPhysChunk = 0; nextPhysChunk < loadAreaSize; ++nextPhysChunk) msChunks.abs[nextPhysChunk] = mschunks_map.mapping[nextPhysChunk] = loadAreaFirstChunk + nextPhysChunk; /* Loading Loading @@ -571,7 +571,8 @@ static void __init build_iSeries_Memory_Map(void) (absChunk > hptLastChunk)) && ((absChunk < loadAreaFirstChunk) || (absChunk > loadAreaLastChunk))) { msChunks.abs[nextPhysChunk] = absChunk; mschunks_map.mapping[nextPhysChunk] = absChunk; ++nextPhysChunk; } } Loading include/asm-ppc64/abs_addr.h +7 −8 Original line number Diff line number Diff line Loading @@ -17,18 +17,17 @@ #include <asm/prom.h> #include <asm/lmb.h> struct msChunks { #ifdef CONFIG_MSCHUNKS struct mschunks_map { unsigned long num_chunks; unsigned long chunk_size; unsigned long chunk_shift; unsigned long chunk_mask; u32 *abs; u32 *mapping; }; extern struct msChunks msChunks; #ifdef CONFIG_MSCHUNKS extern struct mschunks_map mschunks_map; /* Chunks are 256 KB */ #define MSCHUNKS_CHUNK_SHIFT (18) Loading @@ -52,10 +51,10 @@ static inline unsigned long chunk_offset(unsigned long addr) static inline unsigned long abs_chunk(unsigned long pchunk) { if (pchunk >= msChunks.num_chunks) if (pchunk >= mschunks_map.num_chunks) return pchunk; return msChunks.abs[pchunk]; return mschunks_map.mapping[pchunk]; } /* A macro so it can take pointers or unsigned long. */ Loading Loading
arch/ppc64/kernel/head.S +2 −2 Original line number Diff line number Diff line Loading @@ -96,12 +96,12 @@ END_FTR_SECTION(0, 1) .llong hvReleaseData-KERNELBASE /* * At offset 0x28 and 0x30 are offsets to the msChunks * At offset 0x28 and 0x30 are offsets to the mschunks_map * array (used by the iSeries LPAR debugger to do translation * between physical addresses and absolute addresses) and * to the pidhash table (also used by the debugger) */ .llong msChunks-KERNELBASE .llong mschunks_map-KERNELBASE .llong 0 /* pidhash-KERNELBASE SFRXXX */ /* Offset 0x38 - Pointer to start of embedded System.map */ Loading
arch/ppc64/kernel/iSeries_setup.c +9 −8 Original line number Diff line number Diff line Loading @@ -415,20 +415,20 @@ static void __init iSeries_init_early(void) DBG(" <- iSeries_init_early()\n"); } struct msChunks msChunks = { struct mschunks_map mschunks_map = { /* XXX We don't use these, but Piranha might need them. */ .chunk_size = MSCHUNKS_CHUNK_SIZE, .chunk_shift = MSCHUNKS_CHUNK_SHIFT, .chunk_mask = MSCHUNKS_OFFSET_MASK, }; EXPORT_SYMBOL(msChunks); EXPORT_SYMBOL(mschunks_map); void msChunks_alloc(unsigned long num_chunks) void mschunks_alloc(unsigned long num_chunks) { klimit = _ALIGN(klimit, sizeof(u32)); msChunks.abs = (u32 *)klimit; mschunks_map.mapping = (u32 *)klimit; klimit += num_chunks * sizeof(u32); msChunks.num_chunks = num_chunks; mschunks_map.num_chunks = num_chunks; } /* Loading Loading @@ -468,7 +468,7 @@ static void __init build_iSeries_Memory_Map(void) /* Chunk size on iSeries is 256K bytes */ totalChunks = (u32)HvLpConfig_getMsChunks(); msChunks_alloc(totalChunks); mschunks_alloc(totalChunks); /* * Get absolute address of our load area Loading Loading @@ -505,7 +505,7 @@ static void __init build_iSeries_Memory_Map(void) printk("Load area size %dK\n", loadAreaSize * 256); for (nextPhysChunk = 0; nextPhysChunk < loadAreaSize; ++nextPhysChunk) msChunks.abs[nextPhysChunk] = mschunks_map.mapping[nextPhysChunk] = loadAreaFirstChunk + nextPhysChunk; /* Loading Loading @@ -571,7 +571,8 @@ static void __init build_iSeries_Memory_Map(void) (absChunk > hptLastChunk)) && ((absChunk < loadAreaFirstChunk) || (absChunk > loadAreaLastChunk))) { msChunks.abs[nextPhysChunk] = absChunk; mschunks_map.mapping[nextPhysChunk] = absChunk; ++nextPhysChunk; } } Loading
include/asm-ppc64/abs_addr.h +7 −8 Original line number Diff line number Diff line Loading @@ -17,18 +17,17 @@ #include <asm/prom.h> #include <asm/lmb.h> struct msChunks { #ifdef CONFIG_MSCHUNKS struct mschunks_map { unsigned long num_chunks; unsigned long chunk_size; unsigned long chunk_shift; unsigned long chunk_mask; u32 *abs; u32 *mapping; }; extern struct msChunks msChunks; #ifdef CONFIG_MSCHUNKS extern struct mschunks_map mschunks_map; /* Chunks are 256 KB */ #define MSCHUNKS_CHUNK_SHIFT (18) Loading @@ -52,10 +51,10 @@ static inline unsigned long chunk_offset(unsigned long addr) static inline unsigned long abs_chunk(unsigned long pchunk) { if (pchunk >= msChunks.num_chunks) if (pchunk >= mschunks_map.num_chunks) return pchunk; return msChunks.abs[pchunk]; return mschunks_map.mapping[pchunk]; } /* A macro so it can take pointers or unsigned long. */ Loading