[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 &intel_845_driver, &intel_830_driver }, 1844 { PCI_DEVICE_ID_INTEL_82875_HB, 0, 0, "i875", &intel_845_driver, NULL }, 1845 { PCI_DEVICE_ID_INTEL_82915G_HB, PCI_DEVICE_ID_INTEL_82915G_IG, 0, "915G", 1846 - &intel_845_driver, &intel_915_driver }, 1847 { PCI_DEVICE_ID_INTEL_82915GM_HB, PCI_DEVICE_ID_INTEL_82915GM_IG, 0, "915GM", 1848 - &intel_845_driver, &intel_915_driver }, 1849 { PCI_DEVICE_ID_INTEL_82945G_HB, PCI_DEVICE_ID_INTEL_82945G_IG, 0, "945G", 1850 - &intel_845_driver, &intel_915_driver }, 1851 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GM_IG, 1, "945GM", 1852 - &intel_845_driver, &intel_915_driver }, 1853 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GME_IG, 0, "945GME", 1854 - &intel_845_driver, &intel_915_driver }, 1855 { PCI_DEVICE_ID_INTEL_82946GZ_HB, PCI_DEVICE_ID_INTEL_82946GZ_IG, 0, "946GZ", 1856 - &intel_845_driver, &intel_i965_driver }, 1857 { PCI_DEVICE_ID_INTEL_82965G_1_HB, PCI_DEVICE_ID_INTEL_82965G_1_IG, 0, "965G", 1858 - &intel_845_driver, &intel_i965_driver }, 1859 { PCI_DEVICE_ID_INTEL_82965Q_HB, PCI_DEVICE_ID_INTEL_82965Q_IG, 0, "965Q", 1860 - &intel_845_driver, &intel_i965_driver }, 1861 { PCI_DEVICE_ID_INTEL_82965G_HB, PCI_DEVICE_ID_INTEL_82965G_IG, 0, "965G", 1862 - &intel_845_driver, &intel_i965_driver }, 1863 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GM_IG, 1, "965GM", 1864 - &intel_845_driver, &intel_i965_driver }, 1865 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GME_IG, 0, "965GME/GLE", 1866 - &intel_845_driver, &intel_i965_driver }, 1867 { PCI_DEVICE_ID_INTEL_7505_0, 0, 0, "E7505", &intel_7505_driver, NULL }, 1868 { PCI_DEVICE_ID_INTEL_7205_0, 0, 0, "E7205", &intel_7505_driver, NULL }, 1869 { PCI_DEVICE_ID_INTEL_G33_HB, PCI_DEVICE_ID_INTEL_G33_IG, 0, "G33", 1870 - &intel_845_driver, &intel_g33_driver }, 1871 { PCI_DEVICE_ID_INTEL_Q35_HB, PCI_DEVICE_ID_INTEL_Q35_IG, 0, "Q35", 1872 - &intel_845_driver, &intel_g33_driver }, 1873 { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", 1874 - &intel_845_driver, &intel_g33_driver }, 1875 { 0, 0, 0, NULL, NULL, NULL } 1876 }; 1877 ··· 1917 } 1918 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); 1922 agp_put_bridge(bridge); 1923 return -ENODEV; 1924 }
··· 1843 &intel_845_driver, &intel_830_driver }, 1844 { PCI_DEVICE_ID_INTEL_82875_HB, 0, 0, "i875", &intel_845_driver, NULL }, 1845 { PCI_DEVICE_ID_INTEL_82915G_HB, PCI_DEVICE_ID_INTEL_82915G_IG, 0, "915G", 1846 + NULL, &intel_915_driver }, 1847 { PCI_DEVICE_ID_INTEL_82915GM_HB, PCI_DEVICE_ID_INTEL_82915GM_IG, 0, "915GM", 1848 + NULL, &intel_915_driver }, 1849 { PCI_DEVICE_ID_INTEL_82945G_HB, PCI_DEVICE_ID_INTEL_82945G_IG, 0, "945G", 1850 + NULL, &intel_915_driver }, 1851 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GM_IG, 1, "945GM", 1852 + NULL, &intel_915_driver }, 1853 { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GME_IG, 0, "945GME", 1854 + NULL, &intel_915_driver }, 1855 { PCI_DEVICE_ID_INTEL_82946GZ_HB, PCI_DEVICE_ID_INTEL_82946GZ_IG, 0, "946GZ", 1856 + NULL, &intel_i965_driver }, 1857 { PCI_DEVICE_ID_INTEL_82965G_1_HB, PCI_DEVICE_ID_INTEL_82965G_1_IG, 0, "965G", 1858 + NULL, &intel_i965_driver }, 1859 { PCI_DEVICE_ID_INTEL_82965Q_HB, PCI_DEVICE_ID_INTEL_82965Q_IG, 0, "965Q", 1860 + NULL, &intel_i965_driver }, 1861 { PCI_DEVICE_ID_INTEL_82965G_HB, PCI_DEVICE_ID_INTEL_82965G_IG, 0, "965G", 1862 + NULL, &intel_i965_driver }, 1863 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GM_IG, 1, "965GM", 1864 + NULL, &intel_i965_driver }, 1865 { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GME_IG, 0, "965GME/GLE", 1866 + NULL, &intel_i965_driver }, 1867 { PCI_DEVICE_ID_INTEL_7505_0, 0, 0, "E7505", &intel_7505_driver, NULL }, 1868 { PCI_DEVICE_ID_INTEL_7205_0, 0, 0, "E7205", &intel_7505_driver, NULL }, 1869 { PCI_DEVICE_ID_INTEL_G33_HB, PCI_DEVICE_ID_INTEL_G33_IG, 0, "G33", 1870 + NULL, &intel_g33_driver }, 1871 { PCI_DEVICE_ID_INTEL_Q35_HB, PCI_DEVICE_ID_INTEL_Q35_IG, 0, "Q35", 1872 + NULL, &intel_g33_driver }, 1873 { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", 1874 + NULL, &intel_g33_driver }, 1875 { 0, 0, 0, NULL, NULL, NULL } 1876 }; 1877 ··· 1917 } 1918 1919 if (bridge->driver == NULL) { 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); 1925 agp_put_bridge(bridge); 1926 return -ENODEV; 1927 }