Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752251AbeAQHRN (ORCPT + 1 other); Wed, 17 Jan 2018 02:17:13 -0500 Received: from mail-ua0-f178.google.com ([209.85.217.178]:35743 "EHLO mail-ua0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750892AbeAQHRM (ORCPT ); Wed, 17 Jan 2018 02:17:12 -0500 X-Google-Smtp-Source: ACJfBovc5TLVFF/DMxrDaihTLWQJU4ALUcp1SfCbftiDkrc9Pt46d1lpIQNggAl2XqaxktVTGMi33Q== MIME-Version: 1.0 In-Reply-To: <5A5EF672.6040304@rock-chips.com> References: <20180116132540.18939-1-jeffy.chen@rock-chips.com> <20180116132540.18939-2-jeffy.chen@rock-chips.com> <5A5EF672.6040304@rock-chips.com> From: Tomasz Figa Date: Wed, 17 Jan 2018 16:16:49 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 01/13] iommu/rockchip: Request irqs in rk_iommu_probe() To: JeffyChen Cc: linux-kernel@vger.kernel.org, Ricky Liang , Robin Murphy , simon xue , Heiko Stuebner , "open list:ARM/Rockchip SoC..." , open@263.net, "list@263.net:IOMMU DRIVERS , Joerg Roedel ," Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Wed, Jan 17, 2018 at 4:08 PM, JeffyChen wrote: > Hi Tomasz, > > Thanks for your reply. > > On 01/17/2018 12:21 PM, Tomasz Figa wrote: >> >> Hi Jeffy, >> >> Thanks for the patch. Please see my comments inline. >> >> On Tue, Jan 16, 2018 at 10:25 PM, Jeffy Chen >> wrote: >> >> Please add patch description. > > > ok, will do. >> >> >>> Suggested-by: Robin Murphy >>> Signed-off-by: Jeffy Chen >>> --- >> >> [snip] >>> >>> - for (i = 0; i < iommu->num_irq; i++) { >>> - iommu->irq[i] = platform_get_irq(pdev, i); >>> - if (iommu->irq[i] < 0) { >>> - dev_err(dev, "Failed to get IRQ, %d\n", >>> iommu->irq[i]); >>> + num_irq = of_irq_count(dev->of_node); >>> + for (i = 0; i < num_irq; i++) { >>> + irq = platform_get_irq(pdev, i); >> >> >> This lacks consistency. of_irq_count() is used for counting, but >> platform_get_irq() is used for getting. Either platform_ or of_ API >> should be used for both and I'd lean for platform_, since it's more >> general. > > hmmm, right, i was thinking of removing num_irq, and do something like: > while (nr++) { > err = platform_get_irq(dev, nr); > if (err == -EPROBE_DEFER) > break; > if (err < 0) > return err; > .... > } > > but forgot to do that.. Was there anything wrong with platform_irq_count() used by existing code? > >> >>> + if (irq < 0) { >>> + dev_err(dev, "Failed to get IRQ, %d\n", irq); >>> return -ENXIO; >>> } >>> + err = devm_request_irq(iommu->dev, irq, rk_iommu_irq, >>> + IRQF_SHARED, dev_name(dev), >>> iommu); >>> + if (err) >>> + return err; >>> } >> >> >> Looks like there is some more initialization below. Is the driver okay >> with the IRQ being potentially fired right here? (Shared IRQ handlers >> might be run at request_irq() time for testing.) >> > right, forget about that. maybe we can check iommu->domain not NULL in > rk_iommu_irq() Maybe we could just move IRQ requesting to the end of probe? Best regards, Tomasz