From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Subject: Re: [RFC PATCH v3 3/5] PCI: Add host bridge attribute to indicate filtering of MSIs is supported To: Alex Williamson References: <1452841574-2781-1-git-send-email-xyjxie@linux.vnet.ibm.com> <1452841574-2781-4-git-send-email-xyjxie@linux.vnet.ibm.com> <1454021182.23148.6.camel@redhat.com> <56AB4182.5060501@linux.vnet.ibm.com> <163133676.20416948.1454094344181.JavaMail.zimbra@redhat.com> Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-doc@vger.kernel.org, bhelgaas@google.com, corbet@lwn.net, aik@ozlabs.ru, benh@kernel.crashing.org, paulus@samba.org, mpe@ellerman.id.au, warrier@linux.vnet.ibm.com, zhong@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com From: Yongji Xie Message-ID: <56AF21CE.8000206@linux.vnet.ibm.com> Date: Mon, 1 Feb 2016 17:13:50 +0800 MIME-Version: 1.0 In-Reply-To: <163133676.20416948.1454094344181.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Sender: linux-kernel-owner@vger.kernel.org List-ID: On 2016/1/30 3:05, Alex Williamson wrote: > > ----- Original Message ----- >> On 2016/1/29 6:46, Alex Williamson wrote: >>> On Fri, 2016-01-15 at 15:06 +0800, Yongji Xie wrote: >>>> MSI-X tables are not allowed to be mmapped in vfio-pci >>>> driver in case that user get to touch this directly. >>>> This will cause some performance issues when when PCI >>>> adapters have critical registers in the same page as >>>> the MSI-X table. >>>> >>>> However, some kind of PCI host bridge such as IODA bridge >>>> on Power support filtering of MSIs, which can ensure that a >>>> given pci device can only shoot the MSIs assigned for it. >>>> So we think it's safe to expose the MSI-X table to userspace >>>> if filtering of MSIs is supported because the exposed MSI-X >>>> table can't be used to do harm to other memory space. >>>> >>>> To support this case, this patch adds a pci_host_bridge >>>> attribute to indicate if this PCI host bridge supports >>>> filtering of MSIs. >>>> >>>> Signed-off-by: Yongji Xie >>>> --- >>>> drivers/pci/host-bridge.c | 6 ++++++ >>>> include/linux/pci.h | 3 +++ >>>> 2 files changed, 9 insertions(+) >>>> >>>> diff --git a/drivers/pci/host-bridge.c b/drivers/pci/host-bridge.c >>>> index 5f4a2e0..c029267 100644 >>>> --- a/drivers/pci/host-bridge.c >>>> +++ b/drivers/pci/host-bridge.c >>>> @@ -96,3 +96,9 @@ void pcibios_bus_to_resource(struct pci_bus *bus, struct >>>> resource *res, >>>> res->end = region->end + offset; >>>> } >>>> EXPORT_SYMBOL(pcibios_bus_to_resource); >>>> + >>>> +bool pci_host_bridge_msi_filtered_enabled(struct pci_dev *pdev) >>>> +{ >>>> + return pci_find_host_bridge(pdev->bus)->msi_filtered; >>>> +} >>>> +EXPORT_SYMBOL_GPL(pci_host_bridge_msi_filtered_enabled); >>>> diff --git a/include/linux/pci.h b/include/linux/pci.h >>>> index b640d65..b952b78 100644 >>>> --- a/include/linux/pci.h >>>> +++ b/include/linux/pci.h >>>> @@ -412,6 +412,7 @@ struct pci_host_bridge { >>>> void (*release_fn)(struct pci_host_bridge *); >>>> void *release_data; >>>> unsigned int ignore_reset_delay:1; /* for entire hierarchy */ >>>> + unsigned int msi_filtered:1; /* support filtering of MSIs */ >>>> /* Resource alignment requirements */ >>>> resource_size_t (*align_resource)(struct pci_dev *dev, >>>> const struct resource *res, >>>> @@ -430,6 +431,8 @@ void pci_set_host_bridge_release(struct >>>> pci_host_bridge *bridge, >>>> >>>> int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge); >>>> >>>> +bool pci_host_bridge_msi_filtered_enabled(struct pci_dev *pdev); >>>> + >>>> /* >>>> * The first PCI_BRIDGE_RESOURCE_NUM PCI bus resources (those that >>>> correspond >>>> * to P2P or CardBus bridge windows) go in a table. Additional ones >>>> (for >>> Don't we already have a flag for this in the IOMMU space? >>> >>> enum iommu_cap { >>> IOMMU_CAP_CACHE_COHERENCY, /* IOMMU can enforce cache >>> coherent DMA >>> transactions */ >>> ---> IOMMU_CAP_INTR_REMAP, /* IOMMU supports interrupt >>> isolation */ >>> IOMMU_CAP_NOEXEC, /* IOMMU_NOEXEC flag */ >>> }; >>> >> I saw this flag had been enabled in x86 and ARM arch. >> >> I'm not sure whether we can mmap MSI-X table in those archs. I just >> verify it on PPC64 arch. > Unfortunately that's not a very good excuse for creating an alternate implementation. When x86 implements interrupt remapping, we get fine grained isolation of MSI vectors and we've always taken this flag to mean that the system is isolated from devices that may perform DoS attacks with MSI writes. I'm not entirely sure whether ARM really provides that degree of isolation, but they would be incorrect is exposing the capability if they do not. Thanks, > > Alex > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > OK, I will use this flag in next version. Thanks. Regards, Yongji Xie From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yongji Xie Subject: Re: [RFC PATCH v3 3/5] PCI: Add host bridge attribute to indicate filtering of MSIs is supported Date: Mon, 1 Feb 2016 17:13:50 +0800 Message-ID: <56AF21CE.8000206@linux.vnet.ibm.com> References: <1452841574-2781-1-git-send-email-xyjxie@linux.vnet.ibm.com> <1452841574-2781-4-git-send-email-xyjxie@linux.vnet.ibm.com> <1454021182.23148.6.camel@redhat.com> <56AB4182.5060501@linux.vnet.ibm.com> <163133676.20416948.1454094344181.JavaMail.zimbra@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Cc: nikunj@linux.vnet.ibm.com, zhong@linux.vnet.ibm.com, kvm@vger.kernel.org, linux-doc@vger.kernel.org, aik@ozlabs.ru, linux-pci@vger.kernel.org, corbet@lwn.net, linux-kernel@vger.kernel.org, warrier@linux.vnet.ibm.com, paulus@samba.org, bhelgaas@google.com, linuxppc-dev@lists.ozlabs.org To: Alex Williamson Return-path: In-Reply-To: <163133676.20416948.1454094344181.JavaMail.zimbra@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 T24gMjAxNi8xLzMwIDM6MDUsIEFsZXggV2lsbGlhbXNvbiB3cm90ZToKPgo+IC0tLS0tIE9yaWdp bmFsIE1lc3NhZ2UgLS0tLS0KPj4gT24gMjAxNi8xLzI5IDY6NDYsIEFsZXggV2lsbGlhbXNvbiB3 cm90ZToKPj4+IE9uIEZyaSwgMjAxNi0wMS0xNSBhdCAxNTowNiArMDgwMCwgWW9uZ2ppIFhpZSB3 cm90ZToKPj4+PiBNU0ktWCB0YWJsZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIG1tYXBwZWQgaW4g dmZpby1wY2kKPj4+PiBkcml2ZXIgaW4gY2FzZSB0aGF0IHVzZXIgZ2V0IHRvIHRvdWNoIHRoaXMg ZGlyZWN0bHkuCj4+Pj4gVGhpcyB3aWxsIGNhdXNlIHNvbWUgcGVyZm9ybWFuY2UgaXNzdWVzIHdo ZW4gd2hlbiBQQ0kKPj4+PiBhZGFwdGVycyBoYXZlIGNyaXRpY2FsIHJlZ2lzdGVycyBpbiB0aGUg c2FtZSBwYWdlIGFzCj4+Pj4gdGhlIE1TSS1YIHRhYmxlLgo+Pj4+ICAgIAo+Pj4+IEhvd2V2ZXIs IHNvbWUga2luZCBvZiBQQ0kgaG9zdCBicmlkZ2Ugc3VjaCBhcyBJT0RBIGJyaWRnZQo+Pj4+IG9u IFBvd2VyIHN1cHBvcnQgZmlsdGVyaW5nIG9mIE1TSXMsIHdoaWNoIGNhbiBlbnN1cmUgdGhhdCBh Cj4+Pj4gZ2l2ZW4gcGNpIGRldmljZSBjYW4gb25seSBzaG9vdCB0aGUgTVNJcyBhc3NpZ25lZCBm b3IgaXQuCj4+Pj4gU28gd2UgdGhpbmsgaXQncyBzYWZlIHRvIGV4cG9zZSB0aGUgTVNJLVggdGFi bGUgdG8gdXNlcnNwYWNlCj4+Pj4gaWYgZmlsdGVyaW5nIG9mIE1TSXMgaXMgc3VwcG9ydGVkIGJl Y2F1c2UgdGhlIGV4cG9zZWQgTVNJLVgKPj4+PiB0YWJsZSBjYW4ndCBiZSB1c2VkIHRvIGRvIGhh cm0gdG8gb3RoZXIgbWVtb3J5IHNwYWNlLgo+Pj4+ICAgIAo+Pj4+IFRvIHN1cHBvcnQgdGhpcyBj YXNlLCB0aGlzIHBhdGNoIGFkZHMgYSBwY2lfaG9zdF9icmlkZ2UKPj4+PiBhdHRyaWJ1dGUgdG8g aW5kaWNhdGUgaWYgdGhpcyBQQ0kgaG9zdCBicmlkZ2Ugc3VwcG9ydHMKPj4+PiBmaWx0ZXJpbmcg b2YgTVNJcy4KPj4+PiAgICAKPj4+PiBTaWduZWQtb2ZmLWJ5OiBZb25namkgWGllIDx4eWp4aWVA bGludXgudm5ldC5pYm0uY29tPgo+Pj4+IC0tLQo+Pj4+ICAgIGRyaXZlcnMvcGNpL2hvc3QtYnJp ZGdlLmMgfCAgICA2ICsrKysrKwo+Pj4+ICAgIGluY2x1ZGUvbGludXgvcGNpLmggICAgICAgfCAg ICAzICsrKwo+Pj4+ICAgIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCj4+Pj4gICAg Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvc3QtYnJpZGdlLmMgYi9kcml2ZXJzL3Bj aS9ob3N0LWJyaWRnZS5jCj4+Pj4gaW5kZXggNWY0YTJlMC4uYzAyOTI2NyAxMDA2NDQKPj4+PiAt LS0gYS9kcml2ZXJzL3BjaS9ob3N0LWJyaWRnZS5jCj4+Pj4gKysrIGIvZHJpdmVycy9wY2kvaG9z dC1icmlkZ2UuYwo+Pj4+IEBAIC05NiwzICs5Niw5IEBAIHZvaWQgcGNpYmlvc19idXNfdG9fcmVz b3VyY2Uoc3RydWN0IHBjaV9idXMgKmJ1cywgc3RydWN0Cj4+Pj4gcmVzb3VyY2UgKnJlcywKPj4+ PiAgICAJcmVzLT5lbmQgPSByZWdpb24tPmVuZCArIG9mZnNldDsKPj4+PiAgICB9Cj4+Pj4gICAg RVhQT1JUX1NZTUJPTChwY2liaW9zX2J1c190b19yZXNvdXJjZSk7Cj4+Pj4gKwo+Pj4+ICtib29s IHBjaV9ob3N0X2JyaWRnZV9tc2lfZmlsdGVyZWRfZW5hYmxlZChzdHJ1Y3QgcGNpX2RldiAqcGRl dikKPj4+PiArewo+Pj4+ICsJcmV0dXJuIHBjaV9maW5kX2hvc3RfYnJpZGdlKHBkZXYtPmJ1cykt Pm1zaV9maWx0ZXJlZDsKPj4+PiArfQo+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChwY2lfaG9zdF9i cmlkZ2VfbXNpX2ZpbHRlcmVkX2VuYWJsZWQpOwo+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L3BjaS5oIGIvaW5jbHVkZS9saW51eC9wY2kuaAo+Pj4+IGluZGV4IGI2NDBkNjUuLmI5NTJi NzggMTAwNjQ0Cj4+Pj4gLS0tIGEvaW5jbHVkZS9saW51eC9wY2kuaAo+Pj4+ICsrKyBiL2luY2x1 ZGUvbGludXgvcGNpLmgKPj4+PiBAQCAtNDEyLDYgKzQxMiw3IEBAIHN0cnVjdCBwY2lfaG9zdF9i cmlkZ2Ugewo+Pj4+ICAgIAl2b2lkICgqcmVsZWFzZV9mbikoc3RydWN0IHBjaV9ob3N0X2JyaWRn ZSAqKTsKPj4+PiAgICAJdm9pZCAqcmVsZWFzZV9kYXRhOwo+Pj4+ICAgIAl1bnNpZ25lZCBpbnQg aWdub3JlX3Jlc2V0X2RlbGF5OjE7CS8qIGZvciBlbnRpcmUgaGllcmFyY2h5ICovCj4+Pj4gKwl1 bnNpZ25lZCBpbnQgbXNpX2ZpbHRlcmVkOjE7CS8qIHN1cHBvcnQgZmlsdGVyaW5nIG9mIE1TSXMg Ki8KPj4+PiAgICAJLyogUmVzb3VyY2UgYWxpZ25tZW50IHJlcXVpcmVtZW50cyAqLwo+Pj4+ICAg IAlyZXNvdXJjZV9zaXplX3QgKCphbGlnbl9yZXNvdXJjZSkoc3RydWN0IHBjaV9kZXYgKmRldiwK Pj4+PiAgICAJCQljb25zdCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywKPj4+PiBAQCAtNDMwLDYgKzQz MSw4IEBAIHZvaWQgcGNpX3NldF9ob3N0X2JyaWRnZV9yZWxlYXNlKHN0cnVjdAo+Pj4+IHBjaV9o b3N0X2JyaWRnZSAqYnJpZGdlLAo+Pj4+ICAgIAo+Pj4+ICAgIGludCBwY2liaW9zX3Jvb3RfYnJp ZGdlX3ByZXBhcmUoc3RydWN0IHBjaV9ob3N0X2JyaWRnZSAqYnJpZGdlKTsKPj4+PiAgICAKPj4+ PiArYm9vbCBwY2lfaG9zdF9icmlkZ2VfbXNpX2ZpbHRlcmVkX2VuYWJsZWQoc3RydWN0IHBjaV9k ZXYgKnBkZXYpOwo+Pj4+ICsKPj4+PiAgICAvKgo+Pj4+ICAgICAqIFRoZSBmaXJzdCBQQ0lfQlJJ REdFX1JFU09VUkNFX05VTSBQQ0kgYnVzIHJlc291cmNlcyAodGhvc2UgdGhhdAo+Pj4+ICAgICBj b3JyZXNwb25kCj4+Pj4gICAgICogdG8gUDJQIG9yIENhcmRCdXMgYnJpZGdlIHdpbmRvd3MpIGdv IGluIGEgdGFibGUuICBBZGRpdGlvbmFsIG9uZXMKPj4+PiAgICAgKGZvcgo+Pj4gRG9uJ3Qgd2Ug YWxyZWFkeSBoYXZlIGEgZmxhZyBmb3IgdGhpcyBpbiB0aGUgSU9NTVUgc3BhY2U/Cj4+Pgo+Pj4g ZW51bSBpb21tdV9jYXAgewo+Pj4gICAgICAgICAgIElPTU1VX0NBUF9DQUNIRV9DT0hFUkVOQ1ks ICAgICAgLyogSU9NTVUgY2FuIGVuZm9yY2UgY2FjaGUKPj4+ICAgICAgICAgICBjb2hlcmVudCBE TUEKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z YWN0aW9ucyAqLwo+Pj4gLS0tPiAgICBJT01NVV9DQVBfSU5UUl9SRU1BUCwgICAgICAgICAgIC8q IElPTU1VIHN1cHBvcnRzIGludGVycnVwdAo+Pj4gaXNvbGF0aW9uICovCj4+PiAgICAgICAgICAg SU9NTVVfQ0FQX05PRVhFQywgICAgICAgICAgICAgICAvKiBJT01NVV9OT0VYRUMgZmxhZyAqLwo+ Pj4gfTsKPj4+Cj4+IEkgc2F3IHRoaXMgZmxhZyBoYWQgYmVlbiBlbmFibGVkIGluIHg4NiBhbmQg QVJNIGFyY2guCj4+Cj4+IEknbSBub3Qgc3VyZSB3aGV0aGVyIHdlIGNhbiBtbWFwIE1TSS1YIHRh YmxlIGluIHRob3NlIGFyY2hzLiBJIGp1c3QKPj4gdmVyaWZ5IGl0IG9uIFBQQzY0IGFyY2guCj4g VW5mb3J0dW5hdGVseSB0aGF0J3Mgbm90IGEgdmVyeSBnb29kIGV4Y3VzZSBmb3IgY3JlYXRpbmcg YW4gYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uLiAgV2hlbiB4ODYgaW1wbGVtZW50cyBpbnRlcnJ1 cHQgcmVtYXBwaW5nLCB3ZSBnZXQgZmluZSBncmFpbmVkIGlzb2xhdGlvbiBvZiBNU0kgdmVjdG9y cyBhbmQgd2UndmUgYWx3YXlzIHRha2VuIHRoaXMgZmxhZyB0byBtZWFuIHRoYXQgdGhlIHN5c3Rl bSBpcyBpc29sYXRlZCBmcm9tIGRldmljZXMgdGhhdCBtYXkgcGVyZm9ybSBEb1MgYXR0YWNrcyB3 aXRoIE1TSSB3cml0ZXMuICBJJ20gbm90IGVudGlyZWx5IHN1cmUgd2hldGhlciBBUk0gcmVhbGx5 IHByb3ZpZGVzIHRoYXQgZGVncmVlIG9mIGlzb2xhdGlvbiwgYnV0IHRoZXkgd291bGQgYmUgaW5j b3JyZWN0IGlzIGV4cG9zaW5nIHRoZSBjYXBhYmlsaXR5IGlmIHRoZXkgZG8gbm90LiAgVGhhbmtz LAo+Cj4gQWxleAo+IC0tCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhl IGxpbmUgInVuc3Vic2NyaWJlIGt2bSIgaW4KPiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFq b3Jkb21vQHZnZXIua2VybmVsLm9yZwo+IE1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92 Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAo+CgpPSywgSSB3aWxsIHVzZSB0aGlz IGZsYWcgaW4gbmV4dCB2ZXJzaW9uLiBUaGFua3MuCgpSZWdhcmRzLApZb25namkgWGllCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eHBwYy1kZXYg bWFpbGluZyBsaXN0CkxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCmh0dHBzOi8vbGlzdHMu b3psYWJzLm9yZy9saXN0aW5mby9saW51eHBwYy1kZXY=