On Mon, Jan 7, 2019 at 1:55 AM David Laight <david.lai...@aculab.com> wrote: > > I needed to open-code one part because it wants to do copy_to_user() > from a PCIe address buffer (which has to work).
It will never work for memcpy_fromio(). Any driver that thinks it will copy from io space to user space absolutely *has* to do it by hand. No questions, and no exceptions. Some loop like for (..) put_user(readl(iomem++), uaddr++); because neither copy_to_user() nor memcpy_fromio() will *ever* handle that correctly. They might randomly happen to work on x86, but absolutely nowhere else. Linus