Skip to contentSkip to conversation

Fix 82875 PCI setup

PATCH In review Adam Jackson 2 participants 2 messages Mar 29, 2007 EDAC-core

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix 82875 PCI setup

From: John Feeney <[email protected]>

The 82875 EDAC driver enables an otherwise-hidden PCI device, but doesn't register it as a PCI device properly. Therefore, the device list in /proc/bus/pci/devices is different than the tree in /sys/bus/pci. This usually manifests as the X server failing to start, since it expects the two lists to be consistent.

drivers/edac/i82875p_edac.c renamed from drivers/edac/i82875p_edac.c~ +2 -11
@@ -261,10 +261,6 @@ static void i82875p_check(struct mem_ctl
 	i82875p_process_error_info(mci, &info, 1);
 }
 
-#ifdef CONFIG_PROC_FS
-extern int pci_proc_attach_device(struct pci_dev *);
-#endif
-
 /* Return 0 on success or 1 on failure. */
 static int i82875p_setup_overfl_dev(struct pci_dev *pdev,
 		struct pci_dev **ovrfl_pdev, void __iomem **ovrfl_window)
@@ -287,17 +283,12 @@ static int i82875p_setup_overfl_dev(stru
 
 		if (dev == NULL)
 			return 1;
+
+        	pci_bus_add_device(dev);
 	}
 
 	*ovrfl_pdev = dev;
 
-#ifdef CONFIG_PROC_FS
-	if ((dev->procent == NULL) && pci_proc_attach_device(dev)) {
-		i82875p_printk(KERN_ERR, "%s(): Failed to attach overflow "
-			       "device\n", __func__);
-		return 1;
-	}
-#endif  /* CONFIG_PROC_FS */
 	if (pci_enable_device(dev)) {
 		i82875p_printk(KERN_ERR, "%s(): Failed to enable overflow "
 			       "device\n", __func__);
#1 lore raw
Quoted 5 lines · Adam Jackson

The 82875 EDAC driver enables an otherwise-hidden PCI device, but doesn't register it as a PCI device properly. Therefore, the device list in /proc/bus/pci/devices is different than the tree in /sys/bus/pci. This usually manifests as the X server failing to start, since it expects the two lists to be consistent.

Just a note: when EDAC needs to unhide the overflow configuration space of the 82875, it is because the BIOS hid it. And some BIOSes actually reserve the area of the hidden device in the memory map/acpi tables/whatever. Intel's D875PBZ motherboard does this. EDAC can and does enable the overflow device, but it might fail to reserve that region because of that the BIOS did (and that is not a problem, in fact it is expected behaviour).

I don't know if this affects this patch in any way. If it doesn't just delete this email.

Signature · 4 lines
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh