Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp621210imm; Wed, 23 May 2018 02:48:12 -0700 (PDT) X-Google-Smtp-Source: AB8JxZohfL3eDyyoWt8sVFBhzwtdKGY7RHQONnRUf1BBdsQgN8ikKqFWv84RRkOINpDUS/4eoY3a X-Received: by 2002:a65:4805:: with SMTP id h5-v6mr1769654pgs.96.1527068892290; Wed, 23 May 2018 02:48:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527068892; cv=none; d=google.com; s=arc-20160816; b=dkvMyhWDmGBaxAM6NpMamBASBBM6R7SlwOsk1wQW0MjAeUqW93ifASlCvSrMm1nC5B DqrvFZUB+uAx85UDDz9TKfiluOtJZ/otdKEmFm09VZM8XvqmergeL4INITUuw7bQ3Fjf mEjBfeK7G4zy5I/eWCzUY2X148vpbHV87F6ehE/daTSOi7nY4vK0VYvig029SQWKfkh1 Z0HZdT9WE8bH6QxVZieVJNHkf5KkqH8taSqQ19V66rPdAnPTDJ0A+2IW/vHjMzb9pc8Z 22fc2ZeJ/yjBOAXgnu+8ojAQLMNEv6SoN+OSLuH17wsYMS/CtW+48W7jGwakkLRo+OxZ UgLA== 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=w1Hd4Vs0bSuur3bZLmOnElYXLg65zQHfLeGv+XvwvHY=; b=0rEdhSJfubDhnahK1eS0QAC3ER4B2/Mkuu6hQY49yBKbH+yK8xLstvRkOgOEKfNNbp hpmee7zL/L8j6zC1vOT9llJk6/VxXBRmly//GKCazv4rY55w2gsluZaq7LanhJuacwz0 kulJkC1sy6Gw4l7f7eEOFibzBkbANdaEEu8WxSFIm4OKvncRwTQhg6Wy8SYOhRiHOJYj HtB4urIOGMbOqrbSPu1Mr+XYasNdUYC+2CbeCdqjgL3TvzTxHRxNevhpdMDY2LSKHu0h KkViS8GcH2O34ckBl44hTMj6hnliewJRz1uJzlJuFO1PsThC0PjQZYNjQuFkOSMVGp0Z XTuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=T2IY7USk; 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 o76-v6si18299711pfj.118.2018.05.23.02.47.57; Wed, 23 May 2018 02:48:12 -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=T2IY7USk; 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 S932236AbeEWJrl (ORCPT + 99 others); Wed, 23 May 2018 05:47:41 -0400 Received: from mail-it0-f66.google.com ([209.85.214.66]:32914 "EHLO mail-it0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754411AbeEWJrW (ORCPT ); Wed, 23 May 2018 05:47:22 -0400 Received: by mail-it0-f66.google.com with SMTP id e185-v6so13889758ita.0 for ; Wed, 23 May 2018 02:47:21 -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=w1Hd4Vs0bSuur3bZLmOnElYXLg65zQHfLeGv+XvwvHY=; b=T2IY7USkXRQ8EEf7RwRVyRzXo9SyRGs/m8pkw4UIcqAOdWZcl5s85q5VKG3moHGfV6 o0G6dvipo+SOsp64e0EB5UOwd4WfxVDtcBg/ATyH+p2tQJwQxPmAWTk7kbR5jh2Gmr/4 dJ00Vb55z6A2OezK4A3mU9Wm19rTX/crrKA24= 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=w1Hd4Vs0bSuur3bZLmOnElYXLg65zQHfLeGv+XvwvHY=; b=l2KGGpi/Mpqv95rMosmbVAvx4JgI1+1YcZZDcSQHh3plBRdyE9zipDzTXuvkKXsstl oUl7XAzaN2B2OY5tOwpzioXjzhQqlCq6bkmxtCjOoLMQ5LzHdLR7/CzJwFvQVPVZzVng yHoATv/DrcKEA5FxmWelGERUU+M6tieb25cOZ5L6oxTy8tin7xrjsh2afr4VQQvsaKL0 FTTMjDUZgMkify1QLq/exjD9Qe4z3+c5aWiOq5igy3tyEBqambzbuUOnJcIgTSkfJfYD 1gHue159PVryLrrAExsCFCeVewW0zNNXqd8B/aFqvTF6Rga+fk4/gTsYOECzHnZSM6U4 a4Hw== X-Gm-Message-State: ALKqPwesK5pRvFkptj0tHXyCgsoAFQJpj9QjgeUyuyPvCQD8OJ8GYPe7 /QSxEkNvkERwJB5UywFqFsr6p6kAeJ8kSdtuyymBqg== X-Received: by 2002:a24:a349:: with SMTP id p70-v6mr4802780ite.102.1527068841449; Wed, 23 May 2018 02:47:21 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a02:7353:0:0:0:0:0 with HTTP; Wed, 23 May 2018 02:47:21 -0700 (PDT) In-Reply-To: <22068fb1-f6e8-f2ec-d7f4-ab9e93469d7f@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> <00ba829d-faf4-168c-db00-531621b9280f@codeaurora.org> <22068fb1-f6e8-f2ec-d7f4-ab9e93469d7f@nvidia.com> From: Ulf Hansson Date: Wed, 23 May 2018 11:47:21 +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:45, Jon Hunter wrote: > > On 23/05/18 10:33, Ulf Hansson wrote: >> >> On 23 May 2018 at 11:27, Rajendra Nayak wrote: >>> >>> >>> >>> On 05/23/2018 02:37 PM, 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. >>>> >>>> Rajendra, do you have a use-case right now where the driver would want >>>> to handle the linking? >>> >>> >>> So if I understand this right, any driver which does want to control >>> individual powerdomain state would >>> need to do the linking itself right? >>> >>> What I am saying is, if I have device A, with powerdomains X and Y, and >>> if I want to turn on only X, >>> then I would want only X to be linked with A, and at a later point if I >>> want both X and Y to be turned on, >>> I would then go ahead and link both X and Y to A? Is that correct or did >>> I get it all wrong? >> >> >> Correct! >> >>> >>> I know atleast Camera on msm8996 would need to do this since it has 2 vfe >>> powerdoamins, which can be >>> turned on one at a time (depending on what resolution needs to be >>> supported) or both together if we >>> really need very high resolution using both vfe modules. >> >> >> I think this is also the case for the Tegra XUSB subsystem. >> >> The usb device is always attached to one PM domain, but depending on >> if super-speed mode is used, another PM domain for that logic needs to >> be powered on as well. >> >> Jon, please correct me if I am wrong! > > > Yes this is technically correct, however, in reality I think we are always > going to enable the superspeed domain if either the host or device domain is > enabled. So we would probably always link the superspeed with the host and > device devices. Why? Wouldn't that waste power if the superspeed mode isn't used? Kind regards Uffe