| /linux-6.15/drivers/iommu/iommufd/ |
| H A D | pages.c | 298 batch->pfns[0] = batch->pfns[batch->end - 1] + in batch_clear_carry() 323 if (!batch->pfns) in __batch_init() 1121 batch_from_xarray(&pfns->batch, &pfns->pages->pinned_pfns, in pfn_reader_fill_span() 1165 return pfns->batch_start_index == pfns->last_index + 1; in pfn_reader_done() 1173 pfns->batch_start_index = pfns->batch_end_index; in pfn_reader_next() 1175 while (pfns->batch_end_index != pfns->last_index + 1) { in pfn_reader_next() 1190 pfns->batch_start_index + pfns->batch.total_pfns; in pfn_reader_next() 1191 if (pfns->batch_end_index == pfns->span.last_used + 1) in pfn_reader_next() 1253 if (pfns->batch_start_index != pfns->batch_end_index) { in pfn_reader_release_pins() 1255 pfns->batch_start_index = pfns->batch_end_index; in pfn_reader_release_pins() [all …]
|
| H A D | selftest.c | 126 struct xarray pfns; member 315 ent = xa_load(&mock->pfns, cur / MOCK_IO_PAGE_SIZE); in mock_test_and_clear_dirty() 325 old = xa_store(&mock->pfns, cur / MOCK_IO_PAGE_SIZE, in mock_test_and_clear_dirty() 350 ent = xa_load(&mock->pfns, iova / MOCK_IO_PAGE_SIZE); in mock_domain_read_and_clear_dirty() 449 xa_init(&mock->pfns); in mock_domain_alloc_paging_flags() 460 WARN_ON(!xa_empty(&mock->pfns)); in mock_domain_free() 493 old = xa_store(&mock->pfns, iova / MOCK_IO_PAGE_SIZE, in mock_domain_map_pages() 500 xa_erase(&mock->pfns, in mock_domain_map_pages() 572 ent = xa_load(&mock->pfns, iova / MOCK_IO_PAGE_SIZE); in mock_domain_iova_to_phys() 1643 ent = xa_load(&mock->pfns, cur / page_size); in iommufd_test_dirty() [all …]
|
| /linux-6.15/drivers/xen/ |
| H A D | xlate_mmu.c | 193 xen_pfn_t *pfns; member 201 info->pfns[info->idx++] = gfn; in setup_balloon_gfn() 218 xen_pfn_t *pfns; in xen_xlate_map_ballooned_pages() local 230 pfns = kcalloc(nr_grant_frames, sizeof(pfns[0]), GFP_KERNEL); in xen_xlate_map_ballooned_pages() 231 if (!pfns) { in xen_xlate_map_ballooned_pages() 240 kfree(pfns); in xen_xlate_map_ballooned_pages() 244 data.pfns = pfns; in xen_xlate_map_ballooned_pages() 254 kfree(pfns); in xen_xlate_map_ballooned_pages() 259 *gfns = pfns; in xen_xlate_map_ballooned_pages()
|
| H A D | privcmd.c | 741 xen_pfn_t *pfns = NULL; in privcmd_ioctl_mmap_resource() local 776 pfns = kcalloc(kdata.num, sizeof(*pfns), GFP_KERNEL | __GFP_NOWARN); in privcmd_ioctl_mmap_resource() 777 if (!pfns) { in privcmd_ioctl_mmap_resource() 798 pfns[i] = pfn + (i % XEN_PFN_PER_PAGE); in privcmd_ioctl_mmap_resource() 805 set_xen_guest_handle(xdata.frame_list, pfns); in privcmd_ioctl_mmap_resource() 821 int num, *errs = (int *)pfns; in privcmd_ioctl_mmap_resource() 823 BUILD_BUG_ON(sizeof(*errs) > sizeof(*pfns)); in privcmd_ioctl_mmap_resource() 826 pfns, kdata.num, errs, in privcmd_ioctl_mmap_resource() 845 kfree(pfns); in privcmd_ioctl_mmap_resource()
|
| /linux-6.15/drivers/gpu/drm/amd/amdgpu/ |
| H A D | amdgpu_hmm.c | 177 unsigned long *pfns; in amdgpu_hmm_range_get_pages() local 184 pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL); in amdgpu_hmm_range_get_pages() 185 if (unlikely(!pfns)) { in amdgpu_hmm_range_get_pages() 194 hmm_range->hmm_pfns = pfns; in amdgpu_hmm_range_get_pages() 223 hmm_range->hmm_pfns = pfns; in amdgpu_hmm_range_get_pages() 231 pages[i] = hmm_pfn_to_page(pfns[i]); in amdgpu_hmm_range_get_pages() 238 kvfree(pfns); in amdgpu_hmm_range_get_pages()
|
| H A D | amdgpu_umc.h | 170 uint64_t pa_addr, uint64_t *pfns, int len);
|
| /linux-6.15/drivers/gpu/drm/xe/ |
| H A D | xe_hmm.c | 219 unsigned long *pfns; in xe_hmm_userptr_populate_range() local 254 pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL); in xe_hmm_userptr_populate_range() 255 if (unlikely(!pfns)) in xe_hmm_userptr_populate_range() 266 hmm_range.hmm_pfns = pfns; in xe_hmm_userptr_populate_range() 315 kvfree(pfns); in xe_hmm_userptr_populate_range() 323 kvfree(pfns); in xe_hmm_userptr_populate_range()
|
| /linux-6.15/drivers/gpu/drm/ |
| H A D | drm_gpusvm.c | 851 pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL); in drm_gpusvm_check_pages() 852 if (!pfns) in drm_gpusvm_check_pages() 882 kvfree(pfns); in drm_gpusvm_check_pages() 1352 pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL); in drm_gpusvm_range_get_pages() 1353 if (!pfns) in drm_gpusvm_range_get_pages() 1399 kvfree(pfns); in drm_gpusvm_range_get_pages() 1499 kvfree(pfns); in drm_gpusvm_range_get_pages() 1509 kvfree(pfns); in drm_gpusvm_range_get_pages() 2129 pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL); in drm_gpusvm_range_evict() 2130 if (!pfns) in drm_gpusvm_range_evict() [all …]
|
| /linux-6.15/tools/mm/ |
| H A D | thpmaps | 229 def thp_parse(vma, kpageflags, ranges, indexes, vfns, pfns, anons, heads): 399 pfns = pmes & PM_PFN_MASK 400 pfns = pfns[present] 404 pfn_vec = cont_ranges_all([pfns], [pfns])[0] 411 pfns = pfns[thps] 416 ranges = cont_ranges_all([vfns, pfns], [indexes, vfns, pfns]) 418 thpstats = thp_parse(vma, kpageflags, ranges, indexes, vfns, pfns, anons, heads)
|
| /linux-6.15/drivers/gpu/drm/i915/gem/ |
| H A D | i915_gem_pages.c | 334 unsigned long stack[32], *pfns = stack, i; in i915_gem_object_map_pfn() local 343 pfns = kvmalloc_array(n_pfn, sizeof(*pfns), GFP_KERNEL); in i915_gem_object_map_pfn() 344 if (!pfns) in i915_gem_object_map_pfn() 350 pfns[i++] = (iomap + addr) >> PAGE_SHIFT; in i915_gem_object_map_pfn() 351 vaddr = vmap_pfn(pfns, n_pfn, pgprot_writecombine(PAGE_KERNEL_IO)); in i915_gem_object_map_pfn() 352 if (pfns != stack) in i915_gem_object_map_pfn() 353 kvfree(pfns); in i915_gem_object_map_pfn()
|
| /linux-6.15/drivers/gpu/drm/nouveau/ |
| H A D | nouveau_svm.h | 34 void nouveau_pfns_free(u64 *pfns); 36 unsigned long addr, u64 *pfns, unsigned long npages);
|
| H A D | nouveau_dmem.c | 666 dma_addr_t *dma_addrs, u64 *pfns) in nouveau_dmem_migrate_chunk() argument 673 args->src[i], dma_addrs + nr_dma, pfns + i); in nouveau_dmem_migrate_chunk() 682 nouveau_pfns_map(svmm, args->vma->vm_mm, args->start, pfns, i); in nouveau_dmem_migrate_chunk() 708 u64 *pfns; in nouveau_dmem_migrate_vma() local 725 pfns = nouveau_pfns_alloc(max); in nouveau_dmem_migrate_vma() 726 if (!pfns) in nouveau_dmem_migrate_vma() 741 pfns); in nouveau_dmem_migrate_vma() 747 nouveau_pfns_free(pfns); in nouveau_dmem_migrate_vma()
|
| H A D | nouveau_svm.c | 896 nouveau_pfns_to_args(void *pfns) in nouveau_pfns_to_args() argument 898 return container_of(pfns, struct nouveau_pfnmap_args, p.phys); in nouveau_pfns_to_args() 918 nouveau_pfns_free(u64 *pfns) in nouveau_pfns_free() argument 920 struct nouveau_pfnmap_args *args = nouveau_pfns_to_args(pfns); in nouveau_pfns_free() 927 unsigned long addr, u64 *pfns, unsigned long npages) in nouveau_pfns_map() argument 929 struct nouveau_pfnmap_args *args = nouveau_pfns_to_args(pfns); in nouveau_pfns_map()
|
| /linux-6.15/drivers/dma-buf/ |
| H A D | udmabuf.c | 112 unsigned long *pfns; in vmap_udmabuf() local 122 pfns = kvmalloc_array(ubuf->pagecount, sizeof(*pfns), GFP_KERNEL); in vmap_udmabuf() 123 if (!pfns) in vmap_udmabuf() 130 pfns[pg] = pfn; in vmap_udmabuf() 133 vaddr = vmap_pfn(pfns, ubuf->pagecount, PAGE_KERNEL); in vmap_udmabuf() 134 kvfree(pfns); in vmap_udmabuf()
|
| /linux-6.15/drivers/virtio/ |
| H A D | virtio_balloon.c | 108 __virtio32 pfns[VIRTIO_BALLOON_ARRAY_PFNS_MAX]; member 188 sg_init_one(&sg, vb->pfns, sizeof(vb->pfns[0]) * vb->num_pfns); in tell_host() 227 __virtio32 pfns[], struct page *page) in set_page_pfns() argument 238 pfns[i] = cpu_to_virtio32(vb->vdev, in set_page_pfns() 250 num = min(num, ARRAY_SIZE(vb->pfns)); in fill_balloon() 275 set_page_pfns(vb, vb->pfns + vb->num_pfns, page); in fill_balloon() 314 num = min(num, ARRAY_SIZE(vb->pfns)); in leak_balloon() 324 set_page_pfns(vb, vb->pfns + vb->num_pfns, page); in leak_balloon() 865 set_page_pfns(vb, vb->pfns, newpage); in virtballoon_migratepage() 873 set_page_pfns(vb, vb->pfns, page); in virtballoon_migratepage()
|
| /linux-6.15/arch/powerpc/kvm/ |
| H A D | book3s_hv_uvmem.c | 230 unsigned long *pfns; member 255 p->pfns = vcalloc(slot->npages, sizeof(*p->pfns)); in kvmppc_uvmem_slot_init() 256 if (!p->pfns) { in kvmppc_uvmem_slot_init() 280 vfree(p->pfns); in kvmppc_uvmem_slot_free() 299 p->pfns[index] = uvmem_pfn | flag; in kvmppc_mark_gfn() 301 p->pfns[index] = flag; in kvmppc_mark_gfn() 342 if (p->pfns[index] & KVMPPC_GFN_UVMEM_PFN) { in kvmppc_gfn_is_uvmem_pfn() 344 *uvmem_pfn = p->pfns[index] & in kvmppc_gfn_is_uvmem_pfn() 382 if (!(p->pfns[index] & KVMPPC_GFN_FLAG_MASK)) { in kvmppc_next_nontransitioned_gfn()
|
| /linux-6.15/drivers/accel/amdxdna/ |
| H A D | amdxdna_gem.c | 124 kvfree(abo->mem.pfns); in amdxdna_hmm_unregister() 125 abo->mem.pfns = NULL; in amdxdna_hmm_unregister() 138 if (abo->mem.pfns) in amdxdna_hmm_register() 142 abo->mem.pfns = kvcalloc(nr_pages, sizeof(*abo->mem.pfns), in amdxdna_hmm_register() 144 if (!abo->mem.pfns) in amdxdna_hmm_register() 154 kvfree(abo->mem.pfns); in amdxdna_hmm_register()
|
| H A D | amdxdna_gem.h | 17 unsigned long *pfns; member
|
| /linux-6.15/mm/ |
| H A D | sparse.c | 195 unsigned long pfns; in subsection_map_init() local 197 pfns = min(nr_pages, PAGES_PER_SECTION in subsection_map_init() 200 subsection_mask_set(ms->usage->subsection_map, pfn, pfns); in subsection_map_init() 203 pfns, subsection_map_index(pfn), in subsection_map_init() 204 subsection_map_index(pfn + pfns - 1)); in subsection_map_init() 206 pfn += pfns; in subsection_map_init() 207 nr_pages -= pfns; in subsection_map_init()
|
| /linux-6.15/Documentation/translations/zh_CN/mm/ |
| H A D | hmm.rst | 165 /* Use pfns array content to update device page table, 179 的故障或快照策略,而不必为 pfns 数组中的每个条目设置它们。 193 range->pfns[index_of_write] = HMM_PFN_REQ_WRITE;
|
| H A D | memory-model.rst | 115 为给定的pfns范围执行足够的内存热插拔来开启 :c:func:`pfn_to_page`,
|
| /linux-6.15/lib/ |
| H A D | test_hmm.c | 210 unsigned long *pfns = range->hmm_pfns; in dmirror_do_fault() local 215 pfn++, pfns++) { in dmirror_do_fault() 223 WARN_ON(*pfns & HMM_PFN_ERROR); in dmirror_do_fault() 224 WARN_ON(!(*pfns & HMM_PFN_VALID)); in dmirror_do_fault() 226 page = hmm_pfn_to_page(*pfns); in dmirror_do_fault() 230 if (*pfns & HMM_PFN_WRITE) in dmirror_do_fault() 333 unsigned long pfns[64]; in dmirror_fault() local 336 .hmm_pfns = pfns, in dmirror_fault() 1147 unsigned long pfns[64]; in dmirror_snapshot() local 1151 .hmm_pfns = pfns, in dmirror_snapshot() [all …]
|
| /linux-6.15/drivers/iommu/ |
| H A D | iova.c | 575 unsigned long pfns[IOVA_MAG_SIZE]; member 626 struct iova *iova = private_find_iova(iovad, mag->pfns[i]); in iova_magazine_free_pfns() 657 for (i = mag->size - 1; mag->pfns[i] > limit_pfn; i--) in iova_magazine_pop() 662 pfn = mag->pfns[i]; in iova_magazine_pop() 663 mag->pfns[i] = mag->pfns[--mag->size]; in iova_magazine_pop() 670 mag->pfns[mag->size++] = pfn; in iova_magazine_push()
|
| /linux-6.15/arch/s390/include/asm/ |
| H A D | gmap.h | 139 void s390_uv_destroy_pfns(unsigned long count, unsigned long *pfns);
|
| /linux-6.15/include/xen/ |
| H A D | xen-ops.h | 189 int xen_xlate_map_ballooned_pages(xen_pfn_t **pfns, void **vaddr,
|