From: Catalin Marinas <catalin.marinas@arm.com>
To: Ryan Roberts <ryan.roberts@arm.com>
Cc: David Hildenbrand <david@redhat.com>,
Matthew Wilcox <willy@infradead.org>,
Barry Song <21cnbao@gmail.com>,
will@kernel.org, akpm@linux-foundation.org, hughd@google.com,
linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org,
chrisl@kernel.org, mark.rutland@arm.com, steven.price@arm.com,
Barry Song <v-songbaohua@oppo.com>,
Kemeng Shi <shikemeng@huaweicloud.com>,
Anshuman Khandual <anshuman.khandual@arm.com>,
Peter Collingbourne <pcc@google.com>,
Yosry Ahmed <yosryahmed@google.com>, Peter Xu <peterx@redhat.com>,
Lorenzo Stoakes <lstoakes@gmail.com>,
"Mike Rapoport (IBM)" <rppt@kernel.org>,
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>,
Rick Edgecombe <rick.p.edgecombe@intel.com>
Subject: Re: [PATCH 1/1] arm64: mm: swap: support THP_SWAP on hardware with MTE
Date: Wed, 27 Mar 2024 17:58:19 +0000 [thread overview]
Message-ID: <ZgReO1ClK3tH0O3T@arm.com> (raw)
In-Reply-To: <46ba09c5-4186-4e03-81cc-ca27c0301fef@arm.com>
On Wed, Mar 27, 2024 at 03:13:18PM +0000, Ryan Roberts wrote:
> On 27/03/2024 14:57, David Hildenbrand wrote:
> > On 27.03.24 15:53, Matthew Wilcox wrote:
> >> On Sat, Mar 23, 2024 at 12:41:36AM +1300, Barry Song wrote:
> >>> Commit d0637c505f8a1 ("arm64: enable THP_SWAP for arm64") brings up
> >>> THP_SWAP on ARM64, but it doesn't enable THP_SWP on hardware with
> >>> MTE as the MTE code works with the assumption tags save/restore is
> >>> always handling a folio with only one page.
> >>>
> >>> The limitation should be removed as more and more ARM64 SoCs have
> >>> this feature. Co-existence of MTE and THP_SWAP becomes more and
> >>> more important.
> >>>
> >>> This patch makes MTE tags saving support large folios, then we don't
> >>> need to split large folios into base pages for swapping out on ARM64
> >>> SoCs with MTE any more.
> >>
> >> Can we go further than this patch and only support PG_mte_tagged and
> >> PG_mte_lock on folio->flags instead of page->flags? We're down to using
> >
> > I think we discussed that already and what I learned is that it "gets a bit
> > complicated". But I'm hoping we can get that discussion started again.
>
> The original conversation starts here:
> https://lore.kernel.org/linux-mm/fb34d312-1049-4932-8f2b-d7f33cfc297c@arm.com/
>
> The issue is that you can have a large folio mapped to user space, and user
> space only wants to activate MTE for a portion of it. So at that point, you
> either have to deal with only part of it being tagged (as we do today with the
> per-page flag) or you have to split the folio.
It needs splitting since the PROT_MTE property ends up in the pte as a
memory attribute. So we can't have a THP mapping with PROT_MTE but only
specific pages tagged.
I had an attempt last year to only keep the PG_mte_tagged flag in the
head page but I recall folio_copy() got in the way since it was calling
copy_highpage() on individual pages and the arm64 code was not seeing
the head PG_mte_tagged. I think it can be worked around but I got
distracted and forgot about this.
--
Catalin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Catalin Marinas <catalin.marinas@arm.com>
To: Ryan Roberts <ryan.roberts@arm.com>
Cc: David Hildenbrand <david@redhat.com>,
Matthew Wilcox <willy@infradead.org>,
Barry Song <21cnbao@gmail.com>,
will@kernel.org, akpm@linux-foundation.org, hughd@google.com,
linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org,
chrisl@kernel.org, mark.rutland@arm.com, steven.price@arm.com,
Barry Song <v-songbaohua@oppo.com>,
Kemeng Shi <shikemeng@huaweicloud.com>,
Anshuman Khandual <anshuman.khandual@arm.com>,
Peter Collingbourne <pcc@google.com>,
Yosry Ahmed <yosryahmed@google.com>, Peter Xu <peterx@redhat.com>,
Lorenzo Stoakes <lstoakes@gmail.com>,
"Mike Rapoport (IBM)" <rppt@kernel.org>,
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>,
Rick Edgecombe <rick.p.edgecombe@intel.com>
Subject: Re: [PATCH 1/1] arm64: mm: swap: support THP_SWAP on hardware with MTE
Date: Wed, 27 Mar 2024 17:58:19 +0000 [thread overview]
Message-ID: <ZgReO1ClK3tH0O3T@arm.com> (raw)
In-Reply-To: <46ba09c5-4186-4e03-81cc-ca27c0301fef@arm.com>
On Wed, Mar 27, 2024 at 03:13:18PM +0000, Ryan Roberts wrote:
> On 27/03/2024 14:57, David Hildenbrand wrote:
> > On 27.03.24 15:53, Matthew Wilcox wrote:
> >> On Sat, Mar 23, 2024 at 12:41:36AM +1300, Barry Song wrote:
> >>> Commit d0637c505f8a1 ("arm64: enable THP_SWAP for arm64") brings up
> >>> THP_SWAP on ARM64, but it doesn't enable THP_SWP on hardware with
> >>> MTE as the MTE code works with the assumption tags save/restore is
> >>> always handling a folio with only one page.
> >>>
> >>> The limitation should be removed as more and more ARM64 SoCs have
> >>> this feature. Co-existence of MTE and THP_SWAP becomes more and
> >>> more important.
> >>>
> >>> This patch makes MTE tags saving support large folios, then we don't
> >>> need to split large folios into base pages for swapping out on ARM64
> >>> SoCs with MTE any more.
> >>
> >> Can we go further than this patch and only support PG_mte_tagged and
> >> PG_mte_lock on folio->flags instead of page->flags? We're down to using
> >
> > I think we discussed that already and what I learned is that it "gets a bit
> > complicated". But I'm hoping we can get that discussion started again.
>
> The original conversation starts here:
> https://lore.kernel.org/linux-mm/fb34d312-1049-4932-8f2b-d7f33cfc297c@arm.com/
>
> The issue is that you can have a large folio mapped to user space, and user
> space only wants to activate MTE for a portion of it. So at that point, you
> either have to deal with only part of it being tagged (as we do today with the
> per-page flag) or you have to split the folio.
It needs splitting since the PROT_MTE property ends up in the pte as a
memory attribute. So we can't have a THP mapping with PROT_MTE but only
specific pages tagged.
I had an attempt last year to only keep the PG_mte_tagged flag in the
head page but I recall folio_copy() got in the way since it was calling
copy_highpage() on individual pages and the arm64 code was not seeing
the head PG_mte_tagged. I think it can be worked around but I got
distracted and forgot about this.
--
Catalin
next prev parent reply other threads:[~2024-03-27 17:58 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-22 11:41 [PATCH 0/1] THP_SWAP support for ARM64 SoC with MTE Barry Song
2024-03-22 11:41 ` Barry Song
2024-03-22 11:41 ` [PATCH 1/1] arm64: mm: swap: support THP_SWAP on hardware " Barry Song
2024-03-22 11:41 ` Barry Song
2024-03-26 17:37 ` Ryan Roberts
2024-03-26 17:37 ` Ryan Roberts
2024-03-27 12:23 ` Catalin Marinas
2024-03-27 12:23 ` Catalin Marinas
2024-03-27 14:53 ` Matthew Wilcox
2024-03-27 14:53 ` Matthew Wilcox
2024-03-27 14:57 ` David Hildenbrand
2024-03-27 14:57 ` David Hildenbrand
2024-03-27 15:13 ` Ryan Roberts
2024-03-27 15:13 ` Ryan Roberts
2024-03-27 15:15 ` Ryan Roberts
2024-03-27 15:15 ` Ryan Roberts
2024-03-27 17:34 ` Matthew Wilcox
2024-03-27 17:34 ` Matthew Wilcox
2024-03-27 17:58 ` Catalin Marinas [this message]
2024-03-27 17:58 ` Catalin Marinas
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=ZgReO1ClK3tH0O3T@arm.com \
--to=catalin.marinas@arm.com \
--cc=21cnbao@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@linux.ibm.com \
--cc=anshuman.khandual@arm.com \
--cc=chrisl@kernel.org \
--cc=david@redhat.com \
--cc=hughd@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mm@kvack.org \
--cc=lstoakes@gmail.com \
--cc=mark.rutland@arm.com \
--cc=pcc@google.com \
--cc=peterx@redhat.com \
--cc=rick.p.edgecombe@intel.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=shikemeng@huaweicloud.com \
--cc=steven.price@arm.com \
--cc=v-songbaohua@oppo.com \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=yosryahmed@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 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.