Re: [PATCH v3 23/23] arm64: mte: Add Memory Tagging Extension documentation
From: Szabolcs Nagy <hidden>
Date: 2020-05-15 11:14:18
Also in:
linux-arch, linux-mm
The 05/15/2020 11:38, Catalin Marinas wrote:
On Thu, May 14, 2020 at 12:37:22PM +0100, Catalin Marinas wrote:quoted
On Wed, May 13, 2020 at 04:48:46PM +0100, Dave P Martin wrote:quoted
quoted
quoted
quoted
On Wed, Apr 29, 2020 at 05:47:05PM +0100, Dave P Martin wrote:quoted
On Tue, Apr 21, 2020 at 03:26:03PM +0100, Catalin Marinas wrote:quoted
+excludes all tags other than 0. A user thread can enable specific tags +in the randomly generated set using the ``prctl(PR_SET_TAGGED_ADDR_CTRL, +flags, 0, 0, 0)`` system call where ``flags`` contains the tags bitmap +in the ``PR_MTE_TAG_MASK`` bit-field. + +**Note**: The hardware uses an exclude mask but the ``prctl()`` +interface provides an include mask. An include mask of ``0`` (exclusion +mask ``0xffff``) results in the CPU always generating tag ``0``.Is there no way to make this default to 1 rather than having a magic meaning for 0?[...]quoted
The only configuration that doesn't make sense is "no tags allowed", so I'd argue for explicity blocking that, even if the architeture aliases that encoding to something else. If we prefer 0 as a default value so that init inherits the correct value from the kernel without any special acrobatics, then we make it an exclude mask, with the semantics that the hardware is allowed to generate any of these tags, but does not have to be capable of generating all of them.That's more of a question to the libc people and their preference. We have two options with suboptions: 1. prctl() gets an exclude mask with 0xffff illegal even though the hardware accepts it: a) default exclude mask 0, allowing all tags to be generated by IRG b) default exclude mask of 0xfffe so that only tag 0 is generated 2. prctl() gets an include mask with 0 illegal: a) default include mask is 0xffff, allowing all tags to be generated b) default include mask 0f 0x0001 so that only tag 0 is generated We currently have (2) with mask 0 but could be changed to (2.b). If we are to follow the hardware description (which makes more sense to me but I don't write the C library), (1.a) is the most appropriate.Thinking some more about this, as we are to expose the GCR_EL1.Excl via a ptrace interface as a regset, it makes more sense to move back to an exclude mask here with default 0. That would be option 1.a above.
i think the libc has to do a prctl call to set mte up and at that point it will use whatever arguments necessary, so 1.a should work (just like the other options). likely libc will disable 0 for irg and possibly one or two other fixed colors (which will have specific use). the difference i see between 1 vs 2 is forward compatibility if the architecture changes (e.g. adding more tag bits) but then likely new prctl flag will be needed for handling that so it's probably not an issue. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel