View | Details | Raw Unified | Return to bug 6350 | Differences between
and this patch

Collapse All | Expand All

(-)linux-2.6.20.2.orig/drivers/char/agp/amd64-agp.c (-1 / +2 lines)
Lines 495-504 static int nforce3_agp_init(struct pci_d Link Here
495
495
496
	/* if x86-64 aperture base is beyond 4G, exit here */
496
	/* if x86-64 aperture base is beyond 4G, exit here */
497
	if ( (apbase & 0x7fff) >> (32 - 25) ) {
497
	if ( (apbase & 0x7fff) >> (32 - 25) ) {
498
		printk(KERN_INFO PFX "aperture base > 4G\n");
498
		printk(KERN_INFO PFX "aperture base > 4G (0x%08x)\n", apbase);
499
		return -ENODEV;
499
		return -ENODEV;
500
	}
500
	}
501
501
502
	printk(KERN_INFO PFX "aperture base is (0x%08x)\n", apbase);
502
	apbase = (apbase & 0x7fff) << 25;
503
	apbase = (apbase & 0x7fff) << 25;
503
504
504
	pci_read_config_dword(pdev, NVIDIA_X86_64_0_APBASE, &apbar);
505
	pci_read_config_dword(pdev, NVIDIA_X86_64_0_APBASE, &apbar);
(-)linux-2.6.20.2.orig/drivers/pci/quirks.c (+52 lines)
Lines 23-28 Link Here
23
#include <linux/acpi.h>
23
#include <linux/acpi.h>
24
#include "pci.h"
24
#include "pci.h"
25
25
26
static const struct pci_device_id quirk_k8_agp_aperture_sbs[] = {
27
	{
28
		PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x00e0),
29
		.subvendor = PCI_VENDOR_ID_ASROCK,
30
		.subdevice = 0x00e0,
31
	},
32
	{
33
		PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x00e0),
34
		.subvendor = PCI_VENDOR_ID_ASUSTEK,
35
		.subdevice = 0x813f,
36
	},
37
	{
38
		PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237),
39
		.subvendor = PCI_VENDOR_ID_ASUSTEK,
40
		.subdevice = 0x80ed,
41
	},
42
	{
43
		NULL,
44
	},
45
};
46
47
/* In certain situations the BIOS on some systems sets high bits in the K8
48
 * aperture base, which breaks agpgart. This quirk corrects the base value. */
49
static void quirk_k8_agp_aperture(struct pci_dev *dev)
50
{
51
	u32 aper_base, tmp;
52
53
	/* The device we are quirking is the K8 northbridge, but this device
54
	 * has no subsystem ID's and running this quirk on all K8 northbridges
55
	 * would be silly. Instead, we use the subsystem ID's of the
56
	 * southbridge to limit the quirk to only the affected systems. */
57
	if (!pci_dev_present(quirk_k8_agp_aperture_sbs)) {
58
		printk (KERN_INFO "PCI: QUIRKed sbs for buggy board not found\n");
59
		/* return; */
60
	} else {
61
		printk (KERN_INFO "PCI: QUIRKed sbs for buggy board FOUND!\n");
62
	}
63
64
	pci_read_config_dword(dev, 0x94, &aper_base);
65
	tmp = aper_base & 0x7f;
66
67
	if (tmp != aper_base) {
68
		printk(KERN_INFO "PCI: QUIRKed buggY ASRock aperture base "
69
			"from %x to %x\n", aper_base, tmp);
70
		pci_write_config_dword(dev, 0x94, tmp);
71
	} else {
72
		printk(KERN_INFO "PCI: QUIRK   buggY ASRock aperture base "
73
			"from %x to %x\n", aper_base, tmp);
74
	}
75
}
76
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, 0x1103, quirk_k8_agp_aperture);
77
26
/* The Mellanox Tavor device gives false positive parity errors
78
/* The Mellanox Tavor device gives false positive parity errors
27
 * Mark this device with a broken_parity_status, to allow
79
 * Mark this device with a broken_parity_status, to allow
28
 * PCI scanning code to "skip" this now blacklisted device.
80
 * PCI scanning code to "skip" this now blacklisted device.
(-)linux-2.6.20.2.orig/include/linux/pci_ids.h (+2 lines)
Lines 2062-2067 Link Here
2062
#define PCI_VENDOR_ID_SITECOM		0x182d
2062
#define PCI_VENDOR_ID_SITECOM		0x182d
2063
#define PCI_DEVICE_ID_SITECOM_DC105V2	0x3069
2063
#define PCI_DEVICE_ID_SITECOM_DC105V2	0x3069
2064
2064
2065
#define PCI_VENDOR_ID_ASROCK		0x1849
2066
2065
#define PCI_VENDOR_ID_TOPSPIN		0x1867
2067
#define PCI_VENDOR_ID_TOPSPIN		0x1867
2066
2068
2067
#define PCI_VENDOR_ID_TDI               0x192E
2069
#define PCI_VENDOR_ID_TDI               0x192E

Return to bug 6350