Re: [PATCH v29 09/32] x86/mm: Introduce _PAGE_COW

From: Edgecombe, Rick P
Date: Sat Aug 21 2021 - 15:20:44 EST


+KVM list.

On Fri, 2021-08-20 at 11:11 -0700, Yu-cheng Yu wrote:
>
> static inline int pte_write(pte_t pte)
> {
> - return pte_flags(pte) & _PAGE_RW;
> + /*
> + * Shadow stack pages are always writable - but not by normal
> + * instructions, and only by shadow stack operations.
> Therefore,
> + * the W=0,D=1 test with pte_shstk().
> + */
> + return (pte_flags(pte) & _PAGE_RW) || pte_shstk(pte);
> }
>
KVM uses this in a couple places when checking EPT ptes. But bit 6
(dirty) is a totally different meaning in EPT. I think it's just used
to trigger an optimization, but wondering if KVM should have its own
TDP specific function instead of using pte_write().