Re: [PATCH RFC 06/11] dyndbg: make _ddebug::flags its own field
From: Gary Guo
Date: Sun Oct 11 2026 - 12:59:49 EST
On Sun Oct 11, 2026 at 1:52 PM BST, Thomas Weißschuh wrote:
> Keeping the flags as part of the bitfield prevents the usage of
> READ_ONCE()/WRITE_ONCE() with it. It also makes access from Rust
> awkward.
>
> Make it a dedicated field.
>
> The new field will stay in the exact same location in the parent
> structure.
Incorrect.
>
> No functional change.
>
> Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
> ---
> include/linux/dynamic_debug.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
> index 0b34343df594..b1ff7c0e9a5f 100644
> --- a/include/linux/dynamic_debug.h
> +++ b/include/linux/dynamic_debug.h
> @@ -51,7 +51,7 @@ struct _ddebug {
> #else
> #define _DPRINTK_FLAGS_DEFAULT 0
> #endif
> - u32 flags:8;
> + u8 flags;
This will change the layout of the struct, because it'll no longer be merged
with the previous bitfields.
The layout change can be avoided by make lineno + class explicitly take 3 bytes.
Perhaps reduce lineno to u16 and have class be a standalone u8? No kernel source
file (apart from pre-generated AMDGPU headers, which doesn't use dyndbg anyway)
have more than 65535 lines.
Alternatively we can just say the layout change is fine, as for 64-bit platforms
with jump label patching, there's padding in the struct anyway so this doesn't
grow the full struct size.
Anyhow this needs to be noted explicitly.
Best,
Gary
> #ifdef CONFIG_JUMP_LABEL
> union {
> struct static_key_true dd_key_true;