On 07/27, Bryan Steele wrote: > On Fri, Jul 28, 2017 at 12:09:17AM +0100, Marco Bonetti wrote: > > It looks like spaces and tabs got mangled, I'm resending the diff in-line in > > this email. > > > > Any other comments / OKs ? > > > > Index: etc/etc.amd64/sysctl.conf > > =================================================================== > > RCS file: /cvs/src/etc/etc.amd64/sysctl.conf,v > > retrieving revision 1.7 > > diff -u -p -u -p -r1.7 sysctl.conf > > --- etc/etc.amd64/sysctl.conf 2 Mar 2017 10:38:09 -0000 1.7 > > +++ etc/etc.amd64/sysctl.conf 24 Jul 2017 23:48:06 -0000 > > @@ -1,3 +1,3 @@ > > #machdep.allowaperture=2 # See xf86(4) > > #machdep.kbdreset=1 # permit console CTRL-ALT-DEL to do a > > nice halt > > -#machdep.lidaction=0 # 1=suspend, 2=hibernate laptop upon > > lid closing > > +#machdep.lidaction=0 # 1=suspend, 2=hibernate, 3=power down > > laptop upon lid closing > > Index: etc/etc.i386/sysctl.conf > > =================================================================== > > RCS file: /cvs/src/etc/etc.i386/sysctl.conf,v > > retrieving revision 1.21 > > diff -u -p -u -p -r1.21 sysctl.conf > > --- etc/etc.i386/sysctl.conf 2 Mar 2017 10:38:09 -0000 1.21 > > +++ etc/etc.i386/sysctl.conf 24 Jul 2017 23:48:06 -0000 > > @@ -1,4 +1,4 @@ > > #machdep.allowaperture=2 # See xf86(4) > > #machdep.apmhalt=1 # 1=powerdown hack, try if halt -p doesn't work > > #machdep.kbdreset=1 # permit console CTRL-ALT-DEL to do a > > nice halt > > -#machdep.lidaction=0 # 1=suspend, 2=hibernate laptop upon > > lid closing > > +#machdep.lidaction=0 # 1=suspend, 2=hibernate, 3=power down > > laptop upon lid closing > > Index: etc/etc.loongson/sysctl.conf > > =================================================================== > > RCS file: /cvs/src/etc/etc.loongson/sysctl.conf,v > > retrieving revision 1.4 > > diff -u -p -u -p -r1.4 sysctl.conf > > --- etc/etc.loongson/sysctl.conf 2 Mar 2017 10:38:09 -0000 1.4 > > +++ etc/etc.loongson/sysctl.conf 24 Jul 2017 23:48:06 -0000 > > @@ -1 +1 @@ > > -#machdep.lidaction=0 # 1=suspend, 2=hibernate laptop upon > > lid closing > > +#machdep.lidaction=0 # 1=suspend, 2=hibernate, 3=power down > > laptop upon lid closing > > Index: sys/arch/amd64/amd64/machdep.c > > =================================================================== > > RCS file: /cvs/src/sys/arch/amd64/amd64/machdep.c,v > > retrieving revision 1.231 > > diff -u -p -u -p -r1.231 machdep.c > > --- sys/arch/amd64/amd64/machdep.c 12 Jul 2017 06:26:32 -0000 1.231 > > +++ sys/arch/amd64/amd64/machdep.c 24 Jul 2017 23:48:11 -0000 > > @@ -477,15 +477,20 @@ cpu_sysctl(int *name, u_int namelen, voi > > case CPU_XCRYPT: > > return (sysctl_rdint(oldp, oldlenp, newp, amd64_has_xcrypt)); > > case CPU_LIDACTION: > > - val = lid_action; > > - error = sysctl_int(oldp, oldlenp, newp, newlen, &val); > > - if (!error) { > > - if (val < 0 || val > 2) > > - error = EINVAL; > > - else > > - lid_action = val; > > - } > > - return (error); > > + if (securelevel > 0) > > + return (sysctl_rdint(oldp, oldlenp, newp, > > + lid_action)); > > + else { > > + val = lid_action; > > + error = sysctl_int(oldp, oldlenp, newp, newlen, &val); > > + if (!error) { > > + if (val < 0 || val > 3) > > + error = EINVAL; > > + else > > + lid_action = val; > > + } > > + return (error); > > + } > > #if NPCKBC > 0 && NUKBD > 0 > > case CPU_FORCEUKBD: > > if (forceukbd) > > Index: sys/arch/i386/i386/machdep.c > > =================================================================== > > RCS file: /cvs/src/sys/arch/i386/i386/machdep.c,v > > retrieving revision 1.604 > > diff -u -p -u -p -r1.604 machdep.c > > --- sys/arch/i386/i386/machdep.c 12 Jul 2017 06:26:32 -0000 1.604 > > +++ sys/arch/i386/i386/machdep.c 24 Jul 2017 23:48:12 -0000 > > @@ -3551,15 +3551,20 @@ cpu_sysctl(int *name, u_int namelen, voi > > case CPU_XCRYPT: > > return (sysctl_rdint(oldp, oldlenp, newp, i386_has_xcrypt)); > > case CPU_LIDACTION: > > - val = lid_action; > > - error = sysctl_int(oldp, oldlenp, newp, newlen, &val); > > - if (!error) { > > - if (val < 0 || val > 2) > > - error = EINVAL; > > - else > > - lid_action = val; > > - } > > - return (error); > > + if (securelevel > 0) > > + return (sysctl_rdint(oldp, oldlenp, newp, > > + lid_action)); > > + else { > > + val = lid_action; > > + error = sysctl_int(oldp, oldlenp, newp, newlen, &val); > > + if (!error) { > > + if (val < 0 || val > 3) > > + error = EINVAL; > > + else > > + lid_action = val; > > + } > > + return (error); > > + } > > #if NPCKBC > 0 && NUKBD > 0 > > case CPU_FORCEUKBD: > > if (forceukbd) > > Index: sys/arch/loongson/loongson/machdep.c > > =================================================================== > > RCS file: /cvs/src/sys/arch/loongson/loongson/machdep.c,v > > retrieving revision 1.79 > > diff -u -p -u -p -r1.79 machdep.c > > --- sys/arch/loongson/loongson/machdep.c 12 Jul 2017 06:26:33 -0000 > > 1.79 > > +++ sys/arch/loongson/loongson/machdep.c 24 Jul 2017 23:48:12 -0000 > > @@ -1032,7 +1032,7 @@ cpu_sysctl(int *name, u_int namelen, voi > > val = lid_action; > > error = sysctl_int(oldp, oldlenp, newp, newlen, &val); > > if (!error) { > > - if (val < 0 || val > 2) > > + if (val < 0 || val > 3) > > error = EINVAL; > > else > > lid_action = val; > > Index: sys/dev/acpi/acpibtn.c > > =================================================================== > > RCS file: /cvs/src/sys/dev/acpi/acpibtn.c,v > > retrieving revision 1.44 > > diff -u -p -u -p -r1.44 acpibtn.c > > --- sys/dev/acpi/acpibtn.c 2 Mar 2017 10:38:10 -0000 1.44 > > +++ sys/dev/acpi/acpibtn.c 24 Jul 2017 23:48:12 -0000 > > @@ -242,6 +242,8 @@ acpibtn_notify(struct aml_node *node, in > > sc->sc_acpi, ACPI_SLEEP_HIBERNATE); > > break; > > #endif > > + case 3: > > + goto powerdown; > > default: > > break; > > } > > @@ -265,6 +267,7 @@ sleep: > > break; > > case ACPIBTN_POWER: > > if (notify_type == 0x80) > > +powerdown: > > acpi_addtask(sc->sc_acpi, acpi_powerdown_task, > > sc->sc_acpi, 0); > > break; > > I don't have a strong opinion on this one way or another, except > perhaps option overload.. but can't one already set lidaction=0 > and then have sensorsd(8) or some script watch the acpibtn lid > sensor? >
Hey Bryan, I totally understand your option overload point, from my perspective it felt a bit weird that sys/dev/acpi/acpibtn.c is handling all the lidaction use cases but one. For sensorsd: it's totally doable but personally I dislike having a program that wakes up and checks sensors every 20 seconds on my laptop, unless absolutely necessary. Cheers, Marco