From patchwork Wed Jan 18 20:02:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alison Schofield X-Patchwork-Id: 45463 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2536739wrn; Wed, 18 Jan 2023 12:04:31 -0800 (PST) X-Google-Smtp-Source: AMrXdXtNHkD6bZSnflpRyr69rh2r79J00mrwnu8GLodg7Epl5JU7GoE72Ph/4KOOLPlLNYI3mVc8 X-Received: by 2002:a05:6402:159:b0:49d:a87f:ba7b with SMTP id s25-20020a056402015900b0049da87fba7bmr8128732edu.39.1674072271380; Wed, 18 Jan 2023 12:04:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674072271; cv=none; d=google.com; s=arc-20160816; b=HvJvHxnQzznRosdzgD5vOfbsoa6Ps2O31DJVrosCYVB4etOHJaQUtLggZvIK0f44RI k1SfOBQyu1wAJrZ9apHuO9ozambnXhLhOIMmVqzg+qnuvKCeCT04n+kAkxn7I3R1KRqN +AraETMktmjjnyDM6aILGX5yJKJmjrdbxjjKAHiuGNsDMQOR9vn+svVepuNKgpM37/B6 zjIiUW+3rNs+gaZ+oHMlcFFuJBacRGHeiU3A/cVc1GHJN44YYinicRgtVm/svqHfVDeV kZ3cldyZD3oq0ICrvAEdDIAPixuXdoP0H9hS4W/+Na6ziNmHBWf+uDf4LrVowYyYfy6o +k6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hj5cPCSmecKMrdWVThfz89SifymHuklmy10bHaeg49Y=; b=zZH+MAc/hEOXftrX2TsoweLdBjLbhaN8c3ua16NW9mYvCbOlv/0RVKJ8dr19Uc/Bk5 BgArAe/yGYevFWxUXN3L1jU+8RllKLXbt6ZK0aHGSUEOYDVQZ0Gm/3TY7zFGJ6xCyx+f ArN9TVA9zniYkGitqzEop9gaE129yNsCYlK+dyyLzglesIb3ib571Mxg0n9eUSK6kog0 9OoxXluCnbnc3GAMIU9q/rXUiGpplh0puozQecRiHBakyNHutVo+F+RB+iVf6YgLJ98/ /mMGsGXksydbAGDawzgNwunfhS3P3VMzf26HIX6qQaPbtv5dGdLS3o2TFf3J6n6ZJrO6 9Jaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=nNqtNO46; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dp20-20020a170906c15400b008688996d6c3si15518234ejc.281.2023.01.18.12.04.07; Wed, 18 Jan 2023 12:04:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=nNqtNO46; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229933AbjARUD0 (ORCPT + 99 others); Wed, 18 Jan 2023 15:03:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50374 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229871AbjARUDL (ORCPT ); Wed, 18 Jan 2023 15:03:11 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C115F5926F; Wed, 18 Jan 2023 12:02:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674072171; x=1705608171; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aRw8JrUibr2BZHp3e7ft45UdfvnTap5W0KSsdC4zYxU=; b=nNqtNO46cbHLvEC8gZ1mjEktMDN0DmAF3DLdNMVtdi9sV0rRO2P4v4xl 9/9ow+tZEBItu1OGpc4YaXZA2HPnnh2NAUOBelWW+8CaVdKAa0WoKWwa6 Ul7B+9kYXq5zoLj35R2tpuz9+Wr9vFo1xIcvQVy3+BU1PR5/PX8FKoFQG H6ayyAwpin6htMXPLq+jWII5uW4k5cBA65iMHqjkUy7f8XOaedckT5Xtp yvgBpxttLwfCpkYk2zYY3exzk621fHUPo0TPo9ndtaJDYlCNyM/kzMeJV 7yCxScWeNteqbcdlkffdjr/NK/moFuLA95Kfw+pqzvbsPQsQj/J/v8uRD g==; X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="322776796" X-IronPort-AV: E=Sophos;i="5.97,226,1669104000"; d="scan'208";a="322776796" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 12:02:30 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="661861697" X-IronPort-AV: E=Sophos;i="5.97,226,1669104000"; d="scan'208";a="661861697" Received: from aschofie-mobl2.amr.corp.intel.com (HELO localhost) ([10.209.119.104]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 12:02:29 -0800 From: alison.schofield@intel.com To: Dan Williams , Ira Weiny , Vishal Verma , Dave Jiang , Ben Widawsky , Steven Rostedt Cc: Alison Schofield , linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, Jonathan Cameron Subject: [PATCH v5 4/5] cxl/region: Add trigger_poison_list sysfs attribute Date: Wed, 18 Jan 2023 12:02:20 -0800 Message-Id: <13cdf8de46d0ed02567625f3343f2a4911ab4064.1674070170.git.alison.schofield@intel.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755392006306625008?= X-GMAIL-MSGID: =?utf-8?q?1755392006306625008?= From: Alison Schofield When a boolean 'true' is written to this attribute the region driver retrieves the poison list for the capacity each device contributes to this region. The list consists of addresses that are poisoned, or would result in poison if accessed, and the source of the poison. The retrieved errors are logged as kernel trace events with the label 'cxl_poison'. Devices not supporting the poison list capability are ignored. Reviewed-by: Jonathan Cameron Signed-off-by: Alison Schofield --- Documentation/ABI/testing/sysfs-bus-cxl | 14 +++++++++++ drivers/cxl/core/region.c | 33 +++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-cxl b/Documentation/ABI/testing/sysfs-bus-cxl index df40ed09ea67..b715a4609718 100644 --- a/Documentation/ABI/testing/sysfs-bus-cxl +++ b/Documentation/ABI/testing/sysfs-bus-cxl @@ -402,3 +402,17 @@ Description: attribute is only visible for devices supporting the capability. The retrieved errors are logged as kernel trace events with the label 'cxl_poison'. + + +What: /sys/bus/cxl/devices/regionZ/trigger_poison_list +Date: November, 2022 +KernelVersion: v6.2 +Contact: linux-cxl@vger.kernel.org +Description: + (WO) When a boolean 'true' is written to this attribute the + region driver retrieves the poison list for the capacity + each device contributes to this region. The list consists + of addresses that are poisoned, or would result in poison + if accessed, and the source of the poison. The retrieved + errors are logged as kernel trace events with the label + 'cxl_poison'. diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 02f28da519e3..62ba9aa6bbf8 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -72,6 +72,38 @@ static int is_dup(struct device *match, void *data) return 0; } +static ssize_t trigger_poison_list_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t len) +{ + struct cxl_region *cxlr = to_cxl_region(dev); + struct cxl_region_params *p = &cxlr->params; + struct cxl_endpoint_decoder *cxled; + struct cxl_memdev *cxlmd; + u64 offset, length; + int rc, i; + bool tmp; + + if (kstrtobool(buf, &tmp)) + return -EINVAL; + + for (i = 0; i < p->nr_targets; i++) { + cxled = p->targets[i]; + cxlmd = cxled_to_memdev(cxled); + if (!test_bit(CXL_MEM_COMMAND_ID_GET_POISON, + cxlmd->cxlds->enabled_cmds)) + continue; + + offset = cxl_dpa_resource_start(cxled); + length = cxl_dpa_size(cxled); + rc = cxl_mem_get_poison(cxlmd, offset, length, cxlr); + if (rc) + return rc; + } + return len; +} +static DEVICE_ATTR_WO(trigger_poison_list); + static ssize_t uuid_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t len) { @@ -570,6 +602,7 @@ static struct attribute *cxl_region_attrs[] = { &dev_attr_interleave_granularity.attr, &dev_attr_resource.attr, &dev_attr_size.attr, + &dev_attr_trigger_poison_list.attr, NULL, };