ANDROID: gic-v3: Change GIC v3 vendor hook to restricted

Some of the irq migration paths call chip set affinity, after
current CPU is marked offline in cpu_online_mask. These
chip set affinity calls do not invoke vendor trace hooks.
So, convert gic_v3_set_affinity() vendor hook to a restricted
hook, to allow trace hook to be called from these irq migration
paths.

Bug: 187161770
Change-Id: I8f45536deb1ba1dc6be861ca4fc2b32306a5c50a
Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
This commit is contained in:
Neeraj Upadhyay
2021-05-10 18:08:24 +05:30
committed by Todd Kjos
parent 0dc97b664f
commit 3bd9ad7eb4
4 changed files with 7 additions and 6 deletions

View File

@@ -1373,7 +1373,7 @@
__traceiter_android_rvh_select_task_rq_rt
__traceiter_android_vh_cpu_idle_enter
__traceiter_android_vh_cpu_idle_exit
__traceiter_android_vh_gic_v3_set_affinity
__traceiter_android_rvh_gic_v3_set_affinity
__traceiter_android_vh_ipi_stop
__traceiter_android_vh_scheduler_tick
__traceiter_cpu_idle
@@ -1412,7 +1412,7 @@
__tracepoint_android_rvh_select_task_rq_rt
__tracepoint_android_vh_cpu_idle_enter
__tracepoint_android_vh_cpu_idle_exit
__tracepoint_android_vh_gic_v3_set_affinity
__tracepoint_android_rvh_gic_v3_set_affinity
__tracepoint_android_vh_ipi_stop
__tracepoint_android_vh_scheduler_tick
__tracepoint_cpu_idle

View File

@@ -107,7 +107,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sysrq_crash);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dump_throttled_rt_tasks);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_jiffies_update);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_set_affinity);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_gic_v3_set_affinity);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_affinity_init);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_suspend_epoch_val);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val);

View File

@@ -1211,7 +1211,7 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
reg = gic_dist_base(d) + offset + (index * 8);
val = gic_mpidr_to_affinity(cpu_logical_map(cpu));
trace_android_vh_gic_v3_set_affinity(d, mask_val, &val, force, gic_dist_base(d));
trace_android_rvh_gic_v3_set_affinity(d, mask_val, &val, force, gic_dist_base(d));
gic_write_irouter(val, reg);
/*

View File

@@ -15,10 +15,11 @@ struct cpumask;
DECLARE_HOOK(android_vh_gic_v3_affinity_init,
TP_PROTO(int irq, u32 offset, u64 *affinity),
TP_ARGS(irq, offset, affinity));
DECLARE_HOOK(android_vh_gic_v3_set_affinity,
DECLARE_RESTRICTED_HOOK(android_rvh_gic_v3_set_affinity,
TP_PROTO(struct irq_data *d, const struct cpumask *mask_val,
u64 *affinity, bool force, void __iomem *base),
TP_ARGS(d, mask_val, affinity, force, base));
TP_ARGS(d, mask_val, affinity, force, base),
1);
/* macro versions of hooks are no longer required */