On 9/3/24 09:19, Tony Lindgren wrote:
+ gpa_t gpa_bits = gfn_to_gpa(kvm_gfn_direct_bits(vcpu->kvm));
+ unsigned int g_maxpa = __ffs(gpa_bits) + 1;
+
+ output_e->eax &= ~0x00ff0000;
+ output_e->eax |= g_maxpa << 16;
Is it possible this workaround escapes the KVM supported bits check?
Yes it might need a mask for (g_maxpa << 16) & 0x00ff0000 to avoid setting
the wrong bits, will check.
The mask is okay, __ffs(gpa_bits) + 1 will be between 1 and 64.
The question is whether the TDX module will accept nonzero bits 16..23
of CPUID[0x80000008].EAX.
Paolo