lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 23 Oct 2017 21:09:04 +0200 From: Ulf Hansson <ulf.hansson@...aro.org> To: "Rafael J. Wysocki" <rjw@...ysocki.net> Cc: Linux PM <linux-pm@...r.kernel.org>, Bjorn Helgaas <bhelgaas@...gle.com>, Alan Stern <stern@...land.harvard.edu>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, LKML <linux-kernel@...r.kernel.org>, Linux ACPI <linux-acpi@...r.kernel.org>, Linux PCI <linux-pci@...r.kernel.org>, Linux Documentation <linux-doc@...r.kernel.org>, Mika Westerberg <mika.westerberg@...ux.intel.com>, Andy Shevchenko <andriy.shevchenko@...ux.intel.com>, Kevin Hilman <khilman@...nel.org>, Wolfram Sang <wsa@...-dreams.de>, "linux-i2c@...r.kernel.org" <linux-i2c@...r.kernel.org>, Lee Jones <lee.jones@...aro.org> Subject: Re: [PATCH 07/12] ACPI / LPSS: Consolidate runtime PM and system sleep handling On 16 October 2017 at 03:29, Rafael J. Wysocki <rjw@...ysocki.net> wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@...el.com> > > Move the LPSS-specific code from acpi_lpss_runtime_suspend() > and acpi_lpss_runtime_resume() into separate functions, > acpi_lpss_suspend() and acpi_lpss_resume(), respectively, and > make acpi_lpss_suspend_late() and acpi_lpss_resume_early() use > them too in order to unify the runtime PM and system sleep > handling in the LPSS driver. > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@...el.com> Reviewed-by: Ulf Hansson <ulf.hansson@...aro.org> > --- > > This is based on an RFC I posted some time ago > (https://patchwork.kernel.org/patch/9998147/), which didn't > receive any comments and it depends on a couple of ACPI device PM > patches posted recently (https://patchwork.kernel.org/patch/10006457/ > in particular). > > It's included in this series, because the next patch won't work without it. > > --- > drivers/acpi/acpi_lpss.c | 75 ++++++++++++++++++++--------------------------- > 1 file changed, 33 insertions(+), 42 deletions(-) > > Index: linux-pm/drivers/acpi/acpi_lpss.c > =================================================================== > --- linux-pm.orig/drivers/acpi/acpi_lpss.c > +++ linux-pm/drivers/acpi/acpi_lpss.c > @@ -716,40 +716,6 @@ static void acpi_lpss_dismiss(struct dev > acpi_dev_suspend(dev, false); > } > > -#ifdef CONFIG_PM_SLEEP > -static int acpi_lpss_suspend_late(struct device *dev) > -{ > - struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev)); > - int ret; > - > - ret = pm_generic_suspend_late(dev); > - if (ret) > - return ret; > - > - if (pdata->dev_desc->flags & LPSS_SAVE_CTX) > - acpi_lpss_save_ctx(dev, pdata); > - > - return acpi_dev_suspend(dev, device_may_wakeup(dev)); > -} > - > -static int acpi_lpss_resume_early(struct device *dev) > -{ > - struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev)); > - int ret; > - > - ret = acpi_dev_resume(dev); > - if (ret) > - return ret; > - > - acpi_lpss_d3_to_d0_delay(pdata); > - > - if (pdata->dev_desc->flags & LPSS_SAVE_CTX) > - acpi_lpss_restore_ctx(dev, pdata); > - > - return pm_generic_resume_early(dev); > -} > -#endif /* CONFIG_PM_SLEEP */ > - > /* IOSF SB for LPSS island */ > #define LPSS_IOSF_UNIT_LPIOEP 0xA0 > #define LPSS_IOSF_UNIT_LPIO1 0xAB > @@ -835,19 +801,15 @@ static void lpss_iosf_exit_d3_state(void > mutex_unlock(&lpss_iosf_mutex); > } > > -static int acpi_lpss_runtime_suspend(struct device *dev) > +static int acpi_lpss_suspend(struct device *dev, bool wakeup) > { > struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev)); > int ret; > > - ret = pm_generic_runtime_suspend(dev); > - if (ret) > - return ret; > - > if (pdata->dev_desc->flags & LPSS_SAVE_CTX) > acpi_lpss_save_ctx(dev, pdata); > > - ret = acpi_dev_suspend(dev, true); > + ret = acpi_dev_suspend(dev, wakeup); > > /* > * This call must be last in the sequence, otherwise PMC will return > @@ -860,7 +822,7 @@ static int acpi_lpss_runtime_suspend(str > return ret; > } > > -static int acpi_lpss_runtime_resume(struct device *dev) > +static int acpi_lpss_resume(struct device *dev) > { > struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev)); > int ret; > @@ -881,7 +843,36 @@ static int acpi_lpss_runtime_resume(stru > if (pdata->dev_desc->flags & LPSS_SAVE_CTX) > acpi_lpss_restore_ctx(dev, pdata); > > - return pm_generic_runtime_resume(dev); > + return 0; > +} > +#ifdef CONFIG_PM_SLEEP > +static int acpi_lpss_suspend_late(struct device *dev) > +{ > + int ret = pm_generic_suspend_late(dev); > + > + return ret ? ret : acpi_lpss_suspend(dev, device_may_wakeup(dev)); > +} > + > +static int acpi_lpss_resume_early(struct device *dev) > +{ > + int ret = acpi_lpss_resume(dev); > + > + return ret ? ret : pm_generic_resume_early(dev); > +} > +#endif /* CONFIG_PM_SLEEP */ > + > +static int acpi_lpss_runtime_suspend(struct device *dev) > +{ > + int ret = pm_generic_runtime_suspend(dev); > + > + return ret ? ret : acpi_lpss_suspend(dev, true); > +} > + > +static int acpi_lpss_runtime_resume(struct device *dev) > +{ > + int ret = acpi_lpss_resume(dev); > + > + return ret ? ret : pm_generic_runtime_resume(dev); > } > #endif /* CONFIG_PM */ > > >
Powered by blists - more mailing lists