KVM: PPC: Be more informative on BUG
authorAlexander Graf <agraf@suse.de>
Tue, 20 Apr 2010 00:49:50 +0000 (02:49 +0200)
committerAvi Kivity <avi@redhat.com>
Mon, 17 May 2010 09:19:02 +0000 (12:19 +0300)
We have a condition in the ppc64 host mmu code that should never occur.
Unfortunately, it just did happen to me and I was rather puzzled on why,
because BUG_ON doesn't tell me anything useful.

So let's add some more debug output in case this goes wrong. Also change
BUG to WARN, since I don't want to reboot every time I mess something up.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/powerpc/kvm/book3s_64_mmu_host.c

index 41af12fb1260ed77b4f7b702aa7f0f00c17f6907..5545c45ea57f74934415b6dfc830b8eaf906e15e 100644 (file)
@@ -231,10 +231,16 @@ int kvmppc_mmu_map_page(struct kvm_vcpu *vcpu, struct kvmppc_pte *orig_pte)
        vcpu->arch.mmu.esid_to_vsid(vcpu, orig_pte->eaddr >> SID_SHIFT, &vsid);
        map = find_sid_vsid(vcpu, vsid);
        if (!map) {
-               kvmppc_mmu_map_segment(vcpu, orig_pte->eaddr);
+               ret = kvmppc_mmu_map_segment(vcpu, orig_pte->eaddr);
+               WARN_ON(ret < 0);
                map = find_sid_vsid(vcpu, vsid);
        }
-       BUG_ON(!map);
+       if (!map) {
+               printk(KERN_ERR "KVM: Segment map for 0x%llx (0x%lx) failed\n",
+                               vsid, orig_pte->eaddr);
+               WARN_ON(true);
+               return -EINVAL;
+       }
 
        vsid = map->host_vsid;
        va = hpt_va(orig_pte->eaddr, vsid, MMU_SEGSIZE_256M);