![]() | |||||||||||||
Messages in this thread Patch in this message |
Martin, In April 2002, turukawa@icc.melco.co.jp sent a 2.4.x patch to disable BARs while the BARs were being sized. I've "forward ported" this patch to 2.5.x (appended). turukawa's excellent problem description and original posting are here: https://lists.linuxia64.org/archives//linux-ia64/2002-April/003302.html David Mosberger agrees this is an "obvious fix". We've been using this in the ia64 2.4 code stream since about August. thanks, grant Index: drivers/pci/probe.c =================================================================== RCS file: /var/cvs/linux-2.5/drivers/pci/probe.c,v retrieving revision 1.2 diff -u -p -r1.2 probe.c --- drivers/pci/probe.c 9 Oct 2002 20:42:57 -0000 1.2 +++ drivers/pci/probe.c 17 Dec 2002 21:53:14 -0000 @@ -48,6 +48,12 @@ static void pci_read_bases(struct pci_de unsigned int pos, reg, next; u32 l, sz; struct resource *res; + u16 cmd; + + /* Disable I/O & memory decoding while we size the BARs. */ + pci_read_config_word(dev, PCI_COMMAND, &cmd); + pci_write_config_word(dev, PCI_COMMAND, + cmd & ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY)); for(pos=0; pos<howmany; pos = next) { next = pos+1; @@ -114,6 +120,8 @@ static void pci_read_bases(struct pci_de } res->name = dev->name; } + + pci_write_config_word(dev, PCI_COMMAND, cmd); } void __devinit pci_read_bridge_bases(struct pci_bus *child) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2005-03-22 13:31 [from the cache] ©2003-2008 | |||||||||||||