Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp4133789imm; Tue, 25 Sep 2018 11:56:56 -0700 (PDT) X-Google-Smtp-Source: ACcGV60ypk0Wq5cuHfxKS5lZ5xhE4osCMErciXUidFv8D5YdV1wvn2A+9BLlWo6ef5IlF26oT2tm X-Received: by 2002:a63:41c2:: with SMTP id o185-v6mr2234491pga.11.1537901816624; Tue, 25 Sep 2018 11:56:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537901816; cv=none; d=google.com; s=arc-20160816; b=v/KGZ7TDPmdzRldFos706dyiGRlvjkQZBGQ8MEuEFz/OxO4LUTuGXjfVhJMIbrTbYH mFJm5jzoAkmhe6hc75o7BHiLoiCTy4wMYYNzs4LSOjvs/0Eky1oAG/lbr2aeUjnwy70t rUrMleLFhuEuWrx0y8E65n5Vx/JLwZ+dTGI4oy+d56dc6h1SKk+VNNSsbld04tM3MSll yk15GNHQVuCaMrs1dPV7pT7jXN8EHyV+FTOsyhwxcf9UM5CbOmt+b/ro5DAF0eA2fsnf nHqVZcgPlJpyj5epxK3OslfXu0O/mpukiYWrhMLLeOIAER5fooSNCoqxmwZ26g63Nt2m wWXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=udlTNLqNI7tTI4EEMhP1//l+VW7ClLEgirf3AmE6o0c=; b=1AlSOQMwM+WDr0UWr81Pyx9C+2XJfz+maQDKsFymQLYJ64zNh9ByPZYDN1ty6X8IDW rUmo0z9/itJDYbjjt/FCuh+ek2V/Zkku6694W6O+DK5gJC5xEO66NGxhMtAcEXxKotlb xmV4oU1Vy/ndvV8nFOBOpFIZvgaw+Te+zWhscMu8rmRcZoFs5/scb5znd9J+O2s+3sAA PW0aurKE53pNiEjDdLpY8UeBvckifN0kNw+ioTsQycJvyFf4nfWjWErc0Zy0AMThc4aQ onADp0pabnvFupF/porBTBPagZqv4Amn2pPx4nLYZCCx6GRQgon5fQGAj3+ng7GS24EM i5sg== 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 b12-v6si732525pgj.87.2018.09.25.11.56.41; Tue, 25 Sep 2018 11:56:56 -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 S1727629AbeIZBEr (ORCPT + 99 others); Tue, 25 Sep 2018 21:04:47 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:57252 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727053AbeIZBEr (ORCPT ); Tue, 25 Sep 2018 21:04:47 -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 DCE4CED1; Tue, 25 Sep 2018 11:55:51 -0700 (PDT) Received: from [192.168.1.123] (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EE7163F5D3; Tue, 25 Sep 2018 11:55:47 -0700 (PDT) Subject: Re: [PATCH v16 2/5] iommu/arm-smmu: Invoke pm_runtime during probe, add/remove device To: Vivek Gautam , Will Deacon Cc: Mark Rutland , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , alex.williamson@redhat.com, Linux PM , sboyd@kernel.org, "Rafael J. Wysocki" , open list , "list@263.net:IOMMU DRIVERS" , Joerg Roedel , iommu@lists.linux-foundation.org, robh+dt , linux-arm-msm , freedreno , Tomasz Figa References: <20180830144541.17740-1-vivek.gautam@codeaurora.org> <20180830144541.17740-3-vivek.gautam@codeaurora.org> <3ccc3690-dc9d-56e7-e2d1-62e73a189bff@codeaurora.org> From: Robin Murphy Message-ID: Date: Tue, 25 Sep 2018 19:55:33 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Vivek, On 2018-09-25 6:56 AM, Vivek Gautam wrote: > Hi Robin, Will, > > On Tue, Sep 18, 2018 at 8:41 AM Vivek Gautam > wrote: >> >> Hi Robin, >> >> On Fri, Sep 7, 2018 at 3:52 PM Vivek Gautam wrote: >>> >>> On Fri, Sep 7, 2018 at 3:22 PM Tomasz Figa wrote: >>>> >>>> On Fri, Sep 7, 2018 at 6:38 PM Vivek Gautam wrote: >>>>> >>>>> Hi Tomasz, >>>>> >>>>> >>>>> On 9/7/2018 2:46 PM, Tomasz Figa wrote: >>>>>> Hi Vivek, >>>>>> >>>>>> On Thu, Aug 30, 2018 at 11:46 PM Vivek Gautam >>>>>> wrote: >>>>>>> From: Sricharan R >>>>>>> >>>>>>> The smmu device probe/remove and add/remove master device callbacks >>>>>>> gets called when the smmu is not linked to its master, that is without >>>>>>> the context of the master device. So calling runtime apis in those places >>>>>>> separately. >>>>>>> Global locks are also initialized before enabling runtime pm as the >>>>>>> runtime_resume() calls device_reset() which does tlb_sync_global() >>>>>>> that ultimately requires locks to be initialized. >>>>>>> >>>>>>> Signed-off-by: Sricharan R >>>>>>> [vivek: Cleanup pm runtime calls] >>>>>>> Signed-off-by: Vivek Gautam >>>>>>> Reviewed-by: Tomasz Figa >>>>>>> Tested-by: Srinivas Kandagatla >>>>>>> --- >>>>>>> drivers/iommu/arm-smmu.c | 89 +++++++++++++++++++++++++++++++++++++++++++----- >>>>>>> 1 file changed, 81 insertions(+), 8 deletions(-) >>>>>> [snip] >>>>>>> @@ -2215,10 +2281,17 @@ static int arm_smmu_device_remove(struct platform_device *pdev) >>>>>>> if (!bitmap_empty(smmu->context_map, ARM_SMMU_MAX_CBS)) >>>>>>> dev_err(&pdev->dev, "removing device with active domains!\n"); >>>>>>> >>>>>>> + arm_smmu_rpm_get(smmu); >>>>>>> /* Turn the thing off */ >>>>>>> writel(sCR0_CLIENTPD, ARM_SMMU_GR0_NS(smmu) + ARM_SMMU_GR0_sCR0); >>>>>>> + arm_smmu_rpm_put(smmu); >>>>>>> + >>>>>>> + if (pm_runtime_enabled(smmu->dev)) >>>>>>> + pm_runtime_force_suspend(smmu->dev); >>>>>>> + else >>>>>>> + clk_bulk_disable(smmu->num_clks, smmu->clks); >>>>>>> >>>>>>> - clk_bulk_disable_unprepare(smmu->num_clks, smmu->clks); >>>>>>> + clk_bulk_unprepare(smmu->num_clks, smmu->clks); >>>>>> Aren't we missing pm_runtime_disable() here? We'll have the enable >>>>>> count unbalanced if the driver is removed and probed again. >>>>> >>>>> pm_runtime_force_suspend() does a pm_runtime_disable() also if i am not >>>>> wrong. >>>>> And, as mentioned in a previous thread [1], we were seeing a warning >>>>> which we avoided >>>>> by keeping force_suspend(). >>>>> >>>>> [1] https://lkml.org/lkml/2018/7/8/124 >>>> >>>> I see, thanks. I didn't realize that pm_runtime_force_suspend() >>>> already disables runtime PM indeed. Sorry for the noise. >>> >>> Hi Tomasz, >>> No problem. Thanks for looking back at it. >>> >>> Hi Robin, >>> If you are fine with this series, then can you please consider giving >>> Reviewed-by, so that we are certain that this series will go in the next merge >>> window. >>> Thanks >> >> Gentle ping. >> You ack will be very helpful in letting Will pull this series for 4.20. >> Thanks. > > I would really appreciate if you could provide your ack for this series. > Or if there are any concerns, I am willing to address them. Apologies, I thought I'd replied to say I'd be getting to this shortly, but apparently not :( FWIW, "shortly" is now tomorrow - I don't *think* there's anything outstanding, but given the number of subtleties we've turned up so far I do just want one last thorough double-check to make sure. Thanks, Robin.