aboutsummaryrefslogtreecommitdiffstats
path: root/linux-2.6.8.1-xen-sparse/arch
diff options
context:
space:
mode:
authorkaf24@camelot.eng.3leafnetworks.com <kaf24@camelot.eng.3leafnetworks.com>2004-09-04 18:32:45 +0000
committerkaf24@camelot.eng.3leafnetworks.com <kaf24@camelot.eng.3leafnetworks.com>2004-09-04 18:32:45 +0000
commita5ab702e1c8f3003122196080ececfe39ace15a1 (patch)
treee4c706ca97af3fc746355e7fb65275e206a7e978 /linux-2.6.8.1-xen-sparse/arch
parente6863321667c6344fc3203e18b9ceef251645cb0 (diff)
downloadxen-a5ab702e1c8f3003122196080ececfe39ace15a1.tar.gz
xen-a5ab702e1c8f3003122196080ececfe39ace15a1.tar.bz2
xen-a5ab702e1c8f3003122196080ececfe39ace15a1.zip
bitkeeper revision 1.1159.69.9 (413a0a4d7ODoJ_4kti38jM2_4EooQA)
Cset exclude: kaf24@camelot.eng.3leafnetworks.com|ChangeSet|20040903222602|39015
Diffstat (limited to 'linux-2.6.8.1-xen-sparse/arch')
-rw-r--r--linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c50
1 files changed, 48 insertions, 2 deletions
diff --git a/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c
index 03158c3ee4..a57eabcd8c 100644
--- a/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c
+++ b/linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/hypervisor.c
@@ -85,6 +85,8 @@ static void DEBUG_disallow_pt_read(unsigned long va)
#undef queue_invlpg
#undef queue_pgd_pin
#undef queue_pgd_unpin
+#undef queue_pte_pin
+#undef queue_pte_unpin
#undef queue_set_ldt
#endif
@@ -217,7 +219,7 @@ void queue_pgd_pin(unsigned long ptr)
spin_lock_irqsave(&update_lock, flags);
update_queue[idx].ptr = phys_to_machine(ptr);
update_queue[idx].ptr |= MMU_EXTENDED_COMMAND;
- update_queue[idx].val = MMUEXT_PIN_TABLE;
+ update_queue[idx].val = MMUEXT_PIN_L2_TABLE;
increment_index();
spin_unlock_irqrestore(&update_lock, flags);
}
@@ -233,6 +235,28 @@ void queue_pgd_unpin(unsigned long ptr)
spin_unlock_irqrestore(&update_lock, flags);
}
+void queue_pte_pin(unsigned long ptr)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&update_lock, flags);
+ update_queue[idx].ptr = phys_to_machine(ptr);
+ update_queue[idx].ptr |= MMU_EXTENDED_COMMAND;
+ update_queue[idx].val = MMUEXT_PIN_L1_TABLE;
+ increment_index();
+ spin_unlock_irqrestore(&update_lock, flags);
+}
+
+void queue_pte_unpin(unsigned long ptr)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&update_lock, flags);
+ update_queue[idx].ptr = phys_to_machine(ptr);
+ update_queue[idx].ptr |= MMU_EXTENDED_COMMAND;
+ update_queue[idx].val = MMUEXT_UNPIN_TABLE;
+ increment_index();
+ spin_unlock_irqrestore(&update_lock, flags);
+}
+
void queue_set_ldt(unsigned long ptr, unsigned long len)
{
unsigned long flags;
@@ -315,7 +339,7 @@ void xen_pgd_pin(unsigned long ptr)
spin_lock_irqsave(&update_lock, flags);
update_queue[idx].ptr = phys_to_machine(ptr);
update_queue[idx].ptr |= MMU_EXTENDED_COMMAND;
- update_queue[idx].val = MMUEXT_PIN_TABLE;
+ update_queue[idx].val = MMUEXT_PIN_L2_TABLE;
increment_index_and_flush();
spin_unlock_irqrestore(&update_lock, flags);
}
@@ -331,6 +355,28 @@ void xen_pgd_unpin(unsigned long ptr)
spin_unlock_irqrestore(&update_lock, flags);
}
+void xen_pte_pin(unsigned long ptr)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&update_lock, flags);
+ update_queue[idx].ptr = phys_to_machine(ptr);
+ update_queue[idx].ptr |= MMU_EXTENDED_COMMAND;
+ update_queue[idx].val = MMUEXT_PIN_L1_TABLE;
+ increment_index_and_flush();
+ spin_unlock_irqrestore(&update_lock, flags);
+}
+
+void xen_pte_unpin(unsigned long ptr)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&update_lock, flags);
+ update_queue[idx].ptr = phys_to_machine(ptr);
+ update_queue[idx].ptr |= MMU_EXTENDED_COMMAND;
+ update_queue[idx].val = MMUEXT_UNPIN_TABLE;
+ increment_index_and_flush();
+ spin_unlock_irqrestore(&update_lock, flags);
+}
+
void xen_set_ldt(unsigned long ptr, unsigned long len)
{
unsigned long flags;