[PATCH][AGPGART] intel_agp: don't load if no IGD and AGP port

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Wang Zhenyu
Date: Wednesday, June 20, 2007 - 10:43 pm

Thanks Carlo to report this problem. The following patch should fix
his and potential issue.

[AGPGART] intel_agp: don't load if no IGD detected and no AGP port

After i915 chip, GMCH has no AGP port. Origin bridge driver in device
table will try to access illegal regs like APBASE, APSIZE, etc. This
may cause problem.

So mark them as NULL in the table, we won't load if no IGD got detect
and bridge has no AGP port.

Signed-off-by: Wang Zhenyu <zhenyu.z.wang@intel.com>
---
 drivers/char/agp/intel-agp.c |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 0439ee9..a124060 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -1843,35 +1843,35 @@ static const struct intel_driver_description {
 		&intel_845_driver, &intel_830_driver },
 	{ PCI_DEVICE_ID_INTEL_82875_HB, 0, 0, "i875", &intel_845_driver, NULL },
 	{ PCI_DEVICE_ID_INTEL_82915G_HB, PCI_DEVICE_ID_INTEL_82915G_IG, 0, "915G",
-		&intel_845_driver, &intel_915_driver },
+		NULL, &intel_915_driver },
 	{ PCI_DEVICE_ID_INTEL_82915GM_HB, PCI_DEVICE_ID_INTEL_82915GM_IG, 0, "915GM",
-		&intel_845_driver, &intel_915_driver },
+		NULL, &intel_915_driver },
 	{ PCI_DEVICE_ID_INTEL_82945G_HB, PCI_DEVICE_ID_INTEL_82945G_IG, 0, "945G",
-		&intel_845_driver, &intel_915_driver },
+		NULL, &intel_915_driver },
 	{ PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GM_IG, 1, "945GM",
-		&intel_845_driver, &intel_915_driver },
+		NULL, &intel_915_driver },
 	{ PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GME_IG, 0, "945GME",
-		&intel_845_driver, &intel_915_driver },
+		NULL, &intel_915_driver },
 	{ PCI_DEVICE_ID_INTEL_82946GZ_HB, PCI_DEVICE_ID_INTEL_82946GZ_IG, 0, "946GZ",
-		&intel_845_driver, &intel_i965_driver },
+		NULL, &intel_i965_driver },
 	{ PCI_DEVICE_ID_INTEL_82965G_1_HB, PCI_DEVICE_ID_INTEL_82965G_1_IG, 0, "965G",
-		&intel_845_driver, &intel_i965_driver },
+		NULL, &intel_i965_driver },
 	{ PCI_DEVICE_ID_INTEL_82965Q_HB, PCI_DEVICE_ID_INTEL_82965Q_IG, 0, "965Q",
-		&intel_845_driver, &intel_i965_driver },
+		NULL, &intel_i965_driver },
 	{ PCI_DEVICE_ID_INTEL_82965G_HB, PCI_DEVICE_ID_INTEL_82965G_IG, 0, "965G",
-		&intel_845_driver, &intel_i965_driver },
+		NULL, &intel_i965_driver },
 	{ PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GM_IG, 1, "965GM",
-		&intel_845_driver, &intel_i965_driver },
+		NULL, &intel_i965_driver },
 	{ PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GME_IG, 0, "965GME/GLE",
-		&intel_845_driver, &intel_i965_driver },
+		NULL, &intel_i965_driver },
 	{ PCI_DEVICE_ID_INTEL_7505_0, 0, 0, "E7505", &intel_7505_driver, NULL },
 	{ PCI_DEVICE_ID_INTEL_7205_0, 0, 0, "E7205", &intel_7505_driver, NULL },
 	{ PCI_DEVICE_ID_INTEL_G33_HB, PCI_DEVICE_ID_INTEL_G33_IG, 0, "G33",
-		&intel_845_driver, &intel_g33_driver },
+		NULL, &intel_g33_driver },
 	{ PCI_DEVICE_ID_INTEL_Q35_HB, PCI_DEVICE_ID_INTEL_Q35_IG, 0, "Q35",
-		&intel_845_driver, &intel_g33_driver },
+		NULL, &intel_g33_driver },
 	{ PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33",
-		&intel_845_driver, &intel_g33_driver },
+		NULL, &intel_g33_driver },
 	{ 0, 0, 0, NULL, NULL, NULL }
 };
 
@@ -1917,8 +1917,11 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
 	}
 
 	if (bridge->driver == NULL) {
-		printk(KERN_WARNING PFX "Failed to find bridge device "
-			"(chip_id: %04x)\n", intel_agp_chipsets[i].gmch_chip_id);
+		/* bridge has no AGP and no IGD detected */
+		if (cap_ptr)
+			printk(KERN_WARNING PFX "Failed to find bridge device "
+				"(chip_id: %04x)\n",
+				intel_agp_chipsets[i].gmch_chip_id);
 		agp_put_bridge(bridge);
 		return -ENODEV;
         }
-- 
1.4.4.4
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
2.6.22-rc5 regression, Carlo Wood, (Sun Jun 17, 11:22 am)
Re: 2.6.22-rc5 regression, Carlo Wood, (Sun Jun 17, 12:58 pm)
Re: 2.6.22-rc5 regression, Carlo Wood, (Sun Jun 17, 2:49 pm)
Re: 2.6.22-rc5 regression, Paul Mundt, (Sun Jun 17, 4:18 pm)
Re: 2.6.22-rc5 regression, Carlo Wood, (Sun Jun 17, 5:10 pm)
Re: 2.6.22-rc5 regression, Paul Mundt, (Sun Jun 17, 5:25 pm)
Re: 2.6.22-rc5 regression, Sean, (Mon Jun 18, 12:01 am)
Re: 2.6.22-rc5 regression, Linus Torvalds, (Mon Jun 18, 10:01 am)
Re: 2.6.22-rc5 regression, Carlo Wood, (Mon Jun 18, 11:12 am)
Re: 2.6.22-rc5 regression, Carlo Wood, (Mon Jun 18, 11:15 am)
Re: 2.6.22-rc5 regression, Linus Torvalds, (Mon Jun 18, 11:35 am)
Re: 2.6.22-rc5 regression, Carlo Wood, (Mon Jun 18, 12:54 pm)
Re: 2.6.22-rc5 regression, Linus Torvalds, (Mon Jun 18, 1:42 pm)
Re: 2.6.22-rc5 regression, Daniel Barkalow, (Mon Jun 18, 3:30 pm)
Re: 2.6.22-rc5 regression, Carlo Wood, (Mon Jun 18, 3:50 pm)
Re: 2.6.22-rc5 regression, Linus Torvalds, (Mon Jun 18, 3:57 pm)
Re: 2.6.22-rc5 regression, Carlo Wood, (Tue Jun 19, 4:37 pm)
Re: 2.6.22-rc5 regression, Dave Jones, (Tue Jun 19, 4:44 pm)
Re: 2.6.22-rc5 regression, Linus Torvalds, (Tue Jun 19, 5:09 pm)
Re: 2.6.22-rc5 regression, Wang Zhenyu, (Tue Jun 19, 6:15 pm)
Re: 2.6.22-rc5 regression, Wang Zhenyu, (Tue Jun 19, 6:42 pm)
Re: 2.6.22-rc5 regression, Carlo Wood, (Wed Jun 20, 6:11 am)
Re: 2.6.22-rc5 regression, Carlo Wood, (Wed Jun 20, 6:22 am)
Re: 2.6.22-rc5 regression, Carlo Wood, (Wed Jun 20, 6:31 am)
Re: 2.6.22-rc5 regression, Carlo Wood, (Wed Jun 20, 6:58 am)
Re: 2.6.22-rc5 regression, Carlo Wood, (Wed Jun 20, 7:02 am)
Re: 2.6.22-rc5 regression, Wang Zhenyu, (Wed Jun 20, 8:46 am)
[PATCH][AGPGART] intel_agp: don't load if no IGD and AGP port, Wang Zhenyu, (Wed Jun 20, 10:43 pm)