From: Catalin Marinas <catalin.marinas@arm.com>
To: James Houghton <jthoughton@google.com>
Cc: Will Deacon <will@kernel.org>,
Muchun Song <muchun.song@linux.dev>,
Oscar Salvador <osalvador@suse.de>,
Nikos Nikoleris <nikos.nikoleris@arm.com>,
Linu Cherian <linu.cherian@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
David Hildenbrand <david@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Ryan Roberts <ryan.roberts@arm.com>,
Nanyong Sun <sunnanyong@huawei.com>, Yu Zhao <yuzhao@google.com>,
Frank van der Linden <fvdl@google.com>,
David Rientjes <rientjes@google.com>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org
Subject: Re: [PATCH 00/18] Another attempt at HVO support on arm64
Date: Mon, 17 Aug 2026 18:34:16 +0100 [thread overview]
Message-ID: <aoNGGKYZrOlaJ4mH@arm.com> (raw)
In-Reply-To: <20260708031129.3503195-1-jthoughton@google.com>
Hi James,
On Wed, Jul 08, 2026 at 03:11:10AM +0000, James Houghton wrote:
> The following Herd litmus test demonstrates the PTE update routine:
>
> AArch64 TTDFaultlessUpdate
> Variant=vmsa
> TTHM=HA
> {
> uint64_t x=1;
> uint64_t y=2;
> [PTE(x)]=(oa:PA(x), af:1);
> 0:X0=PTE(x); 1:X0=PTE(x);
> 0:X1=x; 1:X1=x;
> pteval_t 0:X2=(oa:PA(x), af:0);
> pteval_t 0:X3=(oa:PA(y), af:1);
> }
> P0 | P1 ;
> LDR X4,[X0] | L0: ;
> MOV X5,X4 | LDR X2,[X1] ;
> CAS X4,X2,[X0] | ;
> DSB ISHST | ;
> LSR X9,X1,#12 | ;
> TLBI VAALE1IS,X9 | ;
> DSB ISH | ;
> ISB | ;
> CAS X2,X3,[X0] | ;
> exists
> 0:X5=0:X4 /\ (* First CAS must succeed *)
> (fault(P1:L0) \/ ~(1:X2=2 \/ 1:X2=1))
>
> (* This test should not violate BBM requirements. *)
We definitely need a clear statement in the Arm ARM around this. As
already raised in this thread, we can assume that AF=0 entries won't be
cached in TLB but there's more to the BBM rules. For the dirty bit, we
have R_SGJBL, we might need something similar for AF in addition to the
BBM rules update. In theory, I think your approach works but we need the
memory model experts confirmation and the Arm ARM updated.
I'm not entirely clear what the above litmus test guarantees other than
not giving a warning. On P1, X2 can be either 1 or 2, otherwise fault
but that won't happen with HA. I'd rather have something in the 'exists'
rule explicitly (like a TLB conflict abort; not supported AFAIK but
maybe that's what fault(P1) was meant to show?).
In addition to the above test, I wonder whether we could have P1 do two
consecutive reads from [X1] and check the read values. Maybe go through
a third mapping, OA(z) with AF=0 after the TLBI or just start with AF=0
on x. Basically any other tests for coherency like read-after-read etc.,
check that the behaviour is preserved through AF=0 just like going
through valid=0 with BBM (that's something that should eventually be
runnable on actual hardware to validate where we won't have a BBM
warning message).
--
Catalin
prev parent reply other threads:[~2026-08-17 17:34 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-08 3:11 [PATCH 00/18] Another attempt at HVO support on arm64 James Houghton
2026-07-08 3:11 ` [PATCH 01/18] hugetlb_vmemmap: Always flush TLB if needed upon PTE remapping James Houghton
2026-07-08 3:11 ` [PATCH 02/18] hugetlb_vmemmap: Move vmemmap_get_tail up James Houghton
2026-07-08 3:11 ` [PATCH 03/18] hugetlb_vmemmap: Leave pages partially HVOed upon restore failure James Houghton
2026-07-08 3:11 ` [PATCH 04/18] hugetlb_vmemmap: Use try_update_vmemmap_pte to update in-use PTEs James Houghton
2026-07-08 3:11 ` [PATCH 05/18] hugetlb_vmemmap: Allow architectures not to allow HVO at runtime James Houghton
2026-07-08 3:11 ` [PATCH 06/18] arm64: Rename cpu_has_hw_af to system_has_hw_af James Houghton
2026-07-08 3:11 ` [PATCH 07/18] arm64: Add system_supports_hvo James Houghton
2026-07-08 3:11 ` [PATCH 08/18] arm64: Implement try_update_vmemmap_pte using the AF trick James Houghton
2026-07-08 3:11 ` [PATCH 09/18] arm64: Prevent HVO if the HVO system feature is not enabled James Houghton
2026-07-08 3:11 ` [PATCH 10/18] arm64: Support hugetlb vmemmap optimization James Houghton
2026-07-08 3:11 ` [PATCH 11/18] hugetlb_vmemmap: Use try_populate_vmemmap_pmd for replacing in-use PMDs James Houghton
2026-07-08 3:11 ` [PATCH 12/18] arm64: Implement try_populate_vmemmap_pmd using AF trick James Houghton
2026-07-08 3:11 ` [PATCH 13/18] arm64: Drop BBML2_NOABORT requirement for HVO James Houghton
2026-07-08 3:11 ` [PATCH 14/18] hugetlb_vmemmap: Rename mm/hugetlb_vmemmap.h to mm/hugetlb_vmemmap_internal.h James Houghton
2026-07-08 3:11 ` [PATCH 15/18] hugetlb_vmemmap: Add a way to permanently disable HVO when needed James Houghton
2026-07-08 3:11 ` [PATCH 16/18] arm64: Allow "optional" CPU features to be required sometimes James Houghton
2026-07-08 3:11 ` [PATCH 17/18] arm64: Permit onlining of HVO-incompatible late CPUs if HVO is not in use James Houghton
2026-07-08 3:11 ` [PATCH 18/18] arm64: Remove user-selectable HVO Kconfig James Houghton
[not found] ` <FC9E78F0-8FF7-44AF-A848-8401B4702488@linux.dev>
2026-07-08 16:49 ` [PATCH 00/18] Another attempt at HVO support on arm64 James Houghton
2026-07-09 9:54 ` Muchun Song
2026-07-09 19:04 ` James Houghton
2026-07-10 3:40 ` Muchun Song
2026-07-13 4:09 ` James Houghton
2026-07-14 6:40 ` Muchun Song
2026-07-11 2:22 ` Muchun Song
2026-07-13 4:09 ` James Houghton
2026-07-09 9:58 ` David Hildenbrand (Arm)
2026-07-10 4:58 ` Muchun Song
2026-07-13 4:59 ` James Houghton
2026-07-13 7:41 ` Muchun Song
2026-07-13 11:26 ` Dev Jain
2026-07-14 8:46 ` Pedro Falcato
2026-07-15 9:38 ` James Houghton
2026-08-17 17:34 ` Catalin Marinas [this message]
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=aoNGGKYZrOlaJ4mH@arm.com \
--to=catalin.marinas@arm.com \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=fvdl@google.com \
--cc=jthoughton@google.com \
--cc=linu.cherian@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mark.rutland@arm.com \
--cc=muchun.song@linux.dev \
--cc=nikos.nikoleris@arm.com \
--cc=osalvador@suse.de \
--cc=rientjes@google.com \
--cc=ryan.roberts@arm.com \
--cc=sunnanyong@huawei.com \
--cc=will@kernel.org \
--cc=yuzhao@google.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