mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 10:01:39 -05:00
Merge branch 'mm-hotfixes-stable' into mm-nonmm-stable in order to be able
to merge "kho: make debugfs interface optional" into mm-nonmm-stable.
This commit is contained in:
@@ -64,6 +64,8 @@
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/maple_tree.h>
|
||||
|
||||
#define TP_FCT tracepoint_string(__func__)
|
||||
|
||||
/*
|
||||
* Kernel pointer hashing renders much of the maple tree dump useless as tagged
|
||||
* pointers get hashed to arbitrary values.
|
||||
@@ -2756,7 +2758,7 @@ static inline void mas_rebalance(struct ma_state *mas,
|
||||
MA_STATE(l_mas, mas->tree, mas->index, mas->last);
|
||||
MA_STATE(r_mas, mas->tree, mas->index, mas->last);
|
||||
|
||||
trace_ma_op(__func__, mas);
|
||||
trace_ma_op(TP_FCT, mas);
|
||||
|
||||
/*
|
||||
* Rebalancing occurs if a node is insufficient. Data is rebalanced
|
||||
@@ -2997,7 +2999,7 @@ static void mas_split(struct ma_state *mas, struct maple_big_node *b_node)
|
||||
MA_STATE(prev_l_mas, mas->tree, mas->index, mas->last);
|
||||
MA_STATE(prev_r_mas, mas->tree, mas->index, mas->last);
|
||||
|
||||
trace_ma_op(__func__, mas);
|
||||
trace_ma_op(TP_FCT, mas);
|
||||
|
||||
mast.l = &l_mas;
|
||||
mast.r = &r_mas;
|
||||
@@ -3172,7 +3174,7 @@ static bool mas_is_span_wr(struct ma_wr_state *wr_mas)
|
||||
return false;
|
||||
}
|
||||
|
||||
trace_ma_write(__func__, wr_mas->mas, wr_mas->r_max, entry);
|
||||
trace_ma_write(TP_FCT, wr_mas->mas, wr_mas->r_max, entry);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3416,7 +3418,7 @@ static noinline void mas_wr_spanning_store(struct ma_wr_state *wr_mas)
|
||||
* of data may happen.
|
||||
*/
|
||||
mas = wr_mas->mas;
|
||||
trace_ma_op(__func__, mas);
|
||||
trace_ma_op(TP_FCT, mas);
|
||||
|
||||
if (unlikely(!mas->index && mas->last == ULONG_MAX))
|
||||
return mas_new_root(mas, wr_mas->entry);
|
||||
@@ -3552,7 +3554,7 @@ static inline void mas_wr_node_store(struct ma_wr_state *wr_mas,
|
||||
} else {
|
||||
memcpy(wr_mas->node, newnode, sizeof(struct maple_node));
|
||||
}
|
||||
trace_ma_write(__func__, mas, 0, wr_mas->entry);
|
||||
trace_ma_write(TP_FCT, mas, 0, wr_mas->entry);
|
||||
mas_update_gap(mas);
|
||||
mas->end = new_end;
|
||||
return;
|
||||
@@ -3596,7 +3598,7 @@ static inline void mas_wr_slot_store(struct ma_wr_state *wr_mas)
|
||||
mas->offset++; /* Keep mas accurate. */
|
||||
}
|
||||
|
||||
trace_ma_write(__func__, mas, 0, wr_mas->entry);
|
||||
trace_ma_write(TP_FCT, mas, 0, wr_mas->entry);
|
||||
/*
|
||||
* Only update gap when the new entry is empty or there is an empty
|
||||
* entry in the original two ranges.
|
||||
@@ -3717,7 +3719,7 @@ static inline void mas_wr_append(struct ma_wr_state *wr_mas,
|
||||
mas_update_gap(mas);
|
||||
|
||||
mas->end = new_end;
|
||||
trace_ma_write(__func__, mas, new_end, wr_mas->entry);
|
||||
trace_ma_write(TP_FCT, mas, new_end, wr_mas->entry);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3731,7 +3733,7 @@ static void mas_wr_bnode(struct ma_wr_state *wr_mas)
|
||||
{
|
||||
struct maple_big_node b_node;
|
||||
|
||||
trace_ma_write(__func__, wr_mas->mas, 0, wr_mas->entry);
|
||||
trace_ma_write(TP_FCT, wr_mas->mas, 0, wr_mas->entry);
|
||||
memset(&b_node, 0, sizeof(struct maple_big_node));
|
||||
mas_store_b_node(wr_mas, &b_node, wr_mas->offset_end);
|
||||
mas_commit_b_node(wr_mas, &b_node);
|
||||
@@ -5062,7 +5064,7 @@ void *mas_store(struct ma_state *mas, void *entry)
|
||||
{
|
||||
MA_WR_STATE(wr_mas, mas, entry);
|
||||
|
||||
trace_ma_write(__func__, mas, 0, entry);
|
||||
trace_ma_write(TP_FCT, mas, 0, entry);
|
||||
#ifdef CONFIG_DEBUG_MAPLE_TREE
|
||||
if (MAS_WARN_ON(mas, mas->index > mas->last))
|
||||
pr_err("Error %lX > %lX " PTR_FMT "\n", mas->index, mas->last,
|
||||
@@ -5163,7 +5165,7 @@ void mas_store_prealloc(struct ma_state *mas, void *entry)
|
||||
}
|
||||
|
||||
store:
|
||||
trace_ma_write(__func__, mas, 0, entry);
|
||||
trace_ma_write(TP_FCT, mas, 0, entry);
|
||||
mas_wr_store_entry(&wr_mas);
|
||||
MAS_WR_BUG_ON(&wr_mas, mas_is_err(mas));
|
||||
mas_destroy(mas);
|
||||
@@ -5882,7 +5884,7 @@ void *mtree_load(struct maple_tree *mt, unsigned long index)
|
||||
MA_STATE(mas, mt, index, index);
|
||||
void *entry;
|
||||
|
||||
trace_ma_read(__func__, &mas);
|
||||
trace_ma_read(TP_FCT, &mas);
|
||||
rcu_read_lock();
|
||||
retry:
|
||||
entry = mas_start(&mas);
|
||||
@@ -5925,7 +5927,7 @@ int mtree_store_range(struct maple_tree *mt, unsigned long index,
|
||||
MA_STATE(mas, mt, index, last);
|
||||
int ret = 0;
|
||||
|
||||
trace_ma_write(__func__, &mas, 0, entry);
|
||||
trace_ma_write(TP_FCT, &mas, 0, entry);
|
||||
if (WARN_ON_ONCE(xa_is_advanced(entry)))
|
||||
return -EINVAL;
|
||||
|
||||
@@ -6148,7 +6150,7 @@ void *mtree_erase(struct maple_tree *mt, unsigned long index)
|
||||
void *entry = NULL;
|
||||
|
||||
MA_STATE(mas, mt, index, index);
|
||||
trace_ma_op(__func__, &mas);
|
||||
trace_ma_op(TP_FCT, &mas);
|
||||
|
||||
mtree_lock(mt);
|
||||
entry = mas_erase(&mas);
|
||||
@@ -6485,7 +6487,7 @@ void *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max)
|
||||
unsigned long copy = *index;
|
||||
#endif
|
||||
|
||||
trace_ma_read(__func__, &mas);
|
||||
trace_ma_read(TP_FCT, &mas);
|
||||
|
||||
if ((*index) > max)
|
||||
return NULL;
|
||||
|
||||
@@ -301,6 +301,9 @@ static int __init kho_test_init(void)
|
||||
phys_addr_t fdt_phys;
|
||||
int err;
|
||||
|
||||
if (!kho_is_enabled())
|
||||
return 0;
|
||||
|
||||
err = kho_retrieve_subtree(KHO_TEST_FDT, &fdt_phys);
|
||||
if (!err)
|
||||
return kho_test_restore(fdt_phys);
|
||||
|
||||
Reference in New Issue
Block a user