Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 35572
b: refs/heads/master
c: 9102330
h: refs/heads/master
v: v3
  • Loading branch information
keith mannthey authored and Linus Torvalds committed Sep 26, 2006
1 parent 4d7cacf commit ae35635
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 10 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: b221385bc41d6789edde3d2fa0cb20d5045730eb
refs/heads/master: 91023300057e96de7f46e95166a3e02394ae72f9
3 changes: 2 additions & 1 deletion trunk/arch/i386/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
#include <asm/apic.h>
#include <asm/e820.h>
#include <asm/mpspec.h>
#include <asm/mmzone.h>
#include <asm/setup.h>
#include <asm/arch_hooks.h>
#include <asm/sections.h>
Expand Down Expand Up @@ -1258,7 +1259,7 @@ void __init setup_bootmem_allocator(void)
*/
find_smp_config();
#endif

numa_kva_reserve();
#ifdef CONFIG_BLK_DEV_INITRD
if (LOADER_TYPE && INITRD_START) {
if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
Expand Down
29 changes: 21 additions & 8 deletions trunk/arch/i386/mm/discontig.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,8 @@ void set_pmd_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags);

void *node_remap_end_vaddr[MAX_NUMNODES];
void *node_remap_alloc_vaddr[MAX_NUMNODES];

static unsigned long kva_start_pfn;
static unsigned long kva_pages;
/*
* FLAT - support for basic PC memory model with discontig enabled, essentially
* a single node with all available processors in it with a flat
Expand Down Expand Up @@ -286,7 +287,6 @@ unsigned long __init setup_memory(void)
{
int nid;
unsigned long system_start_pfn, system_max_low_pfn;
unsigned long reserve_pages;

/*
* When mapping a NUMA machine we allocate the node_mem_map arrays
Expand All @@ -298,14 +298,23 @@ unsigned long __init setup_memory(void)
find_max_pfn();
get_memcfg_numa();

reserve_pages = calculate_numa_remap_pages();
kva_pages = calculate_numa_remap_pages();

/* partially used pages are not usable - thus round upwards */
system_start_pfn = min_low_pfn = PFN_UP(init_pg_tables_end);

system_max_low_pfn = max_low_pfn = find_max_low_pfn() - reserve_pages;
printk("reserve_pages = %ld find_max_low_pfn() ~ %ld\n",
reserve_pages, max_low_pfn + reserve_pages);
kva_start_pfn = find_max_low_pfn() - kva_pages;

#ifdef CONFIG_BLK_DEV_INITRD
/* Numa kva area is below the initrd */
if (LOADER_TYPE && INITRD_START)
kva_start_pfn = PFN_DOWN(INITRD_START) - kva_pages;
#endif
kva_start_pfn -= kva_start_pfn & (PTRS_PER_PTE-1);

system_max_low_pfn = max_low_pfn = find_max_low_pfn();
printk("kva_start_pfn ~ %ld find_max_low_pfn() ~ %ld\n",
kva_start_pfn, max_low_pfn);
printk("max_pfn = %ld\n", max_pfn);
#ifdef CONFIG_HIGHMEM
highstart_pfn = highend_pfn = max_pfn;
Expand All @@ -323,7 +332,7 @@ unsigned long __init setup_memory(void)
(ulong) pfn_to_kaddr(max_low_pfn));
for_each_online_node(nid) {
node_remap_start_vaddr[nid] = pfn_to_kaddr(
highstart_pfn + node_remap_offset[nid]);
kva_start_pfn + node_remap_offset[nid]);
/* Init the node remap allocator */
node_remap_end_vaddr[nid] = node_remap_start_vaddr[nid] +
(node_remap_size[nid] * PAGE_SIZE);
Expand All @@ -338,7 +347,6 @@ unsigned long __init setup_memory(void)
}
printk("High memory starts at vaddr %08lx\n",
(ulong) pfn_to_kaddr(highstart_pfn));
vmalloc_earlyreserve = reserve_pages * PAGE_SIZE;
for_each_online_node(nid)
find_max_pfn_node(nid);

Expand All @@ -348,6 +356,11 @@ unsigned long __init setup_memory(void)
return max_low_pfn;
}

void __init numa_kva_reserve(void)
{
reserve_bootmem(PFN_PHYS(kva_start_pfn),PFN_PHYS(kva_pages));
}

void __init zone_sizes_init(void)
{
int nid;
Expand Down
6 changes: 6 additions & 0 deletions trunk/include/asm-i386/mmzone.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,16 @@ static inline void get_memcfg_numa(void)
}

extern int early_pfn_to_nid(unsigned long pfn);
extern void numa_kva_reserve(void);

#else /* !CONFIG_NUMA */

#define get_memcfg_numa get_memcfg_numa_flat
#define get_zholes_size(n) (0)

static inline void numa_kva_reserve(void)
{
}
#endif /* CONFIG_NUMA */

#ifdef CONFIG_DISCONTIGMEM
Expand Down

0 comments on commit ae35635

Please sign in to comment.