switch the remaining architectures to use generic GUP v4

From: Christoph Hellwig
Date: Tue Jun 25 2019 - 10:38:51 EST


Hi Linus and maintainers,

below is a series to switch mips, sh and sparc64 to use the generic
GUP code so that we only have one codebase to touch for further
improvements to this code. I don't have hardware for any of these
architectures, and generally no clue about their page table
management, so handle with care.

Changes since v3:
- improve a few commit messages
- clean up gup_fast_permitted a bit more
- split the code reordering in gup.c into a separate patch
- drop the patch to pass argument in a structure for now

Changes since v2:
- rebase to mainline to pick up the untagged_addr definition
- fix the gup range check to be start <= end to catch the 0 length case
- use pfn based version for the missing pud_page/pgd_page definitions
- fix a wrong check in the sparc64 version of pte_access_permitted

Changes since v1:
- fix various issues found by the build bot
- cherry pick and use the untagged_addr helper form Andrey
- add various refactoring patches to share more code over architectures
- move the powerpc hugepd code to mm/gup.c and sync it with the generic
hup semantics