From: Marc Zyngier <maz@kernel.org>
To: Alexandru Elisei <alexandru.elisei@arm.com>
Cc: Eric Auger <eric.auger@redhat.com>,
eric.auger.pro@gmail.com, kvm@vger.kernel.org,
kvmarm@lists.linux.dev, andrew.jones@linux.dev, will@kernel.org,
oliver.upton@linux.dev, ricarkol@google.com, reijiw@google.com
Subject: Re: [kvm-unit-tests PATCH 4/6] arm: pmu: Fix chain counter enable/disable sequences
Date: Fri, 21 Apr 2023 12:24:51 +0100 [thread overview]
Message-ID: <651289b765b20d6e2dc32f71c5d7b5b5@kernel.org> (raw)
In-Reply-To: <ZEJq_XNHi8Mx3CBy@monolith.localdoman>
On 2023-04-21 11:52, Alexandru Elisei wrote:
> Hi,
>
> On Wed, Mar 15, 2023 at 12:07:23PM +0100, Eric Auger wrote:
>> In some ARM ARM ddi0487 revisions it is said that
>> disabling/enabling a pair of counters that are paired
>> by a CHAIN event should follow a given sequence:
>>
>> Disable the low counter first, isb, disable the high counter
>> Enable the high counter first, isb, enable low counter
>>
>> This was the case in Fc. However this is not written anymore
>> in Ia revision.
>>
>> Introduce 2 helpers to execute those sequences and replace
>> the existing PMCNTENCLR/ENSET calls.
>>
>> Also fix 2 write_sysreg_s(0x0, PMCNTENSET_EL0) in subtest 5 & 6
>> and replace them by PMCNTENCLR writes since writing 0 in
>> PMCNTENSET_EL0 has no effect.
>>
>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>> ---
>> arm/pmu.c | 37 ++++++++++++++++++++++++++++---------
>> 1 file changed, 28 insertions(+), 9 deletions(-)
>>
>> diff --git a/arm/pmu.c b/arm/pmu.c
>> index dde399e2..af679667 100644
>> --- a/arm/pmu.c
>> +++ b/arm/pmu.c
>> @@ -730,6 +730,22 @@ static void test_chained_sw_incr(bool unused)
>> read_regn_el0(pmevcntr, 0), \
>> read_sysreg(pmovsclr_el0))
>>
>> +static void enable_chain_counter(int even)
>> +{
>> + write_sysreg_s(BIT(even), PMCNTENSET_EL0); /* Enable the high
>> counter first */
>> + isb();
>> + write_sysreg_s(BIT(even + 1), PMCNTENSET_EL0); /* Enable the low
>> counter */
>> + isb();
>> +}
>
> In ARM DDI 0487F.b, at the bottom of page D7-2727:
>
> "When enabling a pair of counters that are paired by a CHAIN event,
> software must:
>
> 1. Enable the high counter, by setting PMCNTENCLR_EL0[n+1] to 0 and, if
> necessary, setting PMCR_EL0.E to 1.
> 2. Execute an ISB instruction, or perform another Context
> synchronization
> event.
> 3. Enable the low counter by setting PMCNTENCLR_EL0[n] to 0."
This particular text seems to have been removed from the H.a and I.a
revisions of the ARM ARM, and I cannot spot any equivalent requirement.
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2023-04-21 11:24 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-15 11:07 [kvm-unit-tests PATCH 0/6] arm: pmu: Fix random failures of pmu-chain-promotion Eric Auger
2023-03-15 11:07 ` [kvm-unit-tests PATCH 1/6] arm: pmu: pmu-chain-promotion: Improve debug messages Eric Auger
2023-04-21 9:25 ` Alexandru Elisei
2023-04-24 20:09 ` Eric Auger
2023-03-15 11:07 ` [kvm-unit-tests PATCH 2/6] arm: pmu: pmu-chain-promotion: Introduce defines for count and margin values Eric Auger
2023-04-21 9:55 ` Alexandru Elisei
2023-04-24 20:09 ` Eric Auger
2023-03-15 11:07 ` [kvm-unit-tests PATCH 3/6] arm: pmu: Add extra DSB barriers in the mem_access loop Eric Auger
2023-04-21 10:25 ` Alexandru Elisei
2023-04-24 20:11 ` Eric Auger
2023-04-25 13:00 ` Alexandru Elisei
2023-05-31 20:14 ` Eric Auger
2023-03-15 11:07 ` [kvm-unit-tests PATCH 4/6] arm: pmu: Fix chain counter enable/disable sequences Eric Auger
2023-04-21 10:52 ` Alexandru Elisei
2023-04-21 11:24 ` Marc Zyngier [this message]
2023-05-31 20:15 ` Eric Auger
2023-03-15 11:07 ` [kvm-unit-tests PATCH 5/6] arm: pmu: Add pmu-memaccess-reliability test Eric Auger
2023-04-21 11:13 ` Alexandru Elisei
2023-05-31 20:15 ` Eric Auger
2023-03-15 11:07 ` [kvm-unit-tests PATCH 6/6] arm: pmu-chain-promotion: Increase the count and margin values Eric Auger
2023-04-04 6:23 ` [kvm-unit-tests PATCH 0/6] arm: pmu: Fix random failures of pmu-chain-promotion Eric Auger
2023-04-04 12:47 ` Andrew Jones
2023-04-12 7:34 ` Andrew Jones
2023-04-12 8:55 ` Alexandru Elisei
2023-04-12 8:47 ` Mark Rutland
2023-04-19 7:32 ` Eric Auger
2023-04-19 9:39 ` Alexandru Elisei
2023-04-21 8:11 ` Eric Auger
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=651289b765b20d6e2dc32f71c5d7b5b5@kernel.org \
--to=maz@kernel.org \
--cc=alexandru.elisei@arm.com \
--cc=andrew.jones@linux.dev \
--cc=eric.auger.pro@gmail.com \
--cc=eric.auger@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.