On Thu, 2023-03-02 at 14:41 +0800, Binbin Wu wrote: > __linearize is not the only path the modified LAM canonical check > needed, also some vmexits path should be taken care of, like VMX, > SGX > ENCLS. > SGX isn't in this version's implementation's scope, like nested LAM. > Also the instruction INVLPG, INVPCID should have some special > handling > since LAM is not applied to the memory operand of the two > instruction > according to the LAM spec. The spec's meaning on these 2 is: LAM masking doesn't apply to their operands (the address), so the behavior is like before LAM feature introduced. No change. > > > > +#ifdef CONFIG_X86_64 > > +/* > > + * LAM Canonical Rule: > > + * LAM_U/S48 -- bit 63 == bit 47 > > + * LAM_U/S57 -- bit 63 == bit 56 > > The modified LAM canonical check for LAM_U57 + 4-level paging is: > bit > 63, bit 56:47 should be all 0s. > Yes, this case was missed. Chao's suggestion on signed-extend + legacy canonical check can cover this.