CVSROOT:        /cvs
Module name:    src
Changes by:     m...@cvs.openbsd.org    2015/09/18 14:50:02

Modified files:
        sys/arch/sgi/hpc: hpc.c hpcvar.h if_sq.c if_sqvar.h 

Log message:
Go back to the previous approach when managing individual HPC DMA descriptors:
provide again an optional storage for a copy of the descriptor in the `sync'
(fetch) function, and use the returned address afterwards.

On IP22 systems (in the broader sense of the term, thus IP20/IP22/IP24),
descriptors will remain in uncached memory and no local copies need to be made.
On IP28 systems, descriptors will remain in cached memory (so as to avoid
switching to `slow mode'), but a local copy will be performed with the necessary
cache eviction work, so that speculative code execution on R10000 will not
touch the real descriptor.

With this in place, all the explicit descriptor cache operations in if_sq,
some of them being redundant or operating on the wrong number of
descriptors, can be removed, with the HPC DMA wrappers taking care of doing
the right thing.

Tested on IP22 and IP28. IP26 still unhappy but no worse than before.

Reply via email to