From patchwork Thu Nov 30 19:23:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shiju Jose X-Patchwork-Id: 13474891 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 BEF9DC46CA3 for ; Thu, 30 Nov 2023 19:23:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2537E6B0483; Thu, 30 Nov 2023 14:23:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 18C296B0484; Thu, 30 Nov 2023 14:23:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 004E56B0487; Thu, 30 Nov 2023 14:23:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id E48B56B0483 for ; Thu, 30 Nov 2023 14:23:37 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B55B0C030B for ; Thu, 30 Nov 2023 19:23:37 +0000 (UTC) X-FDA: 81515594874.30.1B64540 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by imf07.hostedemail.com (Postfix) with ESMTP id 7C4A540014 for ; Thu, 30 Nov 2023 19:23:35 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf07.hostedemail.com: domain of shiju.jose@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=shiju.jose@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701372215; 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=qBl6X781g1URePy/zIT03Qx96CWSeuENJeyyONXt9xs=; b=LviiS8NRJ1G92anu11UTyQ4tyz4odCvn6Nee7LYgCsmdvLGLpKa1FNVDmJ4rtYgsX5x2EE Z/beokOlqXx8qVV4jFmA/ykQ/DrbtjodHeHL83NPRnE/R3PFfZnGtT1C21GJjJ6sUqVbJz IFg12sN1AbA+IZkdE9waJcRJZy3I8kU= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf07.hostedemail.com: domain of shiju.jose@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=shiju.jose@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701372215; a=rsa-sha256; cv=none; b=v001vOv7UxldwqKXrCZJYIP8TmR4M5siT+p+5/JzUSZCtZD7JNXLwGh/fQZUvJ4lvJ3qgP lMKgCv+BDlJ9HLkH/72LgZtmgbV6vuYEl1liV6dstSe2tSplirJlBNq1juHxYZxWKubwcY /aaneakEHG2ofRimjbFmFxNMvDtriaI= Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4Sh5fX6BRjz6DB9n; Fri, 1 Dec 2023 03:21:56 +0800 (CST) Received: from lhrpeml500006.china.huawei.com (unknown [7.191.161.198]) by mail.maildlp.com (Postfix) with ESMTPS id A59C01402CD; Fri, 1 Dec 2023 03:23:33 +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; Thu, 30 Nov 2023 19:23:32 +0000 From: To: , , , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v4 08/11] memory: scrub: Add scrub control attributes for the DDR5 ECS Date: Fri, 1 Dec 2023 03:23:10 +0800 Message-ID: <20231130192314.1220-9-shiju.jose@huawei.com> X-Mailer: git-send-email 2.35.1.windows.2 In-Reply-To: <20231130192314.1220-1-shiju.jose@huawei.com> References: <20231130192314.1220-1-shiju.jose@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.122.247.234] X-ClientProxiedBy: lhrpeml500004.china.huawei.com (7.191.163.9) To lhrpeml500006.china.huawei.com (7.191.161.198) X-Rspamd-Queue-Id: 7C4A540014 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: 4g6ycyej76odidfyzmdjt87usfwocwjw X-HE-Tag: 1701372215-397886 X-HE-Meta: U2FsdGVkX1+O8hsyee4r9fncbNfUyXlcZas6u4Xyt7SqRLdDi1nUZTD+jMrq2NSQXRFLOSTIAEeUQ7UE+ila7qKCrE81k0PR97o3+6hW5KZtoKlFXTSQL42+WNMmK1zBaZkB6fjHdhAWVZuvhhL/oYgJhJxbnCrk+kTMkoz2HrIYvT8g6kuxFdK3GjkVfNXTdors9nsrORm1aWjeWt2v9i54Nle951wrx/oVhGZDkHxvy012hgy1gHggvMAP+9nmo6JQihF3mVajVHOMYenwWwLqiMKthMuAiX9mY/9Cn8ssjlt3PhEEnbfqyst9dWI09EKU/WqUYo40gT+uoh8boaln62qmICDb5Ypk02Qaw5WP6Ky2NpzL8VvkU4jWhrHYiQP0MakJxixSiGZ0uZio7xtVBKBGzkHfDhP2nIkx/L9g6CpSDD/lTKnn4Q+PSmzOLHWedrzdJUbU6nRZKqVtiBNUuvlAXA7dJyQ9apzYpVJ/mVUJmrrXHJQbhzcmxoB1I+mQy/18tOUTO12IqxMVOtwKG9PGJfnKdATdkFXoCrdCGTDrf6RedwFdP/RMXr8odgC7qbeWW1W73Rp4Xv28iY61uI/zqQjoCMZNidJZGjiPLHoJRdQGOnaf8FIIJ95w3vBJcJisls7iQ/gBkNzE0PpVXqlZcGWYGM0R0/izAokm+d34DC9bZ0qEF76Hm75S2FCeCg78a8pq2FjIw0plK0GStxMfo+X/vP748PcHSw2zsHml6szE+zA/c5dfcusLM5Ss/q4ZaseWrsYNeZG07pUjpghzICAYWTP67d8Z1xZ6xT5MDUwIKXKW2ucEg3Y8icA+V7Gz0Nd5AeE2Smekckfoj01vkv3Dm5uE5izS1FQmSRF6E9FLkXE+l9Bil0OSjn88yoveosglNV1Z5qea2qzVICGTcHcn289jMQqJuMnxwsDtUzpMDXMWM8J9oIjkMzPx2WNrykhowtmTaOH ehYQGrbr K15u9zgNcOmONHRQZva6T7grpYU5z47xbloKhxfBiCow4E8cx3L7JPIIbWoZXBdXelayt26gNra1WDW0dycZhYhVdy3ODA9bibgxO7fp9V1npqzF8wIRj8pnjAOEeGGGG/7L0bu8Fka9kwtU= 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 c2d794b2624b..43b7da43114f 100755 --- a/drivers/memory/scrub/memory-scrub.c +++ b/drivers/memory/scrub/memory-scrub.c @@ -208,7 +208,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, @@ -269,6 +270,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, };