> > +           __asm__ __volatile__(
> > +                   "mov %1, %0\n\t"
> > +                   : "=r" (i)
> > +                   : "r" (kaddr+offset)); /* load tlb entry */
> > +           for(i=0;i<size;i+=64) {
> > +                   __asm__ __volatile__(
> > +                           "prefetchnta (%1, %0)\n\t"
> > +                           "prefetchnta 32(%1, %0)\n\t"
> > +                           : /* no output */
> > +                           : "r" (i), "r" (kaddr+offset));
> > +           }
> > +   }
> >     left = __copy_to_user(desc->buf, kaddr + offset, size);
> >     kunmap(page);
> 
> This seems bogus -- you need to handle faults --
> i.e. __prefetchnta_to_user() ;-).

It wants wrapping nicely. A generic prefetch and prefetchw does help some other
cases (scheduler for one).

Does the prefetch instruction fault on PIII/PIV then - the K7 one appears not
to be a source of faults

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to