Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754537AbbK0KB1 (ORCPT ); Fri, 27 Nov 2015 05:01:27 -0500 Received: from mga11.intel.com ([192.55.52.93]:38615 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754198AbbK0KBS (ORCPT ); Fri, 27 Nov 2015 05:01:18 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,351,1444719600"; d="scan'208";a="848121126" Message-ID: <1448618485.15393.108.camel@linux.intel.com> Subject: Re: [PATCH v2 2/7] ACPI / LPSS: allow to use specific PM domain during ->probe() From: Andy Shevchenko To: Jarkko Nikula , "Rafael J. Wysocki" , linux-acpi@vger.kernel.org, Vinod Koul , dmaengine@vger.kernel.org, Thomas Gleixner , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Mika Westerberg Date: Fri, 27 Nov 2015 12:01:25 +0200 In-Reply-To: <565800CA.4040003@linux.intel.com> References: <1448551153-84719-1-git-send-email-andriy.shevchenko@linux.intel.com> <1448551153-84719-3-git-send-email-andriy.shevchenko@linux.intel.com> <565733A2.6050900@linux.intel.com> <1448556317.15393.77.camel@linux.intel.com> <565800CA.4040003@linux.intel.com> Organization: Intel Finland Oy Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.18.2-1 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3079 Lines: 90 On Fri, 2015-11-27 at 09:05 +0200, Jarkko Nikula wrote: > On 11/26/2015 06:45 PM, Andy Shevchenko wrote: > > On Thu, 2015-11-26 at 18:30 +0200, Jarkko Nikula wrote: > > > On 11/26/2015 05:19 PM, Andy Shevchenko wrote: > > > > This is an amendment to previously pushed commit 01ac170ba29a > > > > (ACPI > > > > / LPSS: > > > > allow to use specific PM domain during ->probe()). We can't > > > > assign > > > > anything to > > > > the platform device on ADD_DEVICE stage since it might be > > > > changed > > > > during > > > > unbound / bind cycle. > > > > > > > > Signed-off-by: Andy Shevchenko > > > om> > > > > --- > > > >    drivers/acpi/acpi_lpss.c | 9 +++++++-- > > > >    1 file changed, 7 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/drivers/acpi/acpi_lpss.c > > > > b/drivers/acpi/acpi_lpss.c > > > > index f9e0d09..e840229 100644 > > > > --- a/drivers/acpi/acpi_lpss.c > > > > +++ b/drivers/acpi/acpi_lpss.c > > > > @@ -705,8 +705,14 @@ static int > > > > acpi_lpss_platform_notify(struct > > > > notifier_block *nb, > > > >     } > > > > > > > >     switch (action) { > > > > - case BUS_NOTIFY_ADD_DEVICE: > > > > + case BUS_NOTIFY_BIND_DRIVER: > > > >     pdev->dev.pm_domain = &acpi_lpss_pm_domain; > > > > + break; > > > > + case BUS_NOTIFY_BIND_DRIVER_ERROR: > > > > + case BUS_NOTIFY_UNBOUND_DRIVER: > > > > + pdev->dev.pm_domain = NULL; > > > > + break; > > > > + case BUS_NOTIFY_ADD_DEVICE: > > > > > > This won't fix like revert of original commit does. Primary > > > problem > > > here > > > is that there is no explicit power on at all during LPSS device > > > probe > > > because dev->pm_domain is set before probing. > > > > And we can't do this as in very original code of acpi_lpss.c since > > DMA > > has to be sure it's powered on while probing. We could guarantee > > this > > only in case when PM domain is assigned already and we do our quirk > > for > > it. > > > I'm not sure do I follow here. Is the power on chain different for > LPSS > DMA because setting the domain at BIND stage prevents the call to > acpi_dev_pm_full_power() before driver probe? See below. > > driver_probe_device >    really_probe >      driver_sysfs_add -> BUS_NOTIFY_BIND_DRIVER >      -> platform_drv_prove >        dev_pm_domain_attach >          acpi_dev_pm_attach >            if (dev->pm_domain) return -EEXIST; >            ... >            if (power_on) { acpi_dev_pm_full_power(adev);... } And how exactly does it enable a power on DMA controller that doesn't have _PS0 / _PS3 / _PSC methods? Maybe I missed something obvious. >        -> probe >    driver_bound -> BUS_NOTIFY_BOUND_DRIVER -- Andy Shevchenko Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/