summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Lavinen <jlavi@iki.fi>2008-12-01 13:14:06 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2008-12-01 19:55:25 -0800
commit307d114441f905e4576871ff28d06408a1af1a7e (patch)
treef2116fe4c491ebb58817cb1017ba2ffaf954f9af
parentbca404afdc5206c3bb30168315ee8a98a579ec65 (diff)
downloadlinux-stable-307d114441f905e4576871ff28d06408a1af1a7e.tar.gz
linux-stable-307d114441f905e4576871ff28d06408a1af1a7e.tar.bz2
linux-stable-307d114441f905e4576871ff28d06408a1af1a7e.zip
i82875p_edac: fix overflow device resource setup
When I do "modprobe i82875p_edac" on my Asus P4C800 MB on kernels 2.6.26 or later, the module load fails due to BAR 0 collision. On 2.6.25 the module loads just fine. The overflow device on the MB seems to be hidden and its resources are not allocated at normal PCI bus init. Log shows the missing resource problem: EDAC DEBUG: i82875p_probe1() PCI: 0000:00:06.0 reg 10 32bit mmio: [fecf0000, fecf0fff] pci 0000:00:06.0: device not available because of BAR 0 [0xfecf0000-0xfecf0fff] collisions EDAC i82875p: i82875p_setup_overfl_dev(): Failed to enable overflow device The patch below fixes this by calling pci_bus_assign_resources() after the overflow device is revealed and added to the bus. With this patch I am again able to load and use the module. Signed-off-by: Jarkko Lavinen <jlavi@iki.fi> Cc: Doug Thompson <norsk5@yahoo.com> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> 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.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/edac/i82875p_edac.c b/drivers/edac/i82875p_edac.c
index e43bdc43a1bf..7f909972fecd 100644
--- a/drivers/edac/i82875p_edac.c
+++ b/drivers/edac/i82875p_edac.c
@@ -295,6 +295,7 @@ static int i82875p_setup_overfl_dev(struct pci_dev *pdev,
"%s(): pci_bus_add_device() Failed\n",
__func__);
}
+ pci_bus_assign_resources(dev->bus);
}
*ovrfl_pdev = dev;