]> www.infradead.org Git - users/jedix/linux-maple.git/log
users/jedix/linux-maple.git
4 years agomaple_tree: Fix tests and search mess
Liam R. Howlett [Tue, 22 Dec 2020 02:00:56 +0000 (21:00 -0500)]
maple_tree: Fix tests and search mess

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Linked list fallout
Liam R. Howlett [Tue, 22 Dec 2020 02:00:35 +0000 (21:00 -0500)]
mm/mmap: Linked list fallout

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mlock: Fix mas_for_each() loop limit
Liam R. Howlett [Tue, 22 Dec 2020 02:00:06 +0000 (21:00 -0500)]
mm/mlock: Fix mas_for_each() loop limit

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/memory: Fix free_pgtables loops and such
Liam R. Howlett [Tue, 22 Dec 2020 01:59:45 +0000 (20:59 -0500)]
mm/memory: Fix free_pgtables loops and such

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agolinked list mess
Liam R. Howlett [Tue, 22 Dec 2020 01:59:08 +0000 (20:59 -0500)]
linked list mess

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agofs/proc/task_mmu: Fix mas_reset stuff
Liam R. Howlett [Tue, 22 Dec 2020 01:57:38 +0000 (20:57 -0500)]
fs/proc/task_mmu: Fix mas_reset stuff

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Fix do_mas_align_munmap() last searching.
Liam R. Howlett [Fri, 18 Dec 2020 18:55:19 +0000 (13:55 -0500)]
mm/mmap: Fix do_mas_align_munmap() last searching.

Probably linked list fallout?

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agofs/coredump: linked list fallout
Liam R. Howlett [Fri, 18 Dec 2020 18:54:49 +0000 (13:54 -0500)]
fs/coredump: linked list fallout

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Linked list fallout
Liam R. Howlett [Fri, 18 Dec 2020 18:15:03 +0000 (13:15 -0500)]
mm/mmap: Linked list fallout

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Drop commented out printks
Liam R. Howlett [Fri, 18 Dec 2020 18:14:43 +0000 (13:14 -0500)]
maple_tree: Drop commented out printks

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm: linked list many+2
Liam R. Howlett [Fri, 18 Dec 2020 01:20:43 +0000 (20:20 -0500)]
mm: linked list many+2

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: linked list work.. part many+2 of many
Liam R. Howlett [Wed, 16 Dec 2020 01:56:21 +0000 (20:56 -0500)]
mm/mmap: linked list work.. part many+2 of many

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm: linked list many+1
Liam R. Howlett [Tue, 15 Dec 2020 20:21:51 +0000 (15:21 -0500)]
mm: linked list many+1

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: linked list work.. part many of many
Liam R. Howlett [Tue, 15 Dec 2020 19:30:38 +0000 (14:30 -0500)]
mm/mmap: linked list work.. part many of many

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm: WIP linked list process
Liam R. Howlett [Tue, 15 Dec 2020 18:57:11 +0000 (13:57 -0500)]
mm: WIP linked list process

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Stop using linked list in most cases
Liam R. Howlett [Mon, 14 Dec 2020 18:14:06 +0000 (13:14 -0500)]
maple_tree: Stop using linked list in most cases

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Only check next vma in brk within range.
Liam R. Howlett [Fri, 11 Dec 2020 20:34:36 +0000 (15:34 -0500)]
mm/mmap: Only check next vma in brk within range.

Only check if the next vma is within a page + stack_guard_gap of the planned
end of newbrk

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Avoid clobbering other VMAs in brk()
Liam R. Howlett [Fri, 11 Dec 2020 19:38:27 +0000 (14:38 -0500)]
mm/mmap: Avoid clobbering other VMAs in brk()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: mas_mab_cp() rework attempt 2
Liam R. Howlett [Fri, 11 Dec 2020 03:01:16 +0000 (22:01 -0500)]
maple_tree: mas_mab_cp() rework attempt 2

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Make mas_max_gap() only set gaps when necessary
Liam R. Howlett [Fri, 11 Dec 2020 02:53:08 +0000 (21:53 -0500)]
maple_tree: Make mas_max_gap() only set gaps when necessary

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: mas_leaf_max_gap() JIT setting of vars
Liam R. Howlett [Fri, 11 Dec 2020 02:39:24 +0000 (21:39 -0500)]
maple_tree: mas_leaf_max_gap() JIT setting of vars

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: mas_data_end() JIT setting of vars
Liam R. Howlett [Fri, 11 Dec 2020 02:32:21 +0000 (21:32 -0500)]
maple_tree: mas_data_end() JIT setting of vars

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Fix mas_destroy_rebalance() rework
Liam R. Howlett [Fri, 11 Dec 2020 02:31:43 +0000 (21:31 -0500)]
maple_tree: Fix mas_destroy_rebalance() rework

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agoRevert "maple_tree: Rework mas_mab_cp()"
Liam R. Howlett [Thu, 10 Dec 2020 21:49:58 +0000 (16:49 -0500)]
Revert "maple_tree: Rework mas_mab_cp()"

This reverts commit 29e569389983582d6b6a007ca26d8eb568785648.

4 years agomaple_tree: Reduce _mas_store() code a bit
Liam R. Howlett [Thu, 10 Dec 2020 18:47:32 +0000 (13:47 -0500)]
maple_tree: Reduce _mas_store() code a bit

Also, wth about that else in ma_root_ptr??

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimize mas_prev_node()
Liam R. Howlett [Thu, 10 Dec 2020 18:20:54 +0000 (13:20 -0500)]
maple_tree: Optimize mas_prev_node()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Don't pass contents to expand_root()
Liam R. Howlett [Thu, 10 Dec 2020 17:16:54 +0000 (12:16 -0500)]
maple_tree: Don't pass contents to expand_root()

it's not used

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimize mas_next() and drop unused mas_first_entry() user.
Liam R. Howlett [Thu, 10 Dec 2020 17:16:16 +0000 (12:16 -0500)]
maple_tree: Optimize mas_next() and drop unused mas_first_entry() user.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimize mas_prev() path.
Liam R. Howlett [Thu, 10 Dec 2020 00:26:20 +0000 (19:26 -0500)]
maple_tree: Optimize mas_prev() path.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: mas_store, mas_store_gfp, mas_nomem restructre
Liam R. Howlett [Wed, 9 Dec 2020 22:02:04 +0000 (17:02 -0500)]
maple_tree: mas_store, mas_store_gfp, mas_nomem restructre

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Formatting of arguments, noting interesting
Liam R. Howlett [Wed, 9 Dec 2020 22:01:30 +0000 (17:01 -0500)]
maple_tree: Formatting of arguments, noting interesting

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Rework mas_destroy_rebalance()
Liam R. Howlett [Wed, 9 Dec 2020 22:01:03 +0000 (17:01 -0500)]
maple_tree: Rework mas_destroy_rebalance()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Rework mas_mab_cp()
Liam R. Howlett [Wed, 9 Dec 2020 22:00:38 +0000 (17:00 -0500)]
maple_tree: Rework mas_mab_cp()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Only zero request_count in mas_pop_node() if needed
Liam R. Howlett [Wed, 9 Dec 2020 22:00:22 +0000 (17:00 -0500)]
maple_tree: Only zero request_count in mas_pop_node() if needed

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Rework mas_ascend()
Liam R. Howlett [Wed, 9 Dec 2020 21:59:32 +0000 (16:59 -0500)]
maple_tree: Rework mas_ascend()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Rework mas_next_nentry
Liam R. Howlett [Mon, 7 Dec 2020 21:03:26 +0000 (16:03 -0500)]
maple_tree: Rework mas_next_nentry

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: A bunch of optimizations
Liam R. Howlett [Mon, 7 Dec 2020 21:02:52 +0000 (16:02 -0500)]
maple_tree: A bunch of optimizations

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Use memset in mas_reuse_node on arrays
Liam R. Howlett [Mon, 7 Dec 2020 21:02:08 +0000 (16:02 -0500)]
maple_tree: Use memset in mas_reuse_node on arrays

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Retrun boolean from mas_rebalance()
Liam R. Howlett [Mon, 7 Dec 2020 21:01:43 +0000 (16:01 -0500)]
maple_tree: Retrun boolean from mas_rebalance()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimize mast_sibling_rebalance_right()
Liam R. Howlett [Mon, 7 Dec 2020 21:00:51 +0000 (16:00 -0500)]
maple_tree: Optimize mast_sibling_rebalance_right()

Only set the data when needed

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Save maple_type in mast_topiary()
Liam R. Howlett [Mon, 7 Dec 2020 21:00:16 +0000 (16:00 -0500)]
maple_tree: Save maple_type in mast_topiary()

It is used more than once

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Use mas_data_end in mas_next_sibling()
Liam R. Howlett [Mon, 7 Dec 2020 20:59:37 +0000 (15:59 -0500)]
maple_tree: Use mas_data_end in mas_next_sibling()

This should be faster for allocation ranges.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Rework mas_first_entry() for leaf case
Liam R. Howlett [Mon, 7 Dec 2020 20:58:39 +0000 (15:58 -0500)]
maple_tree: Rework mas_first_entry() for leaf case

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Save node to avoid duplicate calls
Liam R. Howlett [Mon, 7 Dec 2020 20:58:10 +0000 (15:58 -0500)]
maple_tree: Save node to avoid duplicate calls

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Remove unnecessary call in mas_ascend()
Liam R. Howlett [Mon, 7 Dec 2020 20:57:33 +0000 (15:57 -0500)]
maple_tree: Remove unnecessary call in mas_ascend()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Change some larger functions to not be inline
Liam R. Howlett [Mon, 7 Dec 2020 20:57:05 +0000 (15:57 -0500)]
maple_tree: Change some larger functions to not be inline

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Remove BUG_ON for meta setting
Liam R. Howlett [Mon, 7 Dec 2020 20:55:31 +0000 (15:55 -0500)]
maple_tree: Remove BUG_ON for meta setting

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Remove slot shift calculations.
Liam R. Howlett [Mon, 7 Dec 2020 20:55:13 +0000 (15:55 -0500)]
maple_tree: Remove slot shift calculations.

Slot shift is always 3 now, so don't calculate it.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Change check on mas_prev() loop.
Liam R. Howlett [Mon, 7 Dec 2020 01:40:40 +0000 (20:40 -0500)]
maple_tree: Change check on mas_prev() loop.

Don't check if it is searchable as the only possibility is mas_is_none()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Move all searching to common debug area
Liam R. Howlett [Mon, 7 Dec 2020 01:29:32 +0000 (20:29 -0500)]
maple_tree: Move all searching to common debug area

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Remove unnecessary check for mas_next_nentry().
Liam R. Howlett [Mon, 7 Dec 2020 01:00:15 +0000 (20:00 -0500)]
maple_tree: Remove unnecessary check for mas_next_nentry().

Don't need to check if r_start is out of range of node.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimizer mas_node_walk() by removing special case.
Liam R. Howlett [Mon, 7 Dec 2020 00:59:15 +0000 (19:59 -0500)]
maple_tree: Optimizer mas_node_walk() by removing special case.

Check if offset is set is no longer necessary in the loop as it is done before.
Also, check after checing index <= max.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimize _mas_store() slow path
Liam R. Howlett [Mon, 7 Dec 2020 00:57:40 +0000 (19:57 -0500)]
maple_tree: Optimize _mas_store() slow path

When entering the slow path, only zero what is necessary after the data is set.
Also, don't calculate things twice when not necessary

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Use a variable for b_node->b_end
Liam R. Howlett [Mon, 7 Dec 2020 00:55:55 +0000 (19:55 -0500)]
maple_tree: Use a variable for b_node->b_end

Makes cleaner code and less dereferences

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Change mas_descend_adopt() to not set offset.
Liam R. Howlett [Mon, 7 Dec 2020 00:55:10 +0000 (19:55 -0500)]
maple_tree: Change mas_descend_adopt() to not set offset.

Instead, reset the offset in mas_new_child() as the data is already being accessed.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: mas_first_entry() optimization
Liam R. Howlett [Mon, 7 Dec 2020 00:53:05 +0000 (19:53 -0500)]
maple_tree: mas_first_entry() optimization

Remove loop in favour of checking pivot 0 or 1 as one mus have a value.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Remove BUG_ON() debug
Liam R. Howlett [Sat, 5 Dec 2020 20:36:34 +0000 (15:36 -0500)]
maple_tree: Remove BUG_ON() debug

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Change __mas_walk and mas_wr_walk to directly use type.
Liam R. Howlett [Fri, 4 Dec 2020 03:44:49 +0000 (22:44 -0500)]
maple_tree: Change __mas_walk and mas_wr_walk to directly use type.

The node type is known, so don't look it up again

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Set max only when needed in mas_is_span_wr()
Liam R. Howlett [Fri, 4 Dec 2020 03:33:17 +0000 (22:33 -0500)]
maple_tree: Set max only when needed in mas_is_span_wr()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Add append operation
Liam R. Howlett [Fri, 4 Dec 2020 02:56:45 +0000 (21:56 -0500)]
maple_tree: Add append operation

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Code cleanup.
Liam R. Howlett [Fri, 4 Dec 2020 02:56:04 +0000 (21:56 -0500)]
maple_tree: Code cleanup.

remove unnecessary braces, space, and add an unlikely to __mas_walk()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Change mab_split_calc() to do bulk calc first.
Liam R. Howlett [Fri, 4 Dec 2020 02:55:28 +0000 (21:55 -0500)]
maple_tree: Change mab_split_calc() to do bulk calc first.

Do the bulk calc first if necessary.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agotest_maple_tree: Increase bench_forking() nr_fork.
Liam R. Howlett [Thu, 3 Dec 2020 19:54:36 +0000 (14:54 -0500)]
test_maple_tree: Increase bench_forking() nr_fork.

Time was getting too low

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Speed up reverse allocation walks.
Liam R. Howlett [Thu, 3 Dec 2020 17:04:18 +0000 (12:04 -0500)]
maple_tree: Speed up reverse allocation walks.

Rewrite loops to be quicker by removing special cases.
Also skip the next slot if a leaf has a gap that is not large enough.

Benchmarks of BENCK_AWALK below:

Old:
./maple  13.57s user 0.00s system 99% cpu 13.596 total

New:
./maple  11.87s user 0.01s system 99% cpu 11.936 total

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimize mas_get_empty_area{_rev}() etc
Liam R. Howlett [Thu, 3 Dec 2020 17:03:10 +0000 (12:03 -0500)]
maple_tree: Optimize mas_get_empty_area{_rev}() etc

Take advantage of locality of reference by not dereferencing in some functions.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agotest_maple_tree: Increase bench_awalk() count
Liam R. Howlett [Thu, 3 Dec 2020 17:21:21 +0000 (12:21 -0500)]
test_maple_tree: Increase bench_awalk() count

Speedups have dropped this testcase below 10s, so increase it.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agotest_maple_tree: Fix mtree_alloc_rrange to search for exclusive end
Liam R. Howlett [Wed, 2 Dec 2020 21:55:00 +0000 (16:55 -0500)]
test_maple_tree: Fix mtree_alloc_rrange to search for exclusive end

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Convert unmapped_area_topdown() search to be inclusive search.
Liam R. Howlett [Wed, 2 Dec 2020 17:24:36 +0000 (12:24 -0500)]
mm/mmap: Convert unmapped_area_topdown() search to be inclusive search.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: stop _mas_get_empty_area() from converting to inclusive search.
Liam R. Howlett [Wed, 2 Dec 2020 17:23:35 +0000 (12:23 -0500)]
maple_tree: stop _mas_get_empty_area() from converting to inclusive search.

This should be done in the mm code

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: optimize mas_rev_awalk and mas_awalk a bit
Liam R. Howlett [Tue, 1 Dec 2020 21:36:30 +0000 (16:36 -0500)]
maple_tree: optimize mas_rev_awalk and mas_awalk a bit

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: optimize some more
Liam R. Howlett [Tue, 1 Dec 2020 21:30:47 +0000 (16:30 -0500)]
maple_tree: optimize some more

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Make some common functions faster.
Liam R. Howlett [Tue, 1 Dec 2020 19:54:18 +0000 (14:54 -0500)]
maple_tree: Make some common functions faster.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimize mas_leaf_max_gap() by skipping slots after a gap.
Liam R. Howlett [Tue, 1 Dec 2020 16:04:49 +0000 (11:04 -0500)]
maple_tree: Optimize mas_leaf_max_gap() by skipping slots after a gap.

Two gaps cannot happen in a row, so don't bother checking the next slot if there exists a gap.
Also, remove slot[0], slot[1], and slot[max] by checking them first.  This allows for a more
optimal loop

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Change do_brk_munmap() to use do_mas_align_munmap()
Liam R. Howlett [Tue, 1 Dec 2020 02:30:04 +0000 (21:30 -0500)]
mm/mmap: Change do_brk_munmap() to use do_mas_align_munmap()

do_brk_munmap() already has aligned addresses.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Don't mas_set in mma_region() to avoid a mas_reset()
Liam R. Howlett [Tue, 1 Dec 2020 02:29:21 +0000 (21:29 -0500)]
mm/mmap: Don't mas_set in mma_region() to avoid a mas_reset()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: rework do_mas_munmap() and friends
Liam R. Howlett [Tue, 1 Dec 2020 02:28:44 +0000 (21:28 -0500)]
mm/mmap: rework do_mas_munmap() and friends

Pull out alignmnet calculations for functions that have already aligned

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: move populate calc in vm_brk_flags() ouside the mmap_write_unlock
Liam R. Howlett [Tue, 1 Dec 2020 02:27:00 +0000 (21:27 -0500)]
mm/mmap: move populate calc in vm_brk_flags() ouside the mmap_write_unlock

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Fix do_brk_flags and do_brk_munmap locking.
Liam R. Howlett [Tue, 1 Dec 2020 02:26:18 +0000 (21:26 -0500)]
mm/mmap: Fix do_brk_flags and do_brk_munmap locking.

Also use the knowledge of finding a mapping at newbrk to know that a munmap is
necessary.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agotest_maple_tree: Add tests for prev/next
Liam R. Howlett [Mon, 30 Nov 2020 20:34:39 +0000 (15:34 -0500)]
test_maple_tree: Add tests for prev/next

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agotest_maple_tree: Fix test harness for new next/prev interface
Liam R. Howlett [Mon, 30 Nov 2020 20:34:22 +0000 (15:34 -0500)]
test_maple_tree: Fix test harness for new next/prev interface

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Fix mas_next() and mas_walk() setting index/last.
Liam R. Howlett [Mon, 30 Nov 2020 20:28:21 +0000 (15:28 -0500)]
maple_tree: Fix mas_next() and mas_walk() setting index/last.

Ensure that the last/index is set regardless of if there is a value found.  This
is necessary to ensure prev/next work as expected.  Also update mas_find() to
this new functionality

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Fix mas_prev() from skipping entries.
Liam R. Howlett [Mon, 30 Nov 2020 20:27:00 +0000 (15:27 -0500)]
maple_tree: Fix mas_prev() from skipping entries.

When searching backwards, if the node wasn't fully full then the pivot could
be zero and thus return there was no previous entry in the node.  Also set
mas.last/mas.index to ensure correct prev/next functions

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Clean up mas_node_store() by using local var
Liam R. Howlett [Mon, 30 Nov 2020 20:22:52 +0000 (15:22 -0500)]
maple_tree: Clean up mas_node_store() by using local var

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Rework brk() to take interval tree locks when necessary
Liam R. Howlett [Thu, 26 Nov 2020 20:43:25 +0000 (15:43 -0500)]
mm/mmap: Rework brk() to take interval tree locks when necessary

interval tree locks are necessary for expand/contract of VMAs so use them.
This path is also rather slow and cannot be taken if the anon_vma_chain is
not a singular list

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomm/mmap: Move __vma_adjust update of highest_vm_end
Liam R. Howlett [Thu, 26 Nov 2020 18:51:52 +0000 (13:51 -0500)]
mm/mmap: Move __vma_adjust update of highest_vm_end

Move the highest_vm_end update to avoid checking if the end changed more than once.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agommap: mmap_region() Remove mas_reset() as it will happen if needed
Liam R. Howlett [Thu, 26 Nov 2020 00:49:08 +0000 (19:49 -0500)]
mmap: mmap_region() Remove mas_reset() as it will happen if needed

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agotest_maple_tree: Disable benchmarks
Liam R. Howlett [Wed, 25 Nov 2020 20:07:57 +0000 (15:07 -0500)]
test_maple_tree: Disable benchmarks

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimize mas_reuse_node() loop
Liam R. Howlett [Wed, 25 Nov 2020 19:58:09 +0000 (14:58 -0500)]
maple_tree: Optimize mas_reuse_node() loop

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: Optimize mas_node_walk() and standardize __mas_walk() a bit
Liam R. Howlett [Wed, 25 Nov 2020 19:04:48 +0000 (14:04 -0500)]
maple_tree: Optimize mas_node_walk() and standardize __mas_walk() a bit

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agotest_maple_tree: tweak bench_walk()
Liam R. Howlett [Wed, 25 Nov 2020 19:00:45 +0000 (14:00 -0500)]
test_maple_tree: tweak bench_walk()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agotest_maple_tree: Add bench_walk()
Liam R. Howlett [Wed, 25 Nov 2020 18:51:56 +0000 (13:51 -0500)]
test_maple_tree: Add bench_walk()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agomaple_tree: mas_node_walk() could never return false
Liam R. Howlett [Wed, 25 Nov 2020 03:37:08 +0000 (22:37 -0500)]
maple_tree: mas_node_walk() could never return false

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agommap: make remove_vma_list() inline
Liam R. Howlett [Wed, 25 Nov 2020 01:24:10 +0000 (20:24 -0500)]
mmap: make remove_vma_list() inline

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agommap: Avoid modifying maple tree in __vma_adjust more than necessary
Liam R. Howlett [Wed, 25 Nov 2020 01:23:48 +0000 (20:23 -0500)]
mmap: Avoid modifying maple tree in __vma_adjust more than necessary

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agommap: mmap_region() whitespace fix
Liam R. Howlett [Wed, 25 Nov 2020 01:23:17 +0000 (20:23 -0500)]
mmap: mmap_region() whitespace fix

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agommap: mmap_region() whitespace fix
Liam R. Howlett [Tue, 24 Nov 2020 21:28:18 +0000 (16:28 -0500)]
mmap: mmap_region() whitespace fix

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agommap: Remove __do_munmap() in favour of do_mas_munmap()
Liam R. Howlett [Tue, 24 Nov 2020 21:27:58 +0000 (16:27 -0500)]
mmap: Remove __do_munmap() in favour of do_mas_munmap()

Export new interface and use it in all places necessary including mremap.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agommap: Don't reset mas until needed in mmap_region()
Liam R. Howlett [Tue, 24 Nov 2020 21:24:24 +0000 (16:24 -0500)]
mmap: Don't reset mas until needed in mmap_region()

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agommap: Use find_vma_intersection in do_mmap() for overlap
Liam R. Howlett [Tue, 24 Nov 2020 21:23:38 +0000 (16:23 -0500)]
mmap: Use find_vma_intersection in do_mmap() for overlap

When detecting a conflict with MAP_FIXED_NOREPLACE, using the new interface avoids
the need for a temp variable

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
4 years agommap: Update count_vma_pages_range() to only use one ma_state
Liam R. Howlett [Tue, 24 Nov 2020 21:22:25 +0000 (16:22 -0500)]
mmap: Update count_vma_pages_range() to only use one ma_state

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>