|
@@ -301,6 +301,10 @@ long kvmppc_rm_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
|
|
|
/* udbg_printf("H_PUT_TCE(): liobn=0x%lx ioba=0x%lx, tce=0x%lx\n", */
|
|
|
/* liobn, ioba, tce); */
|
|
|
|
|
|
+ /* For radix, we might be in virtual mode, so punt */
|
|
|
+ if (kvm_is_radix(vcpu->kvm))
|
|
|
+ return H_TOO_HARD;
|
|
|
+
|
|
|
stt = kvmppc_find_table(vcpu->kvm, liobn);
|
|
|
if (!stt)
|
|
|
return H_TOO_HARD;
|
|
@@ -381,6 +385,10 @@ long kvmppc_rm_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
|
|
bool prereg = false;
|
|
|
struct kvmppc_spapr_tce_iommu_table *stit;
|
|
|
|
|
|
+ /* For radix, we might be in virtual mode, so punt */
|
|
|
+ if (kvm_is_radix(vcpu->kvm))
|
|
|
+ return H_TOO_HARD;
|
|
|
+
|
|
|
stt = kvmppc_find_table(vcpu->kvm, liobn);
|
|
|
if (!stt)
|
|
|
return H_TOO_HARD;
|
|
@@ -491,6 +499,10 @@ long kvmppc_rm_h_stuff_tce(struct kvm_vcpu *vcpu,
|
|
|
long i, ret;
|
|
|
struct kvmppc_spapr_tce_iommu_table *stit;
|
|
|
|
|
|
+ /* For radix, we might be in virtual mode, so punt */
|
|
|
+ if (kvm_is_radix(vcpu->kvm))
|
|
|
+ return H_TOO_HARD;
|
|
|
+
|
|
|
stt = kvmppc_find_table(vcpu->kvm, liobn);
|
|
|
if (!stt)
|
|
|
return H_TOO_HARD;
|
|
@@ -527,6 +539,7 @@ long kvmppc_rm_h_stuff_tce(struct kvm_vcpu *vcpu,
|
|
|
return H_SUCCESS;
|
|
|
}
|
|
|
|
|
|
+/* This can be called in either virtual mode or real mode */
|
|
|
long kvmppc_h_get_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
|
|
|
unsigned long ioba)
|
|
|
{
|