PCI probe leaves master abort disabled in PCI_BRIDGE_CONTROL

From: David S. Miller
Date: Mon Feb 13 2006 - 20:11:38 EST



In drivers/pci/probe.c:pci_scan_bridge(), if this is not the first
pass (pass != 0) we don't restore the PCI_BRIDGE_CONTROL_REGISTER and
thus leave PCI_BRIDGE_CTL_MASTER_ABORT off:

int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev * dev, int max, int pass)
{
...
/* Disable MasterAbortMode during probing to avoid reporting
of bus errors (in some architectures) */
pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
...
if ((buses & 0xffff00) && !pcibios_assign_all_busses() && !is_cardbus) {
unsigned int cmax, busnr;
/*
* Bus already configured by firmware, process it in the first
* pass and just note the configuration.
*/
if (pass)
return max;
...
}

pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
...

This doesn't seem intentional.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/