[PATCH 2/3] Allocate the hash table under 1G on cell
Benjamin Herrenschmidt
benh at kernel.crashing.org
Tue Feb 5 11:23:00 EST 2008
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 <michael at ellerman.id.au>
Acked-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> ---
> 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);
More information about the Linuxppc-dev
mailing list