From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com,
kvm@vger.kernel.org, kvmarm@lists.linux.dev,
andrew.jones@linux.dev, maz@kernel.org, will@kernel.org,
oliver.upton@linux.dev, ricarkol@google.com, reijiw@google.com,
alexandru.elisei@arm.com
Cc: mark.rutland@arm.com
Subject: [kvm-unit-tests PATCH v3 3/6] arm: pmu: Add extra DSB barriers in the mem_access loop
Date: Mon, 19 Jun 2023 22:03:58 +0200 [thread overview]
Message-ID: <20230619200401.1963751-4-eric.auger@redhat.com> (raw)
In-Reply-To: <20230619200401.1963751-1-eric.auger@redhat.com>
The mem access loop currently features ISB barriers only. However
the mem_access loop counts the number of accesses to memory. ISB
do not garantee the PE cannot reorder memory access. Let's
add a DSB ISH before the write to PMCR_EL0 that enables the PMU
to make sure any previous memory access aren't counted in the
loop, another one after the PMU gets enabled (to make sure loop
memory accesses cannot be reordered before the PMU gets enabled)
and a last one after the last iteration, before disabling the PMU.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Suggested-by: Alexandru Elisei <alexandru.elisei@arm.com>
Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com>
---
v2 -> v3:
- Added Alexandru's R-b
v1 -> v2:
- added yet another DSB after PMU enabled as suggested by Alexandru
This was discussed in https://lore.kernel.org/all/YzxmHpV2rpfaUdWi@monolith.localdoman/
---
arm/pmu.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arm/pmu.c b/arm/pmu.c
index 51c0fe80..74dd4c10 100644
--- a/arm/pmu.c
+++ b/arm/pmu.c
@@ -301,13 +301,16 @@ static void mem_access_loop(void *addr, long loop, uint32_t pmcr)
{
uint64_t pmcr64 = pmcr;
asm volatile(
+ " dsb ish\n"
" msr pmcr_el0, %[pmcr]\n"
" isb\n"
+ " dsb ish\n"
" mov x10, %[loop]\n"
"1: sub x10, x10, #1\n"
" ldr x9, [%[addr]]\n"
" cmp x10, #0x0\n"
" b.gt 1b\n"
+ " dsb ish\n"
" msr pmcr_el0, xzr\n"
" isb\n"
:
--
2.38.1
next prev parent reply other threads:[~2023-06-19 20:05 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-19 20:03 [kvm-unit-tests PATCH v3 0/6] arm: pmu: Fix random failures of pmu-chain-promotion Eric Auger
2023-06-19 20:03 ` [kvm-unit-tests PATCH v3 1/6] arm: pmu: pmu-chain-promotion: Improve debug messages Eric Auger
2023-06-19 20:03 ` [kvm-unit-tests PATCH v3 2/6] arm: pmu: pmu-chain-promotion: Introduce defines for count and margin values Eric Auger
2023-06-19 20:03 ` Eric Auger [this message]
2023-06-19 20:03 ` [kvm-unit-tests PATCH v3 4/6] arm: pmu: Fix chain counter enable/disable sequences Eric Auger
2023-06-30 15:47 ` Alexandru Elisei
2023-06-19 20:04 ` [kvm-unit-tests PATCH v3 5/6] arm: pmu: Add pmu-mem-access-reliability test Eric Auger
2023-06-30 16:14 ` Alexandru Elisei
2023-06-30 17:15 ` Eric Auger
2023-07-01 11:36 ` Andrew Jones
2023-07-03 8:08 ` Eric Auger
2023-06-19 20:04 ` [kvm-unit-tests PATCH v3 6/6] arm: pmu-chain-promotion: Increase the count and margin values Eric Auger
2023-06-28 7:44 ` [kvm-unit-tests PATCH v3 0/6] arm: pmu: Fix random failures of pmu-chain-promotion Eric Auger
2023-06-28 10:18 ` Alexandru Elisei
2023-06-28 11:45 ` Eric Auger
2023-07-01 12:20 ` Andrew Jones
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=20230619200401.1963751-4-eric.auger@redhat.com \
--to=eric.auger@redhat.com \
--cc=alexandru.elisei@arm.com \
--cc=andrew.jones@linux.dev \
--cc=eric.auger.pro@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=reijiw@google.com \
--cc=ricarkol@google.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).