drop some s390 kvm patches
diff --git a/queue-4.14/kvm-s390-extend-kvm_s390_shadow_fault-to-return-entry-pointer.patch b/queue-4.14/kvm-s390-extend-kvm_s390_shadow_fault-to-return-entry-pointer.patch
deleted file mode 100644
index d42fda4..0000000
--- a/queue-4.14/kvm-s390-extend-kvm_s390_shadow_fault-to-return-entry-pointer.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-From 5ac14bac08ae827b619f21bcceaaac3b8c497e31 Mon Sep 17 00:00:00 2001
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Date: Mon, 1 Feb 2021 17:26:54 +0100
-Subject: KVM: s390: extend kvm_s390_shadow_fault to return entry pointer
-
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-
-commit 5ac14bac08ae827b619f21bcceaaac3b8c497e31 upstream.
-
-Extend kvm_s390_shadow_fault to return the pointer to the valid leaf
-DAT table entry, or to the invalid entry.
-
-Also return some flags in the lower bits of the address:
-PEI_DAT_PROT: indicates that DAT protection applies because of the
-              protection bit in the segment (or, if EDAT, region) tables.
-PEI_NOT_PTE: indicates that the address of the DAT table entry returned
-             does not refer to a PTE, but to a segment or region table.
-
-Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Cc: stable@vger.kernel.org
-Reviewed-by: Janosch Frank <frankja@de.ibm.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Link: https://lore.kernel.org/r/20210302174443.514363-3-imbrenda@linux.ibm.com
-[borntraeger@de.ibm.com: fold in a fix from Claudio]
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/s390/kvm/gaccess.c |   30 +++++++++++++++++++++++++-----
- arch/s390/kvm/gaccess.h |    6 +++++-
- arch/s390/kvm/vsie.c    |    8 ++++----
- 3 files changed, 34 insertions(+), 10 deletions(-)
-
---- a/arch/s390/kvm/gaccess.c
-+++ b/arch/s390/kvm/gaccess.c
-@@ -976,7 +976,9 @@ int kvm_s390_check_low_addr_prot_real(st
-  * kvm_s390_shadow_tables - walk the guest page table and create shadow tables
-  * @sg: pointer to the shadow guest address space structure
-  * @saddr: faulting address in the shadow gmap
-- * @pgt: pointer to the page table address result
-+ * @pgt: pointer to the beginning of the page table for the given address if
-+ *	 successful (return value 0), or to the first invalid DAT entry in
-+ *	 case of exceptions (return value > 0)
-  * @fake: pgt references contiguous guest memory block, not a pgtable
-  */
- static int kvm_s390_shadow_tables(struct gmap *sg, unsigned long saddr,
-@@ -1034,6 +1036,7 @@ static int kvm_s390_shadow_tables(struct
- 			rfte.val = ptr;
- 			goto shadow_r2t;
- 		}
-+		*pgt = ptr + vaddr.rfx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.rfx * 8, &rfte.val);
- 		if (rc)
- 			return rc;
-@@ -1060,6 +1063,7 @@ shadow_r2t:
- 			rste.val = ptr;
- 			goto shadow_r3t;
- 		}
-+		*pgt = ptr + vaddr.rsx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.rsx * 8, &rste.val);
- 		if (rc)
- 			return rc;
-@@ -1087,6 +1091,7 @@ shadow_r3t:
- 			rtte.val = ptr;
- 			goto shadow_sgt;
- 		}
-+		*pgt = ptr + vaddr.rtx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.rtx * 8, &rtte.val);
- 		if (rc)
- 			return rc;
-@@ -1123,6 +1128,7 @@ shadow_sgt:
- 			ste.val = ptr;
- 			goto shadow_pgt;
- 		}
-+		*pgt = ptr + vaddr.sx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.sx * 8, &ste.val);
- 		if (rc)
- 			return rc;
-@@ -1157,6 +1163,8 @@ shadow_pgt:
-  * @vcpu: virtual cpu
-  * @sg: pointer to the shadow guest address space structure
-  * @saddr: faulting address in the shadow gmap
-+ * @datptr: will contain the address of the faulting DAT table entry, or of
-+ *	    the valid leaf, plus some flags
-  *
-  * Returns: - 0 if the shadow fault was successfully resolved
-  *	    - > 0 (pgm exception code) on exceptions while faulting
-@@ -1165,11 +1173,11 @@ shadow_pgt:
-  *	    - -ENOMEM if out of memory
-  */
- int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg,
--			  unsigned long saddr)
-+			  unsigned long saddr, unsigned long *datptr)
- {
- 	union vaddress vaddr;
- 	union page_table_entry pte;
--	unsigned long pgt;
-+	unsigned long pgt = 0;
- 	int dat_protection, fake;
- 	int rc;
- 
-@@ -1191,8 +1199,20 @@ int kvm_s390_shadow_fault(struct kvm_vcp
- 		pte.val = pgt + vaddr.px * PAGE_SIZE;
- 		goto shadow_page;
- 	}
--	if (!rc)
--		rc = gmap_read_table(sg->parent, pgt + vaddr.px * 8, &pte.val);
-+
-+	switch (rc) {
-+	case PGM_SEGMENT_TRANSLATION:
-+	case PGM_REGION_THIRD_TRANS:
-+	case PGM_REGION_SECOND_TRANS:
-+	case PGM_REGION_FIRST_TRANS:
-+		pgt |= PEI_NOT_PTE;
-+		break;
-+	case 0:
-+		pgt += vaddr.px * 8;
-+		rc = gmap_read_table(sg->parent, pgt, &pte.val);
-+	}
-+	if (datptr)
-+		*datptr = pgt | dat_protection * PEI_DAT_PROT;
- 	if (!rc && pte.i)
- 		rc = PGM_PAGE_TRANSLATION;
- 	if (!rc && pte.z)
---- a/arch/s390/kvm/gaccess.h
-+++ b/arch/s390/kvm/gaccess.h
-@@ -390,7 +390,11 @@ void ipte_unlock(struct kvm_vcpu *vcpu);
- int ipte_lock_held(struct kvm_vcpu *vcpu);
- int kvm_s390_check_low_addr_prot_real(struct kvm_vcpu *vcpu, unsigned long gra);
- 
-+/* MVPG PEI indication bits */
-+#define PEI_DAT_PROT 2
-+#define PEI_NOT_PTE 4
-+
- int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *shadow,
--			  unsigned long saddr);
-+			  unsigned long saddr, unsigned long *datptr);
- 
- #endif /* __KVM_S390_GACCESS_H */
---- a/arch/s390/kvm/vsie.c
-+++ b/arch/s390/kvm/vsie.c
-@@ -440,10 +440,10 @@ static int map_prefix(struct kvm_vcpu *v
- 	/* with mso/msl, the prefix lies at offset *mso* */
- 	prefix += scb_s->mso;
- 
--	rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, prefix);
-+	rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, prefix, NULL);
- 	if (!rc && (scb_s->ecb & ECB_TE))
- 		rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
--					   prefix + PAGE_SIZE);
-+					   prefix + PAGE_SIZE, NULL);
- 	/*
- 	 * We don't have to mprotect, we will be called for all unshadows.
- 	 * SIE will detect if protection applies and trigger a validity.
-@@ -746,7 +746,7 @@ static int handle_fault(struct kvm_vcpu
- 				    current->thread.gmap_addr, 1);
- 
- 	rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
--				   current->thread.gmap_addr);
-+				   current->thread.gmap_addr, NULL);
- 	if (rc > 0) {
- 		rc = inject_fault(vcpu, rc,
- 				  current->thread.gmap_addr,
-@@ -768,7 +768,7 @@ static void handle_last_fault(struct kvm
- {
- 	if (vsie_page->fault_addr)
- 		kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
--				      vsie_page->fault_addr);
-+				      vsie_page->fault_addr, NULL);
- 	vsie_page->fault_addr = 0;
- }
- 
diff --git a/queue-4.14/kvm-s390-vsie-correctly-handle-mvpg-when-in-vsie.patch b/queue-4.14/kvm-s390-vsie-correctly-handle-mvpg-when-in-vsie.patch
deleted file mode 100644
index aabe416..0000000
--- a/queue-4.14/kvm-s390-vsie-correctly-handle-mvpg-when-in-vsie.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From bdf7509bbefa20855d5f6bacdc5b62a8489477c9 Mon Sep 17 00:00:00 2001
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Date: Mon, 1 Feb 2021 21:54:13 +0100
-Subject: KVM: s390: VSIE: correctly handle MVPG when in VSIE
-
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-
-commit bdf7509bbefa20855d5f6bacdc5b62a8489477c9 upstream.
-
-Correctly handle the MVPG instruction when issued by a VSIE guest.
-
-Fixes: a3508fbe9dc6d ("KVM: s390: vsie: initial support for nested virtualization")
-Cc: stable@vger.kernel.org # f85f1baaa189: KVM: s390: split kvm_s390_logical_to_effective
-Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Acked-by: Janosch Frank <frankja@linux.ibm.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Link: https://lore.kernel.org/r/20210302174443.514363-4-imbrenda@linux.ibm.com
-[borntraeger@de.ibm.com: apply fixup from Claudio]
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/s390/kvm/vsie.c |   98 ++++++++++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 93 insertions(+), 5 deletions(-)
-
---- a/arch/s390/kvm/vsie.c
-+++ b/arch/s390/kvm/vsie.c
-@@ -249,11 +249,6 @@ static void unshadow_scb(struct kvm_vcpu
- 		memcpy((void *)((u64)scb_o + 0xc0),
- 		       (void *)((u64)scb_s + 0xc0), 0xf0 - 0xc0);
- 		break;
--	case ICPT_PARTEXEC:
--		/* MVPG only */
--		memcpy((void *)((u64)scb_o + 0xc0),
--		       (void *)((u64)scb_s + 0xc0), 0xd0 - 0xc0);
--		break;
- 	}
- 
- 	if (scb_s->ihcpu != 0xffffU)
-@@ -821,6 +816,95 @@ static int handle_stfle(struct kvm_vcpu
- }
- 
- /*
-+ * Get a register for a nested guest.
-+ * @vcpu the vcpu of the guest
-+ * @vsie_page the vsie_page for the nested guest
-+ * @reg the register number, the upper 4 bits are ignored.
-+ * returns: the value of the register.
-+ */
-+static u64 vsie_get_register(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, u8 reg)
-+{
-+	/* no need to validate the parameter and/or perform error handling */
-+	reg &= 0xf;
-+	switch (reg) {
-+	case 15:
-+		return vsie_page->scb_s.gg15;
-+	case 14:
-+		return vsie_page->scb_s.gg14;
-+	default:
-+		return vcpu->run->s.regs.gprs[reg];
-+	}
-+}
-+
-+static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
-+{
-+	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
-+	unsigned long pei_dest, pei_src, src, dest, mask;
-+	u64 *pei_block = &vsie_page->scb_o->mcic;
-+	int edat, rc_dest, rc_src;
-+	union ctlreg0 cr0;
-+
-+	cr0.val = vcpu->arch.sie_block->gcr[0];
-+	edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8);
-+	mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK);
-+
-+	dest = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 20) & mask;
-+	src = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 16) & mask;
-+
-+	rc_dest = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, dest, &pei_dest);
-+	rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, src, &pei_src);
-+	/*
-+	 * Either everything went well, or something non-critical went wrong
-+	 * e.g. because of a race. In either case, simply retry.
-+	 */
-+	if (rc_dest == -EAGAIN || rc_src == -EAGAIN || (!rc_dest && !rc_src)) {
-+		retry_vsie_icpt(vsie_page);
-+		return -EAGAIN;
-+	}
-+	/* Something more serious went wrong, propagate the error */
-+	if (rc_dest < 0)
-+		return rc_dest;
-+	if (rc_src < 0)
-+		return rc_src;
-+
-+	/* The only possible suppressing exception: just deliver it */
-+	if (rc_dest == PGM_TRANSLATION_SPEC || rc_src == PGM_TRANSLATION_SPEC) {
-+		clear_vsie_icpt(vsie_page);
-+		rc_dest = kvm_s390_inject_program_int(vcpu, PGM_TRANSLATION_SPEC);
-+		WARN_ON_ONCE(rc_dest);
-+		return 1;
-+	}
-+
-+	/*
-+	 * Forward the PEI intercept to the guest if it was a page fault, or
-+	 * also for segment and region table faults if EDAT applies.
-+	 */
-+	if (edat) {
-+		rc_dest = rc_dest == PGM_ASCE_TYPE ? rc_dest : 0;
-+		rc_src = rc_src == PGM_ASCE_TYPE ? rc_src : 0;
-+	} else {
-+		rc_dest = rc_dest != PGM_PAGE_TRANSLATION ? rc_dest : 0;
-+		rc_src = rc_src != PGM_PAGE_TRANSLATION ? rc_src : 0;
-+	}
-+	if (!rc_dest && !rc_src) {
-+		pei_block[0] = pei_dest;
-+		pei_block[1] = pei_src;
-+		return 1;
-+	}
-+
-+	retry_vsie_icpt(vsie_page);
-+
-+	/*
-+	 * The host has edat, and the guest does not, or it was an ASCE type
-+	 * exception. The host needs to inject the appropriate DAT interrupts
-+	 * into the guest.
-+	 */
-+	if (rc_dest)
-+		return inject_fault(vcpu, rc_dest, dest, 1);
-+	return inject_fault(vcpu, rc_src, src, 0);
-+}
-+
-+/*
-  * Run the vsie on a shadow scb and a shadow gmap, without any further
-  * sanity checks, handling SIE faults.
-  *
-@@ -898,6 +982,10 @@ static int do_vsie_run(struct kvm_vcpu *
- 		if ((scb_s->ipa & 0xf000) != 0xf000)
- 			scb_s->ipa += 0x1000;
- 		break;
-+	case ICPT_PARTEXEC:
-+		if (scb_s->ipa == 0xb254)
-+			rc = vsie_handle_mvpg(vcpu, vsie_page);
-+		break;
- 	}
- 	return rc;
- }
diff --git a/queue-4.14/kvm-s390-vsie-fix-mvpg-handling-for-prefixing-and-mso.patch b/queue-4.14/kvm-s390-vsie-fix-mvpg-handling-for-prefixing-and-mso.patch
deleted file mode 100644
index e7c0125..0000000
--- a/queue-4.14/kvm-s390-vsie-fix-mvpg-handling-for-prefixing-and-mso.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From c3171e94cc1cdcc3229565244112e869f052b8d9 Mon Sep 17 00:00:00 2001
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Date: Mon, 22 Mar 2021 15:05:59 +0100
-Subject: KVM: s390: VSIE: fix MVPG handling for prefixing and MSO
-
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-
-commit c3171e94cc1cdcc3229565244112e869f052b8d9 upstream.
-
-Prefixing needs to be applied to the guest real address to translate it
-into a guest absolute address.
-
-The value of MSO needs to be added to a guest-absolute address in order to
-obtain the host-virtual.
-
-Fixes: bdf7509bbefa ("s390/kvm: VSIE: correctly handle MVPG when in VSIE")
-Reported-by: Janosch Frank <frankja@linux.ibm.com>
-Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Cc: stable@vger.kernel.org
-Link: https://lore.kernel.org/r/20210322140559.500716-3-imbrenda@linux.ibm.com
-[borntraeger@de.ibm.com simplify mso]
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/s390/kvm/vsie.c |    5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/arch/s390/kvm/vsie.c
-+++ b/arch/s390/kvm/vsie.c
-@@ -839,7 +839,7 @@ static u64 vsie_get_register(struct kvm_
- static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
- {
- 	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
--	unsigned long pei_dest, pei_src, src, dest, mask;
-+	unsigned long pei_dest, pei_src, src, dest, mask, prefix;
- 	u64 *pei_block = &vsie_page->scb_o->mcic;
- 	int edat, rc_dest, rc_src;
- 	union ctlreg0 cr0;
-@@ -847,9 +847,12 @@ static int vsie_handle_mvpg(struct kvm_v
- 	cr0.val = vcpu->arch.sie_block->gcr[0];
- 	edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8);
- 	mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK);
-+	prefix = scb_s->prefix << GUEST_PREFIX_SHIFT;
- 
- 	dest = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 20) & mask;
-+	dest = _kvm_s390_real_to_abs(prefix, dest) + scb_s->mso;
- 	src = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 16) & mask;
-+	src = _kvm_s390_real_to_abs(prefix, src) + scb_s->mso;
- 
- 	rc_dest = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, dest, &pei_dest);
- 	rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, src, &pei_src);
diff --git a/queue-4.19/kvm-s390-extend-kvm_s390_shadow_fault-to-return-entry-pointer.patch b/queue-4.19/kvm-s390-extend-kvm_s390_shadow_fault-to-return-entry-pointer.patch
deleted file mode 100644
index 2a54ecb..0000000
--- a/queue-4.19/kvm-s390-extend-kvm_s390_shadow_fault-to-return-entry-pointer.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-From 5ac14bac08ae827b619f21bcceaaac3b8c497e31 Mon Sep 17 00:00:00 2001
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Date: Mon, 1 Feb 2021 17:26:54 +0100
-Subject: KVM: s390: extend kvm_s390_shadow_fault to return entry pointer
-
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-
-commit 5ac14bac08ae827b619f21bcceaaac3b8c497e31 upstream.
-
-Extend kvm_s390_shadow_fault to return the pointer to the valid leaf
-DAT table entry, or to the invalid entry.
-
-Also return some flags in the lower bits of the address:
-PEI_DAT_PROT: indicates that DAT protection applies because of the
-              protection bit in the segment (or, if EDAT, region) tables.
-PEI_NOT_PTE: indicates that the address of the DAT table entry returned
-             does not refer to a PTE, but to a segment or region table.
-
-Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Cc: stable@vger.kernel.org
-Reviewed-by: Janosch Frank <frankja@de.ibm.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Link: https://lore.kernel.org/r/20210302174443.514363-3-imbrenda@linux.ibm.com
-[borntraeger@de.ibm.com: fold in a fix from Claudio]
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/s390/kvm/gaccess.c |   30 +++++++++++++++++++++++++-----
- arch/s390/kvm/gaccess.h |    6 +++++-
- arch/s390/kvm/vsie.c    |    8 ++++----
- 3 files changed, 34 insertions(+), 10 deletions(-)
-
---- a/arch/s390/kvm/gaccess.c
-+++ b/arch/s390/kvm/gaccess.c
-@@ -976,7 +976,9 @@ int kvm_s390_check_low_addr_prot_real(st
-  * kvm_s390_shadow_tables - walk the guest page table and create shadow tables
-  * @sg: pointer to the shadow guest address space structure
-  * @saddr: faulting address in the shadow gmap
-- * @pgt: pointer to the page table address result
-+ * @pgt: pointer to the beginning of the page table for the given address if
-+ *	 successful (return value 0), or to the first invalid DAT entry in
-+ *	 case of exceptions (return value > 0)
-  * @fake: pgt references contiguous guest memory block, not a pgtable
-  */
- static int kvm_s390_shadow_tables(struct gmap *sg, unsigned long saddr,
-@@ -1034,6 +1036,7 @@ static int kvm_s390_shadow_tables(struct
- 			rfte.val = ptr;
- 			goto shadow_r2t;
- 		}
-+		*pgt = ptr + vaddr.rfx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.rfx * 8, &rfte.val);
- 		if (rc)
- 			return rc;
-@@ -1059,6 +1062,7 @@ shadow_r2t:
- 			rste.val = ptr;
- 			goto shadow_r3t;
- 		}
-+		*pgt = ptr + vaddr.rsx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.rsx * 8, &rste.val);
- 		if (rc)
- 			return rc;
-@@ -1085,6 +1089,7 @@ shadow_r3t:
- 			rtte.val = ptr;
- 			goto shadow_sgt;
- 		}
-+		*pgt = ptr + vaddr.rtx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.rtx * 8, &rtte.val);
- 		if (rc)
- 			return rc;
-@@ -1120,6 +1125,7 @@ shadow_sgt:
- 			ste.val = ptr;
- 			goto shadow_pgt;
- 		}
-+		*pgt = ptr + vaddr.sx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.sx * 8, &ste.val);
- 		if (rc)
- 			return rc;
-@@ -1154,6 +1160,8 @@ shadow_pgt:
-  * @vcpu: virtual cpu
-  * @sg: pointer to the shadow guest address space structure
-  * @saddr: faulting address in the shadow gmap
-+ * @datptr: will contain the address of the faulting DAT table entry, or of
-+ *	    the valid leaf, plus some flags
-  *
-  * Returns: - 0 if the shadow fault was successfully resolved
-  *	    - > 0 (pgm exception code) on exceptions while faulting
-@@ -1162,11 +1170,11 @@ shadow_pgt:
-  *	    - -ENOMEM if out of memory
-  */
- int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg,
--			  unsigned long saddr)
-+			  unsigned long saddr, unsigned long *datptr)
- {
- 	union vaddress vaddr;
- 	union page_table_entry pte;
--	unsigned long pgt;
-+	unsigned long pgt = 0;
- 	int dat_protection, fake;
- 	int rc;
- 
-@@ -1188,8 +1196,20 @@ int kvm_s390_shadow_fault(struct kvm_vcp
- 		pte.val = pgt + vaddr.px * PAGE_SIZE;
- 		goto shadow_page;
- 	}
--	if (!rc)
--		rc = gmap_read_table(sg->parent, pgt + vaddr.px * 8, &pte.val);
-+
-+	switch (rc) {
-+	case PGM_SEGMENT_TRANSLATION:
-+	case PGM_REGION_THIRD_TRANS:
-+	case PGM_REGION_SECOND_TRANS:
-+	case PGM_REGION_FIRST_TRANS:
-+		pgt |= PEI_NOT_PTE;
-+		break;
-+	case 0:
-+		pgt += vaddr.px * 8;
-+		rc = gmap_read_table(sg->parent, pgt, &pte.val);
-+	}
-+	if (datptr)
-+		*datptr = pgt | dat_protection * PEI_DAT_PROT;
- 	if (!rc && pte.i)
- 		rc = PGM_PAGE_TRANSLATION;
- 	if (!rc && pte.z)
---- a/arch/s390/kvm/gaccess.h
-+++ b/arch/s390/kvm/gaccess.h
-@@ -387,7 +387,11 @@ void ipte_unlock(struct kvm_vcpu *vcpu);
- int ipte_lock_held(struct kvm_vcpu *vcpu);
- int kvm_s390_check_low_addr_prot_real(struct kvm_vcpu *vcpu, unsigned long gra);
- 
-+/* MVPG PEI indication bits */
-+#define PEI_DAT_PROT 2
-+#define PEI_NOT_PTE 4
-+
- int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *shadow,
--			  unsigned long saddr);
-+			  unsigned long saddr, unsigned long *datptr);
- 
- #endif /* __KVM_S390_GACCESS_H */
---- a/arch/s390/kvm/vsie.c
-+++ b/arch/s390/kvm/vsie.c
-@@ -447,10 +447,10 @@ static int map_prefix(struct kvm_vcpu *v
- 	/* with mso/msl, the prefix lies at offset *mso* */
- 	prefix += scb_s->mso;
- 
--	rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, prefix);
-+	rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, prefix, NULL);
- 	if (!rc && (scb_s->ecb & ECB_TE))
- 		rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
--					   prefix + PAGE_SIZE);
-+					   prefix + PAGE_SIZE, NULL);
- 	/*
- 	 * We don't have to mprotect, we will be called for all unshadows.
- 	 * SIE will detect if protection applies and trigger a validity.
-@@ -741,7 +741,7 @@ static int handle_fault(struct kvm_vcpu
- 				    current->thread.gmap_addr, 1);
- 
- 	rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
--				   current->thread.gmap_addr);
-+				   current->thread.gmap_addr, NULL);
- 	if (rc > 0) {
- 		rc = inject_fault(vcpu, rc,
- 				  current->thread.gmap_addr,
-@@ -763,7 +763,7 @@ static void handle_last_fault(struct kvm
- {
- 	if (vsie_page->fault_addr)
- 		kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
--				      vsie_page->fault_addr);
-+				      vsie_page->fault_addr, NULL);
- 	vsie_page->fault_addr = 0;
- }
- 
diff --git a/queue-4.19/kvm-s390-vsie-correctly-handle-mvpg-when-in-vsie.patch b/queue-4.19/kvm-s390-vsie-correctly-handle-mvpg-when-in-vsie.patch
deleted file mode 100644
index 327a3e9..0000000
--- a/queue-4.19/kvm-s390-vsie-correctly-handle-mvpg-when-in-vsie.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From bdf7509bbefa20855d5f6bacdc5b62a8489477c9 Mon Sep 17 00:00:00 2001
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Date: Mon, 1 Feb 2021 21:54:13 +0100
-Subject: KVM: s390: VSIE: correctly handle MVPG when in VSIE
-
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-
-commit bdf7509bbefa20855d5f6bacdc5b62a8489477c9 upstream.
-
-Correctly handle the MVPG instruction when issued by a VSIE guest.
-
-Fixes: a3508fbe9dc6d ("KVM: s390: vsie: initial support for nested virtualization")
-Cc: stable@vger.kernel.org # f85f1baaa189: KVM: s390: split kvm_s390_logical_to_effective
-Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Acked-by: Janosch Frank <frankja@linux.ibm.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Link: https://lore.kernel.org/r/20210302174443.514363-4-imbrenda@linux.ibm.com
-[borntraeger@de.ibm.com: apply fixup from Claudio]
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/s390/kvm/vsie.c |   98 ++++++++++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 93 insertions(+), 5 deletions(-)
-
---- a/arch/s390/kvm/vsie.c
-+++ b/arch/s390/kvm/vsie.c
-@@ -252,11 +252,6 @@ static void unshadow_scb(struct kvm_vcpu
- 		memcpy((void *)((u64)scb_o + 0xc0),
- 		       (void *)((u64)scb_s + 0xc0), 0xf0 - 0xc0);
- 		break;
--	case ICPT_PARTEXEC:
--		/* MVPG only */
--		memcpy((void *)((u64)scb_o + 0xc0),
--		       (void *)((u64)scb_s + 0xc0), 0xd0 - 0xc0);
--		break;
- 	}
- 
- 	if (scb_s->ihcpu != 0xffffU)
-@@ -816,6 +811,95 @@ static int handle_stfle(struct kvm_vcpu
- }
- 
- /*
-+ * Get a register for a nested guest.
-+ * @vcpu the vcpu of the guest
-+ * @vsie_page the vsie_page for the nested guest
-+ * @reg the register number, the upper 4 bits are ignored.
-+ * returns: the value of the register.
-+ */
-+static u64 vsie_get_register(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, u8 reg)
-+{
-+	/* no need to validate the parameter and/or perform error handling */
-+	reg &= 0xf;
-+	switch (reg) {
-+	case 15:
-+		return vsie_page->scb_s.gg15;
-+	case 14:
-+		return vsie_page->scb_s.gg14;
-+	default:
-+		return vcpu->run->s.regs.gprs[reg];
-+	}
-+}
-+
-+static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
-+{
-+	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
-+	unsigned long pei_dest, pei_src, src, dest, mask;
-+	u64 *pei_block = &vsie_page->scb_o->mcic;
-+	int edat, rc_dest, rc_src;
-+	union ctlreg0 cr0;
-+
-+	cr0.val = vcpu->arch.sie_block->gcr[0];
-+	edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8);
-+	mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK);
-+
-+	dest = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 20) & mask;
-+	src = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 16) & mask;
-+
-+	rc_dest = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, dest, &pei_dest);
-+	rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, src, &pei_src);
-+	/*
-+	 * Either everything went well, or something non-critical went wrong
-+	 * e.g. because of a race. In either case, simply retry.
-+	 */
-+	if (rc_dest == -EAGAIN || rc_src == -EAGAIN || (!rc_dest && !rc_src)) {
-+		retry_vsie_icpt(vsie_page);
-+		return -EAGAIN;
-+	}
-+	/* Something more serious went wrong, propagate the error */
-+	if (rc_dest < 0)
-+		return rc_dest;
-+	if (rc_src < 0)
-+		return rc_src;
-+
-+	/* The only possible suppressing exception: just deliver it */
-+	if (rc_dest == PGM_TRANSLATION_SPEC || rc_src == PGM_TRANSLATION_SPEC) {
-+		clear_vsie_icpt(vsie_page);
-+		rc_dest = kvm_s390_inject_program_int(vcpu, PGM_TRANSLATION_SPEC);
-+		WARN_ON_ONCE(rc_dest);
-+		return 1;
-+	}
-+
-+	/*
-+	 * Forward the PEI intercept to the guest if it was a page fault, or
-+	 * also for segment and region table faults if EDAT applies.
-+	 */
-+	if (edat) {
-+		rc_dest = rc_dest == PGM_ASCE_TYPE ? rc_dest : 0;
-+		rc_src = rc_src == PGM_ASCE_TYPE ? rc_src : 0;
-+	} else {
-+		rc_dest = rc_dest != PGM_PAGE_TRANSLATION ? rc_dest : 0;
-+		rc_src = rc_src != PGM_PAGE_TRANSLATION ? rc_src : 0;
-+	}
-+	if (!rc_dest && !rc_src) {
-+		pei_block[0] = pei_dest;
-+		pei_block[1] = pei_src;
-+		return 1;
-+	}
-+
-+	retry_vsie_icpt(vsie_page);
-+
-+	/*
-+	 * The host has edat, and the guest does not, or it was an ASCE type
-+	 * exception. The host needs to inject the appropriate DAT interrupts
-+	 * into the guest.
-+	 */
-+	if (rc_dest)
-+		return inject_fault(vcpu, rc_dest, dest, 1);
-+	return inject_fault(vcpu, rc_src, src, 0);
-+}
-+
-+/*
-  * Run the vsie on a shadow scb and a shadow gmap, without any further
-  * sanity checks, handling SIE faults.
-  *
-@@ -895,6 +979,10 @@ static int do_vsie_run(struct kvm_vcpu *
- 		if ((scb_s->ipa & 0xf000) != 0xf000)
- 			scb_s->ipa += 0x1000;
- 		break;
-+	case ICPT_PARTEXEC:
-+		if (scb_s->ipa == 0xb254)
-+			rc = vsie_handle_mvpg(vcpu, vsie_page);
-+		break;
- 	}
- 	return rc;
- }
diff --git a/queue-4.19/kvm-s390-vsie-fix-mvpg-handling-for-prefixing-and-mso.patch b/queue-4.19/kvm-s390-vsie-fix-mvpg-handling-for-prefixing-and-mso.patch
deleted file mode 100644
index 5863706..0000000
--- a/queue-4.19/kvm-s390-vsie-fix-mvpg-handling-for-prefixing-and-mso.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From c3171e94cc1cdcc3229565244112e869f052b8d9 Mon Sep 17 00:00:00 2001
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Date: Mon, 22 Mar 2021 15:05:59 +0100
-Subject: KVM: s390: VSIE: fix MVPG handling for prefixing and MSO
-
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-
-commit c3171e94cc1cdcc3229565244112e869f052b8d9 upstream.
-
-Prefixing needs to be applied to the guest real address to translate it
-into a guest absolute address.
-
-The value of MSO needs to be added to a guest-absolute address in order to
-obtain the host-virtual.
-
-Fixes: bdf7509bbefa ("s390/kvm: VSIE: correctly handle MVPG when in VSIE")
-Reported-by: Janosch Frank <frankja@linux.ibm.com>
-Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Cc: stable@vger.kernel.org
-Link: https://lore.kernel.org/r/20210322140559.500716-3-imbrenda@linux.ibm.com
-[borntraeger@de.ibm.com simplify mso]
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/s390/kvm/vsie.c |    5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/arch/s390/kvm/vsie.c
-+++ b/arch/s390/kvm/vsie.c
-@@ -834,7 +834,7 @@ static u64 vsie_get_register(struct kvm_
- static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
- {
- 	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
--	unsigned long pei_dest, pei_src, src, dest, mask;
-+	unsigned long pei_dest, pei_src, src, dest, mask, prefix;
- 	u64 *pei_block = &vsie_page->scb_o->mcic;
- 	int edat, rc_dest, rc_src;
- 	union ctlreg0 cr0;
-@@ -842,9 +842,12 @@ static int vsie_handle_mvpg(struct kvm_v
- 	cr0.val = vcpu->arch.sie_block->gcr[0];
- 	edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8);
- 	mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK);
-+	prefix = scb_s->prefix << GUEST_PREFIX_SHIFT;
- 
- 	dest = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 20) & mask;
-+	dest = _kvm_s390_real_to_abs(prefix, dest) + scb_s->mso;
- 	src = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 16) & mask;
-+	src = _kvm_s390_real_to_abs(prefix, src) + scb_s->mso;
- 
- 	rc_dest = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, dest, &pei_dest);
- 	rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, src, &pei_src);
diff --git a/queue-5.4/kvm-s390-extend-kvm_s390_shadow_fault-to-return-entry-pointer.patch b/queue-5.4/kvm-s390-extend-kvm_s390_shadow_fault-to-return-entry-pointer.patch
deleted file mode 100644
index dec4c0f..0000000
--- a/queue-5.4/kvm-s390-extend-kvm_s390_shadow_fault-to-return-entry-pointer.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-From 5ac14bac08ae827b619f21bcceaaac3b8c497e31 Mon Sep 17 00:00:00 2001
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Date: Mon, 1 Feb 2021 17:26:54 +0100
-Subject: KVM: s390: extend kvm_s390_shadow_fault to return entry pointer
-
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-
-commit 5ac14bac08ae827b619f21bcceaaac3b8c497e31 upstream.
-
-Extend kvm_s390_shadow_fault to return the pointer to the valid leaf
-DAT table entry, or to the invalid entry.
-
-Also return some flags in the lower bits of the address:
-PEI_DAT_PROT: indicates that DAT protection applies because of the
-              protection bit in the segment (or, if EDAT, region) tables.
-PEI_NOT_PTE: indicates that the address of the DAT table entry returned
-             does not refer to a PTE, but to a segment or region table.
-
-Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Cc: stable@vger.kernel.org
-Reviewed-by: Janosch Frank <frankja@de.ibm.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Link: https://lore.kernel.org/r/20210302174443.514363-3-imbrenda@linux.ibm.com
-[borntraeger@de.ibm.com: fold in a fix from Claudio]
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/s390/kvm/gaccess.c |   30 +++++++++++++++++++++++++-----
- arch/s390/kvm/gaccess.h |    6 +++++-
- arch/s390/kvm/vsie.c    |    8 ++++----
- 3 files changed, 34 insertions(+), 10 deletions(-)
-
---- a/arch/s390/kvm/gaccess.c
-+++ b/arch/s390/kvm/gaccess.c
-@@ -976,7 +976,9 @@ int kvm_s390_check_low_addr_prot_real(st
-  * kvm_s390_shadow_tables - walk the guest page table and create shadow tables
-  * @sg: pointer to the shadow guest address space structure
-  * @saddr: faulting address in the shadow gmap
-- * @pgt: pointer to the page table address result
-+ * @pgt: pointer to the beginning of the page table for the given address if
-+ *	 successful (return value 0), or to the first invalid DAT entry in
-+ *	 case of exceptions (return value > 0)
-  * @fake: pgt references contiguous guest memory block, not a pgtable
-  */
- static int kvm_s390_shadow_tables(struct gmap *sg, unsigned long saddr,
-@@ -1034,6 +1036,7 @@ static int kvm_s390_shadow_tables(struct
- 			rfte.val = ptr;
- 			goto shadow_r2t;
- 		}
-+		*pgt = ptr + vaddr.rfx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.rfx * 8, &rfte.val);
- 		if (rc)
- 			return rc;
-@@ -1059,6 +1062,7 @@ shadow_r2t:
- 			rste.val = ptr;
- 			goto shadow_r3t;
- 		}
-+		*pgt = ptr + vaddr.rsx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.rsx * 8, &rste.val);
- 		if (rc)
- 			return rc;
-@@ -1085,6 +1089,7 @@ shadow_r3t:
- 			rtte.val = ptr;
- 			goto shadow_sgt;
- 		}
-+		*pgt = ptr + vaddr.rtx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.rtx * 8, &rtte.val);
- 		if (rc)
- 			return rc;
-@@ -1120,6 +1125,7 @@ shadow_sgt:
- 			ste.val = ptr;
- 			goto shadow_pgt;
- 		}
-+		*pgt = ptr + vaddr.sx * 8;
- 		rc = gmap_read_table(parent, ptr + vaddr.sx * 8, &ste.val);
- 		if (rc)
- 			return rc;
-@@ -1154,6 +1160,8 @@ shadow_pgt:
-  * @vcpu: virtual cpu
-  * @sg: pointer to the shadow guest address space structure
-  * @saddr: faulting address in the shadow gmap
-+ * @datptr: will contain the address of the faulting DAT table entry, or of
-+ *	    the valid leaf, plus some flags
-  *
-  * Returns: - 0 if the shadow fault was successfully resolved
-  *	    - > 0 (pgm exception code) on exceptions while faulting
-@@ -1162,11 +1170,11 @@ shadow_pgt:
-  *	    - -ENOMEM if out of memory
-  */
- int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg,
--			  unsigned long saddr)
-+			  unsigned long saddr, unsigned long *datptr)
- {
- 	union vaddress vaddr;
- 	union page_table_entry pte;
--	unsigned long pgt;
-+	unsigned long pgt = 0;
- 	int dat_protection, fake;
- 	int rc;
- 
-@@ -1188,8 +1196,20 @@ int kvm_s390_shadow_fault(struct kvm_vcp
- 		pte.val = pgt + vaddr.px * PAGE_SIZE;
- 		goto shadow_page;
- 	}
--	if (!rc)
--		rc = gmap_read_table(sg->parent, pgt + vaddr.px * 8, &pte.val);
-+
-+	switch (rc) {
-+	case PGM_SEGMENT_TRANSLATION:
-+	case PGM_REGION_THIRD_TRANS:
-+	case PGM_REGION_SECOND_TRANS:
-+	case PGM_REGION_FIRST_TRANS:
-+		pgt |= PEI_NOT_PTE;
-+		break;
-+	case 0:
-+		pgt += vaddr.px * 8;
-+		rc = gmap_read_table(sg->parent, pgt, &pte.val);
-+	}
-+	if (datptr)
-+		*datptr = pgt | dat_protection * PEI_DAT_PROT;
- 	if (!rc && pte.i)
- 		rc = PGM_PAGE_TRANSLATION;
- 	if (!rc && pte.z)
---- a/arch/s390/kvm/gaccess.h
-+++ b/arch/s390/kvm/gaccess.h
-@@ -387,7 +387,11 @@ void ipte_unlock(struct kvm_vcpu *vcpu);
- int ipte_lock_held(struct kvm_vcpu *vcpu);
- int kvm_s390_check_low_addr_prot_real(struct kvm_vcpu *vcpu, unsigned long gra);
- 
-+/* MVPG PEI indication bits */
-+#define PEI_DAT_PROT 2
-+#define PEI_NOT_PTE 4
-+
- int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *shadow,
--			  unsigned long saddr);
-+			  unsigned long saddr, unsigned long *datptr);
- 
- #endif /* __KVM_S390_GACCESS_H */
---- a/arch/s390/kvm/vsie.c
-+++ b/arch/s390/kvm/vsie.c
-@@ -613,10 +613,10 @@ static int map_prefix(struct kvm_vcpu *v
- 	/* with mso/msl, the prefix lies at offset *mso* */
- 	prefix += scb_s->mso;
- 
--	rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, prefix);
-+	rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, prefix, NULL);
- 	if (!rc && (scb_s->ecb & ECB_TE))
- 		rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
--					   prefix + PAGE_SIZE);
-+					   prefix + PAGE_SIZE, NULL);
- 	/*
- 	 * We don't have to mprotect, we will be called for all unshadows.
- 	 * SIE will detect if protection applies and trigger a validity.
-@@ -907,7 +907,7 @@ static int handle_fault(struct kvm_vcpu
- 				    current->thread.gmap_addr, 1);
- 
- 	rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
--				   current->thread.gmap_addr);
-+				   current->thread.gmap_addr, NULL);
- 	if (rc > 0) {
- 		rc = inject_fault(vcpu, rc,
- 				  current->thread.gmap_addr,
-@@ -929,7 +929,7 @@ static void handle_last_fault(struct kvm
- {
- 	if (vsie_page->fault_addr)
- 		kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
--				      vsie_page->fault_addr);
-+				      vsie_page->fault_addr, NULL);
- 	vsie_page->fault_addr = 0;
- }
- 
diff --git a/queue-5.4/kvm-s390-vsie-correctly-handle-mvpg-when-in-vsie.patch b/queue-5.4/kvm-s390-vsie-correctly-handle-mvpg-when-in-vsie.patch
deleted file mode 100644
index 1d58dd8..0000000
--- a/queue-5.4/kvm-s390-vsie-correctly-handle-mvpg-when-in-vsie.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From bdf7509bbefa20855d5f6bacdc5b62a8489477c9 Mon Sep 17 00:00:00 2001
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Date: Mon, 1 Feb 2021 21:54:13 +0100
-Subject: KVM: s390: VSIE: correctly handle MVPG when in VSIE
-
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-
-commit bdf7509bbefa20855d5f6bacdc5b62a8489477c9 upstream.
-
-Correctly handle the MVPG instruction when issued by a VSIE guest.
-
-Fixes: a3508fbe9dc6d ("KVM: s390: vsie: initial support for nested virtualization")
-Cc: stable@vger.kernel.org # f85f1baaa189: KVM: s390: split kvm_s390_logical_to_effective
-Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Acked-by: Janosch Frank <frankja@linux.ibm.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Link: https://lore.kernel.org/r/20210302174443.514363-4-imbrenda@linux.ibm.com
-[borntraeger@de.ibm.com: apply fixup from Claudio]
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/s390/kvm/vsie.c |   98 ++++++++++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 93 insertions(+), 5 deletions(-)
-
---- a/arch/s390/kvm/vsie.c
-+++ b/arch/s390/kvm/vsie.c
-@@ -416,11 +416,6 @@ static void unshadow_scb(struct kvm_vcpu
- 		memcpy((void *)((u64)scb_o + 0xc0),
- 		       (void *)((u64)scb_s + 0xc0), 0xf0 - 0xc0);
- 		break;
--	case ICPT_PARTEXEC:
--		/* MVPG only */
--		memcpy((void *)((u64)scb_o + 0xc0),
--		       (void *)((u64)scb_s + 0xc0), 0xd0 - 0xc0);
--		break;
- 	}
- 
- 	if (scb_s->ihcpu != 0xffffU)
-@@ -982,6 +977,95 @@ static int handle_stfle(struct kvm_vcpu
- }
- 
- /*
-+ * Get a register for a nested guest.
-+ * @vcpu the vcpu of the guest
-+ * @vsie_page the vsie_page for the nested guest
-+ * @reg the register number, the upper 4 bits are ignored.
-+ * returns: the value of the register.
-+ */
-+static u64 vsie_get_register(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, u8 reg)
-+{
-+	/* no need to validate the parameter and/or perform error handling */
-+	reg &= 0xf;
-+	switch (reg) {
-+	case 15:
-+		return vsie_page->scb_s.gg15;
-+	case 14:
-+		return vsie_page->scb_s.gg14;
-+	default:
-+		return vcpu->run->s.regs.gprs[reg];
-+	}
-+}
-+
-+static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
-+{
-+	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
-+	unsigned long pei_dest, pei_src, src, dest, mask;
-+	u64 *pei_block = &vsie_page->scb_o->mcic;
-+	int edat, rc_dest, rc_src;
-+	union ctlreg0 cr0;
-+
-+	cr0.val = vcpu->arch.sie_block->gcr[0];
-+	edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8);
-+	mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK);
-+
-+	dest = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 20) & mask;
-+	src = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 16) & mask;
-+
-+	rc_dest = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, dest, &pei_dest);
-+	rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, src, &pei_src);
-+	/*
-+	 * Either everything went well, or something non-critical went wrong
-+	 * e.g. because of a race. In either case, simply retry.
-+	 */
-+	if (rc_dest == -EAGAIN || rc_src == -EAGAIN || (!rc_dest && !rc_src)) {
-+		retry_vsie_icpt(vsie_page);
-+		return -EAGAIN;
-+	}
-+	/* Something more serious went wrong, propagate the error */
-+	if (rc_dest < 0)
-+		return rc_dest;
-+	if (rc_src < 0)
-+		return rc_src;
-+
-+	/* The only possible suppressing exception: just deliver it */
-+	if (rc_dest == PGM_TRANSLATION_SPEC || rc_src == PGM_TRANSLATION_SPEC) {
-+		clear_vsie_icpt(vsie_page);
-+		rc_dest = kvm_s390_inject_program_int(vcpu, PGM_TRANSLATION_SPEC);
-+		WARN_ON_ONCE(rc_dest);
-+		return 1;
-+	}
-+
-+	/*
-+	 * Forward the PEI intercept to the guest if it was a page fault, or
-+	 * also for segment and region table faults if EDAT applies.
-+	 */
-+	if (edat) {
-+		rc_dest = rc_dest == PGM_ASCE_TYPE ? rc_dest : 0;
-+		rc_src = rc_src == PGM_ASCE_TYPE ? rc_src : 0;
-+	} else {
-+		rc_dest = rc_dest != PGM_PAGE_TRANSLATION ? rc_dest : 0;
-+		rc_src = rc_src != PGM_PAGE_TRANSLATION ? rc_src : 0;
-+	}
-+	if (!rc_dest && !rc_src) {
-+		pei_block[0] = pei_dest;
-+		pei_block[1] = pei_src;
-+		return 1;
-+	}
-+
-+	retry_vsie_icpt(vsie_page);
-+
-+	/*
-+	 * The host has edat, and the guest does not, or it was an ASCE type
-+	 * exception. The host needs to inject the appropriate DAT interrupts
-+	 * into the guest.
-+	 */
-+	if (rc_dest)
-+		return inject_fault(vcpu, rc_dest, dest, 1);
-+	return inject_fault(vcpu, rc_src, src, 0);
-+}
-+
-+/*
-  * Run the vsie on a shadow scb and a shadow gmap, without any further
-  * sanity checks, handling SIE faults.
-  *
-@@ -1072,6 +1156,10 @@ static int do_vsie_run(struct kvm_vcpu *
- 		if ((scb_s->ipa & 0xf000) != 0xf000)
- 			scb_s->ipa += 0x1000;
- 		break;
-+	case ICPT_PARTEXEC:
-+		if (scb_s->ipa == 0xb254)
-+			rc = vsie_handle_mvpg(vcpu, vsie_page);
-+		break;
- 	}
- 	return rc;
- }
diff --git a/queue-5.4/kvm-s390-vsie-fix-mvpg-handling-for-prefixing-and-mso.patch b/queue-5.4/kvm-s390-vsie-fix-mvpg-handling-for-prefixing-and-mso.patch
deleted file mode 100644
index 1dd4e4e..0000000
--- a/queue-5.4/kvm-s390-vsie-fix-mvpg-handling-for-prefixing-and-mso.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From c3171e94cc1cdcc3229565244112e869f052b8d9 Mon Sep 17 00:00:00 2001
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Date: Mon, 22 Mar 2021 15:05:59 +0100
-Subject: KVM: s390: VSIE: fix MVPG handling for prefixing and MSO
-
-From: Claudio Imbrenda <imbrenda@linux.ibm.com>
-
-commit c3171e94cc1cdcc3229565244112e869f052b8d9 upstream.
-
-Prefixing needs to be applied to the guest real address to translate it
-into a guest absolute address.
-
-The value of MSO needs to be added to a guest-absolute address in order to
-obtain the host-virtual.
-
-Fixes: bdf7509bbefa ("s390/kvm: VSIE: correctly handle MVPG when in VSIE")
-Reported-by: Janosch Frank <frankja@linux.ibm.com>
-Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Cc: stable@vger.kernel.org
-Link: https://lore.kernel.org/r/20210322140559.500716-3-imbrenda@linux.ibm.com
-[borntraeger@de.ibm.com simplify mso]
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/s390/kvm/vsie.c |    5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/arch/s390/kvm/vsie.c
-+++ b/arch/s390/kvm/vsie.c
-@@ -1000,7 +1000,7 @@ static u64 vsie_get_register(struct kvm_
- static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
- {
- 	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
--	unsigned long pei_dest, pei_src, src, dest, mask;
-+	unsigned long pei_dest, pei_src, src, dest, mask, prefix;
- 	u64 *pei_block = &vsie_page->scb_o->mcic;
- 	int edat, rc_dest, rc_src;
- 	union ctlreg0 cr0;
-@@ -1008,9 +1008,12 @@ static int vsie_handle_mvpg(struct kvm_v
- 	cr0.val = vcpu->arch.sie_block->gcr[0];
- 	edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8);
- 	mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK);
-+	prefix = scb_s->prefix << GUEST_PREFIX_SHIFT;
- 
- 	dest = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 20) & mask;
-+	dest = _kvm_s390_real_to_abs(prefix, dest) + scb_s->mso;
- 	src = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 16) & mask;
-+	src = _kvm_s390_real_to_abs(prefix, src) + scb_s->mso;
- 
- 	rc_dest = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, dest, &pei_dest);
- 	rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, src, &pei_src);