Commit fd4b5d7308 for qemu.org
commit fd4b5d73081907bea1f06e3ea5af3e59caca2a5c
Author: Bernhard Beschow <shentey@gmail.com>
Date: Mon Sep 21 23:47:08 2026 +0200
hw/net/imx_fec: Trace with QOM path where easily possible
Some i.MX SoCs have multiple i.MX network IP blocks. Allow to
distinguish them via their QOM path when tracing.
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Message-ID: <20260921214710.29422-41-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c
index c177b7ff2b..fb8bcd52d2 100644
--- a/hw/net/imx_fec.c
+++ b/hw/net/imx_fec.c
@@ -248,7 +248,7 @@ static uint32_t imx_phy_read(IMXFECState *s, int reg)
if (s->phy_consumer && phy == s->phy_consumer->phy_num) {
s = s->phy_consumer;
} else {
- trace_imx_phy_read_num(phy, s->phy_num);
+ trace_imx_phy_read_num(DEVICE(s)->canonical_path, phy, s->phy_num);
return 0xffff;
}
}
@@ -270,7 +270,7 @@ static void imx_phy_write(IMXFECState *s, int reg, uint32_t val)
if (s->phy_consumer && phy == s->phy_consumer->phy_num) {
s = s->phy_consumer;
} else {
- trace_imx_phy_write_num(phy, s->phy_num);
+ trace_imx_phy_write_num(DEVICE(s)->canonical_path, phy, s->phy_num);
return;
}
}
@@ -364,7 +364,7 @@ static void imx_fec_do_tx(IMXFECState *s)
if ((bd.flags & ENET_BD_R) == 0) {
/* Run out of descriptors to transmit. */
- trace_imx_eth_tx_bd_busy();
+ trace_imx_eth_tx_bd_busy(DEVICE(s)->canonical_path);
break;
}
@@ -446,7 +446,7 @@ static void imx_enet_do_tx(IMXFECState *s, uint32_t index)
if ((bd.flags & ENET_BD_R) == 0) {
/* Run out of descriptors to transmit. */
- trace_imx_eth_tx_bd_busy();
+ trace_imx_eth_tx_bd_busy(DEVICE(s)->canonical_path);
break;
}
@@ -521,7 +521,7 @@ static void imx_eth_enable_rx(IMXFECState *s, bool flush)
s->regs[ENET_RDAR] = (bd.flags & ENET_BD_E) ? ENET_RDAR_RDAR : 0;
if (!s->regs[ENET_RDAR]) {
- trace_imx_eth_rx_bd_full();
+ trace_imx_eth_rx_bd_full(DEVICE(s)->canonical_path);
} else if (flush) {
qemu_flush_queued_packets(qemu_get_queue(s->nic));
}
@@ -659,7 +659,8 @@ static uint64_t imx_eth_read(void *opaque, hwaddr offset, unsigned size)
break;
}
- trace_imx_eth_read(index, imx_eth_reg_name(s, index), value);
+ trace_imx_eth_read(DEVICE(s)->canonical_path, index,
+ imx_eth_reg_name(s, index), value);
return value;
}
@@ -767,7 +768,8 @@ static void imx_eth_write(void *opaque, hwaddr offset, uint64_t value,
const bool single_tx_ring = !imx_eth_is_multi_tx_ring(s);
uint32_t index = offset >> 2;
- trace_imx_eth_write(index, imx_eth_reg_name(s, index), value);
+ trace_imx_eth_write(DEVICE(s)->canonical_path, index,
+ imx_eth_reg_name(s, index), value);
switch (index) {
case ENET_EIR:
@@ -951,7 +953,7 @@ static ssize_t imx_fec_receive(NetClientState *nc, const uint8_t *buf,
unsigned int buf_len;
size_t size = len;
- trace_imx_fec_receive(size);
+ trace_imx_fec_receive(DEVICE(s)->canonical_path, size);
if (!s->regs[ENET_RDAR]) {
qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Unexpected packet\n",
@@ -993,7 +995,7 @@ static ssize_t imx_fec_receive(NetClientState *nc, const uint8_t *buf,
bd.length = buf_len;
size -= buf_len;
- trace_imx_fec_receive_len(addr, bd.length);
+ trace_imx_fec_receive_len(DEVICE(s)->canonical_path, addr, bd.length);
/* The last 4 bytes are the CRC. */
if (size < 4) {
@@ -1013,7 +1015,7 @@ static ssize_t imx_fec_receive(NetClientState *nc, const uint8_t *buf,
/* Last buffer in frame. */
bd.flags |= flags | ENET_BD_L;
- trace_imx_fec_receive_last(bd.flags);
+ trace_imx_fec_receive_last(DEVICE(s)->canonical_path, bd.flags);
s->regs[ENET_EIR] |= ENET_INT_RXF;
} else {
@@ -1047,7 +1049,7 @@ static ssize_t imx_enet_receive(NetClientState *nc, const uint8_t *buf,
size_t size = len;
bool shift16 = s->regs[ENET_RACC] & ENET_RACC_SHIFT16;
- trace_imx_enet_receive(size);
+ trace_imx_enet_receive(DEVICE(s)->canonical_path, size);
if (!s->regs[ENET_RDAR]) {
qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Unexpected packet\n",
@@ -1093,7 +1095,7 @@ static ssize_t imx_enet_receive(NetClientState *nc, const uint8_t *buf,
bd.length = buf_len;
size -= buf_len;
- trace_imx_enet_receive_len(addr, bd.length);
+ trace_imx_enet_receive_len(DEVICE(s)->canonical_path, addr, bd.length);
/* The last 4 bytes are the CRC. */
if (size < 4) {
@@ -1131,7 +1133,7 @@ static ssize_t imx_enet_receive(NetClientState *nc, const uint8_t *buf,
/* Last buffer in frame. */
bd.flags |= flags | ENET_BD_L;
- trace_imx_enet_receive_last(bd.flags);
+ trace_imx_enet_receive_last(DEVICE(s)->canonical_path, bd.flags);
/* Indicate that we've updated the last buffer descriptor. */
bd.last_buffer = ENET_BD_BDU;
diff --git a/hw/net/trace-events b/hw/net/trace-events
index 001a20b0e2..81af808044 100644
--- a/hw/net/trace-events
+++ b/hw/net/trace-events
@@ -444,20 +444,20 @@ i82596_ca_init(uint32_t scb, uint8_t mode, uint32_t base) "CA: Init - SCB=0x%08x
i82596_ioport_write(uint32_t addr, uint32_t val) "IO write addr=0x%08x val=0x%08x"
# imx_fec.c
-imx_phy_read_num(int phy, int configured) "read request from unconfigured phy %d (configured %d)"
-imx_phy_write_num(int phy, int configured) "write request to unconfigured phy %d (configured %d)"
+imx_phy_read_num(const char *path, int phy, int configured) "%s: read request from unconfigured phy %d (configured %d)"
+imx_phy_write_num(const char *path, int phy, int configured) "%s: write request to unconfigured phy %d (configured %d)"
imx_fec_read_bd(uint64_t addr, int flags, int len, int data) "tx_bd 0x%"PRIx64" flags 0x%04x len %d data 0x%08x"
imx_enet_read_bd(uint64_t addr, int flags, int len, int data, int options, int status) "tx_bd 0x%"PRIx64" flags 0x%04x len %d data 0x%08x option 0x%04x status 0x%04x"
-imx_eth_tx_bd_busy(void) "tx_bd ran out of descriptors to transmit"
-imx_eth_rx_bd_full(void) "RX buffer is full"
-imx_eth_read(int reg, const char *reg_name, uint32_t value) "reg[%d:%s] => 0x%08"PRIx32
-imx_eth_write(int reg, const char *reg_name, uint64_t value) "reg[%d:%s] <= 0x%08"PRIx64
-imx_fec_receive(size_t size) "len %zu"
-imx_fec_receive_len(uint64_t addr, int len) "rx_bd 0x%"PRIx64" length %d"
-imx_fec_receive_last(int last) "rx frame flags 0x%04x"
-imx_enet_receive(size_t size) "len %zu"
-imx_enet_receive_len(uint64_t addr, int len) "rx_bd 0x%"PRIx64" length %d"
-imx_enet_receive_last(int last) "rx frame flags 0x%04x"
+imx_eth_tx_bd_busy(const char *path) "%s: tx_bd ran out of descriptors to transmit"
+imx_eth_rx_bd_full(const char *path) "%s: RX buffer is full"
+imx_eth_read(const char *path, int reg, const char *reg_name, uint32_t value) "%s: reg[%d:%s] => 0x%08"PRIx32
+imx_eth_write(const char *path, int reg, const char *reg_name, uint64_t value) "%s: reg[%d:%s] <= 0x%08"PRIx64
+imx_fec_receive(const char *path, size_t size) "%s: len %zu"
+imx_fec_receive_len(const char *path, uint64_t addr, int len) "%s: rx_bd 0x%"PRIx64" length %d"
+imx_fec_receive_last(const char *path, int last) "%s: rx frame flags 0x%04x"
+imx_enet_receive(const char *path, size_t size) "%s: len %zu"
+imx_enet_receive_len(const char *path, uint64_t addr, int len) "%s, rx_bd 0x%"PRIx64" length %d"
+imx_enet_receive_last(const char *path, int last) "%s: rx frame flags 0x%04x"
# npcm7xx_emc.c
npcm7xx_emc_reset(int emc_num) "Resetting emc%d"