Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp1764921imm; Thu, 24 May 2018 00:05:53 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrSk0lpEgNkWzts+/DmGUR/0R7KvdOrRiSKm/1Uq9eOuW/PBWpu+uK5YgdbTwZzrxPAoBFg X-Received: by 2002:a65:5308:: with SMTP id m8-v6mr4963864pgq.42.1527145553396; Thu, 24 May 2018 00:05:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527145553; cv=none; d=google.com; s=arc-20160816; b=OjAjlV0kT9X4h03DEo9mwaWkxO5ExHRN1ulKc+S9suVHtrk7GxUfp8HcWisuDLriKL dfU78kxYD767jGgClSGkmDyfnXGXrAxI4FMVCiWUV4tOcRQWr1lwkIutC9KRAg54J4Z6 nvdMYQRmvl702omPaQsqbbV/QmpKGgEIvurSscLiaUyTwSMAglRhrAM1rnXSxS9wm5PT 3lGH7WWN5Lf+f+bohkmttLLWTbdoecpbK2NxIOLjs4ydBgitEsQ9YPBP1BghxPinidLh CmqQJNttSgZlkLKxuv4Huk3zvpHssiHXYdRm1byWungZe7s/FNV87cuytQ37UFImK+00 y9Jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=fu3baU66RAhFhulab6FFgeFGKT6gIHFEMR8Db0+SUSk=; b=Ihn/HvKANKj5M9H/qKDffhE6kavukkxpquePJNsdqhyM/yxT3MPKk7IInSBPgAH0hx lK8E0zSncpfHrv2No11Zg4n/ubgvxUtMVxLw8NE8/FpuREbg7YkJqj1N49US/XsyxMiI 9N2m3Xg+5KAuH2lNe2mrz8rFlaWRBs3y/gKKCZ6qPC7dgvZ+2e8d+LpCyTeBBuitC7sN 7eNdDuTKs+tsasEgp1ZXA9Lu6eN+JwG+Q819aGbmavOBjMqFWQiWKce5jEmELz8q9qAn 91g6aSt8yIWf0yx/6vyT3zjWHtK2+6AZAe9ug6YOQNOja0dXsb5YkB2kLiH8yWLxGuoh b51g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=cLvDCh6o; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n3-v6si15999084pgc.56.2018.05.24.00.05.38; Thu, 24 May 2018 00:05:53 -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; dkim=pass header.i=@linaro.org header.s=google header.b=cLvDCh6o; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935508AbeEXHFB (ORCPT + 99 others); Thu, 24 May 2018 03:05:01 -0400 Received: from mail-it0-f68.google.com ([209.85.214.68]:40846 "EHLO mail-it0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754940AbeEXHE4 (ORCPT ); Thu, 24 May 2018 03:04:56 -0400 Received: by mail-it0-f68.google.com with SMTP id j186-v6so1061484ita.5 for ; Thu, 24 May 2018 00:04:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=fu3baU66RAhFhulab6FFgeFGKT6gIHFEMR8Db0+SUSk=; b=cLvDCh6oLh1iem1ILAFd4Qc8nhwTYmHwT5D3Pm9scyqE5dntgiBcaOnsL94IMa2htv kjwbn4/2qMOWdlyfZxmJ8cDXM//QPpD6CgdHMr3ILzCDC7bbsZW38Gx+BKk1N7yL7uE8 VmbOmt9727DtOiP/XiDLWm+0xY98nFFiJ9c1k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=fu3baU66RAhFhulab6FFgeFGKT6gIHFEMR8Db0+SUSk=; b=uZiR8euFGkNTJY5MlIIme8cusnf9D98CLjaPp3pnhTu2z/YHU02nxdmnHq0RoetDpB 0Nb1rAP2Z+lQsizIke+vGmt7nekqaLEZhkt0A1mip7ntSggDuGXCje00B3f3T6d2wAv9 xIxappI3Wo3tqDGFpmEhpxjjufm6FeMeaXW+5FBGHm7WAoFNqBkfjt/Inq5gnvUi1Yu8 jsr4dWldhcoRJ2+GKs162dzs4MgcLH40AxP8+kD8ymh94qYkkgHb5VTeiLfxUTUslPbs TktLTr3Omw4XNJA/p/b4c+nmcT6xybNmK5LLGwBUxL0adP31rPOXaVYILaCwUafjOh2D zJ0g== X-Gm-Message-State: ALKqPwdT+evPdViCCX2pcf6TEcimEbK7jHsn+VXBaevjke8MRg/Bukvb wn2NS84SfwlTm1OGMcrLs/iLu+Ilv7seK/yLcxU16g== X-Received: by 2002:a24:4981:: with SMTP id e1-v6mr6637679itd.86.1527145495347; Thu, 24 May 2018 00:04:55 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a02:7353:0:0:0:0:0 with HTTP; Thu, 24 May 2018 00:04:54 -0700 (PDT) In-Reply-To: <3838f17a-2ac8-bf3f-f0b1-f69bbe17629c@nvidia.com> References: <1526639490-12167-1-git-send-email-ulf.hansson@linaro.org> <1526639490-12167-9-git-send-email-ulf.hansson@linaro.org> <5a79d3a2-d090-645b-da69-524b7e7a4d90@nvidia.com> <51f7de26-579a-8b9e-4e79-f4eee923ab38@codeaurora.org> <3838f17a-2ac8-bf3f-f0b1-f69bbe17629c@nvidia.com> From: Ulf Hansson Date: Thu, 24 May 2018 09:04:54 +0200 Message-ID: Subject: Re: [PATCH 8/9] PM / Domains: Add support for multi PM domains per device to genpd To: Jon Hunter Cc: Rajendra Nayak , Geert Uytterhoeven , Linux PM , Greg Kroah-Hartman , Kevin Hilman , "Rafael J . Wysocki" , Linux Kernel Mailing List , Todor Tomov , Viresh Kumar , linux-tegra@vger.kernel.org, Vincent Guittot , Linux ARM Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 23 May 2018 at 11:07, Jon Hunter wrote: > > On 23/05/18 07:12, Ulf Hansson wrote: > > ... > > >>>>>> Thanks for sending this. Believe it or not this has still been on my >>>>>> to-do list >>>>>> and so we definitely need a solution for Tegra. >>>>>> >>>>>> Looking at the above it appears that additional power-domains exposed >>>>>> as devices >>>>>> to the client device. So I assume that this means that the drivers for >>>>>> devices >>>>>> with multiple power-domains will need to call RPM APIs for each of >>>>>> these >>>>>> additional power-domains. Is that correct? >>>>> >>>>> >>>>> They can, but should not! >>>>> >>>>> Instead, the driver shall use device_link_add() and device_link_del(), >>>>> dynamically, depending on what PM domain that their original device >>>>> needs for the current running use case. >>>>> >>>>> In that way, they keep existing runtime PM deployment, operating on >>>>> its original device. >>>> >>>> >>>> OK, sounds good. Any reason why the linking cannot be handled by the >>>> above API? Is there a use-case where you would not want it linked? >>> >>> >>> I am guessing the linking is what would give the driver the ability to >>> decide which subset of powerdomains it actually wants to control >>> at any point using runtime PM. If we have cases wherein the driver would >>> want to turn on/off _all_ its associated powerdomains _always_ >>> then a default linking of all would help. >> >> >> First, I think we need to decide on *where* the linking should be >> done, not at both places, as that would just mess up synchronization >> of who is responsible for calling the device_link_del() at detach. >> >> Second, It would in principle be fine to call device_link_add() and >> device_link_del() as a part of the attach/detach APIs. However, there >> is a downside to such solution, which would be that the driver then >> needs call the detach API, just to do device_link_del(). Of course >> then it would also needs to call the attach API later if/when needed. >> Doing this adds unnecessary overhead - comparing to just let the >> driver call device_link_add|del() when needed. On the upside, yes, it >> would put less burden on the drivers as it then only needs to care >> about using one set of functions. >> >> Which solution do you prefer? > > > Any reason why we could not add a 'boolean' argument to the API to indicate > whether the new device should be linked? I think that I prefer the API > handles it, but I can see there could be instances where drivers may wish to > handle it themselves. Coming back to this question. Both Tegra XUSB and Qcom Camera use case, would benefit from doing the linking themselves, as it needs different PM domains to be powered on depending on the current use case - as to avoid wasting power. However, I can understand that you prefer some simplicity over optimizations, as you told us. Then, does it mean that you are insisting on extending the APIs with a boolean for linking, or are you fine with the driver to call device_link_add()? [...] Kind regards Uffe