[PATCH v2 00/16] Tidy up cache.S
From: Fuad Tabba <hidden>
Date: 2021-05-17 07:57:10
Hi, Changes since v1 [1]: - Apply ARM64_WORKAROUND_CLEAN_CACHE errata to swsusp_arch_suspend_exit (Mark) - Remove toggling of uaccess from the newly created cache flush (clean/invalidate) macro and leave it up to the caller (Robin) - Fix renaming of cache maintenance functions (Ard, Mark) - Fix comment on maintenance operations in machine_kexec_post_load (Ard) - Fix commit msg comments to clarify some of the changes and outline potential performance impact (Mark) - Fix code comments that refer to flush_icache_range when the intended function is __flush_icache_range As has been noted before [2], the code in cache.S isn't very tidy. Some of its functions accept address ranges by start and size, whereas others with similar names do so by start and end. This has resulted in at least one bug [3]. Moreover, invalidate_icache_range and __flush_icache_range toggle uaccess, which isn't necessary because they work on the kernel linear map [4]. This patch series attempts to fix these issues, as well as tidy up the code in general to reduce ambiguity and make it consistent with Arm terminology and with the functions' actual operations. No functional change intended in this series. However, there might be a performance impact due to the reduced number of instructions in general. This series is based on v5.13-rc1. You can find the applied series here [5]. Cheers, /fuad [1] https://lore.kernel.org/linux-arm-kernel/20210511144252.3779113-1-tabba@google.com/T/ (local) [2] https://lore.kernel.org/linux-arch/20200511075115.GA16134@willie-the-truck/ (local) [3] https://lore.kernel.org/linux-arch/20200510075510.987823-3-hch@lst.de/ (local) [4] https://lore.kernel.org/linux-arch/20200511110014.lb9PEahJ4hVOYrbwIb_qUHXyNy9KQzNFdb_I3YlzY6A@z/ [5] https://android-kvm.googlesource.com/linux/+/refs/heads/tabba/fixcache-5.13 Fuad Tabba (16): arm64: Apply errata to swsusp_arch_suspend_exit arm64: Do not enable uaccess for flush_icache_range arm64: Do not enable uaccess for invalidate_icache_range arm64: Downgrade flush_icache_range to invalidate arm64: Remove uaccess toggle from __flush_cache_range macro arm64: Move documentation of dcache_by_line_op arm64: Fix comments to refer to correct function __flush_icache_range arm64: __inval_dcache_area to take end parameter instead of size arm64: dcache_by_line_op to take end parameter instead of size arm64: __flush_dcache_area to take end parameter instead of size arm64: __clean_dcache_area_poc to take end parameter instead of size arm64: __clean_dcache_area_pop to take end parameter instead of size arm64: __clean_dcache_area_pou to take end parameter instead of size arm64: sync_icache_aliases to take end parameter instead of size arm64: Fix cache maintenance function comments arm64: Rename arm64-internal cache maintenance functions arch/arm64/include/asm/arch_gicv3.h | 3 +- arch/arm64/include/asm/assembler.h | 52 ++++----- arch/arm64/include/asm/cacheflush.h | 69 +++++++----- arch/arm64/include/asm/efi.h | 2 +- arch/arm64/include/asm/kvm_mmu.h | 7 +- arch/arm64/kernel/alternative.c | 2 +- arch/arm64/kernel/efi-entry.S | 9 +- arch/arm64/kernel/head.S | 13 +-- arch/arm64/kernel/hibernate-asm.S | 7 +- arch/arm64/kernel/hibernate.c | 20 ++-- arch/arm64/kernel/idreg-override.c | 3 +- arch/arm64/kernel/image-vars.h | 2 +- arch/arm64/kernel/insn.c | 2 +- arch/arm64/kernel/kaslr.c | 12 ++- arch/arm64/kernel/machine_kexec.c | 30 ++++-- arch/arm64/kernel/probes/uprobes.c | 2 +- arch/arm64/kernel/smp.c | 8 +- arch/arm64/kernel/smp_spin_table.c | 7 +- arch/arm64/kernel/sys_compat.c | 2 +- arch/arm64/kvm/arm.c | 2 +- arch/arm64/kvm/hyp/nvhe/cache.S | 4 +- arch/arm64/kvm/hyp/nvhe/setup.c | 3 +- arch/arm64/kvm/hyp/nvhe/tlb.c | 2 +- arch/arm64/kvm/hyp/pgtable.c | 13 ++- arch/arm64/lib/uaccess_flushcache.c | 4 +- arch/arm64/mm/cache.S | 157 +++++++++++++++------------- arch/arm64/mm/flush.c | 29 ++--- 27 files changed, 267 insertions(+), 199 deletions(-) base-commit: 6efb943b8616ec53a5e444193dccf1af9ad627b5 -- 2.31.1.751.gd2f1c929bd-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel