On 3/13/20 6:59 AM, Rémi Denis-Courmont wrote:
> For proper storage and checking of memory tags, MTE == 2 would be
> necessary. I have some code (on top of this RFC but not included) to add the
> tag allocation logic. But I have no clue how to actually store the tags in 
> QEMU
> system mode at this point, so it's mostly dead code.

I have implemented this, and posted version 6 yesterday.
Peter gave you the link.

> In user mode, it seems impossible anyway, as tags are indexed by physical, not
> virtual address and QEMU cannot know which virtual memory address may
> physically alias another within the user process.

I have implemented this as well, with a made-up ABI controlled by a
command-line option, which only works with non-shared memory.  Because the
memory is non-shared, we know a priori that it does not alias another address.

Version 5 was posted in October:

https://patchew.org/QEMU/20191015163507.12153-1-richard.hender...@linaro.org/

My branch referenced in that cover letter is still available.

You will be interested to follow the Linux kernel development of this feature
and the user-space ABI:

http://lists.infradead.org/pipermail/linux-arm-kernel/2020-February/714413.html

In particular, only anonymous memory and files in filesystems backed by ram
will be supported.  Userspace will get an error if they attempt to enable
PROT_MTE on a VMA that does not support tags.

When I update my mte user branch, I will only support anonymous memory, since I
cannot share my on-the-side data structure for tags between aarch64-linux-user
processes, whether or not they are in a tmpfs filesystem.


r~

Reply via email to