On Fri, 2008-01-25 at 21:45 +1100, Michael Ellerman wrote: > In order to support our IOMMU performance trick, we need the hash table to be > inside the DMA window. This is usually 2G, but let's make sure the hash table > is under 1G as that will satisfy the IOMMU requirements and also means the > hash table will be on node 0. > > Signed-off-by: Michael Ellerman <[EMAIL PROTECTED]>
Acked-by: Benjamin Herrenschmidt <[EMAIL PROTECTED]> > --- > arch/powerpc/mm/hash_utils_64.c | 12 +++++++++--- > 1 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c > index 9326a69..487c5e2 100644 > --- a/arch/powerpc/mm/hash_utils_64.c > +++ b/arch/powerpc/mm/hash_utils_64.c > @@ -471,7 +471,7 @@ void __init htab_initialize(void) > unsigned long table; > unsigned long pteg_count; > unsigned long mode_rw; > - unsigned long base = 0, size = 0; > + unsigned long base = 0, size = 0, limit; > int i; > > extern unsigned long tce_alloc_start, tce_alloc_end; > @@ -505,9 +505,15 @@ void __init htab_initialize(void) > _SDR1 = 0; > } else { > /* Find storage for the HPT. Must be contiguous in > - * the absolute address space. > + * the absolute address space. On cell we want it to be > + * in the first 1 Gig. > */ > - table = lmb_alloc(htab_size_bytes, htab_size_bytes); > + if (machine_is(cell)) > + limit = 0x40000000; > + else > + limit = 0; > + > + table = lmb_alloc_base(htab_size_bytes, htab_size_bytes, limit); > > DBG("Hash table allocated at %lx, size: %lx\n", table, > htab_size_bytes); _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev