qemu-irix/include/hw
Bharata B Rao d0e5a8f293 spapr: Ensure all LMBs are represented in ibm,dynamic-memory
Memory hotplug can fail for some combinations of RAM and maxmem when
DDW is enabled in the presence of devices like nec-usb-xhci. DDW depends
on maximum addressable memory returned by guest and this value is currently
being calculated wrongly by the guest kernel routine memory_hotplug_max().
While there is an attempt to fix the guest kernel, this patch works
around the problem within QEMU itself.

memory_hotplug_max() routine in the guest kernel arrives at max
addressable memory by multiplying lmb-size with the lmb-count obtained
from ibm,dynamic-memory property. There are two assumptions here:

- All LMBs are part of ibm,dynamic memory: This is not true for PowerKVM
  where only hot-pluggable LMBs are present in this property.
- The memory area comprising of RAM and hotplug region is contiguous: This
  needn't be true always for PowerKVM as there can be gap between
  boot time RAM and hotplug region.

To work around this guest kernel bug, ensure that ibm,dynamic-memory
has information about all the LMBs (RMA, boot-time LMBs, future
hotpluggable LMBs, and dummy LMBs to cover the gap between RAM and
hotpluggable region).

RMA is represented separately by memory@0 node. Hence mark RMA LMBs
and also the LMBs for the gap b/n RAM and hotpluggable region as
reserved and as having no valid DRC so that these LMBs are not considered
by the guest.

Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2016-06-14 13:20:01 +10:00
..
acpi all: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
arm xlnx-zynqmp: Make the RPU subsystem optional 2016-06-06 16:59:29 +01:00
audio
block
char hw/char: QOM'ify xilinx_uartlite model 2016-06-06 16:59:32 +01:00
cpu
cris hw/char: QOM'ify etraxfs_ser.c 2016-05-29 09:11:10 +02:00
display
dma
gpio
i2c i2c: add aspeed i2c controller 2016-06-06 16:59:29 +01:00
i386 ICH9: fix typo 2016-06-07 18:19:23 +03:00
input
intc
ipack ipack: Update e-mail address 2016-05-18 15:04:27 +03:00
ipmi ipmi: rework the fwinfo to be fetched from the interface 2016-06-07 15:36:54 +03:00
isa hw: clean up hw/hw.h includes 2016-05-19 16:42:30 +02:00
kvm
lm32
m68k m68k: include cpu-qom.h in files that require M68KCPU 2016-05-19 16:42:27 +02:00
mem pc-dimm: introduce realize callback 2016-06-07 15:39:28 +03:00
mips mips: use MIPSCPU instead of CPUMIPSState 2016-05-19 16:42:27 +02:00
misc
net Add ENET/Gbps Ethernet support to FEC device 2016-06-02 10:42:46 +08:00
nvram
pci pcie: Introduce function for DSN capability creation 2016-06-02 10:42:26 +08:00
pci-host spapr_pci: Add and export DMA resetting helper 2016-06-07 10:17:45 +10:00
ppc spapr: Ensure all LMBs are represented in ibm,dynamic-memory 2016-06-14 13:20:01 +10:00
s390x s390x: reorganize CSS bits between cpu.h and other headers 2016-05-19 16:42:28 +02:00
scsi
sd qemu-common: push cpu.h inclusion out of qemu-common.h 2016-05-19 16:42:29 +02:00
sh4 sh4: include cpu-qom.h in files that require SuperHCPU 2016-05-19 16:42:27 +02:00
smbios smbios: fix typo 2016-05-18 15:04:27 +03:00
sparc
ssi
timer
tricore
unicore32
usb
vfio memory: Fix IOMMU replay base address 2016-05-26 11:12:08 -06:00
virtio -----BEGIN PGP SIGNATURE----- 2016-06-07 15:59:28 +01:00
watchdog
xen xen: add pvUSB backend 2016-05-23 13:30:03 +02:00
boards.h machine: add properties to compat_props incrementaly 2016-05-20 14:28:54 -03:00
bt.h
compat.h
devices.h
elf_ops.h
empty_slot.h
fw-path-provider.h
hotplug.h
hw.h hw: clean up hw/hw.h includes 2016-05-19 16:42:30 +02:00
ide.h
irq.h
loader.h
nmi.h nmi: remove x86 specific nmi handling 2016-05-23 16:53:46 +02:00
pcmcia.h
platform-bus.h
ptimer.h hw/ptimer: Introduce ptimer_get_limit 2016-06-06 16:59:31 +01:00
qdev-core.h
qdev-dma.h
qdev-properties.h qdev: Clean up around properties 2016-06-07 18:19:23 +03:00
qdev.h
stream.h
sysbus.h hw: remove pio_addr_t 2016-05-19 16:42:30 +02:00
usb.h