mbox series

[v5,0/6] arm64: Cleanup ioremap() and support ioremap_prot()

Message ID 20220607125027.44946-1-wangkefeng.wang@huawei.com (mailing list archive)
Headers show
Series arm64: Cleanup ioremap() and support ioremap_prot() | expand

Message

Kefeng Wang June 7, 2022, 12:50 p.m. UTC
1. Enhance generic ioremap to make it more useful.
2. Let's arm64 use GENERIC_IOREMAP to cleanup code.
3. Support HAVE_IOREMAP_PROT on arm64, which enable generic_access_phys(),
   it is useful when debug(eg, gdb) via access_process_vm device memory
   infrastructure.

v5:
- break long lines(> 80 cols), per Christoph Hellwig
- move is_vmalloc_addr() check from arm64 into generic ioremap, per
  Christoph Hellwig
- make arm64's ioremap_cache as an inline function, per Christoph
- keep changes simple, make ioremap/iounmap_allowed return bool, per
  Baoquan He
- simplify use 'void *' instead of 'void __iomem *' in iounmap, then
  drop __force annotation

v4:
- update based on v5.19-rc1
- add generic arch_ioremap/arch_iounmap define, per Andrew Monrton
- simply return an int for arch_ioremap and rename arch_ioremap/arch_iounmap
  to a better name, ioremap_allowed/iounmap_allowed, per Arnd Bergmann
- add __force annotation to slince sparse warning in vunmap() 

Note, 
1) after the renaming, the arm's change(patch1) is not the necessary
   dependence for the following changes, but as a cleanup, still post
   it here, hope it go in via the arm64 tree with reset of the series
   directly if no object.
2) the changes in this version only influence on patch4/5, so retain
   the ack/review.

v3:
- add cleanup patch to kill ARM's unused arch_iounmap(the naming will be
  used in GENERIC_IOREMAP) and add comments for arch_ioremap/arch_iounmap
  hooks, per Anshuman Khandual
- collect ack/review 

v2:
- s/addr/phys_addr in ioremap_prot, suggested by Andrew Morton 
- rename arch_ioremap/iounmap_check to arch_ioremap/iounmap
  and change return value, per Christoph Hellwig and Andrew Morton
- and use 'ifndef arch_ioremap' instead of weak function, per Arnd Bergmann
- collect ack/review

Kefeng Wang (6):
  ARM: mm: kill unused runtime hook arch_iounmap()
  mm: ioremap: Use more sensibly name in ioremap_prot()
  mm: ioremap: Setup phys_addr of struct vm_struct
  mm: ioremap: Add ioremap/iounmap_allowed()
  arm64: mm: Convert to GENERIC_IOREMAP
  arm64: Add HAVE_IOREMAP_PROT support

 .../features/vm/ioremap_prot/arch-support.txt |  2 +-
 arch/arm/include/asm/io.h                     |  4 +-
 arch/arm/mm/ioremap.c                         |  9 +-
 arch/arm/mm/nommu.c                           |  9 +-
 arch/arm64/Kconfig                            |  2 +
 arch/arm64/include/asm/io.h                   | 24 +++--
 arch/arm64/include/asm/pgtable.h              | 10 +++
 arch/arm64/kernel/acpi.c                      |  2 +-
 arch/arm64/mm/hugetlbpage.c                   | 10 ---
 arch/arm64/mm/ioremap.c                       | 90 ++-----------------
 include/asm-generic/io.h                      | 29 +++++-
 mm/ioremap.c                                  | 26 ++++--
 12 files changed, 90 insertions(+), 127 deletions(-)

Comments

Kefeng Wang June 14, 2022, 3:21 a.m. UTC | #1
Hi Catalin, could you help to pick up it, thanks.

On 2022/6/7 20:50, Kefeng Wang wrote:
> 1. Enhance generic ioremap to make it more useful.
> 2. Let's arm64 use GENERIC_IOREMAP to cleanup code.
> 3. Support HAVE_IOREMAP_PROT on arm64, which enable generic_access_phys(),
>     it is useful when debug(eg, gdb) via access_process_vm device memory
>     infrastructure.
>
> v5:
> - break long lines(> 80 cols), per Christoph Hellwig
> - move is_vmalloc_addr() check from arm64 into generic ioremap, per
>    Christoph Hellwig
> - make arm64's ioremap_cache as an inline function, per Christoph
> - keep changes simple, make ioremap/iounmap_allowed return bool, per
>    Baoquan He
> - simplify use 'void *' instead of 'void __iomem *' in iounmap, then
>    drop __force annotation
>
> v4:
> - update based on v5.19-rc1
> - add generic arch_ioremap/arch_iounmap define, per Andrew Monrton
> - simply return an int for arch_ioremap and rename arch_ioremap/arch_iounmap
>    to a better name, ioremap_allowed/iounmap_allowed, per Arnd Bergmann
> - add __force annotation to slince sparse warning in vunmap()
>
> Note,
> 1) after the renaming, the arm's change(patch1) is not the necessary
>     dependence for the following changes, but as a cleanup, still post
>     it here, hope it go in via the arm64 tree with reset of the series
>     directly if no object.
> 2) the changes in this version only influence on patch4/5, so retain
>     the ack/review.
>
> v3:
> - add cleanup patch to kill ARM's unused arch_iounmap(the naming will be
>    used in GENERIC_IOREMAP) and add comments for arch_ioremap/arch_iounmap
>    hooks, per Anshuman Khandual
> - collect ack/review
>
> v2:
> - s/addr/phys_addr in ioremap_prot, suggested by Andrew Morton
> - rename arch_ioremap/iounmap_check to arch_ioremap/iounmap
>    and change return value, per Christoph Hellwig and Andrew Morton
> - and use 'ifndef arch_ioremap' instead of weak function, per Arnd Bergmann
> - collect ack/review
>
> Kefeng Wang (6):
>    ARM: mm: kill unused runtime hook arch_iounmap()
>    mm: ioremap: Use more sensibly name in ioremap_prot()
>    mm: ioremap: Setup phys_addr of struct vm_struct
>    mm: ioremap: Add ioremap/iounmap_allowed()
>    arm64: mm: Convert to GENERIC_IOREMAP
>    arm64: Add HAVE_IOREMAP_PROT support
>
>   .../features/vm/ioremap_prot/arch-support.txt |  2 +-
>   arch/arm/include/asm/io.h                     |  4 +-
>   arch/arm/mm/ioremap.c                         |  9 +-
>   arch/arm/mm/nommu.c                           |  9 +-
>   arch/arm64/Kconfig                            |  2 +
>   arch/arm64/include/asm/io.h                   | 24 +++--
>   arch/arm64/include/asm/pgtable.h              | 10 +++
>   arch/arm64/kernel/acpi.c                      |  2 +-
>   arch/arm64/mm/hugetlbpage.c                   | 10 ---
>   arch/arm64/mm/ioremap.c                       | 90 ++-----------------
>   include/asm-generic/io.h                      | 29 +++++-
>   mm/ioremap.c                                  | 26 ++++--
>   12 files changed, 90 insertions(+), 127 deletions(-)
>
Kefeng Wang June 27, 2022, 11:06 a.m. UTC | #2
On 2022/6/14 11:21, Kefeng Wang wrote:
> Hi Catalin, could you help to pick up it, thanks.
Kindly ping...
>
> On 2022/6/7 20:50, Kefeng Wang wrote:
>> 1. Enhance generic ioremap to make it more useful.
>> 2. Let's arm64 use GENERIC_IOREMAP to cleanup code.
>> 3. Support HAVE_IOREMAP_PROT on arm64, which enable 
>> generic_access_phys(),
>>     it is useful when debug(eg, gdb) via access_process_vm device memory
>>     infrastructure.
Will Deacon June 27, 2022, 11:14 a.m. UTC | #3
On Mon, Jun 27, 2022 at 07:06:41PM +0800, Kefeng Wang wrote:
> 
> On 2022/6/14 11:21, Kefeng Wang wrote:
> > Hi Catalin, could you help to pick up it, thanks.
> Kindly ping...

Sorry, this is on my plate for 5.20. I'll try to get to it today.

Will
Kefeng Wang June 27, 2022, 11:19 a.m. UTC | #4
On 2022/6/27 19:14, Will Deacon wrote:
> On Mon, Jun 27, 2022 at 07:06:41PM +0800, Kefeng Wang wrote:
>> On 2022/6/14 11:21, Kefeng Wang wrote:
>>> Hi Catalin, could you help to pick up it, thanks.
>> Kindly ping...
> Sorry, this is on my plate for 5.20. I'll try to get to it today.
Good to know it, thank you.
>
> Will
> .
Will Deacon June 27, 2022, 1 p.m. UTC | #5
On Tue, 7 Jun 2022 20:50:21 +0800, Kefeng Wang wrote:
> 1. Enhance generic ioremap to make it more useful.
> 2. Let's arm64 use GENERIC_IOREMAP to cleanup code.
> 3. Support HAVE_IOREMAP_PROT on arm64, which enable generic_access_phys(),
>    it is useful when debug(eg, gdb) via access_process_vm device memory
>    infrastructure.
> 
> v5:
> - break long lines(> 80 cols), per Christoph Hellwig
> - move is_vmalloc_addr() check from arm64 into generic ioremap, per
>   Christoph Hellwig
> - make arm64's ioremap_cache as an inline function, per Christoph
> - keep changes simple, make ioremap/iounmap_allowed return bool, per
>   Baoquan He
> - simplify use 'void *' instead of 'void __iomem *' in iounmap, then
>   drop __force annotation
> 
> [...]

Applied to arm64 (for-next/ioremap), thanks!

[1/6] ARM: mm: kill unused runtime hook arch_iounmap()
      https://git.kernel.org/arm64/c/d803336abdbc
[2/6] mm: ioremap: Use more sensibly name in ioremap_prot()
      https://git.kernel.org/arm64/c/abc5992b9dd0
[3/6] mm: ioremap: Setup phys_addr of struct vm_struct
      https://git.kernel.org/arm64/c/a14fff1c0379
[4/6] mm: ioremap: Add ioremap/iounmap_allowed()
      https://git.kernel.org/arm64/c/18e780b4e6ab
[5/6] arm64: mm: Convert to GENERIC_IOREMAP
      https://git.kernel.org/arm64/c/f23eab0bfaef
[6/6] arm64: Add HAVE_IOREMAP_PROT support
      https://git.kernel.org/arm64/c/893dea9ccd08

Cheers,