[v2,09/11] x86/kvmclock: Use Secure TSC as clock if available

Message ID 20230326144701.3039598-10-nikunj@amd.com
State New
Headers
Series Add Secure TSC support for SNP guests |

Commit Message

Nikunj A. Dadhania March 26, 2023, 2:46 p.m. UTC
  For AMD SNP guests having Secure TSC enabled, use Secure TSC based
clocksource instead of kvmclock.

Signed-off-by: Nikunj A Dadhania <nikunj@amd.com>
---
 arch/x86/kernel/kvmclock.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Tom Lendacky April 3, 2023, 9:45 p.m. UTC | #1
On 3/26/23 09:46, Nikunj A Dadhania wrote:
> For AMD SNP guests having Secure TSC enabled, use Secure TSC based
> clocksource instead of kvmclock.

This patch only results in skipping the initialization of KVM clock, it 
doesn't cause Secure TSC to be used as the clocksource.

Thanks,
Tom

> 
> Signed-off-by: Nikunj A Dadhania <nikunj@amd.com>
> ---
>   arch/x86/kernel/kvmclock.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
> index 0f35d44c56fe..1be342064851 100644
> --- a/arch/x86/kernel/kvmclock.c
> +++ b/arch/x86/kernel/kvmclock.c
> @@ -288,7 +288,7 @@ void __init kvmclock_init(void)
>   {
>   	u8 flags;
>   
> -	if (!kvm_para_available() || !kvmclock)
> +	if (!kvm_para_available() || !kvmclock || cc_platform_has(CC_ATTR_GUEST_SECURE_TSC))
>   		return;
>   
>   	if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE2)) {
  
Nikunj A. Dadhania April 5, 2023, 8:16 a.m. UTC | #2
On 4/4/2023 3:15 AM, Tom Lendacky wrote:
> On 3/26/23 09:46, Nikunj A Dadhania wrote:
>> For AMD SNP guests having Secure TSC enabled, use Secure TSC based
>> clocksource instead of kvmclock.
> 
> This patch only results in skipping the initialization of KVM clock, it doesn't cause Secure TSC to be used as the clocksource.
> 

Will update the commit message and reorder with 10/11. After making TSC reliable and skipping kvmclock, secure tsc is used as clocksource.

Regards
Nikunj
  

Patch

diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
index 0f35d44c56fe..1be342064851 100644
--- a/arch/x86/kernel/kvmclock.c
+++ b/arch/x86/kernel/kvmclock.c
@@ -288,7 +288,7 @@  void __init kvmclock_init(void)
 {
 	u8 flags;
 
-	if (!kvm_para_available() || !kvmclock)
+	if (!kvm_para_available() || !kvmclock || cc_platform_has(CC_ATTR_GUEST_SECURE_TSC))
 		return;
 
 	if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE2)) {