linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Fuad Tabba <tabba@google.com>
To: linux-arm-kernel@lists.infradead.org
Cc: will@kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com,
	 maz@kernel.org, ardb@kernel.org, james.morse@arm.com,
	 alexandru.elisei@arm.com, suzuki.poulose@arm.com,
	robin.murphy@arm.com,  tabba@google.com
Subject: [PATCH v2 00/16] Tidy up cache.S
Date: Mon, 17 May 2021 08:51:08 +0100	[thread overview]
Message-ID: <20210517075124.152151-1-tabba@google.com> (raw)

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/
[2] https://lore.kernel.org/linux-arch/20200511075115.GA16134@willie-the-truck/
[3] https://lore.kernel.org/linux-arch/20200510075510.987823-3-hch@lst.de/
[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

             reply	other threads:[~2021-05-17  7:57 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-17  7:51 Fuad Tabba [this message]
2021-05-17  7:51 ` [PATCH v2 01/16] arm64: Apply errata to swsusp_arch_suspend_exit Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 02/16] arm64: Do not enable uaccess for flush_icache_range Fuad Tabba
2021-05-18 15:33   ` Mark Rutland
2021-05-19 16:25     ` Fuad Tabba
2021-05-20 10:47       ` Mark Rutland
2021-05-17  7:51 ` [PATCH v2 03/16] arm64: Do not enable uaccess for invalidate_icache_range Fuad Tabba
2021-05-18 15:36   ` Mark Rutland
2021-05-19 16:26     ` Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 04/16] arm64: Downgrade flush_icache_range to invalidate Fuad Tabba
2021-05-18 15:53   ` Mark Rutland
2021-05-18 16:02     ` Ard Biesheuvel
2021-05-18 16:06       ` Mark Rutland
2021-05-19 16:29         ` Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 05/16] arm64: Remove uaccess toggle from __flush_cache_range macro Fuad Tabba
2021-05-18 16:00   ` Mark Rutland
2021-05-19 16:27     ` Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 06/16] arm64: Move documentation of dcache_by_line_op Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 07/16] arm64: Fix comments to refer to correct function __flush_icache_range Fuad Tabba
2021-05-18 16:03   ` Mark Rutland
2021-05-17  7:51 ` [PATCH v2 08/16] arm64: __inval_dcache_area to take end parameter instead of size Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 09/16] arm64: dcache_by_line_op " Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 10/16] arm64: __flush_dcache_area " Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 11/16] arm64: __clean_dcache_area_poc " Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 12/16] arm64: __clean_dcache_area_pop " Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 13/16] arm64: __clean_dcache_area_pou " Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 14/16] arm64: sync_icache_aliases " Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 15/16] arm64: Fix cache maintenance function comments Fuad Tabba
2021-05-17  7:51 ` [PATCH v2 16/16] arm64: Rename arm64-internal cache maintenance functions Fuad Tabba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210517075124.152151-1-tabba@google.com \
    --to=tabba@google.com \
    --cc=alexandru.elisei@arm.com \
    --cc=ardb@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=james.morse@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).