From: Greg Kroah-Hartman Date: Thu, 29 Nov 2018 13:58:57 +0000 (+0100) Subject: 4.4-stable patches X-Git-Tag: v4.19.6~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f317c697f571c28fd9f9a07f57ba62bb3def43ca;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: drm-ast-remove-existing-framebuffers-before-loading-driver.patch --- diff --git a/queue-4.4/drm-ast-remove-existing-framebuffers-before-loading-driver.patch b/queue-4.4/drm-ast-remove-existing-framebuffers-before-loading-driver.patch new file mode 100644 index 00000000000..7042d9398f1 --- /dev/null +++ b/queue-4.4/drm-ast-remove-existing-framebuffers-before-loading-driver.patch @@ -0,0 +1,63 @@ +From 5478ad10e7850ce3d8b7056db05ddfa3c9ddad9a Mon Sep 17 00:00:00 2001 +From: Thomas Zimmermann +Date: Thu, 15 Nov 2018 11:42:16 +0100 +Subject: drm/ast: Remove existing framebuffers before loading driver + +From: Thomas Zimmermann + +commit 5478ad10e7850ce3d8b7056db05ddfa3c9ddad9a upstream. + +If vesafb attaches to the AST device, it configures the framebuffer memory +for uncached access by default. When ast.ko later tries to attach itself to +the device, it wants to use write-combining on the framebuffer memory, but +vesefb's existing configuration for uncached access takes precedence. This +results in reduced performance. + +Removing the framebuffer's configuration before loding the AST driver fixes +the problem. Other DRM drivers already contain equivalent code. + +Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1112963 +Signed-off-by: Thomas Zimmermann +Cc: +Tested-by: Y.C. Chen +Reviewed-by: Jean Delvare +Tested-by: Jean Delvare +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/ast/ast_drv.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +--- a/drivers/gpu/drm/ast/ast_drv.c ++++ b/drivers/gpu/drm/ast/ast_drv.c +@@ -60,8 +60,29 @@ static const struct pci_device_id pciidl + + MODULE_DEVICE_TABLE(pci, pciidlist); + ++static void ast_kick_out_firmware_fb(struct pci_dev *pdev) ++{ ++ struct apertures_struct *ap; ++ bool primary = false; ++ ++ ap = alloc_apertures(1); ++ if (!ap) ++ return; ++ ++ ap->ranges[0].base = pci_resource_start(pdev, 0); ++ ap->ranges[0].size = pci_resource_len(pdev, 0); ++ ++#ifdef CONFIG_X86 ++ primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; ++#endif ++ remove_conflicting_framebuffers(ap, "astdrmfb", primary); ++ kfree(ap); ++} ++ + static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + { ++ ast_kick_out_firmware_fb(pdev); ++ + return drm_get_pci_dev(pdev, ent, &driver); + } + diff --git a/queue-4.4/series b/queue-4.4/series index dbab914af56..8b8afa507cc 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -83,3 +83,4 @@ btrfs-ensure-btrfs_trim_fs-can-trim-the-whole-filesystem.patch sched-core-allow-__sched_setscheduler-in-interrupts-when-pi-is-not-used.patch namei-allow-restricted-o_creat-of-fifos-and-regular-files.patch s390-mm-check-for-valid-vma-before-zapping-in-gmap_discard.patch +drm-ast-remove-existing-framebuffers-before-loading-driver.patch