mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
ANDROID: cpu/hotplug: call perf event through function pointer
After commit ca927bd22ad8 ("ANDROID: cpu/hotplug: avoid breaking Android
ABI by fusing cpuhp steps") a build error appears with
CONFIG_PERF_EVENTS disabled:
In file included from ./include/uapi/linux/posix_types.h:5,
from ./include/uapi/linux/types.h:14,
from ./include/linux/types.h:6,
from ./include/linux/limits.h:6,
from ./include/linux/kernel.h:7,
from ./include/linux/sched/mm.h:5,
from kernel/cpu.c:6:
kernel/cpu.c: In function 'random_and_perf_prepare_fusion':
./include/linux/stddef.h:8:14: error: called object is not a function or function pointer
#define NULL ((void *)0)
^
./include/linux/perf_event.h:1607:29: note: in expansion of macro 'NULL'
#define perf_event_init_cpu NULL
^~~~
kernel/cpu.c:1686:2: note: in expansion of macro 'perf_event_init_cpu'
perf_event_init_cpu(cpu);
^~~~~~~~~~~~~~~~~~~
CC kernel/power/console.o
make[1]: *** [scripts/Makefile.build:287: kernel/cpu.o] Error 1
make[1]: *** Waiting for unfinished jobs....
Fix this by always calling through the function pointers like the
original code.
Fixes: ca927bd22ad8 ("ANDROID: cpu/hotplug: avoid breaking Android ABI by fusing cpuhp steps")
Reported-by: Anand Gore <anand.gore@broadcom.com>
Reported-by: Florian Fainelli <florian.fainelli@broadcom.com>
Cc: Todd Kjos <tkjos@google.com>
Change-Id: I46a7c4a056d96eb531c06d8d0bbfdc7eac1cb271
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
committed by
Todd Kjos
parent
fabb0f223b
commit
42a63500a9
18
kernel/cpu.c
18
kernel/cpu.c
@@ -1834,14 +1834,24 @@ int __boot_cpu_id;
|
||||
/* Horrific hacks because we can't add more to cpuhp_hp_states. */
|
||||
static int random_and_perf_prepare_fusion(unsigned int cpu)
|
||||
{
|
||||
perf_event_init_cpu(cpu);
|
||||
random_prepare_cpu(cpu);
|
||||
int (*fn)(unsigned int cpu);
|
||||
fn = perf_event_init_cpu;
|
||||
if (fn)
|
||||
fn(cpu);
|
||||
fn = random_prepare_cpu;
|
||||
if (fn)
|
||||
fn(cpu);
|
||||
return 0;
|
||||
}
|
||||
static int random_and_workqueue_online_fusion(unsigned int cpu)
|
||||
{
|
||||
workqueue_online_cpu(cpu);
|
||||
random_online_cpu(cpu);
|
||||
int (*fn)(unsigned int cpu);
|
||||
fn = workqueue_online_cpu;
|
||||
if (fn)
|
||||
fn(cpu);
|
||||
fn = random_online_cpu;
|
||||
if (fn)
|
||||
fn(cpu);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user