qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] spapr: Enable use of huge pages


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] spapr: Enable use of huge pages
Date: Wed, 09 Jul 2014 09:46:26 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0

Il 09/07/2014 07:57, Alexey Kardashevskiy ha scritto:
0b183fc87 "memory: move mem_path handling to
memory_region_allocate_system_memory" disabled -mempath use for all
machines that do not use memory_region_allocate_system_memory() to
register RAM. Since SPAPR uses memory_region_init_ram(), the huge pages
support was disabled for it.

This replaces memory_region_init_ram()+vmstate_register_ram_global() with
memory_region_allocate_system_memory() to get huge pages back.

Cc: Paolo Bonzini <address@hidden>
Cc: Hu Tao <address@hidden>
Signed-off-by: Alexey Kardashevskiy <address@hidden>
---
 hw/ppc/spapr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index a23c0f0..8fa9f7e 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1337,8 +1337,8 @@ static void ppc_spapr_init(MachineState *machine)
         ram_addr_t nonrma_base = rma_alloc_size;
         ram_addr_t nonrma_size = spapr->ram_limit - rma_alloc_size;

-        memory_region_init_ram(ram, NULL, "ppc_spapr.ram", nonrma_size);
-        vmstate_register_ram_global(ram);
+        memory_region_allocate_system_memory(ram, NULL, "ppc_spapr.ram",
+                                             nonrma_size);

The reason why I didn't do this in the simple way is that depending on the value of nonrma_base you may get smaller hugepages than you wanted.

For example, if the hugepage size is 1G but nonrma_base is 32M, you will not be able to get a page size larger than 32M.

Depending on the value of nonrma_base, it may be better to allocate the whole spapr->ram_limit to ppc_spapr.ram, and just ignore the first part of it.

I see in target-ppc/kvm.c that rma_alloc_size is capped to 256M, and in practice it is 128M (arch/powerpc/kvm/book3s_hv_builtin.c. Considering that Linux overcommits so the memory isn't lost in the non-hugepage case, I think it's better to just waste the 128M of address space.

Paolo

         memory_region_add_subregion(sysmem, nonrma_base, ram);
     }






reply via email to

[Prev in Thread] Current Thread [Next in Thread]