aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Feeney <jfeeney@redhat.com>2007-05-08 03:28:12 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 14:15:07 -0400
commit62456726d715042e1976b830c59fd73f41c4aaa6 (patch)
tree2a00d97cc4f9bb90835d07188e3befad4e49dde9
parente63340ae6b6205fef26b40a75673d1c9c0c8bb90 (diff)
Fix 82875 PCI setup
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. Signed-off-by: Adam Jackson <ajackson@redhat.com> Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br> Cc: Greg KH <greg@kroah.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Doug Thompson <norsk5@xmission.com> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/edac/i82875p_edac.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/drivers/edac/i82875p_edac.c b/drivers/edac/i82875p_edac.c
index 161fe09a6d38..2800b3e614a9 100644
--- a/drivers/edac/i82875p_edac.c
+++ b/drivers/edac/i82875p_edac.c
@@ -261,10 +261,6 @@ static void i82875p_check(struct mem_ctl_info *mci)
261 i82875p_process_error_info(mci, &info, 1); 261 i82875p_process_error_info(mci, &info, 1);
262} 262}
263 263
264#ifdef CONFIG_PROC_FS
265extern int pci_proc_attach_device(struct pci_dev *);
266#endif
267
268/* Return 0 on success or 1 on failure. */ 264/* Return 0 on success or 1 on failure. */
269static int i82875p_setup_overfl_dev(struct pci_dev *pdev, 265static int i82875p_setup_overfl_dev(struct pci_dev *pdev,
270 struct pci_dev **ovrfl_pdev, void __iomem **ovrfl_window) 266 struct pci_dev **ovrfl_pdev, void __iomem **ovrfl_window)
@@ -287,17 +283,12 @@ static int i82875p_setup_overfl_dev(struct pci_dev *pdev,
287 283
288 if (dev == NULL) 284 if (dev == NULL)
289 return 1; 285 return 1;
286
287 pci_bus_add_device(dev);
290 } 288 }
291 289
292 *ovrfl_pdev = dev; 290 *ovrfl_pdev = dev;
293 291
294#ifdef CONFIG_PROC_FS
295 if ((dev->procent == NULL) && pci_proc_attach_device(dev)) {
296 i82875p_printk(KERN_ERR, "%s(): Failed to attach overflow "
297 "device\n", __func__);
298 return 1;
299 }
300#endif /* CONFIG_PROC_FS */
301 if (pci_enable_device(dev)) { 292 if (pci_enable_device(dev)) {
302 i82875p_printk(KERN_ERR, "%s(): Failed to enable overflow " 293 i82875p_printk(KERN_ERR, "%s(): Failed to enable overflow "
303 "device\n", __func__); 294 "device\n", __func__);