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 1vQjVA-00GGlM-3B for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Dec 2025 09:50:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vQjV8-00CUFw-2i for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Dec 2025 09:50:23 +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 1vQjV8-00CUFo-1K for pgsql-hackers@lists.postgresql.org; Wed, 03 Dec 2025 09:50:22 +0000 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vQjV6-002tbl-08 for pgsql-hackers@postgresql.org; Wed, 03 Dec 2025 09:50:22 +0000 Received: by mail-wm1-x341.google.com with SMTP id 5b1f17b1804b1-47118259fd8so63643885e9.3 for ; Wed, 03 Dec 2025 01:50:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764755418; x=1765360218; darn=postgresql.org; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=Quekl8Mp4oMhtaKhyHDzePfFxNgVswaYmXyrcN9l/Ts=; b=RDNSWqnM1/41XMISdX52p6qfhb8kdkDPEGH1EygQI//Phrv+BvkJ1P/HZSZUaH8DU6 jh5FcHHjguCySfFvE6c0CmhbxPTonwqO/WllbfG7ypjw5kKMKgpIt7JVM3aqIkR8939t wRSgfwXRPX9VjSIw7f5R2poGvQclRKG/gn7JK504CztkmsY2qHWEcNE9cGj4Zur0hcDq cqY2k3oUbMEbkghDG4+hUk0BHR3iXGr6VnAgO33c0hG8GdYiyqqFRUnk/X0NKXFzGq0G vh50LW79jsgWnmYL2XOikzOePRMoHRwUz4r2QcZXfylza+AKpYm5AnGrp9dDNaWmmeb/ SGig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764755418; x=1765360218; h=in-reply-to:content-language:references:cc:to:from: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=Quekl8Mp4oMhtaKhyHDzePfFxNgVswaYmXyrcN9l/Ts=; b=mE354R5FMHCwJ6ORBo4+y8GB7FwrYMSXeml0SfT7u6yzEXuPjoz3OcU6/JF3XGp6rk VSSLfprxZnKYMVpCSN0mcPA7/vcgagdVEbqJmad6P6ACXj/b5n73ii4MRXlWIkZWEKEU psIt6656IHdhMDxfxs7r+Fbsid0V6XRLLJMeBRk9rILAkxv3kawwPbtzro+nSXDUoJ4A gPttK2VSGJJq4z1JQlOa3Mm5kVcRi36YbBhZknCd752dVOzMDOfoiV12OcFcw+RvXaL7 iGtsewhV2zTMQ2IDfzYbpUoQNzTpM+WSHMuh7Zk+tGJ8vNdUXj/9K7LcXJeIK58Mjyl0 OGUw== X-Forwarded-Encrypted: i=1; AJvYcCXAytsYkkn/rLjySaCuXwGc3Am4fitf7kSO57wcJin5hTRe52TdsQL9fqOd5y9CEdOyg5JysF4cCzjxYP6H@postgresql.org X-Gm-Message-State: AOJu0YyUmzsvQjftOug1gytF91LOoAB8Y6P6pu4lu9eRfNQy8n0ALCjE Ochm1EGuHhPC+QtR+xJtQH+tZBmsb+TyNXJU12SMChpFYoO+Z8ECq54g X-Gm-Gg: ASbGncttH35i7y1xMXDNRycrewfOuNwT10l8Gogbnnu+sysNH01JUiYtisp4+uZ0uoC Il8LS3EbCBJrCZKxmyPmUi1tH9yBKGs4lh8yfc2cMGQcBerqMuoNwy6rtUeflBwE3KLsL8mZoMy EoJlSUXwSzznFYlUa4jpp9EfJN+Zer9z45ArB2AxAidH0sprSufV0jNOCv9cjxTrw/B1lQyG1xG iCus6PnpMjH7dsI/S+tp1B0IG01ZHJirtm09p6blRWB/Tfqi9mov1vEkGb7Dl8RzcQpvaX7seGD /92dm0wtp1glemJNLE/d9iaZp26GsqzcbCVMd95H7hPfTMvNkuS6RtXBcamkmI14J+ae2X2/km/ n5ZXb22GDQ+dlit//NJPnsQk+SH0fx1gyZzO0l2dVXDn2rhWdS4ifVKfLbVn6OWKfPt7UOXnnK9 0a+MKefuYIll998TQ= X-Google-Smtp-Source: AGHT+IFE7gzABs+tuLL/x8Jy6iEUjMhRt/c57AJCVk/5x+UQBpEWZt+OHbRuBSprpxlO5n8+hksR6g== X-Received: by 2002:a05:600c:5492:b0:477:9c73:268b with SMTP id 5b1f17b1804b1-4792af4914cmr16914215e9.33.1764755417866; Wed, 03 Dec 2025 01:50:17 -0800 (PST) Received: from [192.168.2.32] ([165.225.27.7]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4792a79761bsm40236995e9.2.2025.12.03.01.50.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 03 Dec 2025 01:50:17 -0800 (PST) Content-Type: multipart/mixed; boundary="------------cbwMnRdFkWr6IdWoYmUr9TTK" Message-ID: <5310b6e1-357b-4de0-9167-569dd7bb5807@gmail.com> Date: Wed, 3 Dec 2025 10:50:15 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Reduce timing overhead of EXPLAIN ANALYZE using rdtsc? From: David Geier To: Robert Haas , =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: Lukas Fittl , Andres Freund , pgsql-hackers , Pavel Stehule , vignesh C , Michael Paquier , Ibrar Ahmed , Maciek Sakrejda , Tomas Vondra References: <202510191732.kxjptludow3i@alvherre.pgsql> <7d54ded4-74cc-4085-97f0-21ad3c660eb7@gmail.com> Content-Language: en-US In-Reply-To: <7d54ded4-74cc-4085-97f0-21ad3c660eb7@gmail.com> 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. --------------cbwMnRdFkWr6IdWoYmUr9TTK Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 19.11.2025 08:20, David Geier wrote: > > On 20.10.2025 21:59, Robert Haas wrote: >> On Sun, Oct 19, 2025 at 2:16 PM Álvaro Herrera wrote: >>> If I were >>> a consultant trying to understand a customer's system, I would have to >>> ask them to run it twice just in case 'fast' is supported, and I don't >>> think that's very helpful. >> >> Big +1 from me. >> > > That makes sense. I'm planning to rebase the patch the next days. Then > I'll also take care of that. The attached patched is rebased on latest master and pg_test_timing now always tests the normal and the fast timing code. If no fast clock source is available the fast timing code is skipped. -- David Geier --------------cbwMnRdFkWr6IdWoYmUr9TTK Content-Type: text/x-patch; charset=UTF-8; name="v12-0002-pg_test_timing-Also-test-fast-timing-and-report-time.patch" Content-Disposition: attachment; filename*0="v12-0002-pg_test_timing-Also-test-fast-timing-and-report-tim"; filename*1="e.patch" Content-Transfer-Encoding: base64 RnJvbSA2NjNmYzAwM2Y4NmU0ZjFlOTBjNWE5ODEzMmQzZDMwZGE0Yzc3N2I1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpE YXRlOiBTdW4sIDI3IEp1bCAyMDI1IDA4OjQ4OjQ4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAy LzJdIHBnX3Rlc3RfdGltaW5nOiBBbHNvIHRlc3QgZmFzdCB0aW1pbmcgYW5kIHJlcG9ydCB0 aW1lCiBzb3VyY2UKCkluIHBhc3NpbmcgYWxzbyByZWR1Y2UgdGhlIHBlci1sb29wIG92ZXJo ZWFkIGNhdXNlZCBieSByZXBlYXRlZCBkaXZpc2lvbnMKaW4gSU5TVFJfVElNRV9HRVRfTkFO T1NFQyB3aGVuIHRoZSB0aWNrcyB2YXJpYWJsZSBoYXMgYmVjb21lIHZlcnkgbGFyZ2UsCmlu c3RlYWQgZGlmZiBmaXJzdCBhbmQgdGhlbiB0dXJuIGl0IGludG8gbmFub3NlY3MuCi0tLQog c3JjL2Jpbi9wZ190ZXN0X3RpbWluZy9wZ190ZXN0X3RpbWluZy5jIHwgNTkgKysrKysrKysr KysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5o ICAgIHwgMzAgKysrKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25z KCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Rlc3RfdGlt aW5nL3BnX3Rlc3RfdGltaW5nLmMgYi9zcmMvYmluL3BnX3Rlc3RfdGltaW5nL3BnX3Rlc3Rf dGltaW5nLmMKaW5kZXggYTU2MjEyNTFhZmMuLmI3N2VmMjA2M2I2IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3Rlc3RfdGltaW5nL3BnX3Rlc3RfdGltaW5nLmMKKysrIGIvc3JjL2Jpbi9w Z190ZXN0X3RpbWluZy9wZ190ZXN0X3RpbWluZy5jCkBAIC0xNiw2ICsxNiw3IEBAIHN0YXRp YyBjb25zdCBjaGFyICpwcm9nbmFtZTsKIAogc3RhdGljIHVuc2lnbmVkIGludCB0ZXN0X2R1 cmF0aW9uID0gMzsKIHN0YXRpYyBkb3VibGUgbWF4X3JwcmN0ID0gOTkuOTk7CitzdGF0aWMg Ym9vbCBmYXN0X3RpbWluZyA9IGZhbHNlOwogCiAvKiByZWNvcmQgZHVyYXRpb24gaW4gcG93 ZXJzIG9mIDIgbmFub3NlY29uZHMgKi8KIHN0YXRpYyBsb25nIGxvbmcgaW50IGhpc3RvZ3Jh bVszMl07CkBAIC01Niw2ICs1Nyw3IEBAIGhhbmRsZV9hcmdzKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPSB7CiAJCXsi ZHVyYXRpb24iLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ2QnfSwKIAkJeyJjdXRvZmYi LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ2MnfSwKKwkJeyJmYXN0Iiwgbm9fYXJndW1l bnQsIE5VTEwsICdmJ30sCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CiAKQEAgLTY4LDcg KzcwLDcgQEAgaGFuZGxlX2FyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl7CiAJCWlm IChzdHJjbXAoYXJndlsxXSwgIi0taGVscCIpID09IDAgfHwgc3RyY21wKGFyZ3ZbMV0sICIt PyIpID09IDApCiAJCXsKLQkJCXByaW50ZihfKCJVc2FnZTogJXMgWy1kIERVUkFUSU9OXSBb LWMgQ1VUT0ZGXVxuIiksIHByb2duYW1lKTsKKwkJCXByaW50ZihfKCJVc2FnZTogJXMgWy1k IERVUkFUSU9OXSBbLWMgQ1VUT0ZGXSBbLS1mYXN0XVxuIiksIHByb2duYW1lKTsKIAkJCWV4 aXQoMCk7CiAJCX0KIAkJaWYgKHN0cmNtcChhcmd2WzFdLCAiLS12ZXJzaW9uIikgPT0gMCB8 fCBzdHJjbXAoYXJndlsxXSwgIi1WIikgPT0gMCkKQEAgLTc4LDcgKzgwLDcgQEAgaGFuZGxl X2FyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJfQogCX0KIAotCXdoaWxlICgob3B0 aW9uID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImQ6YzoiLAorCXdoaWxlICgob3B0aW9u ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImQ6YzpmOiIsCiAJCQkJCQkJCSBsb25nX29w dGlvbnMsICZvcHRpbmRleCkpICE9IC0xKQogCXsKIAkJc3dpdGNoIChvcHRpb24pCkBAIC0x MjUsNiArMTI3LDEwIEBAIGhhbmRsZV9hcmdzKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ CQkJfQogCQkJCWJyZWFrOwogCisJCQljYXNlICdmJzoKKwkJCQlmYXN0X3RpbWluZyA9IHRy dWU7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAJCQkJZnByaW50ZihzdGRlcnIsIF8o IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJCQlw cm9nbmFtZSk7CkBAIC0xNTUsMTEgKzE2MSwzMSBAQCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBp bnQgZHVyYXRpb24pCiAJdWludDY0CQl0b3RhbF90aW1lOwogCWludDY0CQl0aW1lX2VsYXBz ZWQgPSAwOwogCXVpbnQ2NAkJbG9vcF9jb3VudCA9IDA7Ci0JdWludDY0CQlwcmV2LAotCQkJ CWN1cjsKIAlpbnN0cl90aW1lCXN0YXJ0X3RpbWUsCiAJCQkJZW5kX3RpbWUsCi0JCQkJdGVt cDsKKwkJCQlwcmV2LAorCQkJCWN1cjsKKwljaGFyCSAgICp0aW1lX3NvdXJjZSA9IE5VTEw7 CisJYm9vbAkJZmFzdF90aW1pbmdfdXNlZCA9IGZhbHNlOworCisJSU5TVFJfVElNRV9JTklU SUFMSVpFKCk7CisKKyNpZiAhZGVmaW5lZChXSU4zMikgJiYgZGVmaW5lZChfX3g4Nl82NF9f KSAmJiBkZWZpbmVkKF9fbGludXhfXykKKwlpZiAoZmFzdF90aW1pbmcgJiYgaGFzX3JkdHNj KQorCXsKKwkJdGltZV9zb3VyY2UgPSAiUkRUU0MiOworCQlmYXN0X3RpbWluZ191c2VkID0g dHJ1ZTsKKwl9CisJZWxzZSBpZiAoaGFzX3JkdHNjcCkKKwkJdGltZV9zb3VyY2UgPSAiUkRU U0NQIjsKKwllbHNlCisJCXRpbWVfc291cmNlID0gUEdfSU5TVFJfQ0xPQ0tfTkFNRTsKKyNl bHNlCisJdGltZV9zb3VyY2UgPSBQR19JTlNUUl9DTE9DS19OQU1FOworI2VuZGlmCisJaWYg KGZhc3RfdGltaW5nICYmICFmYXN0X3RpbWluZ191c2VkKQorCQlwcmludGYoXygiV2Fybmlu ZzogRmFzdCB0aW1pbmcgcmVxdWVzdGVkLCBidXQgbm90IGF2YWlsYWJsZSAtIHJlZ3VsYXIg dGltaW5nIHNvdXJjZSB3aWxsIGJlIHVzZWRcbiIpKTsKKwlwcmludGYoXygiVGltZSBzb3Vy Y2U6ICVzXG4iKSwgdGltZV9zb3VyY2UpOwogCiAJLyoKIAkgKiBQcmUtemVybyB0aGUgc3Rh dGlzdGljcyBkYXRhIHN0cnVjdHVyZXMuICBUaGV5J3JlIGFscmVhZHkgemVybyBieQpAQCAt MTczLDggKzE5OSwxMSBAQCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAK IAl0b3RhbF90aW1lID0gZHVyYXRpb24gPiAwID8gZHVyYXRpb24gKiBJTlQ2NENPTlNUKDEw MDAwMDAwMDApIDogMDsKIAotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnRfdGltZSk7 Ci0JY3VyID0gSU5TVFJfVElNRV9HRVRfTkFOT1NFQyhzdGFydF90aW1lKTsKKwlpZiAoZmFz dF90aW1pbmcpCisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlRfRkFTVChzdGFydF90aW1lKTsK KwllbHNlCisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnRfdGltZSk7CisJY3VyID0g c3RhcnRfdGltZTsKIAogCXdoaWxlICh0aW1lX2VsYXBzZWQgPCB0b3RhbF90aW1lKQogCXsK QEAgLTE4Miw5ICsyMTEsMTEgQEAgdGVzdF90aW1pbmcodW5zaWduZWQgaW50IGR1cmF0aW9u KQogCQkJCQliaXRzOwogCiAJCXByZXYgPSBjdXI7Ci0JCUlOU1RSX1RJTUVfU0VUX0NVUlJF TlQodGVtcCk7Ci0JCWN1ciA9IElOU1RSX1RJTUVfR0VUX05BTk9TRUModGVtcCk7Ci0JCWRp ZmYgPSBjdXIgLSBwcmV2OworCQlpZiAoZmFzdF90aW1pbmcpCisJCQlJTlNUUl9USU1FX1NF VF9DVVJSRU5UX0ZBU1QoY3VyKTsKKwkJZWxzZQorCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChjdXIpOworCQlkaWZmID0gSU5TVFJfVElNRV9ESUZGX05BTk9TRUMoY3VyLCBwcmV2KTsK IAogCQkvKiBEaWQgdGltZSBnbyBiYWNrd2FyZHM/ICovCiAJCWlmICh1bmxpa2VseShkaWZm IDwgMCkpCkBAIC0yMTcsMTEgKzI0OCwxMyBAQCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQg ZHVyYXRpb24pCiAJCQlsYXJnZXN0X2RpZmZfY291bnQrKzsKIAogCQlsb29wX2NvdW50Kys7 Ci0JCUlOU1RSX1RJTUVfU1VCVFJBQ1QodGVtcCwgc3RhcnRfdGltZSk7Ci0JCXRpbWVfZWxh cHNlZCA9IElOU1RSX1RJTUVfR0VUX05BTk9TRUModGVtcCk7CisJCXRpbWVfZWxhcHNlZCA9 IElOU1RSX1RJTUVfRElGRl9OQU5PU0VDKGN1ciwgc3RhcnRfdGltZSk7CiAJfQogCi0JSU5T VFJfVElNRV9TRVRfQ1VSUkVOVChlbmRfdGltZSk7CisJaWYgKGZhc3RfdGltaW5nKQorCQlJ TlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1QoZW5kX3RpbWUpOworCWVsc2UKKwkJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChlbmRfdGltZSk7CiAKIAlJTlNUUl9USU1FX1NVQlRSQUNUKGVu ZF90aW1lLCBzdGFydF90aW1lKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9ydGFi aWxpdHkvaW5zdHJfdGltZS5oIGIvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGlt ZS5oCmluZGV4IGUyZTMzOWEwYzRmLi5mMDIyOTZmMTAyNiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BvcnRh YmlsaXR5L2luc3RyX3RpbWUuaApAQCAtMTEyLDEwICsxMTIsMTMgQEAgZXh0ZXJuIGludDY0 IG1heF90aWNrc19ub19vdmVyZmxvdzsKICAqLwogI2lmIGRlZmluZWQoX19kYXJ3aW5fXykg JiYgZGVmaW5lZChDTE9DS19NT05PVE9OSUNfUkFXKQogI2RlZmluZSBQR19JTlNUUl9DTE9D SwlDTE9DS19NT05PVE9OSUNfUkFXCisjZGVmaW5lIFBHX0lOU1RSX0NMT0NLX05BTUUJImNs b2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQ19SQVcpIgogI2VsaWYgZGVmaW5lZChDTE9D S19NT05PVE9OSUMpCiAjZGVmaW5lIFBHX0lOU1RSX0NMT0NLCUNMT0NLX01PTk9UT05JQwor I2RlZmluZSBQR19JTlNUUl9DTE9DS19OQU1FCSJjbG9ja19nZXR0aW1lIChDTE9DS19NT05P VE9OSUMpIgogI2Vsc2UKICNkZWZpbmUgUEdfSU5TVFJfQ0xPQ0sJQ0xPQ0tfUkVBTFRJTUUK KyNkZWZpbmUgUEdfSU5TVFJfQ0xPQ0tfTkFNRQkiY2xvY2tfZ2V0dGltZSAoQ0xPQ0tfUkVB TFRJTUUpIgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQo X19saW51eF9fKQpAQCAtMTc0LDcgKzE3Nyw3IEBAIHBnX2dldF90aWNrcyh2b2lkKQogfQog CiBzdGF0aWMgaW5saW5lIGludDY0X3QKLXBnX3RpY2tzX3RvX25zKGluc3RyX3RpbWUgdCkK K3BnX3RpY2tzX3RvX25zKGludDY0IHRpY2tzKQogewogCS8qCiAJICogV291bGQgbXVsdGlw bGljYXRpb24gb3ZlcmZsb3c/IElmIHNvIHBlcmZvcm0gY29tcHV0YXRpb24gaW4gdHdvIHBh cnRzLgpAQCAtMTgzLDcgKzE4Niw3IEBAIHBnX3RpY2tzX3RvX25zKGluc3RyX3RpbWUgdCkK IAkgKi8KIAlpbnQ2NAkJbnMgPSAwOwogCi0JaWYgKHVubGlrZWx5KHQudGlja3MgPiBtYXhf dGlja3Nfbm9fb3ZlcmZsb3cpKQorCWlmICh1bmxpa2VseSh0aWNrcyA+IG1heF90aWNrc19u b19vdmVyZmxvdykpCiAJewogCQkvKgogCQkgKiBDb21wdXRlIGhvdyBvZnRlbiB0aGUgbWF4 aW11bSBudW1iZXIgb2YgdGlja3MgZml0cyBjb21wbGV0ZWx5IGludG8KQEAgLTE5Miw3ICsx OTUsNyBAQCBwZ190aWNrc190b19ucyhpbnN0cl90aW1lIHQpCiAJCSAqIHZhbHVlLiBJbiBh IDJuZCBzdGVwIHdlIGFkanVzdCB0aGUgbnVtYmVyIG9mIGVsYXBzZWQgdGlja3MgYW5kCiAJ CSAqIGNvbnZlcnQgdGhlIHJlbWFpbmluZyB0aWNrcy4KIAkJICovCi0JCWludDY0CQljb3Vu dCA9IHQudGlja3MgLyBtYXhfdGlja3Nfbm9fb3ZlcmZsb3c7CisJCWludDY0CQljb3VudCA9 IHRpY2tzIC8gbWF4X3RpY2tzX25vX292ZXJmbG93OwogCQlpbnQ2NAkJbWF4X25zID0gbWF4 X3RpY2tzX25vX292ZXJmbG93ICogdGlja3NfcGVyX25zX3NjYWxlZCAvIFRJQ0tTX1RPX05T X1BSRUNJU0lPTjsKIAogCQlucyA9IG1heF9ucyAqIGNvdW50OwpAQCAtMjAxLDExICsyMDQs MTEgQEAgcGdfdGlja3NfdG9fbnMoaW5zdHJfdGltZSB0KQogCQkgKiBTdWJ0cmFjdCB0aGUg dGlja3MgdGhhdCB3ZSBub3cgYWxyZWFkeSBhY2NvdW50ZWQgZm9yLCBzbyB0aGF0IHRoZXkK IAkJICogZG9uJ3QgZ2V0IGNvdW50ZWQgdHdpY2UuCiAJCSAqLwotCQl0LnRpY2tzIC09IGNv dW50ICogbWF4X3RpY2tzX25vX292ZXJmbG93OwotCQlBc3NlcnQodC50aWNrcyA+PSAwKTsK KwkJdGlja3MgLT0gY291bnQgKiBtYXhfdGlja3Nfbm9fb3ZlcmZsb3c7CisJCUFzc2VydCh0 aWNrcyA+PSAwKTsKIAl9CiAKLQlucyArPSB0LnRpY2tzICogdGlja3NfcGVyX25zX3NjYWxl ZCAvIFRJQ0tTX1RPX05TX1BSRUNJU0lPTjsKKwlucyArPSB0aWNrcyAqIHRpY2tzX3Blcl9u c19zY2FsZWQgLyBUSUNLU19UT19OU19QUkVDSVNJT047CiAJcmV0dXJuIG5zOwogfQogCkBA IC0yMjYsMTQgKzIyOSwxNCBAQCBwZ19pbml0aWFsaXplX2dldF90aWNrcygpCiAjZGVmaW5l IElOU1RSX1RJTUVfU0VUX0NVUlJFTlQodCkgXAogCSgodCkgPSBwZ19nZXRfdGlja3MoKSkK IAotI2RlZmluZSBJTlNUUl9USU1FX0dFVF9OQU5PU0VDKHQpIFwKLQlwZ190aWNrc190b19u cyh0KQotCisjZGVmaW5lIElOU1RSX1RJTUVfVElDS1NfVE9fTkFOT1NFQyh0aWNrcykgXAor CShwZ190aWNrc190b19ucyh0aWNrcykpCiAKICNlbHNlCQkJCQkJCS8qIFdJTjMyICovCiAK IAogLyogVXNlIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCkgKi8KKyNkZWZpbmUgUEdfSU5T VFJfQ0xPQ0tfTkFNRQkiUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIiCiAKIC8qIGhlbHBlciBm b3IgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCAvIElOU1RSX1RJTUVfU0VUX0NVUlJFTlRfRkFT VCAqLwogc3RhdGljIGlubGluZSBpbnN0cl90aW1lCkBAIC0yNjUsOCArMjY4LDggQEAgR2V0 VGltZXJGcmVxdWVuY3kodm9pZCkKICNkZWZpbmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0 KSBcCiAJKCh0KSA9IHBnX3F1ZXJ5X3BlcmZvcm1hbmNlX2NvdW50ZXIoKSkKIAotI2RlZmlu ZSBJTlNUUl9USU1FX0dFVF9OQU5PU0VDKHQpIFwKLQkoKGludDY0KSAoKHQpLnRpY2tzICog KChkb3VibGUpIE5TX1BFUl9TIC8gR2V0VGltZXJGcmVxdWVuY3koKSkpKQorI2RlZmluZSBJ TlNUUl9USU1FX1RJQ0tTX1RPX05BTk9TRUModGlja3MpIFwKKwkoKGludDY0KSAoKHRpY2tz KSAqICgoZG91YmxlKSBOU19QRVJfUyAvIEdldFRpbWVyRnJlcXVlbmN5KCkpKSkKIAogI2Vu ZGlmCQkJCQkJCS8qIFdJTjMyICovCiAKQEAgLTI4NSw5ICsyODgsMTQgQEAgR2V0VGltZXJG cmVxdWVuY3kodm9pZCkKICNkZWZpbmUgSU5TVFJfVElNRV9TVUJUUkFDVCh4LHkpIFwKIAko KHgpLnRpY2tzIC09ICh5KS50aWNrcykKIAorI2RlZmluZSBJTlNUUl9USU1FX0RJRkZfTkFO T1NFQyh4LHkpIFwKKwkoSU5TVFJfVElNRV9USUNLU19UT19OQU5PU0VDKCh4KS50aWNrcyAt ICh5KS50aWNrcykpCisKICNkZWZpbmUgSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHgseSx6KSBc CiAJKCh4KS50aWNrcyArPSAoeSkudGlja3MgLSAoeikudGlja3MpCiAKKyNkZWZpbmUgSU5T VFJfVElNRV9HRVRfTkFOT1NFQyh0KSBcCisJKElOU1RSX1RJTUVfVElDS1NfVE9fTkFOT1NF QygodCkudGlja3MpKQogCiAjZGVmaW5lIElOU1RSX1RJTUVfR0VUX0RPVUJMRSh0KSBcCiAJ KChkb3VibGUpIElOU1RSX1RJTUVfR0VUX05BTk9TRUModCkgLyBOU19QRVJfUykKLS0gCjIu NTEuMAoK --------------cbwMnRdFkWr6IdWoYmUr9TTK Content-Type: text/x-patch; charset=UTF-8; name="v12-0001-Use-time-stamp-counter-to-measure-time-on-Linux-x86.patch" Content-Disposition: attachment; filename*0="v12-0001-Use-time-stamp-counter-to-measure-time-on-Linux-x86"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSA0MTA0NDgwYmVlMzE2MWQxMzM4ZjI1M2QzZTJkZWZlNDE4ZDUzNzhhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpE YXRlOiBGcmksIDI1IEp1bCAyMDI1IDE3OjU3OjIwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAx LzJdIFVzZSB0aW1lIHN0YW1wIGNvdW50ZXIgdG8gbWVhc3VyZSB0aW1lIG9uIExpbnV4L3g4 NgoKV2Ugc3dpdGNoIHRvIHVzaW5nIHRoZSB0aW1lIHN0YW1wIGNvdW50ZXIgKFRTQykgaW5z dGVhZCBvZiBjbG9ja19nZXR0aW1lKCkKdG8gcmVkdWNlIG92ZXJoZWFkIG9mIEVYUExBSU4g KEFOQUxZWkUsIFRJTUUgT04pLiBUZXN0cyBzaG93ZWQgdGhhdCBydW50aW1lCmlzIHJlZHVj ZWQgYnkgYXJvdW5kIDEwJSBmb3IgcXVlcmllcyBtb3ZpbmcgbG90cyBvZiByb3dzIHRocm91 Z2ggdGhlIHBsYW4uCgpGb3Igbm93IHRoaXMgaXMgb25seSBlbmFibGVkIG9uIExpbnV4L3g4 NiwgaW4gY2FzZSB0aGUgc3lzdGVtIGNsb2Nrc291cmNlIGlzCnJlcG9ydGVkIGFzIFRTQy4g UmVseWluZyBvbiB0aGUgTGludXgga2VybmVsIHNpbXBsaWZpZXMgdGhlIGxvZ2ljIHRvIGRl dGVjdAppZiB0aGUgcHJlc2VudCBUU0MgaXMgdXNhYmxlIChmcmVxdWVuY3kgaW52YXJpYW50 LCBzeW5jaHJvbml6ZWQgYmV0d2Vlbgpzb2NrZXRzLCBldGMuKS4gSW4gYWxsIG90aGVyIGNh c2VzIHdlIGZhbGxiYWNrIHRvIGNsb2NrX2dldHRpbWUoKS4KCk5vdGUsIHRoYXQgd2UgaW50 ZW50aW9uYWxseSB1c2UgUkRUU0MgaW4gdGhlIGZhc3QgcGF0aHMsIHJhdGhlciB0aGFuIFJE VFNDUC4KUkRUU0NQIHdhaXRzIGZvciBvdXRzdGFuZGluZyBpbnN0cnVjdGlvbnMgdG8gcmV0 aXJlIG9uIG91dC1vZi1vcmRlciBDUFVzLgpUaGlzIGFkZHMgbm90aWNhYmx5IGZvciBsaXR0 bGUgYmVuZWZpdCBpbiB0aGUgdHlwaWNhbCBJbnN0clN0YXJ0Tm9kZSgpIC8KSW5zdHJTdG9w Tm9kZSgpIHVzZSBjYXNlLiBUaGUgbWFjcm8gdG8gYmUgdXNlZCBpbiBzdWNoIGNhc2VzIGlz IGNhbGxlZApJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1QoKS4gVGhlIG9yaWdpbmFsIG1h Y3JvIElOU1RSX1RJTUVfU0VUX0NVUlJFTlQoKQp1c2VzIFJEVFNDUCBhbmQgaXMgc3VwcG9z ZWQgdG8gYmUgdXNlZCB3aGVuIHByZWNpc2lvbiBpcyBtb3JlIGltcG9ydGFudAp0aGFuIHBl cmZvcm1hbmNlLgoKQXV0aG9yOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNvbT4K QXV0aG9yOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkF1dGhvcjogTHVr YXMgRml0dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246IGh0 dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC8yMDIwMDYxMjIzMjgx MC5mNDZuYnFrZGhidXR6cWRnJTQwYWxhcDMuYW5hcmF6ZWwuZGUKLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2luc3RydW1lbnQuYyAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9w b3N0aW5pdC5jICAgIHwgICAzICsKIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgICAgICAg ICAgICB8ICAgMyArCiBzcmMvYmluL3BzcWwvc3RhcnR1cC5jICAgICAgICAgICAgICAgfCAg IDQgKwogc3JjL2NvbW1vbi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9jb21tb24vaW5zdHJfdGltZS5jICAgICAgICAgICAgICB8IDIwNiArKysrKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy9jb21tb24vbWVzb24uYnVpbGQgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9wb3J0YWJpbGl0eS9pbnN0cl90aW1lLmggfCAxMzYgKysr KysrKysrKysrKysrLS0tCiA5IGZpbGVzIGNoYW5nZWQsIDM0OCBpbnNlcnRpb25zKCspLCAy MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvY29tbW9uL2luc3RyX3Rp bWUuYwoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA2NWJiMDU2 OGE4Ni4uM2YyOTFhMzE1YTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKQEAgLTM0MTUsOCArMzQxNSw4IEBAIGNvdW50X25vbmRlbGV0YWJsZV9wYWdlcyhMVlJl bFN0YXRlICp2YWNyZWwsIGJvb2wgKmxvY2tfd2FpdGVyX2RldGVjdGVkKQogCQkJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChjdXJyZW50dGltZSk7CiAJCQllbGFwc2VkID0gY3VycmVudHRp bWU7CiAJCQlJTlNUUl9USU1FX1NVQlRSQUNUKGVsYXBzZWQsIHN0YXJ0dGltZSk7Ci0JCQlp ZiAoKElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGVsYXBzZWQpIC8gMTAwMCkKLQkJCQk+PSBW QUNVVU1fVFJVTkNBVEVfTE9DS19DSEVDS19JTlRFUlZBTCkKKwkJCWlmIChJTlNUUl9USU1F X0dFVF9NSUxMSVNFQyhlbGFwc2VkKSA+PQorCQkJCVZBQ1VVTV9UUlVOQ0FURV9MT0NLX0NI RUNLX0lOVEVSVkFMKQogCQkJewogCQkJCWlmIChMb2NrSGFzV2FpdGVyc1JlbGF0aW9uKHZh Y3JlbC0+cmVsLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKSkKIAkJCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9pbnN0cnVtZW50LmMKaW5kZXggOWUxMWM2NjJhN2MuLjM5NDBiNTlkNzBjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC02Nyw5ICs2NywxMyBAQCBJbnN0ckluaXQo SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHZvaWQK IEluc3RyU3RhcnROb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JaWYgKGluc3Ry LT5uZWVkX3RpbWVyICYmCi0JCSFJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0xBWlkoaW5zdHIt PnN0YXJ0dGltZSkpCi0JCWVsb2coRVJST1IsICJJbnN0clN0YXJ0Tm9kZSBjYWxsZWQgdHdp Y2UgaW4gYSByb3ciKTsKKwlpZiAoaW5zdHItPm5lZWRfdGltZXIpCisJeworCQlpZiAoIUlO U1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKKwkJCWVsb2coRVJST1IsICJJ bnN0clN0YXJ0Tm9kZSBjYWxsZWQgdHdpY2UgaW4gYSByb3ciKTsKKwkJZWxzZQorCQkJSU5T VFJfVElNRV9TRVRfQ1VSUkVOVF9GQVNUKGluc3RyLT5zdGFydHRpbWUpOworCX0KIAogCS8q IHNhdmUgYnVmZmVyIHVzYWdlIHRvdGFscyBhdCBub2RlIGVudHJ5LCBpZiBuZWVkZWQgKi8K IAlpZiAoaW5zdHItPm5lZWRfYnVmdXNhZ2UpCkBAIC05NSw3ICs5OSw3IEBAIEluc3RyU3Rv cE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCiAJCWlmIChJ TlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpCiAJCQllbG9nKEVSUk9SLCAi SW5zdHJTdG9wTm9kZSBjYWxsZWQgd2l0aG91dCBzdGFydCIpOwogCi0JCUlOU1RSX1RJTUVf U0VUX0NVUlJFTlQoZW5kdGltZSk7CisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlRfRkFTVChl bmR0aW1lKTsKIAkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBlbmR0 aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKIAogCQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3Ry LT5zdGFydHRpbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0 aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDk4Zjk1 OThjZDc4Li44NDVjMGQwZTRmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpA QCAtODA2LDYgKzgwNiw5IEBAIEluaXRQb3N0Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUs IE9pZCBkYm9pZCwKIAkvKiBJbml0aWFsaXplIHBvcnRhbCBtYW5hZ2VyICovCiAJRW5hYmxl UG9ydGFsTWFuYWdlcigpOwogCisJLyogaW5pdGlhbGl6ZSBoaWdoLXByZWNpc2lvbiBpbnRl cnZhbCB0aW1pbmcgKi8KKwlJTlNUUl9USU1FX0lOSVRJQUxJWkUoKTsKKwogCS8qCiAJICog TG9hZCByZWxjYWNoZSBlbnRyaWVzIGZvciB0aGUgc2hhcmVkIHN5c3RlbSBjYXRhbG9ncy4g IFRoaXMgbXVzdCBjcmVhdGUKIAkgKiBhdCBsZWFzdCBlbnRyaWVzIGZvciBwZ19kYXRhYmFz ZSBhbmQgY2F0YWxvZ3MgdXNlZCBmb3IgYXV0aGVudGljYXRpb24uCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpp bmRleCA2ODc3NGE1OWVmZC4uMmZmMDk0YTA5M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNzMz NCw2ICs3MzM0LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWluaXRSYW5k b21TdGF0ZSgmc3RhdGVbaV0uY3NfZnVuY19ycyk7CiAJfQogCisJLyogaW5pdGlhbGl6ZSBo aWdoLXByZWNpc2lvbiBpbnRlcnZhbCB0aW1pbmcgKi8KKwlJTlNUUl9USU1FX0lOSVRJQUxJ WkUoKTsKKwogCS8qIG9wZW5pbmcgY29ubmVjdGlvbi4uLiAqLwogCWNvbiA9IGRvQ29ubmVj dCgpOwogCWlmIChjb24gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9zdGFy dHVwLmMgYi9zcmMvYmluL3BzcWwvc3RhcnR1cC5jCmluZGV4IDI0OWI2YWE1MTY5Li5kNjE1 ZGY1OTNjNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYworKysgYi9zcmMv YmluL3BzcWwvc3RhcnR1cC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiaGVscC5o IgogI2luY2x1ZGUgImlucHV0LmgiCiAjaW5jbHVkZSAibWFpbmxvb3AuaCIKKyNpbmNsdWRl ICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAic2V0dGluZ3MuaCIKIAog LyoKQEAgLTMyNyw2ICszMjgsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAK IAlQUXNldE5vdGljZVByb2Nlc3Nvcihwc2V0LmRiLCBOb3RpY2VQcm9jZXNzb3IsIE5VTEwp OwogCisJLyogaW5pdGlhbGl6ZSBoaWdoLXByZWNpc2lvbiBpbnRlcnZhbCB0aW1pbmcgKi8K KwlJTlNUUl9USU1FX0lOSVRJQUxJWkUoKTsKKwogCVN5bmNWYXJpYWJsZXMoKTsKIAogCWlm IChvcHRpb25zLmxpc3RfZGJzKQpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9NYWtlZmlsZSBi L3NyYy9jb21tb24vTWFrZWZpbGUKaW5kZXggMmM3MjBjYWE1MDkuLjFhMmZiYmU4ODdmIDEw MDY0NAotLS0gYS9zcmMvY29tbW9uL01ha2VmaWxlCisrKyBiL3NyYy9jb21tb24vTWFrZWZp bGUKQEAgLTU5LDYgKzU5LDcgQEAgT0JKU19DT01NT04gPSBcCiAJZmlsZV9wZXJtLm8gXAog CWZpbGVfdXRpbHMubyBcCiAJaGFzaGZuLm8gXAorCWluc3RyX3RpbWUubyBcCiAJaXAubyBc CiAJanNvbmFwaS5vIFwKIAlrZXl3b3Jkcy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24v aW5zdHJfdGltZS5jIGIvc3JjL2NvbW1vbi9pbnN0cl90aW1lLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZkZjQ3Njk5ZjIwCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL2NvbW1vbi9pbnN0cl90aW1lLmMKQEAgLTAsMCArMSwyMDYgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIGluc3RyX3RpbWUuYworICoJICAgTm9uLWlubGluZSBw YXJ0cyBvZiB0aGUgcG9ydGFibGUgaGlnaC1wcmVjaXNpb24gaW50ZXJ2YWwgdGltaW5nCisg KgkgaW1wbGVtZW50YXRpb24KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjUs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoKKyAqIElERU5U SUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3BvcnQvaW5zdHJfdGltZS5jCisgKgorICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaWYg ZGVmaW5lZChIQVZFX19HRVRfQ1BVSUQpIHx8IChkZWZpbmVkKEhBVkVfX0NQVUlERVgpICYm ICFkZWZpbmVkKF9NU0NfVkVSKSkKKyNpbmNsdWRlIDxjcHVpZC5oPgorI2VuZGlmCisKKyNp ZiBkZWZpbmVkKEhBVkVfX0NQVUlEKSB8fCAoZGVmaW5lZChIQVZFX19DUFVJREVYKSAmJiBk ZWZpbmVkKF9NU0NfVkVSKSkKKyNpbmNsdWRlIDxpbnRyaW4uaD4KKyNlbmRpZgorCisjaW5j bHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgorCisjaWZuZGVmIFdJTjMyCisvKgor ICogU3RvcmVzIHdoYXQgdGhlIG51bWJlciBvZiBjeWNsZXMgbmVlZHMgdG8gYmUgbXVsdGlw bGllZCB3aXRoIHRvIGVuZCB1cAorICogd2l0aCBuYW5vc2Vjb25kcyB1c2luZyBpbnRlZ2Vy IG1hdGguIFNlZSBjb21tZW50IGluIHBnX2luaXRpYWxpemVfcmR0c2MoKQorICogZm9yIG1v cmUgZGV0YWlscy4KKyAqCisgKiBCeSBkZWZhdWx0IGFzc3VtZSB3ZSBhcmUgdXNpbmcgY2xv Y2tfZ2V0dGltZSgpIGFzIGEgZmFsbGJhY2sgd2hpY2ggdXNlcworICogbmFub3NlY29uZHMg YXMgdGlja3MuIEhlbmNlLCB3ZSBzZXQgdGhlIG11bHRpcGxpZXIgdG8gdGhlIHByZWNpc2lv biBzY2FsYXIKKyAqIHNvIHRoYXQgdGhlIGRpdmlzaW9uIGluIElOU1RSX1RJTUVfR0VUX05B Tk9TRUMoKSB3b24ndCBjaGFuZ2UgdGhlIG5hbm9zZWNvbmRzLgorICoKKyAqIFdoZW4gdXNp bmcgdGhlIFJEVFNDIGluc3RydWN0aW9uIGRpcmVjdGx5IHRoaXMgaXMgZmlsbGVkIGluIGR1 cmluZyBpbml0aWFsaXphdGlvbgorICogYmFzZWQgb24gdGhlIHJlbGV2YW50IENQVUlEIGZp ZWxkcy4KKyAqLworaW50NjQJCXRpY2tzX3Blcl9uc19zY2FsZWQgPSBUSUNLU19UT19OU19Q UkVDSVNJT047CitpbnQ2NAkJdGlja3NfcGVyX3NlYyA9IE5TX1BFUl9TOworaW50NjQJCW1h eF90aWNrc19ub19vdmVyZmxvdyA9IFBHX0lOVDY0X01BWCAvIFRJQ0tTX1RPX05TX1BSRUNJ U0lPTjsKKworI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18p CisvKgorICogSW5kaWNhdGVzIGlmIFJEVFNDIGNhbiBiZSB1c2VkIChMaW51eC94ODYgb25s eSwgd2hlbiBPUyB1c2VzIFRTQyBjbG9ja3NvdXJjZSkKKyAqLworYm9vbAkJaGFzX3JkdHNj ID0gZmFsc2U7CisKKy8qCisgKiBJbmRpY2F0ZXMgaWYgUkRUU0NQIGNhbiBiZSB1c2VkLiBU cnVlIGlmIFJEVFNDIGNhbiBiZSB1c2VkIGFuZCBSRFRTQ1AgaXMgYXZhaWxhYmxlLgorICov Citib29sCQloYXNfcmR0c2NwID0gZmFsc2U7CisKKyNkZWZpbmUgQ1BVSURfSFlQRVJWSVNP Ul9WTVdBUkUod29yZHMpICh3b3Jkc1sxXSA9PSAweDYxNzc0ZDU2ICYmIHdvcmRzWzJdID09 IDB4NGQ1NjY1NzIgJiYgd29yZHNbM10gPT0gMHg2NTcyNjE3NykgLyogVk13YXJlVk13YXJl ICovCisjZGVmaW5lIENQVUlEX0hZUEVSVklTT1JfS1ZNKHdvcmRzKSAod29yZHNbMV0gPT0g MHg0YjRkNTY0YiAmJiB3b3Jkc1syXSA9PSAweDU2NGI0ZDU2ICYmIHdvcmRzWzNdID09IDB4 MDAwMDAwNGQpCS8qIEtWTUtWTUtWTSAqLworCitzdGF0aWMgYm9vbAorZ2V0X3RzY19mcmVx dWVuY3lfa2h6KHVpbnQzMiAqdHNjX2ZyZXEpCit7CisJdWludDMyCQlyWzRdID0gezAsIDAs IDAsIDB9OworCisjaWYgZGVmaW5lZChIQVZFX19HRVRfQ1BVSUQpCisJX19nZXRfY3B1aWQo MHgxNSwgJnJbMF0gLyogZGVub21pbmF0b3IgKi8gLCAmclsxXSAvKiBudW1lcmF0b3IgKi8g LCAmclsyXSAvKiBoeiAqLyAsICZyWzNdKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9fQ1BVSUQp CisJX19jcHVpZChyLCAweDE1KTsKKyNlbHNlCisjZXJyb3IgY3B1aWQgaW5zdHJ1Y3Rpb24g bm90IGF2YWlsYWJsZQorI2VuZGlmCisKKwlpZiAoclsyXSA+IDApCisJeworCQlpZiAoclsw XSA9PSAwIHx8IHJbMV0gPT0gMCkKKwkJCXJldHVybiBmYWxzZTsKKworCQkqdHNjX2ZyZXEg PSByWzJdIC8gMTAwMCAqIHJbMV0gLyByWzBdOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkv KiBTb21lIENQVXMgb25seSByZXBvcnQgZnJlcXVlbmN5IGluIDE2SCAqLworCisjaWYgZGVm aW5lZChIQVZFX19HRVRfQ1BVSUQpCisJX19nZXRfY3B1aWQoMHgxNiwgJnJbMF0gLyogYmFz ZV9taHogKi8gLCAmclsxXSwgJnJbMl0sICZyWzNdKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9f Q1BVSUQpCisJX19jcHVpZChyLCAweDE2KTsKKyNlbHNlCisjZXJyb3IgY3B1aWQgaW5zdHJ1 Y3Rpb24gbm90IGF2YWlsYWJsZQorI2VuZGlmCisKKwlpZiAoclswXSA+IDApCisJeworCQkq dHNjX2ZyZXEgPSByWzBdICogMTAwMDsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkg KiBDaGVjayBpZiB3ZSBoYXZlIGEgS1ZNIG9yIFZNd2FyZSBIeXBlcnZpc29yIHBhc3Npbmcg ZG93biBUU0MgZnJlcXVlbmN5CisJICogdG8gdXMgaW4gYSBndWVzdCBWTQorCSAqCisJICog Tm90ZSB0aGF0IGFjY2Vzc2luZyB0aGUgMHg0MDAwMDAwMCBsZWFmIGZvciBIeXBlcnZpc29y IGluZm8gcmVxdWlyZXMKKwkgKiB1c2Ugb2YgX19jcHVpZGV4IHRvIHNldCBFQ1ggdG8gMC4g VGhlIHNpbWlsYXIgX19nZXRfY3B1aWRfY291bnQKKwkgKiBmdW5jdGlvbiBkb2VzIG5vdCB3 b3JrIGFzIGV4cGVjdGVkIHNpbmNlIGl0IGNvbnRhaW5zIGEgY2hlY2sgZm9yCisJICogX19n ZXRfY3B1aWRfbWF4LCB3aGljaCBoYXMgYmVlbiBvYnNlcnZlZCB0byBiZSBsb3dlciB0aGFu IHRoZSBzcGVjaWFsCisJICogSHlwZXJ2aXNvciBsZWFmLgorCSAqLworI2lmIGRlZmluZWQo SEFWRV9fQ1BVSURFWCkKKwlfX2NwdWlkZXgoKGludDMyICopIHIsIDB4NDAwMDAwMDAsIDAp OworCWlmIChyWzBdID49IDB4NDAwMDAwMTAgJiYgKENQVUlEX0hZUEVSVklTT1JfVk1XQVJF KHIpIHx8IENQVUlEX0hZUEVSVklTT1JfS1ZNKHIpKSkKKwl7CisJCV9fY3B1aWRleCgoaW50 MzIgKikgciwgMHg0MDAwMDAxMCwgMCk7CisJCWlmIChyWzBdID4gMCkKKwkJeworCQkJKnRz Y19mcmVxID0gclswXTsKKwkJCXJldHVybiB0cnVlOworCQl9CisJfQorI2VuZGlmCisKKwly ZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sCitpc19yZHRzY3BfYXZhaWxhYmxlKCkK K3sKKwl1aW50MzIJCXJbNF0gPSB7MCwgMCwgMCwgMH07CisKKyNpZiBkZWZpbmVkKEhBVkVf X0dFVF9DUFVJRCkKKwlpZiAoIV9fZ2V0X2NwdWlkKDB4ODAwMDAwMDEsICZyWzBdLCAmclsx XSwgJnJbMl0sICZyWzNdKSkKKwkJcmV0dXJuIGZhbHNlOworI2VsaWYgZGVmaW5lZChIQVZF X19DUFVJRCkKKwlfX2NwdWlkKHIsIDB4ODAwMDAwMDEpOworI2Vsc2UKKyNlcnJvciBjcHVp ZCBpbnN0cnVjdGlvbiBub3QgYXZhaWxhYmxlCisjZW5kaWYKKworCXJldHVybiAoclszXSAm ICgxIDw8IDI3KSkgIT0gMDsKK30KKworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHdlIHVzZSB0 aGUgUkRUU0MgaW5zdHJ1Y3Rpb24gYXQgcnVudGltZSwgZm9yIExpbnV4L3g4NiwKKyAqIGlu c3RlYWQgb2YgaW5jdXJyaW5nIHRoZSBvdmVyaGVhZCBvZiBhIGZ1bGwgY2xvY2tfZ2V0dGlt ZSgpIGNhbGwuCisgKgorICogVGhpcyBjYW4ndCBiZSByZWxpYWJseSBkZXRlcm1pbmVkIGF0 IGNvbXBpbGUgdGltZSwgc2luY2UgdGhlCisgKiBhdmFpbGFiaWxpdHkgb2YgYW4gImludmFy aWFudCIgVFNDICh0aGF0IGlzIG5vdCBhZmZlY3RlZCBieSBDUFUKKyAqIGZyZXF1ZW5jeSBj aGFuZ2VzKSBpcyBkZXBlbmRlbnQgb24gdGhlIENQVSBhcmNoaXRlY3R1cmUuIEFkZGl0aW9u YWxseSwKKyAqIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSBUU0MgYXZhaWxhYmlsaXR5IGlzIGlt cGFjdGVkIGJ5IHZpcnR1YWxpemF0aW9uLAorICogd2hlcmUgYSBzaW1wbGUgY3B1aWQgZmVh dHVyZSBjaGVjayB3b3VsZCBub3QgYmUgZW5vdWdoLgorICoKKyAqIFNpbmNlIExpbnV4IGFs cmVhZHkgZG9lcyBhIHNpZ25pZmljYW50IGFtb3VudCBvZiB3b3JrIHRvIGRldGVybWluZQor ICogd2hldGhlciBUU0MgaXMgYSB2aWFibGUgY2xvY2sgc291cmNlLCBkZWNpZGUgYmFzZWQg b24gdGhhdC4KKyAqLwordm9pZAorcGdfaW5pdGlhbGl6ZV9yZHRzYyh2b2lkKQoreworCUZJ TEUJICAgKmZwID0gZm9wZW4oIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY2xvY2tzb3VyY2UvY2xv Y2tzb3VyY2UwL2N1cnJlbnRfY2xvY2tzb3VyY2UiLCAiciIpOworCisJaWYgKGZwKQorCXsK KwkJY2hhcgkJYnVmWzEyOF07CisKKwkJaWYgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZw KSAhPSBOVUxMICYmIHN0cmNtcChidWYsICJ0c2NcbiIpID09IDApCisJCXsKKwkJCS8qCisJ CQkgKiBDb21wdXRlIGJhc2VsaW5lIENQVSBwZWZvcm1hbmNlLCBkZXRlcm1pbmVzIHNwZWVk IGF0IHdoaWNoCisJCQkgKiBSRFRTQyBhZHZhbmNlcy4KKwkJCSAqLworCQkJdWludDMyCQl0 c2NfZnJlcTsKKworCQkJaWYgKGdldF90c2NfZnJlcXVlbmN5X2toeigmdHNjX2ZyZXEpKQor CQkJeworCQkJCS8qCisJCQkJICogVGlja3MgdG8gbmFub3NlY29uZHMgY29udmVyc2lvbiBy ZXF1aXJlcyBmbG9hdGluZyBwb2ludAorCQkJCSAqIG1hdGggYmVjYXVzZSBiZWNhdXNlOgor CQkJCSAqCisJCQkJICogc2VjID0gdGlja3MgLyBmcmVxdWVuY3lfaHogbnMgID0gdGlja3Mg LyBmcmVxdWVuY3lfaHogKgorCQkJCSAqIDEsMDAwLDAwMCwwMDAgbnMgID0gdGlja3MgKiAo MSwwMDAsMDAwLDAwMCAvIGZyZXF1ZW5jeV9oeikKKwkJCQkgKiBucyAgPSB0aWNrcyAqICgx LDAwMCwwMDAgLyBmcmVxdWVuY3lfa2h6KSA8LS0gbm93IGluCisJCQkJICoga2lsb2hlcnR6 CisJCQkJICoKKwkJCQkgKiBIZXJlLCAnbnMnIGlzIHVzdWFsbHkgYSBmbG9hdGluZyBudW1i ZXIuIEZvciBleGFtcGxlIGZvciBhCisJCQkJICogMi41IEdIeiBDUFUgdGhlIHNjYWxpbmcg ZmFjdG9yIGJlY29tZXMgMSwwMDAsMDAwIC8KKwkJCQkgKiAyLDUwMCwwMDAgPSAxLjIuCisJ CQkJICoKKwkJCQkgKiBUbyBiZSBhYmxlIHRvIHVzZSBpbnRlZ2VyIG1hdGggd2Ugd29yayBh cm91bmQgdGhlIGxhY2sgb2YKKwkJCQkgKiBwcmVjaXNpb24uIFdlIGZpcnN0IHNjYWxlIHRo ZSBpbnRlZ2VyIHVwIGFuZCBhZnRlciB0aGUKKwkJCQkgKiBtdWx0aXBsaWNhdGlvbiBieSB0 aGUgbnVtYmVyIG9mIHRpY2tzIGluCisJCQkJICogSU5TVFJfVElNRV9HRVRfTkFOT1NFQygp IHdlIGRpdmlkZSBhZ2FpbiBieSB0aGUgc2FtZSB2YWx1ZS4KKwkJCQkgKiBXZSBwaWNrZWQg dGhlIHNjYWxlciBzdWNoIHRoYXQgaXQgcHJvdmlkZXMgZW5vdWdoIHByZWNpc2lvbgorCQkJ CSAqIGFuZCBpcyBhIHBvd2VyLW9mLXR3byB3aGljaCBhbGxvd3MgZm9yIHNoaWZ0aW5nIGlu c3RlYWQgb2YKKwkJCQkgKiBkb2luZyBhbiBpbnRlZ2VyIGRpdmlzaW9uLgorCQkJCSAqLwor CQkJCXRpY2tzX3Blcl9uc19zY2FsZWQgPSBJTlQ2NENPTlNUKDEwMDAwMDApICogVElDS1Nf VE9fTlNfUFJFQ0lTSU9OIC8gdHNjX2ZyZXE7CisJCQkJdGlja3NfcGVyX3NlYyA9IHRzY19m cmVxICogMTAwMDsJLyogS0h6LT5IeiAqLworCQkJCW1heF90aWNrc19ub19vdmVyZmxvdyA9 IFBHX0lOVDY0X01BWCAvIHRpY2tzX3Blcl9uc19zY2FsZWQ7CisKKwkJCQloYXNfcmR0c2Mg PSB0cnVlOworCQkJCWhhc19yZHRzY3AgPSBpc19yZHRzY3BfYXZhaWxhYmxlKCk7CisJCQl9 CisJCX0KKworCQlmY2xvc2UoZnApOworCX0KK30KKyNlbmRpZgkJCQkJCQkvKiBkZWZpbmVk KF9feDg2XzY0X18pICYmIGRlZmluZWQoX19saW51eF9fKSAqLworCisjZW5kaWYJCQkJCQkJ LyogV0lOMzIgKi8KZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vbWVzb24uYnVpbGQgYi9zcmMv Y29tbW9uL21lc29uLmJ1aWxkCmluZGV4IDE1NDBiYTY3Y2NhLi42MmI5MGIzZTYwOSAxMDA2 NDQKLS0tIGEvc3JjL2NvbW1vbi9tZXNvbi5idWlsZAorKysgYi9zcmMvY29tbW9uL21lc29u LmJ1aWxkCkBAIC0xMyw2ICsxMyw3IEBAIGNvbW1vbl9zb3VyY2VzID0gZmlsZXMoCiAgICdm aWxlX3Blcm0uYycsCiAgICdmaWxlX3V0aWxzLmMnLAogICAnaGFzaGZuLmMnLAorICAnaW5z dHJfdGltZS5jJywKICAgJ2lwLmMnLAogICAnanNvbmFwaS5jJywKICAgJ2tleXdvcmRzLmMn LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIGIv c3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCmluZGV4IGY3MWE4NTFiMThk Li5lMmUzMzlhMGM0ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5z dHJfdGltZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BvcnRhYmlsaXR5L2luc3RyX3RpbWUuaApA QCAtNCw5ICs0LDExIEBACiAgKgkgIHBvcnRhYmxlIGhpZ2gtcHJlY2lzaW9uIGludGVydmFs IHRpbWluZwogICoKICAqIFRoaXMgZmlsZSBwcm92aWRlcyBhbiBhYnN0cmFjdGlvbiBsYXll ciB0byBoaWRlIHBvcnRhYmlsaXR5IGlzc3VlcyBpbgotICogaW50ZXJ2YWwgdGltaW5nLiAg T24gVW5peCB3ZSB1c2UgY2xvY2tfZ2V0dGltZSgpLCBhbmQgb24gV2luZG93cyB3ZSB1c2UK LSAqIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCkuICBUaGVzZSBtYWNyb3MgYWxzbyBnaXZl IHNvbWUgYnJlYXRoaW5nIHJvb20gdG8KLSAqIHVzZSBvdGhlciBoaWdoLXByZWNpc2lvbi10 aW1pbmcgQVBJcy4KKyAqIGludGVydmFsIHRpbWluZy4gT24gTGludXgveDg2IHdlIHVzZSB0 aGUgcmR0c2MgaW5zdHJ1Y3Rpb24gd2hlbiBhIFRTQworICogY2xvY2tzb3VyY2UgaXMgYWxz byB1c2VkIG9uIHRoZSBob3N0IE9TLiAgT3RoZXJ3aXNlLCBhbmQgb24gb3RoZXIKKyAqIFVu aXgtbGlrZSBzeXN0ZW1zIHdlIHVzZSBjbG9ja19nZXR0aW1lKCkgYW5kIG9uIFdpbmRvd3Mg d2UgdXNlCisgKiBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigpLiBUaGVzZSBtYWNyb3MgYWxz byBnaXZlIHNvbWUgYnJlYXRoaW5nCisgKiByb29tIHRvIHVzZSBvdGhlciBoaWdoLXByZWNp c2lvbi10aW1pbmcgQVBJcy4KICAqCiAgKiBUaGUgYmFzaWMgZGF0YSB0eXBlIGlzIGluc3Ry X3RpbWUsIHdoaWNoIGFsbCBjYWxsZXJzIHNob3VsZCB0cmVhdCBhcyBhbgogICogb3BhcXVl IHR5cGVkZWYuICBpbnN0cl90aW1lIGNhbiBzdG9yZSBlaXRoZXIgYW4gYWJzb2x1dGUgdGlt ZSAob2YKQEAgLTE3LDEwICsxOSwxMSBAQAogICoKICAqIElOU1RSX1RJTUVfU0VUX1pFUk8o dCkJCQlzZXQgdCB0byB6ZXJvIChtZW1zZXQgaXMgYWNjZXB0YWJsZSB0b28pCiAgKgotICog SU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0KQkJc2V0IHQgdG8gY3VycmVudCB0aW1lCisgKiBJ TlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1QodCkJc2V0IHQgdG8gY3VycmVudCB0aW1lIHdp dGhvdXQgd2FpdGluZworICogCQkJCQkJCQkJZm9yIGluc3RydWN0aW9ucyBpbiBvdXQtb2Yt b3JkZXIgd2luZG93CiAgKgotICogSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9MQVpZKHQpCXNl dCB0IHRvIGN1cnJlbnQgdGltZSBpZiB0IGlzIHplcm8sCi0gKgkJCQkJCQkJCWV2YWx1YXRl cyB0byB3aGV0aGVyIHQgY2hhbmdlZAorICogSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0KQkJ c2V0IHQgdG8gY3VycmVudCB0aW1lIHdoaWxlIHdhaXRpbmcgZm9yCisgKiAJCQkJCQkJCQlp bnN0cnVjdGlvbnMgaW4gT09PIHRvIHJldGlyZQogICoKICAqIElOU1RSX1RJTUVfQUREKHgs IHkpCQkJCXggKz0geQogICoKQEAgLTgxLDYgKzg0LDE1IEBAIHR5cGVkZWYgc3RydWN0IGlu c3RyX3RpbWUKIAogI2lmbmRlZiBXSU4zMgogCisvKgorICogTWFrZSBzdXJlIHRoaXMgaXMg YSBwb3dlci1vZi10d28sIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNhbiB0dXJuIHRoZQorICog bXVsdGlwbGljYXRpb25zIGFuZCBkaXZpc2lvbnMgaW50byBzaGlmdHMuCisgKi8KKyNkZWZp bmUgVElDS1NfVE9fTlNfUFJFQ0lTSU9OICgxPDwxNCkKKworZXh0ZXJuIGludDY0IHRpY2tz X3Blcl9uc19zY2FsZWQ7CitleHRlcm4gaW50NjQgdGlja3NfcGVyX3NlYzsKK2V4dGVybiBp bnQ2NCBtYXhfdGlja3Nfbm9fb3ZlcmZsb3c7CiAKIC8qIFVzZSBjbG9ja19nZXR0aW1lKCkg Ki8KIApAQCAtMTA2LDkgKzExOCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBpbnN0cl90aW1lCiAj ZGVmaW5lIFBHX0lOU1RSX0NMT0NLCUNMT0NLX1JFQUxUSU1FCiAjZW5kaWYKIAotLyogaGVs cGVyIGZvciBJTlNUUl9USU1FX1NFVF9DVVJSRU5UICovCisjaWYgZGVmaW5lZChfX3g4Nl82 NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNp bmNsdWRlIDxjcHVpZC5oPgorCitleHRlcm4gYm9vbCBoYXNfcmR0c2M7CitleHRlcm4gYm9v bCBoYXNfcmR0c2NwOworCitleHRlcm4gdm9pZCBwZ19pbml0aWFsaXplX3JkdHNjKHZvaWQp OworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgaW5zdHJfdGltZQotcGdfY2xvY2tfZ2V0dGlt ZV9ucyh2b2lkKQorcGdfY2xvY2tfZ2V0dGltZSh2b2lkKQogewogCWluc3RyX3RpbWUJbm93 OwogCXN0cnVjdCB0aW1lc3BlYyB0bXA7CkBAIC0xMTksMTEgKzE0MCw5NCBAQCBwZ19jbG9j a19nZXR0aW1lX25zKHZvaWQpCiAJcmV0dXJuIG5vdzsKIH0KIAorc3RhdGljIGlubGluZSBp bnN0cl90aW1lCitwZ19nZXRfdGlja3NfZmFzdCh2b2lkKQoreworI2lmIGRlZmluZWQoX194 ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCisJaWYgKGhhc19yZHRzYykKKwl7CisJ CWluc3RyX3RpbWUJbm93OworCisJCW5vdy50aWNrcyA9IF9fcmR0c2MoKTsKKwkJcmV0dXJu IG5vdzsKKwl9CisjZW5kaWYKKworCXJldHVybiBwZ19jbG9ja19nZXR0aW1lKCk7Cit9CisK K3N0YXRpYyBpbmxpbmUgaW5zdHJfdGltZQorcGdfZ2V0X3RpY2tzKHZvaWQpCit7CisjaWYg ZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKKwlpZiAoaGFzX3Jk dHNjcCkKKwl7CisJCWluc3RyX3RpbWUJbm93OworCQl1aW50MzIJCXVudXNlZDsKKworCQlu b3cudGlja3MgPSBfX3JkdHNjcCgmdW51c2VkKTsKKwkJcmV0dXJuIG5vdzsKKwl9CisjZW5k aWYKKworCXJldHVybiBwZ19jbG9ja19nZXR0aW1lKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg aW50NjRfdAorcGdfdGlja3NfdG9fbnMoaW5zdHJfdGltZSB0KQoreworCS8qCisJICogV291 bGQgbXVsdGlwbGljYXRpb24gb3ZlcmZsb3c/IElmIHNvIHBlcmZvcm0gY29tcHV0YXRpb24g aW4gdHdvIHBhcnRzLgorCSAqIENoZWNrIG92ZXJmbG93IHdpdGhvdXQgYWN0dWFsbHkgb3Zl cmZsb3dpbmcgdmlhOiBhICogYiA+IG1heCA8PT4gYSA+CisJICogbWF4IC8gYgorCSAqLwor CWludDY0CQlucyA9IDA7CisKKwlpZiAodW5saWtlbHkodC50aWNrcyA+IG1heF90aWNrc19u b19vdmVyZmxvdykpCisJeworCQkvKgorCQkgKiBDb21wdXRlIGhvdyBvZnRlbiB0aGUgbWF4 aW11bSBudW1iZXIgb2YgdGlja3MgZml0cyBjb21wbGV0ZWx5IGludG8KKwkJICogdGhlIG51 bWJlciBvZiBlbGFwc2VkIHRpY2tzIGFuZCBjb252ZXJ0IHRoYXQgbnVtYmVyIGludG8KKwkJ ICogbmFub3NlY29uZHMuIFRoZW4gbXVsdGlwbHkgYnkgdGhlIGNvdW50IHRvIGFycml2ZSBh dCB0aGUgZmluYWwKKwkJICogdmFsdWUuIEluIGEgMm5kIHN0ZXAgd2UgYWRqdXN0IHRoZSBu dW1iZXIgb2YgZWxhcHNlZCB0aWNrcyBhbmQKKwkJICogY29udmVydCB0aGUgcmVtYWluaW5n IHRpY2tzLgorCQkgKi8KKwkJaW50NjQJCWNvdW50ID0gdC50aWNrcyAvIG1heF90aWNrc19u b19vdmVyZmxvdzsKKwkJaW50NjQJCW1heF9ucyA9IG1heF90aWNrc19ub19vdmVyZmxvdyAq IHRpY2tzX3Blcl9uc19zY2FsZWQgLyBUSUNLU19UT19OU19QUkVDSVNJT047CisKKwkJbnMg PSBtYXhfbnMgKiBjb3VudDsKKworCQkvKgorCQkgKiBTdWJ0cmFjdCB0aGUgdGlja3MgdGhh dCB3ZSBub3cgYWxyZWFkeSBhY2NvdW50ZWQgZm9yLCBzbyB0aGF0IHRoZXkKKwkJICogZG9u J3QgZ2V0IGNvdW50ZWQgdHdpY2UuCisJCSAqLworCQl0LnRpY2tzIC09IGNvdW50ICogbWF4 X3RpY2tzX25vX292ZXJmbG93OworCQlBc3NlcnQodC50aWNrcyA+PSAwKTsKKwl9CisKKwlu cyArPSB0LnRpY2tzICogdGlja3NfcGVyX25zX3NjYWxlZCAvIFRJQ0tTX1RPX05TX1BSRUNJ U0lPTjsKKwlyZXR1cm4gbnM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorcGdfaW5pdGlh bGl6ZV9nZXRfdGlja3MoKQoreworI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5l ZChfX2xpbnV4X18pCisJcGdfaW5pdGlhbGl6ZV9yZHRzYygpOworI2VuZGlmCit9CisKKyNk ZWZpbmUgSU5TVFJfVElNRV9JTklUSUFMSVpFKCkgXAorCXBnX2luaXRpYWxpemVfZ2V0X3Rp Y2tzKCkKKworI2RlZmluZSBJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1QodCkgXAorCSgo dCkgPSBwZ19nZXRfdGlja3NfZmFzdCgpKQorCiAjZGVmaW5lIElOU1RSX1RJTUVfU0VUX0NV UlJFTlQodCkgXAotCSgodCkgPSBwZ19jbG9ja19nZXR0aW1lX25zKCkpCisJKCh0KSA9IHBn X2dldF90aWNrcygpKQogCiAjZGVmaW5lIElOU1RSX1RJTUVfR0VUX05BTk9TRUModCkgXAot CSgoaW50NjQpICh0KS50aWNrcykKKwlwZ190aWNrc190b19ucyh0KQogCiAKICNlbHNlCQkJ CQkJCS8qIFdJTjMyICovCkBAIC0xMzEsNyArMjM1LDcgQEAgcGdfY2xvY2tfZ2V0dGltZV9u cyh2b2lkKQogCiAvKiBVc2UgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKSAqLwogCi0vKiBo ZWxwZXIgZm9yIElOU1RSX1RJTUVfU0VUX0NVUlJFTlQgKi8KKy8qIGhlbHBlciBmb3IgSU5T VFJfVElNRV9TRVRfQ1VSUkVOVCAvIElOU1RSX1RJTUVfU0VUX0NVUlJFTlRfRkFTVCAqLwog c3RhdGljIGlubGluZSBpbnN0cl90aW1lCiBwZ19xdWVyeV9wZXJmb3JtYW5jZV9jb3VudGVy KHZvaWQpCiB7CkBAIC0xNTMsNiArMjU3LDExIEBAIEdldFRpbWVyRnJlcXVlbmN5KHZvaWQp CiAJcmV0dXJuIChkb3VibGUpIGYuUXVhZFBhcnQ7CiB9CiAKKyNkZWZpbmUgSU5TVFJfVElN RV9JTklUSUFMSVpFKCkKKworI2RlZmluZSBJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0ZBU1Qo dCkgXAorCSgodCkgPSBwZ19xdWVyeV9wZXJmb3JtYW5jZV9jb3VudGVyKCkpCisKICNkZWZp bmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0KSBcCiAJKCh0KSA9IHBnX3F1ZXJ5X3BlcmZv cm1hbmNlX2NvdW50ZXIoKSkKIApAQCAtMTY4LDEzICsyNzcsOCBAQCBHZXRUaW1lckZyZXF1 ZW5jeSh2b2lkKQogCiAjZGVmaW5lIElOU1RSX1RJTUVfSVNfWkVSTyh0KQkoKHQpLnRpY2tz ID09IDApCiAKLQogI2RlZmluZSBJTlNUUl9USU1FX1NFVF9aRVJPKHQpCSgodCkudGlja3Mg PSAwKQogCi0jZGVmaW5lIElOU1RSX1RJTUVfU0VUX0NVUlJFTlRfTEFaWSh0KSBcCi0JKElO U1RSX1RJTUVfSVNfWkVSTyh0KSA/IElOU1RSX1RJTUVfU0VUX0NVUlJFTlQodCksIHRydWUg OiBmYWxzZSkKLQotCiAjZGVmaW5lIElOU1RSX1RJTUVfQUREKHgseSkgXAogCSgoeCkudGlj a3MgKz0gKHkpLnRpY2tzKQogCi0tIAoyLjUxLjAKCg== --------------cbwMnRdFkWr6IdWoYmUr9TTK--