agpgart: Reprobe VGA devices when a new GART device is added (Closes: #570229)
svn path=/dists/sid/linux-2.6/; revision=15289
This commit is contained in:
parent
f2ea7c46fb
commit
2f60f3c636
|
@ -8,6 +8,10 @@ linux-2.6 (2.6.32-10) UNRELEASED; urgency=low
|
||||||
|
|
||||||
[ Aurelien Jarno ]
|
[ Aurelien Jarno ]
|
||||||
* Fix signal stack alignement on sparc64 (Closes: #569797)
|
* Fix signal stack alignement on sparc64 (Closes: #569797)
|
||||||
|
|
||||||
|
[ Ben Hutchings ]
|
||||||
|
* agpgart: Reprobe VGA devices when a new GART device is added
|
||||||
|
(Closes: #570229)
|
||||||
|
|
||||||
-- maximilian attems <maks@debian.org> Thu, 25 Feb 2010 13:07:47 +0100
|
-- maximilian attems <maks@debian.org> Thu, 25 Feb 2010 13:07:47 +0100
|
||||||
|
|
||||||
|
|
64
debian/patches/bugfix/all/agpgart-Reprobe-VGA-devices-new-GART-device-added.patch
vendored
Normal file
64
debian/patches/bugfix/all/agpgart-Reprobe-VGA-devices-new-GART-device-added.patch
vendored
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
From bd754879318076947fd4e18a8df8f3b28da73231 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
Date: Sat, 27 Feb 2010 23:41:58 +0000
|
||||||
|
Subject: [PATCH] agpgart: Reprobe VGA devices when a new GART device is added
|
||||||
|
|
||||||
|
This addresses <http://bugzilla.kernel.org/show_bug.cgi?id=15021>.
|
||||||
|
|
||||||
|
DRM drivers may fail to probe their devices when the associated AGP
|
||||||
|
GART does not yet have a driver, so we reprobe unbound VGA devices
|
||||||
|
when a GART device is added.
|
||||||
|
|
||||||
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
---
|
||||||
|
drivers/char/agp/backend.c | 20 ++++++++++++++++++++
|
||||||
|
1 files changed, 20 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c
|
||||||
|
index c3ab46d..f9680bf 100644
|
||||||
|
--- a/drivers/char/agp/backend.c
|
||||||
|
+++ b/drivers/char/agp/backend.c
|
||||||
|
@@ -36,6 +36,7 @@
|
||||||
|
#include <linux/agp_backend.h>
|
||||||
|
#include <linux/agpgart.h>
|
||||||
|
#include <linux/vmalloc.h>
|
||||||
|
+#include <linux/workqueue.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include "agp.h"
|
||||||
|
|
||||||
|
@@ -281,6 +282,24 @@ void agp_put_bridge(struct agp_bridge_data *bridge)
|
||||||
|
EXPORT_SYMBOL(agp_put_bridge);
|
||||||
|
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * DRM drivers may fail to probe their devices when the associated AGP
|
||||||
|
+ * GART does not yet have a driver, so we reprobe unbound VGA devices
|
||||||
|
+ * when a GART device is added. This problem applies not only to true
|
||||||
|
+ * AGP devices which would be children of the affected bridge, but
|
||||||
|
+ * also to PCI Express devices that may be siblings of the GART
|
||||||
|
+ * device. Therefore iterate over all PCI VGA devices.
|
||||||
|
+ */
|
||||||
|
+static void agp_probe_video(struct work_struct *work)
|
||||||
|
+{
|
||||||
|
+ struct pci_dev *pdev = NULL;
|
||||||
|
+
|
||||||
|
+ while ((pdev = pci_get_class(0x030000, pdev)) != NULL) {
|
||||||
|
+ if (!pdev->dev.driver && device_reprobe(&pdev->dev))
|
||||||
|
+ pr_err(PFX "failed to reprobe %s\n", pci_name(pdev));
|
||||||
|
+}
|
||||||
|
+static DECLARE_WORK(agp_probe_video_work, agp_probe_video);
|
||||||
|
+
|
||||||
|
int agp_add_bridge(struct agp_bridge_data *bridge)
|
||||||
|
{
|
||||||
|
int error;
|
||||||
|
@@ -324,6 +343,7 @@ int agp_add_bridge(struct agp_bridge_data *bridge)
|
||||||
|
}
|
||||||
|
|
||||||
|
list_add(&bridge->list, &agp_bridges);
|
||||||
|
+ schedule_work(&agp_probe_video_work);
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
frontend_err:
|
||||||
|
--
|
||||||
|
1.6.6.2
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
+ bugfix/all/tcp-fix-ICMP-RTO-war.patch
|
+ bugfix/all/tcp-fix-ICMP-RTO-war.patch
|
||||||
+ bugfix/sparc/stack-alignment.patch
|
+ bugfix/sparc/stack-alignment.patch
|
||||||
|
+ bugfix/all/agpgart-Reprobe-VGA-devices-new-GART-device-added.patch
|
||||||
|
|
Loading…
Reference in New Issue