Skip to contentSkip to conversation

xen: mask unwanted pte bits in __supported_pte_mask

PATCH Applied Jeremy Fitzhardinge 1 participant 1 message Jun 16, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 xen: mask unwanted pte bits in __supported_pte_mask

Rather than ad-hoc masking unwanted bits when constructing a pte, just prevent them from ever being set by removing them from __supported_pte_mask.

[ Stable: this isn't a bugfix in itself, but it's a pre-requiste
for "xen: don't drop NX bit" ]

---

arch/x86/xen/enlighten.c |    5 +++++
arch/x86/xen/mmu.c       |    4 +---
2 files changed, 6 insertions(+), 3 deletions(-)

===================================================================

arch/x86/xen/enlighten.c +0 -0
@@ -1294,6 +1294,11 @@
	if (xen_feature(XENFEAT_supervisor_mode_kernel))
		pv_info.kernel_rpl = 0;

+ /* Prevent unwanted bits from being set in PTEs. */
+ __supported_pte_mask &= ~_PAGE_GLOBAL;
+ if (!is_initial_xendomain())
+ __supported_pte_mask &= ~(_PAGE_PWT | _PAGE_PCD);
+

	/* set the limit of our address space */
	xen_reserve_top();

===================================================================

arch/x86/xen/mmu.c +0 -0
@@ -375,10 +375,8 @@
 

pte_t xen_make_pte(pteval_t pte)
{
- if (pte & _PAGE_PRESENT) {
+ if (pte & _PAGE_PRESENT)

		pte = phys_to_machine(XPADDR(pte)).maddr;

- pte &= ~(_PAGE_PCD | _PAGE_PWT);
- }

	return (pte_t){ .pte = pte };
}