Re: [RFC PATCH v3] sparc64: Add support for Application Data Integrity (ADI)

From: Khalid Aziz
Date: Wed Jan 04 2017 - 19:27:15 EST


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