On Mon, 18 May 2026 22:30:51 +0530
Praveen Talari <[email protected]> wrote:
> @@ -0,0 +1,103 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM qcom_geni_spi
> +
> +#if !defined(_TRACE_QCOM_GENI_SPI_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_QCOM_GENI_SPI_H
> +
> +#include <linux/tracepoint.h>
> +
> +TRACE_EVENT(geni_spi_setup_params,
> + TP_PROTO(struct device *dev, u8 cs, u32 mode,
> + u32 mode_changed, bool cs_changed),
> + TP_ARGS(dev, cs, mode, mode_changed, cs_changed),
> +
> + TP_STRUCT__entry(__string(name, dev_name(dev))
> + __field(u8, cs)
A u8 followed by a u32 will create a 3 byte hole in the structure
layout that gets recorded onto the ring buffer. Best to move that field
to after the bool cs_changed, for better compaction.
> + __field(u32, mode)
> + __field(u32, mode_changed)
> + __field(bool, cs_changed)
> + ),
> +
> + TP_fast_assign(__assign_str(name);
> + __entry->cs = cs;
> + __entry->mode = mode;
> + __entry->mode_changed = mode_changed;
> + __entry->cs_changed = cs_changed;
> + ),
> +
> + TP_printk("%s: cs=%u mode=0x%08x mode_changed=0x%08x cs_changed=%d",
> + __get_str(name), __entry->cs, __entry->mode,
> + __entry->mode_changed, __entry->cs_changed)
> +);
> +
> +TRACE_EVENT(geni_spi_clk_cfg,
> + TP_PROTO(struct device *dev, unsigned long req_hz,
> + unsigned long sclk_hz, unsigned int clk_idx,
> + unsigned int clk_div, unsigned int bpw),
> + TP_ARGS(dev, req_hz, sclk_hz, clk_idx, clk_div, bpw),
> +
> + TP_STRUCT__entry(__string(name, dev_name(dev))
__string items inject a 4 byte meta data so they are basically the same
as a u32 item on the structure. Move this to the end or after the long
words so that on 64 bit architectures you don't create a 4 byte hole
here.
-- Steve
> + __field(unsigned long, req_hz)
> + __field(unsigned long, sclk_hz)
> + __field(unsigned int, clk_idx)
> + __field(unsigned int, clk_div)
> + __field(unsigned int, bpw)
> + ),
> +
> + TP_fast_assign(__assign_str(name);
> + __entry->req_hz = req_hz;
> + __entry->sclk_hz = sclk_hz;
> + __entry->clk_idx = clk_idx;
> + __entry->clk_div = clk_div;
> + __entry->bpw = bpw;
> + ),
> +
> + TP_printk("%s: req_hz=%lu sclk_hz=%lu clk_idx=%u clk_div=%u bpw=%u",
> + __get_str(name), __entry->req_hz, __entry->sclk_hz,
> + __entry->clk_idx, __entry->clk_div, __entry->bpw)
> +);