On Wed, Aug 11, 2021 at 10:52:55AM -0500, Tom Lendacky wrote:...
On 8/11/21 7:19 AM, Kirill A. Shutemov wrote:
On Tue, Aug 10, 2021 at 02:48:54PM -0500, Tom Lendacky wrote:
On 8/10/21 1:45 PM, Kuppuswamy, Sathyanarayanan wrote:
Looking at code agains, now I *think* the reason is accessing a global
variable from __startup_64() inside TDX version of prot_guest_has().
__startup_64() is special. If you access any global variable you need to
use fixup_pointer(). See comment before __startup_64().
I'm not sure how you get away with accessing sme_me_mask directly from
there. Any clues? Maybe just a luck and complier generates code just right
for your case, I donno.
Hmm... yeah, could be that the compiler is using rip-relative addressing
for it because it lives in the .data section?
I guess. It has to be fixed. It may break with complier upgrade or any
random change around the code.
BTW, does it work with clang for you?