All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gary Guo" <gary@garyguo.net>
To: "Alexandre Courbot" <acourbot@nvidia.com>, "Gary Guo" <gary@garyguo.net>
Cc: "Danilo Krummrich" <dakr@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <lossin@kernel.org>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Boqun Feng" <boqun@kernel.org>,
	"John Hubbard" <jhubbard@nvidia.com>,
	"Alistair Popple" <apopple@nvidia.com>,
	"Joel Fernandes" <joelagnelf@nvidia.com>,
	"Timur Tabi" <ttabi@nvidia.com>,
	"Eliot Courtney" <ecourtney@nvidia.com>,
	nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
	rust-for-linux@vger.kernel.org
Subject: Re: [PATCH v2 1/5] rust: add warn_on_err macro
Date: Fri, 24 Apr 2026 17:16:50 +0100	[thread overview]
Message-ID: <DI1IQE7MDV4O.5B2DVIXMX2OT@garyguo.net> (raw)
In-Reply-To: <DI1GL1FIGHO1.12VSIIQQN365T@nvidia.com>

On Fri Apr 24, 2026 at 3:35 PM BST, Alexandre Courbot wrote:
> On Thu Apr 23, 2026 at 8:34 PM JST, Gary Guo wrote:
>> On Tue Apr 21, 2026 at 7:16 AM BST, Alexandre Courbot wrote:
>>> While we already have the `warn_on` macro, a common usage pattern in
>>> Rust is to check whether a `Result` is an error. Add a helper macro that
>>> allows this.
>>>
>>> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
>>> ---
>>>  rust/kernel/bug.rs | 10 ++++++++++
>>>  1 file changed, 10 insertions(+)
>>>
>>> diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs
>>> index ed943960f851..2fefc0aeef81 100644
>>> --- a/rust/kernel/bug.rs
>>> +++ b/rust/kernel/bug.rs
>>> @@ -130,3 +130,13 @@ macro_rules! warn_on {
>>>          cond
>>>      }};
>>>  }
>>> +
>>> +/// Report a warning if `res` is an error and return it unmodified.
>>> +#[macro_export]
>>> +macro_rules! warn_on_err {
>>> +    ($res:expr) => {{
>>> +        let res = $res;
>>> +        let _ = $crate::warn_on!(res.is_err());
>>> +        res
>>> +    }};
>>> +}
>>
>>
>> I think `warn_on_err` could just be expressed as
>>
>>     res.inspect_err(|_| warn_on!(true))
>
> This would turn the verbose error message into something like
>
>   [true] module.rs
>
> I.e. the expression passed as argument won't be printed.
>
> That being said, my version has the exact same problem and I don't see
> how we can fix this without splitting `warn_on` and making it more
> complex.
>
> Since this was done as a small convenience, I think I will just remove
> this from this patchset and revisit later as a separate series.

Something like this?

#[macro_export]
macro_rules! warn {
    () => {{
        const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);

        $crate::warn_flags!(file!(), WARN_ON_FLAGS);
    }}
    ($msg:expr) => {{
        #[cfg(CONFIG_DEBUG_BUGVERBOSE_DETAILED)]
        const _COND_STR: &str = concat!("[", $msg, "] ", file!());
        #[cfg(not(CONFIG_DEBUG_BUGVERBOSE_DETAILED))]
        const _COND_STR: &str = file!();

        const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);

        $crate::warn_flags!(_COND_STR, WARN_ON_FLAGS);
    }};
}

#[macro_export]
macro_rules! warn_on {
    ($cond:expr) => {{
        let cond = $cond;
        if cond {
            warn!(stringify!($cond));
        }
        cond
    }};
}

Then you can just use a `warn!()` with custom message.

Best,
Gary

WARNING: multiple messages have this Message-ID (diff)
From: "Gary Guo" <gary@garyguo.net>
To: "Alexandre Courbot" <acourbot@nvidia.com>, "Gary Guo" <gary@garyguo.net>
Cc: "Danilo Krummrich" <dakr@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <lossin@kernel.org>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Boqun Feng" <boqun@kernel.org>,
	"Alistair Popple" <apopple@nvidia.com>,
	"Joel Fernandes" <joelagnelf@nvidia.com>,
	"Eliot Courtney" <ecourtney@nvidia.com>,
	nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
	rust-for-linux@vger.kernel.org
Subject: Re: [PATCH v2 1/5] rust: add warn_on_err macro
Date: Fri, 24 Apr 2026 17:16:50 +0100	[thread overview]
Message-ID: <DI1IQE7MDV4O.5B2DVIXMX2OT@garyguo.net> (raw)
In-Reply-To: <DI1GL1FIGHO1.12VSIIQQN365T@nvidia.com>

On Fri Apr 24, 2026 at 3:35 PM BST, Alexandre Courbot wrote:
> On Thu Apr 23, 2026 at 8:34 PM JST, Gary Guo wrote:
>> On Tue Apr 21, 2026 at 7:16 AM BST, Alexandre Courbot wrote:
>>> While we already have the `warn_on` macro, a common usage pattern in
>>> Rust is to check whether a `Result` is an error. Add a helper macro that
>>> allows this.
>>>
>>> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
>>> ---
>>>  rust/kernel/bug.rs | 10 ++++++++++
>>>  1 file changed, 10 insertions(+)
>>>
>>> diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs
>>> index ed943960f851..2fefc0aeef81 100644
>>> --- a/rust/kernel/bug.rs
>>> +++ b/rust/kernel/bug.rs
>>> @@ -130,3 +130,13 @@ macro_rules! warn_on {
>>>          cond
>>>      }};
>>>  }
>>> +
>>> +/// Report a warning if `res` is an error and return it unmodified.
>>> +#[macro_export]
>>> +macro_rules! warn_on_err {
>>> +    ($res:expr) => {{
>>> +        let res = $res;
>>> +        let _ = $crate::warn_on!(res.is_err());
>>> +        res
>>> +    }};
>>> +}
>>
>>
>> I think `warn_on_err` could just be expressed as
>>
>>     res.inspect_err(|_| warn_on!(true))
>
> This would turn the verbose error message into something like
>
>   [true] module.rs
>
> I.e. the expression passed as argument won't be printed.
>
> That being said, my version has the exact same problem and I don't see
> how we can fix this without splitting `warn_on` and making it more
> complex.
>
> Since this was done as a small convenience, I think I will just remove
> this from this patchset and revisit later as a separate series.

Something like this?

#[macro_export]
macro_rules! warn {
    () => {{
        const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);

        $crate::warn_flags!(file!(), WARN_ON_FLAGS);
    }}
    ($msg:expr) => {{
        #[cfg(CONFIG_DEBUG_BUGVERBOSE_DETAILED)]
        const _COND_STR: &str = concat!("[", $msg, "] ", file!());
        #[cfg(not(CONFIG_DEBUG_BUGVERBOSE_DETAILED))]
        const _COND_STR: &str = file!();

        const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);

        $crate::warn_flags!(_COND_STR, WARN_ON_FLAGS);
    }};
}

#[macro_export]
macro_rules! warn_on {
    ($cond:expr) => {{
        let cond = $cond;
        if cond {
            warn!(stringify!($cond));
        }
        cond
    }};
}

Then you can just use a `warn!()` with custom message.

Best,
Gary

  reply	other threads:[~2026-04-24 16:16 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-21  6:16 [PATCH v2 0/5] gpu: nova-core: run unload sequence upon unbinding Alexandre Courbot
2026-04-21  6:16 ` Alexandre Courbot
2026-04-21  6:16 ` [PATCH v2 1/5] rust: add warn_on_err macro Alexandre Courbot
2026-04-21  6:16   ` Alexandre Courbot
2026-04-21  7:07   ` Eliot Courtney
2026-04-21  7:07     ` Eliot Courtney
2026-04-23 11:34   ` Gary Guo
2026-04-23 11:34     ` Gary Guo
2026-04-24 14:35     ` Alexandre Courbot
2026-04-24 14:35       ` Alexandre Courbot
2026-04-24 16:16       ` Gary Guo [this message]
2026-04-24 16:16         ` Gary Guo
2026-04-25  3:04         ` Alexandre Courbot
2026-04-25  3:04           ` Alexandre Courbot
2026-04-21  6:16 ` [PATCH v2 2/5] gpu: nova-core: use " Alexandre Courbot
2026-04-21  6:16   ` Alexandre Courbot
2026-04-21  7:09   ` Eliot Courtney
2026-04-21  7:09     ` Eliot Courtney
2026-04-21  6:16 ` [PATCH v2 3/5] gpu: nova-core: do not import firmware commands into GSP command module Alexandre Courbot
2026-04-21  6:16   ` Alexandre Courbot
2026-04-21  8:58   ` Eliot Courtney
2026-04-21  8:58     ` Eliot Courtney
2026-04-21  6:16 ` [PATCH v2 4/5] gpu: nova-core: send UNLOADING_GUEST_DRIVER GSP command upon unloading Alexandre Courbot
2026-04-21  6:16   ` Alexandre Courbot
2026-04-21  9:42   ` Eliot Courtney
2026-04-21  9:42     ` Eliot Courtney
2026-04-21 14:27     ` Alexandre Courbot
2026-04-21 14:27       ` Alexandre Courbot
2026-04-22 10:47       ` Alexandre Courbot
2026-04-22 10:47         ` Alexandre Courbot
2026-04-23  2:32         ` Eliot Courtney
2026-04-23  2:32           ` Eliot Courtney
2026-04-25  2:40           ` Alexandre Courbot
2026-04-25  2:40             ` Alexandre Courbot
2026-04-21  6:16 ` [PATCH v2 5/5] gpu: nova-core: run Booter Unloader and FWSEC-SB upon unbinding Alexandre Courbot
2026-04-21  6:16   ` Alexandre Courbot
2026-04-22  6:01   ` Eliot Courtney
2026-04-22  6:01     ` Eliot Courtney
2026-04-22 10:46     ` Alexandre Courbot
2026-04-22 10:46       ` Alexandre Courbot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DI1IQE7MDV4O.5B2DVIXMX2OT@garyguo.net \
    --to=gary@garyguo.net \
    --cc=a.hindborg@kernel.org \
    --cc=acourbot@nvidia.com \
    --cc=airlied@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=apopple@nvidia.com \
    --cc=bhelgaas@google.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=dakr@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=ecourtney@nvidia.com \
    --cc=jhubbard@nvidia.com \
    --cc=joelagnelf@nvidia.com \
    --cc=kwilczynski@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=simona@ffwll.ch \
    --cc=tmgross@umich.edu \
    --cc=ttabi@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.