NUMA: support multiple physical allocators
This commit is contained in:
@ -72,8 +72,11 @@ struct ihk_mc_memory_node {
|
||||
|
||||
unsigned long ihk_mc_get_memory_address(enum ihk_mc_gma_type, int);
|
||||
|
||||
void ihk_mc_reserve_arch_pages(unsigned long start, unsigned long end,
|
||||
void (*cb)(unsigned long, unsigned long, int));
|
||||
struct ihk_page_allocator_desc *pa_allocator;
|
||||
void ihk_mc_reserve_arch_pages(struct ihk_page_allocator_desc *pa_allocator,
|
||||
unsigned long start, unsigned long end,
|
||||
void (*cb)(struct ihk_page_allocator_desc *,
|
||||
unsigned long, unsigned long, int));
|
||||
|
||||
struct ihk_mc_pa_ops {
|
||||
void *(*alloc_page)(int, int, enum ihk_mc_ap_flag);
|
||||
|
||||
@ -14,14 +14,24 @@
|
||||
#ifndef __HEADER_GENERIC_IHK_PAGE_ALLOC
|
||||
#define __HEADER_GENERIC_IHK_PAGE_ALLOC
|
||||
|
||||
#include <list.h>
|
||||
|
||||
/* XXX: Physical memory management shouldn't be part of IHK */
|
||||
struct ihk_mc_numa_node {
|
||||
int id;
|
||||
int linux_numa_id;
|
||||
int type;
|
||||
struct list_head allocators;
|
||||
};
|
||||
|
||||
struct ihk_page_allocator_desc {
|
||||
unsigned long start;
|
||||
unsigned long start, end;
|
||||
unsigned int last;
|
||||
unsigned int count;
|
||||
unsigned int flag;
|
||||
unsigned int shift;
|
||||
ihk_spinlock_t lock;
|
||||
unsigned int pad;
|
||||
struct list_head list;
|
||||
|
||||
unsigned long map[0];
|
||||
};
|
||||
|
||||
@ -64,13 +64,14 @@ void *__ihk_pagealloc_init(unsigned long start, unsigned long size,
|
||||
memset(desc, 0, descsize * PAGE_SIZE);
|
||||
|
||||
desc->start = start;
|
||||
desc->end = start + size;
|
||||
desc->last = 0;
|
||||
desc->count = mapaligned >> 3;
|
||||
desc->shift = page_shift;
|
||||
desc->flag = flag;
|
||||
|
||||
kprintf("Page allocator: %lx - %lx (%d)\n", start, start + size,
|
||||
page_shift);
|
||||
//kprintf("page allocator @ %lx - %lx (%d)\n", start, start + size,
|
||||
// page_shift);
|
||||
|
||||
ihk_mc_spinlock_init(&desc->lock);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user