Hello, On Tue, Jun 27, 2023 at 03:16:52PM +0800, Yangtao Li wrote: > Ensure that all error handling branches print error information. In this > way, when this function fails, the upper-layer functions can directly > return an error code without missing debugging information. Otherwise, > the error message will be printed redundantly or missing. > > There are more than 700 calls to the devm_request_threaded_irq method. > If error messages are printed everywhere, more than 1000 lines of code > can be saved by removing the msg in the driver. > > Signed-off-by: Yangtao Li <frank.li@xxxxxxxx> > --- > kernel/irq/devres.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/kernel/irq/devres.c b/kernel/irq/devres.c > index f6e5515ee077..94039a915218 100644 > --- a/kernel/irq/devres.c > +++ b/kernel/irq/devres.c > @@ -58,8 +58,10 @@ int devm_request_threaded_irq(struct device *dev, unsigned int irq, > > dr = devres_alloc(devm_irq_release, sizeof(struct irq_devres), > GFP_KERNEL); > - if (!dr) > + if (!dr) { > + dev_err(dev, "Failed to allocate device resource data\n"); > return -ENOMEM; > + } > > if (!devname) > devname = dev_name(dev); > @@ -67,6 +69,7 @@ int devm_request_threaded_irq(struct device *dev, unsigned int irq, > rc = request_threaded_irq(irq, handler, thread_fn, irqflags, devname, > dev_id); > if (rc) { > + dev_err(dev, "Failed to request threaded irq\n"); > devres_free(dr); > return rc; > } My personal opinion is that generic allocation functions should be silent. The reason is that the consuming driver is in a better position to emit a helpful error message. While there is some room to improvment in this generic variant (by mentioning the error code and maybe also the irq number), consider a device that has up to 3 irqs and sometimes only 1. So the driver might want to handle some irq requesting silently. And also for non-optional irqs mybus:mydev: Failed to request TX irq (EBUSY) is much more helpful than mybus:mydev: Failed to request threaded irq (Hint: "threaded" is not a helpful information here either.) Yes, a message in the driver has the downside of making the kernel image (or module) bigger, but the added value is IMHO worth that. Also you might want to handle -EPROBE_DEFER and not emit a message then? (Not sure if request_threaded_irq can return that.) Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | https://www.pengutronix.de/ |
Attachment:
signature.asc
Description: PGP signature