From nobody Fri Dec 19 11:02:44 2025 Received: from fout6-smtp.messagingengine.com (fout6-smtp.messagingengine.com [103.168.172.149]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C1558A32 for ; Mon, 29 Apr 2024 04:32:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.149 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365147; cv=none; b=htQMaLOhYRZor/fOUT75YzHMJ4TCbVsWoqR1irGYzl8hRrpsQ7KqZs0DIKvVRdCUPOSZGr5IXWB108PQ1PLHwQ/mIKR+kDbogDZ7KfoW5RjgHOpN0Z5J1/7381Rotm+o+eBx08QglyCMi0M6gf4RYEAS+0QyFNU/1OlOG0Y1fEY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365147; c=relaxed/simple; bh=BYNytHz/VtV9EIiOMZGUojlxT11Q0sFg43HjDNrVvsc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TH1fKI/2PsTA5q10Lt4/7r0Sq/vfh9iGLORTtpSgFd0kM91q+UHB51s/V2lyj3G4YwvBM0AI5GErE2fZ3m+fjtsEOEl9pouy1Cjv/FTRfNwRakNxK9RW2cXxcTyZYj/EfCyax22lDCNIvB8ay/1bNxXotVsX6FiAlvQU7jnjoHI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=J8ZEgBcr; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=KIcrUOg1; arc=none smtp.client-ip=103.168.172.149 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="J8ZEgBcr"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="KIcrUOg1" Received: from compute7.internal (compute7.nyi.internal [10.202.2.48]) by mailfout.nyi.internal (Postfix) with ESMTP id B5A061380221; Mon, 29 Apr 2024 00:32:24 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Mon, 29 Apr 2024 00:32:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1714365144; x= 1714451544; bh=8x1ayh0rdEcHJ/0K+RxhHA07RKEwCYeuO2LAWr/frNA=; b=J 8ZEgBcrwRhO8sLViLhketzlN+StkEwk97LCKZ/NoL/RLQBCni8AivV99eS5spyzz XjMl8IMn28zdp4B5nn1QFUv66sQvqcJUiFNr+Kh4WQTa8EM4T1v9uYU2NhHV5hH+ XyUYM5NSz4adV9Q06ZiZ0ncttpcgg++ddBIo+8b0kxydIqKSYVOcHMbQBKXQLdRI 2xY9K8v6Kcc6wTak2ng2qQJOgZEQcii4d7DVufcuFR5+TphhwRPByYMwvaGkjqt6 RcjS631pZ8DyeV/nanK84jSw1yHoafd/t8N/1IxCqrHBcm/J8/t2Yy3rHFzai9q8 9CyKXZmv/VdcAVYzPEJeA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1714365144; x= 1714451544; bh=8x1ayh0rdEcHJ/0K+RxhHA07RKEwCYeuO2LAWr/frNA=; b=K IcrUOg1rK1jO4pZNtc8rmnaTx/ECBBEzytM/P9aH6xfPK2ecD8eRNdMxfeAKpdCM U0UjlOp6n9C7MWT9euyjYVmrxstC07RgUKfD2nLCfeDmQ6UB9y3K9nOD05dz89eY 5JWZlUQE1a9GZwL6k8YpNPeuQYJ+SIsq12oZxglIBphA16q2fTwq3QpMH3i4IanR MBKLHlzFEjprXJ3PqfddDnLkD9w468OuzkwIC1lY95YEIQz2BoJ9Fe64XyEfxjSR 9qrAvbf/Ca1RRqYrbNSWjaGKigtrx5EijDcF1sBAc522jZ1TZyr53NDKxOKhOJoP wbkRJm4qMYSzb3Ec/8P9Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrvddtledgtdegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtke ertdertddtnecuhfhrohhmpefvrghkrghshhhiucfurghkrghmohhtohcuoehoqdhtrghk rghshhhisehsrghkrghmohgttghhihdrjhhpqeenucggtffrrghtthgvrhhnpedvjefgje euvdfguddukeelveetgfdtvefhtdfffeeigfevueetffeivdffkedvtdenucevlhhushht vghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehoqdhtrghkrghshhhise hsrghkrghmohgttghhihdrjhhp X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 29 Apr 2024 00:32:23 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 1/5] firewire: core: add support for Linux kernel tracepoints Date: Mon, 29 Apr 2024 13:32:14 +0900 Message-ID: <20240429043218.609398-2-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240429043218.609398-1-o-takashi@sakamocchi.jp> References: <20240429043218.609398-1-o-takashi@sakamocchi.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Linux Kernel Tracepoints framework is enough useful to trace packet data inbound to and outbound from core. This commit adds firewire subsystem to use the framework. Signed-off-by: Takashi Sakamoto --- drivers/firewire/Makefile | 2 +- drivers/firewire/core-trace.c | 5 +++++ include/trace/events/firewire.h | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 drivers/firewire/core-trace.c create mode 100644 include/trace/events/firewire.h diff --git a/drivers/firewire/Makefile b/drivers/firewire/Makefile index bbde29a0fba6..013e1f2641bd 100644 --- a/drivers/firewire/Makefile +++ b/drivers/firewire/Makefile @@ -3,7 +3,7 @@ # Makefile for the Linux IEEE 1394 implementation # =20 -firewire-core-y +=3D core-card.o core-cdev.o core-device.o \ +firewire-core-y +=3D core-trace.o core-card.o core-cdev.o core-device.o \ core-iso.o core-topology.o core-transaction.o firewire-ohci-y +=3D ohci.o firewire-sbp2-y +=3D sbp2.o diff --git a/drivers/firewire/core-trace.c b/drivers/firewire/core-trace.c new file mode 100644 index 000000000000..96cbd9d384dc --- /dev/null +++ b/drivers/firewire/core-trace.c @@ -0,0 +1,5 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// Copyright (c) 2024 Takashi Sakamoto + +#define CREATE_TRACE_POINTS +#include diff --git a/include/trace/events/firewire.h b/include/trace/events/firewir= e.h new file mode 100644 index 000000000000..bc55eaabf695 --- /dev/null +++ b/include/trace/events/firewire.h @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// Copyright (c) 2024 Takashi Sakamoto + +#define TRACE_SYSTEM firewire + +#if !defined(_FIREWIRE_TRACE_EVENT_H) || defined(TRACE_HEADER_MULTI_READ) +#define _FIREWIRE_TRACE_EVENT_H + +#include + +// Placeholder for future use. + +#endif // _FIREWIRE_TRACE_EVENT_H + +#include --=20 2.43.0 From nobody Fri Dec 19 11:02:44 2025 Received: from fout6-smtp.messagingengine.com (fout6-smtp.messagingengine.com [103.168.172.149]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 33315205E1A for ; Mon, 29 Apr 2024 04:32:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.149 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365149; cv=none; b=UO9zPw/M/TJsGPFIX8ngVGnDyoHHBmQvFI2GUdM77BcXegHfDFa94844o2zsD7uBhZqbvfCBNk/VEMIex8BgV9uRToitexOhWUFh792agDKgYty1EheZbSiRmoC8vihwumdo/ZVtBexzsZSu8tpDJbtdoVSVGwsRTEd+j7q9hqQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365149; c=relaxed/simple; bh=DRWiMZ7fnsNUDzbgJvqR+TY6gBoFOAasUF9gH3Rufqw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E05g46kqZ7alXyT0lxQCYHGFFKdMQBBSGlVumVVQApEpwIKkj9pHigBjKowe1osE34Mue4eDsYAkcLxIiADf6KfFSrhA2zEOnbsYjYQVMRiKwtLT6qqlUSwf1yNiXi4l4P4KL5FrLrU6YD3b7QDb2Gb0Ct1aEFaI6uuTRdKWrgo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=mhIqjVgF; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=C6uWSeZA; arc=none smtp.client-ip=103.168.172.149 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="mhIqjVgF"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="C6uWSeZA" Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailfout.nyi.internal (Postfix) with ESMTP id 254B5138022A; Mon, 29 Apr 2024 00:32:26 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 29 Apr 2024 00:32:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1714365146; x= 1714451546; bh=+v/W52sgfzq2ue59zU7TOTW/CP2Eu1i/HIwanBpCTGo=; b=m hIqjVgFsaxOAzUeO8VhexcX1tutTW8fRH6/8yqvdHtn7I0lVCOKtA32gXM6Kp2WQ 3MNOOyBXF/XesEjjD61xmAA9gFJduY7suu7Swu2aVmTZam7W8xbn+JtGabieCDMy Sie3iafuUfHx+QpG2BxQMCcBUsbMfka7wwtrkBy+JHd7Jt+iuqkB7F4/Xo9kmxUn jLqKZsl3jhHjqFblc0A9d20NPvm0R4my6Jh52JyqjiQXVTE9DAUPzN8SDaLn3x8v A0nh6Prq27rQKy8+yzsZaGMkgzKwKeOjD2QhQg/ZkiDXs6SK+rGMSMvD0zPQ9Yzt /ZtmcT53hhtMGALOXwNFA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1714365146; x= 1714451546; bh=+v/W52sgfzq2ue59zU7TOTW/CP2Eu1i/HIwanBpCTGo=; b=C 6uWSeZA+QV2Lz2HO4gNWWFBq2HMU5UYwoqD0jBNMfb6nBrYO3AMLHXDX0c6Wwokx pr8aqLSeigSpk1okQOTMpyGPVPYSV1vqbForjKBe6IO+5zxVTVs6ONmbAVBiLHbJ G48f53B1llBNllVYqw95nmrBQtE2Lbc0tlQ/NfLb7DbWFCxkow6QYGbEKUSPUkaZ 7/+fUJB2UcGXG9pF0HP21rP0GYOe9492BxfjxrOf5Rp1RH6evYrAABmDjkxQ618A iUwdW9xuttJpQRQPt+LWoT6Pqkl5DmuPX/il5tlAi1rfRh8Oq2oJyeIi+kc8Uv9e YKN8WWhlWx4pGaDqjk85A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrvddtledgtdegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtke ertdertddtnecuhfhrohhmpefvrghkrghshhhiucfurghkrghmohhtohcuoehoqdhtrghk rghshhhisehsrghkrghmohgttghhihdrjhhpqeenucggtffrrghtthgvrhhnpedvjefgje euvdfguddukeelveetgfdtvefhtdfffeeigfevueetffeivdffkedvtdenucevlhhushht vghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehoqdhtrghkrghshhhise hsrghkrghmohgttghhihdrjhhp X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 29 Apr 2024 00:32:24 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 2/5] firewire: core: add tracepoints events for asynchronous outbound request Date: Mon, 29 Apr 2024 13:32:15 +0900 Message-ID: <20240429043218.609398-3-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240429043218.609398-1-o-takashi@sakamocchi.jp> References: <20240429043218.609398-1-o-takashi@sakamocchi.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In a view of core transaction service, the asynchronous outbound request consists of two stages; initiation and completion. This commit adds a pair of event for them. The following example is for asynchronous lock request with compare_swap code to offset 0x'ffff'f000'0904 in node 0xffc0. async_request_outbound_initiate: \ transaction=3D0xffff955fc6a07a10 generation=3D5 scode=3D2 dst_id=3D0xffc0= \ tlabel=3D54 tcode=3D9 src_id=3D0xffc1 offset=3D0xfffff0000904 \ header=3D{0xffc0d990,0xffc1ffff,0xf0000904,0x80002} data=3D{0x80,0x940181} async_request_outbound_complete: \ transaction=3D0xffff955fc6a07a10 generation=3D5 scode=3D2 status=3D2 \ timestamp=3D0xd887 Signed-off-by: Takashi Sakamoto --- drivers/firewire/core-transaction.c | 7 ++ include/trace/events/firewire.h | 103 +++++++++++++++++++++++++++- 2 files changed, 109 insertions(+), 1 deletion(-) diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-tr= ansaction.c index 3ecb0b945083..c9318024386f 100644 --- a/drivers/firewire/core-transaction.c +++ b/drivers/firewire/core-transaction.c @@ -29,6 +29,7 @@ #include =20 #include "core.h" +#include #include "packet-header-definitions.h" =20 #define HEADER_DESTINATION_IS_BROADCAST(header) \ @@ -173,6 +174,9 @@ static void transmit_complete_callback(struct fw_packet= *packet, struct fw_transaction *t =3D container_of(packet, struct fw_transaction, packet); =20 + trace_async_request_outbound_complete((uintptr_t)t, packet->generation, p= acket->speed, + status, packet->timestamp); + switch (status) { case ACK_COMPLETE: close_transaction(t, card, RCODE_COMPLETE, packet->timestamp); @@ -394,6 +398,9 @@ void __fw_send_request(struct fw_card *card, struct fw_= transaction *t, int tcode =20 spin_unlock_irqrestore(&card->lock, flags); =20 + trace_async_request_outbound_initiate((uintptr_t)t, generation, speed, t-= >packet.header, payload, + tcode_is_read_request(tcode) ? 0 : length / 4); + card->driver->send_request(card, &t->packet); } EXPORT_SYMBOL_GPL(__fw_send_request); diff --git a/include/trace/events/firewire.h b/include/trace/events/firewir= e.h index bc55eaabf695..063695874cfb 100644 --- a/include/trace/events/firewire.h +++ b/include/trace/events/firewire.h @@ -7,8 +7,109 @@ #define _FIREWIRE_TRACE_EVENT_H =20 #include +#include =20 -// Placeholder for future use. +#include + +#include "../../../drivers/firewire/packet-header-definitions.h" + +// The content of TP_printk field is preprocessed, then put to the module = binary. +#define ASYNC_HEADER_GET_DESTINATION(header) \ + (((header)[0] & ASYNC_HEADER_Q0_DESTINATION_MASK) >> ASYNC_HEADER_Q0_DEST= INATION_SHIFT) + +#define ASYNC_HEADER_GET_TLABEL(header) \ + (((header)[0] & ASYNC_HEADER_Q0_TLABEL_MASK) >> ASYNC_HEADER_Q0_TLABEL_SH= IFT) + +#define ASYNC_HEADER_GET_TCODE(header) \ + (((header)[0] & ASYNC_HEADER_Q0_TCODE_MASK) >> ASYNC_HEADER_Q0_TCODE_SHIF= T) + +#define ASYNC_HEADER_GET_SOURCE(header) \ + (((header)[1] & ASYNC_HEADER_Q1_SOURCE_MASK) >> ASYNC_HEADER_Q1_SOURCE_SH= IFT) + +#define ASYNC_HEADER_GET_OFFSET(header) \ + ((((unsigned long long)((header)[1] & ASYNC_HEADER_Q1_OFFSET_HIGH_MASK)) = >> ASYNC_HEADER_Q1_OFFSET_HIGH_SHIFT) << 32)| \ + (header)[2] + +#define QUADLET_SIZE 4 + +DECLARE_EVENT_CLASS(async_outbound_initiate_template, + TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, co= nst u32 *header, const u32 *data, unsigned int data_count), + TP_ARGS(transaction, generation, scode, header, data, data_count), + TP_STRUCT__entry( + __field(u64, transaction) + __field(u8, generation) + __field(u8, scode) + __array(u32, header, ASYNC_HEADER_QUADLET_COUNT) + __dynamic_array(u32, data, data_count) + ), + TP_fast_assign( + __entry->transaction =3D transaction; + __entry->generation =3D generation; + __entry->scode =3D scode; + memcpy(__entry->header, header, QUADLET_SIZE * ASYNC_HEADER_QUADLET_COUN= T); + memcpy(__get_dynamic_array(data), data, __get_dynamic_array_len(data)); + ), + // This format is for the request subaction. + TP_printk( + "transaction=3D0x%llx generation=3D%u scode=3D%u dst_id=3D0x%04x tlabel= =3D%u tcode=3D%u src_id=3D0x%04x offset=3D0x%012llx header=3D%s data=3D%s", + __entry->transaction, + __entry->generation, + __entry->scode, + ASYNC_HEADER_GET_DESTINATION(__entry->header), + ASYNC_HEADER_GET_TLABEL(__entry->header), + ASYNC_HEADER_GET_TCODE(__entry->header), + ASYNC_HEADER_GET_SOURCE(__entry->header), + ASYNC_HEADER_GET_OFFSET(__entry->header), + __print_array(__entry->header, ASYNC_HEADER_QUADLET_COUNT, QUADLET_SIZE), + __print_array(__get_dynamic_array(data), + __get_dynamic_array_len(data) / QUADLET_SIZE, QUADLET_SIZE) + ) +); + +// The value of status is one of ack codes and rcodes specific to Linux Fi= reWire subsystem. +DECLARE_EVENT_CLASS(async_outbound_complete_template, + TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, un= signed int status, unsigned int timestamp), + TP_ARGS(transaction, generation, scode, status, timestamp), + TP_STRUCT__entry( + __field(u64, transaction) + __field(u8, generation) + __field(u8, scode) + __field(u8, status) + __field(u16, timestamp) + ), + TP_fast_assign( + __entry->transaction =3D transaction; + __entry->generation =3D generation; + __entry->scode =3D scode; + __entry->status =3D status; + __entry->timestamp =3D timestamp; + ), + TP_printk( + "transaction=3D0x%llx generation=3D%u scode=3D%u status=3D%u timestamp= =3D0x%04x", + __entry->transaction, + __entry->generation, + __entry->scode, + __entry->status, + __entry->timestamp + ) +); + +DEFINE_EVENT(async_outbound_initiate_template, async_request_outbound_init= iate, + TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, co= nst u32 *header, const u32 *data, unsigned int data_count), + TP_ARGS(transaction, generation, scode, header, data, data_count) +); + +DEFINE_EVENT(async_outbound_complete_template, async_request_outbound_comp= lete, + TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, un= signed int status, unsigned int timestamp), + TP_ARGS(transaction, generation, scode, status, timestamp) +); + +#undef ASYNC_HEADER_GET_DESTINATION +#undef ASYNC_HEADER_GET_TLABEL +#undef ASYNC_HEADER_GET_TCODE +#undef ASYNC_HEADER_GET_SOURCE +#undef ASYNC_HEADER_GET_OFFSET +#undef QUADLET_SIZE =20 #endif // _FIREWIRE_TRACE_EVENT_H =20 --=20 2.43.0 From nobody Fri Dec 19 11:02:44 2025 Received: from fout6-smtp.messagingengine.com (fout6-smtp.messagingengine.com [103.168.172.149]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 42AD6BE62 for ; Mon, 29 Apr 2024 04:32:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.149 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365150; cv=none; b=ocuFhTi/odpAdUzdUDjbTQrLV97QjCXKOAZlGsMdcnFevTgkFkf91mESNgEZUFOA/OEVUtZWdGQbXxUY5imGoqLh3jEwudMvfo/wP7WmjjRJZqmjSif65TRkbmO60+TjnLZU16W101j9GrLt5rnkHX0Vpi3ye0kuEwLOWe66Co8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365150; c=relaxed/simple; bh=CQy+2C2nKRJNzvpkFfrqatnLUHdid88Yiz8r9I9HVHU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gdG1s62C9pyQ3ViZ6CZztLqTIYI99nCJrmMpzJ8VH5FqE1RVPirRykl5P2e9Nt1+riBaieeQ7/3kh8sUFz7CMZpeI6p8NEvSqOgd4xYNcDJxFY2qvDH4Gpfzx7TQZ7EWBM4HX96YaXHHzKIacuXGqkvAQWHXBKXNQ25j6JymEos= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=K7T/dUzV; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=YF2Vv2pi; arc=none smtp.client-ip=103.168.172.149 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="K7T/dUzV"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="YF2Vv2pi" Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailfout.nyi.internal (Postfix) with ESMTP id 81EDE1380234; Mon, 29 Apr 2024 00:32:27 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Mon, 29 Apr 2024 00:32:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1714365147; x= 1714451547; bh=c5X9sc3Zt5b5UZQSiCbWNAlpqM0YI+asugIh/bdaOy8=; b=K 7T/dUzVMtROr4/mzKxqkI6XvlMJU+kHDJwNZIg+hQIOBIjPvE5D76H6+Gl99E/ho 6o0jV9D3VmzA/2drEE5/EmRzRsFiR+KtEOXFRjmsCrEvUcjRJtfu4Yii+kiAtTta 1Ir1zS+l2uu/8/BJC8OaQNJeG4XzezzYuQMhV5xmITyALc+GHYfDSjlJBl4upcPb q2mVMmceHAgfiPnRq8tQYdyYG5ssegsjW7j26FSS7cFYxUWTvy/iBNibCslLUJGD OcXLsep1AQEfXXVAlKyhoLwLX9w/K3FU7yEukjLMo0Y8muX9eOm7m51jRnvC3Khr AFqV/XKVz1lWecrUh+1Ow== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1714365147; x= 1714451547; bh=c5X9sc3Zt5b5UZQSiCbWNAlpqM0YI+asugIh/bdaOy8=; b=Y F2Vv2piLDRbYLY9jSgFUuoDE0WKBvkcUWUHuLKeNObK2xaLCmzgjjVsMH3sTTf6+ qOxY5CxbyIGoWMCubMMQQBV0pAMAboPwzmMXU3cJogK4oXcyD8zrFUr3OWlYPJJm wcDJm1oBvv20WZAorQ3TXyX/Zc/17W+1LA7fCEVwMM+JSd2B3Dgc0qYqB6DtZmuH t8a2zc/CjKdTxUvAizTUktNmz6w6zKd7bwPgLGBkXRvOFS6aS42vWGAgj6hmDIrc pwhLNiBrSjOnn9X0HNfwArJGrZrKS/1DMhjjzD5/UgNQb2w8HcHOQTo2pIlxDaZu ZLvgZmG75FqAQI5V1w0HQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrvddtledgtdegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtke ertdertddtnecuhfhrohhmpefvrghkrghshhhiucfurghkrghmohhtohcuoehoqdhtrghk rghshhhisehsrghkrghmohgttghhihdrjhhpqeenucggtffrrghtthgvrhhnpedvjefgje euvdfguddukeelveetgfdtvefhtdfffeeigfevueetffeivdffkedvtdenucevlhhushht vghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehoqdhtrghkrghshhhise hsrghkrghmohgttghhihdrjhhp X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 29 Apr 2024 00:32:26 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 3/5] firewire: core: add tracepoints event for asynchronous inbound response Date: Mon, 29 Apr 2024 13:32:16 +0900 Message-ID: <20240429043218.609398-4-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240429043218.609398-1-o-takashi@sakamocchi.jp> References: <20240429043218.609398-1-o-takashi@sakamocchi.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In the transaction of IEEE 1394, the node to receive the asynchronous request transfers any response packet to the requester except for the unified transaction. This commit adds an event for the inbound packet. Note that the code to decode the packet header is moved, against the note about the sanity check. The following example is for asynchronous lock response with compare_and_swap code. async_response_inbound: \ transaction=3D0xffff955fc6a07a10 generation=3D5 scode=3D2 status=3D1 \ timestamp=3D0x0089 dst_id=3D0xffc1 tlabel=3D54 tcode=3D11 src_id=3D0xffc0= \ rcode=3D0 header=3D{0xffc1d9b0,0xffc00000,0x0,0x40002} data=3D{0x50800080} Signed-off-by: Takashi Sakamoto --- drivers/firewire/core-transaction.c | 55 +++++++++++++++-------------- include/trace/events/firewire.h | 50 ++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 26 deletions(-) diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-tr= ansaction.c index c9318024386f..56510d305564 100644 --- a/drivers/firewire/core-transaction.c +++ b/drivers/firewire/core-transaction.c @@ -1011,32 +1011,10 @@ void fw_core_handle_response(struct fw_card *card, = struct fw_packet *p) source =3D async_header_get_source(p->header); rcode =3D async_header_get_rcode(p->header); =20 - spin_lock_irqsave(&card->lock, flags); - list_for_each_entry(iter, &card->transaction_list, link) { - if (iter->node_id =3D=3D source && iter->tlabel =3D=3D tlabel) { - if (!try_cancel_split_timeout(iter)) { - spin_unlock_irqrestore(&card->lock, flags); - goto timed_out; - } - list_del_init(&iter->link); - card->tlabel_mask &=3D ~(1ULL << iter->tlabel); - t =3D iter; - break; - } - } - spin_unlock_irqrestore(&card->lock, flags); - - if (!t) { - timed_out: - fw_notice(card, "unsolicited response (source %x, tlabel %x)\n", - source, tlabel); - return; - } - - /* - * FIXME: sanity check packet, is length correct, does tcodes - * and addresses match. - */ + // FIXME: sanity check packet, is length correct, does tcodes + // and addresses match to the transaction request queried later. + // + // For the tracepoints event, let us decode the header here against the c= oncern. =20 switch (tcode) { case TCODE_READ_QUADLET_RESPONSE: @@ -1062,6 +1040,31 @@ void fw_core_handle_response(struct fw_card *card, s= truct fw_packet *p) break; } =20 + spin_lock_irqsave(&card->lock, flags); + list_for_each_entry(iter, &card->transaction_list, link) { + if (iter->node_id =3D=3D source && iter->tlabel =3D=3D tlabel) { + if (!try_cancel_split_timeout(iter)) { + spin_unlock_irqrestore(&card->lock, flags); + goto timed_out; + } + list_del_init(&iter->link); + card->tlabel_mask &=3D ~(1ULL << iter->tlabel); + t =3D iter; + break; + } + } + spin_unlock_irqrestore(&card->lock, flags); + + trace_async_response_inbound((uintptr_t)t, p->generation, p->speed, p->ac= k, p->timestamp, + p->header, data, data_length / 4); + + if (!t) { + timed_out: + fw_notice(card, "unsolicited response (source %x, tlabel %x)\n", + source, tlabel); + return; + } + /* * The response handler may be executed while the request handler * is still pending. Cancel the request handler. diff --git a/include/trace/events/firewire.h b/include/trace/events/firewir= e.h index 063695874cfb..2d5f6b196a22 100644 --- a/include/trace/events/firewire.h +++ b/include/trace/events/firewire.h @@ -30,6 +30,9 @@ ((((unsigned long long)((header)[1] & ASYNC_HEADER_Q1_OFFSET_HIGH_MASK)) = >> ASYNC_HEADER_Q1_OFFSET_HIGH_SHIFT) << 32)| \ (header)[2] =20 +#define ASYNC_HEADER_GET_RCODE(header) \ + (((header)[1] & ASYNC_HEADER_Q1_RCODE_MASK) >> ASYNC_HEADER_Q1_RCODE_SHIF= T) + #define QUADLET_SIZE 4 =20 DECLARE_EVENT_CLASS(async_outbound_initiate_template, @@ -94,6 +97,47 @@ DECLARE_EVENT_CLASS(async_outbound_complete_template, ) ); =20 +// The value of status is one of ack codes and rcodes specific to Linux Fi= reWire subsystem. +DECLARE_EVENT_CLASS(async_inbound_template, + TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, un= signed int status, unsigned int timestamp, const u32 *header, const u32 *da= ta, unsigned int data_count), + TP_ARGS(transaction, generation, scode, status, timestamp, header, data, = data_count), + TP_STRUCT__entry( + __field(u64, transaction) + __field(u8, generation) + __field(u8, scode) + __field(u8, status) + __field(u8, timestamp) + __array(u32, header, ASYNC_HEADER_QUADLET_COUNT) + __dynamic_array(u32, data, data_count) + ), + TP_fast_assign( + __entry->transaction =3D transaction; + __entry->generation =3D generation; + __entry->scode =3D scode; + __entry->status =3D status; + __entry->timestamp =3D timestamp; + memcpy(__entry->header, header, QUADLET_SIZE * ASYNC_HEADER_QUADLET_COUN= T); + memcpy(__get_dynamic_array(data), data, __get_dynamic_array_len(data)); + ), + // This format is for the response subaction. + TP_printk( + "transaction=3D0x%llx generation=3D%u scode=3D%u status=3D%u timestamp= =3D0x%04x dst_id=3D0x%04x tlabel=3D%u tcode=3D%u src_id=3D0x%04x rcode=3D%u= header=3D%s data=3D%s", + __entry->transaction, + __entry->generation, + __entry->scode, + __entry->status, + __entry->timestamp, + ASYNC_HEADER_GET_DESTINATION(__entry->header), + ASYNC_HEADER_GET_TLABEL(__entry->header), + ASYNC_HEADER_GET_TCODE(__entry->header), + ASYNC_HEADER_GET_SOURCE(__entry->header), + ASYNC_HEADER_GET_RCODE(__entry->header), + __print_array(__entry->header, ASYNC_HEADER_QUADLET_COUNT, QUADLET_SIZE), + __print_array(__get_dynamic_array(data), + __get_dynamic_array_len(data) / QUADLET_SIZE, QUADLET_SIZE) + ) +); + DEFINE_EVENT(async_outbound_initiate_template, async_request_outbound_init= iate, TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, co= nst u32 *header, const u32 *data, unsigned int data_count), TP_ARGS(transaction, generation, scode, header, data, data_count) @@ -104,11 +148,17 @@ DEFINE_EVENT(async_outbound_complete_template, async_= request_outbound_complete, TP_ARGS(transaction, generation, scode, status, timestamp) ); =20 +DEFINE_EVENT(async_inbound_template, async_response_inbound, + TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, un= signed int status, unsigned int timestamp, const u32 *header, const u32 *da= ta, unsigned int data_count), + TP_ARGS(transaction, generation, scode, status, timestamp, header, data, = data_count) +); + #undef ASYNC_HEADER_GET_DESTINATION #undef ASYNC_HEADER_GET_TLABEL #undef ASYNC_HEADER_GET_TCODE #undef ASYNC_HEADER_GET_SOURCE #undef ASYNC_HEADER_GET_OFFSET +#undef ASYNC_HEADER_GET_RCODE #undef QUADLET_SIZE =20 #endif // _FIREWIRE_TRACE_EVENT_H --=20 2.43.0 From nobody Fri Dec 19 11:02:44 2025 Received: from fout6-smtp.messagingengine.com (fout6-smtp.messagingengine.com [103.168.172.149]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB047D530 for ; Mon, 29 Apr 2024 04:32:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.149 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365151; cv=none; b=ch1P8Xo94+sJmQU/mzroLpjeaevuyueIpH0+Ums9XRWyZq+8vyvuJA8SuDk5SN3/NDZAr+Xjg9isw/SKbeUZ710WIyHdoBFEH4fBa6k3Tqa2hlg0yzDewvO0jaNWDcAaC7FPMVu0vb20maz1wYQ+TsFPmOhXW2iEOEDyWM0lrHU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365151; c=relaxed/simple; bh=RFA3NB3xpvDL5LUf+TSFT+iTbtLPH9WfXmQeOQpuOq8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AugqVtz4Pcbv1N0MgRDJEwRP7djTkIRJQ0u5uWCZ2qdrdYBcP62of7+3ekOCWieVKrhiBjQEGaBR/ppsLx+tW6NO/Lf+GwSY/XMff9i7kHXqaJRU9DZ3n4ss2ziP1LDOPMH/rFHZW7LaaCe/huvwXrbWt+wpRDzSrsnKhOQP7rs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=d69Xhl/R; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=a1ssg9l2; arc=none smtp.client-ip=103.168.172.149 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="d69Xhl/R"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="a1ssg9l2" Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailfout.nyi.internal (Postfix) with ESMTP id D7AEA138015C; Mon, 29 Apr 2024 00:32:28 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 29 Apr 2024 00:32:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1714365148; x= 1714451548; bh=vWynpCJ7ctqWnEViz41ox0kp4vazZvpoqgenoJ6du9s=; b=d 69Xhl/RXAWsf+q9taZy2ym9CIhcAYIlttZSFP5nyKoKo8VuKO6vNnhK8Ln1bv642 u4pqJp72ZFUHJOjo2Y3VeM/d42+KTsLkRVB2qT4MMH5HuQINSk5put3B7Fn50Grl I7xvegK6+rL+RHG5x7wmS85Vu3Wa81Q5wJltczj4iuEpu4QK0wGuSP12vD1cMbie sJimcDitZOKjoZJNHVolgJxh/jQfMKjn0zq6xh6+BuFPxhXrc+gDEwMPXLrGEyGg Ho+M50WD2BinuojpGENV/ByVKxDR4LFxFirLsUl1pRggGr/QvXTuzD2K2Z68SQun OMUuh6h6mwnXi/U9vniGw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1714365148; x= 1714451548; bh=vWynpCJ7ctqWnEViz41ox0kp4vazZvpoqgenoJ6du9s=; b=a 1ssg9l2IPsuLk1tgkIEKdt1+d1nh7BEIGVASKUmpIWf6wajI9Q6/gOONFMSSnHhm XJa+H80qyff6QM0F2O8OyOIFsjbx+G3j4ZQBLMl10SlIiI8FQkYgnN/XF1rt3+8O 2C2R5Ef1i8Tk0f7VweH81mSSRrDxIrFgvSObPEbsSKKDRJ2/h+AVHq3KR/AX92RX HbPb2LIGa2GfTgfyUh1nnZfu9ntrrJ6usK4sW3U+6/cy/z9WmdSnDQ8Ud5BG5Oxa A4/KBOwAdAnXTTLZyOaaaQTBNBQ0N2oqQqV6kFkGK/PEM8Ibt+UN9uCLAzigkkUd sbb78DdFCkcMq7MH1vwYg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrvddtledgtdegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtke ertdertddtnecuhfhrohhmpefvrghkrghshhhiucfurghkrghmohhtohcuoehoqdhtrghk rghshhhisehsrghkrghmohgttghhihdrjhhpqeenucggtffrrghtthgvrhhnpedvjefgje euvdfguddukeelveetgfdtvefhtdfffeeigfevueetffeivdffkedvtdenucevlhhushht vghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehoqdhtrghkrghshhhise hsrghkrghmohgttghhihdrjhhp X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 29 Apr 2024 00:32:27 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 4/5] firewire: core: add tracepoint event for asynchronous inbound request Date: Mon, 29 Apr 2024 13:32:17 +0900 Message-ID: <20240429043218.609398-5-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240429043218.609398-1-o-takashi@sakamocchi.jp> References: <20240429043218.609398-1-o-takashi@sakamocchi.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This commit adds an event for asynchronous inbound request. The following example is for asynchronous block write request as IEC 61883-1 FCP request from node 0xffc1. async_request_inbound: \ transaction=3D0xffff89fa08cf16c0 generation=3D4 scode=3D2 status=3D2 \ timestamp=3D0x00b3 dst_id=3D0xffc0 tlabel=3D19 tcode=3D1 src_id=3D0xffc1 \ offset=3D0xfffff0000d00 header=3D{0xffc04d10,0xffc1ffff,0xf0000d00,0x8000= 0} \ data=3D{0x19ff08,0xffff0090} Signed-off-by: Takashi Sakamoto --- drivers/firewire/core-transaction.c | 8 +++++++- include/trace/events/firewire.h | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-tr= ansaction.c index 56510d305564..8c13f996a938 100644 --- a/drivers/firewire/core-transaction.c +++ b/drivers/firewire/core-transaction.c @@ -973,11 +973,13 @@ void fw_core_handle_request(struct fw_card *card, str= uct fw_packet *p) { struct fw_request *request; unsigned long long offset; + unsigned int tcode; =20 if (p->ack !=3D ACK_PENDING && p->ack !=3D ACK_COMPLETE) return; =20 - if (tcode_is_link_internal(async_header_get_tcode(p->header))) { + tcode =3D async_header_get_tcode(p->header); + if (tcode_is_link_internal(tcode)) { fw_cdev_handle_phy_packet(card, p); return; } @@ -988,6 +990,10 @@ void fw_core_handle_request(struct fw_card *card, stru= ct fw_packet *p) return; } =20 + trace_async_request_inbound((uintptr_t)request, p->generation, p->speed, = p->ack, + p->timestamp, p->header, request->data, + tcode_is_read_request(tcode) ? 0 : request->length / 4); + offset =3D async_header_get_offset(p->header); =20 if (!is_in_fcp_region(offset, request->length)) diff --git a/include/trace/events/firewire.h b/include/trace/events/firewir= e.h index 2d5f6b196a22..a30cebed119a 100644 --- a/include/trace/events/firewire.h +++ b/include/trace/events/firewire.h @@ -153,6 +153,27 @@ DEFINE_EVENT(async_inbound_template, async_response_in= bound, TP_ARGS(transaction, generation, scode, status, timestamp, header, data, = data_count) ); =20 +DEFINE_EVENT_PRINT(async_inbound_template, async_request_inbound, + TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, un= signed int status, unsigned int timestamp, const u32 *header, const u32 *da= ta, unsigned int data_count), + TP_ARGS(transaction, generation, scode, status, timestamp, header, data, = data_count), + TP_printk( + "transaction=3D0x%llx generation=3D%u scode=3D%u status=3D%u timestamp= =3D0x%04x dst_id=3D0x%04x tlabel=3D%u tcode=3D%u src_id=3D0x%04x offset=3D0= x%012llx header=3D%s data=3D%s", + __entry->transaction, + __entry->generation, + __entry->scode, + __entry->status, + __entry->timestamp, + ASYNC_HEADER_GET_DESTINATION(__entry->header), + ASYNC_HEADER_GET_TLABEL(__entry->header), + ASYNC_HEADER_GET_TCODE(__entry->header), + ASYNC_HEADER_GET_SOURCE(__entry->header), + ASYNC_HEADER_GET_OFFSET(__entry->header), + __print_array(__entry->header, ASYNC_HEADER_QUADLET_COUNT, QUADLET_SIZE), + __print_array(__get_dynamic_array(data), + __get_dynamic_array_len(data) / QUADLET_SIZE, QUADLET_SIZE) + ) +); + #undef ASYNC_HEADER_GET_DESTINATION #undef ASYNC_HEADER_GET_TLABEL #undef ASYNC_HEADER_GET_TCODE --=20 2.43.0 From nobody Fri Dec 19 11:02:44 2025 Received: from fhigh2-smtp.messagingengine.com (fhigh2-smtp.messagingengine.com [103.168.172.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 518AB11C85 for ; Mon, 29 Apr 2024 04:32:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.153 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365155; cv=none; b=PTatP+jYnXsPJTz4CE1+Xovh/ItPU3bbBlF4PNNqsNxf+yQiSnoUf3Wjoc+J2gnj9BO8o6GKcEfmK03pJWaL9cTqTD5mBO++ZlzlH6f+QE1CTbMoaDU/07g5nenUlBhdii/YVqTaGu3lqBoAsWMzaxtoS8hF4JAf6/VwkMf4Krc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714365155; c=relaxed/simple; bh=9fSxC2qJw1bx+EvQewB7Hy3ziOti6WL2Y57bnLZiWS4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=siiTQGMomroF1/2XUq2LPOP8Cfj2ZtNpkeaLbCowDSg2AvwqYAP6IXnE1jwdBZLUPDYhh8lkOClup+kSVKC9L0b5AvkA3Xywq1NS/WsI0+dZaVpzJN/tov+0B7i7kzJZNG5h3omvxInsx/P/Euj3OWRGqLSjENN9GBz5hSLaSW8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=JcCKgJa3; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Ru5TwtdQ; arc=none smtp.client-ip=103.168.172.153 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="JcCKgJa3"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Ru5TwtdQ" Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailfhigh.nyi.internal (Postfix) with ESMTP id 5390211400A1; Mon, 29 Apr 2024 00:32:30 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Mon, 29 Apr 2024 00:32:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1714365150; x= 1714451550; bh=uAd9uG+pG3IVzb8Q4IOhm2kmGzAT+zLhAYTmas+8y24=; b=J cCKgJa3jLHNuASB5BfOfj9GwllUfEmWmccgqgXqpcPIE8/7GRXg+KqTZO9FMXXjd Uax0QiaQuOKrWT22Yk6N0QpkS5Io2QIs+y9iNT+HIJykZkHM3kEQkVNksTLp9t1W lW0stGL1r0de+A3T3JQYzXx8meww2GOZU3mosHujsRNb3FDBXTBY5jeHg5vgn6/c c/NcBs1D9yT8C7f7zEFHlHY5QFru48fCkssJVzWONyNxQVa+j6ahHQWaKCxodcfI BNyxgufjlU4f4PrQEbIFQJU7kVviiK8PNxkpvB9MDMIRJ2p0yq+WVW/RSk707oEp n9al8xDdhn5UYnJCBh6KA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1714365150; x= 1714451550; bh=uAd9uG+pG3IVzb8Q4IOhm2kmGzAT+zLhAYTmas+8y24=; b=R u5TwtdQ1GXbD0aTFOWKhFX3afcfAx+pt7CwWZbyDg+egd9wXVXxPNl9k4fcuorgd kTw+D2hWYt5PUpwNbiXxmZ//sW7gYaCEyjeEX/pmS+2KX/3iNsBXlV8UQMz8F7l/ WnCJ+KS9q4eZ8X53TJO1BZa7AggsS7PyAMQSiGNUB0/D+n5VcLDkGPQN0Oej9jEz BhECJk7v1a3AMx4aQlz8PUwEIvpomyPHU1C6LlPai4KftZfOVG0tt7w6NKluQ4AR fDvaHBdI866wo//dgoWRfVE5B13umi3eFDyfSRfd3kHajXW6Uy5iqBpyvKHrV8v4 x5Ot5uoJyiNBklfAZO+tg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrvddtledgtdegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtke ertdertddtnecuhfhrohhmpefvrghkrghshhhiucfurghkrghmohhtohcuoehoqdhtrghk rghshhhisehsrghkrghmohgttghhihdrjhhpqeenucggtffrrghtthgvrhhnpedvjefgje euvdfguddukeelveetgfdtvefhtdfffeeigfevueetffeivdffkedvtdenucevlhhushht vghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehoqdhtrghkrghshhhise hsrghkrghmohgttghhihdrjhhp X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 29 Apr 2024 00:32:29 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 5/5] firewire: core: add tracepoints events for asynchronous outbound response Date: Mon, 29 Apr 2024 13:32:18 +0900 Message-ID: <20240429043218.609398-6-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240429043218.609398-1-o-takashi@sakamocchi.jp> References: <20240429043218.609398-1-o-takashi@sakamocchi.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In a view of core transaction service, the asynchronous outbound response consists of two stages; initiation and completion. This commit adds a pair of events for the asynchronous outbound response. The following example is for asynchronous write quadlet request as IEC 61883-1 FCP response to node 0xffc1. async_response_outbound_initiate: \ transaction=3D0xffff89fa08cf16c0 generation=3D4 scode=3D2 dst_id=3D0xffc1= \ tlabel=3D25 tcode=3D2 src_id=3D0xffc0 rcode=3D0 \ header=3D{0xffc16420,0xffc00000,0x0,0x0} data=3D{} async_response_outbound_complete: \ transaction=3D0xffff89fa08cf16c0 generation=3D4 scode=3D2 status=3D1 \ timestamp=3D0x0000 Signed-off-by: Takashi Sakamoto --- drivers/firewire/core-transaction.c | 23 ++++++++++++++++------- include/trace/events/firewire.h | 24 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/drivers/firewire/core-transaction.c b/drivers/firewire/core-tr= ansaction.c index 8c13f996a938..0e49ebf52500 100644 --- a/drivers/firewire/core-transaction.c +++ b/drivers/firewire/core-transaction.c @@ -668,6 +668,9 @@ static void free_response_callback(struct fw_packet *pa= cket, { struct fw_request *request =3D container_of(packet, struct fw_request, re= sponse); =20 + trace_async_response_outbound_complete((uintptr_t)request, packet->genera= tion, + packet->speed, status, packet->timestamp); + // Decrease the reference count since not at in-flight. fw_request_put(request); =20 @@ -850,6 +853,9 @@ static struct fw_request *allocate_request(struct fw_ca= rd *card, void fw_send_response(struct fw_card *card, struct fw_request *request, int rcode) { + u32 *data =3D NULL; + unsigned int data_length =3D 0; + /* unified transaction or broadcast transaction: don't respond */ if (request->ack !=3D ACK_PENDING || HEADER_DESTINATION_IS_BROADCAST(request->request_header)) { @@ -857,17 +863,20 @@ void fw_send_response(struct fw_card *card, return; } =20 - if (rcode =3D=3D RCODE_COMPLETE) - fw_fill_response(&request->response, request->request_header, - rcode, request->data, - fw_get_response_length(request)); - else - fw_fill_response(&request->response, request->request_header, - rcode, NULL, 0); + if (rcode =3D=3D RCODE_COMPLETE) { + data =3D request->data; + data_length =3D fw_get_response_length(request); + } + + fw_fill_response(&request->response, request->request_header, rcode, data= , data_length); =20 // Increase the reference count so that the object is kept during in-flig= ht. fw_request_get(request); =20 + trace_async_response_outbound_initiate((uintptr_t)request, request->respo= nse.generation, + request->response.speed, request->response.header, + data, data ? data_length / 4 : 0); + card->driver->send_response(card, &request->response); } EXPORT_SYMBOL(fw_send_response); diff --git a/include/trace/events/firewire.h b/include/trace/events/firewir= e.h index a30cebed119a..d4688e341837 100644 --- a/include/trace/events/firewire.h +++ b/include/trace/events/firewire.h @@ -174,6 +174,30 @@ DEFINE_EVENT_PRINT(async_inbound_template, async_reque= st_inbound, ) ); =20 +DEFINE_EVENT_PRINT(async_outbound_initiate_template, async_response_outbou= nd_initiate, + TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, co= nst u32 *header, const u32 *data, unsigned int data_count), + TP_ARGS(transaction, generation, scode, header, data, data_count), + TP_printk( + "transaction=3D0x%llx generation=3D%u scode=3D%u dst_id=3D0x%04x tlabel= =3D%u tcode=3D%u src_id=3D0x%04x rcode=3D%u header=3D%s data=3D%s", + __entry->transaction, + __entry->generation, + __entry->scode, + ASYNC_HEADER_GET_DESTINATION(__entry->header), + ASYNC_HEADER_GET_TLABEL(__entry->header), + ASYNC_HEADER_GET_TCODE(__entry->header), + ASYNC_HEADER_GET_SOURCE(__entry->header), + ASYNC_HEADER_GET_RCODE(__entry->header), + __print_array(__entry->header, ASYNC_HEADER_QUADLET_COUNT, QUADLET_SIZE), + __print_array(__get_dynamic_array(data), + __get_dynamic_array_len(data) / QUADLET_SIZE, QUADLET_SIZE) + ) +); + +DEFINE_EVENT(async_outbound_complete_template, async_response_outbound_com= plete, + TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, un= signed int status, unsigned int timestamp), + TP_ARGS(transaction, generation, scode, status, timestamp) +); + #undef ASYNC_HEADER_GET_DESTINATION #undef ASYNC_HEADER_GET_TLABEL #undef ASYNC_HEADER_GET_TCODE --=20 2.43.0