Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754506AbbK0J4L (ORCPT ); Fri, 27 Nov 2015 04:56:11 -0500 Received: from mga09.intel.com ([134.134.136.24]:22028 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750978AbbK0J4H (ORCPT ); Fri, 27 Nov 2015 04:56:07 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,351,1444719600"; d="scan'208";a="848117634" Message-ID: <1448618173.15393.104.camel@linux.intel.com> Subject: Re: [PATCH v2 2/7] ACPI / LPSS: allow to use specific PM domain during ->probe() From: Andy Shevchenko To: "Rafael J. Wysocki" Cc: Jarkko Nikula , 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 11:56:13 +0200 In-Reply-To: <10907323.ZOUAMFPIfU@vostro.rjw.lan> References: <1448551153-84719-1-git-send-email-andriy.shevchenko@linux.intel.com> <565733A2.6050900@linux.intel.com> <1448556317.15393.77.camel@linux.intel.com> <10907323.ZOUAMFPIfU@vostro.rjw.lan> 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: 3335 Lines: 101 On Fri, 2015-11-27 at 00:15 +0100, Rafael J. Wysocki wrote: > On Thursday, November 26, 2015 06:45:17 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. > > Which commit exactly are you talking about, for reference? commit 01ac170ba29a9903ee590e1ef2d8e6b27b49a16c Author: Andy Shevchenko Date:   Wed Nov 5 18:34:46 2014 +0200     ACPI / LPSS: allow to use specific PM domain during ->probe()      > > > 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. > > > > From my point of view we have to fix hang first since it's most > > painful > > case for users and their experience. Though I'm open to any better > > solution if you have any in mind. > > > > > > > > driver_probe_device > > >    platform_drv_prove > > >      dev_pm_domain_attach > > >        acpi_dev_pm_attach > > >          returns instantly because of dev->pm_domain is set > > This looks like a candidate for the new PM domain callbacks, > ->activate and > ->dismiss. > > ->activate() is called before the probe, so it may power up things. > > ->dismiss() in turn is called in the failed probe case, so it can do > the > cleanup. > > Have you considered using these? Thanks for the hint. We will check this. -- 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/