Re: [PATCH v10 01/11] drm/etnaviv: Add a dedicated function to register an irq handler
From: Lucas Stach
Date: Wed Jun 21 2023 - 06:17:10 EST
Am Mittwoch, dem 21.06.2023 um 17:20 +0800 schrieb Sui Jingfeng:
> Hi,
>
> On 2023/6/21 17:07, Lucas Stach wrote:
> > Am Dienstag, dem 20.06.2023 um 17:47 +0800 schrieb Sui Jingfeng:
> > > From: Sui Jingfeng <suijingfeng@xxxxxxxxxxx>
> > >
> > > Because getting IRQ from a device is platform-dependent, PCI devices have
> > > different methods for getting an IRQ. This patch is a preparation to extend
> > > this driver for supporting the PCI devices.
> > >
> > > Cc: Lucas Stach <l.stach@xxxxxxxxxxxxxx>
> > > Cc: Christian Gmeiner <christian.gmeiner@xxxxxxxxx>
> > > Cc: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
> > > Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
> > > Cc: Daniel Vetter <daniel@xxxxxxxx>
> > > Signed-off-by: Sui Jingfeng <suijingfeng@xxxxxxxxxxx>
> > > ---
> > > drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 32 +++++++++++++++++++--------
> > > 1 file changed, 23 insertions(+), 9 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> > > index de8c9894967c..a03e81337d8f 100644
> > > --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> > > +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> > > @@ -1817,6 +1817,27 @@ static const struct of_device_id etnaviv_gpu_match[] = {
> > > };
> > > MODULE_DEVICE_TABLE(of, etnaviv_gpu_match);
> > >
> > > +static int etnaviv_gpu_register_irq(struct etnaviv_gpu *gpu, int irq)
> > > +{
> > > + struct device *dev = gpu->dev;
> > > + int err;
> > > +
> > > + if (irq < 0)
> > > + return irq;
> > > +
> > > + err = devm_request_irq(dev, irq, irq_handler, 0, dev_name(dev), gpu);
> > > + if (err) {
> > > + dev_err(dev, "failed to request irq %u: %d\n", irq, err);
> > > + return err;
> > > + }
> > > +
> > > + gpu->irq = irq;
> > > +
> > > + dev_info(dev, "irq(%d) handler registered\n", irq);
> > There is no reason to put this into the kernel log.
>
> I want to see the IRQ of the device when debugging,
>
> etnaviv actually print very less.
>
> This serve as a minimal signal to us the etnaviv_gpu_register_irq()
> function is successful at driver load time.
>
And debugging is a very different use-case than normal operation. If
it's needed at all, downgrade this to dev_dbg. This isn't interesting
information for a ordinary user of a system.
> > It's no different
> > than other resources to the driver and we don't log each one of those
> > either.
> >
> > In fact I don't see any reason for this change in the first place.
> > Effectively you are moving a single function call into a new function,
> > which doesn't seem like an improvement.
>
> This is to make the patch easy to review, each patch is only introduce a
> small function,
>
What I'm saying is that I don't see the need to introduce this function
at all. All you need to do is move platform_get_irq out into the
platform device code path. The devm_request_irq can stay where it is,
as the only difference between platform and PCI device is how the irq
number is retrieved from the platform.
Regards,
Lucas
> which is paving the way for we introducing the PCI device driver.
>
> Otherwise when we introducing the PCI device driver, the patch is looks
> ugly,
>
> It is difficult to review.
>
> > Regards,
> > Lucas
> >
> > > +
> > > + return 0;
> > > +}
> > > +
> > > static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
> > > {
> > > struct device *dev = &pdev->dev;
> > > @@ -1837,16 +1858,9 @@ static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
> > > return PTR_ERR(gpu->mmio);
> > >
> > > /* Get Interrupt: */
> > > - gpu->irq = platform_get_irq(pdev, 0);
> > > - if (gpu->irq < 0)
> > > - return gpu->irq;
> > > -
> > > - err = devm_request_irq(&pdev->dev, gpu->irq, irq_handler, 0,
> > > - dev_name(gpu->dev), gpu);
> > > - if (err) {
> > > - dev_err(dev, "failed to request IRQ%u: %d\n", gpu->irq, err);
> > > + err = etnaviv_gpu_register_irq(gpu, platform_get_irq(pdev, 0));
> > > + if (err)
> > > return err;
> > > - }
> > >
> > > /* Get Clocks: */
> > > gpu->clk_reg = devm_clk_get_optional(&pdev->dev, "reg");
>