Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pCKsg-0000VV-HF for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Jan 2023 13:29:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pCKrf-00064C-Sc for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Jan 2023 13:28:31 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pCKrf-0005zu-8T for pgsql-hackers@lists.postgresql.org; Mon, 02 Jan 2023 13:28:31 +0000 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pCKrX-00086G-T5 for pgsql-hackers@postgresql.org; Mon, 02 Jan 2023 13:28:30 +0000 Received: by mail-ej1-x633.google.com with SMTP id kw15so66505120ejc.10 for ; Mon, 02 Jan 2023 05:28:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-language:references:cc:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=RuhBcR8HVRObn3X7qBTZ2GwmxQPu2BMVEIsbLcHm9DQ=; b=SX7omzSZhsV/Hc038UcabvpZmf4XzmqW7jzcurzqdvH2kXfgadYMZjDm1E55unG+1z eAeD+NQYWb6M44wc99yVvQ2IXGXwvGHc3Xd5/r25kyRbQ4a0XVbgt8dr2CSk6YB/LiE0 WTLyj74sICxJ2jJ4NB7WPwugic2dmeQ0wdRhNC6jpa2osPQIFItmMkoDYivmFStzEYM8 5AJSDTxyzyFquUqVe2Nchw2K43CQSOAoBDGuJ+rmKPs0EyXwpwmeNdepruQVAR+6oawQ TysjlyC4ArNJ3fXNt+75GvtsQntDr3e15VCGICgwLqNQvrLUymwOb79o2At0PUWK40uT +Wyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-language:references:cc:to:subject:from :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RuhBcR8HVRObn3X7qBTZ2GwmxQPu2BMVEIsbLcHm9DQ=; b=796cOQiv/hjFVX3WY6u8+B07z0OOKBa6FDLgFRJEU5D97cT5uRj4+lnx2KYG/zydqy 1MN/JpO5715b5V/HrG0C0SS+bflglGC4gL5PibhH4WQzSfPleie5wk8Y5dFSDJHiTYI7 WT9WlEGMK3q8nkQ9M6P7M+LqL/aYi0r1KpWeXL+NNi0QTbllGXVRPQFYHK/T3yLessHn 4j9KOVbKhzh7o2TgfPLDVi87Hnc/xadHafAmFeHQ6kcpc7GNUOfOfwL6RM3bjf+oQy5S BcLg5FZAxqMtzqgX5tk4VfT3BNIpoNfrH6j0kLkT9f9KFnkX1N/p14Q2x0xtqhaOavIX f0kg== X-Gm-Message-State: AFqh2kq35CtR2R7M1Y2zbLoE1U3gqI83iU5jjWpx4kUD9hbsHxuPLoRK 0biJMpcBC6mPs7y+udzilCM= X-Google-Smtp-Source: AMrXdXtiI3l0nojDtCWeb1ukWWns/O6WqVMTHXe0tuhEWIlndEhml5shGSPHjr6hg8Do65ZvPIRgpg== X-Received: by 2002:a17:906:8e96:b0:7c1:808e:7660 with SMTP id ru22-20020a1709068e9600b007c1808e7660mr38617448ejc.43.1672666101775; Mon, 02 Jan 2023 05:28:21 -0800 (PST) Received: from [172.16.209.129] ([147.161.235.10]) by smtp.gmail.com with ESMTPSA id g3-20020a170906538300b0082535e2da13sm13033478ejo.6.2023.01.02.05.28.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 02 Jan 2023 05:28:21 -0800 (PST) Content-Type: multipart/mixed; boundary="------------RXw8NxW6PZFNIET0TVuey0Hi" Message-ID: <3eaeaa3a-b78e-ef0d-7319-5d713bbc09a0@gmail.com> Date: Mon, 2 Jan 2023 14:28:20 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 From: David Geier Subject: Re: Reduce timing overhead of EXPLAIN ANALYZE using rdtsc? To: Michael Paquier , Ibrar Ahmed Cc: Maciek Sakrejda , Andres Freund , Lukas Fittl , pgsql-hackers References: <20200612232810.f46nbqkdhbutzqdg@alap3.anarazel.de> <20220701172639.ty4iu5almspueriu@alap3.anarazel.de> Content-Language: en-US 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. --------------RXw8NxW6PZFNIET0TVuey0Hi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, I re-based again on master and applied the following changes: I removed the fallback for obtaining the TSC frequency from /proc/cpu as suggested by Andres. Worst-case we fall back to clock_gettime(). I added code to obtain the TSC frequency via CPUID when under a hypervisor. I had to use __cpuid() directly instead of __get_cpuid(), because __get_cpuid() returns an error if the leaf is > 0x80000000 (probably the implementation pre-dates the hypervisor timing leafs). Unfortunately, while testing my implementation under VMWare, I found that RDTSC runs awfully slow there (like 30x slower). [1] indicates that we cannot generally rely on RDTSC being actually fast on VMs. However, the same applies to clock_gettime(). It runs as slow as RDTSC on my VMWare setup. Hence, using RDTSC is not at disadvantage. I'm not entirely sure if there aren't cases where e.g. clock_gettime() is actually faster than RDTSC and it would be advantageous to use clock_gettime(). We could add a GUC so that the user can decide which clock source to use. Any thoughts? I also somewhat improved the accuracy of the cycles to milli- and microseconds conversion functions by having two more multipliers with higher precision. For microseconds we could also keep the computation integer-only. I'm wondering what to best do for seconds and milliseconds. I'm currently leaning towards just keeping it as is, because the durations measured and converted are usually long enough that precision shouldn't be a problem. In vacuum_lazy.c we do if ((INSTR_TIME_GET_MICROSEC(elapsed) / 1000). I changed that to use INSTR_TIME_GET_MILLISECS() instead. Additionally, I initialized a few variables of type instr_time which otherwise resulted in warnings due to use of potentially uninitialized variables. I also couldn't reproduce the reported timing discrepancy. For me the runtime reported by \timing is just slightly higher than the time reported by EXPLAIN ANALYZE, which is expected. Beyond that: What about renaming INSTR_TIME_GET_DOUBLE() to INSTR_TIME_GET_SECS() so that it's consistent with the _MILLISEC() and _MICROSEC() variants? The INSTR_TIME_GET_MICROSEC() returns a uint64 while the other variants return double. This seems error prone. What about renaming the function or also have the function return a double and cast where necessary at the call site? If no one objects I would also re-register this patch in the commit fest. [1] https://vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/Timekeeping-In-VirtualMachines.pdf (page 11 "Virtual TSC") -- David Geier (ServiceNow) --------------RXw8NxW6PZFNIET0TVuey0Hi Content-Type: text/x-patch; charset=UTF-8; name="0001-Change-instr_time-to-just-store-nanoseconds-v4.patch" Content-Disposition: attachment; filename*0="0001-Change-instr_time-to-just-store-nanoseconds-v4.patch" Content-Transfer-Encoding: base64 RnJvbSAzMjFkMDBhZTVkZDFiY2ZmYzhmYmRiMzk4NzliN2Y1Yzc4ZTM5MzBmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogVGh1LCAxNyBOb3YgMjAyMiAxMDoyMjowMSArMDEwMApTdWJqZWN0OiBbUEFU Q0ggMS8zXSBDaGFuZ2UgaW5zdHJfdGltZSB0byBqdXN0IHN0b3JlIG5hbm9zZWNvbmRzLCB0 aGF0J3MKIGNoZWFwZXIuCgotLS0KIHNyYy9pbmNsdWRlL3BvcnRhYmlsaXR5L2luc3RyX3Rp bWUuaCB8IDYyICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyNiBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wb3J0YWJpbGl0eS9pbnN0cl90aW1lLmggYi9zcmMvaW5jbHVkZS9wb3J0YWJp bGl0eS9pbnN0cl90aW1lLmgKaW5kZXggMjJiY2YzZDI4OC4uNGJkNTU1MTEzYiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCisrKyBiL3NyYy9p bmNsdWRlL3BvcnRhYmlsaXR5L2luc3RyX3RpbWUuaApAQCAtODAsNjMgKzgwLDUzIEBACiAj ZGVmaW5lIFBHX0lOU1RSX0NMT0NLCUNMT0NLX1JFQUxUSU1FCiAjZW5kaWYKIAotdHlwZWRl ZiBzdHJ1Y3QgdGltZXNwZWMgaW5zdHJfdGltZTsKK3R5cGVkZWYgaW50NjQgaW5zdHJfdGlt ZTsKKyNkZWZpbmUgTlNfUEVSX1MgSU5UNjRDT05TVCgxMDAwMDAwMDAwKQorI2RlZmluZSBV U19QRVJfUyBJTlQ2NENPTlNUKDEwMDAwMDApCisjZGVmaW5lIE1TX1BFUl9TIElOVDY0Q09O U1QoMTAwMCkKIAotI2RlZmluZSBJTlNUUl9USU1FX0lTX1pFUk8odCkJKCh0KS50dl9uc2Vj ID09IDAgJiYgKHQpLnR2X3NlYyA9PSAwKQorI2RlZmluZSBOU19QRVJfTVMgSU5UNjRDT05T VCgxMDAwMDAwKQorI2RlZmluZSBOU19QRVJfVVMgSU5UNjRDT05TVCgxMDAwKQogCi0jZGVm aW5lIElOU1RSX1RJTUVfU0VUX1pFUk8odCkJKCh0KS50dl9zZWMgPSAwLCAodCkudHZfbnNl YyA9IDApCisjZGVmaW5lIElOU1RSX1RJTUVfSVNfWkVSTyh0KQkoKHQpID09IDApCiAKLSNk ZWZpbmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0KQkoKHZvaWQpIGNsb2NrX2dldHRpbWUo UEdfSU5TVFJfQ0xPQ0ssICYodCkpKQorI2RlZmluZSBJTlNUUl9USU1FX1NFVF9aRVJPKHQp CSgodCkgPSAwKQorCitzdGF0aWMgaW5saW5lIGluc3RyX3RpbWUgcGdfY2xvY2tfZ2V0dGlt ZV9ucyh2b2lkKQoreworCXN0cnVjdCB0aW1lc3BlYyB0bXA7CisKKwljbG9ja19nZXR0aW1l KFBHX0lOU1RSX0NMT0NLLCAmdG1wKTsKKworCXJldHVybiB0bXAudHZfc2VjICogTlNfUEVS X1MgKyB0bXAudHZfbnNlYzsKK30KKworI2RlZmluZSBJTlNUUl9USU1FX1NFVF9DVVJSRU5U KHQpIFwKKwkodCkgPSBwZ19jbG9ja19nZXR0aW1lX25zKCkKIAogI2RlZmluZSBJTlNUUl9U SU1FX0FERCh4LHkpIFwKIAlkbyB7IFwKLQkJKHgpLnR2X3NlYyArPSAoeSkudHZfc2VjOyBc Ci0JCSh4KS50dl9uc2VjICs9ICh5KS50dl9uc2VjOyBcCi0JCS8qIE5vcm1hbGl6ZSAqLyBc Ci0JCXdoaWxlICgoeCkudHZfbnNlYyA+PSAxMDAwMDAwMDAwKSBcCi0JCXsgXAotCQkJKHgp LnR2X25zZWMgLT0gMTAwMDAwMDAwMDsgXAotCQkJKHgpLnR2X3NlYysrOyBcCi0JCX0gXAor CQkoeCkgKz0gKHkpOyBcCiAJfSB3aGlsZSAoMCkKIAogI2RlZmluZSBJTlNUUl9USU1FX1NV QlRSQUNUKHgseSkgXAogCWRvIHsgXAotCQkoeCkudHZfc2VjIC09ICh5KS50dl9zZWM7IFwK LQkJKHgpLnR2X25zZWMgLT0gKHkpLnR2X25zZWM7IFwKLQkJLyogTm9ybWFsaXplICovIFwK LQkJd2hpbGUgKCh4KS50dl9uc2VjIDwgMCkgXAotCQl7IFwKLQkJCSh4KS50dl9uc2VjICs9 IDEwMDAwMDAwMDA7IFwKLQkJCSh4KS50dl9zZWMtLTsgXAotCQl9IFwKKwkJKHgpIC09ICh5 KTsgXAogCX0gd2hpbGUgKDApCiAKICNkZWZpbmUgSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHgs eSx6KSBcCiAJZG8geyBcCi0JCSh4KS50dl9zZWMgKz0gKHkpLnR2X3NlYyAtICh6KS50dl9z ZWM7IFwKLQkJKHgpLnR2X25zZWMgKz0gKHkpLnR2X25zZWMgLSAoeikudHZfbnNlYzsgXAot CQkvKiBOb3JtYWxpemUgYWZ0ZXIgZWFjaCBhZGQgdG8gYXZvaWQgb3ZlcmZsb3cvdW5kZXJm bG93IG9mIHR2X25zZWMgKi8gXAotCQl3aGlsZSAoKHgpLnR2X25zZWMgPCAwKSBcCi0JCXsg XAotCQkJKHgpLnR2X25zZWMgKz0gMTAwMDAwMDAwMDsgXAotCQkJKHgpLnR2X3NlYy0tOyBc Ci0JCX0gXAotCQl3aGlsZSAoKHgpLnR2X25zZWMgPj0gMTAwMDAwMDAwMCkgXAotCQl7IFwK LQkJCSh4KS50dl9uc2VjIC09IDEwMDAwMDAwMDA7IFwKLQkJCSh4KS50dl9zZWMrKzsgXAot CQl9IFwKKwkJKHgpICs9ICh5KSAtICh6KTsgXAogCX0gd2hpbGUgKDApCiAKICNkZWZpbmUg SU5TVFJfVElNRV9HRVRfRE9VQkxFKHQpIFwKLQkoKChkb3VibGUpICh0KS50dl9zZWMpICsg KChkb3VibGUpICh0KS50dl9uc2VjKSAvIDEwMDAwMDAwMDAuMCkKKwkoKGRvdWJsZSkgKHQp IC8gTlNfUEVSX1MpCiAKICNkZWZpbmUgSU5TVFJfVElNRV9HRVRfTUlMTElTRUModCkgXAot CSgoKGRvdWJsZSkgKHQpLnR2X3NlYyAqIDEwMDAuMCkgKyAoKGRvdWJsZSkgKHQpLnR2X25z ZWMpIC8gMTAwMDAwMC4wKQorCSgoZG91YmxlKSAodCkgLyBOU19QRVJfTVMpCiAKICNkZWZp bmUgSU5TVFJfVElNRV9HRVRfTUlDUk9TRUModCkgXAotCSgoKHVpbnQ2NCkgKHQpLnR2X3Nl YyAqICh1aW50NjQpIDEwMDAwMDApICsgKHVpbnQ2NCkgKCh0KS50dl9uc2VjIC8gMTAwMCkp CisJKChkb3VibGUpICh0KSAvIE5TX1BFUl9VUykKIAogI2Vsc2UJCQkJCQkJLyogV0lOMzIg Ki8KIAotLSAKMi4zNC4xCgo= --------------RXw8NxW6PZFNIET0TVuey0Hi Content-Type: text/x-patch; charset=UTF-8; name="0002-Use-CPU-reference-cycles-via-RDTSC-v4.patch" Content-Disposition: attachment; filename="0002-Use-CPU-reference-cycles-via-RDTSC-v4.patch" Content-Transfer-Encoding: base64 RnJvbSAyOGIzYjM1YTUxODQxNjQyYWUxZDQ3YjU3NDBjM2IxNTI2YTBjNTc0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogVGh1LCAxNyBOb3YgMjAyMiAxMzowMzo1OSArMDEwMApTdWJqZWN0OiBbUEFU Q0ggMi8zXSBVc2UgQ1BVIHJlZmVyZW5jZSBjeWNsZXMsIHZpYSBSRFRTQywgdG8gbWVhc3Vy ZSB0aW1lIGZvcgogaW5zdHJ1bWVudGF0aW9uLgoKRm9yIG5vdyB0aGlzIGlzIG9ubHkgZW5h YmxlZCBvbiBMaW51eC94ODYgd2hlbiB0aGUgc3lzdGVtIGNsb2Nrc291cmNlIGlzCm1hcmtl ZCB0c2MgYXMgd2VsbCwgYXMgZGV0ZXJtaW5lZCBhdCBydW50aW1lLiBUaGlzIHdheSB3ZSBj YW4gcmVseSBvbiB0aGUKTGludXgga2VybmVsIHRvIG1ha2UgYSBkZWNpc2lvbiB3aGV0aGVy IHRzYyBpcyBpbnZhcmlhbnQgYW5kIHVzYWJsZSBvbiB0aGUKY3VycmVudCBDUFUgYXJjaGl0 ZWN0dXJlLiBJbiBhbGwgb3RoZXIgY2FzZXMgd2UgY29udGludWUgdG8gdXNlIHRoZQpjbG9j a19nZXR0aW1lKCkgaW1wbGVtZW50YXRpb24gbGlrZSBiZWZvcmUuCgpOb3RlIHRoYXQgdGhp cyBpbnRlbnRpb25hbGx5IHVzZXMgcmR0c2MsIG5vdCByZHRzY3AsIGFzIHJkdHNjcCB3YWl0 cyBmb3IKY3VycmVudGx5IHJ1bm5pbmcgQ1BVIGluc3RydWN0aW9ucyB0byBoYXZlIGZpbmlz aGVkLCBhbmQgdGhhdCBhZGRzIHVwIHRvCm5vdGljYWJsZSBsYXRlbmN5IGZvciBsaXR0bGUg YmVuZWZpdCBpbiB0aGUgdHlwaWNhbCBJbnN0clN0YXJ0Tm9kZSgpIC8KSW5zdHJTdG9wTm9k ZSgpIHVzZSBjYXNlLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyAg ICAgICB8ICAgMyArCiBzcmMvYmluL3BnX3Rlc3RfdGltaW5nL3BnX3Rlc3RfdGltaW5nLmMg fCAgIDEgKwogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyAgICAgICAgICAgICAgIHwgICAz ICsKIHNyYy9iaW4vcHNxbC9zdGFydHVwLmMgICAgICAgICAgICAgICAgICB8ICAgNCArCiBz cmMvY29tbW9uL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Nv bW1vbi9pbnN0cl90aW1lLmMgICAgICAgICAgICAgICAgIHwgMTIwICsrKysrKysrKysrKysr KysrKysrKysrKwogc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oICAgIHwg IDUyICsrKysrKysrLS0KIHNyYy90b29scy9tc3ZjL01rdmNidWlsZC5wbSAgICAgICAgICAg ICB8ICAgMiArLQogOCBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKSwgMTEgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2NvbW1vbi9pbnN0cl90aW1lLmMK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMv YmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggYTk5MGM4MzNjNS4uYzY4NDcy NWFmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpAQCAtODA0LDYgKzgwNCw5 IEBAIEluaXRQb3N0Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwKIAkv KiBJbml0aWFsaXplIHBvcnRhbCBtYW5hZ2VyICovCiAJRW5hYmxlUG9ydGFsTWFuYWdlcigp OwogCisJLyogaW5pdGlhbGl6ZSBoaWdoLXByZWNpc2lvbiBpbnRlcnZhbCB0aW1pbmcgKi8K KwlJTlNUUl9USU1FX0lOSVRJQUxJWkUoKTsKKwogCS8qIEluaXRpYWxpemUgc3RhdHVzIHJl cG9ydGluZyAqLwogCXBnc3RhdF9iZWluaXQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z190ZXN0X3RpbWluZy9wZ190ZXN0X3RpbWluZy5jIGIvc3JjL2Jpbi9wZ190ZXN0X3RpbWlu Zy9wZ190ZXN0X3RpbWluZy5jCmluZGV4IGMyOWQ2Zjg3NjIuLjBkNjY3ZmY1YTcgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfdGVzdF90aW1pbmcvcGdfdGVzdF90aW1pbmcuYworKysgYi9z cmMvYmluL3BnX3Rlc3RfdGltaW5nL3BnX3Rlc3RfdGltaW5nLmMKQEAgLTEzMiw2ICsxMzIs NyBAQCB0ZXN0X3RpbWluZyh1bnNpZ25lZCBpbnQgZHVyYXRpb24pCiAKIAl0b3RhbF90aW1l ID0gZHVyYXRpb24gPiAwID8gZHVyYXRpb24gKiBJTlQ2NENPTlNUKDEwMDAwMDApIDogMDsK IAorCUlOU1RSX1RJTUVfSU5JVElBTElaRSgpOwogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQo c3RhcnRfdGltZSk7CiAJY3VyID0gSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMoc3RhcnRfdGlt ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDMxODJhNzNhZDcuLjA4NTg2Nzg1MzQgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYwpAQCAtNzA3Niw2ICs3MDc2LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJCWluaXRSYW5kb21TdGF0ZSgmc3RhdGVbaV0uY3NfZnVuY19ycyk7CiAJfQog CisJLyogaW5pdGlhbGl6ZSBoaWdoLXByZWNpc2lvbiBpbnRlcnZhbCB0aW1pbmcgKi8KKwlJ TlNUUl9USU1FX0lOSVRJQUxJWkUoKTsKKwogCS8qIG9wZW5pbmcgY29ubmVjdGlvbi4uLiAq LwogCWNvbiA9IGRvQ29ubmVjdCgpOwogCWlmIChjb24gPT0gTlVMTCkKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC9zdGFydHVwLmMgYi9zcmMvYmluL3BzcWwvc3RhcnR1cC5jCmluZGV4 IGY1YjllMjY4ZjIuLjE0ZjM2OGI2NTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9zdGFy dHVwLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYwpAQCAtMjQsNiArMjQsNyBAQAog I2luY2x1ZGUgImhlbHAuaCIKICNpbmNsdWRlICJpbnB1dC5oIgogI2luY2x1ZGUgIm1haW5s b29wLmgiCisjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgogI2luY2x1ZGUg InNldHRpbmdzLmgiCiAKIC8qCkBAIC0zMjIsNiArMzIzLDkgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCiAJUFFzZXROb3RpY2VQcm9jZXNzb3IocHNldC5kYiwgTm90aWNl UHJvY2Vzc29yLCBOVUxMKTsKIAorCS8qIGluaXRpYWxpemUgaGlnaC1wcmVjaXNpb24gaW50 ZXJ2YWwgdGltaW5nICovCisJSU5TVFJfVElNRV9JTklUSUFMSVpFKCk7CisKIAlTeW5jVmFy aWFibGVzKCk7CiAKIAlpZiAob3B0aW9ucy5saXN0X2RicykKZGlmZiAtLWdpdCBhL3NyYy9j b21tb24vTWFrZWZpbGUgYi9zcmMvY29tbW9uL01ha2VmaWxlCmluZGV4IDg5ODcwMWZhZTEu LmZjYTRiNTQ2YzggMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vTWFrZWZpbGUKKysrIGIvc3Jj L2NvbW1vbi9NYWtlZmlsZQpAQCAtNTksNiArNTksNyBAQCBPQkpTX0NPTU1PTiA9IFwKIAlm aWxlX3Blcm0ubyBcCiAJZmlsZV91dGlscy5vIFwKIAloYXNoZm4ubyBcCisJaW5zdHJfdGlt ZS5vIFwKIAlpcC5vIFwKIAlqc29uYXBpLm8gXAogCWtleXdvcmRzLm8gXApkaWZmIC0tZ2l0 IGEvc3JjL2NvbW1vbi9pbnN0cl90aW1lLmMgYi9zcmMvY29tbW9uL2luc3RyX3RpbWUuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41Zjg1MzUwZDFiCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2NvbW1vbi9pbnN0cl90aW1lLmMKQEAgLTAsMCArMSwxMjAg QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGluc3RyX3RpbWUuYworICoJICAg Tm9uLWlubGluZSBwYXJ0cyBvZiB0aGUgcG9ydGFibGUgaGlnaC1wcmVjaXNpb24gaW50ZXJ2 YWwgdGltaW5nCisgKgkgaW1wbGVtZW50YXRpb24KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgor ICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3BvcnQvaW5zdHJfdGlt ZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jl cy5oIgorCisjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgorCisvKgorICog U3RvcmVzIHdoYXQgdGhlIG51bWJlciBvZiBjeWNsZXMgbmVlZHMgdG8gYmUgbXVsdGlwbGll ZCB3aXRoIHRvIGVuZCB1cCB3aXRoCisgKiBzZWNvbmRzLiBUaGlzIGluZGlyZWN0aW9uIGV4 aXN0cyB0byBzdXBwb3J0IHRoZSBydGRzYyBpbnN0cnVjdGlvbi4KKyAqCisgKiBBcyBhIGRl ZmF1bHQsIGFzc3VtZSB3ZSBhcmUgdXNpbmcgY2xvY2tfZ2V0dGltZSgpIGFzIGEgZmFsbGJh Y2sgYW5kIHRyZWF0IGl0CisgKiBhcyAxICJjeWNsZSIgcGVyIG5hbm9zZWNvbmQgKGFrYSAx IEdIeikuCisgKgorICogV2hlbiB1c2luZyB0aGUgUkRUU0MgaW5zdHJ1Y3Rpb24gZGlyZWN0 bHkgdGhpcyBpcyBmaWxsZWQgaW4gZHVyaW5nCisgKiBpbml0aWFsaXphdGlvbiBiYXNlZCBv biB0aGUgcmVsZXZhbnQgY3B1aWQgZmllbGRzLgorICovCitkb3VibGUgY3ljbGVzX3RvX3Nl YyA9IDEuMCAvIE5TX1BFUl9TOworZG91YmxlIGN5Y2xlc190b19tcyA9IDEuMCAvIE1TX1BF Ul9TOworZG91YmxlIGN5Y2xlc190b191cyA9IDEuMCAvIFVTX1BFUl9TOworCisjaWYgZGVm aW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKKy8qCisgKiBEZXRlcm1p bmVzIHdoZXRoZXIgcmR0c2MgaXMgdXNlZCAoTGludXgveDg2IG9ubHksIHdoZW4gT1MgdXNl cyB0c2MgY2xvY2tzb3VyY2UpCisgKi8KK2Jvb2wgdXNlX3JkdHNjID0gZmFsc2U7CisKK3N0 YXRpYyBib29sIHVuZGVyX2h5cGVydmlzb3Iodm9pZCkKK3sKKwl1aW50MzIgcjAsIHIxLCBy MiwgcjM7CisJaW50IHJlc3VsdCA9IF9fZ2V0X2NwdWlkKDB4MSwgJnIwLCAmcjEsICZyMiwg JnIzKTsKKwlyZXR1cm4gcmVzdWx0ID4gMCAmJiAoKHIyID4+IDMxKSAmIDEpID09IDE7Cit9 CisKK3N0YXRpYyBib29sIGdldF9oeXBlcnZpc29yX3RzY19mcmVxdWVuY3lfa2h6KHVpbnQz MiAqdHNjX2ZyZXEpCit7CisJdWludDMyIHIwLCByMSwgcjI7CisKKwlpZiAoIXVuZGVyX2h5 cGVydmlzb3IoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkqIFVzZSBfX2NwdWlkKCkg YmVjYXVzZSBfX2dldF9jcHVpZCgpIGJhaWxzIG91dCBmb3IgbGVhZnMgPiAweDgwMDAwMDAw LgorCSogTGlrZWx5LCBpdCdzIG5vdCBhY2NvdW50aW5nIGZvciByZWNlbnRseSBpbnRyb2R1 Y2VkIFZNIGxlYWZzLgorCSogVW5saWtlIGxlYWYgMHgxNiwgdGhlIGh5cGVydmlzb3IgdGlt aW5nIGxlYWZzIHJldHVybiB0aGUgZnJlcXVlbmN5IGFscmVhZHkgaW4gS0h6LgorCSovCisJ X19jcHVpZCgweDQwMDAwMDEwLCAqdHNjX2ZyZXEsIHIwLCByMSwgcjIpOworCXJldHVybiAq dHNjX2ZyZXEgPiAwOworfQorCitzdGF0aWMgYm9vbCBnZXRfaG9zdF90c2NfZnJlcXVlbmN5 X2toeih1aW50MzIgKnRzY19mcmVxKQoreworCXVpbnQzMiByMCwgcjEsIHIyOworCWludCBy ZXN1bHQgPSBfX2dldF9jcHVpZCgweDE2LCB0c2NfZnJlcSwgJnIwLCAmcjEsICZyMik7CisJ KnRzY19mcmVxICo9IDEwMDA7IC8vIENvbnZlcnQgZnJvbSBNSHogdG8gS0h6CisJcmV0dXJu IHJlc3VsdCA+IDAgJiYgKnRzY19mcmVxID4gMDsKK30KKworc3RhdGljIGJvb2wgZ2V0X3Rz Y19mcmVxdWVuY3lfa2h6KHVpbnQzMiAqdHNjX2ZyZXEpCit7CisJaWYgKGdldF9oeXBlcnZp c29yX3RzY19mcmVxdWVuY3lfa2h6KHRzY19mcmVxKSkKKwkJcmV0dXJuIHRydWU7CisJaWYg KGdldF9ob3N0X3RzY19mcmVxdWVuY3lfa2h6KHRzY19mcmVxKSkKKwkJcmV0dXJuIHRydWU7 CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBEZWNpZGUgd2hldGhlciB3ZSB1c2Ug dGhlIHJkdHNjIGluc3RydWN0aW9uIGF0IHJ1bnRpbWUsIGZvciBMaW51eC94ODYsCisgKiBp bnN0ZWFkIG9mIGluY3VycmluZyB0aGUgb3ZlcmhlYWQgb2YgYSBmdWxsIGNsb2NrX2dldHRp bWUoKSBjYWxsLgorICoKKyAqIFRoaXMgY2FuJ3QgYmUgcmVsaWFibHkgZGV0ZXJtaW5lZCBh dCBjb21waWxlIHRpbWUsIHNpbmNlIHRoZQorICogYXZhaWxhYmlsaXR5IG9mIGFuICJpbnZh cmlhbnQiIFRTQyAodGhhdCBpcyBub3QgYWZmZWN0ZWQgYnkgQ1BVCisgKiBmcmVxdWVuY3kg Y2hhbmdlcykgaXMgZGVwZW5kZW50IG9uIHRoZSBDUFUgYXJjaGl0ZWN0dXJlLiBBZGRpdGlv bmFsbHksCisgKiB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgVFNDIGF2YWlsYWJpbGl0eSBpcyBp bXBhY3RlZCBieSB2aXJ0dWFsaXphdGlvbiwKKyAqIHdoZXJlIGEgc2ltcGxlIGNwdWlkIGZl YXR1cmUgY2hlY2sgd291bGQgbm90IGJlIGVub3VnaC4KKyAqCisgKiBTaW5jZSBMaW51eCBh bHJlYWR5IGRvZXMgYSBzaWduaWZpY2FudCBhbW91bnQgb2Ygd29yayB0byBkZXRlcm1pbmUK KyAqIHdoZXRoZXIgVFNDIGlzIGEgdmlhYmxlIGNsb2NrIHNvdXJjZSwgZGVjaWRlIGJhc2Vk IG9uIHRoYXQuCisgKi8KK3ZvaWQgcGdfY2xvY2tfZ2V0dGltZV9pbml0aWFsaXplX3JkdHNj KHZvaWQpCit7CisJRklMRSAqZnAgPSBmb3BlbigiL3N5cy9kZXZpY2VzL3N5c3RlbS9jbG9j a3NvdXJjZS9jbG9ja3NvdXJjZTAvY3VycmVudF9jbG9ja3NvdXJjZSIsICJyIik7CisKKwlp ZiAoZnApCisJeworCQljaGFyIGJ1ZlsxMjhdOworCisJCWlmIChmZ2V0cyhidWYsIHNpemVv ZihidWYpLCBmcCkgIT0gTlVMTCAmJiBzdHJjbXAoYnVmLCAidHNjXG4iKSA9PSAwKQorCQl7 CisJCQkvKgorCQkJKiBDb21wdXRlIGJhc2VsaW5lIENQVSBwZWZvcm1hbmNlLCBkZXRlcm1p bmVzIHNwZWVkIGF0IHdoaWNoIFJEVFNDIGFkdmFuY2VzLgorCQkJKi8KKwkJCXVpbnQzMiB0 c2NfZnJlcTsKKworCQkJaWYgKGdldF90c2NfZnJlcXVlbmN5X2toeigmdHNjX2ZyZXEpKQor CQkJeworCQkJCWN5Y2xlc190b19zZWMgPSAxLjAgLyAodHNjX2ZyZXEgKiAxMDAwKTsKKwkJ CQljeWNsZXNfdG9fbXMgPSAxLjAgLyB0c2NfZnJlcTsKKwkJCQljeWNsZXNfdG9fdXMgPSAx MDAwLjAgLyB0c2NfZnJlcTsKKwkJCQl1c2VfcmR0c2MgPSB0cnVlOworCQkJfQorCQl9CisK KwkJZmNsb3NlKGZwKTsKKwl9Cit9CisjZW5kaWYJCQkJCQkJLyogZGVmaW5lZChfX3g4Nl82 NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCBiL3NyYy9pbmNsdWRlL3BvcnRhYmlsaXR5L2lu c3RyX3RpbWUuaAppbmRleCA0YmQ1NTUxMTNiLi42NDQyNzMyZjNlIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgKKysrIGIvc3JjL2luY2x1ZGUv cG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCkBAIC00LDkgKzQsMTEgQEAKICAqCSAgcG9ydGFi bGUgaGlnaC1wcmVjaXNpb24gaW50ZXJ2YWwgdGltaW5nCiAgKgogICogVGhpcyBmaWxlIHBy b3ZpZGVzIGFuIGFic3RyYWN0aW9uIGxheWVyIHRvIGhpZGUgcG9ydGFiaWxpdHkgaXNzdWVz IGluCi0gKiBpbnRlcnZhbCB0aW1pbmcuICBPbiBVbml4IHdlIHVzZSBjbG9ja19nZXR0aW1l KCksIGFuZCBvbiBXaW5kb3dzIHdlIHVzZQotICogUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIo KS4gIFRoZXNlIG1hY3JvcyBhbHNvIGdpdmUgc29tZSBicmVhdGhpbmcgcm9vbSB0bwotICog dXNlIG90aGVyIGhpZ2gtcHJlY2lzaW9uLXRpbWluZyBBUElzLgorICogaW50ZXJ2YWwgdGlt aW5nLiBPbiBMaW51eC94ODYgd2UgdXNlIHRoZSByZHRzYyBpbnN0cnVjdGlvbiB3aGVuIGEg VFNDCisgKiBjbG9ja3NvdXJjZSBpcyBhbHNvIHVzZWQgb24gdGhlIGhvc3QgT1MuICBPdGhl cndpc2UsIGFuZCBvbiBvdGhlcgorICogVW5peC1saWtlIHN5c3RlbXMgd2UgdXNlIGNsb2Nr X2dldHRpbWUoKSBhbmQgb24gV2luZG93cyB3ZSB1c2UKKyAqIFF1ZXJ5UGVyZm9ybWFuY2VD b3VudGVyKCkuIFRoZXNlIG1hY3JvcyBhbHNvIGdpdmUgc29tZSBicmVhdGhpbmcKKyAqIHJv b20gdG8gdXNlIG90aGVyIGhpZ2gtcHJlY2lzaW9uLXRpbWluZyBBUElzLgogICoKICAqIFRo ZSBiYXNpYyBkYXRhIHR5cGUgaXMgaW5zdHJfdGltZSwgd2hpY2ggYWxsIGNhbGxlcnMgc2hv dWxkIHRyZWF0IGFzIGFuCiAgKiBvcGFxdWUgdHlwZWRlZi4gIGluc3RyX3RpbWUgY2FuIHN0 b3JlIGVpdGhlciBhbiBhYnNvbHV0ZSB0aW1lIChvZgpAQCAtNTYsMTAgKzU4LDE1IEBACiAK ICNpZm5kZWYgV0lOMzIKIAotLyogVXNlIGNsb2NrX2dldHRpbWUoKSAqLworLyogVXNlcyBy ZHRzYyBvbiBMaW51eC94ODYgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgY2xvY2tfZ2V0dGlt ZSgpICovCiAKICNpbmNsdWRlIDx0aW1lLmg+CiAKKyNpZiBkZWZpbmVkKF9feDg2XzY0X18p ICYmIGRlZmluZWQoX19saW51eF9fKQorI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2luY2x1 ZGUgPGNwdWlkLmg+CisjZW5kaWYKKwogLyoKICAqIFRoZSBiZXN0IGNsb2NraWQgdG8gdXNl IGFjY29yZGluZyB0byB0aGUgUE9TSVggc3BlYyBpcyBDTE9DS19NT05PVE9OSUMsCiAgKiBz aW5jZSB0aGF0IHdpbGwgZ2l2ZSByZWxpYWJsZSBpbnRlcnZhbCB0aW1pbmcgZXZlbiBpbiB0 aGUgZmFjZSBvZiBjaGFuZ2VzCkBAIC04MCw3ICs4Nyw5IEBACiAjZGVmaW5lIFBHX0lOU1RS X0NMT0NLCUNMT0NLX1JFQUxUSU1FCiAjZW5kaWYKIAorLyogdGltZSBpbiBjcHUgcmVmZXJl bmNlIGN5Y2xlcyAod2hlbiB1c2luZyByZHRzYyksIG90aGVyd2lzZSBuYW5vc2Vjb25kcyAq LwogdHlwZWRlZiBpbnQ2NCBpbnN0cl90aW1lOworCiAjZGVmaW5lIE5TX1BFUl9TIElOVDY0 Q09OU1QoMTAwMDAwMDAwMCkKICNkZWZpbmUgVVNfUEVSX1MgSU5UNjRDT05TVCgxMDAwMDAw KQogI2RlZmluZSBNU19QRVJfUyBJTlQ2NENPTlNUKDEwMDApCkBAIC05MiwxNyArMTAxLDM4 IEBAIHR5cGVkZWYgaW50NjQgaW5zdHJfdGltZTsKIAogI2RlZmluZSBJTlNUUl9USU1FX1NF VF9aRVJPKHQpCSgodCkgPSAwKQogCi1zdGF0aWMgaW5saW5lIGluc3RyX3RpbWUgcGdfY2xv Y2tfZ2V0dGltZV9ucyh2b2lkKQorZXh0ZXJuIGRvdWJsZSBjeWNsZXNfdG9fc2VjOworZXh0 ZXJuIGRvdWJsZSBjeWNsZXNfdG9fbXM7CitleHRlcm4gZG91YmxlIGN5Y2xlc190b191czsK KworI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCitleHRl cm4gYm9vbCB1c2VfcmR0c2M7CisKK2V4dGVybiB2b2lkIHBnX2Nsb2NrX2dldHRpbWVfaW5p dGlhbGl6ZV9yZHRzYyh2b2lkKTsKKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIGluc3RyX3Rp bWUgcGdfY2xvY2tfZ2V0dGltZV9yZWZfY3ljbGVzKHZvaWQpCiB7CiAJc3RydWN0IHRpbWVz cGVjIHRtcDsKIAorI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4 X18pCisJaWYgKHVzZV9yZHRzYykKKwkJcmV0dXJuIF9fcmR0c2MoKTsKKyNlbmRpZgorICAg IAogCWNsb2NrX2dldHRpbWUoUEdfSU5TVFJfQ0xPQ0ssICZ0bXApOwotCiAJcmV0dXJuIHRt cC50dl9zZWMgKiBOU19QRVJfUyArIHRtcC50dl9uc2VjOwogfQogCisjaWYgZGVmaW5lZChf X3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKKyNkZWZpbmUgSU5TVFJfVElNRV9J TklUSUFMSVpFKCkgXAorICAgICAgIHBnX2Nsb2NrX2dldHRpbWVfaW5pdGlhbGl6ZV9yZHRz YygpCisjZWxzZQorI2RlZmluZSBJTlNUUl9USU1FX0lOSVRJQUxJWkUoKQorI2VuZGlmCisK ICNkZWZpbmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0KSBcCi0JKHQpID0gcGdfY2xvY2tf Z2V0dGltZV9ucygpCisJKHQpID0gcGdfY2xvY2tfZ2V0dGltZV9yZWZfY3ljbGVzKCkKIAog I2RlZmluZSBJTlNUUl9USU1FX0FERCh4LHkpIFwKIAlkbyB7IFwKQEAgLTEyMCwxMyArMTUw LDEzIEBAIHN0YXRpYyBpbmxpbmUgaW5zdHJfdGltZSBwZ19jbG9ja19nZXR0aW1lX25zKHZv aWQpCiAJfSB3aGlsZSAoMCkKIAogI2RlZmluZSBJTlNUUl9USU1FX0dFVF9ET1VCTEUodCkg XAotCSgoZG91YmxlKSAodCkgLyBOU19QRVJfUykKKwkoKGRvdWJsZSkgKHQpICogY3ljbGVz X3RvX3NlYykKIAogI2RlZmluZSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh0KSBcCi0JKChk b3VibGUpICh0KSAvIE5TX1BFUl9NUykKKwkoKGRvdWJsZSkgKHQpICogY3ljbGVzX3RvX21z KQogCiAjZGVmaW5lIElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKHQpIFwKLQkoKGRvdWJsZSkg KHQpIC8gTlNfUEVSX1VTKQorCSgodWludDY0KSAodCkgKiBjeWNsZXNfdG9fdXMpCiAKICNl bHNlCQkJCQkJCS8qIFdJTjMyICovCiAKQEAgLTEzOCw2ICsxNjgsOCBAQCB0eXBlZGVmIExB UkdFX0lOVEVHRVIgaW5zdHJfdGltZTsKIAogI2RlZmluZSBJTlNUUl9USU1FX1NFVF9aRVJP KHQpCSgodCkuUXVhZFBhcnQgPSAwKQogCisjZGVmaW5lIElOU1RSX1RJTUVfSU5JVElBTEla RSgpCisKICNkZWZpbmUgSU5TVFJfVElNRV9TRVRfQ1VSUkVOVCh0KQlRdWVyeVBlcmZvcm1h bmNlQ291bnRlcigmKHQpKQogCiAjZGVmaW5lIElOU1RSX1RJTUVfQUREKHgseSkgXApkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtIGIvc3JjL3Rvb2xzL21zdmMv TWt2Y2J1aWxkLnBtCmluZGV4IDdiODU1ZDUxZjAuLmMzYjViNzgwZjUgMTAwNjQ0Ci0tLSBh L3NyYy90b29scy9tc3ZjL01rdmNidWlsZC5wbQorKysgYi9zcmMvdG9vbHMvbXN2Yy9Na3Zj YnVpbGQucG0KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdWIgbWt2Y2J1aWxkCiAJb3VyIEBwZ2Nv bW1vbmFsbGZpbGVzID0gcXcoCiAJICBhcmNoaXZlLmMgYmFzZTY0LmMgY2hlY2tzdW1faGVs cGVyLmMgY29tcHJlc3Npb24uYwogCSAgY29uZmlnX2luZm8uYyBjb250cm9sZGF0YV91dGls cy5jIGQycy5jIGVuY25hbWVzLmMgZXhlYy5jCi0JICBmMnMuYyBmaWxlX3Blcm0uYyBmaWxl X3V0aWxzLmMgaGFzaGZuLmMgaXAuYyBqc29uYXBpLmMKKwkgIGYycy5jIGZpbGVfcGVybS5j IGZpbGVfdXRpbHMuYyBoYXNoZm4uYyBpcC5jIGluc3RyX3RpbWUubyBqc29uYXBpLmMKIAkg IGtleXdvcmRzLmMga3dsb29rdXAuYyBsaW5rLWNhbmFyeS5jIG1kNV9jb21tb24uYwogCSAg cGdfZ2V0X2xpbmUuYyBwZ19semNvbXByZXNzLmMgcGdfcHJuZy5jIHBnZm5hbWVzLmMgcHNw cmludGYuYyByZWxwYXRoLmMKIAkgIHJtdHJlZS5jIHNhc2xwcmVwLmMgc2NyYW0tY29tbW9u LmMgc3RyaW5nLmMgc3RyaW5naW5mby5jIHVuaWNvZGVfbm9ybS5jCi0tIAoyLjM0LjEKCg== --------------RXw8NxW6PZFNIET0TVuey0Hi Content-Type: text/x-patch; charset=UTF-8; name="0003-Refactor-some-instr_time-related-code-v4.patch" Content-Disposition: attachment; filename="0003-Refactor-some-instr_time-related-code-v4.patch" Content-Transfer-Encoding: base64 RnJvbSA0MzYwY2JmMmY5ZWYxMWIxNjlhMTYxODBlZTlhYWFmMDNmM2Q1OWZjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAyIEphbiAyMDIzIDEzOjMyOjU4ICswMTAwClN1YmplY3Q6IFtQQVRD SCAzLzNdIFJlZmFjdG9yIHNvbWUgaW5zdHJfdGltZSByZWxhdGVkIGNvZGUKCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgMyArLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICB8IDQgKystLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMgIHwgNCArKy0tCiBzcmMvYmluL3BzcWwvY29tbW9uLmMgICAg ICAgICAgICAgICAgfCA4ICsrKystLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9u cygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IDk5MjM5OTRiNTAuLjQ5YmU3Yzc2N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKQEAgLTI5OTIsOCArMjk5Miw3IEBAIGNvdW50X25vbmRlbGV0 YWJsZV9wYWdlcyhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKmxvY2tfd2FpdGVyX2RldGVj dGVkKQogCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChjdXJyZW50dGltZSk7CiAJCQllbGFw c2VkID0gY3VycmVudHRpbWU7CiAJCQlJTlNUUl9USU1FX1NVQlRSQUNUKGVsYXBzZWQsIHN0 YXJ0dGltZSk7Ci0JCQlpZiAoKElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGVsYXBzZWQpIC8g MTAwMCkKLQkJCQk+PSBWQUNVVU1fVFJVTkNBVEVfTE9DS19DSEVDS19JTlRFUlZBTCkKKwkJ CWlmIChJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbGFwc2VkKSA+PSBWQUNVVU1fVFJVTkNB VEVfTE9DS19DSEVDS19JTlRFUlZBTCkKIAkJCXsKIAkJCQlpZiAoTG9ja0hhc1dhaXRlcnNS ZWxhdGlvbih2YWNyZWwtPnJlbCwgQWNjZXNzRXhjbHVzaXZlTG9jaykpCiAJCQkJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDkxNDczYjAwZDkuLjFhM2NlOGQyMzkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTIxNzcsNyArMjE3Nyw3IEBA IFhMb2dXcml0ZShYTG9nd3J0UnFzdCBXcml0ZVJxc3QsIFRpbWVMaW5lSUQgdGxpLCBib29s IGZsZXhpYmxlKQogCQkJU2l6ZQkJbmJ5dGVzOwogCQkJU2l6ZQkJbmxlZnQ7CiAJCQlpbnQJ CQl3cml0dGVuOwotCQkJaW5zdHJfdGltZQlzdGFydDsKKwkJCWluc3RyX3RpbWUJc3RhcnQg PSAwOwogCiAJCQkvKiBPSyB0byB3cml0ZSB0aGUgcGFnZShzKSAqLwogCQkJZnJvbSA9IFhM b2dDdGwtPnBhZ2VzICsgc3RhcnRpZHggKiAoU2l6ZSkgWExPR19CTENLU1o7CkBAIC04MTI5 LDcgKzgxMjksNyBAQCB2b2lkCiBpc3N1ZV94bG9nX2ZzeW5jKGludCBmZCwgWExvZ1NlZ05v IHNlZ25vLCBUaW1lTGluZUlEIHRsaSkKIHsKIAljaGFyCSAgICptc2cgPSBOVUxMOwotCWlu c3RyX3RpbWUJc3RhcnQ7CisJaW5zdHJfdGltZQlzdGFydCA9IDA7CiAKIAlBc3NlcnQodGxp ICE9IDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDczZDMw YmY2MTkuLmQzMzY1YjZhMzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j CkBAIC0yODI0LDggKzI4MjQsOCBAQCBGbHVzaEJ1ZmZlcihCdWZmZXJEZXNjICpidWYsIFNN Z3JSZWxhdGlvbiByZWxuKQogewogCVhMb2dSZWNQdHIJcmVjcHRyOwogCUVycm9yQ29udGV4 dENhbGxiYWNrIGVycmNhbGxiYWNrOwotCWluc3RyX3RpbWUJaW9fc3RhcnQsCi0JCQkJaW9f dGltZTsKKwlpbnN0cl90aW1lCWlvX3N0YXJ0ID0gMDsKKwlpbnN0cl90aW1lCWlvX3RpbWUg PSAwOwogCUJsb2NrCQlidWZCbG9jazsKIAljaGFyCSAgICpidWZUb1dyaXRlOwogCXVpbnQz MgkJYnVmX3N0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jIGIvc3Jj L2Jpbi9wc3FsL2NvbW1vbi5jCmluZGV4IGI5ODlkNzkyYWEuLjkwMWJiODQ5MTYgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tb24uYworKysgYi9zcmMvYmluL3BzcWwvY29tbW9u LmMKQEAgLTEyNjksOCArMTI2OSw4IEBAIERlc2NyaWJlUXVlcnkoY29uc3QgY2hhciAqcXVl cnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQogCWJvb2wJCXRpbWluZyA9IHBzZXQudGltaW5n OwogCVBHcmVzdWx0ICAgKnJlc3VsdDsKIAlib29sCQlPSzsKLQlpbnN0cl90aW1lCWJlZm9y ZSwKLQkJCQlhZnRlcjsKKwlpbnN0cl90aW1lCWJlZm9yZSA9IDA7CisJaW5zdHJfdGltZQlh ZnRlciA9IDA7CiAKIAkqZWxhcHNlZF9tc2VjID0gMDsKIApAQCAtMTY4OSw4ICsxNjg5LDgg QEAgRXhlY1F1ZXJ5VXNpbmdDdXJzb3IoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxh cHNlZF9tc2VjKQogCWludAkJCW50dXBsZXM7CiAJaW50CQkJZmV0Y2hfY291bnQ7CiAJY2hh cgkJZmV0Y2hfY21kWzY0XTsKLQlpbnN0cl90aW1lCWJlZm9yZSwKLQkJCQlhZnRlcjsKKwlp bnN0cl90aW1lCWJlZm9yZSA9IDA7CisJaW5zdHJfdGltZQlhZnRlciA9IDA7CiAJaW50CQkJ Zmx1c2hfZXJyb3I7CiAKIAkqZWxhcHNlZF9tc2VjID0gMDsKLS0gCjIuMzQuMQoK --------------RXw8NxW6PZFNIET0TVuey0Hi--