|
@@ -405,14 +405,10 @@ long kvmppc_rm_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
|
|
|
ret = kvmppc_rm_tce_iommu_map(vcpu->kvm, stt,
|
|
|
stit->tbl, entry, ua, dir);
|
|
|
|
|
|
- if (ret == H_SUCCESS)
|
|
|
- continue;
|
|
|
-
|
|
|
- if (ret == H_TOO_HARD)
|
|
|
+ if (ret != H_SUCCESS) {
|
|
|
+ kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl, entry);
|
|
|
return ret;
|
|
|
-
|
|
|
- WARN_ON_ONCE_RM(1);
|
|
|
- kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl, entry);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
kvmppc_tce_put(stt, entry, tce);
|
|
@@ -558,14 +554,11 @@ long kvmppc_rm_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
|
|
stit->tbl, entry + i, ua,
|
|
|
iommu_tce_direction(tce));
|
|
|
|
|
|
- if (ret == H_SUCCESS)
|
|
|
- continue;
|
|
|
-
|
|
|
- if (ret == H_TOO_HARD)
|
|
|
+ if (ret != H_SUCCESS) {
|
|
|
+ kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl,
|
|
|
+ entry);
|
|
|
goto unlock_exit;
|
|
|
-
|
|
|
- WARN_ON_ONCE_RM(1);
|
|
|
- kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl, entry);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
kvmppc_tce_put(stt, entry + i, tce);
|