{
unsigned long sval;
- l1pte_no_fault( ¤t->mm, &val, &sval );
+ l1pte_no_fault( ¤t->mm, &val, &sval );
- if ( unlikely(__put_user( sval, ((unsigned long *) (&shadow_linear_pg_table[page_nr])) ) ) )
- {
- // Since L2's are guranteed RW, failure indicates the page
- // was not shadowed, so ignore.
+ if ( unlikely(__put_user(sval, ((unsigned long *)(
+ &shadow_linear_pg_table[page_nr])))) )
+ {
+ /*
+ * Since L2's are guranteed RW, failure indicates the page was not
+ * shadowed, so ignore.
+ */
perfc_incrc(shadow_update_va_fail);
- //MEM_LOG("update_va_map: couldn't write update\n");
- }
+ }
- check_pagetable(p, p->mm.pagetable, "va"); /* debug */
- check_pagetable( p, p->mm.pagetable, "va" ); // debug
+
+ /* if we're in logdirty mode, we need to note that we've updated the
+ PTE in the PT-holding page. This is a bit of a pain as we don't
+ know the physcial (machine) frame number of the page */
+ if ( p->mm.shadow_mode == SHM_logdirty )
- mark_dirty( ¤t->mm, va_to_l1mfn(page_nr<<PAGE_SHIFT) );
++ mark_dirty( ¤t->mm, va_to_l1mfn(page_nr<<PAGE_SHIFT) );
++
++ check_pagetable( p, p->mm.pagetable, "va" ); // debug
}
-
deferred_ops = percpu_info[cpu].deferred_ops;
percpu_info[cpu].deferred_ops = 0;