From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Return-Path: Message-ID: <1492036240.7236.80.camel@kernel.crashing.org> Subject: Re: [PATCH v3 00/32] PCI: fix config and I/O Address space memory mappings From: Benjamin Herrenschmidt To: Lorenzo Pieralisi , Russell King - ARM Linux Date: Thu, 13 Apr 2017 08:30:40 +1000 In-Reply-To: <20170412144109.GB6842@red-moon> References: <20170411122923.6285-1-lorenzo.pieralisi@arm.com> <1491917906.7236.7.camel@kernel.crashing.org> <20170411140857.GA6821@red-moon> <1491952371.7236.22.camel@kernel.crashing.org> <20170412113124.GZ17774@n2100.armlinux.org.uk> <1492005119.7236.62.camel@kernel.crashing.org> <20170412141654.GA17774@n2100.armlinux.org.uk> <20170412144109.GB6842@red-moon> Mime-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jonas Bonn , Rich Felker , linux-pci@vger.kernel.org, Will Deacon , David Howells , Max Filippov , Paul Mackerras , Huacai Chen , Guan Xuetao , Thomas Gleixner , Hans-Christian Egtvedt , linux-arch@vger.kernel.org, Jesper Nilsson , Yoshinori Sato , Michael Ellerman , Helge Deller , "James E.J. Bottomley" , Ingo Molnar , Geert Uytterhoeven , Catalin Marinas , Matt Turner , Haavard Skinnemoen , Fenghua Yu , James Hogan , Chris Metcalf , Arnd Bergmann , Heiko Carstens , Stefan Kristiansson , Mikael Starvik , Ivan Kokshaysky , Bjorn Helgaas , Stafford Horne , linux-arm-kernel@lists.infradead.org, Richard Henderson , Chris Zankel , Michal Simek , Tony Luck , Vineet Gupta , linux-kernel@vger.kernel.org, Ralf Baechle , Richard Kuo , Niklas Cassel , "Luis R. Rodriguez" , Martin Schwidefsky , Ley Foon Tan , "David S. Miller" Content-Type: text/plain; charset="utf-8" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+bjorn=helgaas.com@lists.infradead.org List-ID: T24gV2VkLCAyMDE3LTA0LTEyIGF0IDE1OjQxICswMTAwLCBMb3JlbnpvIFBpZXJhbGlzaSB3cm90 ZToKPiA+ID4gQXQgbGVhc3Qgd2UgbWFrZSB0aGUgZmFpbHVyZSBleHBsaWNpdCwgYW5kIHRoZSBk cml2ZXIgY2FuIHRha2UKPiA+ID4gYWx0ZXJuYXRlIChwb3NzaWJseSBzdWItb3B0aW1hbCkgYWN0 aW9uIGlmIGl0IGNob29zZXMgdG8gZG8gc28uCj4gPiAKPiA+IFRoZSBzYW1lIHBvaW50cyBhcHBs eSB0byB0aGluZ3MgbGlrZSBwZ3Byb3Rfd3JpdGVjb21iaW5lKCksCj4gPiBwZ3Byb3Rfbm9uY2Fj aGVkKCksIHBncHJvdF9kZXZpY2UoKS7CoCBUaGVuIHRoZXJlJ3MgYWxzbyBwZ3Byb3Rfbm9ucG9z dGVkKCkKPiA+IHRoYXQgdGhpcyBzZXJpZXMgYWxzbyBpbnRyb2R1Y2VzLgoKTm8uIHBncHJvdF93 cml0ZWNvbWJpbmUoKSBzaWxlbnRseSBmYWxsaW5nIGJhY2sgdG8gc2ltcGx5IG5vbi1jYWNoZWQg aXMKb2sgYXMgd2UgYXJlbid0ICJ3ZWFrZW5pbmciIHRoZSBvcmRlcmluZyBydWxlcyBzaWxlbnRs eSBoZXJlLiBTb21ldGhpbmcKdGhhdCBpcyBjb3JyZWN0IHdpdGggd3JpdGVjb21iaW5lIHdpbGwg YWxzbyB3b3JrIHdpdGhvdXQuIEl0J3MganVzdCBhbgpvcHRpbWlzYXRpb24uIE5vdCBjb3JyZWN0 bmVzcy4KClRoaW5ncyBsaWtlIG5vbmNhY2hlZCgpIG11c3Qgb2YgY291cnNlIGJlIGhvbm9yZWQs IGFuZCBJIGRvbid0IHRoaW5rCndlIGhhdmUgYSBjYXNlIGFueXdoZXJlIHdoZXJlIGl0IGlzbid0 LgoKTXkgcG9pbnQgd2l0aCBub3Bvc3QoKSBpcyB0aGF0IGl0J3MgbmV2ZXIgb2sgdG8gc2lsZW50 bHkgZG93bmdyYWRlIGl0LgpDb2RlIHdyaXR0ZW4gd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IHRo ZXJlIGlzIG5vIHBvc3Rpbmcgd2lsbCBiZQoqaW5jb3JyZWN0KiBpZiBwb3N0aW5nIGhhcHBlbnMu IFdlIGRvIGxpdmUgd2l0aCB0aGF0ICJidWciIHRvZGF5IGluZGVlZApidXQgb25jZSB3ZSBoYXZl IHRoYXQgYWNjZXNzb3JzIHdlIG1pZ2h0IHN0YXJ0IGdyb3dpbmcgbW9yZSBjb2RlIHRoYXQKcmVs aWVzIG9uIHRoZSBzcGVjaWZpYyBhdHRyaWJ1dGUgdGhhdCB0aGluZ3MgYXJlbid0IHBvc3RlZCBh bmQgd2lsbCBiZQp3cm9uZyBvbiBhbGwgdGhlIGFyY2hzIHByb3ZpZGluZyB0aGUgZGVmYXVsdCBp bXBsZW1lbnRhdGlvbi4KClRoaXMgaXMgd2h5IEkgaW5zaXN0IHRoYXQgcGdwcm90X25vcG9zdCgp IGlmIGl0IGV4aXN0cyBnbG9iYWxseSwgc2hvdWxkCnJldHVybiBOVUxMIHdoZW4gdGhlIHNlbWFu dGljIGNhbm5vdCBiZSBwcm92aWRlZC4gVGhhdCB3YXkgdGhlcmUgaXMgYQpjbGVhciBsaW5lIGlu IHRoZSBzYW5kLiBJZiB0aGUgZHJpdmVyIGNob3NlcyB0byBvcGVyYXRlIHdpdGggcG9zdGVkCm5v bi1jYWNoZWQgYW55d2F5LCB0aGVuIG1ha2UgaXQgYW4gZXhwbGljaXQgZHJpdmVyIGNob2ljZS4K Cj4gPiBJZiBpb3JlbWFwX25vcG9zdCgpIGlzIG5vdCBwb3NzaWJsZSBvbiBhbiBhcmNoaXRlY3R1 cmUsIHRoZW4KPiA+IHBncHJvdF9ub25wb3N0ZWQoKSB3b24ndCBiZSBwb3NzaWJsZSBlaXRoZXIg LSBidXQgeW91J3ZlIG1hZGUgbm8KPiA+IG1lbnRpb24gb2YgdGhhdCBzbyBmYXIuCgpSaWdodC4g SXQncyBub3Qgb24gbW9zdCBpbiBmYWN0LgoKPiA+IEp1c3QgbGlrZSB0aGUgcHJvcG9zZWQgaW9y ZW1hcF9ub3Bvc3QoKSwgcGdwcm90X25vbnBvc3RlZCgpIGlzIGdpdmVuIGEKPiA+IGRlZmF1bHQg aW1wbGVtZW50YXRpb24gdGhhdCB1c2VzIHBncHJvdF9ub25jYWNoZWQoKS7CoCBNYXliZSB3ZSBz aG91bGQKPiA+IGFsc28gbWFrZSBwY2lfcmVtYXBfaW9zcGFjZSgpIGZhaWwgaWYgcGdwcm90X25v bnBvc3RlZCgpIGlzIG5vdCBkZWZpbmVkCj4gPiBieSB0aGUgYXJjaGl0ZWN0dXJlPwoKT3Igd2Ug KmRvY3VtZW50KiB0aGF0IG1tYXAgb2YgSU8gc3BhY2UgY2FuIHJlc3VsdCBpbiBzb21ldGhpbmcg dGhhdCBpcwpwYXJ0aWFsbHkgbm9uLXBvc3RlZC4KCj4gWWVzLCBJIHdhcyBhYm91dCB0byBtZW50 aW9uIHRoYXQgYW5kIHlvdSBhcmUgcmlnaHQsIEkgc2hvdWxkIGRlYWwgd2l0aAo+IHRoYXQgdG9v IHVuZm9ydHVuYXRlbHkuIEJUVywgSSBoYXZlIG5vdCBwb3N0ZWQgdGhlIGRyaXZlcnMgdG8gbWFr ZSB0aGUKPiByZXZpZXcgZWFzaWVyIChpZSBpdCB3b3VsZCBhZGQgMjAgbW9yZSBwYXRjaGVzIHRv IGFuIGFscmVhZHkgbWFzc2l2ZQo+IHBhdGNoIHNlcmllcyAtIHRoYXQgd2lsbCBiZSB0cmltbWVk IHdoZW4gdGhlIGFzbS1nZW5lcmljIGluY2x1ZGUgaXMKPiByZW1vdmVkIGZyb20gYXJjaGVzIGFj Y29yZGluZyB0byB0aGlzIGRpc2N1c3Npb24pLgo+IAo+IFRoYW5rcywKPiBMb3JlbnpvCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: Re: [PATCH v3 00/32] PCI: fix config and I/O Address space memory mappings Date: Thu, 13 Apr 2017 08:30:40 +1000 Message-ID: <1492036240.7236.80.camel@kernel.crashing.org> References: <20170411122923.6285-1-lorenzo.pieralisi@arm.com> <1491917906.7236.7.camel@kernel.crashing.org> <20170411140857.GA6821@red-moon> <1491952371.7236.22.camel@kernel.crashing.org> <20170412113124.GZ17774@n2100.armlinux.org.uk> <1492005119.7236.62.camel@kernel.crashing.org> <20170412141654.GA17774@n2100.armlinux.org.uk> <20170412144109.GB6842@red-moon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170412144109.GB6842@red-moon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Lorenzo Pieralisi , Russell King - ARM Linux Cc: Jonas Bonn , Rich Felker , linux-pci@vger.kernel.org, Will Deacon , David Howells , Max Filippov , Paul Mackerras , Huacai Chen , Guan Xuetao , Thomas Gleixner , Hans-Christian Egtvedt , linux-arch@vger.kernel.org, Jesper Nilsson , Yoshinori Sato , Michael Ellerman , Helge Deller , "James E.J. Bottomley" , Ingo Molnar , Geert Uytterhoeven , Catalin Marinas , Matt Turner , Haavard Skinnemoen , Fenghua Yu , James Hogan List-Id: linux-arch.vger.kernel.org T24gV2VkLCAyMDE3LTA0LTEyIGF0IDE1OjQxICswMTAwLCBMb3JlbnpvIFBpZXJhbGlzaSB3cm90 ZToKPiA+ID4gQXQgbGVhc3Qgd2UgbWFrZSB0aGUgZmFpbHVyZSBleHBsaWNpdCwgYW5kIHRoZSBk cml2ZXIgY2FuIHRha2UKPiA+ID4gYWx0ZXJuYXRlIChwb3NzaWJseSBzdWItb3B0aW1hbCkgYWN0 aW9uIGlmIGl0IGNob29zZXMgdG8gZG8gc28uCj4gPiAKPiA+IFRoZSBzYW1lIHBvaW50cyBhcHBs eSB0byB0aGluZ3MgbGlrZSBwZ3Byb3Rfd3JpdGVjb21iaW5lKCksCj4gPiBwZ3Byb3Rfbm9uY2Fj aGVkKCksIHBncHJvdF9kZXZpY2UoKS7CoCBUaGVuIHRoZXJlJ3MgYWxzbyBwZ3Byb3Rfbm9ucG9z dGVkKCkKPiA+IHRoYXQgdGhpcyBzZXJpZXMgYWxzbyBpbnRyb2R1Y2VzLgoKTm8uIHBncHJvdF93 cml0ZWNvbWJpbmUoKSBzaWxlbnRseSBmYWxsaW5nIGJhY2sgdG8gc2ltcGx5IG5vbi1jYWNoZWQg aXMKb2sgYXMgd2UgYXJlbid0ICJ3ZWFrZW5pbmciIHRoZSBvcmRlcmluZyBydWxlcyBzaWxlbnRs eSBoZXJlLiBTb21ldGhpbmcKdGhhdCBpcyBjb3JyZWN0IHdpdGggd3JpdGVjb21iaW5lIHdpbGwg YWxzbyB3b3JrIHdpdGhvdXQuIEl0J3MganVzdCBhbgpvcHRpbWlzYXRpb24uIE5vdCBjb3JyZWN0 bmVzcy4KClRoaW5ncyBsaWtlIG5vbmNhY2hlZCgpIG11c3Qgb2YgY291cnNlIGJlIGhvbm9yZWQs IGFuZCBJIGRvbid0IHRoaW5rCndlIGhhdmUgYSBjYXNlIGFueXdoZXJlIHdoZXJlIGl0IGlzbid0 LgoKTXkgcG9pbnQgd2l0aCBub3Bvc3QoKSBpcyB0aGF0IGl0J3MgbmV2ZXIgb2sgdG8gc2lsZW50 bHkgZG93bmdyYWRlIGl0LgpDb2RlIHdyaXR0ZW4gd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IHRo ZXJlIGlzIG5vIHBvc3Rpbmcgd2lsbCBiZQoqaW5jb3JyZWN0KiBpZiBwb3N0aW5nIGhhcHBlbnMu IFdlIGRvIGxpdmUgd2l0aCB0aGF0ICJidWciIHRvZGF5IGluZGVlZApidXQgb25jZSB3ZSBoYXZl IHRoYXQgYWNjZXNzb3JzIHdlIG1pZ2h0IHN0YXJ0IGdyb3dpbmcgbW9yZSBjb2RlIHRoYXQKcmVs aWVzIG9uIHRoZSBzcGVjaWZpYyBhdHRyaWJ1dGUgdGhhdCB0aGluZ3MgYXJlbid0IHBvc3RlZCBh bmQgd2lsbCBiZQp3cm9uZyBvbiBhbGwgdGhlIGFyY2hzIHByb3ZpZGluZyB0aGUgZGVmYXVsdCBp bXBsZW1lbnRhdGlvbi4KClRoaXMgaXMgd2h5IEkgaW5zaXN0IHRoYXQgcGdwcm90X25vcG9zdCgp IGlmIGl0IGV4aXN0cyBnbG9iYWxseSwgc2hvdWxkCnJldHVybiBOVUxMIHdoZW4gdGhlIHNlbWFu dGljIGNhbm5vdCBiZSBwcm92aWRlZC4gVGhhdCB3YXkgdGhlcmUgaXMgYQpjbGVhciBsaW5lIGlu IHRoZSBzYW5kLiBJZiB0aGUgZHJpdmVyIGNob3NlcyB0byBvcGVyYXRlIHdpdGggcG9zdGVkCm5v bi1jYWNoZWQgYW55d2F5LCB0aGVuIG1ha2UgaXQgYW4gZXhwbGljaXQgZHJpdmVyIGNob2ljZS4K Cj4gPiBJZiBpb3JlbWFwX25vcG9zdCgpIGlzIG5vdCBwb3NzaWJsZSBvbiBhbiBhcmNoaXRlY3R1 cmUsIHRoZW4KPiA+IHBncHJvdF9ub25wb3N0ZWQoKSB3b24ndCBiZSBwb3NzaWJsZSBlaXRoZXIg LSBidXQgeW91J3ZlIG1hZGUgbm8KPiA+IG1lbnRpb24gb2YgdGhhdCBzbyBmYXIuCgpSaWdodC4g SXQncyBub3Qgb24gbW9zdCBpbiBmYWN0LgoKPiA+IEp1c3QgbGlrZSB0aGUgcHJvcG9zZWQgaW9y ZW1hcF9ub3Bvc3QoKSwgcGdwcm90X25vbnBvc3RlZCgpIGlzIGdpdmVuIGEKPiA+IGRlZmF1bHQg aW1wbGVtZW50YXRpb24gdGhhdCB1c2VzIHBncHJvdF9ub25jYWNoZWQoKS7CoCBNYXliZSB3ZSBz aG91bGQKPiA+IGFsc28gbWFrZSBwY2lfcmVtYXBfaW9zcGFjZSgpIGZhaWwgaWYgcGdwcm90X25v bnBvc3RlZCgpIGlzIG5vdCBkZWZpbmVkCj4gPiBieSB0aGUgYXJjaGl0ZWN0dXJlPwoKT3Igd2Ug KmRvY3VtZW50KiB0aGF0IG1tYXAgb2YgSU8gc3BhY2UgY2FuIHJlc3VsdCBpbiBzb21ldGhpbmcg dGhhdCBpcwpwYXJ0aWFsbHkgbm9uLXBvc3RlZC4KCj4gWWVzLCBJIHdhcyBhYm91dCB0byBtZW50 aW9uIHRoYXQgYW5kIHlvdSBhcmUgcmlnaHQsIEkgc2hvdWxkIGRlYWwgd2l0aAo+IHRoYXQgdG9v IHVuZm9ydHVuYXRlbHkuIEJUVywgSSBoYXZlIG5vdCBwb3N0ZWQgdGhlIGRyaXZlcnMgdG8gbWFr ZSB0aGUKPiByZXZpZXcgZWFzaWVyIChpZSBpdCB3b3VsZCBhZGQgMjAgbW9yZSBwYXRjaGVzIHRv IGFuIGFscmVhZHkgbWFzc2l2ZQo+IHBhdGNoIHNlcmllcyAtIHRoYXQgd2lsbCBiZSB0cmltbWVk IHdoZW4gdGhlIGFzbS1nZW5lcmljIGluY2x1ZGUgaXMKPiByZW1vdmVkIGZyb20gYXJjaGVzIGFj Y29yZGluZyB0byB0aGlzIGRpc2N1c3Npb24pLgo+IAo+IFRoYW5rcywKPiBMb3JlbnpvCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: benh@kernel.crashing.org (Benjamin Herrenschmidt) Date: Thu, 13 Apr 2017 08:30:40 +1000 Subject: [PATCH v3 00/32] PCI: fix config and I/O Address space memory mappings In-Reply-To: <20170412144109.GB6842@red-moon> References: <20170411122923.6285-1-lorenzo.pieralisi@arm.com> <1491917906.7236.7.camel@kernel.crashing.org> <20170411140857.GA6821@red-moon> <1491952371.7236.22.camel@kernel.crashing.org> <20170412113124.GZ17774@n2100.armlinux.org.uk> <1492005119.7236.62.camel@kernel.crashing.org> <20170412141654.GA17774@n2100.armlinux.org.uk> <20170412144109.GB6842@red-moon> Message-ID: <1492036240.7236.80.camel@kernel.crashing.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, 2017-04-12 at 15:41 +0100, Lorenzo Pieralisi wrote: > > > At least we make the failure explicit, and the driver can take > > > alternate (possibly sub-optimal) action if it chooses to do so. > > > > The same points apply to things like pgprot_writecombine(), > > pgprot_noncached(), pgprot_device().? Then there's also pgprot_nonposted() > > that this series also introduces. No. pgprot_writecombine() silently falling back to simply non-cached is ok as we aren't "weakening" the ordering rules silently here. Something that is correct with writecombine will also work without. It's just an optimisation. Not correctness. Things like noncached() must of course be honored, and I don't think we have a case anywhere where it isn't. My point with nopost() is that it's never ok to silently downgrade it. Code written with the assumption that there is no posting will be *incorrect* if posting happens. We do live with that "bug" today indeed but once we have that accessors we might start growing more code that relies on the specific attribute that things aren't posted and will be wrong on all the archs providing the default implementation. This is why I insist that pgprot_nopost() if it exists globally, should return NULL when the semantic cannot be provided. That way there is a clear line in the sand. If the driver choses to operate with posted non-cached anyway, then make it an explicit driver choice. > > If ioremap_nopost() is not possible on an architecture, then > > pgprot_nonposted() won't be possible either - but you've made no > > mention of that so far. Right. It's not on most in fact. > > Just like the proposed ioremap_nopost(), pgprot_nonposted() is given a > > default implementation that uses pgprot_noncached().? Maybe we should > > also make pci_remap_iospace() fail if pgprot_nonposted() is not defined > > by the architecture? Or we *document* that mmap of IO space can result in something that is partially non-posted. > Yes, I was about to mention that and you are right, I should deal with > that too unfortunately. BTW, I have not posted the drivers to make the > review easier (ie it would add 20 more patches to an already massive > patch series - that will be trimmed when the asm-generic include is > removed from arches according to this discussion). > > Thanks, > Lorenzo