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 D35DFC71157 for ; Tue, 24 Jun 2025 06:16:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4064A6B00BD; Tue, 24 Jun 2025 02:16:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3B6E66B00C6; Tue, 24 Jun 2025 02:16:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2305E6B00CA; Tue, 24 Jun 2025 02:16:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 0A0C26B00BD for ; Tue, 24 Jun 2025 02:16:01 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id B5F9C1A1AEA for ; Tue, 24 Jun 2025 06:16:00 +0000 (UTC) X-FDA: 83589283680.13.9F68BE7 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011039.outbound.protection.outlook.com [52.101.70.39]) by imf15.hostedemail.com (Postfix) with ESMTP id 94AF4A0004 for ; Tue, 24 Jun 2025 06:15:56 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=arm.com header.s=selector1 header.b=ewwYmHOF; dkim=pass header.d=arm.com header.s=selector1 header.b=ewwYmHOF; spf=pass (imf15.hostedemail.com: domain of Dev.Jain@arm.com designates 52.101.70.39 as permitted sender) smtp.mailfrom=Dev.Jain@arm.com; dmarc=pass (policy=none) header.from=arm.com; arc=pass ("microsoft.com:s=arcselector10001:i=2") ARC-Seal: i=3; s=arc-20220608; d=hostedemail.com; t=1750745757; a=rsa-sha256; cv=pass; b=gftSrpWiNsMbylGcSbolEV+BoooMCsl4V8jvPJj8nKDk6ujhRxs5VlAgrWIAe990itutm6 Fqh84zmB6QzgrMJwqZrOwildvHI4Um5URNWTseN92nlTNehPMYJ8vuF+PdX5plOVj5VA8Q g/ZxZPbGzS8q416QzlVZNSOvuIiGLug= ARC-Authentication-Results: i=3; imf15.hostedemail.com; dkim=pass header.d=arm.com header.s=selector1 header.b=ewwYmHOF; dkim=pass header.d=arm.com header.s=selector1 header.b=ewwYmHOF; spf=pass (imf15.hostedemail.com: domain of Dev.Jain@arm.com designates 52.101.70.39 as permitted sender) smtp.mailfrom=Dev.Jain@arm.com; dmarc=pass (policy=none) header.from=arm.com; arc=pass ("microsoft.com:s=arcselector10001:i=2") ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750745757; 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=Mj2Jz+nn1G05r8DYLZxzoqh/jYN666NRDLdEgv+PE4M=; b=QEFgS9ELqGC7tuLy2DzrQ62Nt2SbrrlVVnbs4HNM9bdLF35b8dRSnOcvWXcIkXlemTmmy/ 4HgV+tz4L4kJ8CHNoI0EHXXuCZn3U//z7bUMjYbcBRg/FhDjkSdoyvCUCDxKe/VRZ78L9O TOgEB5D8HbykeXX+IM0sUurwUw94CiU= ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=sC7NnZ8nEfWCX/7QenBD9CTrQkeYfbwbuircr8CxV6oKwdAHyUS81lyHTWR0K3KzporxeMTtUmPuBrd98NB8O+y6qldrOdzgHISqWkY5f46LPNpqmql7Yop+8xliErsHPc+JWYFmdgDHsXSMnLB2YVVfaAYN5P8MorvZUdaMmOpAtY+oAs2+KKa4uQRkKGc04akX9XKAgjFlwXjnbhzaL2fwynusvlyJxIqbxFrODiZwnKelbnlyYPu4yCeUwXOjlaz/Ga6C1SToZI+S81gnF/iHj8+PQ1kSbDcp94pDfoCsTz2HgdM2jqCNcKXTZZJBGk6tBoIk+7mIhovbLDzcIQ== ARC-Message-Signature: i=2; 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=Mj2Jz+nn1G05r8DYLZxzoqh/jYN666NRDLdEgv+PE4M=; b=GPa0BdNxwzpOyA2EHmwP4y8qP5Vkw6slGwvydgYY1RnHmqQ8lPrwfRSDzZVrVgQhRce+ANoRHOun7gsPA2R6nF2HcVfOxgouj1XUWiwWgYmxZICILoWirKZkCFBBF+XKZk9WX1HAB9cFgQTFnUXjfPSSx6/7pLGeipkVK71KCMLooOsvdox2a7QHk8EuXztWMsFgbfizylKD4lrvj4yBvn//MQnjgR1Yt+rfdWE39GzJLB9am/h0Rs+O5ZNHFr6J/S1PCfhvgZQQJBwlQDSSQ6LgRL+m4d1hXBCKjuDamMsHO4m/xE7YL1LheMaaA1eAfhtmm3eT7ySqkmA6VLRAcg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linux.ibm.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Mj2Jz+nn1G05r8DYLZxzoqh/jYN666NRDLdEgv+PE4M=; b=ewwYmHOFszwWDT9//Luv3M0qqNkrOZbq5zspSRydht1yUfn+P6v9JLEcFxSZvL+5nOZkbi9vJw2P3994k/peNt9PfMVeDFWpTLbDgSLXYTT1gZSdHkvyy57AWCJRnlsYnMChHWIYUS78LJWPpNYVTawgCZsAGA5QaV0I6oPfSmQ= Received: from DB8PR03CA0012.eurprd03.prod.outlook.com (2603:10a6:10:be::25) by DB8PR08MB5434.eurprd08.prod.outlook.com (2603:10a6:10:116::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.27; Tue, 24 Jun 2025 06:15:49 +0000 Received: from DU2PEPF0001E9C1.eurprd03.prod.outlook.com (2603:10a6:10:be:cafe::9b) by DB8PR03CA0012.outlook.office365.com (2603:10a6:10:be::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8857.30 via Frontend Transport; Tue, 24 Jun 2025 06:15:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF0001E9C1.mail.protection.outlook.com (10.167.8.70) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8880.14 via Frontend Transport; Tue, 24 Jun 2025 06:15:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HdP2HHXkik8x2MnquOumOFrJSRh/uVjVFWgW+k4lFHjUrMVUOvAL9yEAs0SEz7gal2E5wtWxAO4wNau2Bu82hrJ673AQd7URN7AAPm6PrRaFaxVACLTPnwUWMRbv24NysskgVmWxlDjgUv221/WcOiikAC2RwnN8LXfZc4bubWWku8g9v+czMNQNyMVRTibqALMBWIaJUXLclBIHNP/I4qVBBCr0/vgr5ZuIaHvPxDXtnvHEn+83qL18+3Czhe0QQ3s4RH95X7tsH5KHI5fJmpUa1miAIE4tH1iiZ3u+ppgbxsmRds3ZrrRK0ea5WTASluLd3Ybg79O1f27BHtwQaA== 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=Mj2Jz+nn1G05r8DYLZxzoqh/jYN666NRDLdEgv+PE4M=; b=vy7mm4GseZypLLqn29VXqwN4i+aIBrj3hBcLMirAGQpo0mkUwvmcjLW+5kznz0uy79CYez8O6NRRFigne+I2DIOjN8hJ4pesQqoOp2ceqOu+LkC7tD5Q6ZpUbvHXUZymFco73L/4WukWtzGMV8XnDTid8XPdfl+gV7Io0IP5htyN+X+f8tF7L0QjG+hmuKgcl1MknWv3ghakoI+PayiW3ctBe56SAstoTtr2FAfDbteBFgw0x65ozUEjsDLBmGqUT9hE2L2ALG2J6I0V6OZtNg7llVL6Qn+IM8rSI3vT4QlFm5i/FjvbhCmeuOcgreu8RioeDBsCaOuOi8bjUuvwvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Mj2Jz+nn1G05r8DYLZxzoqh/jYN666NRDLdEgv+PE4M=; b=ewwYmHOFszwWDT9//Luv3M0qqNkrOZbq5zspSRydht1yUfn+P6v9JLEcFxSZvL+5nOZkbi9vJw2P3994k/peNt9PfMVeDFWpTLbDgSLXYTT1gZSdHkvyy57AWCJRnlsYnMChHWIYUS78LJWPpNYVTawgCZsAGA5QaV0I6oPfSmQ= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AM9PR08MB7120.eurprd08.prod.outlook.com (2603:10a6:20b:3dc::22) by DBBPR08MB6188.eurprd08.prod.outlook.com (2603:10a6:10:1f6::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.30; Tue, 24 Jun 2025 06:15:16 +0000 Received: from AM9PR08MB7120.eurprd08.prod.outlook.com ([fe80::2933:29aa:2693:d12e]) by AM9PR08MB7120.eurprd08.prod.outlook.com ([fe80::2933:29aa:2693:d12e%4]) with mapi id 15.20.8857.026; Tue, 24 Jun 2025 06:15:16 +0000 Content-Type: multipart/alternative; boundary="------------zEGIVxhJrmujVuu6DcZCTzL1" Message-ID: <673c9442-7d69-408b-a2c4-2baa696a7e86@arm.com> Date: Tue, 24 Jun 2025 11:45:09 +0530 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/6] mm/selftests: Fix virtual_address_range test issues. To: Donet Tom Cc: Lorenzo Stoakes , Aboorva Devarajan , akpm@linux-foundation.org, Liam.Howlett@oracle.com, shuah@kernel.org, pfalcato@suse.de, david@redhat.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, npache@redhat.com, ryan.roberts@arm.com, baohua@kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, ritesh.list@gmail.com References: <8e23c5d3-6ce3-4fe8-b6fe-69658d5d0727@lucifer.local> <815793f1-6800-4b9a-852e-f13d6308f50f@arm.com> <2756fa2b-e8bf-4c66-bf9b-c85dc63dfc33@lucifer.local> <41d9a70d-9791-4212-af23-5b13d8e4a47d@arm.com> <546d7aa5-9ea3-4fce-a604-b1676a61d6cd@arm.com> <2fc32719-1e38-4bf0-8ec5-5bcb452d939f@arm.com> Content-Language: en-US From: Dev Jain In-Reply-To: X-ClientProxiedBy: MA0PR01CA0062.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:ac::20) To AM9PR08MB7120.eurprd08.prod.outlook.com (2603:10a6:20b:3dc::22) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AM9PR08MB7120:EE_|DBBPR08MB6188:EE_|DU2PEPF0001E9C1:EE_|DB8PR08MB5434:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c2c108e-aef8-4401-f194-08ddb2e69072 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|366016|376014|7416014|8096899003; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?4SG/siamKZy4Mja1caBbxAiFBNR9nGkxyxAign/O+DRvwU3QIwmp+hkd2A1k?= =?us-ascii?Q?/bU5CtmFQ3q9xs5Ofl4cdv1OkFAJ+std8RwdHl/8nEe2BFMDZ63wJpM8RGjk?= =?us-ascii?Q?ulCFw0eHRwld23JCjHPOOX7DGZbHB20F//jJH47mNpqsRkbGsxyinXsvqa/f?= =?us-ascii?Q?HMXg1cCxZFD9zthFTdeOzBH/wjKTP1A3DuA4yN/lMLFkgmE8NSDwMX9uoW9P?= =?us-ascii?Q?JbG1bEOwAer8hXvoAEFIG2hXYpPEe2Ggd6n+WHXcSrm5ES/0EpAmh3RAS/9Q?= =?us-ascii?Q?rMkU/iqqp20oU+aQkwXe2Ubm8W4hqPTDMr0MtDx9IrDv7iSnBnXvLgqJFzTA?= =?us-ascii?Q?YLP70kKly8GQhK1rrgdVJtrZY0Te4VffXoFA0QcYtauKvrQyIRdyzCpUc5Db?= =?us-ascii?Q?2dvPO3CB9X33kA0z2AG/mSOP9Iks2RAOmKQ7yB7ANL3LnD6lgNjbcLouAZeT?= =?us-ascii?Q?QkmoF+AWolMfhSY2ioj2SSWchjZUh3IsP+SJLyLQRPrfd0gmbeJt/FMjhfnx?= =?us-ascii?Q?C/2HYLOyF9l9ejKMjuoNjkU6idPClkO+wqWwAXM4YDLFPvLOZb9UTWIpwoIi?= =?us-ascii?Q?hy65+jjNyT36LENnQ2yqNyVI2pn3c7YHyxCtDligrOHuGGYnRihWFx49Bo81?= =?us-ascii?Q?LNLp0/fAKVxSP/POIq3xcXXsXmGtBb/b77GoQzwEbCF2F7fx0b6dLzFNkn+A?= =?us-ascii?Q?e98MEsHQlsgdOk/J8dcBT52BM/DQrLl36GXWj7/lc8/pB64He9MU6boiPITB?= =?us-ascii?Q?vFgoooNy4NNcRH9Vpmg2yfBR4apO5YX8DvKIQT3jeDvoWzkLdclsfdI2obfi?= =?us-ascii?Q?g1ZjEbMbHAeZOBPV58UUcJFkl2GMxkN7zOQdBipKWasGERLxHKijX0jPpmSh?= =?us-ascii?Q?4nefXo4hVNtBqEvdRdiBGFJw8J/MzM4fbsHGGlAGXPnx7t7jL3JJ9fs/7zep?= =?us-ascii?Q?3Yqtr5a22qzSWdYe3id3BVL3jTZWk0QtUxkXDppFAhCG1JmkOEEwkr33yfZD?= =?us-ascii?Q?SdG3BqhfHnmFp3ytyN6DaUenQx0dQ6V3JGC7Qv90cpOttCHLidoRVuYxW2Gw?= =?us-ascii?Q?f0Ny/GdVjfnrmTFqtPf1xfQcOXzp1KkD/5xjX1GLlIo2DMxtFc8jF5auIFup?= =?us-ascii?Q?gcUnUPR3OWZGtv3UBr/vXr+2mhIsq3xt4m+v6a3lFIQf46SVuRZ3remELDpG?= =?us-ascii?Q?MhwyImn0GP4YWPHGZ/WVtHLsiZMDwLZl9ksEvs9iA2WIKZ+8VgCyJDMZ4ePa?= =?us-ascii?Q?UDPm+zNhBMyPcwpiIpmGNfx83ESxTk7blhESnN/yoVxWUkdlkRSI68pnYgt3?= =?us-ascii?Q?BE9VLGUp+ip0WvIiBIj36189i1q+68tBd0PYrIAbAa66n67AOlkUY5NBHWIM?= =?us-ascii?Q?43mY+W61loLXqb9jS+SF8ZugNtse76qSqzyKH4m/3HBvPVqv/z6IyRBTCYDW?= =?us-ascii?Q?y1ZywcsGNcs=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB7120.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014)(8096899003);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6188 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF0001E9C1.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: f56cb40a-e85a-4efd-ed7d-08ddb2e67cc8 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|7416014|376014|14060799003|35042699022|8096899003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UUtIN2ZKck1aS2VXbHhnbzN2U0xqd21sb2ZMeXFLS01vdXBKWE9hTUsybWNx?= =?utf-8?B?V2Y3V2ZRbmMxQWtlcXdMbVdSM2thNUNFOFRDU0hBQ3VKMWVORngxbUh4NXFw?= =?utf-8?B?RytKeGJMS1VSdmdGd24yNEpoUmZNdXk4eWU2c3VDZEhmVDlmRC84NDhScTFu?= =?utf-8?B?bnllVVk4aWYvZ0dEV2pLK3g5QXc5dmhBbW9yN2JmbE42NGpkV2ZEeDVOczRn?= =?utf-8?B?UzNYN0NONERnQ2JwVVdmZG04VHMrdFkxOGp5NzByZkJOazVkbExHYkpMQjZT?= =?utf-8?B?YWd6eDYxTDZseVFId21FeTVOcFR5QTlONGlXNCtQWEJQSmViNnFNL2FRQzdq?= =?utf-8?B?NTgzeFEwY0pHVk1zS1ZaTjF4TGFJSU1NaWxkaUlKd0dnZmVVUDZRMXBQMkFk?= =?utf-8?B?QW1Qei91TGRUcC9jaUU5dXVzdkRoVERzV0JkRktxWXY4WnNxYVJpS2xaMGJx?= =?utf-8?B?cThMdFl6WEx0NmhXcmNLOVd4T2JmL2xMbnFxekd6d1hHR1E4WVVsZDFBdHR0?= =?utf-8?B?VmIwSm9ieCtxa2pmWG9mNzF0QVFJc1V6ODV1Ykd1bGg5SUM1bUo0TFQvekpt?= =?utf-8?B?ZTN5bC9TL1hRM2pQS0I1TWxzVFB6RDREemRFQlF4L1NQcmhncFFuNjlZS3Bk?= =?utf-8?B?UmlnTlhpS0U2OXdYa01acXlwdU5FMTN3Uy9BZ2QrMitUZ0xHK1dIbnFDZ0pm?= =?utf-8?B?THhiSUlad0NSbkplakdETFplRWdsMVU1b1BDTCtaTHhhNzY4UzZkMzBtRkJE?= =?utf-8?B?OC80LytidHlYOVVNQnhidHpHQVFSRnpvWUVPdXZUMGZ6ZkhIRzA5andZcFBJ?= =?utf-8?B?QU1vcnJhT0FFQVFzZ1daZE5JTFFDV1lBZ1EvR21MVTJCVnR4WDVDeFEvR2sx?= =?utf-8?B?bTFWREE4TmNYSVNEZUxTUE9FcFF0Smw1WkkvR0t5L3BmWTZWTGpDMWN3cGVa?= =?utf-8?B?bmI2WTJ0Nlpzdms2OVFyVkhQMjR5eW1KeHM0bHZXUFpmSnR3SHFxMWNIeXdD?= =?utf-8?B?QW5vMTRvTW1ZUWZ0YkdVS1JIY255WGs3S3dBc0ZXSUlldGQvRUxaZDhsSEhw?= =?utf-8?B?WkZrWHQyQUFKVkVScEFhSWNUZ0NHTXpYSHZXdUhod3llV3dvSGFUazZ0SE5N?= =?utf-8?B?UXFOL3lxSUZNcE80SmxQbjcwc1BCVXRFS2xpODB1VHltdm5ncUNlVHE2ZEM2?= =?utf-8?B?MGQ4eUV4U0VkdkdjNWZpYk5xb1RvZS9mZVFzYk0rRWRMdStwQUc4RVRVNUhl?= =?utf-8?B?WTZmL1lCV1l6U3RaM25EdlBLckNaanFIcnhBSTNwOW9IUjZaOGxLUlNQSFQ5?= =?utf-8?B?OTdGRzVqT2p3aWVBSFR3WjZTVGdKZC9QREIvbjUzVmllamdFL0x1ZEZoaHVl?= =?utf-8?B?bG13ZDRSanZJbU13cExPQVVMeEMyNVo2dkVkWTk0SllOTUtMU2phUG1hRnZM?= =?utf-8?B?Z0VtOEk2d1d2WGdZM2YwQ3FmeG1RbVlMcVYySUJ4czQ5dDBvSDA0aXg1bjRN?= =?utf-8?B?em5BNEZjS1g3dkZSZ0FwOHlkZWcybTdlZEJCRDh4Q05mdU9EYWFrOTV6SDZj?= =?utf-8?B?dWNzQXd4dmdyUmZ0RlNlc0Fma1JtNlo4N0p4Y1NicXUvRWdIRGk3ZXFSekQr?= =?utf-8?B?NUJLWmxLbGt6WExNdXRhR20vMXhZYnY5c3piTEN0ZTAwbTloNlFWT3pPOHd0?= =?utf-8?B?czRLdVdIMkxMa0JTQ2daRUEwaWZJUzdyaGJyRSt1bmFIeVpNL284M3ZFZzlh?= =?utf-8?B?bGsrZ3pVVXplWFNjYjloNGoyYmdHeU5nbkxhdytReVc2YThNVHQ3V3UxeTcy?= =?utf-8?B?TWRZL3IyY3JFRzRyTVN4RnRyb0Z6Z0dTYkhFQVFkT3hyVFQ3QnBTbDRXMFYw?= =?utf-8?B?cmV2UlhiTnJiQSt6cGpoNzhYckxsU3dTUFBNeGZBazZ5ZG85akxVOGRjNVE0?= =?utf-8?B?cWxMczBEangzTjU3ckJIT3V2OFZwS0Z0V0l1bWtkdlhua1VubUZVQXZ5U2sv?= =?utf-8?B?MEwzUTEvWkpJVjBBSHRxclI3TWUwekcva0hFazdWa2RtUTYra2p1N2QzLzJD?= =?utf-8?Q?d3PqvB?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(82310400026)(7416014)(376014)(14060799003)(35042699022)(8096899003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2025 06:15:49.1061 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9c2c108e-aef8-4401-f194-08ddb2e69072 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF0001E9C1.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5434 X-Stat-Signature: 4o6fh6xhtbz6516qn1tn4zps9t5gpzio X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 94AF4A0004 X-Rspam-User: X-HE-Tag: 1750745756-854561 X-HE-Meta: U2FsdGVkX182SSyWVsGCDLE60KpI1vdPOMEnhHRYqJP5Y4PTMMa8WNLvWfJFfIBiBJ4lEYNn9N7yEWiU8pl9bcbOFYG6Y/XBodKo0XjjcZyCnGyR/yzQknFr1XGpkuOGqR6MUOAR1TZkakHGo+rj9UFUwmBq9LmlZwTweazsUA7joWFuq4d56KxFhlgjWNA3lhxmwK2mVSfllZ8L12NdwKRbBpyDmKTOyd2HyD5FN8e4hHDTCc5BSOn3o34miPIaHuYgokd2TRouEZpn8LSLg5ic2Wh34lGtZzvI9q0p8VlAKKcONqU20mF8Oj6rGCu7taUZR0xnQTC2GnuRPobhXq4R2F22s1OTEfyWCtvK8VnLkj8kvjmJjzeTeA012kLtxGTihyoimKYApqTqNSC8xwjWg1bErhwooCRe96h4GrnIbLnw6xYBThQrAy7aPjmxVz4MBwLsPdd//YbOopamAPTjQVmz/Z/FjFoi4gAJPcR5lo/c5oxyg2NbFvye7mTJ0DjUEPx0mChTPSSEhWQNRsiEtKMjzxLTgEkOOeizhW5rg3FPf5IEpxZqGUWfUUWvaWrLg1C2zIlXhvm/yJMcS5YFNixIQOnfs0xRDPiLgAlkF0bnzjbvKzPDorLBcPzNRhMh2hDsGheqkJCdKVFAhNs0Q1cvVOdKHwSiRNTJ2XJRVi4Ia81tDnBQ3N8sOesApI3bvP1U9O7dSuSjn2zCV8IC305NLsg3aaijiMupbR+G1Ao+OfpmSS1AhY/U6PKCG5C7h3WBQdxlofPI8qOZ8Ds2fE5CHuZNTL0q+JDkT/G+ai3+hU0yLGV4wJxZkSTAit+23MSRgcdxQafiXjc6YHdfMQtcdmME1a+kV+3ttp7N9qBqbgJTgC5Z/UI0e5xzUdT2L5564Dp8nkUsno6zd64eJQrE5xbcwFgxgqJlbn5CKAfx4NFDHZAHVXL5v6eeJ44iUnPS9haY+p1I7dI dn/wUZbL p5mGHP9G77Lp/qU3yDptTLdwlu/wC5Mp85Pf7Ldu5e0zcgE4Oyq/jJraXa4E9iK5nwd0wQ/4Wnp+qCTUYYiXyAHVKW0vbzifqbfEY34+86VgqV7EQjVzWEjwbYDjhsicfAVfitQF/rM6CVzYz4BGRGnmDP8o4kvAhWLTq3nkKL3s1FQeXjpgQfQ2jYhvhaQ2IT2IVUNm/FhUg3N+jeWE7ChezwoT4LKdYG9gszYMoG+YdPb5SF4WqmO9p6g5gH8+FybS9nIRZMLLvygclEFtLuHTA1cSRs3HnJNpxxpuGob/ZQItp0VisDuLkwSUB2xqkDE1okTtcvg+jCTFyECI5CC2bWyVWOLmMy8UJB7E9GcDmH7RchJMei32Nba3ylhhMoXO6i7msUUBt0o1ExGMhdBxlTQlzzc9GEbxUuptqJHrPgOT3jFAYrTvcfLoImAMiWZ+WjEhXJjhmy4ncTqlEaGZxlnvUE3/LsyuuoSZMSTJ+W+G719bttdOW9YJKnJqEPfU9RB9PEWnI9iODiOMnLQfIMflIesy7M5NMHSl4lMv5uQLaJWIwug1LOUbSjICh4vttTsszgJMPcXNoPkRjbbrLt+F4W+fLzrfeKwT7Pcy2xzPw1VnaHWQ8nz7YZWaPOUdTmXywjzMkd3onCwdgSoINXzdH0wUkr5N+JE1uNrMUByEG/hsTq/gzGs4m1Mcg+bqZHeLM9hu2vUsQMmxRRwECUxHPF3ScKsSEca0vhoKX0NNE9VOOsa8RPzK/GVhAlHL6T4WImon07A0UOZzzs1MHZe7NQmLulDriIXPlShYxe/+pJjRzmgeAwg== 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: --------------zEGIVxhJrmujVuu6DcZCTzL1 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 23/06/25 11:02 pm, Donet Tom wrote: > On Mon, Jun 23, 2025 at 10:23:02AM +0530, Dev Jain wrote: >> On 21/06/25 11:25 pm, Donet Tom wrote: >>> On Fri, Jun 20, 2025 at 08:15:25PM +0530, Dev Jain wrote: >>>> On 19/06/25 1:53 pm, Donet Tom wrote: >>>>> On Wed, Jun 18, 2025 at 08:13:54PM +0530, Dev Jain wrote: >>>>>> On 18/06/25 8:05 pm, Lorenzo Stoakes wrote: >>>>>>> On Wed, Jun 18, 2025 at 07:47:18PM +0530, Dev Jain wrote: >>>>>>>> On 18/06/25 7:37 pm, Lorenzo Stoakes wrote: >>>>>>>>> On Wed, Jun 18, 2025 at 07:28:16PM +0530, Dev Jain wrote: >>>>>>>>>> On 18/06/25 5:27 pm, Lorenzo Stoakes wrote: >>>>>>>>>>> On Wed, Jun 18, 2025 at 05:15:50PM +0530, Dev Jain wrote: >>>>>>>>>>> Are you accounting for sys.max_map_count? If not, then you'll be hitting that >>>>>>>>>>> first. >>>>>>>>>> run_vmtests.sh will run the test in overcommit mode so that won't be an issue. >>>>>>>>> Umm, what? You mean overcommit all mode, and that has no bearing on the max >>>>>>>>> mapping count check. >>>>>>>>> >>>>>>>>> In do_mmap(): >>>>>>>>> >>>>>>>>> /* Too many mappings? */ >>>>>>>>> if (mm->map_count > sysctl_max_map_count) >>>>>>>>> return -ENOMEM; >>>>>>>>> >>>>>>>>> >>>>>>>>> As well as numerous other checks in mm/vma.c. >>>>>>>> Ah sorry, didn't look at the code properly just assumed that overcommit_always meant overriding >>>>>>>> this. >>>>>>> No problem! It's hard to be aware of everything in mm :) >>>>>>> >>>>>>>>> I'm not sure why an overcommit toggle is even necessary when you could use >>>>>>>>> MAP_NORESERVE or simply map PROT_NONE to avoid the OVERCOMMIT_GUESS limits? >>>>>>>>> >>>>>>>>> I'm pretty confused as to what this test is really achieving honestly. This >>>>>>>>> isn't a useful way of asserting mmap() behaviour as far as I can tell. >>>>>>>> Well, seems like a useful way to me at least : ) Not sure if you are in the mood >>>>>>>> to discuss that but if you'd like me to explain from start to end what the test >>>>>>>> is doing, I can do that : ) >>>>>>>> >>>>>>> I just don't have time right now, I guess I'll have to come back to it >>>>>>> later... it's not the end of the world for it to be iffy in my view as long as >>>>>>> it passes, but it might just not be of great value. >>>>>>> >>>>>>> Philosophically I'd rather we didn't assert internal implementation details like >>>>>>> where we place mappings in userland memory. At no point do we promise to not >>>>>>> leave larger gaps if we feel like it :) >>>>>> You have a fair point. Anyhow a debate for another day. >>>>>> >>>>>>> I'm guessing, reading more, the _real_ test here is some mathematical assertion >>>>>>> about layout from HIGH_ADDR_SHIFT -> end of address space when using hints. >>>>>>> >>>>>>> But again I'm not sure that achieves much and again also is asserting internal >>>>>>> implementation details. >>>>>>> >>>>>>> Correct behaviour of this kind of thing probably better belongs to tests in the >>>>>>> userland VMA testing I'd say. >>>>>>> >>>>>>> Sorry I don't mean to do down work you've done before, just giving an honest >>>>>>> technical appraisal! >>>>>> Nah, it will be rather hilarious to see it all go down the drain xD >>>>>> >>>>>>> Anyway don't let this block work to fix the test if it's failing. We can revisit >>>>>>> this later. >>>>>> Sure. @Aboorva and Donet, I still believe that the correct approach is to elide >>>>>> the gap check at the crossing boundary. What do you think? >>>>>> >>>>> One problem I am seeing with this approach is that, since the hint address >>>>> is generated randomly, the VMAs are also being created at randomly based on >>>>> the hint address.So, for the VMAs created at high addresses, we cannot guarantee >>>>> that the gaps between them will be aligned to MAP_CHUNK_SIZE. >>>>> >>>>> High address VMAs >>>>> ----------------- >>>>> 1000000000000-1000040000000 r--p 00000000 00:00 0 >>>>> 2000000000000-2000040000000 r--p 00000000 00:00 0 >>>>> 4000000000000-4000040000000 r--p 00000000 00:00 0 >>>>> 8000000000000-8000040000000 r--p 00000000 00:00 0 >>>>> e80009d260000-fffff9d260000 r--p 00000000 00:00 0 >>>>> >>>>> I have a different approach to solve this issue. >>>> It is really weird that such a large amount of VA space >>>> is left between the two VMAs yet mmap is failing. >>>> >>>> >>>> >>>> Can you please do the following: >>>> set /proc/sys/vm/max_map_count to the highest value possible. >>>> If running without run_vmtests.sh, set /proc/sys/vm/overcommit_memory to 1. >>>> In validate_complete_va_space: >>>> >>>> if (start_addr >= HIGH_ADDR_MARK && found == false) { >>>> found = true; >>>> continue; >>>> } >>> Thanks Dev for the suggestion. I set max_map_count and set overcommit >>> memory to 1, added this code change as well, and then tried. Still, the >>> test is failing >>> >>>> where found is initialized to false. This will skip the check >>>> for the boundary. >>>> >>>> After this can you tell whether the test is still failing. >>>> >>>> Also can you give me the complete output of proc/pid/maps >>>> after putting a sleep at the end of the test. >>>> >>> on powerpc support DEFAULT_MAP_WINDOW is 128TB and with >>> total address space size is 4PB With hint it can map upto >>> 4PB. Since the hint addres is random in this test random hing VMAs >>> are getting created. IIUC this is expected only. >>> >>> >>> 10000000-10010000 r-xp 00000000 fd:05 134226638 /home/donet/linux/tools/testing/selftests/mm/virtual_address_range >>> 10010000-10020000 r--p 00000000 fd:05 134226638 /home/donet/linux/tools/testing/selftests/mm/virtual_address_range >>> 10020000-10030000 rw-p 00010000 fd:05 134226638 /home/donet/linux/tools/testing/selftests/mm/virtual_address_range >>> 30000000-10030000000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> 10030770000-100307a0000 rw-p 00000000 00:00 0 [heap] >>> 1004f000000-7fff8f000000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> 7fff8faf0000-7fff8fe00000 rw-p 00000000 00:00 0 >>> 7fff8fe00000-7fff90030000 r-xp 00000000 fd:00 792355 /usr/lib64/libc.so.6 >>> 7fff90030000-7fff90040000 r--p 00230000 fd:00 792355 /usr/lib64/libc.so.6 >>> 7fff90040000-7fff90050000 rw-p 00240000 fd:00 792355 /usr/lib64/libc.so.6 >>> 7fff90050000-7fff90130000 r-xp 00000000 fd:00 792358 /usr/lib64/libm.so.6 >>> 7fff90130000-7fff90140000 r--p 000d0000 fd:00 792358 /usr/lib64/libm.so.6 >>> 7fff90140000-7fff90150000 rw-p 000e0000 fd:00 792358 /usr/lib64/libm.so.6 >>> 7fff90160000-7fff901a0000 r--p 00000000 00:00 0 [vvar] >>> 7fff901a0000-7fff901b0000 r-xp 00000000 00:00 0 [vdso] >>> 7fff901b0000-7fff90200000 r-xp 00000000 fd:00 792351 /usr/lib64/ld64.so.2 >>> 7fff90200000-7fff90210000 r--p 00040000 fd:00 792351 /usr/lib64/ld64.so.2 >>> 7fff90210000-7fff90220000 rw-p 00050000 fd:00 792351 /usr/lib64/ld64.so.2 >>> 7fffc9770000-7fffc9880000 rw-p 00000000 00:00 0 [stack] >>> 1000000000000-1000040000000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> 2000000000000-2000040000000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> 4000000000000-4000040000000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> 8000000000000-8000040000000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> eb95410220000-fffff90220000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> >>> >>> >>> >>> If I give the hint address serially from 128TB then the address >>> space is contigous and gap is also MAP_SIZE, the test is passing. >>> >>> 10000000-10010000 r-xp 00000000 fd:05 134226638 /home/donet/linux/tools/testing/selftests/mm/virtual_address_range >>> 10010000-10020000 r--p 00000000 fd:05 134226638 /home/donet/linux/tools/testing/selftests/mm/virtual_address_range >>> 10020000-10030000 rw-p 00010000 fd:05 134226638 /home/donet/linux/tools/testing/selftests/mm/virtual_address_range >>> 33000000-10033000000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> 10033380000-100333b0000 rw-p 00000000 00:00 0 [heap] >>> 1006f0f0000-10071000000 rw-p 00000000 00:00 0 >>> 10071000000-7fffb1000000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> 7fffb15d0000-7fffb1800000 r-xp 00000000 fd:00 792355 /usr/lib64/libc.so.6 >>> 7fffb1800000-7fffb1810000 r--p 00230000 fd:00 792355 /usr/lib64/libc.so.6 >>> 7fffb1810000-7fffb1820000 rw-p 00240000 fd:00 792355 /usr/lib64/libc.so.6 >>> 7fffb1820000-7fffb1900000 r-xp 00000000 fd:00 792358 /usr/lib64/libm.so.6 >>> 7fffb1900000-7fffb1910000 r--p 000d0000 fd:00 792358 /usr/lib64/libm.so.6 >>> 7fffb1910000-7fffb1920000 rw-p 000e0000 fd:00 792358 /usr/lib64/libm.so.6 >>> 7fffb1930000-7fffb1970000 r--p 00000000 00:00 0 [vvar] >>> 7fffb1970000-7fffb1980000 r-xp 00000000 00:00 0 [vdso] >>> 7fffb1980000-7fffb19d0000 r-xp 00000000 fd:00 792351 /usr/lib64/ld64.so.2 >>> 7fffb19d0000-7fffb19e0000 r--p 00040000 fd:00 792351 /usr/lib64/ld64.so.2 >>> 7fffb19e0000-7fffb19f0000 rw-p 00050000 fd:00 792351 /usr/lib64/ld64.so.2 >>> 7fffc5470000-7fffc5580000 rw-p 00000000 00:00 0 [stack] >>> 800000000000-2aab000000000 r--p 00000000 00:00 0 [anon:virtual_address_range] >>> >>> >> Thank you for this output. I can't wrap my head around why this behaviour changes >> when you generate the hint sequentially. The mmap() syscall is supposed to do the >> following (irrespective of high VA space or not) - if the allocation at the hint > Yes, it is working as expected. On PowerPC, the DEFAULT_MAP_WINDOW is > 128TB, and the system can map up to 4PB. > > In the test, the first mmap call maps memory up to 128TB without any > hint, so the VMAs are created below the 128TB boundary. > > In the second mmap call, we provide a hint starting from 256TB, and > the hint address is generated randomly above 256TB. The mappings are > correctly created at these hint addresses. Since the hint addresses > are random, the resulting VMAs are also created at random locations. > > So, what I tried is: mapping from 0 to 128TB without any hint, and > then for the second mmap, instead of starting the hint from 256TB, I > started from 128TB. Instead of using random hint addresses, I used > sequential hint addresses from 128TB up to 512TB. With this change, > the VMAs are created in order, and the test passes. > > 800000000000-2aab000000000 r--p 00000000 00:00 0 128TB to 512TB VMA > > I think we will see same behaviour on x86 with X86_FEATURE_LA57. > > I will send the updated patch in V2. Since you say it fails on both radix and hash, it means that the generic code path is failing. I see that on my system, when I run the test with LPA2 config, write() fails with errno set to -ENOMEM. Can you apply the following diff and check whether the test fails still. Doing this fixed it for arm64. diff --git a/tools/testing/selftests/mm/virtual_address_range.c b/tools/testing/selftests/mm/virtual_address_range.c index b380e102b22f..3032902d01f2 100644 --- a/tools/testing/selftests/mm/virtual_address_range.c +++ b/tools/testing/selftests/mm/virtual_address_range.c @@ -173,10 +173,6 @@ static int validate_complete_va_space(void) */ hop = 0; while (start_addr + hop < end_addr) { - if (write(fd, (void *)(start_addr + hop), 1) != 1) - return 1; - lseek(fd, 0, SEEK_SET); - if (is_marked_vma(vma_name)) munmap((char *)(start_addr + hop), MAP_CHUNK_SIZE); > >> addr succeeds, then all is well, otherwise, do a top-down search for a large >> enough gap. I am not aware of the nuances in powerpc but I really am suspecting >> a bug in powerpc mmap code. Can you try to do some tracing - which function >> eventually fails to find the empty gap? >> >> Through my limited code tracing - we should end up in slice_find_area_topdown, >> then we ask the generic code to find the gap using vm_unmapped_area. So I >> suspect something is happening between this, probably slice_scan_available(). >> >>>>> From 0 to 128TB, we map memory directly without using any hint. For the range above >>>>> 256TB up to 512TB, we perform the mapping using hint addresses. In the current test, >>>>> we use random hint addresses, but I have modified it to generate hint addresses linearly >>>>> starting from 128TB. >>>>> >>>>> With this change: >>>>> >>>>> The 0–128TB range is mapped without hints and verified accordingly. >>>>> >>>>> The 128TB–512TB range is mapped using linear hint addresses and then verified. >>>>> >>>>> Below are the VMAs obtained with this approach: >>>>> >>>>> 10000000-10010000 r-xp 00000000 fd:05 135019531 >>>>> 10010000-10020000 r--p 00000000 fd:05 135019531 >>>>> 10020000-10030000 rw-p 00010000 fd:05 135019531 >>>>> 20000000-10020000000 r--p 00000000 00:00 0 >>>>> 10020800000-10020830000 rw-p 00000000 00:00 0 >>>>> 1004bcf0000-1004c000000 rw-p 00000000 00:00 0 >>>>> 1004c000000-7fff8c000000 r--p 00000000 00:00 0 >>>>> 7fff8c130000-7fff8c360000 r-xp 00000000 fd:00 792355 >>>>> 7fff8c360000-7fff8c370000 r--p 00230000 fd:00 792355 >>>>> 7fff8c370000-7fff8c380000 rw-p 00240000 fd:00 792355 >>>>> 7fff8c380000-7fff8c460000 r-xp 00000000 fd:00 792358 >>>>> 7fff8c460000-7fff8c470000 r--p 000d0000 fd:00 792358 >>>>> 7fff8c470000-7fff8c480000 rw-p 000e0000 fd:00 792358 >>>>> 7fff8c490000-7fff8c4d0000 r--p 00000000 00:00 0 >>>>> 7fff8c4d0000-7fff8c4e0000 r-xp 00000000 00:00 0 >>>>> 7fff8c4e0000-7fff8c530000 r-xp 00000000 fd:00 792351 >>>>> 7fff8c530000-7fff8c540000 r--p 00040000 fd:00 792351 >>>>> 7fff8c540000-7fff8c550000 rw-p 00050000 fd:00 792351 >>>>> 7fff8d000000-7fffcd000000 r--p 00000000 00:00 0 >>>>> 7fffe9c80000-7fffe9d90000 rw-p 00000000 00:00 0 >>>>> 800000000000-2000000000000 r--p 00000000 00:00 0 -> High Address (128TB to 512TB) >>>>> >>>>> diff --git a/tools/testing/selftests/mm/virtual_address_range.c b/tools/testing/selftests/mm/virtual_address_range.c >>>>> index 4c4c35eac15e..0be008cba4b0 100644 >>>>> --- a/tools/testing/selftests/mm/virtual_address_range.c >>>>> +++ b/tools/testing/selftests/mm/virtual_address_range.c >>>>> @@ -56,21 +56,21 @@ >>>>> #ifdef __aarch64__ >>>>> #define HIGH_ADDR_MARK ADDR_MARK_256TB >>>>> -#define HIGH_ADDR_SHIFT 49 >>>>> +#define HIGH_ADDR_SHIFT 48 >>>>> #define NR_CHUNKS_LOW NR_CHUNKS_256TB >>>>> #define NR_CHUNKS_HIGH NR_CHUNKS_3840TB >>>>> #else >>>>> #define HIGH_ADDR_MARK ADDR_MARK_128TB >>>>> -#define HIGH_ADDR_SHIFT 48 >>>>> +#define HIGH_ADDR_SHIFT 47 >>>>> #define NR_CHUNKS_LOW NR_CHUNKS_128TB >>>>> #define NR_CHUNKS_HIGH NR_CHUNKS_384TB >>>>> #endif >>>>> -static char *hint_addr(void) >>>>> +static char *hint_addr(int hint) >>>>> { >>>>> - int bits = HIGH_ADDR_SHIFT + rand() % (63 - HIGH_ADDR_SHIFT); >>>>> + unsigned long addr = ((1UL << HIGH_ADDR_SHIFT) + (hint * MAP_CHUNK_SIZE)); >>>>> - return (char *) (1UL << bits); >>>>> + return (char *) (addr); >>>>> } >>>>> static void validate_addr(char *ptr, int high_addr) >>>>> @@ -217,7 +217,7 @@ int main(int argc, char *argv[]) >>>>> } >>>>> for (i = 0; i < NR_CHUNKS_HIGH; i++) { >>>>> - hint = hint_addr(); >>>>> + hint = hint_addr(i); >>>>> hptr[i] = mmap(hint, MAP_CHUNK_SIZE, PROT_READ, >>>>> MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); >>>>> >>>>> >>>>> >>>>> Can we fix it this way? --------------zEGIVxhJrmujVuu6DcZCTzL1 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On 23/06/25 11:02 pm, Donet Tom wrote:
On Mon, Jun 23, 2025 at 10:23:=
02AM +0530, Dev Jain wrote:
On 21/06/25 11:25 pm, Donet Tom wrote:
On Fri, Jun 20, 2025 at 08=
:15:25PM +0530, Dev Jain wrote:
On 19/06/25 1:53 pm, Don=
et Tom wrote:
On Wed, Jun 18, 2025 a=
t 08:13:54PM +0530, Dev Jain wrote:
On 18/06/25 8:05 pm,=
 Lorenzo Stoakes wrote:
On Wed, Jun 18, 20=
25 at 07:47:18PM +0530, Dev Jain wrote:
On 18/06/25 7:37=
 pm, Lorenzo Stoakes wrote:
On Wed, Jun 18=
, 2025 at 07:28:16PM +0530, Dev Jain wrote:
On 18/06/25 =
5:27 pm, Lorenzo Stoakes wrote:
On Wed, Ju=
n 18, 2025 at 05:15:50PM +0530, Dev Jain wrote:
Are you accounting for sys.max_map_count? If not, then you'll be hitting th=
at
first.
run_vmtests.=
sh will run the test in overcommit mode so that won't be an issue.
Umm, what? You=
 mean overcommit all mode, and that has no bearing on the max
mapping count check.

In do_mmap():

	/* Too many mappings? */
	if (mm->map_count > sysctl_max_map_count)
		return -ENOMEM;


As well as numerous other checks in mm/vma.c.
Ah sorry, didn't=
 look at the code properly just assumed that overcommit_always meant overri=
ding
this.
No problem! It's h=
ard to be aware of everything in mm :)

I'm not sure w=
hy an overcommit toggle is even necessary when you could use
MAP_NORESERVE or simply map PROT_NONE to avoid the OVERCOMMIT_GUESS limits?

I'm pretty confused as to what this test is really achieving honestly. This
isn't a useful way of asserting mmap() behaviour as far as I can tell.
Well, seems like=
 a useful way to me at least : ) Not sure if you are in the mood
to discuss that but if you'd like me to explain from start to end what the =
test
is doing, I can do that : )

I just don't have =
time right now, I guess I'll have to come back to it
later... it's not the end of the world for it to be iffy in my view as long=
 as
it passes, but it might just not be of great value.

Philosophically I'd rather we didn't assert internal implementation details=
 like
where we place mappings in userland memory. At no point do we promise to no=
t
leave larger gaps if we feel like it :)
You have a fair poin=
t. Anyhow a debate for another day.

I'm guessing, read=
ing more, the _real_ test here is some mathematical assertion
about layout from HIGH_ADDR_SHIFT -> end of address space when using hin=
ts.

But again I'm not sure that achieves much and again also is asserting inter=
nal
implementation details.

Correct behaviour of this kind of thing probably better belongs to tests in=
 the
userland VMA testing I'd say.

Sorry I don't mean to do down work you've done before, just giving an hones=
t
technical appraisal!
Nah, it will be rath=
er hilarious to see it all go down the drain xD

Anyway don't let t=
his block work to fix the test if it's failing. We can revisit
this later.
Sure. @Aboorva and D=
onet, I still believe that the correct approach is to elide
the gap check at the crossing boundary. What do you think?

One problem I am seein=
g with this approach is that, since the hint address
is generated randomly, the VMAs are also being created at randomly based on
the hint address.So, for the VMAs created at high addresses, we cannot guar=
antee
that the gaps between them will be aligned to MAP_CHUNK_SIZE.

High address VMAs
-----------------
1000000000000-1000040000000 r--p 00000000 00:00 0
2000000000000-2000040000000 r--p 00000000 00:00 0
4000000000000-4000040000000 r--p 00000000 00:00 0
8000000000000-8000040000000 r--p 00000000 00:00 0
e80009d260000-fffff9d260000 r--p 00000000 00:00 0

I have a different approach to solve this issue.
It is really weird that =
such a large amount of VA space
is left between the two VMAs yet mmap is failing.



Can you please do the following:
set /proc/sys/vm/max_map_count to the highest value possible.
If running without run_vmtests.sh, set /proc/sys/vm/overcommit_memory to 1.
In validate_complete_va_space:

if (start_addr >=3D HIGH_ADDR_MARK && found =3D=3D false) {
	found =3D true;
	continue;
}
Thanks Dev for the suggestion. I set max_map_count and set overcommit
memory to 1, added this code change as well, and then tried. Still, the
test is failing

where found is initializ=
ed to false. This will skip the check
for the boundary.

After this can you tell whether the test is still failing.

Also can you give me the complete output of proc/pid/maps
after putting a sleep at the end of the test.

on powerpc support DEFAULT_MAP_WINDOW is 128TB and with
total address space size is 4PB With hint it can map upto
4PB. Since the hint addres is random in this test random hing VMAs
are getting created. IIUC this is expected only.


10000000-10010000 r-xp 00000000 fd:05 134226638                          /h=
ome/donet/linux/tools/testing/selftests/mm/virtual_address_range
10010000-10020000 r--p 00000000 fd:05 134226638                          /h=
ome/donet/linux/tools/testing/selftests/mm/virtual_address_range
10020000-10030000 rw-p 00010000 fd:05 134226638                          /h=
ome/donet/linux/tools/testing/selftests/mm/virtual_address_range
30000000-10030000000 r--p 00000000 00:00 0                               [a=
non:virtual_address_range]
10030770000-100307a0000 rw-p 00000000 00:00 0                            [h=
eap]
1004f000000-7fff8f000000 r--p 00000000 00:00 0                           [a=
non:virtual_address_range]
7fff8faf0000-7fff8fe00000 rw-p 00000000 00:00 0
7fff8fe00000-7fff90030000 r-xp 00000000 fd:00 792355                     /u=
sr/lib64/libc.so.6
7fff90030000-7fff90040000 r--p 00230000 fd:00 792355                     /u=
sr/lib64/libc.so.6
7fff90040000-7fff90050000 rw-p 00240000 fd:00 792355                     /u=
sr/lib64/libc.so.6
7fff90050000-7fff90130000 r-xp 00000000 fd:00 792358                     /u=
sr/lib64/libm.so.6
7fff90130000-7fff90140000 r--p 000d0000 fd:00 792358                     /u=
sr/lib64/libm.so.6
7fff90140000-7fff90150000 rw-p 000e0000 fd:00 792358                     /u=
sr/lib64/libm.so.6
7fff90160000-7fff901a0000 r--p 00000000 00:00 0                          [v=
var]
7fff901a0000-7fff901b0000 r-xp 00000000 00:00 0                          [v=
dso]
7fff901b0000-7fff90200000 r-xp 00000000 fd:00 792351                     /u=
sr/lib64/ld64.so.2
7fff90200000-7fff90210000 r--p 00040000 fd:00 792351                     /u=
sr/lib64/ld64.so.2
7fff90210000-7fff90220000 rw-p 00050000 fd:00 792351                     /u=
sr/lib64/ld64.so.2
7fffc9770000-7fffc9880000 rw-p 00000000 00:00 0                          [s=
tack]
1000000000000-1000040000000 r--p 00000000 00:00 0                        [a=
non:virtual_address_range]
2000000000000-2000040000000 r--p 00000000 00:00 0                        [a=
non:virtual_address_range]
4000000000000-4000040000000 r--p 00000000 00:00 0                        [a=
non:virtual_address_range]
8000000000000-8000040000000 r--p 00000000 00:00 0                        [a=
non:virtual_address_range]
eb95410220000-fffff90220000 r--p 00000000 00:00 0                        [a=
non:virtual_address_range]




If I give the hint address serially from 128TB then the address
space is contigous and gap is also MAP_SIZE, the test is passing.

10000000-10010000 r-xp 00000000 fd:05 134226638                          /h=
ome/donet/linux/tools/testing/selftests/mm/virtual_address_range
10010000-10020000 r--p 00000000 fd:05 134226638                          /h=
ome/donet/linux/tools/testing/selftests/mm/virtual_address_range
10020000-10030000 rw-p 00010000 fd:05 134226638                          /h=
ome/donet/linux/tools/testing/selftests/mm/virtual_address_range
33000000-10033000000 r--p 00000000 00:00 0                               [a=
non:virtual_address_range]
10033380000-100333b0000 rw-p 00000000 00:00 0                            [h=
eap]
1006f0f0000-10071000000 rw-p 00000000 00:00 0
10071000000-7fffb1000000 r--p 00000000 00:00 0                           [a=
non:virtual_address_range]
7fffb15d0000-7fffb1800000 r-xp 00000000 fd:00 792355                     /u=
sr/lib64/libc.so.6
7fffb1800000-7fffb1810000 r--p 00230000 fd:00 792355                     /u=
sr/lib64/libc.so.6
7fffb1810000-7fffb1820000 rw-p 00240000 fd:00 792355                     /u=
sr/lib64/libc.so.6
7fffb1820000-7fffb1900000 r-xp 00000000 fd:00 792358                     /u=
sr/lib64/libm.so.6
7fffb1900000-7fffb1910000 r--p 000d0000 fd:00 792358                     /u=
sr/lib64/libm.so.6
7fffb1910000-7fffb1920000 rw-p 000e0000 fd:00 792358                     /u=
sr/lib64/libm.so.6
7fffb1930000-7fffb1970000 r--p 00000000 00:00 0                          [v=
var]
7fffb1970000-7fffb1980000 r-xp 00000000 00:00 0                          [v=
dso]
7fffb1980000-7fffb19d0000 r-xp 00000000 fd:00 792351                     /u=
sr/lib64/ld64.so.2
7fffb19d0000-7fffb19e0000 r--p 00040000 fd:00 792351                     /u=
sr/lib64/ld64.so.2
7fffb19e0000-7fffb19f0000 rw-p 00050000 fd:00 792351                     /u=
sr/lib64/ld64.so.2
7fffc5470000-7fffc5580000 rw-p 00000000 00:00 0                          [s=
tack]
800000000000-2aab000000000 r--p 00000000 00:00 0                         [a=
non:virtual_address_range]


Thank you for this output. I can't wrap my head around why this behaviour c=
hanges
when you generate the hint sequentially. The mmap() syscall is supposed to =
do the
following (irrespective of high VA space or not) - if the allocation at the=
 hint
Yes, it is working as expected. On PowerPC, the DEFAULT_MAP_WINDOW is
128TB, and the system can map up to 4PB.

In the test, the first mmap call maps memory up to 128TB without any
hint, so the VMAs are created below the 128TB boundary.

In the second mmap call, we provide a hint starting from 256TB, and
the hint address is generated randomly above 256TB. The mappings are
correctly created at these hint addresses. Since the hint addresses
are random, the resulting VMAs are also created at random locations.

So, what I tried is: mapping from 0 to 128TB without any hint, and
then for the second mmap, instead of starting the hint from 256TB, I
started from 128TB. Instead of using random hint addresses, I used
sequential hint addresses from 128TB up to 512TB. With this change,
the VMAs are created in order, and the test passes.

800000000000-2aab000000000 r--p 00000000 00:00 0    128TB to 512TB VMA

I think we will see same behaviour on x86 with X86_FEATURE_LA57.

I will send the updated patch in V2.

Since you say it fails on both r=
adix and hash, it means that the generic
code path is failing. I see that on my system, when I run the test with
LPA2 config, write() fails with errno set to -ENOMEM. Can you apply
the following diff and check whether the test fails still. Doing this
fixed it for arm64.

diff --git a/tools/testing/selftest=
s/mm/virtual_address_range.c b/tools/testing/selftests/mm/virtual_address_r=
ange.c
index b380e102b22f..3032902d01f2 100644
--- a/to=
ols/testing/selftests/mm/virtual_address_range.c
+++ b/tools/test=
ing/selftests/mm/virtual_address_range.c
@@ -173,10 +173,6 @@ sta=
tic int validate_complete_va_space(void)
                 */
                hop =3D 0;
                while (start_add=
r + hop < end_addr) {
-                       if (write(fd, (v=
oid *)(start_addr + hop), 1) !=3D 1)
-                           =
    return 1;
-                       lseek(fd, 0, SEEK_SET);
-
                        if (is_marked_vma(vma_name))
                                munmap((char *)(start_addr + hop), M=
AP_CHUNK_SIZE);

    

addr succeeds, then all is w=
ell, otherwise, do a top-down search for a large
enough gap. I am not aware of the nuances in powerpc but I really am suspec=
ting
a bug in powerpc mmap code. Can you try to do some tracing - which function
eventually fails to find the empty gap?

Through my limited code tracing - we should end up in slice_find_area_topdo=
wn,
then we ask the generic code to find the gap using vm_unmapped_area. So I
suspect something is happening between this, probably slice_scan_available(=
).


          
  From 0 to 128TB, we =
map memory directly without using any hint. For the range above
256TB up to 512TB, we perform the mapping using hint addresses. In the curr=
ent test,
we use random hint addresses, but I have modified it to generate hint addre=
sses linearly
starting from 128TB.

With this change:

The 0=E2=80=93128TB range is mapped without hints and verified accordingly.

The 128TB=E2=80=93512TB range is mapped using linear hint addresses and the=
n verified.

Below are the VMAs obtained with this approach:

10000000-10010000 r-xp 00000000 fd:05 135019531
10010000-10020000 r--p 00000000 fd:05 135019531
10020000-10030000 rw-p 00010000 fd:05 135019531
20000000-10020000000 r--p 00000000 00:00 0
10020800000-10020830000 rw-p 00000000 00:00 0
1004bcf0000-1004c000000 rw-p 00000000 00:00 0
1004c000000-7fff8c000000 r--p 00000000 00:00 0
7fff8c130000-7fff8c360000 r-xp 00000000 fd:00 792355
7fff8c360000-7fff8c370000 r--p 00230000 fd:00 792355
7fff8c370000-7fff8c380000 rw-p 00240000 fd:00 792355
7fff8c380000-7fff8c460000 r-xp 00000000 fd:00 792358
7fff8c460000-7fff8c470000 r--p 000d0000 fd:00 792358
7fff8c470000-7fff8c480000 rw-p 000e0000 fd:00 792358
7fff8c490000-7fff8c4d0000 r--p 00000000 00:00 0
7fff8c4d0000-7fff8c4e0000 r-xp 00000000 00:00 0
7fff8c4e0000-7fff8c530000 r-xp 00000000 fd:00 792351
7fff8c530000-7fff8c540000 r--p 00040000 fd:00 792351
7fff8c540000-7fff8c550000 rw-p 00050000 fd:00 792351
7fff8d000000-7fffcd000000 r--p 00000000 00:00 0
7fffe9c80000-7fffe9d90000 rw-p 00000000 00:00 0
800000000000-2000000000000 r--p 00000000 00:00 0    -> High Address (128=
TB to 512TB)

diff --git a/tools/testing/selftests/mm/virtual_address_range.c b/tools/tes=
ting/selftests/mm/virtual_address_range.c
index 4c4c35eac15e..0be008cba4b0 100644
--- a/tools/testing/selftests/mm/virtual_address_range.c
+++ b/tools/testing/selftests/mm/virtual_address_range.c
@@ -56,21 +56,21 @@
   #ifdef __aarch64__
   #define HIGH_ADDR_MARK  ADDR_MARK_256TB
-#define HIGH_ADDR_SHIFT 49
+#define HIGH_ADDR_SHIFT 48
   #define NR_CHUNKS_LOW   NR_CHUNKS_256TB
   #define NR_CHUNKS_HIGH  NR_CHUNKS_3840TB
   #else
   #define HIGH_ADDR_MARK  ADDR_MARK_128TB
-#define HIGH_ADDR_SHIFT 48
+#define HIGH_ADDR_SHIFT 47
   #define NR_CHUNKS_LOW   NR_CHUNKS_128TB
   #define NR_CHUNKS_HIGH  NR_CHUNKS_384TB
   #endif
-static char *hint_addr(void)
+static char *hint_addr(int hint)
   {
-       int bits =3D HIGH_ADDR_SHIFT + rand() % (63 - HIGH_ADDR_SHIFT);
+       unsigned long addr =3D ((1UL << HIGH_ADDR_SHIFT) + (hint * MA=
P_CHUNK_SIZE));
-       return (char *) (1UL << bits);
+       return (char *) (addr);
   }
   static void validate_addr(char *ptr, int high_addr)
@@ -217,7 +217,7 @@ int main(int argc, char *argv[])
          }
          for (i =3D 0; i < NR_CHUNKS_HIGH; i++) {
-               hint =3D hint_addr();
+               hint =3D hint_addr(i);
                  hptr[i] =3D mmap(hint, MAP_CHUNK_SIZE, PROT_READ,
                                 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);



Can we fix it this way?

      
--------------zEGIVxhJrmujVuu6DcZCTzL1--