Re: [PATCH 1/1] arm64: mm: swap: support THP_SWAP on hardware with MTE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxx/

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.

I haven't re-read the entire thread - so might be forgetting some important details.

> 
>> page->flags for these two MTE bits, a whole lot of s390 junk, PG_hwpoison,
>> PG_head, PG_anon_exclusive and Zone/Section/Node/KASAN/last_cpupid.
> 
> ... just like PG_anon_exclusive "gets a bit complicated". Well, I think I might
> have finally found a way to make it work, I'll only have to uglify fork() a bit.
> 





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux