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?

Reply via email to