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 F29DEC02182 for ; Thu, 23 Jan 2025 15:55:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6D8F66B0085; Thu, 23 Jan 2025 10:55:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 687D66B0088; Thu, 23 Jan 2025 10:55:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 501B66B0089; Thu, 23 Jan 2025 10:55:32 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 2BDA06B0085 for ; Thu, 23 Jan 2025 10:55:32 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C82B6A132A for ; Thu, 23 Jan 2025 15:55:31 +0000 (UTC) X-FDA: 83039166462.08.E289D87 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2074.outbound.protection.outlook.com [40.107.92.74]) by imf02.hostedemail.com (Postfix) with ESMTP id D7F9A8001B for ; Thu, 23 Jan 2025 15:55:28 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b=kdPPDRW5; spf=pass (imf02.hostedemail.com: domain of Nathan.Fontenot@amd.com designates 40.107.92.74 as permitted sender) smtp.mailfrom=Nathan.Fontenot@amd.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=quarantine) header.from=amd.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1737647729; 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=6GHLgANVDtn4gNXawGez8S/bwEv5pnvKRqS/lKk1hrY=; b=Hm/T+Q/tPxYVBdrxIlVBA0MDK6L1yRZg/7arNsyvd7iommzbMXohiNJVduUEEkv4Bp0kCj qo1VSbAKjPiRoS/vR3njAYWKGc0NcieyR80t7Lu2dRObwdVlEIxJ+H/XECX68lUwsjTClb kYTVZs/fJQvLQ94anybxu2wmqTf0Osc= ARC-Authentication-Results: i=2; imf02.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b=kdPPDRW5; spf=pass (imf02.hostedemail.com: domain of Nathan.Fontenot@amd.com designates 40.107.92.74 as permitted sender) smtp.mailfrom=Nathan.Fontenot@amd.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=quarantine) header.from=amd.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1737647729; a=rsa-sha256; cv=pass; b=ZrDmW/gge5TDxt/+dnXy+OG2p1SJWkOPI93d8Z5iTNSmPKGnP2tZnG9u2Y51CiqhyQjBQ1 hwBwedW1+zRDRMb95TTO5MNDpVRaD7SSuV1s/S4c4m2J4TCUEI7UPHS/aWsmMVcaclWWpz UOkXf/bM0liayNoizPiArpvqKiWMqkM= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SpJ67p+R5hwh6lWAS0yVotuYWcfOG5Xos8XRsmfRfbwawCTUQMh724cF1CTjRfFCftVXVyqk8BocP30p31hTJSodmjh8kiay3FuMNclbPWH+TjD5qjat3vcznvvqUWE/mqk6ibPvmAbo/cRcSNXNzKbUAn+KIOIMqbuMNAsyyzSFgt5xBub4X/DySpLKqSkVhxDBDou+9lv9GJN20oxWuTd+o1PPGceUOIG4gF9q+ql1Rwr5Ot7/oUY6MsCNZAgq5kMey2ADc/3a4x2llFgJ4bvJjYoqBLBN4Wv0q4TUKWvteiFe2UMHxAlQsHz5mHRPZ81KZuKFsuBajDd2503ceg== 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=6GHLgANVDtn4gNXawGez8S/bwEv5pnvKRqS/lKk1hrY=; b=QMQKXde091WOuiaFEwgkidmvSU3m4J2v33eE0t7vTvzlzhJtDKrQEjj5uCgJGoqi03VulMYB2CU/HursigO2S6WxhUkQqDrSFbVFH8Yotyr5EF/7F605xneZ52lYGSHJYepW3okRGGM5jwgUC/Y8rW22NalpWLNEr27bmLgPt7VBfSuiYRUoCGIMjL4vIhSYMfyUbuN7jGTBEq2lJXjjRvKBn2IY5Z+fTjEwWW7+aub4mdyKpMEzUBYgoTqei3okON8ALaj1fBxlSWevrYfFvKpahbOZcNhLzWnBCqouxdrTfSek/1cEA0ABC8ORFj6W6lBU+Ckx6aVCAWEWWMcQLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6GHLgANVDtn4gNXawGez8S/bwEv5pnvKRqS/lKk1hrY=; b=kdPPDRW5xgYjNGWKvMkD7HKtwtEW3QrcxyoQLKP5wPigqAsH0Tpamposj5BS0T7pX1wca10mqc9Jy9aBewqno75MLEWK7F2Tdg8bHmhlsYrQhwiHoiwJly9BUALQlMcYOCvih8poWNdJZ0Ajl7+hjMWRLDkq0AMrEI9LUplfgcw= Received: from MN0PR12MB6222.namprd12.prod.outlook.com (2603:10b6:208:3c2::19) by IA1PR12MB8310.namprd12.prod.outlook.com (2603:10b6:208:3ff::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.17; Thu, 23 Jan 2025 15:55:26 +0000 Received: from MN0PR12MB6222.namprd12.prod.outlook.com ([fe80::4044:a263:92a1:6b3e]) by MN0PR12MB6222.namprd12.prod.outlook.com ([fe80::4044:a263:92a1:6b3e%7]) with mapi id 15.20.8377.009; Thu, 23 Jan 2025 15:55:26 +0000 Message-ID: <86c94cac-7fd4-4e5e-8c16-6935dcd2ea1a@amd.com> Date: Thu, 23 Jan 2025 09:55:25 -0600 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 1/4] kernel/resource: Introduce managed SOFT RESERVED resources To: Fan Ni , Nathan Fontenot Cc: linux-cxl@vger.kernel.org, dan.j.williams@intel.com, alison.schofield@intel.com, linux-mm@kvack.org, gourry@gourry.net References: <1800b17449d1c231292c85f59b226aff39a81552.1737046620.git.nathan.fontenot@amd.com> Content-Language: en-US From: "Fontenot, Nathan" In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SA1PR05CA0005.namprd05.prod.outlook.com (2603:10b6:806:2d2::7) To MN0PR12MB6222.namprd12.prod.outlook.com (2603:10b6:208:3c2::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR12MB6222:EE_|IA1PR12MB8310:EE_ X-MS-Office365-Filtering-Correlation-Id: a019e0b9-4551-4967-cf1d-08dd3bc65a90 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?b2xqMnVuMWdSaHE2ZDdHN00xQ28yS1VCUFhYa2ZjZDdPS2FKdW1PSFVoeWtN?= =?utf-8?B?Y3FQZ3RrR2NnZE5Xa0pXdU1GZVY5K2J5Tkg2cFdGZFdMMGxsQjJ1YW5rMkF5?= =?utf-8?B?L2JhNGdYQ014SXRoVTk2WHJoaGZwNGdGVHVrM2luRFhSRStRZitaU25Sc1lB?= =?utf-8?B?QUFPVUNDRS92YVZLMDVpLytCREpZQnV1d3pGY0E4YWxyUjBCcWJ6YmVBVm0x?= =?utf-8?B?MWU1UUcrdHVVeFNlUGQ2dzZQUUlXUXc4amJyT2J6bnRDVXQra1N1MzQ3cXNI?= =?utf-8?B?Qkx6QzR2Q3QwSHJyWktXajQvN0JrTjhxNGt0RXRNQ2dUNkRYM2t0c1AraHNT?= =?utf-8?B?aWNUalh5VjUrTE1VaFhkWUttaEVqTjZ3b2JjV2NHL2toeStrVnlBQVNCbEZ3?= =?utf-8?B?K1pMSFBRdXVZUW9zMjRmRkQ0Ylpvclh3Mjlab0UvdlBMQ2tPdjdKc3NTd0dX?= =?utf-8?B?eUNJOVFLcFpvbHFFQzhHY28vTVlQMDA0MFRJenc5UVlEQzRvYmhKOFFXVUFa?= =?utf-8?B?Y25yK3pZUmtHbVR2bEN4VDhsQmV2UG9zWjhBSmlNMGdHd1VLRjh2TUV2dWV4?= =?utf-8?B?WGhsc1pCMENJNzAzanpyNmxWblBDczJLUi8zK040M1NmWTBJWmhvcGJQSjRs?= =?utf-8?B?eFV4UEowQmpIK2p0a21jQUFoaVNyLzhNbHV0ekVRK2xMVHovM1dlU3VPSy96?= =?utf-8?B?Mk5adGQ5eG0xeXp3dC9PdTJ0MVdhN0VMbXNxRzV2TVNmQ3JaeGl0SXpNUUl4?= =?utf-8?B?VEdoK3hyMVVOa0FSMEJhSXJydElNVCtNd2NZNzNBUkVIRWdaNXIzYWx0WnNo?= =?utf-8?B?TS9SRktIVUladGEwQzhONk9UVE41VXM5aHU4SkhiaVpUa1VrT0YrMnh5RXBT?= =?utf-8?B?QzFvNXFmUncyQ1NpdlJDS2dyK0pIMDNTMG84ZUovRnlJbDNJektWK0hXalds?= =?utf-8?B?elA5SFZwWTUwVFVCcW9oRXNURDlCWklKQkVVV29odkVKYXp2eERHZno4RDBP?= =?utf-8?B?U0NoTEFkdlRzOGk4TzZsbEgxNmFvT2JqZzJxTllLQTZxNmUwRCtvZWg1ZHRG?= =?utf-8?B?ZmxyYldOTHhRK3FVck12cGpiRmJmT2kzVUNqN1Z6eWYzL0J4QlMzNlB5MXpr?= =?utf-8?B?STZwTkVINGlMczdSTXNXelQyNkFpVVVnT21NWGkxTHhQeHNYT09TcElMRXpv?= =?utf-8?B?eE4vbzJXOXEvN1BiQzIyY2NTa2tTdTl2VUJpZk4zYlpqVW94YUdWVTVncmRL?= =?utf-8?B?dXR3c202a0ZQZW85MU0zM2doOHdFVWM2dWc1WjVEM3hKZk4xVW5vSzN0K0RY?= =?utf-8?B?OEFReWxkQjdQelhuOEJkRHF6VzVTM2hpWG5GYjY4RVMzMFNDMnZ3OUVFTkVB?= =?utf-8?B?Q2Fzdnh4MlBlK0lHVkpMbWJmeGt2UjF5Wm95aXRWWWxoaGpEN1p3blhZcy91?= =?utf-8?B?dXNzc3YvaWJDcTdwb1VYSjZUNlVwRlZXK2lBQVZKZ3pqdHVFenNieG1lbjNa?= =?utf-8?B?OFMrYnlHQUN1ZzdrLzdrcEFDa2liSzFxeWRuMjFic25PQWY0OFJTWlpGODVQ?= =?utf-8?B?NkxOQ1luNkh0K1FLSSt2b2ZyQjQydDJ4UXRwRVZVeEthSXY0WmVIeVp0M1RL?= =?utf-8?B?cFBvNDZpU05nUkVaYWp5Z0ZHUHJnS252MVh5eFJLN0RocmJyQ0pxaUdVU3Fn?= =?utf-8?B?QmdmK2U1SkhCWFFBK1grM0Y3clBaUTJZaHpQbTlVVVNUL1ZrdnNMbW1JUFk1?= =?utf-8?B?M25oUlhNazl0SXZaR2NWQlYyRGp3MXBta3JoTno3ZnJReGJ2MThMdVNyalFL?= =?utf-8?B?S29ZdEwyTGNUU0cwYWdldGtpVVNla01OYW4zb2tUbkJIdHAyeXJLZmttZGM3?= =?utf-8?Q?+pKVXWTaFCf1E?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN0PR12MB6222.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?REVjSHdhWUluK0h2NVZHUy9GaXZWL0k3WXZvdFBYdVY1cTA5dGxLWFdjRUp3?= =?utf-8?B?VTJsRGo1YUZPYUZLR2JQL0lNZSs5WE1IcU00UnI1SkJOcU54UEViNXozdzlj?= =?utf-8?B?V2VOT0Z6ZGZRWFRkREVMT3B3cWYrSCs5MjBMeExyZXZzOW8xaFlIdytnVUxm?= =?utf-8?B?ZzZXaWZ1UzZ5MXFLUVJEVEdJK3c0cml3MVdNckp0b1FoMTBnQ21oQjdWWUcw?= =?utf-8?B?Y0NrWUcvUVZQOWdTWEtXYlBRdzFRbEhyR1UrUnRldjYxaW44Z01ka3VlZkpZ?= =?utf-8?B?cVJoRmV0TytyMTMzMFBXVHorSHp2clVYTzhmbWczcitlVW1PWWhTOS9raTkz?= =?utf-8?B?bGhKRE13U2Jud3FRQWdhS1p1c05WTk1halNaWjVPN1Q5OG5xOHVTVHkyZ0hv?= =?utf-8?B?L0NaZTFZWGtaVDJOR0pBQXd4akR4dWtXWGJFVnh1VE11N0RidmExK044MWt3?= =?utf-8?B?YVVFWlhBSjNYczRmTjlqNGtpZDBteFZ0SERUZGtvNGN5N1VwUmkyWmNibkt0?= =?utf-8?B?Nm5tVVRmOUdXOUhjZ3kwSjZCbDE2eHhFTXhFZ2huSENKdjFpWFBDSjJOMXQz?= =?utf-8?B?UE45cSt6MzlOeHlwUHZtR21nV0xtVUhMQ1lZUlhzYWg3TXorZEQwUDU2Um1u?= =?utf-8?B?Ym81VWFXZU1HaU9TOWxLWURESFlMdjNScDNLU3puY1lKWVpVcHNodnpGeS9h?= =?utf-8?B?UGtVV0dOUkpvdVZ1bkJMamw3ekpnbWQ4Z0VrOUEzUzVpSzc0MDlISWFnekF1?= =?utf-8?B?L2V3RThnUHBuWTZPSWcwb2FIWGhFUUFhN2ZsZDJ3WkxBWmkvOXhvTFYwNXo3?= =?utf-8?B?Ry9FenU3eExUS2JIWVNmS0p1VFdIK2EwNGkraVhjTzUzTzlsZkQ5QW4yYUNz?= =?utf-8?B?aFc1bjhQTEFuc0w2Um1KY0hTcjBhZ0tnVWVjL0QzdlFlem9FMTZsdXozSUV1?= =?utf-8?B?MkdTa1l6NXVmM0M1K2twRHY5Y3ArMDhUcE5CeG84elNOZG0vM0VSWUoxRE82?= =?utf-8?B?dmNZNEwvbVFqVllCWFd4d2doZGpRTUZJRzYzZVRrZEV4S2JNOUFOaGpCNWJP?= =?utf-8?B?emxkem5yU2k1ZjlrTEFjR29PamE5V0pHV0wvckFoZFZ5QThuQVYzY0YwOTRQ?= =?utf-8?B?OFpIZlpLUU1OcFhKTHBDVHdMa0VxUzduWTNWLzRJODJjTW40V0toN0EyaEIx?= =?utf-8?B?cysyUHFjRHk5K0tJNTFSOHFCWVRPMUEvV0RHcEd5cDJxbjZaV0tmTm5GVjRS?= =?utf-8?B?RC9lVXV6Zlo1ZkRrMVk3UldtZHNpUWp5MGF6dWo5a1g3aWxBaHdER3FmdnRj?= =?utf-8?B?Z21UZXZONWFHU2l4bDFjY1dtT29INldJbXhKWEFFeVNQRWtIbWxzVkNlcVIv?= =?utf-8?B?UEtMc3VXenQ5OCtMRnBYajFCUFFHVUhwQXNkS1B6SjdpS2U1b0h6WGlMeGk3?= =?utf-8?B?RTlOZUY2RW5XYkhqeVlYZE1mV21VNTIyWEFJN2F1MGNkcGNMendPSnFlMTdT?= =?utf-8?B?bjdzc0ZXYU1FVCtNekRBRVA4cmMvclVsTUJ0cW9jOGQ3SGlmQlNnczNsS3BG?= =?utf-8?B?N3hsQnBuc1pGVzNUY2tBd3JKNnlCTnNKRzZVcFBuRWJxUHRzRGt4YnpYOFI2?= =?utf-8?B?cnNpU0hvODF1d1oxNXVZVmZEVkV3WWFMRWo3VzBKU004V0h2ZWtnbXVvSkNH?= =?utf-8?B?Uy9OWTkxSnQ1VWl2Z29GaEwrUDJGVXZScW9JT1Nnam92OXlrbXNKZFp3SnZz?= =?utf-8?B?ZkFzSStNUzlCV05ZcHZDRXh4aXVPWWROS05mQ2Z4QnRFNFNKeUNUMVZXVW9F?= =?utf-8?B?QUp2M1JMSkdOUTYvTDVHK295OWRCRFg1VXJ0VXF1ZG1naWg3dnJudkdDbXpZ?= =?utf-8?B?TW02YytoNUk1eE5lb0hBdTBWZDluVHpXbUJGQVoxMklnM3FWUHpkcG05MHU1?= =?utf-8?B?ZSt2aE96c3hKd1l6SFQydldaWGYzWSt6Zk5JeEk5TzRBZXY4UU55RUNmcWVm?= =?utf-8?B?ZVNSQm1ybjZjSjFKOWJPMFF4ZFFDa01ibTBmS1ZJbHNTdnNZUjh0dERlcnJo?= =?utf-8?B?MkRka3U4V0I4SlMzelR1MGFaV2cxMWs5SDlyRTQvY1B2Y3J4SllaeDZFSEoz?= =?utf-8?Q?Hb0QiIr58hg5icmiV8KJi7oNw?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: a019e0b9-4551-4967-cf1d-08dd3bc65a90 X-MS-Exchange-CrossTenant-AuthSource: MN0PR12MB6222.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2025 15:55:26.6567 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 44IThXhDGXD1R7p/1Xz5XQ8kKI/y4iPce9EdDUuFXg/kYgedkntspLPCsqjtcaDv7OSn3aas7OjxZQo4h8oGJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8310 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: D7F9A8001B X-Stat-Signature: ma3pkm9ui8mbuu65d9ph59ddjhbpe15k X-Rspam-User: X-HE-Tag: 1737647728-793795 X-HE-Meta: U2FsdGVkX1/PUh6B6Cb1PBumuLcLElWrNv7GV/xPR+fnIpMaUCQfuX2Sm4HYe70vivDO9Dge+V8uan1mo1TXE6oNxbYI0KCIiBpOjBrTZI+rITT3c4pHxeA3ob8GCKtlAdZcP/u1cHbTHXpJhuLPWXA8VvBlfkE+KsX6s1gpWoaAgnpMvEDS6irEvBngIXFJ0GDfxZ2dTeYmS8mFDJEVeSdOlltrUR3QFv1QAtVawsDPrCcRGx5zQBN8tutnm4LNIiZ4zIMpW1hA1Zr5A8/fMuxjLPWN73FXrXgKPgsvrWIqrj6TryqtQ4eaLMMz6FIa/IGFHTdvc5BjMM2m9bbb5vFOZH+2yloeQRxEMemd1Rp4rgWQFWQzYh7hEoDTTOn0NTwLR7DzMkcpeICcYfTwyZ+NVmTf+6BgZTC2PcYP2b2bn+0hQ9N7Y9GA/dNnPhNWOBWCBrGEwjNLv4DyieyR22IxGgXN5cXINYQuFO/VWL99NLOHuifmYt2Sqv/xU+0EIvg+CMxOK/SWXECZjd4cs5RO0i91uSrDgBpkVR5EwQRnsqHrJ6hXVXvrKXHJ6xDlouSLBBp/tHr8JngcwGkRoIzhWVEo+PEG4xcIBAELoAzRmj0D6AVSoyz4xDmgThSez6msids9ogbpusjnQ82mHyqgaGPI8zs4tju5Hq9Qm8SKk1DIlqU3bx4k4Wm+YS9I7XtK5wK9yoV/hXoUIH9WkwViVaFrx0n8O56L248Gr1iRbv1U8Y5tPprpLgriScKYXMMU2rfbwDPMCIL4FWgXwr+xlKZlh9byp9yxDRbjHNeIk7dLhYOypPeSxoR1HzrA9F+poQO87V71SmwhhtrTz6+hPaCW7qqZRzdqNMYiL5mFNJWZb4v/yvNVKRIsteRJ4cpV+0fHWJyEGCUxgtorxg5YMBabeHLycENLw+3wbScXgDy24gCXwebyN/0yofMYEVxXUmaL8Xl7wXPQfz6 r7Wd5COi onB25Uks1XcRz+j9os1FH17ZP5v/8DCVOIMjvmgwvnCYENKLoyN4mTiBv9kwRNqm2gE7t1+2RzKB4RhvzBBRxXE+ySuzx/dPYiUp8LxbQ1JjxwtQDegQX4UDdW3Uc4OItZrMUIB5r7VFXEfG3flbgnAFjRxKxeCC6Hyy5Ql+lle4lgbsRB19jFQz9olcw9OUOiedQlzZLgykdKeMUNw2Y7ocEY0ew2cuu8xtDYV5ar8ZSAW2JUlmBKNRLoFTo3+ui1cmIC9A4k83xkzA6oFL2MB9hddXOhuitymLiLpzUxBZNMLi6l4HjLmumQwpnBywmjEI8+fsAm9rNwiBHLnokKuyEMPeCw9DFhiWkdLUtxvcM5jGEMFbN4BF2jK4zGG/ZtrVx1+3VnMWR6bAwlg+3k0a4u8UA+INgWRWsuPkEcoQIyALB0Q2KEcmndqYqmoNxuEBx+VqsKMAfzEoVYBP4E4apUotqDPH508bB8nNh47QAbpJ0nnOq6LsnfckRmoiJNpW4OaGekyTyRikuejC54/Q2iGCDAXovZVfi7fg31U8IQphI6vmMWqZAmqAD7cd6GKIzAOQm2OziH73gTFVJLQrnuw== 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 1/21/2025 11:52 PM, Fan Ni wrote: > On Thu, Jan 16, 2025 at 11:42:05AM -0600, Nathan Fontenot wrote: >> Introduce the ability to manage SOFT RESERVED kernel resources prior to >> these resources being placed in the iomem resource tree. This provides >> the ability for drivers to update SOFT RESERVED resources that intersect >> with their memory resources. >> >> During boot, any resources marked as IORES_DESC_SOFT_RESERVED are placed >> on the soft reserve resource tree. Once boot completes all resources >> are placed on the iomem resource tree. This behavior is gated by a new >> kernel option CONFIG_SOFT_RESERVED_MANAGED. >> >> As part of this update two new interfaces are added for management of >> the SOFT RESERVED resources. The release_srmem_region_adjustable() >> routine allows for removing pieces of SOFT RESERVED resources. The >> the merge_srmem_resources() allows drivers to merge any remaining SOFT >> RESERVED resources into the iomem resource tree once updatea are complete. >> >> Signed-off-by: Nathan Fontenot >> --- >> include/linux/ioport.h | 9 +++++ >> kernel/resource.c | 79 +++++++++++++++++++++++++++++++++++++++--- >> lib/Kconfig | 4 +++ >> 3 files changed, 87 insertions(+), 5 deletions(-) >> >> diff --git a/include/linux/ioport.h b/include/linux/ioport.h >> index 6e9fb667a1c5..2c95cf0be45e 100644 >> --- a/include/linux/ioport.h >> +++ b/include/linux/ioport.h >> @@ -249,6 +249,15 @@ struct resource *lookup_resource(struct resource *root, resource_size_t start); >> int adjust_resource(struct resource *res, resource_size_t start, >> resource_size_t size); >> resource_size_t resource_alignment(struct resource *res); >> + >> +#ifdef CONFIG_SOFT_RESERVED_MANAGED >> +void merge_srmem_resources(void); >> +extern void release_srmem_region_adjustable(resource_size_t start, >> + resource_size_t size); >> +#else >> +static inline void merge_srmem_resources(void) { } >> +#endif >> + >> static inline resource_size_t resource_size(const struct resource *res) >> { >> return res->end - res->start + 1; >> diff --git a/kernel/resource.c b/kernel/resource.c >> index a83040fde236..9db420078a3f 100644 >> --- a/kernel/resource.c >> +++ b/kernel/resource.c >> @@ -48,6 +48,14 @@ struct resource iomem_resource = { >> }; >> EXPORT_SYMBOL(iomem_resource); >> >> +static struct resource srmem_resource = { >> + .name = "Soft Reserved mem", >> + .start = 0, >> + .end = -1, >> + .flags = IORESOURCE_MEM, >> + .desc = IORES_DESC_SOFT_RESERVED, >> +}; >> + >> static DEFINE_RWLOCK(resource_lock); >> >> static struct resource *next_resource(struct resource *p, bool skip_children) >> @@ -818,6 +826,19 @@ static struct resource * __insert_resource(struct resource *parent, struct resou >> { >> struct resource *first, *next; >> >> + if (IS_ENABLED(CONFIG_SOFT_RESERVED_MANAGED)) { >> + /* >> + * During boot SOFT RESERVED resources are placed on the srmem >> + * resource tree. These resources may be updated later in boot, >> + * for example see the CXL driver, prior to being merged into >> + * the iomem resource tree. >> + */ >> + if (system_state < SYSTEM_RUNNING && >> + parent == &iomem_resource && >> + new->desc == IORES_DESC_SOFT_RESERVED) >> + parent = &srmem_resource; >> + } >> + >> for (;; parent = first) { >> first = __request_resource(parent, new); >> if (!first) >> @@ -1336,11 +1357,12 @@ void __release_region(struct resource *parent, resource_size_t start, >> } >> EXPORT_SYMBOL(__release_region); >> >> -#ifdef CONFIG_MEMORY_HOTREMOVE > > If CONFIG_MEMORY_HOTREMOVE not defined, it seems we do not have a > user for release_region_adjustable as > release_mem_region_adjustable() will not exist. The release_region_adjustable() routine is used by by release_mem_region_adjustable() and release_srmem_region_adjustable(). We could put the following around release_region_adjustable() to prevent it being present when not used. #if defined(CONFIG_MEMORY_HOTREMOVE) || defined(CONFIG_SOFT_RESERVED_MANAGED) -Nathan > > Fan >> /** >> - * release_mem_region_adjustable - release a previously reserved memory region >> + * release_region_adjustable - release a previously reserved memory region >> + * @parent: resource tree to release resource from >> * @start: resource start address >> * @size: resource region size >> + * @busy_check: check for IORESOURCE_BUSY >> * >> * This interface is intended for memory hot-delete. The requested region >> * is released from a currently busy memory resource. The requested region >> @@ -1356,9 +1378,11 @@ EXPORT_SYMBOL(__release_region); >> * assumes that all children remain in the lower address entry for >> * simplicity. Enhance this logic when necessary. >> */ >> -void release_mem_region_adjustable(resource_size_t start, resource_size_t size) >> +static void release_region_adjustable(struct resource *parent, >> + resource_size_t start, >> + resource_size_t size, >> + bool busy_check) >> { >> - struct resource *parent = &iomem_resource; >> struct resource *new_res = NULL; >> bool alloc_nofail = false; >> struct resource **p; >> @@ -1395,7 +1419,7 @@ void release_mem_region_adjustable(resource_size_t start, resource_size_t size) >> if (!(res->flags & IORESOURCE_MEM)) >> break; >> >> - if (!(res->flags & IORESOURCE_BUSY)) { >> + if (busy_check && !(res->flags & IORESOURCE_BUSY)) { >> p = &res->child; >> continue; >> } >> @@ -1445,6 +1469,51 @@ void release_mem_region_adjustable(resource_size_t start, resource_size_t size) >> write_unlock(&resource_lock); >> free_resource(new_res); >> } >> + >> +#ifdef CONFIG_SOFT_RESERVED_MANAGED >> +/** >> + * merge_srmem_resources - merge srmem resources into the iomem resource tree >> + * >> + * This is intended to allow kernel drivers that manage the SOFT RESERVED >> + * resources to merge any remaining resources into the iomem resource tree >> + * once any updates have been made. >> + */ >> +void merge_srmem_resources(void) >> +{ >> + struct resource *res, *next; >> + int rc; >> + >> + for (res = srmem_resource.child; res; res = next) { >> + next = next_resource(res, true); >> + >> + write_lock(&resource_lock); >> + >> + if (WARN_ON(__release_resource(res, true))) { >> + write_unlock(&resource_lock); >> + continue; >> + } >> + >> + if (WARN_ON(__insert_resource(&iomem_resource, res))) >> + __insert_resource(&srmem_resource, res); >> + >> + write_unlock(&resource_lock); >> + } >> +} >> +EXPORT_SYMBOL_GPL(merge_srmem_resources); >> + >> +void release_srmem_region_adjustable(resource_size_t start, >> + resource_size_t size) >> +{ >> + release_region_adjustable(&srmem_resource, start, size, false); >> +} >> +EXPORT_SYMBOL(release_srmem_region_adjustable); >> +#endif >> + >> +#ifdef CONFIG_MEMORY_HOTREMOVE >> +void release_mem_region_adjustable(resource_size_t start, resource_size_t size) >> +{ >> + release_region_adjustable(&iomem_resource, start, size, true); >> +} >> #endif /* CONFIG_MEMORY_HOTREMOVE */ >> >> #ifdef CONFIG_MEMORY_HOTPLUG >> diff --git a/lib/Kconfig b/lib/Kconfig >> index b38849af6f13..4f4011334051 100644 >> --- a/lib/Kconfig >> +++ b/lib/Kconfig >> @@ -777,3 +777,7 @@ config POLYNOMIAL >> >> config FIRMWARE_TABLE >> bool >> + >> +config SOFT_RESERVED_MANAGED >> + bool >> + default n >> -- >> 2.43.0 >>