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

Reply via email to