Re: [PATCH 19/26] x86/tdx: Make pages shared in ioremap()

From: Dave Hansen
Date: Mon Jan 03 2022 - 11:50:18 EST


On 1/3/22 7:15 AM, Kirill A. Shutemov wrote:
> On Mon, Jan 03, 2022 at 03:29:44PM +0100, Borislav Petkov wrote:
>> On Mon, Jan 03, 2022 at 05:17:05PM +0300, Kirill A. Shutemov wrote:
>>> I'm not sure how to unwind this dependency hell. Any clues?
>> Forward-declaration maybe?
>>
>> I.e., something like
>>
>> struct task_struct;
>>
>> at the top of arch/x86/include/asm/switch_to.h, for example...
> Forward-declaration only works if you refer the struct/union by pointer,
> not value.
>
> And pgprot_t is not always a struct and when it is a struct it is
> anonymous.
>
> See "git grep 'typedef.*pgprot_t;'".

In the end, the new functions get used like this:

prot = pgprot_decrypted(prot);

I think they _could_ be:

pgprot_set_decrypted(&prot);

Which would let you have a declaration like this:

extern void pgprot_cc_set_decrypted(pgprot_t *prot);

It does not exactly give me warm and fuzzy feelings, but it would work
around the header problem.