Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp2191934rwi; Tue, 11 Oct 2022 06:06:27 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4ChVNw8a0Mr8tBTlaVO6SoY8NS8SH10UpyoXyIEiIW0oZUfDARS1WfuyKi1KSIfm/Fn4fP X-Received: by 2002:a17:902:cec9:b0:178:5fa6:f3c3 with SMTP id d9-20020a170902cec900b001785fa6f3c3mr23832754plg.83.1665493577305; Tue, 11 Oct 2022 06:06:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665493577; cv=none; d=google.com; s=arc-20160816; b=fiQvoJDbZzQbQTqb33mSMq9pfbiPTPkjLQe+DhtmUvB3CwGbstxQas+kYaQBrqMVWy 0FLAsbUF74HG74DSIdTp3MlvTIy8h4WiygWcdU4YQVAY+PuFYaaaZtcu5sEbW++c0Q07 awBe6k29he3HT5IGluqbI+7eIeU58tGnzMQj8RBR7110aXR+sqijnedKukrEj1J/OWIF k1/QDwk1VwQOB1Cu1CZQV67Kl7jhJUKuEDTYYklD2mL4+Vf5w4LSwKbdKvVYMj6U7qMI nSQPqRjJbvqP5bjkiijqgBiU5mre/XFDAFjpJMIlkDH3SuWPZtdq/sgVvfaUJw4O2aAR Xxmg== 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:subject:cc:to:from:date; bh=SltJMKBJV+3idzUGSp/mB8rtMItf3SLQ9a4C80hlzAA=; b=zT9Zmg3w221JsBxrQBiWPWlh+sY0oh1DmMmXQceQuB5RCvTzilwJvulEcMOv8ErSIe Ngdg4i+xzxA4LC8soE3SSpqvmQi4NdF8a/Q5hGG0J79M/UzMYIiGajq5DhlLAyvXWv12 eriDizl0dB0rm9df0Jj3ZqKMj+Hy47GPbyTZFAgynq9JpK0g3tYeYhZZdW9Qu/ggQDlw +beA7FM65LS4it5F7ysuJvFiMDlx5d0jzGCa8rHNxZDwzTm2Mkhga6sxxNThnuFeHMMp /44T0Wo+Zvup7nb/zXilI7G4t8nK0z5ietB/PNrHq6pcmJOjHqn9kSD35g18jNjBNxCR Kn4Q== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h6-20020a056a00218600b00545c63d5387si3920103pfi.21.2022.10.11.06.05.59; Tue, 11 Oct 2022 06:06:17 -0700 (PDT) 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; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229840AbiJKM5N (ORCPT + 99 others); Tue, 11 Oct 2022 08:57:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229484AbiJKM5L (ORCPT ); Tue, 11 Oct 2022 08:57:11 -0400 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CAC4C923CC; Tue, 11 Oct 2022 05:57:08 -0700 (PDT) Received: from fraeml737-chm.china.huawei.com (unknown [172.18.147.207]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4MmwlD5NT7z6HJ9X; Tue, 11 Oct 2022 20:56:24 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (7.191.163.240) by fraeml737-chm.china.huawei.com (10.206.15.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 11 Oct 2022 14:57:06 +0200 Received: from localhost (10.202.226.42) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 11 Oct 2022 13:57:05 +0100 Date: Tue, 11 Oct 2022 13:57:02 +0100 From: Jonathan Cameron To: CC: Dan Williams , Alison Schofield , Vishal Verma , "Ben Widawsky" , Steven Rostedt , Davidlohr Bueso , , Subject: Re: [RFC V2 PATCH 05/11] cxl/mem: Trace General Media Event Record Message-ID: <20221011135702.00006f74@huawei.com> In-Reply-To: <20221010224131.1866246-6-ira.weiny@intel.com> References: <20221010224131.1866246-1-ira.weiny@intel.com> <20221010224131.1866246-6-ira.weiny@intel.com> X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.29; i686-w64-mingw32) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.202.226.42] X-ClientProxiedBy: lhrpeml100004.china.huawei.com (7.191.162.219) To lhrpeml500005.china.huawei.com (7.191.163.240) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS 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 On Mon, 10 Oct 2022 15:41:25 -0700 ira.weiny@intel.com wrote: > From: Ira Weiny > > CXL rev 3.0 section 8.2.9.2.1.1 defines the General Media Event Record. > > Determine if the event read is a general media record and if so trace > the record. > > Signed-off-by: Ira Weiny I'll review the rest of these with the assumption that the question of reserved bytes in tracepoints will get resolved before these go in. One minor comment on a comment inline. Other than those lgtm Reviewed-by: Jonathan Cameron > > --- > Changes from RFC: > Add reserved byte array > Use common CXL event header record macros > Jonathan > Use unaligned_le{24,16} for unaligned fields > Don't use the inverse of phy addr mask > Dave Jiang > s/cxl_gen_media_event/general_media > s/cxl_evt_gen_media/cxl_event_gen_media > --- > drivers/cxl/core/mbox.c | 30 ++++++++++- > drivers/cxl/cxlmem.h | 20 +++++++ > include/trace/events/cxl.h | 108 +++++++++++++++++++++++++++++++++++++ > 3 files changed, 156 insertions(+), 2 deletions(-) > > diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c > index bc4e42b3e01b..1097250c115a 100644 > --- a/drivers/cxl/core/mbox.c > +++ b/drivers/cxl/core/mbox.c > @@ -712,6 +712,32 @@ int cxl_enumerate_cmds(struct cxl_dev_state *cxlds) > } > EXPORT_SYMBOL_NS_GPL(cxl_enumerate_cmds, CXL); > > +/* > + * General Media Event Record > + * CXL rev 3.0 Section 8.2.9.2.1.1; Table 8-43 > + */ > +static const uuid_t gen_media_event_uuid = > + UUID_INIT(0xfbcd0a77, 0xc260, 0x417f, > + 0x85, 0xa9, 0x08, 0x8b, 0x16, 0x21, 0xeb, 0xa6); > + > +static void cxl_trace_event_record(const char *dev_name, > + enum cxl_event_log_type type, > + struct cxl_get_event_payload *payload) > +{ > + uuid_t *id = &payload->record.hdr.id; > + > + if (uuid_equal(id, &gen_media_event_uuid)) { > + struct cxl_event_gen_media *rec = > + (struct cxl_event_gen_media *)&payload->record; > + > + trace_general_media(dev_name, type, rec); > + return; > + } > + > + /* For unknown record types print just the header */ > + trace_generic_event(dev_name, type, &payload->record); Looks like it prints the whole thing now... > +} > + > diff --git a/include/trace/events/cxl.h b/include/trace/events/cxl.h > index 318ba5fe046e..82a8d3b750a2 100644 > --- a/include/trace/events/cxl.h > +++ b/include/trace/events/cxl.h > @@ -122,6 +122,114 @@ TRACE_EVENT(generic_event, > +#define CXL_GMER_VALID_CHANNEL BIT(0) > +#define CXL_GMER_VALID_RANK BIT(1) > +#define CXL_GMER_VALID_DEVICE BIT(2) > +#define CXL_GMER_VALID_COMPONENT BIT(3) > +#define show_valid_flags(flags) __print_flags(flags, "|", \ > + { CXL_GMER_VALID_CHANNEL, "CHANNEL" }, \ > + { CXL_GMER_VALID_RANK, "RANK" }, \ > + { CXL_GMER_VALID_DEVICE, "DEVICE" }, \ > + { CXL_GMER_VALID_COMPONENT, "COMPONENT" } \ > +) I'd still rather we only had the TP_printk only print those parts that are valid rather than the mess of having to go check the validity bit before deciding whether to take notice of the field. But meh, not that important given thats not the main intended way to consume this data. > + > +TRACE_EVENT(general_media, > + > + TP_PROTO(const char *dev_name, enum cxl_event_log_type log, > + struct cxl_event_gen_media *rec), > + > + TP_ARGS(dev_name, log, rec), > + > + TP_STRUCT__entry( > + CXL_EVT_TP_entry > + /* General Media */ > + __field(u64, phys_addr) > + __field(u8, descriptor) > + __field(u8, type) > + __field(u8, transaction_type) > + __field(u8, channel) > + __field(u32, device) > + __array(u8, comp_id, CXL_EVENT_GEN_MED_COMP_ID_SIZE) > + __array(u8, reserved, CXL_EVENT_GEN_MED_RES_SIZE) > + __field(u16, validity_flags) > + __field(u8, rank) /* Out of order to pack trace record */ > + ), > + > + TP_fast_assign( > + CXL_EVT_TP_fast_assign(dev_name, log, rec->hdr); > + > + /* General Media */ > + __entry->phys_addr = le64_to_cpu(rec->phys_addr); > + __entry->descriptor = rec->descriptor; > + __entry->type = rec->type; > + __entry->transaction_type = rec->transaction_type; > + __entry->channel = rec->channel; > + __entry->rank = rec->rank; > + __entry->device = get_unaligned_le24(rec->device); > + memcpy(__entry->comp_id, &rec->component_id, > + CXL_EVENT_GEN_MED_COMP_ID_SIZE); > + memcpy(__entry->reserved, &rec->reserved, > + CXL_EVENT_GEN_MED_RES_SIZE); > + __entry->validity_flags = get_unaligned_le16(&rec->validity_flags); > + ),