Skip to content

Commit 6ec228b

Browse files
jpemartinstorvalds
authored andcommitted
device-dax: remove pfn from __dev_dax_{pte,pmd,pud}_fault()
After moving the page mapping to be set prior to pte insertion, the pfn in dev_dax_huge_fault() no longer is necessary. Remove it, as well as the @pfn argument passed to the internal fault handler helpers. [akpm@linux-foundation.org: fix CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=n build] Link: https://lkml.kernel.org/r/20211202204422.26777-11-joao.m.martins@oracle.com Signed-off-by: Joao Martins <joao.m.martins@oracle.com> Suggested-by: Christoph Hellwig <hch@lst.de> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Dave Jiang <dave.jiang@intel.com> Cc: Jane Chu <jane.chu@oracle.com> Cc: Jason Gunthorpe <jgg@nvidia.com> Cc: Jason Gunthorpe <jgg@ziepe.ca> Cc: John Hubbard <jhubbard@nvidia.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Mike Kravetz <mike.kravetz@oracle.com> Cc: Muchun Song <songmuchun@bytedance.com> Cc: Naoya Horiguchi <naoya.horiguchi@nec.com> Cc: Vishal Verma <vishal.l.verma@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 0e7325f commit 6ec228b

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

drivers/dax/device.c

+19-17
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,11 @@ static void dax_set_mapping(struct vm_fault *vmf, pfn_t pfn,
9595
}
9696

9797
static vm_fault_t __dev_dax_pte_fault(struct dev_dax *dev_dax,
98-
struct vm_fault *vmf, pfn_t *pfn)
98+
struct vm_fault *vmf)
9999
{
100100
struct device *dev = &dev_dax->dev;
101101
phys_addr_t phys;
102+
pfn_t pfn;
102103
unsigned int fault_size = PAGE_SIZE;
103104

104105
if (check_vma(dev_dax, vmf->vma, __func__))
@@ -119,20 +120,21 @@ static vm_fault_t __dev_dax_pte_fault(struct dev_dax *dev_dax,
119120
return VM_FAULT_SIGBUS;
120121
}
121122

122-
*pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
123+
pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
123124

124-
dax_set_mapping(vmf, *pfn, fault_size);
125+
dax_set_mapping(vmf, pfn, fault_size);
125126

126-
return vmf_insert_mixed(vmf->vma, vmf->address, *pfn);
127+
return vmf_insert_mixed(vmf->vma, vmf->address, pfn);
127128
}
128129

129130
static vm_fault_t __dev_dax_pmd_fault(struct dev_dax *dev_dax,
130-
struct vm_fault *vmf, pfn_t *pfn)
131+
struct vm_fault *vmf)
131132
{
132133
unsigned long pmd_addr = vmf->address & PMD_MASK;
133134
struct device *dev = &dev_dax->dev;
134135
phys_addr_t phys;
135136
pgoff_t pgoff;
137+
pfn_t pfn;
136138
unsigned int fault_size = PMD_SIZE;
137139

138140
if (check_vma(dev_dax, vmf->vma, __func__))
@@ -161,21 +163,22 @@ static vm_fault_t __dev_dax_pmd_fault(struct dev_dax *dev_dax,
161163
return VM_FAULT_SIGBUS;
162164
}
163165

164-
*pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
166+
pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
165167

166-
dax_set_mapping(vmf, *pfn, fault_size);
168+
dax_set_mapping(vmf, pfn, fault_size);
167169

168-
return vmf_insert_pfn_pmd(vmf, *pfn, vmf->flags & FAULT_FLAG_WRITE);
170+
return vmf_insert_pfn_pmd(vmf, pfn, vmf->flags & FAULT_FLAG_WRITE);
169171
}
170172

171173
#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
172174
static vm_fault_t __dev_dax_pud_fault(struct dev_dax *dev_dax,
173-
struct vm_fault *vmf, pfn_t *pfn)
175+
struct vm_fault *vmf)
174176
{
175177
unsigned long pud_addr = vmf->address & PUD_MASK;
176178
struct device *dev = &dev_dax->dev;
177179
phys_addr_t phys;
178180
pgoff_t pgoff;
181+
pfn_t pfn;
179182
unsigned int fault_size = PUD_SIZE;
180183

181184

@@ -205,15 +208,15 @@ static vm_fault_t __dev_dax_pud_fault(struct dev_dax *dev_dax,
205208
return VM_FAULT_SIGBUS;
206209
}
207210

208-
*pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
211+
pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
209212

210-
dax_set_mapping(vmf, *pfn, fault_size);
213+
dax_set_mapping(vmf, pfn, fault_size);
211214

212-
return vmf_insert_pfn_pud(vmf, *pfn, vmf->flags & FAULT_FLAG_WRITE);
215+
return vmf_insert_pfn_pud(vmf, pfn, vmf->flags & FAULT_FLAG_WRITE);
213216
}
214217
#else
215218
static vm_fault_t __dev_dax_pud_fault(struct dev_dax *dev_dax,
216-
struct vm_fault *vmf, pfn_t *pfn)
219+
struct vm_fault *vmf)
217220
{
218221
return VM_FAULT_FALLBACK;
219222
}
@@ -225,7 +228,6 @@ static vm_fault_t dev_dax_huge_fault(struct vm_fault *vmf,
225228
struct file *filp = vmf->vma->vm_file;
226229
vm_fault_t rc = VM_FAULT_SIGBUS;
227230
int id;
228-
pfn_t pfn;
229231
struct dev_dax *dev_dax = filp->private_data;
230232

231233
dev_dbg(&dev_dax->dev, "%s: %s (%#lx - %#lx) size = %d\n", current->comm,
@@ -235,13 +237,13 @@ static vm_fault_t dev_dax_huge_fault(struct vm_fault *vmf,
235237
id = dax_read_lock();
236238
switch (pe_size) {
237239
case PE_SIZE_PTE:
238-
rc = __dev_dax_pte_fault(dev_dax, vmf, &pfn);
240+
rc = __dev_dax_pte_fault(dev_dax, vmf);
239241
break;
240242
case PE_SIZE_PMD:
241-
rc = __dev_dax_pmd_fault(dev_dax, vmf, &pfn);
243+
rc = __dev_dax_pmd_fault(dev_dax, vmf);
242244
break;
243245
case PE_SIZE_PUD:
244-
rc = __dev_dax_pud_fault(dev_dax, vmf, &pfn);
246+
rc = __dev_dax_pud_fault(dev_dax, vmf);
245247
break;
246248
default:
247249
rc = VM_FAULT_SIGBUS;

0 commit comments

Comments
 (0)