Lines Matching refs:p2pdma
11 #define pr_fmt(fmt) "pci-p2pdma: " fmt
14 #include <linux/pci-p2pdma.h>
45 struct pci_p2pdma *p2pdma;
49 p2pdma = rcu_dereference(pdev->p2pdma);
50 if (p2pdma && p2pdma->pool)
51 size = gen_pool_size(p2pdma->pool);
62 struct pci_p2pdma *p2pdma;
66 p2pdma = rcu_dereference(pdev->p2pdma);
67 if (p2pdma && p2pdma->pool)
68 avail = gen_pool_avail(p2pdma->pool);
79 struct pci_p2pdma *p2pdma;
83 p2pdma = rcu_dereference(pdev->p2pdma);
84 if (p2pdma)
85 published = p2pdma->p2pmem_published;
97 struct pci_p2pdma *p2pdma;
119 p2pdma = rcu_dereference(pdev->p2pdma);
120 if (!p2pdma) {
125 kaddr = (void *)gen_pool_alloc_owner(p2pdma->pool, len, (void **)&ref);
145 gen_pool_free(p2pdma->pool, (uintptr_t)kaddr, len);
158 gen_pool_free(p2pdma->pool, (uintptr_t)kaddr, len);
198 struct pci_p2pdma *p2pdma =
199 rcu_dereference_protected(pgmap->provider->p2pdma, 1);
202 gen_pool_free_owner(p2pdma->pool, (uintptr_t)page_to_virt(page),
214 struct pci_p2pdma *p2pdma;
216 p2pdma = rcu_dereference_protected(pdev->p2pdma, 1);
217 if (!p2pdma)
221 pdev->p2pdma = NULL;
224 gen_pool_destroy(p2pdma->pool);
226 xa_destroy(&p2pdma->map_types);
252 rcu_assign_pointer(pdev->p2pdma, p2p);
290 struct pci_p2pdma *p2pdma;
306 if (!pdev->p2pdma) {
338 p2pdma = rcu_dereference_protected(pdev->p2pdma, 1);
339 error = gen_pool_add_owner(p2pdma->pool, (unsigned long)addr,
417 /* Any AMD CPU whose family ID is Zen or newer supports p2pdma */
581 struct pci_p2pdma *p2pdma;
661 p2pdma = rcu_dereference(provider->p2pdma);
662 if (p2pdma)
663 xa_store(&p2pdma->map_types, map_types_idx(client),
671 * a p2pdma provider and the clients in use.
672 * @provider: p2pdma provider to check against the client list
734 struct pci_p2pdma *p2pdma;
738 p2pdma = rcu_dereference(pdev->p2pdma);
739 res = p2pdma && p2pdma->p2pmem_published;
821 struct pci_p2pdma *p2pdma;
825 * ensure pdev->p2pdma is non-NULL for the duration of the
829 p2pdma = rcu_dereference(pdev->p2pdma);
830 if (unlikely(!p2pdma))
833 ret = (void *)gen_pool_alloc_owner(p2pdma->pool, size, (void **) &ref);
838 gen_pool_free(p2pdma->pool, (unsigned long) ret, size);
857 struct pci_p2pdma *p2pdma = rcu_dereference_protected(pdev->p2pdma, 1);
859 gen_pool_free_owner(p2pdma->pool, (uintptr_t)addr, size,
873 struct pci_p2pdma *p2pdma;
878 p2pdma = rcu_dereference_protected(pdev->p2pdma, 1);
879 if (!p2pdma)
887 return gen_pool_virt_to_phys(p2pdma->pool, (unsigned long)addr);
958 struct pci_p2pdma *p2pdma;
961 p2pdma = rcu_dereference(pdev->p2pdma);
962 if (p2pdma)
963 p2pdma->p2pmem_published = publish;
974 struct pci_p2pdma *p2pdma;
977 if (!provider->p2pdma)
986 p2pdma = rcu_dereference(provider->p2pdma);
988 if (p2pdma)
989 type = xa_to_value(xa_load(&p2pdma->map_types,
1037 * to enable p2pdma
1041 * @use_p2pdma: returns whether to enable p2pdma or not
1043 * Parses an attribute value to decide whether to enable p2pdma.
1046 * value disables p2pdma, a true value expects the caller
1092 * whether p2pdma is enabled
1095 * @use_p2pdma: whether p2pdma has been enabled