From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 866BDC04FF3 for ; Mon, 24 May 2021 16:24:17 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 499F6613BF for ; Mon, 24 May 2021 16:24:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 499F6613BF Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Mime-Version: Message-Id:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=Jzle0gS2eb0KAso7YnkA+dPyJ6TPUnWUg5CgeAz+MbQ=; b=rA5 gTSkcOwJSzGf215auBYSHvb3RqQS2JgH1n4ZpxUHEzP9g7kWqT1nWkGcpEApjNSoNNXcOn3YsJHjx 7+CV+AqpmMByV9fz0yCb6Jv/GYsMPCdpZ++5J2NGy8I+Cnd8enbux5DYxdB67EEkKdjsmZUf9Zr+p 1rr2jDi10XmBMfrfdGS7GUfxdBhfsI0O7qcoatqtRp7erF8bf6GuYrJK3yFDpr8t12DnuvD9eQka8 tlVTxl2svubg1prJaPDdKGwcm1eXOobdZ70h0Qo8FuuJm8wwtRT0eaavgz9Uks3194lurIAAAOucr +8SjFyzwSmVgiN5N5y9lUHG9gLDbDFQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1llDK5-0014a4-3z; Mon, 24 May 2021 16:20:57 +0000 Received: from mail-qt1-x84a.google.com ([2607:f8b0:4864:20::84a]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1ll5yQ-000lp1-2E for linux-arm-kernel@lists.infradead.org; Mon, 24 May 2021 08:30:07 +0000 Received: by mail-qt1-x84a.google.com with SMTP id d7-20020ac811870000b02901e65f85117bso23173853qtj.18 for ; Mon, 24 May 2021 01:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=bpEPKNP58mCD+6xl4Dg7SNB5O7uAkIRUD1WkmL6Fhog=; b=kk0SrIgPATkzTqwG+EFYPU+GEm/f9gFi4pKA7WPct78etpGaf1ntu9BkGuF2n8JufG qBE1GPi1/ougpm+6CXQdAuT2AQyelssXkgv7/hxJkftSiN0tLo8G/vRkqmWZAbiqwPuN jtmuDw1YHpLqyi4a9F8yck17LRPfQ9IEZgQLcweXD2U7v4HwTtYaVqaG/MN+Mx25pjNv f9ALXu/RQGUALHmzcKXbmf9iyYP2zBdISTPjeOhZt8UCu066YQsvqmVko8TqoUgwFRpV GWZwt6K7mpP8xiyKm4xe0uY06elvwGlm7NyYKvFAHMnJjGPS/iHRCW7VN/LbF2MGOpgs Xtig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=bpEPKNP58mCD+6xl4Dg7SNB5O7uAkIRUD1WkmL6Fhog=; b=AE8jxsWzsxqjdOZAxAy2QTS4eWq5iljLDwnmm5AGPsX9T/DvKNfKbGDhdLAbtLYyGx fITGEx/fGv55VfBWvgYfm09A38JFbCAA9Dvm0zaGQKJt8sOtYx1/NtUoEaMJXJSIHhlu qLTUZFqgqRKM6lZgB1JX4GRs4xTZMfrI7VSqAmpZsW80uIgselchnWONj2tpLDUAQ3r8 Hq+m7GIQsO7Wzcg/2341BWWBXuAsy+f9owvoW5SQU5E86c1I/pNbK093RC3JbIRy6tPw tTA00j1AbQdNCNcfUQSQqY1dN/MNOPaGj69qnldibL9mJb3UzXDrFLwu6t4PawDhR35C ThoQ== X-Gm-Message-State: AOAM532vh+IZ7JWMye5VI46i3I5z74RxydljPpfdGVyt6bZZ42+DUbUN VQtRDMO/QkAbA0StFWlFmaLsWh5pUrVylZMG+EQW0lHblw/mnMTdAOYVji8lXEGRU0EWUk4q3yB 7xw22LBaLT7q1iiRuvDmxWHUX6/8qkyLTBH3dKtvDi+P2JQDnBpNLuoxFpNhtVHi8MXaGisgW+e 7/Bw== X-Google-Smtp-Source: ABdhPJwOhytFiuykq7N76LD25P8DRSJAvnM8VlEN998ptFbz5sL9b+of62+0YKMzV44S78O9lTTXhGn5Nw== X-Received: from tabba.c.googlers.com ([fda3:e722:ac3:10:28:9cb1:c0a8:482]) (user=tabba job=sendgmr) by 2002:a0c:e20f:: with SMTP id q15mr29493750qvl.56.1621845003584; Mon, 24 May 2021 01:30:03 -0700 (PDT) Date: Mon, 24 May 2021 09:29:43 +0100 Message-Id: <20210524083001.2586635-1-tabba@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.31.1.818.g46aad6cb9e-goog Subject: [PATCH v4 00/18] Tidy up cache.S From: Fuad Tabba 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210524_013006_151358_68B3E957 X-CRM114-Status: GOOD ( 17.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Changes since v3 [1]: - Rebased onto v5.13-rc3 - Redid __flush_cache_range to use dcache_by_line_op (Mark) - Remove user_alt macro (Mark) - Tidying up some code, comments, and commit messages. (Mark) This should cover all the feedback from v2 [2]. Changes since v2 [2]: - Brought in Mark's patches that add conditional cache fixups, only generating an extable entry if a label is provided [3]. NOTE: The patches missed some of the code comments to reflect the changes. I took the liberty of fixing the comments in Mark's patch. - Tidied up the new cache flush (clean/invalidate) macro by removing code duplication, conditional variables/labels. Moved the ttbr manipulation, fixup handler, and rets inline in __flush_cache_user_range. (Mark) - Fixed comments and commit messages. (Mark) Changes since v1 [4]: - 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 [5], 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 [6]. Moreover, invalidate_icache_range and __flush_icache_range toggle uaccess, which isn't necessary because they work on kernel addresses [7]. 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-rc3. You can find the applied series here [8]. Cheers, /fuad [1] https://lore.kernel.org/linux-arm-kernel/20210520124406.2731873-1-tabba@google.com/ [2] https://lore.kernel.org/linux-arm-kernel/20210517075124.152151-1-tabba@google.com/ [3] https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/log/?h=arm64/cleanups/cache [4] https://lore.kernel.org/linux-arm-kernel/20210511144252.3779113-1-tabba@google.com/T/ [5] https://lore.kernel.org/linux-arch/20200511075115.GA16134@willie-the-truck/ [6] https://lore.kernel.org/linux-arch/20200510075510.987823-3-hch@lst.de/ [7] https://lore.kernel.org/linux-arch/20200511110014.lb9PEahJ4hVOYrbwIb_qUHXyNy9KQzNFdb_I3YlzY6A@z/ [8] 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: assembler: remove user_alt 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 Mark Rutland (2): arm64: assembler: replace `kaddr` with `addr` arm64: assembler: add conditional cache fixups arch/arm64/include/asm/alternative-macros.h | 5 - arch/arm64/include/asm/arch_gicv3.h | 3 +- arch/arm64/include/asm/assembler.h | 80 ++++++---- arch/arm64/include/asm/cacheflush.h | 71 +++++---- 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 | 158 ++++++++++---------- arch/arm64/mm/flush.c | 29 ++-- 28 files changed, 282 insertions(+), 220 deletions(-) base-commit: c4681547bcce777daf576925a966ffa824edd09d -- 2.31.1.818.g46aad6cb9e-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel