From nobody Fri May 17 03:39:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1711694272; cv=none; d=zohomail.com; s=zohoarc; b=hsj3N8LwwGDMGTWBF4HIjzLbGt/ECD0w7hyRRkJoNvbE6by3CGI8oJ6Rzbt3FqpjOrEGARdX/EdP8BH2l+z5SwkQEvqBGGmg2GWEdrsd0hcfX43Ds+XhE1DBwQwCUYCIJvg6QWDPbhWi+5kHV3iFDSalxS3+4ro4DrgIYZwVkqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1711694272; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=rs+JhLN1gnph2s2e7KRWoNApPj6FlgdytK5KcIGrA+g=; b=T1TynDHhhMglmx9Tlf+txJI9CPQmYjQPVFLCd1k/De5zh1ny9LZyNvxrH7G2v3ozvPhLqX4wQ+QJaOaYUx/U9cLRfMNQ/5OJ46ndKe5/brtPYSWoMt2AJ0y93C3aTluVRk2PN1bWJeJo3x98nMQrM2J0E2KA+cDdEuoqLrisMYA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1711694272312404.4522253504314; Thu, 28 Mar 2024 23:37:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rq5qr-0004YO-0c; Fri, 29 Mar 2024 02:36:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5ql-0004Vf-0J for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:27 -0400 Received: from esa5.hc1455-7.c3s2.iphmx.com ([68.232.139.130]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5qh-0002VD-Gx for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:26 -0400 Received: from unknown (HELO oym-r1.gw.nic.fujitsu.com) ([210.162.30.89]) by esa5.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2024 15:36:19 +0900 Received: from oym-m2.gw.nic.fujitsu.com (oym-nat-oym-m2.gw.nic.fujitsu.com [192.168.87.59]) by oym-r1.gw.nic.fujitsu.com (Postfix) with ESMTP id 08219D4801 for ; Fri, 29 Mar 2024 15:36:17 +0900 (JST) Received: from kws-ab4.gw.nic.fujitsu.com (kws-ab4.gw.nic.fujitsu.com [192.51.206.22]) by oym-m2.gw.nic.fujitsu.com (Postfix) with ESMTP id 2C1B020538E for ; Fri, 29 Mar 2024 15:36:16 +0900 (JST) Received: from edo.cn.fujitsu.com (edo.cn.fujitsu.com [10.167.33.5]) by kws-ab4.gw.nic.fujitsu.com (Postfix) with ESMTP id B64C72288EB for ; Fri, 29 Mar 2024 15:36:15 +0900 (JST) Received: from irides.g08.fujitsu.local (unknown [10.167.226.114]) by edo.cn.fujitsu.com (Postfix) with ESMTP id 378B31A006D; Fri, 29 Mar 2024 14:36:15 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj2; t=1711694183; x=1743230183; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eaTURs2DX3hFrascB0JmgCheHmdrmF0RLNDE+Or7F2I=; b=dd3AWtq5Qxd9SS6BeBBVg6xGOl4Xmnr8slXz5AKM85JiIdmRr7Vq2ZcT CmQSRWnrUhAzmpOmh00BEtzhbyopKtYCHjQDWazP4zcL564Oa2lCbANK5 oA2lgQO4M5mNUO/npZkMRm+5p1MXG1WGpvM/JNvobIPxf+xHDunrdZa8n knGSkBOykAVeScr0Nr7lXNEhjWYMjstKYnV1IHsVFByOYtKqVyhtFqkKw QNzMgc/wU8OG1XVymaLf/3D7jRuGxBA9GOoDPLcaCUoVvajxx3PmgTVEV nUpyNc3nI+WLXX3JESU1z+NbXGfX+EPOJc6dlBu5+UqIfg4Nss7RRYMZY g==; X-IronPort-AV: E=McAfee;i="6600,9927,11027"; a="153191538" X-IronPort-AV: E=Sophos;i="6.07,164,1708354800"; d="scan'208";a="153191538" To: qemu-devel@nongnu.org, linux-cxl@vger.kernel.org Cc: Jonathan.Cameron@huawei.com, dan.j.williams@intel.com, dave@stgolabs.net, ira.weiny@intel.com, stable@vger.kernel.org Subject: [RFC PATCH v2 1/6] cxl/core: correct length of DPA field masks Date: Fri, 29 Mar 2024 14:36:09 +0800 Message-Id: <20240329063614.362763-2-ruansy.fnst@fujitsu.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> References: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSS-9.1.0.1417-9.0.0.1002-28282.003 X-TM-AS-User-Approved-Sender: Yes X-TMASE-Version: IMSS-9.1.0.1417-9.0.1002-28282.003 X-TMASE-Result: 10-1.936900-10.000000 X-TMASE-MatchedRID: 6KVfooacCZzo4fT4WEihVSQWufwDJ4K9T5ysQDj6eFnIPbn2oQhptW4j 6HJSTgstiC69Gex0rT0XkIT0cenSu+BRuAss+FbmEXjPIvKd74BUENBIMyKD0ceQfu6iwSfsePr 7SQbqKPDi8zVgXoAltsIJ+4gwXrEtJ0RPnyOnrZINUgM7QdTcfXGwKxjdKzHf8Yi1jddtlC4HZ7 7a2hmTYf2ng54tmDQpuA2+Y9lsxTCcrrRiTSKATNx+1ANNyC8exuBs026550TAYLx7rnbR8rDQ8 m3TqgloelpCXnG+JjvDGBZ1G8r1Sf2D6gx/0ozp X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=68.232.139.130; envelope-from=ruansy.fnst@fujitsu.com; helo=esa5.hc1455-7.c3s2.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Shiyang Ruan From: Shiyang Ruan via Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1711694273629100002 Content-Type: text/plain; charset="utf-8" The length of Physical Address in General Media Event Record/DRAM Event Record is 64-bit, so the field mask should be defined as such length. Otherwise, this causes cxl_general_media and cxl_dram tracepoints to mask off the upper-32-bits of DPA addresses. The cxl_poison event is unaffected. If userspace was doing its own DPA-to-HPA translation this could lead to incorrect page retirement decisions, but there is no known consumer (like rasdaemon) of this event today. Fixes: d54a531a430b ("cxl/mem: Trace General Media Event Record") Cc: Cc: Dan Williams Cc: Davidlohr Bueso Cc: Jonathan Cameron Cc: Ira Weiny Signed-off-by: Shiyang Ruan --- drivers/cxl/core/trace.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/cxl/core/trace.h b/drivers/cxl/core/trace.h index e5f13260fc52..e2d1f296df97 100644 --- a/drivers/cxl/core/trace.h +++ b/drivers/cxl/core/trace.h @@ -253,11 +253,11 @@ TRACE_EVENT(cxl_generic_event, * DRAM Event Record * CXL rev 3.0 section 8.2.9.2.1.2; Table 8-44 */ -#define CXL_DPA_FLAGS_MASK 0x3F +#define CXL_DPA_FLAGS_MASK 0x3FULL #define CXL_DPA_MASK (~CXL_DPA_FLAGS_MASK) =20 -#define CXL_DPA_VOLATILE BIT(0) -#define CXL_DPA_NOT_REPAIRABLE BIT(1) +#define CXL_DPA_VOLATILE BIT_ULL(0) +#define CXL_DPA_NOT_REPAIRABLE BIT_ULL(1) #define show_dpa_flags(flags) __print_flags(flags, "|", \ { CXL_DPA_VOLATILE, "VOLATILE" }, \ { CXL_DPA_NOT_REPAIRABLE, "NOT_REPAIRABLE" } \ --=20 2.34.1 From nobody Fri May 17 03:39:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1711694252; cv=none; d=zohomail.com; s=zohoarc; b=Xs3w90Fvh2cISpWGb/fVKLPKYlYj8YMCLHlwY4traETs+iMSENkJMN3lBfzcj4fbAT3G2CfYea6/l0FxK+jJsIc5n5Xjc4g4pMx7HMYV94j2w1rR9EXiQDAvboGZ3JCxZ86XyIe/T4kzmrxChFuE0Cd9ydf0giK6r9s3bFvM+ak= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1711694252; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=LPtssy3KAGfBNqRAk6nb6CPZJsHRGa3Euhj8R9u1kaU=; b=ESi9ozzx7yXd4nA+C+Zgx8EpQIH5TIRu1Kx4B2N3kvmf6JaGRtZScgnCxkmwQgz8/1BMuewAdFGDIWpwQHroECHoTvJg/akuJHD2ugoXrx09rkZxJUbnmt6yYUOpt7u0SYRjmbsbLRLrHX8UoEqO6tenMN2CLXiLHy1KuS0Jucs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1711694252324966.9451386118428; Thu, 28 Mar 2024 23:37:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rq5qq-0004Xb-2q; Fri, 29 Mar 2024 02:36:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5qk-0004Vc-V8 for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:27 -0400 Received: from esa3.hc1455-7.c3s2.iphmx.com ([207.54.90.49]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5qh-0002VJ-Gm for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:26 -0400 Received: from unknown (HELO yto-r2.gw.nic.fujitsu.com) ([218.44.52.218]) by esa3.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2024 15:36:20 +0900 Received: from yto-m4.gw.nic.fujitsu.com (yto-nat-yto-m4.gw.nic.fujitsu.com [192.168.83.67]) by yto-r2.gw.nic.fujitsu.com (Postfix) with ESMTP id 4D806D6286 for ; Fri, 29 Mar 2024 15:36:17 +0900 (JST) Received: from kws-ab3.gw.nic.fujitsu.com (kws-ab3.gw.nic.fujitsu.com [192.51.206.21]) by yto-m4.gw.nic.fujitsu.com (Postfix) with ESMTP id 6BE97D3F31 for ; Fri, 29 Mar 2024 15:36:16 +0900 (JST) Received: from edo.cn.fujitsu.com (edo.cn.fujitsu.com [10.167.33.5]) by kws-ab3.gw.nic.fujitsu.com (Postfix) with ESMTP id 00566200A7F2A for ; Fri, 29 Mar 2024 15:36:16 +0900 (JST) Received: from irides.g08.fujitsu.local (unknown [10.167.226.114]) by edo.cn.fujitsu.com (Postfix) with ESMTP id 86FCE1A006E; Fri, 29 Mar 2024 14:36:15 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj2; t=1711694184; x=1743230184; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WjXkq8DjQjakIlilkVzxIex2qly8t8WwbQWxANAhOWU=; b=tHX7oZgN1+7oVrzCRscKpjA2FrqXWXPF8E4q47CiN5tk+SK9toFflZn4 0Gxk6IJTwATM/Yh9gAgIy/k+sXntzn+Yuh/be3Keg64iEPzs3J0DJLbgJ JjoKm91qwJPjsqnhj+XB9xAlz8Zjren50SpI09FIONpgxTy1oQz/O2C7t tk0sGz/+usDPbPm3LyOqm5Kqc2XmpG8QIw+rPe7BkQw35b6QmSRgV7ZZX /NNzsv3uKFa5J51ub4ew8u/Bs+totgIwpLbhM4MXqkOm1FJPR58M5yENl BUJKy23TsZiiKdFxdRPtlx7jRYb58RpjUfWO4ywNLc/BRhsUeqirAuPUs g==; X-IronPort-AV: E=McAfee;i="6600,9927,11027"; a="153723887" X-IronPort-AV: E=Sophos;i="6.07,164,1708354800"; d="scan'208";a="153723887" To: qemu-devel@nongnu.org, linux-cxl@vger.kernel.org Cc: Jonathan.Cameron@huawei.com, dan.j.williams@intel.com, dave@stgolabs.net, ira.weiny@intel.com Subject: [RFC PATCH v2 2/6] cxl/core: introduce cxl_mem_report_poison() Date: Fri, 29 Mar 2024 14:36:10 +0800 Message-Id: <20240329063614.362763-3-ruansy.fnst@fujitsu.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> References: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSS-9.1.0.1417-9.0.0.1002-28282.003 X-TM-AS-User-Approved-Sender: Yes X-TMASE-Version: IMSS-9.1.0.1417-9.0.1002-28282.003 X-TMASE-Result: 10--4.197900-10.000000 X-TMASE-MatchedRID: 53aa+u+VJBkM5CG8CYBPxRhvfWx0TE/bQR7lWMXPA1uWGhlHXorXXRZa DvoiUT/Mg1jj+Zp5wfm12HagvbwDji/7QU2czuUNA9lly13c/gEgltMEWVygJifJTn+dmnFQcHj giTON9jJvu+EAUOCx01Q+BXcIki7EZEHJCRAt0NqeAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8hxKp vEGAbTDo3PgYtyDuTWI3WPpm6ecjdp0YLTMI01adj70x37BoN8/h4BuZEnt4Io/4nN6pA2LIkSU kMsH+K04A1LMJVhA4LWGNvCCott3luMG6V02+QySir3tZId0WN+6klq53W5kJ9Gzq4huQVX X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.54.90.49; envelope-from=ruansy.fnst@fujitsu.com; helo=esa3.hc1455-7.c3s2.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Shiyang Ruan From: Shiyang Ruan via Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1711694253548100002 Content-Type: text/plain; charset="utf-8" If poison is detected(reported from cxl memdev), OS should be notified to handle it. So, introduce this helper function for later use: 1. translate DPA to HPA; 2. enqueue records into memory_failure's work queue; Signed-off-by: Shiyang Ruan --- Currently poison injection from debugfs always create a 64-bytes-length record, which is fine. But the injection from qemu's QMP API: qmp_cxl_inject_poison() could create a poison record contains big length, which may cause many many times of calling memory_failure_queue(). Though the MEMORY_FAILURE_FIFO_SIZE is 1 << 4, it seems not enougth. --- drivers/cxl/core/mbox.c | 18 ++++++++++++++++++ drivers/cxl/cxlmem.h | 3 +++ 2 files changed, 21 insertions(+) diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c index 9adda4795eb7..31b1b8711256 100644 --- a/drivers/cxl/core/mbox.c +++ b/drivers/cxl/core/mbox.c @@ -1290,6 +1290,24 @@ int cxl_set_timestamp(struct cxl_memdev_state *mds) } EXPORT_SYMBOL_NS_GPL(cxl_set_timestamp, CXL); =20 +void cxl_mem_report_poison(struct cxl_memdev *cxlmd, + struct cxl_region *cxlr, + struct cxl_poison_record *poison) +{ + u64 dpa =3D le64_to_cpu(poison->address) & CXL_POISON_START_MASK; + u64 len =3D PAGE_ALIGN(le32_to_cpu(poison->length) * CXL_POISON_LEN_MULT); + u64 hpa =3D cxl_trace_hpa(cxlr, cxlmd, dpa); + unsigned long pfn =3D PHYS_PFN(hpa); + unsigned long pfn_end =3D pfn + len / PAGE_SIZE - 1; + + if (!IS_ENABLED(CONFIG_MEMORY_FAILURE)) + return; + + for (; pfn <=3D pfn_end; pfn++) + memory_failure_queue(pfn, MF_ACTION_REQUIRED); +} +EXPORT_SYMBOL_NS_GPL(cxl_mem_report_poison, CXL); + int cxl_mem_get_poison(struct cxl_memdev *cxlmd, u64 offset, u64 len, struct cxl_region *cxlr) { diff --git a/drivers/cxl/cxlmem.h b/drivers/cxl/cxlmem.h index 20fb3b35e89e..82f80eb381fb 100644 --- a/drivers/cxl/cxlmem.h +++ b/drivers/cxl/cxlmem.h @@ -828,6 +828,9 @@ void cxl_event_trace_record(const struct cxl_memdev *cx= lmd, const uuid_t *uuid, union cxl_event *evt); int cxl_set_timestamp(struct cxl_memdev_state *mds); int cxl_poison_state_init(struct cxl_memdev_state *mds); +void cxl_mem_report_poison(struct cxl_memdev *cxlmd, + struct cxl_region *cxlr, + struct cxl_poison_record *poison); int cxl_mem_get_poison(struct cxl_memdev *cxlmd, u64 offset, u64 len, struct cxl_region *cxlr); int cxl_trigger_poison_list(struct cxl_memdev *cxlmd); --=20 2.34.1 From nobody Fri May 17 03:39:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1711694248; cv=none; d=zohomail.com; s=zohoarc; b=etDtvi/gG0iA6ZY41Iw/X6OXV4kvrWIb8jLjvYjxS1vvDt20RScZdp+WhiE9/8c1OYrWJtaM2h6GYLdRybCWTEDYBbLvz2XOAFvKa8N98z/QU7APcELFbyRBAUD4tHwM40IT3lN8sP1oanqSo3JQ1iDGjpcWGNRxKvBtAB+bm1A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1711694248; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=CB0UDpPSpzT9r1ld97OztPNakF3btkBtIiF9fT5OrdQ=; b=naLSxcTdNLnQ6yc6JpXWMmjApGkozzPog2tnC08/REFXJ+mCB41b4x9gVJPuOdru074UIg8n+7/y1KUZc+mPEj6w7dTPm6TxaFrlo8prlA2S2Y7W8nOrvNS+V0O2g7UZSFUPwKjM+E/o3ChTVvhjZxonhpAp9v/QOVv1Mpf8uHE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1711694248726166.2699453686621; Thu, 28 Mar 2024 23:37:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rq5qq-0004YM-Sj; Fri, 29 Mar 2024 02:36:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5ql-0004Vw-8h for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:27 -0400 Received: from esa9.hc1455-7.c3s2.iphmx.com ([139.138.36.223]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5qh-0002VS-Gy for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:26 -0400 Received: from unknown (HELO oym-r4.gw.nic.fujitsu.com) ([210.162.30.92]) by esa9.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2024 15:36:19 +0900 Received: from oym-m2.gw.nic.fujitsu.com (oym-nat-oym-m2.gw.nic.fujitsu.com [192.168.87.59]) by oym-r4.gw.nic.fujitsu.com (Postfix) with ESMTP id 9753ADCC05 for ; Fri, 29 Mar 2024 15:36:17 +0900 (JST) Received: from kws-ab4.gw.nic.fujitsu.com (kws-ab4.gw.nic.fujitsu.com [192.51.206.22]) by oym-m2.gw.nic.fujitsu.com (Postfix) with ESMTP id B26A715A16 for ; Fri, 29 Mar 2024 15:36:16 +0900 (JST) Received: from edo.cn.fujitsu.com (edo.cn.fujitsu.com [10.167.33.5]) by kws-ab4.gw.nic.fujitsu.com (Postfix) with ESMTP id 4A13C224950 for ; Fri, 29 Mar 2024 15:36:16 +0900 (JST) Received: from irides.g08.fujitsu.local (unknown [10.167.226.114]) by edo.cn.fujitsu.com (Postfix) with ESMTP id D019B1A006A; Fri, 29 Mar 2024 14:36:15 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj2; t=1711694183; x=1743230183; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wuhLrD6nDKASM1GZwEy/EhBT98EFm0ZU9lZPPyQH+DE=; b=OART/vJ4sCnGjeJ1ZZygNVoF7dHn7tA9ieCeCH7upvA2KlC8Ot4n0zMc zZ7T060WNL18+2lFluqs/7s4cecdtvyODkQi7wv44RgcuGENkhVY5FcV2 e/zVKrhZwq/oKtyt9UvCdMER4kjCeDZsdVhDfL0Ehn02usm+jqa7zvxcW 57tlhbjU+z60dBFwN4piZSa5gc1mvtnGXc7/6rdZVNaiDNG0MLtt5MyzT ta+3h7mCu3x16OUwJa+e+DHS00ayvDiJ61rVOlr/g5y4fSxVoXG7zr9eH JRf19ECXIdyq+MXdzFCG7HXtoQuW/thtDg9gG1qo05vQqkfV8g6BLaAB1 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,11027"; a="142199696" X-IronPort-AV: E=Sophos;i="6.07,164,1708354800"; d="scan'208";a="142199696" To: qemu-devel@nongnu.org, linux-cxl@vger.kernel.org Cc: Jonathan.Cameron@huawei.com, dan.j.williams@intel.com, dave@stgolabs.net, ira.weiny@intel.com Subject: [RFC PATCH v2 3/6] cxl/core: add report option for cxl_mem_get_poison() Date: Fri, 29 Mar 2024 14:36:11 +0800 Message-Id: <20240329063614.362763-4-ruansy.fnst@fujitsu.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> References: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSS-9.1.0.1417-9.0.0.1002-28282.003 X-TM-AS-User-Approved-Sender: Yes X-TMASE-Version: IMSS-9.1.0.1417-9.0.1002-28282.003 X-TMASE-Result: 10--9.462200-10.000000 X-TMASE-MatchedRID: a3KJLn6RIiIJoDeiZ6YZhB1kSRHxj+Z5/OuUJVcMZhtdXeeZrNJbgiu5 iQ9EM64EjZRdXn3Xp9M6uZyF2AGJsLVQ6XPWwtdyEXjPIvKd74BUENBIMyKD0cSiwizsgluQ9my Umu4fZeT7dV04rak8k5t7C5yK9FBjJBgtEIxUn4HfSQNpZkETVBgff28UuvITicvz9DxarMHQSo WMT37bqFIeZmiiCQMfIdXPCd0ceGWvvxILmKK/HBRFJJyf5BJe3QfwsVk0UbtuRXh7bFKB7qYgz NcfPy5s9/7GOwz/1iinIjtl5KwpMUvyE7CVOX4olExlQIQeRG0= X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=139.138.36.223; envelope-from=ruansy.fnst@fujitsu.com; helo=esa9.hc1455-7.c3s2.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Shiyang Ruan From: Shiyang Ruan via Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1711694249641100002 Content-Type: text/plain; charset="utf-8" The GMER only has "Physical Address" field, no such one indicates length. So, when a poison event is received, we could use GET_POISON_LIST command to get the poison list. Now driver has cxl_mem_get_poison(), so reuse it and add a parameter 'bool report', report poison record to MCE if set true. Signed-off-by: Shiyang Ruan --- drivers/cxl/core/mbox.c | 8 ++++++-- drivers/cxl/core/memdev.c | 4 ++-- drivers/cxl/core/region.c | 8 ++++---- drivers/cxl/cxlmem.h | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c index 31b1b8711256..19b46fb06ed6 100644 --- a/drivers/cxl/core/mbox.c +++ b/drivers/cxl/core/mbox.c @@ -1309,7 +1309,7 @@ void cxl_mem_report_poison(struct cxl_memdev *cxlmd, EXPORT_SYMBOL_NS_GPL(cxl_mem_report_poison, CXL); =20 int cxl_mem_get_poison(struct cxl_memdev *cxlmd, u64 offset, u64 len, - struct cxl_region *cxlr) + struct cxl_region *cxlr, bool report) { struct cxl_memdev_state *mds =3D to_cxl_memdev_state(cxlmd->cxlds); struct cxl_mbox_poison_out *po; @@ -1340,10 +1340,14 @@ int cxl_mem_get_poison(struct cxl_memdev *cxlmd, u6= 4 offset, u64 len, if (rc) break; =20 - for (int i =3D 0; i < le16_to_cpu(po->count); i++) + for (int i =3D 0; i < le16_to_cpu(po->count); i++) { trace_cxl_poison(cxlmd, cxlr, &po->record[i], po->flags, po->overflow_ts, CXL_POISON_TRACE_LIST); + if (report) + cxl_mem_report_poison(cxlmd, cxlr, + &po->record[i]); + } =20 /* Protect against an uncleared _FLAG_MORE */ nr_records =3D nr_records + le16_to_cpu(po->count); diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c index d4e259f3a7e9..e976141ca4a9 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c @@ -200,14 +200,14 @@ static int cxl_get_poison_by_memdev(struct cxl_memdev= *cxlmd) if (resource_size(&cxlds->pmem_res)) { offset =3D cxlds->pmem_res.start; length =3D resource_size(&cxlds->pmem_res); - rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL); + rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL, false); if (rc) return rc; } if (resource_size(&cxlds->ram_res)) { offset =3D cxlds->ram_res.start; length =3D resource_size(&cxlds->ram_res); - rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL); + rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL, false); /* * Invalid Physical Address is not an error for * volatile addresses. Device support is optional. diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 5c186e0a39b9..e83c46cb4dea 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -2585,7 +2585,7 @@ static int cxl_get_poison_unmapped(struct cxl_memdev = *cxlmd, if (ctx->mode =3D=3D CXL_DECODER_RAM) { offset =3D ctx->offset; length =3D resource_size(&cxlds->ram_res) - offset; - rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL); + rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL, false); if (rc =3D=3D -EFAULT) rc =3D 0; if (rc) @@ -2603,7 +2603,7 @@ static int cxl_get_poison_unmapped(struct cxl_memdev = *cxlmd, return 0; } =20 - return cxl_mem_get_poison(cxlmd, offset, length, NULL); + return cxl_mem_get_poison(cxlmd, offset, length, NULL, false); } =20 static int poison_by_decoder(struct device *dev, void *arg) @@ -2637,7 +2637,7 @@ static int poison_by_decoder(struct device *dev, void= *arg) if (cxled->skip) { offset =3D cxled->dpa_res->start - cxled->skip; length =3D cxled->skip; - rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL); + rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL, false); if (rc =3D=3D -EFAULT && cxled->mode =3D=3D CXL_DECODER_RAM) rc =3D 0; if (rc) @@ -2646,7 +2646,7 @@ static int poison_by_decoder(struct device *dev, void= *arg) =20 offset =3D cxled->dpa_res->start; length =3D cxled->dpa_res->end - offset + 1; - rc =3D cxl_mem_get_poison(cxlmd, offset, length, cxled->cxld.region); + rc =3D cxl_mem_get_poison(cxlmd, offset, length, cxled->cxld.region, fals= e); if (rc =3D=3D -EFAULT && cxled->mode =3D=3D CXL_DECODER_RAM) rc =3D 0; if (rc) diff --git a/drivers/cxl/cxlmem.h b/drivers/cxl/cxlmem.h index 82f80eb381fb..1f03130b9d6a 100644 --- a/drivers/cxl/cxlmem.h +++ b/drivers/cxl/cxlmem.h @@ -832,7 +832,7 @@ void cxl_mem_report_poison(struct cxl_memdev *cxlmd, struct cxl_region *cxlr, struct cxl_poison_record *poison); int cxl_mem_get_poison(struct cxl_memdev *cxlmd, u64 offset, u64 len, - struct cxl_region *cxlr); + struct cxl_region *cxlr, bool report); int cxl_trigger_poison_list(struct cxl_memdev *cxlmd); int cxl_inject_poison(struct cxl_memdev *cxlmd, u64 dpa); int cxl_clear_poison(struct cxl_memdev *cxlmd, u64 dpa); --=20 2.34.1 From nobody Fri May 17 03:39:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1711694204; cv=none; d=zohomail.com; s=zohoarc; b=igzLiX7sRE4gMy3z2SmnvPNTAU1d5pKDdrD/3VRFTV8Fs4RmP1niR297dOEI/XqoD4U8Wv6x3lh/YcqJ6JzWsf4yS5FBNhiyXjGnM6l258gtwg4Qgk73GnxiQEgCPCMR0FwmHF9TboLlcQC3JHdT7mQVqgxckFU58qfkfATvHa4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1711694204; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=vGFsH/Fgf5eRvt5SUtQ7fKDLTZZxgyunK4huQGD7sYw=; b=VBeGxB9ZiKBKqsm3/J2mWKwbf2hTepBcLulTBuFl0G6hIehGp119o+i+kB77IKn14YacXBfmwLKLYUeO4aZilkeunWSro3qbXMFR+NexYII/1rLiV6gGiUDoVcfxbPQP+yNNfPClcVRLUQxvjnPKn12kiwGlpvPVoKQ+v6p6+z8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1711694204402209.99359325413968; Thu, 28 Mar 2024 23:36:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rq5qp-0004XK-Rp; Fri, 29 Mar 2024 02:36:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5qj-0004VI-F8 for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:25 -0400 Received: from esa11.hc1455-7.c3s2.iphmx.com ([207.54.90.137]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5qh-0002VK-IR for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:25 -0400 Received: from unknown (HELO oym-r4.gw.nic.fujitsu.com) ([210.162.30.92]) by esa11.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2024 15:36:20 +0900 Received: from oym-m3.gw.nic.fujitsu.com (oym-nat-oym-m3.gw.nic.fujitsu.com [192.168.87.60]) by oym-r4.gw.nic.fujitsu.com (Postfix) with ESMTP id B8D6FDCC08 for ; Fri, 29 Mar 2024 15:36:17 +0900 (JST) Received: from kws-ab3.gw.nic.fujitsu.com (kws-ab3.gw.nic.fujitsu.com [192.51.206.21]) by oym-m3.gw.nic.fujitsu.com (Postfix) with ESMTP id E30E715620 for ; Fri, 29 Mar 2024 15:36:16 +0900 (JST) Received: from edo.cn.fujitsu.com (edo.cn.fujitsu.com [10.167.33.5]) by kws-ab3.gw.nic.fujitsu.com (Postfix) with ESMTP id 7EC08200A7F0B for ; Fri, 29 Mar 2024 15:36:16 +0900 (JST) Received: from irides.g08.fujitsu.local (unknown [10.167.226.114]) by edo.cn.fujitsu.com (Postfix) with ESMTP id 24B0C1A006D; Fri, 29 Mar 2024 14:36:16 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj2; t=1711694184; x=1743230184; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Om0rTA9WbsSAo7t6tlUEm6jtC04fsfKD+Idi78A3PwY=; b=qVkeJmGDqC4AGU51faOF30bODFPUqTCERvkm3Rh/n6r7MkROd8rmQq9M OCzz50EfejF0D0rpYKCXt3JEUStbmaW2zyUbmar8DVcrYEgRuP69AkMFN Z7p753tIEusvtkKPMWNeYnZbMHKDTYxUYyora/1qD2nzXn0419R0xyCKx WI1zVg5vY8bkfLWrNKIejegig9FTvnFI303YEGQYVOGYQB790r6IrsVBS ALYMQisbA2+pSsSrzXFXkkB/NFWuTHm2lkxzXxGlK7Q8LwRUKSZS5pgHS 44KLnTMVdmlDFxD0VznYREs5W4WyCN5yAgMcwAqS9WQpwC2sulGQpD0JR g==; X-IronPort-AV: E=McAfee;i="6600,9927,11027"; a="133107776" X-IronPort-AV: E=Sophos;i="6.07,164,1708354800"; d="scan'208";a="133107776" To: qemu-devel@nongnu.org, linux-cxl@vger.kernel.org Cc: Jonathan.Cameron@huawei.com, dan.j.williams@intel.com, dave@stgolabs.net, ira.weiny@intel.com Subject: [RFC PATCH v2 4/6] cxl/core: report poison when injecting from debugfs Date: Fri, 29 Mar 2024 14:36:12 +0800 Message-Id: <20240329063614.362763-5-ruansy.fnst@fujitsu.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> References: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSS-9.1.0.1417-9.0.0.1002-28282.003 X-TM-AS-User-Approved-Sender: Yes X-TMASE-Version: IMSS-9.1.0.1417-9.0.1002-28282.003 X-TMASE-Result: 10--1.096700-10.000000 X-TMASE-MatchedRID: It5tpevY7hTR6RKL7TRTbhF4zyLyne+ATJDl9FKHbrnLBiiIoKf6r6PF jJEFr+olKE0Je8DR/D4NXwNUB3oA790H8LFZNFG76sBnwpOylLOGGOXsAst2EY71S6fa2jIEbbi ume7ndEjAl7InEAdrZfsQLJr4C1gANHYsYoI80lgKm9Bb+04k3Mw0hF8jARVgyLf0xPiHr9ghya dlGFXHKsTgfCdKUS4cicSkmYsAV+kLUU1zqiphVX7cGd19dSFd X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.54.90.137; envelope-from=ruansy.fnst@fujitsu.com; helo=esa11.hc1455-7.c3s2.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Shiyang Ruan From: Shiyang Ruan via Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1711694205404100001 Content-Type: text/plain; charset="utf-8" Poison injection from debugfs is silent too. Add calling cxl_mem_report_poison() to make it able to do memory_failure(). Signed-off-by: Shiyang Ruan --- drivers/cxl/core/memdev.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c index e976141ca4a9..b0dcbe6f1004 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c @@ -366,6 +366,7 @@ int cxl_inject_poison(struct cxl_memdev *cxlmd, u64 dpa) .length =3D cpu_to_le32(1), }; trace_cxl_poison(cxlmd, cxlr, &record, 0, 0, CXL_POISON_TRACE_INJECT); + cxl_mem_report_poison(cxlmd, cxlr, &record); out: up_read(&cxl_dpa_rwsem); up_read(&cxl_region_rwsem); --=20 2.34.1 From nobody Fri May 17 03:39:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1711694268; cv=none; d=zohomail.com; s=zohoarc; b=LJ6tdXMyPPDr4HjFhUOyled5knddQUQwUKfsH3bAnVNBPVpXDfYdQwcxLCEtw/EKyPk1BX/boOyS/+2+YeM6vPHTtOtEi1xW3CY8hNOeeiH5LUiLtE/p3jCv/yeukCZwCbV8uf3rRJUHgQyLw1o0fDrOCYCVSM3T/Vu9ZYJ1WfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1711694268; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=XlTtD982v4AQf3k+MkjQ9QnPE306LwsXwQzmtk390So=; b=Z2hSRMzx73etGyzT4IVlbhAgFlzVF8VjBghdl0OCUbfnvYJKCxVDTX1jlCPn+ReVrIHkRR1sWxcH7UGMtMzL2DdivYkoXtcIftAlW+LNIpblEuKB8TU9GS1/rZqQ6hTpt0xwzUo1mjk+9T4Zu/9hIxJsClNrkFEyjGqmSexW4S4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1711694268910837.6349807139596; Thu, 28 Mar 2024 23:37:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rq5qr-0004Yf-KS; Fri, 29 Mar 2024 02:36:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5qk-0004Va-Qp for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:26 -0400 Received: from esa2.hc1455-7.c3s2.iphmx.com ([207.54.90.48]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5qh-0002VX-TK for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:26 -0400 Received: from unknown (HELO yto-r2.gw.nic.fujitsu.com) ([218.44.52.218]) by esa2.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2024 15:36:20 +0900 Received: from yto-m3.gw.nic.fujitsu.com (yto-nat-yto-m3.gw.nic.fujitsu.com [192.168.83.66]) by yto-r2.gw.nic.fujitsu.com (Postfix) with ESMTP id 23A1EC680C for ; Fri, 29 Mar 2024 15:36:18 +0900 (JST) Received: from kws-ab4.gw.nic.fujitsu.com (kws-ab4.gw.nic.fujitsu.com [192.51.206.22]) by yto-m3.gw.nic.fujitsu.com (Postfix) with ESMTP id 5DD50C7261 for ; Fri, 29 Mar 2024 15:36:17 +0900 (JST) Received: from edo.cn.fujitsu.com (edo.cn.fujitsu.com [10.167.33.5]) by kws-ab4.gw.nic.fujitsu.com (Postfix) with ESMTP id E64C6224612 for ; Fri, 29 Mar 2024 15:36:16 +0900 (JST) Received: from irides.g08.fujitsu.local (unknown [10.167.226.114]) by edo.cn.fujitsu.com (Postfix) with ESMTP id 783B21A006A; Fri, 29 Mar 2024 14:36:16 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj2; t=1711694183; x=1743230183; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bCrcdq4lNI8kIJNZkx/SfFaA95id3/KBVLHFuh8UmNU=; b=NaZD9niW6exL69BYWNvbL2hUoZ9qHvx2HT1SpXlz8kXicJY6lEMS0XcR oELsM4iSicnADNzGZvyPKbUgXdzWh/PF2/0g+ZhNbRre7Ma1hE5XK9A5g LTPkBN90MyJvU1fmYlRzPWD8sGOGFRNeWMRPgtQo+LVmJHV3rZgFrhyD0 TDw5bzy1G81ehjHcPVoszxvdR7DUpjDXBvWMIOps6EKXB8BguUlKqT/v0 p7rM7dGt3xBSfMuut/UbLbwVOI1+koxhF9un1r/NpVwgr3mMpgrHH2aAM aUqSJYku0j7MFVcFsREHrv7x3qaT74pnwKYiLQGv5Sxt4EQJcwXNSCsO9 A==; X-IronPort-AV: E=McAfee;i="6600,9927,11027"; a="153769248" X-IronPort-AV: E=Sophos;i="6.07,164,1708354800"; d="scan'208";a="153769248" To: qemu-devel@nongnu.org, linux-cxl@vger.kernel.org Cc: Jonathan.Cameron@huawei.com, dan.j.williams@intel.com, dave@stgolabs.net, ira.weiny@intel.com Subject: [RFC PATCH v2 5/6] cxl: add definition for transaction types Date: Fri, 29 Mar 2024 14:36:13 +0800 Message-Id: <20240329063614.362763-6-ruansy.fnst@fujitsu.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> References: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSS-9.1.0.1417-9.0.0.1002-28282.003 X-TM-AS-User-Approved-Sender: Yes X-TMASE-Version: IMSS-9.1.0.1417-9.0.1002-28282.003 X-TMASE-Result: 10--4.520000-10.000000 X-TMASE-MatchedRID: NuUGwdOZh4ZkQckJEC3Q2tyBRU/cKn69F4r8H5YrEqxOeMm3G6m0Tb8F Hrw7frluf146W0iUu2tR9er5wo4xLchblrt58TvtqdwbW9Wx9tAv5vY1YvMqbuUlKuNFfcJqo8W MkQWv6iV3LAytsQR4e42j49Ftap9ExlblqLlYqXJt4l4q/wnikovCfpj71RK4UrGm7aSNDOJYJI xPFhImJcZoZKsx29ZV9DCWgDRvWseCgKQPezcuADwdpcMIVCZT+OYGlmIZze4RZbRsQk5MBUB1Q Pq9bxnWZkAxAwjIrrMHz/H0kiLyEqGAtHMDjkk9 X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.54.90.48; envelope-from=ruansy.fnst@fujitsu.com; helo=esa2.hc1455-7.c3s2.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Shiyang Ruan From: Shiyang Ruan via Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1711694269679100002 Content-Type: text/plain; charset="utf-8" The transaction types are defined in General Media Event Record/DRAM Event per CXL rev 3.0 Section 8.2.9.2.1.1; Table 8-43 and Section 8.2.9.2.1.2; Table 8-44. Add them for Event Record handler use. Signed-off-by: Shiyang Ruan --- include/linux/cxl-event.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/include/linux/cxl-event.h b/include/linux/cxl-event.h index 03fa6d50d46f..0a50754fc330 100644 --- a/include/linux/cxl-event.h +++ b/include/linux/cxl-event.h @@ -23,6 +23,19 @@ struct cxl_event_generic { u8 data[CXL_EVENT_RECORD_DATA_LENGTH]; } __packed; =20 +/* + * CXL rev 3.0 Section 8.2.9.2.1.1; Table 8-43 + */ +enum cxl_event_transaction_type { + CXL_EVENT_TRANSACTION_UNKNOWN =3D 0X00, + CXL_EVENT_TRANSACTION_READ, + CXL_EVENT_TRANSACTION_WRITE, + CXL_EVENT_TRANSACTION_SCAN_MEDIA, + CXL_EVENT_TRANSACTION_INJECT_POISON, + CXL_EVENT_TRANSACTION_MEDIA_SCRUB, + CXL_EVENT_TRANSACTION_MEDIA_MANAGEMENT, +}; + /* * General Media Event Record * CXL rev 3.0 Section 8.2.9.2.1.1; Table 8-43 @@ -33,7 +46,7 @@ struct cxl_event_gen_media { __le64 phys_addr; u8 descriptor; u8 type; - u8 transaction_type; + u8 transaction_type; /* enum cxl_event_transaction_type */ u8 validity_flags[2]; u8 channel; u8 rank; @@ -52,7 +65,7 @@ struct cxl_event_dram { __le64 phys_addr; u8 descriptor; u8 type; - u8 transaction_type; + u8 transaction_type; /* enum cxl_event_transaction_type */ u8 validity_flags[2]; u8 channel; u8 rank; --=20 2.34.1 From nobody Fri May 17 03:39:14 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1711694253; cv=none; d=zohomail.com; s=zohoarc; b=YjsDUv6yZoC7EZR44RipUZAUOUkKnsEz0M8V4gLHijgSFzyI8LjCuqlRqLIk6W4eV+yKvlvHECwRFeC9KbLnuT//euQ1nCcJacLUhcdAqjS/Rv4WtiffZtP9c6c7kudl9/t3yXGKYnMLahLnEHoU2aJBe3di4aLKSajwIMtabvA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1711694253; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=OMqFkfWI6LnOoL9dafx6krPUoeRTStflYjTL0wUYsD8=; b=JUJHt8xpw9ItTOxeNgTe7R/qR9jKkvAb7VsbH0t0SvF8eHq70dT43pBGvSxylDtC0bvILr6J+jq3k6pplmQc4nStZSp4jsoVPPCR2ZxBMpGSj6/65wwkHumovhNiDO7ywHF8d19G550a0LQLVoOzAWob6c3twX99NdLKsl1G6Eg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail header.i=@fujitsu.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 171169425344639.663577029130465; Thu, 28 Mar 2024 23:37:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rq5qt-0004Yo-2b; Fri, 29 Mar 2024 02:36:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5ql-0004WB-AN for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:27 -0400 Received: from esa8.hc1455-7.c3s2.iphmx.com ([139.138.61.253]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rq5qh-0002Vp-Ge for qemu-devel@nongnu.org; Fri, 29 Mar 2024 02:36:27 -0400 Received: from unknown (HELO yto-r3.gw.nic.fujitsu.com) ([218.44.52.219]) by esa8.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2024 15:36:20 +0900 Received: from yto-m3.gw.nic.fujitsu.com (yto-nat-yto-m3.gw.nic.fujitsu.com [192.168.83.66]) by yto-r3.gw.nic.fujitsu.com (Postfix) with ESMTP id 7D39AE9A25 for ; Fri, 29 Mar 2024 15:36:18 +0900 (JST) Received: from kws-ab4.gw.nic.fujitsu.com (kws-ab4.gw.nic.fujitsu.com [192.51.206.22]) by yto-m3.gw.nic.fujitsu.com (Postfix) with ESMTP id A78ACC7261 for ; Fri, 29 Mar 2024 15:36:17 +0900 (JST) Received: from edo.cn.fujitsu.com (edo.cn.fujitsu.com [10.167.33.5]) by kws-ab4.gw.nic.fujitsu.com (Postfix) with ESMTP id 386B2224612 for ; Fri, 29 Mar 2024 15:36:17 +0900 (JST) Received: from irides.g08.fujitsu.local (unknown [10.167.226.114]) by edo.cn.fujitsu.com (Postfix) with ESMTP id C10561A006E; Fri, 29 Mar 2024 14:36:16 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj2; t=1711694183; x=1743230183; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=shtuRfAxtrYc7R8K9/CJ4Azd4LkSM+WTHpdkGRJ63DM=; b=cXzYA3CkIaQU4SHueVOiKYDohFMRnPbmcZsPytXkasL+JjyJYGoFFLom Bo+2G/nIyeJ3drtVxiWM3Dvfw+rQfk6zR5bhfMGnr3sh4UzEO0b8dWOZf xPD1Vo28YoDPtsQeIzn6vMpQ1JmXOnxn9ywHF2tZGHTPQ3xJvwDVH/iqf ZSSc9r6daTwfwbhXafQdKEx2sL1B6oKUhdwzsxYNe8iHUpiF27uqDQp+1 QH9Pe1dFyUpc8EZ72xnyCWtBM0SsX6z5KeJzZSzBZ5hWkpD/QyP3hK/ZW YyH0BOqw3tCPH/VAkTcwEG18AKtLesUj4B4exYZ/liVvGC7ctGP5u0up3 g==; X-IronPort-AV: E=McAfee;i="6600,9927,11027"; a="141726405" X-IronPort-AV: E=Sophos;i="6.07,164,1708354800"; d="scan'208";a="141726405" To: qemu-devel@nongnu.org, linux-cxl@vger.kernel.org Cc: Jonathan.Cameron@huawei.com, dan.j.williams@intel.com, dave@stgolabs.net, ira.weiny@intel.com Subject: [RFC PATCH v2 6/6] cxl/core: add poison injection event handler Date: Fri, 29 Mar 2024 14:36:14 +0800 Message-Id: <20240329063614.362763-7-ruansy.fnst@fujitsu.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> References: <20240329063614.362763-1-ruansy.fnst@fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSS-9.1.0.1417-9.0.0.1002-28282.003 X-TM-AS-User-Approved-Sender: Yes X-TMASE-Version: IMSS-9.1.0.1417-9.0.1002-28282.003 X-TMASE-Result: 10--21.177000-10.000000 X-TMASE-MatchedRID: iooG+Wyw6IPvjhWxSrUkKRFbgtHjUWLy/OuUJVcMZhsshTvdDYMpJmdv IBM8UuLSlD/Z1FnrlIQq1udiYlzzOw+AJDU3H+qgMGAKZueP0mZcsgu/IQFPzlFcLhxfrlwkrEi NJh+xJpmolk6IAqhmvEZXTR3Us53S8Aj+/7+3oKUFxov+3JYvY35Lmbb/xUuaOhR0VsdhRrC/BR 68O365bn9eOltIlLtrGYYZJnYtPhnonyaWYsETGxmCYUYerLHruJpeHGRhXLFHpEd1UrzmFevn/ O99cHKFCazasHFXmjvJI5NrSJkuqtnzIBSf0ZiSBe3KRVyu+k2fmd9HsjZ0Uw3H/quqvfm4NUIc 8ma/DM+LYCqQJUBx8PD9KdZg9ohhrVSkkKFNk8GJXSm2bBmGrSCW0wRZXKAmmyiLZetSf8mfop0 ytGwvXiq2rl3dzGQ1A/3R8k/14e0= X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=139.138.61.253; envelope-from=ruansy.fnst@fujitsu.com; helo=esa8.hc1455-7.c3s2.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Shiyang Ruan From: Shiyang Ruan via Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1711694255675100007 Content-Type: text/plain; charset="utf-8" Currently driver only traces cxl events, poison injection (for both vmem and pmem type) on cxl memdev is silent. OS needs to be notified then it could handle poison range in time. Per CXL spec, the device error event could be signaled through FW-First and OS-First methods. So, add poison event handler in OS-First method: - qemu: - CXL device report POISON event to OS by MSI by sending GMER after injecting a poison record - CXL driver a. parse the POISON event from GMER; <-- this patch b. retrieve POISON list from memdev; c. translate poisoned DPA to HPA; d. enqueue poisoned PFN to memory_failure's work queue; Signed-off-by: Shiyang Ruan --- the reply to Jonathan's comment in last version: > I'm not 100% convinced this is necessary poison causing. Also > the text tells us we should see 'an appropriate event'. > DRAM one seems likely to be chosen by some vendors. I think it's right to use DRAM Event Record for volatile-memdev, but=20 should poison on a persistent-memdev also use DRAM Event Record too?=20 Though its 'Physical Address' feild has the 'Volatile' bit too, which is=20 same as General Media Event Record. I am a bit confused about this. --- drivers/cxl/core/mbox.c | 100 ++++++++++++++++++++++++++++++++++------ drivers/cxl/cxlmem.h | 8 ++-- 2 files changed, 91 insertions(+), 17 deletions(-) diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c index 19b46fb06ed6..97ef45d808b8 100644 --- a/drivers/cxl/core/mbox.c +++ b/drivers/cxl/core/mbox.c @@ -837,25 +837,99 @@ int cxl_enumerate_cmds(struct cxl_memdev_state *mds) } EXPORT_SYMBOL_NS_GPL(cxl_enumerate_cmds, CXL); =20 -void cxl_event_trace_record(const struct cxl_memdev *cxlmd, - enum cxl_event_log_type type, - enum cxl_event_type event_type, - const uuid_t *uuid, union cxl_event *evt) +struct cxl_event_poison_context { + u64 dpa; + u64 length; +}; + +static int __cxl_report_poison(struct device *dev, void *arg) +{ + struct cxl_event_poison_context *ctx =3D arg; + struct cxl_endpoint_decoder *cxled; + struct cxl_memdev *cxlmd; + + cxled =3D to_cxl_endpoint_decoder(dev); + if (!cxled || !cxled->dpa_res || !resource_size(cxled->dpa_res)) + return 0; + + if (cxled->mode =3D=3D CXL_DECODER_MIXED) { + dev_dbg(dev, "poison list read unsupported in mixed mode\n"); + return 0; + } + + if (ctx->dpa > cxled->dpa_res->end || ctx->dpa < cxled->dpa_res->start) + return 0; + + cxlmd =3D cxled_to_memdev(cxled); + cxl_mem_get_poison(cxlmd, ctx->dpa, ctx->length, cxled->cxld.region, + true); + + return 1; +} + +static void cxl_event_handle_poison(struct cxl_memdev *cxlmd, + struct cxl_event_gen_media *rec) +{ + struct cxl_port *port =3D cxlmd->endpoint; + u64 phys_addr =3D le64_to_cpu(rec->phys_addr); + struct cxl_event_poison_context ctx =3D { + .dpa =3D phys_addr & CXL_DPA_MASK, + }; + + /* No regions mapped to this memdev, that is to say no HPA is mapped */ + if (!port || !is_cxl_endpoint(port) || + cxl_num_decoders_committed(port) =3D=3D 0) + return; + + /* + * Host Inject Poison may have a range of DPA, but the GMER only has + * "Physical Address" field, no such one indicates length. So it's + * better to call cxl_mem_get_poison() to find this poison record. + */ + ctx.length =3D phys_addr & CXL_DPA_VOLATILE ? + resource_size(&cxlmd->cxlds->ram_res) : + resource_size(&cxlmd->cxlds->pmem_res) - ctx.dpa; + + device_for_each_child(&port->dev, &ctx, __cxl_report_poison); +} + +static void cxl_event_handle_general_media(struct cxl_memdev *cxlmd, + enum cxl_event_log_type type, + struct cxl_event_gen_media *rec) +{ + if (type =3D=3D CXL_EVENT_TYPE_FAIL) { + switch (rec->transaction_type) { + case CXL_EVENT_TRANSACTION_READ: + case CXL_EVENT_TRANSACTION_WRITE: + case CXL_EVENT_TRANSACTION_INJECT_POISON: + cxl_event_handle_poison(cxlmd, rec); + break; + default: + break; + } + } +} + +void cxl_event_handle_record(struct cxl_memdev *cxlmd, + enum cxl_event_log_type type, + enum cxl_event_type event_type, + const uuid_t *uuid, union cxl_event *evt) { - if (event_type =3D=3D CXL_CPER_EVENT_GEN_MEDIA) + if (event_type =3D=3D CXL_CPER_EVENT_GEN_MEDIA) { trace_cxl_general_media(cxlmd, type, &evt->gen_media); - else if (event_type =3D=3D CXL_CPER_EVENT_DRAM) + cxl_event_handle_general_media(cxlmd, type, &evt->gen_media); + } else if (event_type =3D=3D CXL_CPER_EVENT_DRAM) trace_cxl_dram(cxlmd, type, &evt->dram); else if (event_type =3D=3D CXL_CPER_EVENT_MEM_MODULE) trace_cxl_memory_module(cxlmd, type, &evt->mem_module); else trace_cxl_generic_event(cxlmd, type, uuid, &evt->generic); } -EXPORT_SYMBOL_NS_GPL(cxl_event_trace_record, CXL); +EXPORT_SYMBOL_NS_GPL(cxl_event_handle_record, CXL); =20 -static void __cxl_event_trace_record(const struct cxl_memdev *cxlmd, - enum cxl_event_log_type type, - struct cxl_event_record_raw *record) +static void __cxl_event_handle_record(struct cxl_memdev *cxlmd, + enum cxl_event_log_type type, + struct cxl_event_record_raw *record) { enum cxl_event_type ev_type =3D CXL_CPER_EVENT_GENERIC; const uuid_t *uuid =3D &record->id; @@ -867,7 +941,7 @@ static void __cxl_event_trace_record(const struct cxl_m= emdev *cxlmd, else if (uuid_equal(uuid, &CXL_EVENT_MEM_MODULE_UUID)) ev_type =3D CXL_CPER_EVENT_MEM_MODULE; =20 - cxl_event_trace_record(cxlmd, type, ev_type, uuid, &record->event); + cxl_event_handle_record(cxlmd, type, ev_type, uuid, &record->event); } =20 static int cxl_clear_event_record(struct cxl_memdev_state *mds, @@ -978,8 +1052,8 @@ static void cxl_mem_get_records_log(struct cxl_memdev_= state *mds, break; =20 for (i =3D 0; i < nr_rec; i++) - __cxl_event_trace_record(cxlmd, type, - &payload->records[i]); + __cxl_event_handle_record(cxlmd, type, + &payload->records[i]); =20 if (payload->flags & CXL_GET_EVENT_FLAG_OVERFLOW) trace_cxl_overflow(cxlmd, type, payload); diff --git a/drivers/cxl/cxlmem.h b/drivers/cxl/cxlmem.h index 1f03130b9d6a..dfd7bdd0d66a 100644 --- a/drivers/cxl/cxlmem.h +++ b/drivers/cxl/cxlmem.h @@ -822,10 +822,10 @@ void set_exclusive_cxl_commands(struct cxl_memdev_sta= te *mds, void clear_exclusive_cxl_commands(struct cxl_memdev_state *mds, unsigned long *cmds); void cxl_mem_get_event_records(struct cxl_memdev_state *mds, u32 status); -void cxl_event_trace_record(const struct cxl_memdev *cxlmd, - enum cxl_event_log_type type, - enum cxl_event_type event_type, - const uuid_t *uuid, union cxl_event *evt); +void cxl_event_handle_record(struct cxl_memdev *cxlmd, + enum cxl_event_log_type type, + enum cxl_event_type event_type, + const uuid_t *uuid, union cxl_event *evt); int cxl_set_timestamp(struct cxl_memdev_state *mds); int cxl_poison_state_init(struct cxl_memdev_state *mds); void cxl_mem_report_poison(struct cxl_memdev *cxlmd, --=20 2.34.1