From: Klaus Jensen <its@irrelevant.dk>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: qemu-devel@nongnu.org,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
qemu-arm@nongnu.org, Peter Delevoryas <pdel@fb.com>,
Peter Maydell <peter.maydell@linaro.org>,
Corey Minyard <cminyard@mvista.com>,
Padmakar Kalghatgi <p.kalghatgi@samsung.com>,
Damien Hedde <damien.hedde@greensocs.com>,
Andrew Jeffery <andrew@aj.id.au>, Joel Stanley <joel@jms.id.au>,
Arun Kumar Kashinath Agasar <arun.kka@samsung.com>,
Klaus Jensen <k.jensen@samsung.com>
Subject: Re: [RFC PATCH v2 1/6] hw/i2c/aspeed: rework raise interrupt trace event
Date: Thu, 2 Jun 2022 08:52:51 +0200 [thread overview]
Message-ID: <YpheQ1DhFcP90PYC@apples> (raw)
In-Reply-To: <0eede847-749e-9051-9913-7eda005e265f@kaod.org>
[-- Attachment #1: Type: text/plain, Size: 4818 bytes --]
On Jun 2 08:49, Cédric Le Goater wrote:
> On 6/1/22 23:08, Klaus Jensen wrote:
> > From: Klaus Jensen <k.jensen@samsung.com>
> >
> > Build a single string instead of having several parameters on the trace
> > event.
> >
> > Suggested-by: Cédric Le Goater <clg@kaod.org>
> > Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
> > ---
> > hw/i2c/aspeed_i2c.c | 55 +++++++++++++++++++++++++++++++++++----------
> > hw/i2c/trace-events | 2 +-
> > 2 files changed, 44 insertions(+), 13 deletions(-)
> >
> > diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c
> > index 5fce516517a5..576425898b09 100644
> > --- a/hw/i2c/aspeed_i2c.c
> > +++ b/hw/i2c/aspeed_i2c.c
> > @@ -21,6 +21,7 @@
> > #include "qemu/osdep.h"
> > #include "hw/sysbus.h"
> > #include "migration/vmstate.h"
> > +#include "qemu/cutils.h"
> > #include "qemu/log.h"
> > #include "qemu/module.h"
> > #include "qemu/error-report.h"
> > @@ -31,6 +32,9 @@
> > #include "hw/registerfields.h"
> > #include "trace.h"
> > +#define ASPEED_I2C_TRACE_INTR_TEMPLATE \
> > + "pktdone|nak|ack|done|normal|abnormal|"
> > +
> > static inline void aspeed_i2c_bus_raise_interrupt(AspeedI2CBus *bus)
> > {
> > AspeedI2CClass *aic = ASPEED_I2C_GET_CLASS(bus->controller);
> > @@ -38,23 +42,50 @@ static inline void aspeed_i2c_bus_raise_interrupt(AspeedI2CBus *bus)
> > uint32_t intr_ctrl_reg = aspeed_i2c_bus_intr_ctrl_offset(bus);
> > bool raise_irq;
> > - trace_aspeed_i2c_bus_raise_interrupt(bus->regs[reg_intr_sts],
> > - aspeed_i2c_bus_pkt_mode_en(bus) &&
> > - ARRAY_FIELD_EX32(bus->regs, I2CM_INTR_STS, PKT_CMD_DONE) ?
> > - "pktdone|" : "",
> > - SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, TX_NAK) ? "nak|" : "",
> > - SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, TX_ACK) ? "ack|" : "",
> > - SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, RX_DONE) ? "done|"
> > - : "",
> > - SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, NORMAL_STOP) ?
> > - "normal|" : "",
> > - SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, ABNORMAL) ? "abnormal"
> > - : "");
> > + if (trace_event_get_state_backends(TRACE_ASPEED_I2C_BUS_RAISE_INTERRUPT)) {
> > + static const size_t BUF_SIZE = strlen(ASPEED_I2C_TRACE_INTR_TEMPLATE);
> > + g_autofree char *buf = g_malloc0(BUF_SIZE);
> > +
> > + /*
> > + * Remember to update ASPEED_I2C_TRACE_INTR_TEMPLATE if you add a new
> > + * status string.
> > + */
> > +
> > + if (aspeed_i2c_bus_pkt_mode_en(bus) &&
> > + ARRAY_FIELD_EX32(bus->regs, I2CM_INTR_STS, PKT_CMD_DONE)) {
> > + pstrcat(buf, BUF_SIZE, "pktdone|");
> > + }
> > +
> > + if (SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, TX_NAK)) {
> > + pstrcat(buf, BUF_SIZE, "nak|");
> > + }
> > +
> > + if (SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, TX_ACK)) {
> > + pstrcat(buf, BUF_SIZE, "ack|");
> > + }
> > +
> > + if (SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, RX_DONE)) {
> > + pstrcat(buf, BUF_SIZE, "done|");
> > + }
> > +
> > + if (SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, NORMAL_STOP)) {
> > + pstrcat(buf, BUF_SIZE, "normal|");
> > + }
> > +
> > + if (SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, ABNORMAL)) {
> > + pstrcat(buf, BUF_SIZE, "abnormal|");
> > + }
> > +
> > + trace_aspeed_i2c_bus_raise_interrupt(bus->regs[reg_intr_sts], buf);
> > + }
> > +
>
> How about :
>
> if (trace_event_get_state_backends(TRACE_ASPEED_I2C_BUS_RAISE_INTERRUPT)) {
> g_autofree char *buf = g_strdup_printf("%s%s%s%s%s%s",
> aspeed_i2c_bus_pkt_mode_en(bus) &&
> ARRAY_FIELD_EX32(bus->regs, I2CM_INTR_STS, PKT_CMD_DONE) ? "pktdone|" : "",
> SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, TX_NAK)? "nak|" : "",
> SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, TX_ACK), "ack|" : "",
> SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, RX_DONE) ? "done|" : "",
> SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, NORMAL_STOP)? "normal|" : "",
> SHARED_ARRAY_FIELD_EX32(bus->regs, reg_intr_sts, ABNORMAL) ? "abnormal" : "");
>
> trace_aspeed_i2c_bus_raise_interrupt(bus->regs[reg_intr_sts], buf);
> }
>
>
Uhm, yeah - that's way better :)
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2022-06-02 7:07 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-01 21:08 [RFC PATCH v2 0/6] hw/i2c: i2c slave mode support Klaus Jensen
2022-06-01 21:08 ` [RFC PATCH v2 1/6] hw/i2c/aspeed: rework raise interrupt trace event Klaus Jensen
2022-06-02 6:49 ` Cédric Le Goater
2022-06-02 6:52 ` Klaus Jensen [this message]
2022-06-01 21:08 ` [RFC PATCH v2 2/6] hw/i2c/aspeed: add DEV_ADDR in old register mode Klaus Jensen
2022-06-02 7:30 ` Cédric Le Goater
2022-06-02 7:34 ` Klaus Jensen
2022-06-01 21:08 ` [RFC PATCH v2 3/6] hw/i2c: support multiple masters Klaus Jensen
2022-06-01 22:00 ` Corey Minyard
2022-06-01 21:08 ` [RFC PATCH v2 4/6] hw/i2c: add asynchronous send Klaus Jensen
2022-06-01 22:05 ` Corey Minyard
2022-06-02 7:32 ` Cédric Le Goater
2022-06-02 7:35 ` Klaus Jensen
2022-06-01 21:08 ` [RFC PATCH v2 5/6] hw/i2c/aspeed: add slave device in old register mode Klaus Jensen
2022-06-01 21:08 ` [RFC PATCH v2 6/6] hw/misc: add a toy i2c echo device [DO NOT PULL] Klaus Jensen
2022-06-02 7:37 ` Cédric Le Goater
2022-06-02 7:52 ` [RFC PATCH v2 0/6] hw/i2c: i2c slave mode support Cédric Le Goater
2022-06-02 8:21 ` Klaus Jensen
2022-06-02 13:50 ` Cédric Le Goater
2022-06-02 14:29 ` Jae Hyun Yoo
2022-06-02 15:40 ` Cédric Le Goater
2022-06-02 19:19 ` Klaus Jensen
2022-06-03 5:31 ` Cédric Le Goater
2022-06-03 7:07 ` Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YpheQ1DhFcP90PYC@apples \
--to=its@irrelevant.dk \
--cc=Jonathan.Cameron@huawei.com \
--cc=andrew@aj.id.au \
--cc=arun.kka@samsung.com \
--cc=clg@kaod.org \
--cc=cminyard@mvista.com \
--cc=damien.hedde@greensocs.com \
--cc=joel@jms.id.au \
--cc=k.jensen@samsung.com \
--cc=p.kalghatgi@samsung.com \
--cc=pdel@fb.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).