| /linux-6.15/arch/x86/kvm/mmu/ |
| H A D | mmutrace.h | 13 __field(__u64, gfn) \ 20 __entry->gfn = sp->gfn; \ 225 __entry->gfn = gfn; 247 __entry->gfn = gfn; 340 __field(u64, gfn) 351 __entry->gfn = gfn; 376 __field(u64, gfn) 382 __entry->gfn = fault->gfn; 398 __field(u64, gfn) 408 __entry->gfn = gfn; [all …]
|
| H A D | tdp_mmu.c | 232 sp->gfn = gfn; in tdp_mmu_init_sp() 406 gfn_t base_gfn = sp->gfn; in handle_removed_pt() 508 WARN_ON_ONCE(sp->gfn != gfn); in get_external_spt() 1254 for_each_tdp_pte(iter, kvm, root, fault->gfn, fault->gfn + 1) { in kvm_tdp_mmu_map() 1709 !(mask & (1UL << (iter.gfn - gfn)))) in clear_dirty_pt_masked() 1712 mask &= ~(1UL << (iter.gfn - gfn)); in clear_dirty_pt_masked() 1750 gfn_t start = parent->gfn; in tdp_mmu_make_huge_spte() 1814 if (iter.gfn < start || iter.gfn >= end) in recover_huge_pages_range() 1869 for_each_tdp_pte_min_level(iter, kvm, root, min_level, gfn, gfn + 1) { in write_protect_gfn() 1924 for_each_tdp_pte(iter, vcpu->kvm, root, gfn, gfn + 1) { in kvm_tdp_mmu_get_walk() [all …]
|
| H A D | page_track.c | 80 index = gfn_to_index(gfn, slot->base_gfn, PG_LEVEL_4K); in update_gfn_write_track() 91 gfn_t gfn) in __kvm_write_track_add_gfn() argument 101 update_gfn_write_track(slot, gfn, 1); in __kvm_write_track_add_gfn() 107 kvm_mmu_gfn_disallow_lpage(slot, gfn); in __kvm_write_track_add_gfn() 114 struct kvm_memory_slot *slot, gfn_t gfn) in __kvm_write_track_remove_gfn() argument 124 update_gfn_write_track(slot, gfn, -1); in __kvm_write_track_remove_gfn() 130 kvm_mmu_gfn_allow_lpage(slot, gfn); in __kvm_write_track_remove_gfn() 326 slot = gfn_to_memslot(kvm, gfn); in kvm_write_track_add_gfn() 333 __kvm_write_track_add_gfn(kvm, slot, gfn); in kvm_write_track_add_gfn() 356 slot = gfn_to_memslot(kvm, gfn); in kvm_write_track_remove_gfn() [all …]
|
| H A D | mmu_internal.h | 83 gfn_t gfn; member 203 static inline gfn_t gfn_round_for_level(gfn_t gfn, int level) in gfn_round_for_level() argument 205 return gfn & -KVM_PAGES_PER_HPAGE(level); in gfn_round_for_level() 209 gfn_t gfn, bool synchronizing, bool prefetch); 214 struct kvm_memory_slot *slot, u64 gfn, 220 kvm_flush_remote_tlbs_range(kvm, gfn_round_for_level(gfn, level), in kvm_flush_remote_tlbs_gfn() 280 gfn_t gfn; member 341 kvm_prepare_memory_fault_exit(vcpu, fault->gfn << PAGE_SHIFT, in kvm_mmu_prepare_memory_fault_exit() 378 fault.gfn = gpa_to_gfn(fault.addr) & ~kvm_gfn_direct_bits(vcpu->kvm); in kvm_mmu_do_page_fault() 379 fault.slot = kvm_vcpu_gfn_to_memslot(vcpu, fault.gfn); in kvm_mmu_do_page_fault() [all …]
|
| H A D | mmu.c | 752 gfn_t gfn; in account_shadowed() local 764 gfn = sp->gfn; in account_shadowed() 809 gfn_t gfn; in unaccount_shadowed() local 812 gfn = sp->gfn; in unaccount_shadowed() 1184 gfn_t gfn; in rmap_remove() local 1720 for (gfn = range->start; gfn < range->end; in kvm_rmap_age_gfn_range() 2241 if (sp->gfn != gfn) { in kvm_mmu_find_shadow_page() 2340 sp->gfn = gfn; in kvm_mmu_alloc_shadow_page() 4411 arch.gfn = fault->gfn; in kvm_arch_setup_async_pf() 7763 for (gfn = start; gfn < end; gfn += KVM_PAGES_PER_HPAGE(level - 1)) { in hugepage_has_attrs() [all …]
|
| H A D | tdp_iter.c | 15 SPTE_INDEX((iter->gfn | iter->gfn_bits) << PAGE_SHIFT, iter->level); in tdp_iter_refresh_sptep() 29 iter->gfn = gfn_round_for_level(iter->next_last_level_gfn, iter->level); in tdp_iter_restart() 99 iter->gfn = gfn_round_for_level(iter->next_last_level_gfn, iter->level); in try_step_down() 118 if (SPTE_INDEX((iter->gfn | iter->gfn_bits) << PAGE_SHIFT, iter->level) == in try_step_side() 122 iter->gfn += KVM_PAGES_PER_HPAGE(iter->level); in try_step_side() 123 iter->next_last_level_gfn = iter->gfn; in try_step_side() 141 iter->gfn = gfn_round_for_level(iter->gfn, iter->level); in try_step_up()
|
| H A D | paging_tmpl.h | 91 gfn_t gfn; member 322 gfn_t gfn; in FNAME() local 445 gfn += pse36_gfn_delta(pte); in FNAME() 536 gfn_t gfn; in FNAME() local 541 gfn = gpte_to_gfn(gpte); in FNAME() 621 gfn_t base_gfn = fault->gfn; in FNAME() 623 WARN_ON_ONCE(gw->gfn != base_gfn); in FNAME() 790 fault->gfn = walker.gfn; in FNAME() 872 gpa = gfn_to_gpa(walker.gfn); in FNAME() 900 gfn_t gfn; in FNAME() local [all …]
|
| /linux-6.15/drivers/gpu/drm/i915/gvt/ |
| H A 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() 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_page_track_remove(vgpu, gfn); in intel_vgpu_unregister_page_track() 108 track = intel_vgpu_find_page_track(vgpu, gfn); in intel_vgpu_enable_page_track() 115 ret = intel_gvt_page_track_add(vgpu, gfn); in intel_vgpu_enable_page_track() 135 track = intel_vgpu_find_page_track(vgpu, gfn); in intel_vgpu_disable_page_track() [all …]
|
| H A D | page_track.h | 45 struct intel_vgpu *vgpu, unsigned long gfn); 48 unsigned long gfn, gvt_page_track_handler_t handler, 51 unsigned long gfn); 53 int intel_vgpu_enable_page_track(struct intel_vgpu *vgpu, unsigned long gfn); 54 int intel_vgpu_disable_page_track(struct intel_vgpu *vgpu, unsigned long gfn);
|
| H A D | kvmgt.c | 92 gfn_t gfn; member 100 gfn_t gfn; member 206 gvt_unpin_guest_page(vgpu, gfn, size); in gvt_dma_unmap_page() 236 if (gfn < itr->gfn) in __gvt_cache_find_gfn() 238 else if (gfn > itr->gfn) in __gvt_cache_find_gfn() 257 new->gfn = gfn; in __gvt_cache_add() 268 if (gfn < itr->gfn) in __gvt_cache_add() 356 if (gfn == p->gfn) { in __kvmgt_protect_table_find() 381 if (WARN(!p, "gfn: 0x%llx\n", gfn)) in kvmgt_protect_table_add() 384 p->gfn = gfn; in kvmgt_protect_table_add() [all …]
|
| /linux-6.15/arch/powerpc/kvm/ |
| H A D | book3s_hv_uvmem.c | 295 if (gfn >= p->base_pfn && gfn < p->base_pfn + p->nr_pfns) { in kvmppc_mark_gfn() 339 if (gfn >= p->base_pfn && gfn < p->base_pfn + p->nr_pfns) { in kvmppc_gfn_is_uvmem_pfn() 369 if (*gfn >= iter->base_pfn && *gfn < iter->base_pfn + iter->nr_pfns) { in kvmppc_next_nontransitioned_gfn() 383 *gfn = i; in kvmppc_next_nontransitioned_gfn() 617 unsigned long uvmem_pfn, gfn; in kvmppc_uvmem_drop_pages() local 624 gfn = slot->base_gfn; in kvmppc_uvmem_drop_pages() 903 page = gfn_to_page(kvm, gfn); in kvmppc_share_page() 919 kvmppc_gfn_shared(gfn, kvm); in kvmppc_share_page() 961 start = gfn_to_hva(kvm, gfn); in kvmppc_h_svm_page_in() 1066 start = gfn_to_hva(kvm, gfn); in kvmppc_h_svm_page_out() [all …]
|
| H A D | book3s_64_mmu_hv.c | 578 gfn = gpa >> PAGE_SHIFT; in kvmppc_book3s_hv_page_fault() 842 gfn_t gfn; in kvm_unmap_gfn_range_hv() local 845 for (gfn = range->start; gfn < range->end; gfn++) in kvm_unmap_gfn_range_hv() 848 for (gfn = range->start; gfn < range->end; gfn++) in kvm_unmap_gfn_range_hv() 858 unsigned long gfn; in kvmppc_core_flush_memslot_hv() local 883 unsigned long gfn) in kvm_age_rmapp() argument 939 gfn_t gfn; in kvm_age_gfn_hv() local 943 for (gfn = range->start; gfn < range->end; gfn++) in kvm_age_gfn_hv() 946 for (gfn = range->start; gfn < range->end; gfn++) in kvm_age_gfn_hv() 1090 unsigned long gfn; in kvmppc_harvest_vpa_dirty() local [all …]
|
| H A D | e500_mmu_host.c | 355 slot = gfn_to_memslot(vcpu_e500->vcpu.kvm, gfn); in kvmppc_e500_shadow_map() 356 hva = gfn_to_hva_memslot(slot, gfn); in kvmppc_e500_shadow_map() 362 __func__, (long)gfn); in kvmppc_e500_shadow_map() 391 __func__, (long)gfn, pfn); in kvmppc_e500_shadow_map() 407 slot_start = pfn - (gfn - slot->base_gfn); in kvmppc_e500_shadow_map() 441 gfn_start = gfn & ~(tsize_pages - 1); in kvmppc_e500_shadow_map() 444 if (gfn_start + pfn - gfn < start) in kvmppc_e500_shadow_map() 446 if (gfn_end + pfn - gfn > end) in kvmppc_e500_shadow_map() 448 if ((gfn & (tsize_pages - 1)) != in kvmppc_e500_shadow_map() 574 gfn_t gfn = gpaddr >> PAGE_SHIFT; in kvmppc_mmu_map() local [all …]
|
| H A D | book3s_hv_rm_mmu.c | 104 gfn -= memslot->base_gfn; in kvmppc_update_dirty_map() 113 unsigned long gfn; in kvmppc_set_dirty_from_hpte() local 117 gfn = hpte_rpn(hpte_gr, psize); in kvmppc_set_dirty_from_hpte() 131 unsigned long gfn; in revmap_for_hpte() local 138 *gfnp = gfn; in revmap_for_hpte() 156 unsigned long gfn; in remove_revmap_chain() local 179 kvmppc_update_dirty_map(memslot, gfn, in remove_revmap_chain() 188 unsigned long i, pa, gpa, gfn, psize; in kvmppc_do_h_enter() local 227 gfn = gpa >> PAGE_SHIFT; in kvmppc_do_h_enter() 242 slot_fn = gfn - memslot->base_gfn; in kvmppc_do_h_enter() [all …]
|
| /linux-6.15/include/linux/ |
| H A D | kvm_host.h | 295 kvm_pfn_t gfn; member 1295 return __kvm_faultin_pfn(kvm_vcpu_gfn_to_memslot(vcpu, gfn), gfn, in kvm_faultin_pfn() 1348 mark_page_dirty(kvm, gfn); \ 1656 gfn_t gfn, u64 nr_pages) in kvm_arch_flush_remote_tlbs_range() argument 1791 if (gfn >= slot->base_gfn && gfn < slot->base_gfn + slot->npages) in try_get_memslot() 1814 if (gfn >= slot->base_gfn) { in search_memslots() 1831 slot = try_get_memslot(slot, gfn); in ____gfn_to_memslot() 1871 return gfn_to_memslot(kvm, gfn)->id; in memslot_id() 1884 return (gpa_t)gfn << PAGE_SHIFT; in gfn_to_gpa() 2121 gfn_t gfn) in mmu_invalidate_retry_gfn() argument [all …]
|
| /linux-6.15/arch/arm64/kvm/ |
| H A D | pkvm.c | 281 if (a->gfn < b->gfn) in cmp_mappings() 283 if (a->gfn > b->gfn) in cmp_mappings() 295 if (mapping->gfn == gfn) in find_first_mapping_node() 298 node = (gfn < mapping->gfn) ? node->rb_left : node->rb_right; in find_first_mapping_node() 317 if (__map->gfn < ((__start) >> PAGE_SHIFT)) \ 319 else if (__map->gfn >= ((__end) >> PAGE_SHIFT)) \ 345 kvm_call_hyp_nvhe(__pkvm_host_unshare_guest, handle, mapping->gfn); in pkvm_pgtable_stage2_destroy() 359 u64 gfn = addr >> PAGE_SHIFT; in pkvm_pgtable_stage2_map() local 367 ret = kvm_call_hyp_nvhe(__pkvm_host_share_guest, pfn, gfn, prot); in pkvm_pgtable_stage2_map() 375 mapping->gfn = gfn; in pkvm_pgtable_stage2_map() [all …]
|
| /linux-6.15/arch/arm64/kvm/hyp/include/nvhe/ |
| H A D | mem_protect.h | 42 int __pkvm_host_share_guest(u64 pfn, u64 gfn, struct pkvm_hyp_vcpu *vcpu, 44 int __pkvm_host_unshare_guest(u64 gfn, struct pkvm_hyp_vm *hyp_vm); 45 int __pkvm_host_relax_perms_guest(u64 gfn, struct pkvm_hyp_vcpu *vcpu, enum kvm_pgtable_prot prot); 46 int __pkvm_host_wrprotect_guest(u64 gfn, struct pkvm_hyp_vm *hyp_vm); 47 int __pkvm_host_test_clear_young_guest(u64 gfn, bool mkold, struct pkvm_hyp_vm *vm); 48 int __pkvm_host_mkyoung_guest(u64 gfn, struct pkvm_hyp_vcpu *vcpu);
|
| /linux-6.15/include/xen/ |
| H A D | xen-ops.h | 66 xen_pfn_t *gfn, int nr, 79 xen_pfn_t *gfn, int nr, in xen_xlate_remap_gfn_array() argument 116 xen_pfn_t *gfn, int nr, in xen_remap_domain_gfn_array() argument 122 return xen_xlate_remap_gfn_array(vma, addr, gfn, nr, err_ptr, in xen_remap_domain_gfn_array() 130 return xen_remap_pfn(vma, addr, gfn, nr, err_ptr, prot, domid, in xen_remap_domain_gfn_array() 176 xen_pfn_t gfn, int nr, in xen_remap_domain_gfn_range() argument 183 return xen_remap_pfn(vma, addr, &gfn, nr, NULL, prot, domid, false); in xen_remap_domain_gfn_range()
|
| /linux-6.15/arch/loongarch/kvm/ |
| H A D | mmu.c | 68 offset = (addr >> PAGE_SHIFT) - ctx->gfn; in kvm_mkclean_pte() 373 ctx.gfn = base_gfn; in kvm_arch_mmu_enable_log_dirty_pt_masked() 556 gfn_t gfn = gpa >> PAGE_SHIFT; in kvm_map_page_fast() local 582 slot = gfn_to_memslot(kvm, gfn); in kvm_map_page_fast() 600 mark_page_dirty(kvm, gfn); in kvm_map_page_fast() 685 hva = __gfn_to_hva_memslot(slot, gfn); in host_pfn_mapping_level() 750 return child + (gfn & (PTRS_PER_PTE - 1)); in kvm_split_huge() 779 gfn_t gfn = gpa >> PAGE_SHIFT; in kvm_map_page() local 791 memslot = gfn_to_memslot(kvm, gfn); in kvm_map_page() 881 gfn = gfn & ~(PTRS_PER_PTE - 1); in kvm_map_page() [all …]
|
| /linux-6.15/drivers/xen/ |
| H A 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-6.15/virt/kvm/ |
| H A D | guest_memfd.c | 33 gfn_t gfn = slot->base_gfn + index - slot->gmem.pgoff; in __kvm_gmem_prepare_folio() local 37 index, gfn, pfn, rc); in __kvm_gmem_prepare_folio() 57 gfn_t gfn, struct folio *folio) in kvm_gmem_prepare_folio() argument 81 index = gfn - slot->base_gfn + slot->gmem.pgoff; in kvm_gmem_prepare_folio() 312 return gfn - slot->base_gfn + slot->gmem.pgoff; in kvm_gmem_get_index() 610 pgoff_t index = kvm_gmem_get_index(slot, gfn); in kvm_gmem_get_pfn() 626 r = kvm_gmem_prepare_folio(kvm, slot, gfn, folio); in kvm_gmem_get_pfn() 669 gfn_t gfn = start_gfn + i; in kvm_gmem_populate() local 670 pgoff_t index = kvm_gmem_get_index(slot, gfn); in kvm_gmem_populate() 693 WARN_ON(!IS_ALIGNED(gfn, 1 << max_order) || in kvm_gmem_populate() [all …]
|
| H A D | dirty_ring.c | 92 static inline void kvm_dirty_gfn_set_invalid(struct kvm_dirty_gfn *gfn) in kvm_dirty_gfn_set_invalid() argument 94 smp_store_release(&gfn->flags, 0); in kvm_dirty_gfn_set_invalid() 97 static inline void kvm_dirty_gfn_set_dirtied(struct kvm_dirty_gfn *gfn) in kvm_dirty_gfn_set_dirtied() argument 99 gfn->flags = KVM_DIRTY_GFN_F_DIRTY; in kvm_dirty_gfn_set_dirtied() 102 static inline bool kvm_dirty_gfn_harvested(struct kvm_dirty_gfn *gfn) in kvm_dirty_gfn_harvested() argument 104 return smp_load_acquire(&gfn->flags) & KVM_DIRTY_GFN_F_RESET; in kvm_dirty_gfn_harvested()
|
| H A D | kvm_main.c | 2670 gfn_t gfn) in gfn_to_hva_memslot() argument 2678 return gfn_to_hva_many(gfn_to_memslot(kvm, gfn), gfn, NULL); in gfn_to_hva() 2990 .gfn = gfn, in __kvm_faultin_pfn() 3035 .gfn = gfn, in __gfn_to_page() 3050 .gfn = gfn, in __kvm_vcpu_map() 3059 map->gfn = gfn; in __kvm_vcpu_map() 3166 ++gfn; in kvm_read_guest() 3186 ++gfn; in kvm_vcpu_read_guest() 3277 ++gfn; in kvm_write_guest() 3298 ++gfn; in kvm_vcpu_write_guest() [all …]
|
| /linux-6.15/arch/x86/include/asm/ |
| H A D | kvm_page_track.h | 43 void (*track_remove_region)(gfn_t gfn, unsigned long nr_pages, 52 int kvm_write_track_add_gfn(struct kvm *kvm, gfn_t gfn); 53 int kvm_write_track_remove_gfn(struct kvm *kvm, gfn_t gfn);
|
| /linux-6.15/arch/arm64/kvm/hyp/nvhe/ |
| H A D | hyp-main.c | 251 DECLARE_REG(u64, gfn, host_ctxt, 2); in handle___pkvm_host_share_guest() 267 ret = __pkvm_host_share_guest(pfn, gfn, hyp_vcpu, prot); in handle___pkvm_host_share_guest() 275 DECLARE_REG(u64, gfn, host_ctxt, 2); in handle___pkvm_host_unshare_guest() 286 ret = __pkvm_host_unshare_guest(gfn, hyp_vm); in handle___pkvm_host_unshare_guest() 294 DECLARE_REG(u64, gfn, host_ctxt, 1); in handle___pkvm_host_relax_perms_guest() 306 ret = __pkvm_host_relax_perms_guest(gfn, hyp_vcpu, prot); in handle___pkvm_host_relax_perms_guest() 314 DECLARE_REG(u64, gfn, host_ctxt, 2); in handle___pkvm_host_wrprotect_guest() 325 ret = __pkvm_host_wrprotect_guest(gfn, hyp_vm); in handle___pkvm_host_wrprotect_guest() 334 DECLARE_REG(u64, gfn, host_ctxt, 2); in handle___pkvm_host_test_clear_young_guest() 354 DECLARE_REG(u64, gfn, host_ctxt, 1); in handle___pkvm_host_mkyoung_guest() [all …]
|