Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pKJNs-0004o5-0R for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Jan 2023 13:30:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pKJNq-0007vp-Tj for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Jan 2023 13:30:42 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pKJNq-0007vd-8c for pgsql-hackers@lists.postgresql.org; Tue, 24 Jan 2023 13:30:42 +0000 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pKJNm-0006HW-IB for pgsql-hackers@postgresql.org; Tue, 24 Jan 2023 13:30:41 +0000 Received: by mail-ej1-x62a.google.com with SMTP id hw16so38937575ejc.10 for ; Tue, 24 Jan 2023 05:30:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-language:references:cc:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=uN2EVBEulJkiyqnigW5xHq6uCzDyML45IVUAfxZKikI=; b=G7Ba50abHuifUGEinhQndciy7k/0OPMcY+VulHQMX9J8oEzXlAcZ26oExH/SHAHK3n Ia6LGbn4t4oRmP5ONnSZTA6SKNe+pMsMZSHqHZemKmUQcedVnUWLzTVANAkfhJe1iJzY 9LxZ7Q/wLwS6kpNG2OjyPplvFfzpSidLS3RJ5R1pu1Nij2TgdoByXtMWsLcoc9R4RVB+ 25PfNuCtYgdBEO0SGjJYcyvq9gNqu5jMWGdJICvoE4eYe6HGsWSt+wYaVoQ34oIrgVyw VndRKzS1Il6+l2qRaNoNrUTN2iiv5qEV658wI+ph7zZEOMP2fFSU1hti6hZTX4OsJomd PVGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-language:references:cc:to:subject:from :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uN2EVBEulJkiyqnigW5xHq6uCzDyML45IVUAfxZKikI=; b=J/oHcjyQj02UgAE6zfBGrfOM5AkPQ1+kG5nNBjc7lV40uV0yC0EZaF0ImSeUMVCcgG 1zfgVFw37X0PWb6Lk+vuWWZktgZtjaZkpgs/dryc2eUvBX/oBJ9P6J3LQSFCtJlPbqOO dry8iXMX+wKfAGs4oZ/eiZZnZPKhjeFNVk9koPMOKDtOTbuA0Gvx5DVo9LZKy+/akWPW 84zWjfF+PAP5mdT86PoxnvOe+2pTLY9ofUMYQxD0LjPi/7EC7wdYGLKg69wTRqzc8aeT ETtDuTQiw4mBO1hqfqJbHINTRvT80worjtLqUIfq0E2Pq15lYiEOD8YeTO+20QydoMnE 833w== X-Gm-Message-State: AFqh2ko+rPBimk25zfRO92rjKTp1gBNUblpVVd3Qicawz6Wc0y5Z9rtF s6SyhJqsnknc+ZQYU6lX66I= X-Google-Smtp-Source: AMrXdXsg4MRRxmCTBFZMEe2AA6rqDXV+c/2wm/Qmde6/cOY1kSi9HkeLAzSuW+gGughO9/EpFE2Lgg== X-Received: by 2002:a17:906:c206:b0:870:827f:f78e with SMTP id d6-20020a170906c20600b00870827ff78emr25397243ejz.48.1674567037074; Tue, 24 Jan 2023 05:30:37 -0800 (PST) Received: from [172.16.209.129] ([147.161.235.10]) by smtp.gmail.com with ESMTPSA id i7-20020a1709064ec700b007c08439161dsm898235ejv.50.2023.01.24.05.30.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 24 Jan 2023 05:30:36 -0800 (PST) Content-Type: multipart/mixed; boundary="------------Uuvfjxkq0rYRjX08ET6qjYVh" Message-ID: Date: Tue, 24 Jan 2023 14:30:34 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 From: David Geier Subject: Re: Reduce timing overhead of EXPLAIN ANALYZE using rdtsc? To: Andres Freund Cc: Pavel Stehule , Tomas Vondra , vignesh C , Lukas Fittl , Michael Paquier , Ibrar Ahmed , Maciek Sakrejda , pgsql-hackers References: <24aa958f-0463-03d4-ce54-20b277c954c6@gmail.com> <20230121041439.zraxavau2wqf2ys3@awork3.anarazel.de> <20230123174158.rhmrbmjp6ycak64r@awork3.anarazel.de> Content-Language: en-US In-Reply-To: <20230123174158.rhmrbmjp6ycak64r@awork3.anarazel.de> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------Uuvfjxkq0rYRjX08ET6qjYVh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 1/23/23 18:41, Andres Freund wrote: > If we add it, it probably shouldn't depend on TIMING, but on > SUMMARY. Regression test queries showing EXPLAIN ANALYZE output all do > something like > EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) > > the SUMMARY OFF gets rid of the "top-level" "Planning Time" and "Execution > Time", whereas the TIMING OFF gets rid of the per-node timing. Those are > separate options because per-node timing is problematic performance-wise > (right now), but whole-query timing rarely is. Makes sense. I wasn't aware of SUMMARY. Let's keep this option in mind, in case we'll revisit exposing the clock source in the future. > Another, independent, thing worth thinking about: I think we might want to > expose both rdtsc and rdtscp. For something like > InstrStartNode()/InstrStopNode(), avoiding the "one-way barrier" of rdtscp is > quite important to avoid changing the query performance. But for measuring > whole-query time, we likely want to measure the actual time. > > It probably won't matter hugely for the whole query time - the out of order > window of modern CPUs is large, but not *that* large - but I don't think we > can generally assume that. That's what I thought as well. I added INSTR_TIME_SET_CURRENT_FAST() and for now call that variant from InstrStartNode(), InstrEndNode() and pg_test_timing. To do so in InstrEndNode(), I removed INSTR_TIME_SET_CURRENT_LAZY(). Otherwise, two variants of that macro would be needed. INSTR_TIME_SET_CURRENT_LAZY() was only used in a single place and the code is more readable that way. INSTR_TIME_SET_CURRENT() is called from a bunch of places. I still have to go through all of them and see which should be changed to call the _FAST() variant. Attached is v7 of the patch: - Rebased on latest master (most importantly on top of the int64 instr_time commits). - Includes two commits from Andres which introduce INSTR_TIME_SET_SECONDS(), INSTR_TIME_IS_LT() and WIP to report pg_test_timing output in nanoseconds. - Converts ticks to nanoseconds only with integer math, while accounting for overflow. - Supports RDTSCP via INSTR_TIME_SET_CURRENT() and introduced INSTR_TIME_SET_CURRENT_FAST() which uses RDTSC. I haven't gotten to the following: - Looking through all calls to INSTR_TIME_SET_CURRENT() and check if they should be replaced by INSTR_TIME_SET_CURRENT_FAST(). - Reviewing Andres commits. Potentially improving on pg_test_timing's output. - Looking at enabling RDTSC on more platforms. Is there a minimum set of platforms we would like support for? Windows should be easy. That would also allow to unify the code a little more. - Add more documentation and do more testing around the calls to CPUID. - Profiling and optimizing the code. A quick test showed about 10% improvement over master with TIMING ON vs TIMING OFF, when using the test-case from Andres' e-mail that started this thread. I hope I'll find time to work on these points during the next days. -- David Geier (ServiceNow) --------------Uuvfjxkq0rYRjX08ET6qjYVh Content-Type: text/x-patch; charset=UTF-8; name="v7-0001-instr_time-Add-INSTR_TIME_SET_SECONDS-INSTR_TIME_.patch" Content-Disposition: attachment; filename*0="v7-0001-instr_time-Add-INSTR_TIME_SET_SECONDS-INSTR_TIME_.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwYjVjZTcwNmJlZDEzYzBjMjQyZTZhY2U4MDlkM2MzN2E4MDY0MDI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwu ZGU+CkRhdGU6IEZyaSwgMjAgSmFuIDIwMjMgMTU6MzE6NTQgLTA4MDAKU3ViamVjdDogW1BB VENIIHY3IDEvM10gaW5zdHJfdGltZTogQWRkIElOU1RSX1RJTUVfU0VUX1NFQ09ORFMoKSwK IElOU1RSX1RJTUVfSVNfTFQoKQoKSU5TVFJfVElNRV9TRVRfU0VDT05EUygpIGlzIHVzZWZ1 bCB0byBjYWxjdWxhdGUgdGhlIGVuZCBvZiBhIHRpbWUtYm91bmQgbG9vcAp3aXRob3V0IGhh dmluZyB0byBjb252ZXJ0IGludG8gdGltZSB1bml0cyAod2hpY2ggaXMKY29zdGx5KS4gSU5T VFJfVElNRV9JU19MVCgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHRoZSBsb29wIGNvbmRpdGlv bi4KCkF1dGhvcjoKUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vCkJhY2twYXRjaDoKLS0tCiBzcmMvaW5jbHVkZS9wb3J0YWJpbGl0eS9pbnN0cl90aW1l LmggfCAxMiArKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIGIv c3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCmluZGV4IGNjODUxMzhlMjEu LmFhYjgwZWZmYjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BvcnRhYmlsaXR5L2luc3Ry X3RpbWUuaAorKysgYi9zcmMvaW5jbHVkZS9wb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgKQEAg LTE1LDYgKzE1LDggQEAKICAqCiAgKiBJTlNUUl9USU1FX0lTX1pFUk8odCkJCQlpcyB0IGVx dWFsIHRvIHplcm8/CiAgKgorICogSU5TVFJfVElNRV9JU19MVCh4LCB5KQkJCXggPCB5Cisg KgogICogSU5TVFJfVElNRV9TRVRfWkVSTyh0KQkJCXNldCB0IHRvIHplcm8gKG1lbXNldCBp cyBhY2NlcHRhYmxlIHRvbykKICAqCiAgKiBJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHQpCQlz ZXQgdCB0byBjdXJyZW50IHRpbWUKQEAgLTIyLDYgKzI0LDggQEAKICAqIElOU1RSX1RJTUVf U0VUX0NVUlJFTlRfTEFaWSh0KQlzZXQgdCB0byBjdXJyZW50IHRpbWUgaWYgdCBpcyB6ZXJv LAogICoJCQkJCQkJCQlldmFsdWF0ZXMgdG8gd2hldGhlciB0IGNoYW5nZWQKICAqCisgKiBJ TlNUUl9USU1FX1NFVF9TRUNPTkRTKHQsIHMpCQlzZXQgdCB0byBzIHNlY29uZHMKKyAqCiAg KiBJTlNUUl9USU1FX0FERCh4LCB5KQkJCQl4ICs9IHkKICAqCiAgKiBJTlNUUl9USU1FX1NV QlRSQUNUKHgsIHkpCQl4IC09IHkKQEAgLTEyMiw2ICsxMjYsOSBAQCBwZ19jbG9ja19nZXR0 aW1lX25zKHZvaWQpCiAjZGVmaW5lIElOU1RSX1RJTUVfU0VUX0NVUlJFTlQodCkgXAogCSgo dCkgPSBwZ19jbG9ja19nZXR0aW1lX25zKCkpCiAKKyNkZWZpbmUgSU5TVFJfVElNRV9TRVRf U0VDT05EUyh0LCBzKSBcCisJKCh0KS50aWNrcyA9IE5TX1BFUl9TICogKHMpKQorCiAjZGVm aW5lIElOU1RSX1RJTUVfR0VUX05BTk9TRUModCkgXAogCSgoaW50NjQpICh0KS50aWNrcykK IApAQCAtMTU2LDYgKzE2Myw5IEBAIEdldFRpbWVyRnJlcXVlbmN5KHZvaWQpCiAjZGVmaW5l IElOU1RSX1RJTUVfU0VUX0NVUlJFTlQodCkgXAogCSgodCkgPSBwZ19xdWVyeV9wZXJmb3Jt YW5jZV9jb3VudGVyKCkpCiAKKyNkZWZpbmUgSU5TVFJfVElNRV9TRVRfU0VDT05EUyh0LCBz KSBcCisJKCh0KS50aWNrcyA9IHMgKiBHZXRUaW1lckZyZXF1ZW5jeSgpKQorCiAjZGVmaW5l IElOU1RSX1RJTUVfR0VUX05BTk9TRUModCkgXAogCSgoaW50NjQpICgodCkudGlja3MgKiAo KGRvdWJsZSkgTlNfUEVSX1MgLyBHZXRUaW1lckZyZXF1ZW5jeSgpKSkpCiAKQEAgLTE2OCw2 ICsxNzgsOCBAQCBHZXRUaW1lckZyZXF1ZW5jeSh2b2lkKQogCiAjZGVmaW5lIElOU1RSX1RJ TUVfSVNfWkVSTyh0KQkoKHQpLnRpY2tzID09IDApCiAKKyNkZWZpbmUgSU5TVFJfVElNRV9J U19MVCh4LCB5KQkoKHgpLnRpY2tzIDwgKHkpLnRpY2tzKQorCiAKICNkZWZpbmUgSU5TVFJf VElNRV9TRVRfWkVSTyh0KQkoKHQpLnRpY2tzID0gMCkKIAotLSAKMi4zNC4xCgo= --------------Uuvfjxkq0rYRjX08ET6qjYVh Content-Type: text/x-patch; charset=UTF-8; name="v7-0002-wip-report-nanoseconds-in-pg_test_timing.patch" Content-Disposition: attachment; filename="v7-0002-wip-report-nanoseconds-in-pg_test_timing.patch" Content-Transfer-Encoding: base64 RnJvbSBjNjY2NDU1ZGM1MjY2MDdlMmNjNzAyMzlhMmRiZDFkNGMzM2VkOGJhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwu ZGU+CkRhdGU6IE1vbiwgMTYgSmFuIDIwMjMgMTE6MTk6MTEgLTA4MDAKU3ViamVjdDogW1BB VENIIHY3IDIvM10gd2lwOiByZXBvcnQgbmFub3NlY29uZHMgaW4gcGdfdGVzdF90aW1pbmcK ClRoaXMgY29tbWl0IGFsc28gdXBkYXRlcyBwZ190ZXN0X3RpbWluZydzIGRvY3VtZW50YXRp b246CgotIGNvbXBhcmUgRVhQTEFJTiAoQU5BTFlaRSwgVElNSU5HIE9OL09GRikgaW5zdGVh ZCBvZiBjb21wYXJpbmcgcGVyZm9ybWFuY2Ugb2YKICBvZiBzdGF0ZW1lbnQgd2l0aC93aXRo b3V0IEVYUExBSU4gQU5BTFlaRQotIGV4cGxhaW4gdGhlIDJ4IG92ZXJoZWFkIChkdWUgdG8g dHdvIHRpbWVzdGFtcCBhY3F1aXNpdGlvbnMgcGVyIHJvdykKLSByZW1vdmUgb2xkIHNlY3Rp b24gYWJvdXQgb2xkIHZlcnNpb25zIG9mIGxpbnV4IC0gSSBjb3VsZG4ndCB1cGRhdGUgdGhl CiAgbnVtYmVycywgYW5kIGl0J3Mgb2xkIGVub3VnaCBub2JvZHkgd291bGQgY2FyZQotLS0K IGRvYy9zcmMvc2dtbC9yZWYvcGd0ZXN0dGltaW5nLnNnbWwgICAgICB8IDExNyArKysrKysr KysrLS0tLS0tLS0tLS0tLS0KIHNyYy9iaW4vcGdfdGVzdF90aW1pbmcvcGdfdGVzdF90aW1p bmcuYyB8ICA3NCArKysrKysrKystLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0 aW9ucygrKSwgOTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9wZ3Rlc3R0aW1pbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGd0ZXN0dGltaW5nLnNn bWwKaW5kZXggYTVlYjNhYTI1ZS4uN2UwMjY2Y2Y1OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9wZ3Rlc3R0aW1pbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BndGVz dHRpbWluZy5zZ21sCkBAIC05MywyOCArOTMsMzQgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0 aW9uCiAKICAgPHBhcmE+CiAgICBHb29kIHJlc3VsdHMgd2lsbCBzaG93IG1vc3QgKD45MCUp IGluZGl2aWR1YWwgdGltaW5nIGNhbGxzIHRha2UgbGVzcyB0aGFuCi0gICBvbmUgbWljcm9z ZWNvbmQuIEF2ZXJhZ2UgcGVyIGxvb3Agb3ZlcmhlYWQgd2lsbCBiZSBldmVuIGxvd2VyLCBi ZWxvdyAxMDAKLSAgIG5hbm9zZWNvbmRzLiBUaGlzIGV4YW1wbGUgZnJvbSBhbiBJbnRlbCBp Ny04NjAgc3lzdGVtIHVzaW5nIGEgVFNDIGNsb2NrCi0gICBzb3VyY2Ugc2hvd3MgZXhjZWxs ZW50IHBlcmZvcm1hbmNlOgorICAgb25lIG1pY3Jvc2Vjb25kICgxMDAwIG5hbm9zZWNvbmRz KS4gQXZlcmFnZSBwZXIgbG9vcCBvdmVyaGVhZCB3aWxsIGJlIGV2ZW4KKyAgIGxvd2VyLCBi ZWxvdyAxMDAgbmFub3NlY29uZHMuIFRoaXMgZXhhbXBsZSBmcm9tIGFuIEludGVsIGk5LTk4 ODBIIHN5c3RlbQorICAgdXNpbmcgYSBUU0MgY2xvY2sgc291cmNlIHNob3dzIGV4Y2VsbGVu dCBwZXJmb3JtYW5jZToKIAogPHNjcmVlbj48IVtDREFUQVsKIFRlc3RpbmcgdGltaW5nIG92 ZXJoZWFkIGZvciAzIHNlY29uZHMuCi1QZXIgbG9vcCB0aW1lIGluY2x1ZGluZyBvdmVyaGVh ZDogMzUuOTYgbnMKK1BlciBsb29wIHRpbWUgaW5jbHVkaW5nIG92ZXJoZWFkOiAxMy43NCBu cwogSGlzdG9ncmFtIG9mIHRpbWluZyBkdXJhdGlvbnM6Ci0gIDwgdXMgICAlIG9mIHRvdGFs ICAgICAgY291bnQKLSAgICAgMSAgICAgOTYuNDA0NjUgICA4MDQzNTYwNAotICAgICAyICAg ICAgMy41OTUxOCAgICAyOTk5NjUyCi0gICAgIDQgICAgICAwLjAwMDE1ICAgICAgICAxMjYK LSAgICAgOCAgICAgIDAuMDAwMDIgICAgICAgICAxMwotICAgIDE2ICAgICAgMC4wMDAwMCAg ICAgICAgICAyCisgICAgIDwgbnMgICAlIG9mIHRvdGFsICAgICAgY291bnQKKyAgICAgICAx NiAgICAgOTcuMDAyMjEgIDIxMTg1NzIxNQorICAgICAgIDMyICAgICAgMi45OTU1NSAgICA2 NTQyNDEyCisgICAgICAgNjQgICAgICAwLjAwMTE1ICAgICAgIDI1MDUKKyAgICAgIDEyOCAg ICAgIDAuMDAwMzUgICAgICAgIDc1OQorICAgICAgMjU2ICAgICAgMC4wMDAwNCAgICAgICAg IDc4CisgICAgICA1MTIgICAgICAwLjAwMDAwICAgICAgICAgIDMKKyAgICAgMTAyNCAgICAg IDAuMDAwMDAgICAgICAgICAgNAorICAgICAyMDQ4ICAgICAgMC4wMDAzNCAgICAgICAgNzMy CisgICAgIDQwOTYgICAgICAwLjAwMDAwICAgICAgICAgIDYKKyAgICAgODE5MiAgICAgIDAu MDAwMDAgICAgICAgICAgOAorICAgIDE2Mzg0ICAgICAgMC4wMDAxOSAgICAgICAgNDA5Cisg ICAgMzI3NjggICAgICAwLjAwMDE4ICAgICAgICA0MDMKKyAgICA2NTUzNiAgICAgIDAuMDAw MDAgICAgICAgICAgMQogXV0+PC9zY3JlZW4+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAg IE5vdGUgdGhhdCBkaWZmZXJlbnQgdW5pdHMgYXJlIHVzZWQgZm9yIHRoZSBwZXIgbG9vcCB0 aW1lIHRoYW4gdGhlCi0gICBoaXN0b2dyYW0uIFRoZSBsb29wIGNhbiBoYXZlIHJlc29sdXRp b24gd2l0aGluIGEgZmV3IG5hbm9zZWNvbmRzIChucyksCi0gICB3aGlsZSB0aGUgaW5kaXZp ZHVhbCB0aW1pbmcgY2FsbHMgY2FuIG9ubHkgcmVzb2x2ZSBkb3duIHRvIG9uZSBtaWNyb3Nl Y29uZAotICAgKHVzKS4KKyAgIE5vdGUgdGhhdCB0aGUgYWNjdXJhY3kgb2YgdGhlIGhpc3Rv Z3JhbSBlbnRyaWVzIG1heSBiZSBsb3dlciB0aGFuIHRoZQorICAgcGVyIGxvb3AgdGltZS4K ICAgPC9wYXJhPgogCiAgPC9yZWZzZWN0Mj4KQEAgLTEyNSwyNCArMTMxLDI1IEBAIEhpc3Rv Z3JhbSBvZiB0aW1pbmcgZHVyYXRpb25zOgogICAgV2hlbiB0aGUgcXVlcnkgZXhlY3V0b3Ig aXMgcnVubmluZyBhIHN0YXRlbWVudCB1c2luZwogICAgPGNvbW1hbmQ+RVhQTEFJTiBBTkFM WVpFPC9jb21tYW5kPiwgaW5kaXZpZHVhbCBvcGVyYXRpb25zIGFyZSB0aW1lZCBhcyB3ZWxs CiAgICBhcyBzaG93aW5nIGEgc3VtbWFyeS4gIFRoZSBvdmVyaGVhZCBvZiB5b3VyIHN5c3Rl bSBjYW4gYmUgY2hlY2tlZCBieQotICAgY291bnRpbmcgcm93cyB3aXRoIHRoZSA8YXBwbGlj YXRpb24+cHNxbDwvYXBwbGljYXRpb24+IHByb2dyYW06CisgICBkaXNhYmxpbmcgdGhlIHBl ci1yb3cgdGltaW5nLCB1c2luZyB0aGUgPGxpdGVyYWw+VElNSU5HIE9GRjwvbGl0ZXJhbD4K KyAgIG9wdGlvbjoKIAogPHNjcmVlbj4KLUNSRUFURSBUQUJMRSB0IEFTIFNFTEVDVCAqIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMDAwKTsKLVx0aW1pbmcKLVNFTEVDVCBDT1VOVCgq KSBGUk9NIHQ7Ci1FWFBMQUlOIEFOQUxZWkUgU0VMRUNUIENPVU5UKCopIEZST00gdDsKK0NS RUFURSBUQUJMRSB0IEFTIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAw MCk7CitFWFBMQUlOIChBTkFMWVpFLCBUSU1JTkcgT0ZGKSBTRUxFQ1QgQ09VTlQoKikgRlJP TSB0OworRVhQTEFJTiAoQU5BTFlaRSwgVElNSU5HIE9OKSBTRUxFQ1QgQ09VTlQoKikgRlJP TSB0OwogPC9zY3JlZW4+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFRoZSBpNy04NjAg c3lzdGVtIG1lYXN1cmVkIHJ1bnMgdGhlIGNvdW50IHF1ZXJ5IGluIDkuOCBtcyB3aGlsZQot ICAgdGhlIDxjb21tYW5kPkVYUExBSU4gQU5BTFlaRTwvY29tbWFuZD4gdmVyc2lvbiB0YWtl cyAxNi42IG1zLCBlYWNoCi0gICBwcm9jZXNzaW5nIGp1c3Qgb3ZlciAxMDAsMDAwIHJvd3Mu ICBUaGF0IDYuOCBtcyBkaWZmZXJlbmNlIG1lYW5zIHRoZSB0aW1pbmcKLSAgIG92ZXJoZWFk IHBlciByb3cgaXMgNjggbnMsIGFib3V0IHR3aWNlIHdoYXQgcGdfdGVzdF90aW1pbmcgZXN0 aW1hdGVkIGl0Ci0gICB3b3VsZCBiZS4gIEV2ZW4gdGhhdCByZWxhdGl2ZWx5IHNtYWxsIGFt b3VudCBvZiBvdmVyaGVhZCBpcyBtYWtpbmcgdGhlIGZ1bGx5Ci0gICB0aW1lZCBjb3VudCBz dGF0ZW1lbnQgdGFrZSBhbG1vc3QgNzAlIGxvbmdlci4gIE9uIG1vcmUgc3Vic3RhbnRpYWwg cXVlcmllcywKLSAgIHRoZSB0aW1pbmcgb3ZlcmhlYWQgd291bGQgYmUgbGVzcyBwcm9ibGVt YXRpYy4KKyAgIFRoZSBpOS05ODgwSCBzeXN0ZW0gbWVhc3VyZWQgc2hvd3MgYW4gZXhlY3V0 aW9uIHRpbWUgb2YgNC4xMTYgbXMgZm9yIHRoZQorICAgPGxpdGVyYWw+VElNSU5HIE9GRjwv bGl0ZXJhbD4gcXVlcnksIGFuZCA2Ljk2NSBtcyBmb3IgdGhlCisgICA8bGl0ZXJhbD5USU1J TkcgT048L2xpdGVyYWw+LCBlYWNoIHByb2Nlc3NpbmcgMTAwLDAwMCByb3dzLgorCisgICBU aGF0IDIuODQ5IG1zIGRpZmZlcmVuY2UgbWVhbnMgdGhlIHRpbWluZyBvdmVyaGVhZCBwZXIg cm93IGlzIDI4IG5zLiAgQXMKKyAgIDxsaXRlcmFsPlRJTUlORyBPTjwvbGl0ZXJhbD4gbWVh c3VyZXMgdGltZXN0YW1wcyB0d2ljZSBwZXIgcm93IHJldHVybmVkIGJ5CisgICBhbiBleGVj dXRvciBub2RlLCB0aGUgb3ZlcmhlYWQgaXMgdmVyeSBjbG9zZSB0byB3aGF0IHBnX3Rlc3Rf dGltaW5nCisgICBlc3RpbWF0ZWQgaXQgd291bGQgYmUuCiAgIDwvcGFyYT4KIAogIDwvcmVm c2VjdDI+CkBAIC0xNTcsMjggKzE2NCwzMSBAQCBFWFBMQUlOIEFOQUxZWkUgU0VMRUNUIENP VU5UKCopIEZST00gdDsKIAogPHNjcmVlbj48IVtDREFUQVsKICMgY2F0IC9zeXMvZGV2aWNl cy9zeXN0ZW0vY2xvY2tzb3VyY2UvY2xvY2tzb3VyY2UwL2F2YWlsYWJsZV9jbG9ja3NvdXJj ZQotdHNjIGhwZXQgYWNwaV9wbQordHNjIGFjcGlfcG0KICMgZWNobyBhY3BpX3BtID4gL3N5 cy9kZXZpY2VzL3N5c3RlbS9jbG9ja3NvdXJjZS9jbG9ja3NvdXJjZTAvY3VycmVudF9jbG9j a3NvdXJjZQogIyBwZ190ZXN0X3RpbWluZwotUGVyIGxvb3AgdGltZSBpbmNsdWRpbmcgb3Zl cmhlYWQ6IDcyMi45MiBucworVGVzdGluZyB0aW1pbmcgb3ZlcmhlYWQgZm9yIDMgc2Vjb25k cy4KK1BlciBsb29wIHRpbWUgaW5jbHVkaW5nIG92ZXJoZWFkOiA3MDguNTggbnMKIEhpc3Rv Z3JhbSBvZiB0aW1pbmcgZHVyYXRpb25zOgotICA8IHVzICAgJSBvZiB0b3RhbCAgICAgIGNv dW50Ci0gICAgIDEgICAgIDI3Ljg0ODcwICAgIDExNTU2ODIKLSAgICAgMiAgICAgNzIuMDU5 NTYgICAgMjk5MDM3MQotICAgICA0ICAgICAgMC4wNzgxMCAgICAgICAzMjQxCi0gICAgIDgg ICAgICAwLjAxMzU3ICAgICAgICA1NjMKLSAgICAxNiAgICAgIDAuMDAwMDcgICAgICAgICAg MworICAgICA8IG5zICAgJSBvZiB0b3RhbCAgICAgIGNvdW50CisgICAgIDEwMjQgICAgIDk5 Ljc5Nzk2ICAgIDQyMjUyNzAKKyAgICAgMjA0OCAgICAgIDAuMTU1NjAgICAgICAgNjU4OAor ICAgICA0MDk2ICAgICAgMC4wMDAzNSAgICAgICAgIDE1CisgICAgIDgxOTIgICAgICAwLjAx NzM4ICAgICAgICA3MzYKKyAgICAxNjM4NCAgICAgIDAuMDE2NzkgICAgICAgIDcxMQorICAg IDMyNzY4ICAgICAgMC4wMTE5MCAgICAgICAgNTA0CiBdXT48L3NjcmVlbj4KICAgPC9wYXJh PgogCiAgIDxwYXJhPgogICAgSW4gdGhpcyBjb25maWd1cmF0aW9uLCB0aGUgc2FtcGxlIDxj b21tYW5kPkVYUExBSU4gQU5BTFlaRTwvY29tbWFuZD4gYWJvdmUKLSAgIHRha2VzIDExNS45 IG1zLiAgVGhhdCdzIDEwNjEgbnMgb2YgdGltaW5nIG92ZXJoZWFkLCBhZ2FpbiBhIHNtYWxs IG11bHRpcGxlCi0gICBvZiB3aGF0J3MgbWVhc3VyZWQgZGlyZWN0bHkgYnkgdGhpcyB1dGls aXR5LiAgVGhhdCBtdWNoIHRpbWluZyBvdmVyaGVhZAotICAgbWVhbnMgdGhlIGFjdHVhbCBx dWVyeSBpdHNlbGYgaXMgb25seSB0YWtpbmcgYSB0aW55IGZyYWN0aW9uIG9mIHRoZQotICAg YWNjb3VudGVkIGZvciB0aW1lLCBtb3N0IG9mIGl0IGlzIGJlaW5nIGNvbnN1bWVkIGluIG92 ZXJoZWFkIGluc3RlYWQuICBJbgotICAgdGhpcyBjb25maWd1cmF0aW9uLCBhbnkgPGNvbW1h bmQ+RVhQTEFJTiBBTkFMWVpFPC9jb21tYW5kPiB0b3RhbHMgaW52b2x2aW5nCi0gICBtYW55 IHRpbWVkIG9wZXJhdGlvbnMgd291bGQgYmUgaW5mbGF0ZWQgc2lnbmlmaWNhbnRseSBieSB0 aW1pbmcgb3ZlcmhlYWQuCisgICBzaG93cyBhbiBleGVjdXRpb24gdGltZSBvZiAxNDguNyBt cy4gIFRoYXQncyAxMzkyIG5zIG9mIHBlci1yb3cgdGltaW5nCisgICBvdmVyaGVhZC4gIFRh a2luZyB0aGUgdHdvIHRpbWVzdGFtcHMgcGVyIHJvdyBpbnRvIGFjY291bnQsIHRoYXQncyBh Z2FpbgorICAgY2xvc2UgdG8gd2hhdCBwZ190ZXN0X3RpbWluZyBlc3RpbWF0ZWQuICBUaGF0 IG11Y2ggdGltaW5nIG92ZXJoZWFkIG1lYW5zCisgICB0aGUgYWN0dWFsIHF1ZXJ5IGl0c2Vs ZiBpcyBvbmx5IHRha2luZyBhIHRpbnkgZnJhY3Rpb24gb2YgdGhlIGFjY291bnRlZCBmb3IK KyAgIHRpbWUsIG1vc3Qgb2YgaXQgaXMgYmVpbmcgY29uc3VtZWQgaW4gb3ZlcmhlYWQgaW5z dGVhZC4gIEluIHRoaXMKKyAgIGNvbmZpZ3VyYXRpb24sIGFueSA8Y29tbWFuZD5FWFBMQUlO IEFOQUxZWkU8L2NvbW1hbmQ+IHRvdGFscyBpbnZvbHZpbmcgbWFueQorICAgdGltZWQgb3Bl cmF0aW9ucyB3b3VsZCBiZSBpbmZsYXRlZCBzaWduaWZpY2FudGx5IGJ5IHRpbWluZyBvdmVy aGVhZC4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtMTk2LDMzICsyMDYsNiBAQCBrZXJu LnRpbWVjb3VudGVyLmhhcmR3YXJlOiBBQ1BJLWZhc3QgLT4gVFNDCiA8L3NjcmVlbj4KICAg PC9wYXJhPgogCi0gIDxwYXJhPgotICAgT3RoZXIgc3lzdGVtcyBtYXkgb25seSBhbGxvdyBz ZXR0aW5nIHRoZSB0aW1lIHNvdXJjZSBvbiBib290LiAgT24gb2xkZXIKLSAgIExpbnV4IHN5 c3RlbXMgdGhlICJjbG9jayIga2VybmVsIHNldHRpbmcgaXMgdGhlIG9ubHkgd2F5IHRvIG1h a2UgdGhpcyBzb3J0Ci0gICBvZiBjaGFuZ2UuICBBbmQgZXZlbiBvbiBzb21lIG1vcmUgcmVj ZW50IG9uZXMsIHRoZSBvbmx5IG9wdGlvbiB5b3UnbGwgc2VlCi0gICBmb3IgYSBjbG9jayBz b3VyY2UgaXMgImppZmZpZXMiLiAgSmlmZmllcyBhcmUgdGhlIG9sZGVyIExpbnV4IHNvZnR3 YXJlIGNsb2NrCi0gICBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggY2FuIGhhdmUgZ29vZCByZXNv bHV0aW9uIHdoZW4gaXQncyBiYWNrZWQgYnkgZmFzdAotICAgZW5vdWdoIHRpbWluZyBoYXJk d2FyZSwgYXMgaW4gdGhpcyBleGFtcGxlOgotCi08c2NyZWVuPjwhW0NEQVRBWwotJCBjYXQg L3N5cy9kZXZpY2VzL3N5c3RlbS9jbG9ja3NvdXJjZS9jbG9ja3NvdXJjZTAvYXZhaWxhYmxl X2Nsb2Nrc291cmNlCi1qaWZmaWVzCi0kIGRtZXNnIHwgZ3JlcCB0aW1lLmMKLXRpbWUuYzog VXNpbmcgMy41Nzk1NDUgTUh6IFdBTEwgUE0gR1RPRCBQSVQvVFNDIHRpbWVyLgotdGltZS5j OiBEZXRlY3RlZCAyNDAwLjE1MyBNSHogcHJvY2Vzc29yLgotJCBwZ190ZXN0X3RpbWluZwot VGVzdGluZyB0aW1pbmcgb3ZlcmhlYWQgZm9yIDMgc2Vjb25kcy4KLVBlciB0aW1pbmcgZHVy YXRpb24gaW5jbHVkaW5nIGxvb3Agb3ZlcmhlYWQ6IDk3Ljc1IG5zCi1IaXN0b2dyYW0gb2Yg dGltaW5nIGR1cmF0aW9uczoKLSAgPCB1cyAgICUgb2YgdG90YWwgICAgICBjb3VudAotICAg ICAxICAgICA5MC4yMzczNCAgIDI3Njk0NTcxCi0gICAgIDIgICAgICA5Ljc1Mjc3ICAgIDI5 OTMyMDQKLSAgICAgNCAgICAgIDAuMDA5ODEgICAgICAgMzAxMAotICAgICA4ICAgICAgMC4w MDAwNyAgICAgICAgIDIyCi0gICAgMTYgICAgICAwLjAwMDAwICAgICAgICAgIDEKLSAgICAz MiAgICAgIDAuMDAwMDAgICAgICAgICAgMQotXV0+PC9zY3JlZW4+PC9wYXJhPgotCiAgPC9y ZWZzZWN0Mj4KIAogIDxyZWZzZWN0Mj4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdGVzdF90 aW1pbmcvcGdfdGVzdF90aW1pbmcuYyBiL3NyYy9iaW4vcGdfdGVzdF90aW1pbmcvcGdfdGVz dF90aW1pbmcuYwppbmRleCBjMjlkNmY4NzYyLi5lMjA3MTg2NjlhIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3Rlc3RfdGltaW5nL3BnX3Rlc3RfdGltaW5nLmMKKysrIGIvc3JjL2Jpbi9w Z190ZXN0X3RpbWluZy9wZ190ZXN0X3RpbWluZy5jCkBAIC0xOSw4ICsxOSw4IEBAIHN0YXRp YyB2b2lkIGhhbmRsZV9hcmdzKGludCBhcmdjLCBjaGFyICphcmd2W10pOwogc3RhdGljIHVp bnQ2NCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pOwogc3RhdGljIHZvaWQg b3V0cHV0KHVpbnQ2NCBsb29wX2NvdW50KTsKIAotLyogcmVjb3JkIGR1cmF0aW9uIGluIHBv d2VycyBvZiAyIG1pY3Jvc2Vjb25kcyAqLwotbG9uZyBsb25nIGludCBoaXN0b2dyYW1bMzJd OworLyogcmVjb3JkIGR1cmF0aW9uIGluIHBvd2VycyBvZiAyIG5hbm9zZWNvbmRzICovCit1 aW50NjQJCWhpc3RvZ3JhbVs2NF07CiAKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQpAQCAtMTIxLDM1ICsxMjEsNDggQEAgaGFuZGxlX2FyZ3MoaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIHN0YXRpYyB1aW50NjQKIHRlc3RfdGltaW5nKHVuc2lnbmVkIGludCBkdXJh dGlvbikKIHsKLQl1aW50NjQJCXRvdGFsX3RpbWU7Ci0JaW50NjQJCXRpbWVfZWxhcHNlZCA9 IDA7CiAJdWludDY0CQlsb29wX2NvdW50ID0gMDsKLQl1aW50NjQJCXByZXYsCi0JCQkJY3Vy OworCWluc3RyX3RpbWUJdW50aWxfdGltZSwKKwkJCQl0b3RhbF90aW1lOwogCWluc3RyX3Rp bWUJc3RhcnRfdGltZSwKLQkJCQllbmRfdGltZSwKLQkJCQl0ZW1wOwotCi0JdG90YWxfdGlt ZSA9IGR1cmF0aW9uID4gMCA/IGR1cmF0aW9uICogSU5UNjRDT05TVCgxMDAwMDAwKSA6IDA7 CisJCQkJZW5kX3RpbWU7CisJaW5zdHJfdGltZQljdXI7CiAKIAlJTlNUUl9USU1FX1NFVF9D VVJSRU5UKHN0YXJ0X3RpbWUpOwotCWN1ciA9IElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKHN0 YXJ0X3RpbWUpOwogCi0Jd2hpbGUgKHRpbWVfZWxhcHNlZCA8IHRvdGFsX3RpbWUpCisJLyoK KwkgKiBUbyByZWR1Y2UgbG9vcCBvdmVyaGVhZCwgY2hlY2sgbG9vcCBjb25kaXRpb24gaW4g aW5zdHJfdGltZSBkb21haW4uCisJICovCisJSU5TVFJfVElNRV9TRVRfU0VDT05EUyh0b3Rh bF90aW1lLCBkdXJhdGlvbik7CisJdW50aWxfdGltZSA9IHN0YXJ0X3RpbWU7CisJSU5TVFJf VElNRV9BREQodW50aWxfdGltZSwgdG90YWxfdGltZSk7CisKKwljdXIgPSBzdGFydF90aW1l OworCisJd2hpbGUgKElOU1RSX1RJTUVfSVNfTFQoY3VyLCB1bnRpbF90aW1lKSkKIAl7Ci0J CWludDMyCQlkaWZmLAotCQkJCQliaXRzID0gMDsKKwkJaW5zdHJfdGltZQl0ZW1wOworCQlp bnN0cl90aW1lCXByZXY7CisJCWludDY0CQlkaWZmOworCQlpbnQzMgkJYml0cyA9IDA7CiAK IAkJcHJldiA9IGN1cjsKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0ZW1wKTsKLQkJY3Vy ID0gSU5TVFJfVElNRV9HRVRfTUlDUk9TRUModGVtcCk7Ci0JCWRpZmYgPSBjdXIgLSBwcmV2 OworCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGN1cik7CisJCXRlbXAgPSBjdXI7CisJCUlO U1RSX1RJTUVfU1VCVFJBQ1QodGVtcCwgcHJldik7CisJCWRpZmYgPSBJTlNUUl9USU1FX0dF VF9OQU5PU0VDKHRlbXApOwogCiAJCS8qIERpZCB0aW1lIGdvIGJhY2t3YXJkcz8gKi8KLQkJ aWYgKGRpZmYgPCAwKQorCQlpZiAodW5saWtlbHkoZGlmZiA8PSAwKSkKIAkJeworCQkJLyog Y2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGF0IG1lYXN1cmVtZW50ICovCisJCQlpZiAoZGlm ZiA9PSAwKQorCQkJeworCQkJCWxvb3BfY291bnQrKzsKKwkJCQljb250aW51ZTsKKwkJCX0K IAkJCWZwcmludGYoc3RkZXJyLCBfKCJEZXRlY3RlZCBjbG9jayBnb2luZyBiYWNrd2FyZHMg aW4gdGltZS5cbiIpKTsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCJUaW1lIHdhcnA6ICVkIG1z XG4iKSwgZGlmZik7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygiVGltZSB3YXJwOiAlbGxkIG5z XG4iKSwgKGxvbmcgbG9uZykgZGlmZik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTE2NCw4 ICsxNzcsNiBAQCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAJCWhpc3Rv Z3JhbVtiaXRzXSsrOwogCiAJCWxvb3BfY291bnQrKzsKLQkJSU5TVFJfVElNRV9TVUJUUkFD VCh0ZW1wLCBzdGFydF90aW1lKTsKLQkJdGltZV9lbGFwc2VkID0gSU5TVFJfVElNRV9HRVRf TUlDUk9TRUModGVtcCk7CiAJfQogCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChlbmRfdGlt ZSk7CkBAIC0xNzMsNyArMTg0LDcgQEAgdGVzdF90aW1pbmcodW5zaWduZWQgaW50IGR1cmF0 aW9uKQogCUlOU1RSX1RJTUVfU1VCVFJBQ1QoZW5kX3RpbWUsIHN0YXJ0X3RpbWUpOwogCiAJ cHJpbnRmKF8oIlBlciBsb29wIHRpbWUgaW5jbHVkaW5nIG92ZXJoZWFkOiAlMC4yZiBuc1xu IiksCi0JCSAgIElOU1RSX1RJTUVfR0VUX0RPVUJMRShlbmRfdGltZSkgKiAxZTkgLyBsb29w X2NvdW50KTsKKwkJICAgKElOU1RSX1RJTUVfR0VUX0RPVUJMRShlbmRfdGltZSkgKiBOU19Q RVJfUykgLyBsb29wX2NvdW50KTsKIAogCXJldHVybiBsb29wX2NvdW50OwogfQpAQCAtMTgx LDkgKzE5MiwxMCBAQCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiBzdGF0 aWMgdm9pZAogb3V0cHV0KHVpbnQ2NCBsb29wX2NvdW50KQogewotCWludDY0CQltYXhfYml0 ID0gMzEsCisJaW50NjQJCWxvd19iaXQgPSAwLAorCQkJCW1heF9iaXQgPSA2MywKIAkJCQlp OwotCWNoYXIJICAgKmhlYWRlcjEgPSBfKCI8IHVzIik7CisJY2hhcgkgICAqaGVhZGVyMSA9 IF8oIjwgbnMiKTsKIAljaGFyCSAgICpoZWFkZXIyID0gLyogeGdldHRleHQ6bm8tYy1mb3Jt YXQgKi8gXygiJSBvZiB0b3RhbCIpOwogCWNoYXIJICAgKmhlYWRlcjMgPSBfKCJjb3VudCIp OwogCWludAkJCWxlbjEgPSBzdHJsZW4oaGVhZGVyMSk7CkBAIC0xOTQsMTUgKzIwNiwxOSBA QCBvdXRwdXQodWludDY0IGxvb3BfY291bnQpCiAJd2hpbGUgKG1heF9iaXQgPiAwICYmIGhp c3RvZ3JhbVttYXhfYml0XSA9PSAwKQogCQltYXhfYml0LS07CiAKKwkvKiBmaW5kIGxvd2Vz dCBiaXQgdmFsdWUgKi8KKwl3aGlsZSAobG93X2JpdCA8IG1heF9iaXQgJiYgaGlzdG9ncmFt W2xvd19iaXRdID09IDApCisJCWxvd19iaXQrKzsKKwogCXByaW50ZihfKCJIaXN0b2dyYW0g b2YgdGltaW5nIGR1cmF0aW9uczpcbiIpKTsKIAlwcmludGYoIiUqcyAgICUqcyAlKnNcbiIs Ci0JCSAgIE1heCg2LCBsZW4xKSwgaGVhZGVyMSwKKwkJICAgTWF4KDksIGxlbjEpLCBoZWFk ZXIxLAogCQkgICBNYXgoMTAsIGxlbjIpLCBoZWFkZXIyLAogCQkgICBNYXgoMTAsIGxlbjMp LCBoZWFkZXIzKTsKIAotCWZvciAoaSA9IDA7IGkgPD0gbWF4X2JpdDsgaSsrKQotCQlwcmlu dGYoIiUqbGQgICAgJSouNWYgJSpsbGRcbiIsCi0JCQkgICBNYXgoNiwgbGVuMSksIDFsIDw8 IGksCisJZm9yIChpID0gbG93X2JpdDsgaSA8PSBtYXhfYml0OyBpKyspCisJCXByaW50Zigi JSpsZCAgICAlKi41ZiAlKmxsdVxuIiwKKwkJCSAgIE1heCg5LCBsZW4xKSwgMWwgPDwgaSwK IAkJCSAgIE1heCgxMCwgbGVuMikgLSAxLCAoZG91YmxlKSBoaXN0b2dyYW1baV0gKiAxMDAg LyBsb29wX2NvdW50LAotCQkJICAgTWF4KDEwLCBsZW4zKSwgaGlzdG9ncmFtW2ldKTsKKwkJ CSAgIE1heCgxMCwgbGVuMyksIChsb25nIGxvbmcgdW5zaWduZWQpIGhpc3RvZ3JhbVtpXSk7 CiB9Ci0tIAoyLjM0LjEKCg== --------------Uuvfjxkq0rYRjX08ET6qjYVh Content-Type: text/x-patch; charset=UTF-8; name="v7-0003-Use-RDTSC-P-instructions-to-measure-time-on-x86-L.patch" Content-Disposition: attachment; filename*0="v7-0003-Use-RDTSC-P-instructions-to-measure-time-on-x86-L.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2NzNkNDM1NWMwNjgxNzJlYzFhMDQ1MjMyMzlkMjZmZmJkNDFlZWY1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAyMyBKYW4gMjAyMyAxODoxMzo1NSArMDEwMApTdWJqZWN0OiBbUEFU Q0ggdjcgMy8zXSBVc2UgUkRUU0MoUCkgaW5zdHJ1Y3Rpb25zIHRvIG1lYXN1cmUgdGltZSBv biB4ODYgTGludXgKCkZvciBub3cgdGhpcyBpcyBvbmx5IGVuYWJsZWQgb24gTGludXgveDg2 IHdoZW4gdGhlIHN5c3RlbSBjbG9ja3NvdXJjZSBpcwptYXJrZWQgdHNjIGFzIHdlbGwsIGFz IGRldGVybWluZWQgYXQgcnVudGltZS4gVGhpcyB3YXkgd2UgY2FuIHJlbHkgb24gdGhlCkxp bnV4IGtlcm5lbCB0byBtYWtlIGEgZGVjaXNpb24gd2hldGhlciB0c2MgaXMgaW52YXJpYW50 IGFuZCB1c2FibGUgb24gdGhlCmN1cnJlbnQgQ1BVIGFyY2hpdGVjdHVyZS4gSW4gYWxsIG90 aGVyIGNhc2VzIHdlIGNvbnRpbnVlIHRvIHVzZSB0aGUKY2xvY2tfZ2V0dGltZSgpIGltcGxl bWVudGF0aW9uIGxpa2UgYmVmb3JlLgoKTm90ZSB0aGF0IHRoaXMgaW50ZW50aW9uYWxseSB1 c2VzIHJkdHNjLCBub3QgcmR0c2NwLCBhcyByZHRzY3Agd2FpdHMgZm9yCmN1cnJlbnRseSBy dW5uaW5nIENQVSBpbnN0cnVjdGlvbnMgdG8gaGF2ZSBmaW5pc2hlZCwgYW5kIHRoYXQgYWRk cyB1cCB0bwpub3RpY2FibGUgbGF0ZW5jeSBmb3IgbGl0dGxlIGJlbmVmaXQgaW4gdGhlIHR5 cGljYWwgSW5zdHJTdGFydE5vZGUoKSAvCkluc3RyU3RvcE5vZGUoKSB1c2UgY2FzZS4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgfCAgIDMgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICB8ICAgMiArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jICAgICAgIHwgIDEyICstCiBzcmMvYmFja2Vu ZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgfCAgIDMgKwogc3JjL2Jpbi9wZ190ZXN0 X3RpbWluZy9wZ190ZXN0X3RpbWluZy5jIHwgICA3ICstCiBzcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYyAg ICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9jb21tb24vTWFrZWZpbGUgICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvY29tbW9uL2luc3RyX3RpbWUuYyAgICAgICAgICAg ICAgICAgfCAxNTcgKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvY29tbW9uL21lc29u LmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9ydGFiaWxp dHkvaW5zdHJfdGltZS5oICAgIHwgMTMwICsrKysrKysrKysrKysrKystLS0tCiBzcmMvdG9v bHMvbXN2Yy9Na3ZjYnVpbGQucG0gICAgICAgICAgICAgfCAgIDIgKy0KIDEyIGZpbGVzIGNo YW5nZWQsIDI5MyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvY29tbW9uL2luc3RyX3RpbWUuYwoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwppbmRleCA4ZjE0Y2Y4NWYzLi4yMTIwOTM1NjhiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0zMDAyLDggKzMwMDIsNyBAQCBjb3Vu dF9ub25kZWxldGFibGVfcGFnZXMoTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpsb2NrX3dh aXRlcl9kZXRlY3RlZCkKIAkJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoY3VycmVudHRpbWUp OwogCQkJZWxhcHNlZCA9IGN1cnJlbnR0aW1lOwogCQkJSU5TVFJfVElNRV9TVUJUUkFDVChl bGFwc2VkLCBzdGFydHRpbWUpOwotCQkJaWYgKChJTlNUUl9USU1FX0dFVF9NSUNST1NFQyhl bGFwc2VkKSAvIDEwMDApCi0JCQkJPj0gVkFDVVVNX1RSVU5DQVRFX0xPQ0tfQ0hFQ0tfSU5U RVJWQUwpCisJCQlpZiAoSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoZWxhcHNlZCkgPj0gVkFD VVVNX1RSVU5DQVRFX0xPQ0tfQ0hFQ0tfSU5URVJWQUwpCiAJCQl7CiAJCQkJaWYgKExvY2tI YXNXYWl0ZXJzUmVsYXRpb24odmFjcmVsLT5yZWwsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spKQog CQkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA1MjEyYTY0YjFlLi5jNGM0Y2Ni ZWJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC01MjYsNyArNTI2LDcgQEAgRXhw bGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRv LCBFeHBsYWluU3RhdGUgKmVzLAogCWRvdWJsZQkJdG90YWx0aW1lID0gMDsKIAlpbnQJCQll ZmxhZ3M7CiAJaW50CQkJaW5zdHJ1bWVudF9vcHRpb24gPSAwOwotCisgICAgCiAJQXNzZXJ0 KHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSk7CiAKIAlpZiAoZXMt PmFuYWx5emUgJiYgZXMtPnRpbWluZykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2luc3RydW1lbnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpp bmRleCBlZTc4YTU3NDlkLi4xY2UzZDYyY2ZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1 bWVudC5jCkBAIC02Nyw5ICs2NywxMyBAQCBJbnN0ckluaXQoSW5zdHJ1bWVudGF0aW9uICpp bnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHZvaWQKIEluc3RyU3RhcnROb2RlKElu c3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JaWYgKGluc3RyLT5uZWVkX3RpbWVyICYmCi0J CSFJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0xBWlkoaW5zdHItPnN0YXJ0dGltZSkpCi0JCWVs b2coRVJST1IsICJJbnN0clN0YXJ0Tm9kZSBjYWxsZWQgdHdpY2UgaW4gYSByb3ciKTsKKwlp ZiAoaW5zdHItPm5lZWRfdGltZXIpCisJeworCQlpZiAoIUlOU1RSX1RJTUVfSVNfWkVSTyhp bnN0ci0+c3RhcnR0aW1lKSkKKwkJCWVsb2coRVJST1IsICJJbnN0clN0YXJ0Tm9kZSBjYWxs ZWQgdHdpY2UgaW4gYSByb3ciKTsKKwkJZWxzZQorCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VF9GQVNUKGluc3RyLT5zdGFydHRpbWUpOworCX0KIAogCS8qIHNhdmUgYnVmZmVyIHVzYWdl IHRvdGFscyBhdCBub2RlIGVudHJ5LCBpZiBuZWVkZWQgKi8KIAlpZiAoaW5zdHItPm5lZWRf YnVmdXNhZ2UpCkBAIC05NSw3ICs5OSw3IEBAIEluc3RyU3RvcE5vZGUoSW5zdHJ1bWVudGF0 aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCiAJCWlmIChJTlNUUl9USU1FX0lTX1pFUk8o aW5zdHItPnN0YXJ0dGltZSkpCiAJCQllbG9nKEVSUk9SLCAiSW5zdHJTdG9wTm9kZSBjYWxs ZWQgd2l0aG91dCBzdGFydCIpOwogCi0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kdGlt ZSk7CisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlRfRkFTVChlbmR0aW1lKTsKIAkJSU5TVFJf VElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBlbmR0aW1lLCBpbnN0ci0+c3RhcnR0 aW1lKTsKIAogCQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5zdGFydHRpbWUpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDJmMDdjYTdhMGUuLjJlZWY5MDI0ODMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTgwNSw2ICs4MDUsOSBAQCBJ bml0UG9zdGdyZXMoY29uc3QgY2hhciAqaW5fZGJuYW1lLCBPaWQgZGJvaWQsCiAJLyogSW5p dGlhbGl6ZSBwb3J0YWwgbWFuYWdlciAqLwogCUVuYWJsZVBvcnRhbE1hbmFnZXIoKTsKIAor CS8qIGluaXRpYWxpemUgaGlnaC1wcmVjaXNpb24gaW50ZXJ2YWwgdGltaW5nICovCisJSU5T VFJfVElNRV9JTklUSUFMSVpFKCk7CisKIAkvKiBJbml0aWFsaXplIHN0YXR1cyByZXBvcnRp bmcgKi8KIAlwZ3N0YXRfYmVpbml0KCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdGVz dF90aW1pbmcvcGdfdGVzdF90aW1pbmcuYyBiL3NyYy9iaW4vcGdfdGVzdF90aW1pbmcvcGdf dGVzdF90aW1pbmcuYwppbmRleCBlMjA3MTg2NjlhLi5kMTg1YzhmZTJlIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3Rlc3RfdGltaW5nL3BnX3Rlc3RfdGltaW5nLmMKKysrIGIvc3JjL2Jp bi9wZ190ZXN0X3RpbWluZy9wZ190ZXN0X3RpbWluZy5jCkBAIC0xMjgsNyArMTI4LDggQEAg dGVzdF90aW1pbmcodW5zaWduZWQgaW50IGR1cmF0aW9uKQogCQkJCWVuZF90aW1lOwogCWlu c3RyX3RpbWUJY3VyOwogCi0JSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydF90aW1lKTsK KwlJTlNUUl9USU1FX0lOSVRJQUxJWkUoKTsKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZB U1Qoc3RhcnRfdGltZSk7CiAKIAkvKgogCSAqIFRvIHJlZHVjZSBsb29wIG92ZXJoZWFkLCBj aGVjayBsb29wIGNvbmRpdGlvbiBpbiBpbnN0cl90aW1lIGRvbWFpbi4KQEAgLTE0Nyw3ICsx NDgsNyBAQCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAJCWludDMyCQli aXRzID0gMDsKIAogCQlwcmV2ID0gY3VyOwotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGN1 cik7CisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlRfRkFTVChjdXIpOwogCQl0ZW1wID0gY3Vy OwogCQlJTlNUUl9USU1FX1NVQlRSQUNUKHRlbXAsIHByZXYpOwogCQlkaWZmID0gSU5TVFJf VElNRV9HRVRfTkFOT1NFQyh0ZW1wKTsKQEAgLTE3OSw3ICsxODAsNyBAQCB0ZXN0X3RpbWlu Zyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAJCWxvb3BfY291bnQrKzsKIAl9CiAKLQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKGVuZF90aW1lKTsKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5U X0ZBU1QoZW5kX3RpbWUpOwogCiAJSU5TVFJfVElNRV9TVUJUUkFDVChlbmRfdGltZSwgc3Rh cnRfdGltZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDljMTJmZmFlYTkuLmI4NGRiYWY0Nzgg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9w Z2JlbmNoL3BnYmVuY2guYwpAQCAtNzA1OSw2ICs3MDU5LDkgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJCWluaXRSYW5kb21TdGF0ZSgmc3RhdGVbaV0uY3NfZnVuY19ycyk7 CiAJfQogCisJLyogaW5pdGlhbGl6ZSBoaWdoLXByZWNpc2lvbiBpbnRlcnZhbCB0aW1pbmcg Ki8KKwlJTlNUUl9USU1FX0lOSVRJQUxJWkUoKTsKKwogCS8qIG9wZW5pbmcgY29ubmVjdGlv bi4uLiAqLwogCWNvbiA9IGRvQ29ubmVjdCgpOwogCWlmIChjb24gPT0gTlVMTCkKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMgYi9zcmMvYmluL3BzcWwvc3RhcnR1cC5j CmluZGV4IDVhMjhiNmY3MTMuLjNmOTVlMDEzMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC9zdGFydHVwLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYwpAQCAtMjQsNiArMjQs NyBAQAogI2luY2x1ZGUgImhlbHAuaCIKICNpbmNsdWRlICJpbnB1dC5oIgogI2luY2x1ZGUg Im1haW5sb29wLmgiCisjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgogI2lu Y2x1ZGUgInNldHRpbmdzLmgiCiAKIC8qCkBAIC0zMjIsNiArMzIzLDkgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCiAJUFFzZXROb3RpY2VQcm9jZXNzb3IocHNldC5kYiwg Tm90aWNlUHJvY2Vzc29yLCBOVUxMKTsKIAorCS8qIGluaXRpYWxpemUgaGlnaC1wcmVjaXNp b24gaW50ZXJ2YWwgdGltaW5nICovCisJSU5TVFJfVElNRV9JTklUSUFMSVpFKCk7CisKIAlT eW5jVmFyaWFibGVzKCk7CiAKIAlpZiAob3B0aW9ucy5saXN0X2RicykKZGlmZiAtLWdpdCBh L3NyYy9jb21tb24vTWFrZWZpbGUgYi9zcmMvY29tbW9uL01ha2VmaWxlCmluZGV4IDJmNDI0 YTU3MzUuLmFjNzkyNjE1NTYgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vTWFrZWZpbGUKKysr IGIvc3JjL2NvbW1vbi9NYWtlZmlsZQpAQCAtNTgsNiArNTgsNyBAQCBPQkpTX0NPTU1PTiA9 IFwKIAlmaWxlX3Blcm0ubyBcCiAJZmlsZV91dGlscy5vIFwKIAloYXNoZm4ubyBcCisJaW5z dHJfdGltZS5vIFwKIAlpcC5vIFwKIAlqc29uYXBpLm8gXAogCWtleXdvcmRzLm8gXApkaWZm IC0tZ2l0IGEvc3JjL2NvbW1vbi9pbnN0cl90aW1lLmMgYi9zcmMvY29tbW9uL2luc3RyX3Rp bWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yODE0MTZkYTg5 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbW1vbi9pbnN0cl90aW1lLmMKQEAgLTAsMCAr MSwxNTcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGluc3RyX3RpbWUuYwor ICoJICAgTm9uLWlubGluZSBwYXJ0cyBvZiB0aGUgcG9ydGFibGUgaGlnaC1wcmVjaXNpb24g aW50ZXJ2YWwgdGltaW5nCisgKgkgaW1wbGVtZW50YXRpb24KKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3BvcnQvaW5z dHJfdGltZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJw b3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgorCisj aWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKKy8qCisgKiBJ bmRpY2F0ZXMgaWYgUkRUU0MgY2FuIGJlIHVzZWQgKExpbnV4L3g4NiBvbmx5LCB3aGVuIE9T IHVzZXMgVFNDIGNsb2Nrc291cmNlKQorICovCitib29sIGhhc19yZHRzYyA9IGZhbHNlOwor CisvKgorICogSW5kaWNhdGVzIGlmIFJEVFNDUCBjYW4gYmUgdXNlZC4gVHJ1ZSBpZiBSRFRT QyBjYW4gYmUgdXNlZCBhbmQgUkRUU0NQIGlzIGF2YWlsYWJsZS4KKyAqLworYm9vbCBoYXNf cmR0c2NwID0gZmFsc2U7CisKKy8qCisgKiBTdG9yZXMgd2hhdCB0aGUgbnVtYmVyIG9mIGN5 Y2xlcyBuZWVkcyB0byBiZSBtdWx0aXBsaWVkIHdpdGggdG8gZW5kIHVwCisgKiB3aXRoIG5h bm9zZWNvbmRzIHVzaW5nIGludGVnZXIgbWF0aC4gU2VlIGNvbW1lbnQgaW4gcGdfaW5pdGlh bGl6ZV9yZHRzYygpCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIEJ5IGRlZmF1bHQg YXNzdW1lIHdlIGFyZSB1c2luZyBjbG9ja19nZXR0aW1lKCkgYXMgYSBmYWxsYmFjayB3aGlj aCB1c2VzCisgKiBuYW5vc2Vjb25kcyBhcyB0aWNrcy4gSGVuY2UsIHdlIHNldCB0aGUgbXVs dGlwbGllciB0byB0aGUgcHJlY2lzaW9uIHNjYWxhcgorICogc28gdGhhdCB0aGUgZGl2aXNp b24gaW4gSU5TVFJfVElNRV9HRVRfTkFOT1NFQygpIHdvbid0IGNoYW5nZSB0aGUgbmFub3Nl Y29uZHMuCisgKgorICogV2hlbiB1c2luZyB0aGUgUkRUU0MgaW5zdHJ1Y3Rpb24gZGlyZWN0 bHkgdGhpcyBpcyBmaWxsZWQgaW4gZHVyaW5nIGluaXRpYWxpemF0aW9uCisgKiBiYXNlZCBv biB0aGUgcmVsZXZhbnQgQ1BVSUQgZmllbGRzLgorICovCitpbnQ2NCB0aWNrc19wZXJfbnNf c2NhbGVkID0gVElDS1NfVE9fTlNfUFJFQ0lTSU9OOworaW50NjQgdGlja3NfcGVyX3NlYyA9 IE5TX1BFUl9TOworaW50NjQgbWF4X3RpY2tzX25vX292ZXJmbG93ID0gUEdfSU5UNjRfTUFY IC8gVElDS1NfVE9fTlNfUFJFQ0lTSU9OOworCitzdGF0aWMgYm9vbCBpc191bmRlcl9oeXBl cnZpc29yKHZvaWQpCit7CisJdWludDMyIHIwLCByMSwgcjIsIHIzOworCWludCByZXN1bHQg PSBfX2dldF9jcHVpZCgweDEsICZyMCwgJnIxLCAmcjIsICZyMyk7CisJcmV0dXJuIHJlc3Vs dCA+IDAgJiYgKChyMiA+PiAzMSkgJiAxKSA9PSAxOworfQorCitzdGF0aWMgYm9vbCBnZXRf aHlwZXJ2aXNvcl90c2NfZnJlcXVlbmN5X2toeih1aW50MzIgKnRzY19mcmVxKQoreworCXVp bnQzMiByMCwgcjEsIHIyOworCisJaWYgKCFpc191bmRlcl9oeXBlcnZpc29yKCkpCisJCXJl dHVybiBmYWxzZTsKKworCS8qCisJICogVXNlIF9fY3B1aWQoKSBkaXJlY3RseSBiZWNhdXNl IF9fZ2V0X2NwdWlkKCkgaW5jb3JyZWN0bHkgYmFpbHMgb3V0IGZvcgorCSAqIFZNIGxlYWZz LiBUaGUgcHJvYmxlbSBpcyB0aGF0IGxlYWYgMHgwIHJldHVybnMgdGhlIG1heGltdW0gbGVh ZiBhbmQKKwkgKiBfX2dldF9jcHVpZCgpIGZvciBhbnkgaW5wdXQgbGVhZiBzaW1wbGUgQU5E cyB3aXRoIDB4ODAwMDAwMDAgdG8gZ2V0IHRoZQorCSAqIGluZm8gbGVhZiAweDAgdG8gb2J0 YWluIHRoZSBtYXhpbXVtLiBGb3IgdGhlIFZNIHRpbWluZyBsZWFmIHRoZSBBTkRpbmcKKwkg KiBhbHNvIHJlc3VsdHMgaW4gMHgwIHdoaWxlIGl0IHNob3VsZCByZXN1bHQgaW4gMHg0MDAw MDAwMCB0byBnZXQgdGhlCisJICogbWF4aW11bSBWTSBsZWFmLgorCSovCisJX19jcHVpZCgw eDQwMDAwMDEwLCAqdHNjX2ZyZXEsIHIwLCByMSwgcjIpOworCXJldHVybiAqdHNjX2ZyZXEg PiAwOworfQorCitzdGF0aWMgYm9vbCBnZXRfaG9zdF90c2NfZnJlcXVlbmN5X2toeih1aW50 MzIgKnRzY19mcmVxKQoreworCXVpbnQzMiByMCwgcjEsIHIyOworCWludCByZXN1bHQgPSBf X2dldF9jcHVpZCgweDE2LCB0c2NfZnJlcSwgJnIwLCAmcjEsICZyMik7CisJKnRzY19mcmVx ICo9IDEwMDA7IC8vIENvbnZlcnQgZnJvbSBNSHogdG8gS0h6CisJcmV0dXJuIHJlc3VsdCA+ IDAgJiYgKnRzY19mcmVxID4gMDsKK30KKworc3RhdGljIGJvb2wgZ2V0X3RzY19mcmVxdWVu Y3lfa2h6KHVpbnQzMiAqdHNjX2ZyZXEpCit7CisJaWYgKGdldF9oeXBlcnZpc29yX3RzY19m cmVxdWVuY3lfa2h6KHRzY19mcmVxKSkKKwkJcmV0dXJuIHRydWU7CisJaWYgKGdldF9ob3N0 X3RzY19mcmVxdWVuY3lfa2h6KHRzY19mcmVxKSkKKwkJcmV0dXJuIHRydWU7CisKKwlyZXR1 cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGlzX3JkdHNjcF9hdmFpbGFibGUoKQorewor CXVpbnQzMiByMCwgcjEsIHIyLCByMzsKKwlyZXR1cm4gX19nZXRfY3B1aWQoMHg4MDAwMDAw MSwgJnIwLCAmcjEsICZyMiwgJnIzKSA+IDAgJiYgKHIzICYgKDEgPDwgMjcpKSAhPSAwOwor fQorCisvKgorICogRGVjaWRlIHdoZXRoZXIgd2UgdXNlIHRoZSBSRFRTQyBpbnN0cnVjdGlv biBhdCBydW50aW1lLCBmb3IgTGludXgveDg2LAorICogaW5zdGVhZCBvZiBpbmN1cnJpbmcg dGhlIG92ZXJoZWFkIG9mIGEgZnVsbCBjbG9ja19nZXR0aW1lKCkgY2FsbC4KKyAqCisgKiBU aGlzIGNhbid0IGJlIHJlbGlhYmx5IGRldGVybWluZWQgYXQgY29tcGlsZSB0aW1lLCBzaW5j ZSB0aGUKKyAqIGF2YWlsYWJpbGl0eSBvZiBhbiAiaW52YXJpYW50IiBUU0MgKHRoYXQgaXMg bm90IGFmZmVjdGVkIGJ5IENQVQorICogZnJlcXVlbmN5IGNoYW5nZXMpIGlzIGRlcGVuZGVu dCBvbiB0aGUgQ1BVIGFyY2hpdGVjdHVyZS4gQWRkaXRpb25hbGx5LAorICogdGhlcmUgYXJl IGNhc2VzIHdoZXJlIFRTQyBhdmFpbGFiaWxpdHkgaXMgaW1wYWN0ZWQgYnkgdmlydHVhbGl6 YXRpb24sCisgKiB3aGVyZSBhIHNpbXBsZSBjcHVpZCBmZWF0dXJlIGNoZWNrIHdvdWxkIG5v dCBiZSBlbm91Z2guCisgKgorICogU2luY2UgTGludXggYWxyZWFkeSBkb2VzIGEgc2lnbmlm aWNhbnQgYW1vdW50IG9mIHdvcmsgdG8gZGV0ZXJtaW5lCisgKiB3aGV0aGVyIFRTQyBpcyBh IHZpYWJsZSBjbG9jayBzb3VyY2UsIGRlY2lkZSBiYXNlZCBvbiB0aGF0LgorICovCit2b2lk IHBnX2luaXRpYWxpemVfcmR0c2Modm9pZCkKK3sKKwlGSUxFICpmcCA9IGZvcGVuKCIvc3lz L2RldmljZXMvc3lzdGVtL2Nsb2Nrc291cmNlL2Nsb2Nrc291cmNlMC9jdXJyZW50X2Nsb2Nr c291cmNlIiwgInIiKTsKKworCWlmIChmcCkKKwl7CisJCWNoYXIgYnVmWzEyOF07CisKKwkJ aWYgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSAhPSBOVUxMICYmIHN0cmNtcChidWYs ICJ0c2NcbiIpID09IDApCisJCXsKKwkJCS8qCisJCQkqIENvbXB1dGUgYmFzZWxpbmUgQ1BV IHBlZm9ybWFuY2UsIGRldGVybWluZXMgc3BlZWQgYXQgd2hpY2ggUkRUU0MgYWR2YW5jZXMu CisJCQkqLworCQkJdWludDMyIHRzY19mcmVxOworCisJCQlpZiAoZ2V0X3RzY19mcmVxdWVu Y3lfa2h6KCZ0c2NfZnJlcSkpCisJCQl7CisJCQkJLyoKKwkJCQkqIFRpY2tzIHRvIG5hbm9z ZWNvbmRzIGNvbnZlcnNpb24gcmVxdWlyZXMgZmxvYXRpbmcgcG9pbnQgbWF0aAorCQkJCSog YmVjYXVzZSBiZWNhdXNlOgorCQkJCSogCisJCQkJKiBzZWMgPSB0aWNrcyAvIGZyZXF1ZW5j eV9oegorCQkJCSogbnMgID0gdGlja3MgLyBmcmVxdWVuY3lfaHogKiAxLDAwMCwwMDAsMDAw CisJCQkJKiBucyAgPSB0aWNrcyAqICgxLDAwMCwwMDAsMDAwIC8gZnJlcXVlbmN5X2h6KQor CQkJCSogbnMgID0gdGlja3MgKiAoMSwwMDAsMDAwIC8gZnJlcXVlbmN5X2toeikgPC0tIG5v dyBpbiBraWxvaGVydHoKKwkJCQkqCisJCQkJKiBIZXJlLCAnbnMnIGlzIHVzdWFsbHkgYSBm bG9hdGluZyBudW1iZXIuIEZvciBleGFtcGxlIGZvciBhIDIuNSBHSHoKKwkJCQkqIENQVSB0 aGUgc2NhbGluZyBmYWN0b3IgYmVjb21lcyAxLDAwMCwwMDAgLyAyLDUwMCwwMDAgPSAxLjIu CisJCQkJKgorCQkJCSogVG8gYmUgYWJsZSB0byB1c2UgaW50ZWdlciBtYXRoIHdlIHdvcmsg YXJvdW5kIHRoZSBsYWNrIG9mIHByZWNpc2lvbi4KKwkJCQkqIFdlIGZpcnN0IHNjYWxlIHRo ZSBpbnRlZ2VyIHVwIGFuZCBhZnRlciB0aGUgbXVsdGlwbGljYXRpb24gYnkgdGhlCisJCQkJ KiBudW1iZXIgb2YgdGlja3MgaW4gSU5TVFJfVElNRV9HRVRfTkFOT1NFQygpIHdlIGRpdmlk ZSBhZ2FpbiBieSB0aGUKKwkJCQkqIHNhbWUgdmFsdWUuIFdlIHBpY2tlZCB0aGUgc2NhbGVy IHN1Y2ggdGhhdCBpdCBwcm92aWRlcyBlbm91Z2ggcHJlY2lzaW9uCisJCQkJKiBhbmQgaXMg YSBwb3dlci1vZi10d28gd2hpY2ggYWxsb3dzIGZvciBzaGlmdGluZyBpbnN0ZWFkIG9mIGRv aW5nIGFuCisJCQkJKiBpbnRlZ2VyIGRpdmlzaW9uLgorCQkJCSovCisJCQkJdGlja3NfcGVy X25zX3NjYWxlZCA9IElOVDY0Q09OU1QoMTAwMDAwMCkgKiBUSUNLU19UT19OU19QUkVDSVNJ T04gLyB0c2NfZnJlcTsKKwkJCQl0aWNrc19wZXJfc2VjID0gdHNjX2ZyZXEgKiAxMDAwOyAv LyBLSHogLT4gSHoKKwkJCQltYXhfdGlja3Nfbm9fb3ZlcmZsb3cgPSBQR19JTlQ2NF9NQVgg LyB0aWNrc19wZXJfbnNfc2NhbGVkOworCisJCQkJaGFzX3JkdHNjID0gdHJ1ZTsKKwkJCQlo YXNfcmR0c2NwID0gaXNfcmR0c2NwX2F2YWlsYWJsZSgpOworCQkJfQorCQl9CisKKwkJZmNs b3NlKGZwKTsKKwl9Cit9CisjZW5kaWYJCQkJCQkJLyogZGVmaW5lZChfX3g4Nl82NF9fKSAm JiBkZWZpbmVkKF9fbGludXhfXykgKi8KZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vbWVzb24u YnVpbGQgYi9zcmMvY29tbW9uL21lc29uLmJ1aWxkCmluZGV4IDFjYWExZmVkMDQuLjVhNzk0 MWI5ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL2Nv bW1vbi9tZXNvbi5idWlsZApAQCAtMTAsNiArMTAsNyBAQCBjb21tb25fc291cmNlcyA9IGZp bGVzKAogICAnZmlsZV9wZXJtLmMnLAogICAnZmlsZV91dGlscy5jJywKICAgJ2hhc2hmbi5j JywKKyAgJ2luc3RyX3RpbWUuYycsCiAgICdpcC5jJywKICAgJ2pzb25hcGkuYycsCiAgICdr ZXl3b3Jkcy5jJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BvcnRhYmlsaXR5L2luc3Ry X3RpbWUuaCBiL3NyYy9pbmNsdWRlL3BvcnRhYmlsaXR5L2luc3RyX3RpbWUuaAppbmRleCBh YWI4MGVmZmIwLi42ZmRhNTY1MzY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3J0YWJp bGl0eS9pbnN0cl90aW1lLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJf dGltZS5oCkBAIC00LDkgKzQsMTEgQEAKICAqCSAgcG9ydGFibGUgaGlnaC1wcmVjaXNpb24g aW50ZXJ2YWwgdGltaW5nCiAgKgogICogVGhpcyBmaWxlIHByb3ZpZGVzIGFuIGFic3RyYWN0 aW9uIGxheWVyIHRvIGhpZGUgcG9ydGFiaWxpdHkgaXNzdWVzIGluCi0gKiBpbnRlcnZhbCB0 aW1pbmcuICBPbiBVbml4IHdlIHVzZSBjbG9ja19nZXR0aW1lKCksIGFuZCBvbiBXaW5kb3dz IHdlIHVzZQotICogUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKS4gIFRoZXNlIG1hY3JvcyBh bHNvIGdpdmUgc29tZSBicmVhdGhpbmcgcm9vbSB0bwotICogdXNlIG90aGVyIGhpZ2gtcHJl Y2lzaW9uLXRpbWluZyBBUElzLgorICogaW50ZXJ2YWwgdGltaW5nLiBPbiBMaW51eC94ODYg d2UgdXNlIHRoZSByZHRzYyBpbnN0cnVjdGlvbiB3aGVuIGEgVFNDCisgKiBjbG9ja3NvdXJj ZSBpcyBhbHNvIHVzZWQgb24gdGhlIGhvc3QgT1MuICBPdGhlcndpc2UsIGFuZCBvbiBvdGhl cgorICogVW5peC1saWtlIHN5c3RlbXMgd2UgdXNlIGNsb2NrX2dldHRpbWUoKSBhbmQgb24g V2luZG93cyB3ZSB1c2UKKyAqIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCkuIFRoZXNlIG1h Y3JvcyBhbHNvIGdpdmUgc29tZSBicmVhdGhpbmcKKyAqIHJvb20gdG8gdXNlIG90aGVyIGhp Z2gtcHJlY2lzaW9uLXRpbWluZyBBUElzLgogICoKICAqIFRoZSBiYXNpYyBkYXRhIHR5cGUg aXMgaW5zdHJfdGltZSwgd2hpY2ggYWxsIGNhbGxlcnMgc2hvdWxkIHRyZWF0IGFzIGFuCiAg KiBvcGFxdWUgdHlwZWRlZi4gIGluc3RyX3RpbWUgY2FuIHN0b3JlIGVpdGhlciBhbiBhYnNv bHV0ZSB0aW1lIChvZgpAQCAtMTksMTAgKzIxLDExIEBACiAgKgogICogSU5TVFJfVElNRV9T RVRfWkVSTyh0KQkJCXNldCB0IHRvIHplcm8gKG1lbXNldCBpcyBhY2NlcHRhYmxlIHRvbykK ICAqCi0gKiBJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHQpCQlzZXQgdCB0byBjdXJyZW50IHRp bWUKLSAqCi0gKiBJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0xBWlkodCkJc2V0IHQgdG8gY3Vy cmVudCB0aW1lIGlmIHQgaXMgemVybywKLSAqCQkJCQkJCQkJZXZhbHVhdGVzIHRvIHdoZXRo ZXIgdCBjaGFuZ2VkCisgKiBJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1QodCkJc2V0IHQg dG8gY3VycmVudCB0aW1lIHdpdGhvdXQgd2FpdGluZworICogCQkJCQkJCQkJZm9yIGluc3Ry dWN0aW9ucyBpbiBvdXQtb2Ytb3JkZXIgd2luZG93CisgKiAKKyAqIElOU1RSX1RJTUVfU0VU X0NVUlJFTlQodCkJCXNldCB0IHRvIGN1cnJlbnQgdGltZSB3aGlsZSB3YWl0aW5nIGZvcgor ICogCQkJCQkJCQkJaW5zdHJ1Y3Rpb25zIGluIE9PTyB0byByZXRpcmUKICAqCiAgKiBJTlNU Ul9USU1FX1NFVF9TRUNPTkRTKHQsIHMpCQlzZXQgdCB0byBzIHNlY29uZHMKICAqCkBAIC04 NCw3ICs4NywxNSBAQCB0eXBlZGVmIHN0cnVjdCBpbnN0cl90aW1lCiAKIAogI2lmbmRlZiBX SU4zMgorLyoKKyAqIE1ha2Ugc3VyZSB0aGlzIGlzIGEgcG93ZXItb2YtdHdvLCBzbyB0aGF0 IHRoZSBjb21waWxlciBjYW4gdHVybiB0aGUKKyAqIG11bHRpcGxpY2F0aW9ucyBhbmQgZGl2 aXNpb25zIGludG8gc2hpZnRzLgorICovCisjZGVmaW5lIFRJQ0tTX1RPX05TX1BSRUNJU0lP TiAoMTw8MTQpCiAKK2V4dGVybiBpbnQ2NCB0aWNrc19wZXJfbnNfc2NhbGVkOworZXh0ZXJu IGludDY0IHRpY2tzX3Blcl9zZWM7CitleHRlcm4gaW50NjQgbWF4X3RpY2tzX25vX292ZXJm bG93OwogCiAvKiBVc2UgY2xvY2tfZ2V0dGltZSgpICovCiAKQEAgLTExMCwzNSArMTIxLDEx MyBAQCB0eXBlZGVmIHN0cnVjdCBpbnN0cl90aW1lCiAjZGVmaW5lIFBHX0lOU1RSX0NMT0NL CUNMT0NLX1JFQUxUSU1FCiAjZW5kaWYKIAotLyogaGVscGVyIGZvciBJTlNUUl9USU1FX1NF VF9DVVJSRU5UICovCisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fbGlu dXhfXykKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNpbmNsdWRlIDxjcHVpZC5oPgorCitl eHRlcm4gYm9vbCBoYXNfcmR0c2M7CitleHRlcm4gYm9vbCBoYXNfcmR0c2NwOworI2VuZGlm CisKIHN0YXRpYyBpbmxpbmUgaW5zdHJfdGltZQotcGdfY2xvY2tfZ2V0dGltZV9ucyh2b2lk KQorcGdfY2xvY2tfZ2V0dGltZSgpCiB7CiAJaW5zdHJfdGltZQlub3c7CiAJc3RydWN0IHRp bWVzcGVjIHRtcDsKIAogCWNsb2NrX2dldHRpbWUoUEdfSU5TVFJfQ0xPQ0ssICZ0bXApOwog CW5vdy50aWNrcyA9IHRtcC50dl9zZWMgKiBOU19QRVJfUyArIHRtcC50dl9uc2VjOwotCiAJ cmV0dXJuIG5vdzsKIH0KIAorc3RhdGljIGlubGluZSBpbnN0cl90aW1lCitwZ19nZXRfdGlj a3NfZmFzdCh2b2lkKQoreworI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChf X2xpbnV4X18pCisJaWYgKGhhc19yZHRzYykKKwl7CisJCWluc3RyX3RpbWUgbm93OworCQl1 aW50MzIgYTsKKwkJbm93LnRpY2tzID0gX19yZHRzY3AoJmEpOworCQlyZXR1cm4gbm93Owor CX0KKyNlbmRpZgorCisJcmV0dXJuIHBnX2Nsb2NrX2dldHRpbWUoKTsKK30KKworc3RhdGlj IGlubGluZSBpbnN0cl90aW1lCitwZ19nZXRfdGlja3Modm9pZCkKK3sKKyNpZiBkZWZpbmVk KF9feDg2XzY0X18pICYmIGRlZmluZWQoX19saW51eF9fKQorCWlmIChoYXNfcmR0c2NwKQor CXsKKwkJaW5zdHJfdGltZSBub3c7CisJCXVpbnQzMiB1bnVzZWQ7CisJCW5vdy50aWNrcyA9 IF9fcmR0c2NwKCZ1bnVzZWQpOworCQlyZXR1cm4gbm93OworCX0KKyNlbmRpZgorCisJcmV0 dXJuIHBnX2Nsb2NrX2dldHRpbWUoKTsKK30KKworc3RhdGljIGlubGluZSBpbnQ2NF90Citw Z190aWNrc190b19ucyhpbnN0cl90aW1lIHQpCit7CisJLyoKKwkgKiBXb3VsZCBtdWx0aXBs aWNhdGlvbiBvdmVyZmxvdz8gSWYgc28gcGVyZm9ybSBjb21wdXRhdGlvbiBpbiB0d28gcGFy dHMuCisJICogQ2hlY2sgb3ZlcmZsb3cgd2l0aG91dCBhY3R1YWxseSBvdmVyZmxvd2luZyB2 aWE6CisJICogICAgYSAqIGIgPiBtYXggPD0+IGEgPiBtYXggLyBiCisJICovCisJaW50NjQg bnMgPSAwOworCisJaWYgKHVubGlrZWx5KHQudGlja3MgPiBtYXhfdGlja3Nfbm9fb3ZlcmZs b3cpKQorCXsKKwkJLyoKKwkJKiBDb21wdXRlIGhvdyBvZnRlbiB0aGUgbWF4aW11bSBudW1i ZXIgb2YgdGlja3MgZml0cyBjb21wbGV0ZWx5IGludG8gdGhlCisJCSogbnVtYmVyIG9mIGVs YXBzZWQgdGlja3MgYW5kIGNvbnZlcnQgdGhhdCBudW1iZXIgaW50byBuYW5vc2Vjb25kcy4g CisJCSogVGhlbiBtdWx0aXBseSBieSB0aGUgY291bnQgdG8gYXJyaXZlIGF0IHRoZSBmaW5h bCB2YWx1ZS4gSW4gYSAybmQgc3RlcAorCQkqIHdlIGFkanVzdCB0aGUgbnVtYmVyIG9mIGVs YXBzZWQgdGlja3MgYW5kIGNvbnZlcnQgdGhlIHJlbWFpbmluZyB0aWNrcy4KKwkJKi8KKwkJ aW50NjQgY291bnQgPSB0LnRpY2tzIC8gbWF4X3RpY2tzX25vX292ZXJmbG93OworCQlpbnQ2 NCBtYXhfbnMgPSBtYXhfdGlja3Nfbm9fb3ZlcmZsb3cgKiB0aWNrc19wZXJfbnNfc2NhbGVk IC8gVElDS1NfVE9fTlNfUFJFQ0lTSU9OOworCQlucyA9IG1heF9ucyAqIGNvdW50OworCisJ CS8qCisJCSogU3VidHJhY3QgdGhlIHRpY2tzIHRoYXQgd2Ugbm93IGFscmVhZHkgYWNjb3Vu dGVkIGZvciwgc28gdGhhdCB0aGV5IGRvbid0CisJCSogZ2V0IGNvdW50ZWQgdHdpY2UuCisJ CSovCisJCXQudGlja3MgLT0gY291bnQgKiBtYXhfdGlja3Nfbm9fb3ZlcmZsb3c7CisJCUFz c2VydCh0LnRpY2tzID49IDApOworCX0KKworCW5zICs9IHQudGlja3MgKiB0aWNrc19wZXJf bnNfc2NhbGVkIC8gVElDS1NfVE9fTlNfUFJFQ0lTSU9OOworCXJldHVybiBuczsKK30KKwor ZXh0ZXJuIHZvaWQgcGdfaW5pdGlhbGl6ZV9yZHRzYyh2b2lkKTsKKworI2RlZmluZSBJTlNU Ul9USU1FX0lOSVRJQUxJWkUoKSBcCisJcGdfaW5pdGlhbGl6ZV9yZHRzYygpCisKKyNkZWZp bmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9GQVNUKHQpIFwKKwkoKHQpID0gcGdfZ2V0X3Rp Y2tzX2Zhc3QoKSkKKwogI2RlZmluZSBJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHQpIFwKLQko KHQpID0gcGdfY2xvY2tfZ2V0dGltZV9ucygpKQorCSgodCkgPSBwZ19nZXRfdGlja3MoKSkK IAogI2RlZmluZSBJTlNUUl9USU1FX1NFVF9TRUNPTkRTKHQsIHMpIFwKLQkoKHQpLnRpY2tz ID0gTlNfUEVSX1MgKiAocykpCisJKCh0KS50aWNrcyA9IChzKSAqIHRpY2tzX3Blcl9zZWMp CiAKICNkZWZpbmUgSU5TVFJfVElNRV9HRVRfTkFOT1NFQyh0KSBcCi0JKChpbnQ2NCkgKHQp LnRpY2tzKQotCisJcGdfdGlja3NfdG9fbnModCkKIAogI2Vsc2UJCQkJCQkJLyogV0lOMzIg Ki8KIAogCiAvKiBVc2UgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKSAqLwogCi0vKiBoZWxw ZXIgZm9yIElOU1RSX1RJTUVfU0VUX0NVUlJFTlQgKi8KIHN0YXRpYyBpbmxpbmUgaW5zdHJf dGltZQogcGdfcXVlcnlfcGVyZm9ybWFuY2VfY291bnRlcih2b2lkKQogewpAQCAtMTYwLDYg KzI0OSwxMSBAQCBHZXRUaW1lckZyZXF1ZW5jeSh2b2lkKQogCXJldHVybiAoZG91YmxlKSBm LlF1YWRQYXJ0OwogfQogCisjZGVmaW5lIElOU1RSX1RJTUVfSU5JVElBTElaRSgpCisKKyNk ZWZpbmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9GQVNUKHQpIFwKKwkoKHQpID0gcGdfcXVl cnlfcGVyZm9ybWFuY2VfY291bnRlcigpKQorCiAjZGVmaW5lIElOU1RSX1RJTUVfU0VUX0NV UlJFTlQodCkgXAogCSgodCkgPSBwZ19xdWVyeV9wZXJmb3JtYW5jZV9jb3VudGVyKCkpCiAK QEAgLTE4MCwxMyArMjc0LDggQEAgR2V0VGltZXJGcmVxdWVuY3kodm9pZCkKIAogI2RlZmlu ZSBJTlNUUl9USU1FX0lTX0xUKHgsIHkpCSgoeCkudGlja3MgPCAoeSkudGlja3MpCiAKLQog I2RlZmluZSBJTlNUUl9USU1FX1NFVF9aRVJPKHQpCSgodCkudGlja3MgPSAwKQogCi0jZGVm aW5lIElOU1RSX1RJTUVfU0VUX0NVUlJFTlRfTEFaWSh0KSBcCi0JKElOU1RSX1RJTUVfSVNf WkVSTyh0KSA/IElOU1RSX1RJTUVfU0VUX0NVUlJFTlQodCksIHRydWUgOiBmYWxzZSkKLQot CiAjZGVmaW5lIElOU1RSX1RJTUVfQUREKHgseSkgXAogCSgoeCkudGlja3MgKz0gKHkpLnRp Y2tzKQogCkBAIC0xOTYsNyArMjg1LDYgQEAgR2V0VGltZXJGcmVxdWVuY3kodm9pZCkKICNk ZWZpbmUgSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHgseSx6KSBcCiAJKCh4KS50aWNrcyArPSAo eSkudGlja3MgLSAoeikudGlja3MpCiAKLQogI2RlZmluZSBJTlNUUl9USU1FX0dFVF9ET1VC TEUodCkgXAogCSgoZG91YmxlKSBJTlNUUl9USU1FX0dFVF9OQU5PU0VDKHQpIC8gTlNfUEVS X1MpCiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9tc3ZjL01rdmNidWlsZC5wbSBiL3NyYy90 b29scy9tc3ZjL01rdmNidWlsZC5wbQppbmRleCBlZTQ5NDI0ZDZmLi4wMjE1MjVmM2Q4IDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0KKysrIGIvc3JjL3Rvb2xz L21zdmMvTWt2Y2J1aWxkLnBtCkBAIC0xMzUsNyArMTM1LDcgQEAgc3ViIG1rdmNidWlsZAog CW91ciBAcGdjb21tb25hbGxmaWxlcyA9IHF3KAogCSAgYmFzZTY0LmMgY2hlY2tzdW1faGVs cGVyLmMgY29tcHJlc3Npb24uYwogCSAgY29uZmlnX2luZm8uYyBjb250cm9sZGF0YV91dGls cy5jIGQycy5jIGVuY25hbWVzLmMgZXhlYy5jCi0JICBmMnMuYyBmaWxlX3Blcm0uYyBmaWxl X3V0aWxzLmMgaGFzaGZuLmMgaXAuYyBqc29uYXBpLmMKKwkgIGYycy5jIGZpbGVfcGVybS5j IGZpbGVfdXRpbHMuYyBoYXNoZm4uYyBpcC5jIGluc3RyX3RpbWUubyBqc29uYXBpLmMKIAkg IGtleXdvcmRzLmMga3dsb29rdXAuYyBsaW5rLWNhbmFyeS5jIG1kNV9jb21tb24uYyBwZXJj ZW50cmVwbC5jCiAJICBwZ19nZXRfbGluZS5jIHBnX2x6Y29tcHJlc3MuYyBwZ19wcm5nLmMg cGdmbmFtZXMuYyBwc3ByaW50Zi5jIHJlbHBhdGguYwogCSAgcm10cmVlLmMgc2FzbHByZXAu YyBzY3JhbS1jb21tb24uYyBzdHJpbmcuYyBzdHJpbmdpbmZvLmMgdW5pY29kZV9ub3JtLmMK LS0gCjIuMzQuMQoK --------------Uuvfjxkq0rYRjX08ET6qjYVh--