Re: [PATCH] agpgart: Reprobe VGA devices when a new GART device is added

2010-03-01 Thread Ben Hutchings
On Sun, 2010-02-28 at 03:30 +, Ben Hutchings wrote:
 +static void agp_probe_video(struct work_struct *work)
 +{
 + struct pci_dev *pdev = NULL;
 +
 + while ((pdev = pci_get_class(0x03, pdev)) != NULL) {

Only without the opening brace here...

Ben.

 + if (!pdev-dev.driver  device_reprobe(pdev-dev))
 + pr_err(PFX failed to reprobe %s\n, pci_name(pdev));
 +}

-- 
Ben Hutchings
Horngren's Observation:
   Among economists, the real world is often a special case.


signature.asc
Description: This is a digitally signed message part
--
Download Intel#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


[PATCH] agpgart: Reprobe VGA devices when a new GART device is added

2010-03-01 Thread Ben Hutchings
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 b...@decadent.org.uk
---
This is intended to address the dependency problem highlighted in the
above bug report.  That specific bug can be fixed by adding a module
dependency from i915 to intel_agp, but in general there is no fixed
relationship betweem DRM and GART drivers.

There is a narrow race between the check for a current driver binding
and the call to device_reprobe().  This could be closed by adding a
variant on device_attach() and device_reprobe() that is a no-op for
bound devices.

Ben.

 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(0x03, 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



--
Download Intel#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH] agpgart: Reprobe VGA devices when a new GART device is added

2010-03-01 Thread Dave Airlie
On Sun, Feb 28, 2010 at 1:30 PM, Ben Hutchings b...@decadent.org.uk wrote:
 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 b...@decadent.org.uk
 ---
 This is intended to address the dependency problem highlighted in the
 above bug report.  That specific bug can be fixed by adding a module
 dependency from i915 to intel_agp, but in general there is no fixed
 relationship betweem DRM and GART drivers.

 There is a narrow race between the check for a current driver binding
 and the call to device_reprobe().  This could be closed by adding a
 variant on device_attach() and device_reprobe() that is a no-op for
 bound devices.


This isn't useful, generally there is no AGP binding, and most drivers
if they can't find an AGP backend will still run fine without it. i.e. radeon,
mga etc.

Intel is a special case and I think we've already merged an explicit
depend.

Just build agp drivers into the kernel, I'm tempted to make them all
non-modular.

Dave.

--
Download Intel#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH] agpgart: Reprobe VGA devices when a new GART device is added

2010-03-01 Thread Eric Anholt
On Mon, 1 Mar 2010 18:33:14 +1000, Dave Airlie airl...@gmail.com wrote:
 On Sun, Feb 28, 2010 at 1:30 PM, Ben Hutchings b...@decadent.org.uk wrote:
  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 b...@decadent.org.uk
  ---
  This is intended to address the dependency problem highlighted in the
  above bug report.  That specific bug can be fixed by adding a module
  dependency from i915 to intel_agp, but in general there is no fixed
  relationship betweem DRM and GART drivers.
 
  There is a narrow race between the check for a current driver binding
  and the call to device_reprobe().  This could be closed by adding a
  variant on device_attach() and device_reprobe() that is a no-op for
  bound devices.
 
 
 This isn't useful, generally there is no AGP binding, and most drivers
 if they can't find an AGP backend will still run fine without it. i.e. radeon,
 mga etc.
 
 Intel is a special case and I think we've already merged an explicit
 depend.
 
 Just build agp drivers into the kernel, I'm tempted to make them all
 non-modular.

That seems easier.


pgptHyNIRQvRo.pgp
Description: PGP signature
--
Download Intel#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: [PATCH] agpgart: Reprobe VGA devices when a new GART device is added

2010-03-01 Thread Ben Hutchings
On Mon, Mar 01, 2010 at 08:19:02AM -0800, Eric Anholt wrote:
 On Mon, 1 Mar 2010 18:33:14 +1000, Dave Airlie airl...@gmail.com wrote:
  On Sun, Feb 28, 2010 at 1:30 PM, Ben Hutchings b...@decadent.org.uk wrote:
   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 b...@decadent.org.uk
   ---
   This is intended to address the dependency problem highlighted in the
   above bug report.  That specific bug can be fixed by adding a module
   dependency from i915 to intel_agp, but in general there is no fixed
   relationship betweem DRM and GART drivers.
  
   There is a narrow race between the check for a current driver binding
   and the call to device_reprobe().  This could be closed by adding a
   variant on device_attach() and device_reprobe() that is a no-op for
   bound devices.
  
  
  This isn't useful, generally there is no AGP binding, and most drivers
  if they can't find an AGP backend will still run fine without it. i.e. 
  radeon,
  mga etc.

I see, only the Intel GPU drivers set DRIVER_REQUIRE_AGP.

  Intel is a special case and I think we've already merged an explicit
  depend.
  
  Just build agp drivers into the kernel, I'm tempted to make them all
  non-modular.
 
 That seems easier.

Easier, yes, but it's a fair amount of bloat for i386 kernels (less so for
x86-64) since there are many different GART drivers.  I was hoping to avoid
that.

Ben.

-- 
Ben Hutchings
Life is like a sewer:
what you get out of it depends on what you put into it.

--
Download Intel#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
--
___
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel