Re: [RFC, PATCH 21/22] x86/mm: Introduce page_keyid() and page_encrypted()

From: Dave Hansen
Date: Tue Mar 06 2018 - 09:56:19 EST


On 03/06/2018 12:57 AM, Kirill A. Shutemov wrote:
> On Mon, Mar 05, 2018 at 09:08:53AM -0800, Dave Hansen wrote:
>> On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote:
>>> +static inline bool page_encrypted(struct page *page)
>>> +{
>>> + /* All pages with non-zero KeyID are encrypted */
>>> + return page_keyid(page) != 0;
>>> +}
>>
>> Is this true? I thought there was a KEYID_NO_ENCRYPT "Do not encrypt
>> memory when this KeyID is in use." Is that really only limited to key 0.
>
> Well, it depends on what we mean by "encrypted". For memory management
> pruposes we care if the page is encrypted with KeyID different from
> default one. All pages with non-default KeyID threated the same by memory
> management.

Doesn't it really mean "am I able to use the direct map to get this
page's contents?"