From nobody Mon Feb 9 01:16:39 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 64C104ADD92 for ; Wed, 21 Jan 2026 16:57:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769014663; cv=fail; b=ZQYO3RNZXharVmTTLYkQHgXE67V5ke98KSs4c1MR8S5P8+Z+8nh7y8VDRrfhY7FeaBIT7ayRWe5Zca/3SUDI4m56HjwKyaSIUWvT6DSEbGQyFIluCZdXYquVf4W0NEslGwfZjKQAWMRdPr2ATd0zHW5RVzxorUCj/zDxAH7P0xk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769014663; c=relaxed/simple; bh=A0h5uvUCLd/O5vrbkFTjFTKGEfy1eM7yBw0ZYG/rws8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cp8QpuEr5O/LhLA3vnA2hn1YZR8VJPTeEsWrvN3cjpqSQF4ElazQ160Gq6YMXENGRgxVkSSwlK+J87EXrT3e6dBtFDlVzLmv21+L96Q5SIxanlp5k8O9K2ct0LbYRn1KVX0YQfpysMdg1u4z4epD2FVnC/3uncP14KXNjdAT7Uk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=UaEPgE0F; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=o4WOu/bK; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="UaEPgE0F"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="o4WOu/bK" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60LDLNeq3029082; Wed, 21 Jan 2026 16:57:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=5NvHNWgh0z3jOXwBLQYSIoh1Rxui+PQGVsVsGs8wmOQ=; b= UaEPgE0FKuDX5Qj9IrrV9D3Xln4c0bZpRZTeNGKw/HHugPK3Yr32jXO2DxxN/Jz7 Xkz+B/s3H6HgVagBNrdfGyxs4X4U2qhjZeYqLUuAf1AgHiyzDyfPvhycSg6tUxgy ABjdU2Zydp+nTt9xm5NRo77nXTVslQl2j7aHRSMGQctvdipnVd+74vPVPAMGsRse to9fGE8xQ1oXKFe4C/PaDoFU9VfsYYXCY4oOnEwu5Txx2sHzDuo65RyK0H2oNw0u /TXQll0dUxk+qU+Yi57naSLjAaQGHbTpPpH4XKCP04+yVyxsgP3FxXlJKole9g7b kOKTkIy7+4572Aqe1E48OQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br10vx8mk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 Jan 2026 16:57:14 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60LGNgJj008393; Wed, 21 Jan 2026 16:57:13 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012023.outbound.protection.outlook.com [40.107.209.23]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vbht22-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 Jan 2026 16:57:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iYm6XoH4KE0mJRDI7+Wi6kJKY9Ijs9R5msE6wDsjviooLmKMC6/R4vj/4A5ZPDOBGZ38cf2++CiH9uIibVYOpHSJWfTB2oG21lb33srzji08597RcQYqGGLCwY45DlHEqO0BRI51KPv/dAjrIWLBvP3EIyIhLZ4hc7rBmb6/+Dqt/m1yvhLUtw5JPekrVf6WtXNlyTEcF5NCJpuGF/ZGKQZ4S1FUk4yT35ZrJ+hEbaGB2evzEmeEsuYUK2D4VUMFz9tFLRN3xsc1nfzgJjBn59U+ZOo5P2L9LTzp08hSx2YWfCw6Ru3EK7rj0kiauZC4TbAfgfY7HXhqi8ikF5OWOg== 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=5NvHNWgh0z3jOXwBLQYSIoh1Rxui+PQGVsVsGs8wmOQ=; b=HT8A/sXqG7/mGqek0uBTiIKA4OTE6OPOplQBrSbZPro09kMseT/cKWef4kgZWbqqZZoRhdXmCMjz/p2bJBNEcsl82kjb7IDq8D79j9b9whZmMeld8cALUTqMhQj98yKUpBrirE1CeShP1yI5rPgZlEC+tkGsH0SWfNad5PIxb5LZlOAzjG7I2Afz/coAWZX2cTtifQmD+7Y8N5ALi22lBlwAWr6XaIbYJAF8EmjBxnopWPv10+w3nprf0tHgeHhZePpVY31KN8an8XKeXVXIeX2mVkgBI3Rz1vkXO7fyB825QIhsfR4pEQVN0xlIxky5XANMsE7fietim3nlPyf5LA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5NvHNWgh0z3jOXwBLQYSIoh1Rxui+PQGVsVsGs8wmOQ=; b=o4WOu/bKI70v9iDMwUKsJbjTKNOvM4iOnPIkbITmZgzeeyUn+4WwYTDLU+Z+sxy25XRiX3kSl3fuvDqMDr6DEeDE7p8sZ/pm5RkR5hcJDQFxPR4t2XrrG55AgMpWnPYW1rJmVdnE7r0ITrO8hhyMfB/SjQkY73vl5kL4vI16g5U= Received: from PH0PR10MB5777.namprd10.prod.outlook.com (2603:10b6:510:128::16) by LV8PR10MB7727.namprd10.prod.outlook.com (2603:10b6:408:1ed::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.9; Wed, 21 Jan 2026 16:57:10 +0000 Received: from PH0PR10MB5777.namprd10.prod.outlook.com ([fe80::4b84:e58d:c708:c8ce]) by PH0PR10MB5777.namprd10.prod.outlook.com ([fe80::4b84:e58d:c708:c8ce%4]) with mapi id 15.20.9542.008; Wed, 21 Jan 2026 16:57:10 +0000 From: "Liam R. Howlett" To: Andrew Morton Cc: maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Suren Baghdasaryan , Matthew Wilcox , Sidhartha Kumar , Vlastimil Babka , Alice Ryhl , Kuninori Morimoto , Geert Uytterhoeven , Arnd Bergmann , Christian Kujau , "Liam R. Howlett" Subject: [PATCH v2 12/29] maple_tree: Testing update for spanning store Date: Wed, 21 Jan 2026 11:45:09 -0500 Message-ID: <20260121164526.2093265-13-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260121164526.2093265-1-Liam.Howlett@oracle.com> References: <20260121164526.2093265-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4P288CA0075.CANP288.PROD.OUTLOOK.COM (2603:10b6:b01:d0::8) To PH0PR10MB5777.namprd10.prod.outlook.com (2603:10b6:510:128::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR10MB5777:EE_|LV8PR10MB7727:EE_ X-MS-Office365-Filtering-Correlation-Id: 64878371-c013-475d-6db3-08de590e1d22 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7UbQ7siAgysaSli+QZ+LTUWFsuIqLiOyVzf91mz4KXjycycI+J/hVGZhSCRt?= =?us-ascii?Q?13G3iRzeOha4lhLRgM4bTvmUsk9XKksjg9fJHZV35MzFK5qRw7Wvna0lrU49?= =?us-ascii?Q?I2/W70dbE8SzZShc9UEMbF+PREz9fKphFWWPjR6Q4t9cmeO3zdsXzoWDEWq1?= =?us-ascii?Q?GU0fYVPuQ1Z/GWLQEX+tNynh/5pZfGnGNMcDCZ7QUtRYLZy+kwqX1u7m1Uzw?= =?us-ascii?Q?bA37w0dGpUpOBM5QbOKFP/mv7rqgo6NoPUJUn65BOhHht9CJJJpgCvIqHMsP?= =?us-ascii?Q?I9Q5YfqWWOaaAqCi4hS+W9H5JXFNs0kd8iVB9vZyM2Zt1P4iDbWbu92LW5XN?= =?us-ascii?Q?VO2GrIpHc7IdWg2CLGrleXyOl47pzLHu7QgaF2EsJdBJNbHaits+29BXRbrL?= =?us-ascii?Q?TRezdaJ3dV6OkYHgvDUssVmoJ7tQkMzi36tPdhxapdp/Dfy0nVnjAnHx2coC?= =?us-ascii?Q?BWmrnJBvksDeulaLf6q4AZHz9aFyq1hESGSXRDIF939u9CH8z/4YEmzXPnJU?= =?us-ascii?Q?/iA7yaTZBMSX+BGW35oqfkS24BCxDvltAa9u4gnaeZP2s6Fo+zvOhQ4EZ2js?= =?us-ascii?Q?Lq4CyMAVa+G8GNZ8OGzqHsTk1f47IUTDQcsTO2KJ981+iDTStn0IQYPHt1Ss?= =?us-ascii?Q?eNgwqzCDB846jtW3M8s2aK8YKecXuGXH0A3yiP+VWP9e/3O2cCeZAVDw+0x0?= =?us-ascii?Q?bK41NNDSPEDeszdmMYASNpVeUjUMesSbVo/C0KRDk2FuSyz7DfB6nyvDVgFQ?= =?us-ascii?Q?SP69CuN3O0XxI+0jNZdImNDrKWc/X8AxGcWKGchXtrm8OfhAthgXj88TgK0P?= =?us-ascii?Q?fpIlBtK3VU8AHBrIlnclGdpOhu7SumOi0SIN0nCPKdIdoAfOBdKsubvI7q/g?= =?us-ascii?Q?shvgR0Eg/EMmdKUxtKAS43fRrDlKu937dGnCkFViW4amTNwkjwcqcb7OWBsE?= =?us-ascii?Q?UU0KLArMrsPESoOGh7i+JFdKT0euA8UruMT2TVkE9A2+Dz9H2uB25+mL5ArS?= =?us-ascii?Q?ua53aQjm2CMcRYUmDzEXWwJutwXXJGkt8dMmIdO9/WECgqxrAUf7Fc7P1GZ7?= =?us-ascii?Q?pTk/anE+Msu8o/+8LB/FoA3xsXhoaVZ/0zbq+L9ocZa2BcHZpJLuJT1g+L1E?= =?us-ascii?Q?OHnLpTz0gBnKSp8LZtL+MTkf8UbB20htkKjvPnLbS/EYico5l9wsZs/UYbVO?= =?us-ascii?Q?gDoFoCND3DKJRbeRTpFXA4NxZCVA/zxc07zvPeunI6mFsZPhGaPiVuRXZw0o?= =?us-ascii?Q?5tEJkLyRPERpFhuRhrA3uGBIDupwyHBmzE67uceoUQXa43bbtiMBKTuQr3Xg?= =?us-ascii?Q?TzzfMft4XNhxFY7A2vwGr844QUZTJE16IOmpGz8gs294L1s0PXLR4wOFBAz0?= =?us-ascii?Q?S7iivCh9fvTG+uh7/72PKr7PfqJM4h5Bvl42lbVREGXSAxoywwXpsyOsuafh?= =?us-ascii?Q?HfBrrun9J2rmVJ8htF0VHtRT0WwACVf7iKjZv3vUkvPpczN0Zacn+yswLBO3?= =?us-ascii?Q?QkTCZiKZLGSaDmiJYSF3lO0TFD1hT4QOoZVLxiMCfJT/qnA7HrOof5nG8fch?= =?us-ascii?Q?RzBMo9BcSgR/ENNhI78=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR10MB5777.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WqjpcFH/D7K5V7krVPlbMl7oys8ctJ3b9U2AQBElL4IDI5wAzzRgFFG9dtnb?= =?us-ascii?Q?mjBa01/96Ptu/1vQzpYrzp7arUhJVW1g3Igc/FgoptVg4zn37v/Eau5wmxTV?= =?us-ascii?Q?BFdXQpEIlL/gPipnaZ3luDVJKDZl/2ASyqeJPuGcDUD91UcRId3bZkV5SOOI?= =?us-ascii?Q?Wxo3drBTBomWrNUYppSRCPNDYP/5h47Zio4AxHJ9jpHbN2tuqFuFhJxPz0pp?= =?us-ascii?Q?1N5Q+myUqnIdf2X1wdwPEYg4OMuzW+cGRuA/4+ZvmY2iVrq+BUrD2SyvG1ql?= =?us-ascii?Q?GQfkQ2Yys6orvzOaWUfEifdxx/cPq8TOHBd6S4c9I8b7x4M1C/jTh4aL1uyV?= =?us-ascii?Q?6v9Rq9+010sUO/ivAgCYIufaTifOAo/h84ZmqftSvtnon9y81OZzgWb5VlN9?= =?us-ascii?Q?lMuZOdnfWCfXlXy9zzQuhu87CYhe7q5xB4Zq1DJRkEtYNilQPybWxaGYzwMn?= =?us-ascii?Q?p4JGF0JbUkboDfYtTNxVaBNAIlQSPKjzW1l58zKzxWymGgFIHk2iqGiTPxF1?= =?us-ascii?Q?Zk/iUG0oGHp84DQc4Cyna2AQ6lSR6QlNdTu8sHKPX/oUgHBqap2xkdmlQifM?= =?us-ascii?Q?tkrMR1q6BlBC/VR4VEv0lp3iZYUxWbGV3pZf1HxrnZY+kZh+57w0QMQeEgHI?= =?us-ascii?Q?gdIy3gotMt6E4CIuNi6AcMpXqTh64+VMRignWAxW0DL8L2llDWZ3Zugp8vZv?= =?us-ascii?Q?4/9o3AAkg6J/cV02INxz+AS7kA8VuNNuh05tcVqKJDRiroNHLqutq9Zuc1jU?= =?us-ascii?Q?RSkqOcOfTZYuLDPzKa9K/tptSZkBWRAz/0qBpcKKAfA3mFl3H8QV9t+DbEei?= =?us-ascii?Q?Tu1VLtTrn/lyVQ5OhcAt4ogf0WKOKESk51OMwb+4b0k6FTCcQtSSeTa3vbVv?= =?us-ascii?Q?9RrEUd4rUqXFf14nn4/cT3hcgN1G6NlaQKXOq/ZDGNfjyiBxZ1GYJm87KLEp?= =?us-ascii?Q?lcwmL6+AscEnCiWeKrtbMyr5mSpl8YI2qEjkptPeBIVaHzLaZKjiYozKlJtL?= =?us-ascii?Q?hrdGxQHT9kQi76yX56keA0CBdCQG99udWumnlskaazYDv2WO1rGUaP0V7MI8?= =?us-ascii?Q?zkpFaYV6L2BuXJ3T4YhGe9uBoFpCLl2NmnY8jhoR7gm0D1QZ2c8bRWysCCIK?= =?us-ascii?Q?GTvXo6Ex7FwqSJK2aY6NUmDfqWe2lMp8vYhGh03WTQVvsZdSnJLNM9RY2c71?= =?us-ascii?Q?GoEbnxQoJTzHuwAsudnvbQbJh6jLXjtIvzdsNm7MFHTIscTc2ZTU0O4Kko65?= =?us-ascii?Q?8Kc7ETEYKiHMbsVh9cdqlt48Z3IggzaJ/v9dNoJ4OTGPo2cHevbmBsbsyljC?= =?us-ascii?Q?03E5fQ3iAjjNh5X1rdisp9llpF0J5+76jXy5fhzl2GaAz8OIaO0f14MUNgc7?= =?us-ascii?Q?s9MOcP8h8nRlVh0jzSpz6cdhaPj6e/aDzw5CmvYLdIcy/p3scQ8GnLiCeEyL?= =?us-ascii?Q?VCrucCJ5hPFE4O+uH50nk1axL+kPXTYnrKTzcMtX5CX7DKn6PeyOuuxd0GM/?= =?us-ascii?Q?q1veCc/J5dy63Jg8oTe+zW2QhWntE5gy8+x6BohCk56mi1XUP2zzkyDknj8L?= =?us-ascii?Q?1I19UVJDBcRQUFAIekJKOKzLQNgQd7y9xyJFRfWleWjh6V1pEfkxBTdhK3Ne?= =?us-ascii?Q?mVEiB7bU9juNULPcpkU8ECZgZsIN1bu9sujr+L/JDFJxxduiGx6QgLC9CuGw?= =?us-ascii?Q?j5tlPuHytK+QpZyiYCA0yyAIExPafLUUkkaIesZ2n+SeQBVUnBJ6su+WRPnm?= =?us-ascii?Q?O/fhDvhTbQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: bq05/cFLRO1noF3q+VlZzqmyRZ53wu8PsJ3Qvarme4RXJXzpQLF7gS+38fMZgI8axmpMlq6lPEgfam+/FgqdbhlSgJZo82HogCMVqqeStS8Ksf3PTRQaa9+xwlbGNi2DQUFIPZ9IeKFom6h4J3il5fsVltV+hjJeA/U4lK09kzgpb9src9yAf2kEl7XFFKKFuXDp4jWxU6hjOHtDjsr7iz22VU1XlneyEXQPQsMeVxJJNp3wAWVTzan9WFwuULZWreRt8Z74GeHMhyceeo1bPUCX3As0WUWkRN8SQ7cDNiepo8yIDiuOND6xP2tzmA8+93xRQs+sDNnmK8S3q4fgc0TY59IHeNnRf/N54+7JPj89xHAyv6SRrk2PdDIHmbYZHHt7slQvz8thbBh6rlTQhuGxTKOffUE8vHcaSsd2Ph6CYIVDp2YmnO2L6rMTuzsl6H8JDyERf2l7aAAL+Ekl7wyrfYq6jilm698g3EnT0Raz9WuajV5TxGKSA1ba/o68IEuX0DtBcLwj3lnRZA9bmd1PPtFD9DK9eltp0xM+sYDzSBLihLtMvMiN+ZgPbKcyDJOk21AJ03wvN1DMtP5eJaM+TDsujnQt37fM+nfpSiw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64878371-c013-475d-6db3-08de590e1d22 X-MS-Exchange-CrossTenant-AuthSource: PH0PR10MB5777.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jan 2026 16:57:08.8407 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GvbxTAnsOSwBPYHE8bthEY1gUnqKANZz0grbpQpMZkTSgcEPBFQ/KL5ds/ABz/Tk5yCGBKphqK2Vlc08qlYxFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR10MB7727 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-21_02,2026-01-20_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 spamscore=0 malwarescore=0 bulkscore=0 adultscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601210142 X-Authority-Analysis: v=2.4 cv=H4nWAuYi c=1 sm=1 tr=0 ts=6971056a cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=t0zg3OoRVwqkdlAMXQQA:9 X-Proofpoint-GUID: VZ8nKsl1fGyedEmbz6ORs0cWBXEqRGOe X-Proofpoint-ORIG-GUID: VZ8nKsl1fGyedEmbz6ORs0cWBXEqRGOe X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIxMDE0MyBTYWx0ZWRfX479EmmyWz0FG eVTZBv87sEs30TxLsHbRbHWO2XWi1udVXSPbmZGInqqxj8Ybrvi0vtOEMhwGDl08lw7U9Cg+LwH Montu6PtlIUcocxzH4PUWJByN0CCf4FZaacbOfK/9hE3XfWyC8NRPYOsAX6MFlHBDQl4UF9nDAs W0nm8idNs9nEqbXK6RT6DS7lyd5/R6OeoFS6SbJem1N3an5bZ7U0cehNmAYXywvmxWq0XR1tIv9 Ed5YGOnmbZ5W4oIu3WP2PdNAekedmpp4F52HWOyiMCow4m/UrvkZK1PHInCu9rKCHKaUNkgDPXS y1r6a2KJVzD5RHTaxx1Lo/pEDf8V/HohxjP1sUP3zJDzX/6yBV3+ZyNgPtYp8heJoOTbR8tE019 U/+ypRFCRILJIvBGkGKjVBGdaYLD4X0F7gF8T7qTr9Lxr7VKur9jX/QIa0EVPItE8Awugosx6hX 9o8lZ+nSYFl1Q2rfxow== Content-Type: text/plain; charset="utf-8" Spanning store had some corner cases which showed up during rcu stress testing. Add explicit tests for those cases. At the same time add some locking for easier visibility of the rcu stress testing. Only a single dump of the tree will happen on the first detected issue instead of flooding the console with output. Signed-off-by: Liam R. Howlett --- tools/testing/radix-tree/maple.c | 172 +++++++++++++++++++++++++++++-- 1 file changed, 163 insertions(+), 9 deletions(-) diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/ma= ple.c index 5c1b18e3ed210..85fb5616c133c 100644 --- a/tools/testing/radix-tree/maple.c +++ b/tools/testing/radix-tree/maple.c @@ -38,6 +38,7 @@ struct rcu_test_struct2 { =20 unsigned long index[RCU_RANGE_COUNT]; unsigned long last[RCU_RANGE_COUNT]; + pthread_mutex_t dump; }; =20 struct rcu_test_struct3 { @@ -33997,8 +33998,25 @@ static void *rcu_reader_fwd(void *ptr) } } =20 - RCU_MT_BUG_ON(test, mas.index !=3D r_start); - RCU_MT_BUG_ON(test, mas.last !=3D r_end); + if (mas.index !=3D r_start) { + if (pthread_mutex_trylock(&test->dump) !=3D 0) { + rcu_read_unlock(); + goto quit; + } + printk("start is wrong: %lx (%lu) vs expected %lx (%lu)\n", + mas.index, mas.index, r_start, r_start); + RCU_MT_BUG_ON(test, mas.index !=3D r_start); + } + + if (mas.last !=3D r_end) { + if (pthread_mutex_trylock(&test->dump) !=3D 0) { + rcu_read_unlock(); + goto quit; + } + printk("last is wrong: %lx (%lu) vs expected %lx (%lu)\n", + mas.last, mas.last, r_end, r_end); + RCU_MT_BUG_ON(test, mas.last !=3D r_end); + } =20 if (i =3D=3D reader->flip) { alt =3D xa_mk_value(index + i + RCU_RANGE_COUNT); @@ -34014,7 +34032,8 @@ static void *rcu_reader_fwd(void *ptr) else if (entry =3D=3D alt) toggled =3D true; else { - printk("!!%lu-%lu -> %p not %p or %p\n", mas.index, mas.last, entry, = expected, alt); + printk("!!%lu-%lu -> %p not %p or %p\n", + mas.index, mas.last, entry, expected, alt); RCU_MT_BUG_ON(test, 1); } =20 @@ -34047,9 +34066,11 @@ static void *rcu_reader_fwd(void *ptr) usleep(test->pause); } =20 +quit: rcu_unregister_thread(); return NULL; } + /* RCU reader in decreasing index */ static void *rcu_reader_rev(void *ptr) { @@ -34119,13 +34140,17 @@ static void *rcu_reader_rev(void *ptr) line =3D __LINE__; =20 if (mas.index !=3D r_start) { + if (pthread_mutex_trylock(&test->dump) !=3D 0) { + rcu_read_unlock(); + goto quit; + } + alt =3D xa_mk_value(index + i * 2 + 1 + RCU_RANGE_COUNT); mt_dump(test->mt, mt_dump_dec); - printk("Error: %lu-%lu %p !=3D %lu-%lu %p %p line %d i %d\n", - mas.index, mas.last, entry, - r_start, r_end, expected, alt, - line, i); + printk("Error: %p %lu-%lu %p !=3D %lu-%lu %p %p line %d i %d\n", + mas.node, mas.index, mas.last, entry, + r_start, r_end, expected, alt, line, i); } RCU_MT_BUG_ON(test, mas.index !=3D r_start); RCU_MT_BUG_ON(test, mas.last !=3D r_end); @@ -34180,6 +34205,7 @@ static void *rcu_reader_rev(void *ptr) usleep(test->pause); } =20 +quit: rcu_unregister_thread(); return NULL; } @@ -34329,6 +34355,7 @@ static void rcu_stress(struct maple_tree *mt, bool = forward) test.seen_modified =3D 0; test.thread_count =3D 0; test.start =3D test.stop =3D false; + pthread_mutex_init(&test.dump, NULL); seed =3D time(NULL); srand(seed); for (i =3D 0; i < RCU_RANGE_COUNT; i++) { @@ -34414,6 +34441,7 @@ struct rcu_test_struct { unsigned long removed; /* The index of the removed entry */ unsigned long added; /* The index of the removed entry */ unsigned long toggle; /* The index of the removed entry */ + pthread_mutex_t dump; }; =20 static inline @@ -34506,7 +34534,9 @@ static void *rcu_loop(void *ptr) /* Out of the interesting range */ if (mas.index < test->index || mas.index > test->last) { if (entry !=3D expected) { - printk("%lx - %lx =3D %p not %p\n", + if (pthread_mutex_trylock(&test->dump) !=3D 0) + break; + printk("\nERROR: %lx - %lx =3D %p not %p\n", mas.index, mas.last, entry, expected); } MT_BUG_ON(test->mt, entry !=3D expected); @@ -34854,6 +34884,7 @@ static noinline void __init check_rcu_threaded(stru= ct maple_tree *mt) vals.range_end =3D ULONG_MAX; vals.seen_entry2 =3D 0; vals.seen_entry3 =3D 0; + pthread_mutex_init(&vals.dump, NULL); =20 run_check_rcu(mt, &vals); mtree_destroy(mt); @@ -35250,6 +35281,8 @@ static noinline void __init check_spanning_write(st= ruct maple_tree *mt) { unsigned long i, max =3D 5000; MA_STATE(mas, mt, 1200, 2380); + struct maple_enode *enode; + struct maple_node *pnode; =20 for (i =3D 0; i <=3D max; i++) mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); @@ -35410,6 +35443,128 @@ static noinline void __init check_spanning_write(= struct maple_tree *mt) mas_set_range(&mas, 76, 875); mas_store_gfp(&mas, NULL, GFP_KERNEL); mtree_unlock(mt); + mtree_destroy(mt); + + mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); + for (i =3D 0; i <=3D max; i++) + mtree_test_store_range(mt, i * 10, i * 10 + 5, &i); + + if (MAPLE_32BIT) + i =3D 49750; /* 0xC25B */ + else + i =3D 49835; /* 0xC2AB */ + + mtree_lock(mt); + /* Store a null across a boundary that ends in a null */ + mas_set(&mas, i); /* 0xC2AB */ + MT_BUG_ON(mt, mas_walk(&mas) =3D=3D NULL); + MT_BUG_ON(mt, mas.end !=3D mas.offset); + MT_BUG_ON(mt, mas_next_range(&mas, ULONG_MAX) !=3D NULL); + mas_set_range(&mas, i, mas.last - 1); + mas_store_gfp(&mas, NULL, GFP_KERNEL); + mt_validate(mt); + + /* Store a null across a boundary that starts and ends in a null */ + mas_set(&mas, 49849); + MT_BUG_ON(mt, mas_walk(&mas) !=3D NULL); + MT_BUG_ON(mt, mas.index !=3D 49846); + mas_set(&mas, 49876); + MT_BUG_ON(mt, mas_walk(&mas) !=3D NULL); + MT_BUG_ON(mt, mas.last !=3D 49879); + mas_set_range(&mas, 49849, 49876); + mas_store_gfp(&mas, NULL, GFP_KERNEL); + /* Results in 49846-49879: (nil) */ + MT_BUG_ON(mt, mas.index !=3D 49846); + MT_BUG_ON(mt, mas.last !=3D 49879); + mt_validate(mt); + + /* Store a null across a boundary that starts and ends next to nulls */ + mas_set(&mas, 49800); + MT_BUG_ON(mt, mas_walk(&mas) =3D=3D NULL); + MT_BUG_ON(mt, mas.index !=3D 49800); + mas_set(&mas, 49815); + MT_BUG_ON(mt, mas_walk(&mas) =3D=3D NULL); + MT_BUG_ON(mt, mas.last !=3D 49815); + mas_set_range(&mas, 49800, 49815); + mas_store_gfp(&mas, NULL, GFP_KERNEL); + /* Results in 49846-49879: (nil) */ + MT_BUG_ON(mt, mas.index !=3D 49796); + MT_BUG_ON(mt, mas.last !=3D 49819); + mt_validate(mt); + + /* Store a value across a boundary that starts and ends in a null */ + mas_set(&mas, 49907); + MT_BUG_ON(mt, mas_walk(&mas) !=3D NULL); + MT_BUG_ON(mt, mas.index !=3D 49906); + mas_set(&mas, 49928); + MT_BUG_ON(mt, mas_walk(&mas) !=3D NULL); + MT_BUG_ON(mt, mas.last !=3D 49929); + mas_set_range(&mas, 49907, 49928); + mas_store_gfp(&mas, check_spanning_write, GFP_KERNEL); + MT_BUG_ON(mt, mas.index !=3D 49907); + MT_BUG_ON(mt, mas.last !=3D 49928); + mt_validate(mt); + + /* Store a value across a node boundary that causes a 3 way split */ + + if (MAPLE_32BIT) + i =3D 49590; /* 0xc1b6 */ + else + i =3D 49670; /* 0xC206 */ + + mas_set(&mas, i); + MT_BUG_ON(mt, mas_walk(&mas) =3D=3D NULL); + MT_BUG_ON(mt, mas.index !=3D i); + MT_BUG_ON(mt, mas.end !=3D mt_slot_count(mas.node) - 1); + enode =3D mas.node; + MT_BUG_ON(mt, mas_next_range(&mas, ULONG_MAX) !=3D NULL); + MT_BUG_ON(mt, mas.index !=3D i + 6); + MT_BUG_ON(mt, mas.end !=3D mt_slot_count(mas.node) - 1); + MT_BUG_ON(mt, enode =3D=3D mas.node); + mas_set_range(&mas, i + 2, i + 7); + mas_store_gfp(&mas, check_spanning_write, GFP_KERNEL); + MT_BUG_ON(mt, mas.index !=3D i + 2); + MT_BUG_ON(mt, mas.last !=3D i + 7); + mt_validate(mt); + + /* 2 levels of basically the same testing */ + + if (MAPLE_32BIT) { + /* 32bit needs a bit more work to fill the nodes. + * The two parent nodes need to be filled (they have one space + * vacant) without causing a split at the store locations (or + * the siblings). + */ + i =3D 44426; + mas_set(&mas, i); + mas_store_gfp(&mas, check_spanning_write, GFP_KERNEL); + i =3D 45126; + mas_set(&mas, i); + mas_store_gfp(&mas, check_spanning_write, GFP_KERNEL); + i =3D 44790; + } else { + /* 48950 - 48955 =3D> ptr, 48956 - 48959 =3D> NULL */ + i =3D 48950; + + } + mas_set(&mas, i); + MT_BUG_ON(mt, mas_walk(&mas) =3D=3D NULL); + MT_BUG_ON(mt, mas.index !=3D i); + MT_BUG_ON(mt, mas.end !=3D mt_slot_count(mas.node) - 1); + enode =3D mas.node; + pnode =3D mte_parent(enode); + MT_BUG_ON(mt, mas_next_range(&mas, ULONG_MAX) !=3D NULL); + MT_BUG_ON(mt, mas.index !=3D i + 6); + MT_BUG_ON(mt, mas.end !=3D mt_slot_count(mas.node) - 1); + MT_BUG_ON(mt, enode =3D=3D mas.node); + MT_BUG_ON(mt, pnode =3D=3D mte_parent(mas.node)); + mas_set_range(&mas, i + 2, i + 8); + mas_store_gfp(&mas, NULL, GFP_KERNEL); + mt_validate(mt); + + mtree_unlock(mt); + mtree_destroy(mt); + rcu_barrier(); } /* End of spanning write testing */ =20 @@ -36029,7 +36184,6 @@ static inline int check_vma_modification(struct map= le_tree *mt) return 0; } =20 - void farmer_tests(void) { struct maple_node *node; --=20 2.47.3