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  wrote:
> > On Sun, Feb 28, 2010 at 1:30 PM, Ben Hutchings  wrote:
> > > This addresses .
> > >
> > > 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 
> > > ---
> > > 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® 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  wrote:
> On Sun, Feb 28, 2010 at 1:30 PM, Ben Hutchings  wrote:
> > This addresses .
> >
> > 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 
> > ---
> > 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® 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  wrote:
> This addresses .
>
> 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 
> ---
> 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® 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 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® 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 .

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 
---
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 
 #include 
 #include 
+#include 
 #include 
 #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® 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