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 8B52EE7717B for ; Sat, 7 Dec 2024 16:20:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 045926B0330; Sat, 7 Dec 2024 11:20:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id F37BE6B0331; Sat, 7 Dec 2024 11:20:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D8A366B0332; Sat, 7 Dec 2024 11:20:35 -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 B302F6B0330 for ; Sat, 7 Dec 2024 11:20:35 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 687CD141E0E for ; Sat, 7 Dec 2024 16:20:35 +0000 (UTC) X-FDA: 82868675862.14.0143073 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2061.outbound.protection.outlook.com [40.107.236.61]) by imf01.hostedemail.com (Postfix) with ESMTP id 9420340007 for ; Sat, 7 Dec 2024 16:20:18 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=Y53HCQH1; spf=pass (imf01.hostedemail.com: domain of ziy@nvidia.com designates 40.107.236.61 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1733588420; 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=bPk/2sgajBVZO4HKLpBilBdqaMtS5wPzsyukQTP7au0=; b=pyQjPmuombdrp/Bs5yoYWWtIBl/qN0bzbjBm6Yqjy09kYSm8mnzfU0CbIY8EyD+tEbrB+8 pQvDUAec63hYAD/0lr4XtHuH9NjiRswMBsVDO3k8VeSsvlrccPZS6+FXR3tuHmJ9ZOwP/P D8Gj28aTEveVMfCRHo4D/hEOIk6q8CM= ARC-Authentication-Results: i=2; imf01.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=Y53HCQH1; spf=pass (imf01.hostedemail.com: domain of ziy@nvidia.com designates 40.107.236.61 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1733588420; a=rsa-sha256; cv=pass; b=EETeZURU19cHT3W+FeULf/pQndpJXhXHKCbCmx6zzOfh49PljNC3ADxxrDdq1IE3+a1Xpj 1138bKLaiuXTjryRPz3eOctWPHzusJ7IQlP418kBLAf5AkKa/cLEkFiKKyKqHTU1Q+caxa S+UDiLhQBiFXe+ulKwHlz+nTIXP26OI= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kzNH1E4tBdpwh99l+KOI4POjjOFqmtkVxq5husOFRZejqhpcfGThAu2F/YxPF9/9SWgpCxkpFi6b7o5KkCx2kOvgh3sKGiFIy7CQ8JOqGVJy2BVLN513UltntDI4WBwiAOMjFd7BSnPluZN60biiwsLtm3mGM7a2yvBZSchEiaJkRRb/Zq+cRbSs0RREC19PBVvSnJGsFMblnHxP3v5mIpaOg1w+zfFwuzx4qlrd5x+qFAvRNzBwtjKThhOge6nI9akTomkJdEYTl+Bwm7l5G5c4t+oUz3bO0iFL1l1hNh6dpxFfL74JbNe4ooh7ppUSCL6ek8crMUJ+wWrf6Gk30w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bPk/2sgajBVZO4HKLpBilBdqaMtS5wPzsyukQTP7au0=; b=vLEvr1gzkyoo2TtNFv7rXkzLw9Obe4+WD8G+7IJrpjXGz1x9ai3/c49wJfgcEqt497LpA248x3x/f5d47PHNTg+ys8Pz3UsCL4fFZMXn++hwwin00e3mevSXt0q4MPQJcvPZZLe7bQKInniUeIFWJ18lvC/vrCQ+xWiNzIyxczbjuij1N7//PMsZqsXsa2kvCLm2OWUrL6p06ZmXNGXoQQOGXA6s3lyGFt5nSxvzePFzIPAWlvWUXsRHPPnuwvjuer0YTkPICN/Hw7fcMe9SbxM+uPW1lpwMi0yI1HoQKDZ2MVtlpAidIixy2UFq39rlZua7R5QT2sazK9a7zCbuqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bPk/2sgajBVZO4HKLpBilBdqaMtS5wPzsyukQTP7au0=; b=Y53HCQH1gr49cG7gvgQsNIHrFSvqy2AjY++7drPh+hEuDg8J1RMYOHcJr26pgmzxWjoXmQad3E1NNRUxVn3Y1trRw5RTLBLKY2aVfxmYL0H0oYsCXVtUzQqwrdVhJNWdpbAyvlQNgDIW1XFkvyqqDEG9tjx2g4fEE9BwguaDyPR6Z7Y7WpZp0trIW02ouT9VttfekbdkVQ+cGyKSaSCRcuQxD059AuZU/sNamXWUkOGy1bo8702pOhJ1XtNIbLWDXnLurJyBvw+Xqqj+5eT3FKuo4/L2K6FjSDBFbYLZkI45fDdLMkvl6A73O6GdGAKTajbvvsi0DBBfjFYi7+lg8w== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by IA1PR12MB6411.namprd12.prod.outlook.com (2603:10b6:208:388::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8207.18; Sat, 7 Dec 2024 16:20:28 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%3]) with mapi id 15.20.8230.016; Sat, 7 Dec 2024 16:20:27 +0000 From: Zi Yan To: Mathieu Desnoyers Cc: linux-mm@kvack.org, Andrew Morton , Geert Uytterhoeven , Vlastimil Babka , David Hildenbrand , "Matthew Wilcox (Oracle)" , Miaohe Lin , Kefeng Wang , John Hubbard , "Huang, Ying" , Ryan Roberts , Alexander Potapenko , Kees Cook , Vineet Gupta , linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: Re: [PATCH v2] mm: use clear_user_(high)page() for arch with special user folio handling Date: Sat, 07 Dec 2024 11:20:24 -0500 X-Mailer: MailMate (1.14r6065) Message-ID: <34C615C1-E1CB-4D8B-81D2-79CE7672930D@nvidia.com> In-Reply-To: References: <20241206174246.2799715-1-ziy@nvidia.com> Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0439.namprd13.prod.outlook.com (2603:10b6:208:2c3::24) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|IA1PR12MB6411:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d543b2f-6ccb-476f-d39c-08dd16db0f69 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lmaSiY1xohjQrQfYItr8JrorBVA0jEhhyZwcPCERIgQXAYSD243f3A5Q04Hk?= =?us-ascii?Q?8gcSDuFgvTL5eJNUCAuKs46KE/D1DTnSvmBelvtv9296Wiyvi4bJE0tYrA4u?= =?us-ascii?Q?1W4PKKV6HjFTW3Q+5JrXQf1TmvMXiSEsGWnrscqV2xnwlnVyEbgPGUYnf8Zn?= =?us-ascii?Q?vITiGFJiMyTd98ZLVAg77+IMsoG5LNdWTGUSzzsvfvsRii4k2ID0V0bAmRe6?= =?us-ascii?Q?4T9/b6xXyXS3oMOhPgPJXViLGFYNqESOBdBTzqgXvxhfx1Dwz2ePDkjDsA2H?= =?us-ascii?Q?J0mj+7v9+yveQHx4CO62zSGfwc8aJa0/JSSy7lngIyZcAHQ/DYe/GjuxQQgQ?= =?us-ascii?Q?BIaFo0jeXCuIHguE93g1ge43yFPJuUSHXv9U/vdOFMSJd8anCSZ3SysHMakC?= =?us-ascii?Q?TwsLn2zGzOxXRI/Arver+bO5qgBA3zyeqhluJhP7u+CjlC29uIOaHf0DILJt?= =?us-ascii?Q?QmeX9K7M0f90Fq7OcVCvFm1xvijhb7ae2nMpfKJX0OaFKnKsSG7igWqeA5jm?= =?us-ascii?Q?ZrADRB0ZkkcPQ/8bC1deIHGqjctxzch2C8+8mXEa7TlEyQksOHUY7+AiA8tf?= =?us-ascii?Q?fwwzdAcrwVLAmd2hhzA1WO9+ul7ckp8poZOQ3LqYIvPTepljTgcpYrVvS2Fw?= =?us-ascii?Q?/X2bRII9cFEKGrLB0yaEFwIC5tAx5LnhY6Rw4c6C1zTsOmwn7B9jJ/8W1g10?= =?us-ascii?Q?/pyHYlUtOI86rznhwCGtykpOnKQpa+D86641GqmB6zmM3nNEtpS2kvNS8aEW?= =?us-ascii?Q?pm1EmfWI4mYvRHvdHgwhU7u+NMXzWnVF5CE3uiyIZ84Pbh3C7RFYcKyH55en?= =?us-ascii?Q?nlrA1Ob58DgLF9rdzfelHxchE70LME002rQwjCuxSBADPQgHoNyISRev2Ubh?= =?us-ascii?Q?JL0M+DP+T2fq7acIM7dku7IbPxHHqe03F9n9UrakNsIWV8zrUEo6QHjHvD5d?= =?us-ascii?Q?2mJrWzko0RD14VMVAB0zKXFqqZSsQTRIAjm/CblSB7OcxJsYJM0/xjKckpWn?= =?us-ascii?Q?H22/8cWVjiDAYxA6Q8hTU4YXHM2hB8y8MYlLmt/e+BBlOfRKwo1gcHaQxKrU?= =?us-ascii?Q?Q7BH7jNpot1kZTdbEAZdE5jjKSi9P6FlVOGGVfqZve9/ddpPWfNMrp6Vf97X?= =?us-ascii?Q?DxjZpCR3kopewuqFziiEJzMYmrdWSFI04QtZ/4bi25lmFOOj6YyowJPsPxiK?= =?us-ascii?Q?L9ZOmSx5rEJgHB6fXIReJFVk6tnzpsVGaWY4xvZab9nt99zJjx+wwd5mHwWA?= =?us-ascii?Q?lS86THkpDmSaJ5ExVLpA1eBHV0tbWs/LdIQ6yKAObFxv9VyWhxhPCausd9Oz?= =?us-ascii?Q?jRqtwFxd4By38XrkFLeGZViVzYtAXttgjXXjlHIGaAukA954UeWUe55sZLhD?= =?us-ascii?Q?KFy0w4c=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1JSypMLxcrrEZcx4FaxDR0CzagPwK17eSdmPpLsHPCkaf770CQbnq8s/tpFi?= =?us-ascii?Q?cMbevHidz8Yz9wbiNICrcWCG02QJr1Z/y74YoQjGY5GNmIXuj/r+OF6r2wjI?= =?us-ascii?Q?NGJPlSDL5GrDZErsGhxwgvw7/9f9p89V8/S+Z8Swey9kxa9oUSnZ405rMF62?= =?us-ascii?Q?NYDUcrZFOS5vR0T9SXEWI2lziPADg+qpmeEZKnQbXVaWpLS71puG++/aIqK+?= =?us-ascii?Q?x0crpqOaxWjPsS3A7FDGgGfxzbOVgRY8kOpaSZ23mZv0JEo44oLfuJ7vgXfz?= =?us-ascii?Q?1oPWrBq2vyqmy3qspa7o6mWH23RH2k2nw+NmiIGkqoMwCM8INFTBR99aRc/v?= =?us-ascii?Q?TPLft80AvLpmYtY2StmStE8GpHpv2Pg2YGn2XbrF9h037kXn6GR49lngaN9W?= =?us-ascii?Q?tpquFhTcLy7z9Oejr6gn43OaFzWgY2+xEBnjlKQKNj453LFAUf9U7FeXuOG3?= =?us-ascii?Q?PxPXEY5s31cebJd5ngxMh09zcg53pY/zsdDOiyR8wqOsQSkwjZrhv3yXQs0c?= =?us-ascii?Q?ovC98ZojovClGzeTVLMKetuVNKjHd6cYPZnHzCFMFoDNSzsUed73OrA8U9l8?= =?us-ascii?Q?yUJmhoKKS89N8N/VN1Zoc39M7VMgpwth9VsPpl+wsalwGb3Tlu/020LLjAJm?= =?us-ascii?Q?gpHi/LPvM0++BlAfdkN1m9LDP+oUNGYu5OpLpm6RVrCYL8+Ms9z6/cTcb/6C?= =?us-ascii?Q?7h9Zro8O4eVb1EizkdE79opHpaCEoGl3LTFmQvrYTsewLOvi/KqpknvdqAZC?= =?us-ascii?Q?DzQd6CABOvXNBaXHKXEDrH8tHe97k0cMp+UHJXCqMKGQocg254ruDqrpzDpT?= =?us-ascii?Q?8dF6dCTuTF9yDqhg32qHaOgFnB0JdJ0a+MJGdA4sV8yHfcJTok5kTyrNyo7t?= =?us-ascii?Q?rIOLPLLhI4zq1+W0Zal/otZcw7vJcGm3yITym6a2PhXrSL3G9B2t5XeiC11W?= =?us-ascii?Q?YrjRnOQAknTkZqSWxpwyGPo3Hk/k920fT5OwDcfrWwFuctmFT0jBCb+IxkpZ?= =?us-ascii?Q?eeMbIfj8Zmdf3lDBE3Pf+eFm7EIHt3KkmcxFwBgfJNDDYnRl2e6EgKjVOwhK?= =?us-ascii?Q?tpCb7hPSEdFjzVqyM4V/rPH4MR4g4dAyrsjycX4f6tB8iKGB6LmuShiKZUtU?= =?us-ascii?Q?8di1y6Vx8jPNCIzQDhrVQYik/wmooce9aFvrT14kaStBsDVYq7JIiBLDpQpZ?= =?us-ascii?Q?+uG9jvOri5cd2G95THUZpLy3u8IiUM1MWa6J/o/lXWXnSGVZlBraUividmUa?= =?us-ascii?Q?3UNu77vsM5s2JQ+eHifZhHN/wdJzhokhuTMMnmfGu+R1wZXCuI9JWra+1TRT?= =?us-ascii?Q?EbfL+Lp8oFGyNcZ6B5qYSt12Svotwzj6cZyMEs1kT2OfRA93cNPi8NR9JcIE?= =?us-ascii?Q?iROFB4/Z1H4RomWWW5LQxBlQNuwDm9o228pZfGm4zcyAvA/9rbKp5L9Yultp?= =?us-ascii?Q?SD87gCZWOhlcwuir4snAfhSJB5umEEqkwyEQVb/k08Zar3lA+7vILadCkRg1?= =?us-ascii?Q?tzucxrxZw3F4Z5o7SyIC+B0rNH/ALHu2+Vczgn1OMqcDwmUh6TIPorlBL+pz?= =?us-ascii?Q?Bb4J4p+CatX07LfPd08BElElgzpm8DiPMmwu6sgA?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d543b2f-6ccb-476f-d39c-08dd16db0f69 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2024 16:20:27.0007 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PoDMOs2XwNIRxTB5E9d5mOROjq/gGqrb4glnkvXHJmm+h3GEn0Eu14omVnC65Dhs X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6411 X-Rspamd-Server: rspam05 X-Stat-Signature: 8samaettrygffrmqpxt44mkkukmkrenk X-Rspamd-Queue-Id: 9420340007 X-Rspam-User: X-HE-Tag: 1733588418-363119 X-HE-Meta: U2FsdGVkX18Rlp5LeTYjIW/VjVhBn5vLPaVErpnAI8uFlkgSLMjGlojKmoES1G9ncqLWRKcLGNwu/2tkDhFcqZNnNkoSEZY7/Jp+2H1yuOvL0hwRWo6dgZYJU8dS7dvRssvaBEbJhoOWKp5DfZHkPm+8oCwBFNZA+Sn5o8wphfSE7NRXvjwSVuW03DP45jgWs27xL7yyoQsWcjugXPBPijiMFfBEvmL8QDu6Ep1JXY2PL4Z9IMnfuFAk17KwO71I0/m2lScq+QnbW0vGKLQLZJLiPlQw///RJXUqPcHS+Xdg6rId+3Ro7yhqSizgKPsuoTCPLbR6Mwt7pWVcucGlM582/pVi2lagxFMBA3YBqjaGtQAfQhG/QYlfSJjvKxfpZo8TSz34xBofeZMTKyR72VKjV8uzz4hhKQSXzaOiGoUgpHo6lnjbWvRWQXwQe4gnEF5RyK7mJvPC5Xj7YiKBy+f1WP46b9C2fdnrfqT08xNJG9gWlJhniwS9sAlqLsh1ibYn7LjAmX/K3PJYLuQyhrG7mLim5FlYHRtpgR/zYUCAFAnK1WD7VPwSyu6trdIHdec/VBVswnLLCAL36CiQK3Mu6B9f8AkpW9CiHJ+vQ4WRmfNL47xsjt8dGwAK0iwogjqfS7BP0nW84dyCp5Y7GE/23pg72Of8y+YxghF3d325E+mLAnBjKaHgReWMkpkDZRP3NcN3hzONuSH95j2RTveHpUDLnYhsZBJShG2rowWmDd99x8F5FLZZCnBwnVtuTYH6fxodN/p7Ad45V/dT295//SXD4uFUXTMYh5h6cRgOdVYjS0JhZ9NfoujF2ZMPPEOMuV+N8CCorgl59P7pTfg+b6hyCqI354sVB82x23PC/PauGzcaingyqS7sd4WzrFuzrEHIWcBR2hHwW/uW3HGjLTFF4swOJfDbyiVE5F48zO0m20c2o5884fdyTMIkqE6yvRm+hLNjM1bd518 NoqljpBK gD8J83cR5ivud0AbBr6e+3CF80Ps+uioWEAFXiHaoN0vd83ioO3tlhi0T6JrT5GGaZQGgC3mtN363QqGI05XdIBYodwq484V1//9fU/je+oKeype6e6feMYDPDh/g7QQIU78Ggm4lmaurV94vidrio5VMOgIvQmi9638gQmFHBWgqB5o9SEARFemHfEdTHhLr8BD9bMLby08V3zuzoajNwS2zWfZYsznCeymW/NL9fxtyXGl7nS+nApH96Wr+fzIb/Wd3K4Gr26aSIQqgUBpqFvS/5jc9XMOTf9msFHmarlSCI4zjcpfx1UxVqneVwwhgZfNjjYaQs+AiLHWo0k85vFaQlqIaohlHlWLHt+Y5HNPrG83A/PkzqbhQ1KMbuaz8mMRGLQclcQepzlOr8SKviQ4aDkTeB+slrqYLNBPUfXLGbpzScbU3upsf8kOgP5lVD/xzvtHbs07zKzw0atbITjlSEaChaVDc6POQA7ZNqIJgDjSqbXIemBI2BcvycgjrTp7hkEBgAisSrS8= 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 7 Dec 2024, at 10:31, Mathieu Desnoyers wrote: > On 2024-12-06 12:42, Zi Yan wrote: >> For architectures setting cpu_dcache_is_aliasing() to true, which requ= ire >> flushing cache, and arc, which changes folio->flags after clearing a u= ser >> folio, __GFP_ZERO using only clear_page() is not enough to zero user >> folios and clear_user_(high)page() must be used. Otherwise, user data >> will be corrupted. >> >> Fix it by always clearing user folios with clear_user_(high)page() whe= n >> cpu_dcache_is_aliasing() is true or architecture is arc. Rename >> alloc_zeroed() to alloc_need_zeroing() and invert the logic to clarify= its >> intend. >> >> Fixes: 5708d96da20b ("mm: avoid zeroing user movable page twice with i= nit_on_alloc=3D1") >> Reported-by: Geert Uytterhoeven >> Closes: https://lore.kernel.org/linux-mm/CAMuHMdV1hRp_NtR5YnJo=3DHsfgK= QeH91J537Gh4gKk3PFZhSkbA@mail.gmail.com/ >> Tested-by: Geert Uytterhoeven >> Signed-off-by: Zi Yan >> --- >> include/linux/highmem.h | 8 +++++++- >> include/linux/mm.h | 17 +++++++++++++++++ >> mm/huge_memory.c | 9 +++++---- >> mm/internal.h | 6 ------ >> mm/memory.c | 10 +++++----- >> 5 files changed, 34 insertions(+), 16 deletions(-) >> >> diff --git a/include/linux/highmem.h b/include/linux/highmem.h >> index 6e452bd8e7e3..d9beb8371daa 100644 >> --- a/include/linux/highmem.h >> +++ b/include/linux/highmem.h >> @@ -224,7 +224,13 @@ static inline >> struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *= vma, >> unsigned long vaddr) >> { >> - return vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, va= ddr); >> + struct folio *folio; >> + >> + folio =3D vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, vaddr); >> + if (folio && alloc_need_zeroing()) >> + clear_user_highpage(&folio->page, vaddr); >> + >> + return folio; >> } >> #endif >> diff --git a/include/linux/mm.h b/include/linux/mm.h >> index c39c4945946c..ca8df5871213 100644 >> --- a/include/linux/mm.h >> +++ b/include/linux/mm.h >> @@ -31,6 +31,7 @@ >> #include >> #include >> #include >> +#include >> struct mempolicy; >> struct anon_vma; >> @@ -4175,6 +4176,22 @@ static inline int do_mseal(unsigned long start,= size_t len_in, unsigned long fla >> } >> #endif >> +/* >> + * alloc_need_zeroing checks if a user folio from page allocator need= s to be >> + * zeroed or not. >> + */ >> +static inline bool alloc_need_zeroing(void) >> +{ >> + /* >> + * for user folios, arch with cache aliasing requires cache flush an= d >> + * arc changes folio->flags, so always return false to make caller u= se >> + * clear_user_page()/clear_user_highpage() >> + */ >> + return (cpu_dcache_is_aliasing() || IS_ENABLED(CONFIG_ARC)) || > > Nack. > > Can we please not go back to re-introducing arch-specific > conditionals in generic mm code after the cleanup I did when > introducing cpu_dcache_is_aliasing() in commit 8690bbcf3b70 ? OK > > Based on commit eacd0e950dc2, AFAIU what you appear to need here > is to introduce a: > > cpu_icache_is_aliasing() -> note the "i" for instruction cache > > It would typically be directly set to > > #define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() > > except on architecture like ARC when the icache vs dcache > is aliasing, but not dcache vs dcache. > > So for ARC it would be defined as: > > #define cpu_dcache_is_aliasing() false > #define cpu_icache_is_aliasing() true > > And the Kconfig ARCH_HAS_CPU_CACHE_ALIASING=3Dy would be set for ARC > again. > Sounds good to me. > I'm not entirely sure if we want to go for the wording "is_aliasing" > or "is_incoherent" when talking about icache vs dcache, so I'm open > to ideas here. > Let me know if the code below looks good to you. I will use (cpu_icache_is_aliasing() || cpu_dcache_is_aliasing()) instead of (cpu_dcache_is_aliasing() || IS_ENABLED(CONFIG_ARC)) in my next version. diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig index 5b2488142041..e96935373796 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -6,6 +6,7 @@ config ARC def_bool y select ARC_TIMERS + select ARCH_HAS_CPU_CACHE_ALIASING select ARCH_HAS_CACHE_LINE_SIZE select ARCH_HAS_DEBUG_VM_PGTABLE select ARCH_HAS_DMA_PREP_COHERENT diff --git a/arch/arc/include/asm/cachetype.h b/arch/arc/include/asm/cach= etype.h new file mode 100644 index 000000000000..acd3b6cb4bf5 --- /dev/null +++ b/arch/arc/include/asm/cachetype.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __ASM_ARC_CACHETYPE_H +#define __ASM_ARC_CACHETYPE_H + +#define cpu_dcache_is_aliasing() false +#define cpu_icache_is_aliasing() true + +#endif diff --git a/arch/arm/include/asm/cachetype.h b/arch/arm/include/asm/cach= etype.h index b9dbe1d4c8fe..80725010c38f 100644 --- a/arch/arm/include/asm/cachetype.h +++ b/arch/arm/include/asm/cachetype.h @@ -21,6 +21,7 @@ extern unsigned int cacheid; #define icache_is_pipt() cacheid_is(CACHEID_PIPT) #define cpu_dcache_is_aliasing() (cache_is_vivt() || cache_is_vipt_alias= ing()) +#define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() /* * __LINUX_ARM_ARCH__ is the minimum supported CPU architecture diff --git a/arch/csky/include/asm/cachetype.h b/arch/csky/include/asm/ca= chetype.h index 98cbe3af662f..838c7e708d19 100644 --- a/arch/csky/include/asm/cachetype.h +++ b/arch/csky/include/asm/cachetype.h @@ -5,5 +5,6 @@ #include #define cpu_dcache_is_aliasing() true +#define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() #endif diff --git a/arch/m68k/include/asm/cachetype.h b/arch/m68k/include/asm/ca= chetype.h index 7fad5d9ab8fe..4993846354f4 100644 --- a/arch/m68k/include/asm/cachetype.h +++ b/arch/m68k/include/asm/cachetype.h @@ -5,5 +5,6 @@ #include #define cpu_dcache_is_aliasing() true +#define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() #endif diff --git a/arch/mips/include/asm/cachetype.h b/arch/mips/include/asm/ca= chetype.h index 9f4ba2fe1155..aac25ee27cd1 100644 --- a/arch/mips/include/asm/cachetype.h +++ b/arch/mips/include/asm/cachetype.h @@ -5,5 +5,6 @@ #include #define cpu_dcache_is_aliasing() cpu_has_dc_aliases +#define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() #endif diff --git a/arch/nios2/include/asm/cachetype.h b/arch/nios2/include/asm/= cachetype.h index eb9c416b8a1c..4b492fbb4a39 100644 --- a/arch/nios2/include/asm/cachetype.h +++ b/arch/nios2/include/asm/cachetype.h @@ -6,5 +6,6 @@ #include #define cpu_dcache_is_aliasing() (NIOS2_DCACHE_SIZE > PAGE_SIZE) +#define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() #endif diff --git a/arch/parisc/include/asm/cachetype.h b/arch/parisc/include/as= m/cachetype.h index e0868a1d3c47..53180ff9d09a 100644 --- a/arch/parisc/include/asm/cachetype.h +++ b/arch/parisc/include/asm/cachetype.h @@ -5,5 +5,6 @@ #include #define cpu_dcache_is_aliasing() true +#define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() #endif diff --git a/arch/sh/include/asm/cachetype.h b/arch/sh/include/asm/cachet= ype.h index a5fffe536068..f711631b9451 100644 --- a/arch/sh/include/asm/cachetype.h +++ b/arch/sh/include/asm/cachetype.h @@ -5,5 +5,6 @@ #include #define cpu_dcache_is_aliasing() true +#define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() #endif diff --git a/arch/xtensa/include/asm/cachetype.h b/arch/xtensa/include/as= m/cachetype.h index 51bd49e2a1c5..89560b325006 100644 --- a/arch/xtensa/include/asm/cachetype.h +++ b/arch/xtensa/include/asm/cachetype.h @@ -6,5 +6,6 @@ #include #define cpu_dcache_is_aliasing() (DCACHE_WAY_SIZE > PAGE_SIZE) +#define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() #endif diff --git a/include/linux/cacheinfo.h b/include/linux/cacheinfo.h index 108060612bb8..a2dd3d00e080 100644 --- a/include/linux/cacheinfo.h +++ b/include/linux/cacheinfo.h @@ -155,6 +155,7 @@ static inline int get_cpu_cacheinfo_id(int cpu, int l= evel) #ifndef CONFIG_ARCH_HAS_CPU_CACHE_ALIASING #define cpu_dcache_is_aliasing() false +#define cpu_icache_is_aliasing() cpu_dcache_is_aliasing() #else #include #endif Best Regards, Yan, Zi