Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vuXo2-00Caez-10 for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Feb 2026 15:25:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vuXo1-00DqXl-0h for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Feb 2026 15:25:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vuXo0-00DqXd-2a for pgsql-hackers@lists.postgresql.org; Mon, 23 Feb 2026 15:25:04 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vuXnx-00000000svd-25yM for pgsql-hackers@postgresql.org; Mon, 23 Feb 2026 15:25:04 +0000 Received: by mail-wr1-x444.google.com with SMTP id ffacd0b85a97d-436234ef0f0so2927224f8f.1 for ; Mon, 23 Feb 2026 07:25:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771860301; x=1772465101; darn=postgresql.org; 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=wL0vpHeQH0zBLUvKkrj/4OeyZmmzEx16jAFCbFIbAhw=; b=l/iKH/LbHbEFGwG8GqHgjIglksqll+lXZaJI951bvsYgdQy4siz4ZO49KQ6JAxwBzq PwH4uQAhyobj8iDOCszN6fhVq3GZHDPAIJMEb1KCa5+0XaS4RmdLTeop2mMhSIgWIX2o dpVWCR8EJ5DcU0eLa9dyCn9tzTNStAu73UmszFTljHak5dexgjg97l42iVK6wK6paKx5 geCg1c8l99gK9LWq9oFMuhRR95UcPJ3Mx/QvplBtQsWCr2RpDL9R1zPcXEkChcptF1m4 JDmUkd5T5imIEOa+7/3nEKg78qiW+VxwTmkDuV4Y/v54QSp7Np4XAnVkHjWXrwDz/Zhl iVTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771860301; x=1772465101; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=wL0vpHeQH0zBLUvKkrj/4OeyZmmzEx16jAFCbFIbAhw=; b=WYnVlEO9YQf+whtLCUwgRwS2CQWDlkTtooYTbd5LxK093EQTCZMUrSs853+X4mH2Yg xhFrgrmbuvTWii7YRmvUKgGh0MLbd528vWb77nNRzbuRFXXm9xfIYYZor5c0fM4fd/5j ++ySLjWh7h2bMlqKi0hTBqO+WPRGFBipsqHX0EfZN4TonEvbqQ2YgPSW3aDJS5vGWSOd W/l+TGjbbLG5vSAgzG+hne395VJmAt06PFQ6cQuPdpmF6kVyO3T5et7vXF5i5QrhcW6k j1a7TEXmLjBp/lRaElddvo5F6xaoxzvt4FRt0D9DhGCq2KCtOQ1sUHJn98/njXGrEzvE Rw5A== X-Forwarded-Encrypted: i=1; AJvYcCW80mP1gcjqwPNDW/78tG21r0fSxTaH49b14zLx1o37DCzyupkpAXrhQ3Kp8vRaDJhS1UBj4XbyTFfOjLyf@postgresql.org X-Gm-Message-State: AOJu0YxBrJGdnAqHBilCqA+5VkJjfDi+Rvz2TDFiQhhVKe649Qy7GCbC pVcb5lrXYYjwy4yO+elTE0iiQDurX7hLwwVOEuPZFQFph99jWKuwEjKG X-Gm-Gg: ATEYQzxwuuRGnrzGcFyQcorISVZ9DR8OfKpdTFnK3DLTusFzQaLjPUCFU/Nev2eMqrF HyXwHtpjvrdkciNMsiXP5Yk3dGNwbK5Piiji8Jni546TDiknaq4sZIAvHBrGZk9EwmZeJtTV19M jus2FFHZgsc7GE5ygbgN6DSao2p1qUya71CujPi/Y/JqvEbbRjCEFylVDwOoBbIf3352Fu/pw+J gBTKPRV0CbJQAPCkjeQGivYAI94LSo6YcWRAPM4RYG/lNXKQmAmlJyj5L8UV2CXobkeImEf3iUJ uQV6BuLp1huydNpA1pFD7g1IBp/UiZztFbIn5jFm9n6EZY9zobmBtXEVwEHZ2KCXcD8MPylqUxV p7nh5fmI2jgIe5pQBWr0h+5qZ50m1wTn0/wB0J5JBHcfEXb5ojewJyrQ5e3XSydy5yjiKYY8aqU /lCC/3aih6R6oWcIUXt+BTi3db X-Received: by 2002:a5d:5d81:0:b0:436:3707:2bf3 with SMTP id ffacd0b85a97d-4396f16e44emr15927294f8f.24.1771860300805; Mon, 23 Feb 2026 07:25:00 -0800 (PST) Received: from [172.31.5.233] ([165.225.27.16]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43970d3fc12sm17655587f8f.24.2026.02.23.07.24.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 23 Feb 2026 07:24:59 -0800 (PST) Content-Type: multipart/mixed; boundary="------------Qqru7IpPOzfUyn9KiaUWf1dy" Message-ID: <41528b05-62be-4a5a-abd8-2af2dd84a1be@gmail.com> Date: Mon, 23 Feb 2026 16:24:57 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Reduce timing overhead of EXPLAIN ANALYZE using rdtsc? To: Lukas Fittl , Andres Freund Cc: Jakub Wartak , Hannu Krosing , Robert Haas , Pavel Stehule , vignesh C , Michael Paquier , Ibrar Ahmed , Maciek Sakrejda , pgsql-hackers References: <7717ba64-9283-49ec-aa3f-34c6de848b93@gmail.com> <3bdce15d-25ec-4c49-9906-818803462897@gmail.com> <1e0462f0-8274-4d57-aa39-9b6ebeb954da@gmail.com> Content-Language: en-US From: David Geier In-Reply-To: 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. --------------Qqru7IpPOzfUyn9KiaUWf1dy Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hi Lukas, Thanks for taking care of incorporating the latest patch feedback. On 13.02.2026 05:11, Lukas Fittl wrote: > On Thu, Feb 12, 2026 at 4:41 PM Andres Freund wrote: >> On 2026-02-12 08:05:27 -0800, Lukas Fittl wrote: > (1) changing the pg_ticks_to_ns logic to have an explicit > "ticks_per_ns_scaled == 0" early check and return at the start, and > setting ticks_per_ns_scaled to 0 when clock_gettime() gets used. This > is similar to what David already suggested in an earlier email. > (2) using uint64 for the ticks_per_ns_scaled/max_ticks_no_overflow > variables - this appears to help GCC generate a bit shift reliably, > instead of an idiv instruction. > > That appears to eliminate the regression in my testing. Attached an > updated v7, which also has some slightly improved commit messages. > > Additional comparisons with the test case you had back at the start of > this thread, with system clock source on my test VM: > > master: > > EXPLAIN (ANALYZE, TIMING ON) SELECT count(*) FROM lotsarows; > Time: 1888.891 ms (best of 3) > pg_test_timing / Average loop time including overhead: 23.53 ns > > v6 (0002 + pg_test_timing prev/cur change): > > EXPLAIN (ANALYZE, TIMING ON) SELECT count(*) FROM lotsarows; > Time: 1897.095 ms (best of 3) > pg_test_timing / Average loop time including overhead: 25.52 ns > > v7 (0002): > > EXPLAIN (ANALYZE, TIMING ON) SELECT count(*) FROM lotsarows; > Time: 1897.148 ms (best of 3) > Average loop time including overhead: 23.14 ns Shouldn't that result be better than master because you optimized the loop overhead in v7-0002? That's at least what I've measured, see test results below. > And when looking at the TSC time source with the full patch set on the same VM: > > v6: > > EXPLAIN (ANALYZE, TIMING ON) SELECT count(*) FROM lotsarows; > Time: 1477.672 ms (best of 3) > pg_test_timing / Average loop time including overhead: 11.79 ns > > v7: > > EXPLAIN (ANALYZE, TIMING ON) SELECT count(*) FROM lotsarows; > Time: 1476.326 ms (best of 3) > pg_test_timing / Average loop time including overhead: 11.78 ns > > Thanks, > Lukas > > [0]: https://godbolt.org/z/EvK1M66n5 > > -- > Lukas Fittl The code wasn't compiling properly on Windows because __x86_64__ is not defined in Visual C++. I've changed the code to use #if defined(__x86_64__) || defined(_M_X64) I've also changed #include to . I've tested v8 of the patch (= v7 plus aforementioned changes) on Windows. I'm reporting the best of 3 runs. lotsarows test with parallelism disabled: master: 2781 ms v7: 2776 ms (timing_clock_source = 'system') v7: 2091 ms (timing_clock_source = 'tsc') pg_test_timing: master: 27.04 ns v7: 16.59 ns (QueryxPerformanceCounter) v7: 13.69 ns (RDTSCP) v7: 9.42 ns (RDTSC) v8 of the patch is attached to this mail. -- David Geier --------------Qqru7IpPOzfUyn9KiaUWf1dy Content-Type: text/x-patch; charset=UTF-8; name="v8-0004-pg_test_timing-Also-test-RDTSC-RDTSCP-timing-and-.patch" Content-Disposition: attachment; filename*0="v8-0004-pg_test_timing-Also-test-RDTSC-RDTSCP-timing-and-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiYTg3MjMzYmQwMzIxMzMwMWJlNmEwNjEyZDJmNjI1OWNkMDVmMDNhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpE YXRlOiBUaHUsIDEyIEZlYiAyMDI2IDAxOjEyOjE5IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2 OCA0LzRdIHBnX3Rlc3RfdGltaW5nOiBBbHNvIHRlc3QgUkRUU0MvUkRUU0NQIHRpbWluZyBh bmQKIHJlcG9ydCB0aW1lIHNvdXJjZQoKQXV0aG9yOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBn QGdtYWlsLmNvbT4KQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZp ZXdlZC1ieToKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2Fn ZS1pZC9mbGF0LzIwMjAwNjEyMjMyODEwLmY0Nm5icWtkaGJ1dHpxZGclNDBhbGFwMy5hbmFy YXplbC5kZQotLS0KIHNyYy9iaW4vcGdfdGVzdF90aW1pbmcvcGdfdGVzdF90aW1pbmcuYyB8 IDgzICsrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9pbmNsdWRlL3BvcnRhYmlsaXR5 L2luc3RyX3RpbWUuaCAgICB8ICA0ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDc4IGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ190ZXN0X3Rp bWluZy9wZ190ZXN0X3RpbWluZy5jIGIvc3JjL2Jpbi9wZ190ZXN0X3RpbWluZy9wZ190ZXN0 X3RpbWluZy5jCmluZGV4IDlmZDYzMGE0OTBhLi5lNWVjODg0MzU2NyAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ190ZXN0X3RpbWluZy9wZ190ZXN0X3RpbWluZy5jCisrKyBiL3NyYy9iaW4v cGdfdGVzdF90aW1pbmcvcGdfdGVzdF90aW1pbmcuYwpAQCAtMzAsNyArMzAsNyBAQCBzdGF0 aWMgbG9uZyBsb25nIGludCBsYXJnZXN0X2RpZmZfY291bnQ7CiAKIAogc3RhdGljIHZvaWQg aGFuZGxlX2FyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7Ci1zdGF0aWMgdWludDY0IHRl c3RfdGltaW5nKHVuc2lnbmVkIGludCBkdXJhdGlvbik7CitzdGF0aWMgdWludDY0IHRlc3Rf dGltaW5nKHVuc2lnbmVkIGludCBkdXJhdGlvbiwgVGltaW5nQ2xvY2tTb3VyY2VUeXBlIHNv dXJjZSwgYm9vbCBmYXN0X3RpbWluZyk7CiBzdGF0aWMgdm9pZCBvdXRwdXQodWludDY0IGxv b3BfY291bnQpOwogCiBpbnQKQEAgLTQ2LDEwICs0Niw0NyBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJLyogaW5pdGlhbGl6ZSB0aW1pbmcgaW5mcmFzdHJ1Y3R1cmUgKHJl cXVpcmVkIGZvciBJTlNUUl8qIGNhbGxzKSAqLwogCXBnX2luaXRpYWxpemVfdGltaW5nKCk7 CiAKLQlsb29wX2NvdW50ID0gdGVzdF90aW1pbmcodGVzdF9kdXJhdGlvbik7Ci0KKwkvKgor CSAqIEZpcnN0LCB0ZXN0IGRlZmF1bHQgKG5vbi1mYXN0KSB0aW1pbmcgY29kZS4gQSBjbG9j ayBzb3VyY2UgZm9yIHRoYXQgaXMKKwkgKiBhbHdheXMgYXZhaWxhYmxlLiBIZW5jZSwgd2Ug Y2FuIHVuY29uZGl0aW9uYWxseSBvdXRwdXQgdGhlIHJlc3VsdC4KKwkgKi8KKwlsb29wX2Nv dW50ID0gdGVzdF90aW1pbmcodGVzdF9kdXJhdGlvbiwgVElNSU5HX0NMT0NLX1NPVVJDRV9T WVNURU0sIGZhbHNlKTsKIAlvdXRwdXQobG9vcF9jb3VudCk7CiAKKyNpZiBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KQorCisJLyoKKwkgKiBJZiBvbiBhIHN1cHBv cnRlZCBhcmNoaXRlY3R1cmUsIHRlc3QgdGhlIFJEVFNDIGNsb2NrIHNvdXJjZS4gVGhpcyBj bG9jaworCSAqIHNvdXJjZSBpcyBub3QgYWx3YXlzIGF2YWlsYWJsZS4gSW4gdGhhdCBjYXNl IHRoZSBsb29wIGNvdW50IHdpbGwgYmUgMAorCSAqIGFuZCB3ZSBkb24ndCBwcmludC4KKwkg KgorCSAqIFdlIGZpcnN0IGVtaXQgUkRUU0NQIHRpbWluZ3MsIHdoaWNoIGlzIHNsb3dlciwg YW5kIGdldHMgdXNlZCBmb3IgaGlnaGVyCisJICogcHJlY2lzaW9uIG1lYXN1cmVtZW50cyB3 aGVuIHRoZSBUU0MgY2xvY2sgc291cmNlIGlzIGVuYWJsZWQuIFdlIGVtaXQKKwkgKiBSRFRT QyBzZWNvbmQsIHdoaWNoIGlzIHVzZWQgZm9yIGZhc3RlciB0aW1pbmcgbWVhc3VyZW1lbnRz IHdpdGggbG93ZXIKKwkgKiBwcmVjaXNpb24uCisJICovCisJcHJpbnRmKCJcbiIpOworCWxv b3BfY291bnQgPSB0ZXN0X3RpbWluZyh0ZXN0X2R1cmF0aW9uLCBUSU1JTkdfQ0xPQ0tfU09V UkNFX1RTQywgZmFsc2UpOworCWlmIChsb29wX2NvdW50ID4gMCkKKwl7CisJCW91dHB1dChs b29wX2NvdW50KTsKKwkJcHJpbnRmKCJcbiIpOworCisJCS8qIE5vdywgZW1pdCBmYXN0IHRp bWluZyBtZWFzdXJlbWVudHMgKi8KKwkJbG9vcF9jb3VudCA9IHRlc3RfdGltaW5nKHRlc3Rf ZHVyYXRpb24sIFRJTUlOR19DTE9DS19TT1VSQ0VfVFNDLCB0cnVlKTsKKwkJb3V0cHV0KGxv b3BfY291bnQpOworCQlwcmludGYoIlxuIik7CisKKwkJcGdfc2V0X3RpbWluZ19jbG9ja19z b3VyY2UoVElNSU5HX0NMT0NLX1NPVVJDRV9BVVRPKTsKKwkJaWYgKHBnX2N1cnJlbnRfdGlt aW5nX2Nsb2NrX3NvdXJjZSgpID09IFRJTUlOR19DTE9DS19TT1VSQ0VfVFNDKQorCQkJcHJp bnRmKF8oIlRTQyBjbG9jayBzb3VyY2Ugd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQsIHVubGVz cyB0aW1pbmdfY2xvY2tfc291cmNlIGlzIHNldCB0byAnc3lzdGVtJy5cbiIpKTsKKwkJZWxz ZQorCQkJcHJpbnRmKF8oIlRTQyBjbG9jayBzb3VyY2Ugd2lsbCBub3QgYmUgdXNlZCBieSBk ZWZhdWx0LCB1bmxlc3MgdGltaW5nX2Nsb2NrX3NvdXJjZSBpcyBzZXQgdG8gJ3RzYycuXG4i KSk7CisJfQorCWVsc2UKKwkJcHJpbnRmKF8oIlRTQyBjbG9jayBzb3VyY2UgaXMgbm90IHVz YWJsZS4gTGlrZWx5IHVuYWJsZSB0byBkZXRlcm1pbmUgVFNDIGZyZXF1ZW5jeS4gYXJlIHlv dSBydW5uaW5nIGluIGFuIHVuc3VwcG9ydGVkIHZpcnR1YWxpemVkIGVudmlyb25tZW50Py5c biIpKTsKKyNlbmRpZgorCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE0NiwxNCArMTgzLDE0IEBA IGhhbmRsZV9hcmdzKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWV4aXQoMSk7CiAJfQog Ci0JcHJpbnRmKG5nZXR0ZXh0KCJUZXN0aW5nIHRpbWluZyBvdmVyaGVhZCBmb3IgJXUgc2Vj b25kLlxuIiwKLQkJCQkJIlRlc3RpbmcgdGltaW5nIG92ZXJoZWFkIGZvciAldSBzZWNvbmRz LlxuIiwKKwlwcmludGYobmdldHRleHQoIlRlc3RpbmcgdGltaW5nIG92ZXJoZWFkIGZvciAl dSBzZWNvbmQuXG5cbiIsCisJCQkJCSJUZXN0aW5nIHRpbWluZyBvdmVyaGVhZCBmb3IgJXUg c2Vjb25kcy5cblxuIiwKIAkJCQkJdGVzdF9kdXJhdGlvbiksCiAJCSAgIHRlc3RfZHVyYXRp b24pOwogfQogCiBzdGF0aWMgdWludDY0Ci10ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVy YXRpb24pCit0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24sIFRpbWluZ0Nsb2Nr U291cmNlVHlwZSBzb3VyY2UsIGJvb2wgZmFzdF90aW1pbmcpCiB7CiAJdWludDY0CQl0b3Rh bF90aW1lOwogCWludDY0CQl0aW1lX2VsYXBzZWQgPSAwOwpAQCAtMTYyLDYgKzE5OSwyNSBA QCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAJCQkJZW5kX3RpbWUsCiAJ CQkJcHJldiwKIAkJCQljdXI7CisJY2hhcgkgICAqdGltZV9zb3VyY2UgPSBOVUxMOworCisJ aWYgKCFwZ19zZXRfdGltaW5nX2Nsb2NrX3NvdXJjZShzb3VyY2UpKQorCQlyZXR1cm4gMDsK KworI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpCisJaWYgKHBn X2N1cnJlbnRfdGltaW5nX2Nsb2NrX3NvdXJjZSgpID09IFRJTUlOR19DTE9DS19TT1VSQ0Vf VFNDKQorCQl0aW1lX3NvdXJjZSA9IGZhc3RfdGltaW5nID8gIlJEVFNDIiA6ICJSRFRTQ1Ai OworCWVsc2UKKwkJdGltZV9zb3VyY2UgPSBQR19JTlNUUl9TWVNURU1fQ0xPQ0tfTkFNRTsK KyNlbHNlCisJdGltZV9zb3VyY2UgPSBQR19JTlNUUl9TWVNURU1fQ0xPQ0tfTkFNRTsKKyNl bmRpZgorCWlmIChmYXN0X3RpbWluZykKKwkJcHJpbnRmKF8oIkZhc3QgY2xvY2sgc291cmNl OiAlc1xuIiksIHRpbWVfc291cmNlKTsKKwllbHNlIGlmIChzb3VyY2UgPT0gVElNSU5HX0NM T0NLX1NPVVJDRV9TWVNURU0pCisJCXByaW50ZihfKCJTeXN0ZW0gY2xvY2sgc291cmNlOiAl c1xuIiksIHRpbWVfc291cmNlKTsKKwllbHNlCisJCXByaW50ZihfKCJDbG9jayBzb3VyY2U6 ICVzXG4iKSwgdGltZV9zb3VyY2UpOwogCiAJLyoKIAkgKiBQcmUtemVybyB0aGUgc3RhdGlz dGljcyBkYXRhIHN0cnVjdHVyZXMuICBUaGV5J3JlIGFscmVhZHkgemVybyBieQpAQCAtMTc1 LDcgKzIzMSwxMCBAQCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAKIAl0 b3RhbF90aW1lID0gZHVyYXRpb24gPiAwID8gZHVyYXRpb24gKiBJTlQ2NENPTlNUKDEwMDAw MDAwMDApIDogMDsKIAotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnRfdGltZSk7CisJ aWYgKGZhc3RfdGltaW5nKQorCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1Qoc3RhcnRf dGltZSk7CisJZWxzZQorCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0X3RpbWUpOwog CWN1ciA9IHN0YXJ0X3RpbWU7CiAKIAl3aGlsZSAodGltZV9lbGFwc2VkIDwgdG90YWxfdGlt ZSkKQEAgLTE4NCw3ICsyNDMsMTAgQEAgdGVzdF90aW1pbmcodW5zaWduZWQgaW50IGR1cmF0 aW9uKQogCQkJCQliaXRzOwogCiAJCXByZXYgPSBjdXI7Ci0JCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoY3VyKTsKKwkJaWYgKGZhc3RfdGltaW5nKQorCQkJSU5TVFJfVElNRV9TRVRfQ1VS UkVOVF9GQVNUKGN1cik7CisJCWVsc2UKKwkJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoY3Vy KTsKIAkJZGlmZiA9IElOU1RSX1RJTUVfRElGRl9OQU5PU0VDKGN1ciwgcHJldik7CiAKIAkJ LyogRGlkIHRpbWUgZ28gYmFja3dhcmRzPyAqLwpAQCAtMjIxLDcgKzI4MywxMCBAQCB0ZXN0 X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAJCXRpbWVfZWxhcHNlZCA9IElOU1RS X1RJTUVfRElGRl9OQU5PU0VDKGN1ciwgc3RhcnRfdGltZSk7CiAJfQogCi0JSU5TVFJfVElN RV9TRVRfQ1VSUkVOVChlbmRfdGltZSk7CisJaWYgKGZhc3RfdGltaW5nKQorCQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UX0ZBU1QoZW5kX3RpbWUpOworCWVsc2UKKwkJSU5TVFJfVElNRV9T RVRfQ1VSUkVOVChlbmRfdGltZSk7CiAKIAlJTlNUUl9USU1FX1NVQlRSQUNUKGVuZF90aW1l LCBzdGFydF90aW1lKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkv aW5zdHJfdGltZS5oIGIvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCmlu ZGV4IGU3MTkxYzVkNmNkLi41OGQ1MmIzOTYwMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BvcnRhYmlsaXR5 L2luc3RyX3RpbWUuaApAQCAtMTY2LDEwICsxNjYsMTMgQEAgZXh0ZXJuIGJvb2wgcGdfc2V0 X3RpbWluZ19jbG9ja19zb3VyY2UoVGltaW5nQ2xvY2tTb3VyY2VUeXBlIHNvdXJjZSk7CiAg Ki8KICNpZiBkZWZpbmVkKF9fZGFyd2luX18pICYmIGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklD X1JBVykKICNkZWZpbmUgUEdfSU5TVFJfU1lTVEVNX0NMT0NLCUNMT0NLX01PTk9UT05JQ19S QVcKKyNkZWZpbmUgUEdfSU5TVFJfU1lTVEVNX0NMT0NLX05BTUUJImNsb2NrX2dldHRpbWUg KENMT0NLX01PTk9UT05JQ19SQVcpIgogI2VsaWYgZGVmaW5lZChDTE9DS19NT05PVE9OSUMp CiAjZGVmaW5lIFBHX0lOU1RSX1NZU1RFTV9DTE9DSwlDTE9DS19NT05PVE9OSUMKKyNkZWZp bmUgUEdfSU5TVFJfU1lTVEVNX0NMT0NLX05BTUUJImNsb2NrX2dldHRpbWUgKENMT0NLX01P Tk9UT05JQykiCiAjZWxzZQogI2RlZmluZSBQR19JTlNUUl9TWVNURU1fQ0xPQ0sJQ0xPQ0tf UkVBTFRJTUUKKyNkZWZpbmUgUEdfSU5TVFJfU1lTVEVNX0NMT0NLX05BTUUJImNsb2NrX2dl dHRpbWUgKENMT0NLX1JFQUxUSU1FKSIKICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIGluc3Ry X3RpbWUKQEAgLTE4OCw2ICsxOTEsNyBAQCBwZ19nZXRfdGlja3Nfc3lzdGVtKHZvaWQpCiAK IC8qIE9uIFdpbmRvd3MsIHVzZSBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigpIGZvciBzeXN0 ZW0gY2xvY2sgc291cmNlICovCiAKKyNkZWZpbmUgUEdfSU5TVFJfU1lTVEVNX0NMT0NLX05B TUUJIlF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyIgogc3RhdGljIGlubGluZSBpbnN0cl90aW1l CiBwZ19nZXRfdGlja3Nfc3lzdGVtKHZvaWQpCiB7Ci0tIAoyLjUzLjAud2luZG93cy4xCgo= --------------Qqru7IpPOzfUyn9KiaUWf1dy Content-Type: text/x-patch; charset=UTF-8; name="v8-0003-Timing-Use-Time-Stamp-Counter-TSC-on-x86-64-for-f.patch" Content-Disposition: attachment; filename*0="v8-0003-Timing-Use-Time-Stamp-Counter-TSC-on-x86-64-for-f.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyY2RjZGNlNDdlODJmZTk3ZGY0ZmUzNmZiNGZmYzAyYTcxODIxMGUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpE YXRlOiBUaHUsIDEyIEZlYiAyMDI2IDAxOjA5OjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2 OCAzLzRdIFRpbWluZzogVXNlIFRpbWUtU3RhbXAgQ291bnRlciAoVFNDKSBvbiB4ODYtNjQg Zm9yCiBmYXN0ZXIgbWVhc3VyZW1lbnRzCgpUaGlzIGFsbG93cyB0aGUgZGlyZWN0IHVzZSBv ZiB0aGUgVGltZS1TdGFtcCBDb3VudGVyIChUU0MpIHZhbHVlIHJldHJpZXZlZApmcm9tIHRo ZSBDUFUgdXNpbmcgUkRUU0MvUkRUU0MgaW5zdHJ1Y3Rpb25zLCBpbnN0ZWFkIG9mIEFQSXMg bGlrZQpjbG9ja19nZXR0aW1lKCkgb24gUE9TSVggc3lzdGVtcy4gVGhpcyByZWR1Y2VzIHRo ZSBvdmVyaGVhZCBvZiBFWFBMQUlOIHdpdGgKQU5BTFlaRSBhbmQgVElNSU5HIE9OLiBUZXN0 cyBzaG93ZWQgdGhhdCBydW50aW1lIHdoZW4gaW5zdHJ1bWVudGVkIGNhbiBiZQpyZWR1Y2Vk IGJ5IHVwIHRvIDEwJSBmb3IgcXVlcmllcyBtb3ZpbmcgbG90cyBvZiByb3dzIHRocm91Z2gg dGhlIHBsYW4uCgpUbyBjb250cm9sIHVzZSBvZiB0aGUgVFNDLCB0aGUgbmV3ICJ0aW1pbmdf Y2xvY2tfc291cmNlIiBHVUMgaXMgaW50cm9kdWNlZCwKd2hvc2UgZGVmYXVsdCAoImF1dG8i KSBhdXRvbWF0aWNhbGx5IHVzZXMgdGhlIFRTQyB3aGVuIHJ1bm5pbmcgb24gTGludXgveDg2 LTY0LAppbiBjYXNlIHRoZSBzeXN0ZW0gY2xvY2tzb3VyY2UgaXMgcmVwb3J0ZWQgYXMgInRz YyIuIFRoZSB1c2Ugb2YgdGhlIHN5c3RlbQpBUElzIGNhbiBiZSBlbmZvcmNlZCBieSBzZXR0 aW5nICJzeXN0ZW0iLCBvciBvbiB4ODYtNjQgYXJjaGl0ZWN0dXJlcyB0aGUKdXNlIG9mIFRT QyBjYW4gYmUgZW5mb3JjZWQgYnkgZXhwbGljaXRseSBzZXR0aW5nICJ0c2MiLgoKTm90ZSwg dGhhdCB3ZSBmdXJ0aGVyIHNwbGl0IHRoZSB1c2Ugb2YgdGhlIFRTQyBpbnRvIHRoZSBSRFRT QyBDUFUgaW5zdHJ1Y3Rpb24Kd2hpY2ggZG9lcyBub3Qgd2FpdCBmb3Igb3V0LW9mLW9yZGVy IGV4ZWN1dGlvbiAoZmFzdGVyLCBsZXNzIHByZWNpc2UpCmFuZCB0aGUgUkRUU0NQIGluc3Ry dWN0aW9uLCB3aGljaCB3YWl0cyBmb3Igb3V0c3RhbmRpbmcgaW5zdHJ1Y3Rpb25zIHRvCnJl dGlyZS4gUkRUU0NQIGlzIGRlZW1lZCB0byBoYXZlIGxpdHRsZSBiZW5lZml0IGluIHRoZSB0 eXBpY2FsCkluc3RyU3RhcnROb2RlKCkgLyBJbnN0clN0b3BOb2RlKCkgdXNlIGNhc2Ugb2Yg RVhQTEFJTiwgYW5kIGNhbiBiZSB1cCB0bwp0d2ljZSBhcyBzbG93LiBUbyBzZXBhcmF0ZSB0 aGVzZSB1c2UgY2FzZXMsIHRoZSBuZXcgbWFjcm8KSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9G QVNUKCkgaXMgaW50cm9kdWNlZCwgd2hpY2ggdXNlcyBSRFRTQy4KClRoZSBvcmlnaW5hbCBt YWNybyBJTlNUUl9USU1FX1NFVF9DVVJSRU5UKCkgdXNlcyBSRFRTQ1AgYW5kIGlzIHN1cHBv c2VkCnRvIGJlIHVzZWQgd2hlbiBwcmVjaXNpb24gaXMgbW9yZSBpbXBvcnRhbnQgdGhhbiBw ZXJmb3JtYW5jZS4gV2hlbiB0aGUKc3lzdGVtIHRpbWluZyBjbG9jayBzb3VyY2UgaXMgdXNl ZCBib3RoIG9mIHRoZXNlIG1hY3JvcyBpbnN0ZWFkIHV0aWxpemUKdGhlIHN5c3RlbSBBUElz IChjbG9ja19nZXR0aW1lIC8gUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIpIGxpa2UgYmVmb3Jl LgoKQXV0aG9yOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNvbT4KQXV0aG9yOiBB bmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkF1dGhvcjogTHVrYXMgRml0dGwg PGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC8yMDIwMDYxMjIzMjgxMC5mNDZuYnFr ZGhidXR6cWRnJTQwYWxhcDMuYW5hcmF6ZWwuZGUKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgNTUgKysrKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvaW5zdHJ1bWVudC5jICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9w b3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICAgfCAgIDMgLQogc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgIDExICsKIHNyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMSArCiBzcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDQgKwogc3JjL2NvbW1v bi9pbnN0cl90aW1lLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjkzICsrKysrKysrKysr KysrKysrLQogc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oICAgICAgICAg IHwgMTA5ICsrKysrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oICAgICAgICAg ICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9ndWNfdGFibGVzLmggICAgICAg ICAgICAgICAgfCAgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwgNDc1IGluc2VydGlvbnMoKyks IDI3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCAyMGRiY2FlYjNlZS4uYmQ2Nzg3 Y2FhNzEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTI1MzIsNiArMjUzMiw2MSBAQCBpbmNsdWRlX2Rp ciAnY29uZi5kJwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCisgICAg PHNlY3QyIGlkPSJydW50aW1lLWNvbmZpZy1yZXNvdXJjZS10aW1lIj4KKyAgICAgPHRpdGxl PlRpbWluZzwvdGl0bGU+CisKKyAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgPHZhcmxpc3Rl bnRyeSBpZD0iZ3VjLXRpbWluZy1jbG9jay1zb3VyY2UiIHhyZWZsYWJlbD0idGltaW5nX2Ns b2NrX3NvdXJjZSI+CisgICAgICA8dGVybT48dmFybmFtZT50aW1pbmdfY2xvY2tfc291cmNl PC92YXJuYW1lPiAoPHR5cGU+ZW51bTwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAg ICAgIDxwcmltYXJ5Pjx2YXJuYW1lPnRpbWluZ19jbG9ja19zb3VyY2U8L3Zhcm5hbWU+IGNv bmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+Cisg ICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAg IFNlbGVjdHMgdGhlIG1ldGhvZCBmb3IgbWFraW5nIHRpbWluZyBtZWFzdXJlbWVudHMgdXNp bmcgdGhlIE9TIG9yIHNwZWNpYWxpemVkIENQVQorICAgICAgICBpbnN0cnVjdGlvbnMuIFBv c3NpYmxlIHZhbHVlcyBhcmU6CisgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8bGl0ZXJhbD5h dXRvPC9saXRlcmFsPiAoYXV0b21hdGljYWxseSBjaG9vc2VzIFRTQyBjbG9jayBzb3VyY2Ug Zm9yIExpbnV4LWJhc2VkCisgICAgICAgICAgICB4ODYtNjQgc3lzdGVtcyB0aGF0IHV0aWxp emUgInRzYyIgYXMgdGhlaXIgc3lzdGVtIGNsb2NrIHNvdXJjZSwgb3RoZXJ3aXNlIHVzZXMK KyAgICAgICAgICAgIHRoZSBPUyBzeXN0ZW0gY2xvY2spCisgICAgICAgICAgIDwvcGFyYT4K KyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICAgPHBhcmE+CisgICAgICAgICAgICA8bGl0ZXJhbD5zeXN0ZW08L2xpdGVyYWw+IChtZWFz dXJlcyB0aW1pbmcgdXNpbmcgdGhlIE9TIHN5c3RlbSBjbG9jaykKKyAgICAgICAgICAgPC9w YXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxsaXRlcmFsPnRzYzwvbGl0ZXJhbD4gKG1l YXN1cmVzIHRpbWluZyB1c2luZyB0aGUgeDg2LTY0IFRpbWUtU3RhbXAgQ291bnRlciAoVFND KQorICAgICAgICAgICAgYnkgZGlyZWN0bHkgZXhlY3V0aW5nIFJEVFNDL1JEVFNDUCBpbnN0 cnVjdGlvbnMsIHNlZSBiZWxvdykKKyAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwv bGlzdGl0ZW0+CisgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgIFRoZSBkZWZh dWx0IGlzIDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+LgorICAgICAgICA8L3BhcmE+CisgICAg ICAgIDxwYXJhPgorICAgICAgICAgIElmIGVuYWJsZWQsIHRoZSBUU0MgY2xvY2sgc291cmNl IHdpbGwgdXNlIHRoZSBSRFRTQyBpbnN0cnVjdGlvbiBmb3IgdGhlIHg4Ni02NAorICAgICAg ICAgIFRpbWUtU3RhbXAgQ291bnRlciAoVFNDKSB0byBwZXJmb3JtIGNlcnRhaW4gdGltZSBt ZWFzdXJlbWVudHMsIGZvciBleGFtcGxlIGR1cmluZworICAgICAgICAgIEVYUExBSU4gQU5B TFlaRS4gVGhlIFJEVFNDIGluc3RydWN0aW9uIGhhcyBsZXNzIG92ZXJoZWFkIHRoYW4gZ29p bmcgdGhyb3VnaCB0aGUgT1MKKyAgICAgICAgICBjbG9jayBzb3VyY2UsIHdoaWNoIGZvciBh biBFWFBMQUlOIEFOQUxZWkUgc3RhdGVtZW50IHdpbGwgc2hvdyB0aW1pbmcgY2xvc2VyIHRv IHRoZQorICAgICAgICAgIGFjdHVhbCBydW50aW1lIHdoZW4gdGltaW5nIGlzIG9mZi4gRm9y IHRpbWluZ3MgdGhhdCByZXF1aXJlIGhpZ2hlciBwcmVjaXNpb24gdGhlCisgICAgICAgICAg UkRUU0NQIGluc3RydWN0aW9uIGlzIHVzZWQsIHdoaWNoIGF2b2lkcyBpbmFjY3VyYWNpZXMg ZHVlIHRvIENQVSBpbnN0cnVjdGlvbiByZS1vcmRlcmluZy4KKyAgICAgICAgICBVc2Ugb2Yg UkRUU0MvUkRUU0MgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzIG9yIG9uIG90aGVyIGFy Y2hpdGVjdHVyZXMsIGFuZCBpcyBub3QKKyAgICAgICAgICBhZHZpc2VkIG9uIHN5c3RlbXMg dGhhdCB1dGlsaXplIGFuIGVtdWxhdGVkIFRTQy4KKyAgICAgICAgPC9wYXJhPgorICAgICAg ICA8cGFyYT4KKyAgICAgICAgICBUbyBoZWxwIGRlY2lkZSB3aGljaCBjbG9jayBzb3VyY2Ug dG8gdXNlIG9uIGFuIHg4Ni02NCBzeXN0ZW0geW91IGNhbiBydW4gdGhlCisgICAgICAgICAg PGFwcGxpY2F0aW9uPnBnX3Rlc3RfdGltaW5nPC9hcHBsaWNhdGlvbj4gdXRpbGl0eSB0byBj aGVjayBUU0MgYXZhaWxhYmlsaXR5LCBhbmQKKyAgICAgICAgICBwZXJmb3JtIHRpbWluZyBt ZWFzdXJlbWVudHMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L3NlY3QyPgog CiAgICAgPHNlY3QyIGlkPSJydW50aW1lLWNvbmZpZy1yZXNvdXJjZS1iYWNrZ3JvdW5kLXdy aXRlciI+CiAgICAgIDx0aXRsZT5CYWNrZ3JvdW5kIFdyaXRlcjwvdGl0bGU+CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggZWRhYjkyYTBlYmUuLmViZGFkMzFjYTNiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC02Nyw5ICs2NywxMyBAQCBJbnN0 ckluaXQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykK IHZvaWQKIEluc3RyU3RhcnROb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JaWYg KGluc3RyLT5uZWVkX3RpbWVyICYmCi0JCSFJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0xBWlko aW5zdHItPnN0YXJ0dGltZSkpCi0JCWVsb2coRVJST1IsICJJbnN0clN0YXJ0Tm9kZSBjYWxs ZWQgdHdpY2UgaW4gYSByb3ciKTsKKwlpZiAoaW5zdHItPm5lZWRfdGltZXIpCisJeworCQlp ZiAoIUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKKwkJCWVsb2coRVJS T1IsICJJbnN0clN0YXJ0Tm9kZSBjYWxsZWQgdHdpY2UgaW4gYSByb3ciKTsKKwkJZWxzZQor CQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9GQVNUKGluc3RyLT5zdGFydHRpbWUpOworCX0K IAogCS8qIHNhdmUgYnVmZmVyIHVzYWdlIHRvdGFscyBhdCBub2RlIGVudHJ5LCBpZiBuZWVk ZWQgKi8KIAlpZiAoaW5zdHItPm5lZWRfYnVmdXNhZ2UpCkBAIC05NSw3ICs5OSw3IEBAIElu c3RyU3RvcE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCiAJ CWlmIChJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpCiAJCQllbG9nKEVS Uk9SLCAiSW5zdHJTdG9wTm9kZSBjYWxsZWQgd2l0aG91dCBzdGFydCIpOwogCi0JCUlOU1RS X1RJTUVfU0VUX0NVUlJFTlQoZW5kdGltZSk7CisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlRf RkFTVChlbmR0aW1lKTsKIAkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVy LCBlbmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKIAogCQlJTlNUUl9USU1FX1NFVF9aRVJP KGluc3RyLT5zdGFydHRpbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpp bmRleCA2MGJkMDZlZDY2NS4uM2ZhYzQ2YzQwMmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv cG9zdG1hc3Rlci5jCkBAIC01ODgsOSArNTg4LDYgQEAgUG9zdG1hc3Rlck1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKi8KIAlJbml0aWFsaXplR1VDT3B0aW9ucygpOwogCi0J LyogaW5pdGlhbGl6ZSB0aW1pbmcgaW5mcmFzdHJ1Y3R1cmUgKHJlcXVpcmVkIGZvciBJTlNU Ul8qIGNhbGxzKSAqLwotCXBnX2luaXRpYWxpemVfdGltaW5nKCk7Ci0KIAlvcHRlcnIgPSAx OwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFt ZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQK aW5kZXggOTUwNzc3ODQxNWQuLmNmYmU3MDgwMmI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMjk4OCw2ICsyOTg4LDE3IEBACiAgIGFz c2lnbl9ob29rID0+ICdhc3NpZ25fdGltZXpvbmVfYWJicmV2aWF0aW9ucycsCiB9LAogCit7 IG5hbWUgPT4gJ3RpbWluZ19jbG9ja19zb3VyY2UnLCB0eXBlID0+ICdlbnVtJywgY29udGV4 dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9PiAnUkVTT1VSQ0VTX1RJTUUnLAorICBzaG9y dF9kZXNjID0+ICdDb250cm9scyB0aGUgY2xvY2sgc291cmNlIHVzZWQgZm9yIGNvbGxlY3Rp bmcgdGltaW5nIG1lYXN1cmVtZW50cy4nLAorICBsb25nX2Rlc2MgPT4gJ1RoaXMgZW5hYmxl cyB0aGUgdXNlIG9mIHNwZWNpYWxpemVkIGNsb2NrIHNvdXJjZXMsIHNwZWNpZmljYWxseSB0 aGUgUkRUU0MgY2xvY2sgc291cmNlIG9uIHg4Ni02NCBzeXN0ZW1zIChpZiBhdmFpbGFibGUp LCB0byBzdXBwb3J0IHRpbWluZyBtZWFzdXJlbWVudHMgd2l0aCBsb3dlciBvdmVyaGVhZCBk dXJpbmcgRVhQTEFJTiBhbmQgb3RoZXIgaW5zdHJ1bWVudGF0aW9uLicsCisgIHZhcmlhYmxl ID0+ICd0aW1pbmdfY2xvY2tfc291cmNlJywKKyAgYm9vdF92YWwgPT4gJ1RJTUlOR19DTE9D S19TT1VSQ0VfQVVUTycsCisgIG9wdGlvbnMgPT4gJ3RpbWluZ19jbG9ja19zb3VyY2Vfb3B0 aW9ucycsCisgIGNoZWNrX2hvb2sgPT4gJ2NoZWNrX3RpbWluZ19jbG9ja19zb3VyY2UnLAor ICBhc3NpZ25faG9vayA9PiAnYXNzaWduX3RpbWluZ19jbG9ja19zb3VyY2UnLAorICBzaG93 X2hvb2sgPT4gJ3Nob3dfdGltaW5nX2Nsb2NrX3NvdXJjZScsCit9LAorCiB7IG5hbWUgPT4g J3RyYWNlX2Nvbm5lY3Rpb25fbmVnb3RpYXRpb24nLCB0eXBlID0+ICdib29sJywgY29udGV4 dCA9PiAnUEdDX1BPU1RNQVNURVInLCBncm91cCA9PiAnREVWRUxPUEVSX09QVElPTlMnLAog ICBzaG9ydF9kZXNjID0+ICdMb2dzIGRldGFpbHMgb2YgcHJlLWF1dGhlbnRpY2F0aW9uIGNv bm5lY3Rpb24gaGFuZHNoYWtlLicsCiAgIGZsYWdzID0+ICdHVUNfTk9UX0lOX1NBTVBMRScs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDc0MWZjZThkZWRlLi5m MGJjMmUzNDc5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTkx LDYgKzkxLDcgQEAKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidHNl YXJjaC90c19jYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVk ZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgogI2luY2x1ZGUgInV0aWxzL2J5dGVhLmgi CiAjaW5jbHVkZSAidXRpbHMvZmxvYXQuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3Mu aCIKQEAgLTM3Miw2ICszNzMsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfZW51 bV9lbnRyeSBodWdlX3BhZ2VzX29wdGlvbnNbXSA9IHsKIAl7TlVMTCwgMCwgZmFsc2V9CiB9 OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IHRpbWluZ19jbG9j a19zb3VyY2Vfb3B0aW9uc1tdID0geworCXsiYXV0byIsIFRJTUlOR19DTE9DS19TT1VSQ0Vf QVVUTywgZmFsc2V9LAorCXsic3lzdGVtIiwgVElNSU5HX0NMT0NLX1NPVVJDRV9TWVNURU0s IGZhbHNlfSwKKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KQor CXsidHNjIiwgVElNSU5HX0NMT0NLX1NPVVJDRV9UU0MsIGZhbHNlfSwKKyNlbmRpZgorCXtO VUxMLCAwLCBmYWxzZX0KK307CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2VudW1f ZW50cnkgaHVnZV9wYWdlc19zdGF0dXNfb3B0aW9uc1tdID0gewogCXsib2ZmIiwgSFVHRV9Q QUdFU19PRkYsIGZhbHNlfSwKIAl7Im9uIiwgSFVHRV9QQUdFU19PTiwgZmFsc2V9LApAQCAt NzIyLDYgKzczMiw3IEBAIGNvbnN0IGNoYXIgKmNvbnN0IGNvbmZpZ19ncm91cF9uYW1lc1td ID0KIAlbQ09OTl9BVVRIX1RDUF0gPSBnZXR0ZXh0X25vb3AoIkNvbm5lY3Rpb25zIGFuZCBB dXRoZW50aWNhdGlvbiAvIFRDUCBTZXR0aW5ncyIpLAogCVtDT05OX0FVVEhfQVVUSF0gPSBn ZXR0ZXh0X25vb3AoIkNvbm5lY3Rpb25zIGFuZCBBdXRoZW50aWNhdGlvbiAvIEF1dGhlbnRp Y2F0aW9uIiksCiAJW0NPTk5fQVVUSF9TU0xdID0gZ2V0dGV4dF9ub29wKCJDb25uZWN0aW9u cyBhbmQgQXV0aGVudGljYXRpb24gLyBTU0wiKSwKKwlbUkVTT1VSQ0VTX1RJTUVdID0gZ2V0 dGV4dF9ub29wKCJSZXNvdXJjZSBVc2FnZSAvIFRpbWUiKSwKIAlbUkVTT1VSQ0VTX01FTV0g PSBnZXR0ZXh0X25vb3AoIlJlc291cmNlIFVzYWdlIC8gTWVtb3J5IiksCiAJW1JFU09VUkNF U19ESVNLXSA9IGdldHRleHRfbm9vcCgiUmVzb3VyY2UgVXNhZ2UgLyBEaXNrIiksCiAJW1JF U09VUkNFU19LRVJORUxdID0gZ2V0dGV4dF9ub29wKCJSZXNvdXJjZSBVc2FnZSAvIEtlcm5l bCBSZXNvdXJjZXMiKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZQppbmRleCBmOTM4Y2M2NWEzYS4uYzExZDg4MzQ4ZjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTE5 Myw2ICsxOTMsMTAgQEAKICNtYXhfZmlsZXNfcGVyX3Byb2Nlc3MgPSAxMDAwICAgICAgICAg ICAjIG1pbiA2NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg KGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQogCisjIC0gVGltZSAtCisKKyN0aW1pbmdfY2xv Y2tfc291cmNlID0gYXV0byAgICAgICAgICAgICAjIGF1dG8sIHN5c3RlbSwgdHNjIChpZiBz dXBwb3J0ZWQpCisKICMgLSBCYWNrZ3JvdW5kIFdyaXRlciAtCiAKICNiZ3dyaXRlcl9kZWxh eSA9IDIwMG1zICAgICAgICAgICAgICAgICAjIDEwLTEwMDAwbXMgYmV0d2VlbiByb3VuZHMK ZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vaW5zdHJfdGltZS5jIGIvc3JjL2NvbW1vbi9pbnN0 cl90aW1lLmMKaW5kZXggM2U4ZWUyZDZkYjIuLjg2MGJiNWEwNWNhIDEwMDY0NAotLS0gYS9z cmMvY29tbW9uL2luc3RyX3RpbWUuYworKysgYi9zcmMvY29tbW9uL2luc3RyX3RpbWUuYwpA QCAtMjAsOCArMjAsOCBAQAogICogU3RvcmVzIHdoYXQgdGhlIG51bWJlciBvZiB0aWNrcyBu ZWVkcyB0byBiZSBtdWx0aXBsaWVkIHdpdGggdG8gZW5kIHVwCiAgKiB3aXRoIG5hbm9zZWNv bmRzIHVzaW5nIGludGVnZXIgbWF0aC4KICAqCi0gKiBPbiBjZXJ0YWluIHBsYXRmb3JtcyAo Y3VycmVudGx5IFdpbmRvd3MpIHRoZSB0aWNrcyB0byBuYW5vc2Vjb25kcyBjb252ZXJzaW9u Ci0gKiByZXF1aXJlcyBmbG9hdGluZyBwb2ludCBtYXRoIGJlY2F1c2U6CisgKiBJbiBjZXJ0 YWluIGNhc2VzIChUU0Mgb24geDg2LTY0LCBhbmQgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIg b24gV2luZG93cykKKyAqIHRoZSB0aWNrcyB0byBuYW5vc2Vjb25kcyBjb252ZXJzaW9uIHJl cXVpcmVzIGZsb2F0aW5nIHBvaW50IG1hdGggYmVjYXVzZToKICAqCiAgKiBzZWMgPSB0aWNr cyAvIGZyZXF1ZW5jeV9oegogICogbnMgID0gdGlja3MgLyBmcmVxdWVuY3lfaHogKiAxLDAw MCwwMDAsMDAwCkBAIC0zOSw3ICszOSw3IEBACiAgKiBkaXZpc2lvbi4gV2UgdXRpbGl6ZSB1 bnNpZ25lZCBpbnRlZ2VycyBldmVuIHRob3VnaCB0aWNrcyBhcmUgc3RvcmVkIGFzIGEKICAq IHNpZ25lZCB2YWx1ZSBiZWNhdXNlIHRoYXQgZW5jb3VyYWdlcyBjb21waWxlcnMgdG8gZ2Vu ZXJhdGUgYmV0dGVyIGFzc2VtYmx5LgogICoKLSAqIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMg d2UgYXJlIHVzaW5nIGNsb2NrX2dldHRpbWUoKSwgd2hpY2ggdXNlcyBuYW5vc2Vjb25kcwor ICogSW4gYWxsIG90aGVyIGNhc2VzIHdlIGFyZSB1c2luZyBjbG9ja19nZXR0aW1lKCksIHdo aWNoIHVzZXMgbmFub3NlY29uZHMKICAqIGFzIHRpY2tzLiBIZW5jZSwgd2Ugc2V0IHRoZSBt dWx0aXBsaWVyIHRvIHplcm8sIHdoaWNoIGNhdXNlcyBwZ190aWNrc190b19ucwogICogdG8g cmV0dXJuIHRoZSBvcmlnaW5hbCB2YWx1ZS4KICAqLwpAQCAtNDgsMTYgKzQ4LDU3IEBAIHVp bnQ2NAkJbWF4X3RpY2tzX25vX292ZXJmbG93ID0gMDsKIAogc3RhdGljIHZvaWQgc2V0X3Rp Y2tzX3Blcl9ucyh2b2lkKTsKIAoraW50CQkJdGltaW5nX2Nsb2NrX3NvdXJjZSA9IFRJTUlO R19DTE9DS19TT1VSQ0VfQVVUTzsKKworI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfTV9YNjQpCisvKiBJbmRpY2F0ZXMgaWYgVFNDIGluc3RydWN0aW9ucyAoUkRUU0Mg YW5kIFJEVFNDUCkgYXJlIHVzYWJsZS4gKi8KK2V4dGVybiBib29sIGhhc191c2FibGVfdHNj OworCitzdGF0aWMgdm9pZCB0c2NfaW5pdGlhbGl6ZSh2b2lkKTsKK3N0YXRpYyBib29sIHRz Y191c2VfYnlfZGVmYXVsdCh2b2lkKTsKK3N0YXRpYyB2b2lkIHNldF90aWNrc19wZXJfbnNf Zm9yX3RzYyh2b2lkKTsKK3N0YXRpYyBib29sIHNldF90c2NfZnJlcXVlbmN5X2toeih2b2lk KTsKK3N0YXRpYyBib29sIGlzX3JkdHNjcF9hdmFpbGFibGUodm9pZCk7CisjZW5kaWYKKwog dm9pZAogcGdfaW5pdGlhbGl6ZV90aW1pbmcoKQogeworI2lmIGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfTV9YNjQpCisJdHNjX2luaXRpYWxpemUoKTsKKyNlbmRpZgorCisJ c2V0X3RpY2tzX3Blcl9ucygpOworfQorCitib29sCitwZ19zZXRfdGltaW5nX2Nsb2NrX3Nv dXJjZShUaW1pbmdDbG9ja1NvdXJjZVR5cGUgc291cmNlKQoreworI2lmIGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpCisJc3dpdGNoIChzb3VyY2UpCisJeworCQlj YXNlIFRJTUlOR19DTE9DS19TT1VSQ0VfQVVUTzoKKwkJCXVzZV90c2MgPSBoYXNfdXNhYmxl X3RzYyAmJiB0c2NfdXNlX2J5X2RlZmF1bHQoKTsKKwkJCWJyZWFrOworCQljYXNlIFRJTUlO R19DTE9DS19TT1VSQ0VfU1lTVEVNOgorCQkJdXNlX3RzYyA9IGZhbHNlOworCQkJYnJlYWs7 CisJCWNhc2UgVElNSU5HX0NMT0NLX1NPVVJDRV9UU0M6CisJCQlpZiAoIWhhc191c2FibGVf dHNjKQkvKiBUZWxsIGNhbGxlciBUU0MgaXMgbm90IHVzYWJsZSAqLworCQkJCXJldHVybiBm YWxzZTsKKwkJCXVzZV90c2MgPSB0cnVlOworCQkJYnJlYWs7CisJfQorI2VuZGlmCiAJc2V0 X3RpY2tzX3Blcl9ucygpOworCXRpbWluZ19jbG9ja19zb3VyY2UgPSBzb3VyY2U7CisJcmV0 dXJuIHRydWU7CiB9CiAKICNpZm5kZWYgV0lOMzIKIAogc3RhdGljIHZvaWQKLXNldF90aWNr c19wZXJfbnMoKQorc2V0X3RpY2tzX3Blcl9uc19zeXN0ZW0oKQogewogCXRpY2tzX3Blcl9u c19zY2FsZWQgPSAwOwogCW1heF90aWNrc19ub19vdmVyZmxvdyA9IDA7CkBAIC03NiwxMCAr MTE3LDI1MiBAQCBHZXRUaW1lckZyZXF1ZW5jeSh2b2lkKQogfQogCiBzdGF0aWMgdm9pZAot c2V0X3RpY2tzX3Blcl9ucygpCitzZXRfdGlja3NfcGVyX25zX3N5c3RlbSgpCiB7CiAJdGlj a3NfcGVyX25zX3NjYWxlZCA9IElOVDY0Q09OU1QoMTAwMDAwMDAwMCkgKiBUSUNLU19UT19O U19QUkVDSVNJT04gLyBHZXRUaW1lckZyZXF1ZW5jeSgpOwogCW1heF90aWNrc19ub19vdmVy ZmxvdyA9IFBHX0lOVDY0X01BWCAvIHRpY2tzX3Blcl9uc19zY2FsZWQ7CiB9CiAKICNlbmRp ZgkJCQkJCQkvKiBXSU4zMiAqLworCitzdGF0aWMgdm9pZAorc2V0X3RpY2tzX3Blcl9ucygp Cit7CisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkKKwlpZiAo dXNlX3RzYykKKwkJc2V0X3RpY2tzX3Blcl9uc19mb3JfdHNjKCk7CisJZWxzZQorCQlzZXRf dGlja3NfcGVyX25zX3N5c3RlbSgpOworI2Vsc2UKKwlzZXRfdGlja3NfcGVyX25zX3N5c3Rl bSgpOworI2VuZGlmCit9CisKKy8qIEdVQyBoYW5kbGluZyAqLworCisjaWZuZGVmIEZST05U RU5ECisKKyNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKKworYm9vbAorY2hlY2tfdGlt aW5nX2Nsb2NrX3NvdXJjZShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ug c291cmNlKQoreworI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQp CisJcGdfaW5pdGlhbGl6ZV90aW1pbmcoKTsKKworCWlmICgqbmV3dmFsID09IFRJTUlOR19D TE9DS19TT1VSQ0VfVFNDICYmICFoYXNfdXNhYmxlX3RzYykKKwl7CisJCUdVQ19jaGVja19l cnJkZXRhaWwoIlRTQyBpcyBub3Qgc3VwcG9ydGVkIGFzIGZhc3QgY2xvY2sgc291cmNlIik7 CisJCXJldHVybiBmYWxzZTsKKwl9CisjZW5kaWYKKworCXJldHVybiB0cnVlOworfQorCit2 b2lkCithc3NpZ25fdGltaW5nX2Nsb2NrX3NvdXJjZShpbnQgbmV3dmFsLCB2b2lkICpleHRy YSkKK3sKKwkvKgorCSAqIElnbm9yZSB0aGUgcmV0dXJuIGNvZGUgc2luY2UgdGhlIGNoZWNr IGhvb2sgYWxyZWFkeSB2ZXJpZmllZCBUU0MgaXMKKwkgKiB1c2FibGUgaWYgaXRzIGV4cGxp Y2l0bHkgcmVxdWVzdGVkCisJICovCisJcGdfc2V0X3RpbWluZ19jbG9ja19zb3VyY2UobmV3 dmFsKTsKK30KKworY29uc3QgY2hhciAqCitzaG93X3RpbWluZ19jbG9ja19zb3VyY2UoKQor eworI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpCisJVGltaW5n Q2xvY2tTb3VyY2VUeXBlIGVmZmVjdGl2ZV9zb3VyY2UgPSBwZ19jdXJyZW50X3RpbWluZ19j bG9ja19zb3VyY2UoKTsKKworCXN3aXRjaCAodGltaW5nX2Nsb2NrX3NvdXJjZSkKKwl7CisJ CWNhc2UgVElNSU5HX0NMT0NLX1NPVVJDRV9BVVRPOgorCQkJaWYgKGVmZmVjdGl2ZV9zb3Vy Y2UgPT0gVElNSU5HX0NMT0NLX1NPVVJDRV9UU0MpCisJCQkJcmV0dXJuICJhdXRvICh0c2Mp IjsKKwkJCWVsc2UKKwkJCQlyZXR1cm4gImF1dG8gKHN5c3RlbSkiOworCQljYXNlIFRJTUlO R19DTE9DS19TT1VSQ0VfU1lTVEVNOgorCQkJcmV0dXJuICJzeXN0ZW0iOworCQljYXNlIFRJ TUlOR19DTE9DS19TT1VSQ0VfVFNDOgorCQkJcmV0dXJuICJ0c2MiOworCX0KKyNlbHNlCisJ c3dpdGNoICh0aW1pbmdfY2xvY2tfc291cmNlKQorCXsKKwkJY2FzZSBUSU1JTkdfQ0xPQ0tf U09VUkNFX0FVVE86CisJCQlyZXR1cm4gImF1dG8gKHN5c3RlbSkiOworCQljYXNlIFRJTUlO R19DTE9DS19TT1VSQ0VfU1lTVEVNOgorCQkJcmV0dXJuICJzeXN0ZW0iOworCX0KKyNlbmRp ZgorCisJLyogdW5yZWFjaGFibGUgKi8KKwlyZXR1cm4gIj8iOworfQorCisjZW5kaWYJCQkJ CQkJLyogIUZST05URU5EICovCisKKy8qIFRTQyBzcGVjaWZpYyBsb2dpYyAqLworCisjaWYg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkKKworI2lmIGRlZmluZWQo SEFWRV9fR0VUX0NQVUlEKSB8fCAoZGVmaW5lZChIQVZFX19DUFVJREVYKSAmJiAhZGVmaW5l ZChfTVNDX1ZFUikpCisjaW5jbHVkZSA8Y3B1aWQuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5l ZChIQVZFX19DUFVJRCkgfHwgKGRlZmluZWQoSEFWRV9fQ1BVSURFWCkgJiYgZGVmaW5lZChf TVNDX1ZFUikpCisjaW5jbHVkZSA8aW50cmluLmg+CisjZW5kaWYKKworYm9vbAkJaGFzX3Vz YWJsZV90c2MgPSBmYWxzZTsKK2Jvb2wJCXVzZV90c2MgPSBmYWxzZTsKKworc3RhdGljIHVp bnQzMiB0c2NfZnJlcXVlbmN5X2toeiA9IDA7CisKKy8qCisgKiBEZWNpZGUgd2hldGhlciB3 ZSB1c2UgdGhlIFJEVFNDL1JEVFNDUCBpbnN0cnVjdGlvbnMgYXQgcnVudGltZSwgZm9yIExp bnV4L3g4Ni02NCwKKyAqIGluc3RlYWQgb2YgaW5jdXJyaW5nIHRoZSBvdmVyaGVhZCBvZiBh IGZ1bGwgY2xvY2tfZ2V0dGltZSgpIGNhbGwuCisgKgorICogVGhpcyBjYW4ndCBiZSByZWxp YWJseSBkZXRlcm1pbmVkIGF0IGNvbXBpbGUgdGltZSwgc2luY2UgdGhlCisgKiBhdmFpbGFi aWxpdHkgb2YgYW4gImludmFyaWFudCIgVFNDICh0aGF0IGlzIG5vdCBhZmZlY3RlZCBieSBD UFUKKyAqIGZyZXF1ZW5jeSBjaGFuZ2VzKSBpcyBkZXBlbmRlbnQgb24gdGhlIENQVSBhcmNo aXRlY3R1cmUuIEFkZGl0aW9uYWxseSwKKyAqIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSBUU0Mg YXZhaWxhYmlsaXR5IGlzIGltcGFjdGVkIGJ5IHZpcnR1YWxpemF0aW9uLAorICogd2hlcmUg YSBzaW1wbGUgY3B1aWQgZmVhdHVyZSBjaGVjayB3b3VsZCBub3QgYmUgZW5vdWdoLgorICov CitzdGF0aWMgdm9pZAordHNjX2luaXRpYWxpemUodm9pZCkKK3sKKwkvKgorCSAqIENvbXB1 dGUgYmFzZWxpbmUgQ1BVIHBlZm9ybWFuY2UsIGRldGVybWluZXMgc3BlZWQgYXQgd2hpY2gg dGhlIFRTQworCSAqIGFkdmFuY2VzLgorCSAqLworCWlmICghc2V0X3RzY19mcmVxdWVuY3lf a2h6KCkpCisJCXJldHVybjsKKworCWhhc191c2FibGVfdHNjID0gaXNfcmR0c2NwX2F2YWls YWJsZSgpOworfQorCisvKgorICogRGVjaWRlcyB3aGV0aGVyIHRvIHVzZSBUU0MgY2xvY2sg c291cmNlIGlmIHRoZSB1c2VyIGRpZCBub3Qgc3BlY2lmeSBpdAorICogb25lIHdheSBvciB0 aGUgb3RoZXIsIGFuZCBpdCBpcyBhdmFpbGFibGUgKGNoZWNrZWQgc2VwYXJhdGVseSkuCisg KgorICogQ3VycmVudGx5IG9ubHkgZW5hYmxlZCBieSBkZWZhdWx0IG9uIExpbnV4LCBzaW5j ZSBMaW51eCBhbHJlYWR5IGRvZXMgYQorICogc2lnbmlmaWNhbnQgYW1vdW50IG9mIHdvcmsg dG8gZGV0ZXJtaW5lIHdoZXRoZXIgVFNDIGlzIGEgdmlhYmxlIGNsb2NrCisgKiBzb3VyY2Uu CisgKi8KK3N0YXRpYyBib29sCit0c2NfdXNlX2J5X2RlZmF1bHQoKQoreworI2lmIGRlZmlu ZWQoX19saW51eF9fKQorCUZJTEUJICAgKmZwID0gZm9wZW4oIi9zeXMvZGV2aWNlcy9zeXN0 ZW0vY2xvY2tzb3VyY2UvY2xvY2tzb3VyY2UwL2N1cnJlbnRfY2xvY2tzb3VyY2UiLCAiciIp OworCWNoYXIJCWJ1ZlsxMjhdOworCisJaWYgKCFmcCkKKwkJcmV0dXJuIGZhbHNlOworCisJ aWYgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSAhPSBOVUxMICYmIHN0cmNtcChidWYs ICJ0c2NcbiIpID09IDApCisJeworCQlmY2xvc2UoZnApOworCQlyZXR1cm4gdHJ1ZTsKKwl9 CisKKwlmY2xvc2UoZnApOworI2VuZGlmCisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp YyB2b2lkCitzZXRfdGlja3NfcGVyX25zX2Zvcl90c2MoKQoreworCXRpY2tzX3Blcl9uc19z Y2FsZWQgPSBJTlQ2NENPTlNUKDEwMDAwMDApICogVElDS1NfVE9fTlNfUFJFQ0lTSU9OIC8g dHNjX2ZyZXF1ZW5jeV9raHo7CisJbWF4X3RpY2tzX25vX292ZXJmbG93ID0gUEdfSU5UNjRf TUFYIC8gdGlja3NfcGVyX25zX3NjYWxlZDsKK30KKworI2RlZmluZSBDUFVJRF9IWVBFUlZJ U09SX1ZNV0FSRSh3b3JkcykgKHdvcmRzWzFdID09IDB4NjE3NzRkNTYgJiYgd29yZHNbMl0g PT0gMHg0ZDU2NjU3MiAmJiB3b3Jkc1szXSA9PSAweDY1NzI2MTc3KSAvKiBWTXdhcmVWTXdh cmUgKi8KKyNkZWZpbmUgQ1BVSURfSFlQRVJWSVNPUl9LVk0od29yZHMpICh3b3Jkc1sxXSA9 PSAweDRiNGQ1NjRiICYmIHdvcmRzWzJdID09IDB4NTY0YjRkNTYgJiYgd29yZHNbM10gPT0g MHgwMDAwMDA0ZCkJLyogS1ZNS1ZNS1ZNICovCisKK3N0YXRpYyBib29sCitzZXRfdHNjX2Zy ZXF1ZW5jeV9raHooKQoreworCXVpbnQzMgkJcls0XSA9IHswLCAwLCAwLCAwfTsKKworI2lm IGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEKQorCV9fZ2V0X2NwdWlkKDB4MTUsICZyWzBdIC8q IGRlbm9taW5hdG9yICovICwgJnJbMV0gLyogbnVtZXJhdG9yICovICwgJnJbMl0gLyogaHog Ki8gLCAmclszXSk7CisjZWxpZiBkZWZpbmVkKEhBVkVfX0NQVUlEKQorCV9fY3B1aWQociwg MHgxNSk7CisjZWxzZQorI2Vycm9yIGNwdWlkIGluc3RydWN0aW9uIG5vdCBhdmFpbGFibGUK KyNlbmRpZgorCisJaWYgKHJbMl0gPiAwKQorCXsKKwkJaWYgKHJbMF0gPT0gMCB8fCByWzFd ID09IDApCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJdHNjX2ZyZXF1ZW5jeV9raHogPSByWzJd IC8gMTAwMCAqIHJbMV0gLyByWzBdOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKiBTb21l IENQVXMgb25seSByZXBvcnQgZnJlcXVlbmN5IGluIDE2SCAqLworCisjaWYgZGVmaW5lZChI QVZFX19HRVRfQ1BVSUQpCisJX19nZXRfY3B1aWQoMHgxNiwgJnJbMF0gLyogYmFzZV9taHog Ki8gLCAmclsxXSwgJnJbMl0sICZyWzNdKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9fQ1BVSUQp CisJX19jcHVpZChyLCAweDE2KTsKKyNlbHNlCisjZXJyb3IgY3B1aWQgaW5zdHJ1Y3Rpb24g bm90IGF2YWlsYWJsZQorI2VuZGlmCisKKwlpZiAoclswXSA+IDApCisJeworCQl0c2NfZnJl cXVlbmN5X2toeiA9IHJbMF0gKiAxMDAwOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgor CSAqIENoZWNrIGlmIHdlIGhhdmUgYSBLVk0gb3IgVk13YXJlIEh5cGVydmlzb3IgcGFzc2lu ZyBkb3duIFRTQyBmcmVxdWVuY3kKKwkgKiB0byB1cyBpbiBhIGd1ZXN0IFZNCisJICoKKwkg KiBOb3RlIHRoYXQgYWNjZXNzaW5nIHRoZSAweDQwMDAwMDAwIGxlYWYgZm9yIEh5cGVydmlz b3IgaW5mbyByZXF1aXJlcworCSAqIHVzZSBvZiBfX2NwdWlkZXggdG8gc2V0IEVDWCB0byAw LiBUaGUgc2ltaWxhciBfX2dldF9jcHVpZF9jb3VudAorCSAqIGZ1bmN0aW9uIGRvZXMgbm90 IHdvcmsgYXMgZXhwZWN0ZWQgc2luY2UgaXQgY29udGFpbnMgYSBjaGVjayBmb3IKKwkgKiBf X2dldF9jcHVpZF9tYXgsIHdoaWNoIGhhcyBiZWVuIG9ic2VydmVkIHRvIGJlIGxvd2VyIHRo YW4gdGhlIHNwZWNpYWwKKwkgKiBIeXBlcnZpc29yIGxlYWYuCisJICovCisjaWYgZGVmaW5l ZChIQVZFX19DUFVJREVYKQorCV9fY3B1aWRleCgoaW50MzIgKikgciwgMHg0MDAwMDAwMCwg MCk7CisJaWYgKHJbMF0gPj0gMHg0MDAwMDAxMCAmJiAoQ1BVSURfSFlQRVJWSVNPUl9WTVdB UkUocikgfHwgQ1BVSURfSFlQRVJWSVNPUl9LVk0ocikpKQorCXsKKwkJX19jcHVpZGV4KChp bnQzMiAqKSByLCAweDQwMDAwMDEwLCAwKTsKKwkJaWYgKHJbMF0gPiAwKQorCQl7CisJCQl0 c2NfZnJlcXVlbmN5X2toeiA9IHJbMF07CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKyNl bmRpZgorCisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbAoraXNfcmR0c2NwX2F2 YWlsYWJsZSgpCit7CisJdWludDMyCQlyWzRdID0gezAsIDAsIDAsIDB9OworCisjaWYgZGVm aW5lZChIQVZFX19HRVRfQ1BVSUQpCisJaWYgKCFfX2dldF9jcHVpZCgweDgwMDAwMDAxLCAm clswXSwgJnJbMV0sICZyWzJdLCAmclszXSkpCisJCXJldHVybiBmYWxzZTsKKyNlbGlmIGRl ZmluZWQoSEFWRV9fQ1BVSUQpCisJX19jcHVpZChyLCAweDgwMDAwMDAxKTsKKyNlbHNlCisj ZXJyb3IgY3B1aWQgaW5zdHJ1Y3Rpb24gbm90IGF2YWlsYWJsZQorI2VuZGlmCisKKwlyZXR1 cm4gKHJbM10gJiAoMSA8PCAyNykpICE9IDA7Cit9CisKKyNlbmRpZgkJCQkJCQkvKiBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIGIvc3JjL2luY2x1ZGUvcG9ydGFi aWxpdHkvaW5zdHJfdGltZS5oCmluZGV4IDk4NWI2YjVhZjg4Li5lNzE5MWM1ZDZjZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BvcnRhYmlsaXR5L2luc3RyX3RpbWUuaApAQCAtNCw5ICs0LDEwIEBACiAg KgkgIHBvcnRhYmxlIGhpZ2gtcHJlY2lzaW9uIGludGVydmFsIHRpbWluZwogICoKICAqIFRo aXMgZmlsZSBwcm92aWRlcyBhbiBhYnN0cmFjdGlvbiBsYXllciB0byBoaWRlIHBvcnRhYmls aXR5IGlzc3VlcyBpbgotICogaW50ZXJ2YWwgdGltaW5nLiAgT24gVW5peCB3ZSB1c2UgY2xv Y2tfZ2V0dGltZSgpLCBhbmQgb24gV2luZG93cyB3ZSB1c2UKLSAqIFF1ZXJ5UGVyZm9ybWFu Y2VDb3VudGVyKCkuICBUaGVzZSBtYWNyb3MgYWxzbyBnaXZlIHNvbWUgYnJlYXRoaW5nIHJv b20gdG8KLSAqIHVzZSBvdGhlciBoaWdoLXByZWNpc2lvbi10aW1pbmcgQVBJcy4KKyAqIGlu dGVydmFsIHRpbWluZy4gT24geDg2IHdlIHVzZSB0aGUgUkRUU0MvUkRUU0NQIGluc3RydWN0 aW9uIGRpcmVjdGx5IGluCisgKiBjZXJ0YWluIGNhc2VzLCBvciBhbHRlcm5hdGl2ZWx5IGNs b2NrX2dldHRpbWUoKSBvbiBVbml4LWxpa2Ugc3lzdGVtcyBhbmQKKyAqIFF1ZXJ5UGVyZm9y bWFuY2VDb3VudGVyKCkgb24gV2luZG93cy4gVGhlc2UgbWFjcm9zIGFsc28gZ2l2ZSBzb21l IGJyZWF0aGluZworICogcm9vbSB0byB1c2Ugb3RoZXIgaGlnaC1wcmVjaXNpb24tdGltaW5n IEFQSXMuCiAgKgogICogVGhlIGJhc2ljIGRhdGEgdHlwZSBpcyBpbnN0cl90aW1lLCB3aGlj aCBhbGwgY2FsbGVycyBzaG91bGQgdHJlYXQgYXMgYW4KICAqIG9wYXF1ZSB0eXBlZGVmLiAg aW5zdHJfdGltZSBjYW4gc3RvcmUgZWl0aGVyIGFuIGFic29sdXRlIHRpbWUgKG9mCkBAIC0x NywxMCArMTgsMTEgQEAKICAqCiAgKiBJTlNUUl9USU1FX1NFVF9aRVJPKHQpCQkJc2V0IHQg dG8gemVybyAobWVtc2V0IGlzIGFjY2VwdGFibGUgdG9vKQogICoKLSAqIElOU1RSX1RJTUVf U0VUX0NVUlJFTlQodCkJCXNldCB0IHRvIGN1cnJlbnQgdGltZQorICogSU5TVFJfVElNRV9T RVRfQ1VSUkVOVF9GQVNUKHQpCXNldCB0IHRvIGN1cnJlbnQgdGltZSB3aXRob3V0IHdhaXRp bmcKKyAqIAkJCQkJCQkJCWZvciBpbnN0cnVjdGlvbnMgaW4gb3V0LW9mLW9yZGVyIHdpbmRv dwogICoKLSAqIElOU1RSX1RJTUVfU0VUX0NVUlJFTlRfTEFaWSh0KQlzZXQgdCB0byBjdXJy ZW50IHRpbWUgaWYgdCBpcyB6ZXJvLAotICoJCQkJCQkJCQlldmFsdWF0ZXMgdG8gd2hldGhl ciB0IGNoYW5nZWQKKyAqIElOU1RSX1RJTUVfU0VUX0NVUlJFTlQodCkJCXNldCB0IHRvIGN1 cnJlbnQgdGltZSB3aGlsZSB3YWl0aW5nIGZvcgorICogCQkJCQkJCQkJaW5zdHJ1Y3Rpb25z IGluIE9PTyB0byByZXRpcmUKICAqCiAgKiBJTlNUUl9USU1FX0FERCh4LCB5KQkJCQl4ICs9 IHkKICAqCkBAIC05MywxMyArOTUsNTQgQEAgdHlwZWRlZiBzdHJ1Y3QgaW5zdHJfdGltZQog ZXh0ZXJuIFBHRExMSU1QT1JUIHVpbnQ2NCB0aWNrc19wZXJfbnNfc2NhbGVkOwogZXh0ZXJu IFBHRExMSU1QT1JUIHVpbnQ2NCBtYXhfdGlja3Nfbm9fb3ZlcmZsb3c7CiAKKyNpZiBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KQorI2luY2x1ZGUgPGltbWludHJp bi5oPgorCisvKiBXaGV0aGVyIHRvIGFjdHVhbGx5IHVzZSBSRFRTQy9SRFRTQ1AgYmFzZWQg b24gYXZhaWxhYmlsaXR5IGFuZCBHVUMgc2V0dGluZ3MuICovCitleHRlcm4gUEdETExJTVBP UlQgYm9vbCB1c2VfdHNjOworI2VuZGlmCisKK3R5cGVkZWYgZW51bQoreworCVRJTUlOR19D TE9DS19TT1VSQ0VfQVVUTywKKwlUSU1JTkdfQ0xPQ0tfU09VUkNFX1NZU1RFTSwKKwlUSU1J TkdfQ0xPQ0tfU09VUkNFX1RTQworfQkJCVRpbWluZ0Nsb2NrU291cmNlVHlwZTsKKworZXh0 ZXJuIGludAl0aW1pbmdfY2xvY2tfc291cmNlOworCisvKgorICogUmV0dXJucyB0aGUgY3Vy cmVudCB0aW1pbmcgY2xvY2sgc291cmNlIGVmZmVjdGl2ZWx5IGluIHVzZSwgcmVzb2x2aW5n CisgKiBUSU1JTkdfQ0xPQ0tfU09VUkNFX0FVVE8gdG8gZWl0aGVyIFRJTUlOR19DTE9DS19T T1VSQ0VfU1lTVEVNIG9yCisgKiBUSU1JTkdfQ0xPQ0tfU09VUkNFX1RTQy4KKyAqLworc3Rh dGljIGlubGluZSBUaW1pbmdDbG9ja1NvdXJjZVR5cGUgcGdfY3VycmVudF90aW1pbmdfY2xv Y2tfc291cmNlKHZvaWQpCit7CisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9NX1g2NCkKKwlyZXR1cm4gdXNlX3RzYyA/IFRJTUlOR19DTE9DS19TT1VSQ0VfVFNDIDog VElNSU5HX0NMT0NLX1NPVVJDRV9TWVNURU07CisjZWxzZQorCXJldHVybiBUSU1JTkdfQ0xP Q0tfU09VUkNFX1NZU1RFTTsKKyNlbmRpZgorfQorCiAvKgogICogSW5pdGlhbGl6ZSB0aW1p bmcgaW5mcmFzdHJ1Y3R1cmUKICAqCi0gKiBUaGlzIG11c3QgYmUgY2FsbGVkIGF0IGxlYXN0 IG9uY2UgYmVmb3JlIHVzaW5nIElOU1RSX1RJTUVfU0VUX0NVUlJFTlQqIG1hY3Jvcy4KKyAq IFRoaXMgbXVzdCBiZSBjYWxsZWQgYXQgbGVhc3Qgb25jZSBieSBmcm9udGVuZCBwcm9ncmFt cyBiZWZvcmUgdXNpbmcKKyAqIElOU1RSX1RJTUVfU0VUX0NVUlJFTlQqIG1hY3Jvcy4gQmFj a2VuZCBwcm9ncmFtcyBhdXRvbWF0aWNhbGx5IGluaXRpYWxpemUKKyAqIHRoaXMgdGhyb3Vn aCB0aGUgR1VDIGNoZWNrIGhvb2suCiAgKi8KIGV4dGVybiB2b2lkIHBnX2luaXRpYWxpemVf dGltaW5nKHZvaWQpOwogCisvKgorICogU2V0cyB0aGUgdGltZSBzb3VyY2UgdG8gYmUgdXNl ZC4gTWFpbmx5IGludGVuZGVkIGZvciBmcm9udGVuZCBwcm9ncmFtcywKKyAqIHRoZSBiYWNr ZW5kIHNob3VsZCBzZXQgaXQgdmlhIHRoZSB0aW1pbmdfY2xvY2tfc291cmNlIEdVQyBpbnN0 ZWFkLgorICoKKyAqIFJldHVybnMgZmFsc2UgaWYgdGhlIGNsb2NrIHNvdXJjZSBjb3VsZCBu b3QgYmUgc2V0LCBmb3IgZXhhbXBsZSB3aGVuIFRTQworICogaXMgbm90IGF2YWlsYWJsZSBk ZXNwaXRlIGJlaW5nIGV4cGxpY2l0bHkgc2V0LgorICovCitleHRlcm4gYm9vbCBwZ19zZXRf dGltaW5nX2Nsb2NrX3NvdXJjZShUaW1pbmdDbG9ja1NvdXJjZVR5cGUgc291cmNlKTsKKwog I2lmbmRlZiBXSU4zMgogCiAvKiBPbiBQT1NJWCwgdXNlIGNsb2NrX2dldHRpbWUoKSBmb3Ig c3lzdGVtIGNsb2NrIHNvdXJjZSAqLwpAQCAtMTE3LDIyICsxNjAsMjUgQEAgZXh0ZXJuIHZv aWQgcGdfaW5pdGlhbGl6ZV90aW1pbmcodm9pZCk7CiAgKiB0aGFuIENMT0NLX01PTk9UT05J Qy4gIEluIHBhcnRpY3VsYXIsIGFzIG9mIG1hY09TIDEwLjEyLCBBcHBsZSBwcm92aWRlcwog ICogQ0xPQ0tfTU9OT1RPTklDX1JBVyB3aGljaCBpcyBib3RoIGZhc3RlciB0byByZWFkIGFu ZCBoaWdoZXIgcmVzb2x1dGlvbiB0aGFuCiAgKiB0aGVpciB2ZXJzaW9uIG9mIENMT0NLX01P Tk9UT05JQy4KKyAqCisgKiBOb3RlIHRoaXMgZG9lcyBub3QgZ2V0IHVzZWQgaW4gY2FzZSB0 aGUgVFNDIGNsb2NrIHNvdXJjZSBsb2dpYyBpcyB1c2VkLAorICogd2hpY2ggZGlyZWN0bHkg Y2FsbHMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHRpbWluZyBpbnN0cnVjdGlvbnMgKGUuZy4g UkRUU0MpLgogICovCiAjaWYgZGVmaW5lZChfX2Rhcndpbl9fKSAmJiBkZWZpbmVkKENMT0NL X01PTk9UT05JQ19SQVcpCi0jZGVmaW5lIFBHX0lOU1RSX0NMT0NLCUNMT0NLX01PTk9UT05J Q19SQVcKKyNkZWZpbmUgUEdfSU5TVFJfU1lTVEVNX0NMT0NLCUNMT0NLX01PTk9UT05JQ19S QVcKICNlbGlmIGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKQotI2RlZmluZSBQR19JTlNUUl9D TE9DSwlDTE9DS19NT05PVE9OSUMKKyNkZWZpbmUgUEdfSU5TVFJfU1lTVEVNX0NMT0NLCUNM T0NLX01PTk9UT05JQwogI2Vsc2UKLSNkZWZpbmUgUEdfSU5TVFJfQ0xPQ0sJQ0xPQ0tfUkVB TFRJTUUKKyNkZWZpbmUgUEdfSU5TVFJfU1lTVEVNX0NMT0NLCUNMT0NLX1JFQUxUSU1FCiAj ZW5kaWYKIAogc3RhdGljIGlubGluZSBpbnN0cl90aW1lCi1wZ19nZXRfdGlja3Modm9pZCkK K3BnX2dldF90aWNrc19zeXN0ZW0odm9pZCkKIHsKIAlpbnN0cl90aW1lCW5vdzsKIAlzdHJ1 Y3QgdGltZXNwZWMgdG1wOwogCi0JY2xvY2tfZ2V0dGltZShQR19JTlNUUl9DTE9DSywgJnRt cCk7CisJY2xvY2tfZ2V0dGltZShQR19JTlNUUl9TWVNURU1fQ0xPQ0ssICZ0bXApOwogCW5v dy50aWNrcyA9IHRtcC50dl9zZWMgKiBOU19QRVJfUyArIHRtcC50dl9uc2VjOwogCiAJcmV0 dXJuIG5vdzsKQEAgLTE0Myw3ICsxODksNyBAQCBwZ19nZXRfdGlja3Modm9pZCkKIC8qIE9u IFdpbmRvd3MsIHVzZSBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigpIGZvciBzeXN0ZW0gY2xv Y2sgc291cmNlICovCiAKIHN0YXRpYyBpbmxpbmUgaW5zdHJfdGltZQotcGdfZ2V0X3RpY2tz KHZvaWQpCitwZ19nZXRfdGlja3Nfc3lzdGVtKHZvaWQpCiB7CiAJaW5zdHJfdGltZQlub3c7 CiAJTEFSR0VfSU5URUdFUiB0bXA7CkBAIC0xOTksNiArMjQ1LDM5IEBAIHBnX3RpY2tzX3Rv X25zKGludDY0IHRpY2tzKQogI2VuZGlmCiB9CiAKK3N0YXRpYyBpbmxpbmUgaW5zdHJfdGlt ZQorcGdfZ2V0X3RpY2tzX2Zhc3Qodm9pZCkKK3sKKyNpZiBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX01fWDY0KQorCWlmIChsaWtlbHkodXNlX3RzYykpCisJeworCQlpbnN0 cl90aW1lCW5vdzsKKworCQlub3cudGlja3MgPSBfX3JkdHNjKCk7CisJCXJldHVybiBub3c7 CisJfQorI2VuZGlmCisKKwlyZXR1cm4gcGdfZ2V0X3RpY2tzX3N5c3RlbSgpOworfQorCitz dGF0aWMgaW5saW5lIGluc3RyX3RpbWUKK3BnX2dldF90aWNrcyh2b2lkKQoreworI2lmIGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpCisJaWYgKGxpa2VseSh1c2Vf dHNjKSkKKwl7CisJCWluc3RyX3RpbWUJbm93OworCQl1aW50MzIJCXVudXNlZDsKKworCQlu b3cudGlja3MgPSBfX3JkdHNjcCgmdW51c2VkKTsKKwkJcmV0dXJuIG5vdzsKKwl9CisjZW5k aWYKKworCXJldHVybiBwZ19nZXRfdGlja3Nfc3lzdGVtKCk7Cit9CisKIC8qCiAgKiBDb21t b24gbWFjcm9zCiAgKi8KQEAgLTIwNyw4ICsyODYsOCBAQCBwZ190aWNrc190b19ucyhpbnQ2 NCB0aWNrcykKIAogI2RlZmluZSBJTlNUUl9USU1FX1NFVF9aRVJPKHQpCSgodCkudGlja3Mg PSAwKQogCi0jZGVmaW5lIElOU1RSX1RJTUVfU0VUX0NVUlJFTlRfTEFaWSh0KSBcCi0JKElO U1RSX1RJTUVfSVNfWkVSTyh0KSA/IElOU1RSX1RJTUVfU0VUX0NVUlJFTlQodCksIHRydWUg OiBmYWxzZSkKKyNkZWZpbmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9GQVNUKHQpIFwKKwko KHQpID0gcGdfZ2V0X3RpY2tzX2Zhc3QoKSkKIAogI2RlZmluZSBJTlNUUl9USU1FX1NFVF9D VVJSRU5UKHQpIFwKIAkoKHQpID0gcGdfZ2V0X3RpY2tzKCkpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9ndWNfaG9va3MuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29r cy5oCmluZGV4IDljOTA2NzBkOWI4Li5hMzk2ZTc0NjQxNSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hv b2tzLmgKQEAgLTE2Miw2ICsxNjIsOSBAQCBleHRlcm4gY29uc3QgY2hhciAqc2hvd190aW1l em9uZSh2b2lkKTsKIGV4dGVybiBib29sIGNoZWNrX3RpbWV6b25lX2FiYnJldmlhdGlvbnMo Y2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLAogCQkJCQkJCQkJCSBHdWNTb3VyY2Ugc291 cmNlKTsKIGV4dGVybiB2b2lkIGFzc2lnbl90aW1lem9uZV9hYmJyZXZpYXRpb25zKGNvbnN0 IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpOworZXh0ZXJuIHZvaWQgYXNzaWduX3RpbWlu Z19jbG9ja19zb3VyY2UoaW50IG5ld3ZhbCwgdm9pZCAqZXh0cmEpOworZXh0ZXJuIGJvb2wg Y2hlY2tfdGltaW5nX2Nsb2NrX3NvdXJjZShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBH dWNTb3VyY2Ugc291cmNlKTsKK2V4dGVybiBjb25zdCBjaGFyICpzaG93X3RpbWluZ19jbG9j a19zb3VyY2Uodm9pZCk7CiBleHRlcm4gYm9vbCBjaGVja190cmFuc2FjdGlvbl9idWZmZXJz KGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpOwogZXh0ZXJu IGJvb2wgY2hlY2tfdHJhbnNhY3Rpb25fZGVmZXJyYWJsZShib29sICpuZXd2YWwsIHZvaWQg KipleHRyYSwgR3VjU291cmNlIHNvdXJjZSk7CiBleHRlcm4gYm9vbCBjaGVja190cmFuc2Fj dGlvbl9pc29sYXRpb24oaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNv dXJjZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9ndWNfdGFibGVzLmggYi9z cmMvaW5jbHVkZS91dGlscy9ndWNfdGFibGVzLmgKaW5kZXggNzFhODAxNjE5NjEuLjYzNDQw YjhlMzZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9ndWNfdGFibGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX3RhYmxlcy5oCkBAIC02MCw2ICs2MCw3IEBAIGVu dW0gY29uZmlnX2dyb3VwCiAJQ09OTl9BVVRIX1RDUCwKIAlDT05OX0FVVEhfQVVUSCwKIAlD T05OX0FVVEhfU1NMLAorCVJFU09VUkNFU19USU1FLAogCVJFU09VUkNFU19NRU0sCiAJUkVT T1VSQ0VTX0RJU0ssCiAJUkVTT1VSQ0VTX0tFUk5FTCwKLS0gCjIuNTMuMC53aW5kb3dzLjEK Cg== --------------Qqru7IpPOzfUyn9KiaUWf1dy Content-Type: text/x-patch; charset=UTF-8; name="v8-0002-Timing-Streamline-ticks-to-nanosecond-conversion-.patch" Content-Disposition: attachment; filename*0="v8-0002-Timing-Streamline-ticks-to-nanosecond-conversion-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyMzkyZDk1NjI2NTk5YTFiNTU2MmY5MjE2ZWI4YzMzNGRiOTljOTMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpE YXRlOiBGcmksIDI1IEp1bCAyMDI1IDE3OjU3OjIwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2 OCAyLzRdIFRpbWluZzogU3RyZWFtbGluZSB0aWNrcyB0byBuYW5vc2Vjb25kIGNvbnZlcnNp b24KIGFjcm9zcyBwbGF0Zm9ybXMKClRoZSB0aW1pbmcgaW5mcmFzdHJ1Y3R1cmUgKElOU1RS XyogbWFjcm9zKSBtZWFzdXJlcyB0aW1lIGVsYXBzZWQgdXNpbmcKY2xvY2tfZ2V0dGltZSgp IG9uIFBPU0lYIHN5c3RlbXMsIHdoaWNoIHJldHVybnMgdGhlIHRpbWUgYXMgbmFub3NlY29u ZHMsCmFuZCBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigpIG9uIFdpbmRvd3MsIHdoaWNoIGlz IGEgc3BlY2lhbGl6ZWQgdGltaW5nCmNsb2NrIHNvdXJjZSB0aGF0IHJldHVybnMgYSB0aWNr IGNvdW50ZXIgdGhhdCBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8KbmFub3NlY29uZHMgdXNp bmcgdGhlIHJlc3VsdCBvZiBRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCkuCgpUaGlzIGNv bnZlcnNpb24gY3VycmVudGx5IGhhcHBlbnMgYWQtaG9jIG9uIFdpbmRvd3MsIGUuZy4gd2hl biBjYWxsaW5nCklOU1RSX1RJTUVfR0VUX05BTk9TRUMsIHdoaWNoIGNhbGxzIFF1ZXJ5UGVy Zm9ybWFuY2VGcmVxdWVuY3koKSBvbiBldmVyeQppbnZvY2F0aW9uLCBkZXNwaXRlIHRoZSBm cmVxdWVuY3kgYmVpbmcgc3RhYmxlIGFmdGVyIHByb2dyYW0gc3RhcnQsCmluY3VycmluZyB1 bm5lY2Vzc2FyeSBvdmVyaGVhZC4gSXQgYWxzbyBjYXVzZXMgYSBmcmFjdHVyZWQgaW1wbGVt ZW50YXRpb24Kd2hlcmUgbWFjcm9zIGFyZSBkZWZpbmVkIGRpZmZlcmVudGx5IGJldHdlZW4g cGxhdGZvcm1zLgoKVG8gZWFzZSBjb2RlIHJlYWRhYmlsaXR5LCBhbmQgcHJlcGFyZSBmb3Ig YSBmdXR1cmUgY2hhbmdlIHRoYXQgaW50ZW5kcwp0byB1c2UgYSB0aWNrcy10by1uYW5vc2Vj b25kIGNvbnZlcnNpb24gb24geDg2LTY0IGZvciBUU0MgdXNlLCBpbnRyb2R1Y2UKYSBuZXcg cGdfdGlja3NfdG9fbnMoKSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIG9uIGFsbCBwbGF0 Zm9ybXMuCgpUaGlzIGZ1bmN0aW9uIHJlbGllcyBvbiBhIHNlcGFyYXRlbHkgaW5pdGlhbGl6 ZWQgdGlja3NfcGVyX25zX3NjYWxlZAp2YWx1ZSwgdGhhdCByZXByZXNlbnRzIHRoZSBjb252 ZXJzaW9uIHJhdGlvLiBUaGlzIHZhbHVlIGlzIGluaXRpYWxpemVkCmZyb20gUXVlcnlQZXJm b3JtYW5jZUZyZXF1ZW5jeSgpIG9uIFdpbmRvd3MsIGFuZCBzZXQgdG8gemVybyBvbiB4ODYt NjQKUE9TSVggc3lzdGVtcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgdGlja3MgYmVpbmcgdHJl YXRlZCBhcyBuYW5vc2Vjb25kcy4KT3RoZXIgYXJjaGl0ZWN0dXJlcyBhbHdheXMgZGlyZWN0 bHkgcmV0dXJuIHRoZSBvcmlnaW5hbCB0aWNrcy4KClRvIHN1cHBvcnQgdGhpcywgcGdfaW5p dGlhbGl6ZV90aW1pbmcoKSBpcyBpbnRyb2R1Y2VkLCBhbmQgaXMgbm93Cm1hbmRhdG9yeSBm b3IgYm90aCB0aGUgYmFja2VuZCBhbmQgYW55IGZyb250ZW5kIHByb2dyYW1zIHRvIGNhbGwg YmVmb3JlCnV0aWxpemluZyBJTlNUUl8qIG1hY3Jvcy4KCkluIHBhc3NpbmcgbW9kaWZ5IHBn X3Rlc3RfdGltaW5nIHRvIHJlZHVjZSB0aGUgcGVyLWxvb3Agb3ZlcmhlYWQgY2F1c2VkCmJ5 IHJlcGVhdGVkIGRpdmlzaW9ucyBpbiBJTlNUUl9USU1FX0dFVF9OQU5PU0VDIHdoZW4gdGhl IHRpY2tzIHZhcmlhYmxlCmhhcyBiZWNvbWUgdmVyeSBsYXJnZS4gSW5zdGVhZCBkaWZmIGZp cnN0IGFuZCB0aGVuIHR1cm4gaXQgaW50byBuYW5vc2Vjcy4KCkF1dGhvcjogTHVrYXMgRml0 dGwgPGx1a2FzQGZpdHRsLmNvbT4KQXV0aG9yOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5h cmF6ZWwuZGU+CkF1dGhvcjogRGF2aWQgR2VpZXIgPGdlaWRhdi5wZ0BnbWFpbC5jb20+ClJl dmlld2VkLWJ5OgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkL2ZsYXQvMjAyMDA2MTIyMzI4MTAuZjQ2bmJxa2RoYnV0enFkZyU0MGFsYXAzLmFu YXJhemVsLmRlCi0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgICAg IHwgICAzICsKIHNyYy9iaW4vcGdfdGVzdF90aW1pbmcvcGdfdGVzdF90aW1pbmcuYyB8ICAx OCArKy0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jICAgICAgICAgICAgICAgfCAgIDMg Kwogc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYyAgICAgICAgICAgICAgICAgIHwgICA0ICsKIHNy Yy9jb21tb24vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvY29t bW9uL2luc3RyX3RpbWUuYyAgICAgICAgICAgICAgICAgfCAgODUgKysrKysrKysrKysrKysr KysrKwogc3JjL2NvbW1vbi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL3BvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCAgICB8IDEwNiArKysrKysr KysrKysrKysrKy0tLS0tLS0KIDggZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyks IDQwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9jb21tb24vaW5zdHJf dGltZS5jCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVy LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCAzZmFjNDZj NDAyYi4uNjBiZDA2ZWQ2NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv cG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5j CkBAIC01ODgsNiArNTg4LDkgQEAgUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAkgKi8KIAlJbml0aWFsaXplR1VDT3B0aW9ucygpOwogCisJLyogaW5pdGlhbGl6 ZSB0aW1pbmcgaW5mcmFzdHJ1Y3R1cmUgKHJlcXVpcmVkIGZvciBJTlNUUl8qIGNhbGxzKSAq LworCXBnX2luaXRpYWxpemVfdGltaW5nKCk7CisKIAlvcHRlcnIgPSAxOwogCiAJLyoKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfdGVzdF90aW1pbmcvcGdfdGVzdF90aW1pbmcuYyBiL3Ny Yy9iaW4vcGdfdGVzdF90aW1pbmcvcGdfdGVzdF90aW1pbmcuYwppbmRleCBhNTYyMTI1MWFm Yy4uOWZkNjMwYTQ5MGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdGVzdF90aW1pbmcvcGdf dGVzdF90aW1pbmcuYworKysgYi9zcmMvYmluL3BnX3Rlc3RfdGltaW5nL3BnX3Rlc3RfdGlt aW5nLmMKQEAgLTQzLDYgKzQzLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CiAJaGFuZGxlX2FyZ3MoYXJnYywgYXJndik7CiAKKwkvKiBpbml0aWFsaXplIHRpbWluZyBp bmZyYXN0cnVjdHVyZSAocmVxdWlyZWQgZm9yIElOU1RSXyogY2FsbHMpICovCisJcGdfaW5p dGlhbGl6ZV90aW1pbmcoKTsKKwogCWxvb3BfY291bnQgPSB0ZXN0X3RpbWluZyh0ZXN0X2R1 cmF0aW9uKTsKIAogCW91dHB1dChsb29wX2NvdW50KTsKQEAgLTE1NSwxMSArMTU4LDEwIEBA IHRlc3RfdGltaW5nKHVuc2lnbmVkIGludCBkdXJhdGlvbikKIAl1aW50NjQJCXRvdGFsX3Rp bWU7CiAJaW50NjQJCXRpbWVfZWxhcHNlZCA9IDA7CiAJdWludDY0CQlsb29wX2NvdW50ID0g MDsKLQl1aW50NjQJCXByZXYsCi0JCQkJY3VyOwogCWluc3RyX3RpbWUJc3RhcnRfdGltZSwK IAkJCQllbmRfdGltZSwKLQkJCQl0ZW1wOworCQkJCXByZXYsCisJCQkJY3VyOwogCiAJLyoK IAkgKiBQcmUtemVybyB0aGUgc3RhdGlzdGljcyBkYXRhIHN0cnVjdHVyZXMuICBUaGV5J3Jl IGFscmVhZHkgemVybyBieQpAQCAtMTc0LDcgKzE3Niw3IEBAIHRlc3RfdGltaW5nKHVuc2ln bmVkIGludCBkdXJhdGlvbikKIAl0b3RhbF90aW1lID0gZHVyYXRpb24gPiAwID8gZHVyYXRp b24gKiBJTlQ2NENPTlNUKDEwMDAwMDAwMDApIDogMDsKIAogCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoc3RhcnRfdGltZSk7Ci0JY3VyID0gSU5TVFJfVElNRV9HRVRfTkFOT1NFQyhzdGFy dF90aW1lKTsKKwljdXIgPSBzdGFydF90aW1lOwogCiAJd2hpbGUgKHRpbWVfZWxhcHNlZCA8 IHRvdGFsX3RpbWUpCiAJewpAQCAtMTgyLDkgKzE4NCw4IEBAIHRlc3RfdGltaW5nKHVuc2ln bmVkIGludCBkdXJhdGlvbikKIAkJCQkJYml0czsKIAogCQlwcmV2ID0gY3VyOwotCQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKHRlbXApOwotCQljdXIgPSBJTlNUUl9USU1FX0dFVF9OQU5P U0VDKHRlbXApOwotCQlkaWZmID0gY3VyIC0gcHJldjsKKwkJSU5TVFJfVElNRV9TRVRfQ1VS UkVOVChjdXIpOworCQlkaWZmID0gSU5TVFJfVElNRV9ESUZGX05BTk9TRUMoY3VyLCBwcmV2 KTsKIAogCQkvKiBEaWQgdGltZSBnbyBiYWNrd2FyZHM/ICovCiAJCWlmICh1bmxpa2VseShk aWZmIDwgMCkpCkBAIC0yMTcsOCArMjE4LDcgQEAgdGVzdF90aW1pbmcodW5zaWduZWQgaW50 IGR1cmF0aW9uKQogCQkJbGFyZ2VzdF9kaWZmX2NvdW50Kys7CiAKIAkJbG9vcF9jb3VudCsr OwotCQlJTlNUUl9USU1FX1NVQlRSQUNUKHRlbXAsIHN0YXJ0X3RpbWUpOwotCQl0aW1lX2Vs YXBzZWQgPSBJTlNUUl9USU1FX0dFVF9OQU5PU0VDKHRlbXApOworCQl0aW1lX2VsYXBzZWQg PSBJTlNUUl9USU1FX0RJRkZfTkFOT1NFQyhjdXIsIHN0YXJ0X3RpbWUpOwogCX0KIAogCUlO U1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kX3RpbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggY2I0 ZTk4NjA5MmUuLmM4YjIzM2JlMTZjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTczMzQsNiArNzMz NCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlpbml0UmFuZG9tU3RhdGUo JnN0YXRlW2ldLmNzX2Z1bmNfcnMpOwogCX0KIAorCS8qIGluaXRpYWxpemUgdGltaW5nIGlu ZnJhc3RydWN0dXJlIChyZXF1aXJlZCBmb3IgSU5TVFJfKiBjYWxscykgKi8KKwlwZ19pbml0 aWFsaXplX3RpbWluZygpOworCiAJLyogb3BlbmluZyBjb25uZWN0aW9uLi4uICovCiAJY29u ID0gZG9Db25uZWN0KCk7CiAJaWYgKGNvbiA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wc3FsL3N0YXJ0dXAuYyBiL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKaW5kZXggOWEzOTdl Yzg3YjcuLjY5ZDA0NGQ0MDVkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvc3RhcnR1cC5j CisrKyBiL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNs dWRlICJoZWxwLmgiCiAjaW5jbHVkZSAiaW5wdXQuaCIKICNpbmNsdWRlICJtYWlubG9vcC5o IgorI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIKICNpbmNsdWRlICJzZXR0 aW5ncy5oIgogCiAvKgpAQCAtMzI3LDYgKzMyOCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAogCVBRc2V0Tm90aWNlUHJvY2Vzc29yKHBzZXQuZGIsIE5vdGljZVByb2Nl c3NvciwgTlVMTCk7CiAKKwkvKiBpbml0aWFsaXplIHRpbWluZyBpbmZyYXN0cnVjdHVyZSAo cmVxdWlyZWQgZm9yIElOU1RSXyogY2FsbHMpICovCisJcGdfaW5pdGlhbGl6ZV90aW1pbmco KTsKKwogCVN5bmNWYXJpYWJsZXMoKTsKIAogCWlmIChvcHRpb25zLmxpc3RfZGJzKQpkaWZm IC0tZ2l0IGEvc3JjL2NvbW1vbi9NYWtlZmlsZSBiL3NyYy9jb21tb24vTWFrZWZpbGUKaW5k ZXggMmM3MjBjYWE1MDkuLjFhMmZiYmU4ODdmIDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL01h a2VmaWxlCisrKyBiL3NyYy9jb21tb24vTWFrZWZpbGUKQEAgLTU5LDYgKzU5LDcgQEAgT0JK U19DT01NT04gPSBcCiAJZmlsZV9wZXJtLm8gXAogCWZpbGVfdXRpbHMubyBcCiAJaGFzaGZu Lm8gXAorCWluc3RyX3RpbWUubyBcCiAJaXAubyBcCiAJanNvbmFwaS5vIFwKIAlrZXl3b3Jk cy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vaW5zdHJfdGltZS5jIGIvc3JjL2NvbW1v bi9pbnN0cl90aW1lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjNlOGVlMmQ2ZGIyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbW1vbi9pbnN0cl90aW1l LmMKQEAgLTAsMCArMSw4NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogaW5z dHJfdGltZS5jCisgKgkgICBOb24taW5saW5lIHBhcnRzIG9mIHRoZSBwb3J0YWJsZSBoaWdo LXByZWNpc2lvbiBpbnRlcnZhbCB0aW1pbmcKKyAqCSBpbXBsZW1lbnRhdGlvbgorICoKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tl bmQvcG9ydC9pbnN0cl90aW1lLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90 aW1lLmgiCisKKy8qCisgKiBTdG9yZXMgd2hhdCB0aGUgbnVtYmVyIG9mIHRpY2tzIG5lZWRz IHRvIGJlIG11bHRpcGxpZWQgd2l0aCB0byBlbmQgdXAKKyAqIHdpdGggbmFub3NlY29uZHMg dXNpbmcgaW50ZWdlciBtYXRoLgorICoKKyAqIE9uIGNlcnRhaW4gcGxhdGZvcm1zIChjdXJy ZW50bHkgV2luZG93cykgdGhlIHRpY2tzIHRvIG5hbm9zZWNvbmRzIGNvbnZlcnNpb24KKyAq IHJlcXVpcmVzIGZsb2F0aW5nIHBvaW50IG1hdGggYmVjYXVzZToKKyAqCisgKiBzZWMgPSB0 aWNrcyAvIGZyZXF1ZW5jeV9oegorICogbnMgID0gdGlja3MgLyBmcmVxdWVuY3lfaHogKiAx LDAwMCwwMDAsMDAwCisgKiBucyAgPSB0aWNrcyAqICgxLDAwMCwwMDAsMDAwIC8gZnJlcXVl bmN5X2h6KQorICogbnMgID0gdGlja3MgKiAoMSwwMDAsMDAwIC8gZnJlcXVlbmN5X2toeikg PC0tIG5vdyBpbiBraWxvaGVydHoKKyAqCisgKiBIZXJlLCAnbnMnIGlzIHVzdWFsbHkgYSBm bG9hdGluZyBudW1iZXIuIEZvciBleGFtcGxlIGZvciBhIDIuNSBHSHogQ1BVCisgKiB0aGUg c2NhbGluZyBmYWN0b3IgYmVjb21lcyAxLDAwMCwwMDAgLyAyLDUwMCwwMDAgPSAxLjIuCisg KgorICogVG8gYmUgYWJsZSB0byB1c2UgaW50ZWdlciBtYXRoIHdlIHdvcmsgYXJvdW5kIHRo ZSBsYWNrIG9mIHByZWNpc2lvbi4gV2UKKyAqIGZpcnN0IHNjYWxlIHRoZSBpbnRlZ2VyIHVw IGFuZCBhZnRlciB0aGUgbXVsdGlwbGljYXRpb24gYnkgdGhlIG51bWJlcgorICogb2YgdGlj a3MgaW4gSU5TVFJfVElNRV9HRVRfTkFOT1NFQygpIHdlIGRpdmlkZSBhZ2FpbiBieSB0aGUg c2FtZSB2YWx1ZS4KKyAqIFdlIHBpY2tlZCB0aGUgc2NhbGVyIHN1Y2ggdGhhdCBpdCBwcm92 aWRlcyBlbm91Z2ggcHJlY2lzaW9uIGFuZCBpcyBhCisgKiBwb3dlci1vZi10d28gd2hpY2gg YWxsb3dzIGZvciBzaGlmdGluZyBpbnN0ZWFkIG9mIGRvaW5nIGFuIGludGVnZXIKKyAqIGRp dmlzaW9uLiBXZSB1dGlsaXplIHVuc2lnbmVkIGludGVnZXJzIGV2ZW4gdGhvdWdoIHRpY2tz IGFyZSBzdG9yZWQgYXMgYQorICogc2lnbmVkIHZhbHVlIGJlY2F1c2UgdGhhdCBlbmNvdXJh Z2VzIGNvbXBpbGVycyB0byBnZW5lcmF0ZSBiZXR0ZXIgYXNzZW1ibHkuCisgKgorICogT24g YWxsIG90aGVyIHBsYXRmb3JtcyB3ZSBhcmUgdXNpbmcgY2xvY2tfZ2V0dGltZSgpLCB3aGlj aCB1c2VzIG5hbm9zZWNvbmRzCisgKiBhcyB0aWNrcy4gSGVuY2UsIHdlIHNldCB0aGUgbXVs dGlwbGllciB0byB6ZXJvLCB3aGljaCBjYXVzZXMgcGdfdGlja3NfdG9fbnMKKyAqIHRvIHJl dHVybiB0aGUgb3JpZ2luYWwgdmFsdWUuCisgKi8KK3VpbnQ2NAkJdGlja3NfcGVyX25zX3Nj YWxlZCA9IDA7Cit1aW50NjQJCW1heF90aWNrc19ub19vdmVyZmxvdyA9IDA7CisKK3N0YXRp YyB2b2lkIHNldF90aWNrc19wZXJfbnModm9pZCk7CisKK3ZvaWQKK3BnX2luaXRpYWxpemVf dGltaW5nKCkKK3sKKwlzZXRfdGlja3NfcGVyX25zKCk7Cit9CisKKyNpZm5kZWYgV0lOMzIK Kworc3RhdGljIHZvaWQKK3NldF90aWNrc19wZXJfbnMoKQoreworCXRpY2tzX3Blcl9uc19z Y2FsZWQgPSAwOworCW1heF90aWNrc19ub19vdmVyZmxvdyA9IDA7Cit9CisKKyNlbHNlCQkJ CQkJCS8qIFdJTjMyICovCisKKy8qIEdldFRpbWVyRnJlcXVlbmN5IHJldHVybnMgY291bnRz IHBlciBzZWNvbmQgKi8KK3N0YXRpYyBpbmxpbmUgZG91YmxlCitHZXRUaW1lckZyZXF1ZW5j eSh2b2lkKQoreworCUxBUkdFX0lOVEVHRVIgZjsKKworCVF1ZXJ5UGVyZm9ybWFuY2VGcmVx dWVuY3koJmYpOworCXJldHVybiAoZG91YmxlKSBmLlF1YWRQYXJ0OworfQorCitzdGF0aWMg dm9pZAorc2V0X3RpY2tzX3Blcl9ucygpCit7CisJdGlja3NfcGVyX25zX3NjYWxlZCA9IElO VDY0Q09OU1QoMTAwMDAwMDAwMCkgKiBUSUNLU19UT19OU19QUkVDSVNJT04gLyBHZXRUaW1l ckZyZXF1ZW5jeSgpOworCW1heF90aWNrc19ub19vdmVyZmxvdyA9IFBHX0lOVDY0X01BWCAv IHRpY2tzX3Blcl9uc19zY2FsZWQ7Cit9CisKKyNlbmRpZgkJCQkJCQkvKiBXSU4zMiAqLwpk aWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9tZXNvbi5idWlsZCBiL3NyYy9jb21tb24vbWVzb24u YnVpbGQKaW5kZXggYjc1NzYxOGE5YzkuLjA0MmVkYjc0NzNhIDEwMDY0NAotLS0gYS9zcmMv Y29tbW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy9jb21tb24vbWVzb24uYnVpbGQKQEAgLTEz LDYgKzEzLDcgQEAgY29tbW9uX3NvdXJjZXMgPSBmaWxlcygKICAgJ2ZpbGVfcGVybS5jJywK ICAgJ2ZpbGVfdXRpbHMuYycsCiAgICdoYXNoZm4uYycsCisgICdpbnN0cl90aW1lLmMnLAog ICAnaXAuYycsCiAgICdqc29uYXBpLmMnLAogICAna2V5d29yZHMuYycsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wb3J0YWJpbGl0eS9pbnN0cl90aW1lLmggYi9zcmMvaW5jbHVkZS9w b3J0YWJpbGl0eS9pbnN0cl90aW1lLmgKaW5kZXggNDkwNTkzZDE4MjUuLjk4NWI2YjVhZjg4 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgKKysr IGIvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCkBAIC0yNiw2ICsyNiw4 IEBACiAgKgogICogSU5TVFJfVElNRV9TVUJUUkFDVCh4LCB5KQkJeCAtPSB5CiAgKgorICog SU5TVFJfVElNRV9ESUZGX05BTk9TRUMoeCwgeSkJeCAtIHkgKGluIG5hbm9zZWNvbmRzKQor ICoKICAqIElOU1RSX1RJTUVfQUNDVU1fRElGRih4LCB5LCB6KQl4ICs9ICh5IC0geikKICAq CiAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUodCkJCQljb252ZXJ0IHQgdG8gZG91YmxlIChp biBzZWNvbmRzKQpAQCAtNzgsMTEgKzgwLDI5IEBAIHR5cGVkZWYgc3RydWN0IGluc3RyX3Rp bWUKICNkZWZpbmUgTlNfUEVSX01TCUlOVDY0Q09OU1QoMTAwMDAwMCkKICNkZWZpbmUgTlNf UEVSX1VTCUlOVDY0Q09OU1QoMTAwMCkKIAorLyoKKyAqIE1ha2Ugc3VyZSB0aGlzIGlzIGEg cG93ZXItb2YtdHdvLCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gdHVybiB0aGUKKyAqIG11 bHRpcGxpY2F0aW9ucyBhbmQgZGl2aXNpb25zIGludG8gc2hpZnRzLgorICovCisjZGVmaW5l IFRJQ0tTX1RPX05TX1BSRUNJU0lPTiAoMTw8MTQpCiAKLSNpZm5kZWYgV0lOMzIKKy8qCisg KiBWYXJpYWJsZXMgdXNlZCB0byB0cmFuc2xhdGUgdGlja3MgdG8gbmFub3NlY29uZHMsIGlu aXRpYWxpemVkIGJ5CisgKiBwZ19pbml0aWFsaXplX3RpbWluZy4KKyAqLworZXh0ZXJuIFBH RExMSU1QT1JUIHVpbnQ2NCB0aWNrc19wZXJfbnNfc2NhbGVkOworZXh0ZXJuIFBHRExMSU1Q T1JUIHVpbnQ2NCBtYXhfdGlja3Nfbm9fb3ZlcmZsb3c7CiAKKy8qCisgKiBJbml0aWFsaXpl IHRpbWluZyBpbmZyYXN0cnVjdHVyZQorICoKKyAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgYXQg bGVhc3Qgb25jZSBiZWZvcmUgdXNpbmcgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCogbWFjcm9z LgorICovCitleHRlcm4gdm9pZCBwZ19pbml0aWFsaXplX3RpbWluZyh2b2lkKTsKIAotLyog VXNlIGNsb2NrX2dldHRpbWUoKSAqLworI2lmbmRlZiBXSU4zMgorCisvKiBPbiBQT1NJWCwg dXNlIGNsb2NrX2dldHRpbWUoKSBmb3Igc3lzdGVtIGNsb2NrIHNvdXJjZSAqLwogCiAjaW5j bHVkZSA8dGltZS5oPgogCkBAIC0xMDYsOSArMTI2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgaW5z dHJfdGltZQogI2RlZmluZSBQR19JTlNUUl9DTE9DSwlDTE9DS19SRUFMVElNRQogI2VuZGlm CiAKLS8qIGhlbHBlciBmb3IgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCAqLwogc3RhdGljIGlu bGluZSBpbnN0cl90aW1lCi1wZ19jbG9ja19nZXR0aW1lX25zKHZvaWQpCitwZ19nZXRfdGlj a3Modm9pZCkKIHsKIAlpbnN0cl90aW1lCW5vdzsKIAlzdHJ1Y3QgdGltZXNwZWMgdG1wOwpA QCAtMTE5LDIxICsxMzgsMTIgQEAgcGdfY2xvY2tfZ2V0dGltZV9ucyh2b2lkKQogCXJldHVy biBub3c7CiB9CiAKLSNkZWZpbmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0KSBcCi0JKCh0 KSA9IHBnX2Nsb2NrX2dldHRpbWVfbnMoKSkKLQotI2RlZmluZSBJTlNUUl9USU1FX0dFVF9O QU5PU0VDKHQpIFwKLQkoKGludDY0KSAodCkudGlja3MpCi0KLQogI2Vsc2UJCQkJCQkJLyog V0lOMzIgKi8KIAorLyogT24gV2luZG93cywgdXNlIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVy KCkgZm9yIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8KIAotLyogVXNlIFF1ZXJ5UGVyZm9ybWFu Y2VDb3VudGVyKCkgKi8KLQotLyogaGVscGVyIGZvciBJTlNUUl9USU1FX1NFVF9DVVJSRU5U ICovCiBzdGF0aWMgaW5saW5lIGluc3RyX3RpbWUKLXBnX3F1ZXJ5X3BlcmZvcm1hbmNlX2Nv dW50ZXIodm9pZCkKK3BnX2dldF90aWNrcyh2b2lkKQogewogCWluc3RyX3RpbWUJbm93Owog CUxBUkdFX0lOVEVHRVIgdG1wOwpAQCAtMTQ0LDIzICsxNTQsNTAgQEAgcGdfcXVlcnlfcGVy Zm9ybWFuY2VfY291bnRlcih2b2lkKQogCXJldHVybiBub3c7CiB9CiAKLXN0YXRpYyBpbmxp bmUgZG91YmxlCi1HZXRUaW1lckZyZXF1ZW5jeSh2b2lkKQotewotCUxBUkdFX0lOVEVHRVIg ZjsKLQotCVF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJmYpOwotCXJldHVybiAoZG91Ymxl KSBmLlF1YWRQYXJ0OwotfQotCi0jZGVmaW5lIElOU1RSX1RJTUVfU0VUX0NVUlJFTlQodCkg XAotCSgodCkgPSBwZ19xdWVyeV9wZXJmb3JtYW5jZV9jb3VudGVyKCkpCi0KLSNkZWZpbmUg SU5TVFJfVElNRV9HRVRfTkFOT1NFQyh0KSBcCi0JKChpbnQ2NCkgKCh0KS50aWNrcyAqICgo ZG91YmxlKSBOU19QRVJfUyAvIEdldFRpbWVyRnJlcXVlbmN5KCkpKSkKLQogI2VuZGlmCQkJ CQkJCS8qIFdJTjMyICovCiAKK3N0YXRpYyBpbmxpbmUgaW50NjQKK3BnX3RpY2tzX3RvX25z KGludDY0IHRpY2tzKQoreworI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf TV9YNjQpCisJaW50NjQJCW5zID0gMDsKKworCWlmICh0aWNrc19wZXJfbnNfc2NhbGVkID09 IDApCisJCXJldHVybiB0aWNrczsKKworCS8qCisJICogV291bGQgbXVsdGlwbGljYXRpb24g b3ZlcmZsb3c/IElmIHNvIHBlcmZvcm0gY29tcHV0YXRpb24gaW4gdHdvIHBhcnRzLgorCSAq IENoZWNrIG92ZXJmbG93IHdpdGhvdXQgYWN0dWFsbHkgb3ZlcmZsb3dpbmcgdmlhOiBhICog YiA+IG1heCA8PT4gYSA+CisJICogbWF4IC8gYgorCSAqLworCWlmICh1bmxpa2VseSh0aWNr cyA+IChpbnQ2NCkgbWF4X3RpY2tzX25vX292ZXJmbG93KSkKKwl7CisJCS8qCisJCSAqIENv bXB1dGUgaG93IG9mdGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aWNrcyBmaXRzIGNvbXBs ZXRlbHkgaW50bworCQkgKiB0aGUgbnVtYmVyIG9mIGVsYXBzZWQgdGlja3MgYW5kIGNvbnZl cnQgdGhhdCBudW1iZXIgaW50bworCQkgKiBuYW5vc2Vjb25kcy4gVGhlbiBtdWx0aXBseSBi eSB0aGUgY291bnQgdG8gYXJyaXZlIGF0IHRoZSBmaW5hbAorCQkgKiB2YWx1ZS4gSW4gYSAy bmQgc3RlcCB3ZSBhZGp1c3QgdGhlIG51bWJlciBvZiBlbGFwc2VkIHRpY2tzIGFuZAorCQkg KiBjb252ZXJ0IHRoZSByZW1haW5pbmcgdGlja3MuCisJCSAqLworCQlpbnQ2NAkJY291bnQg PSB0aWNrcyAvIG1heF90aWNrc19ub19vdmVyZmxvdzsKKwkJaW50NjQJCW1heF9ucyA9IG1h eF90aWNrc19ub19vdmVyZmxvdyAqIHRpY2tzX3Blcl9uc19zY2FsZWQgLyBUSUNLU19UT19O U19QUkVDSVNJT047CisKKwkJbnMgPSBtYXhfbnMgKiBjb3VudDsKKworCQkvKgorCQkgKiBT dWJ0cmFjdCB0aGUgdGlja3MgdGhhdCB3ZSBub3cgYWxyZWFkeSBhY2NvdW50ZWQgZm9yLCBz byB0aGF0IHRoZXkKKwkJICogZG9uJ3QgZ2V0IGNvdW50ZWQgdHdpY2UuCisJCSAqLworCQl0 aWNrcyAtPSBjb3VudCAqIG1heF90aWNrc19ub19vdmVyZmxvdzsKKwkJQXNzZXJ0KHRpY2tz ID49IDApOworCX0KKworCW5zICs9IHRpY2tzICogdGlja3NfcGVyX25zX3NjYWxlZCAvIFRJ Q0tTX1RPX05TX1BSRUNJU0lPTjsKKwlyZXR1cm4gbnM7CisjZWxzZQorCXJldHVybiB0aWNr czsKKyNlbmRpZgorfQogCiAvKgogICogQ29tbW9uIG1hY3JvcwpAQCAtMTY4LDEyICsyMDUs MTMgQEAgR2V0VGltZXJGcmVxdWVuY3kodm9pZCkKIAogI2RlZmluZSBJTlNUUl9USU1FX0lT X1pFUk8odCkJKCh0KS50aWNrcyA9PSAwKQogCi0KICNkZWZpbmUgSU5TVFJfVElNRV9TRVRf WkVSTyh0KQkoKHQpLnRpY2tzID0gMCkKIAogI2RlZmluZSBJTlNUUl9USU1FX1NFVF9DVVJS RU5UX0xBWlkodCkgXAogCShJTlNUUl9USU1FX0lTX1pFUk8odCkgPyBJTlNUUl9USU1FX1NF VF9DVVJSRU5UKHQpLCB0cnVlIDogZmFsc2UpCiAKKyNkZWZpbmUgSU5TVFJfVElNRV9TRVRf Q1VSUkVOVCh0KSBcCisJKCh0KSA9IHBnX2dldF90aWNrcygpKQogCiAjZGVmaW5lIElOU1RS X1RJTUVfQUREKHgseSkgXAogCSgoeCkudGlja3MgKz0gKHkpLnRpY2tzKQpAQCAtMTgxLDEy ICsyMTksMTggQEAgR2V0VGltZXJGcmVxdWVuY3kodm9pZCkKICNkZWZpbmUgSU5TVFJfVElN RV9TVUJUUkFDVCh4LHkpIFwKIAkoKHgpLnRpY2tzIC09ICh5KS50aWNrcykKIAorI2RlZmlu ZSBJTlNUUl9USU1FX0RJRkZfTkFOT1NFQyh4LHkpIFwKKwkocGdfdGlja3NfdG9fbnMoKHgp LnRpY2tzIC0gKHkpLnRpY2tzKSkKKwogI2RlZmluZSBJTlNUUl9USU1FX0FDQ1VNX0RJRkYo eCx5LHopIFwKIAkoKHgpLnRpY2tzICs9ICh5KS50aWNrcyAtICh6KS50aWNrcykKIAogI2Rl ZmluZSBJTlNUUl9USU1FX0xUKHgseSkgXAogCSgoeCkudGlja3MgPiAoeSkudGlja3MpCiAK KyNkZWZpbmUgSU5TVFJfVElNRV9HRVRfTkFOT1NFQyh0KSBcCisJKHBnX3RpY2tzX3RvX25z KCh0KS50aWNrcykpCisKICNkZWZpbmUgSU5TVFJfVElNRV9HRVRfRE9VQkxFKHQpIFwKIAko KGRvdWJsZSkgSU5TVFJfVElNRV9HRVRfTkFOT1NFQyh0KSAvIE5TX1BFUl9TKQogCi0tIAoy LjUzLjAud2luZG93cy4xCgo= --------------Qqru7IpPOzfUyn9KiaUWf1dy Content-Type: text/x-patch; charset=UTF-8; name="v8-0001-Check-for-HAVE__CPUIDEX-and-HAVE__GET_CPUID_COUNT.patch" Content-Disposition: attachment; filename*0="v8-0001-Check-for-HAVE__CPUIDEX-and-HAVE__GET_CPUID_COUNT.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyNWI1OGQyODkwZTY1YTk1Y2U0MjZhMGI4MGZhYjQxYzFjOTliZDhmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpE YXRlOiBTYXQsIDMxIEphbiAyMDI2IDA4OjQ5OjQ2IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2 OCAxLzRdIENoZWNrIGZvciBIQVZFX19DUFVJREVYIGFuZCBIQVZFX19HRVRfQ1BVSURfQ09V TlQKIHNlcGFyYXRlbHkKClByZXZpb3VzbHkgd2Ugd291bGQgb25seSBjaGVjayBmb3IgdGhl IGF2YWlsYWJpbGl0eSBvZiBfX2NwdWlkZXggaWYKdGhlIHJlbGF0ZWQgX19nZXRfY3B1aWRf Y291bnQgd2FzIG5vdCBhdmFpbGFibGUgb24gYSBwbGF0Zm9ybS4gQnV0IHRoZXJlCmFyZSBj YXNlcyB3aGVyZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gY2FsbCBfX2NwdWlkZXggYXMgdGhl IG9ubHkgdmlhYmxlCm9wdGlvbiwgc3BlY2lmaWNhbGx5LCB3aGVuIGFjY2Vzc2luZyBhIGhp Z2ggbGVhZiBsaWtlIFZNIEh5cGVydmlzb3IKaW5mb3JtYXRpb24gKDB4NDAwMDAwMDApLCB3 aGljaCBfX2dldF9jcHVpZF9jb3VudCBkb2VzIG5vdCBhbGxvdy4KClRoaXMgd2lsbCBiZSB1 c2VkIGluIGFuIGZ1dHVyZSBjb21taXQgdG8gYWNjZXNzIEh5cGVydmlzb3IgaW5mb3JtYXRp b24KYWJvdXQgdGhlIFRTQyBmcmVxdWVuY3kgb2YgeDg2IENQVXMsIHdoZXJlIGF2YWlsYWJs ZS4KCk5vdGUgdGhhdCBfX2NwdWlkZXggaXMgZGVmaW5lZCBpbiBjcHVpZC5oIGZvciBHQ0Mv Y2xhbmcsIGJ1dCBpbiBpbnRyaW4uaApmb3IgTVNWQy4gQmVjYXVzZSB3ZSBub3cgc2V0IEhB VkVfX0NQVUlERVggZm9yIEdDQy9jbGFuZyB3aGVuIGF2YWlsYWJsZSwKYWRqdXN0IGV4aXN0 aW5nIGNvZGUgdG8gY2hlY2sgZm9yIF9NU0NfVkVSIHdoZW4gaW5jbHVkaW5nIGludHJpbi5o LgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieToK RGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0 LzIwMjAwNjEyMjMyODEwLmY0Nm5icWtkaGJ1dHpxZGclNDBhbGFwMy5hbmFyYXplbC5kZQot LS0KIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwICsrKysrKysrKysr Ky0tLS0tLS0tCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgfCAzMCArKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICAgICAgICB8IDEwICsrKysrKysrLS0KIHNyYy9wb3J0L3BnX2NyYzMyY19zc2U0Ml9jaG9v c2UuYyB8ICA0ICsrLS0KIHNyYy9wb3J0L3BnX3BvcGNvdW50X3g4Ni5jICAgICAgICB8ICA0 ICsrLS0KIDUgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDU5ODk0YWFh MDZlLi5kYjM4N2U5NTEyMiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3Vy ZQpAQCAtMTc3MDksNyArMTc3MDksOCBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX19DUFVJ RCAxIiA+PmNvbmZkZWZzLmgKICAgZmkKIGZpCiAKLSMgQ2hlY2sgZm9yIF9fZ2V0X2NwdWlk X2NvdW50KCkgYW5kIF9fY3B1aWRleCgpIGluIGEgc2ltaWxhciBmYXNoaW9uLgorIyBDaGVj ayBmb3IgX19nZXRfY3B1aWRfY291bnQoKSBhbmQgX19jcHVpZGV4KCkgc2VwYXJhdGVseSwg c2luY2Ugd2Ugc29tZXRpbWVzCisjIG5lZWQgX19jcHVpZGV4KCkgZXZlbiBpZiBfX2dldF9j cHVpZF9jb3VudCgpIGlzIGF2YWlsYWJsZS4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fZ2V0X2NwdWlkX2NvdW50IiA+JjUKICRh c19lY2hvX24gImNoZWNraW5nIGZvciBfX2dldF9jcHVpZF9jb3VudC4uLiAiID4mNjsgfQog aWYgJHtwZ2FjX2N2X19nZXRfY3B1aWRfY291bnQrOn0gZmFsc2U7IHRoZW4gOgpAQCAtMTc3 NDIsMjEgKzE3NzQzLDI1IEBAIGlmIHRlc3QgeCIkcGdhY19jdl9fZ2V0X2NwdWlkX2NvdW50 IiA9IHgieWVzIjsgdGhlbgogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX19HRVRfQ1BVSURf Q09VTlQgMSIgPj5jb25mZGVmcy5oCiAKLWVsc2UKLSAgIyBfX2NwdWlkZXgoKQotICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfX2Nw dWlkZXgiID4mNQorZmkKKyMgX19jcHVpZGV4KCkKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fY3B1aWRleCIgPiY1CiAkYXNfZWNo b19uICJjaGVja2luZyBmb3IgX19jcHVpZGV4Li4uICIgPiY2OyB9CiBpZiAke3BnYWNfY3Zf X2NwdWlkZXgrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m NgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0 CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8aW50cmluLmg+CisjaWZkZWYg X01TQ19WRVIKKyAgICAjaW5jbHVkZSA8aW50cmluLmg+CisgICAgI2Vsc2UKKyAgICAjaW5j bHVkZSA8Y3B1aWQuaD4KKyAgICAjZW5kaWYKIGludAogbWFpbiAoKQogewogdW5zaWduZWQg aW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKLSAgICBfX2NwdWlkZXgoZXh4LCA3LCAwKTsK KyAgX19jcHVpZGV4KGV4eCwgNywgMCk7CiAKICAgOwogICByZXR1cm4gMDsKQEAgLTE3Nzcy LDExICsxNzc3NywxMCBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf b2JqZXh0IFwKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJHBnYWNfY3ZfX2NwdWlkZXgiID4mNQogJGFzX2VjaG8gIiRwZ2FjX2N2X19j cHVpZGV4IiA+JjY7IH0KLSAgaWYgdGVzdCB4IiRwZ2FjX2N2X19jcHVpZGV4IiA9IHgieWVz IjsgdGhlbgoraWYgdGVzdCB4IiRwZ2FjX2N2X19jcHVpZGV4IiA9IHgieWVzIjsgdGhlbgog CiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX19DUFVJREVYIDEiID4+Y29uZmRlZnMuaAogCi0g IGZpCiBmaQogCiAjIENoZWNrIGZvciBYU0FWRSBpbnRyaW5zaWNzCmRpZmYgLS1naXQgYS9j b25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMjRmYWQ3NTdlYjUuLmRjZGNiNWQx YmNlIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0y MTExLDcgKzIxMTEsOCBAQCBlbHNlCiAgIGZpCiBmaQogCi0jIENoZWNrIGZvciBfX2dldF9j cHVpZF9jb3VudCgpIGFuZCBfX2NwdWlkZXgoKSBpbiBhIHNpbWlsYXIgZmFzaGlvbi4KKyMg Q2hlY2sgZm9yIF9fZ2V0X2NwdWlkX2NvdW50KCkgYW5kIF9fY3B1aWRleCgpIHNlcGFyYXRl bHksIHNpbmNlIHdlIHNvbWV0aW1lcworIyBuZWVkIF9fY3B1aWRleCgpIGV2ZW4gaWYgX19n ZXRfY3B1aWRfY291bnQoKSBpcyBhdmFpbGFibGUuCiBBQ19DQUNIRV9DSEVDSyhbZm9yIF9f Z2V0X2NwdWlkX2NvdW50XSwgW3BnYWNfY3ZfX2dldF9jcHVpZF9jb3VudF0sCiBbQUNfTElO S19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPGNwdWlkLmg+XSwKICAgW1t1 bnNpZ25lZCBpbnQgZXh4WzRdID0gezAsIDAsIDAsIDB9OwpAQCAtMjEyMSwxOCArMjEyMiwy MSBAQCBBQ19DQUNIRV9DSEVDSyhbZm9yIF9fZ2V0X2NwdWlkX2NvdW50XSwgW3BnYWNfY3Zf X2dldF9jcHVpZF9jb3VudF0sCiAgIFtwZ2FjX2N2X19nZXRfY3B1aWRfY291bnQ9Im5vIl0p XSkKIGlmIHRlc3QgeCIkcGdhY19jdl9fZ2V0X2NwdWlkX2NvdW50IiA9IHgieWVzIjsgdGhl bgogICBBQ19ERUZJTkUoSEFWRV9fR0VUX0NQVUlEX0NPVU5ULCAxLCBbRGVmaW5lIHRvIDEg aWYgeW91IGhhdmUgX19nZXRfY3B1aWRfY291bnQuXSkKLWVsc2UKLSAgIyBfX2NwdWlkZXgo KQotICBBQ19DQUNIRV9DSEVDSyhbZm9yIF9fY3B1aWRleF0sIFtwZ2FjX2N2X19jcHVpZGV4 XSwKLSAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDxpbnRy aW4uaD5dLAotICAgIFtbdW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKLSAg ICBfX2NwdWlkZXgoZXh4LCA3LCAwKTsKLSAgICBdXSldLAotICAgIFtwZ2FjX2N2X19jcHVp ZGV4PSJ5ZXMiXSwKLSAgICBbcGdhY19jdl9fY3B1aWRleD0ibm8iXSldKQotICBpZiB0ZXN0 IHgiJHBnYWNfY3ZfX2NwdWlkZXgiID0geCJ5ZXMiOyB0aGVuCi0gICAgQUNfREVGSU5FKEhB VkVfX0NQVUlERVgsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBfX2NwdWlkZXguXSkK LSAgZmkKK2ZpCisjIF9fY3B1aWRleCgpCitBQ19DQUNIRV9DSEVDSyhbZm9yIF9fY3B1aWRl eF0sIFtwZ2FjX2N2X19jcHVpZGV4XSwKK1tBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9H UkFNKFsjaWZkZWYgX01TQ19WRVIKKyAgICAjaW5jbHVkZSA8aW50cmluLmg+CisgICAgI2Vs c2UKKyAgICAjaW5jbHVkZSA8Y3B1aWQuaD4KKyAgICAjZW5kaWZdLAorICBbW3Vuc2lnbmVk IGludCBleHhbNF0gPSB7MCwgMCwgMCwgMH07CisgIF9fY3B1aWRleChleHgsIDcsIDApOwor ICBdXSldLAorICBbcGdhY19jdl9fY3B1aWRleD0ieWVzIl0sCisgIFtwZ2FjX2N2X19jcHVp ZGV4PSJubyJdKV0pCitpZiB0ZXN0IHgiJHBnYWNfY3ZfX2NwdWlkZXgiID0geCJ5ZXMiOyB0 aGVuCisgIEFDX0RFRklORShIQVZFX19DUFVJREVYLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91 IGhhdmUgX19jcHVpZGV4Ll0pCiBmaQogCiAjIENoZWNrIGZvciBYU0FWRSBpbnRyaW5zaWNz CmRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IGViZmI4NWU5 M2U1Li4zMTJjOTE5ZWFhNCAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24u YnVpbGQKQEAgLTIwODAsNyArMjA4MCw4IEBAIGVsaWYgY2MubGlua3MoJycnCiBlbmRpZgog CiAKLSMgQ2hlY2sgZm9yIF9fZ2V0X2NwdWlkX2NvdW50KCkgYW5kIF9fY3B1aWRleCgpIGlu IGEgc2ltaWxhciBmYXNoaW9uLgorIyBDaGVjayBmb3IgX19nZXRfY3B1aWRfY291bnQoKSBh bmQgX19jcHVpZGV4KCkgc2VwYXJhdGVseSwgc2luY2Ugd2Ugc29tZXRpbWVzCisjIG5lZWQg X19jcHVpZGV4KCkgZXZlbiBpZiBfX2dldF9jcHVpZF9jb3VudCgpIGlzIGF2YWlsYWJsZS4K IGlmIGNjLmxpbmtzKCcnJwogICAgICNpbmNsdWRlIDxjcHVpZC5oPgogICAgIGludCBtYWlu KGludCBhcmcsIGNoYXIgKiphcmd2KQpAQCAtMjA5MSw4ICsyMDkyLDEzIEBAIGlmIGNjLmxp bmtzKCcnJwogICAgICcnJywgbmFtZTogJ19fZ2V0X2NwdWlkX2NvdW50JywKICAgICBhcmdz OiB0ZXN0X2NfYXJncykKICAgY2RhdGEuc2V0KCdIQVZFX19HRVRfQ1BVSURfQ09VTlQnLCAx KQotZWxpZiBjYy5saW5rcygnJycKK2VuZGlmCitpZiBjYy5saW5rcygnJycKKyAgICAjaWZk ZWYgX01TQ19WRVIKICAgICAjaW5jbHVkZSA8aW50cmluLmg+CisgICAgI2Vsc2UKKyAgICAj aW5jbHVkZSA8Y3B1aWQuaD4KKyAgICAjZW5kaWYKICAgICBpbnQgbWFpbihpbnQgYXJnLCBj aGFyICoqYXJndikKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGludCBleHhbNF0gPSB7MCwg MCwgMCwgMH07CmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19jcmMzMmNfc3NlNDJfY2hvb3Nl LmMgYi9zcmMvcG9ydC9wZ19jcmMzMmNfc3NlNDJfY2hvb3NlLmMKaW5kZXggZjU4NjQ3Njk2 NGYuLjdhNzUzODBiNDgzIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ19jcmMzMmNfc3NlNDJf Y2hvb3NlLmMKKysrIGIvc3JjL3BvcnQvcGdfY3JjMzJjX3NzZTQyX2Nob29zZS5jCkBAIC0y MCwxMSArMjAsMTEgQEAKIAogI2luY2x1ZGUgImMuaCIKIAotI2lmIGRlZmluZWQoSEFWRV9f R0VUX0NQVUlEKSB8fCBkZWZpbmVkKEhBVkVfX0dFVF9DUFVJRF9DT1VOVCkKKyNpZiBkZWZp bmVkKEhBVkVfX0dFVF9DUFVJRCkgfHwgZGVmaW5lZChIQVZFX19HRVRfQ1BVSURfQ09VTlQp IHx8IChkZWZpbmVkKEhBVkVfX0NQVUlERVgpICYmICFkZWZpbmVkKF9NU0NfVkVSKSkKICNp bmNsdWRlIDxjcHVpZC5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfX0NQVUlEKSB8 fCBkZWZpbmVkKEhBVkVfX0NQVUlERVgpCisjaWYgZGVmaW5lZChIQVZFX19DUFVJRCkgfHwg KGRlZmluZWQoSEFWRV9fQ1BVSURFWCkgJiYgZGVmaW5lZChfTVNDX1ZFUikpCiAjaW5jbHVk ZSA8aW50cmluLmg+CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdfcG9wY291 bnRfeDg2LmMgYi9zcmMvcG9ydC9wZ19wb3Bjb3VudF94ODYuYwppbmRleCA2YmNlMDg5NDMy Zi4uODQwOTEwZjMzMzcgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX3BvcGNvdW50X3g4Ni5j CisrKyBiL3NyYy9wb3J0L3BnX3BvcGNvdW50X3g4Ni5jCkBAIC0xNCw3ICsxNCw3IEBACiAK ICNpZmRlZiBIQVZFX1g4Nl82NF9QT1BDTlRRCiAKLSNpZiBkZWZpbmVkKEhBVkVfX0dFVF9D UFVJRCkgfHwgZGVmaW5lZChIQVZFX19HRVRfQ1BVSURfQ09VTlQpCisjaWYgZGVmaW5lZChI QVZFX19HRVRfQ1BVSUQpIHx8IGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEX0NPVU5UKSB8fCAo ZGVmaW5lZChIQVZFX19DUFVJREVYKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikpCiAjaW5jbHVk ZSA8Y3B1aWQuaD4KICNlbmRpZgogCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSA8aW1t aW50cmluLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoSEFWRV9fQ1BVSUQpIHx8IGRlZmlu ZWQoSEFWRV9fQ1BVSURFWCkKKyNpZiBkZWZpbmVkKEhBVkVfX0NQVUlEKSB8fCAoZGVmaW5l ZChIQVZFX19DUFVJREVYKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSkKICNpbmNsdWRlIDxpbnRy aW4uaD4KICNlbmRpZgogCi0tIAoyLjUzLjAud2luZG93cy4xCgo= --------------Qqru7IpPOzfUyn9KiaUWf1dy--