On Fri, Apr 25, 2025 at 10:17:13AM +0200, David Hildenbrand wrote: > The "memramp() shrinking" scenario no longer applies, so let's remove > that now-unnecessary handling.
I wonder if we could remove even more of the code here given the simplifications here? But not a big deal. > > Signed-off-by: David Hildenbrand <da...@redhat.com> More lovely removal... Reviewed-by: Lorenzo Stoakes <lorenzo.stoa...@oracle.com> > --- > arch/x86/mm/pat/memtype_interval.c | 44 ++++-------------------------- > 1 file changed, 6 insertions(+), 38 deletions(-) > > diff --git a/arch/x86/mm/pat/memtype_interval.c > b/arch/x86/mm/pat/memtype_interval.c > index 645613d59942a..9d03f0dbc4715 100644 > --- a/arch/x86/mm/pat/memtype_interval.c > +++ b/arch/x86/mm/pat/memtype_interval.c > @@ -49,26 +49,15 @@ INTERVAL_TREE_DEFINE(struct memtype, rb, u64, > subtree_max_end, > > static struct rb_root_cached memtype_rbroot = RB_ROOT_CACHED; > > -enum { > - MEMTYPE_EXACT_MATCH = 0, > - MEMTYPE_END_MATCH = 1 > -}; > - > -static struct memtype *memtype_match(u64 start, u64 end, int match_type) > +static struct memtype *memtype_match(u64 start, u64 end) > { > struct memtype *entry_match; > > entry_match = interval_iter_first(&memtype_rbroot, start, end-1); > > while (entry_match != NULL && entry_match->start < end) { > - if ((match_type == MEMTYPE_EXACT_MATCH) && > - (entry_match->start == start) && (entry_match->end == end)) > - return entry_match; > - > - if ((match_type == MEMTYPE_END_MATCH) && > - (entry_match->start < start) && (entry_match->end == end)) > + if (entry_match->start == start && entry_match->end == end) > return entry_match; > - > entry_match = interval_iter_next(entry_match, start, end-1); > } > > @@ -132,32 +121,11 @@ struct memtype *memtype_erase(u64 start, u64 end) > { > struct memtype *entry_old; > > - /* > - * Since the memtype_rbroot tree allows overlapping ranges, > - * memtype_erase() checks with EXACT_MATCH first, i.e. free > - * a whole node for the munmap case. If no such entry is found, > - * it then checks with END_MATCH, i.e. shrink the size of a node > - * from the end for the mremap case. > - */ > - entry_old = memtype_match(start, end, MEMTYPE_EXACT_MATCH); > - if (!entry_old) { > - entry_old = memtype_match(start, end, MEMTYPE_END_MATCH); > - if (!entry_old) > - return ERR_PTR(-EINVAL); > - } > - > - if (entry_old->start == start) { > - /* munmap: erase this node */ > - interval_remove(entry_old, &memtype_rbroot); > - } else { > - /* mremap: update the end value of this node */ > - interval_remove(entry_old, &memtype_rbroot); > - entry_old->end = start; > - interval_insert(entry_old, &memtype_rbroot); > - > - return NULL; > - } > + entry_old = memtype_match(start, end); > + if (!entry_old) > + return ERR_PTR(-EINVAL); > > + interval_remove(entry_old, &memtype_rbroot); > return entry_old; > } > > -- > 2.49.0 >