_IO_IS_ISA question

linas at austin.ibm.com linas at austin.ibm.com
Fri Mar 26 04:30:47 EST 2004


On Thu, Mar 25, 2004 at 11:24:47AM -0600, linas at austin.ibm.com wrote:
>
> On Thu, Mar 25, 2004 at 11:15:50AM -0600, linas at austin.ibm.com wrote:
> >
> > On Thu, Mar 25, 2004 at 10:34:18AM +1100, Benjamin Herrenschmidt wrote:
> > >
> > > > > Paul, Ben and I were discussing it, and it would seem we can use the
> > > > > existing exception stuff (aka get_user etc). This would remove all the
> > > > > ISA_* checks we currently have and not require the added complexity that
> > > > > this patch introduces.
> > > >
> > > > Ohh, yes, I like that, much better idea.  I'm guessing a little bit
> > > > how one might do that;  I'm thinking a new 'copy_to_io' type function
> > > > with the isa_port<0x10000 check in the ex_table code?  I'm somewhat
> > > > confused, since bad_page_fault usually runs at the end, not at the start
> > > > of the exception handling.
> > >
> > > Look what ppc32 does
> >
> > Hmmm. include/asm-ppc/io.h   ... twi ... isync ...
> >
> > I hope that we can do something that doesn't require either twi or isync,
> > or sync for that matter, as the cure seems worse than the disease.
> > I was assuming (and still kinda hoping) that a load/store to a bad
> > ISA address would generate an exception that is synchronous with
> > the load/store.
>
> I take that all back, my comments are nonsense.  I just actually read
> the page for isync.  Duhh.  I thought it did something completely different.
>
> > By 'cure worse than disease' I mean:  performance-wise, Jake's
> > if-test ((port<10000) && maskbits) (and the half dozen insns that this
> > genarates) sounds to be faster than sync, or so I would think ...
>
> Well, I suppose that's still a concern;   how many cycles delay for
> io-to-valid-addr+isync on power3/4/5 ?

I take back what I took back and put forth my initial argument:  isync does
do what I thought it did.  It waits for completion (which is what we want)
but it also causes a refetch (which we don't want).  The refetch can be
something like 200 or 300 clock cycles on power5 I think (antonb knows for
sure) which is one hell of a price to pay.

--linas


** Sent via the linuxppc64-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc64-dev mailing list