Hello Thomas,
unfortunately a little change to ip28_be_interrupt is needed (sorry, that
it was not yet applied):
---
diff -u -p a/arch/mips/sgi-ip22/ip28-berr.c b/arch/mips/sgi-ip22/ip28-berr.c
--- a/arch/mips/sgi-ip22/ip28-berr.c
+++ b/arch/mips/sgi-ip22/ip28-berr.c
@@ -597,7 +597,7 @@ static int ip28_be_interrupt(const struc
goto mips_be_fatal;
/* Any state other than "GIO transaction bus timed out" is fatal. */
- if (gio_err_stat & GIO_ERRMASK & ~SGIMC_GSTAT_TIME)
+ if (gio_err_stat & GIO_ERRMASK /* & ~SGIMC_GSTAT_TIME */)
goto mips_be_fatal;
/* Finding `cpu_err_addr' in the insn at EPC is fatal. */
---
Since identification of HPC3-dma-addresses in ip28_be_interrupt does not
work as intended, currently any GIO-bus-error must be taken as fatal, or
a "real" bus-error might slip through undetected as "speculative":
When the bus-error occurs CBP is already advanced, so it won't match the
offending address. Examining the current dma-descriptor for a pbuf-address-
range, that might contain this address, isn't possible either, since NDP
is already advanced to the next descriptor.
GIO error 0x401:<TIME > @ 0x7e390000
HPC3 (scsi1) @ 1fb92000: ctl 00000014, ndp 2043c010, cbp 7e390180
Dumping sgiwd93_host1 dma-descriptors: 900000002043c000:
pnext pbuf cntinfo
[ 0] 2043c010 7e390000 00002000 8192 cbp == [0].pbuf+0x180
ndp -> [ 1] 2043c020 7e392000 00002000 8192
[ 2] 2043c030 7e394000 00002000 8192
...
[255] 2043c000 00000000 80000000 0
So, for reliable detection of HPC3-dma-addresses the bus-error-handler would
need access to the descriptor-chain of each HPC3-driver, which would require
any such driver to register its descriptor chain with the bus-error-handler...
Experience suggests, that the possibility of false positives, caused by the
workaround, should be comparatively neglibible.
kind regards
peter
On Mon, 26 Nov 2007, Thomas Bogendoerfer wrote:
> Date: Mon, 26 Nov 2007 23:40:04 +0100 (CET)
> From: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
> To: linux-mips@linux-mips.org
> Cc: ralf@linux-mips.org
> Subject: [PATCH] IP28 support
>
> Add support for SGI IP28 machines (Indigo 2 with R10k CPUs)
> This work is mainly based on Peter Fuersts work.
>
> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
> ---
>
> ...
> diff --git a/arch/mips/sgi-ip22/ip28-berr.c b/arch/mips/sgi-ip22/ip28-berr.c
> new file mode 100644
> index 0000000..e61e8f3
> --- /dev/null
> +++ b/arch/mips/sgi-ip22/ip28-berr.c
> ...
|