NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: kern/43274: re(4) crash on ultra10 - uncorrectable DMA error

The following reply was made to PR kern/43274; it has been noted by GNATS.

From: matthew green <>
To: Takeshi Nakayama <>
Subject: re: kern/43274: re(4) crash on ultra10 - uncorrectable DMA error
Date: Sat, 08 May 2010 17:46:20 +1000

    >   ultra10 crashed earlier today with this on the console:
    >   login: psycho0: uncorrectable DMA error AFAR 11b8450 AFSR 
    >   psycho0: IOVA c0114000 IOTTE 3fc84012
    [ .. ]
    I see a similar problem on tlp(4) on Netra X1.  So please try this
    Index: sys/arch/sparc64/dev/iommu.c
    RCS file: /cvsroot/src/sys/arch/sparc64/dev/iommu.c,v
    retrieving revision 1.98
    diff -u -d -r1.98 iommu.c
    --- sys/arch/sparc64/dev/iommu.c    11 Mar 2010 03:54:56 -0000      1.98
    +++ sys/arch/sparc64/dev/iommu.c    7 May 2010 14:07:08 -0000
    @@ -358,8 +358,10 @@
                 * eliminating the next line, but the page is mapped
                 * until the next iommu_enter call.
    +#if 0 /* XXX */
                is->is_tsb[IOTSBSLOT(va,is->is_tsbsize)] &= ~IOTTE_V;
                bus_space_write_8(is->is_bustag, is->is_iommu,
                        IOMMUREG(iommu_flush), va);
                va += PAGE_SIZE;
    As I noted as comment in iommu.c around this workaround, it seems
    that unmapping an IOMMU page which is used by a device causes an
    uncorrectable DMA error.
    I could not figure out the problem other than this workaround.
 i noticed that open solaris never removes the valid bit from the
 iotte's.  i think we should commit the #if 0 or just remove that
 code entirely...

Home | Main Index | Thread Index | Old Index