Subject: Re: Problems with "bus_dmamap_sync()" on sparc64
To: Martin Husemann <martin@duskware.de>
From: Hans Petter Selasky <hselasky@c2i.net>
List: tech-kern
Date: 01/23/2007 15:50:30
On Tuesday 23 January 2007 14:41, Martin Husemann wrote:
> On Tue, Jan 23, 2007 at 02:22:17PM +0100, Hans Petter Selasky wrote:
> > iommu_dvmamap_sync_range() calls iommu_strbuf_flush()
> >
> > #define iommu_strbuf_flush(i, v) do { \
> > if ((i)->sb_flush) \
> > bus_space_write_8((i)->sb_is->is_bustag, (i)->sb_sb, \
> > STRBUFREG(strbuf_pgflush), (v)); \
> > } while (0)
> >
> >
> > What I see is that "bus_dmamap_sync()" ends up calling
> > "bus_space_write_8()" to synchronize the memory.
>
> Check the ASI used by the bus handle (from memory I guess that would
> be something like (i)->sb_sb._asi).
I added:
+ struct psycho_pbm *pp = (struct psycho_pbm *
(sc->sc_hw_page.tag)->_cookie;
+
+ printf("%s:%d: ASI=%d\n",
+ __FUNCTION__, __LINE__,
+ pp->pp_sb.sb_sb._asi);
ehci_init:352: ASI=0
Does this look ok?
--HPS