Folding _PAGE_PWT into _PAGE_PCD (was Re: unify pagetable accessors patch causes double fault II)

Jeremy Fitzhardinge
2008-01-15T17:17:17Z

Ingo Molnar wrote:
> -#define _PAGE_PRESENT (_AC(1, UL)<<_PAGE_BIT_PRESENT)
> -#define _PAGE_RW (_AC(1, UL)<<_PAGE_BIT_RW)
> -#define _PAGE_USER (_AC(1, UL)<<_PAGE_BIT_USER)
> -#define _PAGE_PWT (_AC(1, UL)<<_PAGE_BIT_PWT)
> -#define _PAGE_PCD ((_AC(1, UL)<<_PAGE_BIT_PCD) | _PAGE_PWT)
>

BTW, I just noticed that _PAGE_PWT has been folded into _PAGE_PCD. This
seems like a really bad idea to me, since it breaks the rule that
_PAGE_X == 1 << _PAGE_BIT_X. I can't think of a specific place where
this would cause problems, but this kind of non-uniformity always ends
up biting someone in the arse.

I think having a specific _PAGE_NOCACHE which combines these bits is a
better approach.

J