From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alan Cox Subject: Re: [PATCH 3/7] asm-generic/io.h: make ioread64 and iowrite64 universally available Date: Thu, 22 Jun 2017 21:14:31 +0100 Message-ID: <20170622211431.14270378@alans-desktop> References: <20170622164817.25515-1-logang@deltatee.com> <20170622164817.25515-4-logang@deltatee.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170622164817.25515-4-logang@deltatee.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Logan Gunthorpe Cc: linux-arch@vger.kernel.org, Arnd Bergmann , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Stephen Bates , linux-crypto@vger.kernel.org, linux-alpha@vger.kernel.org, linux-ntb@googlegroups.com, linuxppc-dev@lists.ozlabs.org List-Id: linux-arch.vger.kernel.org T24gVGh1LCAyMiBKdW4gMjAxNyAxMDo0ODoxMyAtMDYwMApMb2dhbiBHdW50aG9ycGUgPGxvZ2Fu Z0BkZWx0YXRlZS5jb20+IHdyb3RlOgoKPiBDdXJyZW50bHksIGlvcmVhZDY0IGFuZCBpb3dyaXRl NjQgYXJlIG9ubHkgYXZhaWxhYmxlIGlvIENPTkZJR182NEJJVD15Cj4gYW5kIENPTkZJR19HRU5F UklDX0lPTUFQPW4uIFRodXMsIHNlZWluZyB0aGUgZnVuY3Rpb25zIGFyZSBub3QKPiB1bml2ZXJz YWxseSBhdmFpbGFibGUsIGl0IG1ha2VzIHRoZW0gdW51c2FibGUgZm9yIGRyaXZlciBkZXZlbG9w ZXJzLgo+IFRoaXMgbGVhZHMgdG8gdWdseSBoYWNrcyBzdWNoIGFzIHRob3NlIGF0IHRoZSB0b3Ag b2YKPiAKPiBkcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfaW50ZWwuYwo+IAo+IFRoaXMgcGF0 Y2ggYWRkcyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbnMgZm9yIHdoZW4gQ09ORklHXzY0QklUIGFu ZAo+IENPTkZJR19HRU5FUklDX0lPTUFQIGFyZSBub3Qgc2V0LiBUaGVzZSBmdW5jdGlvbnMgdXNl IHR3byBpbzMyIGJhc2VkCj4gY2FsbHMgdG8gY29tcGxldGUgdGhlIG9wZXJhdGlvbi4KPiAKPiBO b3RlLCB3ZSBkbyBub3QgdXNlIHRoZSB2b2xhdGlsZSBrZXl3b3JkIGluIHRoZXNlIGZ1bmN0aW9u cyBsaWtlIHRoZQo+IG90aGVycyBpbiB0aGUgc2FtZSBmaWxlLiBJdCBpcyBuZWNlc3NhcnkgdG8g YXZvaWQgYSBjb21waWxlciB3YXJuaW5nCj4gb24gYXJtLgoKVGhpcyBpcyBhIHJlYWxseSByZWFs bHkgYmFkIGlkZWEgYXMgcGVyIHRoZSBBbHBoYSBjb21tZW50LgoKaW9yZWFkNjQgYW5kIGlvd3Jp dGU2NCBnZW5lcmF0ZSBhIHNpbmdsZSA2NGJpdCBidXMgdHJhbnNhY3Rpb24uIFRoZXJlIGlzCmhh cmR3YXJlIHdoZXJlIG1taW8gb3BlcmF0aW9ucyBoYXZlIHNpZGUgZWZmZWN0cyBzbyBzaW1wbHkg dXNpbmcgYSBwYWlyCm9mIDMyYml0IG9wZXJhdGlvbnMgYmxpbmRseSBkb2VzIG5vdCB3b3JrIChj b25zaWRlciBzb21ldGhpbmcgYXMgdHJpdmlhbAphcyByZWFkaW5nIGEgNjRiaXQgcGVyZm9ybWFu Y2UgY291bnRlciBvciBpbmNyZW1lbnRpbmcgcG9pbnRlcikuCgpJZiBhIHBsYXRmb3JtIGRvZXNu J3Qgc3VwcG9ydCA2NGJpdCBJL08gb3BlcmF0aW9ucyBmcm9tIHRoZSBDUFUgdGhlbiB5b3UKZWl0 aGVyIG5lZWQgdG8gdXNlIHNvbWUga2luZCBvZiBwbGF0Zm9ybS9hcmNoaXRlY3R1cmUgc3BlY2lm aWMgaW50ZXJmYWNlCmlmIHByZXNlbnQgb3IgYWNjZXB0IHlvdSBkb24ndCBoYXZlIG9uZS4KCkl0 J3Mgbm90IHNhZmUgdG8gc3BsaXQgaXQuIFBvc3NpYmx5IGZvciBzb21lIHVzZSBjYXNlcyB5b3Ug Y291bGQgYWRkIGFuCgppb3JlYWQ2NF9tYXlzcGxpdCgpCgpidXQgeW91IGNhbm5vdCBibGluZGx5 IGJyZWFrIGlvcmVhZDY0L3dyaXRlNjQoKSBhbmQgZXhwZWN0IGl0IHRvCm1hZ2ljYWxseSBhbGxv dyB5b3UgdG8gdXNlIGRyaXZlcnMgdGhhdCBkZXBlbmQgdXBvbiBpdC4KCldoYXQgYnR3IGlzIHRo ZSBhY3R1YWwgQVJNIGNvbXBpbGVyIHdhcm5pbmcgPyBJcyB0aGUgY29tcGlsZXIgYWxzbyB0cnlp bmcKdG8gdGVsbCB5b3UgaXQncyBhIGJhZCBpZGVhID8KCkFsYW4KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from www.llwyncelyn.cymru ([82.70.14.225]:58076 "EHLO fuzix.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750847AbdFVUOt (ORCPT ); Thu, 22 Jun 2017 16:14:49 -0400 Date: Thu, 22 Jun 2017 21:14:31 +0100 From: Alan Cox Subject: Re: [PATCH 3/7] asm-generic/io.h: make ioread64 and iowrite64 universally available Message-ID: <20170622211431.14270378@alans-desktop> In-Reply-To: <20170622164817.25515-4-logang@deltatee.com> References: <20170622164817.25515-1-logang@deltatee.com> <20170622164817.25515-4-logang@deltatee.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-arch-owner@vger.kernel.org List-ID: To: Logan Gunthorpe Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-ntb@googlegroups.com, linux-alpha@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-crypto@vger.kernel.org, dri-devel@lists.freedesktop.org, Arnd Bergmann , Greg Kroah-Hartman , Stephen Bates Message-ID: <20170622201431._xulPp8bBIU5V75TLFgiDJtWkQNdlhpkZcGBgEHjEfg@z> On Thu, 22 Jun 2017 10:48:13 -0600 Logan Gunthorpe wrote: > Currently, ioread64 and iowrite64 are only available io CONFIG_64BIT=y > and CONFIG_GENERIC_IOMAP=n. Thus, seeing the functions are not > universally available, it makes them unusable for driver developers. > This leads to ugly hacks such as those at the top of > > drivers/ntb/hw/intel/ntb_hw_intel.c > > This patch adds fallback implementations for when CONFIG_64BIT and > CONFIG_GENERIC_IOMAP are not set. These functions use two io32 based > calls to complete the operation. > > Note, we do not use the volatile keyword in these functions like the > others in the same file. It is necessary to avoid a compiler warning > on arm. This is a really really bad idea as per the Alpha comment. ioread64 and iowrite64 generate a single 64bit bus transaction. There is hardware where mmio operations have side effects so simply using a pair of 32bit operations blindly does not work (consider something as trivial as reading a 64bit performance counter or incrementing pointer). If a platform doesn't support 64bit I/O operations from the CPU then you either need to use some kind of platform/architecture specific interface if present or accept you don't have one. It's not safe to split it. Possibly for some use cases you could add an ioread64_maysplit() but you cannot blindly break ioread64/write64() and expect it to magically allow you to use drivers that depend upon it. What btw is the actual ARM compiler warning ? Is the compiler also trying to tell you it's a bad idea ? Alan