qemu/target-ppc
Thomas Huth 159d2e39a8 ppc: Yet another fix for the huge page support detection mechanism
Commit 86b50f2e1b ("Disable huge page support if it is not available
for main RAM") already made sure that huge page support is not announced
to the guest if the normal RAM of non-NUMA configurations is not backed
by a huge page filesystem. However, there is one more case that can go
wrong: NUMA is enabled, but the RAM of the NUMA nodes are not configured
with huge page support (and only the memory of a DIMM is configured with
it). When QEMU is started with the following command line for example,
the Linux guest currently crashes because it is trying to use huge pages
on a memory region that does not support huge pages:

 qemu-system-ppc64 -enable-kvm ... -m 1G,slots=4,maxmem=32G -object \
   memory-backend-file,policy=default,mem-path=/hugepages,size=1G,id=mem-mem1 \
   -device pc-dimm,id=dimm-mem1,memdev=mem-mem1 -smp 2 \
   -numa node,nodeid=0 -numa node,nodeid=1

To fix this issue, we've got to make sure to disable huge page support,
too, when there is a NUMA node that is not using a memory backend with
huge page support.

Fixes: 86b50f2e1b
Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2016-07-18 10:52:19 +10:00
..
arch_dump.c
cpu-models.c target-ppc: Add PVR for POWER8NVL processor 2016-03-16 09:55:05 +11:00
cpu-models.h target-ppc: Add PVR for POWER8NVL processor 2016-03-16 09:55:05 +11:00
cpu-qom.h ppc: Fix 64K pages support in full emulation 2016-07-01 09:57:01 +10:00
cpu.h target-*: Clean up cpu.h header guards 2016-07-12 16:19:16 +02:00
dfp_helper.c
excp_helper.c ppc: Initial HDEC support 2016-07-01 09:57:01 +10:00
fpu_helper.c ppc: Fix xsrdpi, xvrdpi and xvrspi rounding 2016-07-05 10:43:02 +10:00
gdbstub.c qemu-common: push cpu.h inclusion out of qemu-common.h 2016-05-19 16:42:29 +02:00
helper_regs.h ppc: Fix support for odd MSR combinations 2016-07-18 10:40:27 +10:00
helper.h ppc: Initial HDEC support 2016-07-01 09:57:01 +10:00
int_helper.c cpu: move exec-all.h inclusion out of cpu.h 2016-05-19 16:42:29 +02:00
kvm_ppc.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
kvm-stub.c qemu-common: push cpu.h inclusion out of qemu-common.h 2016-05-19 16:42:29 +02:00
kvm.c ppc: Yet another fix for the huge page support detection mechanism 2016-07-18 10:52:19 +10:00
machine.c ppc: Use split I/D mmu modes to avoid flushes on interrupts 2016-05-30 13:20:04 +10:00
Makefile.objs
mem_helper.c cpu: move exec-all.h inclusion out of cpu.h 2016-05-19 16:42:29 +02:00
mfrom_table_gen.c
mfrom_table.c
misc_helper.c ppc: Improve emulation of THRM registers 2016-06-22 11:12:17 +10:00
mmu_helper.c Fix confusing argument names in some common functions 2016-07-12 13:06:08 +01:00
mmu-hash32.c cpu: move exec-all.h inclusion out of cpu.h 2016-05-19 16:42:29 +02:00
mmu-hash32.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
mmu-hash64.c target-ppc: fix left shift overflow in hpte_page_shift 2016-07-18 10:45:44 +10:00
mmu-hash64.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
monitor.c
STATUS
timebase_helper.c ppc: Initial HDEC support 2016-07-01 09:57:01 +10:00
trace-events trace: split out trace events for target-ppc/ directory 2016-06-20 17:22:17 +01:00
translate_init.c ppc: abort if compat property contains an unknown value 2016-07-18 10:40:27 +10:00
translate.c target-ppc: gen_pause for instructions: yield, mdoio, mdoom, miso 2016-07-01 13:41:47 +10:00
user_only_helper.c