Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1673024
| From | Alan Cox <gnomes@lxorguk.ukuu.org.uk> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 3/7] asm-generic/io.h: make ioread64 and iowrite64 universally available |
| Date | 2017-06-22 22:20 +0200 |
| Message-ID | <tVgK5-10A-3@gated-at.bofh.it> (permalink) |
| References | <tVdsS-7hT-17@gated-at.bofh.it> <tVdsT-7hT-33@gated-at.bofh.it> |
| Organization | Intel Corporation |
On Thu, 22 Jun 2017 10:48:13 -0600 Logan Gunthorpe <logang@deltatee.com> 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
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 3/7] asm-generic/io.h: make ioread64 and iowrite64 universally available Logan Gunthorpe <logang@deltatee.com> - 2017-06-22 18:50 +0200
Re: [PATCH 3/7] asm-generic/io.h: make ioread64 and iowrite64 universally available Alan Cox <gnomes@lxorguk.ukuu.org.uk> - 2017-06-22 22:20 +0200
Re: [PATCH 3/7] asm-generic/io.h: make ioread64 and iowrite64 universally available Logan Gunthorpe <logang@deltatee.com> - 2017-06-22 22:30 +0200
Re: [PATCH 3/7] asm-generic/io.h: make ioread64 and iowrite64 universally available Alan Cox <gnomes@lxorguk.ukuu.org.uk> - 2017-06-22 22:40 +0200
Re: [PATCH 3/7] asm-generic/io.h: make ioread64 and iowrite64 universally available Logan Gunthorpe <logang@deltatee.com> - 2017-06-22 22:40 +0200
csiph-web