Skip to content

Commit

Permalink
[PATCH] x86-64: Reverse order of bootmem lists
Browse files Browse the repository at this point in the history
This leads to bootmem allocating first from node 0 instead
of from the last node.  This avoids swiotlb allocating on the last node, which
doesn't really work on a machine with >4GB.

Note: there is a better patch around from someone else that gets
rid of the pgdat list completely.

Signed-off-by: Andi Kleen <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Andi Kleen authored and Linus Torvalds committed Sep 12, 2005
1 parent 6142891 commit 5d3d0f7
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions mm/bootmem.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,17 @@ static unsigned long __init init_bootmem_core (pg_data_t *pgdat,
{
bootmem_data_t *bdata = pgdat->bdata;
unsigned long mapsize = ((end - start)+7)/8;

pgdat->pgdat_next = pgdat_list;
pgdat_list = pgdat;
static struct pglist_data *pgdat_last;

pgdat->pgdat_next = NULL;
/* Add new nodes last so that bootmem always starts
searching in the first nodes, not the last ones */
if (pgdat_last)
pgdat_last->pgdat_next = pgdat;
else {
pgdat_list = pgdat;
pgdat_last = pgdat;
}

mapsize = ALIGN(mapsize, sizeof(long));
bdata->node_bootmem_map = phys_to_virt(mapstart << PAGE_SHIFT);
Expand Down

0 comments on commit 5d3d0f7

Please sign in to comment.