Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 3 Dec 2016 21:12:54 +0100
From:      Oliver Pinter <oliver.pinter@hardenedbsd.org>
To:        Hans Petter Selasky <hselasky@freebsd.org>
Cc:        "src-committers@freebsd.org" <src-committers@freebsd.org>,  "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>,  "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, freebsd-acpi@freebsd.org
Subject:   Re: svn commit: r309400 - head/sys/dev/acpica
Message-ID:  <CAPQ4ffu38KhH2WkeV8H8uwX9BDKf_x2SuF36X-3cA4%2BJZ1XQWQ@mail.gmail.com>
In-Reply-To: <201612020821.uB28L8s2000195@repo.freebsd.org>
References:  <201612020821.uB28L8s2000195@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--f46d0421a85915aa600542c6ae3f
Content-Type: text/plain; charset=UTF-8

On Fri, Dec 2, 2016 at 9:21 AM, Hans Petter Selasky
<hselasky@freebsd.org> wrote:
> Author: hselasky
> Date: Fri Dec  2 08:21:08 2016
> New Revision: 309400
> URL: https://svnweb.freebsd.org/changeset/base/309400
>
> Log:
>   Fix for endless recursion in the ACPI GPE handler during boot.
>
>   When handling a GPE ACPI interrupt object the EcSpaceHandler()
>   function can be called which checks the EC_EVENT_SCI bit and then
>   recurse on the EcGpeQueryHandler() function. If there are multiple GPE
>   events pending the EC_EVENT_SCI bit will be set at the next call to
>   EcSpaceHandler() causing it to recurse again via the
>   EcGpeQueryHandler() function. This leads to a slow never ending
>   recursion during boot which prevents proper system startup, because
>   the EC_EVENT_SCI bit never gets cleared in this scenario.
>
>   The behaviour is reproducible with the ALASKA AMI in combination with
>   a newer Skylake based mainboard in the following way:
>
>   Enter BIOS and adjust the clock one hour forward. Save and exit the
>   BIOS. System fails to boot due to the above mentioned bug in
>   EcGpeQueryHandler() which was observed recursing multiple times.
>
>   This patch adds a simple recursion guard to the EcGpeQueryHandler()
>   function and also also adds logic to detect if new GPE events occurred
>   during the execution of EcGpeQueryHandler() and then loop on this
>   function instead of recursing.
>
>   Reviewed by:          jhb
>   MFC after:            2 weeks
>
> Modified:
>   head/sys/dev/acpica/acpi_ec.c


I have similar error since the latest BIOS update on my gigabyte
H170N-Wifi board. The curiosity of the BIOS update was after upgrading
to this version, there are no possibility to rollback to older
version.

The other weird thing, is that MFCing back this patch does not help. I
get stucked lock in acmtx mutex, as you
could see from the attached log. The other interesting is the ACPI
error at boot time:

[1] ACPI Error: Mutex [0x0] is not acquired, cannot release
(20160527/utmutex-386)
[1] ACPI Error: Could not release AML Interpreter mutex (20160527/exutils-147)
[1] ACPI Error: Mutex [0x0] is not acquired, cannot release
(20160527/utmutex-386)
[1] ACPI Error: Could not release AML Interpreter mutex (20160527/exutils-147)
[1] cpu1: <ACPI CPU> on acpi0
[1] ACPI Error: Mutex [0x0] is not acquired, cannot release
(20160527/utmutex-386)
[1] ACPI Error: Could not release AML Interpreter mutex (20160527/exutils-147)
[1] ACPI Error: Mutex [0x0] is not acquired, cannot release
(20160527/utmutex-386)
[1] ACPI Error: Could not release AML Interpreter mutex (20160527/exutils-147)

(This error is on 10-STABLE.)

>
> Modified: head/sys/dev/acpica/acpi_ec.c
> ==============================================================================
> --- head/sys/dev/acpica/acpi_ec.c       Fri Dec  2 08:15:52 2016        (r309399)
> +++ head/sys/dev/acpica/acpi_ec.c       Fri Dec  2 08:21:08 2016        (r309400)
> @@ -613,16 +613,14 @@ EcCheckStatus(struct acpi_ec_softc *sc,
>  }
>
>  static void
> -EcGpeQueryHandler(void *Context)
> +EcGpeQueryHandlerSub(struct acpi_ec_softc *sc)
>  {
> -    struct acpi_ec_softc       *sc = (struct acpi_ec_softc *)Context;
>      UINT8                      Data;
>      ACPI_STATUS                        Status;
>      int                                retry;
>      char                       qxx[5];
>
>      ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
> -    KASSERT(Context != NULL, ("EcGpeQueryHandler called with NULL"));
>
>      /* Serialize user access with EcSpaceHandler(). */
>      Status = EcLock(sc);
> @@ -647,7 +645,6 @@ EcGpeQueryHandler(void *Context)
>             EC_EVENT_INPUT_BUFFER_EMPTY)))
>             break;
>      }
> -    sc->ec_sci_pend = FALSE;
>      if (ACPI_FAILURE(Status)) {
>         EcUnlock(sc);
>         device_printf(sc->ec_dev, "GPE query failed: %s\n",
> @@ -678,6 +675,29 @@ EcGpeQueryHandler(void *Context)
>      }
>  }
>
> +static void
> +EcGpeQueryHandler(void *Context)
> +{
> +    struct acpi_ec_softc *sc = (struct acpi_ec_softc *)Context;
> +    int pending;
> +
> +    KASSERT(Context != NULL, ("EcGpeQueryHandler called with NULL"));
> +
> +    do {
> +       /* Read the current pending count */
> +       pending = atomic_load_acq_int(&sc->ec_sci_pend);
> +
> +       /* Call GPE handler function */
> +       EcGpeQueryHandlerSub(sc);
> +
> +       /*
> +        * Try to reset the pending count to zero. If this fails we
> +        * know another GPE event has occurred while handling the
> +        * current GPE event and need to loop.
> +        */
> +    } while (!atomic_cmpset_int(&sc->ec_sci_pend, pending, 0));
> +}
> +
>  /*
>   * The GPE handler is called when IBE/OBF or SCI events occur.  We are
>   * called from an unknown lock context.
> @@ -706,13 +726,14 @@ EcGpeHandler(ACPI_HANDLE GpeDevice, UINT
>       * It will run the query and _Qxx method later, under the lock.
>       */
>      EcStatus = EC_GET_CSR(sc);
> -    if ((EcStatus & EC_EVENT_SCI) && !sc->ec_sci_pend) {
> +    if ((EcStatus & EC_EVENT_SCI) &&
> +       atomic_fetchadd_int(&sc->ec_sci_pend, 1) == 0) {
>         CTR0(KTR_ACPI, "ec gpe queueing query handler");
>         Status = AcpiOsExecute(OSL_GPE_HANDLER, EcGpeQueryHandler, Context);
> -       if (ACPI_SUCCESS(Status))
> -           sc->ec_sci_pend = TRUE;
> -       else
> +       if (ACPI_FAILURE(Status)) {
>             printf("EcGpeHandler: queuing GPE query handler failed\n");
> +           atomic_store_rel_int(&sc->ec_sci_pend, 0);
> +       }
>      }
>      return (ACPI_REENABLE_GPE);
>  }
> @@ -759,7 +780,8 @@ EcSpaceHandler(UINT32 Function, ACPI_PHY
>       * we call it directly here since our thread taskq is not active yet.
>       */
>      if (cold || rebooting || sc->ec_suspending) {
> -       if ((EC_GET_CSR(sc) & EC_EVENT_SCI)) {
> +       if ((EC_GET_CSR(sc) & EC_EVENT_SCI) &&
> +           atomic_fetchadd_int(&sc->ec_sci_pend, 1) == 0) {
>             CTR0(KTR_ACPI, "ec running gpe handler directly");
>             EcGpeQueryHandler(sc);
>         }
> _______________________________________________
> svn-src-head@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org"

--f46d0421a85915aa600542c6ae3f
Content-Type: application/octet-stream; name="sysctl.lockup"
Content-Disposition: attachment; filename="sysctl.lockup"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_iw9nn1fp0

cHJvY3N0YXQgLWsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBQSUQgICAgVElEIENPTU0gICAg
ICAgICAgICAgVEROQU1FICAgICAgICAgICBLU1RBQ0sgICAgICAgICAgICAgICAgICAgICAgIAo0
NzUzNiAxMDAxNDIgc3lzY3RsICAgICAgICAgICAtICAgICAgICAgICAgICAgIG1pX3N3aXRjaCBz
bGVlcHFfc3dpdGNoIHNsZWVwcV9jYXRjaF9zaWduYWxzIHNsZWVwcV93YWl0X3NpZyBfc2xlZXAg
QWNwaU9zQWNxdWlyZU11dGV4IEFjcGlVdEFjcXVpcmVNdXRleCBBY3BpRXhFbnRlckludGVycHJl
dGVyIEFjcGlOc0V2YWx1YXRlIEFjcGlVdEV2YWx1YXRlT2JqZWN0IEFjcGlVdEV4ZWN1dGVfSElE
IEFjcGlHZXRPYmplY3RJbmZvIGFjcGlfY2hpbGRfcG5waW5mb19zdHJfbWV0aG9kIGRldmljZV9z
eXNjdGxfaGFuZGxlciBzeXNjdGxfcm9vdCB1c2VybGFuZF9zeXNjdGwgc3lzX19fc3lzY3RsIGFt
ZDY0X3N5c2NhbGwgCgpwcm9jc3RhdCAta2sKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBJRCAg
ICBUSUQgQ09NTSAgICAgICAgICAgICBURE5BTUUgICAgICAgICAgIEtTVEFDSyAgICAgICAgICAg
ICAgICAgICAgICAgCjQ3NTM2IDEwMDE0MiBzeXNjdGwgICAgICAgICAgIC0gICAgICAgICAgICAg
ICAgbWlfc3dpdGNoKzB4MTU5IHNsZWVwcV9zd2l0Y2grMHgxMmUgc2xlZXBxX2NhdGNoX3NpZ25h
bHMrMHgyZGMgc2xlZXBxX3dhaXRfc2lnKzB4ZiBfc2xlZXArMHgzMTkgQWNwaU9zQWNxdWlyZU11
dGV4KzB4MTU1IEFjcGlVdEFjcXVpcmVNdXRleCsweDNhIEFjcGlFeEVudGVySW50ZXJwcmV0ZXIr
MHhiIEFjcGlOc0V2YWx1YXRlKzB4MWNiIEFjcGlVdEV2YWx1YXRlT2JqZWN0KzB4NGMgQWNwaVV0
RXhlY3V0ZV9ISUQrMHgyNyBBY3BpR2V0T2JqZWN0SW5mbysweGRlIGFjcGlfY2hpbGRfcG5waW5m
b19zdHJfbWV0aG9kKzB4MjQgZGV2aWNlX3N5c2N0bF9oYW5kbGVyKzB4MTFiIHN5c2N0bF9yb290
KzB4MWQ5IHVzZXJsYW5kX3N5c2N0bCsweDE5MiBzeXNfX19zeXNjdGwrMHg3NCBhbWQ2NF9zeXNj
YWxsKzB4Mjk4IAoKcGNpY29uZgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpob3N0YjBAcGNpMDow
OjA6MDoJY2xhc3M9MHgwNjAwMDAgY2FyZD0weDUwMDAxNDU4IGNoaXA9MHgxOTFmODA4NiByZXY9
MHgwNyBoZHI9MHgwMAogICAgdmVuZG9yICAgICA9ICdJbnRlbCBDb3Jwb3JhdGlvbicKICAgIGRl
dmljZSAgICAgPSAnU2t5bGFrZSBIb3N0IEJyaWRnZS9EUkFNIFJlZ2lzdGVycycKICAgIGNsYXNz
ICAgICAgPSBicmlkZ2UKICAgIHN1YmNsYXNzICAgPSBIT1NULVBDSQpwY2liMUBwY2kwOjA6MTow
OgljbGFzcz0weDA2MDQwMCBjYXJkPTB4NTAwMDE0NTggY2hpcD0weDE5MDE4MDg2IHJldj0weDA3
IGhkcj0weDAxCiAgICB2ZW5kb3IgICAgID0gJ0ludGVsIENvcnBvcmF0aW9uJwogICAgZGV2aWNl
ICAgICA9ICdTa3lsYWtlIFBDSWUgQ29udHJvbGxlciAoeDE2KScKICAgIGNsYXNzICAgICAgPSBi
cmlkZ2UKICAgIHN1YmNsYXNzICAgPSBQQ0ktUENJCnhoY2kwQHBjaTA6MDoyMDowOgljbGFzcz0w
eDBjMDMzMCBjYXJkPTB4NTAwNzE0NTggY2hpcD0weGExMmY4MDg2IHJldj0weDMxIGhkcj0weDAw
CiAgICB2ZW5kb3IgICAgID0gJ0ludGVsIENvcnBvcmF0aW9uJwogICAgZGV2aWNlICAgICA9ICdT
dW5yaXNlIFBvaW50LUggVVNCIDMuMCB4SENJIENvbnRyb2xsZXInCiAgICBjbGFzcyAgICAgID0g
c2VyaWFsIGJ1cwogICAgc3ViY2xhc3MgICA9IFVTQgpub25lMEBwY2kwOjA6MjI6MDoJY2xhc3M9
MHgwNzgwMDAgY2FyZD0weDFjM2ExNDU4IGNoaXA9MHhhMTNhODA4NiByZXY9MHgzMSBoZHI9MHgw
MAogICAgdmVuZG9yICAgICA9ICdJbnRlbCBDb3Jwb3JhdGlvbicKICAgIGRldmljZSAgICAgPSAn
U3VucmlzZSBQb2ludC1IIENTTUUgSEVDSScKICAgIGNsYXNzICAgICAgPSBzaW1wbGUgY29tbXMK
YWhjaTBAcGNpMDowOjIzOjA6CWNsYXNzPTB4MDEwNjAxIGNhcmQ9MHhiMDA1MTQ1OCBjaGlwPTB4
YTEwMjgwODYgcmV2PTB4MzEgaGRyPTB4MDAKICAgIHZlbmRvciAgICAgPSAnSW50ZWwgQ29ycG9y
YXRpb24nCiAgICBkZXZpY2UgICAgID0gJ1N1bnJpc2UgUG9pbnQtSCBTQVRBIGNvbnRyb2xsZXIg
W0FIQ0kgbW9kZV0nCiAgICBjbGFzcyAgICAgID0gbWFzcyBzdG9yYWdlCiAgICBzdWJjbGFzcyAg
ID0gU0FUQQpwY2liMkBwY2kwOjA6Mjc6MDoJY2xhc3M9MHgwNjA0MDAgY2FyZD0weDUwMDExNDU4
IGNoaXA9MHhhMTY5ODA4NiByZXY9MHhmMSBoZHI9MHgwMQogICAgdmVuZG9yICAgICA9ICdJbnRl
bCBDb3Jwb3JhdGlvbicKICAgIGRldmljZSAgICAgPSAnU3VucmlzZSBQb2ludC1IIFBDSSBSb290
IFBvcnQnCiAgICBjbGFzcyAgICAgID0gYnJpZGdlCiAgICBzdWJjbGFzcyAgID0gUENJLVBDSQpw
Y2liM0BwY2kwOjA6Mjc6MzoJY2xhc3M9MHgwNjA0MDAgY2FyZD0weDUwMDExNDU4IGNoaXA9MHhh
MTZhODA4NiByZXY9MHhmMSBoZHI9MHgwMQogICAgdmVuZG9yICAgICA9ICdJbnRlbCBDb3Jwb3Jh
dGlvbicKICAgIGRldmljZSAgICAgPSAnU3VucmlzZSBQb2ludC1IIFBDSSBSb290IFBvcnQnCiAg
ICBjbGFzcyAgICAgID0gYnJpZGdlCiAgICBzdWJjbGFzcyAgID0gUENJLVBDSQpwY2liNEBwY2kw
OjA6Mjg6MDoJY2xhc3M9MHgwNjA0MDAgY2FyZD0weDUwMDExNDU4IGNoaXA9MHhhMTEyODA4NiBy
ZXY9MHhmMSBoZHI9MHgwMQogICAgdmVuZG9yICAgICA9ICdJbnRlbCBDb3Jwb3JhdGlvbicKICAg
IGRldmljZSAgICAgPSAnU3VucmlzZSBQb2ludC1IIFBDSSBFeHByZXNzIFJvb3QgUG9ydCcKICAg
IGNsYXNzICAgICAgPSBicmlkZ2UKICAgIHN1YmNsYXNzICAgPSBQQ0ktUENJCnBjaWI1QHBjaTA6
MDoyODo0OgljbGFzcz0weDA2MDQwMCBjYXJkPTB4NTAwMTE0NTggY2hpcD0weGExMTQ4MDg2IHJl
dj0weGYxIGhkcj0weDAxCiAgICB2ZW5kb3IgICAgID0gJ0ludGVsIENvcnBvcmF0aW9uJwogICAg
ZGV2aWNlICAgICA9ICdTdW5yaXNlIFBvaW50LUggUENJIEV4cHJlc3MgUm9vdCBQb3J0JwogICAg
Y2xhc3MgICAgICA9IGJyaWRnZQogICAgc3ViY2xhc3MgICA9IFBDSS1QQ0kKcGNpYjZAcGNpMDow
OjI4OjU6CWNsYXNzPTB4MDYwNDAwIGNhcmQ9MHg1MDAxMTQ1OCBjaGlwPTB4YTExNTgwODYgcmV2
PTB4ZjEgaGRyPTB4MDEKICAgIHZlbmRvciAgICAgPSAnSW50ZWwgQ29ycG9yYXRpb24nCiAgICBk
ZXZpY2UgICAgID0gJ1N1bnJpc2UgUG9pbnQtSCBQQ0kgRXhwcmVzcyBSb290IFBvcnQnCiAgICBj
bGFzcyAgICAgID0gYnJpZGdlCiAgICBzdWJjbGFzcyAgID0gUENJLVBDSQpwY2liN0BwY2kwOjA6
Mjg6NjoJY2xhc3M9MHgwNjA0MDAgY2FyZD0weDUwMDExNDU4IGNoaXA9MHhhMTE2ODA4NiByZXY9
MHhmMSBoZHI9MHgwMQogICAgdmVuZG9yICAgICA9ICdJbnRlbCBDb3Jwb3JhdGlvbicKICAgIGRl
dmljZSAgICAgPSAnU3VucmlzZSBQb2ludC1IIFBDSSBFeHByZXNzIFJvb3QgUG9ydCcKICAgIGNs
YXNzICAgICAgPSBicmlkZ2UKICAgIHN1YmNsYXNzICAgPSBQQ0ktUENJCnBjaWI4QHBjaTA6MDoy
ODo3OgljbGFzcz0weDA2MDQwMCBjYXJkPTB4NTAwMTE0NTggY2hpcD0weGExMTc4MDg2IHJldj0w
eGYxIGhkcj0weDAxCiAgICB2ZW5kb3IgICAgID0gJ0ludGVsIENvcnBvcmF0aW9uJwogICAgZGV2
aWNlICAgICA9ICdTdW5yaXNlIFBvaW50LUggUENJIEV4cHJlc3MgUm9vdCBQb3J0JwogICAgY2xh
c3MgICAgICA9IGJyaWRnZQogICAgc3ViY2xhc3MgICA9IFBDSS1QQ0kKcGNpYjlAcGNpMDowOjI5
OjA6CWNsYXNzPTB4MDYwNDAwIGNhcmQ9MHg1MDAxMTQ1OCBjaGlwPTB4YTExODgwODYgcmV2PTB4
ZjEgaGRyPTB4MDEKICAgIHZlbmRvciAgICAgPSAnSW50ZWwgQ29ycG9yYXRpb24nCiAgICBkZXZp
Y2UgICAgID0gJ1N1bnJpc2UgUG9pbnQtSCBQQ0kgRXhwcmVzcyBSb290IFBvcnQnCiAgICBjbGFz
cyAgICAgID0gYnJpZGdlCiAgICBzdWJjbGFzcyAgID0gUENJLVBDSQppc2FiMEBwY2kwOjA6MzE6
MDoJY2xhc3M9MHgwNjAxMDAgY2FyZD0weDUwMDExNDU4IGNoaXA9MHhhMTQ0ODA4NiByZXY9MHgz
MSBoZHI9MHgwMAogICAgdmVuZG9yICAgICA9ICdJbnRlbCBDb3Jwb3JhdGlvbicKICAgIGRldmlj
ZSAgICAgPSAnU3VucmlzZSBQb2ludC1IIExQQyBDb250cm9sbGVyJwogICAgY2xhc3MgICAgICA9
IGJyaWRnZQogICAgc3ViY2xhc3MgICA9IFBDSS1JU0EKbm9uZTFAcGNpMDowOjMxOjI6CWNsYXNz
PTB4MDU4MDAwIGNhcmQ9MHg1MDAxMTQ1OCBjaGlwPTB4YTEyMTgwODYgcmV2PTB4MzEgaGRyPTB4
MDAKICAgIHZlbmRvciAgICAgPSAnSW50ZWwgQ29ycG9yYXRpb24nCiAgICBkZXZpY2UgICAgID0g
J1N1bnJpc2UgUG9pbnQtSCBQTUMnCiAgICBjbGFzcyAgICAgID0gbWVtb3J5CmhkYWMxQHBjaTA6
MDozMTozOgljbGFzcz0weDA0MDMwMCBjYXJkPTB4YTE4MjE0NTggY2hpcD0weGExNzA4MDg2IHJl
dj0weDMxIGhkcj0weDAwCiAgICB2ZW5kb3IgICAgID0gJ0ludGVsIENvcnBvcmF0aW9uJwogICAg
ZGV2aWNlICAgICA9ICdTdW5yaXNlIFBvaW50LUggSEQgQXVkaW8nCiAgICBjbGFzcyAgICAgID0g
bXVsdGltZWRpYQogICAgc3ViY2xhc3MgICA9IEhEQQpub25lMkBwY2kwOjA6MzE6NDoJY2xhc3M9
MHgwYzA1MDAgY2FyZD0weDUwMDExNDU4IGNoaXA9MHhhMTIzODA4NiByZXY9MHgzMSBoZHI9MHgw
MAogICAgdmVuZG9yICAgICA9ICdJbnRlbCBDb3Jwb3JhdGlvbicKICAgIGRldmljZSAgICAgPSAn
U3VucmlzZSBQb2ludC1IIFNNQnVzJwogICAgY2xhc3MgICAgICA9IHNlcmlhbCBidXMKICAgIHN1
YmNsYXNzICAgPSBTTUJ1cwplbTBAcGNpMDowOjMxOjY6CWNsYXNzPTB4MDIwMDAwIGNhcmQ9MHhl
MDAwMTQ1OCBjaGlwPTB4MTViODgwODYgcmV2PTB4MzEgaGRyPTB4MDAKICAgIHZlbmRvciAgICAg
PSAnSW50ZWwgQ29ycG9yYXRpb24nCiAgICBkZXZpY2UgICAgID0gJ0V0aGVybmV0IENvbm5lY3Rp
b24gKDIpIEkyMTktVicKICAgIGNsYXNzICAgICAgPSBuZXR3b3JrCiAgICBzdWJjbGFzcyAgID0g
ZXRoZXJuZXQKdmdhcGNpMEBwY2kwOjE6MDowOgljbGFzcz0weDAzMDAwMCBjYXJkPTB4ZTE2NDE3
NGIgY2hpcD0weDY4ZjkxMDAyIHJldj0weDAwIGhkcj0weDAwCiAgICB2ZW5kb3IgICAgID0gJ0Fk
dmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gW0FNRC9BVEldJwogICAgZGV2aWNlICAgICA9ICdD
ZWRhciBbUmFkZW9uIEhEIDUwMDAvNjAwMC83MzUwLzgzNTAgU2VyaWVzXScKICAgIGNsYXNzICAg
ICAgPSBkaXNwbGF5CiAgICBzdWJjbGFzcyAgID0gVkdBCmhkYWMwQHBjaTA6MTowOjE6CWNsYXNz
PTB4MDQwMzAwIGNhcmQ9MHhhYTY4MTc0YiBjaGlwPTB4YWE2ODEwMDIgcmV2PTB4MDAgaGRyPTB4
MDAKICAgIHZlbmRvciAgICAgPSAnQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBbQU1EL0FU
SV0nCiAgICBkZXZpY2UgICAgID0gJ0NlZGFyIEhETUkgQXVkaW8gW1JhZGVvbiBIRCA1NDAwLzYz
MDAvNzMwMCBTZXJpZXNdJwogICAgY2xhc3MgICAgICA9IG11bHRpbWVkaWEKICAgIHN1YmNsYXNz
ICAgPSBIREEKaWdiMEBwY2kwOjU6MDowOgljbGFzcz0weDAyMDAwMCBjYXJkPTB4ZTAwMDE0NTgg
Y2hpcD0weDE1Mzk4MDg2IHJldj0weDAzIGhkcj0weDAwCiAgICB2ZW5kb3IgICAgID0gJ0ludGVs
IENvcnBvcmF0aW9uJwogICAgZGV2aWNlICAgICA9ICdJMjExIEdpZ2FiaXQgTmV0d29yayBDb25u
ZWN0aW9uJwogICAgY2xhc3MgICAgICA9IG5ldHdvcmsKICAgIHN1YmNsYXNzICAgPSBldGhlcm5l
dApub25lM0BwY2kwOjY6MDowOgljbGFzcz0weDAyODAwMCBjYXJkPTB4MDAxMDgwODYgY2hpcD0w
eDI0ZjM4MDg2IHJldj0weDNhIGhkcj0weDAwCiAgICB2ZW5kb3IgICAgID0gJ0ludGVsIENvcnBv
cmF0aW9uJwogICAgZGV2aWNlICAgICA9ICdXaXJlbGVzcyA4MjYwJwogICAgY2xhc3MgICAgICA9
IG5ldHdvcmsKCmRtZXNnCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpbMV0gQ1BVOiBJbnRlbChS
KSBDb3JlKFRNKSBpNy02NzAwIENQVSBAIDMuNDBHSHogKDM0MDguMTMtTUh6IEs4LWNsYXNzIENQ
VSkKWzFdICAgT3JpZ2luPSJHZW51aW5lSW50ZWwiICBJZD0weDUwNmUzICBGYW1pbHk9MHg2ICBN
b2RlbD0weDVlICBTdGVwcGluZz0zClsxXSAgIEZlYXR1cmVzPTB4YmZlYmZiZmY8RlBVLFZNRSxE
RSxQU0UsVFNDLE1TUixQQUUsTUNFLENYOCxBUElDLFNFUCxNVFJSLFBHRSxNQ0EsQ01PVixQQVQs
UFNFMzYsQ0xGTFVTSCxEVFMsQUNQSSxNTVgsRlhTUixTU0UsU1NFMixTUyxIVFQsVE0sUEJFPgpb
MV0gICBGZWF0dXJlczI9MHg3ZmZhZmJmZjxTU0UzLFBDTE1VTFFEUSxEVEVTNjQsTU9OLERTX0NQ
TCxWTVgsU01YLEVTVCxUTTIsU1NTRTMsU0RCRyxGTUEsQ1gxNix4VFBSLFBEQ00sUENJRCxTU0U0
LjEsU1NFNC4yLHgyQVBJQyxNT1ZCRSxQT1BDTlQsVFNDRExULEFFU05JLFhTQVZFLE9TWFNBVkUs
QVZYLEYxNkMsUkRSQU5EPgpbMV0gICBBTUQgRmVhdHVyZXM9MHgyYzEwMDgwMDxTWVNDQUxMLE5Y
LFBhZ2UxR0IsUkRUU0NQLExNPgpbMV0gICBBTUQgRmVhdHVyZXMyPTB4MTIxPExBSEYsQUJNLFBy
ZWZldGNoPgpbMV0gICBTdHJ1Y3R1cmVkIEV4dGVuZGVkIEZlYXR1cmVzPTB4MjljNmZiZjxGU0dT
QkFTRSxUU0NBREosU0dYLEJNSTEsSExFLEFWWDIsU01FUCxCTUkyLEVSTVMsSU5WUENJRCxSVE0s
TkZQVVNHLE1QWCxSRFNFRUQsQURYLFNNQVAsQ0xGTFVTSE9QVCxQUk9DVFJBQ0U+ClsxXSAgIFhT
QVZFIEZlYXR1cmVzPTB4ZjxYU0FWRU9QVCxYU0FWRUMsWElOVVNFLFhTQVZFUz4KWzFdICAgVlQt
eDogUEFULEhMVCxNVEYsUEFVU0UsRVBULFVHLFZQSUQKWzFdICAgVFNDOiBQLXN0YXRlIGludmFy
aWFudCwgcGVyZm9ybWFuY2Ugc3RhdGlzdGljcwpbMV0gcmVhbCBtZW1vcnkgID0gMTcxNzk4Njkx
ODQgKDE2Mzg0IE1CKQpbMV0gYXZhaWwgbWVtb3J5ID0gMTY1MzU5ODIwODAgKDE1NzY5IE1CKQpb
MV0gRXZlbnQgdGltZXIgIkxBUElDIiBxdWFsaXR5IDYwMApbMV0gQUNQSSBBUElDIFRhYmxlOiA8
QUxBU0tBIEEgTSBJID4KWzFdIEZyZWVCU0QvU01QOiBNdWx0aXByb2Nlc3NvciBTeXN0ZW0gRGV0
ZWN0ZWQ6IDggQ1BVcwpbMV0gRnJlZUJTRC9TTVA6IDEgcGFja2FnZShzKSB4IDQgY29yZShzKSB4
IDIgU01UIHRocmVhZHMKWzFdICBjcHUwIChCU1ApOiBBUElDIElEOiAgMApbMV0gIGNwdTEgKEFQ
KTogQVBJQyBJRDogIDEKWzFdICBjcHUyIChBUCk6IEFQSUMgSUQ6ICAyClsxXSAgY3B1MyAoQVAp
OiBBUElDIElEOiAgMwpbMV0gIGNwdTQgKEFQKTogQVBJQyBJRDogIDQKWzFdICBjcHU1IChBUCk6
IEFQSUMgSUQ6ICA1ClsxXSAgY3B1NiAoQVApOiBBUElDIElEOiAgNgpbMV0gIGNwdTcgKEFQKTog
QVBJQyBJRDogIDcKCi4uLgoKWzFdIGFjcGkwOiA8QUxBU0tBIEEgTSBJID4gb24gbW90aGVyYm9h
cmQKWzFdIGFjcGkwOiBQb3dlciBCdXR0b24gKGZpeGVkKQpbMV0gY3B1MDogPEFDUEkgQ1BVPiBv
biBhY3BpMApbMV0gQUNQSSBFcnJvcjogTXV0ZXggWzB4MF0gaXMgbm90IGFjcXVpcmVkLCBjYW5u
b3QgcmVsZWFzZSAoMjAxNjA1MjcvdXRtdXRleC0zODYpClsxXSBBQ1BJIEVycm9yOiBDb3VsZCBu
b3QgcmVsZWFzZSBBTUwgSW50ZXJwcmV0ZXIgbXV0ZXggKDIwMTYwNTI3L2V4dXRpbHMtMTQ3KQpb
MV0gQUNQSSBFcnJvcjogTXV0ZXggWzB4MF0gaXMgbm90IGFjcXVpcmVkLCBjYW5ub3QgcmVsZWFz
ZSAoMjAxNjA1MjcvdXRtdXRleC0zODYpClsxXSBBQ1BJIEVycm9yOiBDb3VsZCBub3QgcmVsZWFz
ZSBBTUwgSW50ZXJwcmV0ZXIgbXV0ZXggKDIwMTYwNTI3L2V4dXRpbHMtMTQ3KQpbMV0gY3B1MTog
PEFDUEkgQ1BVPiBvbiBhY3BpMApbMV0gQUNQSSBFcnJvcjogTXV0ZXggWzB4MF0gaXMgbm90IGFj
cXVpcmVkLCBjYW5ub3QgcmVsZWFzZSAoMjAxNjA1MjcvdXRtdXRleC0zODYpClsxXSBBQ1BJIEVy
cm9yOiBDb3VsZCBub3QgcmVsZWFzZSBBTUwgSW50ZXJwcmV0ZXIgbXV0ZXggKDIwMTYwNTI3L2V4
dXRpbHMtMTQ3KQpbMV0gQUNQSSBFcnJvcjogTXV0ZXggWzB4MF0gaXMgbm90IGFjcXVpcmVkLCBj
YW5ub3QgcmVsZWFzZSAoMjAxNjA1MjcvdXRtdXRleC0zODYpClsxXSBBQ1BJIEVycm9yOiBDb3Vs
ZCBub3QgcmVsZWFzZSBBTUwgSW50ZXJwcmV0ZXIgbXV0ZXggKDIwMTYwNTI3L2V4dXRpbHMtMTQ3
KQpbMV0gY3B1MjogPEFDUEkgQ1BVPiBvbiBhY3BpMApbMV0gY3B1MzogPEFDUEkgQ1BVPiBvbiBh
Y3BpMApbMV0gY3B1NDogPEFDUEkgQ1BVPiBvbiBhY3BpMApbMV0gY3B1NTogPEFDUEkgQ1BVPiBv
biBhY3BpMApbMV0gY3B1NjogPEFDUEkgQ1BVPiBvbiBhY3BpMApbMV0gY3B1NzogPEFDUEkgQ1BV
PiBvbiBhY3BpMAoKa2VudgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzbWJpb3MuYmlvcy5yZWxk
YXRlPSIxMS8xMS8yMDE2IgpzbWJpb3MuYmlvcy52ZW5kb3I9IkFtZXJpY2FuIE1lZ2F0cmVuZHMg
SW5jLiIKc21iaW9zLmJpb3MudmVyc2lvbj0iRjIwIgpzbWJpb3MuY2hhc3Npcy5tYWtlcj0iRGVm
YXVsdCBzdHJpbmciCnNtYmlvcy5jaGFzc2lzLnNlcmlhbD0iRGVmYXVsdCBzdHJpbmciCnNtYmlv
cy5jaGFzc2lzLnRhZz0iRGVmYXVsdCBzdHJpbmciCnNtYmlvcy5jaGFzc2lzLnZlcnNpb249IkRl
ZmF1bHQgc3RyaW5nIgpzbWJpb3MubWVtb3J5LmVuYWJsZWQ9IjE2Nzc3MjE2IgpzbWJpb3MucGxh
bmFyLmxvY2F0aW9uPSJEZWZhdWx0IHN0cmluZyIKc21iaW9zLnBsYW5hci5tYWtlcj0iR2lnYWJ5
dGUgVGVjaG5vbG9neSBDby4sIEx0ZC4iCnNtYmlvcy5wbGFuYXIucHJvZHVjdD0iSDE3ME4tV0lG
SS1DRiIKc21iaW9zLnBsYW5hci5zZXJpYWw9IkRlZmF1bHQgc3RyaW5nIgpzbWJpb3MucGxhbmFy
LnRhZz0iRGVmYXVsdCBzdHJpbmciCnNtYmlvcy5wbGFuYXIudmVyc2lvbj0ieC54IgpzbWJpb3Mu
c29ja2V0LmVuYWJsZWQ9IjEiCnNtYmlvcy5zb2NrZXQucG9wdWxhdGVkPSIxIgpzbWJpb3Muc3lz
dGVtLm1ha2VyPSJHaWdhYnl0ZSBUZWNobm9sb2d5IENvLiwgTHRkLiIKc21iaW9zLnN5c3RlbS5w
cm9kdWN0PSJIMTcwTi1XSUZJIgpzbWJpb3Muc3lzdGVtLnNlcmlhbD0iRGVmYXVsdCBzdHJpbmci
CnNtYmlvcy5zeXN0ZW0udXVpZD0iWFhYWFhYWFgtWFhYWC1YWFhYLVhYWFgtWFhYWFhYWFhYWFhY
IgpzbWJpb3Muc3lzdGVtLnZlcnNpb249IkRlZmF1bHQgc3RyaW5nIgpzbWJpb3MudmVyc2lvbj0i
My4wIgo=
--f46d0421a85915aa600542c6ae3f--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPQ4ffu38KhH2WkeV8H8uwX9BDKf_x2SuF36X-3cA4%2BJZ1XQWQ>