Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp610711imm; Wed, 23 May 2018 02:34:55 -0700 (PDT) X-Google-Smtp-Source: AB8JxZprUozslftVBe/oE/db+jLjfkTp3IwOc7P2WMVH4hX7etjMFqlSdiK+gAXmulM08WrISk3B X-Received: by 2002:a17:902:2c83:: with SMTP id n3-v6mr2143536plb.211.1527068095762; Wed, 23 May 2018 02:34:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527068095; cv=none; d=google.com; s=arc-20160816; b=SEvw7DtRCuGuavspXz9LJ3DhTPFgba8k9J2N9C1Pd16u+SoOil+SB0Mwq6mirIry8x RraZbkn7sTu1FEapJ/nHyATVSdlmAZyP2CTwbHzMFkJWzi3VBwWMoA1SpJOh872v/gNS fPxwVDONZRzNDkNjmnel9HNtXCRvUvzytDPoEif1bGndpngKW0ys4vSuMaZIPHCYaSqA BVjjQzH/A6R4slBPzr/tvGDJpQSY4kJIe4mClLE++yueCt31u+M2er3MUie+Qx5nLxBA edOAC5nli5Otjfnxlut5gLfsPIQEHueywSnw99rYchwHOpKBswElDdjAfrEBCpa8qqmI Xx3Q== 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=fu8cZpyTnI1byCQeKnwk4qO6vex7GY6Keed5C3UmabQ=; b=iLuiV+GvVeDCYOR3VHr08UIIgNsaS6n0AwV139qLeBa51NONOkJHHiIsJE31c0JwGS 2U01FMyllHsi1Qn7/o3huKBK91ljt8R1g+ldwcr7X+imNpwciRFblQJjj5eJmHqSoN3X NSA9a5e4V8n46grrJR/AjMm90zRccNpJfi2SUwGq8CIeY/sUw4egUYmXj1rZc06xZjYy WfgjceU7z5vhb/mJmuyHsFwu5io574qOrJOpSZSMjUoiNuyWsiTqpXmd5Rx0jeHPq5LH U9QHEqb4YHPOaEoxvdHAKvmiftLdW1qkc/D494rtwx06Vw9++upjN2074aI32ggrrMoL y2oA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=HMy5Us5b; 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 k22-v6si250928pgn.257.2018.05.23.02.34.41; Wed, 23 May 2018 02:34:55 -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=HMy5Us5b; 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 S932284AbeEWJd6 (ORCPT + 99 others); Wed, 23 May 2018 05:33:58 -0400 Received: from mail-it0-f66.google.com ([209.85.214.66]:35384 "EHLO mail-it0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932292AbeEWJdv (ORCPT ); Wed, 23 May 2018 05:33:51 -0400 Received: by mail-it0-f66.google.com with SMTP id q72-v6so3566974itc.0 for ; Wed, 23 May 2018 02:33:51 -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=fu8cZpyTnI1byCQeKnwk4qO6vex7GY6Keed5C3UmabQ=; b=HMy5Us5bQtdw3OLj2uGrW6jx4YCUE24BAcAYpkLBDgbY47XSvhnRj4kBdi+Sa1CREJ r5yCDvMhQAZv65GpIuQkGm7do20BZM7fN6UwJXGqoFsQNKFBE+0nuRfQRi9WTFYohn4g B2E/E/rKBqFaRu81Ua8wsy54gnCdFvlHPiG0o= 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=fu8cZpyTnI1byCQeKnwk4qO6vex7GY6Keed5C3UmabQ=; b=HMwNyFCob3LjPU9nq4LwfbfSfm1iy2oA01XsDek9dh0IotrVB+R67kUkovAvlZD0yP BS26aasepHcma5sL5vT3oXziExSVZAgas3NML0mhgQ5VvdPgYJEnfo7UCPKzpjo/TKXx bIJyYLMoKlgVUJ61WSlF9qpNzmVukT7pDDs0bk/H1R+WtnYWrs0CSi3dtHm29eTDCDNl fj89Tf2HilUPA9qek3usq/3vx3Bd8iLnLH4epJYpEaSh4YHO3RKUrEHRQ/N7KE63cMrd haJp40Sk6fzCTsJjP4sIt9moZROhTOiuIW/lABP6v4/BRoCgmiYV/dhL2c4aeeyXwG1c 3ANA== X-Gm-Message-State: ALKqPwcJoqFBJdxsVCtwYNlU5wKJTxifVTQ7pDPyrRpH/UAfbDZV5R8A Sx5ApOXt4zVuGKGYzOgYsgai+7hxtnetMcbPy8tSng== X-Received: by 2002:a24:694b:: with SMTP id e72-v6mr4599360itc.38.1527068030490; Wed, 23 May 2018 02:33:50 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a02:7353:0:0:0:0:0 with HTTP; Wed, 23 May 2018 02:33:50 -0700 (PDT) In-Reply-To: <00ba829d-faf4-168c-db00-531621b9280f@codeaurora.org> 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> From: Ulf Hansson Date: Wed, 23 May 2018 11:33:50 +0200 Message-ID: Subject: Re: [PATCH 8/9] PM / Domains: Add support for multi PM domains per device to genpd To: Rajendra Nayak , Jon Hunter Cc: 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: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! Kind regards Uffe