On 8/20/20 9:43 AM, Szabolcs Nagy wrote:
the compat issue with this is existing code using pointer top bits which i assume faults when dereferenced with the mte checks enabled. (although this should be very rare since top byte ignore on deref is aarch64 specific.)
Does anyone know of significant aarch64-specific application code that depends on top byte ignore? I would think it's so rare (nonexistent?) as to not be worth worrying about.
Even in the bad old days when Emacs used pointer top bits for typechecking, it carefully removed those bits before dereferencing. Any other reasonably-portable application would have to do the same of course.
This whole thing reminds me of the ancient IBM S/360 mainframes that were documented to ignore the top 8 bits of 32-bit addresses merely because a single model (the IBM 360/30, circa 1965) was so underpowered that it couldn't quickly check that the top bits were zero. This has caused countless software hassles over the years. Even today, the IBM z-Series hardware and software still supports 24-bit addressing mode because of that early-1960s design mistake. See:
Mashey JR. The Long Road to 64 Bits. ACM Queue. 2006-10-10. https://queue.acm.org/detail.cfm?id=1165766