mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-04 04:02:26 +00:00
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:
commit
be2fa8865c
@ -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.
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
@ -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",
|
||||||
|
Loading…
Reference in New Issue
Block a user