Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp3344158pxb; Wed, 14 Apr 2021 03:21:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZx3Pvppb5rlN+IpxSicVMMc9qkuMjyOiObr20dca/pSsIZNvmJE+SIsxHfsG3+BZE9E/E X-Received: by 2002:a17:906:6d12:: with SMTP id m18mr22196375ejr.435.1618395698318; Wed, 14 Apr 2021 03:21:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618395698; cv=none; d=google.com; s=arc-20160816; b=uCZJIVJMBw9XGt9D5gWS+enGqKmi13Qpt9I4EDKogS4kT8AzHbKdR+HPGTLjAG1UZi kWl6gcJaZG+D8qOrtp8NRk4u8TLI7bhIFbVWUUI7KNyR+wpVXpf35RYF97uQOjQ9qklt rVsXGDeNyA7X54w3Ou+E4rwx8tA/yg4hIgx8FBx8p7wFGAlshWUodtZb/OXgbcONTCm0 DjgWZ43uYFLtruvfJyjx/86M/pDc3ZnZUmK/9H5GWXk52RzRpj5u6PTTZZTabX3zIQqR 3S4WdudI2DIP0hEw9NCaVminX4WIO2VXSoVNXqfgF1YOmde6tYDnCWNNKDrfLXMiFviQ i8Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=onJ7uZ3p8s/gKYB2XhKDCCe0q8Rs1VMepIA3BYKB0DU=; b=SfxtVh/XSblQi67NEznUnUa+9aNpju4hf/hq2fvM932B/WPnvefX1gPGNpnCL1O+vC doDUKkqp7RoO6vEGcQyu+R2+NviXdIQZC5cQn3tx2dcrT48D7zVAlzgf4Y/RVyjC8IPU ZX3rSORC99FTsIGgybLIoUoVowGzbHIIxxcDX2lzYw1h4wBwu47c8pQXGL84TXgj4V0d dHhDGNVG5JL6hof03pElAJXXyDYNSSqimvEGwGDefAhUykciuNkUi4eVbqKGyLl/UyeJ h6voy6Fbi28/WpBLpU0RoToakhnPSv6FpAuR3rJhTu0sa0hANILrL5hBbfKQZ9bTeLT4 FTvw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Lf76OYaM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g1si742244ejh.285.2021.04.14.03.21.14; Wed, 14 Apr 2021 03:21:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Lf76OYaM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344448AbhDNCfo (ORCPT + 99 others); Tue, 13 Apr 2021 22:35:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230303AbhDNCfk (ORCPT ); Tue, 13 Apr 2021 22:35:40 -0400 Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1C0AC061574; Tue, 13 Apr 2021 19:35:19 -0700 (PDT) Received: by mail-pf1-x435.google.com with SMTP id a85so12295180pfa.0; Tue, 13 Apr 2021 19:35:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=onJ7uZ3p8s/gKYB2XhKDCCe0q8Rs1VMepIA3BYKB0DU=; b=Lf76OYaMA5bhIGPnuA0rAWAsgXyge80EA9BgGy8o+1VXvM8FP6WhN/cHP1e4LZYYBO 4yF/I0exQMYmvrduW+IXfAbg6/AxUNpT0tcN7gA72Zq2Ba8yfOg87iQN8yHZhLD8hmeB qDQfe+ob4c+00ZXCVa7s1Fzu7ZGKXyBOlAh7ldFk/1HpxdXb/0OXdKtEWjE4JBjZhAXx 7rZ6lorLr6QgTj7yBRtpHDscYhJmS6ISrd9BJM52ZZxMoELQAgC17MW4W9mdXjcSqpox Jx08xklBNBVlNS0dlTrGEsEkXPw+Qy+NMblWfiIZ63Ip3cbcdrj+xpwqq2kCHQ4avnzp RfCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=onJ7uZ3p8s/gKYB2XhKDCCe0q8Rs1VMepIA3BYKB0DU=; b=osckRrF3BUrmPfKXR4cZC5S2IldAf6Inkc22i7+7/D97HWYdXzGkZagl5uX/UMnMqL 3n2B2LxXIlTLgtqtl1wuXGSOO17kTK3O9gseyrWXDeIoRDjlB4v4X7c6B1Qgx/G1FY7h Qx/OglzGQjM9H5qsqfKqZg4bn1XJDwEfsyB2pgFBRmJota3VrYkJEqvzqyPl6hJMUH0K nysE4oR1RYUVP5X+0/JufNJ2ULpOlHDwW+phRW+FeP7KvLWZWh03888E26eByzYSkhlZ lKRHT26EbbCOqTFx/MznPY7/P3WKaQXFGCGSvQcMbuuNbHQSDmw0b1yo5uC5dkYxtZCB VsDQ== X-Gm-Message-State: AOAM531ZdHdadgTKseQO+YIpqZcWdGd9rgUQY2hUU2uV4ysrWv+8X34Z W9PGqeeYjiIHJR5/QaAMiaI= X-Received: by 2002:a62:7907:0:b029:23e:9010:3844 with SMTP id u7-20020a6279070000b029023e90103844mr32223691pfc.58.1618367718317; Tue, 13 Apr 2021 19:35:18 -0700 (PDT) Received: from localhost.localdomain ([103.112.79.202]) by smtp.gmail.com with ESMTPSA id r1sm3403988pjo.26.2021.04.13.19.35.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Apr 2021 19:35:17 -0700 (PDT) From: kerneljasonxing@gmail.com To: jesse.brandeburg@intel.com, anthony.l.nguyen@intel.com, davem@davemloft.net, kuba@kernel.org, ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, andrii@kernel.org, kafai@fb.com, songliubraving@fb.com, yhs@fb.com, kpsingh@kernel.org Cc: intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Jason Xing , Shujin Li Subject: [PATCH net v3] i40e: fix the panic when running bpf in xdpdrv mode Date: Wed, 14 Apr 2021 10:34:28 +0800 Message-Id: <20210414023428.10121-1-kerneljasonxing@gmail.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20210413025011.1251-1-kerneljasonxing@gmail.com> References: <20210413025011.1251-1-kerneljasonxing@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jason Xing Fix this panic by adding more rules to calculate the value of @rss_size_max which could be used in allocating the queues when bpf is loaded, which, however, could cause the failure and then trigger the NULL pointer of vsi->rx_rings. Prio to this fix, the machine doesn't care about how many cpus are online and then allocates 256 queues on the machine with 32 cpus online actually. Once the load of bpf begins, the log will go like this "failed to get tracking for 256 queues for VSI 0 err -12" and this "setup of MAIN VSI failed". Thus, I attach the key information of the crash-log here. BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 RIP: 0010:i40e_xdp+0xdd/0x1b0 [i40e] Call Trace: [2160294.717292] ? i40e_reconfig_rss_queues+0x170/0x170 [i40e] [2160294.717666] dev_xdp_install+0x4f/0x70 [2160294.718036] dev_change_xdp_fd+0x11f/0x230 [2160294.718380] ? dev_disable_lro+0xe0/0xe0 [2160294.718705] do_setlink+0xac7/0xe70 [2160294.719035] ? __nla_parse+0xed/0x120 [2160294.719365] rtnl_newlink+0x73b/0x860 Fixes: 41c445ff0f48 ("i40e: main driver core") Co-developed-by: Shujin Li Signed-off-by: Shujin Li Signed-off-by: Jason Xing --- drivers/net/ethernet/intel/i40e/i40e_main.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 521ea9d..4e9a247 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -11867,6 +11867,7 @@ static int i40e_sw_init(struct i40e_pf *pf) { int err = 0; int size; + u16 pow; /* Set default capability flags */ pf->flags = I40E_FLAG_RX_CSUM_ENABLED | @@ -11885,6 +11886,11 @@ static int i40e_sw_init(struct i40e_pf *pf) pf->rss_table_size = pf->hw.func_caps.rss_table_size; pf->rss_size_max = min_t(int, pf->rss_size_max, pf->hw.func_caps.num_tx_qp); + + /* find the next higher power-of-2 of num cpus */ + pow = roundup_pow_of_two(num_online_cpus()); + pf->rss_size_max = min_t(int, pf->rss_size_max, pow); + if (pf->hw.func_caps.rss) { pf->flags |= I40E_FLAG_RSS_ENABLED; pf->alloc_rss_size = min_t(int, pf->rss_size_max, -- 1.8.3.1