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 A3591C10F1A for ; Thu, 9 May 2024 21:48:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EAFAC6B0093; Thu, 9 May 2024 17:48:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E5F1B6B0095; Thu, 9 May 2024 17:48:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CD8886B0096; Thu, 9 May 2024 17:48:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A63306B0093 for ; Thu, 9 May 2024 17:48:12 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 4F93614016A for ; Thu, 9 May 2024 21:48:12 +0000 (UTC) X-FDA: 82100196024.08.AB30FE0 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) by imf05.hostedemail.com (Postfix) with ESMTP id 74953100010 for ; Thu, 9 May 2024 21:48:07 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=lOFgY00H; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf05.hostedemail.com: domain of dan.j.williams@intel.com designates 192.198.163.15 as permitted sender) smtp.mailfrom=dan.j.williams@intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715291288; 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=Px8sBMbabQu2hhAb2KzE6TpjFjQta0IO3DdiUYd2wmk=; b=a8NToSnRiSzlcax1PJ6yUihtDZulRa2BKgFT5J5JCPmbykt60qvq/+ZRcgiY6aZSQxDDGc WDut1+3Sa1ruxS7BRu6SSm0QOgPF5uIA+ogeDsA4siePB2vEOqXzlxz7lzsuAme9/NGnQw emx6q9wFDCznbSlqKsJNbpKXAVXgnds= ARC-Authentication-Results: i=2; imf05.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=lOFgY00H; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf05.hostedemail.com: domain of dan.j.williams@intel.com designates 192.198.163.15 as permitted sender) smtp.mailfrom=dan.j.williams@intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1715291288; a=rsa-sha256; cv=fail; b=Dd/pl2iL3E5YEdoTa3oj+RDHL3izKI+IhcrrCgECYcOU8P44Z9CoKAmwC6cEUkN+j8gorP IlWjjRym4mihiPUMAk8fwQ2qNksnHQgNG4xA1GF9jx+cS/paPmnpI9C8bS3ht9HQGOFruM gKQT+0qvfkor+vqpZ1FaeAuba48ZPgc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1715291288; x=1746827288; h=date:from:to:cc:subject:message-id:references: content-transfer-encoding:in-reply-to:mime-version; bh=o7Wap/AISLcpYfL4eRxrvYHM7bC7MAmwHspkuKPwqdI=; b=lOFgY00HngAZ8APiee3Lysz57A7nqTunjAC7uvfjFDjZY7JeSscxX7/c 9LnIPbYhIgXk0Yalv+ckaRGDSPrKPcS5FxfyTlnaqX0mvXWv0XDGeTpsW 9SliRILpWha5X4ZB/T6Z/+BN7IU7QY323O3uDsCqKpi20iMSKcBnRMnB3 YPJX9LyLrdcFVy3KA0Tpd2/cqcbjLE1KRUJfxjTu9UwOwiPclWI/ZXcPk hd7tcyv69SOX6A2t4jKFoTgcJPkt7CrbKBiO+mnAj6YikQVqWnxkfUUbb OH4DriWjLyyJC/3TGo5vD6zBQtum/IA3shny0i2JEnJfJpzo0WGI3lgqY A==; X-CSE-ConnectionGUID: Nvm18O6KSRqhPwXtrEJB7Q== X-CSE-MsgGUID: Ucku4rZZQZ2z3bKn9tEwFg== X-IronPort-AV: E=McAfee;i="6600,9927,11068"; a="11411661" X-IronPort-AV: E=Sophos;i="6.08,149,1712646000"; d="scan'208";a="11411661" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2024 14:48:06 -0700 X-CSE-ConnectionGUID: 3hoLkPNwR2GU15O7UvynSw== X-CSE-MsgGUID: u3lF9k+oTeG17yrY0SEavw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,149,1712646000"; d="scan'208";a="29939813" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orviesa007.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 09 May 2024 14:48:05 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 9 May 2024 14:48:04 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Thu, 9 May 2024 14:48:04 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.169) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 9 May 2024 14:48:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=imy3nvvL1PFqmwCShaQjAfaPlRrnIeGGSqIGsEzdUszkZYMIkvrNjEeCiISsahUZQNLgee34DiXhwcbl+6stCtrYyacDPKc85oX4jWt7D4U74TjImGdo6haeONu11XUenF5edZPgf2BxfMohwAu3AwVKjUwViZOFsyBT7Bdv0AA6vhfgIbjcdJsMHjh9jXlHeZV1CvIy84RCy9sN9pVJ0vlLiPXNgnPkhstEz8/NnzGzqS+X72Kl8MF+fFE2W1vrJzqL8mALaW3kvnL01t3HwTc4RKmj5qRaA4bkH+jEbj3TIMNPIrqOkAyhgu78ptCV6W7PBT/MbldYBPRAaB/fuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=Px8sBMbabQu2hhAb2KzE6TpjFjQta0IO3DdiUYd2wmk=; b=ef/eU77nX8BUAmfjCIW+MB03ifQBvIHFSbnGAiKMVSrAIDd3zbtzbCcgkh/2T6AknOWHwHOwnM0ctY3avsNVTVuVqIrnldqWKvKaHbOP4oyq0R0lyPWTE+3Xp9TaP/BMeB9+7mAPlS6Ehr1Yz9gdR6pYgeWNrnimWNHPNaxW7VWu/WQiH/oC8VJR9k2XOltuiBp8jw09WgaqErVyvYpZH/8U7RnhujCDkUqEJ/WvLrneHR0m3XH/EjEUS590+xtdDRgX4spgR+j73O02uyQXUE6yK+az/bw5GUHMpM2up6exV72UsYlpm68NXv2iXcnNeYq42wkmnuGdOEswfmoh2g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH8PR11MB8107.namprd11.prod.outlook.com (2603:10b6:510:256::6) by DM4PR11MB6504.namprd11.prod.outlook.com (2603:10b6:8:8d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.46; Thu, 9 May 2024 21:48:01 +0000 Received: from PH8PR11MB8107.namprd11.prod.outlook.com ([fe80::6b05:74cf:a304:ecd8]) by PH8PR11MB8107.namprd11.prod.outlook.com ([fe80::6b05:74cf:a304:ecd8%6]) with mapi id 15.20.7544.041; Thu, 9 May 2024 21:48:01 +0000 Date: Thu, 9 May 2024 14:47:56 -0700 From: Dan Williams To: , , , , , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: RE: [RFC PATCH v8 01/10] ras: scrub: Add scrub subsystem Message-ID: <663d448c2ef3_1c0a1929453@dwillia2-xfh.jf.intel.com.notmuch> References: <20240419164720.1765-1-shiju.jose@huawei.com> <20240419164720.1765-2-shiju.jose@huawei.com> Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240419164720.1765-2-shiju.jose@huawei.com> X-ClientProxiedBy: MW4PR03CA0134.namprd03.prod.outlook.com (2603:10b6:303:8c::19) To PH8PR11MB8107.namprd11.prod.outlook.com (2603:10b6:510:256::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH8PR11MB8107:EE_|DM4PR11MB6504:EE_ X-MS-Office365-Filtering-Correlation-Id: 4dec9619-3f2e-431d-28ef-08dc7071b2b4 X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|1800799015|366007|7416005|376005|921011; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WnBPM0Z5ckJlSTdGeHBqOENXUVNvU0VzMkpjcUlZdnlpV3BOc1pGSUdkRzBN?= =?utf-8?B?RDA4emZmWERsRU9UdGhBNjM4MlRSKyttbUVtOGFZU1B1QXFSOEZyR3AyZ1Q3?= =?utf-8?B?Sms0N0dEd1ZNNGhuOHN2OWI1Y0xhWDNnNGNVT2s2bHVobE84MG5hNEZIMVZM?= =?utf-8?B?dDRZbk1SaEdMK1ZxVFA5azhsQ1YweHBDclRUVXJNSmNrZ0NCMW9LMFZ3bVhB?= =?utf-8?B?SU1UQzN1bG9TN2w5YUF6UUVhQnJ0bXV1LzY1RVdKR0dKZmxQbWRmR2VVOGhh?= =?utf-8?B?ZTFLN0dUZFU1T1FZNGNsZkdsdGlpL0tXc0FOM3BHeWZIUGdSWERhS0gwYm4v?= =?utf-8?B?U2xONjlPeDhhS0MrKzBRcWdkckVoMzRoSHF1U094VWhiZXFLV1ZuUTZ3VlU5?= =?utf-8?B?ai9Za1g5TFpqaWl3MzgwazF1NTRiSEFDeEJnK0JPT1lRTGwwWVRPWWk1U0hl?= =?utf-8?B?NWlPdi9wZFU2WEg2dUt5Ly9FQldqTk13azhvNk9nVHJjdUdETXlmN01NdFpS?= =?utf-8?B?R0c2VzBnVDhlVlFEdHVoQVlwYzVwbStpRHNJNzJnT1dWV1FWcTUyc1pBdmJq?= =?utf-8?B?QngwVGpLUnNIdzBtQWVERHcydkwvejAwYitWYVVsdnRkOEFhZmhzb1VrVVdS?= =?utf-8?B?WFpQQjNiWFUrTkY5Q1BHVk1iTmNtcWhPK3ZQeTlJRnFscWtIZGZFRzNNdThD?= =?utf-8?B?bU9SbTcwVzlSUDlySWp5MlRLdWlVU3QwUHJCK2Q5ZEVXQmxPTkV2bGtRa1dN?= =?utf-8?B?L2hPRVVaOCtzVmhEejQ4cHNrMEJucVlCMGhBdXVjelBGRFRaczF3Y3dFdFVx?= =?utf-8?B?YUhyR0g4RTdHcFh5M0NhT3RKVWxSeWc3NnBCVUtmZ3RQZnpNNXYzV1MzV1lp?= =?utf-8?B?RkVGTTFHdGxxMHJCTjlQaUFGU2RWb054Q29OWFRvZWtPU1h0cW93VkU2MDVE?= =?utf-8?B?c3lOT2hHMlVKUS9UK1kzRjJndllrbmtLMVBaanY5RklFbVFxS2Z0V0hiMXZW?= =?utf-8?B?a1ZDL0tvOWo0aG9xMldmNDdacVBZUDNKQjlwcDBSMm41YmYvaVI5YTBUMGlz?= =?utf-8?B?SjduV2VBczJSY3FMYWdqK2N4ck1jakNXUG16ZDZKdG9KVFVpU2ZDRHdhRzJu?= =?utf-8?B?UktoY0VvU05xZGR0eUpsR3RCNkY4NEpnYzkwZHZLazEzTkRiUXVmeXJwUXd1?= =?utf-8?B?UWRmbmI3UnVsd3NlbXZ1enNkVGZPYUtPNDJsRWNtMmNKclduTmZsMGJSeVBH?= =?utf-8?B?NmdQS3JsQ0d5N0M2dUh1TTZzaHZDeEVtNmt1Y1QxREdXc3FWNFY0L1Z2Tk82?= =?utf-8?B?Qm4xODcwUUNnVVhnK3hZQkp2LzcvbGw3L2NjSFB6cDRQVkFoTGpXRXVidklr?= =?utf-8?B?RlgyTFE1U0RQVGI5UVNYSGRmcXZmQTlYdHZGb2lKUG1mZEJBOHY3a21CWWRO?= =?utf-8?B?VUlWOXhnd2N5OWwzaXNCY0R6bU0ybUlIZ3llNmVGNmtEM3pONDFYMjBvRTQy?= =?utf-8?B?L2RNOUJZYWl5WXRKQk11UHhERjlrWlVNZGE4WE9GeWRaWE9mZkxiWUhmUDMw?= =?utf-8?B?Sk1FN25TNmlOY0JTQWpMOHoyNGxqNjZPN3A1M1UrajVBaXZNeHBnK2QyZm94?= =?utf-8?B?QUN3SVBKNWVJTDR3Q1Rnd1lheUdsVmZUSEVxeUtHblgwSUhiMk5vc1p6d3R1?= =?utf-8?B?TGRNcm9RcWdxcVVzNTJuSFpUeElVRWRnTktyZmd1cXl5S3hlQk1ObjlPaC82?= =?utf-8?Q?YXqym/3xKzoZjPppXVgIu2s0vZb4+qJg4dp4mma?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR11MB8107.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(366007)(7416005)(376005)(921011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cVVqSmhReWp2UjRoVXI5S29LL0liSGdiZFNNcVd4UFBVaWh2RERYNlo2cVFs?= =?utf-8?B?ejA5UWEzaWZIb0FQUzc1ckhDVCt2d3lzTGlraVk1eUVJRTFIRGpTbWJRK3BH?= =?utf-8?B?NEdBOWVVTmpmaXlBSWgzWEppMjRtK1ZEWnlhMTRxZVFtSU9wRi8ya0ZITEkx?= =?utf-8?B?ZXdoTGVXc1lObXFqeDZhaURhVUVmaUVDenROZHE1NzZGOHFCamxNUXN6cVdE?= =?utf-8?B?UVVTRW5wM0poOFJ6VnBFQ3dpOXpqR3JhL3c0VWhtMXBORTltaVZLZWJHS1ll?= =?utf-8?B?dnJTSERhRjQ2eDE3bTlXMjVzd1cwUEUwRXdjZnNKMVFJTHZQSEpNQmdlanM5?= =?utf-8?B?QmZpTm5lTGN4SFZtRExwVnUyZUdXazJDcGE0VTd5U21PNjVXTm1TeXQ4MFJU?= =?utf-8?B?cXFSVmpNdFF3dDlaZkJvSWl5NFo0WWdrVXA3bjNrMmZYRlp2dmhNempkWWl3?= =?utf-8?B?SEFwTnVPUGsxdUpkSTc0ajNxM2Q2Vm1DOUJBWEtKNnJFa0NlemdDUU5JR2Y0?= =?utf-8?B?TWtWYm0zNGFJY2lnWXNCbkVVSVhseXVkZFE4NlhsamNYUDlVU1RDTGJNakpq?= =?utf-8?B?SW9VT0dRMmE0M29UTkh2OEhUQWRRRUlOTnFWVWVqRFJYaURmcFJCRExYUitR?= =?utf-8?B?ejhFZ1ZsSitMelMranpPWlZWU3hrdHJxaDdGNi8vdmVmMHNDam1HVHN5QVls?= =?utf-8?B?aElZak1hVnR6cDVyUDA5Zk1VQk5ORE4wWWdrQUcyN3BiSENTWnBnN1pzUGto?= =?utf-8?B?MFlGMlE1YTdFRUxGNUZVcCtrQUswUzZxRjc4V25LMk12RjdFWGhQMmxIaWpa?= =?utf-8?B?TkhrRTlYMW5wMVU4MFUxTWYvbmVRSTBUTTBWRnlUczlrdnl4a01SNHkrWmRy?= =?utf-8?B?NTBpMUVZUmpDZzI1OTljK2RjUXpFSFZIdmg3Mk9rZ3VIcGNPVHUrRWFZaHBP?= =?utf-8?B?aHFmaFR5SC9pOHVidllkMElPWjAwRGxnVnNMelZEQjBYS09mMnNCQXp2WjE4?= =?utf-8?B?SGhxcFhmUk0wUDJDYXJCTURUb2IxVmJ2ZWRROUtKeWZhaVAwdlplL1V6Tzc3?= =?utf-8?B?WkI2U1NDaGVUdDN2bTMvQzlyNEtxYXJrazcwRWtqZFdweEt3RmJmQmJoem1T?= =?utf-8?B?MWdLK21zY2d4RSthWkUrcXdYekt1NllQYTFJTHAzam4rT2NVMUZYTUFjQ3lP?= =?utf-8?B?QitHTGdsb1NkTndHV3gxWVVJYnVKQTYrclZ6cnZMb25HMzM4Ymw4ak1PZVh5?= =?utf-8?B?cEVZcGhBZUJSUEVZYjRUUUk2L0VERkdRbENQUStmTng3Ui83T1Zic2lTVUlR?= =?utf-8?B?RXBvOEIxZWlyNXdXd3VVS2RWTDJYQjBGMW41UGxoK21CTkdxelF5N2ZqREhz?= =?utf-8?B?cExFRUl5SXlsazhCTVVwZTdmaTBxck1DZ1dxdGxubnY1S3E2b3FISFROUUFB?= =?utf-8?B?ZkVuOURhNjkrU3JCR1IvT21DdHZWM3FkUXFsNTUzNlk0T3BPYjEwaTZyRXRa?= =?utf-8?B?UW9rS0toL0ZWNnN0V1NaV05SWVpHcnN5Y3NMaEFYNnVYdWJMU3ljelloc1Zr?= =?utf-8?B?Z0ZBMXBtdVptVGtPZHBtUmNzVnhWNG9teUpISlJtc1VJRHVSRWxCTUUwRk9Z?= =?utf-8?B?TituM2U4SHZsak5OUStjYm9iUFVBZVJ4YXVBOCtvbDRnTVBjWDRzSlFCcnFi?= =?utf-8?B?RmtUNFRKQzlSMTFXSUw3c1M0TjZrT0VVck9KSzdDL3FlT1gvWW9yL1YwU2t5?= =?utf-8?B?RytNWGw2QWlnWG9VOXB3OW9aUXhkZE8vbENkMXo0SVlST3h2MmZITWlhRDQw?= =?utf-8?B?N3Y3YmZnMjdBcGZDSGxTRzN5N1hPei9kSHlIL2VLQlBCL1ZtTGJPQzdiTnph?= =?utf-8?B?cGZpVTI1SnYzd3U0YkYxSE54bWxEQ0JybEJvVnJjdUFORzVRRnZMbEV1MWdM?= =?utf-8?B?dnFFUzUxR0ZQeW9sTTl1OGtzZExiZ2t0WHRzV2w1UWVUWUN0RjdmUXNpd0dI?= =?utf-8?B?dFYyRGdxNEw3Q2o1ZGpBSWxYQVRqeVhIMkx3VkNnS3pFejlWMTRGT3AvVkFQ?= =?utf-8?B?WE4rd2xtaHN1TDZRUTVndHVxeG1NQVhYRm5zMlVKOXp5WFdKVEM4Y3BIMjhr?= =?utf-8?B?ZEs1ZVFvWmN5MlRzc3JyTGJ2ei9CV2hsYk1DVVcyK0IwVjdVUTBrZlNWUTl0?= =?utf-8?B?alE9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 4dec9619-3f2e-431d-28ef-08dc7071b2b4 X-MS-Exchange-CrossTenant-AuthSource: PH8PR11MB8107.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2024 21:48:01.2850 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oelbHCfZu+kzOKzK4rrW9eKm9BSXY6dgwF7mkkg7W8e2+ZMnGc5bMgcBZ/vnQ7PXw0TiZ6I8DfdTvSul019lLPuaY6hCg/PvDHFHd26TxfQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6504 X-OriginatorOrg: intel.com X-Rspamd-Server: rspam01 X-Stat-Signature: bkg9ckmeqzuyqnmgc3g3a31offxbiyo4 X-Rspam-User: X-Rspamd-Queue-Id: 74953100010 X-HE-Tag: 1715291287-69809 X-HE-Meta: U2FsdGVkX1+e0jgU9ICvAZw+Ni1dxwDt2IIwQhpsFXH63Pq7rW1lhjvzHPf6obaCF/q57QhlwO6T9jRd7UC+AMggMPaOxClbZxQfpgXDbZPnrGu3PvKbuf+XLebdNkVBlAPG2yqmYUFIb833huNCpD4KtXEuWG+jcck3AU9g2uQiioV3OhVpKaXdI2oLuSLhhBhef4tb4Ffm/rqkAOTcRIVaPwS7f1jC06Pq1YJ/m6SUz/BVTKohEyLvdM3ki1TcpPldiEZIuAY5LvMZts43Il0QbBswzmzQ9LnINC7JTIplDd25qBAF/2/NqS44lTQSEFbhMQNTlF0whAb6zgBwVFg8dIG3EO6vqUq3rbX7m+wRYPDDWKQtYjD7ryIQthOkmnRsIxs8VGv+49t52A4bw0XcnYxqW2gd1VkiTv3uwWbmtMBXWHBuJnUIIblNGD3Te6r1Z0b4p4U7GKW1oGpxuTNU/hud75bmksOA3XtcvKgYiBKBsRsJgO3YGNvbI4GA2sS3JIf6eGmO22sRsRuFf3LmM/npnwSZhMmDtROJMCpVtkD3RleANIFQUb7n8++jqrip7S7Vu9/z+hBoIwY+1Avbv1Bsv3RO69/mmoQx74OfBQCww28N/zmbE4kr73KAbFOz9Wg8enQF3rOETLCjA9iHP/n8Zdkm0/9qRWlDArF0Swq93ZFOaRf0c7rxI87nUehTCoImaBcpxm2+ioIozmaEycDDP9X966QTkvq6yEPdpGC7miJFYZDbctkuVHFIwatp2GNqiZA0YGAHsQJp7WRrzhexi1kXVtd2/II4zy0GavCO3gNf4Qu9PtttB996j4Bt3w4upBCCxXEUu59gRw0PRL62ytVykTaxfQdBComSf5q/qo8fbMDMwRBCib3+G9u6xPRWa0bLhQJnV4sHQZDzzVhOpAayLbmRnE6nrhQqCZXjvR7+hgqe2c0K3aQJENnZeJQafKvhALpgItx N04hPAZy zDdUEClH6VgULlrDKDJh+sDuc8JwGAZJuR7bHrjUo0JoYOUGJymC8IJvdz++g77SkPYG1hrjw3UuDT2PkNmh5xPJKvm5qaeTmCk5z6HeWqQdhvx4Hp04/KoJ0x8QqcDmtgpqQHG28/P40VXg1O1HiVjqrQQ9slVeCzUqnjH2uRnfRYJr1Op4FUMJOud2P1RM2SRw2P8NBLfY7Ewhj1o6bkbuYpZuKD027RXcAzjuIR4QQI33fIAHQeiDtUszkKa8Xd8zNc8Gp7pUbOAibUesH+qevyezBup8aaG7s9GHH5e6F1kqU4KE8yz/yDKk9/DrkBhnOa91fxy7NHM78YPfcs6beZxFsaOxUYn1WLu+/W50gqE5MxmPCBeyWIZWBd4M7NdYswdZIejsalaxSJ8clsLgiENP9vV4CVi+Hn6Pjff5EzhC5DAi0mZPB6zEeHzd6Nk1q 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: shiju.jose@ wrote: > From: Shiju Jose > > Add scrub subsystem supports configuring the memory scrubbers > in the system. The scrub subsystem provides the interface for > registering the scrub devices. The scrub control attributes > are provided to the user in /sys/class/ras/rasX/scrub > > Co-developed-by: Jonathan Cameron > Signed-off-by: Jonathan Cameron > Signed-off-by: Shiju Jose > --- > .../ABI/testing/sysfs-class-scrub-configure | 47 +++ > drivers/ras/Kconfig | 7 + > drivers/ras/Makefile | 1 + > drivers/ras/memory_scrub.c | 271 ++++++++++++++++++ > include/linux/memory_scrub.h | 37 +++ > 5 files changed, 363 insertions(+) > create mode 100644 Documentation/ABI/testing/sysfs-class-scrub-configure > create mode 100755 drivers/ras/memory_scrub.c > create mode 100755 include/linux/memory_scrub.h > > diff --git a/Documentation/ABI/testing/sysfs-class-scrub-configure b/Documentation/ABI/testing/sysfs-class-scrub-configure > new file mode 100644 > index 000000000000..3ed77dbb00ad > --- /dev/null > +++ b/Documentation/ABI/testing/sysfs-class-scrub-configure > @@ -0,0 +1,47 @@ > +What: /sys/class/ras/ > +Date: March 2024 > +KernelVersion: 6.9 > +Contact: linux-kernel@vger.kernel.org > +Description: > + The ras/ class subdirectory belongs to the > + common ras features such as scrub subsystem. Why create "ras" class versus just a "srcub" class? I am otherwise not aware of a precedent for class device hierarchy. For example, on my system there is: /sys/class/ ├── scsi_device ├── scsi_disk ├── scsi_generic └── scsi_host ...not: /sys/class/scsi/ ├── device ├── disk ├── generic └── host > + > +What: /sys/class/ras/rasX/scrub/ > +Date: March 2024 > +KernelVersion: 6.9 > +Contact: linux-kernel@vger.kernel.org > +Description: > + The /sys/class/ras/ras{0,1,2,3,...}/scrub directories > + correspond to each scrub device registered with the > + scrub subsystem. I notice there are some visibility rules in the code, but those expectations are not documented here. This documentation would also help developers writing new users of scrub_device_register(). > + > +What: /sys/class/ras/rasX/scrub/name > +Date: March 2024 > +KernelVersion: 6.9 > +Contact: linux-kernel@vger.kernel.org > +Description: > + (RO) name of the memory scrubber > + > +What: /sys/class/ras/rasX/scrub/enable_background > +Date: March 2024 > +KernelVersion: 6.9 > +Contact: linux-kernel@vger.kernel.org > +Description: > + (RW) Enable/Disable background(patrol) scrubbing if supported. > + > +What: /sys/class/ras/rasX/scrub/rate_available > +Date: March 2024 > +KernelVersion: 6.9 > +Contact: linux-kernel@vger.kernel.org > +Description: > + (RO) Supported range for the scrub rate by the scrubber. > + The scrub rate represents in hours. > + > +What: /sys/class/ras/rasX/scrub/rate > +Date: March 2024 > +KernelVersion: 6.9 > +Contact: linux-kernel@vger.kernel.org > +Description: > + (RW) The scrub rate specified and it must be with in the > + supported range by the scrubber. > + The scrub rate represents in hours. > diff --git a/drivers/ras/Kconfig b/drivers/ras/Kconfig > index fc4f4bb94a4c..181701479564 100644 > --- a/drivers/ras/Kconfig > +++ b/drivers/ras/Kconfig > @@ -46,4 +46,11 @@ config RAS_FMPM > Memory will be retired during boot time and run time depending on > platform-specific policies. > > +config SCRUB > + tristate "Memory scrub driver" > + help > + This option selects the memory scrub subsystem, supports > + configuring the parameters of underlying scrubbers in the > + system for the DRAM memories. > + > endif > diff --git a/drivers/ras/Makefile b/drivers/ras/Makefile > index 11f95d59d397..89bcf0d84355 100644 > --- a/drivers/ras/Makefile > +++ b/drivers/ras/Makefile > @@ -2,6 +2,7 @@ > obj-$(CONFIG_RAS) += ras.o > obj-$(CONFIG_DEBUG_FS) += debugfs.o > obj-$(CONFIG_RAS_CEC) += cec.o > +obj-$(CONFIG_SCRUB) += memory_scrub.o > > obj-$(CONFIG_RAS_FMPM) += amd/fmpm.o > obj-y += amd/atl/ > diff --git a/drivers/ras/memory_scrub.c b/drivers/ras/memory_scrub.c > new file mode 100755 > index 000000000000..7e995380ec3a > --- /dev/null > +++ b/drivers/ras/memory_scrub.c > @@ -0,0 +1,271 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Memory scrub subsystem supports configuring the registered > + * memory scrubbers. > + * > + * Copyright (c) 2024 HiSilicon Limited. > + */ > + > +#define pr_fmt(fmt) "MEM SCRUB: " fmt > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +/* memory scrubber config definitions */ > +#define SCRUB_ID_PREFIX "ras" > +#define SCRUB_ID_FORMAT SCRUB_ID_PREFIX "%d" > + > +static DEFINE_IDA(scrub_ida); > + > +struct scrub_device { > + int id; > + struct device dev; > + const struct scrub_ops *ops; > +}; > + > +#define to_scrub_device(d) container_of(d, struct scrub_device, dev) > +static ssize_t enable_background_store(struct device *dev, > + struct device_attribute *attr, > + const char *buf, size_t len) > +{ > + struct scrub_device *scrub_dev = to_scrub_device(dev); > + bool enable; > + int ret; > + > + ret = kstrtobool(buf, &enable); > + if (ret < 0) > + return ret; > + > + ret = scrub_dev->ops->set_enabled_bg(dev, enable); > + if (ret) > + return ret; It strikes me as somewhat pointless to have such a thin sysfs implementation whose only job is to call down into a callback to do the work. Unless there are other consumers of 'struct scrub_ops' outside of these sysfs files why not just have the low-level drivers register their corresponding attributes themselves? Unless the functionality is truly generic just let the low-level driver be responsible for conforming to the sysfs ABI expectations, and, for example, each register their own "enable_background" attribute if they support that semantic. So scrub_device_register() would grow a 'const struct attribute_group **groups' argument, or something along those lines.