/linux-master/virt/kvm/ |
H A D | pfncache.c | 81 * If the page was cached from a memslot, make sure the memslots have 279 gpc->memslot = NULL; 295 gpc->memslot = __gfn_to_memslot(slots, gfn); 296 gpc->uhva = gfn_to_hva_memslot(gpc->memslot, gfn); 304 * Even if the GPA and/or the memslot generation changed, the 337 * Some/all of the uhva, gpa, and memslot generation info may still be 456 * memslot generation. The PFN lookup needs to be redone every
|
H A D | kvm_main.c | 381 const struct kvm_memory_slot *memslot) 384 * All current use cases for flushing the TLBs for a specific memslot 386 * mmu_lock. The interaction between the various operations on memslot 388 * operation is observed by any other operation on the same memslot. 391 kvm_flush_remote_tlbs_range(kvm, memslot->base_gfn, memslot->npages); 563 * least one memslot was found, i.e. if the handler found guest memory. 588 /* Iterate over each memslot intersecting [start, last] (inclusive) range */ 714 * unmap the memslot instead of skipping the memslot t 380 kvm_flush_remote_tlbs_memslot(struct kvm *kvm, const struct kvm_memory_slot *memslot) argument 1017 kvm_destroy_dirty_bitmap(struct kvm_memory_slot *memslot) argument 1042 struct kvm_memory_slot *memslot; local 1450 kvm_alloc_dirty_bitmap(struct kvm_memory_slot *memslot) argument 2170 kvm_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log, int *is_dirty, struct kvm_memory_slot **memslot) argument 2236 struct kvm_memory_slot *memslot; local 2347 struct kvm_memory_slot *memslot; local 2668 struct kvm_memory_slot *memslot = gfn_to_memslot(kvm, gfn); local 2676 struct kvm_memory_slot *memslot = kvm_vcpu_gfn_to_memslot(vcpu, gfn); local 3411 __kvm_write_guest_page(struct kvm *kvm, struct kvm_memory_slot *memslot, gfn_t gfn, const void *data, int offset, int len) argument 3632 mark_page_dirty_in_slot(struct kvm *kvm, const struct kvm_memory_slot *memslot, gfn_t gfn) argument 3659 struct kvm_memory_slot *memslot; local 3668 struct kvm_memory_slot *memslot; local [all...] |
H A D | dirty_ring.c | 55 struct kvm_memory_slot *memslot; local 64 memslot = id_to_memslot(__kvm_memslots(kvm, as_id), id); 66 if (!memslot || (offset + __fls(mask)) >= memslot->npages) 70 kvm_arch_mmu_enable_log_dirty_pt_masked(kvm, memslot, offset, mask);
|
/linux-master/arch/x86/kvm/ |
H A D | x86.c | 3699 kvm_is_error_hva(ghc->hva) || !ghc->memslot)) { 3704 kvm_is_error_hva(ghc->hva) || !ghc->memslot) 3770 mark_page_dirty_in_slot(vcpu->kvm, ghc->memslot, gpa_to_gfn(ghc->gpa)); 5099 kvm_is_error_hva(ghc->hva) || !ghc->memslot)) 5108 mark_page_dirty_in_slot(vcpu->kvm, ghc->memslot, gpa_to_gfn(ghc->gpa)); 6471 void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot) argument 10603 * Due to sharing page tables across vCPUs, the xAPIC memslot must be 12784 * the new memslot is successful. 12920 * For a memslot with dirty logging disabled: 12925 * For a memslot wit [all...] |
/linux-master/arch/x86/kvm/mmu/ |
H A D | mmu.c | 1383 * of memslot has no such restriction, so the range can cross two large 1941 * differs then the memslot lookup (SMM vs. non-SMM) will be bogus, the 3094 * Note, using the already-retrieved memslot and __gfn_to_hva_memslot() 3099 * read-only memslot. 3783 * were made now versus when the memslot was created. 4350 * Retry the page fault if the gfn hit a memslot that is being deleted 4351 * or moved. This ensures any existing SPTEs for the old memslot will 4473 * root was invalidated by a memslot update or a relevant mmu_notifier fired. 5661 * (b) remote reloads due to a memslot update obsoletes _all_ roots 5665 * Note! Dummy roots are unique in that they are obsoleted by memslot 6353 const struct kvm_memory_slot *memslot; local 6419 kvm_mmu_slot_remove_write_access(struct kvm *kvm, const struct kvm_memory_slot *memslot, int start_level) argument 6667 kvm_mmu_try_split_huge_pages(struct kvm *kvm, const struct kvm_memory_slot *memslot, u64 start, u64 end, int target_level) argument 6686 kvm_mmu_slot_try_split_huge_pages(struct kvm *kvm, const struct kvm_memory_slot *memslot, int target_level) argument 6782 kvm_mmu_slot_leaf_clear_dirty(struct kvm *kvm, const struct kvm_memory_slot *memslot) argument [all...] |
/linux-master/arch/x86/include/asm/ |
H A D | kvm_host.h | 1298 * memslot, etc... Note, zapping shadow pages on this list doesn't 1468 * is used as one input when determining whether certain memslot 1921 const struct kvm_memory_slot *memslot, 1924 const struct kvm_memory_slot *memslot, 1927 const struct kvm_memory_slot *memslot, 1931 const struct kvm_memory_slot *memslot); 1933 const struct kvm_memory_slot *memslot);
|
/linux-master/arch/arm64/kvm/ |
H A D | mmu.c | 158 static bool memslot_is_logging(struct kvm_memory_slot *memslot) argument 160 return memslot->dirty_bitmap && !(memslot->flags & KVM_MEM_READONLY); 337 struct kvm_memory_slot *memslot) 339 phys_addr_t addr = memslot->base_gfn << PAGE_SHIFT; 340 phys_addr_t end = addr + PAGE_SIZE * memslot->npages; 355 struct kvm_memory_slot *memslot; local 362 kvm_for_each_memslot(memslot, bkt, slots) 363 stage2_flush_memslot(kvm, memslot); 944 struct kvm_memory_slot *memslot) 336 stage2_flush_memslot(struct kvm *kvm, struct kvm_memory_slot *memslot) argument 943 stage2_unmap_memslot(struct kvm *kvm, struct kvm_memory_slot *memslot) argument 995 struct kvm_memory_slot *memslot; local 1131 struct kvm_memory_slot *memslot = id_to_memslot(slots, slot); local 1158 struct kvm_memory_slot *memslot; local 1214 fault_supports_stage2_huge_mapping(struct kvm_memory_slot *memslot, unsigned long hva, unsigned long map_size) argument 1284 transparent_hugepage_adjust(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long hva, kvm_pfn_t *pfnp, phys_addr_t *ipap) argument 1377 user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, struct kvm_memory_slot *memslot, unsigned long hva, bool fault_is_perm) argument 1629 struct kvm_memory_slot *memslot; local [all...] |
H A D | arm.c | 1656 void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot) argument
|
/linux-master/tools/testing/selftests/kvm/lib/ |
H A D | kvm_util.c | 430 * read-only memslots as MMIO, and creating a read-only memslot for the 1087 * Install a unique fd for each memslot so that the fd 1153 * memslot - KVM memory slot ID 1159 * using kvm memory slot ID given by memslot. TEST_ASSERT failure 1160 * on error (e.g. currently no memory region using memslot as a KVM 1164 memslot2region(struct kvm_vm *vm, uint32_t memslot) argument 1169 memslot) 1170 if (region->region.slot == memslot) 1174 " requested slot: %u\n", memslot); 2053 * memslot 2066 __vm_phy_pages_alloc(struct kvm_vm *vm, size_t num, vm_paddr_t paddr_min, uint32_t memslot, bool protected) argument 2112 vm_phy_page_alloc(struct kvm_vm *vm, vm_paddr_t paddr_min, uint32_t memslot) argument [all...] |
/linux-master/tools/testing/selftests/kvm/include/ |
H A D | kvm_util_base.h | 130 * memslot. 164 memslot2region(struct kvm_vm *vm, uint32_t memslot); 860 uint32_t memslot); 862 vm_paddr_t paddr_min, uint32_t memslot, 867 vm_paddr_t paddr_min, uint32_t memslot) 874 return __vm_phy_pages_alloc(vm, num, paddr_min, memslot, 1055 * memslot - Memory region slot for new virtual translation tables 866 vm_phy_pages_alloc(struct kvm_vm *vm, size_t num, vm_paddr_t paddr_min, uint32_t memslot) argument
|
/linux-master/include/linux/ |
H A D | kvm_host.h | 60 * Bit 63 of the memslot generation number is an "update in-progress flag", 63 * mark cached memslot data, e.g. MMIO accesses, as potentially being stale, 74 * memslot update is in-progress, and to prevent cache hits *after* updating 393 * The most recently used memslot by this vCPU and the slots generation 396 * thousands of years, even assuming 1M memslot operations per second. 569 * Since at idle each memslot belongs to two memslot sets it has to contain 572 * Two memslot sets (one active and one inactive) are necessary so the VM 573 * continues to run on one memslot set while the other is being modified. 575 * These two memslot set 615 kvm_dirty_bitmap_bytes(struct kvm_memory_slot *memslot) argument 620 kvm_second_dirty_bitmap(struct kvm_memory_slot *memslot) argument 2288 kvm_is_visible_memslot(struct kvm_memory_slot *memslot) argument [all...] |
H A D | kvm_types.h | 57 struct kvm_memory_slot *memslot; member in struct:gfn_to_hva_cache 64 struct kvm_memory_slot *memslot; member in struct:gfn_to_pfn_cache
|
/linux-master/arch/s390/kvm/ |
H A D | kvm-s390.c | 669 void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot) argument 678 cur_gfn = memslot->base_gfn; 679 last_gfn = memslot->base_gfn + memslot->npages; 682 vmaddr = gfn_to_hva_memslot(memslot, cur_gfn); 710 struct kvm_memory_slot *memslot; local 722 r = kvm_get_dirty_log(kvm, log, &is_dirty, &memslot); 728 n = kvm_dirty_bitmap_bytes(memslot); 729 memset(memslot->dirty_bitmap, 0, n); 2289 /* Reached the end of the current memslot, tak [all...] |
/linux-master/arch/powerpc/kvm/ |
H A D | book3s_hv.c | 966 /* Copy guest memory in place - must reside within a single memslot */ 5099 struct kvm_memory_slot *memslot; local 5112 memslot = id_to_memslot(slots, log->slot); 5114 if (!memslot || !memslot->dirty_bitmap) 5121 n = kvm_dirty_bitmap_bytes(memslot); 5122 buf = memslot->dirty_bitmap + n / sizeof(long); 5126 r = kvmppc_hv_get_dirty_log_radix(kvm, memslot, buf); 5128 r = kvmppc_hv_get_dirty_log_hpt(kvm, memslot, buf); 5134 * memslot' 5308 struct kvm_memory_slot *memslot; local 6267 struct kvm_memory_slot *memslot; local [all...] |
H A D | book3s_hv_nested.c | 797 struct kvm_memory_slot *memslot; local 817 kvm_for_each_memslot(memslot, bkt, kvm_memslots(kvm)) 818 kvmhv_free_memslot_nest_rmap(memslot); 1029 const struct kvm_memory_slot *memslot, 1036 if (!memslot) 1038 gfn = (gpa >> PAGE_SHIFT) - memslot->base_gfn; 1045 unsigned long *rmap = &memslot->arch.rmap[gfn]; 1519 struct kvm_memory_slot *memslot; local 1587 /* 1. Get the corresponding host memslot */ 1589 memslot 1028 kvmhv_remove_nest_rmap_range(struct kvm *kvm, const struct kvm_memory_slot *memslot, unsigned long gpa, unsigned long hpa, unsigned long nbytes) argument [all...] |
H A D | book3s_64_mmu_radix.c | 425 const struct kvm_memory_slot *memslot, 441 if (!memslot) { 442 memslot = gfn_to_memslot(kvm, gfn); 443 if (!memslot) 456 kvmhv_remove_nest_rmap_range(kvm, memslot, gpa, hpa, page_size); 458 if ((old & _PAGE_DIRTY) && memslot->dirty_bitmap) 459 kvmppc_update_dirty_map(memslot, gfn, page_size); 470 * turned off for a memslot while the VM is running. The new memslot 471 * becomes visible to page faults before the memslot commi 423 kvmppc_unmap_pte(struct kvm *kvm, pte_t *pte, unsigned long gpa, unsigned int shift, const struct kvm_memory_slot *memslot, u64 lpid) argument 821 kvmppc_book3s_instantiate_page(struct kvm_vcpu *vcpu, unsigned long gpa, struct kvm_memory_slot *memslot, bool writing, bool kvm_ro, pte_t *inserted_pte, unsigned int *levelp) argument 950 struct kvm_memory_slot *memslot; local 1032 kvm_unmap_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long gfn) argument 1051 kvm_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long gfn) argument 1079 kvm_test_age_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long gfn) argument 1098 kvm_radix_test_clear_dirty(struct kvm *kvm, struct kvm_memory_slot *memslot, int pagenum) argument 1153 kvmppc_hv_get_dirty_log_radix(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long *map) argument 1178 kvmppc_radix_flush_memslot(struct kvm *kvm, const struct kvm_memory_slot *memslot) argument [all...] |
H A D | book3s_64_vio.c | 359 struct kvm_memory_slot *memslot; local 361 memslot = __gfn_to_memslot(kvm_memslots(kvm), gfn); 362 if (!memslot) 365 *ua = __gfn_to_hva_memslot(memslot, gfn) |
|
H A D | book3s_pr.c | 1874 struct kvm_memory_slot *memslot; local 1883 r = kvm_get_dirty_log(kvm, log, &is_dirty, &memslot); 1889 ga = memslot->base_gfn << PAGE_SHIFT; 1890 ga_end = ga + (memslot->npages << PAGE_SHIFT); 1895 n = kvm_dirty_bitmap_bytes(memslot); 1896 memset(memslot->dirty_bitmap, 0, n); 1906 struct kvm_memory_slot *memslot) 1905 kvmppc_core_flush_memslot_pr(struct kvm *kvm, struct kvm_memory_slot *memslot) argument
|
H A D | book3s.c | 851 void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot) argument 866 void kvmppc_core_flush_memslot(struct kvm *kvm, struct kvm_memory_slot *memslot) argument 868 kvm->arch.kvm_ops->flush_memslot(kvm, memslot);
|
/linux-master/arch/loongarch/kvm/ |
H A D | mmu.c | 410 * memslot->userspace_addr: 415 * memslot->base_gfn << PAGE_SIZE: 637 static bool fault_supports_huge_mapping(struct kvm_memory_slot *memslot, argument 643 if (kvm_slot_dirty_track_enabled(memslot) && write) 646 if (kvm_hugepage_capable(memslot)) 649 if (kvm_hugepage_incapable(memslot)) 652 start = memslot->userspace_addr; 653 end = start + memslot->npages * PAGE_SIZE; 657 * by the memslot. This means we have to prohibit block size mappings 707 * Note, using the already-retrieved memslot an 809 struct kvm_memory_slot *memslot; local 948 kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot) argument 952 kvm_arch_flush_remote_tlbs_memslot(struct kvm *kvm, const struct kvm_memory_slot *memslot) argument [all...] |
/linux-master/tools/testing/selftests/kvm/lib/x86_64/ |
H A D | vmx.c | 500 uint32_t memslot) 504 memslot2region(vm, memslot); 499 nested_map_memslot(struct vmx_pages *vmx, struct kvm_vm *vm, uint32_t memslot) argument
|
/linux-master/arch/riscv/kvm/ |
H A D | mmu.c | 336 struct kvm_memory_slot *memslot = id_to_memslot(slots, slot); local 337 phys_addr_t start = memslot->base_gfn << PAGE_SHIFT; 338 phys_addr_t end = (memslot->base_gfn + memslot->npages) << PAGE_SHIFT; 405 void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot) argument 439 * At this point memslot has been committed and there is an 610 struct kvm_memory_slot *memslot, 621 bool logging = (memslot->dirty_bitmap && 622 !(memslot->flags & KVM_MEM_READONLY)) ? true : false; 609 kvm_riscv_gstage_map(struct kvm_vcpu *vcpu, struct kvm_memory_slot *memslot, gpa_t gpa, unsigned long hva, bool is_write) argument
|
/linux-master/arch/riscv/include/asm/ |
H A D | kvm_host.h | 333 struct kvm_memory_slot *memslot,
|
/linux-master/arch/loongarch/include/asm/ |
H A D | kvm_host.h | 239 void kvm_arch_flush_remote_tlbs_memslot(struct kvm *kvm, const struct kvm_memory_slot *memslot);
|
/linux-master/arch/powerpc/include/asm/ |
H A D | kvm_book3s_64.h | 66 * rmap entry in the memslot. The list is always terminated by a "single entry" 68 * a single entry then this is itself in the rmap entry of the memslot, not a 488 static inline bool slot_is_aligned(struct kvm_memory_slot *memslot, argument 495 return !(memslot->base_gfn & mask) && !(memslot->npages & mask); 635 const struct kvm_memory_slot *memslot,
|