aboutsummaryrefslogtreecommitdiffstats
path: root/extras/mini-os/arch
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-05-27 13:03:05 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-05-27 13:03:05 +0100
commit28d2d07fde59dae1167c11e1391135369cc17787 (patch)
tree102568e5e81ae0cf21eafc06169f43ff945fb8e1 /extras/mini-os/arch
parent530f24f8b14918387a19ae4a7015734a3c18e4d6 (diff)
downloadxen-28d2d07fde59dae1167c11e1391135369cc17787.tar.gz
xen-28d2d07fde59dae1167c11e1391135369cc17787.tar.bz2
xen-28d2d07fde59dae1167c11e1391135369cc17787.zip
minios: We do not need to pin the page tables, as they implicitly get
pinned when we point the permanent page directory to them. Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras/mini-os/arch')
-rw-r--r--extras/mini-os/arch/x86/mm.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/extras/mini-os/arch/x86/mm.c b/extras/mini-os/arch/x86/mm.c
index 1ef083aca8..50fcc11688 100644
--- a/extras/mini-os/arch/x86/mm.c
+++ b/extras/mini-os/arch/x86/mm.c
@@ -59,11 +59,10 @@ void new_pt_frame(unsigned long *pt_pfn, unsigned long prev_l_mfn,
{
pgentry_t *tab = (pgentry_t *)start_info.pt_base;
unsigned long pt_page = (unsigned long)pfn_to_virt(*pt_pfn);
- unsigned long prot_e, prot_t, pincmd;
+ unsigned long prot_e, prot_t;
mmu_update_t mmu_updates[1];
- struct mmuext_op pin_request;
- prot_e = prot_t = pincmd = 0;
+ prot_e = prot_t = 0;
DEBUG("Allocating new L%d pt frame for pt_pfn=%lx, "
"prev_l_mfn=%lx, offset=%lx",
level, *pt_pfn, prev_l_mfn, offset);
@@ -77,18 +76,15 @@ void new_pt_frame(unsigned long *pt_pfn, unsigned long prev_l_mfn,
case L1_FRAME:
prot_e = L1_PROT;
prot_t = L2_PROT;
- pincmd = MMUEXT_PIN_L1_TABLE;
break;
case L2_FRAME:
prot_e = L2_PROT;
prot_t = L3_PROT;
- pincmd = MMUEXT_PIN_L2_TABLE;
break;
#if defined(__x86_64__)
case L3_FRAME:
prot_e = L3_PROT;
prot_t = L4_PROT;
- pincmd = MMUEXT_PIN_L3_TABLE;
break;
#endif
default:
@@ -113,15 +109,6 @@ void new_pt_frame(unsigned long *pt_pfn, unsigned long prev_l_mfn,
do_exit();
}
- /* Pin the page to provide correct protection */
- pin_request.cmd = pincmd;
- pin_request.arg1.mfn = pfn_to_mfn(*pt_pfn);
- if(HYPERVISOR_mmuext_op(&pin_request, 1, NULL, DOMID_SELF) < 0)
- {
- printk("ERROR: pinning failed\n");
- do_exit();
- }
-
/* Now fill the new page table page with entries.
Update the page directory as well. */
mmu_updates[0].ptr = ((pgentry_t)prev_l_mfn << PAGE_SHIFT) + sizeof(pgentry_t) * offset;