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 3E3F1C77B7D for ; Mon, 15 May 2023 06:04:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ACB56900003; Mon, 15 May 2023 02:04:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A7AA9900002; Mon, 15 May 2023 02:04:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 94339900003; Mon, 15 May 2023 02:04:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7FFA2900002 for ; Mon, 15 May 2023 02:04:48 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id E7F07161293 for ; Mon, 15 May 2023 06:04:47 +0000 (UTC) X-FDA: 80791450614.27.84ECA5B Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by imf26.hostedemail.com (Postfix) with ESMTP id C179214000D for ; Mon, 15 May 2023 06:04:44 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Gca344iL; spf=pass (imf26.hostedemail.com: domain of ying.huang@intel.com designates 192.55.52.115 as permitted sender) smtp.mailfrom=ying.huang@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684130685; a=rsa-sha256; cv=none; b=4VLVKnDdBp6hsmabLN/r1bFL5K8ZwYnDLdm8zQc0YzL0LHfuQjkYQ2iCmOQZ2QVjDQ+Ul/ QNj2Wzv0E9SHCtsqucfZ/RzfzxAYwYicKWQoNlVcXg1yIvKsAC1H9HGKgmKT3uTg2N1PwR DNBM/2ulqEz9dSANRCgxZJXzYjyvFdE= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Gca344iL; spf=pass (imf26.hostedemail.com: domain of ying.huang@intel.com designates 192.55.52.115 as permitted sender) smtp.mailfrom=ying.huang@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684130685; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=2X5k4cF1XsyThGRiwKmtBezZzxFuA2AoyM2zLk9sEsk=; b=tHjj/jb8sn7cMMl2fM1abEyxBYdawQLXxN1CY76akvxObjEXlDrVl4zXLky3KhFVtw/3gy m69kAhsGvA+Re7mHk9wU5vIcvVEDvBuac+vFI1nBc2RD8Sub0NhJ1tZBx/tPxAOtVND8dQ 1fwiKVz3RD3kS2Mo3IV5+CYAvMsaTcY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684130684; x=1715666684; h=from:to:cc:subject:references:date:in-reply-to: message-id:mime-version; bh=6zH15ymc2NzZdXIl8nmia/9xOz/3gmVlQqI1smM4ozk=; b=Gca344iLo/xKSPYWgjQRRWJUHmCcI4yq8zvBH0cPzBDg7peM/dlCzp61 urac2UuORs8K85FTsze/CsWbeTDfyqEzevFRC6JTeUC6bSTBGxmoda6kZ /QY5rlzjXYkO0bRi++mB7n+1CqeNLerMtXLpo4h4DS2wYtOhtWze1xRqX T2rVN95Y4EAN/Aw/PIeWsICw6shi0pBwiEe4YnQ6E5PzaDfN/MkqC9o/8 P8FWXt7SFI4RZ06X3oYZIoc6H8j7+m1SnDIt1ArzX8Y+49HFEe1rYGCNb r3zFP3/1sSeFbFswt6NlV8xQFBrkwk7qwbkQUIfDdewLANVNxonlAi+Df w==; X-IronPort-AV: E=McAfee;i="6600,9927,10710"; a="351152875" X-IronPort-AV: E=Sophos;i="5.99,275,1677571200"; d="scan'208";a="351152875" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2023 23:04:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10710"; a="790545710" X-IronPort-AV: E=Sophos;i="5.99,275,1677571200"; d="scan'208";a="790545710" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.238.208.55]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2023 23:04:41 -0700 From: "Huang, Ying" To: Tetsuo Handa Cc: Mel Gorman , Andrew Morton , Vlastimil Babka , linux-mm Subject: Re: [PATCH v2] mm/page_alloc: don't wake kswapd from rmqueue() unless __GFP_KSWAPD_RECLAIM is specified References: <6d6fb601-6100-92b9-cea3-e7ebacc7693a@I-love.SAKURA.ne.jp> <20230513102314.md5ugj22xnv6mxob@techsingularity.net> Date: Mon, 15 May 2023 14:03:19 +0800 In-Reply-To: (Tetsuo Handa's message of "Sun, 14 May 2023 09:28:56 +0900") Message-ID: <87edni872w.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: C179214000D X-Stat-Signature: uyftesnjcruxurwcs3zuotfgguwogqbu X-HE-Tag: 1684130684-273198 X-HE-Meta: U2FsdGVkX1+UtdlhsMkaM/n/MuLg8XX0bUjFzyp+D1dZgRme/rbnTG1pOZpI1ZyWEAlMyvWA1YvC/kGb6yRihqt+vHqQ8+Ziv1ZkYitN/BidQSO0nFGKM9UDyRhNOTKCqYvjZlBLuejFh52/dRDxPMusactd6HRgT2t/j+l/ppAEpgVCu4AzX9P+v1hzzUT4pN3abas0lDQdTEzSJrlRnIlTKqHsvw6Q+k2fzbwoq0hGXKS6UO76LIGIPyw/baYVYzPmqYjozWe4xDJ/sqsRUhKeLMn3R70O7X+8uWGNdixJhx5WZuiSu1ydEsq3hAu2qYYARbeP1mPD27mm7clsb3CLIPNdICRIKis1matCb7Qbd1H4NtKCCbSfDtTp0krGBUFTKo50QixEubVkKlQz/3z0KkcFd9KDyWQWuUnrZch8Xuq/glwPIwqbGz1jIWt++L9HDcVeljJIsePD2La9pDjjeXk6cFMrZ4d0gcsBy0l9K7YL6bjcuPKL/v8KZxI564kf4ZPXXwmcfppksS882iQd82wDjGkYXbXGY0I+lYXu5tpCP8V2Oa2MUIk/9/1KO83GnzY9igslaYEGKFLu7V4q44iZionGV9a7PCldsuvOvjgrwg1xDlCRNNvNxCpgNs1O5wMoyOeX8em/nzvY5/axfHSNud/Hn751f5j5xtCccFj0coVe+EXlPTelggbu0s8B1gPxISnhr3YHxCjHb2+2UmxUP6U57ON/FnZU2Gelz14JvIRB5k6CpA71ujJ6YCZJZ/MpIgLl12okGDu34x2WTvFTiRL1jWqhtx3uGCzUUrdvCy4SVxpiiTqr2X7OE2+KK5OysiOGamdv6cc31Ay2AINW8Pd5ePlRxrz0veTFPK2++y5z7Wby+OExoNTSHx/mS6Rq6EuMdihWGve3shSYdtYScIyJEU2AaGgub86uBaie1NDAAj/5vT5+5Pd68YUmWNAxP12tkM1fMl2 MwxB2HNV NMOs8DQi2NIhoFemhgklTsm/Lw88dJa7SZgNNiC3ucXDjZb+ssWKVd6YyDUgjQ11vn0C7MgkPdUStOMxdx7Uvy0vgbRi+WPlp2JvPVsgq06hmI7YXogjfNpPM7s7L15XHsFXv9UT60/l3W/ziaWsz/xBVm4/nOt6cSrY3n0620h//+yOL/cd/FjKPlNiGuyxhwUT/JMwE2DvKqHigr4y5XH/jU/moOxyJvnRo9Ps7HrkF2x8p/cJ8DlD7LcN37+wdk0GUahTre+WK+KPY+AdTPBiSx/n4fbRiWRIuZnoB/W7rNI8PQpTpPuztN/PVo+oMn7Vv+ZFXJj6thBxdR4gwGDFomUCuAouAqISNOK/A0NjJqrsmWKiZW9HBJw== 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: Tetsuo Handa writes: > Commit 73444bc4d8f9 ("mm, page_alloc: do not wake kswapd with zone lock > held") moved wakeup_kswapd() from steal_suitable_fallback() to rmqueue() > using ZONE_BOOSTED_WATERMARK flag. > > Only allocation contexts that include ALLOC_KSWAPD (which corresponds to > __GFP_KSWAPD_RECLAIM) should wake kswapd, for callers are supposed to > remove __GFP_KSWAPD_RECLAIM if trying to hold pgdat->kswapd_wait has a > risk of deadlock. But since zone->flags is a shared variable, a thread > doing !__GFP_KSWAPD_RECLAIM allocation request might observe this flag > being set immediately after another thread doing __GFP_KSWAPD_RECLAIM > allocation request set this flag, causing possibility of deadlock. Sorry, I don't understand what is the deadlock here. I checked commit 73444bc4d8f9 ("mm, page_alloc: do not wake kswapd with zone lock held") and the corresponding mail thread. From the below mail, https://lore.kernel.org/all/20190107204627.GA25526@cmpxchg.org/ commit 73444bc4d8f9 fixed a circular locking ordering as follows, pi lock -> rq lock -> timer base lock -> zone lock -> wakeup lock (kswapd_wait, fixed) -> pi lock But I don't know what is the deadlock that your patch fixed. Can you teach me on that? Best Regards, Huang, Ying > Signed-off-by: Tetsuo Handa > Fixes: 73444bc4d8f9 ("mm, page_alloc: do not wake kswapd with zone lock held") > --- > Changes in v2: > Check ALLOC_KSWAPD before checking ZONE_BOOSTED_WATERMARK and update > description, suggested by Mel Gorman . > > mm/page_alloc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 47421bedc12b..ecad680cec53 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3052,7 +3052,8 @@ struct page *rmqueue(struct zone *preferred_zone, > > out: > /* Separate test+clear to avoid unnecessary atomics */ > - if (unlikely(test_bit(ZONE_BOOSTED_WATERMARK, &zone->flags))) { > + if ((alloc_flags & ALLOC_KSWAPD) && > + unlikely(test_bit(ZONE_BOOSTED_WATERMARK, &zone->flags))) { > clear_bit(ZONE_BOOSTED_WATERMARK, &zone->flags); > wakeup_kswapd(zone, 0, 0, zone_idx(zone)); > }