From: ira.weiny@intel.com
To: Dave Jiang <dave.jiang@intel.com>, Fan Ni <fan.ni@samsung.com>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Navneet Singh <navneet.singh@intel.com>,
Jonathan Corbet <corbet@lwn.net>,
Andrew Morton <akpm@linux-foundation.org>
Cc: Dan Williams <dan.j.williams@intel.com>,
Davidlohr Bueso <dave@stgolabs.net>,
Alison Schofield <alison.schofield@intel.com>,
Vishal Verma <vishal.l.verma@intel.com>,
Ira Weiny <ira.weiny@intel.com>,
linux-cxl@vger.kernel.org, linux-doc@vger.kernel.org,
nvdimm@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: [PATCH v7 25/27] cxl/mem: Trace Dynamic capacity Event Record
Date: Thu, 07 Nov 2024 14:58:43 -0600 [thread overview]
Message-ID: <20241107-dcd-type2-upstream-v7-25-56a84e66bc36@intel.com> (raw)
In-Reply-To: <20241107-dcd-type2-upstream-v7-0-56a84e66bc36@intel.com>
From: Navneet Singh <navneet.singh@intel.com>
CXL rev 3.1 section 8.2.9.2.1 adds the Dynamic Capacity Event Records.
User space can use trace events for debugging of DC capacity changes.
Add DC trace points to the trace log.
Signed-off-by: Navneet Singh <navneet.singh@intel.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Fan Ni <fan.ni@samsung.com>
Co-developed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
---
drivers/cxl/core/mbox.c | 4 +++
drivers/cxl/core/trace.h | 65 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 69 insertions(+)
diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c
index e0030166ea185f8ad9194f597906d61497897654..8261ce126a4bd23e5f717a9035f75668753ec276 100644
--- a/drivers/cxl/core/mbox.c
+++ b/drivers/cxl/core/mbox.c
@@ -995,6 +995,10 @@ static void __cxl_event_trace_record(const struct cxl_memdev *cxlmd,
ev_type = CXL_CPER_EVENT_DRAM;
else if (uuid_equal(uuid, &CXL_EVENT_MEM_MODULE_UUID))
ev_type = CXL_CPER_EVENT_MEM_MODULE;
+ else if (uuid_equal(uuid, &CXL_EVENT_DC_EVENT_UUID)) {
+ trace_cxl_dynamic_capacity(cxlmd, type, &record->event.dcd);
+ return;
+ }
cxl_event_trace_record(cxlmd, type, ev_type, uuid, &record->event);
}
diff --git a/drivers/cxl/core/trace.h b/drivers/cxl/core/trace.h
index 8672b42ee4d1b376063b09d29922fcce83a70168..d4526f06cf2a2d0a4b4bc5f9e00238aa43a16e35 100644
--- a/drivers/cxl/core/trace.h
+++ b/drivers/cxl/core/trace.h
@@ -731,6 +731,71 @@ TRACE_EVENT(cxl_poison,
)
);
+/*
+ * Dynamic Capacity Event Record - DER
+ *
+ * CXL rev 3.1 section 8.2.9.2.1.6 Table 8-50
+ */
+
+#define CXL_DC_ADD_CAPACITY 0x00
+#define CXL_DC_REL_CAPACITY 0x01
+#define CXL_DC_FORCED_REL_CAPACITY 0x02
+#define CXL_DC_REG_CONF_UPDATED 0x03
+#define show_dc_evt_type(type) __print_symbolic(type, \
+ { CXL_DC_ADD_CAPACITY, "Add capacity"}, \
+ { CXL_DC_REL_CAPACITY, "Release capacity"}, \
+ { CXL_DC_FORCED_REL_CAPACITY, "Forced capacity release"}, \
+ { CXL_DC_REG_CONF_UPDATED, "Region Configuration Updated" } \
+)
+
+TRACE_EVENT(cxl_dynamic_capacity,
+
+ TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
+ struct cxl_event_dcd *rec),
+
+ TP_ARGS(cxlmd, log, rec),
+
+ TP_STRUCT__entry(
+ CXL_EVT_TP_entry
+
+ /* Dynamic capacity Event */
+ __field(u8, event_type)
+ __field(u16, hostid)
+ __field(u8, region_id)
+ __field(u64, dpa_start)
+ __field(u64, length)
+ __array(u8, tag, CXL_EXTENT_TAG_LEN)
+ __field(u16, sh_extent_seq)
+ ),
+
+ TP_fast_assign(
+ CXL_EVT_TP_fast_assign(cxlmd, log, rec->hdr);
+
+ /* Dynamic_capacity Event */
+ __entry->event_type = rec->event_type;
+
+ /* DCD event record data */
+ __entry->hostid = le16_to_cpu(rec->host_id);
+ __entry->region_id = rec->region_index;
+ __entry->dpa_start = le64_to_cpu(rec->extent.start_dpa);
+ __entry->length = le64_to_cpu(rec->extent.length);
+ memcpy(__entry->tag, &rec->extent.tag, CXL_EXTENT_TAG_LEN);
+ __entry->sh_extent_seq = le16_to_cpu(rec->extent.shared_extn_seq);
+ ),
+
+ CXL_EVT_TP_printk("event_type='%s' host_id='%d' region_id='%d' " \
+ "starting_dpa=%llx length=%llx tag=%pU " \
+ "shared_extent_sequence=%d",
+ show_dc_evt_type(__entry->event_type),
+ __entry->hostid,
+ __entry->region_id,
+ __entry->dpa_start,
+ __entry->length,
+ __entry->tag,
+ __entry->sh_extent_seq
+ )
+);
+
#endif /* _CXL_EVENTS_H */
#define TRACE_INCLUDE_FILE trace
--
2.47.0
next prev parent reply other threads:[~2024-11-07 20:59 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-07 20:58 [PATCH v7 00/27] DCD: Add support for Dynamic Capacity Devices (DCD) Ira Weiny
2024-11-07 20:58 ` [PATCH v7 01/27] range: Add range_overlaps() Ira Weiny
2024-11-07 20:58 ` [PATCH v7 02/27] ACPI/CDAT: Add CDAT/DSMAS shared and read only flag values Ira Weiny
2024-11-07 20:58 ` [PATCH v7 03/27] dax: Document struct dev_dax_range Ira Weiny
2024-11-07 20:58 ` [PATCH v7 04/27] cxl/pci: Delay event buffer allocation Ira Weiny
2024-11-07 20:58 ` [PATCH v7 05/27] cxl/hdm: Use guard() in cxl_dpa_set_mode() Ira Weiny
2024-11-07 20:58 ` [PATCH v7 06/27] cxl/region: Refactor common create region code Ira Weiny
2024-11-07 20:58 ` [PATCH v7 07/27] cxl/mbox: Flag support for Dynamic Capacity Devices (DCD) ira.weiny
2024-11-07 20:58 ` [PATCH v7 08/27] cxl/mem: Read dynamic capacity configuration from the device ira.weiny
2024-11-07 20:58 ` [PATCH v7 09/27] cxl/core: Separate region mode from decoder mode ira.weiny
2024-11-07 20:58 ` [PATCH v7 10/27] cxl/region: Add dynamic capacity decoder and region modes ira.weiny
2024-11-07 20:58 ` [PATCH v7 11/27] cxl/hdm: Add dynamic capacity size support to endpoint decoders ira.weiny
2024-11-07 20:58 ` [PATCH v7 12/27] cxl/cdat: Gather DSMAS data for DCD regions Ira Weiny
2024-11-07 20:58 ` [PATCH v7 13/27] cxl/mem: Expose DCD partition capabilities in sysfs ira.weiny
2024-11-07 20:58 ` [PATCH v7 14/27] cxl/port: Add endpoint decoder DC mode support to sysfs ira.weiny
2024-11-07 20:58 ` [PATCH v7 15/27] cxl/region: Add sparse DAX region support ira.weiny
2024-11-07 20:58 ` [PATCH v7 16/27] cxl/events: Split event msgnum configuration from irq setup Ira Weiny
2024-11-07 20:58 ` [PATCH v7 17/27] cxl/pci: Factor out interrupt policy check Ira Weiny
2024-11-07 20:58 ` [PATCH v7 18/27] cxl/mem: Configure dynamic capacity interrupts ira.weiny
2024-11-07 20:58 ` [PATCH v7 19/27] cxl/core: Return endpoint decoder information from region search Ira Weiny
2024-11-07 20:58 ` [PATCH v7 20/27] cxl/extent: Process DCD events and realize region extents ira.weiny
2024-11-07 20:58 ` [PATCH v7 21/27] cxl/region/extent: Expose region extent information in sysfs ira.weiny
2024-11-07 20:58 ` [PATCH v7 22/27] dax/bus: Factor out dev dax resize logic Ira Weiny
2024-11-07 20:58 ` [PATCH v7 23/27] dax/region: Create resources on sparse DAX regions ira.weiny
2024-11-07 20:58 ` [PATCH v7 24/27] cxl/region: Read existing extents on region creation ira.weiny
2024-11-07 20:58 ` ira.weiny [this message]
2024-11-07 20:58 ` [PATCH v7 26/27] tools/testing/cxl: Make event logs dynamic Ira Weiny
2024-11-07 20:58 ` [PATCH v7 27/27] tools/testing/cxl: Add DC Regions to mock mem data Ira Weiny
2024-11-08 17:27 ` [PATCH v7 00/27] DCD: Add support for Dynamic Capacity Devices (DCD) Dave Jiang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241107-dcd-type2-upstream-v7-25-56a84e66bc36@intel.com \
--to=ira.weiny@intel.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=alison.schofield@intel.com \
--cc=corbet@lwn.net \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=dave@stgolabs.net \
--cc=fan.ni@samsung.com \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=navneet.singh@intel.com \
--cc=nvdimm@lists.linux.dev \
--cc=vishal.l.verma@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox