diff options
author | Woody Lin <woodylin@google.com> | 2023-10-06 17:21:03 +0800 |
---|---|---|
committer | Jing Wang <jwangh@google.com> | 2023-10-12 03:28:50 +0000 |
commit | 13466854cb153ef194fa2e0bb0d1c113b5debc3e (patch) | |
tree | 536ab953cd9621065a51a33fd4396679b40e1a4f | |
parent | 1acc16c6272b0ad5166a94d6fb6b017a18a95471 (diff) | |
download | gs-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.c | 11 |
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(); |