[PATCH] x86/mm/ptdump: display page encryption state

Mike Rapoport posted 1 patch 4 years ago
There is a newer version of this series
arch/x86/mm/dump_pagetables.c | 4 ++++
1 file changed, 4 insertions(+)
[PATCH] x86/mm/ptdump: display page encryption state
Posted by Mike Rapoport 4 years ago
From: Mike Rapoport <rppt@linux.ibm.com>

When memory encryption is enabled, for instance in SEV guest, it is useful
to see what memory ranges are mapped as encrypted in the kernel page tables
and what ranges are left plain.

Add printing of 'ENC' for the encrypted ranges to the page table dumps.

Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
---
 arch/x86/mm/dump_pagetables.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c
index e1b599ecbbc2..187dd17b8780 100644
--- a/arch/x86/mm/dump_pagetables.c
+++ b/arch/x86/mm/dump_pagetables.c
@@ -201,6 +201,10 @@ static void printk_prot(struct seq_file *m, pgprotval_t pr, int level, bool dmsg
 			pt_dump_cont_printf(m, dmsg, "PCD ");
 		else
 			pt_dump_cont_printf(m, dmsg, "    ");
+		if (pr & _PAGE_ENC)
+			pt_dump_cont_printf(m, dmsg, "ENC ");
+		else
+			pt_dump_cont_printf(m, dmsg, "    ");
 
 		/* Bit 7 has a different meaning on level 3 vs 4 */
 		if (level <= 3 && pr & _PAGE_PSE)

base-commit: b2d229d4ddb17db541098b83524d901257e93845
-- 
2.28.0
Re: [PATCH] x86/mm/ptdump: display page encryption state
Posted by Dave Hansen 4 years ago
On 4/19/22 07:35, Mike Rapoport wrote:
> When memory encryption is enabled, for instance in SEV guest, it is useful
> to see what memory ranges are mapped as encrypted in the kernel page tables
> and what ranges are left plain.
> 
> Add printing of 'ENC' for the encrypted ranges to the page table dumps.
> 
> Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
> ---
>  arch/x86/mm/dump_pagetables.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c
> index e1b599ecbbc2..187dd17b8780 100644
> --- a/arch/x86/mm/dump_pagetables.c
> +++ b/arch/x86/mm/dump_pagetables.c
> @@ -201,6 +201,10 @@ static void printk_prot(struct seq_file *m, pgprotval_t pr, int level, bool dmsg
>  			pt_dump_cont_printf(m, dmsg, "PCD ");
>  		else
>  			pt_dump_cont_printf(m, dmsg, "    ");
> +		if (pr & _PAGE_ENC)
> +			pt_dump_cont_printf(m, dmsg, "ENC ");
> +		else
> +			pt_dump_cont_printf(m, dmsg, "    ");

_PAGE_ENC is AMD-specific.  Could we do this with a new generic "cc_"
function, maybe cc_is_enc()?

Something like this would (I think) work for both SEV and TDX:

bool cc_is_enc(u64 prot)
{
	return cc_mkdec(prot) != prot;
}
Re: [PATCH] x86/mm/ptdump: display page encryption state
Posted by Mike Rapoport 4 years ago
On Tue, Apr 19, 2022 at 11:57:47AM -0700, Dave Hansen wrote:
> On 4/19/22 07:35, Mike Rapoport wrote:
> > When memory encryption is enabled, for instance in SEV guest, it is useful
> > to see what memory ranges are mapped as encrypted in the kernel page tables
> > and what ranges are left plain.
> > 
> > Add printing of 'ENC' for the encrypted ranges to the page table dumps.
> > 
> > Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
> > ---
> >  arch/x86/mm/dump_pagetables.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c
> > index e1b599ecbbc2..187dd17b8780 100644
> > --- a/arch/x86/mm/dump_pagetables.c
> > +++ b/arch/x86/mm/dump_pagetables.c
> > @@ -201,6 +201,10 @@ static void printk_prot(struct seq_file *m, pgprotval_t pr, int level, bool dmsg
> >  			pt_dump_cont_printf(m, dmsg, "PCD ");
> >  		else
> >  			pt_dump_cont_printf(m, dmsg, "    ");
> > +		if (pr & _PAGE_ENC)
> > +			pt_dump_cont_printf(m, dmsg, "ENC ");
> > +		else
> > +			pt_dump_cont_printf(m, dmsg, "    ");
> 
> _PAGE_ENC is AMD-specific.  Could we do this with a new generic "cc_"
> function, maybe cc_is_enc()?
> 
> Something like this would (I think) work for both SEV and TDX:
> 
> bool cc_is_enc(u64 prot)
> {
> 	return cc_mkdec(prot) != prot;
> }

It works for SEV. I can repost with this and you'll confirm it works on
TDX?

-- 
Sincerely yours,
Mike.
Re: [PATCH] x86/mm/ptdump: display page encryption state
Posted by Dave Hansen 4 years ago
On 4/20/22 00:17, Mike Rapoport wrote:
>> _PAGE_ENC is AMD-specific. Could we do this with a new generic "cc_"
>> function, maybe cc_is_enc()?
>>
>> Something like this would (I think) work for both SEV and TDX:
>>
>> bool cc_is_enc(u64 prot)
>> {
>> 	return cc_mkdec(prot) != prot;
>> }
> It works for SEV. I can repost with this and you'll confirm it works on
> TDX?

I don't have a TDX setup handy, but Kirill certainly does.  I'm sure
he'd be happy to give you a tested-by.