mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ben Horgan <ben.horgan@arm.com>
To: Reinette Chatre <reinette.chatre@intel.com>,
	Richard Cheng <icheng@nvidia.com>,
	tony.luck@intel.com, shuah@kernel.org
Cc: Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com,
	linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
	yu.c.chen@intel.com, fenghuay@nvidia.com, newtonl@nvidia.com,
	kristinc@nvidia.com, kaihengf@nvidia.com, kobak@nvidia.com
Subject: Re: [PATCH v3 2/3] selftests/resctrl: Implement cl_flush() and sb() for aarch64
Date: Thu, 2 Jul 2026 15:15:27 +0100	[thread overview]
Message-ID: <04921da3-665c-41e8-ae6b-36fbafd1874d@arm.com> (raw)
In-Reply-To: <f66fcb15-b33d-4bdd-b772-6109a213853a@arm.com>

Hi Reinette, Richard,

On 6/26/26 14:58, Ben Horgan wrote:
> Hi Reinette, Richard,
> 
> On 6/26/26 04:26, Reinette Chatre wrote:
>> +Ben
>>
>> Hi Richard,
>>
>> On 5/28/26 7:23 PM, Richard Cheng wrote:
>>> cl_flush() and sb() in fill_buf.c only have implementations for i386
>>> and x86_64, so on aarch64 both compile to empty functions. mem_flush()
>>> then walks the buffer calling a no-op cl_flush() per cache line and
>>> finishes with a no-op sb(), leaving any caller that expects a flushed
>>> buffer (e.g. CMT, L3_CAT) operating on unflushed state with no warning.
>>>
>>> Add an aarch64 code block using the ARM equivalents:
>>> * "dc civac, %0" for cl_flush()
>>> * "dsb sy"       for sb()
>>
>> Calling on Arm experts here since my superficial check found sfence to
>> be used for __wmb() on x86 and the Arm equivalent per
>> arch/arm64/include/asm/barrier.h appears to be "dsb st"?
> 
> Referring to the arm reference manual (DDI0487 version M.a.a):
> D7.5.9.15 Ordering and completion of data and instruction cache
> instructions
> This talks about using dsb for the synchronization and also states:
> "In all cases, where the text in this section refers to a DMB or a DSB,
> this means a DMB or DSB whose required access type is both loads and
> stores."
> 
> Hence, in this case a "dsb st" is insufficient as the required access
> type is loads but not stores. A full "dsb sy" would work to synchronize
> the "dc civac".
> 
> However, I don't think "dc civac" fulfills the role of what is expected
> of cl_flush().
> 
>>
>> Even so, it looks like the changes below were considered by Ben during
>> a previous submission but I am not able to tell if his feedback was taken
>> into account here.
>> Please see:
>> https://lore.kernel.org/lkml/4449219d-186f-4b5e-9f72-958d1af80f58@arm.com/
>> https://lore.kernel.org/lkml/5aea412c-9c7f-4692-af3e-79937956ef8c@arm.com/
> 
> My understanding is that the resctrl selftests want to use cl_flush(),
> to invalidate entries in a system level cache for testing the cache
> portion bitmaps. However, the mechanism to invalidate the system level
> cache is generally implementation defined.
> 


I have also found out that cache maintenance operations on arm64 need
only do the necessary work to maintain coherency and no performance
effects can be implied. On platforms that are known to be coherent then
they may be a NOP. Perhaps you can just do some stores to fill the cache
with junk data.

Thanks,

Ben


  reply	other threads:[~2026-07-02 14:15 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-29  2:23 [PATCH v3 0/3] selftests/resctrl: Fix resctrl selftests issues on aarch64 Richard Cheng
2026-05-29  2:23 ` [PATCH v3 1/3] selftests/resctrl: Skip L3_CAT when no exclusive cache portion exists Richard Cheng
2026-06-26  3:25   ` Reinette Chatre
2026-05-29  2:23 ` [PATCH v3 2/3] selftests/resctrl: Implement cl_flush() and sb() for aarch64 Richard Cheng
2026-06-26  3:26   ` Reinette Chatre
2026-06-26 13:58     ` Ben Horgan
2026-07-02 14:15       ` Ben Horgan [this message]
2026-05-29  2:23 ` [PATCH v3 3/3] selftests/resctrl: Recognise aarch64 as a vendor for L3_NONCONT_CAT Richard Cheng
2026-05-31 19:01   ` Ilpo Järvinen
2026-06-26  3:26   ` Reinette Chatre
2026-05-29  2:28 ` [PATCH v3 0/3] selftests/resctrl: Fix resctrl selftests issues on aarch64 Richard Cheng

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=04921da3-665c-41e8-ae6b-36fbafd1874d@arm.com \
    --to=ben.horgan@arm.com \
    --cc=Dave.Martin@arm.com \
    --cc=babu.moger@amd.com \
    --cc=fenghuay@nvidia.com \
    --cc=icheng@nvidia.com \
    --cc=james.morse@arm.com \
    --cc=kaihengf@nvidia.com \
    --cc=kobak@nvidia.com \
    --cc=kristinc@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=newtonl@nvidia.com \
    --cc=reinette.chatre@intel.com \
    --cc=shuah@kernel.org \
    --cc=tony.luck@intel.com \
    --cc=yu.c.chen@intel.com \
    /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

all inboxes | Powered by JetHome®