mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
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 <hajun.sung@samsung.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <linux/irqchip.h>
|
||||
#include <linux/irqchip/chained_irq.h>
|
||||
#include <linux/irqchip/arm-gic.h>
|
||||
#include <trace/hooks/gic.h>
|
||||
|
||||
#include <asm/cputype.h>
|
||||
#include <asm/irq.h>
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <trace/define_trace.h>
|
||||
|
||||
Reference in New Issue
Block a user