aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/ppc64/kernel/LparData.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/arch/ppc64/kernel/LparData.c b/arch/ppc64/kernel/LparData.c
index 3b9a2600fec2..0ed77b2f7d5f 100644
--- a/arch/ppc64/kernel/LparData.c
+++ b/arch/ppc64/kernel/LparData.c
@@ -229,24 +229,16 @@ struct ItVpdAreas itVpdAreas = {
229struct msChunks msChunks; 229struct msChunks msChunks;
230EXPORT_SYMBOL(msChunks); 230EXPORT_SYMBOL(msChunks);
231 231
232/* Depending on whether this is called from iSeries or pSeries setup
233 * code, the location of the msChunks struct may or may not have
234 * to be reloc'd, so we force the caller to do that for us by passing
235 * in a pointer to the structure.
236 */
237unsigned long 232unsigned long
238msChunks_alloc(unsigned long mem, unsigned long num_chunks, unsigned long chunk_size) 233msChunks_alloc(unsigned long mem, unsigned long num_chunks, unsigned long chunk_size)
239{ 234{
240 unsigned long offset = reloc_offset();
241 struct msChunks *_msChunks = PTRRELOC(&msChunks);
242
243 _msChunks->num_chunks = num_chunks; 235 _msChunks->num_chunks = num_chunks;
244 _msChunks->chunk_size = chunk_size; 236 _msChunks->chunk_size = chunk_size;
245 _msChunks->chunk_shift = __ilog2(chunk_size); 237 _msChunks->chunk_shift = __ilog2(chunk_size);
246 _msChunks->chunk_mask = (1UL<<_msChunks->chunk_shift)-1; 238 _msChunks->chunk_mask = (1UL<<_msChunks->chunk_shift)-1;
247 239
248 mem = _ALIGN(mem, sizeof(msChunks_entry)); 240 mem = _ALIGN(mem, sizeof(msChunks_entry));
249 _msChunks->abs = (msChunks_entry *)(mem + offset); 241 _msChunks->abs = (msChunks_entry *)mem;
250 mem += num_chunks * sizeof(msChunks_entry); 242 mem += num_chunks * sizeof(msChunks_entry);
251 243
252 return mem; 244 return mem;