From: "Nikunj A. Dadhania" <nikunj@amd.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, bp@alien8.de, x86@kernel.org,
tglx@linutronix.de, mingo@redhat.com,
dave.hansen@linux.intel.com, thomas.lendacky@amd.com,
aik@amd.com, dionnaglaze@google.com, stable@vger.kernel.org
Subject: Re: [PATCH v2] x86/sev: Use TSC_FACTOR for Secure TSC frequency calculation
Date: Thu, 26 Jun 2025 15:31:42 +0530 [thread overview]
Message-ID: <f2292bcb-ccc5-4121-98ce-bf65c0590131@amd.com> (raw)
In-Reply-To: <aF0ESlmxi1uOHkrc@gmail.com>
On 6/26/2025 1:56 PM, Ingo Molnar wrote:
>
> * Nikunj A Dadhania <nikunj@amd.com> wrote:
>
>> diff --git a/arch/x86/include/asm/sev.h b/arch/x86/include/asm/sev.h
>> index fbb616fcbfb8..869355367210 100644
>> --- a/arch/x86/include/asm/sev.h
>> +++ b/arch/x86/include/asm/sev.h
>> @@ -223,6 +223,19 @@ struct snp_tsc_info_resp {
>> u8 rsvd2[100];
>> } __packed;
>>
>> +
>> +/*
>> + * Obtain the mean TSC frequency by decreasing the nominal TSC frequency with
>> + * TSC_FACTOR as documented in the SNP Firmware ABI specification:
>> + *
>> + * GUEST_TSC_FREQ * (1 - (TSC_FACTOR * 0.00001))
>> + *
>> + * which is equivalent to:
>> + *
>> + * GUEST_TSC_FREQ -= (GUEST_TSC_FREQ * TSC_FACTOR) / 100000;
>> + */
>> +#define SNP_SCALE_TSC_FREQ(freq, factor) ((freq) - ((freq) * (factor)) / 100000)
>
> Nit: there's really no need to use parentheses in this expression,
> 'x * y / z' is equivalent and fine.
It will give wrong scale if I call with freq as "tsc + 1000000"
without the parentheses?
SNP_SCALE_TSC_FREQ(tsc + 1000000, factor)
>> diff --git a/arch/x86/coco/sev/core.c b/arch/x86/coco/sev/core.c
>> index 8375ca7fbd8a..36f419ff25d4 100644
>> --- a/arch/x86/coco/sev/core.c
>> +++ b/arch/x86/coco/sev/core.c
>> @@ -2156,20 +2156,32 @@ void __init snp_secure_tsc_prepare(void)
>>
>> static unsigned long securetsc_get_tsc_khz(void)
>> {
>> - return snp_tsc_freq_khz;
>> + return (unsigned long)snp_tsc_freq_khz;
>
> This forced type cast is a signature of poor type choices. Please
> harmonize the types of snp_tsc_freq_khz and securetsc_get_tsc_khz() to
> avoid the type cast altogether.
Sure, I can attempt that and send an updated patch.
> Does this code even get built and run on 32-bit kernels?
This code should not build for 32-bit kernels.
Thanks
Nikunj
next prev parent reply other threads:[~2025-06-26 10:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-26 6:01 [PATCH v2] x86/sev: Use TSC_FACTOR for Secure TSC frequency calculation Nikunj A Dadhania
2025-06-26 8:26 ` Ingo Molnar
2025-06-26 10:01 ` Nikunj A. Dadhania [this message]
2025-06-26 13:41 ` Tom Lendacky
2025-06-27 3:44 ` Nikunj A. Dadhania
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=f2292bcb-ccc5-4121-98ce-bf65c0590131@amd.com \
--to=nikunj@amd.com \
--cc=aik@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=dionnaglaze@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.