From 6ef2b41a1e7bedef846e58939153f7295a4ef43c Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Wed, 4 May 2022 12:31:19 +0200 Subject: [PATCH] rebase patches on top of Ubuntu-5.15.0-29.30 (generated with debian/scripts/import-upstream-tag) Signed-off-by: Thomas Lamprecht --- ...ides-for-missing-ACS-capabilities-4..patch | 8 +- ...-default-dynamic-halt-polling-growth.patch | 2 +- ...de-unregister_netdevice-refcount-lea.patch | 2 +- ...rate-split-BTF-type-info-per-default.patch | 2 +- ...group-always-terminate-io.stat-lines.patch | 6 +- ...Don-t-mark-as-busy-the-simple-frame.patch} | 2 +- ...-firmware-fb-devices-on-forced-remov.patch | 117 ------------------ ...drm-Request-memory-region-in-driver.patch} | 2 +- ...efb-Request-memory-region-in-driver.patch} | 0 ...ce-between-timeout-flush-and-removal.patch | 57 --------- 10 files changed, 12 insertions(+), 186 deletions(-) rename patches/kernel/{0011-drivers-firmware-Don-t-mark-as-busy-the-simple-frame.patch => 0010-drivers-firmware-Don-t-mark-as-busy-the-simple-frame.patch} (97%) delete mode 100644 patches/kernel/0010-fbdev-Hot-unplug-firmware-fb-devices-on-forced-remov.patch rename patches/kernel/{0012-drm-simpledrm-Request-memory-region-in-driver.patch => 0011-drm-simpledrm-Request-memory-region-in-driver.patch} (98%) rename patches/kernel/{0013-fbdev-simplefb-Request-memory-region-in-driver.patch => 0012-fbdev-simplefb-Request-memory-region-in-driver.patch} (100%) delete mode 100644 patches/kernel/0014-io_uring-fix-race-between-timeout-flush-and-removal.patch diff --git a/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch b/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch index 8a51438..580ef9a 100644 --- a/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch +++ b/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch @@ -55,10 +55,10 @@ Signed-off-by: Thomas Lamprecht 2 files changed, 111 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index 369d7f3f63cb..92f35bf44f49 100644 +index 9b448ff43c4d..259fce98a308 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -3908,6 +3908,15 @@ +@@ -3907,6 +3907,15 @@ Also, it enforces the PCI Local Bus spec rule that those bits should be 0 in system reset events (useful for kexec/kdump cases). @@ -75,7 +75,7 @@ index 369d7f3f63cb..92f35bf44f49 100644 Safety option to keep boot IRQs enabled. This should never be necessary. diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c -index bf3af7d81bdc..04ef248fb1af 100644 +index 1c566b0cbee9..d49c54c579bb 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -193,6 +193,106 @@ static int __init pci_apply_final_quirks(void) @@ -185,7 +185,7 @@ index bf3af7d81bdc..04ef248fb1af 100644 /* * Decoding should be disabled for a PCI device during BAR sizing to avoid * conflict. But doing so may cause problems on host bridge and perhaps other -@@ -4915,6 +5015,8 @@ static const struct pci_dev_acs_enabled { +@@ -4927,6 +5027,8 @@ static const struct pci_dev_acs_enabled { { PCI_VENDOR_ID_CAVIUM, 0xA060, pci_quirk_mf_endpoint_acs }, /* APM X-Gene */ { PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs }, diff --git a/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch b/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch index ecf9691..c0645bb 100644 --- a/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch +++ b/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch @@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c -index fcceb8443aa9..f26717dea65f 100644 +index fefdf3a6dae3..b1f35bc88be5 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -79,7 +79,7 @@ module_param(halt_poll_ns, uint, 0644); diff --git a/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch b/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch index 6ef040e..4dcd0c8 100644 --- a/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch +++ b/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch @@ -10,7 +10,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/dev.c b/net/core/dev.c -index 33dc2a3ff7d7..b797bc32a088 100644 +index 804aba2228c2..72bcbef321a8 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -10524,7 +10524,7 @@ static void netdev_wait_allrefs(struct net_device *dev) diff --git a/patches/kernel/0008-do-not-generate-split-BTF-type-info-per-default.patch b/patches/kernel/0008-do-not-generate-split-BTF-type-info-per-default.patch index 1a8936c..6f746cd 100644 --- a/patches/kernel/0008-do-not-generate-split-BTF-type-info-per-default.patch +++ b/patches/kernel/0008-do-not-generate-split-BTF-type-info-per-default.patch @@ -14,7 +14,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug -index 12649e4c2b29..7c2d1c272c9d 100644 +index 5d5f53f242da..790b372e6fd0 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -325,7 +325,7 @@ config PAHOLE_HAS_SPLIT_BTF diff --git a/patches/kernel/0009-blk-cgroup-always-terminate-io.stat-lines.patch b/patches/kernel/0009-blk-cgroup-always-terminate-io.stat-lines.patch index ae83bc1..8e58480 100644 --- a/patches/kernel/0009-blk-cgroup-always-terminate-io.stat-lines.patch +++ b/patches/kernel/0009-blk-cgroup-always-terminate-io.stat-lines.patch @@ -22,7 +22,7 @@ Signed-off-by: Thomas Lamprecht 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c -index 0eec59e4df65..38c62a44905a 100644 +index 07a2524e6efd..fd09c20a5543 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -887,7 +887,6 @@ static void blkcg_print_one_stat(struct blkcg_gq *blkg, struct seq_file *s) @@ -133,10 +133,10 @@ index c0545f9da549..d33460f3d43d 100644 static struct blkg_policy_data *iolatency_pd_alloc(gfp_t gfp, diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h -index b4de2010fba5..132e05ed6935 100644 +index bc5c04d711bb..618359e3beca 100644 --- a/include/linux/blk-cgroup.h +++ b/include/linux/blk-cgroup.h -@@ -152,7 +152,7 @@ typedef void (blkcg_pol_online_pd_fn)(struct blkg_policy_data *pd); +@@ -153,7 +153,7 @@ typedef void (blkcg_pol_online_pd_fn)(struct blkg_policy_data *pd); typedef void (blkcg_pol_offline_pd_fn)(struct blkg_policy_data *pd); typedef void (blkcg_pol_free_pd_fn)(struct blkg_policy_data *pd); typedef void (blkcg_pol_reset_pd_stats_fn)(struct blkg_policy_data *pd); diff --git a/patches/kernel/0011-drivers-firmware-Don-t-mark-as-busy-the-simple-frame.patch b/patches/kernel/0010-drivers-firmware-Don-t-mark-as-busy-the-simple-frame.patch similarity index 97% rename from patches/kernel/0011-drivers-firmware-Don-t-mark-as-busy-the-simple-frame.patch rename to patches/kernel/0010-drivers-firmware-Don-t-mark-as-busy-the-simple-frame.patch index 449edd5..f210f5e 100644 --- a/patches/kernel/0011-drivers-firmware-Don-t-mark-as-busy-the-simple-frame.patch +++ b/patches/kernel/0010-drivers-firmware-Don-t-mark-as-busy-the-simple-frame.patch @@ -20,7 +20,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/firmware/sysfb_simplefb.c b/drivers/firmware/sysfb_simplefb.c -index 303a491e520d..76c4abc42a30 100644 +index 757cc8b9f3de..bda8712bfd8c 100644 --- a/drivers/firmware/sysfb_simplefb.c +++ b/drivers/firmware/sysfb_simplefb.c @@ -99,7 +99,7 @@ __init int sysfb_create_simplefb(const struct screen_info *si, diff --git a/patches/kernel/0010-fbdev-Hot-unplug-firmware-fb-devices-on-forced-remov.patch b/patches/kernel/0010-fbdev-Hot-unplug-firmware-fb-devices-on-forced-remov.patch deleted file mode 100644 index ebc354c..0000000 --- a/patches/kernel/0010-fbdev-Hot-unplug-firmware-fb-devices-on-forced-remov.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Thomas Zimmermann -Date: Tue, 25 Jan 2022 10:12:18 +0100 -Subject: [PATCH] fbdev: Hot-unplug firmware fb devices on forced removal - -Hot-unplug all firmware-framebuffer devices as part of removing -them via remove_conflicting_framebuffers() et al. Releases all -memory regions to be acquired by native drivers. - -Firmware, such as EFI, install a framebuffer while posting the -computer. After removing the firmware-framebuffer device from fbdev, -a native driver takes over the hardware and the firmware framebuffer -becomes invalid. - -Firmware-framebuffer drivers, specifically simplefb, don't release -their device from Linux' device hierarchy. It still owns the firmware -framebuffer and blocks the native drivers from loading. This has been -observed in the vmwgfx driver. [1] - -Initiating a device removal (i.e., hot unplug) as part of -remove_conflicting_framebuffers() removes the underlying device and -returns the memory range to the system. - -[1] https://lore.kernel.org/dri-devel/20220117180359.18114-1-zack@kde.org/ - -v2: - * rename variable 'dev' to 'device' (Javier) - -Signed-off-by: Thomas Zimmermann -Reported-by: Zack Rusin -Reviewed-by: Javier Martinez Canillas -Reviewed-by: Zack Rusin -CC: stable@vger.kernel.org # v5.11+ -Signed-off-by: Thomas Lamprecht ---- - drivers/video/fbdev/core/fbmem.c | 29 ++++++++++++++++++++++++++--- - include/linux/fb.h | 1 + - 2 files changed, 27 insertions(+), 3 deletions(-) - -diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c -index 7bd5e2a4a9da..91145d93990a 100644 ---- a/drivers/video/fbdev/core/fbmem.c -+++ b/drivers/video/fbdev/core/fbmem.c -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -1557,18 +1558,36 @@ static void do_remove_conflicting_framebuffers(struct apertures_struct *a, - /* check all firmware fbs and kick off if the base addr overlaps */ - for_each_registered_fb(i) { - struct apertures_struct *gen_aper; -+ struct device *device; - - if (!(registered_fb[i]->flags & FBINFO_MISC_FIRMWARE)) - continue; - - gen_aper = registered_fb[i]->apertures; -+ device = registered_fb[i]->device; - if (fb_do_apertures_overlap(gen_aper, a) || - (primary && gen_aper && gen_aper->count && - gen_aper->ranges[0].base == VGA_FB_PHYS)) { - - printk(KERN_INFO "fb%d: switching to %s from %s\n", - i, name, registered_fb[i]->fix.id); -- do_unregister_framebuffer(registered_fb[i]); -+ -+ /* -+ * If we kick-out a firmware driver, we also want to remove -+ * the underlying platform device, such as simple-framebuffer, -+ * VESA, EFI, etc. A native driver will then be able to -+ * allocate the memory range. -+ * -+ * If it's not a platform device, at least print a warning. A -+ * fix would add code to remove the device from the system. -+ */ -+ if (dev_is_platform(device)) { -+ registered_fb[i]->forced_out = true; -+ platform_device_unregister(to_platform_device(device)); -+ } else { -+ pr_warn("fb%d: cannot remove device\n", i); -+ do_unregister_framebuffer(registered_fb[i]); -+ } - } - } - } -@@ -1895,9 +1914,13 @@ EXPORT_SYMBOL(register_framebuffer); - void - unregister_framebuffer(struct fb_info *fb_info) - { -- mutex_lock(®istration_lock); -+ bool forced_out = fb_info->forced_out; -+ -+ if (!forced_out) -+ mutex_lock(®istration_lock); - do_unregister_framebuffer(fb_info); -- mutex_unlock(®istration_lock); -+ if (!forced_out) -+ mutex_unlock(®istration_lock); - } - EXPORT_SYMBOL(unregister_framebuffer); - -diff --git a/include/linux/fb.h b/include/linux/fb.h -index 02f362c661c8..3d7306c9a706 100644 ---- a/include/linux/fb.h -+++ b/include/linux/fb.h -@@ -502,6 +502,7 @@ struct fb_info { - } *apertures; - - bool skip_vt_switch; /* no VT switch on suspend/resume required */ -+ bool forced_out; /* set when being removed by another driver */ - }; - - static inline struct apertures_struct *alloc_apertures(unsigned int max_num) { diff --git a/patches/kernel/0012-drm-simpledrm-Request-memory-region-in-driver.patch b/patches/kernel/0011-drm-simpledrm-Request-memory-region-in-driver.patch similarity index 98% rename from patches/kernel/0012-drm-simpledrm-Request-memory-region-in-driver.patch rename to patches/kernel/0011-drm-simpledrm-Request-memory-region-in-driver.patch index 5bf59ac..4249147 100644 --- a/patches/kernel/0012-drm-simpledrm-Request-memory-region-in-driver.patch +++ b/patches/kernel/0011-drm-simpledrm-Request-memory-region-in-driver.patch @@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simpledrm.c -index 5a6e89825bc2..6da507960af6 100644 +index 3e3f9ba1e885..806fdc3237b3 100644 --- a/drivers/gpu/drm/tiny/simpledrm.c +++ b/drivers/gpu/drm/tiny/simpledrm.c @@ -525,21 +525,33 @@ static int simpledrm_device_init_mm(struct simpledrm_device *sdev) diff --git a/patches/kernel/0013-fbdev-simplefb-Request-memory-region-in-driver.patch b/patches/kernel/0012-fbdev-simplefb-Request-memory-region-in-driver.patch similarity index 100% rename from patches/kernel/0013-fbdev-simplefb-Request-memory-region-in-driver.patch rename to patches/kernel/0012-fbdev-simplefb-Request-memory-region-in-driver.patch diff --git a/patches/kernel/0014-io_uring-fix-race-between-timeout-flush-and-removal.patch b/patches/kernel/0014-io_uring-fix-race-between-timeout-flush-and-removal.patch deleted file mode 100644 index d029e3f..0000000 --- a/patches/kernel/0014-io_uring-fix-race-between-timeout-flush-and-removal.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jens Axboe -Date: Fri, 8 Apr 2022 11:08:58 -0600 -Subject: [PATCH] io_uring: fix race between timeout flush and removal - -commit e677edbcabee849bfdd43f1602bccbecf736a646 upstream. - -io_flush_timeouts() assumes the timeout isn't in progress of triggering -or being removed/canceled, so it unconditionally removes it from the -timeout list and attempts to cancel it. - -Leave it on the list and let the normal timeout cancelation take care -of it. - -Cc: stable@vger.kernel.org # 5.5+ -Signed-off-by: Jens Axboe -Signed-off-by: Greg Kroah-Hartman -Signed-off-by: Thomas Lamprecht ---- - fs/io_uring.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/fs/io_uring.c b/fs/io_uring.c -index 156c54ebb62b..367b7ba2fcb0 100644 ---- a/fs/io_uring.c -+++ b/fs/io_uring.c -@@ -1546,12 +1546,11 @@ static void io_flush_timeouts(struct io_ring_ctx *ctx) - __must_hold(&ctx->completion_lock) - { - u32 seq = ctx->cached_cq_tail - atomic_read(&ctx->cq_timeouts); -+ struct io_kiocb *req, *tmp; - - spin_lock_irq(&ctx->timeout_lock); -- while (!list_empty(&ctx->timeout_list)) { -+ list_for_each_entry_safe(req, tmp, &ctx->timeout_list, timeout.list) { - u32 events_needed, events_got; -- struct io_kiocb *req = list_first_entry(&ctx->timeout_list, -- struct io_kiocb, timeout.list); - - if (io_is_timeout_noseq(req)) - break; -@@ -1568,7 +1567,6 @@ static void io_flush_timeouts(struct io_ring_ctx *ctx) - if (events_got < events_needed) - break; - -- list_del_init(&req->timeout.list); - io_kill_timeout(req, 0); - } - ctx->cq_last_tm_flush = seq; -@@ -6209,6 +6207,7 @@ static int io_timeout_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe, - if (get_timespec64(&data->ts, u64_to_user_ptr(sqe->addr))) - return -EFAULT; - -+ INIT_LIST_HEAD(&req->timeout.list); - data->mode = io_translate_timeout_mode(flags); - hrtimer_init(&data->timer, io_timeout_get_clock(data), data->mode); -