diff options
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kvm/interrupt.c | 10 | ||||
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 4 |
2 files changed, 13 insertions, 1 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index b5fd6e85657c..d1ccc168c071 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c | |||
@@ -1961,6 +1961,16 @@ int s390int_to_s390irq(struct kvm_s390_interrupt *s390int, | |||
1961 | case KVM_S390_MCHK: | 1961 | case KVM_S390_MCHK: |
1962 | irq->u.mchk.mcic = s390int->parm64; | 1962 | irq->u.mchk.mcic = s390int->parm64; |
1963 | break; | 1963 | break; |
1964 | case KVM_S390_INT_PFAULT_INIT: | ||
1965 | irq->u.ext.ext_params = s390int->parm; | ||
1966 | irq->u.ext.ext_params2 = s390int->parm64; | ||
1967 | break; | ||
1968 | case KVM_S390_RESTART: | ||
1969 | case KVM_S390_INT_CLOCK_COMP: | ||
1970 | case KVM_S390_INT_CPU_TIMER: | ||
1971 | break; | ||
1972 | default: | ||
1973 | return -EINVAL; | ||
1964 | } | 1974 | } |
1965 | return 0; | 1975 | return 0; |
1966 | } | 1976 | } |
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index f329dcb3f44c..39cff07bf2eb 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -1018,6 +1018,8 @@ static int kvm_s390_vm_start_migration(struct kvm *kvm) | |||
1018 | /* mark all the pages in active slots as dirty */ | 1018 | /* mark all the pages in active slots as dirty */ |
1019 | for (slotnr = 0; slotnr < slots->used_slots; slotnr++) { | 1019 | for (slotnr = 0; slotnr < slots->used_slots; slotnr++) { |
1020 | ms = slots->memslots + slotnr; | 1020 | ms = slots->memslots + slotnr; |
1021 | if (!ms->dirty_bitmap) | ||
1022 | return -EINVAL; | ||
1021 | /* | 1023 | /* |
1022 | * The second half of the bitmap is only used on x86, | 1024 | * The second half of the bitmap is only used on x86, |
1023 | * and would be wasted otherwise, so we put it to good | 1025 | * and would be wasted otherwise, so we put it to good |
@@ -4323,7 +4325,7 @@ long kvm_arch_vcpu_async_ioctl(struct file *filp, | |||
4323 | } | 4325 | } |
4324 | case KVM_S390_INTERRUPT: { | 4326 | case KVM_S390_INTERRUPT: { |
4325 | struct kvm_s390_interrupt s390int; | 4327 | struct kvm_s390_interrupt s390int; |
4326 | struct kvm_s390_irq s390irq; | 4328 | struct kvm_s390_irq s390irq = {}; |
4327 | 4329 | ||
4328 | if (copy_from_user(&s390int, argp, sizeof(s390int))) | 4330 | if (copy_from_user(&s390int, argp, sizeof(s390int))) |
4329 | return -EFAULT; | 4331 | return -EFAULT; |