From patchwork Fri Nov 11 03:12:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alison Schofield X-Patchwork-Id: 18400 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp511689wru; Thu, 10 Nov 2022 19:14:41 -0800 (PST) X-Google-Smtp-Source: AMsMyM5lMd2I6ExD8F9hEIreH+Fo2nmSdSdRB7oM94VUER/z9H0EjZV1irnmDBZWRlRL/JJVNtB8 X-Received: by 2002:a63:3207:0:b0:46a:f665:ed96 with SMTP id y7-20020a633207000000b0046af665ed96mr4377435pgy.486.1668136481124; Thu, 10 Nov 2022 19:14:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668136481; cv=none; d=google.com; s=arc-20160816; b=ZM7lgCLi/EHxWa9LqffsGKhVZ22ismhIHCE1AqHrBC51hMjJOJmzSw++gXGcx6F+zm 1C8VU5VtQa9sTNI4G392Ad2F5PKnCIYM1KMIT7t6HIdOrJiYY4mNufngsEJ8/kSmNmlD UCDiA2+DkjrdAEOPGLrqLNjAjy3Iq7vBuaD1cJQqGUz+f5EuOyGb9CYcZxP/fWjpkRMs oZ2wYweC/kpUf/m0uI6RJN7WutYHjXENbNBaXhz+DOwXQkWCpWjBZAjwiK++7HUntD/7 Et4GFocWqcoCXdwwBlUh657acIapuaNgzi4bpdX8/7YOmbkiElCbNyTX/F3cNZrLnipR Lscw== 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=xbI/wns7PPcAXKtQjuY222W4LvwSRAXV0pVrWb6M3xw=; b=Bem9C2qbPfmbk+X+ueOzeeT418Ekmiw1tAUPKFXFLQF3MkSiBZ971abmCwEXgoNNT6 AYyxDlv+Zug0fDvR+6cSIClWtPDqFKqOd+aH6BgoxlPvv6d8oOHe9CjervTWqJznKBEB KK/DN6VqStsOEAc2kZc39R1D629Iq0rOl0vDg2YbGsg71keftyzDXSWQNvj9IM4GRccd y6GL5ZfRWWENRJEHYMrU2BC2Wba7AVvfbEuOub02IJGObMEG2zweL1C4DI3E9R8ScORB H5IpQBD9hJMfPRzgVoUEScO2jlJGJIHfwIvmIepLVTMSIrq2rG6zbSKJvbMXdYAAx4kq /bAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Pdq3mywf; 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 jc22-20020a17090325d600b001789a178e33si1035319plb.428.2022.11.10.19.14.27; Thu, 10 Nov 2022 19:14:41 -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=Pdq3mywf; 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 S232650AbiKKDNJ (ORCPT + 99 others); Thu, 10 Nov 2022 22:13:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231483AbiKKDM5 (ORCPT ); Thu, 10 Nov 2022 22:12:57 -0500 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA3A72EF42; Thu, 10 Nov 2022 19:12:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668136376; x=1699672376; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=D2Rd/Pgneu6uQpvUYP+09V/ctmxkFwMNJvxyOCowpy0=; b=Pdq3mywfMNQPVHBqLsIsLvShiWWCTPHHmYmRrhMuaw8bFtLm7+LlPE8O S5V7sGrhuVHCsr3AvAkAqA0YUsJghmyoBqzuTo4/FlQturgwgVDl8kZZg sWZht16t+KbRAovtv3OD8AvAvyNZ8SGXKAezmaGYTgvqmddW2eJqiPrt3 iVljrVXt9JjKc4JQVGqsv0DupTxzZXrwObmMOVpOq9fPm/Uvh6p0w23Z6 MldhNMZqo9L9GLOeOymuHklwkp1UhRPO0AZJyPBmVal4WR67Dep1R4Qm6 LlLXQwoAvD9kwZVyo10n68BUtzHk6dCla/se8dg9uxaoufNbcHLdtmnlP w==; X-IronPort-AV: E=McAfee;i="6500,9779,10527"; a="310224414" X-IronPort-AV: E=Sophos;i="5.96,155,1665471600"; d="scan'208";a="310224414" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2022 19:12:56 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10527"; a="812296090" X-IronPort-AV: E=Sophos;i="5.96,155,1665471600"; d="scan'208";a="812296090" Received: from aschofie-mobl2.amr.corp.intel.com (HELO localhost) ([10.209.161.45]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2022 19:12:55 -0800 From: alison.schofield@intel.com To: Dan Williams , Ira Weiny , Vishal Verma , Dave Jiang , Ben Widawsky , Steven Rostedt , Ingo Molnar Cc: Alison Schofield , linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 4/6] cxl/region: Add trigger_poison_list sysfs attribute Date: Thu, 10 Nov 2022 19:12:42 -0800 Message-Id: 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?1749167878946138608?= X-GMAIL-MSGID: =?utf-8?q?1749167878946138608?= 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 includes 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. Signed-off-by: Alison Schofield Reviewed-by: Jonathan Cameron --- 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 1c5f4a853ba2..54fad3bdcb2b 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 includes + 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 f9ae5ad284ff..68821238491e 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, };