diff options
author | kaf24@camelot.eng.3leafnetworks.com <kaf24@camelot.eng.3leafnetworks.com> | 2004-09-04 18:32:45 +0000 |
---|---|---|
committer | kaf24@camelot.eng.3leafnetworks.com <kaf24@camelot.eng.3leafnetworks.com> | 2004-09-04 18:32:45 +0000 |
commit | a5ab702e1c8f3003122196080ececfe39ace15a1 (patch) | |
tree | e4c706ca97af3fc746355e7fb65275e206a7e978 /linux-2.6.8.1-xen-sparse/arch | |
parent | e6863321667c6344fc3203e18b9ceef251645cb0 (diff) | |
download | xen-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.c | 50 |
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; |