From patchwork Tue Nov 21 10:18:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shiju Jose X-Patchwork-Id: 13462765 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 45E55C5ACB3 for ; Tue, 21 Nov 2023 10:19:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5ABD16B040F; Tue, 21 Nov 2023 05:19:11 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 55CCA6B0412; Tue, 21 Nov 2023 05:19:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 423D06B0414; Tue, 21 Nov 2023 05:19:11 -0500 (EST) 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 24B096B040F for ; Tue, 21 Nov 2023 05:19:11 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 0369EB5D5D for ; Tue, 21 Nov 2023 10:19:10 +0000 (UTC) X-FDA: 81481563702.19.9C1417B Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by imf20.hostedemail.com (Postfix) with ESMTP id 06C8C1C0013 for ; Tue, 21 Nov 2023 10:19:08 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of shiju.jose@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=shiju.jose@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700561949; a=rsa-sha256; cv=none; b=cBTSMyBivDlo7qGh0vWBAUj5PqnXBB+YdeYthU6T8+CtwbVTQBkxOL6hp8lHlL2KsCFS41 9U5/EXNYzrMLemdCnKsDlrsutNxdEwmzpzV2+jYQF4bgbln+DqRa5ZWAfjfm55c8DMPUBa 02xkuChgIvYpYMYafhgPvRNT2yNlBR4= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of shiju.jose@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=shiju.jose@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700561949; 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; bh=8Q1z/uTervOKGSAcSffcyRMd7XcscXufuGcNKpZCdyI=; b=MkEAyFkOq9yvjS0SCmBxNdlLAzSmeWIj5fAQJCIm/+ydGqKS8/BcY3NfXeIvmgwiKdGol/ L0+/ZONQXaLGe/ohZmM0sa/2TMEqzlx0KoJTO6lszhG+0wvX2Crfx2/f13kmhFUjp6JsOO nnCwnlBbSDYOjhUezynIqWvcZdvJdac= Received: from lhrpeml500006.china.huawei.com (unknown [172.18.147.207]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4SZL0m2ZqFz67H66; Tue, 21 Nov 2023 18:17:44 +0800 (CST) Received: from SecurePC30232.china.huawei.com (10.122.247.234) by lhrpeml500006.china.huawei.com (7.191.161.198) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 21 Nov 2023 10:19:06 +0000 From: To: , , , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v2 08/10] memory: scrub: Add scrub control attributes for the DDR5 ECS Date: Tue, 21 Nov 2023 18:18:41 +0800 Message-ID: <20231121101844.1161-9-shiju.jose@huawei.com> X-Mailer: git-send-email 2.35.1.windows.2 In-Reply-To: <20231121101844.1161-1-shiju.jose@huawei.com> References: <20231121101844.1161-1-shiju.jose@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.122.247.234] X-ClientProxiedBy: lhrpeml100005.china.huawei.com (7.191.160.25) To lhrpeml500006.china.huawei.com (7.191.161.198) X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 06C8C1C0013 X-Stat-Signature: gd9dzuayfks8jz1r3k5xgqifrbnonrua X-HE-Tag: 1700561948-384109 X-HE-Meta: U2FsdGVkX18fXmorw7yd1btLIPN/mz+VXgwjc7Gd0281YSndOGd111JN0VxnplGdi8CfxTo0vXWtno7DghCMdZQ4ce0XIpoFrLBBgQfVBJySk6s/MwrmZsijtkO0bWHLldjI68UN5Hf0nBX1nxIDVAc9V3CYzSMiL1gvDvSE0vhZLElv67uuy9BVWfJ95k5KFX/InoI2WQmC9067nDjLTpCJh3dlPL5VFGVFZoSocUxiE+7Iel6iln67IBsfb199t+mmxggmg4Npc3A4ay34Jl61ZQtryCb5ohkdBp+IRArS4rjOSerRBG7sjyzDMfZXB2GdhkpOK0xQDSPnzLXcXYQMa4kc6hgsU+YjCoEBAe3H83UMxolDEqYVmod8qZLfwYTqUMU0g2JmNT4yNQR6+iy3Gnm2gPKfk8T08LY6NNZrdRGVLy7nx2UHvMTZNEifsDzNNwdsxAp9bygMZT+MDXept8yau9TCYME2po8B671Ikt1xo62WulDXG9A+1YwDnTt2ifpwsmjdzDBztRhlVa2OQg7rkrdRjAAtiFKhc4f/9g8wQXFOObYWjn+zszxIRwU8jPkutLKp4sJDeuKZN54trsGhNKIifYWEKj/cGt4ceVkV6xiWg+umK7/z64iF5HKMKpkBIeM4oo8vWvRtHSorCaXZp7ywtAk5UShz6RFhe2Gye0E2FnCgK2AsKqVIxtT91jm+J1uDYsFDpcgZL6Dg7XrhbNUwsvpx7Bvs+s80iR7znMh4/SgkdJw9WY8BSQ+87+XvnsA8wkJTjW13Y2IOSZhKXuVglUMFDVzYZah9Iu4GN/euo5FtruOxgTsFCVYtojA1JTj3mZBXNh3VasdAWnA+FotjC2ZPnAIxiHMqf+Za2GQt+nAkIFCY3K+Lbh3hxEy20k3liVhrFt7P5/Qf4THlN1mGlQT14WkFrAzvM8WpA0Kzz5YE2WQP29Zc8HrXbGxqD2Xls+wOYgM kYHWq6os ICkaIl7wesgwW+oUG95ZiUQNI7O/h3AtOp5fYtXgcPl8PiPptCqbtDT11jq6ZjRzhOjqYNFwaJVSnXKyoPRR50uBA+KHSxp3vXyNlnTywKy//wAadLVHPuz3vjry+lj1va3AhBmd7eT0gki8= 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: From: Shiju Jose Add scrub control attributes for the DDR5 ECS feature. The Error Check Scrub (ECS) is a feature defined in JEDEC DDR5 SDRAM Specification (JESD79-5) and allows the DRAM to internally read, correct single-bit errors, and write back corrected data bits to the DRAM array while providing transparency to error counts. The ECS control feature allows the request to configure ECS input configurations during system boot or at run-time. The ECS control allows the requester to change the ECS threshold count provided that the request is within the definition specified in DDR5 mode registers, change mode between codeword mode and row count mode, and reset the ECS counter. Signed-off-by: Shiju Jose --- drivers/memory/scrub/memory-scrub.c | 13 ++++++++++++- include/memory/memory-scrub.h | 10 ++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/memory/scrub/memory-scrub.c b/drivers/memory/scrub/memory-scrub.c index e14e7207b1ad..d39fa765fa63 100755 --- a/drivers/memory/scrub/memory-scrub.c +++ b/drivers/memory/scrub/memory-scrub.c @@ -211,7 +211,8 @@ static bool is_hex_attr(u32 attr) static bool is_string_attr(u32 attr) { - return attr == scrub_speed_available; + return attr == scrub_speed_available || + attr == scrub_threshold_available; } static struct attribute *scrub_genattr(const void *drvdata, @@ -272,6 +273,16 @@ static const char * const scrub_common_attrs[] = { [scrub_enable] = "enable", [scrub_speed] = "speed", [scrub_speed_available] = "speed_available", + /* scrub attributes - DDR5 ECS/common */ + [scrub_ecs_log_entry_type] = "ecs_log_entry_type", + [scrub_ecs_log_entry_type_per_dram] = "ecs_log_entry_type_per_dram", + [scrub_ecs_log_entry_type_per_memory_media] = "ecs_log_entry_type_per_memory_media", + [scrub_mode] = "mode", + [scrub_mode_counts_rows] = "mode_counts_rows", + [scrub_mode_counts_codewords] = "mode_counts_codewords", + [scrub_reset_counter] = "reset_counter", + [scrub_threshold] = "threshold", + [scrub_threshold_available] = "threshold_available", }; static struct attribute ** diff --git a/include/memory/memory-scrub.h b/include/memory/memory-scrub.h index d7cbde4718d0..74ad5addd5b3 100755 --- a/include/memory/memory-scrub.h +++ b/include/memory/memory-scrub.h @@ -23,6 +23,16 @@ enum scrub_attributes { scrub_enable, scrub_speed, scrub_speed_available, + /* scrub attributes - DDR5 ECS/common */ + scrub_ecs_log_entry_type, + scrub_ecs_log_entry_type_per_dram, + scrub_ecs_log_entry_type_per_memory_media, + scrub_mode, + scrub_mode_counts_rows, + scrub_mode_counts_codewords, + scrub_reset_counter, + scrub_threshold, + scrub_threshold_available, max_attrs, };