Add a guard page between I/O virtual address space allocations. The idea
authorpatrick <patrick@openbsd.org>
Sat, 3 Apr 2021 15:59:08 +0000 (15:59 +0000)
committerpatrick <patrick@openbsd.org>
Sat, 3 Apr 2021 15:59:08 +0000 (15:59 +0000)
commita5eb7f55b9c1dc179deb7da5fa31c6889c73c8ca
tree1aaebdf7ef6cfad3540cacbb308660aaea1007c9
parentab86b9020dc7a7e0f5e6f0a183513a03d13d2e53
Add a guard page between I/O virtual address space allocations.  The idea
is that IOVA allocations always have a gap in-between which produces a fault
on access.  If a transfer to a given allocation runs further than expected
we should be able to see it.  We pre-allocate IOVA on bus DMA map creation,
and as long as we don't allocate a PTE descriptor, this comes with no cost.
We have plenty of address space anyway, so adding a page-sized gap does not
hurt at all and can only have positive effects.

Idea from kettenis@
sys/arch/arm64/dev/smmu.c