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 X-Spam-Level: X-Spam-Status: No, score=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8DE09ECE58C for ; Wed, 9 Oct 2019 16:20:43 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4EFBB21848 for ; Wed, 9 Oct 2019 16:20:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=shipmail.org header.i=@shipmail.org header.b="L1LgQkaa" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4EFBB21848 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=shipmail.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id CCB618E0005; Wed, 9 Oct 2019 12:20:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C54938E0003; Wed, 9 Oct 2019 12:20:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ACDA58E0005; Wed, 9 Oct 2019 12:20:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0209.hostedemail.com [216.40.44.209]) by kanga.kvack.org (Postfix) with ESMTP id 82E0F8E0003 for ; Wed, 9 Oct 2019 12:20:42 -0400 (EDT) Received: from smtpin12.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with SMTP id 2A98E55F9D for ; Wed, 9 Oct 2019 16:20:42 +0000 (UTC) X-FDA: 76024759524.12.wind78_5d50965ab53e X-HE-Tag: wind78_5d50965ab53e X-Filterd-Recvd-Size: 6115 Received: from pio-pvt-msa3.bahnhof.se (pio-pvt-msa3.bahnhof.se [79.136.2.42]) by imf25.hostedemail.com (Postfix) with ESMTP for ; Wed, 9 Oct 2019 16:20:39 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by pio-pvt-msa3.bahnhof.se (Postfix) with ESMTP id E43AA3F503; Wed, 9 Oct 2019 18:20:27 +0200 (CEST) Authentication-Results: pio-pvt-msa3.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=L1LgQkaa; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Received: from pio-pvt-msa3.bahnhof.se ([127.0.0.1]) by localhost (pio-pvt-msa3.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XHAqkNolIUYl; Wed, 9 Oct 2019 18:20:24 +0200 (CEST) Received: from mail1.shipmail.org (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) (Authenticated sender: mb878879) by pio-pvt-msa3.bahnhof.se (Postfix) with ESMTPA id 95D1C3F315; Wed, 9 Oct 2019 18:20:22 +0200 (CEST) Received: from localhost.localdomain (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) by mail1.shipmail.org (Postfix) with ESMTPSA id F0AC936016C; Wed, 9 Oct 2019 18:20:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1570638022; bh=15nrot/7wNjB0kN4+a5UAu154h85Yrs+uYJfO3V81ZI=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=L1LgQkaa61DY0KI5m3lwcwTx0pPa3Jl4tKDsCKiHxLn2Kv4bhXtKKhdHjJ9ok69OA qe44WjgVeRB0eyhf7YyfKwgHD/7TdPOHPUqMlkgNbvNT4BOBMdejyxs93VMYaGe8r/ neaDUtO2LuwYqORXgYFLnzZdZxFrgwiM3vlYJVtk= Subject: Re: [PATCH v4 3/9] mm: pagewalk: Don't split transhuge pmds when a pmd_entry is present To: "Kirill A. Shutemov" Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, torvalds@linux-foundation.org, Thomas Hellstrom , Matthew Wilcox , Will Deacon , Peter Zijlstra , Rik van Riel , Minchan Kim , Michal Hocko , Huang Ying , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= References: <20191008091508.2682-1-thomas_os@shipmail.org> <20191008091508.2682-4-thomas_os@shipmail.org> <20191009152737.p42w7w456zklxz72@box> From: =?UTF-8?Q?Thomas_Hellstr=c3=b6m_=28VMware=29?= Organization: VMware Inc. Message-ID: <467a4a34-27be-8f46-2c9a-c5b335d11438@shipmail.org> Date: Wed, 9 Oct 2019 18:20:21 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20191009152737.p42w7w456zklxz72@box> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable 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: Hi, Kirill. Thanks for reviewing. On 10/9/19 5:27 PM, Kirill A. Shutemov wrote: > On Tue, Oct 08, 2019 at 11:15:02AM +0200, Thomas Hellstr=C3=B6m (VMware= ) wrote: >> From: Thomas Hellstrom >> >> The pagewalk code was unconditionally splitting transhuge pmds when a >> pte_entry was present. However ideally we'd want to handle transhuge p= mds >> in the pmd_entry function and ptes in pte_entry function. So don't spl= it >> huge pmds when there is a pmd_entry function present, but let the call= back >> take care of it if necessary. > Do we have any current user that expect split_huge_pmd() in this scenar= io. No. All current users either have pmd_entry (no splitting) or pte_entry=20 (unconditional splitting) > >> In order to make sure a virtual address range is handled by one and on= ly >> one callback, and since pmd entries may be unstable, we introduce a >> pmd_entry return code that tells the walk code to continue processing = this >> pmd entry rather than to move on. Since caller-defined positive return >> codes (up to 2) are used by current callers, use a high value that all= ows a >> large range of positive caller-defined return codes for future users. >> >> Cc: Matthew Wilcox >> Cc: Will Deacon >> Cc: Peter Zijlstra >> Cc: Rik van Riel >> Cc: Minchan Kim >> Cc: Michal Hocko >> Cc: Huang Ying >> Cc: J=C3=A9r=C3=B4me Glisse >> Cc: Kirill A. Shutemov >> Suggested-by: Linus Torvalds >> Signed-off-by: Thomas Hellstrom >> --- >> include/linux/pagewalk.h | 8 ++++++++ >> mm/pagewalk.c | 28 +++++++++++++++++++++------- >> 2 files changed, 29 insertions(+), 7 deletions(-) >> >> diff --git a/include/linux/pagewalk.h b/include/linux/pagewalk.h >> index bddd9759bab9..c4a013eb445d 100644 >> --- a/include/linux/pagewalk.h >> +++ b/include/linux/pagewalk.h >> @@ -4,6 +4,11 @@ >> =20 >> #include >> =20 >> +/* Highest positive pmd_entry caller-specific return value */ >> +#define PAGE_WALK_CALLER_MAX (INT_MAX / 2) >> +/* The handler did not handle the entry. Fall back to the next level = */ >> +#define PAGE_WALK_FALLBACK (PAGE_WALK_CALLER_MAX + 1) >> + > That's hacky. > > Maybe just use an error code for this? -EAGAIN? I agree this is hacky. But IMO it's a reasonably safe option. My=20 thinking was that in the long run we'd move the positive return codes to=20 the mm_walk private and introduce a PAGE_WALK_TERMINATE code as well. Perhaps a completely clean and safe way would be to add an "int=20 walk_control" in the struct mm_walk? I'm pretty sure using an error code will come back and bite us at some=20 point, if someone just blindly forwards error messages. But if you=20 insist, I'll use -EAGAIN. Please let me know what you think. Thanks, Thomas 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 X-Spam-Level: X-Spam-Status: No, score=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A7E4DC4360C for ; Sun, 13 Oct 2019 04:21:20 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 2C97720700 for ; Sun, 13 Oct 2019 04:21:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=shipmail.org header.i=@shipmail.org header.b="L1LgQkaa" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2C97720700 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=shipmail.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 643D96B0003; Sun, 13 Oct 2019 00:21:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 61C318E0001; Sun, 13 Oct 2019 00:21:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 49E296B0006; Sun, 13 Oct 2019 00:21:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0157.hostedemail.com [216.40.44.157]) by kanga.kvack.org (Postfix) with ESMTP id 232F16B0003 for ; Sun, 13 Oct 2019 00:21:19 -0400 (EDT) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with SMTP id AE1C552C5 for ; Sun, 13 Oct 2019 04:21:18 +0000 (UTC) X-FDA: 76037461836.26.robin30_457ca8d145b0e X-HE-Tag: robin30_457ca8d145b0e X-Filterd-Recvd-Size: 20739 Received: from listssympa-test.colorado.edu (listssympa-test.colorado.edu [128.138.129.156]) by imf12.hostedemail.com (Postfix) with ESMTP for ; Sun, 13 Oct 2019 04:21:17 +0000 (UTC) Received: from listssympa-test.colorado.edu (localhost [127.0.0.1]) by listssympa-test.colorado.edu (8.15.2/8.15.2/MJC-8.0/sympa) with ESMTPS id x9D4L6e9015907 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sat, 12 Oct 2019 22:21:06 -0600 Received: (from root@localhost) by listssympa-test.colorado.edu (8.15.2/8.15.2/MJC-8.0/submit) id x9D4L41m015854; Sat, 12 Oct 2019 22:21:04 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1570638022; bh=15nrot/7wNjB0kN4+a5UAu154h85Yrs+uYJfO3V81ZI=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=L1LgQkaa61DY0KI5m3lwcwTx0pPa3Jl4tKDsCKiHxLn2Kv4bhXtKKhdHjJ9ok69OA qe44WjgVeRB0eyhf7YyfKwgHD/7TdPOHPUqMlkgNbvNT4BOBMdejyxs93VMYaGe8r/ neaDUtO2LuwYqORXgYFLnzZdZxFrgwiM3vlYJVtk= Received: from CY4PR03MB3397.namprd03.prod.outlook.com (2603:10b6:a03:180::20) by BYAPR03MB4376.namprd03.prod.outlook.com with HTTPS via BY5PR13CA0007.NAMPRD13.PROD.OUTLOOK.COM; Wed, 9 Oct 2019 22:24:05 +0000 Received: from BN6PR03CA0006.namprd03.prod.outlook.com (2603:10b6:404:23::16) by CY4PR03MB3397.namprd03.prod.outlook.com (2603:10b6:910:5b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.23; Wed, 9 Oct 2019 18:03:08 +0000 Received: from BY2NAM01FT032.eop-nam01.prod.protection.outlook.com (2a01:111:f400:7e42::202) by BN6PR03CA0006.outlook.office365.com (2603:10b6:404:23::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.16 via Frontend Transport; Wed, 9 Oct 2019 18:03:07 +0000 Received: from ipmx2.colorado.edu (128.138.128.232) by BY2NAM01FT032.mail.protection.outlook.com (10.152.69.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.16 via Frontend Transport; Wed, 9 Oct 2019 18:03:06 +0000 Received: from ipmx4.colorado.edu ([128.138.67.75]) by mx.colorado.edu with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Oct 2019 11:11:55 -0600 Received: from mx-spsc.colorado.edu (HELO mx.colorado.edu) ([128.138.67.77]) by mx.colorado.edu with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Oct 2019 10:42:59 -0600 Received: from vger.kernel.org ([209.132.180.67]) by mx.colorado.edu with ESMTP; 09 Oct 2019 10:20:37 -0600 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731798AbfJIQUg (ORCPT ); Wed, 9 Oct 2019 12:20:36 -0400 Received: from pio-pvt-msa3.bahnhof.se ([79.136.2.42]:49724 "EHLO pio-pvt-msa3.bahnhof.se" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731083AbfJIQUg (ORCPT ); Wed, 9 Oct 2019 12:20:36 -0400 Received: from localhost (localhost [127.0.0.1]) by pio-pvt-msa3.bahnhof.se (Postfix) with ESMTP id E43AA3F503; Wed, 9 Oct 2019 18:20:27 +0200 (CEST) Received: from pio-pvt-msa3.bahnhof.se ([127.0.0.1]) by localhost (pio-pvt-msa3.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XHAqkNolIUYl; Wed, 9 Oct 2019 18:20:24 +0200 (CEST) Received: from mail1.shipmail.org (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) (Authenticated sender: mb878879) by pio-pvt-msa3.bahnhof.se (Postfix) with ESMTPA id 95D1C3F315; Wed, 9 Oct 2019 18:20:22 +0200 (CEST) Received: from localhost.localdomain (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) by mail1.shipmail.org (Postfix) with ESMTPSA id F0AC936016C; Wed, 9 Oct 2019 18:20:21 +0200 (CEST) Authentication-Results: spf=none (sender IP is 128.138.128.232) smtp.mailfrom=vger.kernel.org; o365.colorado.edu; dkim=fail (signature did not verify) header.d=shipmail.org;o365.colorado.edu; dmarc=none action=none header.from=shipmail.org; Received-SPF: None (protection.outlook.com: vger.kernel.org does not designate permitted sender hosts) IronPort-SDR: oB8lm6OCfFlhJ9EJHTZHQJZjHGcFOaA3WTvZX22DiFofDRDfnOItDblesJyKhFg0dQYlHehQbS clzzdFzSBiM7JQVqYGhItrqic6o7xsHIU= IronPort-SDR: FwEol+xuWnu78NEkpgO1fHwd+ndx7eWmPlCFc+Ks00IOR/3xgUghSpy2tmHnysPLxz2zXSQR1s rrIWK82GcMSsoMNLgFvCOvNcXQKzQX5mA= IronPort-SDR: 6vstRlG1SRXHYpfsL1BXigcem+4mBoMOTP77fiyksN/6XUB6PA8mnSDYclIct1Z3l78VW2C+mn 9YyZ9r1EiUJ5+1jCvy0NAyAJe7jiu1oR8= IronPort-PHdr: =?us-ascii?q?9a23=3A2/9cwRLRwNV1PqjTdNmcpTZQNAQEmpCxExAc7o?= =?us-ascii?q?cul7NJdPjzrsb8aRWMrfw4lkTAGJ7b4qgZ1bmeuPX7WGkY5ZvGq3EHaJhBBF?= =?us-ascii?q?cJ3N4WnhQlCc+BT0rhI62idHk/FcVGBzoHtznzeQAdUI7iMgSP/SXstm5KQE?= =?us-ascii?q?+sfQB1c72oHJTVk4PoyMaw0cXQRVkLjWeASK4rcUm2/VjgrNJVnLpAJIFq9E?= =?us-ascii?q?uQkFodKIE0jSsgbRrb1178s/yt9pxu+DgCh/Vz3MUSa6j0cr41S7dVF2YIKW?= =?us-ascii?q?cwtuHiqRSRbA3K3HYEVnRTrh0aLRLC6UKfPN+5+mOy/qI10ny+ZOn5dLM9UG?= =?us-ascii?q?r7w5Yzaz61jXwDKDUmzHGPkvR514Bf/A6CiwdU4I/0cKWTbtlgIqndTc85Zm?= =?us-ascii?q?pNfsRzBitCXNKbRu5tR6JJda4Q58G1vlZS8SS8CjehPsm3xy5IiCDHzKMZzO?= =?us-ascii?q?sBPUaZ4AAYOPI2jW3xqNb6Eq0Md9zp5o7i6DnObeJGwmam1q35ez8s8evLON?= =?us-ascii?q?A4OYKZgQFnX0vDg1y8lJDCZReIydUUlFKr4NtOceS9uWIVuy9rrSeu45wyjr?= =?us-ascii?q?jruJ4WnwOM5WB42oEzPdqiVAthbMW5FIcFryyAMoZsWMQ4ECl4/Scgzbsevo?= =?us-ascii?q?SnOSUQ0pM9kgXeZPqOb5WS71rvVerZJzBkzGxoYrOxll6B/0mmw+nJHvqI/W?= =?us-ascii?q?12m3kfyIvFq2wN2hrP68OOVvp6+AK71C2S0xzIs78ec1g1ku/DNYJkx6U5zd?= =?us-ascii?q?wZuETFHij43l7738r0Pg1ssqDgo6zrYbTj84eVLJQ8ylimaPhrkM2jSec1I1?= =?us-ascii?q?tGQm6D4+Og2bb/8EG4CLVHh/E7iO/V5YvaJNwer6+9RQhP3c4j5h+zAi3g0Y?= =?us-ascii?q?EwhnkGNFdMeRbBiJLmc1HDKfz1F7G11nD1tDhSxPnPbdiDSt2FZjCL2P/tfr?= =?us-ascii?q?d4rkdA0BFmy91C+4hdDrw=3D?= IronPort-PHdr: =?us-ascii?q?9a23=3Ae3k0zhDkH68PsDPm4eh6UyQJP3V1l5bVG0s49J?= =?us-ascii?q?MjlrtSc6Olo8SzblKKvKYlhQrTRoye8PJN0beI4OjrDHcB5I6FvTcZcZlUUx?= =?us-ascii?q?JWwclDhAwhGMuMCEm9K+TlPGQhScFLVVs2mhPzeQAdUI62L0GH+yDttWBJSk?= =?us-ascii?q?2lb1k9LOSgQ9PUlcOrkL+t3Z/5OwZu2Hm0PI5bMUzr8QWB6/gMmsh/G4Q/7U?= =?us-ascii?q?D38iJ6WrEFoAEgbRrb1160rsflx4Np8Slbp6Ad8JxrWvfAcqo1V7FeBzk9YU?= =?us-ascii?q?4v48i5mRDfQFmu4D4mX30Sg190BFrr9hb/DfKT+mOy/qI1kGGQaOmvab8NWj?= =?us-ascii?q?2rsf5HeUfLqXoCbDom+37rmpRotKsAghb9uz9T2KX3YaGFEPwkXb2Bd9MqWU?= =?us-ascii?q?liXspxVQ4QBYDiPqwmaohJda4Q58G17xMXoEfiOgujOu7V4GdFl3/4gpwr3c?= =?us-ascii?q?c+HiHqm1McE+opkEzptfDxN6g0W/6T8PXi6h/mY/5UyCfmudP2VyEojvzcR/?= =?us-ascii?q?UVE4KZgQFnX0uNxlOdoKDYIxTP8vkSgnG81dpvZMyLjXwVpzNhjCKg2cYJ0Z?= =?us-ascii?q?fNt6Ar1lORpm1phYcvItugT1RnJMSpC4ZUq3SCOpFzT9k4RHs78DZ/y6cBv4?= =?us-ascii?q?a8ZjRPxY49wASKcP2IdYGU/wjuHOqQLX9+g24tZr+lhhijuXuuy+v1Uvz842?= =?us-ascii?q?pnlRZwwYOW5HkQyxze7NSGQfJh/0CnnCyCzB3X9vodfxpmjavcboY/3vs1jZ?= =?us-ascii?q?NI907KHin2n0uwl6LFEydssqDgo6yvKrnlp5rJL4ZvkUm+a/x0xom1APhwMQ?= =?us-ascii?q?UfDCCG//ym06Hu9lH0TPQCjvA/nqTD9pyPPsQavquwAgsT1ZwsoxayBjuryp?= =?us-ascii?q?IZyFEcLFNdfRuGi87uIV6GIP3xAfqlxV75tG5PyMnFN7SyZ/eFZjCL2P+pNb?= =?us-ascii?q?p+6ksZwRYr1oVZ6o9IELgFLQ=3D=3D?= IronPort-PHdr: =?us-ascii?q?9a23=3Az4DGMB1r8Fu6p0pesmDT+DJfSgsGnvDZIAcR95?= =?us-ascii?q?M7irVILvTyrYq3ZR+X7KB3l1aMRoXSsa8a2KLd5rvhXHQE7NGasXUadJEfHx?= =?us-ascii?q?NQksUXhwkpAcrDDlf0f7bxOikzHcARMT0ttznzeQAdUNqrPgCN+iPpvWZIQE?= =?us-ascii?q?a3Pwogf7nzAInOyJuo8eKYo571P0ZB2QeUfOovcBXm8DTLrYoLsKlsDf0Pmk?= =?us-ascii?q?L7gy4bHoYejSsgbRrb1xap3dq6/pNo73ZsvKAK/Jx6XKv3Zak+RrFDXho8NG?= =?us-ascii?q?VnyMT3uEviS06162MYQyAqlUhmGQ/Av3SYFt+5+mOy/qJ3jQ3DGcLPTrk9B2?= =?us-ascii?q?2O3v9IaULt0yMYPCEF4DnPssUrrqYHvDGNvDdcwq7ERIfPF+QidKPtYfA5RW?= =?us-ascii?q?ZhXOQAUC8fU6SVCulHR6JJda4Q58HkqgdSkhmxOwSWLrvi2z9G2U7n044l3M?= =?us-ascii?q?QNVl760DQHP+ozqVHQr9rTPrk0bbyf64PtwTjBfuNNiGzDzbnBXR1xu7bpP/?= =?us-ascii?q?o4OYKZgQFnXwXIh3mttau/Gy6K5/0qiViU3sREU/Cdh1w3hRt+vTmKndkou6?= =?us-ascii?q?v3moFAmRjUsCRjx4AtIsekDVR2esOgDM5IujufOpFsRdlxC3EtuTw9zKUBo4?= =?us-ascii?q?L+cTIQz45y3B/QbfWbbpKFqh7iWK6XJiswmn9/ebyuzyW88E6pzti0ZfWZ62?= =?us-ascii?q?p//XAfwNDRqnAA0QDS4cGbS/x7u12swiuLyxuKtLsWOUEz0LLFN9sk2bdr0J?= =?us-ascii?q?AasULDGSGwg0il6c3ePg1ssqDgo+jkY7CzvpaHLMc001mkbuEkm9D3AukpYU?= =?us-ascii?q?ATWXCB/vix36Hu8QyxQLhDgvAs1KWMq5DbPcESp6r/BBVamoYu4hqyFXGnhf?= =?us-ascii?q?wDnXgfKVtEfFSAlYehO1zHLP3iS/3qpw2Inw5ozvmVW9+pSt2FZjCL2LvifL?= =?us-ascii?q?M44lJE0181wM1D/ZtQBw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0HQBACyGp5dbUtDioBlHAEBAQEBBwE?= =?us-ascii?q?BEQEEBAEBgXuCGwViYB0SKoNjQIkChVqCD4Nuly4TAQEBAQEBAQEBCBgVAgE?= =?us-ascii?q?BAYEDhg4jOBMCAQIJAQEBAwEBAQIBBQIBAQICEA0LCQYrhTQMhDCBMz0BAQE?= =?us-ascii?q?BAgEBAgkXDwEFCAEBNwEFCQEBCAIVAwICJgICA1QGDQYCAQEBgx2CWCAElGy?= =?us-ascii?q?afXWBMoJ9AQEFgQOBRoNmgQYJgQwoinGBHYIXgTiCaz6HUoJejQUBgjKGEok?= =?us-ascii?q?KjhVUCg2CH4YmhXqIcyGCOodOjzgtozuEI4ExOIF7M0qDL1AQFIFPDBcViE+?= =?us-ascii?q?FQXKBBQM7j1gBAQ?= X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0H0AwCKFJ5dfU1DioBlHAEBAQEBBwE?= =?us-ascii?q?BEQEEBAEBgXsCghlnYB0SKoNjQIkCh2mDbpcuEwEBAQEBAQEBAQgYFQIBAQG?= =?us-ascii?q?BA4YxOBMCAQIJAQEBAwEBAQIBBQIBAQICEAEBCRYIhV0MQgEQAYNcgTM9AQE?= =?us-ascii?q?BAQIBAQIJFw8BBQgBATcBBQkBAQgCFQMCAiYCAgNUBg0GAgEBAYMdglggBJR?= =?us-ascii?q?omn11gTKCfQEBBYEDgUaDaIEGCSBsKAGKcIM0gTiCaz6HUoJejQUBgjKGEok?= =?us-ascii?q?KjhVUCg2CH4YmhXqIcyGCOodOjzgtozuEI4ExOIF7M0qDL1AQFIFPDBcViE+?= =?us-ascii?q?FQXKBBQM7iH6GWgEB?= X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0GCAgBnDZ5dh0O0hNFlHAEBAQEBBwE?= =?us-ascii?q?BEQEEBAEBgXuCG2WBECqDY0CJAoVagg8Ug1qXLhMBAQEBAQEBAQEgFAECAQE?= =?us-ascii?q?BgQOGDiM4EwIBAgkBAQEDAQEBAgEFAgEBAgIQAQEBCgsJCCmFNAyEMIEzPQE?= =?us-ascii?q?BAQECAQECCRcPAQUIAQE3AQUJAQEIAhUDAgImAgIDVAYNBgIBAQGDHYF8DwS?= =?us-ascii?q?Udpp8dYEygn0BAQWBA4FGg2iBBgmBDCiKcYEdgheBOIJrPodSgliNBQGCMoY?= =?us-ascii?q?SiQqOFVQKDYIfhiaFeohzIYI6h06POC2jO4VUOIF7M0qDL1AQFIFPDBcViE+?= =?us-ascii?q?FQUExgQUBAQE7kyIBAQ?= X-IPAS-Result: =?us-ascii?q?A0HQBACyGp5dbUtDioBlHAEBAQEBBwEBEQEEBAEBgXuCG?= =?us-ascii?q?wViYB0SKoNjQIkChVqCD4Nuly4TAQEBAQEBAQEBCBgVAgEBAYEDhg4jOBMCA?= =?us-ascii?q?QIJAQEBAwEBAQIBBQIBAQICEA0LCQYrhTQMhDCBMz0BAQEBAgEBAgkXDwEFC?= =?us-ascii?q?AEBNwEFCQEBCAIVAwICJgICA1QGDQYCAQEBgx2CWCAElGyafXWBMoJ9AQEFg?= =?us-ascii?q?QOBRoNmgQYJgQwoinGBHYIXgTiCaz6HUoJejQUBgjKGEokKjhVUCg2CH4Ymh?= =?us-ascii?q?XqIcyGCOodOjzgtozuEI4ExOIF7M0qDL1AQFIFPDBcViE+FQXKBBQM7j1gBA?= =?us-ascii?q?Q?= X-IPAS-Result: =?us-ascii?q?A0H0AwCKFJ5dfU1DioBlHAEBAQEBBwEBEQEEBAEBgXsCg?= =?us-ascii?q?hlnYB0SKoNjQIkCh2mDbpcuEwEBAQEBAQEBAQgYFQIBAQGBA4YxOBMCAQIJA?= =?us-ascii?q?QEBAwEBAQIBBQIBAQICEAEBCRYIhV0MQgEQAYNcgTM9AQEBAQIBAQIJFw8BB?= =?us-ascii?q?QgBATcBBQkBAQgCFQMCAiYCAgNUBg0GAgEBAYMdglggBJRomn11gTKCfQEBB?= =?us-ascii?q?YEDgUaDaIEGCSBsKAGKcIM0gTiCaz6HUoJejQUBgjKGEokKjhVUCg2CH4Ymh?= =?us-ascii?q?XqIcyGCOodOjzgtozuEI4ExOIF7M0qDL1AQFIFPDBcViE+FQXKBBQM7iH6GW?= =?us-ascii?q?gEB?= X-IPAS-Result: =?us-ascii?q?A0GCAgBnDZ5dh0O0hNFlHAEBAQEBBwEBEQEEBAEBgXuCG?= =?us-ascii?q?2WBECqDY0CJAoVagg8Ug1qXLhMBAQEBAQEBAQEgFAECAQEBgQOGDiM4EwIBA?= =?us-ascii?q?gkBAQEDAQEBAgEFAgEBAgIQAQEBCgsJCCmFNAyEMIEzPQEBAQECAQECCRcPA?= =?us-ascii?q?QUIAQE3AQUJAQEIAhUDAgImAgIDVAYNBgIBAQGDHYF8DwSUdpp8dYEygn0BA?= =?us-ascii?q?QWBA4FGg2iBBgmBDCiKcYEdgheBOIJrPodSgliNBQGCMoYSiQqOFVQKDYIfh?= =?us-ascii?q?iaFeohzIYI6h06POC2jO4VUOIF7M0qDL1AQFIFPDBcViE+FQUExgQUBAQE7k?= =?us-ascii?q?yIBAQ?= X-IronPort-AV: E=Sophos;i="5.67,277,1566885600"; d="scan'208";a="414272376" X-IronPort-AV: E=Sophos;i="5.67,277,1566885600"; d="scan'208";a="369220954" X-IronPort-AV: E=Sophos;i="5.67,276,1566885600"; d="scan'208";a="369158236" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-Original-Recipients: gasiewsk@o365.colorado.edu X-Original-Recipients: migi9492@g.colorado.edu Authentication-Results-Original: pio-pvt-msa3.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=L1LgQkaa; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Subject: Re: [PATCH v4 3/9] mm: pagewalk: Don't split transhuge pmds when a pmd_entry is present To: "Kirill A. Shutemov" Cc: "linux-kernel@vger.kernel.org" , "linux-mm@kvack.org" , "torvalds@linux-foundation.org" , "Thomas Hellstrom" , "Matthew Wilcox" , "Will Deacon" , "Peter Zijlstra" , "Rik van Riel" , "Minchan Kim" , "Michal Hocko" , "Huang Ying" , =?utf-8?B?SsOpcsO0bWUgR2xpc3Nl?= References: <20191008091508.2682-1-thomas_os@shipmail.org> <20191008091508.2682-4-thomas_os@shipmail.org> <20191009152737.p42w7w456zklxz72@box> From: "=?UTF-8?Q?Thomas_Hellstr=c3=b6m_=28VMware=29?= " Organization: VMware Inc. Message-ID: <467a4a34-27be-8f46-2c9a-c5b335d11438@shipmail.org> Date: Wed, 9 Oct 2019 18:20:21 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20191009152737.p42w7w456zklxz72@box> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-Language: en-US List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-MS-Exchange-Organization-ExpirationStartTime: 09 Oct 2019 18:03:06.8484 (UTC) X-MS-Exchange-Organization-ExpirationStartTimeReason: OriginalSubmit X-MS-Exchange-Organization-ExpirationInterval: 1:00:00:00.0000000 X-MS-Exchange-Organization-ExpirationIntervalReason: OriginalSubmit X-MS-Exchange-Organization-Network-Message-Id: 4c103012-5376-4657-1f3f-08d74ce2eff7 X-EOPAttributedMessage: 0 X-MS-Exchange-Organization-MessageDirectionality: Originating X-Forefront-Antispam-Report: CIP:128.138.128.232;IPV:NLI;CTRY:US;EFV:NLI;SFV:SKN;SFS:;DIR:INB;SFP:;SCL:-1;SRVR:CY4PR03MB3397;H:ipmx2.colorado.edu;FPR:;SPF:None;LANG:en;;SKIP:1; X-MS-Exchange-Organization-AuthSource: BY2NAM01FT032.eop-nam01.prod.protection.outlook.com X-MS-Exchange-Organization-AuthAs: Anonymous X-OriginatorOrg: colorado.edu X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4c103012-5376-4657-1f3f-08d74ce2eff7 X-MS-TrafficTypeDiagnostic: CY4PR03MB3397:|CY4PR03MB3397: X-MS-Exchange-Organization-SCL: -1 X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-Microsoft-Antispam: BCL:0; X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2019 18:03:06.1129 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4c103012-5376-4657-1f3f-08d74ce2eff7 X-MS-Exchange-CrossTenant-Id: 3ded8b1b-070d-4629-82e4-c0b019f46057 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3ded8b1b-070d-4629-82e4-c0b019f46057;Ip=[128.138.128.232];Helo=[ipmx2.colorado.edu] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB3397 X-MS-Exchange-Transport-EndToEndLatency: 04:21:00.9747523 X-MS-Exchange-Processed-By-BccFoldering: 15.20.2347.014 X-Microsoft-Antispam-Mailbox-Delivery: ucf:0;jmr:0;ex:0;auth:0;dest:I;ENG:(750127)(520002050)(944506383)(944626516); X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?fxE8TbdvtFqA1KWa/28zAMuMV+jTUKJKQ+jBSHv0sjcdIK+XtUMd3YOeP/sX?= =?us-ascii?Q?2vbNOeEyYDj4zt7/jji58RNzeTAQSzRVyOytUwx/ly+fB3QtI1O+PyXTqa0/?= =?us-ascii?Q?ypRukbHwEmTAYXD0dbqTpAExQZjGOR9cYdfk+KOkQA8rEBrbdaQjGH5uvwlL?= =?us-ascii?Q?6IOuhytEX6xoXnH+VPu1LM58k7iQNUdkQ9eex3p/rh/qQcUu0bZFRBVLEDvo?= =?us-ascii?Q?6Ys3iEZQkSg5zUcOYm4UYvfF+cLQ2tCEok401PyEieU+I27X05HK2acRzWQR?= =?us-ascii?Q?H5IXaH9oan4qG1I3jpb+/aiOcCTDM/pjXXqFDdGQ0vlRYxjmx+3nozJstnFv?= =?us-ascii?Q?L4Ftk/FC49kHKFv61+nPdNXgIGNt3jgSy4kPClfLqLj3k1re7gtJ+SbnttAt?= =?us-ascii?Q?Q8NtXCTctKHJSTjwlODoeq5z4qOy10TdHZ339sq2Apa1djiF+radg0db0aGS?= =?us-ascii?Q?T3RpjI32NrrP6GT2Gq9yENu19unKZzJi+OsC7MJbA9hxHicGtQb0XwO6lzej?= =?us-ascii?Q?Y4glG8PXZviYZKV8NBQiQxbnA5VOqdK8X7Fyco2C0PqHK+9y78E4JrzTUwoD?= =?us-ascii?Q?GmaHQxxhuhdKEmHSAaYgyE9iKFTPZ9LtjMj9IEflO8ZjaXbEMKkJYJJmfAkl?= =?us-ascii?Q?4i9SImPFCst9IMBuU0sZB7ctPKFOZwf1v5yewLmCeZi+NiCxIa7jC1em3jM3?= =?us-ascii?Q?r9A9Wt5YRYQc+Z+lUGsogze2O8134KEbTiAg+23vTjv4DFASMlA3IjfkwXwV?= =?us-ascii?Q?ei25t5occ+Z/zSYz0a9sESosT4okH7xvBVBMnr4hSQYWzs0s0iqHcEeoZHUk?= =?us-ascii?Q?Ji8L1rSXHT9yXBKtbubSRbLWDqLW+TetchMSxZrNbH0FHmVCY8CCul4Wu70f?= =?us-ascii?Q?zEQxRi26LBiJebw4I58qwkIFbtq/agN1RX5QZoj7U6Il4lKNv7+pc+2z0rbz?= =?us-ascii?Q?FapuPQpTq/BuGdotj3yHQ9b93WR6aRgMkqdXrG4GHTATlZHKYIMOcQ4S/nlT?= =?us-ascii?Q?ymKSjrYHZKDUZKQ90cJVW6PZzyMVVY+3NdvghF+ZVW4P6YU11H1tNjRh3Dm6?= =?us-ascii?Q?iOSBmyGbelQhaih9gRc/FFo48znzow7HSJLCxYb0u/0nC76r9kE=3D?= 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: Message-ID: <20191009162021.wWrVgq4fQPT_f0apCC78hmx509rM_YymkaqwmPQD4VY@z> Hi, Kirill=2E Thanks for reviewing=2E On 10/9/19 5:27 PM, Kirill A=2E Shutemov wrote: > On Tue, Oct 08, 2019 at 11:15:02AM +0200, Thomas Hellstr=C3=B6m (VMware) = wrote: >> From: Thomas Hellstrom >> >> The pagewalk code was unconditionally splitting transhuge pmds when a >> pte_entry was present=2E However ideally we'd want to handle transhuge p= mds >> in the pmd_entry function and ptes in pte_entry function=2E So don't spl= it >> huge pmds when there is a pmd_entry function present, but let the callba= ck >> take care of it if necessary=2E > Do we have any current user that expect split_huge_pmd() in this scenario= =2E No=2E All current users either have pmd_entry (no splitting) or pte_entry= (unconditional splitting) > >> In order to make sure a virtual address range is handled by one and only= >> one callback, and since pmd entries may be unstable, we introduce a >> pmd_entry return code that tells the walk code to continue processing th= is >> pmd entry rather than to move on=2E Since caller-defined positive return= >> codes (up to 2) are used by current callers, use a high value that allow= s a >> large range of positive caller-defined return codes for future users=2E >> >> Cc: Matthew Wilcox >> Cc: Will Deacon >> Cc: Peter Zijlstra >> Cc: Rik van Riel >> Cc: Minchan Kim >> Cc: Michal Hocko >> Cc: Huang Ying >> Cc: J=C3=A9r=C3=B4me Glisse >> Cc: Kirill A=2E Shutemov >> Suggested-by: Linus Torvalds >> Signed-off-by: Thomas Hellstrom >> --- >> include/linux/pagewalk=2Eh | 8 ++++++++ >> mm/pagewalk=2Ec | 28 +++++++++++++++++++++------- >> 2 files changed, 29 insertions(+), 7 deletions(-) >> >> diff --git a/include/linux/pagewalk=2Eh b/include/linux/pagewalk=2Eh >> index bddd9759bab9=2E=2Ec4a013eb445d 100644 >> --- a/include/linux/pagewalk=2Eh >> +++ b/include/linux/pagewalk=2Eh >> @@ -4,6 +4,11 @@ >> =20 >> #include >> =20 >> +/* Highest positive pmd_entry caller-specific return value */ >> +#define PAGE_WALK_CALLER_MAX (INT_MAX / 2) >> +/* The handler did not handle the entry=2E Fall back to the next level = */ >> +#define PAGE_WALK_FALLBACK (PAGE_WALK_CALLER_MAX + 1) >> + > That's hacky=2E > > Maybe just use an error code for this? -EAGAIN? I agree this is hacky=2E But IMO it's a reasonably safe option=2E My=20 thinking was that in the long run we'd move the positive return codes to=20 the mm_walk private and introduce a PAGE_WALK_TERMINATE code as well=2E Perhaps a completely clean and safe way would be to add an "int=20 walk_control" in the struct mm_walk? I'm pretty sure using an error code will come back and bite us at some=20 point, if someone just blindly forwards error messages=2E But if you=20 insist, I'll use -EAGAIN=2E Please let me know what you think=2E Thanks, Thomas