From 9b82f1a52cb1fb6424ea9606e98a4acc42b7dccc Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Thu, 1 Sep 2016 15:57:25 +0900 Subject: [PATCH] use ihk_mc_alloc/free_pages() and eliminate direct calls to low level routines --- arch/x86/kernel/cpu.c | 4 ++-- kernel/cls.c | 2 +- kernel/fileobj.c | 2 +- kernel/include/page.h | 2 -- kernel/mem.c | 9 +++++---- kernel/shmobj.c | 2 +- lib/page_alloc.c | 4 ++-- 7 files changed, 12 insertions(+), 13 deletions(-) diff --git a/arch/x86/kernel/cpu.c b/arch/x86/kernel/cpu.c index 0a65e782..d3387ea9 100644 --- a/arch/x86/kernel/cpu.c +++ b/arch/x86/kernel/cpu.c @@ -1736,7 +1736,7 @@ int arch_setup_pvclock(void) npages = (size + PAGE_SIZE - 1) / PAGE_SIZE; pvti_npages = npages; - pvti = allocate_pages(npages, IHK_MC_AP_NOWAIT); + pvti = ihk_mc_alloc_pages(npages, IHK_MC_AP_NOWAIT); if (!pvti) { ekprintf("arch_setup_pvclock: allocate_pages failed.\n"); return -ENOMEM; @@ -1780,7 +1780,7 @@ int arch_get_cpu_mapping(struct cpu_mapping **buf, int *nelemsp) if (!cpu_mapping) { size = sizeof(*mapping) * num_processors; npages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; - mapping = allocate_pages(npages, IHK_MC_AP_NOWAIT); + mapping = ihk_mc_alloc_pages(npages, IHK_MC_AP_NOWAIT); if (!mapping) { error = -ENOMEM; ekprintf("arch_get_cpu_mapping:allocate_pages failed. %d\n", error); diff --git a/kernel/cls.c b/kernel/cls.c index 3d87535b..9c6f1f2d 100644 --- a/kernel/cls.c +++ b/kernel/cls.c @@ -32,7 +32,7 @@ void cpu_local_var_init(void) z = sizeof(struct cpu_local_var) * num_processors; z = (z + PAGE_SIZE - 1) >> PAGE_SHIFT; - clv = allocate_pages(z, IHK_MC_AP_CRITICAL); + clv = ihk_mc_alloc_pages(z, IHK_MC_AP_CRITICAL); memset(clv, 0, z * PAGE_SIZE); cpu_local_var_initialized = 1; } diff --git a/kernel/fileobj.c b/kernel/fileobj.c index 05beccf4..c976673f 100644 --- a/kernel/fileobj.c +++ b/kernel/fileobj.c @@ -281,7 +281,7 @@ static void fileobj_release(struct memobj *memobj) } page->mode = PM_NONE; - free_pages(phys_to_virt(page_to_phys(page)), 1); + ihk_mc_free_pages(phys_to_virt(page_to_phys(page)), 1); } obj_list_remove(free_obj); ihk_mc_spinlock_unlock_noirq(&fileobj_list_lock); diff --git a/kernel/include/page.h b/kernel/include/page.h index efdb928d..b9142e29 100644 --- a/kernel/include/page.h +++ b/kernel/include/page.h @@ -39,8 +39,6 @@ struct page *phys_to_page(uintptr_t phys); uintptr_t page_to_phys(struct page *page); int page_unmap(struct page *page); -void *allocate_pages(int npages, enum ihk_mc_ap_flag flag); -void free_pages(void *va, int npages); void begin_free_pages_pending(void); void finish_free_pages_pending(void); diff --git a/kernel/mem.c b/kernel/mem.c index f57935f9..48d8cfec 100644 --- a/kernel/mem.c +++ b/kernel/mem.c @@ -75,7 +75,8 @@ static void reserve_pages(unsigned long start, unsigned long end, int type) ihk_pagealloc_reserve(pa_allocator, start, end); } -void *allocate_aligned_pages(int npages, int p2align, enum ihk_mc_ap_flag flag) +static void *allocate_aligned_pages(int npages, int p2align, + enum ihk_mc_ap_flag flag) { unsigned long pa = ihk_pagealloc_alloc(pa_allocator, npages, p2align); /* all_pagealloc_alloc returns zero when error occured, @@ -87,12 +88,12 @@ void *allocate_aligned_pages(int npages, int p2align, enum ihk_mc_ap_flag flag) return NULL; } -void *allocate_pages(int npages, enum ihk_mc_ap_flag flag) +static void *allocate_pages(int npages, enum ihk_mc_ap_flag flag) { return allocate_aligned_pages(npages, PAGE_P2ALIGN, flag); } -void free_pages(void *va, int npages) +static void free_pages(void *va, int npages) { struct list_head *pendings = &cpu_local_var(pending_free_pages); struct page *page; @@ -511,7 +512,7 @@ static void page_init(void) allocsize = sizeof(struct page) * npages; allocpages = (allocsize + PAGE_SIZE - 1) >> PAGE_SHIFT; - pa_pages = allocate_pages(allocpages, IHK_MC_AP_CRITICAL); + pa_pages = ihk_mc_alloc_pages(allocpages, IHK_MC_AP_CRITICAL); memset(pa_pages, 0, allocsize); return; } diff --git a/kernel/shmobj.c b/kernel/shmobj.c index 67e42047..bd1bb7fd 100644 --- a/kernel/shmobj.c +++ b/kernel/shmobj.c @@ -265,7 +265,7 @@ void shmobj_destroy(struct shmobj *obj) } page->mode = PM_NONE; - free_pages(phys_to_virt(page_to_phys(page)), npages); + ihk_mc_free_pages(phys_to_virt(page_to_phys(page)), npages); } if (obj->index < 0) { kfree(obj); diff --git a/lib/page_alloc.c b/lib/page_alloc.c index a5e73534..ae6eebdd 100644 --- a/lib/page_alloc.c +++ b/lib/page_alloc.c @@ -52,7 +52,7 @@ void *__ihk_pagealloc_init(unsigned long start, unsigned long size, desc = initial; *pdescsize = descsize; } else { - desc = (void *)allocate_pages(descsize, IHK_MC_AP_CRITICAL); + desc = (void *)ihk_mc_alloc_pages(descsize, IHK_MC_AP_CRITICAL); } if (!desc) { kprintf("IHK: failed to allocate page-allocator-desc "\ @@ -92,7 +92,7 @@ void ihk_pagealloc_destroy(void *__desc) { struct ihk_page_allocator_desc *desc = __desc; - free_pages(desc, desc->flag); + ihk_mc_free_pages(desc, desc->flag); } static unsigned long __ihk_pagealloc_large(struct ihk_page_allocator_desc *desc,