Messages in this thread | | | Subject | Re: [PATCH v2] sparc64: Add support for Application Data Integrity (ADI) | From | Khalid Aziz <> | Date | Mon, 7 Mar 2016 11:24:54 -0700 |
| |
On 03/07/2016 11:09 AM, Rob Gardner wrote: > On 03/07/2016 10:04 AM, Khalid Aziz wrote: >> On 03/07/2016 09:56 AM, David Miller wrote: >>> From: Khalid Aziz <khalid.aziz@oracle.com> >>> Date: Mon, 7 Mar 2016 08:07:53 -0700 >>> >>>> PR_GET_SPARC_ADICAPS >>> >>> Put this into a new ELF auxiliary vector entry via ARCH_DLINFO. >>> >>> So now all that's left is supposedly the TAG stuff, please explain >>> that to me so I can direct you to the correct existing interface to >>> provide that as well. >>> >>> Really, try to avoid prtctl, it's poorly typed and almost worse than >>> ioctl(). >>> >> >> The two remaining operations I am looking at are: >> >> 1. Is PSTATE.mcde bit set for the process? PR_SET_SPARC_ADI provides >> this in its return value in the patch I sent. >> >> 2. Is TTE.mcd set for a given virtual address? PR_GET_SPARC_ADI_STATUS >> provides this function in the patch I sent. >> >> Setting and clearing version tags can be done entirely from userspace: >> >> while (addr < end) { >> asm volatile( >> "stxa %1, [%0]ASI_MCD_PRIMARY\n\t" >> : >> : "r" (addr), "r" (version)); >> addr += adicap.blksz; >> } >> so I do not have to add any kernel code for tags. >> > > What about clearing the tags when the user is done with the memory? You > can't count on the user to do that, so doesn't the kernel have to do it > someplace? >
Tags can be cleared by user by setting tag to 0. Tags are automatically cleared by the hardware when the mapping for a virtual address is removed from TSB (which is why swappable pages are a problem), so kernel does not have to do it as part of clean up.
Thanks, Khalid
| |