mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 06:41:39 -04:00
perf/core: Pass GFP flags to attach_task_ctx_data()
This is a preparation for the next change to reduce the computational complexity in the global context data handling for LBR callstacks. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://patch.msgid.link/20260211223222.3119790-2-namhyung@kernel.org
This commit is contained in:
committed by
Peter Zijlstra
parent
6de23f81a5
commit
28c75fbfec
@@ -5370,15 +5370,15 @@ static void unaccount_freq_event(void)
|
||||
|
||||
|
||||
static struct perf_ctx_data *
|
||||
alloc_perf_ctx_data(struct kmem_cache *ctx_cache, bool global)
|
||||
alloc_perf_ctx_data(struct kmem_cache *ctx_cache, bool global, gfp_t gfp_flags)
|
||||
{
|
||||
struct perf_ctx_data *cd;
|
||||
|
||||
cd = kzalloc_obj(*cd);
|
||||
cd = kzalloc_obj(*cd, gfp_flags);
|
||||
if (!cd)
|
||||
return NULL;
|
||||
|
||||
cd->data = kmem_cache_zalloc(ctx_cache, GFP_KERNEL);
|
||||
cd->data = kmem_cache_zalloc(ctx_cache, gfp_flags);
|
||||
if (!cd->data) {
|
||||
kfree(cd);
|
||||
return NULL;
|
||||
@@ -5412,11 +5412,11 @@ static inline void perf_free_ctx_data_rcu(struct perf_ctx_data *cd)
|
||||
|
||||
static int
|
||||
attach_task_ctx_data(struct task_struct *task, struct kmem_cache *ctx_cache,
|
||||
bool global)
|
||||
bool global, gfp_t gfp_flags)
|
||||
{
|
||||
struct perf_ctx_data *cd, *old = NULL;
|
||||
|
||||
cd = alloc_perf_ctx_data(ctx_cache, global);
|
||||
cd = alloc_perf_ctx_data(ctx_cache, global, gfp_flags);
|
||||
if (!cd)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -5499,7 +5499,7 @@ attach_global_ctx_data(struct kmem_cache *ctx_cache)
|
||||
|
||||
return 0;
|
||||
alloc:
|
||||
ret = attach_task_ctx_data(p, ctx_cache, true);
|
||||
ret = attach_task_ctx_data(p, ctx_cache, true, GFP_KERNEL);
|
||||
put_task_struct(p);
|
||||
if (ret) {
|
||||
__detach_global_ctx_data();
|
||||
@@ -5519,7 +5519,7 @@ attach_perf_ctx_data(struct perf_event *event)
|
||||
return -ENOMEM;
|
||||
|
||||
if (task)
|
||||
return attach_task_ctx_data(task, ctx_cache, false);
|
||||
return attach_task_ctx_data(task, ctx_cache, false, GFP_KERNEL);
|
||||
|
||||
ret = attach_global_ctx_data(ctx_cache);
|
||||
if (ret)
|
||||
@@ -9240,7 +9240,7 @@ perf_event_alloc_task_data(struct task_struct *child,
|
||||
|
||||
return;
|
||||
attach:
|
||||
attach_task_ctx_data(child, ctx_cache, true);
|
||||
attach_task_ctx_data(child, ctx_cache, true, GFP_KERNEL);
|
||||
}
|
||||
|
||||
void perf_event_fork(struct task_struct *task)
|
||||
|
||||
Reference in New Issue
Block a user