firewire fixes for v6.10-rc4

- Update tracepoints events introduced in v6.10-rc1 so that it includes the
   numeric identifier of host card in which the event happens.
 
 - replace wiki URL with the current website URL in Kconfig
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQE66IEYNDXNBPeGKSsLtaWM8LwEwUCZm1CswAKCRCsLtaWM8Lw
 ExhaAQCu+YeWgrb6eg1ngZVvFYz03xfrItwQrfVBmifNo3PpxAD/azbA7HbquaC+
 cueCZmjqxk9SLu4FnrZpExFtQjfvGA4=
 =3X30
 -----END PGP SIGNATURE-----

Merge tag 'firewire-fixes-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394

Pull firewire fixes from Takashi Sakamoto:

 - Update tracepoints events introduced in v6.10-rc1 so that it includes
   the numeric identifier of host card in which the event happens

 - replace wiki URL with the current website URL in Kconfig

* tag 'firewire-fixes-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394:
  firewire: core: record card index in bus_reset_handle tracepoints event
  firewire: core: record card index in tracepoinrts events derived from bus_reset_arrange_template
  firewire: core: record card index in async_phy_inbound tracepoints event
  firewire: core: record card index in async_phy_outbound_complete tracepoints event
  firewire: core: record card index in async_phy_outbound_initiate tracepoints event
  firewire: core: record card index in tracepoinrts events derived from async_inbound_template
  firewire: core: record card index in tracepoinrts events derived from async_outbound_initiate_template
  firewire: core: record card index in tracepoinrts events derived from async_outbound_complete_template
  firewire: fix website URL in Kconfig
This commit is contained in:
Linus Torvalds 2024-06-16 09:58:02 -07:00
commit be2fa8865c
6 changed files with 93 additions and 66 deletions

View File

@ -11,7 +11,7 @@ config FIREWIRE
This is the new-generation IEEE 1394 (FireWire) driver stack This is the new-generation IEEE 1394 (FireWire) driver stack
a.k.a. Juju, a new implementation designed for robustness and a.k.a. Juju, a new implementation designed for robustness and
simplicity. simplicity.
See http://ieee1394.wiki.kernel.org/index.php/Juju_Migration See http://ieee1394.docs.kernel.org/en/latest/migration.html
for information about migration from the older Linux 1394 stack for information about migration from the older Linux 1394 stack
to the new driver stack. to the new driver stack.

View File

@ -222,14 +222,14 @@ static int reset_bus(struct fw_card *card, bool short_reset)
int reg = short_reset ? 5 : 1; int reg = short_reset ? 5 : 1;
int bit = short_reset ? PHY_BUS_SHORT_RESET : PHY_BUS_RESET; int bit = short_reset ? PHY_BUS_SHORT_RESET : PHY_BUS_RESET;
trace_bus_reset_initiate(card->generation, short_reset); trace_bus_reset_initiate(card->index, card->generation, short_reset);
return card->driver->update_phy_reg(card, reg, 0, bit); return card->driver->update_phy_reg(card, reg, 0, bit);
} }
void fw_schedule_bus_reset(struct fw_card *card, bool delayed, bool short_reset) void fw_schedule_bus_reset(struct fw_card *card, bool delayed, bool short_reset)
{ {
trace_bus_reset_schedule(card->generation, short_reset); trace_bus_reset_schedule(card->index, card->generation, short_reset);
/* We don't try hard to sort out requests of long vs. short resets. */ /* We don't try hard to sort out requests of long vs. short resets. */
card->br_short = short_reset; card->br_short = short_reset;
@ -249,7 +249,7 @@ static void br_work(struct work_struct *work)
/* Delay for 2s after last reset per IEEE 1394 clause 8.2.1. */ /* Delay for 2s after last reset per IEEE 1394 clause 8.2.1. */
if (card->reset_jiffies != 0 && if (card->reset_jiffies != 0 &&
time_before64(get_jiffies_64(), card->reset_jiffies + 2 * HZ)) { time_before64(get_jiffies_64(), card->reset_jiffies + 2 * HZ)) {
trace_bus_reset_postpone(card->generation, card->br_short); trace_bus_reset_postpone(card->index, card->generation, card->br_short);
if (!queue_delayed_work(fw_workqueue, &card->br_work, 2 * HZ)) if (!queue_delayed_work(fw_workqueue, &card->br_work, 2 * HZ))
fw_card_put(card); fw_card_put(card);

View File

@ -1559,7 +1559,7 @@ static void outbound_phy_packet_callback(struct fw_packet *packet,
struct client *e_client = e->client; struct client *e_client = e->client;
u32 rcode; u32 rcode;
trace_async_phy_outbound_complete((uintptr_t)packet, status, packet->generation, trace_async_phy_outbound_complete((uintptr_t)packet, card->index, status, packet->generation,
packet->timestamp); packet->timestamp);
switch (status) { switch (status) {
@ -1659,8 +1659,8 @@ static int ioctl_send_phy_packet(struct client *client, union ioctl_arg *arg)
memcpy(pp->data, a->data, sizeof(a->data)); memcpy(pp->data, a->data, sizeof(a->data));
} }
trace_async_phy_outbound_initiate((uintptr_t)&e->p, e->p.generation, e->p.header[1], trace_async_phy_outbound_initiate((uintptr_t)&e->p, card->index, e->p.generation,
e->p.header[2]); e->p.header[1], e->p.header[2]);
card->driver->send_request(card, &e->p); card->driver->send_request(card, &e->p);

View File

@ -508,7 +508,7 @@ void fw_core_handle_bus_reset(struct fw_card *card, int node_id, int generation,
struct fw_node *local_node; struct fw_node *local_node;
unsigned long flags; unsigned long flags;
trace_bus_reset_handle(generation, node_id, bm_abdicate, self_ids, self_id_count); trace_bus_reset_handle(card->index, generation, node_id, bm_abdicate, self_ids, self_id_count);
spin_lock_irqsave(&card->lock, flags); spin_lock_irqsave(&card->lock, flags);

View File

@ -174,8 +174,8 @@ static void transmit_complete_callback(struct fw_packet *packet,
struct fw_transaction *t = struct fw_transaction *t =
container_of(packet, struct fw_transaction, packet); container_of(packet, struct fw_transaction, packet);
trace_async_request_outbound_complete((uintptr_t)t, packet->generation, packet->speed, trace_async_request_outbound_complete((uintptr_t)t, card->index, packet->generation,
status, packet->timestamp); packet->speed, status, packet->timestamp);
switch (status) { switch (status) {
case ACK_COMPLETE: case ACK_COMPLETE:
@ -398,7 +398,8 @@ void __fw_send_request(struct fw_card *card, struct fw_transaction *t, int tcode
spin_unlock_irqrestore(&card->lock, flags); spin_unlock_irqrestore(&card->lock, flags);
trace_async_request_outbound_initiate((uintptr_t)t, generation, speed, t->packet.header, payload, trace_async_request_outbound_initiate((uintptr_t)t, card->index, generation, speed,
t->packet.header, payload,
tcode_is_read_request(tcode) ? 0 : length / 4); tcode_is_read_request(tcode) ? 0 : length / 4);
card->driver->send_request(card, &t->packet); card->driver->send_request(card, &t->packet);
@ -463,7 +464,7 @@ static DECLARE_COMPLETION(phy_config_done);
static void transmit_phy_packet_callback(struct fw_packet *packet, static void transmit_phy_packet_callback(struct fw_packet *packet,
struct fw_card *card, int status) struct fw_card *card, int status)
{ {
trace_async_phy_outbound_complete((uintptr_t)packet, packet->generation, status, trace_async_phy_outbound_complete((uintptr_t)packet, card->index, packet->generation, status,
packet->timestamp); packet->timestamp);
complete(&phy_config_done); complete(&phy_config_done);
} }
@ -503,7 +504,7 @@ void fw_send_phy_config(struct fw_card *card,
phy_config_packet.generation = generation; phy_config_packet.generation = generation;
reinit_completion(&phy_config_done); reinit_completion(&phy_config_done);
trace_async_phy_outbound_initiate((uintptr_t)&phy_config_packet, trace_async_phy_outbound_initiate((uintptr_t)&phy_config_packet, card->index,
phy_config_packet.generation, phy_config_packet.header[1], phy_config_packet.generation, phy_config_packet.header[1],
phy_config_packet.header[2]); phy_config_packet.header[2]);
@ -674,7 +675,7 @@ static void free_response_callback(struct fw_packet *packet,
{ {
struct fw_request *request = container_of(packet, struct fw_request, response); struct fw_request *request = container_of(packet, struct fw_request, response);
trace_async_response_outbound_complete((uintptr_t)request, packet->generation, trace_async_response_outbound_complete((uintptr_t)request, card->index, packet->generation,
packet->speed, status, packet->timestamp); packet->speed, status, packet->timestamp);
// Decrease the reference count since not at in-flight. // Decrease the reference count since not at in-flight.
@ -879,9 +880,10 @@ void fw_send_response(struct fw_card *card,
// Increase the reference count so that the object is kept during in-flight. // Increase the reference count so that the object is kept during in-flight.
fw_request_get(request); fw_request_get(request);
trace_async_response_outbound_initiate((uintptr_t)request, request->response.generation, trace_async_response_outbound_initiate((uintptr_t)request, card->index,
request->response.speed, request->response.header, request->response.generation, request->response.speed,
data, data ? data_length / 4 : 0); request->response.header, data,
data ? data_length / 4 : 0);
card->driver->send_response(card, &request->response); card->driver->send_response(card, &request->response);
} }
@ -995,7 +997,7 @@ void fw_core_handle_request(struct fw_card *card, struct fw_packet *p)
tcode = async_header_get_tcode(p->header); tcode = async_header_get_tcode(p->header);
if (tcode_is_link_internal(tcode)) { if (tcode_is_link_internal(tcode)) {
trace_async_phy_inbound((uintptr_t)p, p->generation, p->ack, p->timestamp, trace_async_phy_inbound((uintptr_t)p, card->index, p->generation, p->ack, p->timestamp,
p->header[1], p->header[2]); p->header[1], p->header[2]);
fw_cdev_handle_phy_packet(card, p); fw_cdev_handle_phy_packet(card, p);
return; return;
@ -1007,8 +1009,8 @@ void fw_core_handle_request(struct fw_card *card, struct fw_packet *p)
return; return;
} }
trace_async_request_inbound((uintptr_t)request, p->generation, p->speed, p->ack, trace_async_request_inbound((uintptr_t)request, card->index, p->generation, p->speed,
p->timestamp, p->header, request->data, p->ack, p->timestamp, p->header, request->data,
tcode_is_read_request(tcode) ? 0 : request->length / 4); tcode_is_read_request(tcode) ? 0 : request->length / 4);
offset = async_header_get_offset(p->header); offset = async_header_get_offset(p->header);
@ -1078,8 +1080,8 @@ void fw_core_handle_response(struct fw_card *card, struct fw_packet *p)
} }
spin_unlock_irqrestore(&card->lock, flags); spin_unlock_irqrestore(&card->lock, flags);
trace_async_response_inbound((uintptr_t)t, p->generation, p->speed, p->ack, p->timestamp, trace_async_response_inbound((uintptr_t)t, card->index, p->generation, p->speed, p->ack,
p->header, data, data_length / 4); p->timestamp, p->header, data, data_length / 4);
if (!t) { if (!t) {
timed_out: timed_out:

View File

@ -36,10 +36,11 @@
#define QUADLET_SIZE 4 #define QUADLET_SIZE 4
DECLARE_EVENT_CLASS(async_outbound_initiate_template, DECLARE_EVENT_CLASS(async_outbound_initiate_template,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, const u32 *header, const u32 *data, unsigned int data_count), TP_PROTO(u64 transaction, unsigned int card_index, unsigned int generation, unsigned int scode, const u32 *header, const u32 *data, unsigned int data_count),
TP_ARGS(transaction, generation, scode, header, data, data_count), TP_ARGS(transaction, card_index, generation, scode, header, data, data_count),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u64, transaction) __field(u64, transaction)
__field(u8, card_index)
__field(u8, generation) __field(u8, generation)
__field(u8, scode) __field(u8, scode)
__array(u32, header, ASYNC_HEADER_QUADLET_COUNT) __array(u32, header, ASYNC_HEADER_QUADLET_COUNT)
@ -47,6 +48,7 @@ DECLARE_EVENT_CLASS(async_outbound_initiate_template,
), ),
TP_fast_assign( TP_fast_assign(
__entry->transaction = transaction; __entry->transaction = transaction;
__entry->card_index = card_index;
__entry->generation = generation; __entry->generation = generation;
__entry->scode = scode; __entry->scode = scode;
memcpy(__entry->header, header, QUADLET_SIZE * ASYNC_HEADER_QUADLET_COUNT); memcpy(__entry->header, header, QUADLET_SIZE * ASYNC_HEADER_QUADLET_COUNT);
@ -54,8 +56,9 @@ DECLARE_EVENT_CLASS(async_outbound_initiate_template,
), ),
// This format is for the request subaction. // This format is for the request subaction.
TP_printk( TP_printk(
"transaction=0x%llx generation=%u scode=%u dst_id=0x%04x tlabel=%u tcode=%u src_id=0x%04x offset=0x%012llx header=%s data=%s", "transaction=0x%llx card_index=%u generation=%u scode=%u dst_id=0x%04x tlabel=%u tcode=%u src_id=0x%04x offset=0x%012llx header=%s data=%s",
__entry->transaction, __entry->transaction,
__entry->card_index,
__entry->generation, __entry->generation,
__entry->scode, __entry->scode,
ASYNC_HEADER_GET_DESTINATION(__entry->header), ASYNC_HEADER_GET_DESTINATION(__entry->header),
@ -71,10 +74,11 @@ DECLARE_EVENT_CLASS(async_outbound_initiate_template,
// The value of status is one of ack codes and rcodes specific to Linux FireWire subsystem. // The value of status is one of ack codes and rcodes specific to Linux FireWire subsystem.
DECLARE_EVENT_CLASS(async_outbound_complete_template, DECLARE_EVENT_CLASS(async_outbound_complete_template,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp), TP_PROTO(u64 transaction, unsigned int card_index, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp),
TP_ARGS(transaction, generation, scode, status, timestamp), TP_ARGS(transaction, card_index, generation, scode, status, timestamp),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u64, transaction) __field(u64, transaction)
__field(u8, card_index)
__field(u8, generation) __field(u8, generation)
__field(u8, scode) __field(u8, scode)
__field(u8, status) __field(u8, status)
@ -82,14 +86,16 @@ DECLARE_EVENT_CLASS(async_outbound_complete_template,
), ),
TP_fast_assign( TP_fast_assign(
__entry->transaction = transaction; __entry->transaction = transaction;
__entry->card_index = card_index;
__entry->generation = generation; __entry->generation = generation;
__entry->scode = scode; __entry->scode = scode;
__entry->status = status; __entry->status = status;
__entry->timestamp = timestamp; __entry->timestamp = timestamp;
), ),
TP_printk( TP_printk(
"transaction=0x%llx generation=%u scode=%u status=%u timestamp=0x%04x", "transaction=0x%llx card_index=%u generation=%u scode=%u status=%u timestamp=0x%04x",
__entry->transaction, __entry->transaction,
__entry->card_index,
__entry->generation, __entry->generation,
__entry->scode, __entry->scode,
__entry->status, __entry->status,
@ -99,10 +105,11 @@ DECLARE_EVENT_CLASS(async_outbound_complete_template,
// The value of status is one of ack codes and rcodes specific to Linux FireWire subsystem. // The value of status is one of ack codes and rcodes specific to Linux FireWire subsystem.
DECLARE_EVENT_CLASS(async_inbound_template, DECLARE_EVENT_CLASS(async_inbound_template,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp, const u32 *header, const u32 *data, unsigned int data_count), TP_PROTO(u64 transaction, unsigned int card_index, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp, const u32 *header, const u32 *data, unsigned int data_count),
TP_ARGS(transaction, generation, scode, status, timestamp, header, data, data_count), TP_ARGS(transaction, card_index, generation, scode, status, timestamp, header, data, data_count),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u64, transaction) __field(u64, transaction)
__field(u8, card_index)
__field(u8, generation) __field(u8, generation)
__field(u8, scode) __field(u8, scode)
__field(u8, status) __field(u8, status)
@ -112,6 +119,7 @@ DECLARE_EVENT_CLASS(async_inbound_template,
), ),
TP_fast_assign( TP_fast_assign(
__entry->transaction = transaction; __entry->transaction = transaction;
__entry->card_index = card_index;
__entry->generation = generation; __entry->generation = generation;
__entry->scode = scode; __entry->scode = scode;
__entry->status = status; __entry->status = status;
@ -121,8 +129,9 @@ DECLARE_EVENT_CLASS(async_inbound_template,
), ),
// This format is for the response subaction. // This format is for the response subaction.
TP_printk( TP_printk(
"transaction=0x%llx generation=%u scode=%u status=%u timestamp=0x%04x dst_id=0x%04x tlabel=%u tcode=%u src_id=0x%04x rcode=%u header=%s data=%s", "transaction=0x%llx card_index=%u generation=%u scode=%u status=%u timestamp=0x%04x dst_id=0x%04x tlabel=%u tcode=%u src_id=0x%04x rcode=%u header=%s data=%s",
__entry->transaction, __entry->transaction,
__entry->card_index,
__entry->generation, __entry->generation,
__entry->scode, __entry->scode,
__entry->status, __entry->status,
@ -139,26 +148,27 @@ DECLARE_EVENT_CLASS(async_inbound_template,
); );
DEFINE_EVENT(async_outbound_initiate_template, async_request_outbound_initiate, DEFINE_EVENT(async_outbound_initiate_template, async_request_outbound_initiate,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, const u32 *header, const u32 *data, unsigned int data_count), TP_PROTO(u64 transaction, unsigned int card_index, unsigned int generation, unsigned int scode, const u32 *header, const u32 *data, unsigned int data_count),
TP_ARGS(transaction, generation, scode, header, data, data_count) TP_ARGS(transaction, card_index, generation, scode, header, data, data_count)
); );
DEFINE_EVENT(async_outbound_complete_template, async_request_outbound_complete, DEFINE_EVENT(async_outbound_complete_template, async_request_outbound_complete,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp), TP_PROTO(u64 transaction, unsigned int card_index, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp),
TP_ARGS(transaction, generation, scode, status, timestamp) TP_ARGS(transaction, card_index, generation, scode, status, timestamp)
); );
DEFINE_EVENT(async_inbound_template, async_response_inbound, DEFINE_EVENT(async_inbound_template, async_response_inbound,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp, const u32 *header, const u32 *data, unsigned int data_count), TP_PROTO(u64 transaction, unsigned int card_index, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp, const u32 *header, const u32 *data, unsigned int data_count),
TP_ARGS(transaction, generation, scode, status, timestamp, header, data, data_count) TP_ARGS(transaction, card_index, generation, scode, status, timestamp, header, data, data_count)
); );
DEFINE_EVENT_PRINT(async_inbound_template, async_request_inbound, DEFINE_EVENT_PRINT(async_inbound_template, async_request_inbound,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp, const u32 *header, const u32 *data, unsigned int data_count), TP_PROTO(u64 transaction, unsigned int card_index, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp, const u32 *header, const u32 *data, unsigned int data_count),
TP_ARGS(transaction, generation, scode, status, timestamp, header, data, data_count), TP_ARGS(transaction, card_index, generation, scode, status, timestamp, header, data, data_count),
TP_printk( TP_printk(
"transaction=0x%llx generation=%u scode=%u status=%u timestamp=0x%04x dst_id=0x%04x tlabel=%u tcode=%u src_id=0x%04x offset=0x%012llx header=%s data=%s", "transaction=0x%llx card_index=%u generation=%u scode=%u status=%u timestamp=0x%04x dst_id=0x%04x tlabel=%u tcode=%u src_id=0x%04x offset=0x%012llx header=%s data=%s",
__entry->transaction, __entry->transaction,
__entry->card_index,
__entry->generation, __entry->generation,
__entry->scode, __entry->scode,
__entry->status, __entry->status,
@ -175,11 +185,12 @@ DEFINE_EVENT_PRINT(async_inbound_template, async_request_inbound,
); );
DEFINE_EVENT_PRINT(async_outbound_initiate_template, async_response_outbound_initiate, DEFINE_EVENT_PRINT(async_outbound_initiate_template, async_response_outbound_initiate,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, const u32 *header, const u32 *data, unsigned int data_count), TP_PROTO(u64 transaction, unsigned int card_index, unsigned int generation, unsigned int scode, const u32 *header, const u32 *data, unsigned int data_count),
TP_ARGS(transaction, generation, scode, header, data, data_count), TP_ARGS(transaction, card_index, generation, scode, header, data, data_count),
TP_printk( TP_printk(
"transaction=0x%llx generation=%u scode=%u dst_id=0x%04x tlabel=%u tcode=%u src_id=0x%04x rcode=%u header=%s data=%s", "transaction=0x%llx card_index=%u generation=%u scode=%u dst_id=0x%04x tlabel=%u tcode=%u src_id=0x%04x rcode=%u header=%s data=%s",
__entry->transaction, __entry->transaction,
__entry->card_index,
__entry->generation, __entry->generation,
__entry->scode, __entry->scode,
ASYNC_HEADER_GET_DESTINATION(__entry->header), ASYNC_HEADER_GET_DESTINATION(__entry->header),
@ -194,8 +205,8 @@ DEFINE_EVENT_PRINT(async_outbound_initiate_template, async_response_outbound_ini
); );
DEFINE_EVENT(async_outbound_complete_template, async_response_outbound_complete, DEFINE_EVENT(async_outbound_complete_template, async_response_outbound_complete,
TP_PROTO(u64 transaction, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp), TP_PROTO(u64 transaction, unsigned int card_index, unsigned int generation, unsigned int scode, unsigned int status, unsigned int timestamp),
TP_ARGS(transaction, generation, scode, status, timestamp) TP_ARGS(transaction, card_index, generation, scode, status, timestamp)
); );
#undef ASYNC_HEADER_GET_DESTINATION #undef ASYNC_HEADER_GET_DESTINATION
@ -206,23 +217,26 @@ DEFINE_EVENT(async_outbound_complete_template, async_response_outbound_complete,
#undef ASYNC_HEADER_GET_RCODE #undef ASYNC_HEADER_GET_RCODE
TRACE_EVENT(async_phy_outbound_initiate, TRACE_EVENT(async_phy_outbound_initiate,
TP_PROTO(u64 packet, unsigned int generation, u32 first_quadlet, u32 second_quadlet), TP_PROTO(u64 packet, unsigned int card_index, unsigned int generation, u32 first_quadlet, u32 second_quadlet),
TP_ARGS(packet, generation, first_quadlet, second_quadlet), TP_ARGS(packet, card_index, generation, first_quadlet, second_quadlet),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u64, packet) __field(u64, packet)
__field(u8, card_index)
__field(u8, generation) __field(u8, generation)
__field(u32, first_quadlet) __field(u32, first_quadlet)
__field(u32, second_quadlet) __field(u32, second_quadlet)
), ),
TP_fast_assign( TP_fast_assign(
__entry->packet = packet; __entry->packet = packet;
__entry->card_index = card_index;
__entry->generation = generation; __entry->generation = generation;
__entry->first_quadlet = first_quadlet; __entry->first_quadlet = first_quadlet;
__entry->second_quadlet = second_quadlet __entry->second_quadlet = second_quadlet
), ),
TP_printk( TP_printk(
"packet=0x%llx generation=%u first_quadlet=0x%08x second_quadlet=0x%08x", "packet=0x%llx card_index=%u generation=%u first_quadlet=0x%08x second_quadlet=0x%08x",
__entry->packet, __entry->packet,
__entry->card_index,
__entry->generation, __entry->generation,
__entry->first_quadlet, __entry->first_quadlet,
__entry->second_quadlet __entry->second_quadlet
@ -230,23 +244,26 @@ TRACE_EVENT(async_phy_outbound_initiate,
); );
TRACE_EVENT(async_phy_outbound_complete, TRACE_EVENT(async_phy_outbound_complete,
TP_PROTO(u64 packet, unsigned int generation, unsigned int status, unsigned int timestamp), TP_PROTO(u64 packet, unsigned int card_index, unsigned int generation, unsigned int status, unsigned int timestamp),
TP_ARGS(packet, generation, status, timestamp), TP_ARGS(packet, card_index, generation, status, timestamp),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u64, packet) __field(u64, packet)
__field(u8, card_index)
__field(u8, generation) __field(u8, generation)
__field(u8, status) __field(u8, status)
__field(u16, timestamp) __field(u16, timestamp)
), ),
TP_fast_assign( TP_fast_assign(
__entry->packet = packet; __entry->packet = packet;
__entry->card_index = card_index;
__entry->generation = generation; __entry->generation = generation;
__entry->status = status; __entry->status = status;
__entry->timestamp = timestamp; __entry->timestamp = timestamp;
), ),
TP_printk( TP_printk(
"packet=0x%llx generation=%u status=%u timestamp=0x%04x", "packet=0x%llx card_index=%u generation=%u status=%u timestamp=0x%04x",
__entry->packet, __entry->packet,
__entry->card_index,
__entry->generation, __entry->generation,
__entry->status, __entry->status,
__entry->timestamp __entry->timestamp
@ -254,10 +271,11 @@ TRACE_EVENT(async_phy_outbound_complete,
); );
TRACE_EVENT(async_phy_inbound, TRACE_EVENT(async_phy_inbound,
TP_PROTO(u64 packet, unsigned int generation, unsigned int status, unsigned int timestamp, u32 first_quadlet, u32 second_quadlet), TP_PROTO(u64 packet, unsigned int card_index, unsigned int generation, unsigned int status, unsigned int timestamp, u32 first_quadlet, u32 second_quadlet),
TP_ARGS(packet, generation, status, timestamp, first_quadlet, second_quadlet), TP_ARGS(packet, card_index, generation, status, timestamp, first_quadlet, second_quadlet),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u64, packet) __field(u64, packet)
__field(u8, card_index)
__field(u8, generation) __field(u8, generation)
__field(u8, status) __field(u8, status)
__field(u16, timestamp) __field(u16, timestamp)
@ -273,8 +291,9 @@ TRACE_EVENT(async_phy_inbound,
__entry->second_quadlet = second_quadlet __entry->second_quadlet = second_quadlet
), ),
TP_printk( TP_printk(
"packet=0x%llx generation=%u status=%u timestamp=0x%04x first_quadlet=0x%08x second_quadlet=0x%08x", "packet=0x%llx card_index=%u generation=%u status=%u timestamp=0x%04x first_quadlet=0x%08x second_quadlet=0x%08x",
__entry->packet, __entry->packet,
__entry->card_index,
__entry->generation, __entry->generation,
__entry->status, __entry->status,
__entry->timestamp, __entry->timestamp,
@ -284,55 +303,61 @@ TRACE_EVENT(async_phy_inbound,
); );
DECLARE_EVENT_CLASS(bus_reset_arrange_template, DECLARE_EVENT_CLASS(bus_reset_arrange_template,
TP_PROTO(unsigned int generation, bool short_reset), TP_PROTO(unsigned int card_index, unsigned int generation, bool short_reset),
TP_ARGS(generation, short_reset), TP_ARGS(card_index, generation, short_reset),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u8, card_index)
__field(u8, generation) __field(u8, generation)
__field(bool, short_reset) __field(bool, short_reset)
), ),
TP_fast_assign( TP_fast_assign(
__entry->card_index = card_index;
__entry->generation = generation; __entry->generation = generation;
__entry->short_reset = short_reset; __entry->short_reset = short_reset;
), ),
TP_printk( TP_printk(
"generation=%u short_reset=%s", "card_index=%u generation=%u short_reset=%s",
__entry->card_index,
__entry->generation, __entry->generation,
__entry->short_reset ? "true" : "false" __entry->short_reset ? "true" : "false"
) )
); );
DEFINE_EVENT(bus_reset_arrange_template, bus_reset_initiate, DEFINE_EVENT(bus_reset_arrange_template, bus_reset_initiate,
TP_PROTO(unsigned int generation, bool short_reset), TP_PROTO(unsigned int card_index, unsigned int generation, bool short_reset),
TP_ARGS(generation, short_reset) TP_ARGS(card_index, generation, short_reset)
); );
DEFINE_EVENT(bus_reset_arrange_template, bus_reset_schedule, DEFINE_EVENT(bus_reset_arrange_template, bus_reset_schedule,
TP_PROTO(unsigned int generation, bool short_reset), TP_PROTO(unsigned int card_index, unsigned int generation, bool short_reset),
TP_ARGS(generation, short_reset) TP_ARGS(card_index, generation, short_reset)
); );
DEFINE_EVENT(bus_reset_arrange_template, bus_reset_postpone, DEFINE_EVENT(bus_reset_arrange_template, bus_reset_postpone,
TP_PROTO(unsigned int generation, bool short_reset), TP_PROTO(unsigned int card_index, unsigned int generation, bool short_reset),
TP_ARGS(generation, short_reset) TP_ARGS(card_index, generation, short_reset)
); );
TRACE_EVENT(bus_reset_handle, TRACE_EVENT(bus_reset_handle,
TP_PROTO(unsigned int generation, unsigned int node_id, bool bm_abdicate, u32 *self_ids, unsigned int self_id_count), TP_PROTO(unsigned int card_index, unsigned int generation, unsigned int node_id, bool bm_abdicate, u32 *self_ids, unsigned int self_id_count),
TP_ARGS(generation, node_id, bm_abdicate, self_ids, self_id_count), TP_ARGS(card_index, generation, node_id, bm_abdicate, self_ids, self_id_count),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u8, card_index)
__field(u8, generation) __field(u8, generation)
__field(u8, node_id) __field(u8, node_id)
__field(bool, bm_abdicate) __field(bool, bm_abdicate)
__dynamic_array(u32, self_ids, self_id_count) __dynamic_array(u32, self_ids, self_id_count)
), ),
TP_fast_assign( TP_fast_assign(
__entry->card_index = card_index;
__entry->generation = generation; __entry->generation = generation;
__entry->node_id = node_id; __entry->node_id = node_id;
__entry->bm_abdicate = bm_abdicate; __entry->bm_abdicate = bm_abdicate;
memcpy(__get_dynamic_array(self_ids), self_ids, __get_dynamic_array_len(self_ids)); memcpy(__get_dynamic_array(self_ids), self_ids, __get_dynamic_array_len(self_ids));
), ),
TP_printk( TP_printk(
"generation=%u node_id=0x%04x bm_abdicate=%s self_ids=%s", "card_index=%u generation=%u node_id=0x%04x bm_abdicate=%s self_ids=%s",
__entry->card_index,
__entry->generation, __entry->generation,
__entry->node_id, __entry->node_id,
__entry->bm_abdicate ? "true" : "false", __entry->bm_abdicate ? "true" : "false",