Messages in this thread | | | Subject | Re: [RFC PATCH v3] sparc64: Add support for Application Data Integrity (ADI) | From | Khalid Aziz <> | Date | Wed, 4 Jan 2017 17:26:08 -0700 |
| |
On 01/04/2017 05:14 PM, Dave Hansen wrote: > On 01/04/2017 04:05 PM, Rob Gardner wrote: >>> What if two different small pages have different tags and khugepaged >>> comes along and tries to collapse them? Will the page be split if a >>> user attempts to set two different tags inside two different small-page >>> portions of a single THP? >> >> The MCD tags operate at a resolution of cache lines (64 bytes). Page >> sizes don't matter except that each virtual page must have a bit set in >> its TTE to allow MCD to be enabled on the page. Any page can have many >> different tags, one for each cache line. > > Is an "MCD tag" the same thing as a "ADI version tag"? > > The thing that confused me here is that we're taking an entire page of > "ADI version tags" and stuffing them into a swap pte (in > set_swp_pte_at()). Do we somehow have enough space in a swap pte on > sparc to fit PAGE_SIZE/64 "ADI version tag"s in there?
No, we do not have space to stuff PAGE_SIZE/64 version tags in swap pte. There is enough space for just one tag per page. DaveM had suggested doing this since the usual case is for a task to set one tag per page even though MMU does not require it. I have implemented this as first pass to start a discussion and get feedback on whether rest of the swapping implementation and other changes look right, hence the patch is "RFC". If this all looks good, I can expand swapping support in a subsequent patch or iteration of this patch to allocate space in mm_context_t possibly to store per cacheline tags. I am open to any other ideas on storing this larger number of version tags.
Thanks, Khalid
| |