Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp339481pxj; Thu, 10 Jun 2021 01:56:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw8uJbDrjiTLJNHT5WfpiUdoOLBjgfd+mTdzN5osQ+2ATwuuG4gHChfLwMgGNxhB4elfqER X-Received: by 2002:a05:6402:1d0f:: with SMTP id dg15mr3628117edb.137.1623315363094; Thu, 10 Jun 2021 01:56:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623315363; cv=none; d=google.com; s=arc-20160816; b=pSuke5ZSCwhzAT4SY+I8olNAO7DRpFawxNtrtAJtYACvQMyQE2liqcdaDZU0tTQO4K 1W5vM74TDOo3ZjZHsdi6kesGuoTpxFTL3S/1w8G4cWlG8VWFudDO6/Q1vi+vXw0yl6Rv 0qYazU0Vw4/J90xFr3L0ET2TIXoJ1vMA6BV/EKVGxS2v/pSJCDJS8MxHfoibDbQrAisF c9Awzv4vd+vmTKNEqG5fITNiirGoquSHTjmnS/DXVqC0tJrinvGUuyzzUABojUV/QC6U ZVXwXKQZCl46r3g8raoSEo4aiPseo/rtQkiEXUOpU2seC+c2eKgCcN0LtNafpnv+CwSu uf3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=0n9dDqvP+lODnMQ5qHqWheaeGBbbZs8YgGz8kfCeEwE=; b=upJv+Zrk8GfmhRj7R3dIjf4k3nq1Q1RRvVuD4jvsb4a5bTEms4bA/15hz/cYsz21nR 5jVTfQ7AwlCTvPWaJjqTUomFQB0zyCNfqSCaQC7J1h5Tl3pHj1GeZh8Qs57NjC/I08GY YlSLDIMb4ecf3NsAa1LjecXohvdb5CiKBpDltIk9mr+ZIU6/JmBL3ClPdFb4rPeNrvX6 alN/v1xYgskmTf5BN9JlvOtL7bNueC5KRaE2xaPkwSCWBgSUopp0XvEdvTOw5l1HyMRM i5rh/oqH7TRzrJJfrlyDhU8t0rhE9tcCAi+JyfBxRRpmyy/rOkthAlOzkUV/xIgWZbH6 zViA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=JkDxdgQp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id f16si1807600ejc.261.2021.06.10.01.55.38; Thu, 10 Jun 2021 01:56:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=JkDxdgQp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S229911AbhFJIxj (ORCPT + 99 others); Thu, 10 Jun 2021 04:53:39 -0400 Received: from mail-vs1-f43.google.com ([209.85.217.43]:34797 "EHLO mail-vs1-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229778AbhFJIxj (ORCPT ); Thu, 10 Jun 2021 04:53:39 -0400 Received: by mail-vs1-f43.google.com with SMTP id q2so1458595vsr.1 for ; Thu, 10 Jun 2021 01:51:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=0n9dDqvP+lODnMQ5qHqWheaeGBbbZs8YgGz8kfCeEwE=; b=JkDxdgQpwfa+eXaZCKAJkqqIgDJlXievjNrXMtpoIJp6+zIC1G25BQDrEvuVDpGRm0 plRQJtPmIF08MTR5knKoO2iTXQX9rfFxoUYK1L+9CoJGzLBgyyBwx9A2KiEzcstXgM1O jdozPW1VC/HCG1J4vEN2akMEAhUCrSxjOBZKfqP+rAojYe3Z9JLddsVNkYmJ2gh1CnWH H2iBlL5JptW+Ca+jEt9McBKUWVHQ4zVe6tUMJOlycNhGzY+g7kxeNsy/9gds+usgQgKI 3ZGc7l9fLcMiQgxSYGqeVPDXXHBBD17aSUmo81BIx5vk4U1jhPWmyNdlowhYaUs0ZTQz iiQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=0n9dDqvP+lODnMQ5qHqWheaeGBbbZs8YgGz8kfCeEwE=; b=pvl8pxJ7faoKzlj2cvFntCbQRL/0HmHjIVOg4vqyDQJ56S87x5z5x8EEJDL+uI9nA9 Xpj/AFh1rECGAvWS2wWO18iF6SkmDj/1Vv/zp9o/ejedgKQb8GyY93xBtVoPjBVb8KNj H8KEOXe4S9KOcHCIrs8SRQbBUK7v1q1zLFzNPq7Pn5nd8SfC1UE40PcTJI6bTlL4a1a5 5NnmD0sh8pZNZAeGVhP7pAZ0Zz1DqR5GVN6h/X5D4X+M63PC13xM1mGGypoyoeZQhmVw aEKyhpnEKJlLbFW7rpkUg0tcJgI/dSC88dvFEQ9BZx20ykZF3vj3pXm63iLfZ6gfHpP0 RhOA== X-Gm-Message-State: AOAM533j+X4hwdR2Shj8neXrDE5Hbny3u1v/SN90k0ULbDVAGGky/lru ccz0At+jg9wtWM8r22qptWkm40n6SA61jXg/9WEozF/8ak3QH74E X-Received: by 2002:a67:19c2:: with SMTP id 185mr521314vsz.34.1623315031276; Thu, 10 Jun 2021 01:50:31 -0700 (PDT) MIME-Version: 1.0 References: <20210602192758.38735-1-alcooperx@gmail.com> <20210602192758.38735-2-alcooperx@gmail.com> <6acd480a-8928-89bb-0f40-d278294973a1@gmail.com> In-Reply-To: <6acd480a-8928-89bb-0f40-d278294973a1@gmail.com> From: Ulf Hansson Date: Thu, 10 Jun 2021 10:49:55 +0200 Message-ID: Subject: Re: [PATCH 2/2] mmc: sdhci-iproc: Add support for the legacy sdhci controller on the BCM7211 To: Florian Fainelli , "Rafael J. Wysocki" , Linux PM Cc: Al Cooper , Linux Kernel Mailing List , Adrian Hunter , BCM Kernel Feedback , DTML , Linux ARM , linux-mmc , Nicolas Saenz Julienne , Ray Jui , Rob Herring , Scott Branden Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 10 Jun 2021 at 01:59, Florian Fainelli wrote: > > > > On 6/9/2021 2:22 AM, Ulf Hansson wrote: > > On Wed, 9 Jun 2021 at 05:07, Florian Fainelli wrote: > >> > >> > >> > >> On 6/8/2021 5:40 AM, Ulf Hansson wrote: > >>> On Wed, 2 Jun 2021 at 21:28, Al Cooper wrote: > >>>> > >>>> Add support for the legacy Arasan sdhci controller on the BCM7211 and > >>>> related SoC's. This includes adding a .shutdown callback to increase > >>>> the power savings during S5. > >>> > >>> Please split this into two separate changes. > >>> > >>> May I also ask about the ->shutdown() callback and in relation to S5. > >>> What makes the ->shutdown callback only being invoked for S5? > >> > >> It is not only called for S5 (entered via poweroff on a prompt) but also > >> during kexec or reboot. The poweroff path is via: > >> > >> kernel_power_off() -> kernel_shutdown_prepare() -> device_shutdown() -> > >> .shutdown() > >> > >> For kexec or reboot we do not really care about power savings since we > >> are about to load a new image anyway, however for S5/poweroff we do care > >> about quiescing the eMMC controller in a way that its clocks and the > >> eMMC device can be put into low power mode since we will stay in that > >> mode for seconds/hours/days until someone presses a button on their > >> remote (or other wake-up sources). > > > > Hmm, I am not sure I understand correctly. At shutdown we don't care > > about wake-up sources from the kernel point of view, instead we treat > > everything as if it will be powered off. > > The same .shutdown() path is used whether you kexec, reboot or poweroff, > but for poweroff we do care about allowing specific wake-up sources > configured as such to wake-up the system at a later time, like GPIOs, > RTC, etc. That's true, but using the ->shutdown() callbacks in this way would certainly be a new use case. Most subsystems/drivers don't care about power management in those callbacks, but rather just about managing a graceful shutdown. It sounds to me like you should have a look at the hibernation path/callbacks instead - or perhaps even the system suspend path/callback. Normally, that's where we care about power management. I have looped in Rafael, to allow him to share his opinion on this. > > > > > We put devices into low power state at system suspend and potentially > > also during some of the hibernation phases. > > > > Graceful shutdown of the eMMC is also managed by the mmc core. > > AFAICT that calls mmc_blk_shutdown() but that is pretty much it, the > SDHCI platform_driver still needs to do something in order to conserve > power including disabling host->clk, otherwise we would not have done > that for sdhci-brcmstb.c. That's not entirely correct. When mmc_bus_shutdown() is called for the struct device* that belongs to an eMMC card, two actions are taken. *) We call mmc_blk_shutdown(), to suspend the block device queue from receiving new I/O requests. **) We call host->bus_ops->shutdown(), which is an eMMC specific callback set to mmc_shutdown(). In this step, we do a graceful shutdown/power-off of the eMMC card. When it comes to controller specific resources, like clocks and PM domains, for example, those may very well stay turned on. Do deal with these, then yes, you would need to implement the ->shutdown() callback. But as I said above, I am not sure it's the right thing to do. Kind regards Uffe