mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-25 20:05:39 +00:00
cxl/trace: Properly initialize cxl_poison region name
[ Upstream commit6c87126096
] The TP_STRUCT__entry that gets assigned the region name, or an empty string if no region is present, is erroneously initialized to the cxl_region pointer. It needs to be properly initialized otherwise it's length is wrong and garbage chars can appear in the kernel trace output: /sys/kernel/tracing/trace The bad initialization was due in part to a naming conflict with the parameter: struct cxl_region *region. The field 'region' is already exposed externally as the region name, so changing that to something logical, like 'region_name' is not an option. Instead rename the internal only struct cxl_region to the commonly used 'cxlr'. Impact is that tooling depending on that trace data can miss picking up a valid event when searching by region name. The TP_printk() output, if enabled, does emit the correct region names in the dmesg log. This was found during testing of the cxl-list option to report media-errors for a region. Cc: Davidlohr Bueso <dave@stgolabs.net> Cc: Jonathan Cameron <jonathan.cameron@huawei.com> Cc: Dave Jiang <dave.jiang@intel.com> Cc: Vishal Verma <vishal.l.verma@intel.com> Cc: stable@vger.kernel.org Fixes:ddf49d57b8
("cxl/trace: Add TRACE support for CXL media-error records") Signed-off-by: Alison Schofield <alison.schofield@intel.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> Acked-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
1e4132cf40
commit
4234d4f8b4
1 changed files with 7 additions and 7 deletions
|
@ -646,18 +646,18 @@ u64 cxl_trace_hpa(struct cxl_region *cxlr, struct cxl_memdev *memdev, u64 dpa);
|
||||||
|
|
||||||
TRACE_EVENT(cxl_poison,
|
TRACE_EVENT(cxl_poison,
|
||||||
|
|
||||||
TP_PROTO(struct cxl_memdev *cxlmd, struct cxl_region *region,
|
TP_PROTO(struct cxl_memdev *cxlmd, struct cxl_region *cxlr,
|
||||||
const struct cxl_poison_record *record, u8 flags,
|
const struct cxl_poison_record *record, u8 flags,
|
||||||
__le64 overflow_ts, enum cxl_poison_trace_type trace_type),
|
__le64 overflow_ts, enum cxl_poison_trace_type trace_type),
|
||||||
|
|
||||||
TP_ARGS(cxlmd, region, record, flags, overflow_ts, trace_type),
|
TP_ARGS(cxlmd, cxlr, record, flags, overflow_ts, trace_type),
|
||||||
|
|
||||||
TP_STRUCT__entry(
|
TP_STRUCT__entry(
|
||||||
__string(memdev, dev_name(&cxlmd->dev))
|
__string(memdev, dev_name(&cxlmd->dev))
|
||||||
__string(host, dev_name(cxlmd->dev.parent))
|
__string(host, dev_name(cxlmd->dev.parent))
|
||||||
__field(u64, serial)
|
__field(u64, serial)
|
||||||
__field(u8, trace_type)
|
__field(u8, trace_type)
|
||||||
__string(region, region)
|
__string(region, cxlr ? dev_name(&cxlr->dev) : "")
|
||||||
__field(u64, overflow_ts)
|
__field(u64, overflow_ts)
|
||||||
__field(u64, hpa)
|
__field(u64, hpa)
|
||||||
__field(u64, dpa)
|
__field(u64, dpa)
|
||||||
|
@ -677,10 +677,10 @@ TRACE_EVENT(cxl_poison,
|
||||||
__entry->source = cxl_poison_record_source(record);
|
__entry->source = cxl_poison_record_source(record);
|
||||||
__entry->trace_type = trace_type;
|
__entry->trace_type = trace_type;
|
||||||
__entry->flags = flags;
|
__entry->flags = flags;
|
||||||
if (region) {
|
if (cxlr) {
|
||||||
__assign_str(region, dev_name(®ion->dev));
|
__assign_str(region, dev_name(&cxlr->dev));
|
||||||
memcpy(__entry->uuid, ®ion->params.uuid, 16);
|
memcpy(__entry->uuid, &cxlr->params.uuid, 16);
|
||||||
__entry->hpa = cxl_trace_hpa(region, cxlmd,
|
__entry->hpa = cxl_trace_hpa(cxlr, cxlmd,
|
||||||
__entry->dpa);
|
__entry->dpa);
|
||||||
} else {
|
} else {
|
||||||
__assign_str(region, "");
|
__assign_str(region, "");
|
||||||
|
|
Loading…
Reference in a new issue