On 04.03.2016 06:35, David Gibson wrote: > fa48b43 "target-ppc: Remove hack for ppc_hash64_load_hpte*() with HV KVM" > purports to remove a hack in the handling of hash page tables (HPTs) > managed by KVM instead of qemu. However, it actually went in the wrong > direction. > > That patch requires anything looking for an external HPT (that is one not > managed by the guest itself) to check both env->external_htab (for a qemu > managed HPT) and kvmppc_kern_htab (for a KVM managed HPT). That's a > problem because kvmppc_kern_htab is local to mmu-hash64.c, but some places > which need to check for an external HPT are outside that, such as > kvm_arch_get_registers(). The latter was subtly broken by the earlier > patch such that gdbstub can no longer access memory. > > Basically a KVM managed HPT is much more like a qemu managed HPT than it is > like a guest managed HPT, so the original "hack" was actually on the right > track. > > This partially reverts fa48b43, so we again mark a KVM managed external HPT > by putting a special but non-NULL value in env->external_htab. It then > goes further, using that marker to eliminate the kvmppc_kern_htab global > entirely. The ppc_hash64_set_external_hpt() helper function is extended > to set that marker if passed a NULL value (if you're setting an external > HPT, but don't have an actual HPT to set, the assumption is that it must > be a KVM managed HPT). > > This also has some flow-on changes to the HPT access helpers, required by > the above changes. > > Reported-by: Greg Kurz <gk...@linux.vnet.ibm.com> > Signed-off-by: David Gibson <da...@gibson.dropbear.id.au> > --- > hw/ppc/spapr.c | 3 +-- > hw/ppc/spapr_hcall.c | 10 +++++----- > target-ppc/mmu-hash64.c | 40 ++++++++++++++++++---------------------- > target-ppc/mmu-hash64.h | 9 +++------ > 4 files changed, 27 insertions(+), 35 deletions(-)
Patch looks fine to me. Reviewed-by: Thomas Huth <th...@redhat.com>