qemu-e2k/target-ppc
Thomas Huth 86b50f2e1b ppc: Disable huge page support if it is not available for main RAM
On powerpc, we must only signal huge page support to the guest if
all memory areas are capable of supporting huge pages. The commit
2d103aae87 ("fix hugepage support when using memory-backend-file")
already fixed the case when the user specified the mem-path property
for NUMA memory nodes instead of using the global "-mem-path" option.
However, there is one more case where it currently can go wrong.
When specifying additional memory DIMMs without using NUMA, e.g.

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

the code in getrampagesize() currently assumes that huge pages
are possible since they are enabled for the mem1 object. But
since the main RAM is not backed by a huge page filesystem,
the guest Linux kernel then crashes very quickly after being
started. So in case the we've got "normal" memory without NUMA
and without the global "-mem-path" option, we must not announce
huge pages to the guest. Since this is likely a mis-configuration
by the user, also spill out a message in this case.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2016-06-23 12:53:42 +10:00
..
arch_dump.c
cpu-models.c
cpu-models.h
cpu-qom.h ppc: Add P7/P8 Power Management instructions 2016-06-23 12:43:54 +10:00
cpu.h ppc: Add P7/P8 Power Management instructions 2016-06-23 12:43:54 +10:00
dfp_helper.c
excp_helper.c ppc: Add P7/P8 Power Management instructions 2016-06-23 12:43:54 +10:00
fpu_helper.c target-ppc/fpu_helper: Fix efscmp* instructions handling 2016-06-07 10:17:44 +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: Batch TLB flushes on 32-bit 6xx/7xx/7xxx in hash mode 2016-06-07 13:10:44 +10:00
helper.h ppc: Add P7/P8 Power Management instructions 2016-06-23 12:43:54 +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 ppc: Provide function to get CPU class of the host CPU 2016-06-14 10:41:38 +10: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: Disable huge page support if it is not available for main RAM 2016-06-23 12:53:42 +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 ppc: Batch TLB flushes on 32-bit 6xx/7xx/7xxx in hash mode 2016-06-07 13:10:44 +10: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
mmu-hash64.c ppc: Fix generation if ISI/DSI vs. HV mode 2016-06-23 12:43:25 +10:00
mmu-hash64.h
monitor.c
STATUS
timebase_helper.c cpu: move exec-all.h inclusion out of cpu.h 2016-05-19 16:42:29 +02:00
trace-events trace: split out trace events for target-ppc/ directory 2016-06-20 17:22:17 +01:00
translate_init.c ppc: Add P7/P8 Power Management instructions 2016-06-23 12:43:54 +10:00
translate.c ppc: Add P7/P8 Power Management instructions 2016-06-23 12:43:54 +10:00
user_only_helper.c