/xen/tools/xenpaging/ |
A D | xenpaging.c | 442 paging->bitmap = bitmap_alloc(paging->max_pages); in xenpaging_init() 451 paging->slot_to_gfn = calloc(paging->max_pages, sizeof(*paging->slot_to_gfn)); in xenpaging_init() 452 paging->gfn_to_slot = calloc(paging->max_pages, sizeof(*paging->gfn_to_slot)); in xenpaging_init() 453 if ( !paging->slot_to_gfn || !paging->gfn_to_slot ) in xenpaging_init() 457 paging->free_slot_stack = calloc(paging->max_pages, sizeof(*paging->free_slot_stack)); in xenpaging_init() 487 if ( paging ) in xenpaging_init() 681 if (paging->num_paged_out > paging->policy_mru_size) in xenpaging_resume_page() 703 ret = read_page(paging->fd, paging->paging_buffer, i); in xenpaging_populate_page() 822 slot = paging->free_slot_stack[--paging->stack_count]; in evict_pages() 999 resume_pages(paging, paging->num_paged_out); in main() [all …]
|
A D | policy_default.c | 39 int policy_init(struct xenpaging *paging) in policy_init() argument 44 max_pages = paging->max_pages; in policy_init() 56 if ( paging->policy_mru_size > 0 ) in policy_init() 57 mru_size = paging->policy_mru_size; in policy_init() 59 mru_size = paging->policy_mru_size = DEFAULT_MRU_SIZE; in policy_init() 79 unsigned long policy_choose_victim(struct xenpaging *paging) in policy_choose_victim() argument 81 xc_interface *xch = paging->xc_handle; in policy_choose_victim() 121 paging->use_poll_timeout = 1; in policy_choose_victim()
|
A D | pagein.c | 63 void create_page_in_thread(struct xenpaging *paging) in create_page_in_thread() argument 65 page_in_args.dom = paging->vm_event.domain_id; in create_page_in_thread() 66 page_in_args.pagein_queue = paging->pagein_queue; in create_page_in_thread() 67 page_in_args.xch = paging->xc_handle; in create_page_in_thread()
|
A D | policy.h | 30 int policy_init(struct xenpaging *paging); 31 unsigned long policy_choose_victim(struct xenpaging *paging);
|
A D | xenpaging.h | 70 extern void create_page_in_thread(struct xenpaging *paging);
|
/xen/xen/arch/x86/mm/ |
A D | paging.c | 58 page = d->arch.paging.alloc_page(d); in paging_new_log_dirty_page() 65 d->arch.paging.log_dirty.allocs++; in paging_new_log_dirty_page() 106 d->arch.paging.log_dirty.allocs--; in paging_free_log_dirty_page() 123 if ( !d->arch.paging.preempt.dom ) in paging_free_log_dirty_bitmap() 199 d->arch.paging.preempt.dom = NULL; in paging_free_log_dirty_bitmap() 370 mfn = d->arch.paging.log_dirty.top; in paging_mfn_is_dirty() 433 if ( !d->arch.paging.preempt.dom ) in paging_log_dirty_op() 573 d->arch.paging.preempt.dom = NULL; in paging_log_dirty_op() 628 d->arch.paging.log_dirty.ops = ops; in paging_log_dirty_init() 642 mm_lock_init(&d->arch.paging.lock); in paging_domain_init() [all …]
|
A D | mm-locks.h | 389 declare_mm_lock(paging) 390 #define paging_lock(d) mm_lock(paging, d, &(d)->arch.paging.lock) 392 mm_lock_recursive(paging, d, &(d)->arch.paging.lock) 393 #define paging_unlock(d) mm_unlock(&(d)->arch.paging.lock) 394 #define paging_locked_by_me(d) mm_locked_by_me(&(d)->arch.paging.lock)
|
A D | Makefile | 12 obj-y += paging.o
|
A D | p2m.c | 662 ASSERT(p2m->domain->arch.paging.alloc_page); in p2m_alloc_ptp() 663 pg = p2m->domain->arch.paging.alloc_page(p2m->domain); in p2m_alloc_ptp() 681 ASSERT(p2m->domain->arch.paging.free_page); in p2m_free_ptp() 684 p2m->domain->arch.paging.free_page(p2m->domain, pg); in p2m_free_ptp() 757 d->arch.paging.free_page(d, pg); in p2m_teardown() 1565 d->arch.paging.free_page(d, pg); in p2m_flush_table_locked()
|
/xen/xen/arch/x86/mm/shadow/ |
A D | common.c | 64 d->arch.paging.shadow.oos_active = 0; in shadow_domain_init() 93 v->arch.paging.mode = is_pv_vcpu(v) ? in shadow_vcpu_init() 220 oos = v->arch.paging.shadow.oos; in oos_audit_hash_is_present() 2419 if ( v->arch.paging.mode ) in sh_update_paging_modes() 2448 v->arch.paging.mode = in sh_update_paging_modes() 2454 v->arch.paging.mode = in sh_update_paging_modes() 2460 v->arch.paging.mode = in sh_update_paging_modes() 2579 d->arch.paging.mode = new_mode; in sh_new_mode() 2739 if ( v->arch.paging.vtlb ) in shadow_teardown() 2882 if ( d->arch.paging.mode == 0 ) in shadow_one_bit_enable() [all …]
|
A D | private.h | 579 pin_list = &d->arch.paging.shadow.pinned_shadows; in prev_pinned_shadow() 626 pin_list = &d->arch.paging.shadow.pinned_shadows; in sh_pin() 679 pin_list = &d->arch.paging.shadow.pinned_shadows; in sh_unpin() 764 spin_lock(&v->arch.paging.vtlb_lock); in vtlb_flush() 766 spin_unlock(&v->arch.paging.vtlb_lock); in vtlb_flush() 780 spin_lock(&v->arch.paging.vtlb_lock); in vtlb_insert() 781 v->arch.paging.vtlb[vtlb_hash(page)] = entry; in vtlb_insert() 782 spin_unlock(&v->arch.paging.vtlb_lock); in vtlb_insert() 793 spin_lock(&v->arch.paging.vtlb_lock); in vtlb_lookup() 794 if ( v->arch.paging.vtlb[i].pfec != 0 in vtlb_lookup() [all …]
|
A D | hvm.c | 230 v->arch.paging.mode->shadow.trace_emul_write_val(ptr, addr, in hvm_emulate_write() 444 v->arch.paging.last_write_was_pt = !!sh_mfn_is_a_page_table(mfn); in emulate_gva_to_mfn() 565 if ( ( v->arch.paging.shadow.pagetable_dying in check_for_early_unshadow() 566 || ( !d->arch.paging.shadow.pagetable_dying_op in check_for_early_unshadow() 567 && v->arch.paging.shadow.last_emulated_mfn_for_unshadow == mfn_x(gmfn) ) ) in check_for_early_unshadow() 569 && (!d->arch.paging.shadow.pagetable_dying_op || in check_for_early_unshadow() 577 v->arch.paging.shadow.last_emulated_mfn_for_unshadow = mfn_x(gmfn); in check_for_early_unshadow() 691 atomic_inc(&v->domain->arch.paging.shadow.gtable_dirty_version); in sh_emulate_unmap_dest()
|
A D | multi.c | 2811 if ( v->arch.paging.last_write_emul_ok in sh_page_fault() 3233 d->arch.paging.log_dirty.fault_count++; in sh_page_fault() 3424 v->arch.paging.last_write_emul_ok = 0; in sh_page_fault() 3536 v->arch.paging.last_write_emul_ok = 0; in sh_invlpg() 3779 sl3e = v->arch.paging.shadow.l3table; in sh_update_linear_entries() 3948 ASSERT(v->arch.paging.mode); in sh_update_cr3() 3993 v->arch.paging.shadow.gl3e[i] = gl3e[i]; in sh_update_cr3() 4138 v->arch.paging.last_write_emul_ok = 0; in sh_update_cr3() 4174 curr->arch.paging.shadow.pagetable_dying in sh_rm_write_access_from_sl1p() 4510 v->arch.paging.shadow.pagetable_dying = 1; in sh_pagetable_dying() [all …]
|
A D | none.c | 83 v->arch.paging.mode = &sh_paging_none; in shadow_vcpu_init()
|
/xen/xen/arch/x86/mm/hap/ |
A D | hap.c | 195 d->arch.paging.mode |= PG_log_dirty; in hap_enable_log_dirty() 216 d->arch.paging.mode &= ~PG_log_dirty; in hap_disable_log_dirty() 253 d->arch.paging.hap.free_pages--; in hap_alloc() 266 d->arch.paging.hap.free_pages++; in hap_free() 281 d->arch.paging.hap.total_pages--; in hap_alloc_p2m_page() 282 d->arch.paging.hap.p2m_pages++; in hap_alloc_p2m_page() 316 d->arch.paging.hap.p2m_pages--; in hap_free_p2m_page() 317 d->arch.paging.hap.total_pages++; in hap_free_p2m_page() 327 + d->arch.paging.hap.p2m_pages; in hap_get_allocation() 451 if ( d->arch.paging.mode != 0 ) in hap_enable() [all …]
|
/xen/xen/include/asm-x86/ |
A D | paging.h | 76 #define paging_mode_enabled(_d) (!!(_d)->arch.paging.mode) 77 #define paging_mode_shadow(_d) (!!((_d)->arch.paging.mode & PG_SH_enable)) 78 #define paging_mode_sh_forced(_d) (!!((_d)->arch.paging.mode & PG_SH_forced)) 79 #define paging_mode_hap(_d) (!!((_d)->arch.paging.mode & PG_HAP_enable)) 81 #define paging_mode_refcounts(_d) (!!((_d)->arch.paging.mode & PG_refcounts)) 82 #define paging_mode_log_dirty(_d) (!!((_d)->arch.paging.mode & PG_log_dirty)) 83 #define paging_mode_translate(_d) (!!((_d)->arch.paging.mode & PG_translate)) 84 #define paging_mode_external(_d) (!!((_d)->arch.paging.mode & PG_external)) 236 #define paging_get_hostmode(v) ((v)->arch.paging.mode) 237 #define paging_get_nestedmode(v) ((v)->arch.paging.nestedmode)
|
A D | shadow.h | 187 struct tasklet *t = &d->arch.paging.shadow.pv_l1tf_tasklet; in pv_l1tf_check_pte() 242 tasklet_init(&d->arch.paging.shadow.pv_l1tf_tasklet, pv_l1tf_tasklet, d); in pv_l1tf_domain_init() 249 tasklet_kill(&d->arch.paging.shadow.pv_l1tf_tasklet); in pv_l1tf_domain_destroy()
|
A D | domain.h | 316 struct paging_domain paging; member 633 struct paging_vcpu paging; member
|
/xen/xen/arch/x86/ |
A D | Kconfig | 123 Shadow paging is a software alternative to hardware paging support 127 * Running HVM guests on hardware lacking hardware paging support 132 Under a small number of specific workloads, shadow paging may be
|
A D | domain.c | 2093 PROGRESS(paging): in domain_relinquish_resources()
|
/xen/docs/misc/ |
A D | xenpaging.txt | 19 paging-aware backend drivers to handle paged granttable entries.
|
A D | xen-command-line.pandoc | 721 paging. This option is unavailable when `CONFIG_SHADOW_PAGING` is 725 shadow paging otherwise. A PVH dom0 cannot be used if Xen is compiled 726 without shadow paging support, and the hardware lacks HAP support. 729 guests do no require any paging support by default. 1146 virtualised case using shadow paging. These are not easy for Xen to spot, so 1689 paging controls access to usermode addresses.
|
/xen/xen/arch/x86/boot/ |
A D | wakeup.S | 91 # Now in protect mode, with paging disabled
|
/xen/xen/arch/x86/pv/ |
A D | dom0_build.c | 706 d->arch.paging.mode = 0; in dom0_construct_pv() 913 tasklet_schedule(&d->arch.paging.shadow.pv_l1tf_tasklet); in dom0_construct_pv()
|
/xen/xen/arch/x86/hvm/vmx/ |
A D | vmcs.c | 1608 v->arch.hvm.vmx.pml_pg = v->domain->arch.paging.alloc_page(v->domain); in vmx_vcpu_enable_pml() 1643 v->domain->arch.paging.free_page(v->domain, v->arch.hvm.vmx.pml_pg); in vmx_vcpu_disable_pml()
|