* [PATCH V3 0/2] Use of devname for interrupt descriptions and tracepoint support for smp2p
@ 2024-06-27 10:48 Sudeepgoud Patil
2024-06-27 10:48 ` [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions Sudeepgoud Patil
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Sudeepgoud Patil @ 2024-06-27 10:48 UTC (permalink / raw)
To: quic_bjorande, andersson, quic_clew, mathieu.poirier
Cc: linux-kernel, quic_deesin, quic_sudeepgo, linux-arm-msm,
linux-remoteproc
This commit enhances the smp2p driver by adding support for using the device
name in interrupt descriptions and introducing tracepoint functionality.
These improvements facilitate more effective debugging of smp2p-related issues.
The devname patch, along with the callback to print the irq chip name as the
device name and the removal of the ‘smp2p’ string from the irq request,
results in a unique interrupt description.
Tracepoint functionality captures essential details such as subsystem name,
negotiation specifics, supported features, bit changes, and subsystem restart
activity. These enhancements significantly improve debugging capabilities
for inter-subsystem issues.
Changes in v3:
- Updated patch to use devname for interrupt descriptions with a different approach.
- Modified tracepoint patch by removing remote_pid field from all tracepoints.
- Using SMP2P_FEATURE_SSR_ACK definition from smp2p.c instead of redefiniton.
- Link to v2: https://lore.kernel.org/all/20240611123351.3813190-1-quic_sudeepgo@quicinc.com
Changes in v2:
- Added support to include the remote name in the smp2p IRQ devname, allowing for remote PID-name mapping
- Mapped the remote PID (Process ID) along with the remote name in tracepoints, as suggested by Chris
- Modified to capture all `out->features` instead of just the `ssr_ack`, following Chris's recommendation
- Expanded the commit description to provide additional context
- Link to v1: https://lore.kernel.org/all/20240429075528.1723133-1-quic_sudeepgo@quicinc.com
Chris Lew (1):
soc: qcom: smp2p: Use devname for interrupt descriptions
Sudeepgoud Patil (1):
soc: qcom: smp2p: Introduce tracepoint support
drivers/soc/qcom/Makefile | 1 +
drivers/soc/qcom/smp2p.c | 20 ++++++-
drivers/soc/qcom/trace-smp2p.h | 98 ++++++++++++++++++++++++++++++++++
3 files changed, 118 insertions(+), 1 deletion(-)
create mode 100644 drivers/soc/qcom/trace-smp2p.h
--
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions 2024-06-27 10:48 [PATCH V3 0/2] Use of devname for interrupt descriptions and tracepoint support for smp2p Sudeepgoud Patil @ 2024-06-27 10:48 ` Sudeepgoud Patil 2024-06-29 13:03 ` Konrad Dybcio ` (2 more replies) 2024-06-27 10:48 ` [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support Sudeepgoud Patil 2024-07-03 3:37 ` (subset) [PATCH V3 0/2] Use of devname for interrupt descriptions and tracepoint support for smp2p Bjorn Andersson 2 siblings, 3 replies; 10+ messages in thread From: Sudeepgoud Patil @ 2024-06-27 10:48 UTC (permalink / raw) To: quic_bjorande, andersson, quic_clew, mathieu.poirier Cc: linux-kernel, quic_deesin, quic_sudeepgo, linux-arm-msm, linux-remoteproc, Konrad Dybcio From: Chris Lew <quic_clew@quicinc.com> When using /proc/interrupts to collect statistics on smp2p interrupt counts, it is hard to distinguish the different instances of smp2p from each other. For example to debug a processor boot issue, the ready and handover interrupts are checked for sanity to ensure the firmware reached a specific initialization stage. Remove "smp2p" string from the irq request so that the irq will default to the device name. Add an .irq_print_chip() callback to print the irq chip name as the device name. These two changes allow for a unique name to be used in /proc/interrupts as shown below. / # cat /proc/interrupts | grep smp2p 18: ... ipcc 196610 Edge smp2p-adsp 20: ... ipcc 131074 Edge smp2p-modem 170: ... smp2p-modem 1 Edge q6v5 ready 178: ... smp2p-adsp 1 Edge q6v5 ready Signed-off-by: Chris Lew <quic_clew@quicinc.com> --- drivers/soc/qcom/smp2p.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c index a21241cbeec7..696c2a8387d0 100644 --- a/drivers/soc/qcom/smp2p.c +++ b/drivers/soc/qcom/smp2p.c @@ -16,6 +16,7 @@ #include <linux/platform_device.h> #include <linux/pm_wakeirq.h> #include <linux/regmap.h> +#include <linux/seq_file.h> #include <linux/soc/qcom/smem.h> #include <linux/soc/qcom/smem_state.h> #include <linux/spinlock.h> @@ -353,11 +354,19 @@ static int smp2p_set_irq_type(struct irq_data *irqd, unsigned int type) return 0; } +static void smp2p_irq_print_chip(struct irq_data *irqd, struct seq_file *p) +{ + struct smp2p_entry *entry = irq_data_get_irq_chip_data(irqd); + + seq_printf(p, " %8s", dev_name(entry->smp2p->dev)); +} + static struct irq_chip smp2p_irq_chip = { .name = "smp2p", .irq_mask = smp2p_mask_irq, .irq_unmask = smp2p_unmask_irq, .irq_set_type = smp2p_set_irq_type, + .irq_print_chip = smp2p_irq_print_chip, }; static int smp2p_irq_map(struct irq_domain *d, @@ -617,7 +626,7 @@ static int qcom_smp2p_probe(struct platform_device *pdev) ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, qcom_smp2p_intr, IRQF_ONESHOT, - "smp2p", (void *)smp2p); + NULL, (void *)smp2p); if (ret) { dev_err(&pdev->dev, "failed to request interrupt\n"); goto unwind_interfaces; -- ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions 2024-06-27 10:48 ` [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions Sudeepgoud Patil @ 2024-06-29 13:03 ` Konrad Dybcio 2024-07-02 6:39 ` Sudeep Patil 2024-07-02 7:59 ` Dmitry Baryshkov 2 siblings, 0 replies; 10+ messages in thread From: Konrad Dybcio @ 2024-06-29 13:03 UTC (permalink / raw) To: Sudeepgoud Patil, quic_bjorande, andersson, quic_clew, mathieu.poirier Cc: linux-kernel, quic_deesin, linux-arm-msm, linux-remoteproc On 27.06.2024 12:48 PM, Sudeepgoud Patil wrote: > From: Chris Lew <quic_clew@quicinc.com> > > When using /proc/interrupts to collect statistics on smp2p interrupt > counts, it is hard to distinguish the different instances of smp2p from > each other. For example to debug a processor boot issue, the ready and > handover interrupts are checked for sanity to ensure the firmware > reached a specific initialization stage. > > Remove "smp2p" string from the irq request so that the irq will default > to the device name. Add an .irq_print_chip() callback to print the irq > chip name as the device name. These two changes allow for a unique name > to be used in /proc/interrupts as shown below. > > / # cat /proc/interrupts | grep smp2p > 18: ... ipcc 196610 Edge smp2p-adsp > 20: ... ipcc 131074 Edge smp2p-modem > 170: ... smp2p-modem 1 Edge q6v5 ready > 178: ... smp2p-adsp 1 Edge q6v5 ready > > Signed-off-by: Chris Lew <quic_clew@quicinc.com> > --- > drivers/soc/qcom/smp2p.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c > index a21241cbeec7..696c2a8387d0 100644 > --- a/drivers/soc/qcom/smp2p.c > +++ b/drivers/soc/qcom/smp2p.c > @@ -16,6 +16,7 @@ > #include <linux/platform_device.h> > #include <linux/pm_wakeirq.h> > #include <linux/regmap.h> > +#include <linux/seq_file.h> > #include <linux/soc/qcom/smem.h> > #include <linux/soc/qcom/smem_state.h> > #include <linux/spinlock.h> > @@ -353,11 +354,19 @@ static int smp2p_set_irq_type(struct irq_data *irqd, unsigned int type) > return 0; > } > > +static void smp2p_irq_print_chip(struct irq_data *irqd, struct seq_file *p) > +{ > + struct smp2p_entry *entry = irq_data_get_irq_chip_data(irqd); > + > + seq_printf(p, " %8s", dev_name(entry->smp2p->dev)); Not sure if the number is necessary but as you wish Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Konrad ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions 2024-06-27 10:48 ` [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions Sudeepgoud Patil 2024-06-29 13:03 ` Konrad Dybcio @ 2024-07-02 6:39 ` Sudeep Patil 2024-07-02 7:59 ` Dmitry Baryshkov 2 siblings, 0 replies; 10+ messages in thread From: Sudeep Patil @ 2024-07-02 6:39 UTC (permalink / raw) To: quic_bjorande, andersson, quic_clew, mathieu.poirier Cc: linux-kernel, quic_deesin, linux-arm-msm, linux-remoteproc, Konrad Dybcio On 6/27/2024 4:18 PM, Sudeepgoud Patil wrote: > From: Chris Lew <quic_clew@quicinc.com> > > When using /proc/interrupts to collect statistics on smp2p interrupt > counts, it is hard to distinguish the different instances of smp2p from > each other. For example to debug a processor boot issue, the ready and > handover interrupts are checked for sanity to ensure the firmware > reached a specific initialization stage. > > Remove "smp2p" string from the irq request so that the irq will default > to the device name. Add an .irq_print_chip() callback to print the irq > chip name as the device name. These two changes allow for a unique name > to be used in /proc/interrupts as shown below. > > / # cat /proc/interrupts | grep smp2p > 18: ... ipcc 196610 Edge smp2p-adsp > 20: ... ipcc 131074 Edge smp2p-modem > 170: ... smp2p-modem 1 Edge q6v5 ready > 178: ... smp2p-adsp 1 Edge q6v5 ready > > Signed-off-by: Chris Lew <quic_clew@quicinc.com> Signed-off-by: Sudeepgoud Patil <quic_sudeepgo@quicinc.com> > --- > drivers/soc/qcom/smp2p.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c > index a21241cbeec7..696c2a8387d0 100644 > --- a/drivers/soc/qcom/smp2p.c > +++ b/drivers/soc/qcom/smp2p.c > @@ -16,6 +16,7 @@ > #include <linux/platform_device.h> > #include <linux/pm_wakeirq.h> > #include <linux/regmap.h> > +#include <linux/seq_file.h> > #include <linux/soc/qcom/smem.h> > #include <linux/soc/qcom/smem_state.h> > #include <linux/spinlock.h> > @@ -353,11 +354,19 @@ static int smp2p_set_irq_type(struct irq_data *irqd, unsigned int type) > return 0; > } > > +static void smp2p_irq_print_chip(struct irq_data *irqd, struct seq_file *p) > +{ > + struct smp2p_entry *entry = irq_data_get_irq_chip_data(irqd); > + > + seq_printf(p, " %8s", dev_name(entry->smp2p->dev)); > +} > + > static struct irq_chip smp2p_irq_chip = { > .name = "smp2p", > .irq_mask = smp2p_mask_irq, > .irq_unmask = smp2p_unmask_irq, > .irq_set_type = smp2p_set_irq_type, > + .irq_print_chip = smp2p_irq_print_chip, > }; > > static int smp2p_irq_map(struct irq_domain *d, > @@ -617,7 +626,7 @@ static int qcom_smp2p_probe(struct platform_device *pdev) > ret = devm_request_threaded_irq(&pdev->dev, irq, > NULL, qcom_smp2p_intr, > IRQF_ONESHOT, > - "smp2p", (void *)smp2p); > + NULL, (void *)smp2p); > if (ret) { > dev_err(&pdev->dev, "failed to request interrupt\n"); > goto unwind_interfaces; ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions 2024-06-27 10:48 ` [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions Sudeepgoud Patil 2024-06-29 13:03 ` Konrad Dybcio 2024-07-02 6:39 ` Sudeep Patil @ 2024-07-02 7:59 ` Dmitry Baryshkov 2 siblings, 0 replies; 10+ messages in thread From: Dmitry Baryshkov @ 2024-07-02 7:59 UTC (permalink / raw) To: Sudeepgoud Patil Cc: quic_bjorande, andersson, quic_clew, mathieu.poirier, linux-kernel, quic_deesin, linux-arm-msm, linux-remoteproc, Konrad Dybcio On Thu, Jun 27, 2024 at 04:18:30PM GMT, Sudeepgoud Patil wrote: > From: Chris Lew <quic_clew@quicinc.com> > > When using /proc/interrupts to collect statistics on smp2p interrupt > counts, it is hard to distinguish the different instances of smp2p from > each other. For example to debug a processor boot issue, the ready and > handover interrupts are checked for sanity to ensure the firmware > reached a specific initialization stage. > > Remove "smp2p" string from the irq request so that the irq will default > to the device name. Add an .irq_print_chip() callback to print the irq > chip name as the device name. These two changes allow for a unique name > to be used in /proc/interrupts as shown below. > > / # cat /proc/interrupts | grep smp2p > 18: ... ipcc 196610 Edge smp2p-adsp > 20: ... ipcc 131074 Edge smp2p-modem > 170: ... smp2p-modem 1 Edge q6v5 ready > 178: ... smp2p-adsp 1 Edge q6v5 ready > > Signed-off-by: Chris Lew <quic_clew@quicinc.com> Your sign-off is missing. LGTM otherwise > --- > drivers/soc/qcom/smp2p.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support 2024-06-27 10:48 [PATCH V3 0/2] Use of devname for interrupt descriptions and tracepoint support for smp2p Sudeepgoud Patil 2024-06-27 10:48 ` [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions Sudeepgoud Patil @ 2024-06-27 10:48 ` Sudeepgoud Patil 2024-06-28 9:22 ` Deepak Kumar Singh ` (2 more replies) 2024-07-03 3:37 ` (subset) [PATCH V3 0/2] Use of devname for interrupt descriptions and tracepoint support for smp2p Bjorn Andersson 2 siblings, 3 replies; 10+ messages in thread From: Sudeepgoud Patil @ 2024-06-27 10:48 UTC (permalink / raw) To: quic_bjorande, andersson, quic_clew, mathieu.poirier Cc: linux-kernel, quic_deesin, quic_sudeepgo, linux-arm-msm, linux-remoteproc, Konrad Dybcio This commit introduces tracepoint support for smp2p, enabling logging of communication between local and remote processors. These tracepoints include information about the remote subsystem name, negotiation details, supported features, bit change notifications, and ssr activity. These logs are useful for debugging issues between subsystems. Signed-off-by: Sudeepgoud Patil <quic_sudeepgo@quicinc.com> --- drivers/soc/qcom/Makefile | 1 + drivers/soc/qcom/smp2p.c | 9 ++++ drivers/soc/qcom/trace-smp2p.h | 98 ++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 drivers/soc/qcom/trace-smp2p.h diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile index ca0bece0dfff..30c1bf645501 100644 --- a/drivers/soc/qcom/Makefile +++ b/drivers/soc/qcom/Makefile @@ -23,6 +23,7 @@ qcom_rpmh-y += rpmh.o obj-$(CONFIG_QCOM_SMD_RPM) += rpm-proc.o smd-rpm.o obj-$(CONFIG_QCOM_SMEM) += smem.o obj-$(CONFIG_QCOM_SMEM_STATE) += smem_state.o +CFLAGS_smp2p.o := -I$(src) obj-$(CONFIG_QCOM_SMP2P) += smp2p.o obj-$(CONFIG_QCOM_SMSM) += smsm.o obj-$(CONFIG_QCOM_SOCINFO) += socinfo.o diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c index 696c2a8387d0..4aa61b0f11ad 100644 --- a/drivers/soc/qcom/smp2p.c +++ b/drivers/soc/qcom/smp2p.c @@ -161,6 +161,9 @@ struct qcom_smp2p { struct list_head outbound; }; +#define CREATE_TRACE_POINTS +#include "trace-smp2p.h" + static void qcom_smp2p_kick(struct qcom_smp2p *smp2p) { /* Make sure any updated data is written before the kick */ @@ -192,6 +195,7 @@ static void qcom_smp2p_do_ssr_ack(struct qcom_smp2p *smp2p) struct smp2p_smem_item *out = smp2p->out; u32 val; + trace_smp2p_ssr_ack(smp2p->dev); smp2p->ssr_ack = !smp2p->ssr_ack; val = out->flags & ~BIT(SMP2P_FLAGS_RESTART_ACK_BIT); @@ -214,6 +218,7 @@ static void qcom_smp2p_negotiate(struct qcom_smp2p *smp2p) smp2p->ssr_ack_enabled = true; smp2p->negotiation_done = true; + trace_smp2p_negotiate(smp2p->dev, out->features); } } @@ -252,6 +257,8 @@ static void qcom_smp2p_notify_in(struct qcom_smp2p *smp2p) status = val ^ entry->last_value; entry->last_value = val; + trace_smp2p_notify_in(entry, status, val); + /* No changes of this entry? */ if (!status) continue; @@ -415,6 +422,8 @@ static int smp2p_update_bits(void *data, u32 mask, u32 value) writel(val, entry->value); spin_unlock_irqrestore(&entry->lock, flags); + trace_smp2p_update_bits(entry, orig, val); + if (val != orig) qcom_smp2p_kick(entry->smp2p); diff --git a/drivers/soc/qcom/trace-smp2p.h b/drivers/soc/qcom/trace-smp2p.h new file mode 100644 index 000000000000..fa985a0d7615 --- /dev/null +++ b/drivers/soc/qcom/trace-smp2p.h @@ -0,0 +1,98 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM qcom_smp2p + +#if !defined(__QCOM_SMP2P_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ) +#define __QCOM_SMP2P_TRACE_H__ + +#include <linux/device.h> +#include <linux/tracepoint.h> + +TRACE_EVENT(smp2p_ssr_ack, + TP_PROTO(const struct device *dev), + TP_ARGS(dev), + TP_STRUCT__entry( + __string(dev_name, dev_name(dev)) + ), + TP_fast_assign( + __assign_str(dev_name, dev_name(dev)); + ), + TP_printk("%s: SSR detected", __get_str(dev_name)) +); + +TRACE_EVENT(smp2p_negotiate, + TP_PROTO(const struct device *dev, unsigned int features), + TP_ARGS(dev, features), + TP_STRUCT__entry( + __string(dev_name, dev_name(dev)) + __field(u32, out_features) + ), + TP_fast_assign( + __assign_str(dev_name, dev_name(dev)); + __entry->out_features = features; + ), + TP_printk("%s: state=open out_features=%s", __get_str(dev_name), + __print_flags(__entry->out_features, "|", + {SMP2P_FEATURE_SSR_ACK, "SMP2P_FEATURE_SSR_ACK"}) + ) +); + +TRACE_EVENT(smp2p_notify_in, + TP_PROTO(struct smp2p_entry *smp2p_entry, unsigned long status, u32 val), + TP_ARGS(smp2p_entry, status, val), + TP_STRUCT__entry( + __string(dev_name, dev_name(smp2p_entry->smp2p->dev)) + __string(client_name, smp2p_entry->name) + __field(unsigned long, status) + __field(u32, val) + ), + TP_fast_assign( + __assign_str(dev_name, dev_name(smp2p_entry->smp2p->dev)); + __assign_str(client_name, smp2p_entry->name); + __entry->status = status; + __entry->val = val; + ), + TP_printk("%s: %s: status:0x%0lx val:0x%0x", + __get_str(dev_name), + __get_str(client_name), + __entry->status, + __entry->val + ) +); + +TRACE_EVENT(smp2p_update_bits, + TP_PROTO(struct smp2p_entry *smp2p_entry, u32 orig, u32 val), + TP_ARGS(smp2p_entry, orig, val), + TP_STRUCT__entry( + __string(dev_name, dev_name(smp2p_entry->smp2p->dev)) + __string(client_name, smp2p_entry->name) + __field(u32, orig) + __field(u32, val) + ), + TP_fast_assign( + __assign_str(dev_name, dev_name(smp2p_entry->smp2p->dev)); + __assign_str(client_name, smp2p_entry->name); + __entry->orig = orig; + __entry->val = val; + ), + TP_printk("%s: %s: orig:0x%0x new:0x%0x", + __get_str(dev_name), + __get_str(client_name), + __entry->orig, + __entry->val + ) +); + +#endif /* __QCOM_SMP2P_TRACE_H__ */ + +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . + +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE trace-smp2p + +#include <trace/define_trace.h> -- ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support 2024-06-27 10:48 ` [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support Sudeepgoud Patil @ 2024-06-28 9:22 ` Deepak Kumar Singh 2024-06-28 17:36 ` kernel test robot 2024-07-02 8:03 ` Dmitry Baryshkov 2 siblings, 0 replies; 10+ messages in thread From: Deepak Kumar Singh @ 2024-06-28 9:22 UTC (permalink / raw) To: Sudeepgoud Patil, quic_bjorande, andersson, quic_clew, mathieu.poirier Cc: linux-kernel, linux-arm-msm, linux-remoteproc, Konrad Dybcio On 6/27/2024 4:18 PM, Sudeepgoud Patil wrote: > This commit introduces tracepoint support for smp2p, enabling > logging of communication between local and remote processors. > These tracepoints include information about the remote subsystem > name, negotiation details, supported features, bit change > notifications, and ssr activity. These logs are useful for > debugging issues between subsystems. > > Signed-off-by: Sudeepgoud Patil <quic_sudeepgo@quicinc.com> Reviewed-by: Deepak Kumar Singh <quic_deesin@quicinc.com> > --- > drivers/soc/qcom/Makefile | 1 + > drivers/soc/qcom/smp2p.c | 9 ++++ > drivers/soc/qcom/trace-smp2p.h | 98 ++++++++++++++++++++++++++++++++++ > 3 files changed, 108 insertions(+) > create mode 100644 drivers/soc/qcom/trace-smp2p.h > > diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile > index ca0bece0dfff..30c1bf645501 100644 > --- a/drivers/soc/qcom/Makefile > +++ b/drivers/soc/qcom/Makefile > @@ -23,6 +23,7 @@ qcom_rpmh-y += rpmh.o > obj-$(CONFIG_QCOM_SMD_RPM) += rpm-proc.o smd-rpm.o > obj-$(CONFIG_QCOM_SMEM) += smem.o > obj-$(CONFIG_QCOM_SMEM_STATE) += smem_state.o > +CFLAGS_smp2p.o := -I$(src) > obj-$(CONFIG_QCOM_SMP2P) += smp2p.o > obj-$(CONFIG_QCOM_SMSM) += smsm.o > obj-$(CONFIG_QCOM_SOCINFO) += socinfo.o > diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c > index 696c2a8387d0..4aa61b0f11ad 100644 > --- a/drivers/soc/qcom/smp2p.c > +++ b/drivers/soc/qcom/smp2p.c > @@ -161,6 +161,9 @@ struct qcom_smp2p { > struct list_head outbound; > }; > > +#define CREATE_TRACE_POINTS > +#include "trace-smp2p.h" > + > static void qcom_smp2p_kick(struct qcom_smp2p *smp2p) > { > /* Make sure any updated data is written before the kick */ > @@ -192,6 +195,7 @@ static void qcom_smp2p_do_ssr_ack(struct qcom_smp2p *smp2p) > struct smp2p_smem_item *out = smp2p->out; > u32 val; > > + trace_smp2p_ssr_ack(smp2p->dev); > smp2p->ssr_ack = !smp2p->ssr_ack; > > val = out->flags & ~BIT(SMP2P_FLAGS_RESTART_ACK_BIT); > @@ -214,6 +218,7 @@ static void qcom_smp2p_negotiate(struct qcom_smp2p *smp2p) > smp2p->ssr_ack_enabled = true; > > smp2p->negotiation_done = true; > + trace_smp2p_negotiate(smp2p->dev, out->features); > } > } > > @@ -252,6 +257,8 @@ static void qcom_smp2p_notify_in(struct qcom_smp2p *smp2p) > status = val ^ entry->last_value; > entry->last_value = val; > > + trace_smp2p_notify_in(entry, status, val); > + > /* No changes of this entry? */ > if (!status) > continue; > @@ -415,6 +422,8 @@ static int smp2p_update_bits(void *data, u32 mask, u32 value) > writel(val, entry->value); > spin_unlock_irqrestore(&entry->lock, flags); > > + trace_smp2p_update_bits(entry, orig, val); > + > if (val != orig) > qcom_smp2p_kick(entry->smp2p); > > diff --git a/drivers/soc/qcom/trace-smp2p.h b/drivers/soc/qcom/trace-smp2p.h > new file mode 100644 > index 000000000000..fa985a0d7615 > --- /dev/null > +++ b/drivers/soc/qcom/trace-smp2p.h > @@ -0,0 +1,98 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. > + */ > + > +#undef TRACE_SYSTEM > +#define TRACE_SYSTEM qcom_smp2p > + > +#if !defined(__QCOM_SMP2P_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ) > +#define __QCOM_SMP2P_TRACE_H__ > + > +#include <linux/device.h> > +#include <linux/tracepoint.h> > + > +TRACE_EVENT(smp2p_ssr_ack, > + TP_PROTO(const struct device *dev), > + TP_ARGS(dev), > + TP_STRUCT__entry( > + __string(dev_name, dev_name(dev)) > + ), > + TP_fast_assign( > + __assign_str(dev_name, dev_name(dev)); > + ), > + TP_printk("%s: SSR detected", __get_str(dev_name)) > +); > + > +TRACE_EVENT(smp2p_negotiate, > + TP_PROTO(const struct device *dev, unsigned int features), > + TP_ARGS(dev, features), > + TP_STRUCT__entry( > + __string(dev_name, dev_name(dev)) > + __field(u32, out_features) > + ), > + TP_fast_assign( > + __assign_str(dev_name, dev_name(dev)); > + __entry->out_features = features; > + ), > + TP_printk("%s: state=open out_features=%s", __get_str(dev_name), > + __print_flags(__entry->out_features, "|", > + {SMP2P_FEATURE_SSR_ACK, "SMP2P_FEATURE_SSR_ACK"}) > + ) > +); > + > +TRACE_EVENT(smp2p_notify_in, > + TP_PROTO(struct smp2p_entry *smp2p_entry, unsigned long status, u32 val), > + TP_ARGS(smp2p_entry, status, val), > + TP_STRUCT__entry( > + __string(dev_name, dev_name(smp2p_entry->smp2p->dev)) > + __string(client_name, smp2p_entry->name) > + __field(unsigned long, status) > + __field(u32, val) > + ), > + TP_fast_assign( > + __assign_str(dev_name, dev_name(smp2p_entry->smp2p->dev)); > + __assign_str(client_name, smp2p_entry->name); > + __entry->status = status; > + __entry->val = val; > + ), > + TP_printk("%s: %s: status:0x%0lx val:0x%0x", > + __get_str(dev_name), > + __get_str(client_name), > + __entry->status, > + __entry->val > + ) > +); > + > +TRACE_EVENT(smp2p_update_bits, > + TP_PROTO(struct smp2p_entry *smp2p_entry, u32 orig, u32 val), > + TP_ARGS(smp2p_entry, orig, val), > + TP_STRUCT__entry( > + __string(dev_name, dev_name(smp2p_entry->smp2p->dev)) > + __string(client_name, smp2p_entry->name) > + __field(u32, orig) > + __field(u32, val) > + ), > + TP_fast_assign( > + __assign_str(dev_name, dev_name(smp2p_entry->smp2p->dev)); > + __assign_str(client_name, smp2p_entry->name); > + __entry->orig = orig; > + __entry->val = val; > + ), > + TP_printk("%s: %s: orig:0x%0x new:0x%0x", > + __get_str(dev_name), > + __get_str(client_name), > + __entry->orig, > + __entry->val > + ) > +); > + > +#endif /* __QCOM_SMP2P_TRACE_H__ */ > + > +#undef TRACE_INCLUDE_PATH > +#define TRACE_INCLUDE_PATH . > + > +#undef TRACE_INCLUDE_FILE > +#define TRACE_INCLUDE_FILE trace-smp2p > + > +#include <trace/define_trace.h> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support 2024-06-27 10:48 ` [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support Sudeepgoud Patil 2024-06-28 9:22 ` Deepak Kumar Singh @ 2024-06-28 17:36 ` kernel test robot 2024-07-02 8:03 ` Dmitry Baryshkov 2 siblings, 0 replies; 10+ messages in thread From: kernel test robot @ 2024-06-28 17:36 UTC (permalink / raw) To: Sudeepgoud Patil, quic_bjorande, andersson, quic_clew, mathieu.poirier Cc: oe-kbuild-all, linux-kernel, quic_deesin, quic_sudeepgo, linux-arm-msm, linux-remoteproc, Konrad Dybcio Hi Sudeepgoud, kernel test robot noticed the following build errors: [auto build test ERROR on linus/master] [also build test ERROR on v6.10-rc5 next-20240627] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Sudeepgoud-Patil/soc-qcom-smp2p-Use-devname-for-interrupt-descriptions/20240628-061654 base: linus/master patch link: https://lore.kernel.org/r/20240627104831.4176799-3-quic_sudeepgo%40quicinc.com patch subject: [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support config: arc-allmodconfig (https://download.01.org/0day-ci/archive/20240629/202406290037.KaJgVUWB-lkp@intel.com/config) compiler: arceb-elf-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240629/202406290037.KaJgVUWB-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202406290037.KaJgVUWB-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from include/trace/trace_events.h:419, from include/trace/define_trace.h:102, from drivers/soc/qcom/trace-smp2p.h:98, from drivers/soc/qcom/smp2p.c:165: >> drivers/soc/qcom/./trace-smp2p.h:25:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 25 | ); | ^~ In file included from include/trace/trace_events.h:375: include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h: In function 'trace_event_raw_event_smp2p_ssr_ack': >> drivers/soc/qcom/./trace-smp2p.h:22:17: error: '__assign_str' undeclared (first use in this function) 22 | __assign_str(dev_name, dev_name(dev)); | ^~~~~~~~~~~~ include/trace/trace_events.h:402:11: note: in definition of macro 'DECLARE_EVENT_CLASS' 402 | { assign; } \ | ^~~~~~ include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS' 44 | PARAMS(assign), \ | ^~~~~~ drivers/soc/qcom/./trace-smp2p.h:15:1: note: in expansion of macro 'TRACE_EVENT' 15 | TRACE_EVENT(smp2p_ssr_ack, | ^~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:21:9: note: in expansion of macro 'TP_fast_assign' 21 | TP_fast_assign( | ^~~~~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:22:17: note: each undeclared identifier is reported only once for each function it appears in 22 | __assign_str(dev_name, dev_name(dev)); | ^~~~~~~~~~~~ include/trace/trace_events.h:402:11: note: in definition of macro 'DECLARE_EVENT_CLASS' 402 | { assign; } \ | ^~~~~~ include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS' 44 | PARAMS(assign), \ | ^~~~~~ drivers/soc/qcom/./trace-smp2p.h:15:1: note: in expansion of macro 'TRACE_EVENT' 15 | TRACE_EVENT(smp2p_ssr_ack, | ^~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:21:9: note: in expansion of macro 'TP_fast_assign' 21 | TP_fast_assign( | ^~~~~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h: At top level: drivers/soc/qcom/./trace-smp2p.h:42:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 42 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h: In function 'trace_event_raw_event_smp2p_negotiate': drivers/soc/qcom/./trace-smp2p.h:35:17: error: '__assign_str' undeclared (first use in this function) 35 | __assign_str(dev_name, dev_name(dev)); | ^~~~~~~~~~~~ include/trace/trace_events.h:402:11: note: in definition of macro 'DECLARE_EVENT_CLASS' 402 | { assign; } \ | ^~~~~~ include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS' 44 | PARAMS(assign), \ | ^~~~~~ drivers/soc/qcom/./trace-smp2p.h:27:1: note: in expansion of macro 'TRACE_EVENT' 27 | TRACE_EVENT(smp2p_negotiate, | ^~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:34:9: note: in expansion of macro 'TP_fast_assign' 34 | TP_fast_assign( | ^~~~~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h: At top level: drivers/soc/qcom/./trace-smp2p.h:65:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 65 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:65:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 65 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h: In function 'trace_event_raw_event_smp2p_notify_in': drivers/soc/qcom/./trace-smp2p.h:54:17: error: '__assign_str' undeclared (first use in this function) 54 | __assign_str(dev_name, dev_name(smp2p_entry->smp2p->dev)); | ^~~~~~~~~~~~ include/trace/trace_events.h:402:11: note: in definition of macro 'DECLARE_EVENT_CLASS' 402 | { assign; } \ | ^~~~~~ include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS' 44 | PARAMS(assign), \ | ^~~~~~ drivers/soc/qcom/./trace-smp2p.h:44:1: note: in expansion of macro 'TRACE_EVENT' 44 | TRACE_EVENT(smp2p_notify_in, | ^~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:53:9: note: in expansion of macro 'TP_fast_assign' 53 | TP_fast_assign( | ^~~~~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h: At top level: drivers/soc/qcom/./trace-smp2p.h:88:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 88 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:88:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 88 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h: In function 'trace_event_raw_event_smp2p_update_bits': drivers/soc/qcom/./trace-smp2p.h:77:17: error: '__assign_str' undeclared (first use in this function) 77 | __assign_str(dev_name, dev_name(smp2p_entry->smp2p->dev)); | ^~~~~~~~~~~~ include/trace/trace_events.h:402:11: note: in definition of macro 'DECLARE_EVENT_CLASS' 402 | { assign; } \ | ^~~~~~ include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS' 44 | PARAMS(assign), \ | ^~~~~~ drivers/soc/qcom/./trace-smp2p.h:67:1: note: in expansion of macro 'TRACE_EVENT' 67 | TRACE_EVENT(smp2p_update_bits, | ^~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:76:9: note: in expansion of macro 'TP_fast_assign' 76 | TP_fast_assign( | ^~~~~~~~~~~~~~ In file included from include/trace/trace_events.h:469: drivers/soc/qcom/./trace-smp2p.h: At top level: >> drivers/soc/qcom/./trace-smp2p.h:25:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 25 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:42:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 42 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:65:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 65 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:65:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 65 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:88:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 88 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:88:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 88 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | In file included from include/trace/perf.h:75, from include/trace/define_trace.h:103: >> drivers/soc/qcom/./trace-smp2p.h:25:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 25 | ); | ^~ In file included from include/trace/perf.h:7: include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h: In function 'perf_trace_smp2p_ssr_ack': >> drivers/soc/qcom/./trace-smp2p.h:22:17: error: '__assign_str' undeclared (first use in this function) 22 | __assign_str(dev_name, dev_name(dev)); | ^~~~~~~~~~~~ include/trace/perf.h:51:11: note: in definition of macro 'DECLARE_EVENT_CLASS' 51 | { assign; } \ | ^~~~~~ include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS' 44 | PARAMS(assign), \ | ^~~~~~ drivers/soc/qcom/./trace-smp2p.h:15:1: note: in expansion of macro 'TRACE_EVENT' 15 | TRACE_EVENT(smp2p_ssr_ack, | ^~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:21:9: note: in expansion of macro 'TP_fast_assign' 21 | TP_fast_assign( | ^~~~~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h: At top level: drivers/soc/qcom/./trace-smp2p.h:42:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 42 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h: In function 'perf_trace_smp2p_negotiate': drivers/soc/qcom/./trace-smp2p.h:35:17: error: '__assign_str' undeclared (first use in this function) 35 | __assign_str(dev_name, dev_name(dev)); | ^~~~~~~~~~~~ include/trace/perf.h:51:11: note: in definition of macro 'DECLARE_EVENT_CLASS' 51 | { assign; } \ | ^~~~~~ include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS' 44 | PARAMS(assign), \ | ^~~~~~ drivers/soc/qcom/./trace-smp2p.h:27:1: note: in expansion of macro 'TRACE_EVENT' 27 | TRACE_EVENT(smp2p_negotiate, | ^~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:34:9: note: in expansion of macro 'TP_fast_assign' 34 | TP_fast_assign( | ^~~~~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h: At top level: drivers/soc/qcom/./trace-smp2p.h:65:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 65 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:65:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 65 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h: In function 'perf_trace_smp2p_notify_in': drivers/soc/qcom/./trace-smp2p.h:54:17: error: '__assign_str' undeclared (first use in this function) 54 | __assign_str(dev_name, dev_name(smp2p_entry->smp2p->dev)); | ^~~~~~~~~~~~ include/trace/perf.h:51:11: note: in definition of macro 'DECLARE_EVENT_CLASS' 51 | { assign; } \ | ^~~~~~ include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS' 44 | PARAMS(assign), \ | ^~~~~~ drivers/soc/qcom/./trace-smp2p.h:44:1: note: in expansion of macro 'TRACE_EVENT' 44 | TRACE_EVENT(smp2p_notify_in, | ^~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:53:9: note: in expansion of macro 'TP_fast_assign' 53 | TP_fast_assign( | ^~~~~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h: At top level: drivers/soc/qcom/./trace-smp2p.h:88:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 88 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:88:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 88 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h: In function 'perf_trace_smp2p_update_bits': drivers/soc/qcom/./trace-smp2p.h:77:17: error: '__assign_str' undeclared (first use in this function) 77 | __assign_str(dev_name, dev_name(smp2p_entry->smp2p->dev)); | ^~~~~~~~~~~~ include/trace/perf.h:51:11: note: in definition of macro 'DECLARE_EVENT_CLASS' 51 | { assign; } \ | ^~~~~~ include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS' 44 | PARAMS(assign), \ | ^~~~~~ drivers/soc/qcom/./trace-smp2p.h:67:1: note: in expansion of macro 'TRACE_EVENT' 67 | TRACE_EVENT(smp2p_update_bits, | ^~~~~~~~~~~ drivers/soc/qcom/./trace-smp2p.h:76:9: note: in expansion of macro 'TP_fast_assign' 76 | TP_fast_assign( | ^~~~~~~~~~~~~~ In file included from include/trace/bpf_probe.h:117, from include/trace/define_trace.h:104: drivers/soc/qcom/./trace-smp2p.h: At top level: >> drivers/soc/qcom/./trace-smp2p.h:25:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 25 | ); | ^~ In file included from include/trace/bpf_probe.h:7: include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:42:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 42 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:65:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 65 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:65:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 65 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:88:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 88 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | drivers/soc/qcom/./trace-smp2p.h:88:1: error: macro "__assign_str" passed 2 arguments, but takes just 1 88 | ); | ^~ include/trace/stages/stage6_event_callback.h:34: note: macro "__assign_str" defined here 34 | #define __assign_str(dst) \ | vim +/__assign_str +25 drivers/soc/qcom/./trace-smp2p.h 14 15 TRACE_EVENT(smp2p_ssr_ack, 16 TP_PROTO(const struct device *dev), 17 TP_ARGS(dev), 18 TP_STRUCT__entry( 19 __string(dev_name, dev_name(dev)) 20 ), 21 TP_fast_assign( > 22 __assign_str(dev_name, dev_name(dev)); 23 ), 24 TP_printk("%s: SSR detected", __get_str(dev_name)) > 25 ); 26 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support 2024-06-27 10:48 ` [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support Sudeepgoud Patil 2024-06-28 9:22 ` Deepak Kumar Singh 2024-06-28 17:36 ` kernel test robot @ 2024-07-02 8:03 ` Dmitry Baryshkov 2 siblings, 0 replies; 10+ messages in thread From: Dmitry Baryshkov @ 2024-07-02 8:03 UTC (permalink / raw) To: Sudeepgoud Patil Cc: quic_bjorande, andersson, quic_clew, mathieu.poirier, linux-kernel, quic_deesin, linux-arm-msm, linux-remoteproc, Konrad Dybcio On Thu, Jun 27, 2024 at 04:18:31PM GMT, Sudeepgoud Patil wrote: > This commit introduces tracepoint support for smp2p, enabling See Documentation/process/submitting-patches.rst, "This patch". > logging of communication between local and remote processors. > These tracepoints include information about the remote subsystem > name, negotiation details, supported features, bit change > notifications, and ssr activity. These logs are useful for > debugging issues between subsystems. > > Signed-off-by: Sudeepgoud Patil <quic_sudeepgo@quicinc.com> > --- > drivers/soc/qcom/Makefile | 1 + > drivers/soc/qcom/smp2p.c | 9 ++++ > drivers/soc/qcom/trace-smp2p.h | 98 ++++++++++++++++++++++++++++++++++ > 3 files changed, 108 insertions(+) > create mode 100644 drivers/soc/qcom/trace-smp2p.h > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (subset) [PATCH V3 0/2] Use of devname for interrupt descriptions and tracepoint support for smp2p 2024-06-27 10:48 [PATCH V3 0/2] Use of devname for interrupt descriptions and tracepoint support for smp2p Sudeepgoud Patil 2024-06-27 10:48 ` [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions Sudeepgoud Patil 2024-06-27 10:48 ` [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support Sudeepgoud Patil @ 2024-07-03 3:37 ` Bjorn Andersson 2 siblings, 0 replies; 10+ messages in thread From: Bjorn Andersson @ 2024-07-03 3:37 UTC (permalink / raw) To: quic_bjorande, quic_clew, mathieu.poirier, Sudeepgoud Patil Cc: linux-kernel, quic_deesin, linux-arm-msm, linux-remoteproc On Thu, 27 Jun 2024 16:18:29 +0530, Sudeepgoud Patil wrote: > This commit enhances the smp2p driver by adding support for using the device > name in interrupt descriptions and introducing tracepoint functionality. > These improvements facilitate more effective debugging of smp2p-related issues. > > The devname patch, along with the callback to print the irq chip name as the > device name and the removal of the ‘smp2p’ string from the irq request, > results in a unique interrupt description. > > [...] Applied, thanks! [1/2] soc: qcom: smp2p: Use devname for interrupt descriptions commit: e49380c155940cb47e291a4b3fcb7fdffee6aa4d Best regards, -- Bjorn Andersson <andersson@kernel.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-07-03 3:37 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-06-27 10:48 [PATCH V3 0/2] Use of devname for interrupt descriptions and tracepoint support for smp2p Sudeepgoud Patil 2024-06-27 10:48 ` [PATCH V3 1/2] soc: qcom: smp2p: Use devname for interrupt descriptions Sudeepgoud Patil 2024-06-29 13:03 ` Konrad Dybcio 2024-07-02 6:39 ` Sudeep Patil 2024-07-02 7:59 ` Dmitry Baryshkov 2024-06-27 10:48 ` [PATCH V3 2/2] soc: qcom: smp2p: Introduce tracepoint support Sudeepgoud Patil 2024-06-28 9:22 ` Deepak Kumar Singh 2024-06-28 17:36 ` kernel test robot 2024-07-02 8:03 ` Dmitry Baryshkov 2024-07-03 3:37 ` (subset) [PATCH V3 0/2] Use of devname for interrupt descriptions and tracepoint support for smp2p Bjorn Andersson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox