summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWoody Lin <woodylin@google.com>2023-10-06 17:21:03 +0800
committerJing Wang <jwangh@google.com>2023-10-12 03:28:50 +0000
commit13466854cb153ef194fa2e0bb0d1c113b5debc3e (patch)
tree536ab953cd9621065a51a33fd4396679b40e1a4f
parent1acc16c6272b0ad5166a94d6fb6b017a18a95471 (diff)
downloadgs-13466854cb153ef194fa2e0bb0d1c113b5debc3e.tar.gz
google/debug: eat: parse "irq_affinity" set interrupt affinity
Parses "irq_affinity" from device node config to set interrupt affinity if it's specified. Bug: 292361589 Change-Id: Iedf90fbd265b334e389d17867e20e9bc3215779f Signed-off-by: Woody Lin <woodylin@google.com>
-rw-r--r--drivers/soc/google/debug/exynos-adv-tracer.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/soc/google/debug/exynos-adv-tracer.c b/drivers/soc/google/debug/exynos-adv-tracer.c
index ef5720b3f..f6d4759b0 100644
--- a/drivers/soc/google/debug/exynos-adv-tracer.c
+++ b/drivers/soc/google/debug/exynos-adv-tracer.c
@@ -518,6 +518,8 @@ static int adv_tracer_ipc_init(struct platform_device *pdev)
{
struct device_node *node = pdev->dev.of_node;
int ret = 0;
+ struct cpumask aff_mask;
+ const char *buf;
eat_ipc = devm_kzalloc(&pdev->dev,
sizeof(struct adv_tracer_ipc_main), GFP_KERNEL);
@@ -542,6 +544,15 @@ static int adv_tracer_ipc_init(struct platform_device *pdev)
dev_err(&pdev->dev, "failed to register interrupt: %d\n", ret);
return ret;
}
+ ret = of_property_read_string(node, "irq_affinity", &buf);
+ if (!ret) {
+ cpulist_parse(buf, &aff_mask);
+ ret = irq_set_affinity_hint(eat_ipc->irq, &aff_mask);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to set interrupt affinity: %d\n", ret);
+ return ret;
+ }
+ }
eat_ipc->dev = &pdev->dev;
ret = adv_tracer_ipc_channel_probe();