Re: [PATCH v2 1/7] rust_binder: Add dynamic debug logging mask
From: Greg Kroah-Hartman
Date: Fri Jul 10 2026 - 11:00:44 EST
On Fri, Jul 10, 2026 at 02:32:52PM +0000, Jahnavi MN via B4 Relay wrote:
> From: Jahnavi MN <jahnavimn@xxxxxxxxxx>
>
> Implement a dynamic debug logging mask (`debug_mask`) for the
> `rust_binder` module to allow dynamic runtime configuration of log
> levels. This enables parity with the legacy C driver's debug mask.
>
> Since the Rust `module!` macro in the current kernel build does not yet
> support declaring module parameters directly in Rust, we define the
> `debug_mask` variable in a C companion file to expose it to the kernel
> runtime and import it using FFI with volatile reads.
>
> To verify the setup, instrument process lifecycle events (open, flush,
> and release) in `process.rs` under the new `BINDER_DEBUG_OPEN_CLOSE`
> logging mask. These entry-point events are chosen for initial validation
> because they represent the start of the Binder lifecycle and occur
> at low frequency, allowing simple runtime verification of the dynamic
> toggle without log noise.
>
> Signed-off-by: Jahnavi MN <jahnavimn@xxxxxxxxxx>
> ---
> drivers/android/binder/debug.rs | 80 ++++++++++++++++++++++++++++++
> drivers/android/binder/process.rs | 7 ++-
> drivers/android/binder/rust_binder_main.rs | 2 +
> drivers/android/binder/rust_binderfs.c | 3 ++
> rust/kernel/task.rs | 7 +++
> 5 files changed, 98 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/android/binder/debug.rs b/drivers/android/binder/debug.rs
> new file mode 100644
> index 000000000000..da48bce3df54
> --- /dev/null
> +++ b/drivers/android/binder/debug.rs
> @@ -0,0 +1,80 @@
> +// SPDX-License-Identifier: GPL-2.0
> +// Copyright (C) 2026 Google LLC.
> +
> +//! Binder debugging helpers.
> +
> +#![allow(dead_code)]
> +
> +kernel::impl_flags!(
> + /// Represents multiple debug mask flags.
> + #[derive(Debug, Clone, Default, Copy, PartialEq, Eq)]
> + pub struct DebugMasks(u32);
> +
> + /// Represents a single debug mask category.
> + #[derive(Debug, Clone, Copy, PartialEq, Eq)]
> + pub enum DebugMask {
> + UserError = 1 << 0,
> + FailedTransaction = 1 << 1,
> + DeadTransaction = 1 << 2,
> + OpenClose = 1 << 3,
> + DeadBinder = 1 << 4,
> + DeathNotification = 1 << 5,
> + ReadWrite = 1 << 6,
> + UserRefs = 1 << 7,
> + Threads = 1 << 8,
> + Transaction = 1 << 9,
> + TransactionComplete = 1 << 10,
> + FreeBuffer = 1 << 11,
> + InternalRefs = 1 << 12,
> + PriorityCap = 1 << 13,
> + Spinlocks = 1 << 14,
Not an objection, but don't we have the equivalent of the BIT() macro in
rust? I think that's what this should be using if we do...
thanks,
greg k-h