diff options
Diffstat (limited to 'arch/s390/kvm/kvm-s390.c')
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index af05328aca25..d6bc65aeb950 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -763,6 +763,19 @@ long kvm_arch_vcpu_ioctl(struct file *filp, | |||
763 | return r; | 763 | return r; |
764 | } | 764 | } |
765 | 765 | ||
766 | int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf) | ||
767 | { | ||
768 | #ifdef CONFIG_KVM_S390_UCONTROL | ||
769 | if ((vmf->pgoff == KVM_S390_SIE_PAGE_OFFSET) | ||
770 | && (kvm_is_ucontrol(vcpu->kvm))) { | ||
771 | vmf->page = virt_to_page(vcpu->arch.sie_block); | ||
772 | get_page(vmf->page); | ||
773 | return 0; | ||
774 | } | ||
775 | #endif | ||
776 | return VM_FAULT_SIGBUS; | ||
777 | } | ||
778 | |||
766 | /* Section: memory related */ | 779 | /* Section: memory related */ |
767 | int kvm_arch_prepare_memory_region(struct kvm *kvm, | 780 | int kvm_arch_prepare_memory_region(struct kvm *kvm, |
768 | struct kvm_memory_slot *memslot, | 781 | struct kvm_memory_slot *memslot, |