Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp8329498ybl; Thu, 16 Jan 2020 14:45:07 -0800 (PST) X-Google-Smtp-Source: APXvYqwY5hyXV/5TnQ3u/Rdl4+G5nq0v8/Dfd1YXox7dtZvbiRVr142UcWJmEmVRfsF8JQ+i3vWi X-Received: by 2002:a9d:242:: with SMTP id 60mr3909740otb.253.1579214707133; Thu, 16 Jan 2020 14:45:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579214707; cv=none; d=google.com; s=arc-20160816; b=Q+7u2ph8iTvJkG9gWCC6i2KDqEnKSegvCJiIbu2L+kSeEzL4yarXKYLz5MwM+UxJP9 bFoIgyRigFAeNIxNFGt1+e1g9LaOsXMFqr8RdQ9mz7ReNopMyZOGidDX3DvJi2XAu/L2 Nh+VNgQgr0bkCSXAl1kVS7Es2FivPi/ZR0FSMzyOGGh2N+GkIQ15gfzoPtkcY4b5kqBf JeDOFpevpcn2HEDTzeuL78HwNtIVzTSLLPo9qLMhB2QnASJvyHMWhngShTF9NTKODAFZ OCLscoxLUVxwCQo4wStUsbmCKM8y1O95IgOG4ue+xOgdozKJ5/l3RhYj5L23Cx1Ylb2a 5Sxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=P4toagE6L7hvU9hmFVddVF25/sG5BYlQvmGlC11guFY=; b=GfyaD53IYsJgqry9OSe/OzpIopiz2Uapr/NeZdc2HT13q1vzRzbWDhWBqqPuJGZqf+ HqTc/WyejOzs3P+spf3dQCvAbMfVKmKrZo9rqmxHxResucy2LMVWR6pWE2R9bJFwryiQ qVJcYx00r7w0Mxd7wG8k9O7TcnAzJR8enmIUdD2mn+tIjPvefY8LNLW1Cuh71PGjQMg0 E1H1foLJAtkHbba1tPsiRssyvQ/DzpNJD8jcKQGc4TMagidqph/QkppDUx9k0i0SsvzO JZ5UkH/McK5dhjyzObFQ65Oi62WdVYnqu3WI82BOtBVsaWIzOVfmk87aXuJPtrANbs1A aIXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=FHZrIiVA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q6si6387999otf.301.2020.01.16.14.44.55; Thu, 16 Jan 2020 14:45:07 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=FHZrIiVA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406977AbgAPSFu (ORCPT + 99 others); Thu, 16 Jan 2020 13:05:50 -0500 Received: from mail.kernel.org ([198.145.29.99]:56426 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404977AbgAPRju (ORCPT ); Thu, 16 Jan 2020 12:39:50 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 338FD24708; Thu, 16 Jan 2020 17:39:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1579196390; bh=IZzp67DvSMYz/mYJtZFaQojq3mSE991PWm9I9K89Y64=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FHZrIiVAjcdnhuDRGnKhfftb+3oB1vozdxtkT28vry5bL+GPsPE5yKMOuWX9xVxek bc/08UEXHH1413gpDdCaIx1qiAoE2recKYoVVS5PdK2ETtOOnkl1cjetacu/s7nz3K bHKlWrPkgVv32Qh45mhVqGgB9+o1tAnSIUu53zqs= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Arnd Bergmann , "David S . Miller" , Sasha Levin , netdev@vger.kernel.org, clang-built-linux@googlegroups.com Subject: [PATCH AUTOSEL 4.9 170/251] qed: reduce maximum stack frame size Date: Thu, 16 Jan 2020 12:35:19 -0500 Message-Id: <20200116173641.22137-130-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200116173641.22137-1-sashal@kernel.org> References: <20200116173641.22137-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnd Bergmann [ Upstream commit 7c116e02a4a7575c8c62bfd2106e3e3ec8fb99dc ] clang warns about an overly large stack frame in one function when it decides to inline all __qed_get_vport_*() functions into __qed_get_vport_stats(): drivers/net/ethernet/qlogic/qed/qed_l2.c:1889:13: error: stack frame size of 1128 bytes in function '_qed_get_vport_stats' [-Werror,-Wframe-larger-than=] Use a noinline_for_stack annotation to prevent clang from inlining these, which keeps the maximum stack usage at around half of that in the worst case, similar to what we get with gcc. Fixes: 86622ee75312 ("qed: Move statistics to L2 code") Signed-off-by: Arnd Bergmann Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/qlogic/qed/qed_l2.c | 34 +++++++++++------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/drivers/net/ethernet/qlogic/qed/qed_l2.c b/drivers/net/ethernet/qlogic/qed/qed_l2.c index 715776e2cfe5..2d198f6ee21d 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_l2.c +++ b/drivers/net/ethernet/qlogic/qed/qed_l2.c @@ -1328,10 +1328,9 @@ static void __qed_get_vport_pstats_addrlen(struct qed_hwfn *p_hwfn, } } -static void __qed_get_vport_pstats(struct qed_hwfn *p_hwfn, - struct qed_ptt *p_ptt, - struct qed_eth_stats *p_stats, - u16 statistics_bin) +static noinline_for_stack void +__qed_get_vport_pstats(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, + struct qed_eth_stats *p_stats, u16 statistics_bin) { struct eth_pstorm_per_queue_stat pstats; u32 pstats_addr = 0, pstats_len = 0; @@ -1351,10 +1350,9 @@ static void __qed_get_vport_pstats(struct qed_hwfn *p_hwfn, p_stats->tx_err_drop_pkts += HILO_64_REGPAIR(pstats.error_drop_pkts); } -static void __qed_get_vport_tstats(struct qed_hwfn *p_hwfn, - struct qed_ptt *p_ptt, - struct qed_eth_stats *p_stats, - u16 statistics_bin) +static noinline_for_stack void +__qed_get_vport_tstats(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, + struct qed_eth_stats *p_stats, u16 statistics_bin) { struct tstorm_per_port_stat tstats; u32 tstats_addr, tstats_len; @@ -1397,10 +1395,9 @@ static void __qed_get_vport_ustats_addrlen(struct qed_hwfn *p_hwfn, } } -static void __qed_get_vport_ustats(struct qed_hwfn *p_hwfn, - struct qed_ptt *p_ptt, - struct qed_eth_stats *p_stats, - u16 statistics_bin) +static noinline_for_stack +void __qed_get_vport_ustats(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, + struct qed_eth_stats *p_stats, u16 statistics_bin) { struct eth_ustorm_per_queue_stat ustats; u32 ustats_addr = 0, ustats_len = 0; @@ -1436,10 +1433,9 @@ static void __qed_get_vport_mstats_addrlen(struct qed_hwfn *p_hwfn, } } -static void __qed_get_vport_mstats(struct qed_hwfn *p_hwfn, - struct qed_ptt *p_ptt, - struct qed_eth_stats *p_stats, - u16 statistics_bin) +static noinline_for_stack void +__qed_get_vport_mstats(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, + struct qed_eth_stats *p_stats, u16 statistics_bin) { struct eth_mstorm_per_queue_stat mstats; u32 mstats_addr = 0, mstats_len = 0; @@ -1463,9 +1459,9 @@ static void __qed_get_vport_mstats(struct qed_hwfn *p_hwfn, HILO_64_REGPAIR(mstats.tpa_coalesced_bytes); } -static void __qed_get_vport_port_stats(struct qed_hwfn *p_hwfn, - struct qed_ptt *p_ptt, - struct qed_eth_stats *p_stats) +static noinline_for_stack void +__qed_get_vport_port_stats(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, + struct qed_eth_stats *p_stats) { struct port_stats port_stats; int j; -- 2.20.1