From 9c25e5d6f58362a8ff78327664a2e3c2a538009f Mon Sep 17 00:00:00 2001 From: Hajun Sung Date: Tue, 14 Dec 2021 10:27:05 +0900 Subject: [PATCH] ANDROID: gic: Add vendor hook to GIC Add vendor hook for affinity setting to GIC irqchip driver. GIC irqchip driver support only single CPU for affinity setting. But GIC HW can support multi target IRQ action, any available CPU can service IRQ when requested irq arised. This feature is very useful for some fast irq action required device. So Add vendor hook to support multi target affinity setting. Bug: 210559155 Change-Id: If44b2244bb623bf8d4755109a6dca32ac35df795 Signed-off-by: Hajun Sung --- drivers/android/vendor_hooks.c | 1 + drivers/irqchip/irq-gic.c | 3 +++ include/trace/hooks/gic.h | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 6954bdfe4a44..918879fa091f 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -81,6 +81,7 @@ 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_vh_gic_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); diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c index 5f22c9d65e57..c7983b64a5a9 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -815,6 +816,8 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val, writeb_relaxed(gic_cpu_map[cpu], reg); irq_data_update_effective_affinity(d, cpumask_of(cpu)); + trace_android_vh_gic_set_affinity(d, mask_val, force, gic_cpu_map, reg); + return IRQ_SET_MASK_OK_DONE; } diff --git a/include/trace/hooks/gic.h b/include/trace/hooks/gic.h index e9d9fce0ee77..736f296db7a0 100644 --- a/include/trace/hooks/gic.h +++ b/include/trace/hooks/gic.h @@ -16,6 +16,11 @@ DECLARE_HOOK(android_vh_gic_resume, TP_PROTO(struct irq_domain *domain, void __iomem *dist_base), TP_ARGS(domain, dist_base)); +DECLARE_HOOK(android_vh_gic_set_affinity, + TP_PROTO(struct irq_data *d, const struct cpumask *mask_val, + bool force, u8 *gic_cpu_map, void __iomem *reg), + TP_ARGS(d, mask_val, force, gic_cpu_map, reg)); + #endif /* _TRACE_HOOK_GIC_H */ /* This part must be outside protection */ #include