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 1pRtDc-0007Gd-Lk for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Feb 2023 11:11:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pRtDb-0003Hg-AN for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Feb 2023 11:11:27 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pRtDa-0003HX-RA for pgsql-hackers@lists.postgresql.org; Tue, 14 Feb 2023 11:11:27 +0000 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pRtDT-0006dM-4e for pgsql-hackers@postgresql.org; Tue, 14 Feb 2023 11:11:26 +0000 Received: by mail-pl1-x633.google.com with SMTP id m2so16695177plg.4 for ; Tue, 14 Feb 2023 03:11:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=46z/aqrS3UZn1B329/UILiGMJhgvh3nxF73aHGcSL1s=; b=p3KwW+KpB+xdI/oU8oSaRVZdNVZBcTNj6oQ9QWoYntg7+J3dRd5UMbUYNkz8M4JRaC esWuxUXvedB2T2PP4Zuu+5WQf6YrrGrO6/LuFp1eH+BUqt0RdjdrkQsKdVffFaqJOQSJ ZzW2YlxbNToyHrvJOfCOg19wtQ2tlEz5FjdMo64w1leP0Qrv5qrW+gki5G9Qf3Z98nTX Gyz3xdxh7NMbjJQ9j/g6pgJU2YS5/9jBx+NnUfIw49k5dxkwDykS97TTCeNfwHsw1H/P wQW8lbIo0JbD7ik5dSPtK5qopuNoFdAfZX5g4/CH/8gdSUQVk1DNS+IQYTGvLzDzoeDS ojuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=46z/aqrS3UZn1B329/UILiGMJhgvh3nxF73aHGcSL1s=; b=XzJrxQDX1D242eRcgu0LwrTdgaH4AsdbNqRbin2oAZW2id4PGIc4FzOQSvceM7IZLb zIiggbN5ij3dzWlGW/rqNY93cZeKOK+zL11FOBGV15BlXKKfwxwq6p0TGAqadUcois3j YZ8bJbbMHJzi12j21W41CO3jwtwLeqOVoJXJcLnjNfKObeVC/H5/LGKMifGSAQjXnVh4 tDsh11WQ1m/qLFF2j1ht3LG50WO/DLkSt6YmietU0+lIlsjvuzKUCsbkawMVBWpkf+VR WlLqpsLZmjDD02nPFo07xLpwrwy+GkYU95uNdOyK5IuNgUCS1q4jfh+Nz931U11Un2t+ OmAQ== X-Gm-Message-State: AO0yUKWHJcEESgCtAC1J42ADnoWBDFVJIshVEXDB4+M2VSrABL9YJfmp LpGmZeL7UqSyCArop5+2e64= X-Google-Smtp-Source: AK7set9N1GLZuBRRXsfiM7HW9d2j3aWQVTqCzsCGoxk+jOwYa1t8Zmcpzvcn4jIUN8FGsbsy1Gmj4w== X-Received: by 2002:a05:6a20:7f92:b0:ad:67fa:8e50 with SMTP id d18-20020a056a207f9200b000ad67fa8e50mr2226155pzj.57.1676373076505; Tue, 14 Feb 2023 03:11:16 -0800 (PST) Received: from [172.16.209.129] (vip-148-139-0-229.cust.service-now.com. [148.139.0.229]) by smtp.gmail.com with ESMTPSA id p30-20020a634f5e000000b004d3f518eea7sm8390238pgl.94.2023.02.14.03.11.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 14 Feb 2023 03:11:15 -0800 (PST) Content-Type: multipart/mixed; boundary="------------1WGJu3EchMYVGPJzs4fRJ1Cb" Message-ID: <989acbcf-e950-7911-c2e2-fe7aa7d15108@gmail.com> Date: Tue, 14 Feb 2023 12:11:01 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 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> <20230207181218.47irz3of34qsww5l@awork3.anarazel.de> Content-Language: en-US From: David Geier In-Reply-To: <20230207181218.47irz3of34qsww5l@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. --------------1WGJu3EchMYVGPJzs4fRJ1Cb Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 2/7/23 19:12, Andres Freund wrote: > This fails to build on several platforms: > > https://cirrus-ci.com/github/postgresql-cfbot/postgresql/commitfest%2F42%2F3751 I think I fixed the compilation errors. It was due to a few variables being declared under #if defined(__x86_64__) && defined(__linux__) while being used also under non x86 Linux. I also removed again the code to obtain the TSC frequency under hypervisors because the TSC is usually emulated and therefore no faster than clock_gettime() anyways. So we now simply fallback to clock_gettime() on hypervisors when we cannot obtain the frequency via leaf 0x16. Beyond that I reviewed the first two patches a while ago in [1]. I hope we can progress with them to further reduce the size of this patch set. [1] https://www.postgresql.org/message-id/3ac157f7-085d-e071-45fc-b87cd306360c%40gmail.com -- David Geier (ServiceNow) --------------1WGJu3EchMYVGPJzs4fRJ1Cb Content-Type: text/x-patch; charset=UTF-8; name="v8-0001-instr_time-Add-INSTR_TIME_SET_SECONDS-INSTR_TIME_.patch" Content-Disposition: attachment; filename*0="v8-0001-instr_time-Add-INSTR_TIME_SET_SECONDS-INSTR_TIME_.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNmZmN2Y3ZWUxNGJmNDJlZjBmYjc3NWNlYzQyODE4MDI1MWMzZmY5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwu ZGU+CkRhdGU6IEZyaSwgMjAgSmFuIDIwMjMgMTU6MzE6NTQgLTA4MDAKU3ViamVjdDogW1BB VENIIHY4IDEvM10gaW5zdHJfdGltZTogQWRkIElOU1RSX1RJTUVfU0VUX1NFQ09ORFMoKSwK 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= --------------1WGJu3EchMYVGPJzs4fRJ1Cb Content-Type: text/x-patch; charset=UTF-8; name="v8-0002-wip-report-nanoseconds-in-pg_test_timing.patch" Content-Disposition: attachment; filename="v8-0002-wip-report-nanoseconds-in-pg_test_timing.patch" Content-Transfer-Encoding: base64 RnJvbSAxMjAwYmZlZTViOGViZjdjNjhkOGNlZmIzNzcxYTRjMzUyM2MyY2VhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwu ZGU+CkRhdGU6IE1vbiwgMTYgSmFuIDIwMjMgMTE6MTk6MTEgLTA4MDAKU3ViamVjdDogW1BB VENIIHY4IDIvM10gd2lwOiByZXBvcnQgbmFub3NlY29uZHMgaW4gcGdfdGVzdF90aW1pbmcK 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== --------------1WGJu3EchMYVGPJzs4fRJ1Cb Content-Type: text/x-patch; charset=UTF-8; name="v8-0003-Use-RDTSC-P-instructions-to-measure-time-on-x86-L.patch" Content-Disposition: attachment; filename*0="v8-0003-Use-RDTSC-P-instructions-to-measure-time-on-x86-L.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjM2M5MDA0OTU3OWFmN2NiOWMxMmQ3YmFhMDMwMWY5NzU5ZDIwYWJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAyMyBKYW4gMjAyMyAxODoxMzo1NSArMDEwMApTdWJqZWN0OiBbUEFU Q0ggdjggMy8zXSBVc2UgUkRUU0MoUCkgaW5zdHJ1Y3Rpb25zIHRvIG1lYXN1cmUgdGltZSBv biB4ODYgTGludXgKCkZvciBub3cgdGhpcyBpcyBvbmx5IGVuYWJsZWQgb24gTGludXgveDg2 IHdoZW4gdGhlIHN5c3RlbSBjbG9ja3NvdXJjZSBpcwptYXJrZWQgVFNDIGFzIHdlbGwsIGFz IGRldGVybWluZWQgYXQgcnVudGltZS4gVGhpcyB3YXkgd2UgY2FuIHJlbHkgb24gdGhlCkxp bnV4IGtlcm5lbCB0byBtYWtlIGEgZGVjaXNpb24gd2hldGhlciBUU0MgaXMgaW52YXJpYW50 IGFuZCB1c2FibGUgb24gdGhlCmN1cnJlbnQgQ1BVIGFyY2hpdGVjdHVyZS4gSW4gYWxsIG90 aGVyIGNhc2VzIHdlIGNvbnRpbnVlIHRvIHVzZSB0aGUKY2xvY2tfZ2V0dGltZSgpIGltcGxl bWVudGF0aW9uIGxpa2UgYmVmb3JlLgoKTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgdXNl IFJEVFNDLCBub3QgUkRUU0NQLCBhcyBSRFRTQ1Agd2FpdHMgZm9yCmN1cnJlbnRseSBydW5u aW5nIENQVSBpbnN0cnVjdGlvbnMgdG8gaGF2ZSByZXRpcmVkLiBUaGlzIGFkZHMgdXAgdG8K bm90aWNhYmxlIGxhdGVuY3kgZm9yIGxpdHRsZSBiZW5lZml0IGluIHRoZSB0eXBpY2FsIElu c3RyU3RhcnROb2RlKCkgLwpJbnN0clN0b3BOb2RlKCkgdXNlIGNhc2UuIFRoZSBtYWNybyB0 byBiZSB1c2VkIGZvciB0aGVzZSBjYXNlcyBpcwpjYWxsZWQgSU5TVFJfVElNRV9TRVRfQ1VS UkVOVF9GQVNUKCkuIFRoZSBvcmlnaW5hbCBtYWNybwpJTlNUUl9USU1FX1NFVF9DVVJSRU5U KCkgdXNlcyBSRFRTQ1AgYW5kIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgd2hlbgpwcmVjaXNp b24gaXMgbW9yZSBpbXBvcnRhbnQgdGhhbiBwZXJmb3JtYW5jZS4KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvaW5zdHJ1bWVudC5jICAgICAgIHwgIDEyICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9wb3N0aW5pdC5jICAgICAgIHwgICAzICsKIHNyYy9iaW4vcGdfdGVzdF90aW1pbmcvcGdf dGVzdF90aW1pbmcuYyB8ICAgNyArLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyAgICAg ICAgICAgICAgIHwgICAzICsKIHNyYy9iaW4vcHNxbC9zdGFydHVwLmMgICAgICAgICAgICAg ICAgICB8ICAgNCArCiBzcmMvY29tbW9uL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2NvbW1vbi9pbnN0cl90aW1lLmMgICAgICAgICAgICAgICAgIHwgMTMw ICsrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2NvbW1vbi9tZXNvbi5idWlsZCAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3BvcnRhYmlsaXR5L2luc3RyX3Rp bWUuaCAgICB8IDEzMCArKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy90b29scy9tc3Zj L01rdmNidWlsZC5wbSAgICAgICAgICAgICB8ICAgMiArLQogMTIgZmlsZXMgY2hhbmdlZCwg MjY2IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9jb21tb24vaW5zdHJfdGltZS5jCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCmluZGV4IDhmMTRjZjg1ZjMuLjIxMjA5MzU2OGIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTMwMDIsOCArMzAwMiw3IEBAIGNvdW50X25vbmRl bGV0YWJsZV9wYWdlcyhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKmxvY2tfd2FpdGVyX2Rl dGVjdGVkKQogCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChjdXJyZW50dGltZSk7CiAJCQll bGFwc2VkID0gY3VycmVudHRpbWU7CiAJCQlJTlNUUl9USU1FX1NVQlRSQUNUKGVsYXBzZWQs IHN0YXJ0dGltZSk7Ci0JCQlpZiAoKElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGVsYXBzZWQp IC8gMTAwMCkKLQkJCQk+PSBWQUNVVU1fVFJVTkNBVEVfTE9DS19DSEVDS19JTlRFUlZBTCkK KwkJCWlmIChJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbGFwc2VkKSA+PSBWQUNVVU1fVFJV TkNBVEVfTE9DS19DSEVDS19JTlRFUlZBTCkKIAkJCXsKIAkJCQlpZiAoTG9ja0hhc1dhaXRl cnNSZWxhdGlvbih2YWNyZWwtPnJlbCwgQWNjZXNzRXhjbHVzaXZlTG9jaykpCiAJCQkJewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGZiYmYyOGNmMDYuLmM0MjQzYmM2NjggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTUyNiw3ICs1MjYsNyBAQCBFeHBsYWluT25l UGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCiAJZG91YmxlCQl0b3RhbHRpbWUgPSAwOwogCWludAkJCWVmbGFnczsK IAlpbnQJCQlpbnN0cnVtZW50X29wdGlvbiA9IDA7Ci0KKyAgICAKIAlBc3NlcnQocGxhbm5l ZHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKTsKIAogCWlmIChlcy0+YW5hbHl6 ZSAmJiBlcy0+dGltaW5nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5z dHJ1bWVudC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IGVl NzhhNTc0OWQuLjFjZTNkNjJjZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2luc3RydW1lbnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMK QEAgLTY3LDkgKzY3LDEzIEBAIEluc3RySW5pdChJbnN0cnVtZW50YXRpb24gKmluc3RyLCBp bnQgaW5zdHJ1bWVudF9vcHRpb25zKQogdm9pZAogSW5zdHJTdGFydE5vZGUoSW5zdHJ1bWVu dGF0aW9uICppbnN0cikKIHsKLQlpZiAoaW5zdHItPm5lZWRfdGltZXIgJiYKLQkJIUlOU1RS X1RJTUVfU0VUX0NVUlJFTlRfTEFaWShpbnN0ci0+c3RhcnR0aW1lKSkKLQkJZWxvZyhFUlJP UiwgIkluc3RyU3RhcnROb2RlIGNhbGxlZCB0d2ljZSBpbiBhIHJvdyIpOworCWlmIChpbnN0 ci0+bmVlZF90aW1lcikKKwl7CisJCWlmICghSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5z dGFydHRpbWUpKQorCQkJZWxvZyhFUlJPUiwgIkluc3RyU3RhcnROb2RlIGNhbGxlZCB0d2lj ZSBpbiBhIHJvdyIpOworCQllbHNlCisJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1Qo aW5zdHItPnN0YXJ0dGltZSk7CisJfQogCiAJLyogc2F2ZSBidWZmZXIgdXNhZ2UgdG90YWxz IGF0IG5vZGUgZW50cnksIGlmIG5lZWRlZCAqLwogCWlmIChpbnN0ci0+bmVlZF9idWZ1c2Fn ZSkKQEAgLTk1LDcgKzk5LDcgQEAgSW5zdHJTdG9wTm9kZShJbnN0cnVtZW50YXRpb24gKmlu c3RyLCBkb3VibGUgblR1cGxlcykKIAkJaWYgKElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+ c3RhcnR0aW1lKSkKIAkJCWVsb2coRVJST1IsICJJbnN0clN0b3BOb2RlIGNhbGxlZCB3aXRo b3V0IHN0YXJ0Iik7CiAKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChlbmR0aW1lKTsKKwkJ SU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9GQVNUKGVuZHRpbWUpOwogCQlJTlNUUl9USU1FX0FD Q1VNX0RJRkYoaW5zdHItPmNvdW50ZXIsIGVuZHRpbWUsIGluc3RyLT5zdGFydHRpbWUpOwog CiAJCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0dGltZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGls cy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggMmYwN2NhN2EwZS4uMmVlZjkwMjQ4MyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpAQCAtODA1LDYgKzgwNSw5IEBAIEluaXRQb3N0 Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwKIAkvKiBJbml0aWFsaXpl IHBvcnRhbCBtYW5hZ2VyICovCiAJRW5hYmxlUG9ydGFsTWFuYWdlcigpOwogCisJLyogaW5p dGlhbGl6ZSBoaWdoLXByZWNpc2lvbiBpbnRlcnZhbCB0aW1pbmcgKi8KKwlJTlNUUl9USU1F X0lOSVRJQUxJWkUoKTsKKwogCS8qIEluaXRpYWxpemUgc3RhdHVzIHJlcG9ydGluZyAqLwog CXBnc3RhdF9iZWluaXQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ190ZXN0X3RpbWlu Zy9wZ190ZXN0X3RpbWluZy5jIGIvc3JjL2Jpbi9wZ190ZXN0X3RpbWluZy9wZ190ZXN0X3Rp bWluZy5jCmluZGV4IGUyMDcxODY2OWEuLmQxODVjOGZlMmUgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdGVzdF90aW1pbmcvcGdfdGVzdF90aW1pbmcuYworKysgYi9zcmMvYmluL3BnX3Rl c3RfdGltaW5nL3BnX3Rlc3RfdGltaW5nLmMKQEAgLTEyOCw3ICsxMjgsOCBAQCB0ZXN0X3Rp bWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAJCQkJZW5kX3RpbWU7CiAJaW5zdHJfdGlt ZQljdXI7CiAKLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0X3RpbWUpOworCUlOU1RS X1RJTUVfSU5JVElBTElaRSgpOworCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlRfRkFTVChzdGFy dF90aW1lKTsKIAogCS8qCiAJICogVG8gcmVkdWNlIGxvb3Agb3ZlcmhlYWQsIGNoZWNrIGxv b3AgY29uZGl0aW9uIGluIGluc3RyX3RpbWUgZG9tYWluLgpAQCAtMTQ3LDcgKzE0OCw3IEBA IHRlc3RfdGltaW5nKHVuc2lnbmVkIGludCBkdXJhdGlvbikKIAkJaW50MzIJCWJpdHMgPSAw OwogCiAJCXByZXYgPSBjdXI7Ci0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoY3VyKTsKKwkJ SU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9GQVNUKGN1cik7CiAJCXRlbXAgPSBjdXI7CiAJCUlO U1RSX1RJTUVfU1VCVFJBQ1QodGVtcCwgcHJldik7CiAJCWRpZmYgPSBJTlNUUl9USU1FX0dF VF9OQU5PU0VDKHRlbXApOwpAQCAtMTc5LDcgKzE4MCw3IEBAIHRlc3RfdGltaW5nKHVuc2ln bmVkIGludCBkdXJhdGlvbikKIAkJbG9vcF9jb3VudCsrOwogCX0KIAotCUlOU1RSX1RJTUVf U0VUX0NVUlJFTlQoZW5kX3RpbWUpOworCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlRfRkFTVChl bmRfdGltZSk7CiAKIAlJTlNUUl9USU1FX1NVQlRSQUNUKGVuZF90aW1lLCBzdGFydF90aW1l KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4v cGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggNTA4ZWQyMThlOC4uNDEyNWJjOGNiNyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jCkBAIC03MDU5LDYgKzcwNTksOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAkJaW5pdFJhbmRvbVN0YXRlKCZzdGF0ZVtpXS5jc19mdW5jX3JzKTsKIAl9CiAK KwkvKiBpbml0aWFsaXplIGhpZ2gtcHJlY2lzaW9uIGludGVydmFsIHRpbWluZyAqLworCUlO U1RSX1RJTUVfSU5JVElBTElaRSgpOworCiAJLyogb3BlbmluZyBjb25uZWN0aW9uLi4uICov CiAJY29uID0gZG9Db25uZWN0KCk7CiAJaWYgKGNvbiA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYyBiL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKaW5kZXgg NWEyOGI2ZjcxMy4uM2Y5NWUwMTMyMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3N0YXJ0 dXAuYworKysgYi9zcmMvYmluL3BzcWwvc3RhcnR1cC5jCkBAIC0yNCw2ICsyNCw3IEBACiAj aW5jbHVkZSAiaGVscC5oIgogI2luY2x1ZGUgImlucHV0LmgiCiAjaW5jbHVkZSAibWFpbmxv b3AuaCIKKyNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAi c2V0dGluZ3MuaCIKIAogLyoKQEAgLTMyMiw2ICszMjMsOSBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAKIAlQUXNldE5vdGljZVByb2Nlc3Nvcihwc2V0LmRiLCBOb3RpY2VQ cm9jZXNzb3IsIE5VTEwpOwogCisJLyogaW5pdGlhbGl6ZSBoaWdoLXByZWNpc2lvbiBpbnRl cnZhbCB0aW1pbmcgKi8KKwlJTlNUUl9USU1FX0lOSVRJQUxJWkUoKTsKKwogCVN5bmNWYXJp YWJsZXMoKTsKIAogCWlmIChvcHRpb25zLmxpc3RfZGJzKQpkaWZmIC0tZ2l0IGEvc3JjL2Nv bW1vbi9NYWtlZmlsZSBiL3NyYy9jb21tb24vTWFrZWZpbGUKaW5kZXggMTEzMDI5YmY3Yi4u MjNhNWM2ODcwNSAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9NYWtlZmlsZQorKysgYi9zcmMv Y29tbW9uL01ha2VmaWxlCkBAIC01OSw2ICs1OSw3IEBAIE9CSlNfQ09NTU9OID0gXAogCWZp bGVfcGVybS5vIFwKIAlmaWxlX3V0aWxzLm8gXAogCWhhc2hmbi5vIFwKKwlpbnN0cl90aW1l Lm8gXAogCWlwLm8gXAogCWpzb25hcGkubyBcCiAJa2V5d29yZHMubyBcCmRpZmYgLS1naXQg YS9zcmMvY29tbW9uL2luc3RyX3RpbWUuYyBiL3NyYy9jb21tb24vaW5zdHJfdGltZS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjk5OGZiMzBlMmYKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvY29tbW9uL2luc3RyX3RpbWUuYwpAQCAtMCwwICsxLDEzMCBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogaW5zdHJfdGltZS5jCisgKgkgICBO b24taW5saW5lIHBhcnRzIG9mIHRoZSBwb3J0YWJsZSBoaWdoLXByZWNpc2lvbiBpbnRlcnZh bCB0aW1pbmcKKyAqCSBpbXBsZW1lbnRhdGlvbgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcG9ydC9pbnN0cl90aW1l LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVz LmgiCisKKyNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCisKKyNpZm5kZWYg V0lOMzIKKy8qCisgKiBTdG9yZXMgd2hhdCB0aGUgbnVtYmVyIG9mIGN5Y2xlcyBuZWVkcyB0 byBiZSBtdWx0aXBsaWVkIHdpdGggdG8gZW5kIHVwCisgKiB3aXRoIG5hbm9zZWNvbmRzIHVz aW5nIGludGVnZXIgbWF0aC4gU2VlIGNvbW1lbnQgaW4gcGdfaW5pdGlhbGl6ZV9yZHRzYygp CisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIEJ5IGRlZmF1bHQgYXNzdW1lIHdlIGFy ZSB1c2luZyBjbG9ja19nZXR0aW1lKCkgYXMgYSBmYWxsYmFjayB3aGljaCB1c2VzCisgKiBu YW5vc2Vjb25kcyBhcyB0aWNrcy4gSGVuY2UsIHdlIHNldCB0aGUgbXVsdGlwbGllciB0byB0 aGUgcHJlY2lzaW9uIHNjYWxhcgorICogc28gdGhhdCB0aGUgZGl2aXNpb24gaW4gSU5TVFJf VElNRV9HRVRfTkFOT1NFQygpIHdvbid0IGNoYW5nZSB0aGUgbmFub3NlY29uZHMuCisgKgor ICogV2hlbiB1c2luZyB0aGUgUkRUU0MgaW5zdHJ1Y3Rpb24gZGlyZWN0bHkgdGhpcyBpcyBm aWxsZWQgaW4gZHVyaW5nIGluaXRpYWxpemF0aW9uCisgKiBiYXNlZCBvbiB0aGUgcmVsZXZh bnQgQ1BVSUQgZmllbGRzLgorICovCitpbnQ2NCB0aWNrc19wZXJfbnNfc2NhbGVkID0gVElD S1NfVE9fTlNfUFJFQ0lTSU9OOworaW50NjQgdGlja3NfcGVyX3NlYyA9IE5TX1BFUl9TOwor aW50NjQgbWF4X3RpY2tzX25vX292ZXJmbG93ID0gUEdfSU5UNjRfTUFYIC8gVElDS1NfVE9f TlNfUFJFQ0lTSU9OOworCisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9f bGludXhfXykKKy8qCisgKiBJbmRpY2F0ZXMgaWYgUkRUU0MgY2FuIGJlIHVzZWQgKExpbnV4 L3g4NiBvbmx5LCB3aGVuIE9TIHVzZXMgVFNDIGNsb2Nrc291cmNlKQorICovCitib29sIGhh c19yZHRzYyA9IGZhbHNlOworCisvKgorICogSW5kaWNhdGVzIGlmIFJEVFNDUCBjYW4gYmUg dXNlZC4gVHJ1ZSBpZiBSRFRTQyBjYW4gYmUgdXNlZCBhbmQgUkRUU0NQIGlzIGF2YWlsYWJs ZS4KKyAqLworYm9vbCBoYXNfcmR0c2NwID0gZmFsc2U7CisKKy8qCisgKiBUaGlzIGZhaWxz IG9uIGh5cGVydmlzb3JzLiBPbiBoeXBlcnZpc29ycyBhIGRpZmZlcmVudCBDUFVJRCBsZWFm IGNvdWxkIGJlIHVzZWQKKyAqIHRvIG9idGFpbiB0aGUgVFNDIGZyZXF1ZW5jeS4gV2UgZG9u J3QgZG8gdGhhdCBiZWNhdXNlIHRoZSBUU0Mgb24gaHlwZXJ2aXNvcnMKKyAqIGlzIHVzdWFs bHkgZW11bGF0ZWQgYW5kIHRoZSBwZXJmb3JtYW5jZSBvZiBlbXVsYXRlZCBhbiBUU0MgaXMg dXN1YWxseSBhcyBiYWQgYXMKKyAqIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgaHlwZXJ2aXNv cidzIGNsb2NrX2dldHRpbWUoKSBpbXBsZW1lbnRhdGlvbi4KKyAqLworc3RhdGljIGJvb2wg Z2V0X3RzY19mcmVxdWVuY3lfa2h6KHVpbnQzMiAqdHNjX2ZyZXEpCit7CisgICAgdWludDMy IHIwLCByMSwgcjI7CisJaW50IHJlc3VsdCA9IF9fZ2V0X2NwdWlkKDB4MTYsIHRzY19mcmVx LCAmcjAsICZyMSwgJnIyKTsKKwkqdHNjX2ZyZXEgKj0gMTAwMDsgLy8gQ29udmVydCBmcm9t IE1IeiB0byBLSHoKKwlyZXR1cm4gcmVzdWx0ID4gMCAmJiAqdHNjX2ZyZXEgPiAwOworfQor CitzdGF0aWMgYm9vbCBpc19yZHRzY3BfYXZhaWxhYmxlKCkKK3sKKwl1aW50MzIgcjAsIHIx LCByMiwgcjM7CisJcmV0dXJuIF9fZ2V0X2NwdWlkKDB4ODAwMDAwMDEsICZyMCwgJnIxLCAm cjIsICZyMykgPiAwICYmIChyMyAmICgxIDw8IDI3KSkgIT0gMDsKK30KKworLyoKKyAqIERl Y2lkZSB3aGV0aGVyIHdlIHVzZSB0aGUgUkRUU0MgaW5zdHJ1Y3Rpb24gYXQgcnVudGltZSwg Zm9yIExpbnV4L3g4NiwKKyAqIGluc3RlYWQgb2YgaW5jdXJyaW5nIHRoZSBvdmVyaGVhZCBv ZiBhIGZ1bGwgY2xvY2tfZ2V0dGltZSgpIGNhbGwuCisgKgorICogVGhpcyBjYW4ndCBiZSBy ZWxpYWJseSBkZXRlcm1pbmVkIGF0IGNvbXBpbGUgdGltZSwgc2luY2UgdGhlCisgKiBhdmFp bGFiaWxpdHkgb2YgYW4gImludmFyaWFudCIgVFNDICh0aGF0IGlzIG5vdCBhZmZlY3RlZCBi eSBDUFUKKyAqIGZyZXF1ZW5jeSBjaGFuZ2VzKSBpcyBkZXBlbmRlbnQgb24gdGhlIENQVSBh cmNoaXRlY3R1cmUuIEFkZGl0aW9uYWxseSwKKyAqIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSBU U0MgYXZhaWxhYmlsaXR5IGlzIGltcGFjdGVkIGJ5IHZpcnR1YWxpemF0aW9uLAorICogd2hl cmUgYSBzaW1wbGUgY3B1aWQgZmVhdHVyZSBjaGVjayB3b3VsZCBub3QgYmUgZW5vdWdoLgor ICoKKyAqIFNpbmNlIExpbnV4IGFscmVhZHkgZG9lcyBhIHNpZ25pZmljYW50IGFtb3VudCBv ZiB3b3JrIHRvIGRldGVybWluZQorICogd2hldGhlciBUU0MgaXMgYSB2aWFibGUgY2xvY2sg c291cmNlLCBkZWNpZGUgYmFzZWQgb24gdGhhdC4KKyAqLwordm9pZCBwZ19pbml0aWFsaXpl X3JkdHNjKHZvaWQpCit7CisJRklMRSAqZnAgPSBmb3BlbigiL3N5cy9kZXZpY2VzL3N5c3Rl bS9jbG9ja3NvdXJjZS9jbG9ja3NvdXJjZTAvY3VycmVudF9jbG9ja3NvdXJjZSIsICJyIik7 CisKKwlpZiAoZnApCisJeworCQljaGFyIGJ1ZlsxMjhdOworCisJCWlmIChmZ2V0cyhidWYs IHNpemVvZihidWYpLCBmcCkgIT0gTlVMTCAmJiBzdHJjbXAoYnVmLCAidHNjXG4iKSA9PSAw KQorCQl7CisJCQkvKgorCQkJKiBDb21wdXRlIGJhc2VsaW5lIENQVSBwZWZvcm1hbmNlLCBk ZXRlcm1pbmVzIHNwZWVkIGF0IHdoaWNoIFJEVFNDIGFkdmFuY2VzLgorCQkJKi8KKwkJCXVp bnQzMiB0c2NfZnJlcTsKKworCQkJaWYgKGdldF90c2NfZnJlcXVlbmN5X2toeigmdHNjX2Zy ZXEpKQorCQkJeworCQkJCS8qCisJCQkJKiBUaWNrcyB0byBuYW5vc2Vjb25kcyBjb252ZXJz aW9uIHJlcXVpcmVzIGZsb2F0aW5nIHBvaW50IG1hdGgKKwkJCQkqIGJlY2F1c2UgYmVjYXVz ZToKKwkJCQkqIAorCQkJCSogc2VjID0gdGlja3MgLyBmcmVxdWVuY3lfaHoKKwkJCQkqIG5z ICA9IHRpY2tzIC8gZnJlcXVlbmN5X2h6ICogMSwwMDAsMDAwLDAwMAorCQkJCSogbnMgID0g dGlja3MgKiAoMSwwMDAsMDAwLDAwMCAvIGZyZXF1ZW5jeV9oeikKKwkJCQkqIG5zICA9IHRp Y2tzICogKDEsMDAwLDAwMCAvIGZyZXF1ZW5jeV9raHopIDwtLSBub3cgaW4ga2lsb2hlcnR6 CisJCQkJKgorCQkJCSogSGVyZSwgJ25zJyBpcyB1c3VhbGx5IGEgZmxvYXRpbmcgbnVtYmVy LiBGb3IgZXhhbXBsZSBmb3IgYSAyLjUgR0h6CisJCQkJKiBDUFUgdGhlIHNjYWxpbmcgZmFj dG9yIGJlY29tZXMgMSwwMDAsMDAwIC8gMiw1MDAsMDAwID0gMS4yLgorCQkJCSoKKwkJCQkq IFRvIGJlIGFibGUgdG8gdXNlIGludGVnZXIgbWF0aCB3ZSB3b3JrIGFyb3VuZCB0aGUgbGFj ayBvZiBwcmVjaXNpb24uCisJCQkJKiBXZSBmaXJzdCBzY2FsZSB0aGUgaW50ZWdlciB1cCBh bmQgYWZ0ZXIgdGhlIG11bHRpcGxpY2F0aW9uIGJ5IHRoZQorCQkJCSogbnVtYmVyIG9mIHRp Y2tzIGluIElOU1RSX1RJTUVfR0VUX05BTk9TRUMoKSB3ZSBkaXZpZGUgYWdhaW4gYnkgdGhl CisJCQkJKiBzYW1lIHZhbHVlLiBXZSBwaWNrZWQgdGhlIHNjYWxlciBzdWNoIHRoYXQgaXQg cHJvdmlkZXMgZW5vdWdoIHByZWNpc2lvbgorCQkJCSogYW5kIGlzIGEgcG93ZXItb2YtdHdv IHdoaWNoIGFsbG93cyBmb3Igc2hpZnRpbmcgaW5zdGVhZCBvZiBkb2luZyBhbgorCQkJCSog aW50ZWdlciBkaXZpc2lvbi4KKwkJCQkqLworCQkJCXRpY2tzX3Blcl9uc19zY2FsZWQgPSBJ TlQ2NENPTlNUKDEwMDAwMDApICogVElDS1NfVE9fTlNfUFJFQ0lTSU9OIC8gdHNjX2ZyZXE7 CisJCQkJdGlja3NfcGVyX3NlYyA9IHRzY19mcmVxICogMTAwMDsgLy8gS0h6IC0+IEh6CisJ CQkJbWF4X3RpY2tzX25vX292ZXJmbG93ID0gUEdfSU5UNjRfTUFYIC8gdGlja3NfcGVyX25z X3NjYWxlZDsKKworCQkJCWhhc19yZHRzYyA9IHRydWU7CisJCQkJaGFzX3JkdHNjcCA9IGlz X3JkdHNjcF9hdmFpbGFibGUoKTsKKwkJCX0KKwkJfQorCisJCWZjbG9zZShmcCk7CisJfQor fQorI2VuZGlmCQkJCQkJCS8qIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xp bnV4X18pICovCisKKyNlbmRpZgkJCQkJCQkvKiBXSU4zMiAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2NvbW1vbi9tZXNvbi5idWlsZCBiL3NyYy9jb21tb24vbWVzb24uYnVpbGQKaW5kZXggNDFi ZDU4ZWJkZi4uMDAwOTgzYzZiZiAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9tZXNvbi5idWls ZAorKysgYi9zcmMvY29tbW9uL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBAIGNvbW1v bl9zb3VyY2VzID0gZmlsZXMoCiAgICdmaWxlX3Blcm0uYycsCiAgICdmaWxlX3V0aWxzLmMn LAogICAnaGFzaGZuLmMnLAorICAnaW5zdHJfdGltZS5jJywKICAgJ2lwLmMnLAogICAnanNv bmFwaS5jJywKICAgJ2tleXdvcmRzLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9y dGFiaWxpdHkvaW5zdHJfdGltZS5oIGIvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJf dGltZS5oCmluZGV4IGFhYjgwZWZmYjAuLjZmZGE1NjUzNjYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3BvcnRhYmlsaXR5L2luc3RyX3RpbWUuaAorKysgYi9zcmMvaW5jbHVkZS9wb3J0 YWJpbGl0eS9pbnN0cl90aW1lLmgKQEAgLTQsOSArNCwxMSBAQAogICoJICBwb3J0YWJsZSBo aWdoLXByZWNpc2lvbiBpbnRlcnZhbCB0aW1pbmcKICAqCiAgKiBUaGlzIGZpbGUgcHJvdmlk ZXMgYW4gYWJzdHJhY3Rpb24gbGF5ZXIgdG8gaGlkZSBwb3J0YWJpbGl0eSBpc3N1ZXMgaW4K LSAqIGludGVydmFsIHRpbWluZy4gIE9uIFVuaXggd2UgdXNlIGNsb2NrX2dldHRpbWUoKSwg YW5kIG9uIFdpbmRvd3Mgd2UgdXNlCi0gKiBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigpLiAg VGhlc2UgbWFjcm9zIGFsc28gZ2l2ZSBzb21lIGJyZWF0aGluZyByb29tIHRvCi0gKiB1c2Ug b3RoZXIgaGlnaC1wcmVjaXNpb24tdGltaW5nIEFQSXMuCisgKiBpbnRlcnZhbCB0aW1pbmcu IE9uIExpbnV4L3g4NiB3ZSB1c2UgdGhlIHJkdHNjIGluc3RydWN0aW9uIHdoZW4gYSBUU0MK KyAqIGNsb2Nrc291cmNlIGlzIGFsc28gdXNlZCBvbiB0aGUgaG9zdCBPUy4gIE90aGVyd2lz ZSwgYW5kIG9uIG90aGVyCisgKiBVbml4LWxpa2Ugc3lzdGVtcyB3ZSB1c2UgY2xvY2tfZ2V0 dGltZSgpIGFuZCBvbiBXaW5kb3dzIHdlIHVzZQorICogUXVlcnlQZXJmb3JtYW5jZUNvdW50 ZXIoKS4gVGhlc2UgbWFjcm9zIGFsc28gZ2l2ZSBzb21lIGJyZWF0aGluZworICogcm9vbSB0 byB1c2Ugb3RoZXIgaGlnaC1wcmVjaXNpb24tdGltaW5nIEFQSXMuCiAgKgogICogVGhlIGJh c2ljIGRhdGEgdHlwZSBpcyBpbnN0cl90aW1lLCB3aGljaCBhbGwgY2FsbGVycyBzaG91bGQg dHJlYXQgYXMgYW4KICAqIG9wYXF1ZSB0eXBlZGVmLiAgaW5zdHJfdGltZSBjYW4gc3RvcmUg ZWl0aGVyIGFuIGFic29sdXRlIHRpbWUgKG9mCkBAIC0xOSwxMCArMjEsMTEgQEAKICAqCiAg KiBJTlNUUl9USU1FX1NFVF9aRVJPKHQpCQkJc2V0IHQgdG8gemVybyAobWVtc2V0IGlzIGFj Y2VwdGFibGUgdG9vKQogICoKLSAqIElOU1RSX1RJTUVfU0VUX0NVUlJFTlQodCkJCXNldCB0 IHRvIGN1cnJlbnQgdGltZQotICoKLSAqIElOU1RSX1RJTUVfU0VUX0NVUlJFTlRfTEFaWSh0 KQlzZXQgdCB0byBjdXJyZW50IHRpbWUgaWYgdCBpcyB6ZXJvLAotICoJCQkJCQkJCQlldmFs dWF0ZXMgdG8gd2hldGhlciB0IGNoYW5nZWQKKyAqIElOU1RSX1RJTUVfU0VUX0NVUlJFTlRf RkFTVCh0KQlzZXQgdCB0byBjdXJyZW50IHRpbWUgd2l0aG91dCB3YWl0aW5nCisgKiAJCQkJ CQkJCQlmb3IgaW5zdHJ1Y3Rpb25zIGluIG91dC1vZi1vcmRlciB3aW5kb3cKKyAqIAorICog SU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0KQkJc2V0IHQgdG8gY3VycmVudCB0aW1lIHdoaWxl IHdhaXRpbmcgZm9yCisgKiAJCQkJCQkJCQlpbnN0cnVjdGlvbnMgaW4gT09PIHRvIHJldGly ZQogICoKICAqIElOU1RSX1RJTUVfU0VUX1NFQ09ORFModCwgcykJCXNldCB0IHRvIHMgc2Vj b25kcwogICoKQEAgLTg0LDcgKzg3LDE1IEBAIHR5cGVkZWYgc3RydWN0IGluc3RyX3RpbWUK IAogCiAjaWZuZGVmIFdJTjMyCisvKgorICogTWFrZSBzdXJlIHRoaXMgaXMgYSBwb3dlci1v Zi10d28sIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNhbiB0dXJuIHRoZQorICogbXVsdGlwbGlj YXRpb25zIGFuZCBkaXZpc2lvbnMgaW50byBzaGlmdHMuCisgKi8KKyNkZWZpbmUgVElDS1Nf VE9fTlNfUFJFQ0lTSU9OICgxPDwxNCkKIAorZXh0ZXJuIGludDY0IHRpY2tzX3Blcl9uc19z Y2FsZWQ7CitleHRlcm4gaW50NjQgdGlja3NfcGVyX3NlYzsKK2V4dGVybiBpbnQ2NCBtYXhf dGlja3Nfbm9fb3ZlcmZsb3c7CiAKIC8qIFVzZSBjbG9ja19nZXR0aW1lKCkgKi8KIApAQCAt MTEwLDM1ICsxMjEsMTEzIEBAIHR5cGVkZWYgc3RydWN0IGluc3RyX3RpbWUKICNkZWZpbmUg UEdfSU5TVFJfQ0xPQ0sJQ0xPQ0tfUkVBTFRJTUUKICNlbmRpZgogCi0vKiBoZWxwZXIgZm9y IElOU1RSX1RJTUVfU0VUX0NVUlJFTlQgKi8KKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pICYm IGRlZmluZWQoX19saW51eF9fKQorI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2luY2x1ZGUg PGNwdWlkLmg+CisKK2V4dGVybiBib29sIGhhc19yZHRzYzsKK2V4dGVybiBib29sIGhhc19y ZHRzY3A7CisjZW5kaWYKKwogc3RhdGljIGlubGluZSBpbnN0cl90aW1lCi1wZ19jbG9ja19n ZXR0aW1lX25zKHZvaWQpCitwZ19jbG9ja19nZXR0aW1lKCkKIHsKIAlpbnN0cl90aW1lCW5v dzsKIAlzdHJ1Y3QgdGltZXNwZWMgdG1wOwogCiAJY2xvY2tfZ2V0dGltZShQR19JTlNUUl9D TE9DSywgJnRtcCk7CiAJbm93LnRpY2tzID0gdG1wLnR2X3NlYyAqIE5TX1BFUl9TICsgdG1w LnR2X25zZWM7Ci0KIAlyZXR1cm4gbm93OwogfQogCitzdGF0aWMgaW5saW5lIGluc3RyX3Rp bWUKK3BnX2dldF90aWNrc19mYXN0KHZvaWQpCit7CisjaWYgZGVmaW5lZChfX3g4Nl82NF9f KSAmJiBkZWZpbmVkKF9fbGludXhfXykKKwlpZiAoaGFzX3JkdHNjKQorCXsKKwkJaW5zdHJf dGltZSBub3c7CisJCXVpbnQzMiBhOworCQlub3cudGlja3MgPSBfX3JkdHNjcCgmYSk7CisJ CXJldHVybiBub3c7CisJfQorI2VuZGlmCisKKwlyZXR1cm4gcGdfY2xvY2tfZ2V0dGltZSgp OworfQorCitzdGF0aWMgaW5saW5lIGluc3RyX3RpbWUKK3BnX2dldF90aWNrcyh2b2lkKQor eworI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCisJaWYg KGhhc19yZHRzY3ApCisJeworCQlpbnN0cl90aW1lIG5vdzsKKwkJdWludDMyIHVudXNlZDsK KwkJbm93LnRpY2tzID0gX19yZHRzY3AoJnVudXNlZCk7CisJCXJldHVybiBub3c7CisJfQor I2VuZGlmCisKKwlyZXR1cm4gcGdfY2xvY2tfZ2V0dGltZSgpOworfQorCitzdGF0aWMgaW5s aW5lIGludDY0X3QKK3BnX3RpY2tzX3RvX25zKGluc3RyX3RpbWUgdCkKK3sKKwkvKgorCSAq IFdvdWxkIG11bHRpcGxpY2F0aW9uIG92ZXJmbG93PyBJZiBzbyBwZXJmb3JtIGNvbXB1dGF0 aW9uIGluIHR3byBwYXJ0cy4KKwkgKiBDaGVjayBvdmVyZmxvdyB3aXRob3V0IGFjdHVhbGx5 IG92ZXJmbG93aW5nIHZpYToKKwkgKiAgICBhICogYiA+IG1heCA8PT4gYSA+IG1heCAvIGIK KwkgKi8KKwlpbnQ2NCBucyA9IDA7CisKKwlpZiAodW5saWtlbHkodC50aWNrcyA+IG1heF90 aWNrc19ub19vdmVyZmxvdykpCisJeworCQkvKgorCQkqIENvbXB1dGUgaG93IG9mdGVuIHRo ZSBtYXhpbXVtIG51bWJlciBvZiB0aWNrcyBmaXRzIGNvbXBsZXRlbHkgaW50byB0aGUKKwkJ KiBudW1iZXIgb2YgZWxhcHNlZCB0aWNrcyBhbmQgY29udmVydCB0aGF0IG51bWJlciBpbnRv IG5hbm9zZWNvbmRzLiAKKwkJKiBUaGVuIG11bHRpcGx5IGJ5IHRoZSBjb3VudCB0byBhcnJp dmUgYXQgdGhlIGZpbmFsIHZhbHVlLiBJbiBhIDJuZCBzdGVwCisJCSogd2UgYWRqdXN0IHRo ZSBudW1iZXIgb2YgZWxhcHNlZCB0aWNrcyBhbmQgY29udmVydCB0aGUgcmVtYWluaW5nIHRp Y2tzLgorCQkqLworCQlpbnQ2NCBjb3VudCA9IHQudGlja3MgLyBtYXhfdGlja3Nfbm9fb3Zl cmZsb3c7CisJCWludDY0IG1heF9ucyA9IG1heF90aWNrc19ub19vdmVyZmxvdyAqIHRpY2tz X3Blcl9uc19zY2FsZWQgLyBUSUNLU19UT19OU19QUkVDSVNJT047CisJCW5zID0gbWF4X25z ICogY291bnQ7CisKKwkJLyoKKwkJKiBTdWJ0cmFjdCB0aGUgdGlja3MgdGhhdCB3ZSBub3cg YWxyZWFkeSBhY2NvdW50ZWQgZm9yLCBzbyB0aGF0IHRoZXkgZG9uJ3QKKwkJKiBnZXQgY291 bnRlZCB0d2ljZS4KKwkJKi8KKwkJdC50aWNrcyAtPSBjb3VudCAqIG1heF90aWNrc19ub19v dmVyZmxvdzsKKwkJQXNzZXJ0KHQudGlja3MgPj0gMCk7CisJfQorCisJbnMgKz0gdC50aWNr cyAqIHRpY2tzX3Blcl9uc19zY2FsZWQgLyBUSUNLU19UT19OU19QUkVDSVNJT047CisJcmV0 dXJuIG5zOworfQorCitleHRlcm4gdm9pZCBwZ19pbml0aWFsaXplX3JkdHNjKHZvaWQpOwor CisjZGVmaW5lIElOU1RSX1RJTUVfSU5JVElBTElaRSgpIFwKKwlwZ19pbml0aWFsaXplX3Jk dHNjKCkKKworI2RlZmluZSBJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1QodCkgXAorCSgo dCkgPSBwZ19nZXRfdGlja3NfZmFzdCgpKQorCiAjZGVmaW5lIElOU1RSX1RJTUVfU0VUX0NV UlJFTlQodCkgXAotCSgodCkgPSBwZ19jbG9ja19nZXR0aW1lX25zKCkpCisJKCh0KSA9IHBn X2dldF90aWNrcygpKQogCiAjZGVmaW5lIElOU1RSX1RJTUVfU0VUX1NFQ09ORFModCwgcykg XAotCSgodCkudGlja3MgPSBOU19QRVJfUyAqIChzKSkKKwkoKHQpLnRpY2tzID0gKHMpICog dGlja3NfcGVyX3NlYykKIAogI2RlZmluZSBJTlNUUl9USU1FX0dFVF9OQU5PU0VDKHQpIFwK LQkoKGludDY0KSAodCkudGlja3MpCi0KKwlwZ190aWNrc190b19ucyh0KQogCiAjZWxzZQkJ CQkJCQkvKiBXSU4zMiAqLwogCiAKIC8qIFVzZSBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigp ICovCiAKLS8qIGhlbHBlciBmb3IgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCAqLwogc3RhdGlj IGlubGluZSBpbnN0cl90aW1lCiBwZ19xdWVyeV9wZXJmb3JtYW5jZV9jb3VudGVyKHZvaWQp CiB7CkBAIC0xNjAsNiArMjQ5LDExIEBAIEdldFRpbWVyRnJlcXVlbmN5KHZvaWQpCiAJcmV0 dXJuIChkb3VibGUpIGYuUXVhZFBhcnQ7CiB9CiAKKyNkZWZpbmUgSU5TVFJfVElNRV9JTklU SUFMSVpFKCkKKworI2RlZmluZSBJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1QodCkgXAor CSgodCkgPSBwZ19xdWVyeV9wZXJmb3JtYW5jZV9jb3VudGVyKCkpCisKICNkZWZpbmUgSU5T VFJfVElNRV9TRVRfQ1VSUkVOVCh0KSBcCiAJKCh0KSA9IHBnX3F1ZXJ5X3BlcmZvcm1hbmNl X2NvdW50ZXIoKSkKIApAQCAtMTgwLDEzICsyNzQsOCBAQCBHZXRUaW1lckZyZXF1ZW5jeSh2 b2lkKQogCiAjZGVmaW5lIElOU1RSX1RJTUVfSVNfTFQoeCwgeSkJKCh4KS50aWNrcyA8ICh5 KS50aWNrcykKIAotCiAjZGVmaW5lIElOU1RSX1RJTUVfU0VUX1pFUk8odCkJKCh0KS50aWNr cyA9IDApCiAKLSNkZWZpbmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9MQVpZKHQpIFwKLQko SU5TVFJfVElNRV9JU19aRVJPKHQpID8gSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0KSwgdHJ1 ZSA6IGZhbHNlKQotCi0KICNkZWZpbmUgSU5TVFJfVElNRV9BREQoeCx5KSBcCiAJKCh4KS50 aWNrcyArPSAoeSkudGlja3MpCiAKQEAgLTE5Niw3ICsyODUsNiBAQCBHZXRUaW1lckZyZXF1 ZW5jeSh2b2lkKQogI2RlZmluZSBJTlNUUl9USU1FX0FDQ1VNX0RJRkYoeCx5LHopIFwKIAko KHgpLnRpY2tzICs9ICh5KS50aWNrcyAtICh6KS50aWNrcykKIAotCiAjZGVmaW5lIElOU1RS X1RJTUVfR0VUX0RPVUJMRSh0KSBcCiAJKChkb3VibGUpIElOU1RSX1RJTUVfR0VUX05BTk9T RUModCkgLyBOU19QRVJfUykKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL21zdmMvTWt2Y2J1 aWxkLnBtIGIvc3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtCmluZGV4IGYxYzlkZGY0YTAu LmJlYzc0YjUyYWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9tc3ZjL01rdmNidWlsZC5wbQor KysgYi9zcmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0KQEAgLTEzNSw3ICsxMzUsNyBAQCBz dWIgbWt2Y2J1aWxkCiAJb3VyIEBwZ2NvbW1vbmFsbGZpbGVzID0gcXcoCiAJICBhcmNoaXZl LmMgYmFzZTY0LmMgY2hlY2tzdW1faGVscGVyLmMgY29tcHJlc3Npb24uYwogCSAgY29uZmln X2luZm8uYyBjb250cm9sZGF0YV91dGlscy5jIGQycy5jIGVuY25hbWVzLmMgZXhlYy5jCi0J ICBmMnMuYyBmaWxlX3Blcm0uYyBmaWxlX3V0aWxzLmMgaGFzaGZuLmMgaXAuYyBqc29uYXBp LmMKKwkgIGYycy5jIGZpbGVfcGVybS5jIGZpbGVfdXRpbHMuYyBoYXNoZm4uYyBpcC5jIGlu c3RyX3RpbWUubyBqc29uYXBpLmMKIAkgIGtleXdvcmRzLmMga3dsb29rdXAuYyBsaW5rLWNh bmFyeS5jIG1kNV9jb21tb24uYyBwZXJjZW50cmVwbC5jCiAJICBwZ19nZXRfbGluZS5jIHBn X2x6Y29tcHJlc3MuYyBwZ19wcm5nLmMgcGdmbmFtZXMuYyBwc3ByaW50Zi5jIHJlbHBhdGgu YwogCSAgcm10cmVlLmMgc2FzbHByZXAuYyBzY3JhbS1jb21tb24uYyBzdHJpbmcuYyBzdHJp bmdpbmZvLmMgdW5pY29kZV9ub3JtLmMKLS0gCjIuMzQuMQoK --------------1WGJu3EchMYVGPJzs4fRJ1Cb--