]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Nov 2018 13:58:57 +0000 (14:58 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Nov 2018 13:58:57 +0000 (14:58 +0100)
added patches:
drm-ast-remove-existing-framebuffers-before-loading-driver.patch

queue-4.4/drm-ast-remove-existing-framebuffers-before-loading-driver.patch [new file with mode: 0644]
queue-4.4/series

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 (file)
index 0000000..7042d93
--- /dev/null
@@ -0,0 +1,63 @@
+From 5478ad10e7850ce3d8b7056db05ddfa3c9ddad9a Mon Sep 17 00:00:00 2001
+From: Thomas Zimmermann <tzimmermann@suse.de>
+Date: Thu, 15 Nov 2018 11:42:16 +0100
+Subject: drm/ast: Remove existing framebuffers before loading driver
+
+From: Thomas Zimmermann <tzimmermann@suse.de>
+
+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 <tzimmermann@suse.de>
+Cc: <stable@vger.kernel.org>
+Tested-by: Y.C. Chen <yc_chen@aspeedtech.com>
+Reviewed-by: Jean Delvare <jdelvare@suse.de>
+Tested-by: Jean Delvare <jdelvare@suse.de>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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);
+ }
index dbab914af56d8f885ebada3cdf040627c918cb89..8b8afa507ccb611bde10c5d0622a56f2fbc186bf 100644 (file)
@@ -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