CVSROOT: /cvs Module name: src Changes by: kette...@cvs.openbsd.org 2016/05/04 12:26:12
Modified files: sys/arch/sparc64/dev: iommu.c iommuvar.h viommu.c sys/arch/sparc64/include: bus.h Log message: Some hardware (such as the onboard dc(4) of the Netra X1) has a broken DMA engine that might attempt to read beyond the end of the buffer that was programmed. The IOMMU catches this "DMA overrun" and throws an unrecoverable error at us, at which point we have no choice but to panic. To avoid this implement a BUS_DMA_OVERRUN flag that maps an additional scratch page at the end of the vdma address range. DMA requests will spill over into this page, which just returns zeroes. Thanks to matthieu@ for giving me access to a machine with the problem. ok deraadt@, beck@