On Thu, Nov 09, 2023 at 07:41:33PM +0100, Jeremi Piotrowski wrote: > tdx_early_init() changes kernel behavior with the assumption that it > can talk directly to the TD module or change page visibility in > a certain way, instead of talking to a paravisor. So that CPUID is > hidden to prevent this. Otherwise tdx_early_init() would need to be > modified to check "am I running with TD partitioning and if so > - switch to other implementations". Here we go with the virt zoo again. If you hide TDX_CPUID_LEAF_ID from it, then it of course doesn't know that it is a TDX guest. This is the same thing as the SNP vTom thing: the only viable way going forward is for the guest kernel to detect correctly what it runs on and act accordingly. You can't just do some semi-correct tests for vendor - correct only if you squint hard enough - and hope that it works because it'll break apart eventually, when that second-level TDX fun needs to add more hackery to the guest kernel. So, instead, think about how the paravisor tells the guest it is running on one - a special CPUID leaf or an MSR in the AMD case - and use that to detect it properly. Everything else is a mess waiting to happen. Thx. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette