From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76331C02198 for ; Tue, 11 Feb 2025 00:37:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F2461280004; Mon, 10 Feb 2025 19:37:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id ED385280003; Mon, 10 Feb 2025 19:37:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D73E9280004; Mon, 10 Feb 2025 19:37:40 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id B7AF8280003 for ; Mon, 10 Feb 2025 19:37:40 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 65B37487D4 for ; Tue, 11 Feb 2025 00:37:40 +0000 (UTC) X-FDA: 83105800680.28.650B34F Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf24.hostedemail.com (Postfix) with ESMTP id B987918000F for ; Tue, 11 Feb 2025 00:37:38 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b="yucglhG/"; spf=pass (imf24.hostedemail.com: domain of akpm@linux-foundation.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739234258; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=KPU5fE3xn03A9X/pk2XS9aAk4xgxdeFtqQaquz8p3ho=; b=pJ55WVQcPmHEr5VV5LZJfpjExpAG7XVbIoM47OMadqaNLX642ZcUinWqZvqSXYV05YGAh8 pUXcUU3poL1fG9fM388ygqpiXF7mFD1ggwXU06a5eESxzHnBYofQizKcns8nFbm+jM4UTA w3EgCO7trC2ZduUfoZJjxbWCscuSMRo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739234258; a=rsa-sha256; cv=none; b=AlEbSpP4Lsg7Rm109Bn9VQuHo6hb+lwWLs9+jV/ChY83PS8b4ZkFDXCs4uRe2XMuMHyKA+ HZPPQwPA+BP3gXjMhIy2wf8u3BaJ85pNHmI89d+vCUYNfzOX+lgG+j2LYNDNhFSBN1Qebd Frcgut0G+UlBbV8QL1bknCd/SiegPcs= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b="yucglhG/"; spf=pass (imf24.hostedemail.com: domain of akpm@linux-foundation.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 7A804A417A5; Tue, 11 Feb 2025 00:35:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 89C64C4CED1; Tue, 11 Feb 2025 00:37:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1739234257; bh=ZYD92l+XYZ4CB3e7+iC6Z5+Zvap/uYMgrrh+yCjGskI=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=yucglhG/B+tEILfXSdnWmXc24hM+m/18OwIRur9GzKzd7pEcaizD82qJ912H99kDi nnmhtVGaxtDTVhj5XYsRKaAjwDka0usF7ODK3K5dUmfRe/SwkQqWTsPywFVOwgoAVv 3P94LGYiBop2eA7pBrUzgsOUrcjLHjeySkJpvos0= Date: Mon, 10 Feb 2025 16:37:36 -0800 From: Andrew Morton To: I Hsin Cheng Cc: zhengqi.arch@bytedance.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, jserv@ccns.ncku.edu.tw Subject: Re: [PATCH] mm: pgtable: Unlock pml without branches when !start_pte Message-Id: <20250210163736.ed1c93a44a47e39820fb8d85@linux-foundation.org> In-Reply-To: <20250210100948.312130-1-richard120310@gmail.com> References: <20250210100948.312130-1-richard120310@gmail.com> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Queue-Id: B987918000F X-Rspamd-Server: rspam07 X-Stat-Signature: b6z6z18dqen8um81x48z8kkinxinp11e X-HE-Tag: 1739234258-257014 X-HE-Meta: U2FsdGVkX1+4XJ6GKUcWbOQ8cgEutfcjfTSmvBWdWDnkDSoS2tKn7ryfBcOphuoOFD8FRvnKhVjDZwh0k8QLYwbYEfsFGaKjs5uK6YMLt+ZUI21VyUgytAQd+Fey7QlDOWsXRLlk37o1S5lb51WdA2UXA2rRT2mKHDiTQeIAh3Kf5JZkdvjgI7OdaNF7tbt7+0EPtUEFfRqzeb42wRdWmAT/1tbPqZ/BVEMrO51S8f6Eh/t2TREs6zgYM/LWenoCnh8N/JKZ1wc8dphZRFd989mlFjx58IMtL448mlenvsyjgsDl5jGBfYjfH2HNbmUeX/CtPndQsvhWYSTgl+d0mibRamfIBm5zXU8k0deVeHgGWvE4a+ypHMJKcJdECqAwcYXAIc/GUMq8w7qTvryLzlWHuM2jwgCQ9sNNV7LBuKpxpLk7Pj1CDgIo8yAxaNmZzuT3z9onu6XO6XoyBYA22K16h4b8jO/559HiaYw2vJDsPYUFWFte82uyJhIZyleR7y/D8yTFOw7CUw4PocNx3fyQL/ahz4X0xcXYiP1QVuI853Sxdxnz+9EtJQ9Zfp2IO5SLSRM9NTZhlZLJ9x7U8D5ANjpsmtum9VGjxQKqrP5mZQlTXjQDvmVQLUqG6EHIyPfzJK86IWXbFfcaEBfRH16dJDOFqaia/G2404KT1fOv0RGw7OVO8Ogwc1rsDBXfHiwMJX+ZimZns4/+7nCRTX9dGfUUPI8QHp7qj0qOy2s64QGJ1TAIjelS/bVzhKUNBm1njZ3B9xO3aO+dp4hu8hTxulYYpH5pXtcc/wovLOyqgmPXt+PyqhpmjYcCEyCLIgZspiIvDnc6xwaAfz2Y0xlqs5adB6UoZyFmCkGWyv2jpzOEBPpN5hjc7/OO7CrKytufYg46pCgtoZSKDsDrHuJ8L5S22U+mFF9JB8bnWOfZnP8SDVF6X9fe/7NBwMHyGQqhLUt8+LILomYaHRE xDG+qYn0 Om9Hy4vW3OUDKc6/aIADXrs0CR2cDo9MBWyQqeTEyjyhU4Hb7em/sK5ORfaGU/KkgelnvMYrnqu9g283iieR/d0H+3yTVnA1OJu2bQVeoJr6XS7WmN22G/lbKORCZ7+YVlbg0nnGSNG9WR+N9hoOXzDrlo0/W12iqyp8idlrN6QlVeNQsSBHkJZUIDIxhpw7pQxIQusjOCtyBiBac+dCnShOAyR34cAku3xMqDkiLIVe3Aq0/86LHLtQrfgXZwCiyMCt0mYTC2d92Rv3YqEgVV0r+FqESxmtX63wMim4W6i7VMewVUC7K4g2LEbP73xjBA/0TgZDyzmoXeB4PkisHpxKKcvXHGvcdacTuBDv8amiN4O0= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, 10 Feb 2025 18:09:48 +0800 I Hsin Cheng wrote: > When !start_pte is true, the branch for "start_pte" in "out_ptl" label > section is surely false, and "ptl != pml" must be true since "ptl" is > NULL in this case. > > It means both branches in "out_ptl" are redundant, only one thing to be > done is to unlock "pml", make it directly unlock "pml" and return in > this case. Hopefully the compiler will skip the `if (start_pte)' test. Generally, we try to avoid multiple function return points. We could do --- a/mm/pt_reclaim.c~mm-pgtable-unlock-pml-without-branches-when-start_pte +++ a/mm/pt_reclaim.c @@ -43,7 +43,7 @@ void try_to_free_pte(struct mm_struct *m pml = pmd_lock(mm, pmd); start_pte = pte_offset_map_rw_nolock(mm, pmd, addr, &pmdval, &ptl); if (!start_pte) - goto out_ptl; + goto out_unlock; if (ptl != pml) spin_lock_nested(ptl, SINGLE_DEPTH_NESTING); @@ -67,5 +67,6 @@ out_ptl: if (start_pte) pte_unmap_unlock(start_pte, ptl); if (ptl != pml) +out_unlock: spin_unlock(pml); } _ but that's really ugly.