Re: [PATCH v5 3/9] powerpc/vas: Add paste address mmap fault handler
From: kernel test robot <hidden>
Date: 2022-02-28 17:37:06
Hi Haren, I love your patch! Perhaps something to improve: [auto build test WARNING on powerpc/next] [also build test WARNING on v5.17-rc6 next-20220225] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Haren-Myneni/powerpc-pseries-vas-NXGZIP-support-with-DLPAR/20220228-154814 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: powerpc64-randconfig-s031-20220227 (https://download.01.org/0day-ci/archive/20220228/202202281913.4N2Af10e-lkp@intel.com/config) compiler: powerpc64-linux-gcc (GCC) 11.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-dirty # https://github.com/0day-ci/linux/commit/336150efb288e945786ca6d54b0eb7d9c956aad8 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Haren-Myneni/powerpc-pseries-vas-NXGZIP-support-with-DLPAR/20220228-154814 git checkout 336150efb288e945786ca6d54b0eb7d9c956aad8 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=powerpc SHELL=/bin/bash arch/powerpc/platforms/book3s/ arch/powerpc/platforms/pseries/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <redacted> sparse warnings: (new ones prefixed by >>)
quoted
arch/powerpc/platforms/book3s/vas-api.c:403:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected int ret @@ got restricted vm_fault_t @@
arch/powerpc/platforms/book3s/vas-api.c:403:29: sparse: expected int ret arch/powerpc/platforms/book3s/vas-api.c:403:29: sparse: got restricted vm_fault_t
quoted
arch/powerpc/platforms/book3s/vas-api.c:406:32: sparse: sparse: incorrect type in return expression (different base types) @@ expected restricted vm_fault_t @@ got int ret @@
arch/powerpc/platforms/book3s/vas-api.c:406:32: sparse: expected restricted vm_fault_t
arch/powerpc/platforms/book3s/vas-api.c:406:32: sparse: got int ret
vim +403 arch/powerpc/platforms/book3s/vas-api.c
353
354 /*
355 * This fault handler is invoked when the core generates page fault on
356 * the paste address. Happens if the kernel closes window in hypervisor
357 * (on pseries) due to lost credit or the paste address is not mapped.
358 */
359 static vm_fault_t vas_mmap_fault(struct vm_fault *vmf)
360 {
361 struct vm_area_struct *vma = vmf->vma;
362 struct file *fp = vma->vm_file;
363 struct coproc_instance *cp_inst = fp->private_data;
364 struct vas_window *txwin;
365 u64 paste_addr;
366 int ret;
367
368 /*
369 * window is not opened. Shouldn't expect this error.
370 */
371 if (!cp_inst || !cp_inst->txwin) {
372 pr_err("%s(): Unexpected fault on paste address with TX window closed\n",
373 __func__);
374 return VM_FAULT_SIGBUS;
375 }
376
377 txwin = cp_inst->txwin;
378 /*
379 * When the LPAR lost credits due to core removal or during
380 * migration, invalidate the existing mapping for the current
381 * paste addresses and set windows in-active (zap_page_range in
382 * reconfig_close_windows()).
383 * New mapping will be done later after migration or new credits
384 * available. So continue to receive faults if the user space
385 * issue NX request.
386 */
387 if (txwin->task_ref.vma != vmf->vma) {
388 pr_err("%s(): No previous mapping with paste address\n",
389 __func__);
390 return VM_FAULT_SIGBUS;
391 }
392
393 mutex_lock(&txwin->task_ref.mmap_mutex);
394 /*
395 * The window may be inactive due to lost credit (Ex: core
396 * removal with DLPAR). If the window is active again when
397 * the credit is available, map the new paste address at the
398 * the window virtual address.
399 */
400 if (txwin->status == VAS_WIN_ACTIVE) {
401 paste_addr = cp_inst->coproc->vops->paste_addr(txwin);
402 if (paste_addr) {
> 403 ret = vmf_insert_pfn(vma, vma->vm_start,
404 (paste_addr >> PAGE_SHIFT));
405 mutex_unlock(&txwin->task_ref.mmap_mutex);
> 406 return ret;
407 }
408 }
409 mutex_unlock(&txwin->task_ref.mmap_mutex);
410
411 return VM_FAULT_SIGBUS;
412
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org