Received: by 2002:a05:7412:a9a2:b0:e2:908c:2ebd with SMTP id o34csp480244rdh; Thu, 26 Oct 2023 07:29:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGMAiKYKkTVVT+8Fp3IIbZTurpr4uJ2NcKkU2WxYgurUH/Tgh68+xeUMgkF66SajqDHDFrX X-Received: by 2002:a0d:ea8d:0:b0:5a7:a989:b85c with SMTP id t135-20020a0dea8d000000b005a7a989b85cmr19660572ywe.16.1698330548294; Thu, 26 Oct 2023 07:29:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698330548; cv=none; d=google.com; s=arc-20160816; b=fFwCjo/cIjr7a54evuF5sagn3O1BSJLP6X0LY5qQjUyF+dtYXHEeO7fD4RWC8KPpAO KRvaqgtlbMtKa3nQ0hubwDfjS0+xmz4yEsBFffq1MxzL4sz6s//Ebk4eRgN1N/px7eRl uJ88LEhLuaM+guim9WKR2avCJ9np6R2BEtwYhJ3ZQCiEIVDHLrw/21nzGJrO2GTXy7yE BKhkYrVcc1P9Nz+nvOkXsWabM//OB1RsZ5JCX3VibfTkBk9glvOaf72h5HfO3oH1IZT1 rDb2BbX4H0msk3I5goPKAkzNZ3SxmFxJKxrNxGPrWckQFPnOnijqPfLD1YhYprf1fgvm 5RrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=qyBn6jguV2CtCgZJ0YSbZFMuweVL9xc6h7MSnGeedig=; fh=ogBLlsb17eYmYH+MjOyZMssc1gJdXSQYk3saB3pkSuE=; b=YJKLWLq9mXwsC4qwEq3VxtFuzUUayHw1nRjLE9zik9SrApD8chqnHiJSMjv2T20bLn DXb9rxSG8LQtPqcZ+7H7lNVU9G99csYu5rzt0vtTFezJD8gyIapyeALorl3kja9ZzVw9 AECjjFW534Ywvp4URWyaNqSMK5e4L0nOaTQkHB6anu3XCpzolWD49j6tKU5+qLY1p2oY hA3/ZqPrfawiAs5xCxQwQfworQfpFIwEmn3I/pGG8tWNhWURUDeXSUSxddUWetFMDhe5 dEtcX9oWVXPSX4erAnSa0tEsjy0OnfKPCl81QUZyJ8aIdgd4czUNeBGmRj+BGStayTir XkUg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=CECpQjiC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id x145-20020a81a097000000b0058cda79ef9csi14674616ywg.106.2023.10.26.07.29.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 07:29:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=CECpQjiC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 54180822B8EF; Thu, 26 Oct 2023 07:29:04 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345248AbjJZO2l (ORCPT + 99 others); Thu, 26 Oct 2023 10:28:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40564 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345232AbjJZO2k (ORCPT ); Thu, 26 Oct 2023 10:28:40 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 479111AA for ; Thu, 26 Oct 2023 07:28:36 -0700 (PDT) Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39QEKdM2016139; Thu, 26 Oct 2023 14:28:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=qcppdkim1; bh=qyBn6jguV2CtCgZJ0YSbZFMuweVL9xc6h7MSnGeedig=; b=CECpQjiCNIZaREcojvx76nEEaxbeEPJguNV3nKv12M/GEVXPPvGD1Aum/0ORMjFpWvwC /iqF1njAHyYwbkSfWawb5SQ5lT5lhmdiUk3++G9P7FRPVOUkhmQ+P9E2wtYIdI2/uI29 Y0EO55TsuD7Jj6p5OiTNLO/M0ceUAEXQKsyQy0xcSmz7351/+xAwMkgDADjW0zVZX5Q7 nWuBiuSP1L977grkKG53hZ6s51KlbfEpQkqaR02UCoBXwvNCcuMj7rQnLr5gcjnF+oOx stJ+ppzIHQf/d9UIAfvbjLQmS3flVQt0EFxlUE2CXp83jS0OjC67las1NOysTPNlZBgz 7A== Received: from nasanppmta02.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3tyfm9hb47-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 26 Oct 2023 14:28:29 +0000 Received: from nasanex01c.na.qualcomm.com (nasanex01c.na.qualcomm.com [10.45.79.139]) by NASANPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 39QESSCg028126 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 26 Oct 2023 14:28:28 GMT Received: from hu-mojha-hyd.qualcomm.com (10.80.80.8) by nasanex01c.na.qualcomm.com (10.45.79.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.39; Thu, 26 Oct 2023 07:28:25 -0700 From: Mukesh Ojha To: Luis Chamberlain , Russ Weight , Greg Kroah-Hartman CC: "Rafael J. Wysocki" , , Mukesh Ojha Subject: [PATCH v4 2/2] firmware_loader: Abort all upcoming firmware load request once reboot triggered Date: Thu, 26 Oct 2023 19:57:39 +0530 Message-ID: <1698330459-31776-2-git-send-email-quic_mojha@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1698330459-31776-1-git-send-email-quic_mojha@quicinc.com> References: <1698330459-31776-1-git-send-email-quic_mojha@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nasanex01c.na.qualcomm.com (10.45.79.139) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: tsMwgciLkAVGKKvgbd95kEkaySdBWg6n X-Proofpoint-GUID: tsMwgciLkAVGKKvgbd95kEkaySdBWg6n X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.987,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-26_13,2023-10-26_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 priorityscore=1501 clxscore=1015 phishscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 mlxscore=0 spamscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2310170001 definitions=main-2310260123 X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Thu, 26 Oct 2023 07:29:04 -0700 (PDT) There could be following scenario where there is a ongoing reboot is going from processA which tries to call all the reboot notifier callback and one of them is firmware reboot call which tries to abort all the ongoing firmware userspace request under fw_lock but there could be another processB which tries to do request firmware, which came just after abort done from ProcessA and ask for userspace to load the firmware and this can stop the ongoing reboot ProcessA to stall for next 60s(default timeout) which may not be expected behaviour everyone like to see, instead we should abort any firmware load request which came once firmware knows about the reboot through notification. ProcessA ProcessB kernel_restart_prepare blocking_notifier_call_chain fw_shutdown_notify kill_pending_fw_fallback_reqs __fw_load_abort fw_state_aborted request_firmware __fw_state_set firmware_fallback_sysfs ... fw_load_from_user_helper .. ... . .. usermodehelper_read_trylock fw_load_sysfs_fallback fw_sysfs_wait_timeout usermodehelper_disable __usermodehelper_disable down_write() Signed-off-by: Mukesh Ojha --- Changes from v3: https://lore.kernel.org/lkml/1696482420-1329-1-git-send-email-quic_mojha@quicinc.com/ - Again renamed variable name to be more meaningful after 1/2. Changes from v2: https://lore.kernel.org/lkml/1696431327-7369-1-git-send-email-quic_mojha@quicinc.com/ - Renamed the flag to fw_abort_load. Changes from v1: https://lore.kernel.org/lkml/1694773288-15755-1-git-send-email-quic_mojha@quicinc.com/ - Renamed the flag to fw_load_abort. - Kept the flag under fw_lock. - Repharsed commit text. drivers/base/firmware_loader/fallback.c | 6 +++++- drivers/base/firmware_loader/firmware.h | 1 + drivers/base/firmware_loader/main.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/base/firmware_loader/fallback.c b/drivers/base/firmware_loader/fallback.c index b3ce07160281..3ef0b312ae71 100644 --- a/drivers/base/firmware_loader/fallback.c +++ b/drivers/base/firmware_loader/fallback.c @@ -57,6 +57,10 @@ void kill_pending_fw_fallback_reqs(bool kill_all) if (kill_all || !fw_priv->need_uevent) __fw_load_abort(fw_priv); } + + if (kill_all) + fw_load_abort_all = true; + mutex_unlock(&fw_lock); } @@ -86,7 +90,7 @@ static int fw_load_sysfs_fallback(struct fw_sysfs *fw_sysfs, long timeout) } mutex_lock(&fw_lock); - if (fw_state_is_aborted(fw_priv)) { + if (fw_load_abort_all || fw_state_is_aborted(fw_priv)) { mutex_unlock(&fw_lock); retval = -EINTR; goto out; diff --git a/drivers/base/firmware_loader/firmware.h b/drivers/base/firmware_loader/firmware.h index bf549d6500d7..e891742ba264 100644 --- a/drivers/base/firmware_loader/firmware.h +++ b/drivers/base/firmware_loader/firmware.h @@ -86,6 +86,7 @@ struct fw_priv { extern struct mutex fw_lock; extern struct firmware_cache fw_cache; +extern bool fw_load_abort_all; static inline bool __fw_state_check(struct fw_priv *fw_priv, enum fw_status status) diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c index 522ccee781b4..ea28102d421e 100644 --- a/drivers/base/firmware_loader/main.c +++ b/drivers/base/firmware_loader/main.c @@ -93,6 +93,7 @@ static inline struct fw_priv *to_fw_priv(struct kref *ref) DEFINE_MUTEX(fw_lock); struct firmware_cache fw_cache; +bool fw_load_abort_all; void fw_state_init(struct fw_priv *fw_priv) { -- 2.7.4