Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752087AbbK0HIA (ORCPT ); Fri, 27 Nov 2015 02:08:00 -0500 Received: from mga14.intel.com ([192.55.52.115]:29099 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750785AbbK0HH5 (ORCPT ); Fri, 27 Nov 2015 02:07:57 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,350,1444719600"; d="scan'208";a="607874663" Subject: Re: [PATCH v2 2/7] ACPI / LPSS: allow to use specific PM domain during ->probe() To: Andy Shevchenko , "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 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> From: Jarkko Nikula Message-ID: <565800CA.4040003@linux.intel.com> Date: Fri, 27 Nov 2015 09:05:46 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.3.0 MIME-Version: 1.0 In-Reply-To: <1448556317.15393.77.camel@linux.intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2652 Lines: 74 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 >>> --- >>> 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);... } -> probe driver_bound -> BUS_NOTIFY_BOUND_DRIVER > 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. > Sure. -- Jarkko -- 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/