Re: [PATCH v3 1/5] genirq/devres: Add devm_request_threaded_irq_emsg()

From: Yangtao Li
Date: Mon Jul 03 2023 - 09:24:49 EST



On 2023/7/3 20:31, Krzysztof Kozlowski wrote:
[你通常不会收到来自 krzk@xxxxxxxxxx 的电子邮件。请访问 https://aka.ms/LearnAboutSenderIdentification,以了解这一点为什么很重要;]

On 03/07/2023 11:04, Yangtao Li wrote:
There are more than 700 calls to the devm_request_threaded_irq method.
Most drivers only request one interrupt resource, and these error
messages are basically the same. If error messages are printed
everywhere, more than 1000 lines of code can be saved by removing the
msg in the driver.

...

+int devm_request_threaded_irq_emsg(struct device *dev, unsigned int irq,
+ irq_handler_t handler, irq_handler_t thread_fn,
+ unsigned long irqflags, const char *devname,
+ void *dev_id, const char *emsg)
+{
+ int rc;
+
+ rc = devm_request_threaded_irq(dev, irq, handler, NULL, irqflags,
+ devname, dev_id);
+ if (rc && rc != -EPROBE_DEFER) {
+ dev_err(dev, "Failed to request %sinterrupt %u %s %s: %pe\n",
+ thread_fn ? "threaded " : "", irq, devname ? : dev_name(dev),
+ emsg ? : "", ERR_PTR(rc));
It is open-coding dev_err_probe(). Just use dev_err_probe instead.


How about the following? If possible, I would like to start modifying more drivers in the next version.


int devm_request_threaded_irq_emsg(struct device *dev, unsigned int irq,
                                   irq_handler_t handler, irq_handler_t thread_fn,
                                   unsigned long irqflags, const char *devname,
                                   void *dev_id, const char *emsg)
{
        int rc;

        rc = devm_request_threaded_irq(dev, irq, handler, NULL, irqflags,
                                       devname, dev_id);
        if (rc) {
                dev_err_probe(dev, rc, "Failed to request %sinterrupt %u %s %s\n",
                              thread_fn ? "threaded " : "", irq, devname ? : dev_name(dev),
                              emsg ? : "");
        }
        return rc;
}
EXPORT_SYMBOL(devm_request_threaded_irq_emsg);


Thx,

Yangtao



Best regards,
Krzysztof