From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 1422 invoked from network); 8 Jun 2021 22:17:05 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 8 Jun 2021 22:17:05 -0000 Received: (qmail 30300 invoked by uid 550); 8 Jun 2021 22:17:03 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 30282 invoked from network); 8 Jun 2021 22:17:03 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=t4nbGX32Ihb3n4afIbnxMlK5VDJDPzpgTe4+6IjOL4g=; b=n+dqIsj4RVxOFgew+WmRt7XuvQiJunyXVN9iik2HNG4TcAF/A2w5J7oixLR7ONnXIY 1dtA6T0OIHXRFQ8ttyAnMbPtn7JJ3ZMWazX+GSspHjYkYLbutkqm+zwOW7J+W9mN70qH +1fsshNTzs+DMU7oZy+B0gK9dPKU3p+NSJFfk/33FshxC0nwkh0EcGAWahw0HE0fpaaa 5E2Fo1uvxMlogJIjuLry2eXdCPyTt4aK5+0GJES90NsfeogC4tBJJ+pL2dWSUMx0ZZ2q JBVFTkW+vCSW0aQtWz4M3rivelIOnlh4cgDv3PdjgowTjGAEv7sXtTWHQHOV3/yHdO1G eMwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=t4nbGX32Ihb3n4afIbnxMlK5VDJDPzpgTe4+6IjOL4g=; b=Ra30dUMNNZBsrETvJwHTNxbQ358GF7sTioEXxdhuKFPc+Sy5wuSs1NJFmpzDj/3+9u MsuwZSrtFOF/36O1gte45mQVzWnYRsh59wNsTQioWbch+ZsVPEoBIL6GyoAcHoAOw4yc eSuGzpOrCaFYIH6rQK2WLNsbwROUn1vg8QvBpiswy29XJ6E+QYnDHra4FN7Au4IQOukY Wo9dGox5Hs6Ht02sXrEoT+zLu1lKgbV3jHArWjmgbyiv8PR++1cqAlTYZ5KtInDR5zmq BQNeGjzD7W4ms6MscMblvsMFIDqy3/ajJ8EaVMCWSTFDsyfddno9PnSUkfzAsXdV1maq Tkfg== X-Gm-Message-State: AOAM533eZLg0b7i/MAkmoIZneXRwyZycjrH3rp/Twh5u8OwoassAD3zJ 2/m5CTAxldC2I+8/cb0mwMB1aX2ooi6qIL3TdPE= X-Google-Smtp-Source: ABdhPJwEtJNIWYx+hiE2S5sdO3raFePF0p8TMbpi24ULIYmPidk0bhGrC9LzJ5iHRJUZGc7VNLr1qfCGlW7DYiTGTU8= X-Received: by 2002:a05:6512:310f:: with SMTP id n15mr16805132lfb.573.1623190611922; Tue, 08 Jun 2021 15:16:51 -0700 (PDT) MIME-Version: 1.0 References: <20210510185837.GD2031@voyager> <20210524220004.GD2546@brightrain.aerifal.cx> In-Reply-To: <20210524220004.GD2546@brightrain.aerifal.cx> From: Martin Vajnar Date: Wed, 9 Jun 2021 00:16:40 +0200 Message-ID: To: Rich Felker Cc: musl@lists.openwall.com, Markus Wichmann , Florian Weimer Content-Type: multipart/mixed; boundary="000000000000d3abea05c4488300" Subject: Re: [musl] Backwards kernel compatibility --000000000000d3abea05c4488300 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Rich, =C3=BAt 25. 5. 2021 v 0:00 odes=C3=ADlatel Rich Felker na= psal: > > On Mon, May 24, 2021 at 03:52:44PM +0200, Martin Vajnar wrote: > > Hi, Markus, > > > > sorry for the late reply it was quite busy lately. You're describing > > exactly the issue, we are facing in our project. We need to use old ker= nel > > which we have only in binary form and have headers for it. At the same = time > > we would like to have the latest musl running on it. > > > > The problem we encounter is that for unsupported (or better said, not > > supported yet) syscalls we get performance overhead because of the ENOS= YS. > > Can you give some information on what syscalls these are and if/how > you measured the performance overhead as being significant? > > > We see 2 options to approach this: > > > > 1. remove the syscalls manually/alter the code to not invoke them (hac= ky) > > 2. during musl compile time (maybe even configure-time), parse the > > supplied kernel headers and based on availability of syscalls use defin= es > > to steer the code execution (more universal) > > > > Would the 2nd case be something that musl community would be interested= in, > > should we choose to implement it for the project? > > No, but hopefully there's a third option: identify whatever place the > fallback is actual a performance bottleneck and do what we can to > mitigate it. If it's really bad, saving the result might be an option, > but we've tried to avoid that both for complexity reasons and because > it could preclude fixing serious problems (like Y2038 EOL) by > live-migrating processes to a newer kernel with new syscalls that > avoid the bug. A better approach is just using the "oldest" syscall > that can actually do the job, which we already try to do in most > places in musl, only relying on the newer one for inputs that require > it. However this is not possible for functions that read back a time, > since the input is external (e.g. the system clock or the filesystem) > and it's not known in advance whether the old syscall could represent > the result. > > It *might* be plausible to memorize the result "new syscall not > available" but drop that memory whenever we see a result that > indicates a failure due to use of the outdated syscall. We're kinda > already doing that with the vdso clock_gettime -- cgt_time32_wrap > disables itself if it ever sees a negative value for seconds. Since updating the kernel is not an option for me, I prepared patch implementing memorizing failed syscall attempt on the time64 variants and on statx syscall, so on next attempt it will skip them and use fallback directly. Attaching the patch in case someone is solving the same issue. Please, let me know, if this approach would be something interesting for upstreaming and if so, if there are any changes I should make. > An alternative approach, especially if this is a matter of time64, to > avoid nonstandard binaries that would be non-future-proof, might be to > patch your kernel with a loadable module that adds dumb translation > layers for the syscalls that are performance bottlenecks. > > Rich Regards, Martin --000000000000d3abea05c4488300 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-store-fallback-paths-for-kernels-without-time64-stat.patch" Content-Disposition: attachment; filename="0001-store-fallback-paths-for-kernels-without-time64-stat.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kpoldc4x0 RnJvbSBjZWIyMzcxYWRhNjczZDI1ODMyOGEwMTk2OTFiZmYwMTRlYTNhYmNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gVmFqbmFyIDxtYXJ0aW4udmFqbmFyQGdtYWlsLmNv bT4KRGF0ZTogVHVlLCA4IEp1biAyMDIxIDIzOjM2OjExICswMjAwClN1YmplY3Q6IFtQQVRDSF0g c3RvcmUgZmFsbGJhY2sgcGF0aHMgZm9yIGtlcm5lbHMgd2l0aG91dCB0aW1lNjQvc3RhdHgKIHN5 c2NhbGxzCgotLS0KIHNyYy9pcGMvc2VtdGltZWRvcC5jICAgICAgICAgICAgICAgICB8ICAxMiAr Ky0tCiBzcmMvbGludXgvY2xvY2tfYWRqdGltZS5jICAgICAgICAgICAgfCAxMDAgKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tCiBzcmMvbGludXgvcHBvbGwuYyAgICAgICAgICAgICAgICAgICAg fCAgMTYgKysrLS0KIHNyYy9saW51eC90aW1lcmZkLmMgICAgICAgICAgICAgICAgICB8ICAyOCAr KysrKy0tLQogc3JjL21pc2MvZ2V0cnVzYWdlLmMgICAgICAgICAgICAgICAgIHwgIDI4ICsrKyst LS0tCiBzcmMvbXEvbXFfdGltZWRyZWNlaXZlLmMgICAgICAgICAgICAgfCAgMTQgKystLQogc3Jj L21xL21xX3RpbWVkc2VuZC5jICAgICAgICAgICAgICAgIHwgIDE0ICsrLS0KIHNyYy9uZXR3b3Jr L3JlY3ZtbXNnLmMgICAgICAgICAgICAgICB8ICAxMyArKy0tCiBzcmMvc2VsZWN0L3BzZWxlY3Qu YyAgICAgICAgICAgICAgICAgfCAgMTQgKystLQogc3JjL3NlbGVjdC9zZWxlY3QuYyAgICAgICAg ICAgICAgICAgIHwgIDE2ICsrKy0tCiBzcmMvc2lnbmFsL3NpZ3RpbWVkd2FpdC5jICAgICAgICAg ICAgfCAgMTQgKystLQogc3JjL3N0YXQvZnN0YXRhdC5jICAgICAgICAgICAgICAgICAgIHwgIDEw ICsrLQogc3JjL3N0YXQvdXRpbWVuc2F0LmMgICAgICAgICAgICAgICAgIHwgIDE0ICsrLS0KIHNy Yy90aHJlYWQvX190aW1lZHdhaXQuYyAgICAgICAgICAgICB8ICAxMiArKy0tCiBzcmMvdGhyZWFk L3B0aHJlYWRfbXV0ZXhfdGltZWRsb2NrLmMgfCAgMTIgKystLQogc3JjL3RpbWUvY2xvY2tfZ2V0 dGltZS5jICAgICAgICAgICAgIHwgIDEyICsrLS0KIHNyYy90aW1lL2Nsb2NrX25hbm9zbGVlcC5j ICAgICAgICAgICB8ICAxNCArKy0tCiBzcmMvdGltZS9jbG9ja19zZXR0aW1lLmMgICAgICAgICAg ICAgfCAgMTQgKystLQogMTggZmlsZXMgY2hhbmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDE0MCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaXBjL3NlbXRpbWVkb3AuYyBiL3NyYy9pcGMv c2VtdGltZWRvcC5jCmluZGV4IDE2MzJlN2IwLi5kOWZlNDA0ZCAxMDA2NDQKLS0tIGEvc3JjL2lw Yy9zZW10aW1lZG9wLmMKKysrIGIvc3JjL2lwYy9zZW10aW1lZG9wLmMKQEAgLTE2LDEzICsxNiwx NyBAQAogaW50IHNlbXRpbWVkb3AoaW50IGlkLCBzdHJ1Y3Qgc2VtYnVmICpidWYsIHNpemVfdCBu LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQogewogI2lmZGVmIFNZU19zZW10aW1lZG9wX3Rp bWU2NAorCXN0YXRpYyBpbnQgdXNlX3NlbXRpbWVkb3BfdGltZTY0ID0gMTsKIAl0aW1lX3QgcyA9 IHRzID8gdHMtPnR2X3NlYyA6IDA7CiAJbG9uZyBucyA9IHRzID8gdHMtPnR2X25zZWMgOiAwOwog CWludCByID0gLUVOT1NZUzsKLQlpZiAoTk9fVElNRTMyIHx8ICFJUzMyQklUKHMpKQotCQlyID0g X19zeXNjYWxsKFNZU19zZW10aW1lZG9wX3RpbWU2NCwgaWQsIGJ1ZiwgbiwKLQkJCXRzID8gKChs b25nIGxvbmdbXSl7cywgbnN9KSA6IDApOwotCWlmIChOT19USU1FMzIgfHwgciE9LUVOT1NZUykg cmV0dXJuIF9fc3lzY2FsbF9yZXQocik7CisJaWYgKHVzZV9zZW10aW1lZG9wX3RpbWU2NCkgewor CQlpZiAoTk9fVElNRTMyIHx8ICFJUzMyQklUKHMpKQorCQkJciA9IF9fc3lzY2FsbChTWVNfc2Vt dGltZWRvcF90aW1lNjQsIGlkLCBidWYsIG4sCisJCQkJdHMgPyAoKGxvbmcgbG9uZ1tdKXtzLCBu c30pIDogMCk7CisJCWlmIChOT19USU1FMzIgfHwgciE9LUVOT1NZUykgcmV0dXJuIF9fc3lzY2Fs bF9yZXQocik7CisJCWVsc2UgdXNlX3NlbXRpbWVkb3BfdGltZTY0ID0gMDsKKwl9CiAJdHMgPSB0 cyA/ICh2b2lkICopKGxvbmdbXSl7Q0xBTVAocyksIG5zfSA6IDA7CiAjZW5kaWYKICNpZiBkZWZp bmVkKFNZU19pcGMpCmRpZmYgLS1naXQgYS9zcmMvbGludXgvY2xvY2tfYWRqdGltZS5jIGIvc3Jj L2xpbnV4L2Nsb2NrX2FkanRpbWUuYwppbmRleCBkNGQwM2QyNC4uYTRkNDM0MDYgMTAwNjQ0Ci0t LSBhL3NyYy9saW51eC9jbG9ja19hZGp0aW1lLmMKKysrIGIvc3JjL2xpbnV4L2Nsb2NrX2FkanRp bWUuYwpAQCAtMzgsNTUgKzM4LDU5IEBAIGludCBjbG9ja19hZGp0aW1lIChjbG9ja2lkX3QgY2xv Y2tfaWQsIHN0cnVjdCB0aW1leCAqdXR4KQogewogCWludCByID0gLUVOT1NZUzsKICNpZmRlZiBT WVNfY2xvY2tfYWRqdGltZTY0Ci0Jc3RydWN0IGt0aW1leDY0IGt0eCA9IHsKLQkJLm1vZGVzID0g dXR4LT5tb2RlcywKLQkJLm9mZnNldCA9IHV0eC0+b2Zmc2V0LAotCQkuZnJlcSA9IHV0eC0+ZnJl cSwKLQkJLm1heGVycm9yID0gdXR4LT5tYXhlcnJvciwKLQkJLmVzdGVycm9yID0gdXR4LT5lc3Rl cnJvciwKLQkJLnN0YXR1cyA9IHV0eC0+c3RhdHVzLAotCQkuY29uc3RhbnQgPSB1dHgtPmNvbnN0 YW50LAotCQkucHJlY2lzaW9uID0gdXR4LT5wcmVjaXNpb24sCi0JCS50b2xlcmFuY2UgPSB1dHgt PnRvbGVyYW5jZSwKLQkJLnRpbWVfc2VjID0gdXR4LT50aW1lLnR2X3NlYywKLQkJLnRpbWVfdXNl YyA9IHV0eC0+dGltZS50dl91c2VjLAotCQkudGljayA9IHV0eC0+dGljaywKLQkJLnBwc2ZyZXEg PSB1dHgtPnBwc2ZyZXEsCi0JCS5qaXR0ZXIgPSB1dHgtPmppdHRlciwKLQkJLnNoaWZ0ID0gdXR4 LT5zaGlmdCwKLQkJLnN0YWJpbCA9IHV0eC0+c3RhYmlsLAotCQkuaml0Y250ID0gdXR4LT5qaXRj bnQsCi0JCS5jYWxjbnQgPSB1dHgtPmNhbGNudCwKLQkJLmVycmNudCA9IHV0eC0+ZXJyY250LAot CQkuc3RiY250ID0gdXR4LT5zdGJjbnQsCi0JCS50YWkgPSB1dHgtPnRhaSwKLQl9OwotCXIgPSBf X3N5c2NhbGwoU1lTX2Nsb2NrX2FkanRpbWU2NCwgY2xvY2tfaWQsICZrdHgpOwotCWlmIChyPj0w KSB7Ci0JCXV0eC0+bW9kZXMgPSBrdHgubW9kZXM7Ci0JCXV0eC0+b2Zmc2V0ID0ga3R4Lm9mZnNl dDsKLQkJdXR4LT5mcmVxID0ga3R4LmZyZXE7Ci0JCXV0eC0+bWF4ZXJyb3IgPSBrdHgubWF4ZXJy b3I7Ci0JCXV0eC0+ZXN0ZXJyb3IgPSBrdHguZXN0ZXJyb3I7Ci0JCXV0eC0+c3RhdHVzID0ga3R4 LnN0YXR1czsKLQkJdXR4LT5jb25zdGFudCA9IGt0eC5jb25zdGFudDsKLQkJdXR4LT5wcmVjaXNp b24gPSBrdHgucHJlY2lzaW9uOwotCQl1dHgtPnRvbGVyYW5jZSA9IGt0eC50b2xlcmFuY2U7Ci0J CXV0eC0+dGltZS50dl9zZWMgPSBrdHgudGltZV9zZWM7Ci0JCXV0eC0+dGltZS50dl91c2VjID0g a3R4LnRpbWVfdXNlYzsKLQkJdXR4LT50aWNrID0ga3R4LnRpY2s7Ci0JCXV0eC0+cHBzZnJlcSA9 IGt0eC5wcHNmcmVxOwotCQl1dHgtPmppdHRlciA9IGt0eC5qaXR0ZXI7Ci0JCXV0eC0+c2hpZnQg PSBrdHguc2hpZnQ7Ci0JCXV0eC0+c3RhYmlsID0ga3R4LnN0YWJpbDsKLQkJdXR4LT5qaXRjbnQg PSBrdHguaml0Y250OwotCQl1dHgtPmNhbGNudCA9IGt0eC5jYWxjbnQ7Ci0JCXV0eC0+ZXJyY250 ID0ga3R4LmVycmNudDsKLQkJdXR4LT5zdGJjbnQgPSBrdHguc3RiY250OwotCQl1dHgtPnRhaSA9 IGt0eC50YWk7CisJc3RhdGljIGludCB1c2VfY2xvY2tfYWRqdGltZTY0ID0gMTsKKwlpZiAodXNl X2Nsb2NrX2FkanRpbWU2NCkgeworCQlzdHJ1Y3Qga3RpbWV4NjQga3R4ID0geworCQkJLm1vZGVz ID0gdXR4LT5tb2RlcywKKwkJCS5vZmZzZXQgPSB1dHgtPm9mZnNldCwKKwkJCS5mcmVxID0gdXR4 LT5mcmVxLAorCQkJLm1heGVycm9yID0gdXR4LT5tYXhlcnJvciwKKwkJCS5lc3RlcnJvciA9IHV0 eC0+ZXN0ZXJyb3IsCisJCQkuc3RhdHVzID0gdXR4LT5zdGF0dXMsCisJCQkuY29uc3RhbnQgPSB1 dHgtPmNvbnN0YW50LAorCQkJLnByZWNpc2lvbiA9IHV0eC0+cHJlY2lzaW9uLAorCQkJLnRvbGVy YW5jZSA9IHV0eC0+dG9sZXJhbmNlLAorCQkJLnRpbWVfc2VjID0gdXR4LT50aW1lLnR2X3NlYywK KwkJCS50aW1lX3VzZWMgPSB1dHgtPnRpbWUudHZfdXNlYywKKwkJCS50aWNrID0gdXR4LT50aWNr LAorCQkJLnBwc2ZyZXEgPSB1dHgtPnBwc2ZyZXEsCisJCQkuaml0dGVyID0gdXR4LT5qaXR0ZXIs CisJCQkuc2hpZnQgPSB1dHgtPnNoaWZ0LAorCQkJLnN0YWJpbCA9IHV0eC0+c3RhYmlsLAorCQkJ LmppdGNudCA9IHV0eC0+aml0Y250LAorCQkJLmNhbGNudCA9IHV0eC0+Y2FsY250LAorCQkJLmVy cmNudCA9IHV0eC0+ZXJyY250LAorCQkJLnN0YmNudCA9IHV0eC0+c3RiY250LAorCQkJLnRhaSA9 IHV0eC0+dGFpLAorCQl9OworCQlyID0gX19zeXNjYWxsKFNZU19jbG9ja19hZGp0aW1lNjQsIGNs b2NrX2lkLCAma3R4KTsKKwkJaWYgKHI+PTApIHsKKwkJCXV0eC0+bW9kZXMgPSBrdHgubW9kZXM7 CisJCQl1dHgtPm9mZnNldCA9IGt0eC5vZmZzZXQ7CisJCQl1dHgtPmZyZXEgPSBrdHguZnJlcTsK KwkJCXV0eC0+bWF4ZXJyb3IgPSBrdHgubWF4ZXJyb3I7CisJCQl1dHgtPmVzdGVycm9yID0ga3R4 LmVzdGVycm9yOworCQkJdXR4LT5zdGF0dXMgPSBrdHguc3RhdHVzOworCQkJdXR4LT5jb25zdGFu dCA9IGt0eC5jb25zdGFudDsKKwkJCXV0eC0+cHJlY2lzaW9uID0ga3R4LnByZWNpc2lvbjsKKwkJ CXV0eC0+dG9sZXJhbmNlID0ga3R4LnRvbGVyYW5jZTsKKwkJCXV0eC0+dGltZS50dl9zZWMgPSBr dHgudGltZV9zZWM7CisJCQl1dHgtPnRpbWUudHZfdXNlYyA9IGt0eC50aW1lX3VzZWM7CisJCQl1 dHgtPnRpY2sgPSBrdHgudGljazsKKwkJCXV0eC0+cHBzZnJlcSA9IGt0eC5wcHNmcmVxOworCQkJ dXR4LT5qaXR0ZXIgPSBrdHguaml0dGVyOworCQkJdXR4LT5zaGlmdCA9IGt0eC5zaGlmdDsKKwkJ CXV0eC0+c3RhYmlsID0ga3R4LnN0YWJpbDsKKwkJCXV0eC0+aml0Y250ID0ga3R4LmppdGNudDsK KwkJCXV0eC0+Y2FsY250ID0ga3R4LmNhbGNudDsKKwkJCXV0eC0+ZXJyY250ID0ga3R4LmVycmNu dDsKKwkJCXV0eC0+c3RiY250ID0ga3R4LnN0YmNudDsKKwkJCXV0eC0+dGFpID0ga3R4LnRhaTsK KwkJfQorCQlpZiAoU1lTX2Nsb2NrX2FkanRpbWUgPT0gU1lTX2Nsb2NrX2FkanRpbWU2NCB8fCBy IT0tRU5PU1lTKQorCQkJcmV0dXJuIF9fc3lzY2FsbF9yZXQocik7CisJCWVsc2UgdXNlX2Nsb2Nr X2FkanRpbWU2NCA9IDA7CiAJfQotCWlmIChTWVNfY2xvY2tfYWRqdGltZSA9PSBTWVNfY2xvY2tf YWRqdGltZTY0IHx8IHIhPS1FTk9TWVMpCi0JCXJldHVybiBfX3N5c2NhbGxfcmV0KHIpOwogCWlm ICgodXR4LT5tb2RlcyAmIEFESl9TRVRPRkZTRVQpICYmICFJUzMyQklUKHV0eC0+dGltZS50dl9z ZWMpKQogCQlyZXR1cm4gX19zeXNjYWxsX3JldCgtRU5PVFNVUCk7CiAjZW5kaWYKZGlmZiAtLWdp dCBhL3NyYy9saW51eC9wcG9sbC5jIGIvc3JjL2xpbnV4L3Bwb2xsLmMKaW5kZXggZTYxNDYwMGEu LjkzOWYzZjFkIDEwMDY0NAotLS0gYS9zcmMvbGludXgvcHBvbGwuYworKysgYi9zcmMvbGludXgv cHBvbGwuYwpAQCAtMTIsMTMgKzEyLDE3IEBAIGludCBwcG9sbChzdHJ1Y3QgcG9sbGZkICpmZHMs IG5mZHNfdCBuLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRvLCBjb25zdCBzaWdzZXRfCiAJdGlt ZV90IHMgPSB0byA/IHRvLT50dl9zZWMgOiAwOwogCWxvbmcgbnMgPSB0byA/IHRvLT50dl9uc2Vj IDogMDsKICNpZmRlZiBTWVNfcHBvbGxfdGltZTY0CisJc3RhdGljIGludCB1c2VfcHBvbGxfdGlt ZTY0ID0gMTsKIAlpbnQgciA9IC1FTk9TWVM7Ci0JaWYgKFNZU19wcG9sbCA9PSBTWVNfcHBvbGxf dGltZTY0IHx8ICFJUzMyQklUKHMpKQotCQlyID0gX19zeXNjYWxsX2NwKFNZU19wcG9sbF90aW1l NjQsIGZkcywgbiwKLQkJCXRvID8gKChsb25nIGxvbmdbXSl7cywgbnN9KSA6IDAsCi0JCQltYXNr LCBfTlNJRy84KTsKLQlpZiAoU1lTX3Bwb2xsID09IFNZU19wcG9sbF90aW1lNjQgfHwgciAhPSAt RU5PU1lTKQotCQlyZXR1cm4gX19zeXNjYWxsX3JldChyKTsKKwlpZiAodXNlX3Bwb2xsX3RpbWU2 NCkgeworCQlpZiAoU1lTX3Bwb2xsID09IFNZU19wcG9sbF90aW1lNjQgfHwgIUlTMzJCSVQocykp CisJCQlyID0gX19zeXNjYWxsX2NwKFNZU19wcG9sbF90aW1lNjQsIGZkcywgbiwKKwkJCQl0byA/ ICgobG9uZyBsb25nW10pe3MsIG5zfSkgOiAwLAorCQkJCW1hc2ssIF9OU0lHLzgpOworCQlpZiAo U1lTX3Bwb2xsID09IFNZU19wcG9sbF90aW1lNjQgfHwgciAhPSAtRU5PU1lTKQorCQkJcmV0dXJu IF9fc3lzY2FsbF9yZXQocik7CisJCWVsc2UgdXNlX3Bwb2xsX3RpbWU2NCA9IDA7CisJfQogCXMg PSBDTEFNUChzKTsKICNlbmRpZgogCXJldHVybiBzeXNjYWxsX2NwKFNZU19wcG9sbCwgZmRzLCBu LApkaWZmIC0tZ2l0IGEvc3JjL2xpbnV4L3RpbWVyZmQuYyBiL3NyYy9saW51eC90aW1lcmZkLmMK aW5kZXggNWJkZmFmMTYuLjY1YmRhMjliIDEwMDY0NAotLS0gYS9zcmMvbGludXgvdGltZXJmZC5j CisrKyBiL3NyYy9saW51eC90aW1lcmZkLmMKQEAgLTE0LDEzICsxNCwxNyBAQCBpbnQgdGltZXJm ZF9zZXR0aW1lKGludCBmZCwgaW50IGZsYWdzLCBjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqbmV3 LCBzdHJ1Y3QgaXRpbQogI2lmZGVmIFNZU190aW1lcmZkX3NldHRpbWU2NAogCXRpbWVfdCBpcyA9 IG5ldy0+aXRfaW50ZXJ2YWwudHZfc2VjLCB2cyA9IG5ldy0+aXRfdmFsdWUudHZfc2VjOwogCWxv bmcgaW5zID0gbmV3LT5pdF9pbnRlcnZhbC50dl9uc2VjLCB2bnMgPSBuZXctPml0X3ZhbHVlLnR2 X25zZWM7CisJc3RhdGljIGludCB1c2VfdGltZXJmZF9zZXR0aW1lNjQgPSAxOwogCWludCByID0g LUVOT1NZUzsKLQlpZiAoU1lTX3RpbWVyZmRfc2V0dGltZSA9PSBTWVNfdGltZXJmZF9zZXR0aW1l NjQKLQkgICAgfHwgIUlTMzJCSVQoaXMpIHx8ICFJUzMyQklUKHZzKSB8fCAoc2l6ZW9mKHRpbWVf dCk+NCAmJiBvbGQpKQotCQlyID0gX19zeXNjYWxsKFNZU190aW1lcmZkX3NldHRpbWU2NCwgZmQs IGZsYWdzLAotCQkJKChsb25nIGxvbmdbXSl7aXMsIGlucywgdnMsIHZuc30pLCBvbGQpOwotCWlm IChTWVNfdGltZXJmZF9zZXR0aW1lID09IFNZU190aW1lcmZkX3NldHRpbWU2NCB8fCByIT0tRU5P U1lTKQotCQlyZXR1cm4gX19zeXNjYWxsX3JldChyKTsKKwlpZiAodXNlX3RpbWVyZmRfc2V0dGlt ZTY0KSB7CisJCWlmIChTWVNfdGltZXJmZF9zZXR0aW1lID09IFNZU190aW1lcmZkX3NldHRpbWU2 NAorCQkJfHwgIUlTMzJCSVQoaXMpIHx8ICFJUzMyQklUKHZzKSB8fCAoc2l6ZW9mKHRpbWVfdCk+ NCAmJiBvbGQpKQorCQkJciA9IF9fc3lzY2FsbChTWVNfdGltZXJmZF9zZXR0aW1lNjQsIGZkLCBm bGFncywKKwkJCQkoKGxvbmcgbG9uZ1tdKXtpcywgaW5zLCB2cywgdm5zfSksIG9sZCk7CisJCWlm IChTWVNfdGltZXJmZF9zZXR0aW1lID09IFNZU190aW1lcmZkX3NldHRpbWU2NCB8fCByIT0tRU5P U1lTKQorCQkJcmV0dXJuIF9fc3lzY2FsbF9yZXQocik7CisJCWVsc2UgdXNlX3RpbWVyZmRfc2V0 dGltZTY0ID0gMDsKKwl9CiAJaWYgKCFJUzMyQklUKGlzKSB8fCAhSVMzMkJJVCh2cykpCiAJCXJl dHVybiBfX3N5c2NhbGxfcmV0KC1FTk9UU1VQKTsKIAlsb25nIG9sZDMyWzRdOwpAQCAtNDAsMTEg KzQ0LDE1IEBAIGludCB0aW1lcmZkX3NldHRpbWUoaW50IGZkLCBpbnQgZmxhZ3MsIGNvbnN0IHN0 cnVjdCBpdGltZXJzcGVjICpuZXcsIHN0cnVjdCBpdGltCiBpbnQgdGltZXJmZF9nZXR0aW1lKGlu dCBmZCwgc3RydWN0IGl0aW1lcnNwZWMgKmN1cikKIHsKICNpZmRlZiBTWVNfdGltZXJmZF9nZXR0 aW1lNjQKKwlzdGF0aWMgaW50IHVzZV90aW1lcmZkX2dldHRpbWU2NCA9IDE7CiAJaW50IHIgPSAt RU5PU1lTOwotCWlmIChzaXplb2YodGltZV90KSA+IDQpCi0JCXIgPSBfX3N5c2NhbGwoU1lTX3Rp bWVyZmRfZ2V0dGltZTY0LCBmZCwgY3VyKTsKLQlpZiAoU1lTX3RpbWVyZmRfZ2V0dGltZSA9PSBT WVNfdGltZXJmZF9nZXR0aW1lNjQgfHwgciE9LUVOT1NZUykKLQkJcmV0dXJuIF9fc3lzY2FsbF9y ZXQocik7CisJaWYgKHVzZV90aW1lcmZkX2dldHRpbWU2NCkgeworCQlpZiAoc2l6ZW9mKHRpbWVf dCkgPiA0KQorCQkJciA9IF9fc3lzY2FsbChTWVNfdGltZXJmZF9nZXR0aW1lNjQsIGZkLCBjdXIp OworCQlpZiAoU1lTX3RpbWVyZmRfZ2V0dGltZSA9PSBTWVNfdGltZXJmZF9nZXR0aW1lNjQgfHwg ciE9LUVOT1NZUykKKwkJCXJldHVybiBfX3N5c2NhbGxfcmV0KHIpOworCQllbHNlIHVzZV90aW1l cmZkX2dldHRpbWU2NCA9IDA7CisJfQogCWxvbmcgY3VyMzJbNF07CiAJciA9IF9fc3lzY2FsbChT WVNfdGltZXJmZF9nZXR0aW1lLCBmZCwgY3VyMzIpOwogCWlmICghcikgewpkaWZmIC0tZ2l0IGEv c3JjL21pc2MvZ2V0cnVzYWdlLmMgYi9zcmMvbWlzYy9nZXRydXNhZ2UuYwppbmRleCA4ZTAzZTJl My4uNDdkODc5ODEgMTAwNjQ0Ci0tLSBhL3NyYy9taXNjL2dldHJ1c2FnZS5jCisrKyBiL3NyYy9t aXNjL2dldHJ1c2FnZS5jCkBAIC03LDE5ICs3LDIzIEBAIGludCBnZXRydXNhZ2UoaW50IHdobywg c3RydWN0IHJ1c2FnZSAqcnUpCiB7CiAJaW50IHI7CiAjaWZkZWYgU1lTX2dldHJ1c2FnZV90aW1l NjQKLQlsb25nIGxvbmcga3J1NjRbMThdOwotCXIgPSBfX3N5c2NhbGwoU1lTX2dldHJ1c2FnZV90 aW1lNjQsIHdobywga3J1NjQpOwotCWlmICghcikgewotCQlydS0+cnVfdXRpbWUgPSAoc3RydWN0 IHRpbWV2YWwpCi0JCQl7IC50dl9zZWMgPSBrcnU2NFswXSwgLnR2X3VzZWMgPSBrcnU2NFsxXSB9 OwotCQlydS0+cnVfc3RpbWUgPSAoc3RydWN0IHRpbWV2YWwpCi0JCQl7IC50dl9zZWMgPSBrcnU2 NFsyXSwgLnR2X3VzZWMgPSBrcnU2NFszXSB9OwotCQljaGFyICpzbG90cyA9IChjaGFyICopJnJ1 LT5ydV9tYXhyc3M7Ci0JCWZvciAoaW50IGk9MDsgaTwxNDsgaSsrKQotCQkJKihsb25nICopKHNs b3RzICsgaSpzaXplb2YobG9uZykpID0ga3J1NjRbNCtpXTsKKwlzdGF0aWMgaW50IHVzZV9nZXRy dXNhZ2VfdGltZTY0ID0gMTsKKwlpZiAodXNlX2dldHJ1c2FnZV90aW1lNjQpIHsKKwkJbG9uZyBs b25nIGtydTY0WzE4XTsKKwkJciA9IF9fc3lzY2FsbChTWVNfZ2V0cnVzYWdlX3RpbWU2NCwgd2hv LCBrcnU2NCk7CisJCWlmICghcikgeworCQkJcnUtPnJ1X3V0aW1lID0gKHN0cnVjdCB0aW1ldmFs KQorCQkJCXsgLnR2X3NlYyA9IGtydTY0WzBdLCAudHZfdXNlYyA9IGtydTY0WzFdIH07CisJCQly dS0+cnVfc3RpbWUgPSAoc3RydWN0IHRpbWV2YWwpCisJCQkJeyAudHZfc2VjID0ga3J1NjRbMl0s IC50dl91c2VjID0ga3J1NjRbM10gfTsKKwkJCWNoYXIgKnNsb3RzID0gKGNoYXIgKikmcnUtPnJ1 X21heHJzczsKKwkJCWZvciAoaW50IGk9MDsgaTwxNDsgaSsrKQorCQkJCSoobG9uZyAqKShzbG90 cyArIGkqc2l6ZW9mKGxvbmcpKSA9IGtydTY0WzQraV07CisJCX0KKwkJaWYgKFNZU19nZXRydXNh Z2VfdGltZTY0ID09IFNZU19nZXRydXNhZ2UgfHwgciAhPSAtRU5PU1lTKQorCQkJcmV0dXJuIF9f c3lzY2FsbF9yZXQocik7CisJCWVsc2UgdXNlX2dldHJ1c2FnZV90aW1lNjQgPSAwOwogCX0KLQlp ZiAoU1lTX2dldHJ1c2FnZV90aW1lNjQgPT0gU1lTX2dldHJ1c2FnZSB8fCByICE9IC1FTk9TWVMp Ci0JCXJldHVybiBfX3N5c2NhbGxfcmV0KHIpOwogI2VuZGlmCiAJY2hhciAqZGVzdCA9IChjaGFy ICopJnJ1LT5ydV9tYXhyc3MgLSA0KnNpemVvZihsb25nKTsKIAlyID0gX19zeXNjYWxsKFNZU19n ZXRydXNhZ2UsIHdobywgZGVzdCk7CmRpZmYgLS1naXQgYS9zcmMvbXEvbXFfdGltZWRyZWNlaXZl LmMgYi9zcmMvbXEvbXFfdGltZWRyZWNlaXZlLmMKaW5kZXggZjQxYjY2NDIuLjQzYzRmZWY2IDEw MDY0NAotLS0gYS9zcmMvbXEvbXFfdGltZWRyZWNlaXZlLmMKKysrIGIvc3JjL21xL21xX3RpbWVk cmVjZWl2ZS5jCkBAIC04LDE0ICs4LDE4IEBACiBzc2l6ZV90IG1xX3RpbWVkcmVjZWl2ZShtcWRf dCBtcWQsIGNoYXIgKnJlc3RyaWN0IG1zZywgc2l6ZV90IGxlbiwgdW5zaWduZWQgKnJlc3RyaWN0 IHByaW8sIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqcmVzdHJpY3QgYXQpCiB7CiAjaWZkZWYgU1lT X21xX3RpbWVkcmVjZWl2ZV90aW1lNjQKKwlzdGF0aWMgaW50IHVzZV9tcV90aW1lZHJlY2VpdmVf dGltZTY0ID0gMTsKIAl0aW1lX3QgcyA9IGF0ID8gYXQtPnR2X3NlYyA6IDA7CiAJbG9uZyBucyA9 IGF0ID8gYXQtPnR2X25zZWMgOiAwOwogCWxvbmcgciA9IC1FTk9TWVM7Ci0JaWYgKFNZU19tcV90 aW1lZHJlY2VpdmUgPT0gU1lTX21xX3RpbWVkcmVjZWl2ZV90aW1lNjQgfHwgIUlTMzJCSVQocykp Ci0JCXIgPSBfX3N5c2NhbGxfY3AoU1lTX21xX3RpbWVkcmVjZWl2ZV90aW1lNjQsIG1xZCwgbXNn LCBsZW4sIHByaW8sCi0JCQlhdCA/ICgobG9uZyBsb25nIFtdKXthdC0+dHZfc2VjLCBhdC0+dHZf bnNlY30pIDogMCk7Ci0JaWYgKFNZU19tcV90aW1lZHJlY2VpdmUgPT0gU1lTX21xX3RpbWVkcmVj ZWl2ZV90aW1lNjQgfHwgciAhPSAtRU5PU1lTKQotCQlyZXR1cm4gX19zeXNjYWxsX3JldChyKTsK KwlpZiAodXNlX21xX3RpbWVkcmVjZWl2ZV90aW1lNjQpIHsKKwkJaWYgKFNZU19tcV90aW1lZHJl Y2VpdmUgPT0gU1lTX21xX3RpbWVkcmVjZWl2ZV90aW1lNjQgfHwgIUlTMzJCSVQocykpCisJCQly ID0gX19zeXNjYWxsX2NwKFNZU19tcV90aW1lZHJlY2VpdmVfdGltZTY0LCBtcWQsIG1zZywgbGVu LCBwcmlvLAorCQkJCWF0ID8gKChsb25nIGxvbmcgW10pe2F0LT50dl9zZWMsIGF0LT50dl9uc2Vj fSkgOiAwKTsKKwkJaWYgKFNZU19tcV90aW1lZHJlY2VpdmUgPT0gU1lTX21xX3RpbWVkcmVjZWl2 ZV90aW1lNjQgfHwgciAhPSAtRU5PU1lTKQorCQkJcmV0dXJuIF9fc3lzY2FsbF9yZXQocik7CisJ CWVsc2UgdXNlX21xX3RpbWVkcmVjZWl2ZV90aW1lNjQgPSAwOworCX0KIAlyZXR1cm4gc3lzY2Fs bF9jcChTWVNfbXFfdGltZWRyZWNlaXZlLCBtcWQsIG1zZywgbGVuLCBwcmlvLAogCQlhdCA/ICgo bG9uZ1tdKXtDTEFNUChzKSwgbnN9KSA6IDApOwogI2Vsc2UKZGlmZiAtLWdpdCBhL3NyYy9tcS9t cV90aW1lZHNlbmQuYyBiL3NyYy9tcS9tcV90aW1lZHNlbmQuYwppbmRleCA1NmNmY2JiOC4uNzcx NjQwOTMgMTAwNjQ0Ci0tLSBhL3NyYy9tcS9tcV90aW1lZHNlbmQuYworKysgYi9zcmMvbXEvbXFf dGltZWRzZW5kLmMKQEAgLTgsMTQgKzgsMTggQEAKIGludCBtcV90aW1lZHNlbmQobXFkX3QgbXFk LCBjb25zdCBjaGFyICptc2csIHNpemVfdCBsZW4sIHVuc2lnbmVkIHByaW8sIGNvbnN0IHN0cnVj dCB0aW1lc3BlYyAqYXQpCiB7CiAjaWZkZWYgU1lTX21xX3RpbWVkc2VuZF90aW1lNjQKKwlzdGF0 aWMgaW50IHVzZV9tcV90aW1lZHNlbmRfdGltZTY0ID0gMTsKIAl0aW1lX3QgcyA9IGF0ID8gYXQt PnR2X3NlYyA6IDA7CiAJbG9uZyBucyA9IGF0ID8gYXQtPnR2X25zZWMgOiAwOwogCWxvbmcgciA9 IC1FTk9TWVM7Ci0JaWYgKFNZU19tcV90aW1lZHNlbmQgPT0gU1lTX21xX3RpbWVkc2VuZF90aW1l NjQgfHwgIUlTMzJCSVQocykpCi0JCXIgPSBfX3N5c2NhbGxfY3AoU1lTX21xX3RpbWVkc2VuZF90 aW1lNjQsIG1xZCwgbXNnLCBsZW4sIHByaW8sCi0JCQlhdCA/ICgobG9uZyBsb25nIFtdKXthdC0+ dHZfc2VjLCBhdC0+dHZfbnNlY30pIDogMCk7Ci0JaWYgKFNZU19tcV90aW1lZHNlbmQgPT0gU1lT X21xX3RpbWVkc2VuZF90aW1lNjQgfHwgciAhPSAtRU5PU1lTKQotCQlyZXR1cm4gX19zeXNjYWxs X3JldChyKTsKKwlpZiAodXNlX21xX3RpbWVkc2VuZF90aW1lNjQpIHsKKwkJaWYgKFNZU19tcV90 aW1lZHNlbmQgPT0gU1lTX21xX3RpbWVkc2VuZF90aW1lNjQgfHwgIUlTMzJCSVQocykpCisJCQly ID0gX19zeXNjYWxsX2NwKFNZU19tcV90aW1lZHNlbmRfdGltZTY0LCBtcWQsIG1zZywgbGVuLCBw cmlvLAorCQkJCWF0ID8gKChsb25nIGxvbmcgW10pe2F0LT50dl9zZWMsIGF0LT50dl9uc2VjfSkg OiAwKTsKKwkJaWYgKFNZU19tcV90aW1lZHNlbmQgPT0gU1lTX21xX3RpbWVkc2VuZF90aW1lNjQg fHwgciAhPSAtRU5PU1lTKQorCQkJcmV0dXJuIF9fc3lzY2FsbF9yZXQocik7CisJCWVsc2UgdXNl X21xX3RpbWVkc2VuZF90aW1lNjQgPSAwOworCX0KIAlyZXR1cm4gc3lzY2FsbF9jcChTWVNfbXFf dGltZWRzZW5kLCBtcWQsIG1zZywgbGVuLCBwcmlvLAogCQlhdCA/ICgobG9uZ1tdKXtDTEFNUChz KSwgbnN9KSA6IDApOwogI2Vsc2UKZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL3JlY3ZtbXNnLmMg Yi9zcmMvbmV0d29yay9yZWN2bW1zZy5jCmluZGV4IDI5NzhlMmY2Li5lYTYwMzg1NCAxMDA2NDQK LS0tIGEvc3JjL25ldHdvcmsvcmVjdm1tc2cuYworKysgYi9zcmMvbmV0d29yay9yZWN2bW1zZy5j CkBAIC0xOSwxMiArMTksMTcgQEAgaW50IHJlY3ZtbXNnKGludCBmZCwgc3RydWN0IG1tc2doZHIg Km1zZ3ZlYywgdW5zaWduZWQgaW50IHZsZW4sIHVuc2lnbmVkIGludCBmbGEKIAkJbWgtPm1zZ19o ZHIuX19wYWQxID0gbWgtPm1zZ19oZHIuX19wYWQyID0gMDsKICNlbmRpZgogI2lmZGVmIFNZU19y ZWN2bW1zZ190aW1lNjQKKwlzdGF0aWMgaW50IHVzZV9yZWN2bW1zZ190aW1lNjQgPSAxOwogCXRp bWVfdCBzID0gdGltZW91dCA/IHRpbWVvdXQtPnR2X3NlYyA6IDA7CiAJbG9uZyBucyA9IHRpbWVv dXQgPyB0aW1lb3V0LT50dl9uc2VjIDogMDsKLQlpbnQgciA9IF9fc3lzY2FsbF9jcChTWVNfcmVj dm1tc2dfdGltZTY0LCBmZCwgbXNndmVjLCB2bGVuLCBmbGFncywKLQkJCXRpbWVvdXQgPyAoKGxv bmcgbG9uZ1tdKXtzLCBuc30pIDogMCk7Ci0JaWYgKFNZU19yZWN2bW1zZyA9PSBTWVNfcmVjdm1t c2dfdGltZTY0IHx8IHIhPS1FTk9TWVMpCi0JCXJldHVybiBfX3N5c2NhbGxfcmV0KHIpOworCWlu dCByOworCWlmICh1c2VfcmVjdm1tc2dfdGltZTY0KSB7CisJCXIgPSBfX3N5c2NhbGxfY3AoU1lT X3JlY3ZtbXNnX3RpbWU2NCwgZmQsIG1zZ3ZlYywgdmxlbiwgZmxhZ3MsCisJCQkJdGltZW91dCA/ ICgobG9uZyBsb25nW10pe3MsIG5zfSkgOiAwKTsKKwkJaWYgKFNZU19yZWN2bW1zZyA9PSBTWVNf cmVjdm1tc2dfdGltZTY0IHx8IHIhPS1FTk9TWVMpCisJCQlyZXR1cm4gX19zeXNjYWxsX3JldChy KTsKKwkJZWxzZSB1c2VfcmVjdm1tc2dfdGltZTY0ID0gMDsKKwl9CiAJaWYgKHZsZW4gPiBJT1Zf TUFYKSB2bGVuID0gSU9WX01BWDsKIAlzb2NrbGVuX3QgY3NpemVbdmxlbl07CiAJZm9yIChpbnQg aT0wOyBpPHZsZW47IGkrKykgY3NpemVbaV0gPSBtc2d2ZWNbaV0ubXNnX2hkci5tc2dfY29udHJv bGxlbjsKZGlmZiAtLWdpdCBhL3NyYy9zZWxlY3QvcHNlbGVjdC5jIGIvc3JjL3NlbGVjdC9wc2Vs ZWN0LmMKaW5kZXggNTRjZmIyOTEuLmVmMjIxZjE0IDEwMDY0NAotLS0gYS9zcmMvc2VsZWN0L3Bz ZWxlY3QuYworKysgYi9zcmMvc2VsZWN0L3BzZWxlY3QuYwpAQCAtMTMsMTIgKzEzLDE2IEBAIGlu dCBwc2VsZWN0KGludCBuLCBmZF9zZXQgKnJlc3RyaWN0IHJmZHMsIGZkX3NldCAqcmVzdHJpY3Qg d2ZkcywgZmRfc2V0ICpyZXN0cmljCiAJdGltZV90IHMgPSB0cyA/IHRzLT50dl9zZWMgOiAwOwog CWxvbmcgbnMgPSB0cyA/IHRzLT50dl9uc2VjIDogMDsKICNpZmRlZiBTWVNfcHNlbGVjdDZfdGlt ZTY0CisJc3RhdGljIGludCB1c2VfcHNlbGVjdDZfdGltZTY0ID0gMTsKIAlpbnQgciA9IC1FTk9T WVM7Ci0JaWYgKFNZU19wc2VsZWN0NiA9PSBTWVNfcHNlbGVjdDZfdGltZTY0IHx8ICFJUzMyQklU KHMpKQotCQlyID0gX19zeXNjYWxsX2NwKFNZU19wc2VsZWN0Nl90aW1lNjQsIG4sIHJmZHMsIHdm ZHMsIGVmZHMsCi0JCQl0cyA/ICgobG9uZyBsb25nW10pe3MsIG5zfSkgOiAwLCBkYXRhKTsKLQlp ZiAoU1lTX3BzZWxlY3Q2ID09IFNZU19wc2VsZWN0Nl90aW1lNjQgfHwgciE9LUVOT1NZUykKLQkJ cmV0dXJuIF9fc3lzY2FsbF9yZXQocik7CisJaWYgKHVzZV9wc2VsZWN0Nl90aW1lNjQpIHsKKwkJ aWYgKFNZU19wc2VsZWN0NiA9PSBTWVNfcHNlbGVjdDZfdGltZTY0IHx8ICFJUzMyQklUKHMpKQor CQkJciA9IF9fc3lzY2FsbF9jcChTWVNfcHNlbGVjdDZfdGltZTY0LCBuLCByZmRzLCB3ZmRzLCBl ZmRzLAorCQkJCXRzID8gKChsb25nIGxvbmdbXSl7cywgbnN9KSA6IDAsIGRhdGEpOworCQlpZiAo U1lTX3BzZWxlY3Q2ID09IFNZU19wc2VsZWN0Nl90aW1lNjQgfHwgciE9LUVOT1NZUykKKwkJCXJl dHVybiBfX3N5c2NhbGxfcmV0KHIpOworCQllbHNlIHVzZV9wc2VsZWN0Nl90aW1lNjQgPSAwOwor CX0KIAlzID0gQ0xBTVAocyk7CiAjZW5kaWYKIAlyZXR1cm4gc3lzY2FsbF9jcChTWVNfcHNlbGVj dDYsIG4sIHJmZHMsIHdmZHMsIGVmZHMsCmRpZmYgLS1naXQgYS9zcmMvc2VsZWN0L3NlbGVjdC5j IGIvc3JjL3NlbGVjdC9zZWxlY3QuYwppbmRleCA4YTc4Njg4NC4uODEwY2Y0NTAgMTAwNjQ0Ci0t LSBhL3NyYy9zZWxlY3Qvc2VsZWN0LmMKKysrIGIvc3JjL3NlbGVjdC9zZWxlY3QuYwpAQCAtMjYs MTMgKzI2LDE3IEBAIGludCBzZWxlY3QoaW50IG4sIGZkX3NldCAqcmVzdHJpY3QgcmZkcywgZmRf c2V0ICpyZXN0cmljdCB3ZmRzLCBmZF9zZXQgKnJlc3RyaWN0CiAJfQogCiAjaWZkZWYgU1lTX3Bz ZWxlY3Q2X3RpbWU2NAorCXN0YXRpYyBpbnQgdXNlX3BzZWxlY3Q2X3RpbWU2NCA9IDE7CiAJaW50 IHIgPSAtRU5PU1lTOwotCWlmIChTWVNfcHNlbGVjdDYgPT0gU1lTX3BzZWxlY3Q2X3RpbWU2NCB8 fCAhSVMzMkJJVChzKSkKLQkJciA9IF9fc3lzY2FsbF9jcChTWVNfcHNlbGVjdDZfdGltZTY0LCBu LCByZmRzLCB3ZmRzLCBlZmRzLAotCQkJdHYgPyAoKGxvbmcgbG9uZ1tdKXtzLCBuc30pIDogMCwK LQkJCSgoc3lzY2FsbF9hcmdfdFtdKXsgMCwgX05TSUcvOCB9KSk7Ci0JaWYgKFNZU19wc2VsZWN0 NiA9PSBTWVNfcHNlbGVjdDZfdGltZTY0IHx8IHIhPS1FTk9TWVMpCi0JCXJldHVybiBfX3N5c2Nh bGxfcmV0KHIpOworCWlmICh1c2VfcHNlbGVjdDZfdGltZTY0KSB7CisJCWlmIChTWVNfcHNlbGVj dDYgPT0gU1lTX3BzZWxlY3Q2X3RpbWU2NCB8fCAhSVMzMkJJVChzKSkKKwkJCXIgPSBfX3N5c2Nh bGxfY3AoU1lTX3BzZWxlY3Q2X3RpbWU2NCwgbiwgcmZkcywgd2ZkcywgZWZkcywKKwkJCQl0diA/ ICgobG9uZyBsb25nW10pe3MsIG5zfSkgOiAwLAorCQkJCSgoc3lzY2FsbF9hcmdfdFtdKXsgMCwg X05TSUcvOCB9KSk7CisJCWlmIChTWVNfcHNlbGVjdDYgPT0gU1lTX3BzZWxlY3Q2X3RpbWU2NCB8 fCByIT0tRU5PU1lTKQorCQkJcmV0dXJuIF9fc3lzY2FsbF9yZXQocik7CisJCWVsc2UgdXNlX3Bz ZWxlY3Q2X3RpbWU2NCA9IDA7CisJfQogI2VuZGlmCiAjaWZkZWYgU1lTX3NlbGVjdAogCXJldHVy biBzeXNjYWxsX2NwKFNZU19zZWxlY3QsIG4sIHJmZHMsIHdmZHMsIGVmZHMsCmRpZmYgLS1naXQg YS9zcmMvc2lnbmFsL3NpZ3RpbWVkd2FpdC5jIGIvc3JjL3NpZ25hbC9zaWd0aW1lZHdhaXQuYwpp bmRleCAxMjg3MTc0ZS4uZWZjNzg2ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9zaWduYWwvc2lndGltZWR3 YWl0LmMKKysrIGIvc3JjL3NpZ25hbC9zaWd0aW1lZHdhaXQuYwpAQCAtOCwxNCArOCwxOCBAQAog c3RhdGljIGludCBkb19zaWd0aW1lZHdhaXQoY29uc3Qgc2lnc2V0X3QgKnJlc3RyaWN0IG1hc2ss IHNpZ2luZm9fdCAqcmVzdHJpY3Qgc2ksIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqcmVzdHJpY3Qg dHMpCiB7CiAjaWZkZWYgU1lTX3J0X3NpZ3RpbWVkd2FpdF90aW1lNjQKKwlzdGF0aWMgaW50IHVz ZV9ydF9zaWd0aW1lZHdhaXRfdGltZTY0ID0gMTsKIAl0aW1lX3QgcyA9IHRzID8gdHMtPnR2X3Nl YyA6IDA7CiAJbG9uZyBucyA9IHRzID8gdHMtPnR2X25zZWMgOiAwOwogCWludCByID0gLUVOT1NZ UzsKLQlpZiAoU1lTX3J0X3NpZ3RpbWVkd2FpdCA9PSBTWVNfcnRfc2lndGltZWR3YWl0X3RpbWU2 NCB8fCAhSVMzMkJJVChzKSkKLQkJciA9IF9fc3lzY2FsbF9jcChTWVNfcnRfc2lndGltZWR3YWl0 X3RpbWU2NCwgbWFzaywgc2ksCi0JCQl0cyA/ICgobG9uZyBsb25nW10pe3MsIG5zfSkgOiAwLCBf TlNJRy84KTsKLQlpZiAoU1lTX3J0X3NpZ3RpbWVkd2FpdCA9PSBTWVNfcnRfc2lndGltZWR3YWl0 X3RpbWU2NCB8fCByIT0tRU5PU1lTKQotCQlyZXR1cm4gcjsKKwlpZiAodXNlX3J0X3NpZ3RpbWVk d2FpdF90aW1lNjQpIHsKKwkJaWYgKFNZU19ydF9zaWd0aW1lZHdhaXQgPT0gU1lTX3J0X3NpZ3Rp bWVkd2FpdF90aW1lNjQgfHwgIUlTMzJCSVQocykpCisJCQlyID0gX19zeXNjYWxsX2NwKFNZU19y dF9zaWd0aW1lZHdhaXRfdGltZTY0LCBtYXNrLCBzaSwKKwkJCQl0cyA/ICgobG9uZyBsb25nW10p e3MsIG5zfSkgOiAwLCBfTlNJRy84KTsKKwkJaWYgKFNZU19ydF9zaWd0aW1lZHdhaXQgPT0gU1lT X3J0X3NpZ3RpbWVkd2FpdF90aW1lNjQgfHwgciE9LUVOT1NZUykKKwkJCXJldHVybiByOworCQll bHNlIHVzZV9ydF9zaWd0aW1lZHdhaXRfdGltZTY0ID0gMDsKKwl9CiAJcmV0dXJuIF9fc3lzY2Fs bF9jcChTWVNfcnRfc2lndGltZWR3YWl0LCBtYXNrLCBzaSwKIAkJdHMgPyAoKGxvbmdbXSl7Q0xB TVAocyksIG5zfSkgOiAwLCBfTlNJRy84KTs7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL3N0YXQv ZnN0YXRhdC5jIGIvc3JjL3N0YXQvZnN0YXRhdC5jCmluZGV4IGRlMTY1YjVjLi5lOGU4Yzg2NiAx MDA2NDQKLS0tIGEvc3JjL3N0YXQvZnN0YXRhdC5jCisrKyBiL3NyYy9zdGF0L2ZzdGF0YXQuYwpA QCAtMTMzLDEwICsxMzMsMTQgQEAgc3RhdGljIGludCBmc3RhdGF0X2tzdGF0KGludCBmZCwgY29u c3QgY2hhciAqcmVzdHJpY3QgcGF0aCwgc3RydWN0IHN0YXQgKnJlc3RyaWMKIAogaW50IGZzdGF0 YXQoaW50IGZkLCBjb25zdCBjaGFyICpyZXN0cmljdCBwYXRoLCBzdHJ1Y3Qgc3RhdCAqcmVzdHJp Y3Qgc3QsIGludCBmbGFnKQogeworCXN0YXRpYyBpbnQgdXNlX3N0YXR4ID0gMTsKIAlpbnQgcmV0 OwotCWlmIChzaXplb2YoKHN0cnVjdCBrc3RhdCl7MH0uc3RfYXRpbWVfc2VjKSA8IHNpemVvZih0 aW1lX3QpKSB7Ci0JCXJldCA9IGZzdGF0YXRfc3RhdHgoZmQsIHBhdGgsIHN0LCBmbGFnKTsKLQkJ aWYgKHJldCE9LUVOT1NZUykgcmV0dXJuIF9fc3lzY2FsbF9yZXQocmV0KTsKKwlpZiAodXNlX3N0 YXR4KSB7CisJCWlmIChzaXplb2YoKHN0cnVjdCBrc3RhdCl7MH0uc3RfYXRpbWVfc2VjKSA8IHNp emVvZih0aW1lX3QpKSB7CisJCQlyZXQgPSBmc3RhdGF0X3N0YXR4KGZkLCBwYXRoLCBzdCwgZmxh Zyk7CisJCQlpZiAocmV0IT0tRU5PU1lTKSByZXR1cm4gX19zeXNjYWxsX3JldChyZXQpOworCQkJ ZWxzZSB1c2Vfc3RhdHggPSAwOworCQl9CiAJfQogCXJldCA9IGZzdGF0YXRfa3N0YXQoZmQsIHBh dGgsIHN0LCBmbGFnKTsKIAlyZXR1cm4gX19zeXNjYWxsX3JldChyZXQpOwpkaWZmIC0tZ2l0IGEv c3JjL3N0YXQvdXRpbWVuc2F0LmMgYi9zcmMvc3RhdC91dGltZW5zYXQuYwppbmRleCA3MzA3MjNh OS4uYWRkZTdlNGUgMTAwNjQ0Ci0tLSBhL3NyYy9zdGF0L3V0aW1lbnNhdC5jCisrKyBiL3NyYy9z dGF0L3V0aW1lbnNhdC5jCkBAIC0xMyw2ICsxMyw3IEBAIGludCB1dGltZW5zYXQoaW50IGZkLCBj b25zdCBjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0sIGludCBmbGFn CiAJaWYgKHRpbWVzICYmIHRpbWVzWzBdLnR2X25zZWM9PVVUSU1FX05PVyAmJiB0aW1lc1sxXS50 dl9uc2VjPT1VVElNRV9OT1cpCiAJCXRpbWVzID0gMDsKICNpZmRlZiBTWVNfdXRpbWVuc2F0X3Rp bWU2NAorCXN0YXRpYyBpbnQgdXNlX3V0aW1lbnNhdF90aW1lNjQgPSAxOwogCXIgPSAtRU5PU1lT OwogCXRpbWVfdCBzMD0wLCBzMT0wOwogCWxvbmcgbnMwPTAsIG5zMT0wOwpAQCAtMjIsMTEgKzIz LDE0IEBAIGludCB1dGltZW5zYXQoaW50IGZkLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBzdHJ1 Y3QgdGltZXNwZWMgdGltZXNbMl0sIGludCBmbGFnCiAJCWlmICghTlNfU1BFQ0lBTChuczApKSBz MCA9IHRpbWVzWzBdLnR2X3NlYzsKIAkJaWYgKCFOU19TUEVDSUFMKG5zMSkpIHMxID0gdGltZXNb MV0udHZfc2VjOwogCX0KLQlpZiAoU1lTX3V0aW1lbnNhdCA9PSBTWVNfdXRpbWVuc2F0X3RpbWU2 NCB8fCAhSVMzMkJJVChzMCkgfHwgIUlTMzJCSVQoczEpKQotCQlyID0gX19zeXNjYWxsKFNZU191 dGltZW5zYXRfdGltZTY0LCBmZCwgcGF0aCwgdGltZXMgPwotCQkJKChsb25nIGxvbmdbXSl7czAs IG5zMCwgczEsIG5zMX0pIDogMCwgZmxhZ3MpOwotCWlmIChTWVNfdXRpbWVuc2F0ID09IFNZU191 dGltZW5zYXRfdGltZTY0IHx8IHIhPS1FTk9TWVMpCi0JCXJldHVybiBfX3N5c2NhbGxfcmV0KHIp OworCWlmICh1c2VfdXRpbWVuc2F0X3RpbWU2NCkgeworCQlpZiAoU1lTX3V0aW1lbnNhdCA9PSBT WVNfdXRpbWVuc2F0X3RpbWU2NCB8fCAhSVMzMkJJVChzMCkgfHwgIUlTMzJCSVQoczEpKQorCQkJ ciA9IF9fc3lzY2FsbChTWVNfdXRpbWVuc2F0X3RpbWU2NCwgZmQsIHBhdGgsIHRpbWVzID8KKwkJ CQkoKGxvbmcgbG9uZ1tdKXtzMCwgbnMwLCBzMSwgbnMxfSkgOiAwLCBmbGFncyk7CisJCWlmIChT WVNfdXRpbWVuc2F0ID09IFNZU191dGltZW5zYXRfdGltZTY0IHx8IHIhPS1FTk9TWVMpCisJCQly ZXR1cm4gX19zeXNjYWxsX3JldChyKTsKKwkJZWxzZSB1c2VfdXRpbWVuc2F0X3RpbWU2NCA9IDA7 CisJfQogCWlmICghSVMzMkJJVChzMCkgfHwgIUlTMzJCSVQoczEpKQogCQlyZXR1cm4gX19zeXNj YWxsX3JldCgtRU5PVFNVUCk7CiAJciA9IF9fc3lzY2FsbChTWVNfdXRpbWVuc2F0LCBmZCwgcGF0 aCwKZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvX190aW1lZHdhaXQuYyBiL3NyYy90aHJlYWQvX190 aW1lZHdhaXQuYwppbmRleCA2NjYwOTNiZS4uMmM0MTc4MzcgMTAwNjQ0Ci0tLSBhL3NyYy90aHJl YWQvX190aW1lZHdhaXQuYworKysgYi9zcmMvdGhyZWFkL19fdGltZWR3YWl0LmMKQEAgLTEyLDEz ICsxMiwxNyBAQCBzdGF0aWMgaW50IF9fZnV0ZXg0X2NwKHZvbGF0aWxlIHZvaWQgKmFkZHIsIGlu dCBvcCwgaW50IHZhbCwgY29uc3Qgc3RydWN0IHRpbWVzcAogewogCWludCByOwogI2lmZGVmIFNZ U19mdXRleF90aW1lNjQKKwlzdGF0aWMgaW50IHVzZV9mdXRleF90aW1lNjQgPSAxOwogCXRpbWVf dCBzID0gdG8gPyB0by0+dHZfc2VjIDogMDsKIAlsb25nIG5zID0gdG8gPyB0by0+dHZfbnNlYyA6 IDA7CiAJciA9IC1FTk9TWVM7Ci0JaWYgKFNZU19mdXRleCA9PSBTWVNfZnV0ZXhfdGltZTY0IHx8 ICFJUzMyQklUKHMpKQotCQlyID0gX19zeXNjYWxsX2NwKFNZU19mdXRleF90aW1lNjQsIGFkZHIs IG9wLCB2YWwsCi0JCQl0byA/ICgobG9uZyBsb25nW10pe3MsIG5zfSkgOiAwKTsKLQlpZiAoU1lT X2Z1dGV4ID09IFNZU19mdXRleF90aW1lNjQgfHwgciE9LUVOT1NZUykgcmV0dXJuIHI7CisJaWYg KHVzZV9mdXRleF90aW1lNjQpIHsKKwkJaWYgKFNZU19mdXRleCA9PSBTWVNfZnV0ZXhfdGltZTY0 IHx8ICFJUzMyQklUKHMpKQorCQkJciA9IF9fc3lzY2FsbF9jcChTWVNfZnV0ZXhfdGltZTY0LCBh ZGRyLCBvcCwgdmFsLAorCQkJCXRvID8gKChsb25nIGxvbmdbXSl7cywgbnN9KSA6IDApOworCQlp ZiAoU1lTX2Z1dGV4ID09IFNZU19mdXRleF90aW1lNjQgfHwgciE9LUVOT1NZUykgcmV0dXJuIHI7 CisJCWVsc2UgdXNlX2Z1dGV4X3RpbWU2NCA9IDA7CisJfQogCXRvID0gdG8gPyAodm9pZCAqKShs b25nW10pe0NMQU1QKHMpLCBuc30gOiAwOwogI2VuZGlmCiAJciA9IF9fc3lzY2FsbF9jcChTWVNf ZnV0ZXgsIGFkZHIsIG9wLCB2YWwsIHRvKTsKZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvcHRocmVh ZF9tdXRleF90aW1lZGxvY2suYyBiL3NyYy90aHJlYWQvcHRocmVhZF9tdXRleF90aW1lZGxvY2su YwppbmRleCA5Mjc5ZmM1NC4uZGNmMTU5NDUgMTAwNjQ0Ci0tLSBhL3NyYy90aHJlYWQvcHRocmVh ZF9tdXRleF90aW1lZGxvY2suYworKysgYi9zcmMvdGhyZWFkL3B0aHJlYWRfbXV0ZXhfdGltZWRs b2NrLmMKQEAgLTYsMTMgKzYsMTcgQEAKIHN0YXRpYyBpbnQgX19mdXRleDQodm9sYXRpbGUgdm9p ZCAqYWRkciwgaW50IG9wLCBpbnQgdmFsLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRvKQogewog I2lmZGVmIFNZU19mdXRleF90aW1lNjQKKwlzdGF0aWMgaW50IHVzZV9mdXRleF90aW1lNjQgPSAx OwogCXRpbWVfdCBzID0gdG8gPyB0by0+dHZfc2VjIDogMDsKIAlsb25nIG5zID0gdG8gPyB0by0+ dHZfbnNlYyA6IDA7CiAJaW50IHIgPSAtRU5PU1lTOwotCWlmIChTWVNfZnV0ZXggPT0gU1lTX2Z1 dGV4X3RpbWU2NCB8fCAhSVMzMkJJVChzKSkKLQkJciA9IF9fc3lzY2FsbChTWVNfZnV0ZXhfdGlt ZTY0LCBhZGRyLCBvcCwgdmFsLAotCQkJdG8gPyAoKGxvbmcgbG9uZ1tdKXtzLCBuc30pIDogMCk7 Ci0JaWYgKFNZU19mdXRleCA9PSBTWVNfZnV0ZXhfdGltZTY0IHx8IHIhPS1FTk9TWVMpIHJldHVy biByOworCWlmICh1c2VfZnV0ZXhfdGltZTY0KSB7CisJCWlmIChTWVNfZnV0ZXggPT0gU1lTX2Z1 dGV4X3RpbWU2NCB8fCAhSVMzMkJJVChzKSkKKwkJCXIgPSBfX3N5c2NhbGwoU1lTX2Z1dGV4X3Rp bWU2NCwgYWRkciwgb3AsIHZhbCwKKwkJCQl0byA/ICgobG9uZyBsb25nW10pe3MsIG5zfSkgOiAw KTsKKwkJaWYgKFNZU19mdXRleCA9PSBTWVNfZnV0ZXhfdGltZTY0IHx8IHIhPS1FTk9TWVMpIHJl dHVybiByOworCQllbHNlIHVzZV9mdXRleF90aW1lNjQgPSAwOworCX0KIAl0byA9IHRvID8gKHZv aWQgKikobG9uZ1tdKXtDTEFNUChzKSwgbnN9IDogMDsKICNlbmRpZgogCXJldHVybiBfX3N5c2Nh bGwoU1lTX2Z1dGV4LCBhZGRyLCBvcCwgdmFsLCB0byk7CmRpZmYgLS1naXQgYS9zcmMvdGltZS9j bG9ja19nZXR0aW1lLmMgYi9zcmMvdGltZS9jbG9ja19nZXR0aW1lLmMKaW5kZXggM2UxZDA5NzUu LjczNmZkZThiIDEwMDY0NAotLS0gYS9zcmMvdGltZS9jbG9ja19nZXR0aW1lLmMKKysrIGIvc3Jj L3RpbWUvY2xvY2tfZ2V0dGltZS5jCkBAIC03MywxMSArNzMsMTUgQEAgaW50IF9fY2xvY2tfZ2V0 dGltZShjbG9ja2lkX3QgY2xrLCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQogI2VuZGlmCiAKICNpZmRl ZiBTWVNfY2xvY2tfZ2V0dGltZTY0CisJc3RhdGljIGludCB1c2VfY2xvY2tfZ2V0dGltZTY0ID0g MTsKIAlyID0gLUVOT1NZUzsKLQlpZiAoc2l6ZW9mKHRpbWVfdCkgPiA0KQotCQlyID0gX19zeXNj YWxsKFNZU19jbG9ja19nZXR0aW1lNjQsIGNsaywgdHMpOwotCWlmIChTWVNfY2xvY2tfZ2V0dGlt ZSA9PSBTWVNfY2xvY2tfZ2V0dGltZTY0IHx8IHIhPS1FTk9TWVMpCi0JCXJldHVybiBfX3N5c2Nh bGxfcmV0KHIpOworCWlmICh1c2VfY2xvY2tfZ2V0dGltZTY0KSB7CisJCWlmIChzaXplb2YodGlt ZV90KSA+IDQpCisJCQlyID0gX19zeXNjYWxsKFNZU19jbG9ja19nZXR0aW1lNjQsIGNsaywgdHMp OworCQlpZiAoU1lTX2Nsb2NrX2dldHRpbWUgPT0gU1lTX2Nsb2NrX2dldHRpbWU2NCB8fCByIT0t RU5PU1lTKQorCQkJcmV0dXJuIF9fc3lzY2FsbF9yZXQocik7CisJCWVsc2UgdXNlX2Nsb2NrX2dl dHRpbWU2NCA9IDA7CisJfQogCWxvbmcgdHMzMlsyXTsKIAlyID0gX19zeXNjYWxsKFNZU19jbG9j a19nZXR0aW1lLCBjbGssIHRzMzIpOwogCWlmIChyPT0tRU5PU1lTICYmIGNsaz09Q0xPQ0tfUkVB TFRJTUUpIHsKZGlmZiAtLWdpdCBhL3NyYy90aW1lL2Nsb2NrX25hbm9zbGVlcC5jIGIvc3JjL3Rp bWUvY2xvY2tfbmFub3NsZWVwLmMKaW5kZXggZTE5NTQ5OWMuLmJiYjY1N2I2IDEwMDY0NAotLS0g YS9zcmMvdGltZS9jbG9ja19uYW5vc2xlZXAuYworKysgYi9zcmMvdGltZS9jbG9ja19uYW5vc2xl ZXAuYwpAQCAtOSwxNCArOSwxOCBAQCBpbnQgX19jbG9ja19uYW5vc2xlZXAoY2xvY2tpZF90IGNs aywgaW50IGZsYWdzLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnJlcSwgc3RydQogewogCWlmIChj bGsgPT0gQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpIHJldHVybiBFSU5WQUw7CiAjaWZkZWYgU1lT X2Nsb2NrX25hbm9zbGVlcF90aW1lNjQKKwlzdGF0aWMgaW50IHVzZV9jbG9ja19uYW5vc2xlZXBf dGltZTY0ID0gMTsKIAl0aW1lX3QgcyA9IHJlcS0+dHZfc2VjOwogCWxvbmcgbnMgPSByZXEtPnR2 X25zZWM7CiAJaW50IHIgPSAtRU5PU1lTOwotCWlmIChTWVNfY2xvY2tfbmFub3NsZWVwID09IFNZ U19jbG9ja19uYW5vc2xlZXBfdGltZTY0IHx8ICFJUzMyQklUKHMpKQotCQlyID0gX19zeXNjYWxs X2NwKFNZU19jbG9ja19uYW5vc2xlZXBfdGltZTY0LCBjbGssIGZsYWdzLAotCQkJKChsb25nIGxv bmdbXSl7cywgbnN9KSwgcmVtKTsKLQlpZiAoU1lTX2Nsb2NrX25hbm9zbGVlcCA9PSBTWVNfY2xv Y2tfbmFub3NsZWVwX3RpbWU2NCB8fCByIT0tRU5PU1lTKQotCQlyZXR1cm4gLXI7CisJaWYgKHVz ZV9jbG9ja19uYW5vc2xlZXBfdGltZTY0KSB7CisJCWlmIChTWVNfY2xvY2tfbmFub3NsZWVwID09 IFNZU19jbG9ja19uYW5vc2xlZXBfdGltZTY0IHx8ICFJUzMyQklUKHMpKQorCQkJciA9IF9fc3lz Y2FsbF9jcChTWVNfY2xvY2tfbmFub3NsZWVwX3RpbWU2NCwgY2xrLCBmbGFncywKKwkJCQkoKGxv bmcgbG9uZ1tdKXtzLCBuc30pLCByZW0pOworCQlpZiAoU1lTX2Nsb2NrX25hbm9zbGVlcCA9PSBT WVNfY2xvY2tfbmFub3NsZWVwX3RpbWU2NCB8fCByIT0tRU5PU1lTKQorCQkJcmV0dXJuIC1yOwor CQllbHNlIHVzZV9jbG9ja19uYW5vc2xlZXBfdGltZTY0ID0gMDsKKwl9CiAJbG9uZyBsb25nIGV4 dHJhID0gcyAtIENMQU1QKHMpOwogCWxvbmcgdHMzMlsyXSA9IHsgQ0xBTVAocyksIG5zIH07CiAJ aWYgKGNsayA9PSBDTE9DS19SRUFMVElNRSAmJiAhZmxhZ3MpCmRpZmYgLS1naXQgYS9zcmMvdGlt ZS9jbG9ja19zZXR0aW1lLmMgYi9zcmMvdGltZS9jbG9ja19zZXR0aW1lLmMKaW5kZXggMTAwNGVk MTUuLmFhMTM3ZmE3IDEwMDY0NAotLS0gYS9zcmMvdGltZS9jbG9ja19zZXR0aW1lLmMKKysrIGIv c3JjL3RpbWUvY2xvY2tfc2V0dGltZS5jCkBAIC03LDE0ICs3LDE4IEBACiBpbnQgY2xvY2tfc2V0 dGltZShjbG9ja2lkX3QgY2xrLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQogewogI2lmZGVm IFNZU19jbG9ja19zZXR0aW1lNjQKKwlzdGF0aWMgaW50IHVzZV9jbG9ja19zZXR0aW1lNjQgPSAx OwogCXRpbWVfdCBzID0gdHMtPnR2X3NlYzsKIAlsb25nIG5zID0gdHMtPnR2X25zZWM7CiAJaW50 IHIgPSAtRU5PU1lTOwotCWlmIChTWVNfY2xvY2tfc2V0dGltZSA9PSBTWVNfY2xvY2tfc2V0dGlt ZTY0IHx8ICFJUzMyQklUKHMpKQotCQlyID0gX19zeXNjYWxsKFNZU19jbG9ja19zZXR0aW1lNjQs IGNsaywKLQkJCSgobG9uZyBsb25nW10pe3MsIG5zfSkpOwotCWlmIChTWVNfY2xvY2tfc2V0dGlt ZSA9PSBTWVNfY2xvY2tfc2V0dGltZTY0IHx8IHIhPS1FTk9TWVMpCi0JCXJldHVybiBfX3N5c2Nh bGxfcmV0KHIpOworCWlmICh1c2VfY2xvY2tfc2V0dGltZTY0KSB7CisJCWlmIChTWVNfY2xvY2tf c2V0dGltZSA9PSBTWVNfY2xvY2tfc2V0dGltZTY0IHx8ICFJUzMyQklUKHMpKQorCQkJciA9IF9f c3lzY2FsbChTWVNfY2xvY2tfc2V0dGltZTY0LCBjbGssCisJCQkJKChsb25nIGxvbmdbXSl7cywg bnN9KSk7CisJCWlmIChTWVNfY2xvY2tfc2V0dGltZSA9PSBTWVNfY2xvY2tfc2V0dGltZTY0IHx8 IHIhPS1FTk9TWVMpCisJCQlyZXR1cm4gX19zeXNjYWxsX3JldChyKTsKKwkJZWxzZSB1c2VfY2xv Y2tfc2V0dGltZTY0ID0gMDsKKwl9CiAJaWYgKCFJUzMyQklUKHMpKQogCQlyZXR1cm4gX19zeXNj YWxsX3JldCgtRU5PVFNVUCk7CiAJcmV0dXJuIHN5c2NhbGwoU1lTX2Nsb2NrX3NldHRpbWUsIGNs aywgKChsb25nW10pe3MsIG5zfSkpOwotLSAKMi4yMC4xCgo= --000000000000d3abea05c4488300--