On Fri, 5 Oct 2007, Giuseppe Sacco wrote:
> After removing the chkslot() call, I get these errors when booting:
> SCSI subsystem initialized
> MACEPCI: Master abort at 0x00000000 (C)
> MACEPCI: Master abort at 0x00008000 (C)
> MACEPCI: Master abort at 0x00010000 (C)
Well, these are not errors in this context even though they seem to be
reported as such -- these Master Aborts are expected to happen for non
occupied slots (device numbers). And reporting them to the user in this
context seems silly (unless debugging).
I can see the are coming from the MACE error interrupt handler -- either
the Master-Abort interrupt should be masked for the duration of the
configuration space access or, if impossible or the way to do so is
unknown, the handler should recognise the context and silently ack the
interrupt and pass the error up somehow. It is up to code handling the
host bridge in question to get it right -- see
arch/mips/pci/ops-bonito64.c for an example.
> PCI: Bridge: 0000:00:03.0
> IO window: 1000-1fff
> MEM window: 80000000-800fffff
> PREFETCH window: 80100000-801fffff
> PCI: Enabling device 0000:00:03.0 (0000 -> 0003)
> It seems all probes to devfn=0 fails. There is even a call on bus=2,
> that I really don't understand. the current lspci output is:
Well, perhaps the initial setup of the PCI-to-PCI bridge reports the
subordinate bus to be 2 or something. If you post the whole PCI probe
log, someone may be able to provide an explanation.
And devfn=0 failing probably means the host bridge does not want to
report itself in the PCI configuration space; that is a valid approach
(seen with the Alphas too, for example), although personally I do not like
it very much.
> So probably, the test was correct. Should I restore the same check or
> only check for devfn==0?
The handling of Master Aborts should be fixed instead. It looks like
MACEPCI_CONTROL_MAR_INT might be the right mask bit -- do we have a spec
for the chip anywhere or is <asm-mips/ip32/mace.h> the only source?