[AGPGART] intel_agp: don't load if no IGD and 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>
Signed-off-by: Dave Jones <davej@redhat.com>

authored by Wang Zhenyu and committed by Dave Jones 47d46379 f1518a08

+19 -16
+19 -16
drivers/char/agp/intel-agp.c
··· 1843 1843 &intel_845_driver, &intel_830_driver }, 1844 1844 { PCI_DEVICE_ID_INTEL_82875_HB, 0, 0, "i875", &intel_845_driver, NULL }, 1845 1845 { PCI_DEVICE_ID_INTEL_82915G_HB, PCI_DEVICE_ID_INTEL_82915G_IG, 0, "915G", 1846 - &intel_845_driver, &intel_915_driver }, 1846 + NULL, &intel_915_driver }, 1847 1847 { PCI_DEVICE_ID_INTEL_82915GM_HB, PCI_DEVICE_ID_INTEL_82915GM_IG, 0, "915GM", 1848 - &intel_845_driver, &intel_915_driver }, 1848 + NULL, &intel_915_driver }, 1849 1849 { PCI_DEVICE_ID_INTEL_82945G_HB, PCI_DEVICE_ID_INTEL_82945G_IG, 0, "945G", 1850 - &intel_845_driver, &intel_915_driver }, 1850 + NULL, &intel_915_driver }, 1851 1851 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GM_IG, 1, "945GM", 1852 - &intel_845_driver, &intel_915_driver }, 1852 + NULL, &intel_915_driver }, 1853 1853 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GME_IG, 0, "945GME", 1854 - &intel_845_driver, &intel_915_driver }, 1854 + NULL, &intel_915_driver }, 1855 1855 { PCI_DEVICE_ID_INTEL_82946GZ_HB, PCI_DEVICE_ID_INTEL_82946GZ_IG, 0, "946GZ", 1856 - &intel_845_driver, &intel_i965_driver }, 1856 + NULL, &intel_i965_driver }, 1857 1857 { PCI_DEVICE_ID_INTEL_82965G_1_HB, PCI_DEVICE_ID_INTEL_82965G_1_IG, 0, "965G", 1858 - &intel_845_driver, &intel_i965_driver }, 1858 + NULL, &intel_i965_driver }, 1859 1859 { PCI_DEVICE_ID_INTEL_82965Q_HB, PCI_DEVICE_ID_INTEL_82965Q_IG, 0, "965Q", 1860 - &intel_845_driver, &intel_i965_driver }, 1860 + NULL, &intel_i965_driver }, 1861 1861 { PCI_DEVICE_ID_INTEL_82965G_HB, PCI_DEVICE_ID_INTEL_82965G_IG, 0, "965G", 1862 - &intel_845_driver, &intel_i965_driver }, 1862 + NULL, &intel_i965_driver }, 1863 1863 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GM_IG, 1, "965GM", 1864 - &intel_845_driver, &intel_i965_driver }, 1864 + NULL, &intel_i965_driver }, 1865 1865 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GME_IG, 0, "965GME/GLE", 1866 - &intel_845_driver, &intel_i965_driver }, 1866 + NULL, &intel_i965_driver }, 1867 1867 { PCI_DEVICE_ID_INTEL_7505_0, 0, 0, "E7505", &intel_7505_driver, NULL }, 1868 1868 { PCI_DEVICE_ID_INTEL_7205_0, 0, 0, "E7205", &intel_7505_driver, NULL }, 1869 1869 { PCI_DEVICE_ID_INTEL_G33_HB, PCI_DEVICE_ID_INTEL_G33_IG, 0, "G33", 1870 - &intel_845_driver, &intel_g33_driver }, 1870 + NULL, &intel_g33_driver }, 1871 1871 { PCI_DEVICE_ID_INTEL_Q35_HB, PCI_DEVICE_ID_INTEL_Q35_IG, 0, "Q35", 1872 - &intel_845_driver, &intel_g33_driver }, 1872 + NULL, &intel_g33_driver }, 1873 1873 { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", 1874 - &intel_845_driver, &intel_g33_driver }, 1874 + NULL, &intel_g33_driver }, 1875 1875 { 0, 0, 0, NULL, NULL, NULL } 1876 1876 }; 1877 1877 ··· 1917 1917 } 1918 1918 1919 1919 if (bridge->driver == NULL) { 1920 - printk(KERN_WARNING PFX "Failed to find bridge device " 1921 - "(chip_id: %04x)\n", intel_agp_chipsets[i].gmch_chip_id); 1920 + /* bridge has no AGP and no IGD detected */ 1921 + if (cap_ptr) 1922 + printk(KERN_WARNING PFX "Failed to find bridge device " 1923 + "(chip_id: %04x)\n", 1924 + intel_agp_chipsets[i].gmch_chip_id); 1922 1925 agp_put_bridge(bridge); 1923 1926 return -ENODEV; 1924 1927 }