Ver Fonte

KVM: PPC: Make BAT only guest segments work

When a guest sets its SR entry to invalid, we may still find a
corresponding entry in a BAT. So we need to make sure we're not
faulting on invalid SR entries, but instead just claim them to be
BAT resolved.

This resolves breakage experienced when using libogc based guests.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
Alexander Graf há 15 anos atrás
pai
commit
4d29bdbf12
1 ficheiros alterados com 4 adições e 4 exclusões
  1. 4 4
      arch/powerpc/kvm/book3s_32_mmu.c

+ 4 - 4
arch/powerpc/kvm/book3s_32_mmu.c

@@ -354,10 +354,10 @@ static int kvmppc_mmu_book3s_32_esid_to_vsid(struct kvm_vcpu *vcpu, ulong esid,
 		*vsid = VSID_REAL_DR | gvsid;
 		*vsid = VSID_REAL_DR | gvsid;
 		break;
 		break;
 	case MSR_DR|MSR_IR:
 	case MSR_DR|MSR_IR:
-		if (!sr->valid)
-			return -1;
-
-		*vsid = sr->vsid;
+		if (sr->valid)
+			*vsid = sr->vsid;
+		else
+			*vsid = VSID_BAT | gvsid;
 		break;
 		break;
 	default:
 	default:
 		BUG();
 		BUG();