Displaying 7 results from an estimated 7 matches for "nouveau_ivmm".
Did you mean:
nouveau_hmm
2020 Mar 03
2
[PATCH v2] nouveau/hmm: map pages after migration
...SVM_DBG(s,f,a...) NV_DEBUG((s)->drm, "svm: "f"\n", ##a)
#define SVM_ERR(s,f,a...) NV_WARN((s)->drm, "svm: "f"\n", ##a)
+struct nouveau_pfnmap_args {
+ struct nvif_ioctl_v0 i;
+ struct nvif_ioctl_mthd_v0 m;
+ struct nvif_vmm_pfnmap_v0 p;
+};
+
struct nouveau_ivmm {
struct nouveau_svmm *svmm;
u64 inst;
@@ -782,6 +788,85 @@ nouveau_svm_fault(struct nvif_notify *notify)
return NVIF_NOTIFY_KEEP;
}
+static inline struct nouveau_pfnmap_args *
+nouveau_pfns_to_args(void *pfns)
+{
+ struct nvif_vmm_pfnmap_v0 *p =
+ container_of(pfns, struct nvif_vmm_pfnma...
2019 Aug 07
4
[PATCH] nouveau/hmm: map pages after migration
...SVM_DBG(s,f,a...) NV_DEBUG((s)->drm, "svm: "f"\n", ##a)
#define SVM_ERR(s,f,a...) NV_WARN((s)->drm, "svm: "f"\n", ##a)
+struct nouveau_pfnmap_args {
+ struct nvif_ioctl_v0 i;
+ struct nvif_ioctl_mthd_v0 m;
+ struct nvif_vmm_pfnmap_v0 p;
+};
+
struct nouveau_ivmm {
struct nouveau_svmm *svmm;
u64 inst;
@@ -734,6 +740,86 @@ nouveau_svm_fault(struct nvif_notify *notify)
return NVIF_NOTIFY_KEEP;
}
+static inline struct nouveau_pfnmap_args *
+nouveau_pfns_to_args(void *pfns)
+{
+ struct nvif_vmm_pfnmap_v0 *p =
+ container_of(pfns, struct nvif_vmm_pfnma...
2019 Aug 13
0
[PATCH] nouveau/hmm: map pages after migration
...;svm: "f"\n", ##a)
> #define SVM_ERR(s,f,a...) NV_WARN((s)->drm, "svm: "f"\n", ##a)
>
> +struct nouveau_pfnmap_args {
> + struct nvif_ioctl_v0 i;
> + struct nvif_ioctl_mthd_v0 m;
> + struct nvif_vmm_pfnmap_v0 p;
> +};
> +
> struct nouveau_ivmm {
> struct nouveau_svmm *svmm;
> u64 inst;
> @@ -734,6 +740,86 @@ nouveau_svm_fault(struct nvif_notify *notify)
> return NVIF_NOTIFY_KEEP;
> }
>
> +static inline struct nouveau_pfnmap_args *
> +nouveau_pfns_to_args(void *pfns)
> +{
> + struct nvif_vmm_pfnmap_v...
2020 Mar 03
0
[PATCH v2] nouveau/hmm: map pages after migration
..., phys);
> +
> + return container_of(p, struct nouveau_pfnmap_args, p);
And this should just be
return container_of(pfns, struct nouveau_pfnmap_args, p.phys);
> +static struct nouveau_svmm *
> +nouveau_find_svmm(struct nouveau_svm *svm, struct mm_struct *mm)
> +{
> + struct nouveau_ivmm *ivmm;
> +
> + list_for_each_entry(ivmm, &svm->inst, head) {
> + if (ivmm->svmm->notifier.mm == mm)
> + return ivmm->svmm;
> + }
> + return NULL;
> +}
Is this re-implementing mmu_notifier_get() ?
Jason
2020 Mar 03
1
[PATCH v2] nouveau/hmm: map pages after migration
...u_pfnmap_args, p);
>
> And this should just be
>
> return container_of(pfns, struct nouveau_pfnmap_args, p.phys);
Much simpler, thanks.
>> +static struct nouveau_svmm *
>> +nouveau_find_svmm(struct nouveau_svm *svm, struct mm_struct *mm)
>> +{
>> + struct nouveau_ivmm *ivmm;
>> +
>> + list_for_each_entry(ivmm, &svm->inst, head) {
>> + if (ivmm->svmm->notifier.mm == mm)
>> + return ivmm->svmm;
>> + }
>> + return NULL;
>> +}
>
> Is this re-implementing mmu_notifier_get() ?
>
> Jason
Not qu...
2020 Mar 04
5
[PATCH v3 0/4] nouveau/hmm: map pages after migration
Originally patch 4 was targeted for Jason's rdma tree since other HMM
related changes were queued there. Now that those have been merged,
these patches just contain changes to nouveau so they could go through
any tree. I guess Ben Skeggs' tree would be appropriate.
Changes since v2:
Added patches 1-3 to fix some minor issues.
Eliminated nouveau_find_svmm() since it is easily found.
2020 May 08
11
[PATCH 0/6] nouveau/hmm: add support for mapping large pages
hmm_range_fault() returns an array of page frame numbers and flags for
how the pages are mapped in the requested process' page tables. The PFN
can be used to get the struct page with hmm_pfn_to_page() and the page size
order can be determined with compound_order(page) but if the page is larger
than order 0 (PAGE_SIZE), there is no indication that the page is mapped
using a larger page size. To