Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 6206
b: refs/heads/master
c: 34c8f69
h: refs/heads/master
v: v3
  • Loading branch information
Michael Ellerman authored and Paul Mackerras committed Aug 29, 2005
1 parent 893fa3d commit b83bb82
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 27 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 38e85dc18036804ada8698951cfad4e6114fec1b
refs/heads/master: 34c8f6961fc601294a38c5bd5ca12131b2e52674
18 changes: 0 additions & 18 deletions trunk/arch/ppc64/kernel/LparData.c
Original file line number Diff line number Diff line change
Expand Up @@ -225,21 +225,3 @@ struct ItVpdAreas itVpdAreas = {
0,0
}
};

struct msChunks msChunks;
EXPORT_SYMBOL(msChunks);

unsigned long
msChunks_alloc(unsigned long mem, unsigned long num_chunks, unsigned long chunk_size)
{
_msChunks->num_chunks = num_chunks;
_msChunks->chunk_size = chunk_size;
_msChunks->chunk_shift = __ilog2(chunk_size);
_msChunks->chunk_mask = (1UL<<_msChunks->chunk_shift)-1;

mem = _ALIGN(mem, sizeof(msChunks_entry));
_msChunks->abs = (msChunks_entry *)mem;
mem += num_chunks * sizeof(msChunks_entry);

return mem;
}
20 changes: 18 additions & 2 deletions trunk/arch/ppc64/kernel/iSeries_setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,22 @@ static void __init iSeries_init_early(void)
DBG(" <- iSeries_init_early()\n");
}

struct msChunks msChunks = {
/* 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);

void msChunks_alloc(unsigned long num_chunks)
{
klimit = _ALIGN(klimit, sizeof(u32));
msChunks.abs = (u32 *)klimit;
klimit += num_chunks * sizeof(u32);
msChunks.num_chunks = num_chunks;
}

/*
* The iSeries may have very large memories ( > 128 GB ) and a partition
* may get memory in "chunks" that may be anywhere in the 2**52 real
Expand Down Expand Up @@ -452,7 +468,7 @@ static void __init build_iSeries_Memory_Map(void)

/* Chunk size on iSeries is 256K bytes */
totalChunks = (u32)HvLpConfig_getMsChunks();
klimit = msChunks_alloc(klimit, totalChunks, 1UL << 18);
msChunks_alloc(totalChunks);

/*
* Get absolute address of our load area
Expand Down Expand Up @@ -498,7 +514,7 @@ static void __init build_iSeries_Memory_Map(void)
*/
hptFirstChunk = (u32)addr_to_chunk(HvCallHpt_getHptAddress());
hptSizePages = (u32)HvCallHpt_getHptPages();
hptSizeChunks = hptSizePages >> (msChunks.chunk_shift - PAGE_SHIFT);
hptSizeChunks = hptSizePages >> (MSCHUNKS_CHUNK_SHIFT - PAGE_SHIFT);
hptLastChunk = hptFirstChunk + hptSizeChunks - 1;

printk("HPT absolute addr = %016lx, size = %dK\n",
Expand Down
15 changes: 9 additions & 6 deletions trunk/include/asm-ppc64/abs_addr.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,34 +17,37 @@
#include <asm/prom.h>
#include <asm/lmb.h>

typedef u32 msChunks_entry;
struct msChunks {
unsigned long num_chunks;
unsigned long chunk_size;
unsigned long chunk_shift;
unsigned long chunk_mask;
msChunks_entry *abs;
u32 *abs;
};

extern struct msChunks msChunks;

extern unsigned long msChunks_alloc(unsigned long, unsigned long, unsigned long);

#ifdef CONFIG_MSCHUNKS

/* Chunks are 256 KB */
#define MSCHUNKS_CHUNK_SHIFT (18)
#define MSCHUNKS_CHUNK_SIZE (1UL << MSCHUNKS_CHUNK_SHIFT)
#define MSCHUNKS_OFFSET_MASK (MSCHUNKS_CHUNK_SIZE - 1)

static inline unsigned long chunk_to_addr(unsigned long chunk)
{
return chunk << msChunks.chunk_shift;
return chunk << MSCHUNKS_CHUNK_SHIFT;
}

static inline unsigned long addr_to_chunk(unsigned long addr)
{
return addr >> msChunks.chunk_shift;
return addr >> MSCHUNKS_CHUNK_SHIFT;
}

static inline unsigned long chunk_offset(unsigned long addr)
{
return addr & msChunks.chunk_mask;
return addr & MSCHUNKS_OFFSET_MASK;
}

static inline unsigned long abs_chunk(unsigned long pchunk)
Expand Down

0 comments on commit b83bb82

Please sign in to comment.