--- /dev/null
+From f423fa1bc9fe1978e6b9f54927411b62cb43eb04 Mon Sep 17 00:00:00 2001
+From: Jason Gunthorpe <jgg@nvidia.com>
+Date: Thu, 29 Sep 2022 14:48:35 -0300
+Subject: drm/i915/gvt: Add missing vfio_unregister_group_dev() call
+
+From: Jason Gunthorpe <jgg@nvidia.com>
+
+commit f423fa1bc9fe1978e6b9f54927411b62cb43eb04 upstream.
+
+When converting to directly create the vfio_device the mdev driver has to
+put a vfio_register_emulated_iommu_dev() in the probe() and a pairing
+vfio_unregister_group_dev() in the remove.
+
+This was missed for gvt, add it.
+
+Cc: stable@vger.kernel.org
+Fixes: 978cf586ac35 ("drm/i915/gvt: convert to use vfio_register_emulated_iommu_dev")
+Reported-by: Alex Williamson <alex.williamson@redhat.com>
+Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
+Reviewed-by: Kevin Tian <kevin.tian@intel.com>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Link: https://lore.kernel.org/r/0-v1-013609965fe8+9d-vfio_gvt_unregister_jgg@nvidia.com
+Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
+Reviewed-by: Kevin Tian <kevin.tian@intel.com> # v6.0 backport
+Signed-off-by: Alex Williamson <alex.williamson@redhat.com> # v6.0 backport
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/i915/gvt/kvmgt.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/gpu/drm/i915/gvt/kvmgt.c
++++ b/drivers/gpu/drm/i915/gvt/kvmgt.c
+@@ -1595,6 +1595,9 @@ static void intel_vgpu_remove(struct mde
+
+ if (WARN_ON_ONCE(vgpu->attached))
+ return;
++
++ vfio_unregister_group_dev(&vgpu->vfio_device);
++ vfio_uninit_group_dev(&vgpu->vfio_device);
+ intel_gvt_destroy_vgpu(vgpu);
+ }
+
--- /dev/null
+From dc63a086daee92c63e392e4e7cd7ed61f3693026 Mon Sep 17 00:00:00 2001
+From: "Jason A. Donenfeld" <Jason@zx2c4.com>
+Date: Tue, 27 Sep 2022 15:08:35 +0200
+Subject: m68k: Rework BI_VIRT_RNG_SEED as BI_RNG_SEED
+
+From: Jason A. Donenfeld <Jason@zx2c4.com>
+
+commit dc63a086daee92c63e392e4e7cd7ed61f3693026 upstream.
+
+This is useful on !virt platforms for kexec, so change things from
+BI_VIRT_RNG_SEED to be BI_RNG_SEED, and simply remove BI_VIRT_RNG_SEED
+because it only ever lasted one release, and nothing is broken by not
+having it. At the same time, keep a comment noting that it's been
+removed, so that ID isn't reused. In addition, we previously documented
+2-byte alignment, but 4-byte alignment is actually necessary, so update
+that comment.
+
+Suggested-by: Geert Uytterhoeven <geert@linux-m68k.org>
+Fixes: a1ee38ab1a75 ("m68k: virt: Use RNG seed from bootinfo block")
+Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
+Link: https://lore.kernel.org/r/20220927130835.1629806-2-Jason@zx2c4.com
+Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/m68k/include/uapi/asm/bootinfo-virt.h | 9 ++-------
+ arch/m68k/include/uapi/asm/bootinfo.h | 7 +++++++
+ arch/m68k/kernel/setup_mm.c | 12 ++++++++++++
+ arch/m68k/virt/config.c | 11 -----------
+ 4 files changed, 21 insertions(+), 18 deletions(-)
+
+--- a/arch/m68k/include/uapi/asm/bootinfo-virt.h
++++ b/arch/m68k/include/uapi/asm/bootinfo-virt.h
+@@ -13,13 +13,8 @@
+ #define BI_VIRT_VIRTIO_BASE 0x8004
+ #define BI_VIRT_CTRL_BASE 0x8005
+
+-/*
+- * A random seed used to initialize the RNG. Record format:
+- *
+- * - length [ 2 bytes, 16-bit big endian ]
+- * - seed data [ `length` bytes, padded to preserve 2-byte alignment ]
+- */
+-#define BI_VIRT_RNG_SEED 0x8006
++/* No longer used -- replaced with BI_RNG_SEED -- but don't reuse this index:
++ * #define BI_VIRT_RNG_SEED 0x8006 */
+
+ #define VIRT_BOOTI_VERSION MK_BI_VERSION(2, 0)
+
+--- a/arch/m68k/include/uapi/asm/bootinfo.h
++++ b/arch/m68k/include/uapi/asm/bootinfo.h
+@@ -64,6 +64,13 @@ struct mem_info {
+ /* (struct mem_info) */
+ #define BI_COMMAND_LINE 0x0007 /* kernel command line parameters */
+ /* (string) */
++/*
++ * A random seed used to initialize the RNG. Record format:
++ *
++ * - length [ 2 bytes, 16-bit big endian ]
++ * - seed data [ `length` bytes, padded to preserve 4-byte struct alignment ]
++ */
++#define BI_RNG_SEED 0x0008
+
+
+ /*
+--- a/arch/m68k/kernel/setup_mm.c
++++ b/arch/m68k/kernel/setup_mm.c
+@@ -25,6 +25,7 @@
+ #include <linux/module.h>
+ #include <linux/nvram.h>
+ #include <linux/initrd.h>
++#include <linux/random.h>
+
+ #include <asm/bootinfo.h>
+ #include <asm/byteorder.h>
+@@ -151,6 +152,17 @@ static void __init m68k_parse_bootinfo(c
+ sizeof(m68k_command_line));
+ break;
+
++ case BI_RNG_SEED: {
++ u16 len = be16_to_cpup(data);
++ add_bootloader_randomness(data + 2, len);
++ /*
++ * Zero the data to preserve forward secrecy, and zero the
++ * length to prevent kexec from using it.
++ */
++ memzero_explicit((void *)data, len + 2);
++ break;
++ }
++
+ default:
+ if (MACH_IS_AMIGA)
+ unknown = amiga_parse_bootinfo(record);
+--- a/arch/m68k/virt/config.c
++++ b/arch/m68k/virt/config.c
+@@ -2,7 +2,6 @@
+
+ #include <linux/reboot.h>
+ #include <linux/serial_core.h>
+-#include <linux/random.h>
+ #include <clocksource/timer-goldfish.h>
+
+ #include <asm/bootinfo.h>
+@@ -93,16 +92,6 @@ int __init virt_parse_bootinfo(const str
+ data += 4;
+ virt_bi_data.virtio.irq = be32_to_cpup(data);
+ break;
+- case BI_VIRT_RNG_SEED: {
+- u16 len = be16_to_cpup(data);
+- add_bootloader_randomness(data + 2, len);
+- /*
+- * Zero the data to preserve forward secrecy, and zero the
+- * length to prevent kexec from using it.
+- */
+- memzero_explicit((void *)data, len + 2);
+- break;
+- }
+ default:
+ unknown = 1;
+ break;