Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart

* master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart:
[AGPGART] VIA and SiS AGP chipsets are x86-only
[AGPGART] agp-amd64: section mismatches with HOTPLUG=n
[AGPGART] Fix up misprogrammed bridges with incorrect AGPv2 rates.

+27 -2
+2 -2
drivers/char/agp/Kconfig
··· 86 86 87 87 config AGP_SIS 88 88 tristate "SiS chipset support" 89 - depends on AGP 89 + depends on AGP && X86 90 90 help 91 91 This option gives you AGP support for the GLX component of 92 92 X on Silicon Integrated Systems [SiS] chipsets. ··· 103 103 104 104 config AGP_VIA 105 105 tristate "VIA chipset support" 106 - depends on AGP 106 + depends on AGP && X86 107 107 help 108 108 This option gives you AGP support for the GLX component of 109 109 X on VIA MVP3/Apollo Pro chipsets.
+25
drivers/char/agp/generic.c
··· 419 419 *requested_mode &= ~AGP2_RESERVED_MASK; 420 420 } 421 421 422 + /* 423 + * Some dumb bridges are programmed to disobey the AGP2 spec. 424 + * This is likely a BIOS misprogramming rather than poweron default, or 425 + * it would be a lot more common. 426 + * https://bugs.freedesktop.org/show_bug.cgi?id=8816 427 + * AGPv2 spec 6.1.9 states: 428 + * The RATE field indicates the data transfer rates supported by this 429 + * device. A.G.P. devices must report all that apply. 430 + * Fix them up as best we can. 431 + */ 432 + switch (*bridge_agpstat & 7) { 433 + case 4: 434 + *bridge_agpstat |= (AGPSTAT2_2X | AGPSTAT2_1X); 435 + printk(KERN_INFO PFX "BIOS bug. AGP bridge claims to only support x4 rate" 436 + "Fixing up support for x2 & x1\n"); 437 + break; 438 + case 2: 439 + *bridge_agpstat |= AGPSTAT2_1X; 440 + printk(KERN_INFO PFX "BIOS bug. AGP bridge claims to only support x2 rate" 441 + "Fixing up support for x1\n"); 442 + break; 443 + default: 444 + break; 445 + } 446 + 422 447 /* Check the speed bits make sense. Only one should be set. */ 423 448 tmp = *requested_mode & 7; 424 449 switch (tmp) {