|
@@ -763,6 +763,19 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
|
|
|
return r;
|
|
|
}
|
|
|
|
|
|
+int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
|
|
|
+{
|
|
|
+#ifdef CONFIG_KVM_S390_UCONTROL
|
|
|
+ if ((vmf->pgoff == KVM_S390_SIE_PAGE_OFFSET)
|
|
|
+ && (kvm_is_ucontrol(vcpu->kvm))) {
|
|
|
+ vmf->page = virt_to_page(vcpu->arch.sie_block);
|
|
|
+ get_page(vmf->page);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+#endif
|
|
|
+ return VM_FAULT_SIGBUS;
|
|
|
+}
|
|
|
+
|
|
|
/* Section: memory related */
|
|
|
int kvm_arch_prepare_memory_region(struct kvm *kvm,
|
|
|
struct kvm_memory_slot *memslot,
|