From: Alexandru Elisei <alexandru.elisei@arm.com>
To: drjones@redhat.com, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu
Subject: [kvm-unit-tests PATCH 3/6] arm/arm64: Remove unnecessary ISB when doing dcache maintenance
Date: Sat, 27 Feb 2021 10:41:58 +0000 [thread overview]
Message-ID: <20210227104201.14403-4-alexandru.elisei@arm.com> (raw)
In-Reply-To: <20210227104201.14403-1-alexandru.elisei@arm.com>
The dcache_by_line_op macro executes a DSB to complete the cache
maintenance operations. According to ARM DDI 0487G.a, page B2-150:
"In addition, no instruction that appears in program order after the DSB
instruction can alter any state of the system or perform any part of its
functionality until the DSB completes other than:
- Being fetched from memory and decoded.
- Reading the general-purpose, SIMD and floating-point, Special-purpose, or
System registers that are directly or indirectly read without causing
side-effects."
Similar definition for ARM in ARM DDI 0406C.d, page A3-150:
"In addition, no instruction that appears in program order after the DSB
instruction can execute until the DSB completes."
This means that we don't need the ISB to prevent reordering of the cache
maintenance instructions.
We are also not doing icache maintenance, where an ISB would be required
for the PE to discard instructions speculated before the invalidation.
In conclusion, the ISB is unnecessary, so remove it.
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
---
arm/cstart.S | 1 -
arm/cstart64.S | 1 -
2 files changed, 2 deletions(-)
diff --git a/arm/cstart.S b/arm/cstart.S
index 954748b00f64..2d62c1e6d40d 100644
--- a/arm/cstart.S
+++ b/arm/cstart.S
@@ -212,7 +212,6 @@ asm_mmu_disable:
ldr r1, [r1]
sub r1, r1, r0
dcache_by_line_op dccimvac, sy, r0, r1, r2, r3
- isb
mov pc, lr
diff --git a/arm/cstart64.S b/arm/cstart64.S
index 046bd3914098..c1deff842f03 100644
--- a/arm/cstart64.S
+++ b/arm/cstart64.S
@@ -219,7 +219,6 @@ asm_mmu_disable:
ldr x1, [x1, :lo12:__phys_end]
sub x1, x1, x0
dcache_by_line_op civac, sy, x0, x1, x2, x3
- isb
ret
--
2.30.1
next prev parent reply other threads:[~2021-02-27 10:42 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-27 10:41 [kvm-unit-tests PATCH 0/6] Misc assembly fixes and cleanups Alexandru Elisei
2021-02-27 10:41 ` [kvm-unit-tests PATCH 1/6] arm64: Remove unnecessary ISB when writing to SPSel Alexandru Elisei
2021-03-03 17:35 ` Andre Przywara
2021-02-27 10:41 ` [kvm-unit-tests PATCH 2/6] arm/arm64: Remove dcache_line_size global variable Alexandru Elisei
2021-03-04 15:00 ` Andre Przywara
2021-03-15 15:46 ` Alexandru Elisei
2021-03-16 15:40 ` Andre Przywara
2021-03-22 12:01 ` Alexandru Elisei
2021-02-27 10:41 ` Alexandru Elisei [this message]
2021-03-12 14:59 ` [kvm-unit-tests PATCH 3/6] arm/arm64: Remove unnecessary ISB when doing dcache maintenance Andrew Jones
2021-03-15 16:22 ` Alexandru Elisei
2021-02-27 10:41 ` [kvm-unit-tests PATCH 4/6] lib: arm64: Consolidate register definitions to sysreg.h Alexandru Elisei
2021-03-03 17:32 ` Andre Przywara
2021-02-27 10:42 ` [kvm-unit-tests PATCH 5/6] arm64: Configure SCTLR_EL1 at boot Alexandru Elisei
2021-03-03 17:32 ` Andre Przywara
2021-02-27 10:42 ` [kvm-unit-tests PATCH 6/6] arm64: Disable TTBR1_EL1 translation table walks Alexandru Elisei
2021-03-03 17:32 ` Andre Przywara
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=20210227104201.14403-4-alexandru.elisei@arm.com \
--to=alexandru.elisei@arm.com \
--cc=drjones@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
/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).