Re: [PATCH v7 00/23] FSI device driver implementation

From: Steven Rostedt
Date: Sat Jun 03 2017 - 17:25:39 EST


On Sat, 3 Jun 2017 19:05:10 +0900
Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:

> On Wed, May 31, 2017 at 12:17:05PM -0500, Christopher Bostic wrote:
> > Hi Greg,
> >
> > Are there any further changes you require for this patch set? This has been
> > extensively tested internally and all is working as expected. Would it be
> > possible to move forward with integration in the near future? Any input
> > would be appreciated.
>
> Sorry for the delay. I just tried applying this to my tree, but got the
> following build warnings, and then errors:
>
> In file included from ./include/trace/define_trace.h:95:0,
> from ./include/trace/events/fsi.h:127,
> from drivers/fsi/fsi-core.c:27:
> ./include/trace/events/fsi.h: In function âtrace_raw_output_fsi_master_writeâ:
> ./include/trace/events/fsi.h:58:12: warning: field width specifier â*â expects argument of type âintâ, but argument 8 has type âsize_t {aka long unsigned int}â [-Wformat=]
> TP_printk("fsi%d:%02d:%02d %08x[%zd] <= {%*ph}",

>From patch 16/23:

+TRACE_EVENT(fsi_master_write,
+ TP_PROTO(const struct fsi_master *master, int link, int id,
+ uint32_t addr, size_t size, const void *data),
+ TP_ARGS(master, link, id, addr, size, data),
+ TP_STRUCT__entry(
+ __field(int, master_idx)
+ __field(int, link)
+ __field(int, id)
+ __field(__u32, addr)
+ __field(size_t, size)
+ __field(__u32, data)
+ ),
+ TP_fast_assign(
+ __entry->master_idx = master->idx;
+ __entry->link = link;
+ __entry->id = id;
+ __entry->addr = addr;
+ __entry->size = size;
+ __entry->data = 0;
+ memcpy(&__entry->data, data, size);
+ ),
+ TP_printk("fsi%d:%02d:%02d %08x[%zd] <= {%*ph}",
+ __entry->master_idx,
+ __entry->link,
+ __entry->id,
+ __entry->addr,
+ __entry->size,
+ __entry->size, &__entry->data
+ )
+);

Looks like the second __entry->size, probably needs a type cast.

Would something like:

__entry->size,
(int)__entry->size, &__entry->data

work?

I haven't looked at the others, but I'm guessing they are probably
similar issues.

-- Steve

> ^
> ./include/trace/trace_events.h:343:22: note: in definition of macro âDECLARE_EVENT_CLASSâ
> trace_seq_printf(s, print); \
> ^~~~~
> ./include/trace/trace_events.h:65:9: note: in expansion of macro âPARAMSâ
> PARAMS(print)); \
> ^~~~~~
> ./include/trace/events/fsi.h:37:1: note: in expansion of macro âTRACE_EVENTâ
> TRACE_EVENT(fsi_master_write,
> ^~~~~~~~~~~
> ./include/trace/events/fsi.h:58:2: note: in expansion of macro âTP_printkâ
> TP_printk("fsi%d:%02d:%02d %08x[%zd] <= {%*ph}",
> ^~~~~~~~~
> In file included from ./include/trace/trace_events.h:377:0,
> from ./include/trace/define_trace.h:95,
> from ./include/trace/events/fsi.h:127,
> from drivers/fsi/fsi-core.c:27:
> ./include/trace/events/fsi.h:58:44: note: format string is defined here
> TP_printk("fsi%d:%02d:%02d %08x[%zd] <= {%*ph}",
> ~^~
> In file included from ./include/trace/define_trace.h:95:0,
> from ./include/trace/events/fsi.h:127,
> from drivers/fsi/fsi-core.c:27:
> ./include/trace/events/fsi.h: In function âtrace_raw_output_fsi_master_rw_resul
> â:
> ./include/trace/events/fsi.h:95:12: warning: field width specifier â*â expects argument of type âintâ, but argument 9 has type âsize_t {aka long unsigned int}â [-Wformat=]
> TP_printk("fsi%d:%02d:%02d %08x[%zd] %s {%*ph} ret %d",
> ^
> ./include/trace/trace_events.h:343:22: note: in definition of macro âDECLARE_EVENT_CLASSâ
> trace_seq_printf(s, print); \
> ^~~~~
> ./include/trace/trace_events.h:65:9: note: in expansion of macro âPARAMSâ
> PARAMS(print)); \
> ^~~~~~
> ./include/trace/events/fsi.h:68:1: note: in expansion of macro âTRACE_EVENTâ
> TRACE_EVENT(fsi_master_rw_result,
> ^~~~~~~~~~~
> ./include/trace/events/fsi.h:95:2: note: in expansion of macro âTP_printkâ
> TP_printk("fsi%d:%02d:%02d %08x[%zd] %s {%*ph} ret %d",
> ^~~~~~~~~
> In file included from ./include/trace/trace_events.h:377:0,
> from ./include/trace/define_trace.h:95,
> from ./include/trace/events/fsi.h:127,
> from drivers/fsi/fsi-core.c:27:
> ./include/trace/events/fsi.h:95:44: note: format string is defined here
> TP_printk("fsi%d:%02d:%02d %08x[%zd] %s {%*ph} ret %d",
> ~^~
> CHK include/generated/uapi/linux/version.h
> GEN .version
> CHK include/generated/compile.h
> UPD include/generated/compile.h
> CC init/version.o
> LD init/built-in.o
> LD vmlinux.o
> MODPOST vmlinux.o
> KSYM .tmp_kallsyms1.o
> KSYM .tmp_kallsyms2.o
> LD vmlinux
> SORTEX vmlinux
> SYSMAP System.map
> CC arch/x86/boot/version.o
> Building modules, stage 2.
> VOFFSET arch/x86/boot/compressed/../voffset.h
> OBJCOPY arch/x86/boot/compressed/vmlinux.bin
> RELOCS arch/x86/boot/compressed/vmlinux.relocs
> CC arch/x86/boot/compressed/kaslr.o
> GZIP arch/x86/boot/compressed/vmlinux.bin.gz
> CC arch/x86/boot/compressed/misc.o
> MODPOST 476 modules
> WARNING: modpost: missing MODULE_LICENSE() in drivers/fsi/fsi-core.o
> see include/linux/module.h for more information
> MKPIGGY arch/x86/boot/compressed/piggy.S
> AS arch/x86/boot/compressed/piggy.o
> DATAREL arch/x86/boot/compressed/vmlinux
> LD arch/x86/boot/compressed/vmlinux
> ZOFFSET arch/x86/boot/zoffset.h
> OBJCOPY arch/x86/boot/vmlinux.bin
> AS arch/x86/boot/header.o
> LD arch/x86/boot/setup.elf
> OBJCOPY arch/x86/boot/setup.bin
> BUILD arch/x86/boot/bzImage
> Setup is 17532 bytes (padded to 17920 bytes).
> System is 5445 kB
> CRC 56d8089d
> Kernel: arch/x86/boot/bzImage is ready (#387)
> ERROR: "fsi_slave_claim_range" [drivers/fsi/fsi-master-hub.ko] undefined!
> ERROR: "fsi_slave_read" [drivers/fsi/fsi-master-hub.ko] undefined!
> ERROR: "fsi_slave_write" [drivers/fsi/fsi-master-hub.ko] undefined!
> ERROR: "fsi_slave_release_range" [drivers/fsi/fsi-master-hub.ko] undefined!
> make[1]: *** [scripts/Makefile.modpost:91: __modpost] Error 1
> make: *** [Makefile:1214: modules] Error 2
>
>
> Note, I'm using gcc 7.1.1, which might be what is showing the build warnings,
> but that doesn't explain the build errors.
>
> So obviously, I can't take this as is :(
>
> thanks,
>
> greg k-h