Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp6717428imm; Tue, 24 Jul 2018 01:37:51 -0700 (PDT) X-Google-Smtp-Source: AAOMgpedDP2UwznIE1d3s75zuFCPGcmqnuDrtHh6lPBA4oNAAaJc5wCxlnC5nlItS7WbBEBr6GaK X-Received: by 2002:a63:f953:: with SMTP id q19-v6mr15103684pgk.292.1532421471320; Tue, 24 Jul 2018 01:37:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532421471; cv=none; d=google.com; s=arc-20160816; b=Qa7sM/Xow8wbFuUvz4aFK/v6VQYlAUqYisq7T5wCB1HHq30T+XkBl6BpflEJOg93op CvqsZB3ZU9sKUOnkiMrIv3qi59hQaK3XsZ9c+YX2usN+imTHlheFqgfoHoA5ptTDL8yv 3adwRE/XlfUqaParAAt3VeAHX1dbWgjOHi8PZEtia5SKH6XOOh3TsUCY8sJN3slQb516 1ySoUc4g4iXTtClVEhoGvaZ2TJPcRs+7H3KWTeR1/ExVOWoDoKx2bsAeMK1v51DGKt43 dgfbGMVIDoHC2JBkGi0i8mlmAoOLrv1WbD1lZAIZyE2R9BwzKJyKKyte6sexwuYW9ESj 4lZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=a+Rg4ZM7c+KXKkcSKr742BIygyHUIg4DOG0dYKCtwlk=; b=p3kGOHXL6zpSeNCDTFR4hGx3LkWYPfwbOJw/Gxi35Jv427TDPEBqZSPWBMCCpxj8M2 0VylsjGSc0bHH3yuLLb0g5ZKM/ffQ7IVmOJnJjTRX4p9T7dkNgsgT+qthWfzlFmFgpFt TzfwdL9WetJy/XRh4t8M4e6LXuCjYhdSE4bokLcYokYMveG2R1q0EgBkJArdkXBOpGaI 5Rfvgo5/EQzAjbdPVVW91DaKHRxS6X7fkwnlXFL2e4cnLsDinSSPQoQa3Z68AAjUhClI Oe/TwsP1otmj4CcUWjPFhStFumGk9mGwSSMpOQqjmUEn0m9Xtts4Pd/JmLbTypiivXZs yT4A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z4-v6si9602827pgv.621.2018.07.24.01.37.36; Tue, 24 Jul 2018 01:37:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388630AbeGXJl5 (ORCPT + 99 others); Tue, 24 Jul 2018 05:41:57 -0400 Received: from foss.arm.com ([217.140.101.70]:45188 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388531AbeGXJl5 (ORCPT ); Tue, 24 Jul 2018 05:41:57 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 87F2080D; Tue, 24 Jul 2018 01:36:35 -0700 (PDT) Received: from edgewater-inn.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 58D843F237; Tue, 24 Jul 2018 01:36:35 -0700 (PDT) Received: by edgewater-inn.cambridge.arm.com (Postfix, from userid 1000) id E74B81AE3B5E; Tue, 24 Jul 2018 09:36:34 +0100 (BST) Date: Tue, 24 Jul 2018 09:36:34 +0100 From: Will Deacon To: Vivek Gautam Cc: joro@8bytes.org, robh+dt@kernel.org, robin.murphy@arm.com, andy.gross@linaro.org, mark.rutland@arm.com, iommu@lists.linux-foundation.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, tfiga@chromium.org, sricharan@codeaurora.org, linux-arm-msm@vger.kernel.org, david.brown@linaro.org, linux-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 3/3] iommu/arm-smmu: Error out only if not enough context interrupts Message-ID: <20180724083633.GA19324@arm.com> References: <20180719175356.14753-1-vivek.gautam@codeaurora.org> <20180719175356.14753-4-vivek.gautam@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180719175356.14753-4-vivek.gautam@codeaurora.org> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 19, 2018 at 11:23:56PM +0530, Vivek Gautam wrote: > Currently we check if the number of context banks is not equal to > num_context_interrupts. However, there are booloaders such as, one > on sdm845 that reserves few context banks and thus kernel views > less than the total available context banks. > So, although the hardware definition in device tree would mention > the correct number of context interrupts, this number can be > greater than the number of context banks visible to smmu in kernel. > We should therefore error out only when the number of context banks > is greater than the available number of context interrupts. > > Signed-off-by: Vivek Gautam > Suggested-by: Tomasz Figa > Cc: Robin Murphy > Cc: Will Deacon > --- > drivers/iommu/arm-smmu.c | 19 +++++++++++++------ > 1 file changed, 13 insertions(+), 6 deletions(-) > > diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c > index 7c69736a30f8..4cb53bf4f423 100644 > --- a/drivers/iommu/arm-smmu.c > +++ b/drivers/iommu/arm-smmu.c > @@ -2229,12 +2229,19 @@ static int arm_smmu_device_probe(struct platform_device *pdev) > if (err) > return err; > > - if (smmu->version == ARM_SMMU_V2 && > - smmu->num_context_banks != smmu->num_context_irqs) { > - dev_err(dev, > - "found only %d context interrupt(s) but %d required\n", > - smmu->num_context_irqs, smmu->num_context_banks); > - return -ENODEV; > + if (smmu->version == ARM_SMMU_V2) { > + if (smmu->num_context_banks > smmu->num_context_irqs) { > + dev_err(dev, > + "found only %d context irq(s) but %d required\n", > + smmu->num_context_irqs, smmu->num_context_banks); > + return -ENODEV; > + } else if (smmu->num_context_banks < smmu->num_context_irqs) { > + /* loose extra context interrupts */ > + dev_notice(dev, > + "found %d context irq(s) but only %d required\n", > + smmu->num_context_irqs, smmu->num_context_banks); > + smmu->num_context_irqs = smmu->num_context_banks; > + } I don't see the utility in the new message. Can you simplify with the patch below on top? It's a bit weird that we only decide to ignore the extra irqs after calling platform_get_irq() on them, but that seems to be harmless. Will --->8 diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c index aa46c1ed5bf9..5349e22b5c78 100644 --- a/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c @@ -2109,13 +2109,10 @@ static int arm_smmu_device_probe(struct platform_device *pdev) "found only %d context irq(s) but %d required\n", smmu->num_context_irqs, smmu->num_context_banks); return -ENODEV; - } else if (smmu->num_context_banks < smmu->num_context_irqs) { - /* loose extra context interrupts */ - dev_notice(dev, - "found %d context irq(s) but only %d required\n", - smmu->num_context_irqs, smmu->num_context_banks); - smmu->num_context_irqs = smmu->num_context_banks; } + + /* Ignore superfluous interrupts */ + smmu->num_context_irqs = smmu->num_context_banks; } for (i = 0; i < smmu->num_global_irqs; ++i) {