hw/ppc/spapr: Implement the h_page_init hypercall
commit3240dd9a6924df18dfccb83defa0914065da076e
authorThomas Huth <thuth@redhat.com>
Thu, 18 Feb 2016 09:15:54 +0000 (18 10:15 +0100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 25 Feb 2016 02:58:44 +0000 (25 13:58 +1100)
tree3932ed825d17abbe9bf0eaddbccf4d887daa4520
parent4f7ab0cdbccfc1d0a3a6d0a7c9a22d8a90d9e2f0
hw/ppc/spapr: Implement the h_page_init hypercall

This hypercall either initializes a page with zeros, or copies
another page.
According to LoPAPR, the i-cache of the page should also be
flushed if using H_ICACHE_INVALIDATE or H_ICACHE_SYNCHRONIZE,
and the d-cache should be synchronized to the RAM if the
H_ICACHE_SYNCHRONIZE flag is used. For this, two new functions
are introduced, kvmppc_dcbst_range() and kvmppc_icbi()_range, which
use the corresponding assembler instructions to flush the caches
if running with KVM on Power. If the code runs with TCG instead,
the code only uses tb_flush(), assuming that this will be
enough for synchronization.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/ppc/spapr_hcall.c
target-ppc/kvm_ppc.h