kernel-ark/drivers
Ralf Baechle bbe8f9a3e7 [PATCH] PCI: Avoid leaving MASTER_ABORT disabled permanently when returning from pci_scan_bridge.
> On Mon, Feb 13, 2006 at 05:13:21PM -0800, David S. Miller wrote:
> >
> > 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.

Agreed, looks like an accident.  The patch [1] originally came from Kip
Walker (Broadcom back then) between 2.6.0-test3 and 2.6.0-test4.  As I
recall it was supposed to fix an issue with with PCI aborts being
signalled by the PCI bridge of the Broadcom BCM1250 family of SOCs when
probing behind pci_scan_bridge.  It is undeseriable to disable
PCI_BRIDGE_CTL_MASTER_ABORT in pci_{read,write)_config_* and the
behaviour wasn't considered a bug in need of a workaround, so this was
put in probe.c.

I don't have an affected system at hand, so can't really test but I
propose something like the below patch.

[1] http://www.linux-mips.org/git?p=linux.git;a=commit;h=599457e0cb702a31a3247ea6a5d9c6c99c4cf195

[PCI] Avoid leaving MASTER_ABORT disabled permanently when returning from pci_scan_bridge.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2006-03-23 14:35:12 -08:00
..
acorn
acpi
amba
atm
base [PATCH] swsusp: add check for suspension of X-controlled devices 2006-03-23 07:38:08 -08:00
block [PATCH] sem2mutex: drivers/block/nbd.c 2006-03-23 07:38:13 -08:00
bluetooth
cdrom [PATCH] kill cdrom ->dev_ioctl method 2006-03-23 07:38:09 -08:00
char [PATCH] kill _INLINE_ 2006-03-23 07:38:16 -08:00
connector [PATCH] sem2mutex: drivers: raw, connector, dcdbas, ppp_generic 2006-03-23 07:38:10 -08:00
cpufreq
crypto
dio
edac
eisa
fc4
firmware [PATCH] sem2mutex: drivers: raw, connector, dcdbas, ppp_generic 2006-03-23 07:38:10 -08:00
hwmon
i2c
ide [PATCH] sem2mutex: drivers/ide 2006-03-23 07:38:14 -08:00
ieee1394
infiniband
input
isdn [PATCH] kill _INLINE_ 2006-03-23 07:38:16 -08:00
macintosh [PATCH] macintosh: tidy-up driver_register() return values 2006-03-23 14:41:04 +11:00
mca
md
media
message
mfd
misc
mmc
mtd
net [PATCH] more for_each_cpu() conversions 2006-03-23 07:38:17 -08:00
nubus
oprofile [PATCH] more for_each_cpu() conversions 2006-03-23 07:38:17 -08:00
parisc
parport
pci [PATCH] PCI: Avoid leaving MASTER_ABORT disabled permanently when returning from pci_scan_bridge. 2006-03-23 14:35:12 -08:00
pcmcia
pnp [PATCH] PnPBIOS: Missing SMALL_TAG_ENDDEP tag 2006-03-23 07:38:16 -08:00
rapidio
s390 [PATCH] sem2mutex: blockdev #2 2006-03-23 07:38:11 -08:00
sbus
scsi [PATCH] sem2mutex: drivers/scsi/ide-scsi.c 2006-03-23 07:38:10 -08:00
serial [PATCH] kill _INLINE_ 2006-03-23 07:38:16 -08:00
sh
sn
spi
tc [PATCH] kill _INLINE_ 2006-03-23 07:38:16 -08:00
telephony
usb
video
w1
zorro
Kconfig
Makefile