Skip to content

Commit

Permalink
[POWERPC] Make IOMMU code safe for > 132 GB of memory
Browse files Browse the repository at this point in the history
Currently the IOMMU code allocates one page for the segment table, that
isn't safe if we have more than 132 GB of RAM.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Acked-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Michael Ellerman authored and Paul Mackerras committed Jan 25, 2008
1 parent bd83fbd commit 3ca6644
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions arch/powerpc/platforms/cell/iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,8 @@ static void cell_iommu_setup_hardware(struct cbe_iommu *iommu, unsigned long siz
{
struct page *page;
int ret, i;
unsigned long reg, segments, pages_per_segment, ptab_size, n_pte_pages;
unsigned long xlate_base;
unsigned long reg, segments, pages_per_segment, ptab_size, stab_size,
n_pte_pages, xlate_base;
unsigned int virq;

if (cell_iommu_find_ioc(iommu->nid, &xlate_base))
Expand All @@ -328,7 +328,8 @@ static void cell_iommu_setup_hardware(struct cbe_iommu *iommu, unsigned long siz
__FUNCTION__, iommu->nid, segments, pages_per_segment);

/* set up the segment table */
page = alloc_pages_node(iommu->nid, GFP_KERNEL, 0);
stab_size = segments * sizeof(unsigned long);
page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(stab_size));
BUG_ON(!page);
iommu->stab = page_address(page);
clear_page(iommu->stab);
Expand Down

0 comments on commit 3ca6644

Please sign in to comment.