Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp616633ybl; Fri, 24 Jan 2020 06:30:57 -0800 (PST) X-Google-Smtp-Source: APXvYqxf9Oktz3MZOnb9CDgCYuyFlmd50pjxLRlj3G8Z4JDo0Oq62RYTrB2mBIY0ETHibSqwGMAY X-Received: by 2002:a9d:588d:: with SMTP id x13mr2756189otg.6.1579876257262; Fri, 24 Jan 2020 06:30:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579876257; cv=none; d=google.com; s=arc-20160816; b=LneAl245Y4s4XbRK1knQBNYjZ2zBHaWM81UpYGicI0RX328JDp5Gms50M8jZDXRD7L DysiUoMia8rpqXs0LE3USF+11srmMMqY1j73FljdzCTssfREsc48tt0IoL2LowSt5LMx NS+vD9gpLayw8zXj1+Y7CM0L08NJnGnG9XMpCxxlanOQCA31xvaX2co1mw5PGIgy5DCI 7CYobJDPkvWk9qReBz05/ZizjXHlSGE4zeHiZ/8fgY7P7/FtCTQppuZrTdZ2HBSnvVJu 38RzREgbPf+xdDhLEDdwx0+HwKpgN/7S5xvDFVzyj8q7KoDTiqqzncsVcYrZsCR3R5fd KJqg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=jFKCkr0S6uy8LV7xNd16yB3XQwI5ncUO3sOLkP3dSI8=; b=B1+J65juRBIgmvarC/TgnI9OJzKsxctpoJJUVGwu/9seycjxOxkiae0gbAu6DomXyp vGzy91G1vZkESEn5AWhTPoLzFXBlCpgd4J4zeCpIAJ4bJkkgJaU25NTtNL9wtABijjyQ OfSmGT3GgRjM9pRsQAklzD9iamGGYKhy9VIKwohv92/t8ixfsBWm5SIRPu1xmDAW/h9y D44rBrlupjSve9SjPJINhdP82TpwxAu1e2M68j1gLDQX/W6PvtVHaP24AdLqZVhXXTcJ XdhuQ8WFMweL+WPe1GK02wElkjracb0liEa5ufxcOS7q8ck0tLobSJSB1czZU+Q+cjpn xeaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Ey2mzf2X; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l14si3000221otk.225.2020.01.24.06.30.45; Fri, 24 Jan 2020 06:30:57 -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=Ey2mzf2X; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391663AbgAXL1n (ORCPT + 99 others); Fri, 24 Jan 2020 06:27:43 -0500 Received: from mail.kernel.org ([198.145.29.99]:43332 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391655AbgAXL1l (ORCPT ); Fri, 24 Jan 2020 06:27:41 -0500 Received: from localhost (ip-213-127-102-57.ip.prioritytelecom.net [213.127.102.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1AC8D20718; Fri, 24 Jan 2020 11:27:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1579865259; bh=1SEoUkiEVPW15R7ka6+LcKQYHYEqhbO4L6sxXiYVNgk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ey2mzf2XX8yQI4zGA+xlOaqLGZQBU5O+hmTAH0S92V14FlAf4VP0uX6bovhUNq7/j NXejWSuOMtbFE2ICWZxSkQ+kzsAgk93eFXPTqbJu+5ntV952zXOvT2I2y3TQndYq03 e5Yy6ob8wP1cESDpku1FootLkvKYxPUT2z9/Hnyk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Arnd Bergmann , "David S. Miller" , Sasha Levin Subject: [PATCH 4.19 484/639] qed: reduce maximum stack frame size Date: Fri, 24 Jan 2020 10:30:54 +0100 Message-Id: <20200124093149.295633610@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200124093047.008739095@linuxfoundation.org> References: <20200124093047.008739095@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 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 64ac95ca4df21..d921b991dbdb5 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_l2.c +++ b/drivers/net/ethernet/qlogic/qed/qed_l2.c @@ -1631,10 +1631,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; @@ -1661,10 +1660,9 @@ static void __qed_get_vport_pstats(struct qed_hwfn *p_hwfn, 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; @@ -1709,10 +1707,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; @@ -1751,10 +1748,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; @@ -1780,9 +1776,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 qed_eth_stats_common *p_common = &p_stats->common; struct port_stats port_stats; -- 2.20.1