# Re: \[PATCH v29 09/32\] x86/mm: Introduce \_PAGE\_COW

- From: Edgecombe, Rick P \<rick.p.edgecombe@intel.com\>
- Date: 2021-08-22 03:00:19 
- List: linux-mm
- Page: https://ratatoskr.run/linux-mm/2021/08/1484960
- Thread: https://ratatoskr.run/kvm/2021/08/1484910/t.md

```text
On Sat, 2021-08-21 at 19:20 +0000, Edgecombe, Rick P wrote:
> +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().
> 
Argh, never mind. I misread the new KVM mmu notifier refactor.

```
