Re: [PATCH v5 02/34] KVM: SVM: Remove the call to sev_platform_status() during setup

2020-12-14 Thread Tom Lendacky
On 12/14/20 6:29 AM, Paolo Bonzini wrote:
> On 10/12/20 18:09, Tom Lendacky wrote:
>> From: Tom Lendacky 
>>
>> When both KVM support and the CCP driver are built into the kernel instead
>> of as modules, KVM initialization can happen before CCP initialization. As
>> a result, sev_platform_status() will return a failure when it is called
>> from sev_hardware_setup(), when this isn't really an error condition.
>>
>> Since sev_platform_status() doesn't need to be called at this time anyway,
>> remove the invocation from sev_hardware_setup().
>>
>> Signed-off-by: Tom Lendacky 
>> ---
>>   arch/x86/kvm/svm/sev.c | 22 +-
>>   1 file changed, 1 insertion(+), 21 deletions(-)
>>
>> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
>> index c0b14106258a..a4ba5476bf42 100644
>> --- a/arch/x86/kvm/svm/sev.c
>> +++ b/arch/x86/kvm/svm/sev.c
>> @@ -1127,9 +1127,6 @@ void sev_vm_destroy(struct kvm *kvm)
>>     int __init sev_hardware_setup(void)
>>   {
>> -    struct sev_user_data_status *status;
>> -    int rc;
>> -
>>   /* Maximum number of encrypted guests supported simultaneously */
>>   max_sev_asid = cpuid_ecx(0x801F);
>>   @@ -1148,26 +1145,9 @@ int __init sev_hardware_setup(void)
>>   if (!sev_reclaim_asid_bitmap)
>>   return 1;
>>   -    status = kmalloc(sizeof(*status), GFP_KERNEL);
>> -    if (!status)
>> -    return 1;
>> -
>> -    /*
>> - * Check SEV platform status.
>> - *
>> - * PLATFORM_STATUS can be called in any state, if we failed to query
>> - * the PLATFORM status then either PSP firmware does not support SEV
>> - * feature or SEV firmware is dead.
>> - */
>> -    rc = sev_platform_status(status, NULL);
>> -    if (rc)
>> -    goto err;
>> -
>>   pr_info("SEV supported\n");
>>   -err:
>> -    kfree(status);
>> -    return rc;
>> +    return 0;
>>   }
>>     void sev_hardware_teardown(void)
>>
> 
> Queued with Cc: stable.
> 
> Note that sev_platform_status now can become static within
> drivers/crypto/ccp/sev-dev.c.

Nice catch. I'll look at doing a follow-on patch to change that.

Thanks,
Tom

> 
> Paolo


Re: [PATCH v5 02/34] KVM: SVM: Remove the call to sev_platform_status() during setup

2020-12-14 Thread Paolo Bonzini

On 10/12/20 18:09, Tom Lendacky wrote:

From: Tom Lendacky 

When both KVM support and the CCP driver are built into the kernel instead
of as modules, KVM initialization can happen before CCP initialization. As
a result, sev_platform_status() will return a failure when it is called
from sev_hardware_setup(), when this isn't really an error condition.

Since sev_platform_status() doesn't need to be called at this time anyway,
remove the invocation from sev_hardware_setup().

Signed-off-by: Tom Lendacky 
---
  arch/x86/kvm/svm/sev.c | 22 +-
  1 file changed, 1 insertion(+), 21 deletions(-)

diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index c0b14106258a..a4ba5476bf42 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -1127,9 +1127,6 @@ void sev_vm_destroy(struct kvm *kvm)
  
  int __init sev_hardware_setup(void)

  {
-   struct sev_user_data_status *status;
-   int rc;
-
/* Maximum number of encrypted guests supported simultaneously */
max_sev_asid = cpuid_ecx(0x801F);
  
@@ -1148,26 +1145,9 @@ int __init sev_hardware_setup(void)

if (!sev_reclaim_asid_bitmap)
return 1;
  
-	status = kmalloc(sizeof(*status), GFP_KERNEL);

-   if (!status)
-   return 1;
-
-   /*
-* Check SEV platform status.
-*
-* PLATFORM_STATUS can be called in any state, if we failed to query
-* the PLATFORM status then either PSP firmware does not support SEV
-* feature or SEV firmware is dead.
-*/
-   rc = sev_platform_status(status, NULL);
-   if (rc)
-   goto err;
-
pr_info("SEV supported\n");
  
-err:

-   kfree(status);
-   return rc;
+   return 0;
  }
  
  void sev_hardware_teardown(void)




Queued with Cc: stable.

Note that sev_platform_status now can become static within 
drivers/crypto/ccp/sev-dev.c.


Paolo


[PATCH v5 02/34] KVM: SVM: Remove the call to sev_platform_status() during setup

2020-12-10 Thread Tom Lendacky
From: Tom Lendacky 

When both KVM support and the CCP driver are built into the kernel instead
of as modules, KVM initialization can happen before CCP initialization. As
a result, sev_platform_status() will return a failure when it is called
from sev_hardware_setup(), when this isn't really an error condition.

Since sev_platform_status() doesn't need to be called at this time anyway,
remove the invocation from sev_hardware_setup().

Signed-off-by: Tom Lendacky 
---
 arch/x86/kvm/svm/sev.c | 22 +-
 1 file changed, 1 insertion(+), 21 deletions(-)

diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index c0b14106258a..a4ba5476bf42 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -1127,9 +1127,6 @@ void sev_vm_destroy(struct kvm *kvm)
 
 int __init sev_hardware_setup(void)
 {
-   struct sev_user_data_status *status;
-   int rc;
-
/* Maximum number of encrypted guests supported simultaneously */
max_sev_asid = cpuid_ecx(0x801F);
 
@@ -1148,26 +1145,9 @@ int __init sev_hardware_setup(void)
if (!sev_reclaim_asid_bitmap)
return 1;
 
-   status = kmalloc(sizeof(*status), GFP_KERNEL);
-   if (!status)
-   return 1;
-
-   /*
-* Check SEV platform status.
-*
-* PLATFORM_STATUS can be called in any state, if we failed to query
-* the PLATFORM status then either PSP firmware does not support SEV
-* feature or SEV firmware is dead.
-*/
-   rc = sev_platform_status(status, NULL);
-   if (rc)
-   goto err;
-
pr_info("SEV supported\n");
 
-err:
-   kfree(status);
-   return rc;
+   return 0;
 }
 
 void sev_hardware_teardown(void)
-- 
2.28.0



[PATCH v5 02/34] KVM: SVM: Remove the call to sev_platform_status() during setup

2020-12-10 Thread Tom Lendacky
From: Tom Lendacky 

When both KVM support and the CCP driver are built into the kernel instead
of as modules, KVM initialization can happen before CCP initialization. As
a result, sev_platform_status() will return a failure when it is called
from sev_hardware_setup(), when this isn't really an error condition.

Since sev_platform_status() doesn't need to be called at this time anyway,
remove the invocation from sev_hardware_setup().

Signed-off-by: Tom Lendacky 
---
 arch/x86/kvm/svm/sev.c | 22 +-
 1 file changed, 1 insertion(+), 21 deletions(-)

diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index c0b14106258a..a4ba5476bf42 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -1127,9 +1127,6 @@ void sev_vm_destroy(struct kvm *kvm)
 
 int __init sev_hardware_setup(void)
 {
-   struct sev_user_data_status *status;
-   int rc;
-
/* Maximum number of encrypted guests supported simultaneously */
max_sev_asid = cpuid_ecx(0x801F);
 
@@ -1148,26 +1145,9 @@ int __init sev_hardware_setup(void)
if (!sev_reclaim_asid_bitmap)
return 1;
 
-   status = kmalloc(sizeof(*status), GFP_KERNEL);
-   if (!status)
-   return 1;
-
-   /*
-* Check SEV platform status.
-*
-* PLATFORM_STATUS can be called in any state, if we failed to query
-* the PLATFORM status then either PSP firmware does not support SEV
-* feature or SEV firmware is dead.
-*/
-   rc = sev_platform_status(status, NULL);
-   if (rc)
-   goto err;
-
pr_info("SEV supported\n");
 
-err:
-   kfree(status);
-   return rc;
+   return 0;
 }
 
 void sev_hardware_teardown(void)
-- 
2.28.0