Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-27 Thread Kirill A. Shutemov
On Tue, Mar 20, 2018 at 03:50:46PM +0300, Kirill A. Shutemov wrote: > On Mon, Mar 05, 2018 at 11:07:16AM -0800, Dave Hansen wrote: > > On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > > > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > > > +{ > > > + int i; > > > +

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-27 Thread Kirill A. Shutemov
On Tue, Mar 20, 2018 at 03:50:46PM +0300, Kirill A. Shutemov wrote: > On Mon, Mar 05, 2018 at 11:07:16AM -0800, Dave Hansen wrote: > > On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > > > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > > > +{ > > > + int i; > > > +

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-20 Thread Kirill A. Shutemov
On Mon, Mar 05, 2018 at 11:07:16AM -0800, Dave Hansen wrote: > On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > > +{ > > + int i; > > + void *v; > > + > > + for (i = 0; i < (1 << order); i++) { > > + v

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-20 Thread Kirill A. Shutemov
On Mon, Mar 05, 2018 at 11:07:16AM -0800, Dave Hansen wrote: > On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > > +{ > > + int i; > > + void *v; > > + > > + for (i = 0; i < (1 << order); i++) { > > + v

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-06 Thread Kirill A. Shutemov
On Tue, Mar 06, 2018 at 05:52:44AM -0800, Dave Hansen wrote: > On 03/06/2018 12:54 AM, Kirill A. Shutemov wrote: > >> Have you measured how slow this is? > > No, I have not. > > It would be handy to do this. I *think* you can do it on normal > hardware, even if it does not have "real" support

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-06 Thread Kirill A. Shutemov
On Tue, Mar 06, 2018 at 05:52:44AM -0800, Dave Hansen wrote: > On 03/06/2018 12:54 AM, Kirill A. Shutemov wrote: > >> Have you measured how slow this is? > > No, I have not. > > It would be handy to do this. I *think* you can do it on normal > hardware, even if it does not have "real" support

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-06 Thread Dave Hansen
On 03/06/2018 12:54 AM, Kirill A. Shutemov wrote: >> Have you measured how slow this is? > No, I have not. It would be handy to do this. I *think* you can do it on normal hardware, even if it does not have "real" support for memory encryption. Just don't set the encryption bits in the PTEs but

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-06 Thread Dave Hansen
On 03/06/2018 12:54 AM, Kirill A. Shutemov wrote: >> Have you measured how slow this is? > No, I have not. It would be handy to do this. I *think* you can do it on normal hardware, even if it does not have "real" support for memory encryption. Just don't set the encryption bits in the PTEs but

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-06 Thread Kirill A. Shutemov
On Mon, Mar 05, 2018 at 11:07:16AM -0800, Dave Hansen wrote: > On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > > +{ > > + int i; > > + void *v; > > + > > + for (i = 0; i < (1 << order); i++) { > > + v

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-06 Thread Kirill A. Shutemov
On Mon, Mar 05, 2018 at 11:07:16AM -0800, Dave Hansen wrote: > On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > > +{ > > + int i; > > + void *v; > > + > > + for (i = 0; i < (1 << order); i++) { > > + v

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-06 Thread Kirill A. Shutemov
On Mon, Mar 05, 2018 at 11:00:00AM -0800, Dave Hansen wrote: > On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > > +{ > > + int i; > > + void *v; > > + > > + for (i = 0; i < (1 << order); i++) { > > + v

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-06 Thread Kirill A. Shutemov
On Mon, Mar 05, 2018 at 11:00:00AM -0800, Dave Hansen wrote: > On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > > +{ > > + int i; > > + void *v; > > + > > + for (i = 0; i < (1 << order); i++) { > > + v

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-05 Thread Dave Hansen
On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > +{ > + int i; > + void *v; > + > + for (i = 0; i < (1 << order); i++) { > + v = kmap_atomic_keyid(page, keyid + i); > + /* See comment

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-05 Thread Dave Hansen
On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > +{ > + int i; > + void *v; > + > + for (i = 0; i < (1 << order); i++) { > + v = kmap_atomic_keyid(page, keyid + i); > + /* See comment

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-05 Thread Dave Hansen
On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > +{ > + int i; > + void *v; > + > + for (i = 0; i < (1 << order); i++) { > + v = kmap_atomic_keyid(page, keyid + i); > + /* See comment

Re: [RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-05 Thread Dave Hansen
On 03/05/2018 08:26 AM, Kirill A. Shutemov wrote: > +void free_encrypt_page(struct page *page, int keyid, unsigned int order) > +{ > + int i; > + void *v; > + > + for (i = 0; i < (1 << order); i++) { > + v = kmap_atomic_keyid(page, keyid + i); > + /* See comment

[RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-05 Thread Kirill A. Shutemov
As on allocation of encrypted page, we need to flush cache before returning page to free pool. Failing to do this may lead to data corruption. Signed-off-by: Kirill A. Shutemov --- arch/x86/mm/mktme.c | 13 + 1 file changed, 13 insertions(+) diff

[RFC, PATCH 19/22] x86/mm: Implement free_encrypt_page()

2018-03-05 Thread Kirill A. Shutemov
As on allocation of encrypted page, we need to flush cache before returning page to free pool. Failing to do this may lead to data corruption. Signed-off-by: Kirill A. Shutemov --- arch/x86/mm/mktme.c | 13 + 1 file changed, 13 insertions(+) diff --git a/arch/x86/mm/mktme.c