From: Jason Wang <jasowang@redhat.com> To: "Michael S. Tsirkin" <mst@redhat.com> Cc: kbuild test robot <lkp@intel.com>, kbuild-all@lists.01.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, rob.miller@broadcom.com, lingshan.zhu@intel.com, eperezma@redhat.com, lulu@redhat.com Subject: Re: [PATCH 4/6] vhost_vdpa: support doorbell mapping via mmap Date: Wed, 3 Jun 2020 12:18:44 +0800 [thread overview] Message-ID: <5db6b413-cb6c-a566-2f2d-ad580d8e165b@redhat.com> (raw) In-Reply-To: <20200602093025-mutt-send-email-mst@kernel.org> On 2020/6/2 下午9:31, Michael S. Tsirkin wrote: > On Tue, Jun 02, 2020 at 02:49:38PM +0800, Jason Wang wrote: >> On 2020/6/2 下午12:56, Michael S. Tsirkin wrote: >>> On Tue, Jun 02, 2020 at 03:22:49AM +0800, kbuild test robot wrote: >>>> Hi Jason, >>>> >>>> I love your patch! Yet something to improve: >>>> >>>> [auto build test ERROR on vhost/linux-next] >>>> [also build test ERROR on linus/master v5.7 next-20200529] >>>> [if your patch is applied to the wrong git tree, please drop us a note to help >>>> improve the system. BTW, we also suggest to use '--base' option to specify the >>>> base tree in git format-patch, please seehttps://stackoverflow.com/a/37406982] >>>> >>>> url:https://github.com/0day-ci/linux/commits/Jason-Wang/vDPA-doorbell-mapping/20200531-070834 >>>> base:https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git linux-next >>>> config: m68k-randconfig-r011-20200601 (attached as .config) >>>> compiler: m68k-linux-gcc (GCC) 9.3.0 >>>> reproduce (this is a W=1 build): >>>> wgethttps://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross >>>> chmod +x ~/bin/make.cross >>>> # save the attached .config to linux build tree >>>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k >>>> >>>> If you fix the issue, kindly add following tag as appropriate >>>> Reported-by: kbuild test robot<lkp@intel.com> >>>> >>>> All errors (new ones prefixed by >>, old ones prefixed by <<): >>>> >>>> drivers/vhost/vdpa.c: In function 'vhost_vdpa_fault': >>>>>> drivers/vhost/vdpa.c:754:22: error: implicit declaration of function 'pgprot_noncached' [-Werror=implicit-function-declaration] >>>> 754 | vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); >>>> | ^~~~~~~~~~~~~~~~ >>>>>> drivers/vhost/vdpa.c:754:22: error: incompatible types when assigning to type 'pgprot_t' {aka 'struct <anonymous>'} from type 'int' >>>> cc1: some warnings being treated as errors >>>> >>>> vim +/pgprot_noncached +754 drivers/vhost/vdpa.c >>>> >>>> 742 >>>> 743 static vm_fault_t vhost_vdpa_fault(struct vm_fault *vmf) >>>> 744 { >>>> 745 struct vhost_vdpa *v = vmf->vma->vm_file->private_data; >>>> 746 struct vdpa_device *vdpa = v->vdpa; >>>> 747 const struct vdpa_config_ops *ops = vdpa->config; >>>> 748 struct vdpa_notification_area notify; >>>> 749 struct vm_area_struct *vma = vmf->vma; >>>> 750 u16 index = vma->vm_pgoff; >>>> 751 >>>> 752 notify = ops->get_vq_notification(vdpa, index); >>>> 753 >>>> > 754 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); >>>> 755 if (remap_pfn_range(vma, vmf->address & PAGE_MASK, >>>> 756 notify.addr >> PAGE_SHIFT, PAGE_SIZE, >>>> 757 vma->vm_page_prot)) >>>> 758 return VM_FAULT_SIGBUS; >>>> 759 >>>> 760 return VM_FAULT_NOPAGE; >>>> 761 } >>>> 762 >>> Yes well, all this remapping clearly has no chance to work >>> on systems without CONFIG_MMU. >> >> It looks to me mmap can work according to Documentation/nommu-mmap.txt. But >> I'm not sure it's worth to bother. >> >> Thanks > > Well > > int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, > unsigned long pfn, unsigned long size, pgprot_t prot) > { > if (addr != (pfn << PAGE_SHIFT)) > return -EINVAL; > > vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP; > return 0; > } > EXPORT_SYMBOL(remap_pfn_range); > > > So things aren't going to work if you have a fixed PFN > which is the case of the hardware device. Looking at the implementation of some drivers e.g mtd_char. If I read the code correctly, we can do this by providing get_unmapped_area method and use physical address directly. But start form CONFIG_MMU should be fine. Do you prefer making vhost_vdpa depends on CONFIG_MMU or just fail mmap when CONFIG_MMU is not configured? Thanks > > >>> >>>
WARNING: multiple messages have this Message-ID (diff)
From: Jason Wang <jasowang@redhat.com> To: kbuild-all@lists.01.org Subject: Re: [PATCH 4/6] vhost_vdpa: support doorbell mapping via mmap Date: Wed, 03 Jun 2020 12:18:44 +0800 [thread overview] Message-ID: <5db6b413-cb6c-a566-2f2d-ad580d8e165b@redhat.com> (raw) In-Reply-To: <20200602093025-mutt-send-email-mst@kernel.org> [-- Attachment #1: Type: text/plain, Size: 4140 bytes --] On 2020/6/2 下午9:31, Michael S. Tsirkin wrote: > On Tue, Jun 02, 2020 at 02:49:38PM +0800, Jason Wang wrote: >> On 2020/6/2 下午12:56, Michael S. Tsirkin wrote: >>> On Tue, Jun 02, 2020 at 03:22:49AM +0800, kbuild test robot wrote: >>>> Hi Jason, >>>> >>>> I love your patch! Yet something to improve: >>>> >>>> [auto build test ERROR on vhost/linux-next] >>>> [also build test ERROR on linus/master v5.7 next-20200529] >>>> [if your patch is applied to the wrong git tree, please drop us a note to help >>>> improve the system. BTW, we also suggest to use '--base' option to specify the >>>> base tree in git format-patch, please seehttps://stackoverflow.com/a/37406982] >>>> >>>> url:https://github.com/0day-ci/linux/commits/Jason-Wang/vDPA-doorbell-mapping/20200531-070834 >>>> base:https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git linux-next >>>> config: m68k-randconfig-r011-20200601 (attached as .config) >>>> compiler: m68k-linux-gcc (GCC) 9.3.0 >>>> reproduce (this is a W=1 build): >>>> wgethttps://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross >>>> chmod +x ~/bin/make.cross >>>> # save the attached .config to linux build tree >>>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k >>>> >>>> If you fix the issue, kindly add following tag as appropriate >>>> Reported-by: kbuild test robot<lkp@intel.com> >>>> >>>> All errors (new ones prefixed by >>, old ones prefixed by <<): >>>> >>>> drivers/vhost/vdpa.c: In function 'vhost_vdpa_fault': >>>>>> drivers/vhost/vdpa.c:754:22: error: implicit declaration of function 'pgprot_noncached' [-Werror=implicit-function-declaration] >>>> 754 | vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); >>>> | ^~~~~~~~~~~~~~~~ >>>>>> drivers/vhost/vdpa.c:754:22: error: incompatible types when assigning to type 'pgprot_t' {aka 'struct <anonymous>'} from type 'int' >>>> cc1: some warnings being treated as errors >>>> >>>> vim +/pgprot_noncached +754 drivers/vhost/vdpa.c >>>> >>>> 742 >>>> 743 static vm_fault_t vhost_vdpa_fault(struct vm_fault *vmf) >>>> 744 { >>>> 745 struct vhost_vdpa *v = vmf->vma->vm_file->private_data; >>>> 746 struct vdpa_device *vdpa = v->vdpa; >>>> 747 const struct vdpa_config_ops *ops = vdpa->config; >>>> 748 struct vdpa_notification_area notify; >>>> 749 struct vm_area_struct *vma = vmf->vma; >>>> 750 u16 index = vma->vm_pgoff; >>>> 751 >>>> 752 notify = ops->get_vq_notification(vdpa, index); >>>> 753 >>>> > 754 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); >>>> 755 if (remap_pfn_range(vma, vmf->address & PAGE_MASK, >>>> 756 notify.addr >> PAGE_SHIFT, PAGE_SIZE, >>>> 757 vma->vm_page_prot)) >>>> 758 return VM_FAULT_SIGBUS; >>>> 759 >>>> 760 return VM_FAULT_NOPAGE; >>>> 761 } >>>> 762 >>> Yes well, all this remapping clearly has no chance to work >>> on systems without CONFIG_MMU. >> >> It looks to me mmap can work according to Documentation/nommu-mmap.txt. But >> I'm not sure it's worth to bother. >> >> Thanks > > Well > > int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, > unsigned long pfn, unsigned long size, pgprot_t prot) > { > if (addr != (pfn << PAGE_SHIFT)) > return -EINVAL; > > vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP; > return 0; > } > EXPORT_SYMBOL(remap_pfn_range); > > > So things aren't going to work if you have a fixed PFN > which is the case of the hardware device. Looking at the implementation of some drivers e.g mtd_char. If I read the code correctly, we can do this by providing get_unmapped_area method and use physical address directly. But start form CONFIG_MMU should be fine. Do you prefer making vhost_vdpa depends on CONFIG_MMU or just fail mmap when CONFIG_MMU is not configured? Thanks > > >>> >>>
next prev parent reply other threads:[~2020-06-03 4:19 UTC|newest] Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-05-29 8:02 [PATCH 0/6] vDPA: doorbell mapping Jason Wang 2020-05-29 8:02 ` Jason Wang 2020-05-29 8:02 ` [PATCH 1/6] vhost: allow device that does not depend on vhost worker Jason Wang 2020-05-29 8:02 ` Jason Wang 2020-06-02 5:01 ` Michael S. Tsirkin 2020-06-02 7:04 ` Jason Wang 2020-06-02 7:04 ` Jason Wang 2020-05-29 8:02 ` [PATCH 2/6] vhost: use mmgrab() instead of mmget() for non worker device Jason Wang 2020-05-29 8:03 ` [PATCH 3/6] vdpa: introduce get_vq_notification method Jason Wang 2020-05-29 8:03 ` Jason Wang 2020-05-29 8:03 ` [PATCH 4/6] vhost_vdpa: support doorbell mapping via mmap Jason Wang 2020-05-29 9:16 ` Mika Penttilä 2020-05-29 9:24 ` Jason Wang 2020-05-29 18:30 ` Rob Miller 2020-05-29 18:30 ` [virtio-dev] " Rob Miller 2020-06-02 2:04 ` Jason Wang 2020-06-02 2:04 ` Jason Wang 2020-06-02 2:04 ` Jason Wang 2020-06-01 19:22 ` kbuild test robot 2020-06-01 19:22 ` kbuild test robot 2020-06-01 19:22 ` kbuild test robot 2020-06-02 4:56 ` Michael S. Tsirkin 2020-06-02 4:56 ` Michael S. Tsirkin 2020-06-02 6:49 ` Jason Wang 2020-06-02 6:49 ` Jason Wang 2020-06-02 13:31 ` Michael S. Tsirkin 2020-06-02 13:31 ` Michael S. Tsirkin 2020-06-03 4:18 ` Jason Wang [this message] 2020-06-03 4:18 ` Jason Wang 2020-06-03 6:34 ` Michael S. Tsirkin 2020-06-03 6:34 ` Michael S. Tsirkin 2020-06-03 6:37 ` Jason Wang 2020-06-03 6:37 ` Jason Wang 2020-05-29 8:03 ` [PATCH 5/6] vdpa: introduce virtio pci driver Jason Wang 2020-05-29 8:03 ` Jason Wang 2020-06-02 5:08 ` Michael S. Tsirkin 2020-06-02 7:08 ` Jason Wang 2020-06-05 8:54 ` Jason Wang 2020-06-05 8:54 ` Jason Wang 2020-06-07 13:51 ` Michael S. Tsirkin 2020-06-07 13:51 ` Michael S. Tsirkin 2020-06-08 3:32 ` Jason Wang 2020-06-08 3:32 ` Jason Wang 2020-06-08 6:32 ` Michael S. Tsirkin 2020-06-08 9:18 ` Jason Wang 2020-06-08 9:31 ` Michael S. Tsirkin 2020-06-08 9:43 ` Jason Wang 2020-06-08 9:45 ` Michael S. Tsirkin 2020-06-08 9:45 ` Michael S. Tsirkin 2020-06-08 9:46 ` Jason Wang 2020-06-08 9:54 ` Michael S. Tsirkin 2020-06-08 10:07 ` Jason Wang 2020-06-08 13:29 ` Michael S. Tsirkin 2020-06-08 13:29 ` Michael S. Tsirkin 2020-06-09 5:55 ` Jason Wang 2020-06-02 5:09 ` Michael S. Tsirkin 2020-06-02 7:12 ` Jason Wang 2020-06-04 18:50 ` Michael S. Tsirkin 2020-05-29 8:03 ` [PATCH 6/6] vdpa: vp_vdpa: report doorbell location Jason Wang 2020-05-29 8:03 ` Jason Wang
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=5db6b413-cb6c-a566-2f2d-ad580d8e165b@redhat.com \ --to=jasowang@redhat.com \ --cc=eperezma@redhat.com \ --cc=kbuild-all@lists.01.org \ --cc=kvm@vger.kernel.org \ --cc=lingshan.zhu@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=lkp@intel.com \ --cc=lulu@redhat.com \ --cc=mst@redhat.com \ --cc=netdev@vger.kernel.org \ --cc=rob.miller@broadcom.com \ --cc=virtualization@lists.linux-foundation.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.