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 [ATM] suni: cast arg properly in SONET_SETFRAMING 2006-03-20 22:35:16 -08:00
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 [CRYPTO] api: Align tfm context as wide as possible 2006-03-21 20:14:08 +11:00
dio
edac [PATCH] EDAC: disable sysfs interface 2006-03-14 07:57:18 -08:00
eisa
fc4
firmware [PATCH] sem2mutex: drivers: raw, connector, dcdbas, ppp_generic 2006-03-23 07:38:10 -08:00
hwmon
i2c [PATCH] handle errors returned by platform_get_irq*() 2006-03-20 13:42:57 -08:00
ide [PATCH] sem2mutex: drivers/ide 2006-03-23 07:38:14 -08:00
ieee1394
infiniband Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2006-03-21 09:31:48 -08:00
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 [PATCH] dm: bio split bvec fix 2006-03-22 07:53:55 -08:00
media Merge with rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 2006-03-22 11:02:08 +01:00
message [SCSI] convert mptsas over to end_device/expander allocations 2006-03-19 10:20:45 -06:00
mfd
misc
mmc [PATCH] handle errors returned by platform_get_irq*() 2006-03-20 13:42:57 -08:00
mtd [PATCH] mtd_dataflash, fix block vs page erase 2006-03-14 07:57:17 -08:00
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 [SERIAL] Merge avlab serial board entries in parport_serial 2006-03-20 20:08:22 +00:00
pci [PATCH] PCI: Avoid leaving MASTER_ABORT disabled permanently when returning from pci_scan_bridge. 2006-03-23 14:35:12 -08:00
pcmcia [PATCH] handle errors returned by platform_get_irq*() 2006-03-20 13:42:57 -08:00
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 [SPARC]: Respect vm_page_prot in io_remap_page_range(). 2006-03-22 01:15:13 -08:00
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 Pull sem2mutex-ioc4 into release branch 2006-03-21 08:17:15 -08:00
spi
tc [PATCH] kill _INLINE_ 2006-03-23 07:38:16 -08:00
telephony
usb Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 2006-03-21 09:25:47 -08:00
video Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 2006-03-22 10:56:57 -08:00
w1
zorro
Kconfig
Makefile