diff options
author | Alexander Graf <agraf@suse.de> | 2012-01-06 04:02:24 +0100 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2012-02-02 02:47:45 +0100 |
commit | a31be480a0b4ede50f260dd29971dca961da3a2c (patch) | |
tree | 8db7bcb9af056221a4df7816a81c2551b0dba593 /target-ppc | |
parent | 1529ae1bc61a15e9a243dcbad70c95dfcdd1f0c5 (diff) | |
download | qemu-a31be480a0b4ede50f260dd29971dca961da3a2c.zip qemu-a31be480a0b4ede50f260dd29971dca961da3a2c.tar.gz qemu-a31be480a0b4ede50f260dd29971dca961da3a2c.tar.bz2 |
PPC: KVM: Update HIOR code to new interface
Unfortunately the HIOR setting code slipped into upstream QEMU
before it was pulled into upstream KVM. And since Murphy is always
right, comments on the patches only emerged on the pull request
leading to changes in the interface.
So here's an update to the HIOR setting. While at it, I also relaxed
it a bit since for HV KVM we can already run fine without and 3.2
works just fine with HV KVM but when not setting HIOR. We will only
need this when running PAPR in PR KVM.
Since we accidently changed the ABI and API along the way, we have
to update the underlying kernel headers together with the code that
uses it to not break bisectability.
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'target-ppc')
-rw-r--r-- | target-ppc/kvm.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index ce8ac5b..50cfa02 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -740,6 +740,7 @@ void kvmppc_set_papr(CPUState *env) struct kvm_one_reg reg = {}; struct kvm_sregs sregs = {}; int ret; + uint64_t hior = env->spr[SPR_HIOR]; cap.cap = KVM_CAP_PPC_PAPR; ret = kvm_vcpu_ioctl(env, KVM_ENABLE_CAP, &cap); @@ -755,11 +756,14 @@ void kvmppc_set_papr(CPUState *env) * Once we have qdev CPUs, move HIOR to a qdev property and * remove this chunk. */ - reg.id = KVM_ONE_REG_PPC_HIOR; - reg.u.reg64 = env->spr[SPR_HIOR]; + reg.id = KVM_REG_PPC_HIOR; + reg.addr = (uintptr_t)&hior; ret = kvm_vcpu_ioctl(env, KVM_SET_ONE_REG, ®); if (ret) { - goto fail; + fprintf(stderr, "Couldn't set HIOR. Maybe you're running an old \n" + "kernel with support for HV KVM but no PAPR PR \n" + "KVM in which case things will work. If they don't \n" + "please update your host kernel!\n"); } /* Set SDR1 so kernel space finds the HTAB */ |