Additionally I would need to use it in the other patches... Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> --- arch/s390/include/asm/kvm_host.h | 4 ++++ arch/s390/kvm/kvm-s390.c | 4 ++-- arch/s390/kvm/pv.c | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h index 2a8a1e21e1c3..81f6532531cb 100644 --- a/arch/s390/include/asm/kvm_host.h +++ b/arch/s390/include/asm/kvm_host.h @@ -122,6 +122,10 @@ struct mcck_volatile_info { __u32 reserved; }; +#define SIDAD_SIZE_MASK 0xff +#define sidad_origin(sie_block) \ + (sie_block->sidad & PAGE_MASK) + #define CPUSTAT_STOPPED 0x80000000 #define CPUSTAT_WAIT 0x10000000 #define CPUSTAT_ECALL_PEND 0x08000000 diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 0fa7c6d9ed0e..91a638cc1eba 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -4436,7 +4436,7 @@ static long kvm_s390_guest_mem_op(struct kvm_vcpu *vcpu, * block which has its own size limit */ if (kvm_s390_pv_is_protected(vcpu->kvm) && - mop->size > ((vcpu->arch.sie_block->sidad & 0x0f) + 1) * PAGE_SIZE) + mop->size > ((vcpu->arch.sie_block->sidad & SIDAD_SIZE_MASK) + 1) * PAGE_SIZE) return -E2BIG; if (!(mop->flags & KVM_S390_MEMOP_F_CHECK_ONLY)) { @@ -4460,7 +4460,7 @@ static long kvm_s390_guest_mem_op(struct kvm_vcpu *vcpu, } if (kvm_s390_pv_is_protected(vcpu->kvm)) { r = 0; - if (copy_to_user(uaddr, (void *)vcpu->arch.sie_block->sidad + + if (copy_to_user(uaddr, (void *)sidad_origin(vcpu->arch.sie_block) + (mop->gaddr & ~PAGE_MASK), mop->size)) r = -EFAULT; diff --git a/arch/s390/kvm/pv.c b/arch/s390/kvm/pv.c index 764f8f9f5dff..661f03629265 100644 --- a/arch/s390/kvm/pv.c +++ b/arch/s390/kvm/pv.c @@ -119,7 +119,7 @@ int kvm_s390_pv_destroy_cpu(struct kvm_vcpu *vcpu) free_pages(vcpu->arch.pv.stor_base, get_order(uv_info.guest_cpu_stor_len)); - free_page(vcpu->arch.sie_block->sidad); + free_page(sidad_origin(vcpu->arch.sie_block)); /* Clear cpu and vm handle */ memset(&vcpu->arch.sie_block->reserved10, 0, sizeof(vcpu->arch.sie_block->reserved10)); -- 2.20.1