Messages in this thread | | | Subject | Re: [PATCH v2] sparc64: Add support for Application Data Integrity (ADI) | From | Khalid Aziz <> | Date | Mon, 7 Mar 2016 08:45:21 -0700 |
| |
On 03/07/2016 08:30 AM, Rob Gardner wrote: > On 03/07/2016 07:07 AM, Khalid Aziz wrote: >> On 03/05/2016 09:07 PM, David Miller wrote: >>> From: Khalid Aziz <khalid.aziz@oracle.com> >>> Date: Wed, 2 Mar 2016 13:39:37 -0700 >>> >>>> In this >>>> first implementation I am enabling ADI for hugepages only >>>> since these pages are locked in memory and hence avoid the >>>> issue of saving and restoring tags. >>> >>> This makes the feature almost entire useless. >>> >>> Non-hugepages must be in the initial implementation. >> >> Hi David, >> >> Thanks for the feedback. I will get this working for non-hugepages as >> well. ADI state of each VMA region is already stored in the VMA itself >> in my first implementation, so I do not lose it when the page is >> swapped out. The trouble is ADI version tags for each VMA region have >> to be stored on the swapped out pages since the ADI version tags are >> flushed when TLB entry for a page is flushed. > > > Khalid, > > Are you sure about that last statement? My understanding is that the > tags are stored in physical memory, and remain there until explicitly > changed or removed, and so flushing a TLB entry has no effect on the ADI > tags. If it worked the way you think, then somebody would have to > potentially reload a long list of ADI tags on every TLB miss. > > Rob >
Hi Rob,
I am fairly sure that is the case. This is what I found from the processor guys and others working on ADI. I tested it out by setting up ADI on normal malloc'd pages that got swapped out and I got MCD exceptions when those pages were swapped back in on access.
I mis-spoke when I said "....ADI version tags are flushed when TLB entry for a page is flushed". I meant ADI version tags are flushed when mapping for a virtual address is removed from TSB, not when TLB entry is flushed. Yes, ADI tags are stored in physical memory and removed when mapping is removed.
Thanks, Khalid
| |