Hi Uwe, On Mon, Jan 17, 2022 at 6:06 PM Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> wrote: > On Mon, Jan 17, 2022 at 02:08:19PM +0100, Geert Uytterhoeven wrote: > > On Mon, Jan 17, 2022 at 12:49 PM Uwe Kleine-König > > <u.kleine-koenig@xxxxxxxxxxxxxx> wrote: > > > > The logic in e.g. drivers/tty/serial/sh-sci.c and > > > > drivers/spi/spi-rspi.c could be simplified and improved (currently > > > > it doesn't handle deferred probe) if platform_get_irq_optional() > > > > would return 0 instead of -ENXIO. > > > Also for spi-rspi.c I don't see how platform_get_irq_byname_optional() > > > returning 0 instead of -ENXIO would help. Please talk in patches. [...] > This is not a simplification, just looking at the line count and the > added gotos. That's because it also improves error handling and so the > effect isn't easily spotted. Yes, it's larger because it adds currently missing error handling. > What about the following idea (in pythonic pseudo code for simplicity): No idea what you gain by throwing in a language that is irrelevant to kernel programming (why no Rust? ;-) > > > > So there are three reasons: because the absence of an optional IRQ > > > > is not an error, and thus that should not cause (a) an error code > > > > to be returned, and (b) an error message to be printed, and (c) > > > > because it can simplify the logic in device drivers. > > > > > > I don't agree to (a). If the value signaling not-found is -ENXIO or 0 > > > (or -ENODEV) doesn't matter much. I wouldn't deviate from the return > > > code semantics of platform_get_irq() just for having to check against 0 > > > instead of -ENXIO. Zero is then just another magic value. > > > > Zero is a natural magic value (also for pointers). > > Errors are always negative. > > Positive values are cookies (or pointers) associated with success. > > Yeah, the issue where we don't agree is if "not-found" is special enough > to deserve the natural magic value. For me -ENXIO is magic enough to > handle the absence of an irq line. I consider it even the better magic > value. It differs from other subsystems (clk, gpio, reset), which do return zero on not found. What's the point in having *_optional() APIs if they just return the same values as the non-optional ones? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds