platform-driver-x86.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tom Lendacky <thomas.lendacky@amd.com>
To: Borislav Petkov <bp@alien8.de>
Cc: linux-kernel@vger.kernel.org, x86@kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org,
	iommu@lists.linux-foundation.org, kvm@vger.kernel.org,
	linux-efi@vger.kernel.org, platform-driver-x86@vger.kernel.org,
	linux-graphics-maintainer@vmware.com,
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	kexec@lists.infradead.org, linux-fsdevel@vger.kernel.org,
	Brijesh Singh <brijesh.singh@amd.com>,
	Joerg Roedel <joro@8bytes.org>, Andi Kleen <ak@linux.intel.com>,
	Sathyanarayanan Kuppuswamy 
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	Tianyu Lan <Tianyu.Lan@microsoft.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Andy Lutomirski <luto@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Will Deacon <will@kernel.org>, Joerg Roedel <jroedel@suse.de>
Subject: Re: [PATCH v2 05/12] x86/sme: Replace occurrences of sme_active() with prot_guest_has()
Date: Tue, 17 Aug 2021 09:46:58 -0500	[thread overview]
Message-ID: <2996b1c8-1ea1-0e56-3aad-08b46fc207f0@amd.com> (raw)
In-Reply-To: <YRt6yCNCBLwyyx5X@zn.tnic>

On 8/17/21 4:00 AM, Borislav Petkov wrote:
> On Fri, Aug 13, 2021 at 11:59:24AM -0500, Tom Lendacky wrote:
>> diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c
>> index edc67ddf065d..5635ca9a1fbe 100644
>> --- a/arch/x86/mm/mem_encrypt.c
>> +++ b/arch/x86/mm/mem_encrypt.c
>> @@ -144,7 +144,7 @@ void __init sme_unmap_bootdata(char *real_mode_data)
>>  	struct boot_params *boot_data;
>>  	unsigned long cmdline_paddr;
>>  
>> -	if (!sme_active())
>> +	if (!amd_prot_guest_has(PATTR_SME))
>>  		return;
>>  
>>  	/* Get the command line address before unmapping the real_mode_data */
>> @@ -164,7 +164,7 @@ void __init sme_map_bootdata(char *real_mode_data)
>>  	struct boot_params *boot_data;
>>  	unsigned long cmdline_paddr;
>>  
>> -	if (!sme_active())
>> +	if (!amd_prot_guest_has(PATTR_SME))
>>  		return;
>>  
>>  	__sme_early_map_unmap_mem(real_mode_data, sizeof(boot_params), true);
>> @@ -378,7 +378,7 @@ bool sev_active(void)
>>  	return sev_status & MSR_AMD64_SEV_ENABLED;
>>  }
>>  
>> -bool sme_active(void)
>> +static bool sme_active(void)
> 
> Just get rid of it altogether. Also, there's an
> 
> EXPORT_SYMBOL_GPL(sev_active);
> > which needs to go under the actual function. Here's a diff ontop:

Will do.

> 
> ---
> diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c
> index 5635ca9a1fbe..a3a2396362a5 100644
> --- a/arch/x86/mm/mem_encrypt.c
> +++ b/arch/x86/mm/mem_encrypt.c
> @@ -364,8 +364,9 @@ int __init early_set_memory_encrypted(unsigned long vaddr, unsigned long size)
>  /*
>   * SME and SEV are very similar but they are not the same, so there are
>   * times that the kernel will need to distinguish between SME and SEV. The
> - * sme_active() and sev_active() functions are used for this.  When a
> - * distinction isn't needed, the mem_encrypt_active() function can be used.
> + * PATTR_HOST_MEM_ENCRYPT and PATTR_GUEST_MEM_ENCRYPT flags to
> + * amd_prot_guest_has() are used for this. When a distinction isn't needed,
> + * the mem_encrypt_active() function can be used.
>   *
>   * The trampoline code is a good example for this requirement.  Before
>   * paging is activated, SME will access all memory as decrypted, but SEV
> @@ -377,11 +378,6 @@ bool sev_active(void)
>  {
>  	return sev_status & MSR_AMD64_SEV_ENABLED;
>  }
> -
> -static bool sme_active(void)
> -{
> -	return sme_me_mask && !sev_active();
> -}
>  EXPORT_SYMBOL_GPL(sev_active);
>  
>  /* Needs to be called from non-instrumentable code */
> @@ -398,7 +394,7 @@ bool amd_prot_guest_has(unsigned int attr)
>  
>  	case PATTR_SME:
>  	case PATTR_HOST_MEM_ENCRYPT:
> -		return sme_active();
> +		return sme_me_mask && !sev_active();
>  
>  	case PATTR_SEV:
>  	case PATTR_GUEST_MEM_ENCRYPT:
> 
>>  {
>>  	return sme_me_mask && !sev_active();
>>  }
>> @@ -428,7 +428,7 @@ bool force_dma_unencrypted(struct device *dev)
>>  	 * device does not support DMA to addresses that include the
>>  	 * encryption mask.
>>  	 */
>> -	if (sme_active()) {
>> +	if (amd_prot_guest_has(PATTR_SME)) {
> 
> So I'm not sure: you add PATTR_SME which you call with
> amd_prot_guest_has() and PATTR_HOST_MEM_ENCRYPT which you call with
> prot_guest_has() and they both end up being the same thing on AMD.
> 
> So why even bother with PATTR_SME?
> 
> This is only going to cause confusion later and I'd say let's simply use
> prot_guest_has(PATTR_HOST_MEM_ENCRYPT) everywhere...

Ok, I can do that. I was trying to ensure that anything that is truly SME
or SEV specific would be called out now.

I'm ok with letting the TDX folks make changes to these calls to be SME or
SEV specific, if necessary, later.

Thanks,
Tom

> 

  reply	other threads:[~2021-08-17 14:47 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-13 16:59 [PATCH v2 00/12] Implement generic prot_guest_has() helper function Tom Lendacky
2021-08-13 16:59 ` [PATCH v2 01/12] x86/ioremap: Selectively build arch override encryption functions Tom Lendacky
2021-08-14 15:25   ` Borislav Petkov
2021-08-13 16:59 ` [PATCH v2 02/12] mm: Introduce a function to check for virtualization protection features Tom Lendacky
2021-08-13 17:19   ` Kuppuswamy, Sathyanarayanan
2021-08-14 18:32   ` Borislav Petkov
2021-08-14 18:49     ` Tom Lendacky
2021-08-19  9:46   ` Christoph Hellwig
2021-08-19 16:39     ` Tom Lendacky
2021-08-13 16:59 ` [PATCH v2 03/12] x86/sev: Add an x86 version of prot_guest_has() Tom Lendacky
2021-08-14 19:08   ` Borislav Petkov
2021-08-15 13:53     ` Tom Lendacky
2021-08-15 14:39       ` Borislav Petkov
2021-08-17 15:22         ` Tom Lendacky
2021-08-17 18:39           ` Borislav Petkov
2021-08-19  9:52   ` Christoph Hellwig
2021-08-19 17:26     ` Borislav Petkov
2021-08-19 18:33     ` Tom Lendacky
2021-08-19 19:57       ` Kuppuswamy, Sathyanarayanan
2021-08-24  7:14       ` Christoph Hellwig
2021-08-13 16:59 ` [PATCH v2 04/12] powerpc/pseries/svm: Add a powerpc " Tom Lendacky
2021-08-17  8:35   ` Borislav Petkov
2021-08-17 14:11     ` Tom Lendacky
2021-08-17 12:38   ` Michael Ellerman
2021-08-19  9:55   ` Christoph Hellwig
2021-08-19 18:34     ` Tom Lendacky
2021-08-13 16:59 ` [PATCH v2 05/12] x86/sme: Replace occurrences of sme_active() with prot_guest_has() Tom Lendacky
2021-08-17  9:00   ` Borislav Petkov
2021-08-17 14:46     ` Tom Lendacky [this message]
2021-08-17 18:41       ` Borislav Petkov
2021-08-13 16:59 ` [PATCH v2 06/12] x86/sev: Replace occurrences of sev_active() " Tom Lendacky
2021-08-17 10:02   ` Borislav Petkov
2021-08-17 15:26     ` Tom Lendacky
2021-08-17 18:43       ` Borislav Petkov
2021-08-13 16:59 ` [PATCH v2 07/12] x86/sev: Replace occurrences of sev_es_active() " Tom Lendacky
2021-08-17 10:06   ` Borislav Petkov
2021-08-13 16:59 ` [PATCH v2 08/12] treewide: Replace the use of mem_encrypt_active() " Tom Lendacky
2021-08-13 16:59 ` [PATCH v2 09/12] mm: Remove the now unused mem_encrypt_active() function Tom Lendacky
2021-08-17 10:22   ` Borislav Petkov
2021-08-17 10:24     ` Borislav Petkov
2021-08-17 15:30       ` Tom Lendacky
2021-08-13 16:59 ` [PATCH v2 10/12] x86/sev: " Tom Lendacky
2021-08-13 16:59 ` [PATCH v2 11/12] powerpc/pseries/svm: " Tom Lendacky
2021-08-13 16:59 ` [PATCH v2 12/12] s390/mm: " Tom Lendacky
2021-08-13 17:22 ` [PATCH v2 00/12] Implement generic prot_guest_has() helper function Tom Lendacky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2996b1c8-1ea1-0e56-3aad-08b46fc207f0@amd.com \
    --to=thomas.lendacky@amd.com \
    --cc=Tianyu.Lan@microsoft.com \
    --cc=ak@linux.intel.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=bp@alien8.de \
    --cc=brijesh.singh@amd.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=jroedel@suse.de \
    --cc=kexec@lists.infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-graphics-maintainer@vmware.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=tglx@linutronix.de \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).