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 BDC4BC4332F for ; Sat, 11 Nov 2023 09:50:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D20BC8D000A; Sat, 11 Nov 2023 04:50:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CA7F58D0003; Sat, 11 Nov 2023 04:50:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B48628D000A; Sat, 11 Nov 2023 04:50:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id A1AAC8D0003 for ; Sat, 11 Nov 2023 04:50:04 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7358FC119D for ; Sat, 11 Nov 2023 09:50:04 +0000 (UTC) X-FDA: 81445202328.23.A17908B Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf02.hostedemail.com (Postfix) with ESMTP id AB2388000A for ; Sat, 11 Nov 2023 09:50:00 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=none; spf=pass (imf02.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1699696202; a=rsa-sha256; cv=none; b=HX3uyIlXiktdi0fIafyaIl4qx66ykYMWrUukPfepFEiDJ9CXljcQgGXAklJqJcNq+mIgwD bipKtZ+jtt4bgn6M0Zn+QduPwVYQZhMWoYkzUclCW8j906tRstXq13UFhCUpx8rUAEs3BK wVAUo7MffYXpcOqUFkX/jDFD2QUbZ7w= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=none; spf=pass (imf02.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1699696202; 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; bh=1ffvg4gn1AzBpYecy1liLL5GGcm1Fdc8ETNN9TRfyR0=; b=3Cu72qLOSRslQN7vYU6+Fc6VX+2T8vKAfFbPmpqODIrLfTff7mE9nTFMHszv9XuVwe9N/g RaJEzEklyuamKKmjyAKnLeFuFuz3OG/dXruvu9+Wr18RhQXakwQOozVQRP02WRrHL/uTmv CENorZvqf1gPGKvQzSrfjgB62Zpep3A= Received: from dggpemm100001.china.huawei.com (unknown [172.30.72.57]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4SS9nC6cDQzrT1b; Sat, 11 Nov 2023 17:46:23 +0800 (CST) Received: from [10.174.177.243] (10.174.177.243) by dggpemm100001.china.huawei.com (7.185.36.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Sat, 11 Nov 2023 17:49:38 +0800 Message-ID: <438ba640-c205-4034-886e-6a7231f3d210@huawei.com> Date: Sat, 11 Nov 2023 17:49:38 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 3/7] fs/proc/page: respect folio head-page flag placement Content-Language: en-US To: Matthew Wilcox CC: Andrew Morton , , , David Hildenbrand , Gregory Price References: <20231110033324.2455523-1-wangkefeng.wang@huawei.com> <20231110033324.2455523-4-wangkefeng.wang@huawei.com> From: Kefeng Wang In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpemm100001.china.huawei.com (7.185.36.93) X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: AB2388000A X-Stat-Signature: r5mr7whc451kgsfjapcpnur6pqicaf1i X-HE-Tag: 1699696200-670243 X-HE-Meta: U2FsdGVkX1+UTTKmIIJfNEsxy4UHdvszCBMApLLTbNfjl1iGgGUC7JV+rpHECwey/Gc/ywvipaCIrDX09EteGiaj2MrAblFf8lOJy3drBYSmdcl7UhvYRaygfi00EQ7UDcp+jcj0hQEB5bev33RwoHoDwbpkRNVX9x1DSo53f2deUYCF2CaSihKIcAgcmBRWPi+f/7REuww98o0yyONn68n99uEWAbUf5XaUHwsENrx1UindN8b9xLrkp1h79+RZe1oejmt8L/JCY0lxZ1iYMcXN++OA2ZJUvBCMUUNO4vXsELrHW4rnOU3H2B+3Yo3Cg21cigTapJZF4FZ6aXmi+rEpkcD/AL76AV0C7laWLIhbEnlCVSUMjNV3+Eog/7eejbMoqI+n1HNOuchFXToGxMy5WQAxtUrXW+g7fySipHgLpIR7QraViZHZvozAZLDZkxEIccOtD8J9FVgoKeQ9FAqWrx7ZCoxRdVbfIlHQqhIVaKrzg3dmN/LYEiggjj28A/2Lt/T+Mc+8rdbnRCvBxP8kjRG34DydAhOdcf7wNNedS21Ll0Y33Gh8Eio/d4pv8hVQA1+F8RY9bZVd1MmM8cM6QgSaAZmEFdO3GPKGWhxh+l9JGWz6ZKhMo8TyH7ug21DVULjaqLcRlVXVfuQwFImjiQMxry9Y00Z55eMNCIFqnT/ArWp+dP1fVd5N4UyBIsKqLD0V4LzS30LHxkYTBz8hNQ/tletuEyOa1R0JCMZr4jyokcbHhcXC/b9yZaCN9C8f/MM3CtcjH2Dy9uA2sATUd7xQeHAv5pUCzSUdMxtMCAeEGt7uMdw0cHwNN8I9uv/YQyXSvo9TyQXKmX5oDRMmVXt1THjs2CKBt5vWi1m4rVBy+zrJlP4OwLPayGZvkxKaCjGFk5owNeXXLI8BjGgLLA3r9OSf1iCyERVqTNr8T7EgKC3BjKv7JgzBvT5TY0yX2SVtCUqNSrG+c3c knMirSuN y5C4L/MQ50/HFeI46zI+GginaSIQgJP9v5aMqRLPLfcU+9i8vBGlOWKCIjF4qeKkf0NhKiZVqXk3GLF0ndpMIhsHtRfoW2IEYSmDDWJQeO6uTz+vemx7I5RxwWwR+Y240l+oEIfYTbibn70ecrItUIYyWuSDS3z296iZrN3pcDvM1XVV/o9WBRCHVvK33n79Jb1uAUu7ML8vWdRNEgq59T+wl6XHzPu5qKxyME75n8v4ITfMx4mFqyMAwIsK10uZvtcLwZ3ubqnJ/9jjkKa8LjFmArtPOC5LEV7uA5Eh0dKlIVJEdAIezMoLTcA== 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 2023/11/11 2:19, Matthew Wilcox wrote: > On Fri, Nov 10, 2023 at 11:33:20AM +0800, Kefeng Wang wrote: >> kpageflags reads page-flags directly from the page, even when the >> respective flag is only updated on the headpage of a folio. >> >> Since most flags are stored in head flags, make k = folio->flags, >> and add new p = page->flags used for per-page flags. > > You'd do better to steal Greg's commit message. Sure > >> Originally-from: Gregory Price >> Suggested-by: Matthew Wilcox >> Signed-off-by: Kefeng Wang > >> @@ -202,7 +202,7 @@ u64 stable_page_flags(struct page *page) >> u |= kpf_copy_bit(k, KPF_MLOCKED, PG_mlocked); >> >> #ifdef CONFIG_MEMORY_FAILURE >> - u |= kpf_copy_bit(k, KPF_HWPOISON, PG_hwpoison); >> + u |= kpf_copy_bit(p, KPF_HWPOISON, PG_hwpoison); > > This is correct. > >> @@ -211,13 +211,13 @@ u64 stable_page_flags(struct page *page) >> >> u |= kpf_copy_bit(k, KPF_RESERVED, PG_reserved); >> u |= kpf_copy_bit(k, KPF_MAPPEDTODISK, PG_mappedtodisk); >> - u |= kpf_copy_bit(k, KPF_PRIVATE, PG_private); >> - u |= kpf_copy_bit(k, KPF_PRIVATE_2, PG_private_2); >> - u |= kpf_copy_bit(k, KPF_OWNER_PRIVATE, PG_owner_priv_1); >> + u |= kpf_copy_bit(p, KPF_PRIVATE, PG_private); >> + u |= kpf_copy_bit(p, KPF_PRIVATE_2, PG_private_2); >> + u |= kpf_copy_bit(p, KPF_OWNER_PRIVATE, PG_owner_priv_1); > > This is not. PG_private is not, I believe, set on tail pages. > Ditto the other two. If you know differently ... ? k = folio->flags, p = page->flags as PG_private/private_2/owner_priv_1 use PF_ANY page policy, so they should per-page check, confused... See checked page flags, PG_error PF_NO_TAIL PG_dirty PF_HEAD PG_uptodate PF_NO_TAIL PG_writeback PF_NO_TAIL PG_lru PF_HEAD PG_referenced PF_HEAD PG_active PF_HEAD PG_reclaim PF_NO_TAIL PG_swapbacked PF_NO_TAIL PG_unevictable PF_HEAD PG_mlocked PF_NO_TAIL PG_hwpoison PF_ANY PG_uncached PF_NO_COMPOUND PG_reserved PF_NO_COMPOUND PG_mappedtodisk PF_NO_TAIL PG_private PF_ANY PG_private_2 PF_ANY PG_owner_priv_1 PF_ANY above part has 4 types, 1) PF_HEAD - should use k 2) PF_ANY - should use p 3) PF_NO_TAIL - PageXXX will check head page flags, so suppose to use k, but here use bit check, I wonder it should use p? 4) PF_NO_COMPOUND - should per-page check > >> #ifdef CONFIG_ARCH_USES_PG_ARCH_X >> - u |= kpf_copy_bit(k, KPF_ARCH_2, PG_arch_2); >> - u |= kpf_copy_bit(k, KPF_ARCH_3, PG_arch_3); >> + u |= kpf_copy_bit(p, KPF_ARCH_2, PG_arch_2); >> + u |= kpf_copy_bit(p, KPF_ARCH_3, PG_arch_3); >> #endif > > I also don't think this is correct, but there are many uses of > PG_arch* and I may have missed something. > And 3 arch page flags, PG_arch_1 - PG_dcache_clean, from achetlb.rst, I think it is per-folio, use k PG_arch_2 - only arm64 mte, PG_mte_tagged PG_arch_3 - only arm64 mte, PG_mte_lock the two PG_arch only used by arm64 mte, they are per-page flag, use p Correct me if I am wrong, thanks.