linux-mips
[Top] [All Lists]

Re: [PATCH] IP28 support

To: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Subject: Re: [PATCH] IP28 support
From: peter fuerst <post@pfrst.de>
Date: Wed, 28 Nov 2007 02:33:37 +0100 (CET)
Cc: linux-mips@linux-mips.org
In-reply-to: <20071126224004.D885AC2B26@solo.franken.de>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20071126224004.D885AC2B26@solo.franken.de>
Reply-to: post@pfrst.de
Sender: linux-mips-bounce@linux-mips.org

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
> ...



<Prev in Thread] Current Thread [Next in Thread>