On 2/15/2023 12:26 PM, Dave Hansen wrote: > On 2/15/23 12:22, Joseph, Jithu wrote: >> trace_ifs_array(cpu, *((u64 *)&before), *((u64 *)&command)); > > Uhh, you control the types in the tracepoint. Just make them compatible > so you don't need casts. will change it to: trace_ifs_array(cpu, before.array_bitmask, before.array_bank, *((u64 *)&command)); i.e will pass compatible types for array_list and array_bank. And for the last argument, we need to dump the whole 64 bits within "command" into trace output . Since the suggested change replaced the union with a struct, it is simplest to cast it to u64 needed by traceoutput. So I would prefer to keep the cast for the last argument alone. sample trace output ... <snip> bash-4562 [001] ..... 761.563749: ifs_array: cpu: 10, array_list: 00007fe0, array_bank: 0101, status: 0000000200007fe0 bash-4562 [001] ..... 761.563772: ifs_array: cpu: 10, array_list: 00007fe0, array_bank: 0002, status: 0000010200007fe0 </snip>