lkml.org 
[lkml]   [2018]   [Dec]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[RFC][PATCH v2 11/21] kvm: allocate page table pages from DRAM
From: Yao Yuan <yuan.yao@intel.com>

Signed-off-by: Yao Yuan <yuan.yao@intel.com>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
---
arch/x86/kvm/mmu.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

--- linux.orig/arch/x86/kvm/mmu.c 2018-12-26 20:54:48.846720344 +0800
+++ linux/arch/x86/kvm/mmu.c 2018-12-26 20:54:48.842719614 +0800
@@ -950,6 +950,16 @@ static void mmu_free_memory_cache(struct
kmem_cache_free(cache, mc->objects[--mc->nobjs]);
}

+static unsigned long __get_dram_free_pages(gfp_t gfp_mask)
+{
+ struct page *page;
+
+ page = __alloc_pages(GFP_KERNEL_ACCOUNT, 0, numa_node_id());
+ if (!page)
+ return 0;
+ return (unsigned long) page_address(page);
+}
+
static int mmu_topup_memory_cache_page(struct kvm_mmu_memory_cache *cache,
int min)
{
@@ -958,7 +968,7 @@ static int mmu_topup_memory_cache_page(s
if (cache->nobjs >= min)
return 0;
while (cache->nobjs < ARRAY_SIZE(cache->objects)) {
- page = (void *)__get_free_page(GFP_KERNEL_ACCOUNT);
+ page = (void *)__get_dram_free_pages(GFP_KERNEL_ACCOUNT);
if (!page)
return cache->nobjs >= min ? 0 : -ENOMEM;
cache->objects[cache->nobjs++] = page;

\
 
 \ /
  Last update: 2018-12-26 14:39    [W:0.273 / U:0.780 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site