/Linux-v5.4/drivers/gpu/drm/i915/gvt/ |
D | page_track.c | 35 struct intel_vgpu *vgpu, unsigned long gfn) in intel_vgpu_find_page_track() argument 37 return radix_tree_lookup(&vgpu->page_track_tree, gfn); in intel_vgpu_find_page_track() 50 int intel_vgpu_register_page_track(struct intel_vgpu *vgpu, unsigned long gfn, in intel_vgpu_register_page_track() argument 56 track = intel_vgpu_find_page_track(vgpu, gfn); in intel_vgpu_register_page_track() 67 ret = radix_tree_insert(&vgpu->page_track_tree, gfn, track); in intel_vgpu_register_page_track() 83 unsigned long gfn) in intel_vgpu_unregister_page_track() argument 87 track = radix_tree_delete(&vgpu->page_track_tree, gfn); in intel_vgpu_unregister_page_track() 90 intel_gvt_hypervisor_disable_page_track(vgpu, gfn); in intel_vgpu_unregister_page_track() 103 int intel_vgpu_enable_page_track(struct intel_vgpu *vgpu, unsigned long gfn) in intel_vgpu_enable_page_track() argument 108 track = intel_vgpu_find_page_track(vgpu, gfn); in intel_vgpu_enable_page_track() [all …]
|
D | mpt.h | 163 struct intel_vgpu *vgpu, unsigned long gfn) in intel_gvt_hypervisor_enable_page_track() argument 165 return intel_gvt_host.mpt->enable_page_track(vgpu->handle, gfn); in intel_gvt_hypervisor_enable_page_track() 177 struct intel_vgpu *vgpu, unsigned long gfn) in intel_gvt_hypervisor_disable_page_track() argument 179 return intel_gvt_host.mpt->disable_page_track(vgpu->handle, gfn); in intel_gvt_hypervisor_disable_page_track() 223 struct intel_vgpu *vgpu, unsigned long gfn) in intel_gvt_hypervisor_gfn_to_mfn() argument 225 return intel_gvt_host.mpt->gfn_to_mfn(vgpu->handle, gfn); in intel_gvt_hypervisor_gfn_to_mfn() 239 struct intel_vgpu *vgpu, unsigned long gfn, unsigned long size, in intel_gvt_hypervisor_dma_map_guest_page() argument 242 return intel_gvt_host.mpt->dma_map_guest_page(vgpu->handle, gfn, size, in intel_gvt_hypervisor_dma_map_guest_page() 269 struct intel_vgpu *vgpu, unsigned long gfn, in intel_gvt_hypervisor_map_gfn_to_mfn() argument 277 return intel_gvt_host.mpt->map_gfn_to_mfn(vgpu->handle, gfn, mfn, nr, in intel_gvt_hypervisor_map_gfn_to_mfn() [all …]
|
D | hypercall.h | 53 int (*enable_page_track)(unsigned long handle, u64 gfn); 54 int (*disable_page_track)(unsigned long handle, u64 gfn); 59 unsigned long (*gfn_to_mfn)(unsigned long handle, unsigned long gfn); 61 int (*dma_map_guest_page)(unsigned long handle, unsigned long gfn, 65 int (*map_gfn_to_mfn)(unsigned long handle, unsigned long gfn, 73 bool (*is_valid_gfn)(unsigned long handle, unsigned long gfn);
|
D | page_track.h | 42 struct intel_vgpu *vgpu, unsigned long gfn); 45 unsigned long gfn, gvt_page_track_handler_t handler, 48 unsigned long gfn); 50 int intel_vgpu_enable_page_track(struct intel_vgpu *vgpu, unsigned long gfn); 51 int intel_vgpu_disable_page_track(struct intel_vgpu *vgpu, unsigned long gfn);
|
D | kvmgt.c | 87 gfn_t gfn; member 105 gfn_t gfn; member 120 static void gvt_unpin_guest_page(struct intel_vgpu *vgpu, unsigned long gfn, in gvt_unpin_guest_page() argument 130 unsigned long cur_gfn = gfn + npage; in gvt_unpin_guest_page() 138 static int gvt_pin_guest_page(struct intel_vgpu *vgpu, unsigned long gfn, in gvt_pin_guest_page() argument 152 unsigned long cur_gfn = gfn + npage; in gvt_pin_guest_page() 183 gvt_unpin_guest_page(vgpu, gfn, npage * PAGE_SIZE); in gvt_pin_guest_page() 187 static int gvt_dma_map_page(struct intel_vgpu *vgpu, unsigned long gfn, in gvt_dma_map_page() argument 194 ret = gvt_pin_guest_page(vgpu, gfn, size, &page); in gvt_dma_map_page() 203 gvt_unpin_guest_page(vgpu, gfn, size); in gvt_dma_map_page() [all …]
|
D | gtt.c | 661 spt->guest_page.gfn << I915_GTT_PAGE_SHIFT, in ppgtt_spt_get_entry() 690 spt->guest_page.gfn << I915_GTT_PAGE_SHIFT, in ppgtt_spt_set_entry() 746 if (spt->guest_page.gfn) { in ppgtt_free_spt() 750 intel_vgpu_unregister_page_track(spt->vgpu, spt->guest_page.gfn); in ppgtt_free_spt() 798 struct intel_vgpu *vgpu, unsigned long gfn) in intel_vgpu_find_spt_by_gfn() argument 802 track = intel_vgpu_find_page_track(vgpu, gfn); in intel_vgpu_find_spt_by_gfn() 871 unsigned long gfn, bool guest_pde_ips) in ppgtt_alloc_spt_gfn() argument 883 ret = intel_vgpu_register_page_track(vgpu, gfn, in ppgtt_alloc_spt_gfn() 891 spt->guest_page.gfn = gfn; in ppgtt_alloc_spt_gfn() 894 trace_spt_alloc(vgpu->id, spt, type, spt->shadow_page.mfn, gfn); in ppgtt_alloc_spt_gfn() [all …]
|
/Linux-v5.4/arch/x86/kvm/ |
D | mmutrace.h | 13 __field(__u64, gfn) \ 20 __entry->gfn = sp->gfn; \ 37 __entry->gfn, role.level, \ 205 TP_PROTO(u64 *sptep, gfn_t gfn, unsigned access, unsigned int gen), 206 TP_ARGS(sptep, gfn, access, gen), 210 __field(gfn_t, gfn) 217 __entry->gfn = gfn; 223 __entry->gfn, __entry->access, __entry->gen) 228 TP_PROTO(u64 addr, gfn_t gfn, unsigned access), 229 TP_ARGS(addr, gfn, access), [all …]
|
D | page_track.c | 63 static void update_gfn_track(struct kvm_memory_slot *slot, gfn_t gfn, in update_gfn_track() argument 68 index = gfn_to_index(gfn, slot->base_gfn, PT_PAGE_TABLE_LEVEL); in update_gfn_track() 91 struct kvm_memory_slot *slot, gfn_t gfn, in kvm_slot_page_track_add_page() argument 98 update_gfn_track(slot, gfn, mode, 1); in kvm_slot_page_track_add_page() 104 kvm_mmu_gfn_disallow_lpage(slot, gfn); in kvm_slot_page_track_add_page() 107 if (kvm_mmu_slot_gfn_write_protect(kvm, slot, gfn)) in kvm_slot_page_track_add_page() 126 struct kvm_memory_slot *slot, gfn_t gfn, in kvm_slot_page_track_remove_page() argument 132 update_gfn_track(slot, gfn, mode, -1); in kvm_slot_page_track_remove_page() 138 kvm_mmu_gfn_allow_lpage(slot, gfn); in kvm_slot_page_track_remove_page() 145 bool kvm_page_track_is_active(struct kvm_vcpu *vcpu, gfn_t gfn, in kvm_page_track_is_active() argument [all …]
|
D | mmu.c | 454 static void mark_mmio_spte(struct kvm_vcpu *vcpu, u64 *sptep, u64 gfn, in mark_mmio_spte() argument 459 u64 gpa = gfn << PAGE_SHIFT; in mark_mmio_spte() 467 trace_mark_mmio_spte(sptep, gfn, access, gen); in mark_mmio_spte() 486 static bool set_mmio_spte(struct kvm_vcpu *vcpu, u64 *sptep, gfn_t gfn, in set_mmio_spte() argument 490 mark_mmio_spte(vcpu, sptep, gfn, access); in set_mmio_spte() 1155 return sp->gfn + (index << ((sp->role.level - 1) * PT64_LEVEL_BITS)); in kvm_mmu_page_get_gfn() 1158 static void kvm_mmu_page_set_gfn(struct kvm_mmu_page *sp, int index, gfn_t gfn) in kvm_mmu_page_set_gfn() argument 1161 sp->gfns[index] = gfn; in kvm_mmu_page_set_gfn() 1165 if (WARN_ON(gfn != kvm_mmu_page_get_gfn(sp, index))) in kvm_mmu_page_set_gfn() 1168 sp->gfn, in kvm_mmu_page_set_gfn() [all …]
|
D | paging_tmpl.h | 95 gfn_t gfn; member 316 gfn_t gfn; in FNAME() local 421 gfn = gpte_to_gfn_lvl(pte, walker->level); in FNAME() 422 gfn += (addr & PT_LVL_OFFSET_MASK(walker->level)) >> PAGE_SHIFT; in FNAME() 425 gfn += pse36_gfn_delta(pte); in FNAME() 427 real_gpa = mmu->translate_gpa(vcpu, gfn_to_gpa(gfn), access, &walker->fault); in FNAME() 431 walker->gfn = real_gpa >> PAGE_SHIFT; in FNAME() 520 gfn_t gfn; in FNAME() local 528 gfn = gpte_to_gfn(gpte); in FNAME() 531 pfn = pte_prefetch_gfn_to_pfn(vcpu, gfn, in FNAME() [all …]
|
D | mmu_audit.c | 96 gfn_t gfn; in audit_mappings() local 113 gfn = kvm_mmu_page_get_gfn(sp, sptep - sp->spt); in audit_mappings() 114 pfn = kvm_vcpu_gfn_to_pfn_atomic(vcpu, gfn); in audit_mappings() 133 gfn_t gfn; in inspect_spte_has_rmap() local 136 gfn = kvm_mmu_page_get_gfn(rev_sp, sptep - rev_sp->spt); in inspect_spte_has_rmap() 139 slot = __gfn_to_memslot(slots, gfn); in inspect_spte_has_rmap() 143 audit_printk(kvm, "no memslot for gfn %llx\n", gfn); in inspect_spte_has_rmap() 145 (long int)(sptep - rev_sp->spt), rev_sp->gfn); in inspect_spte_has_rmap() 150 rmap_head = __gfn_to_rmap(gfn, rev_sp->role.level, slot); in inspect_spte_has_rmap() 202 slot = __gfn_to_memslot(slots, sp->gfn); in audit_write_protection() [all …]
|
D | mmu.h | 208 void kvm_mmu_gfn_disallow_lpage(struct kvm_memory_slot *slot, gfn_t gfn); 209 void kvm_mmu_gfn_allow_lpage(struct kvm_memory_slot *slot, gfn_t gfn); 211 struct kvm_memory_slot *slot, u64 gfn);
|
/Linux-v5.4/include/linux/ |
D | kvm_host.h | 241 kvm_pfn_t gfn; member 702 int gfn_to_page_many_atomic(struct kvm_memory_slot *slot, gfn_t gfn, 705 struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn); 706 unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn); 707 unsigned long gfn_to_hva_prot(struct kvm *kvm, gfn_t gfn, bool *writable); 708 unsigned long gfn_to_hva_memslot(struct kvm_memory_slot *slot, gfn_t gfn); 709 unsigned long gfn_to_hva_memslot_prot(struct kvm_memory_slot *slot, gfn_t gfn, 715 kvm_pfn_t gfn_to_pfn_atomic(struct kvm *kvm, gfn_t gfn); 716 kvm_pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn); 717 kvm_pfn_t gfn_to_pfn_prot(struct kvm *kvm, gfn_t gfn, bool write_fault, [all …]
|
/Linux-v5.4/include/trace/events/ |
D | kvm.h | 259 TP_PROTO(ulong gfn, int level, struct kvm_memory_slot *slot, int ref), 260 TP_ARGS(gfn, level, slot, ref), 264 __field( u64, gfn ) 270 __entry->gfn = gfn; 272 __entry->hva = ((gfn - slot->base_gfn) << 278 __entry->hva, __entry->gfn, __entry->level, 285 TP_PROTO(u64 gva, u64 gfn), 287 TP_ARGS(gva, gfn), 291 __field(u64, gfn) 296 __entry->gfn = gfn; [all …]
|
/Linux-v5.4/virt/kvm/ |
D | kvm_main.c | 147 static void mark_page_dirty_in_slot(struct kvm_memory_slot *memslot, gfn_t gfn); 1374 struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn) in gfn_to_memslot() argument 1376 return __gfn_to_memslot(kvm_memslots(kvm), gfn); in gfn_to_memslot() 1380 struct kvm_memory_slot *kvm_vcpu_gfn_to_memslot(struct kvm_vcpu *vcpu, gfn_t gfn) in kvm_vcpu_gfn_to_memslot() argument 1382 return __gfn_to_memslot(kvm_vcpu_memslots(vcpu), gfn); in kvm_vcpu_gfn_to_memslot() 1385 bool kvm_is_visible_gfn(struct kvm *kvm, gfn_t gfn) in kvm_is_visible_gfn() argument 1387 struct kvm_memory_slot *memslot = gfn_to_memslot(kvm, gfn); in kvm_is_visible_gfn() 1397 unsigned long kvm_host_page_size(struct kvm *kvm, gfn_t gfn) in kvm_host_page_size() argument 1404 addr = gfn_to_hva(kvm, gfn); in kvm_host_page_size() 1426 static unsigned long __gfn_to_hva_many(struct kvm_memory_slot *slot, gfn_t gfn, in __gfn_to_hva_many() argument [all …]
|
/Linux-v5.4/include/xen/ |
D | xen-ops.h | 84 xen_pfn_t *gfn, int nr, 97 xen_pfn_t *gfn, int nr, in xen_xlate_remap_gfn_array() argument 134 xen_pfn_t *gfn, int nr, in xen_remap_domain_gfn_array() argument 140 return xen_xlate_remap_gfn_array(vma, addr, gfn, nr, err_ptr, in xen_remap_domain_gfn_array() 148 return xen_remap_pfn(vma, addr, gfn, nr, err_ptr, prot, domid, in xen_remap_domain_gfn_array() 196 xen_pfn_t gfn, int nr, in xen_remap_domain_gfn_range() argument 203 return xen_remap_pfn(vma, addr, &gfn, nr, NULL, prot, domid, false, in xen_remap_domain_gfn_range()
|
/Linux-v5.4/drivers/xen/ |
D | xlate_mmu.c | 45 typedef void (*xen_gfn_fn_t)(unsigned long gfn, void *data); 84 static void setup_hparams(unsigned long gfn, void *data) in setup_hparams() argument 89 info->h_gpfns[info->h_iter] = gfn; in setup_hparams() 145 xen_pfn_t *gfn, int nr, in xen_xlate_remap_gfn_array() argument 158 data.fgfn = gfn; in xen_xlate_remap_gfn_array() 174 static void unmap_gfn(unsigned long gfn, void *data) in unmap_gfn() argument 179 xrp.gpfn = gfn; in unmap_gfn() 197 static void setup_balloon_gfn(unsigned long gfn, void *data) in setup_balloon_gfn() argument 201 info->pfns[info->idx++] = gfn; in setup_balloon_gfn()
|
/Linux-v5.4/arch/powerpc/kvm/ |
D | book3s_64_mmu_hv.c | 500 unsigned long gpa, gfn, hva, pfn; in kvmppc_book3s_hv_page_fault() local 562 gfn = gpa >> PAGE_SHIFT; in kvmppc_book3s_hv_page_fault() 563 memslot = gfn_to_memslot(kvm, gfn); in kvmppc_book3s_hv_page_fault() 591 hva = gfn_to_hva_memslot(memslot, gfn); in kvmppc_book3s_hv_page_fault() 767 unsigned long gfn); 782 gfn_t gfn, gfn_end; in kvm_handle_hva_range() local 793 gfn = hva_to_gfn_memslot(hva_start, memslot); in kvm_handle_hva_range() 796 for (; gfn < gfn_end; ++gfn) { in kvm_handle_hva_range() 797 ret = handler(kvm, memslot, gfn); in kvm_handle_hva_range() 814 unsigned long *rmapp, unsigned long gfn) in kvmppc_unmap_hpte() argument [all …]
|
D | e500_mmu_host.c | 323 u64 gvaddr, gfn_t gfn, struct kvm_book3e_206_tlb_entry *gtlbe, in kvmppc_e500_shadow_map() argument 353 slot = gfn_to_memslot(vcpu_e500->vcpu.kvm, gfn); in kvmppc_e500_shadow_map() 354 hva = gfn_to_hva_memslot(slot, gfn); in kvmppc_e500_shadow_map() 381 slot_start = pfn - (gfn - slot->base_gfn); in kvmppc_e500_shadow_map() 409 gfn_start = gfn & ~(tsize_pages - 1); in kvmppc_e500_shadow_map() 412 if (gfn_start + pfn - gfn < start) in kvmppc_e500_shadow_map() 414 if (gfn_end + pfn - gfn > end) in kvmppc_e500_shadow_map() 416 if ((gfn & (tsize_pages - 1)) != in kvmppc_e500_shadow_map() 449 pfn = gfn_to_pfn_memslot(slot, gfn); in kvmppc_e500_shadow_map() 453 __func__, (long)gfn); in kvmppc_e500_shadow_map() [all …]
|
D | book3s_hv_rm_mmu.c | 110 unsigned long gfn, unsigned long psize) in kvmppc_update_dirty_map() argument 117 gfn -= memslot->base_gfn; in kvmppc_update_dirty_map() 118 set_dirty_bits_atomic(memslot->dirty_bitmap, gfn, npages); in kvmppc_update_dirty_map() 126 unsigned long gfn; in kvmppc_set_dirty_from_hpte() local 130 gfn = hpte_rpn(hpte_gr, psize); in kvmppc_set_dirty_from_hpte() 131 memslot = __gfn_to_memslot(kvm_memslots_raw(kvm), gfn); in kvmppc_set_dirty_from_hpte() 133 kvmppc_update_dirty_map(memslot, gfn, psize); in kvmppc_set_dirty_from_hpte() 144 unsigned long gfn; in revmap_for_hpte() local 146 gfn = hpte_rpn(hpte_gr, kvmppc_actual_pgsz(hpte_v, hpte_gr)); in revmap_for_hpte() 147 memslot = __gfn_to_memslot(kvm_memslots_raw(kvm), gfn); in revmap_for_hpte() [all …]
|
D | book3s_64_mmu_radix.c | 382 unsigned long gfn = gpa >> PAGE_SHIFT; in kvmppc_unmap_pte() local 394 memslot = gfn_to_memslot(kvm, gfn); in kvmppc_unmap_pte() 411 kvmppc_update_dirty_map(memslot, gfn, page_size); in kvmppc_unmap_pte() 775 unsigned long hva, gfn = gpa >> PAGE_SHIFT; in kvmppc_book3s_instantiate_page() local 793 hva = gfn_to_hva_memslot(memslot, gfn); in kvmppc_book3s_instantiate_page() 800 pfn = __gfn_to_pfn_memslot(memslot, gfn, false, NULL, in kvmppc_book3s_instantiate_page() 893 unsigned long gpa, gfn; in kvmppc_book3s_radix_page_fault() local 914 gfn = gpa >> PAGE_SHIFT; in kvmppc_book3s_radix_page_fault() 919 memslot = gfn_to_memslot(kvm, gfn); in kvmppc_book3s_radix_page_fault() 969 unsigned long gfn) in kvm_unmap_radix() argument [all …]
|
/Linux-v5.4/arch/x86/include/asm/ |
D | kvm_page_track.h | 58 struct kvm_memory_slot *slot, gfn_t gfn, 61 struct kvm_memory_slot *slot, gfn_t gfn, 63 bool kvm_page_track_is_active(struct kvm_vcpu *vcpu, gfn_t gfn,
|
/Linux-v5.4/arch/mips/kvm/ |
D | mmu.c | 471 int (*handler)(struct kvm *kvm, gfn_t gfn, in handle_hva_to_gpa() argument 486 gfn_t gfn, gfn_end; in handle_hva_to_gpa() local 498 gfn = hva_to_gfn_memslot(hva_start, memslot); in handle_hva_to_gpa() 501 ret |= handler(kvm, gfn, gfn_end, memslot, data); in handle_hva_to_gpa() 508 static int kvm_unmap_hva_handler(struct kvm *kvm, gfn_t gfn, gfn_t gfn_end, in kvm_unmap_hva_handler() argument 511 kvm_mips_flush_gpa_pt(kvm, gfn, gfn_end); in kvm_unmap_hva_handler() 523 static int kvm_set_spte_handler(struct kvm *kvm, gfn_t gfn, gfn_t gfn_end, in kvm_set_spte_handler() argument 526 gpa_t gpa = gfn << PAGE_SHIFT; in kvm_set_spte_handler() 565 static int kvm_age_hva_handler(struct kvm *kvm, gfn_t gfn, gfn_t gfn_end, in kvm_age_hva_handler() argument 568 return kvm_mips_mkold_gpa_pt(kvm, gfn, gfn_end); in kvm_age_hva_handler() [all …]
|
/Linux-v5.4/Documentation/virt/kvm/ |
D | locking.txt | 40 - SPTE_HOST_WRITEABLE means the gfn is writable on host. 41 - SPTE_MMU_WRITEABLE means the gfn is writable on mmu. The bit is set when 42 the gfn is writable on guest mmu and it is not write-protected by shadow 51 1): The mapping from gfn to pfn 52 The mapping from gfn to pfn may be changed since we can only ensure the pfn 82 to gfn. For indirect sp, before we do cmpxchg, we call gfn_to_pfn_atomic() 83 to pin gfn to pfn, because after gfn_to_pfn_atomic(): 85 be reused for another gfn. 89 Then, we can ensure the dirty bitmaps is correctly set for a gfn.
|
/Linux-v5.4/include/xen/arm/ |
D | page.h | 52 static inline unsigned long gfn_to_pfn(unsigned long gfn) in gfn_to_pfn() argument 54 return gfn; in gfn_to_pfn()
|