Re: [PATCH v10 03/11] x86/cpufeatures: Add TDX Guest CPU feature

From: Sathyanarayanan Kuppuswamy
Date: Thu Oct 14 2021 - 13:47:38 EST



On 10/13/21 4:02 PM, Thomas Gleixner wrote:
On Wed, Oct 13 2021 at 15:28, Sathyanarayanan Kuppuswamy wrote:
On 10/13/21 2:37 PM, Borislav Petkov wrote:
On Wed, Oct 13, 2021 at 11:25:35PM +0200, Thomas Gleixner wrote:
So this ends up in doing:

use();
init();

Can you spot what's wrong with that?

That's a clear violation of common sense and is simply not going to
happen. Why? If you think about deep defensive programming then use()
will look like this:

use()
{
assert(initialized);
}

which is not something made up. It's a fundamental principle of
programming and some languages enforce that for very good reasons.

Just because it can be done in C is no justification.
Oh, I heartily agree.
What's wrong with:

x86_64_start_kernel()

tdx_early_init();

copy_bootdata();
tdx_late_init();

Absolutely nothing. It's clear, simple and well defined.
I like simple more than anyone, so sure, I'd prefer that a lot more.

And so the options parsing would need to happen early using, say,
cmdline_find_option() or so, like sme_enable() does.
Since in tdx_early_init() all we are going to do is to initialize
"tdx_guest_detected" using cpuid call, shall we name it
tdx_guest_cpuid_init()? (similar to sme_enable call in AMD)
How is that similar?

Just chose a name which makes sense in the overall scheme. I surely care
about naming convetions, but what I care more about is correctness.

Whether it ends up being named

tdx_enable() - to match the SME muck

or

tdx_detect()

or whatever makes sense does not really matter. As long as it makes
sense. That's bikeshed painting realm.

Coming back to your suggestion 'tdx_guest_cpuid_init()'. Just sit back
and think about what that name says:

tdx_guest_cpuid_init()

For the uniformed reader this says:

If tdx guest then initialize CPUID

which is obviously not what you want to express, right?

So, naming matters but you are free to chose something which makes
sense.

Makes sense. I agree tdx_guest_cpuid_init() name is bit confusing.
I will use tdx_detect as you have mentioned.


Thanks,

tglx

--
Sathyanarayanan Kuppuswamy
Linux Kernel Developer