From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Date: Fri, 14 Jun 2019 11:10:12 +0000 Subject: Re: [PATCH, RFC 19/62] x86/mm: Handle encrypted memory in page_to_virt() and __pa() Message-Id: <20190614111012.GZ3436@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit List-Id: References: <20190508144422.13171-1-kirill.shutemov@linux.intel.com> <20190508144422.13171-20-kirill.shutemov@linux.intel.com> In-Reply-To: <20190508144422.13171-20-kirill.shutemov@linux.intel.com> To: "Kirill A. Shutemov" Cc: Andrew Morton , x86@kernel.org, Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Borislav Petkov , Andy Lutomirski , David Howells , Kees Cook , Dave Hansen , Kai Huang , Jacob Pan , Alison Schofield , linux-mm@kvack.org, kvm@vger.kernel.org, keyrings@vger.kernel.org, linux-kernel@vger.kernel.org On Wed, May 08, 2019 at 05:43:39PM +0300, Kirill A. Shutemov wrote: > Per-KeyID direct mappings require changes into how we find the right > virtual address for a page and virt-to-phys address translations. > > page_to_virt() definition overwrites default macros provided by > . > > Signed-off-by: Kirill A. Shutemov > --- > arch/x86/include/asm/page.h | 3 +++ > arch/x86/include/asm/page_64.h | 2 +- > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h > index 39af59487d5f..aff30554f38e 100644 > --- a/arch/x86/include/asm/page.h > +++ b/arch/x86/include/asm/page.h > @@ -72,6 +72,9 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr, > extern bool __virt_addr_valid(unsigned long kaddr); > #define virt_addr_valid(kaddr) __virt_addr_valid((unsigned long) (kaddr)) > > +#define page_to_virt(x) \ > + (__va(PFN_PHYS(page_to_pfn(x))) + page_keyid(x) * direct_mapping_size) > + > #endif /* __ASSEMBLY__ */ So this is the bit that makes patch 13 make sense. It would've been nice to have that called out in the Changelog or something.