Block CPU VAs with 48th bit set on aarch64 #801
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
aarch64 allows CPU VAs to be from
0x0000_0000_0000
to0xFFFF_FFFF_FFFF
and additionally doesn't want the addresses to be canonized like they are in x86_64.Since SVM relies on CPU and GPU addrs to line up, and mmap on aarch64 usually gives you an addr with the 48th bit set, this causes SVM to fail.
Reserving the addrs between
0x8000_0000_0000
and0xFFFF_FFFF_FFFF
is a trick to ensure that future mmap calls give you addrs that line up with what one would get on a x86_64 system and makes the library work on aarch64 without any changes to canonization.