qemu/include/hw/ppc
David Gibson 2772cf6be9 pseries: Use smaller default hash page tables when guest can resize
We've now implemented a PAPR extension allowing PAPR guest to resize
their hash page table (HPT) during runtime.

This patch makes use of that facility to allocate smaller HPTs by default.
Specifically when a guest is aware of the HPT resize facility, qemu sizes
the HPT to the initial memory size, rather than the maximum memory size on
the assumption that the guest will resize its HPT if necessary for hot
plugged memory.

When the initial memory size is much smaller than the maximum memory size
(a common configuration with e.g. oVirt / RHEV) then this can save
significant memory on the HPT.

If the guest does *not* advertise HPT resize awareness when it makes the
ibm,client-architecture-support call, qemu resizes the HPT for maxmimum
memory size (unless it's been configured not to allow such guests at all).

For now we make that reallocation assuming the guest has not yet used the
HPT at all.  That's true in practice, but not, strictly, an architectural
or PAPR requirement.  If we need to in future we can fix this by having
the client-architecture-support call reboot the guest with the revised
HPT size (the client-architecture-support call is explicitly permitted to
trigger a reboot in this way).

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
2017-07-17 15:07:05 +10:00
..
fdt.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
mac_dbdma.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
openpic.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
pnv_core.h ppc/pnv: add XSCOM handlers to PnvCore 2016-10-28 09:38:25 +11:00
pnv_lpc.h pnv: Fix build failures on some host platforms 2017-05-11 09:45:15 +10:00
pnv_occ.h pnv: Fix build failures on some host platforms 2017-05-11 09:45:15 +10:00
pnv_psi.h ppc/pnv: Remove unused XICSState reference 2017-07-17 15:07:05 +10:00
pnv_xscom.h ppc/pnv: Add OCC model stub with interrupt support 2017-04-26 12:00:42 +10:00
pnv.h pnv: Fix build failures on some host platforms 2017-05-11 09:45:15 +10:00
ppc4xx.h Remove unused function declarations 2016-09-15 15:32:22 +03:00
ppc_e500.h intc/openpic: Build openpic only once 2013-07-09 21:33:02 +02:00
ppc.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
spapr_cpu_core.h spapr: add node-id property to sPAPR core 2017-05-11 16:08:48 -03:00
spapr_drc.h spapr: Implement DR-indicator for physical DRCs only 2017-07-17 15:07:05 +10:00
spapr_ovec.h pseries: Use smaller default hash page tables when guest can resize 2017-07-17 15:07:05 +10:00
spapr_rtas.h tests: add RTAS command in the protocol 2016-09-23 10:29:40 +10:00
spapr_vio.h ppc/xics: use the QOM interface to get irqs 2017-03-01 11:23:39 +11:00
spapr.h pseries: Use smaller default hash page tables when guest can resize 2017-07-17 15:07:05 +10:00
xics.h xics: drop ICPStateClass::cpu_setup() handler 2017-06-09 12:17:59 +10:00