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 1vR4NA-005ZHi-1M for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Dec 2025 08:07:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vR4N7-001aIH-31 for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Dec 2025 08:07:30 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vR4N7-001aI8-1C for pgsql-hackers@lists.postgresql.org; Thu, 04 Dec 2025 08:07:29 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vR4N4-0034Pf-0C for pgsql-hackers@postgresql.org; Thu, 04 Dec 2025 08:07:28 +0000 Received: by mail-wr1-x444.google.com with SMTP id ffacd0b85a97d-42e2ba54a6fso251244f8f.3 for ; Thu, 04 Dec 2025 00:07:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764835644; x=1765440444; 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=HONkc7oiyj7AI59LhMdhN/7wX5kr8CAkYZWfSny1dxU=; b=OJqXRHi19aiDHyJJ2zRiQ2bmmY8LtSC9TvPmJ3w4Fq4IqeEcsLSxwtBhNKMWEvU3CT IyIZIt1je14lYNaJSCXO4NqsI/KMaeiZZcuWVy4Guypu7kgxYVsPm6STHq+u3k3DY5iV pZnTjObXFNfidMgjaIQ6PNnmJCP0z60vP0rJEDKlEdzANF0E3RqduaBqkBSe9zx4hpeE qqQ4VT68Z1Ph19XSMh8uXXMZPce3Nl9aL2Tp7Pw6tslOo/nLzK3dl7i6fO9IOzUDvIVB A9E8XZJmDJ0dxSV9cMt/gfOQWYzpV3Nmn68bnZmGJJL2Vhk/0LIKIpQL6LF3Jg16uG97 WHRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764835644; x=1765440444; 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=HONkc7oiyj7AI59LhMdhN/7wX5kr8CAkYZWfSny1dxU=; b=L1jMN31VHEWCLlj8Gbb9gWfpb1YFOdFBHDL0rZRKeWhAyGgbTt2iF3nU4iy2m0j9qq fs+wVUkhDrcTYqmeinXeu3qz0ag/0lWE/+uzLaYwv85cqOK0laQxJP2MSB4XaNSe/ZJE rvezRAdGsdoSIm3I81BsolcjHvdNNXTcVqBhoDt/cN1Bs88eWRn2CFldGvbdcG6XVOeH 7MrmNmA29+qRn1bZUAJmBi7r2MaljdmsgaDxM2jSBX9CMyTu3fBPROtvJQvog6/5sZHY FyeTqiL2OTI6szI/UC1yVjv/QfOhph0/Kil7hfiVy+zWLncNOxWi653lmrV7GrKS+TG6 emmw== X-Forwarded-Encrypted: i=1; AJvYcCX7k8k/kwAq0pifTlufcgYXn+83PJTf6mAIWmlDYXO8N6IT3NFJCmez3zE6glj0W0StRf6rdYOdwTBDJinP@postgresql.org X-Gm-Message-State: AOJu0YxsgSG3wFY2Cmyj0tM6lQOEdNScqeQ47KM+Tnn5My+oJiffexsK 3GNnMWG0+VI8IDweRckIaBWv6xUIB8IsYkMjp+pKHzkpZ7a9R+NXQAnz X-Gm-Gg: ASbGncu2XZGsOEvpgeGht/PS2UK0JdN5GsIE+r5OwvnPaJ6M5RjiOVbYjv6SXavheN6 QZ0Ao8rCGn9JIV+2hWS71Qz0M6CHG9Z06cRWzIbMGKfQBo7eGRH1qWbJcuSN1/SMtGfy06sZfUO LjnIxh6tjqLGNy+uRiV/S+rajGPcgxlsKoJDgEmKa5We7IjVj33mdMsAR6qgGdhodef3g85s535 IXQg1IMimNMib3wlD1AqQ3cVN+8lYzoEQkTWGpRx4u5zFfUvawYis5Mj2OCP9PBixb1M7mbjgGn KU87OmmYL0hicsygmRqsTGIIw6VbOz4c+pjFxvmo45eNblzWxIoVqJCjXaSyET5PkYjbiLC7mV2 Nmn4x4+iSPKoJoqjMAIySLydS5OXwaS3a7V9J3L+cNs8G1oIciMhw9WoeKT2e+wTmm+dR1X5yG0 sfZKSHIUgFApXIFYI= X-Google-Smtp-Source: AGHT+IGIfl66XA2dLNJSz8ZZSh88ngPodxRJxxBIVv4wtcVG+Y5Vp6nHzqGFQu8wFQw05pqi1cE3WA== X-Received: by 2002:a05:6000:1886:b0:42b:3ed2:c08b with SMTP id ffacd0b85a97d-42f731cf4afmr4881342f8f.51.1764835643568; Thu, 04 Dec 2025 00:07:23 -0800 (PST) Received: from [192.168.2.32] ([165.225.27.7]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7cbff320sm1753399f8f.18.2025.12.04.00.07.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Dec 2025 00:07:22 -0800 (PST) Content-Type: multipart/mixed; boundary="------------yW4Fzi3Jq8GL8e0W7bmIUxxt" Message-ID: <3bd5074a-4d7c-4dc9-8c70-afbe3818a4b1@gmail.com> Date: Thu, 4 Dec 2025 09:07:20 +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> <5310b6e1-357b-4de0-9167-569dd7bb5807@gmail.com> Content-Language: en-US In-Reply-To: <5310b6e1-357b-4de0-9167-569dd7bb5807@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. --------------yW4Fzi3Jq8GL8e0W7bmIUxxt Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 03.12.2025 10:50, David Geier wrote: > 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. The last patch I sent was incomplete because I had missed committing my changes. Attached is now the patch with the changes to pg_test_timing. -- David Geier --------------yW4Fzi3Jq8GL8e0W7bmIUxxt Content-Type: text/x-patch; charset=UTF-8; name="v13-0002-pg_test_timing-Also-test-fast-timing-and-report-time.patch" Content-Disposition: attachment; filename*0="v13-0002-pg_test_timing-Also-test-fast-timing-and-report-tim"; filename*1="e.patch" Content-Transfer-Encoding: base64 RnJvbSBhNjM0NDUxYzA3MjA4ZmU5OWY2ODkzZjllZjlhNmVlNjIwY2NmNDFmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpE YXRlOiBTdW4sIDI3IEp1bCAyMDI1IDA4OjQ4OjQ4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAy LzJdIHBnX3Rlc3RfdGltaW5nOiBBbHNvIHRlc3QgZmFzdCB0aW1pbmcgYW5kIHJlcG9ydCB0 aW1lCiBzb3VyY2UKCkluIHBhc3NpbmcgYWxzbyByZWR1Y2UgdGhlIHBlci1sb29wIG92ZXJo ZWFkIGNhdXNlZCBieSByZXBlYXRlZCBkaXZpc2lvbnMKaW4gSU5TVFJfVElNRV9HRVRfTkFO T1NFQyB3aGVuIHRoZSB0aWNrcyB2YXJpYWJsZSBoYXMgYmVjb21lIHZlcnkgbGFyZ2UsCmlu c3RlYWQgZGlmZiBmaXJzdCBhbmQgdGhlbiB0dXJuIGl0IGludG8gbmFub3NlY3MuCi0tLQog c3JjL2Jpbi9wZ190ZXN0X3RpbWluZy9wZ190ZXN0X3RpbWluZy5jIHwgNzYgKysrKysrKysr KysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5o ICAgIHwgMzAgKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3NyBpbnNlcnRpb25zKCsp LCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Rlc3RfdGltaW5n L3BnX3Rlc3RfdGltaW5nLmMgYi9zcmMvYmluL3BnX3Rlc3RfdGltaW5nL3BnX3Rlc3RfdGlt aW5nLmMKaW5kZXggYTU2MjEyNTFhZmMuLjYyZTMwOGRkOTY1IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3Rlc3RfdGltaW5nL3BnX3Rlc3RfdGltaW5nLmMKKysrIGIvc3JjL2Jpbi9wZ190 ZXN0X3RpbWluZy9wZ190ZXN0X3RpbWluZy5jCkBAIC0zMCw3ICszMCw3IEBAIHN0YXRpYyBs b25nIGxvbmcgaW50IGxhcmdlc3RfZGlmZl9jb3VudDsKIAogCiBzdGF0aWMgdm9pZCBoYW5k bGVfYXJncyhpbnQgYXJnYywgY2hhciAqYXJndltdKTsKLXN0YXRpYyB1aW50NjQgdGVzdF90 aW1pbmcodW5zaWduZWQgaW50IGR1cmF0aW9uKTsKK3N0YXRpYyB1aW50NjQgdGVzdF90aW1p bmcodW5zaWduZWQgaW50IGR1cmF0aW9uLCBib29sIGZhc3RfdGltaW5nKTsKIHN0YXRpYyB2 b2lkIG91dHB1dCh1aW50NjQgbG9vcF9jb3VudCk7CiAKIGludApAQCAtNDMsMTAgKzQzLDIy IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWhhbmRsZV9hcmdzKGFyZ2Ms IGFyZ3YpOwogCi0JbG9vcF9jb3VudCA9IHRlc3RfdGltaW5nKHRlc3RfZHVyYXRpb24pOwot CisJLyoKKwkgKiBGaXJzdCwgdGVzdCBkZWZhdWx0IChub24tZmFzdCkgdGltaW5nIGNvZGUu IEEgY2xvY2sgc291cmNlIGZvciB0aGF0CisJICogaXMgYWx3YXlzIGF2YWlsYWJsZS4gSGVu Y2UsIHdlIGNhbiB1bmNvbmRpdGlvbmFsbHkgb3V0cHV0IHRoZSByZXN1bHQuCisJICovCisJ bG9vcF9jb3VudCA9IHRlc3RfdGltaW5nKHRlc3RfZHVyYXRpb24sIGZhbHNlKTsKIAlvdXRw dXQobG9vcF9jb3VudCk7CiAKKwkvKgorCSAqIFNlY29uZCwgdGVzdCB0aGUgZmFzdCB0aW1p bmcgY29kZS4gVGhpcyBjbG9jayBzb3VyY2UgaXMgbm90IGFsd2F5cworCSAqIGF2YWlsYWJs ZS4gSW4gdGhhdCBjYXNlIHRoZSBsb29wIGNvdW50IHdpbGwgYmUgMCBhbmQgd2UgZG9uJ3Qg cHJpbnQuCisJICovCisJIHByaW50ZigiXG4iKTsKKwlsb29wX2NvdW50ID0gdGVzdF90aW1p bmcodGVzdF9kdXJhdGlvbiwgdHJ1ZSk7CisJaWYgKGxvb3BfY291bnQgPiAwKQorCQlvdXRw dXQobG9vcF9jb3VudCk7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzgsNyArOTAsNyBAQCBo YW5kbGVfYXJncyhpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl9CiAJfQogCi0Jd2hpbGUg KChvcHRpb24gPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiZDpjOiIsCisJd2hpbGUgKChv cHRpb24gPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiZDpjOmY6IiwKIAkJCQkJCQkJIGxv bmdfb3B0aW9ucywgJm9wdGluZGV4KSkgIT0gLTEpCiAJewogCQlzd2l0Y2ggKG9wdGlvbikK QEAgLTE0MywyMyArMTU1LDQ0IEBAIGhhbmRsZV9hcmdzKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJCWV4aXQoMSk7CiAJfQogCi0JcHJpbnRmKG5nZXR0ZXh0KCJUZXN0aW5nIHRpbWlu ZyBvdmVyaGVhZCBmb3IgJXUgc2Vjb25kLlxuIiwKLQkJCQkJIlRlc3RpbmcgdGltaW5nIG92 ZXJoZWFkIGZvciAldSBzZWNvbmRzLlxuIiwKKwlwcmludGYobmdldHRleHQoIlRlc3Rpbmcg dGltaW5nIG92ZXJoZWFkIGZvciAldSBzZWNvbmQuXG5cbiIsCisJCQkJCSJUZXN0aW5nIHRp bWluZyBvdmVyaGVhZCBmb3IgJXUgc2Vjb25kcy5cblxuIiwKIAkJCQkJdGVzdF9kdXJhdGlv biksCiAJCSAgIHRlc3RfZHVyYXRpb24pOwogfQogCiBzdGF0aWMgdWludDY0Ci10ZXN0X3Rp bWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCit0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQg ZHVyYXRpb24sIGJvb2wgZmFzdF90aW1pbmcpCiB7CiAJdWludDY0CQl0b3RhbF90aW1lOwog CWludDY0CQl0aW1lX2VsYXBzZWQgPSAwOwogCXVpbnQ2NAkJbG9vcF9jb3VudCA9IDA7Ci0J dWludDY0CQlwcmV2LAotCQkJCWN1cjsKIAlpbnN0cl90aW1lCXN0YXJ0X3RpbWUsCiAJCQkJ ZW5kX3RpbWUsCi0JCQkJdGVtcDsKKwkJCQlwcmV2LAorCQkJCWN1cjsKKwljaGFyCSAgICp0 aW1lX3NvdXJjZSA9IE5VTEw7CisJYm9vbAkJZmFzdF90aW1pbmdfYXZhaWxhYmxlID0gZmFs c2U7CisKKwlJTlNUUl9USU1FX0lOSVRJQUxJWkUoKTsKKworI2lmICFkZWZpbmVkKFdJTjMy KSAmJiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19saW51eF9fKQorCWlmIChm YXN0X3RpbWluZyAmJiBoYXNfcmR0c2MpCisJeworCQl0aW1lX3NvdXJjZSA9ICJSRFRTQyI7 CisJCWZhc3RfdGltaW5nX2F2YWlsYWJsZSA9IHRydWU7CisJfQorCWVsc2UgaWYgKGhhc19y ZHRzY3ApCisJCXRpbWVfc291cmNlID0gIlJEVFNDUCI7CisJZWxzZQorCQl0aW1lX3NvdXJj ZSA9IFBHX0lOU1RSX0NMT0NLX05BTUU7CisjZWxzZQorCXRpbWVfc291cmNlID0gUEdfSU5T VFJfQ0xPQ0tfTkFNRTsKKyNlbmRpZgorCWlmIChmYXN0X3RpbWluZyAmJiAhZmFzdF90aW1p bmdfYXZhaWxhYmxlKQorCQlyZXR1cm4gMDsKKworCXByaW50ZihfKCJUaW1lIHNvdXJjZTog JXNcbiIpLCB0aW1lX3NvdXJjZSk7CiAKIAkvKgogCSAqIFByZS16ZXJvIHRoZSBzdGF0aXN0 aWNzIGRhdGEgc3RydWN0dXJlcy4gIFRoZXkncmUgYWxyZWFkeSB6ZXJvIGJ5CkBAIC0xNzMs OCArMjA2LDExIEBAIHRlc3RfdGltaW5nKHVuc2lnbmVkIGludCBkdXJhdGlvbikKIAogCXRv dGFsX3RpbWUgPSBkdXJhdGlvbiA+IDAgPyBkdXJhdGlvbiAqIElOVDY0Q09OU1QoMTAwMDAw MDAwMCkgOiAwOwogCi0JSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydF90aW1lKTsKLQlj dXIgPSBJTlNUUl9USU1FX0dFVF9OQU5PU0VDKHN0YXJ0X3RpbWUpOworCWlmIChmYXN0X3Rp bWluZykKKwkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9GQVNUKHN0YXJ0X3RpbWUpOworCWVs c2UKKwkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydF90aW1lKTsKKwljdXIgPSBzdGFy dF90aW1lOwogCiAJd2hpbGUgKHRpbWVfZWxhcHNlZCA8IHRvdGFsX3RpbWUpCiAJewpAQCAt MTgyLDkgKzIxOCwxMSBAQCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAJ CQkJCWJpdHM7CiAKIAkJcHJldiA9IGN1cjsKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0 ZW1wKTsKLQkJY3VyID0gSU5TVFJfVElNRV9HRVRfTkFOT1NFQyh0ZW1wKTsKLQkJZGlmZiA9 IGN1ciAtIHByZXY7CisJCWlmIChmYXN0X3RpbWluZykKKwkJCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlRfRkFTVChjdXIpOworCQllbHNlCisJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGN1 cik7CisJCWRpZmYgPSBJTlNUUl9USU1FX0RJRkZfTkFOT1NFQyhjdXIsIHByZXYpOwogCiAJ CS8qIERpZCB0aW1lIGdvIGJhY2t3YXJkcz8gKi8KIAkJaWYgKHVubGlrZWx5KGRpZmYgPCAw KSkKQEAgLTIxNywxMSArMjU1LDEzIEBAIHRlc3RfdGltaW5nKHVuc2lnbmVkIGludCBkdXJh dGlvbikKIAkJCWxhcmdlc3RfZGlmZl9jb3VudCsrOwogCiAJCWxvb3BfY291bnQrKzsKLQkJ SU5TVFJfVElNRV9TVUJUUkFDVCh0ZW1wLCBzdGFydF90aW1lKTsKLQkJdGltZV9lbGFwc2Vk ID0gSU5TVFJfVElNRV9HRVRfTkFOT1NFQyh0ZW1wKTsKKwkJdGltZV9lbGFwc2VkID0gSU5T VFJfVElNRV9ESUZGX05BTk9TRUMoY3VyLCBzdGFydF90aW1lKTsKIAl9CiAKLQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UKGVuZF90aW1lKTsKKwlpZiAoZmFzdF90aW1pbmcpCisJCUlOU1RS X1RJTUVfU0VUX0NVUlJFTlRfRkFTVChlbmRfdGltZSk7CisJZWxzZQorCQlJTlNUUl9USU1F X1NFVF9DVVJSRU5UKGVuZF90aW1lKTsKIAogCUlOU1RSX1RJTUVfU1VCVFJBQ1QoZW5kX3Rp bWUsIHN0YXJ0X3RpbWUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3J0YWJpbGl0 eS9pbnN0cl90aW1lLmggYi9zcmMvaW5jbHVkZS9wb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgK aW5kZXggZTJlMzM5YTBjNGYuLmYwMjI5NmYxMDI2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9ydGFiaWxp dHkvaW5zdHJfdGltZS5oCkBAIC0xMTIsMTAgKzExMiwxMyBAQCBleHRlcm4gaW50NjQgbWF4 X3RpY2tzX25vX292ZXJmbG93OwogICovCiAjaWYgZGVmaW5lZChfX2Rhcndpbl9fKSAmJiBk ZWZpbmVkKENMT0NLX01PTk9UT05JQ19SQVcpCiAjZGVmaW5lIFBHX0lOU1RSX0NMT0NLCUNM T0NLX01PTk9UT05JQ19SQVcKKyNkZWZpbmUgUEdfSU5TVFJfQ0xPQ0tfTkFNRQkiY2xvY2tf Z2V0dGltZSAoQ0xPQ0tfTU9OT1RPTklDX1JBVykiCiAjZWxpZiBkZWZpbmVkKENMT0NLX01P Tk9UT05JQykKICNkZWZpbmUgUEdfSU5TVFJfQ0xPQ0sJQ0xPQ0tfTU9OT1RPTklDCisjZGVm aW5lIFBHX0lOU1RSX0NMT0NLX05BTUUJImNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05J QykiCiAjZWxzZQogI2RlZmluZSBQR19JTlNUUl9DTE9DSwlDTE9DS19SRUFMVElNRQorI2Rl ZmluZSBQR19JTlNUUl9DTE9DS19OQU1FCSJjbG9ja19nZXR0aW1lIChDTE9DS19SRUFMVElN RSkiCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xp bnV4X18pCkBAIC0xNzQsNyArMTc3LDcgQEAgcGdfZ2V0X3RpY2tzKHZvaWQpCiB9CiAKIHN0 YXRpYyBpbmxpbmUgaW50NjRfdAotcGdfdGlja3NfdG9fbnMoaW5zdHJfdGltZSB0KQorcGdf dGlja3NfdG9fbnMoaW50NjQgdGlja3MpCiB7CiAJLyoKIAkgKiBXb3VsZCBtdWx0aXBsaWNh dGlvbiBvdmVyZmxvdz8gSWYgc28gcGVyZm9ybSBjb21wdXRhdGlvbiBpbiB0d28gcGFydHMu CkBAIC0xODMsNyArMTg2LDcgQEAgcGdfdGlja3NfdG9fbnMoaW5zdHJfdGltZSB0KQogCSAq LwogCWludDY0CQlucyA9IDA7CiAKLQlpZiAodW5saWtlbHkodC50aWNrcyA+IG1heF90aWNr c19ub19vdmVyZmxvdykpCisJaWYgKHVubGlrZWx5KHRpY2tzID4gbWF4X3RpY2tzX25vX292 ZXJmbG93KSkKIAl7CiAJCS8qCiAJCSAqIENvbXB1dGUgaG93IG9mdGVuIHRoZSBtYXhpbXVt IG51bWJlciBvZiB0aWNrcyBmaXRzIGNvbXBsZXRlbHkgaW50bwpAQCAtMTkyLDcgKzE5NSw3 IEBAIHBnX3RpY2tzX3RvX25zKGluc3RyX3RpbWUgdCkKIAkJICogdmFsdWUuIEluIGEgMm5k IHN0ZXAgd2UgYWRqdXN0IHRoZSBudW1iZXIgb2YgZWxhcHNlZCB0aWNrcyBhbmQKIAkJICog Y29udmVydCB0aGUgcmVtYWluaW5nIHRpY2tzLgogCQkgKi8KLQkJaW50NjQJCWNvdW50ID0g dC50aWNrcyAvIG1heF90aWNrc19ub19vdmVyZmxvdzsKKwkJaW50NjQJCWNvdW50ID0gdGlj a3MgLyBtYXhfdGlja3Nfbm9fb3ZlcmZsb3c7CiAJCWludDY0CQltYXhfbnMgPSBtYXhfdGlj a3Nfbm9fb3ZlcmZsb3cgKiB0aWNrc19wZXJfbnNfc2NhbGVkIC8gVElDS1NfVE9fTlNfUFJF Q0lTSU9OOwogCiAJCW5zID0gbWF4X25zICogY291bnQ7CkBAIC0yMDEsMTEgKzIwNCwxMSBA QCBwZ190aWNrc190b19ucyhpbnN0cl90aW1lIHQpCiAJCSAqIFN1YnRyYWN0IHRoZSB0aWNr cyB0aGF0IHdlIG5vdyBhbHJlYWR5IGFjY291bnRlZCBmb3IsIHNvIHRoYXQgdGhleQogCQkg KiBkb24ndCBnZXQgY291bnRlZCB0d2ljZS4KIAkJICovCi0JCXQudGlja3MgLT0gY291bnQg KiBtYXhfdGlja3Nfbm9fb3ZlcmZsb3c7Ci0JCUFzc2VydCh0LnRpY2tzID49IDApOworCQl0 aWNrcyAtPSBjb3VudCAqIG1heF90aWNrc19ub19vdmVyZmxvdzsKKwkJQXNzZXJ0KHRpY2tz ID49IDApOwogCX0KIAotCW5zICs9IHQudGlja3MgKiB0aWNrc19wZXJfbnNfc2NhbGVkIC8g VElDS1NfVE9fTlNfUFJFQ0lTSU9OOworCW5zICs9IHRpY2tzICogdGlja3NfcGVyX25zX3Nj YWxlZCAvIFRJQ0tTX1RPX05TX1BSRUNJU0lPTjsKIAlyZXR1cm4gbnM7CiB9CiAKQEAgLTIy NiwxNCArMjI5LDE0IEBAIHBnX2luaXRpYWxpemVfZ2V0X3RpY2tzKCkKICNkZWZpbmUgSU5T VFJfVElNRV9TRVRfQ1VSUkVOVCh0KSBcCiAJKCh0KSA9IHBnX2dldF90aWNrcygpKQogCi0j ZGVmaW5lIElOU1RSX1RJTUVfR0VUX05BTk9TRUModCkgXAotCXBnX3RpY2tzX3RvX25zKHQp Ci0KKyNkZWZpbmUgSU5TVFJfVElNRV9USUNLU19UT19OQU5PU0VDKHRpY2tzKSBcCisJKHBn X3RpY2tzX3RvX25zKHRpY2tzKSkKIAogI2Vsc2UJCQkJCQkJLyogV0lOMzIgKi8KIAogCiAv KiBVc2UgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKSAqLworI2RlZmluZSBQR19JTlNUUl9D TE9DS19OQU1FCSJRdWVyeVBlcmZvcm1hbmNlQ291bnRlciIKIAogLyogaGVscGVyIGZvciBJ TlNUUl9USU1FX1NFVF9DVVJSRU5UIC8gSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9GQVNUICov CiBzdGF0aWMgaW5saW5lIGluc3RyX3RpbWUKQEAgLTI2NSw4ICsyNjgsOCBAQCBHZXRUaW1l ckZyZXF1ZW5jeSh2b2lkKQogI2RlZmluZSBJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHQpIFwK IAkoKHQpID0gcGdfcXVlcnlfcGVyZm9ybWFuY2VfY291bnRlcigpKQogCi0jZGVmaW5lIElO U1RSX1RJTUVfR0VUX05BTk9TRUModCkgXAotCSgoaW50NjQpICgodCkudGlja3MgKiAoKGRv dWJsZSkgTlNfUEVSX1MgLyBHZXRUaW1lckZyZXF1ZW5jeSgpKSkpCisjZGVmaW5lIElOU1RS X1RJTUVfVElDS1NfVE9fTkFOT1NFQyh0aWNrcykgXAorCSgoaW50NjQpICgodGlja3MpICog KChkb3VibGUpIE5TX1BFUl9TIC8gR2V0VGltZXJGcmVxdWVuY3koKSkpKQogCiAjZW5kaWYJ CQkJCQkJLyogV0lOMzIgKi8KIApAQCAtMjg1LDkgKzI4OCwxNCBAQCBHZXRUaW1lckZyZXF1 ZW5jeSh2b2lkKQogI2RlZmluZSBJTlNUUl9USU1FX1NVQlRSQUNUKHgseSkgXAogCSgoeCku dGlja3MgLT0gKHkpLnRpY2tzKQogCisjZGVmaW5lIElOU1RSX1RJTUVfRElGRl9OQU5PU0VD KHgseSkgXAorCShJTlNUUl9USU1FX1RJQ0tTX1RPX05BTk9TRUMoKHgpLnRpY2tzIC0gKHkp LnRpY2tzKSkKKwogI2RlZmluZSBJTlNUUl9USU1FX0FDQ1VNX0RJRkYoeCx5LHopIFwKIAko KHgpLnRpY2tzICs9ICh5KS50aWNrcyAtICh6KS50aWNrcykKIAorI2RlZmluZSBJTlNUUl9U SU1FX0dFVF9OQU5PU0VDKHQpIFwKKwkoSU5TVFJfVElNRV9USUNLU19UT19OQU5PU0VDKCh0 KS50aWNrcykpCiAKICNkZWZpbmUgSU5TVFJfVElNRV9HRVRfRE9VQkxFKHQpIFwKIAkoKGRv dWJsZSkgSU5TVFJfVElNRV9HRVRfTkFOT1NFQyh0KSAvIE5TX1BFUl9TKQotLSAKMi41MS4w Cgo= --------------yW4Fzi3Jq8GL8e0W7bmIUxxt Content-Type: text/x-patch; charset=UTF-8; name="v13-0001-Use-time-stamp-counter-to-measure-time-on-Linux-x86.patch" Content-Disposition: attachment; filename*0="v13-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== --------------yW4Fzi3Jq8GL8e0W7bmIUxxt--