|
Thomas Bogendoerfer |
02f5c6 |
From: Yufeng Mo <moyufeng@huawei.com>
|
|
Thomas Bogendoerfer |
02f5c6 |
Date: Mon, 13 Sep 2021 21:08:22 +0800
|
|
Thomas Bogendoerfer |
02f5c6 |
Subject: net: hns3: change affinity_mask to numa node range
|
|
Thomas Bogendoerfer |
02f5c6 |
Patch-mainline: v5.15-rc2
|
|
Thomas Bogendoerfer |
02f5c6 |
Git-commit: 1dc839ec09d3ab2a4156dc98328b8bc3586f2b70
|
|
Thomas Bogendoerfer |
02f5c6 |
References: bsc#1154353
|
|
Thomas Bogendoerfer |
02f5c6 |
|
|
Thomas Bogendoerfer |
02f5c6 |
Currently, affinity_mask is set to a single cpu. As a result,
|
|
Thomas Bogendoerfer |
02f5c6 |
irqbalance becomes invalid in SUBSET or EXACT mode. To solve
|
|
Thomas Bogendoerfer |
02f5c6 |
this problem, change affinity_mask to numa node range. In this
|
|
Thomas Bogendoerfer |
02f5c6 |
way, irqbalance can be performed on the cpu of the numa node.
|
|
Thomas Bogendoerfer |
02f5c6 |
|
|
Thomas Bogendoerfer |
02f5c6 |
Fixes: 0812545487ec ("net: hns3: add interrupt affinity support for misc interrupt")
|
|
Thomas Bogendoerfer |
02f5c6 |
Signed-off-by: Yufeng Mo <moyufeng@huawei.com>
|
|
Thomas Bogendoerfer |
02f5c6 |
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
|
|
Thomas Bogendoerfer |
02f5c6 |
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Thomas Bogendoerfer |
02f5c6 |
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
|
|
Thomas Bogendoerfer |
02f5c6 |
---
|
|
Thomas Bogendoerfer |
02f5c6 |
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 14 ++++++++------
|
|
Thomas Bogendoerfer |
02f5c6 |
1 file changed, 8 insertions(+), 6 deletions(-)
|
|
Thomas Bogendoerfer |
02f5c6 |
|
|
Thomas Bogendoerfer |
02f5c6 |
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
|
|
Thomas Bogendoerfer |
02f5c6 |
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
|
|
Thomas Bogendoerfer |
02f5c6 |
@@ -1359,9 +1359,10 @@ static void hclge_init_kdump_kernel_conf
|
|
Thomas Bogendoerfer |
02f5c6 |
|
|
Thomas Bogendoerfer |
02f5c6 |
static int hclge_configure(struct hclge_dev *hdev)
|
|
Thomas Bogendoerfer |
02f5c6 |
{
|
|
Thomas Bogendoerfer |
02f5c6 |
+ const struct cpumask *cpumask = cpu_online_mask;
|
|
Thomas Bogendoerfer |
02f5c6 |
struct hclge_cfg cfg;
|
|
Thomas Bogendoerfer |
02f5c6 |
unsigned int i;
|
|
Thomas Bogendoerfer |
02f5c6 |
- int ret;
|
|
Thomas Bogendoerfer |
02f5c6 |
+ int node, ret;
|
|
Thomas Bogendoerfer |
02f5c6 |
|
|
Thomas Bogendoerfer |
02f5c6 |
ret = hclge_get_cfg(hdev, &cfg;;
|
|
Thomas Bogendoerfer |
02f5c6 |
if (ret)
|
|
Thomas Bogendoerfer |
02f5c6 |
@@ -1422,11 +1423,12 @@ static int hclge_configure(struct hclge_
|
|
Thomas Bogendoerfer |
02f5c6 |
|
|
Thomas Bogendoerfer |
02f5c6 |
hclge_init_kdump_kernel_config(hdev);
|
|
Thomas Bogendoerfer |
02f5c6 |
|
|
Thomas Bogendoerfer |
02f5c6 |
- /* Set the init affinity based on pci func number */
|
|
Thomas Bogendoerfer |
02f5c6 |
- i = cpumask_weight(cpumask_of_node(dev_to_node(&hdev->pdev->dev)));
|
|
Thomas Bogendoerfer |
02f5c6 |
- i = i ? PCI_FUNC(hdev->pdev->devfn) % i : 0;
|
|
Thomas Bogendoerfer |
02f5c6 |
- cpumask_set_cpu(cpumask_local_spread(i, dev_to_node(&hdev->pdev->dev)),
|
|
Thomas Bogendoerfer |
02f5c6 |
- &hdev->affinity_mask);
|
|
Thomas Bogendoerfer |
02f5c6 |
+ /* Set the affinity based on numa node */
|
|
Thomas Bogendoerfer |
02f5c6 |
+ node = dev_to_node(&hdev->pdev->dev);
|
|
Thomas Bogendoerfer |
02f5c6 |
+ if (node != NUMA_NO_NODE)
|
|
Thomas Bogendoerfer |
02f5c6 |
+ cpumask = cpumask_of_node(node);
|
|
Thomas Bogendoerfer |
02f5c6 |
+
|
|
Thomas Bogendoerfer |
02f5c6 |
+ cpumask_copy(&hdev->affinity_mask, cpumask);
|
|
Thomas Bogendoerfer |
02f5c6 |
|
|
Thomas Bogendoerfer |
02f5c6 |
return ret;
|
|
Thomas Bogendoerfer |
02f5c6 |
}
|