mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
bitkeeper revision 1.1202 (421094f3xaph8Fy7S7CActoJAtqz7g)
Merge maf46@ssh-relay1.cl.cam.ac.uk:/usr/groups/xeno/BK/xen-unstable.bk into fleming.research:/scratch/fleming/mafetter/xen.work Signed-off-by: michael.fetterman@cl.cam.ac.uk
This commit is contained in:
commit
f40526dfbc
2 files changed
+13
-13
No files matched your search
+10
-10
@@ -534,8 +534,8 @@ static void shadow_map_l1_into_current_l2(unsigned long va)
|
||||
{
|
||||
struct exec_domain *ed = current;
|
||||
struct domain *d = ed->domain;
|
||||
unsigned long *gpl1e, *spl1e, gl2e, sl2e, gl1pfn, sl1pfn=0, sl1ss;
|
||||
struct pfn_info *sl1pfn_info;
|
||||
unsigned long *gpl1e, *spl1e, gl2e, sl2e, gl1pfn, sl1mfn, sl1ss;
|
||||
struct pfn_info *sl1mfn_info;
|
||||
int i;
|
||||
|
||||
__guest_get_l2e(ed, va, &gl2e);
|
||||
@@ -548,17 +548,17 @@ static void shadow_map_l1_into_current_l2(unsigned long va)
|
||||
/* This L1 is NOT already shadowed so we need to shadow it. */
|
||||
SH_VVLOG("4a: l1 not shadowed ( %p )", sl1pfn);
|
||||
|
||||
sl1pfn_info = alloc_shadow_page(d);
|
||||
sl1pfn_info->u.inuse.type_info = PGT_l1_page_table;
|
||||
sl1mfn_info = alloc_shadow_page(d);
|
||||
sl1mfn_info->u.inuse.type_info = PGT_l1_page_table;
|
||||
|
||||
sl1pfn = sl1pfn_info - frame_table;
|
||||
sl1mfn = sl1mfn_info - frame_table;
|
||||
|
||||
perfc_incrc(shadow_l1_table_count);
|
||||
perfc_incr(shadow_l1_pages);
|
||||
|
||||
set_shadow_status(d, gl1pfn, PSH_shadowed | sl1pfn);
|
||||
set_shadow_status(d, gl1pfn, PSH_shadowed | sl1mfn);
|
||||
|
||||
l2pde_general(d, &gl2e, &sl2e, sl1pfn);
|
||||
l2pde_general(d, &gl2e, &sl2e, sl1mfn);
|
||||
|
||||
__guest_set_l2e(ed, va, gl2e);
|
||||
__shadow_set_l2e(ed, va, sl2e);
|
||||
@@ -575,10 +575,10 @@ static void shadow_map_l1_into_current_l2(unsigned long va)
|
||||
else
|
||||
{
|
||||
/* This L1 is shadowed already, but the L2 entry is missing. */
|
||||
SH_VVLOG("4b: was shadowed, l2 missing ( %p )", sl1pfn);
|
||||
SH_VVLOG("4b: was shadowed, l2 missing ( %p )", sl1ss);
|
||||
|
||||
sl1pfn = sl1ss & PSH_pfn_mask;
|
||||
l2pde_general(d, &gl2e, &sl2e, sl1pfn);
|
||||
sl1mfn = sl1ss & PSH_pfn_mask;
|
||||
l2pde_general(d, &gl2e, &sl2e, sl1mfn);
|
||||
__guest_set_l2e(ed, va, gl2e);
|
||||
__shadow_set_l2e(ed, va, sl2e);
|
||||
}
|
||||
|
||||
@@ -286,7 +286,7 @@ asmlinkage int do_page_fault(struct xen_regs *regs)
|
||||
((regs->error_code & 3) == 3) && /* write-protection fault */
|
||||
ptwr_do_page_fault(addr) )
|
||||
{
|
||||
if ( unlikely(d->arch.shadow_mode) )
|
||||
if ( unlikely(shadow_mode(d)) )
|
||||
(void)shadow_fault(addr, regs->error_code);
|
||||
UNLOCK_BIGLOCK(d);
|
||||
return EXCRET_fault_fixed;
|
||||
@@ -294,7 +294,7 @@ asmlinkage int do_page_fault(struct xen_regs *regs)
|
||||
UNLOCK_BIGLOCK(d);
|
||||
}
|
||||
|
||||
if ( unlikely(d->arch.shadow_mode) &&
|
||||
if ( unlikely(shadow_mode(d)) &&
|
||||
(addr < PAGE_OFFSET) && shadow_fault(addr, regs->error_code) )
|
||||
return EXCRET_fault_fixed;
|
||||
|
||||
@@ -330,7 +330,7 @@ asmlinkage int do_page_fault(struct xen_regs *regs)
|
||||
if ( likely((fixup = search_exception_table(regs->eip)) != 0) )
|
||||
{
|
||||
perfc_incrc(copy_user_faults);
|
||||
if ( !d->arch.shadow_mode )
|
||||
if ( !shadow_mode(d) )
|
||||
DPRINTK("Page fault: %p -> %p\n", regs->eip, fixup);
|
||||
regs->eip = fixup;
|
||||
return 0;
|
||||
|
||||