Messages in this thread Patch in this message | | | Subject | PATCH 2.5.x disable BAR when sizing | Date | Thu, 19 Dec 2002 13:37:12 -0800 (PST) | From | (Grant Grundler) |
| |
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/
| |