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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 7 Oct 2015 01:44:56 +0200 From: "Rafael J. Wysocki" <rafael@...nel.org> To: Dmitry Torokhov <dmitry.torokhov@...il.com> Cc: "Rafael J. Wysocki" <rjw@...ysocki.net>, Linux PM list <linux-pm@...r.kernel.org>, Linux Kernel Mailing List <linux-kernel@...r.kernel.org>, ACPI Devel Maling List <linux-acpi@...r.kernel.org>, Alan Stern <stern@...land.harvard.edu>, Daniel Vetter <daniel.vetter@...el.com>, Bjorn Helgaas <bhelgaas@...gle.com>, Linux PCI <linux-pci@...r.kernel.org> Subject: Re: [RFC][PATCH v3 3/3] input: i8042: Avoid resetting controller on system suspend/resume On Wed, Oct 7, 2015 at 1:26 AM, Dmitry Torokhov <dmitry.torokhov@...il.com> wrote: > On Wed, Oct 07, 2015 at 01:31:44AM +0200, Rafael J. Wysocki wrote: >> On Tuesday, October 06, 2015 03:43:08 PM Dmitry Torokhov wrote: >> > On Wed, Oct 07, 2015 at 01:08:30AM +0200, Rafael J. Wysocki wrote: >> > > On Tuesday, October 06, 2015 03:34:42 PM Dmitry Torokhov wrote: [cut] >> So something like this I suppose: >> >> --- >> drivers/input/serio/i8042.c | 16 ++++++++++++++-- >> 1 file changed, 14 insertions(+), 2 deletions(-) >> >> Index: linux-pm/drivers/input/serio/i8042.c >> =================================================================== >> --- linux-pm.orig/drivers/input/serio/i8042.c >> +++ linux-pm/drivers/input/serio/i8042.c >> @@ -24,6 +24,7 @@ >> #include <linux/platform_device.h> >> #include <linux/i8042.h> >> #include <linux/slab.h> >> +#include <linux/suspend.h> >> >> #include <asm/io.h> >> >> @@ -1170,7 +1171,8 @@ static int i8042_pm_suspend(struct devic >> { >> int i; >> >> - i8042_controller_reset(true); >> + if (pm_suspend_via_firmware()) >> + i8042_controller_reset(true); >> >> /* Set up serio interrupts for system wakeup. */ >> for (i = 0; i < I8042_NUM_PORTS; i++) { >> @@ -1183,6 +1185,14 @@ static int i8042_pm_suspend(struct devic >> return 0; >> } >> >> +static int i8042_pm_resume_noirq(struct device *dev) >> +{ >> + if (!pm_resume_via_firmware()) >> + i8042_interrupt(0, NULL); >> + >> + return 0; >> +} >> + >> static int i8042_pm_resume(struct device *dev) >> { >> int i; >> @@ -1199,7 +1209,8 @@ static int i8042_pm_resume(struct device >> * to bring it in a sane state. (In case of S2D we expect >> * BIOS to reset the controller for us.) >> */ >> - return i8042_controller_resume(true); >> + return pm_suspend_via_firmware() ? >> + i8042_controller_resume(pm_resume_via_firmware()) : 0; > > Hmm, looks right, maybe just be more verbose... > > /* > * If firmware was not going to be involved in suspend we did > * not restore controller state to whatever it was when we were > * booting, so we do not need to do anything. > */ > if (!pm_suspend_via_firmware()) > return 0; > > /* > * We only need to reset controller if we are resuming after > * handing off control to the firmware, otherwise we can > * simply restore the mode. > */ > do_reset = pm_resume_via_firmware(); > > return i8042_controller_resume(do_reset); > >> } >> >> static int i8042_pm_thaw(struct device *dev) >> @@ -1223,6 +1234,7 @@ static int i8042_pm_restore(struct devic >> >> static const struct dev_pm_ops i8042_pm_ops = { >> .suspend = i8042_pm_suspend, >> + .resume_noirq = i8042_pm_resume_noirq, >> .resume = i8042_pm_resume, >> .thaw = i8042_pm_thaw, >> .poweroff = i8042_pm_reset, OK I'll send a new version shortly. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists