From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 09/41] drm/i915: Rearrange i915_wait_request() accounting with callers Date: Thu, 20 Oct 2016 16:03:51 +0100 Message-ID: <20161020150423.4560-10-chris@chris-wilson.co.uk> References: <20161020150423.4560-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6642A6EB99 for ; Thu, 20 Oct 2016 15:04:42 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id x79so461243lff.2 for ; Thu, 20 Oct 2016 08:04:42 -0700 (PDT) In-Reply-To: <20161020150423.4560-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3VyIGxvdy1sZXZlbCB3YWl0IHJvdXRpbmUgaGFzIGV2b2x2ZWQgZnJvbSBvdXIgZ2VuZXJpYyB3 YWl0IGludGVyZmFjZQp0aGF0IGhhbmRsZWQgdW5sb2NrZWQsIFJQUyBib29zdGluZywgd2FpdHMg d2l0aCB0aW1lIHRyYWNraW5nLiBJZiB3ZQpwdXNoIG91ciBHRU0gZmVuY2UgdHJhY2tpbmcgdG8g dXNlIHJlc2VydmF0aW9uX29iamVjdHMgKHJlcXVpcmVkIGZvcgpoYW5kbGluZyBtdWx0aXBsZSB0 aW1lbGluZXMpLCB3ZSBsb3NlIHRoZSBhYmlsaXR5IHRvIHBhc3MgdGhlIHJlcXVpcmVkCmluZm9y bWF0aW9uIGRvd24gdG8gaTkxNV93YWl0X3JlcXVlc3QoKS4gSG93ZXZlciwgaWYgd2UgcHVzaCB0 aGUgZXh0cmEKZnVuY3Rpb25hbGl0eSBmcm9tIGk5MTVfd2FpdF9yZXF1ZXN0KCkgdG8gdGhlIGlu ZGl2aWR1YWwgY2FsbHNpdGVzCihpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcgYW5kIGk5 MTVfZ2VtX3dhaXRfaW9jdGwpIHRoYXQgbWFrZSB1c2UKb2YgdGhvc2UgZXh0cmFzLCB3ZSBjYW4g Ym90aCBzaW1wbGlmeSBvdXIgbG93IGxldmVsIHdhaXQgYW5kIHByZXBhcmUgZm9yCmV4dGVuZGlu ZyB0aGUgR0VNIGludGVyZmFjZSBmb3IgdXNlIG9mIHJlc2VydmF0aW9uX29iamVjdHMuCgp2Mjog UmV3cml0ZSBpOTE1X3dhaXRfcmVxdWVzdCgpIGtlcm5lbGRvY3MKClNpZ25lZC1vZmYtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogTWF0dGhldyBBdWxkIDxt YXR0aGV3LndpbGxpYW0uYXVsZEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGlu ZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L3NjaGVkdWxlci5jICAgIHwgICA5ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICAgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgICAgICAgICB8IDMwOCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIHwgMTQzICsrKystLS0tLS0tLS0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oIHwgIDMyICsrLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyB8ICAxMiArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgIDI3ICstLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgIDE0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmggfCAgIDMgKy0KIDkgZmlsZXMgY2hhbmdlZCwgMzEzIGluc2VydGlvbnMo KyksIDI0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKaW5k ZXggZTk2ZWFlZWJlYjBhLi45MGFhOTFmZGQ4N2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9zY2hlZHVsZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2No ZWR1bGVyLmMKQEAgLTQwMCw2ICs0MDAsNyBAQCBzdGF0aWMgaW50IHdvcmtsb2FkX3RocmVhZCh2 b2lkICpwcml2KQogCWludCByaW5nX2lkID0gcC0+cmluZ19pZDsKIAlzdHJ1Y3QgaW50ZWxfZ3Z0 X3dvcmtsb2FkX3NjaGVkdWxlciAqc2NoZWR1bGVyID0gJmd2dC0+c2NoZWR1bGVyOwogCXN0cnVj dCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCA9IE5VTEw7CisJbG9uZyBscmV0OwogCWlu dCByZXQ7CiAJYm9vbCBuZWVkX2ZvcmNlX3dha2UgPSBJU19TS1lMQUtFKGd2dC0+ZGV2X3ByaXYp OwogCkBAIC00NDQsMTAgKzQ0NSwxMiBAQCBzdGF0aWMgaW50IHdvcmtsb2FkX3RocmVhZCh2b2lk ICpwcml2KQogCQlndnRfZGJnX3NjaGVkKCJyaW5nIGlkICVkIHdhaXQgd29ya2xvYWQgJXBcbiIs CiAJCQkJd29ya2xvYWQtPnJpbmdfaWQsIHdvcmtsb2FkKTsKIAotCQl3b3JrbG9hZC0+c3RhdHVz ID0gaTkxNV93YWl0X3JlcXVlc3Qod29ya2xvYWQtPnJlcSwKLQkJCQkJCSAgICAgMCwgTlVMTCwg TlVMTCk7Ci0JCWlmICh3b3JrbG9hZC0+c3RhdHVzICE9IDApCisJCWxyZXQgPSBpOTE1X3dhaXRf cmVxdWVzdCh3b3JrbG9hZC0+cmVxLAorCQkJCQkgMCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwor CQlpZiAobHJldCA8IDApIHsKKwkJCXdvcmtsb2FkLT5zdGF0dXMgPSBscmV0OwogCQkJZ3Z0X2Vy cigiZmFpbCB0byB3YWl0IHdvcmtsb2FkLCBza2lwXG4iKTsKKwkJfQogCiBjb21wbGV0ZToKIAkJ Z3Z0X2RiZ19zY2hlZCgid2lsbCBjb21wbGV0ZSB3b3JrbG9hZCAlcFxuLCBzdGF0dXM6ICVkXG4i LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggYzY0YTQ5NDA5ODgwLi42YTMwOGFkNWU1YTYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzMwNiw5ICszMzA2LDEwIEBAIGludCBfX211 c3RfY2hlY2sgaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7CiB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKIGludCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0 IHZtX2ZhdWx0ICp2bWYpOwotaW50IF9fbXVzdF9jaGVjawotaTkxNV9nZW1fb2JqZWN0X3dhaXRf cmVuZGVyaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkgICAgICAgYm9v bCByZWFkb25seSk7CitpbnQgaTkxNV9nZW1fb2JqZWN0X3dhaXQoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKKwkJCSB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJCQkgbG9uZyB0aW1lb3V0 LAorCQkJIHN0cnVjdCBpbnRlbF9ycHNfY2xpZW50ICpycHMpOwogaW50IF9fbXVzdF9jaGVjawog aTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJCQkJICBib29sIHdyaXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4 IGIzYjk2MzQzZTg0YS4uOTBhZjI3ZDg4OTgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAg LTI5Miw3ICsyOTIsMTIgQEAgaW50IGk5MTVfZ2VtX29iamVjdF91bmJpbmQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIAkgKiBtdXN0IHdhaXQgZm9yIGFsbCByZW5kZXJpbmcgdG8g Y29tcGxldGUgdG8gdGhlIG9iamVjdCAoYXMgdW5iaW5kaW5nCiAJICogbXVzdCBhbnl3YXkpLCBh bmQgcmV0aXJlIHRoZSByZXF1ZXN0cy4KIAkgKi8KLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2Fp dF9yZW5kZXJpbmcob2JqLCBmYWxzZSk7CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXQob2Jq LAorCQkJCSAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKKwkJCQkgICBJOTE1X1dBSVRfTE9D S0VEIHwKKwkJCQkgICBJOTE1X1dBSVRfQUxMLAorCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VU LAorCQkJCSAgIE5VTEwpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTMxMSw4OCAr MzE2LDE3MSBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3VuYmluZChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQogCXJldHVybiByZXQ7CiB9CiAKLS8qKgotICogRW5zdXJlcyB0aGF0IGFs bCByZW5kZXJpbmcgdG8gdGhlIG9iamVjdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgb2JqZWN0IGlz Ci0gKiBzYWZlIHRvIHVuYmluZCBmcm9tIHRoZSBHVFQgb3IgYWNjZXNzIGZyb20gdGhlIENQVS4K LSAqIEBvYmo6IGk5MTUgZ2VtIG9iamVjdAotICogQHJlYWRvbmx5OiB3YWl0aW5nIGZvciBqdXN0 IHJlYWQgYWNjZXNzIG9yIHJlYWQtd3JpdGUgYWNjZXNzCi0gKi8KLWludAotaTkxNV9nZW1fb2Jq ZWN0X3dhaXRfcmVuZGVyaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkg ICAgICAgYm9vbCByZWFkb25seSkKK3N0YXRpYyBsb25nCitpOTE1X2dlbV9vYmplY3Rfd2FpdF9m ZW5jZShzdHJ1Y3QgZmVuY2UgKmZlbmNlLAorCQkJICAgdW5zaWduZWQgaW50IGZsYWdzLAorCQkJ ICAgbG9uZyB0aW1lb3V0LAorCQkJICAgc3RydWN0IGludGVsX3Jwc19jbGllbnQgKnJwcykKIHsK LQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2OwotCXN0cnVjdCBpOTE1X2dlbV9hY3Rp dmUgKmFjdGl2ZTsKLQl1bnNpZ25lZCBsb25nIGFjdGl2ZV9tYXNrOwotCWludCBpZHg7CisJc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9i ai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJQlVJTERfQlVHX09OKEk5MTVfV0FJVF9JTlRF UlJVUFRJQkxFICE9IDB4MSk7CiAKLQlpZiAoIXJlYWRvbmx5KSB7Ci0JCWFjdGl2ZSA9IG9iai0+ bGFzdF9yZWFkOwotCQlhY3RpdmVfbWFzayA9IGk5MTVfZ2VtX29iamVjdF9nZXRfYWN0aXZlKG9i aik7Ci0JfSBlbHNlIHsKLQkJYWN0aXZlX21hc2sgPSAxOwotCQlhY3RpdmUgPSAmb2JqLT5sYXN0 X3dyaXRlOworCWlmICh0ZXN0X2JpdChGRU5DRV9GTEFHX1NJR05BTEVEX0JJVCwgJmZlbmNlLT5m bGFncykpCisJCXJldHVybiB0aW1lb3V0OworCisJaWYgKCFmZW5jZV9pc19pOTE1KGZlbmNlKSkK KwkJcmV0dXJuIGZlbmNlX3dhaXRfdGltZW91dChmZW5jZSwKKwkJCQkJICBmbGFncyAmIEk5MTVf V0FJVF9JTlRFUlJVUFRJQkxFLAorCQkJCQkgIHRpbWVvdXQpOworCisJcnEgPSB0b19yZXF1ZXN0 KGZlbmNlKTsKKwlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocnEpKQorCQlnb3RvIG91 dDsKKworCS8qIFRoaXMgY2xpZW50IGlzIGFib3V0IHRvIHN0YWxsIHdhaXRpbmcgZm9yIHRoZSBH UFUuIEluIG1hbnkgY2FzZXMKKwkgKiB0aGlzIGlzIHVuZGVzaXJhYmxlIGFuZCBsaW1pdHMgdGhl IHRocm91Z2hwdXQgb2YgdGhlIHN5c3RlbSwgYXMKKwkgKiBtYW55IGNsaWVudHMgY2Fubm90IGNv bnRpbnVlIHByb2Nlc3NpbmcgdXNlciBpbnB1dC9vdXRwdXQgd2hpbHN0CisJICogYmxvY2tlZC4g UlBTIGF1dG90dW5pbmcgbWF5IHRha2UgdGVucyBvZiBtaWxsaXNlY29uZHMgdG8gcmVzcG9uZAor CSAqIHRvIHRoZSBHUFUgbG9hZCBhbmQgdGh1cyBpbmN1cnMgYWRkaXRpb25hbCBsYXRlbmN5IGZv ciB0aGUgY2xpZW50LgorCSAqIFdlIGNhbiBjaXJjdW12ZW50IHRoYXQgYnkgcHJvbW90aW5nIHRo ZSBHUFUgZnJlcXVlbmN5IHRvIG1heGltdW0KKwkgKiBiZWZvcmUgd2Ugd2FpdC4gVGhpcyBtYWtl cyB0aGUgR1BVIHRocm90dGxlIHVwIG11Y2ggbW9yZSBxdWlja2x5CisJICogKGdvb2QgZm9yIGJl bmNobWFya3MgYW5kIHVzZXIgZXhwZXJpZW5jZSwgZS5nLiB3aW5kb3cgYW5pbWF0aW9ucyksCisJ ICogYnV0IGF0IGEgY29zdCBvZiBzcGVuZGluZyBtb3JlIHBvd2VyIHByb2Nlc3NpbmcgdGhlIHdv cmtsb2FkCisJICogKGJhZCBmb3IgYmF0dGVyeSkuIE5vdCBhbGwgY2xpZW50cyBldmVuIHdhbnQg dGhlaXIgcmVzdWx0cworCSAqIGltbWVkaWF0ZWx5IGFuZCBmb3IgdGhlbSB3ZSBzaG91bGQganVz dCBsZXQgdGhlIEdQVSBzZWxlY3QgaXRzIG93bgorCSAqIGZyZXF1ZW5jeSB0byBtYXhpbWlzZSBl ZmZpY2llbmN5LiBUbyBwcmV2ZW50IGEgc2luZ2xlIGNsaWVudCBmcm9tCisJICogZm9yY2luZyB0 aGUgY2xvY2tzIHRvbyBoaWdoIGZvciB0aGUgd2hvbGUgc3lzdGVtLCB3ZSBvbmx5IGFsbG93CisJ ICogZWFjaCBjbGllbnQgdG8gd2FpdGJvb3N0IG9uY2UgaW4gYSBidXN5IHBlcmlvZC4KKwkgKi8K KwlpZiAocnBzKSB7CisJCWlmIChJTlRFTF9HRU4ocnEtPmk5MTUpID49IDYpCisJCQlnZW42X3Jw c19ib29zdChycS0+aTkxNSwgcnBzLCBycS0+ZW1pdHRlZF9qaWZmaWVzKTsKKwkJZWxzZQorCQkJ cnBzID0gTlVMTDsKIAl9CiAKLQlmb3JfZWFjaF9hY3RpdmUoYWN0aXZlX21hc2ssIGlkeCkgewor CXRpbWVvdXQgPSBpOTE1X3dhaXRfcmVxdWVzdChycSwgZmxhZ3MsIHRpbWVvdXQpOworCitvdXQ6 CisJaWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCAmJiBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBs ZXRlZChycSkpCisJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlX3VwdG8ocnEpOworCisJaWYgKHJw cyAmJiBycS0+ZmVuY2Uuc2Vxbm8gPT0gcnEtPmVuZ2luZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8p IHsKKwkJLyogVGhlIEdQVSBpcyBub3cgaWRsZSBhbmQgdGhpcyBjbGllbnQgaGFzIHN0YWxsZWQu CisJCSAqIFNpbmNlIG5vIG90aGVyIGNsaWVudCBoYXMgc3VibWl0dGVkIGEgcmVxdWVzdCBpbiB0 aGUKKwkJICogbWVhbnRpbWUsIGFzc3VtZSB0aGF0IHRoaXMgY2xpZW50IGlzIHRoZSBvbmx5IG9u ZQorCQkgKiBzdXBwbHlpbmcgd29yayB0byB0aGUgR1BVIGJ1dCBpcyB1bmFibGUgdG8ga2VlcCB0 aGF0CisJCSAqIHdvcmsgc3VwcGxpZWQgYmVjYXVzZSBpdCBpcyB3YWl0aW5nLiBTaW5jZSB0aGUg R1BVIGlzCisJCSAqIHRoZW4gbmV2ZXIga2VwdCBmdWxseSBidXN5LCBSUFMgYXV0b2Nsb2NraW5n IHdpbGwKKwkJICoga2VlcCB0aGUgY2xvY2tzIHJlbGF0aXZlbHkgbG93LCBjYXVzaW5nIGZ1cnRo ZXIgZGVsYXlzLgorCQkgKiBDb21wZW5zYXRlIGJ5IGdpdmluZyB0aGUgc3luY2hyb25vdXMgY2xp ZW50IGNyZWRpdCBmb3IKKwkJICogYSB3YWl0Ym9vc3QgbmV4dCB0aW1lLgorCQkgKi8KKwkJc3Bp bl9sb2NrKCZycS0+aTkxNS0+cnBzLmNsaWVudF9sb2NrKTsKKwkJbGlzdF9kZWxfaW5pdCgmcnBz LT5saW5rKTsKKwkJc3Bpbl91bmxvY2soJnJxLT5pOTE1LT5ycHMuY2xpZW50X2xvY2spOworCX0K KworCXJldHVybiB0aW1lb3V0OworfQorCitzdGF0aWMgbG9uZworaTkxNV9nZW1fb2JqZWN0X3dh aXRfcmVzZXJ2YXRpb24oc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdiwKKwkJCQkgdW5z aWduZWQgaW50IGZsYWdzLAorCQkJCSBsb25nIHRpbWVvdXQsCisJCQkJIHN0cnVjdCBpbnRlbF9y cHNfY2xpZW50ICpycHMpCit7CisJc3RydWN0IGZlbmNlICpleGNsOworCisJaWYgKGZsYWdzICYg STkxNV9XQUlUX0FMTCkgeworCQlzdHJ1Y3QgZmVuY2UgKipzaGFyZWQ7CisJCXVuc2lnbmVkIGlu dCBjb3VudCwgaTsKIAkJaW50IHJldDsKIAotCQlyZXQgPSBpOTE1X2dlbV9hY3RpdmVfd2FpdCgm YWN0aXZlW2lkeF0sCi0JCQkJCSAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQly ZXQgPSByZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2ZlbmNlc19yY3UocmVzdiwKKwkJCQkJCQkmZXhj bCwgJmNvdW50LCAmc2hhcmVkKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7Ci0JfQogCi0J cmVzdiA9IGk5MTVfZ2VtX29iamVjdF9nZXRfZG1hYnVmX3Jlc3Yob2JqKTsKLQlpZiAocmVzdikg ewotCQlsb25nIGVycjsKKwkJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJCXRpbWVv dXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9mZW5jZShzaGFyZWRbaV0sCisJCQkJCQkJICAgICBm bGFncywgdGltZW91dCwKKwkJCQkJCQkgICAgIHJwcyk7CisJCQlpZiAodGltZW91dCA8PSAwKQor CQkJCWJyZWFrOworCisJCQlmZW5jZV9wdXQoc2hhcmVkW2ldKTsKKwkJfQogCi0JCWVyciA9IHJl c2VydmF0aW9uX29iamVjdF93YWl0X3RpbWVvdXRfcmN1KHJlc3YsICFyZWFkb25seSwgdHJ1ZSwK LQkJCQkJCQkgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKLQkJaWYgKGVyciA8IDApCi0JCQlyZXR1 cm4gZXJyOworCQlmb3IgKDsgaSA8IGNvdW50OyBpKyspCisJCQlmZW5jZV9wdXQoc2hhcmVkW2ld KTsKKwkJa2ZyZWUoc2hhcmVkKTsKKwl9IGVsc2UgeworCQlleGNsID0gcmVzZXJ2YXRpb25fb2Jq ZWN0X2dldF9leGNsX3JjdShyZXN2KTsKIAl9CiAKLQlyZXR1cm4gMDsKKwlpZiAoZXhjbCAmJiB0 aW1lb3V0ID4gMCkKKwkJdGltZW91dCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X2ZlbmNlKGV4Y2ws IGZsYWdzLCB0aW1lb3V0LCBycHMpOworCisJZmVuY2VfcHV0KGV4Y2wpOworCisJcmV0dXJuIHRp bWVvdXQ7CiB9CiAKLS8qIEEgbm9uYmxvY2tpbmcgdmFyaWFudCBvZiB0aGUgYWJvdmUgd2FpdC4g TXVzdCBiZSBjYWxsZWQgcHJpb3IgdG8KLSAqIGFjcXVpcmluZyB0aGUgbXV0ZXggZm9yIHRoZSBv YmplY3QsIGFzIHRoZSBvYmplY3Qgc3RhdGUgbWF5IGNoYW5nZQotICogZHVyaW5nIHRoaXMgY2Fs bC4gQSByZWZlcmVuY2UgbXVzdCBiZSBoZWxkIGJ5IHRoZSBjYWxsZXIgZm9yIHRoZSBvYmplY3Qu CisvKioKKyAqIFdhaXRzIGZvciByZW5kZXJpbmcgdG8gdGhlIG9iamVjdCB0byBiZSBjb21wbGV0 ZWQKKyAqIEBvYmo6IGk5MTUgZ2VtIG9iamVjdAorICogQGZsYWdzOiBob3cgdG8gd2FpdCAodW5k ZXIgYSBsb2NrLCBmb3IgYWxsIHJlbmRlcmluZyBvciBqdXN0IGZvciB3cml0ZXMgZXRjKQorICog QHRpbWVvdXQ6IGhvdyBsb25nIHRvIHdhaXQKKyAqIEBycHM6IGNsaWVudCAodXNlciBwcm9jZXNz KSB0byBjaGFyZ2UgZm9yIGFueSB3YWl0Ym9vc3RpbmcKICAqLwotc3RhdGljIF9fbXVzdF9jaGVj ayBpbnQKLV9fdW5zYWZlX3dhaXRfcmVuZGVyaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCi0JCQlzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzLAotCQkJYm9vbCByZWFkb25s eSkKK2ludAoraTkxNV9nZW1fb2JqZWN0X3dhaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKKwkJICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJCSAgICAgbG9uZyB0aW1lb3V0LAor CQkgICAgIHN0cnVjdCBpbnRlbF9ycHNfY2xpZW50ICpycHMpCiB7CisJc3RydWN0IHJlc2VydmF0 aW9uX29iamVjdCAqcmVzdjsKIAlzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmU7CiAJdW5z aWduZWQgbG9uZyBhY3RpdmVfbWFzazsKIAlpbnQgaWR4OwogCi0JYWN0aXZlX21hc2sgPSBfX0k5 MTVfQk9fQUNUSVZFKG9iaik7Ci0JaWYgKCFhY3RpdmVfbWFzaykKLQkJcmV0dXJuIDA7CisJbWln aHRfc2xlZXAoKTsKKyNpZiBJU19FTkFCTEVEKENPTkZJR19MT0NLREVQKQorCUdFTV9CVUdfT04o ISFsb2NrZGVwX2lzX2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkgIT0KKwkJICAg ISEoZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEKSk7CisjZW5kaWYKKwlHRU1fQlVHX09OKHRpbWVv dXQgPCAwKTsKIAotCWlmICghcmVhZG9ubHkpIHsKKwlpZiAoZmxhZ3MgJiBJOTE1X1dBSVRfQUxM KSB7CiAJCWFjdGl2ZSA9IG9iai0+bGFzdF9yZWFkOworCQlhY3RpdmVfbWFzayA9IGk5MTVfZ2Vt X29iamVjdF9nZXRfYWN0aXZlKG9iaik7CiAJfSBlbHNlIHsKIAkJYWN0aXZlX21hc2sgPSAxOwog CQlhY3RpdmUgPSAmb2JqLT5sYXN0X3dyaXRlOwogCX0KIAogCWZvcl9lYWNoX2FjdGl2ZShhY3Rp dmVfbWFzaywgaWR4KSB7Ci0JCWludCByZXQ7Ci0KLQkJcmV0ID0gaTkxNV9nZW1fYWN0aXZlX3dh aXRfdW5sb2NrZWQoJmFjdGl2ZVtpZHhdLAotCQkJCQkJICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJ QkxFLAotCQkJCQkJICAgIE5VTEwsIHJwcyk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0Owor CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7CisKKwkJcmVxdWVzdCA9IGk5 MTVfZ2VtX2FjdGl2ZV9nZXRfdW5sb2NrZWQoJmFjdGl2ZVtpZHhdKTsKKwkJaWYgKHJlcXVlc3Qp IHsKKwkJCXRpbWVvdXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9mZW5jZSgmcmVxdWVzdC0+ZmVu Y2UsCisJCQkJCQkJICAgICBmbGFncywgdGltZW91dCwKKwkJCQkJCQkgICAgIHJwcyk7CisJCQlp OTE1X2dlbV9yZXF1ZXN0X3B1dChyZXF1ZXN0KTsKKwkJfQorCQlpZiAodGltZW91dCA8IDApCisJ CQlyZXR1cm4gdGltZW91dDsKIAl9CiAKLQlyZXR1cm4gMDsKKwlyZXN2ID0gaTkxNV9nZW1fb2Jq ZWN0X2dldF9kbWFidWZfcmVzdihvYmopOworCWlmIChyZXN2KQorCQl0aW1lb3V0ID0gaTkxNV9n ZW1fb2JqZWN0X3dhaXRfcmVzZXJ2YXRpb24ocmVzdiwKKwkJCQkJCQkgICBmbGFncywgdGltZW91 dCwKKwkJCQkJCQkgICBycHMpOworCXJldHVybiB0aW1lb3V0IDwgMCA/IHRpbWVvdXQgOiAwOwog fQogCiBzdGF0aWMgc3RydWN0IGludGVsX3Jwc19jbGllbnQgKnRvX3Jwc19jbGllbnQoc3RydWN0 IGRybV9maWxlICpmaWxlKQpAQCAtNDQ5LDEyICs1MzcsMTggQEAgaTkxNV9nZW1fcGh5c19wd3Jp dGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gb2JqLT5iYXNlLmRldjsKIAl2b2lkICp2YWRkciA9IG9iai0+cGh5c19oYW5kbGUtPnZh ZGRyICsgYXJncy0+b2Zmc2V0OwogCWNoYXIgX191c2VyICp1c2VyX2RhdGEgPSB1NjRfdG9fdXNl cl9wdHIoYXJncy0+ZGF0YV9wdHIpOwotCWludCByZXQgPSAwOworCWludCByZXQ7CiAKIAkvKiBX ZSBtYW51YWxseSBjb250cm9sIHRoZSBkb21haW4gaGVyZSBhbmQgcHJldGVuZCB0aGF0IGl0CiAJ ICogcmVtYWlucyBjb2hlcmVudCBpLmUuIGluIHRoZSBHVFQgZG9tYWluLCBsaWtlIHNobWVtX3B3 cml0ZS4KIAkgKi8KLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcob2JqLCBm YWxzZSk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4 KTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCisJCQkJICAgSTkxNV9XQUlUX0lO VEVSUlVQVElCTEUgfAorCQkJCSAgIEk5MTVfV0FJVF9MT0NLRUQgfAorCQkJCSAgIEk5MTVfV0FJ VF9BTEwsCisJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQsCisJCQkJICAgdG9fcnBzX2NsaWVu dChmaWxlX3ByaXYpKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC02MTQsMTIgKzcw OCwxNyBAQCBpbnQgaTkxNV9nZW1fb2JqX3ByZXBhcmVfc2htZW1fcmVhZChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAogewogCWludCByZXQ7CiAKLQkqbmVlZHNfY2xmbHVzaCA9IDA7 CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAor CSpuZWVkc19jbGZsdXNoID0gMDsKIAlpZiAoIWk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0X3Bh Z2Uob2JqKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2Fp dF9yZW5kZXJpbmcob2JqLCB0cnVlKTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmos CisJCQkJICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAorCQkJCSAgIEk5MTVfV0FJVF9MT0NL RUQsCisJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQsCisJCQkJICAgTlVMTCk7CiAJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIApAQCAtNjYxLDExICs3NjAsMTggQEAgaW50IGk5MTVfZ2VtX29i al9wcmVwYXJlX3NobWVtX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiB7 CiAJaW50IHJldDsKIAorCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVj dF9tdXRleCk7CisKIAkqbmVlZHNfY2xmbHVzaCA9IDA7CiAJaWYgKCFpOTE1X2dlbV9vYmplY3Rf aGFzX3N0cnVjdF9wYWdlKG9iaikpCiAJCXJldHVybiAtRU5PREVWOwogCi0JcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKG9iaiwgZmFsc2UpOworCXJldCA9IGk5MTVfZ2VtX29i amVjdF93YWl0KG9iaiwKKwkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8CisJCQkJICAg STkxNV9XQUlUX0xPQ0tFRCB8CisJCQkJICAgSTkxNV9XQUlUX0FMTCwKKwkJCQkgICBNQVhfU0NI RURVTEVfVElNRU9VVCwKKwkJCQkgICBOVUxMKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0Owog CkBAIC0xMDUxLDcgKzExNTcsMTAgQEAgaTkxNV9nZW1fcHJlYWRfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAogCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9wcmVhZChv YmosIGFyZ3MtPm9mZnNldCwgYXJncy0+c2l6ZSk7CiAKLQlyZXQgPSBfX3Vuc2FmZV93YWl0X3Jl bmRlcmluZyhvYmosIHRvX3Jwc19jbGllbnQoZmlsZSksIHRydWUpOworCXJldCA9IGk5MTVfZ2Vt X29iamVjdF93YWl0KG9iaiwKKwkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSwKKwkJCQkg ICBNQVhfU0NIRURVTEVfVElNRU9VVCwKKwkJCQkgICB0b19ycHNfY2xpZW50KGZpbGUpKTsKIAlp ZiAocmV0KQogCQlnb3RvIGVycjsKIApAQCAtMTQ0OSw3ICsxNTU4LDExIEBAIGk5MTVfZ2VtX3B3 cml0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJdHJhY2Vf aTkxNV9nZW1fb2JqZWN0X3B3cml0ZShvYmosIGFyZ3MtPm9mZnNldCwgYXJncy0+c2l6ZSk7CiAK LQlyZXQgPSBfX3Vuc2FmZV93YWl0X3JlbmRlcmluZyhvYmosIHRvX3Jwc19jbGllbnQoZmlsZSks IGZhbHNlKTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCisJCQkJICAgSTkxNV9X QUlUX0lOVEVSUlVQVElCTEUgfAorCQkJCSAgIEk5MTVfV0FJVF9BTEwsCisJCQkJICAgTUFYX1ND SEVEVUxFX1RJTUVPVVQsCisJCQkJICAgdG9fcnBzX2NsaWVudChmaWxlKSk7CiAJaWYgKHJldCkK IAkJZ290byBlcnI7CiAKQEAgLTE1MzYsNyArMTY0OSwxMSBAQCBpOTE1X2dlbV9zZXRfZG9tYWlu X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJICogV2Ugd2lsbCBy ZXBlYXQgdGhlIGZsdXNoIGhvbGRpbmcgdGhlIGxvY2sgaW4gdGhlIG5vcm1hbCBtYW5uZXIKIAkg KiB0byBjYXRjaCBjYXNlcyB3aGVyZSB3ZSBhcmUgZ2F6dW1wZWQuCiAJICovCi0JcmV0ID0gX191 bnNhZmVfd2FpdF9yZW5kZXJpbmcob2JqLCB0b19ycHNfY2xpZW50KGZpbGUpLCAhd3JpdGVfZG9t YWluKTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCisJCQkJICAgSTkxNV9XQUlU X0lOVEVSUlVQVElCTEUgfAorCQkJCSAgICh3cml0ZV9kb21haW4gPyBJOTE1X1dBSVRfQUxMIDog MCksCisJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQsCisJCQkJICAgdG9fcnBzX2NsaWVudChm aWxlKSk7CiAJaWYgKHJldCkKIAkJZ290byBlcnI7CiAKQEAgLTE3NzIsNyArMTg4OSwxMCBAQCBp bnQgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICphcmVhLCBzdHJ1Y3Qgdm1f ZmF1bHQgKnZtZikKIAkgKiByZXBlYXQgdGhlIGZsdXNoIGhvbGRpbmcgdGhlIGxvY2sgaW4gdGhl IG5vcm1hbCBtYW5uZXIgdG8gY2F0Y2ggY2FzZXMKIAkgKiB3aGVyZSB3ZSBhcmUgZ2F6dW1wZWQu CiAJICovCi0JcmV0ID0gX191bnNhZmVfd2FpdF9yZW5kZXJpbmcob2JqLCBOVUxMLCAhd3JpdGUp OworCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwKKwkJCQkgICBJOTE1X1dBSVRfSU5U RVJSVVBUSUJMRSwKKwkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCwKKwkJCQkgICBOVUxMKTsK IAlpZiAocmV0KQogCQlnb3RvIGVycjsKIApAQCAtMjgyMSw2ICsyOTQxLDE3IEBAIHZvaWQgaTkx NV9nZW1fY2xvc2Vfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtLCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCiAJbXV0ZXhfdW5sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgp OwogfQogCitzdGF0aWMgdW5zaWduZWQgbG9uZyB0b193YWl0X3RpbWVvdXQoczY0IHRpbWVvdXRf bnMpCit7CisJaWYgKHRpbWVvdXRfbnMgPCAwKQorCQlyZXR1cm4gTUFYX1NDSEVEVUxFX1RJTUVP VVQ7CisKKwlpZiAodGltZW91dF9ucyA9PSAwKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBuc2Vj c190b19qaWZmaWVzX3RpbWVvdXQodGltZW91dF9ucyk7Cit9CisKIC8qKgogICogaTkxNV9nZW1f d2FpdF9pb2N0bCAtIGltcGxlbWVudHMgRFJNX0lPQ1RMX0k5MTVfR0VNX1dBSVQKICAqIEBkZXY6 IGRybSBkZXZpY2UgcG9pbnRlcgpAQCAtMjg0OSwxMCArMjk4MCw5IEBAIGludAogaTkxNV9nZW1f d2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV93YWl0ICphcmdzID0gZGF0YTsK LQlzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzID0gdG9fcnBzX2NsaWVudChmaWxlKTsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXVuc2lnbmVkIGxvbmcgYWN0aXZlOwot CWludCBpZHgsIHJldCA9IDA7CisJa3RpbWVfdCBzdGFydDsKKwlsb25nIHJldDsKIAogCWlmIChh cmdzLT5mbGFncyAhPSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTI4NjEsMTQgKzI5OTEsMTcg QEAgaTkxNV9nZW1fd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAJaWYgKCFvYmopCiAJCXJldHVybiAtRU5PRU5UOwog Ci0JYWN0aXZlID0gX19JOTE1X0JPX0FDVElWRShvYmopOwotCWZvcl9lYWNoX2FjdGl2ZShhY3Rp dmUsIGlkeCkgewotCQlzNjQgKnRpbWVvdXQgPSBhcmdzLT50aW1lb3V0X25zID49IDAgPyAmYXJn cy0+dGltZW91dF9ucyA6IE5VTEw7Ci0JCXJldCA9IGk5MTVfZ2VtX2FjdGl2ZV93YWl0X3VubG9j a2VkKCZvYmotPmxhc3RfcmVhZFtpZHhdLAotCQkJCQkJICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJ QkxFLAotCQkJCQkJICAgIHRpbWVvdXQsIHJwcyk7Ci0JCWlmIChyZXQpCi0JCQlicmVhazsKKwlz dGFydCA9IGt0aW1lX2dldCgpOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXQob2JqLAor CQkJCSAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwgSTkxNV9XQUlUX0FMTCwKKwkJCQkgICB0 b193YWl0X3RpbWVvdXQoYXJncy0+dGltZW91dF9ucyksCisJCQkJICAgdG9fcnBzX2NsaWVudChm aWxlKSk7CisKKwlpZiAoYXJncy0+dGltZW91dF9ucyA+IDApIHsKKwkJYXJncy0+dGltZW91dF9u cyAtPSBrdGltZV90b19ucyhrdGltZV9zdWIoa3RpbWVfZ2V0KCksIHN0YXJ0KSk7CisJCWlmIChh cmdzLT50aW1lb3V0X25zIDwgMCkKKwkJCWFyZ3MtPnRpbWVvdXRfbnMgPSAwOwogCX0KIAogCWk5 MTVfZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKQEAgLTMyODcsNyArMzQyMCwxMyBAQCBp OTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwgYm9vbCB3cml0ZSkKIAl1aW50MzJfdCBvbGRfd3JpdGVfZG9tYWluLCBvbGRfcmVh ZF9kb21haW5zOwogCWludCByZXQ7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5k ZXJpbmcob2JqLCAhd3JpdGUpOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYt PnN0cnVjdF9tdXRleCk7CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXQob2JqLAorCQkJCSAg IEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKKwkJCQkgICBJOTE1X1dBSVRfTE9DS0VEIHwKKwkJ CQkgICAod3JpdGUgPyBJOTE1X1dBSVRfQUxMIDogMCksCisJCQkJICAgTUFYX1NDSEVEVUxFX1RJ TUVPVVQsCisJCQkJICAgTlVMTCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMzQw NCw3ICszNTQzLDEyIEBAIGludCBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCSAqIElmIHdlIHdhaXQgdXBvbiB0aGUgb2Jq ZWN0LCB3ZSBrbm93IHRoYXQgYWxsIHRoZSBib3VuZAogCQkgKiBWTUEgYXJlIG5vIGxvbmdlciBh Y3RpdmUuCiAJCSAqLwotCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcob2Jq LCBmYWxzZSk7CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwKKwkJCQkJICAgSTkx NV9XQUlUX0lOVEVSUlVQVElCTEUgfAorCQkJCQkgICBJOTE1X1dBSVRfTE9DS0VEIHwKKwkJCQkJ ICAgSTkxNV9XQUlUX0FMTCwKKwkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQsCisJCQkJCSAg IE5VTEwpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIApAQCAtMzY1NCw3ICszNzk4LDEz IEBAIGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLCBib29sIHdyaXRlKQogCXVpbnQzMl90IG9sZF93cml0ZV9kb21haW4sIG9s ZF9yZWFkX2RvbWFpbnM7CiAJaW50IHJldDsKIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0 X3JlbmRlcmluZyhvYmosICF3cml0ZSk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNl LmRldi0+c3RydWN0X211dGV4KTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCisJ CQkJICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAorCQkJCSAgIEk5MTVfV0FJVF9MT0NLRUQg fAorCQkJCSAgICh3cml0ZSA/IEk5MTVfV0FJVF9BTEwgOiAwKSwKKwkJCQkgICBNQVhfU0NIRURV TEVfVElNRU9VVCwKKwkJCQkgICBOVUxMKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBA IC0zNzEwLDcgKzM4NjAsNyBAQCBpOTE1X2dlbV9yaW5nX3Rocm90dGxlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9w cml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKIAl1bnNpZ25lZCBsb25nIHJl Y2VudF9lbm91Z2ggPSBqaWZmaWVzIC0gRFJNX0k5MTVfVEhST1RUTEVfSklGRklFUzsKIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsICp0YXJnZXQgPSBOVUxMOwotCWludCBy ZXQ7CisJbG9uZyByZXQ7CiAKIAkvKiBBQkk6IHJldHVybiAtRUlPIGlmIGFscmVhZHkgd2VkZ2Vk ICovCiAJaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmRldl9wcml2LT5ncHVfZXJyb3IpKQpA QCAtMzczNywxMCArMzg4NywxMiBAQCBpOTE1X2dlbV9yaW5nX3Rocm90dGxlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAlpZiAodGFyZ2V0ID09IE5VTEwp CiAJCXJldHVybiAwOwogCi0JcmV0ID0gaTkxNV93YWl0X3JlcXVlc3QodGFyZ2V0LCBJOTE1X1dB SVRfSU5URVJSVVBUSUJMRSwgTlVMTCwgTlVMTCk7CisJcmV0ID0gaTkxNV93YWl0X3JlcXVlc3Qo dGFyZ2V0LAorCQkJCUk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFLAorCQkJCU1BWF9TQ0hFRFVMRV9U SU1FT1VUKTsKIAlpOTE1X2dlbV9yZXF1ZXN0X3B1dCh0YXJnZXQpOwogCi0JcmV0dXJuIHJldDsK KwlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IDA7CiB9CiAKIHN0YXRpYyBib29sCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKaW5kZXggNmU3ZWI5Zjk3OWVlLi4wOWM1MzA0ODA3 MGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKQEAgLTU5LDMxICs1 OSw5IEBAIHN0YXRpYyBib29sIGk5MTVfZmVuY2VfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZmVu Y2UgKmZlbmNlKQogCiBzdGF0aWMgc2lnbmVkIGxvbmcgaTkxNV9mZW5jZV93YWl0KHN0cnVjdCBm ZW5jZSAqZmVuY2UsCiAJCQkJICAgYm9vbCBpbnRlcnJ1cHRpYmxlLAotCQkJCSAgIHNpZ25lZCBs b25nIHRpbWVvdXRfamlmZmllcykKKwkJCQkgICBzaWduZWQgbG9uZyB0aW1lb3V0KQogewotCXM2 NCB0aW1lb3V0X25zLCAqdGltZW91dDsKLQlpbnQgcmV0OwotCi0JaWYgKHRpbWVvdXRfamlmZmll cyAhPSBNQVhfU0NIRURVTEVfVElNRU9VVCkgewotCQl0aW1lb3V0X25zID0gamlmZmllc190b19u c2Vjcyh0aW1lb3V0X2ppZmZpZXMpOwotCQl0aW1lb3V0ID0gJnRpbWVvdXRfbnM7Ci0JfSBlbHNl IHsKLQkJdGltZW91dCA9IE5VTEw7Ci0JfQotCi0JcmV0ID0gaTkxNV93YWl0X3JlcXVlc3QodG9f cmVxdWVzdChmZW5jZSksCi0JCQkJaW50ZXJydXB0aWJsZSwgdGltZW91dCwKLQkJCQlOT19XQUlU Qk9PU1QpOwotCWlmIChyZXQgPT0gLUVUSU1FKQotCQlyZXR1cm4gMDsKLQotCWlmIChyZXQgPCAw KQotCQlyZXR1cm4gcmV0OwotCi0JaWYgKHRpbWVvdXRfamlmZmllcyAhPSBNQVhfU0NIRURVTEVf VElNRU9VVCkKLQkJdGltZW91dF9qaWZmaWVzID0gbnNlY3NfdG9famlmZmllcyh0aW1lb3V0X25z KTsKLQotCXJldHVybiB0aW1lb3V0X2ppZmZpZXM7CisJcmV0dXJuIGk5MTVfd2FpdF9yZXF1ZXN0 KHRvX3JlcXVlc3QoZmVuY2UpLCBpbnRlcnJ1cHRpYmxlLCB0aW1lb3V0KTsKIH0KIAogc3RhdGlj IHZvaWQgaTkxNV9mZW5jZV92YWx1ZV9zdHIoc3RydWN0IGZlbmNlICpmZW5jZSwgY2hhciAqc3Ry LCBpbnQgc2l6ZSkKQEAgLTE2Niw3ICsxNDQsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1 ZXN0X3JldGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJc3RydWN0 IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLCAqbmV4dDsKIAogCXRyYWNlX2k5MTVfZ2VtX3JlcXVl c3RfcmV0aXJlKHJlcXVlc3QpOwotCWxpc3RfZGVsKCZyZXF1ZXN0LT5saW5rKTsKKwlsaXN0X2Rl bF9pbml0KCZyZXF1ZXN0LT5saW5rKTsKIAogCS8qIFdlIGtub3cgdGhlIEdQVSBtdXN0IGhhdmUg cmVhZCB0aGUgcmVxdWVzdCB0byBoYXZlCiAJICogc2VudCB1cyB0aGUgc2Vxbm8gKyBpbnRlcnJ1 cHQsIHNvIHVzZSB0aGUgcG9zaXRpb24KQEAgLTIyNCw3ICsyMDIsOCBAQCB2b2lkIGk5MTVfZ2Vt X3JlcXVlc3RfcmV0aXJlX3VwdG8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0bXA7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxk KCZyZXEtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCUdFTV9CVUdfT04obGlzdF9lbXB0eSgm cmVxLT5saW5rKSk7CisJaWYgKGxpc3RfZW1wdHkoJnJlcS0+bGluaykpCisJCXJldHVybjsKIAog CWRvIHsKIAkJdG1wID0gbGlzdF9maXJzdF9lbnRyeSgmZW5naW5lLT5yZXF1ZXN0X2xpc3QsCkBA IC03ODAsNzUgKzc1OSw0NyBAQCBib29sIF9faTkxNV9zcGluX3JlcXVlc3QoY29uc3Qgc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAKIC8qKgogICogaTkxNV93YWl0X3JlcXVlc3Qg LSB3YWl0IHVudGlsIGV4ZWN1dGlvbiBvZiByZXF1ZXN0IGhhcyBmaW5pc2hlZAotICogQHJlcTog ZHVoIQorICogQHJlcTogdGhlIHJlcXVlc3QgdG8gd2FpdCB1cG9uCiAgKiBAZmxhZ3M6IGhvdyB0 byB3YWl0Ci0gKiBAdGltZW91dDogaW4gLSBob3cgbG9uZyB0byB3YWl0IChOVUxMIGZvcmV2ZXIp OyBvdXQgLSBob3cgbXVjaCB0aW1lIHJlbWFpbmluZwotICogQHJwczogY2xpZW50IHRvIGNoYXJn ZSBmb3IgUlBTIGJvb3N0aW5nCisgKiBAdGltZW91dDogaG93IGxvbmcgdG8gd2FpdCBpbiBqaWZm aWVzCisgKgorICogaTkxNV93YWl0X3JlcXVlc3QoKSB3YWl0cyBmb3IgdGhlIHJlcXVlc3QgdG8g YmUgY29tcGxldGVkLCBmb3IgYQorICogbWF4aW11bSBvZiBAdGltZW91dCBqaWZmaWVzICh3aXRo IE1BWF9TQ0hFRFVMRV9USU1FT1VUIGltcGx5aW5nIGFuCisgKiB1bmJvdW5kZWQgd2FpdCkuCiAg KgotICogTm90ZTogSXQgaXMgb2YgdXRtb3N0IGltcG9ydGFuY2UgdGhhdCB0aGUgcGFzc2VkIGlu IHNlcW5vIGFuZCByZXNldF9jb3VudGVyCi0gKiB2YWx1ZXMgaGF2ZSBiZWVuIHJlYWQgYnkgdGhl IGNhbGxlciBpbiBhbiBzbXAgc2FmZSBtYW5uZXIuIFdoZXJlIHJlYWQtc2lkZQotICogbG9ja3Mg YXJlIGludm9sdmVkLCBpdCBpcyBzdWZmaWNpZW50IHRvIHJlYWQgdGhlIHJlc2V0X2NvdW50ZXIg YmVmb3JlCi0gKiB1bmxvY2tpbmcgdGhlIGxvY2sgdGhhdCBwcm90ZWN0cyB0aGUgc2Vxbm8uIEZv ciBsb2NrbGVzcyB0cmlja3MsIHRoZQotICogcmVzZXRfY291bnRlciBfbXVzdF8gYmUgcmVhZCBi ZWZvcmUsIGFuZCBhbiBhcHByb3ByaWF0ZSBzbXBfcm1iIG11c3QgYmUKLSAqIGluc2VydGVkLgor ICogSWYgdGhlIGNhbGxlciBob2xkcyB0aGUgc3RydWN0X211dGV4LCB0aGUgY2FsbGVyIG11c3Qg cGFzcyBJOTE1X1dBSVRfTE9DS0VECisgKiBpbiB2aWEgdGhlIGZsYWdzLCBhbmQgdmljZSB2ZXJz YSBpZiB0aGUgc3RydWN0X211dGV4IGlzIG5vdCBoZWxkLCB0aGUgY2FsbGVyCisgKiBtdXN0IG5v dCBzcGVjaWZ5IHRoYXQgdGhlIHdhaXQgaXMgbG9ja2VkLgogICoKLSAqIFJldHVybnMgMCBpZiB0 aGUgcmVxdWVzdCB3YXMgZm91bmQgd2l0aGluIHRoZSBhbGxvdGVkIHRpbWUuIEVsc2UgcmV0dXJu cyB0aGUKLSAqIGVycm5vIHdpdGggcmVtYWluaW5nIHRpbWUgZmlsbGVkIGluIHRpbWVvdXQgYXJn dW1lbnQuCisgKiBSZXR1cm5zIHRoZSByZW1haW5pbmcgdGltZSAoaW4gamlmZmllcykgaWYgdGhl IHJlcXVlc3QgY29tcGxldGVkLCB3aGljaCBtYXkKKyAqIGJlIHplcm8gb3IgLUVUSU1FIGlmIHRo ZSByZXF1ZXN0IGlzIHVuZmluaXNoZWQgYWZ0ZXIgdGhlIHRpbWVvdXQgZXhwaXJlcy4KKyAqIE1h eSByZXR1cm4gLUVJTlRSIGlzIGNhbGxlZCB3aXRoIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIGFu ZCBhIHNpZ25hbCBpcworICogcGVuZGluZyBiZWZvcmUgdGhlIHJlcXVlc3QgY29tcGxldGVzLgog ICovCi1pbnQgaTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsCi0JCSAgICAgIHVuc2lnbmVkIGludCBmbGFncywKLQkJICAgICAgczY0ICp0aW1lb3V0LAot CQkgICAgICBzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKQorbG9uZyBpOTE1X3dhaXRfcmVx dWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKKwkJICAgICAgIHVuc2lnbmVk IGludCBmbGFncywKKwkJICAgICAgIGxvbmcgdGltZW91dCkKIHsKIAljb25zdCBpbnQgc3RhdGUg PSBmbGFncyAmIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFID8KIAkJVEFTS19JTlRFUlJVUFRJQkxF IDogVEFTS19VTklOVEVSUlVQVElCTEU7CiAJREVGSU5FX1dBSVQocmVzZXQpOwogCXN0cnVjdCBp bnRlbF93YWl0IHdhaXQ7Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0X3JlbWFpbjsKLQlpbnQgcmV0 ID0gMDsKIAogCW1pZ2h0X3NsZWVwKCk7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfTE9DS0RFUCkK IAlHRU1fQlVHX09OKCEhbG9ja2RlcF9pc19oZWxkKCZyZXEtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpICE9CiAJCSAgICEhKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCkpOwogI2VuZGlmCisJR0VN X0JVR19PTih0aW1lb3V0IDwgMCk7CiAKIAlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQo cmVxKSkKLQkJcmV0dXJuIDA7CisJCXJldHVybiB0aW1lb3V0OwogCi0JdGltZW91dF9yZW1haW4g PSBNQVhfU0NIRURVTEVfVElNRU9VVDsKLQlpZiAodGltZW91dCkgewotCQlpZiAoV0FSTl9PTigq dGltZW91dCA8IDApKQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQkJaWYgKCp0aW1lb3V0ID09IDAp Ci0JCQlyZXR1cm4gLUVUSU1FOwotCi0JCS8qIFJlY29yZCBjdXJyZW50IHRpbWUgaW4gY2FzZSBp bnRlcnJ1cHRlZCwgb3Igd2VkZ2VkICovCi0JCXRpbWVvdXRfcmVtYWluID0gbnNlY3NfdG9famlm Zmllc190aW1lb3V0KCp0aW1lb3V0KTsKLQkJKnRpbWVvdXQgKz0ga3RpbWVfZ2V0X3Jhd19ucygp OwotCX0KKwlpZiAoIXRpbWVvdXQpCisJCXJldHVybiAtRVRJTUU7CiAKIAl0cmFjZV9pOTE1X2dl bV9yZXF1ZXN0X3dhaXRfYmVnaW4ocmVxKTsKIAotCS8qIFRoaXMgY2xpZW50IGlzIGFib3V0IHRv IHN0YWxsIHdhaXRpbmcgZm9yIHRoZSBHUFUuIEluIG1hbnkgY2FzZXMKLQkgKiB0aGlzIGlzIHVu ZGVzaXJhYmxlIGFuZCBsaW1pdHMgdGhlIHRocm91Z2hwdXQgb2YgdGhlIHN5c3RlbSwgYXMKLQkg KiBtYW55IGNsaWVudHMgY2Fubm90IGNvbnRpbnVlIHByb2Nlc3NpbmcgdXNlciBpbnB1dC9vdXRw dXQgd2hpbHN0Ci0JICogYmxvY2tlZC4gUlBTIGF1dG90dW5pbmcgbWF5IHRha2UgdGVucyBvZiBt aWxsaXNlY29uZHMgdG8gcmVzcG9uZAotCSAqIHRvIHRoZSBHUFUgbG9hZCBhbmQgdGh1cyBpbmN1 cnMgYWRkaXRpb25hbCBsYXRlbmN5IGZvciB0aGUgY2xpZW50LgotCSAqIFdlIGNhbiBjaXJjdW12 ZW50IHRoYXQgYnkgcHJvbW90aW5nIHRoZSBHUFUgZnJlcXVlbmN5IHRvIG1heGltdW0KLQkgKiBi ZWZvcmUgd2Ugd2FpdC4gVGhpcyBtYWtlcyB0aGUgR1BVIHRocm90dGxlIHVwIG11Y2ggbW9yZSBx dWlja2x5Ci0JICogKGdvb2QgZm9yIGJlbmNobWFya3MgYW5kIHVzZXIgZXhwZXJpZW5jZSwgZS5n LiB3aW5kb3cgYW5pbWF0aW9ucyksCi0JICogYnV0IGF0IGEgY29zdCBvZiBzcGVuZGluZyBtb3Jl IHBvd2VyIHByb2Nlc3NpbmcgdGhlIHdvcmtsb2FkCi0JICogKGJhZCBmb3IgYmF0dGVyeSkuIE5v dCBhbGwgY2xpZW50cyBldmVuIHdhbnQgdGhlaXIgcmVzdWx0cwotCSAqIGltbWVkaWF0ZWx5IGFu ZCBmb3IgdGhlbSB3ZSBzaG91bGQganVzdCBsZXQgdGhlIEdQVSBzZWxlY3QgaXRzIG93bgotCSAq IGZyZXF1ZW5jeSB0byBtYXhpbWlzZSBlZmZpY2llbmN5LiBUbyBwcmV2ZW50IGEgc2luZ2xlIGNs aWVudCBmcm9tCi0JICogZm9yY2luZyB0aGUgY2xvY2tzIHRvbyBoaWdoIGZvciB0aGUgd2hvbGUg c3lzdGVtLCB3ZSBvbmx5IGFsbG93Ci0JICogZWFjaCBjbGllbnQgdG8gd2FpdGJvb3N0IG9uY2Ug aW4gYSBidXN5IHBlcmlvZC4KLQkgKi8KLQlpZiAoSVNfUlBTX0NMSUVOVChycHMpICYmIElOVEVM X0dFTihyZXEtPmk5MTUpID49IDYpCi0JCWdlbjZfcnBzX2Jvb3N0KHJlcS0+aTkxNSwgcnBzLCBy ZXEtPmVtaXR0ZWRfamlmZmllcyk7Ci0KIAkvKiBPcHRpbWlzdGljIHNob3J0IHNwaW4gYmVmb3Jl IHRvdWNoaW5nIElSUXMgKi8KIAlpZiAoaTkxNV9zcGluX3JlcXVlc3QocmVxLCBzdGF0ZSwgNSkp CiAJCWdvdG8gY29tcGxldGU7CkBAIC04NjcsMTYgKzgxOCwxNyBAQCBpbnQgaTkxNV93YWl0X3Jl cXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAKIAlmb3IgKDs7KSB7CiAJ CWlmIChzaWduYWxfcGVuZGluZ19zdGF0ZShzdGF0ZSwgY3VycmVudCkpIHsKLQkJCXJldCA9IC1F UkVTVEFSVFNZUzsKKwkJCXRpbWVvdXQgPSAtRVJFU1RBUlRTWVM7CiAJCQlicmVhazsKIAkJfQog Ci0JCXRpbWVvdXRfcmVtYWluID0gaW9fc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0X3JlbWFpbik7 Ci0JCWlmICh0aW1lb3V0X3JlbWFpbiA9PSAwKSB7Ci0JCQlyZXQgPSAtRVRJTUU7CisJCWlmICgh dGltZW91dCkgeworCQkJdGltZW91dCA9IC1FVElNRTsKIAkJCWJyZWFrOwogCQl9CiAKKwkJdGlt ZW91dCA9IGlvX3NjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7CisKIAkJaWYgKGludGVsX3dhaXRf Y29tcGxldGUoJndhaXQpKQogCQkJYnJlYWs7CiAKQEAgLTkyMyw0MCArODc1LDcgQEAgaW50IGk5 MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogY29tcGxl dGU6CiAJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF93YWl0X2VuZChyZXEpOwogCi0JaWYgKHRpbWVv dXQpIHsKLQkJKnRpbWVvdXQgLT0ga3RpbWVfZ2V0X3Jhd19ucygpOwotCQlpZiAoKnRpbWVvdXQg PCAwKQotCQkJKnRpbWVvdXQgPSAwOwotCi0JCS8qCi0JCSAqIEFwcGFyZW50bHkga3RpbWUgaXNu J3QgYWNjdXJhdGUgZW5vdWdoIGFuZCBvY2Nhc2lvbmFsbHkgaGFzIGEKLQkJICogYml0IG9mIG1p c21hdGNoIGluIHRoZSBqaWZmaWVzPC0+bnNlY3M8LT5rdGltZSBsb29wLiBTbyBwYXRjaAotCQkg KiB0aGluZ3MgdXAgdG8gbWFrZSB0aGUgdGVzdCBoYXBweS4gV2UgYWxsb3cgdXAgdG8gMSBqaWZm eS4KLQkJICoKLQkJICogVGhpcyBpcyBhIHJlZ3Jzc2lvbiBmcm9tIHRoZSB0aW1lc3BlYy0+a3Rp bWUgY29udmVyc2lvbi4KLQkJICovCi0JCWlmIChyZXQgPT0gLUVUSU1FICYmICp0aW1lb3V0IDwg amlmZmllc190b191c2VjcygxKSoxMDAwKQotCQkJKnRpbWVvdXQgPSAwOwotCX0KLQotCWlmIChJ U19SUFNfVVNFUihycHMpICYmCi0JICAgIHJlcS0+ZmVuY2Uuc2Vxbm8gPT0gcmVxLT5lbmdpbmUt Pmxhc3Rfc3VibWl0dGVkX3NlcW5vKSB7Ci0JCS8qIFRoZSBHUFUgaXMgbm93IGlkbGUgYW5kIHRo aXMgY2xpZW50IGhhcyBzdGFsbGVkLgotCQkgKiBTaW5jZSBubyBvdGhlciBjbGllbnQgaGFzIHN1 Ym1pdHRlZCBhIHJlcXVlc3QgaW4gdGhlCi0JCSAqIG1lYW50aW1lLCBhc3N1bWUgdGhhdCB0aGlz IGNsaWVudCBpcyB0aGUgb25seSBvbmUKLQkJICogc3VwcGx5aW5nIHdvcmsgdG8gdGhlIEdQVSBi dXQgaXMgdW5hYmxlIHRvIGtlZXAgdGhhdAotCQkgKiB3b3JrIHN1cHBsaWVkIGJlY2F1c2UgaXQg aXMgd2FpdGluZy4gU2luY2UgdGhlIEdQVSBpcwotCQkgKiB0aGVuIG5ldmVyIGtlcHQgZnVsbHkg YnVzeSwgUlBTIGF1dG9jbG9ja2luZyB3aWxsCi0JCSAqIGtlZXAgdGhlIGNsb2NrcyByZWxhdGl2 ZWx5IGxvdywgY2F1c2luZyBmdXJ0aGVyIGRlbGF5cy4KLQkJICogQ29tcGVuc2F0ZSBieSBnaXZp bmcgdGhlIHN5bmNocm9ub3VzIGNsaWVudCBjcmVkaXQgZm9yCi0JCSAqIGEgd2FpdGJvb3N0IG5l eHQgdGltZS4KLQkJICovCi0JCXNwaW5fbG9jaygmcmVxLT5pOTE1LT5ycHMuY2xpZW50X2xvY2sp OwotCQlsaXN0X2RlbF9pbml0KCZycHMtPmxpbmspOwotCQlzcGluX3VubG9jaygmcmVxLT5pOTE1 LT5ycHMuY2xpZW50X2xvY2spOwotCX0KLQotCXJldHVybiByZXQ7CisJcmV0dXJuIHRpbWVvdXQ7 CiB9CiAKIHN0YXRpYyBib29sIGVuZ2luZV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCmlu ZGV4IGM4NWEzZDgyZmViZi4uZjFjZTM5MGM5MjQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVxdWVzdC5oCkBAIC0yMjgsMTMgKzIyOCwxMyBAQCBzdHJ1Y3QgaW50ZWxfcnBzX2Ns aWVudDsKICNkZWZpbmUgSVNfUlBTX0NMSUVOVChwKSAoIUlTX0VSUihwKSkKICNkZWZpbmUgSVNf UlBTX1VTRVIocCkgKCFJU19FUlJfT1JfTlVMTChwKSkKIAotaW50IGk5MTVfd2FpdF9yZXF1ZXN0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAotCQkgICAgICB1bnNpZ25lZCBpbnQg ZmxhZ3MsCi0JCSAgICAgIHM2NCAqdGltZW91dCwKLQkJICAgICAgc3RydWN0IGludGVsX3Jwc19j bGllbnQgKnJwcykKK2xvbmcgaTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCisJCSAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJCSAgICAgICBsb25n IHRpbWVvdXQpCiAJX19hdHRyaWJ1dGVfXygobm9ubnVsbCgxKSkpOwogI2RlZmluZSBJOTE1X1dB SVRfSU5URVJSVVBUSUJMRQlCSVQoMCkKICNkZWZpbmUgSTkxNV9XQUlUX0xPQ0tFRAlCSVQoMSkg Lyogc3RydWN0X211dGV4IGhlbGQsIGhhbmRsZSBHUFUgcmVzZXQgKi8KKyNkZWZpbmUgSTkxNV9X QUlUX0FMTAkJQklUKDIpIC8qIHVzZWQgYnkgaTkxNV9nZW1fb2JqZWN0X3dhaXQoKSAqLwogCiBz dGF0aWMgaW5saW5lIHUzMiBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSk7CiAKQEAgLTU4MywxNCArNTgzLDE2IEBAIHN0YXRpYyBpbmxpbmUgaW50 IF9fbXVzdF9jaGVjawogaTkxNV9nZW1fYWN0aXZlX3dhaXQoY29uc3Qgc3RydWN0IGk5MTVfZ2Vt X2FjdGl2ZSAqYWN0aXZlLCBzdHJ1Y3QgbXV0ZXggKm11dGV4KQogewogCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKKwlsb25nIHJldDsKIAogCXJlcXVlc3QgPSBpOTE1X2dl bV9hY3RpdmVfcGVlayhhY3RpdmUsIG11dGV4KTsKIAlpZiAoIXJlcXVlc3QpCiAJCXJldHVybiAw OwogCi0JcmV0dXJuIGk5MTVfd2FpdF9yZXF1ZXN0KHJlcXVlc3QsCi0JCQkJIEk5MTVfV0FJVF9J TlRFUlJVUFRJQkxFIHwgSTkxNV9XQUlUX0xPQ0tFRCwKLQkJCQkgTlVMTCwgTlVMTCk7CisJcmV0 ID0gaTkxNV93YWl0X3JlcXVlc3QocmVxdWVzdCwKKwkJCQlJOTE1X1dBSVRfSU5URVJSVVBUSUJM RSB8IEk5MTVfV0FJVF9MT0NLRUQsCisJCQkJTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCXJldHVy biByZXQgPCAwID8gcmV0IDogMDsKIH0KIAogLyoqCkBAIC02MTcsMjAgKzYxOSwxOCBAQCBpOTE1 X2dlbV9hY3RpdmVfd2FpdChjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsIHN0 cnVjdCBtdXRleCAqbXV0ZXgpCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50CiBpOTE1X2dlbV9hY3Rp dmVfd2FpdF91bmxvY2tlZChjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCi0J CQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCi0JCQkgICAgICBzNjQgKnRpbWVvdXQsCi0JCQkg ICAgICBzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKQorCQkJICAgICAgdW5zaWduZWQgaW50 IGZsYWdzKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKLQlpbnQg cmV0ID0gMDsKKwlsb25nIHJldCA9IDA7CiAKIAlyZXF1ZXN0ID0gaTkxNV9nZW1fYWN0aXZlX2dl dF91bmxvY2tlZChhY3RpdmUpOwogCWlmIChyZXF1ZXN0KSB7Ci0JCXJldCA9IGk5MTVfd2FpdF9y ZXF1ZXN0KHJlcXVlc3QsIGZsYWdzLCB0aW1lb3V0LCBycHMpOworCQlyZXQgPSBpOTE1X3dhaXRf cmVxdWVzdChyZXF1ZXN0LCBmbGFncywgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwogCQlpOTE1X2dl bV9yZXF1ZXN0X3B1dChyZXF1ZXN0KTsKIAl9CiAKLQlyZXR1cm4gcmV0OworCXJldHVybiByZXQg PCAwID8gcmV0IDogMDsKIH0KIAogLyoqCkBAIC02NDcsNyArNjQ3LDcgQEAgaTkxNV9nZW1fYWN0 aXZlX3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCiAJCSAgICAgICBzdHJ1 Y3QgbXV0ZXggKm11dGV4KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dDsKLQlpbnQgcmV0OworCWxvbmcgcmV0OwogCiAJcmVxdWVzdCA9IGk5MTVfZ2VtX2FjdGl2ZV9y YXcoYWN0aXZlLCBtdXRleCk7CiAJaWYgKCFyZXF1ZXN0KQpAQCAtNjU1LDggKzY1NSw4IEBAIGk5 MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAogCiAJ cmV0ID0gaTkxNV93YWl0X3JlcXVlc3QocmVxdWVzdCwKIAkJCQlJOTE1X1dBSVRfSU5URVJSVVBU SUJMRSB8IEk5MTVfV0FJVF9MT0NLRUQsCi0JCQkJTlVMTCwgTlVMTCk7Ci0JaWYgKHJldCkKKwkJ CQlNQVhfU0NIRURVTEVfVElNRU9VVCk7CisJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7CiAK IAlsaXN0X2RlbF9pbml0KCZhY3RpdmUtPmxpbmspOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fdXNlcnB0ci5jCmluZGV4IGU1Mzc5MzBjNjRiNS4uMWM4OTFiOTJhYzgwIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCkBAIC02MSwyMyArNjEsMTMgQEAgc3RydWN0 IGk5MTVfbW11X29iamVjdCB7CiAJYm9vbCBhdHRhY2hlZDsKIH07CiAKLXN0YXRpYyB2b2lkIHdh aXRfcmVuZGVyaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCi17Ci0JdW5zaWdu ZWQgbG9uZyBhY3RpdmUgPSBfX0k5MTVfQk9fQUNUSVZFKG9iaik7Ci0JaW50IGlkeDsKLQotCWZv cl9lYWNoX2FjdGl2ZShhY3RpdmUsIGlkeCkKLQkJaTkxNV9nZW1fYWN0aXZlX3dhaXRfdW5sb2Nr ZWQoJm9iai0+bGFzdF9yZWFkW2lkeF0sCi0JCQkJCSAgICAgIDAsIE5VTEwsIE5VTEwpOwotfQot CiBzdGF0aWMgdm9pZCBjYW5jZWxfdXNlcnB0cihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7 CiAJc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8gPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9m KCptbyksIHdvcmspOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBtby0+b2Jq OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwogCi0Jd2FpdF9yZW5k ZXJpbmcob2JqKTsKKwlpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosIEk5MTVfV0FJVF9BTEwsIE1B WF9TQ0hFRFVMRV9USU1FT1VULCBOVUxMKTsKIAogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211 dGV4KTsKIAkvKiBDYW5jZWwgYW55IGFjdGl2ZSB3b3JrZXIgYW5kIGZvcmNlIHVzIHRvIHJlLWV2 YWx1YXRlIGd1cCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDA2Y2Vi MDU5MDk3Yy4uMTIwY2U0NTFjYjUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CkBAIC0xMjA3MSw3ICsxMjA3MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93b3Jr X2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3KQogCiAJaWYgKHdvcmstPmZsaXBfcXVldWVkX3Jl cSkKIAkJV0FSTl9PTihpOTE1X3dhaXRfcmVxdWVzdCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsCi0J CQkJCSAgMCwgTlVMTCwgTk9fV0FJVEJPT1NUKSk7CisJCQkJCSAgMCwgTUFYX1NDSEVEVUxFX1RJ TUVPVVQpIDwgMCk7CiAKIAkvKiBGb3IgZnJhbWVidWZmZXIgYmFja2VkIGJ5IGRtYWJ1Ziwgd2Fp dCBmb3IgZmVuY2UgKi8KIAlyZXN2ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFidWZfcmVzdihv YmopOwpAQCAtMTQxODYsMTkgKzE0MTg2LDIxIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3By ZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWZvcl9lYWNoX3BsYW5lX2lu X3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKIAkJCXN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqaW50ZWxfcGxhbmVfc3RhdGUgPQogCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRl KHBsYW5lX3N0YXRlKTsKKwkJCWxvbmcgdGltZW91dDsKIAogCQkJaWYgKCFpbnRlbF9wbGFuZV9z dGF0ZS0+d2FpdF9yZXEpCiAJCQkJY29udGludWU7CiAKLQkJCXJldCA9IGk5MTVfd2FpdF9yZXF1 ZXN0KGludGVsX3BsYW5lX3N0YXRlLT53YWl0X3JlcSwKLQkJCQkJCUk5MTVfV0FJVF9JTlRFUlJV UFRJQkxFLAotCQkJCQkJTlVMTCwgTlVMTCk7Ci0JCQlpZiAocmV0KSB7CisJCQl0aW1lb3V0ID0g aTkxNV93YWl0X3JlcXVlc3QoaW50ZWxfcGxhbmVfc3RhdGUtPndhaXRfcmVxLAorCQkJCQkJICAg IEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFLAorCQkJCQkJICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VU KTsKKwkJCWlmICh0aW1lb3V0IDwgMCkgewogCQkJCS8qIEFueSBoYW5nIHNob3VsZCBiZSBzd2Fs bG93ZWQgYnkgdGhlIHdhaXQgKi8KLQkJCQlXQVJOX09OKHJldCA9PSAtRUlPKTsKKwkJCQlXQVJO X09OKHRpbWVvdXQgPT0gLUVJTyk7CiAJCQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp OwogCQkJCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwogCQkJ CW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQkJCXJldCA9IHRpbWVvdXQ7CiAJ CQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTE0NDAyLDcgKzE0NDA0LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK IAlib29sIGh3X2NoZWNrID0gaW50ZWxfc3RhdGUtPm1vZGVzZXQ7CiAJdW5zaWduZWQgbG9uZyBw dXRfZG9tYWluc1tJOTE1X01BWF9QSVBFU10gPSB7fTsKIAl1bnNpZ25lZCBjcnRjX3ZibGFua19t YXNrID0gMDsKLQlpbnQgaSwgcmV0OworCWludCBpOwogCiAJZm9yX2VhY2hfcGxhbmVfaW5fc3Rh dGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewogCQlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKmludGVsX3BsYW5lX3N0YXRlID0KQEAgLTE0NDExLDExICsxNDQxMywxMCBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQogCQlpZiAoIWludGVsX3BsYW5lX3N0YXRlLT53YWl0X3JlcSkKIAkJCWNvbnRpbnVl OwogCi0JCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KGludGVsX3BsYW5lX3N0YXRlLT53YWl0X3Jl cSwKLQkJCQkJMCwgTlVMTCwgTlVMTCk7CiAJCS8qIEVJTyBzaG91bGQgYmUgZWF0ZW4sIGFuZCB3 ZSBjYW4ndCBnZXQgaW50ZXJydXB0ZWQgaW4gdGhlCiAJCSAqIHdvcmtlciwgYW5kIGJsb2NraW5n IGNvbW1pdHMgaGF2ZSB3YWl0ZWQgYWxyZWFkeS4gKi8KLQkJV0FSTl9PTihyZXQpOworCQlXQVJO X09OKGk5MTVfd2FpdF9yZXF1ZXN0KGludGVsX3BsYW5lX3N0YXRlLT53YWl0X3JlcSwKKwkJCQkJ ICAwLCBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAwKTsKIAl9CiAKIAlkcm1fYXRvbWljX2hlbHBl cl93YWl0X2Zvcl9kZXBlbmRlbmNpZXMoc3RhdGUpOwpAQCAtMTQ3NzksNyArMTQ3ODAsMTEgQEAg aW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJICogY2Fu IHNhZmVseSBjb250aW51ZS4KIAkJICovCiAJCWlmIChuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUp KQotCQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKG9sZF9vYmosIHRydWUp OworCQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXQob2xkX29iaiwKKwkJCQkJCSAgIEk5MTVf V0FJVF9JTlRFUlJVUFRJQkxFIHwKKwkJCQkJCSAgIEk5MTVfV0FJVF9MT0NLRUQsCisJCQkJCQkg ICBNQVhfU0NIRURVTEVfVElNRU9VVCwKKwkJCQkJCSAgIE5VTEwpOwogCQlpZiAocmV0KSB7CiAJ CQkvKiBHUFUgaGFuZ3Mgc2hvdWxkIGhhdmUgYmVlbiBzd2FsbG93ZWQgYnkgdGhlIHdhaXQgKi8K IAkJCVdBUk5fT04ocmV0ID09IC1FSU8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCmluZGV4IGUxMDc0NTViMDE2OC4uMjM5NmM2NTFiZDBmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC0yMTU3LDcgKzIxNTcsOSBAQCBzdGF0aWMgaW50 IHdhaXRfZm9yX3NwYWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgYnl0 ZXMpCiB7CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICp0YXJnZXQ7Ci0JaW50IHJldDsKKwlsb25nIHRpbWVvdXQ7CisK Kwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZyZXEtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJ aW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZyk7CiAJaWYgKHJpbmctPnNwYWNlID49IGJ5dGVz KQpAQCAtMjE4NywxMSArMjE4OSwxMSBAQCBzdGF0aWMgaW50IHdhaXRfZm9yX3NwYWNlKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgYnl0ZXMpCiAJaWYgKFdBUk5fT04oJnRh cmdldC0+cmluZ19saW5rID09ICZyaW5nLT5yZXF1ZXN0X2xpc3QpKQogCQlyZXR1cm4gLUVOT1NQ QzsKIAotCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KHRhcmdldCwKLQkJCQlJOTE1X1dBSVRfSU5U RVJSVVBUSUJMRSB8IEk5MTVfV0FJVF9MT0NLRUQsCi0JCQkJTlVMTCwgTk9fV0FJVEJPT1NUKTsK LQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXRpbWVvdXQgPSBpOTE1X3dhaXRfcmVxdWVzdCh0 YXJnZXQsCisJCQkJICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwgSTkxNV9XQUlUX0xPQ0tF RCwKKwkJCQkgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCWlmICh0aW1lb3V0IDwgMCkKKwkJ cmV0dXJuIHRpbWVvdXQ7CiAKIAlpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZV91cHRvKHRhcmdldCk7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCAzMmIyZTYzMzJj Y2YuLjg4NGE1YWUyMjI1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aApAQCAtNTI0LDggKzUyNCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGludGVsX2VuZ2luZV9pZGxl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgICAgdW5zaWduZWQgaW50IGZs YWdzKQogewogCS8qIFdhaXQgdXBvbiB0aGUgbGFzdCByZXF1ZXN0IHRvIGJlIGNvbXBsZXRlZCAq LwotCXJldHVybiBpOTE1X2dlbV9hY3RpdmVfd2FpdF91bmxvY2tlZCgmZW5naW5lLT5sYXN0X3Jl cXVlc3QsCi0JCQkJCSAgICAgZmxhZ3MsIE5VTEwsIE5VTEwpOworCXJldHVybiBpOTE1X2dlbV9h Y3RpdmVfd2FpdF91bmxvY2tlZCgmZW5naW5lLT5sYXN0X3JlcXVlc3QsIGZsYWdzKTsKIH0KIAog aW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSk7Ci0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==