From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate.crashing.org ([63.228.1.57]:57842 "EHLO gate.crashing.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753195AbcADWV2 (ORCPT ); Mon, 4 Jan 2016 17:21:28 -0500 Message-ID: <1451943775.12575.6.camel@kernel.crashing.org> Subject: Re: [RFC PATCH v2 3/3] vfio-pci: Allow to mmap MSI-X table if EEH is supported From: Benjamin Herrenschmidt To: Alex Williamson , Yongji Xie , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-doc@vger.kernel.org Cc: bhelgaas@google.com, corbet@lwn.net, aik@ozlabs.ru, paulus@samba.org, mpe@ellerman.id.au, warrier@linux.vnet.ibm.com, zhong@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com Date: Tue, 05 Jan 2016 08:42:55 +1100 In-Reply-To: <1451941655.6585.8.camel@redhat.com> References: <1451551844-11732-1-git-send-email-xyjxie@linux.vnet.ibm.com> <1451551844-11732-4-git-send-email-xyjxie@linux.vnet.ibm.com> <1451941655.6585.8.camel@redhat.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org List-ID: On Mon, 2016-01-04 at 14:07 -0700, Alex Williamson wrote: > On Thu, 2015-12-31 at 16:50 +0800, Yongji Xie wrote: > > Current vfio-pci implementation disallows to mmap MSI-X > > table in case that user get to touch this directly. > > > > However, EEH mechanism can ensure that a given pci device > > can only shoot the MSIs assigned for its PE. So we think > > it's safe to expose the MSI-X table to userspace because > > the exposed MSI-X table can't be used to do harm to other > > memory space. > > > > And with MSI-X table mmapped, some performance issues which > > are caused when PCI adapters have critical registers in the > > same page as the MSI-X table also can be resolved. > > > > So this patch adds a Kconfig option, VFIO_PCI_MMAP_MSIX, > > to support for mmapping MSI-X table. > > > > Signed-off-by: Yongji Xie > > --- > >  drivers/vfio/pci/Kconfig    |    4 ++++ > >  drivers/vfio/pci/vfio_pci.c |    6 ++++-- > >  2 files changed, 8 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/vfio/pci/Kconfig b/drivers/vfio/pci/Kconfig > > index 02912f1..67b0a2c 100644 > > --- a/drivers/vfio/pci/Kconfig > > +++ b/drivers/vfio/pci/Kconfig > > @@ -23,6 +23,10 @@ config VFIO_PCI_MMAP > >   depends on VFIO_PCI > >   def_bool y if !S390 > >   > > +config VFIO_PCI_MMAP_MSIX > > + depends on VFIO_PCI_MMAP > > + def_bool y if EEH > > Does CONFIG_EEH necessarily mean the EEH is enabled?  Could the > system > not support EEH or could EEH be disabled via kernel commandline > options? EEH is definitely the wrong thing to test here anyway. What needs to be tested is that the PCI Host bridge supports filtering of MSIs, so ideally this should be some kind of host bridge attribute set by the architecture backend. This can happen with or without CONFIG_EEH and you are right, CONFIG_EEH can be enabled and the machine not support it. Any IODA bridge will support this. Cheers, Ben. > > + > >  config VFIO_PCI_INTX > >   depends on VFIO_PCI > >   def_bool y if !S390 > > diff --git a/drivers/vfio/pci/vfio_pci.c > > b/drivers/vfio/pci/vfio_pci.c > > index 09b3805..d536985 100644 > > --- a/drivers/vfio/pci/vfio_pci.c > > +++ b/drivers/vfio/pci/vfio_pci.c > > @@ -555,7 +555,8 @@ static long vfio_pci_ioctl(void *device_data, > >       IORESOURCE_MEM && (info.size >= > > PAGE_SIZE || > >       pci_resource_page_aligned)) { > >   info.flags |= > > VFIO_REGION_INFO_FLAG_MMAP; > > - if (info.index == vdev->msix_bar) > > { > > + if > > (!IS_ENABLED(CONFIG_VFIO_PCI_MMAP_MSIX) && > > +     info.index == vdev->msix_bar) > > { > >   ret = > > msix_sparse_mmap_cap(vdev, &caps); > >   if (ret) > >   return ret; > > @@ -967,7 +968,8 @@ static int vfio_pci_mmap(void *device_data, > > struct vm_area_struct *vma) > >   if (phys_len < PAGE_SIZE || req_start + req_len > > > phys_len) > >   return -EINVAL; > >   > > - if (index == vdev->msix_bar) { > > + if (!IS_ENABLED(CONFIG_VFIO_PCI_MMAP_MSIX) && > > +     index == vdev->msix_bar) { > >   /* > >    * Disallow mmaps overlapping the MSI-X table; > > users > > don't > >    * get to touch this directly.  We could find > > somewhere > > -- > To unsubscribe from this list: send the line "unsubscribe linux- > kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at  http://vger.kernel.org/majordomo-info.html > Please read the FAQ at  http://www.tux.org/lkml/ From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: Re: [RFC PATCH v2 3/3] vfio-pci: Allow to mmap MSI-X table if EEH is supported Date: Tue, 05 Jan 2016 08:42:55 +1100 Message-ID: <1451943775.12575.6.camel@kernel.crashing.org> References: <1451551844-11732-1-git-send-email-xyjxie@linux.vnet.ibm.com> <1451551844-11732-4-git-send-email-xyjxie@linux.vnet.ibm.com> <1451941655.6585.8.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: nikunj@linux.vnet.ibm.com, zhong@linux.vnet.ibm.com, corbet@lwn.net, aik@ozlabs.ru, warrier@linux.vnet.ibm.com, paulus@samba.org, bhelgaas@google.com To: Alex Williamson , Yongji Xie , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-doc@vger.kernel.org Return-path: In-Reply-To: <1451941655.6585.8.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+glppe-linuxppc-embedded-2=m.gmane.org@lists.ozlabs.org Sender: "Linuxppc-dev" List-Id: kvm.vger.kernel.org T24gTW9uLCAyMDE2LTAxLTA0IGF0IDE0OjA3IC0wNzAwLCBBbGV4IFdpbGxpYW1zb24gd3JvdGU6 Cj4gT24gVGh1LCAyMDE1LTEyLTMxIGF0IDE2OjUwICswODAwLCBZb25namkgWGllIHdyb3RlOgo+ ID4gQ3VycmVudCB2ZmlvLXBjaSBpbXBsZW1lbnRhdGlvbiBkaXNhbGxvd3MgdG8gbW1hcCBNU0kt WAo+ID4gdGFibGUgaW4gY2FzZSB0aGF0IHVzZXIgZ2V0IHRvIHRvdWNoIHRoaXMgZGlyZWN0bHku Cj4gPiAKPiA+IEhvd2V2ZXIsIEVFSCBtZWNoYW5pc20gY2FuIGVuc3VyZSB0aGF0IGEgZ2l2ZW4g cGNpIGRldmljZQo+ID4gY2FuIG9ubHkgc2hvb3QgdGhlIE1TSXMgYXNzaWduZWQgZm9yIGl0cyBQ RS4gU28gd2UgdGhpbmsKPiA+IGl0J3Mgc2FmZSB0byBleHBvc2UgdGhlIE1TSS1YIHRhYmxlIHRv IHVzZXJzcGFjZSBiZWNhdXNlCj4gPiB0aGUgZXhwb3NlZCBNU0ktWCB0YWJsZSBjYW4ndCBiZSB1 c2VkIHRvIGRvIGhhcm0gdG8gb3RoZXIKPiA+IG1lbW9yeSBzcGFjZS4KPiA+IAo+ID4gQW5kIHdp dGggTVNJLVggdGFibGUgbW1hcHBlZCwgc29tZSBwZXJmb3JtYW5jZSBpc3N1ZXMgd2hpY2gKPiA+ IGFyZSBjYXVzZWQgd2hlbiBQQ0kgYWRhcHRlcnMgaGF2ZSBjcml0aWNhbCByZWdpc3RlcnMgaW4g dGhlCj4gPiBzYW1lIHBhZ2UgYXMgdGhlIE1TSS1YIHRhYmxlIGFsc28gY2FuIGJlIHJlc29sdmVk Lgo+ID4gCj4gPiBTbyB0aGlzIHBhdGNoIGFkZHMgYSBLY29uZmlnIG9wdGlvbiwgVkZJT19QQ0lf TU1BUF9NU0lYLAo+ID4gdG8gc3VwcG9ydCBmb3IgbW1hcHBpbmcgTVNJLVggdGFibGUuCj4gPiAK PiA+IFNpZ25lZC1vZmYtYnk6IFlvbmdqaSBYaWUgPHh5anhpZUBsaW51eC52bmV0LmlibS5jb20+ Cj4gPiAtLS0KPiA+IMKgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnwqDCoMKgwqB8wqDCoMKgwqA0 ICsrKysKPiA+IMKgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jIHzCoMKgwqDCoDYgKysrKy0t Cj4gPiDCoDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnIGIvZHJpdmVycy92 ZmlvL3BjaS9LY29uZmlnCj4gPiBpbmRleCAwMjkxMmYxLi42N2IwYTJjIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnCj4gPiArKysgYi9kcml2ZXJzL3ZmaW8vcGNpL0tj b25maWcKPiA+IEBAIC0yMyw2ICsyMywxMCBAQCBjb25maWcgVkZJT19QQ0lfTU1BUAo+ID4gwqAJ ZGVwZW5kcyBvbiBWRklPX1BDSQo+ID4gwqAJZGVmX2Jvb2wgeSBpZiAhUzM5MAo+ID4gwqAKPiA+ ICtjb25maWcgVkZJT19QQ0lfTU1BUF9NU0lYCj4gPiArCWRlcGVuZHMgb24gVkZJT19QQ0lfTU1B UAo+ID4gKwlkZWZfYm9vbCB5IGlmIEVFSAo+IAo+IERvZXMgQ09ORklHX0VFSCBuZWNlc3Nhcmls eSBtZWFuIHRoZSBFRUggaXMgZW5hYmxlZD8gwqBDb3VsZCB0aGUKPiBzeXN0ZW0KPiBub3Qgc3Vw cG9ydCBFRUggb3IgY291bGQgRUVIIGJlIGRpc2FibGVkIHZpYSBrZXJuZWwgY29tbWFuZGxpbmUK PiBvcHRpb25zPwoKRUVIIGlzIGRlZmluaXRlbHkgdGhlIHdyb25nIHRoaW5nIHRvIHRlc3QgaGVy ZSBhbnl3YXkuIFdoYXQgbmVlZHMgdG8gYmUKdGVzdGVkIGlzIHRoYXQgdGhlIFBDSSBIb3N0IGJy aWRnZSBzdXBwb3J0cyBmaWx0ZXJpbmcgb2YgTVNJcywgc28KaWRlYWxseSB0aGlzIHNob3VsZCBi ZSBzb21lIGtpbmQgb2YgaG9zdCBicmlkZ2UgYXR0cmlidXRlIHNldCBieSB0aGUKYXJjaGl0ZWN0 dXJlIGJhY2tlbmQuCgpUaGlzIGNhbiBoYXBwZW4gd2l0aCBvciB3aXRob3V0IENPTkZJR19FRUgg YW5kIHlvdSBhcmUgcmlnaHQsCkNPTkZJR19FRUggY2FuIGJlIGVuYWJsZWQgYW5kIHRoZSBtYWNo aW5lIG5vdCBzdXBwb3J0IGl0LgoKQW55IElPREEgYnJpZGdlIHdpbGwgc3VwcG9ydCB0aGlzLgoK Q2hlZXJzLApCZW4uCgo+ID4gKwo+ID4gwqBjb25maWcgVkZJT19QQ0lfSU5UWAo+ID4gwqAJZGVw ZW5kcyBvbiBWRklPX1BDSQo+ID4gwqAJZGVmX2Jvb2wgeSBpZiAhUzM5MAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYwo+ID4gYi9kcml2ZXJzL3ZmaW8vcGNpL3Zm aW9fcGNpLmMKPiA+IGluZGV4IDA5YjM4MDUuLmQ1MzY5ODUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMKPiA+ICsrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19w Y2kuYwo+ID4gQEAgLTU1NSw3ICs1NTUsOCBAQCBzdGF0aWMgbG9uZyB2ZmlvX3BjaV9pb2N0bCh2 b2lkICpkZXZpY2VfZGF0YSwKPiA+IMKgCQkJwqDCoMKgwqBJT1JFU09VUkNFX01FTSAmJiAoaW5m by5zaXplID49Cj4gPiBQQUdFX1NJWkUgfHwKPiA+IMKgCQkJwqDCoMKgwqBwY2lfcmVzb3VyY2Vf cGFnZV9hbGlnbmVkKSkgewo+ID4gwqAJCQkJaW5mby5mbGFncyB8PQo+ID4gVkZJT19SRUdJT05f SU5GT19GTEFHX01NQVA7Cj4gPiAtCQkJCWlmIChpbmZvLmluZGV4ID09IHZkZXYtPm1zaXhfYmFy KQo+ID4gewo+ID4gKwkJCQlpZgo+ID4gKCFJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9NTUFQ X01TSVgpICYmCj4gPiArCQkJCcKgwqDCoMKgaW5mby5pbmRleCA9PSB2ZGV2LT5tc2l4X2JhcikK PiA+IHsKPiA+IMKgCQkJCQlyZXQgPQo+ID4gbXNpeF9zcGFyc2VfbW1hcF9jYXAodmRldiwgJmNh cHMpOwo+ID4gwqAJCQkJCWlmIChyZXQpCj4gPiDCoAkJCQkJCXJldHVybiByZXQ7Cj4gPiBAQCAt OTY3LDcgKzk2OCw4IEBAIHN0YXRpYyBpbnQgdmZpb19wY2lfbW1hcCh2b2lkICpkZXZpY2VfZGF0 YSwKPiA+IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ID4gwqAJaWYgKHBoeXNfbGVuIDwg UEFHRV9TSVpFIHx8IHJlcV9zdGFydCArIHJlcV9sZW4gPgo+ID4gcGh5c19sZW4pCj4gPiDCoAkJ cmV0dXJuIC1FSU5WQUw7Cj4gPiDCoAo+ID4gLQlpZiAoaW5kZXggPT0gdmRldi0+bXNpeF9iYXIp IHsKPiA+ICsJaWYgKCFJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9NTUFQX01TSVgpICYmCj4g PiArCcKgwqDCoMKgaW5kZXggPT0gdmRldi0+bXNpeF9iYXIpIHsKPiA+IMKgCQkvKgo+ID4gwqAJ CcKgKiBEaXNhbGxvdyBtbWFwcyBvdmVybGFwcGluZyB0aGUgTVNJLVggdGFibGU7Cj4gPiB1c2Vy cwo+ID4gZG9uJ3QKPiA+IMKgCQnCoCogZ2V0IHRvIHRvdWNoIHRoaXMgZGlyZWN0bHkuwqDCoFdl IGNvdWxkIGZpbmQKPiA+IHNvbWV3aGVyZQo+IAo+IC0tCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0 aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LQo+IGtlcm5lbCIgaW4K PiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwo+IE1v cmUgbWFqb3Jkb21vIGluZm8gYXTCoMKgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8t aW5mby5odG1sCj4gUGxlYXNlIHJlYWQgdGhlIEZBUSBhdMKgwqBodHRwOi8vd3d3LnR1eC5vcmcv bGttbC8KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGlu dXhwcGMtZGV2IG1haWxpbmcgbGlzdApMaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZwpodHRw czovL2xpc3RzLm96bGFicy5vcmcvbGlzdGluZm8vbGludXhwcGMtZGV2