diff mbox series

[v7,10/11] device-dax: remove pfn from __dev_dax_{pte,pmd,pud}_fault()

Message ID 20211202204422.26777-11-joao.m.martins@oracle.com (mailing list archive)
State New
Headers show
Series mm, device-dax: Introduce compound pages in devmap | expand

Commit Message

Joao Martins Dec. 2, 2021, 8:44 p.m. UTC
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.

Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
---
 drivers/dax/device.c | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

Comments

kernel test robot Dec. 3, 2021, 7:30 a.m. UTC | #1
Hi Joao,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on hnaz-mm/master]

url:    https://github.com/0day-ci/linux/commits/Joao-Martins/mm-device-dax-Introduce-compound-pages-in-devmap/20211203-044722
base:   https://github.com/hnaz/linux-mm master
config: i386-randconfig-a013-20211202 (https://download.01.org/0day-ci/archive/20211203/202112031508.uJvmXK7U-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/ca6ce8fa76f139a8d4021fc95ce7ba1ebb7a06e2
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Joao-Martins/mm-device-dax-Introduce-compound-pages-in-devmap/20211203-044722
        git checkout ca6ce8fa76f139a8d4021fc95ce7ba1ebb7a06e2
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/dax/device.c: In function 'dev_dax_huge_fault':
>> drivers/dax/device.c:246:8: error: too few arguments to function '__dev_dax_pud_fault'
     246 |   rc = __dev_dax_pud_fault(dev_dax, vmf);
         |        ^~~~~~~~~~~~~~~~~~~
   drivers/dax/device.c:218:19: note: declared here
     218 | static vm_fault_t __dev_dax_pud_fault(struct dev_dax *dev_dax,
         |                   ^~~~~~~~~~~~~~~~~~~
   drivers/dax/device.c: At top level:
   drivers/dax/device.c:394:5: warning: no previous prototype for 'dev_dax_probe' [-Wmissing-prototypes]
     394 | int dev_dax_probe(struct dev_dax *dev_dax)
         |     ^~~~~~~~~~~~~


vim +/__dev_dax_pud_fault +246 drivers/dax/device.c

   224	
   225	static vm_fault_t dev_dax_huge_fault(struct vm_fault *vmf,
   226			enum page_entry_size pe_size)
   227	{
   228		struct file *filp = vmf->vma->vm_file;
   229		vm_fault_t rc = VM_FAULT_SIGBUS;
   230		int id;
   231		struct dev_dax *dev_dax = filp->private_data;
   232	
   233		dev_dbg(&dev_dax->dev, "%s: %s (%#lx - %#lx) size = %d\n", current->comm,
   234				(vmf->flags & FAULT_FLAG_WRITE) ? "write" : "read",
   235				vmf->vma->vm_start, vmf->vma->vm_end, pe_size);
   236	
   237		id = dax_read_lock();
   238		switch (pe_size) {
   239		case PE_SIZE_PTE:
   240			rc = __dev_dax_pte_fault(dev_dax, vmf);
   241			break;
   242		case PE_SIZE_PMD:
   243			rc = __dev_dax_pmd_fault(dev_dax, vmf);
   244			break;
   245		case PE_SIZE_PUD:
 > 246			rc = __dev_dax_pud_fault(dev_dax, vmf);
   247			break;
   248		default:
   249			rc = VM_FAULT_SIGBUS;
   250		}
   251	
   252		dax_read_unlock(id);
   253	
   254		return rc;
   255	}
   256	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff mbox series

Patch

diff --git a/drivers/dax/device.c b/drivers/dax/device.c
index 19a6b86486ce..914368164e05 100644
--- a/drivers/dax/device.c
+++ b/drivers/dax/device.c
@@ -95,10 +95,11 @@  static void dax_set_mapping(struct vm_fault *vmf, pfn_t pfn,
 }
 
 static vm_fault_t __dev_dax_pte_fault(struct dev_dax *dev_dax,
-				struct vm_fault *vmf, pfn_t *pfn)
+				struct vm_fault *vmf)
 {
 	struct device *dev = &dev_dax->dev;
 	phys_addr_t phys;
+	pfn_t pfn;
 	unsigned int fault_size = PAGE_SIZE;
 
 	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,
 		return VM_FAULT_SIGBUS;
 	}
 
-	*pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
+	pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
 
-	dax_set_mapping(vmf, *pfn, fault_size);
+	dax_set_mapping(vmf, pfn, fault_size);
 
-	return vmf_insert_mixed(vmf->vma, vmf->address, *pfn);
+	return vmf_insert_mixed(vmf->vma, vmf->address, pfn);
 }
 
 static vm_fault_t __dev_dax_pmd_fault(struct dev_dax *dev_dax,
-				struct vm_fault *vmf, pfn_t *pfn)
+				struct vm_fault *vmf)
 {
 	unsigned long pmd_addr = vmf->address & PMD_MASK;
 	struct device *dev = &dev_dax->dev;
 	phys_addr_t phys;
 	pgoff_t pgoff;
+	pfn_t pfn;
 	unsigned int fault_size = PMD_SIZE;
 
 	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,
 		return VM_FAULT_SIGBUS;
 	}
 
-	*pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
+	pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
 
-	dax_set_mapping(vmf, *pfn, fault_size);
+	dax_set_mapping(vmf, pfn, fault_size);
 
-	return vmf_insert_pfn_pmd(vmf, *pfn, vmf->flags & FAULT_FLAG_WRITE);
+	return vmf_insert_pfn_pmd(vmf, pfn, vmf->flags & FAULT_FLAG_WRITE);
 }
 
 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
 static vm_fault_t __dev_dax_pud_fault(struct dev_dax *dev_dax,
-				struct vm_fault *vmf, pfn_t *pfn)
+				struct vm_fault *vmf)
 {
 	unsigned long pud_addr = vmf->address & PUD_MASK;
 	struct device *dev = &dev_dax->dev;
 	phys_addr_t phys;
 	pgoff_t pgoff;
+	pfn_t pfn;
 	unsigned int fault_size = PUD_SIZE;
 
 
@@ -205,11 +208,11 @@  static vm_fault_t __dev_dax_pud_fault(struct dev_dax *dev_dax,
 		return VM_FAULT_SIGBUS;
 	}
 
-	*pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
+	pfn = phys_to_pfn_t(phys, PFN_DEV|PFN_MAP);
 
-	dax_set_mapping(vmf, *pfn, fault_size);
+	dax_set_mapping(vmf, pfn, fault_size);
 
-	return vmf_insert_pfn_pud(vmf, *pfn, vmf->flags & FAULT_FLAG_WRITE);
+	return vmf_insert_pfn_pud(vmf, pfn, vmf->flags & FAULT_FLAG_WRITE);
 }
 #else
 static vm_fault_t __dev_dax_pud_fault(struct dev_dax *dev_dax,
@@ -225,7 +228,6 @@  static vm_fault_t dev_dax_huge_fault(struct vm_fault *vmf,
 	struct file *filp = vmf->vma->vm_file;
 	vm_fault_t rc = VM_FAULT_SIGBUS;
 	int id;
-	pfn_t pfn;
 	struct dev_dax *dev_dax = filp->private_data;
 
 	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,
 	id = dax_read_lock();
 	switch (pe_size) {
 	case PE_SIZE_PTE:
-		rc = __dev_dax_pte_fault(dev_dax, vmf, &pfn);
+		rc = __dev_dax_pte_fault(dev_dax, vmf);
 		break;
 	case PE_SIZE_PMD:
-		rc = __dev_dax_pmd_fault(dev_dax, vmf, &pfn);
+		rc = __dev_dax_pmd_fault(dev_dax, vmf);
 		break;
 	case PE_SIZE_PUD:
-		rc = __dev_dax_pud_fault(dev_dax, vmf, &pfn);
+		rc = __dev_dax_pud_fault(dev_dax, vmf);
 		break;
 	default:
 		rc = VM_FAULT_SIGBUS;