pmap_large_unmap() asserts that an unmapping request covers the
entirety of a 2 MByte or 1 GByte page. The logic in the asserts
was out of date with the loop logic though, asserting on valid
unmap requests when where these larger pages were in use.
Details
Details
- Reviewers
alc kib bwidawsk - Commits
- rS341096: Fix assert condition in pmap_large_unmap().
kldload/kldunload nvdimm.ko
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
sys/amd64/amd64/pmap.c | ||
---|---|---|
8444 ↗ | (On Diff #51133) | I would actually suggest rewriting this assertion to be va + NBPDP <= sva + len In other words, destroying the current superpage mapping does not unmap addresses beyond those requested by the caller. I speculate that at one point in the development of this function len was the residual number of bytes left to unmap on each iteration. Then, the current assertion would have made sense. |
8460 ↗ | (On Diff #51133) | And, similarly va + NBPDR <= sva + len |
sys/amd64/amd64/pmap.c | ||
---|---|---|
8444 ↗ | (On Diff #51133) | I agree, this is the correct fix. |