Thread (25 messages) 25 messages, 3 authors, 2025-07-24

Re: [PATCH 3/4] arm64: mm: support large block mapping when rodata=full

From: Dev Jain <dev.jain@arm.com>
Date: 2025-07-23 17:39:08
Also in: lkml

On 23/06/25 6:56 pm, Ryan Roberts wrote:
[...]
quoted
quoted
+
+int split_leaf_mapping(unsigned long addr)
Thanks for coming up with the code. It does help to understand your idea. Now I
see why you suggested "split_mapping(start); split_mapping(end);" model. It does
make the implementation easier because we don't need a loop anymore. But this
may have a couple of problems:
   1. We need walk the page table twice instead of once. It sounds expensive.
Yes we need to walk twice. That may be more expensive or less expensive,
depending on the size of the range that you are splitting. If the range is large
then your approach loops through every leaf mapping between the start and end
which will be more expensive than just doing 2 walks. If the range is small then
your approach can avoid the second walk, but at the expense of all the extra
loop overhead.

My suggestion requires 5 loads (assuming the maximum of 5 levels of lookup).
Personally I think this is probably acceptable? Perhaps we need some other
voices here.
Hello all,

I am starting to implement vmalloc-huge by default with BBML2 no-abort on arm64.
I see that there is some disagreement related to the way the splitting needs to
be implemented - I skimmed through the discussions and it will require some work
to understand what is going on :) hopefully I'll be back soon to give some of
my opinions.
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help