[PATCH v2 0/3] arm64: simplify fixmap code

Ryan Roberts ryan.roberts at arm.com
Tue Apr 11 03:50:10 PDT 2023


On 06/04/2023 16:27, Mark Rutland wrote:
> Currently arm64's fixmap code tries to use 2M blocks to map the FDT when
> 4K pages are in use. We do so for a number of historical reasons largely
> boiling down to "it was simpler at the time", but there's no functional
> or performance reason why we must use 2M block mappings for the FDT, and
> using 2M blocks complicates the code and causes some potential issues
> (e.g. mismatched aliases with memory surrounding the FDT).
> 
> These patches change the fixmap code to always map the FDT at page
> granularity. This makes the code simpler, and gets rid of potential
> issues. 
> 
> The first patch fixes a latent (but functionally benign) confusion
> between the bounds of the entire fixmap region and the bounds of the
> runtime portion of the fixmap. The second factors the fixmap code into a
> separate file, adding a few lines due to includes and function
> prototypes. The final patch makes the structural changes to simplify the
> code.
> 
> I've boot-tested this atop v6.3-rc3 in a number of 4K/16K/64K
> configurations to exercise the initialization and copy code.

LGTM! I still think it would all be hugely easier to understand if the enum
values weren't backwards, but I guess I'd be pushing my luck to insist upon it
;-). It can always be done in a future patch.

So:

Reviewed-by: Ryan Roberts <ryan.roberts at arm.com>


> 
> Since v1 [1]:
> * Add FIXADDR_TOT_{START,SIZE}
> * Correct DTB mapping to be 2M + 1 page
> * Fix typos
> 
> [1] https://lore.kernel.org/linux-arm-kernel/20230314142125.502043-1-mark.rutland@arm.com/
> 
> Thanks,
> Mark.
> 
> Mark Rutland (3):
>   arm64: add FIXADDR_TOT_{START,SIZE}
>   arm64: mm: move fixmap code to its own file
>   arm64: mm: always map fixmap at page granularity
> 
>  arch/arm64/include/asm/fixmap.h         |  22 +--
>  arch/arm64/include/asm/kernel-pgtable.h |   5 +-
>  arch/arm64/include/asm/mmu.h            |   2 +
>  arch/arm64/mm/Makefile                  |   2 +-
>  arch/arm64/mm/fixmap.c                  | 203 ++++++++++++++++++++++++
>  arch/arm64/mm/mmu.c                     | 197 +----------------------
>  arch/arm64/mm/ptdump.c                  |   2 +-
>  7 files changed, 225 insertions(+), 208 deletions(-)
>  create mode 100644 arch/arm64/mm/fixmap.c
> 




More information about the linux-arm-kernel mailing list