On Tue, Feb 15, 2022 at 01:54:48PM +0100, Borislav Petkov wrote: > On Tue, Feb 15, 2022 at 03:43:31PM +0300, Kirill A. Shutemov wrote: > > I don't think it works. TDX and SME/SEV has opposite polarity of the mask. > > SME/SEV has to clear the mask to share the page. TDX has to set it. > > > > Making a single global mask only increases confusion. > > Didn't you read the rest of the thread with Tom's suggestion? I think > there's a merit in having a cc_vendor or so which explicitly states what > type of HV the kernel runs on... I have no problem with cc_vendor idea. It looks good. Regarding the masks, if we want to have common ground here we can add two mask: cc_enc_mask and cc_dec_mask. And then pgprotval_t cc_enc(pgprotval_t protval) { protval |= cc_enc_mask; protval &= ~cc_dec_mask; return protval; } pgprotval_t cc_dec(pgprotval_t protval) { protval |= cc_dec_mask; protval &= ~cc_enc_mask; return protval; } It assumes (cc_enc_mask & cc_dec_mask) == 0. Any opinions? -- Kirill A. Shutemov