Re: [PATCH v3 3/7] rust: property: Introduce PropertyGuard

Rob Herring
2025-04-28T20:18:23Z

On Sun, Apr 27, 2025 at 03:12:18PM -0700, John Hubbard wrote:
> On 4/26/25 2:50 PM, Remo Senekowitsch wrote:
> > On Sat Apr 26, 2025 at 5:02 PM CEST, Danilo Krummrich wrote:
> > > On Sat, Apr 26, 2025 at 04:35:07PM +0200, Dirk Behme wrote:
> > > > On 26.04.25 16:19, Danilo Krummrich wrote:
> > > > > On Sat, Apr 26, 2025 at 01:08:39PM +0200, Remo Senekowitsch wrote:
> > > > > > On Sat Apr 26, 2025 at 12:15 PM CEST, Danilo Krummrich wrote:
> ...
> > > > > Why do you think it is important to force this error print by having it in
> > > > > PropertyGuard::required() and even take an additional device reference for this
> > > > > purpose, rather than leaving it to the driver when to print a message for an
> > > > > error condition that makes it fail to probe()?
> > > >
> > > > To my understanding doing the error print in "core" was proposed by
> > > > Rob [1]:
> > >
> > > That is fine, though it doesn't answer my question above. :)
> >
> > If the question is addressed to me, I don't think it is important.
> > I don't have a particular preference either way. I'm just trying to
>
> Generally, printing in libraries an lower level routines (in this case,
> "core") is undesirable. We'll do it anyway, sometimes:
>
> a) Behind a *_DEBUG configuration, to debug the core itself, or
>
> b) Desperation: hard to recover from errors, that the upper layers
> for some reason lack context to provide an adequate error
> message for.
>
> The idea is that the lower level you are in the software stack, the
> more rare printing should be.

If that's a kernel style/requirement, I've never heard that. About the
only coding style in this area I'm aware of don't print messages on
kmalloc failure because the core does. It's the same concept here.

When practically every caller is printing a message, it should go in the
called function. It's not really different than anything else we do. If
we have 2 functions commonly called in sequence, we combine them into a
single helper function.

It's a pattern we have in the C API that I'd rather not repeat with
Rust.

Rob