From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH] drm/i915: Slaughter the thundering i915_wait_request herd Date: Fri, 18 Dec 2015 10:01:46 +0000 Message-ID: <1450432906-16267-1-git-send-email-chris@chris-wilson.co.uk> References: <566EB44C.2080407@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [87.106.93.118]) by gabe.freedesktop.org (Postfix) with ESMTP id DFA7A6EA47 for ; Fri, 18 Dec 2015 02:02:14 -0800 (PST) In-Reply-To: <566EB44C.2080407@linux.intel.com> 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 T25lIHBhcnRpY3VsYXJseSBzdHJlc3NmdWwgc2NlbmFyaW8gY29uc2lzdHMgb2YgbWFueSBpbmRl cGVuZGVudCB0YXNrcwphbGwgY29tcGV0aW5nIGZvciBHUFUgdGltZSBhbmQgd2FpdGluZyB1cG9u IHRoZSByZXN1bHRzIChlLmcuIHJlYWx0aW1lCnRyYW5zY29kaW5nIG9mIG1hbnksIG1hbnkgc3Ry ZWFtcykuIE9uZSBib3R0bGVuZWNrIGluIHBhcnRpY3VsYXIgaXMgdGhhdAplYWNoIGNsaWVudCB3 YWl0cyBvbiBpdHMgb3duIHJlc3VsdHMsIGJ1dCBldmVyeSBjbGllbnQgaXMgd29rZW4gdXAgYWZ0 ZXIKZXZlcnkgYmF0Y2hidWZmZXIgLSBoZW5jZSB0aGUgdGh1bmRlciBvZiBob292ZXMgYXMgdGhl biBldmVyeSBjbGllbnQgbXVzdApkbyBpdHMgaGVhdnl3ZWlnaHQgZGFuY2UgdG8gcmVhZCBhIGNv aGVyZW50IHNlcW5vIHRvIHNlZSBpZiBpdCBpcyB0aGUKbHVja3kgb25lLgoKSWRlYWxseSwgd2Ug b25seSB3YW50IG9uZSBjbGllbnQgdG8gd2FrZSB1cCBhZnRlciB0aGUgaW50ZXJydXB0IGFuZApj aGVjayBpdHMgcmVxdWVzdCBmb3IgY29tcGxldGlvbi4gU2luY2UgdGhlIHJlcXVlc3RzIG11c3Qg cmV0aXJlIGluCm9yZGVyLCB3ZSBjYW4gc2VsZWN0IHRoZSBmaXJzdCBjbGllbnQgb24gdGhlIG9s ZGVzdCByZXF1ZXN0IHRvIGJlIHdva2VuLgpPbmNlIHRoYXQgY2xpZW50IGhhcyBjb21wbGV0ZWQg aGlzIHdhaXQsIHdlIGNhbiB0aGVuIHdha2UgdXAgdGhlCm5leHQgY2xpZW50IGFuZCBzbyBvbi4g SG93ZXZlciwgYWxsIGNsaWVudHMgdGhlbiBpbmN1ciBsYXRlbmN5IGFzIGV2ZXJ5CnByb2Nlc3Mg aW4gdGhlIGNoYWluIG1heSBiZSBkZWxheWVkIGZvciBzY2hlZHVsaW5nIC0gdGhpcyBtYXkgYWxz byB0aGVuCmNhdXNlIHNvbWUgcHJpb3JpdHkgaW52ZXJzaW9uLiBUbyByZWR1Y2UgdGhlIGxhdGVu Y3ksIHdoZW4gYSBjbGllbnQKaXMgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LCB3ZSBz Y2FuIHRoZSB0cmVlIGZvciBjb21wbGV0ZWQKc2Vxbm8gYW5kIHdha2UgdXAgYWxsIHRoZSBjb21w bGV0ZWQgd2FpdGVycyBpbiBwYXJhbGxlbC4KCnYyOiBDb252ZXJ0IGZyb20gYSBrd29ya2VyIHBl ciBlbmdpbmUgaW50byBhIGRlZGljYXRlZCBrdGhyZWFkIGZvciB0aGUKYm90dG9tLWhhbGYuCnYz OiBSZW5hbWUgcmVxdWVzdCBtZW1iZXJzIGFuZCB0d2VhayBjb21tZW50cy4KdjQ6IFVzZSBhIHBl ci1lbmdpbmUgc3BpbmxvY2sgaW4gdGhlIGJyZWFkY3J1bWJzIGJvdHRvbS1oYWxmLgp2NTogRml4 IHJhY2UgaW4gbG9ja2xlc3NseSBjaGVja2luZyB3YWl0ZXIgc3RhdHVzIGFuZCBraWNraW5nIHRo ZSB0YXNrIG9uCmFkZGluZyBhIG5ldyB3YWl0ZXIuCnY2OiBGaXggZGVjaWRpbmcgd2hlbiB0byBm b3JjZSB0aGUgdGltZXIgdG8gaGlkZSBtaXNzaW5nIGludGVycnVwdHMuCnY3OiBNb3ZlIHRoZSBi b3R0b20taGFsZiBmcm9tIHRoZSBrdGhyZWFkIHRvIHRoZSBmaXJzdCBjbGllbnQgcHJvY2Vzcy4K djg6IFJld29yZCBhIGZldyBjb21tZW50cwp2OTogQnJlYWsgdGhlIGJ1c3kgbG9vcCB3aGVuIHRo ZSBpbnRlcnJ1cHQgaXMgdW5tYXNrZWQgb3IgaGFzIGZpcmVkLgp2MTA6IENvbW1lbnRzLCB1bm5l Y2Vzc2FyeSBjaHVybiwgYmV0dGVyIGRlYnVnZ2luZyBmcm9tIFR2cnRrbwp2MTE6IFdha2UgYWxs IGNvbXBsZXRlZCB3YWl0ZXJzIG9uIHJlbW92aW5nIHRoZSBjdXJyZW50IGJvdHRvbS1oYWxmIHRv CnJlZHVjZSB0aGUgbGF0ZW5jeSBvZiB3YWtpbmcgdXAgYSBoZXJkIG9mIGNsaWVudHMgYWxsIHdh aXRpbmcgb24gdGhlCnNhbWUgcmVxdWVzdC4KdjEyOiBSZWFycmFuZ2UgbWlzc2VkLWludGVycnVw dCBmYXVsdCBpbmplY3Rpb24gc28gdGhhdCBpdCB3b3JrcyB3aXRoCmlndC9kcnZfbWlzc2VkX2ly cV9oYW5nCnYxMzogUmVuYW1lIGludGVsX2JyZWFkY3J1bWIgYW5kIGZyaWVuZHMgdG8gaW50ZWxf d2FpdCBpbiBwcmVwYXJhdGlvbgpmb3Igc2lnbmFsIGhhbmRsaW5nLgp2MTQ6IFJDVSBjb21tZW50 YXJ5LCBhc3NlcnRfc3Bpbl9sb2NrZWQKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogIlJvZ296aGtpbiwgRG1pdHJ5IFYiIDxkbWl0cnku di5yb2dvemhraW5AaW50ZWwuY29tPgpDYzogIkdvbmcsIFpoaXBlbmciIDx6aGlwZW5nLmdvbmdA aW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVs LmNvbT4KQ2M6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgIHwgIDE5ICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgIHwgIDMyICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgICAgICAgICAgfCAxNDAgKysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jICAgICAgICAgIHwgIDIwICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYnJlYWRjcnVtYnMuYyB8IDI5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgIHwgICA1ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgIHwgICA1ICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggIHwgIDY4ICsrKysrKy0KIDEwIGZpbGVzIGNoYW5n ZWQsIDQ3NyBpbnNlcnRpb25zKCspLCAxMDggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKaW5kZXggMWU5ODk1YjlhNTQ2Li45OWNlNTkxYzg1NzQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCkBAIC0zNyw2ICszNyw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCiAJICBp OTE1X2dlbV91c2VycHRyLm8gXAogCSAgaTkxNV9ncHVfZXJyb3IubyBcCiAJICBpOTE1X3RyYWNl X3BvaW50cy5vIFwKKwkgIGludGVsX2JyZWFkY3J1bWJzLm8gXAogCSAgaW50ZWxfbHJjLm8gXAog CSAgaW50ZWxfbW9jcy5vIFwKIAkgIGludGVsX3JpbmdidWZmZXIubyBcCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCmluZGV4IDJmZDJiODIxNGYwMS4uZmY3NmE4MTliMzUyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtNzMwLDEwICs3MzAsMjIgQEAgc3RhdGljIGlu dCBpOTE1X2dlbV9yZXF1ZXN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQog c3RhdGljIHZvaWQgaTkxNV9yaW5nX3NlcW5vX2luZm8oc3RydWN0IHNlcV9maWxlICptLAogCQkJ CSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogeworCXN0cnVjdCByYl9ub2RlICpyYjsK KwogCWlmIChyaW5nLT5nZXRfc2Vxbm8pIHsKIAkJc2VxX3ByaW50ZihtLCAiQ3VycmVudCBzZXF1 ZW5jZSAoJXMpOiAleFxuIiwKIAkJCSAgIHJpbmctPm5hbWUsIHJpbmctPmdldF9zZXFubyhyaW5n LCBmYWxzZSkpOwogCX0KKworCXNwaW5fbG9jaygmcmluZy0+YnJlYWRjcnVtYnMubG9jayk7CisJ Zm9yIChyYiA9IHJiX2ZpcnN0KCZyaW5nLT5icmVhZGNydW1icy53YWl0ZXJzKTsKKwkgICAgIHJi ICE9IE5VTEw7CisJICAgICByYiA9IHJiX25leHQocmIpKSB7CisJCXN0cnVjdCBpbnRlbF93YWl0 ICp3ID0gY29udGFpbmVyX29mKHJiLCB0eXBlb2YoKncpLCBub2RlKTsKKwkJc2VxX3ByaW50Ziht LCAiV2FpdGluZyAoJXMpOiAlcyBbJWRdIG9uICV4XG4iLAorCQkJICAgcmluZy0+bmFtZSwgdy0+ dGFzay0+Y29tbSwgdy0+dGFzay0+cGlkLCB3LT5zZXFubyk7CisJfQorCXNwaW5fdW5sb2NrKCZy aW5nLT5icmVhZGNydW1icy5sb2NrKTsKIH0KIAogc3RhdGljIGludCBpOTE1X2dlbV9zZXFub19p bmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKQEAgLTEzNTYsOCArMTM2OCw5IEBA IHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KnVudXNlZCkKIAogCWZvcl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGkpIHsKIAkJc2VxX3By aW50ZihtLCAiJXM6XG4iLCByaW5nLT5uYW1lKTsKLQkJc2VxX3ByaW50ZihtLCAiXHRzZXFubyA9 ICV4IFtjdXJyZW50ICV4XVxuIiwKLQkJCSAgIHJpbmctPmhhbmdjaGVjay5zZXFubywgc2Vxbm9b aV0pOworCQlzZXFfcHJpbnRmKG0sICJcdHNlcW5vID0gJXggW2N1cnJlbnQgJXhdLCB3YWl0ZXJz PyAlZFxuIiwKKwkJCSAgIHJpbmctPmhhbmdjaGVjay5zZXFubywgc2Vxbm9baV0sCisJCQkgICBp bnRlbF9lbmdpbmVfaGFzX3dhaXRlcihyaW5nKSk7CiAJCXNlcV9wcmludGYobSwgIlx0QUNUSEQg PSAweCUwOGxseCBbY3VycmVudCAweCUwOGxseF1cbiIsCiAJCQkgICAobG9uZyBsb25nKXJpbmct PmhhbmdjaGVjay5hY3RoZCwKIAkJCSAgIChsb25nIGxvbmcpYWN0aGRbaV0pOwpAQCAtMjMyOCw3 ICsyMzQxLDcgQEAgc3RhdGljIGludCBjb3VudF9pcnFfd2FpdGVycyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKIAlpbnQgaTsKIAogCWZvcl9lYWNoX3JpbmcocmluZywgaTkxNSwgaSkK LQkJY291bnQgKz0gcmluZy0+aXJxX3JlZmNvdW50OworCQljb3VudCArPSBpbnRlbF9lbmdpbmVf aGFzX3dhaXRlcihyaW5nKTsKIAogCXJldHVybiBjb3VudDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCmluZGV4IDYyNmY3YWNjYTA3NC4uNDk1ZjVjYTk1YzViIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKQEAgLTEzODUsNyArMTM4NSw3IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7CiAjZGVm aW5lIEk5MTVfU1RPUF9SSU5HX0FMTE9XX1dBUk4gICAgICAoMSA8PCAzMCkKIAogCS8qIEZvciBt aXNzZWQgaXJxL3NlcW5vIHNpbXVsYXRpb24uICovCi0JdW5zaWduZWQgaW50IHRlc3RfaXJxX3Jp bmdzOworCXVuc2lnbmVkIGxvbmcgdGVzdF9pcnFfcmluZ3M7CiB9OwogCiBlbnVtIG1vZGVzZXRf cmVzdG9yZSB7CkBAIC0yODM4LDcgKzI4MzgsNiBAQCBpYnhfZGlzYWJsZV9kaXNwbGF5X2ludGVy cnVwdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90IGJpdHMpCiAJ aWJ4X2Rpc3BsYXlfaW50ZXJydXB0X3VwZGF0ZShkZXZfcHJpdiwgYml0cywgMCk7CiB9CiAKLQog LyogaTkxNV9nZW0uYyAqLwogaW50IGk5MTVfZ2VtX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7 CkBAIC0zNjU3LDQgKzM2NTYsMzMgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfdHJhY2VfaXJx X2dldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQlpOTE1X2dlbV9yZXF1ZXN0X2Fz c2lnbigmcmluZy0+dHJhY2VfaXJxX3JlcSwgcmVxKTsKIH0KIAorc3RhdGljIGlubGluZSBib29s IF9faTkxNV9yZXF1ZXN0X2lycV9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKK3sKKwkvKiBFbnN1cmUgb3VyIHJlYWQgb2YgdGhlIHNlcW5vIGlzIGNvaGVyZW50IHNv IHRoYXQgd2UKKwkgKiBkbyBub3QgIm1pc3MgYW4gaW50ZXJydXB0IiAoaS5lLiBpZiB0aGlzIGlz IHRoZSBsYXN0CisJICogcmVxdWVzdCBhbmQgdGhlIHNlcW5vIHdyaXRlIGZyb20gdGhlIEdQVSBp cyBub3QgdmlzaWJsZQorCSAqIGJ5IHRoZSB0aW1lIHRoZSBpbnRlcnJ1cHQgZmlyZXMsIHdlIHdp bGwgc2VlIHRoYXQgdGhlCisJICogcmVxdWVzdCBpcyBpbmNvbXBsZXRlIGFuZCBnbyBiYWNrIHRv IHNsZWVwIGF3YWl0aW5nCisJICogYW5vdGhlciBpbnRlcnJ1cHQgdGhhdCB3aWxsIG5ldmVyIGNv bWUuKQorCSAqCisJICogU3RyaWN0bHksIHdlIG9ubHkgbmVlZCB0byBkbyB0aGlzIG9uY2UgYWZ0 ZXIgYW4gaW50ZXJydXB0LAorCSAqIGJ1dCBpdCBpcyBlYXNpZXIgYW5kIHNhZmVyIHRvIGRvIGl0 IGV2ZXJ5IHRpbWUgdGhlIHdhaXRlcgorCSAqIGlzIHdva2VuLgorCSAqLworCWlmIChpOTE1X2dl bV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIGZhbHNlKSkKKwkJcmV0dXJuIHRydWU7CisKKwkvKiBX ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYW55IGdwdSByZXNldCBoYXBwZW5lZCBpbiBiZXR3ZWVu CisJICogdGhlIHJlcXVlc3QgYmVpbmcgc3VibWl0dGVkIGFuZCBub3cuIElmIGEgcmVzZXQgaGFz IG9jY3VycmVkLAorCSAqIHRoZSByZXF1ZXN0IGlzIGVmZmVjdGl2ZWx5IGNvbXBsZXRlICh3ZSBl aXRoZXIgYXJlIGluIHRoZQorCSAqIHByb2Nlc3Mgb2Ygb3IgaGF2ZSBkaXNjYXJkZWQgdGhlIHJl bmRlcmluZyBhbmQgY29tcGxldGVseQorCSAqIHJlc2V0IHRoZSBHUFUuIFRoZSByZXN1bHRzIG9m IHRoZSByZXF1ZXN0IGFyZSBsb3N0IGFuZCB3ZQorCSAqIGFyZSBmcmVlIHRvIGNvbnRpbnVlIG9u IHdpdGggdGhlIG9yaWdpbmFsIG9wZXJhdGlvbi4KKwkgKi8KKwlpZiAocmVxLT5yZXNldF9jb3Vu dGVyICE9IGk5MTVfcmVzZXRfY291bnRlcigmcmVxLT5pOTE1LT5ncHVfZXJyb3IpKQorCQlyZXR1 cm4gdHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwppbmRleCBjMjk3MTRlMTQwNmEuLjdiODQ1ZWJhOWNiYyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCkBAIC0xMTIxLDE3ICsxMTIxLDYgQEAgaTkxNV9nZW1fY2hlY2tfd2VkZ2UodW5zaWdu ZWQgcmVzZXRfY291bnRlciwgYm9vbCBpbnRlcnJ1cHRpYmxlKQogCXJldHVybiAwOwogfQogCi1z dGF0aWMgdm9pZCBmYWtlX2lycSh1bnNpZ25lZCBsb25nIGRhdGEpCi17Ci0Jd2FrZV91cF9wcm9j ZXNzKChzdHJ1Y3QgdGFza19zdHJ1Y3QgKilkYXRhKTsKLX0KLQotc3RhdGljIGJvb2wgbWlzc2Vk X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQotewotCXJldHVybiB0ZXN0X2JpdChyaW5nLT5pZCwgJmRl dl9wcml2LT5ncHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncyk7Ci19Ci0KIHN0YXRpYyB1bnNpZ25l ZCBsb25nIGxvY2FsX2Nsb2NrX3VzKHVuc2lnbmVkICpjcHUpCiB7CiAJdW5zaWduZWQgbG9uZyB0 OwpAQCAtMTE2NCw3ICsxMTUzLDkgQEAgc3RhdGljIGJvb2wgYnVzeXdhaXRfc3RvcCh1bnNpZ25l ZCBsb25nIHRpbWVvdXQsIHVuc2lnbmVkIGNwdSkKIAlyZXR1cm4gdGhpc19jcHUgIT0gY3B1Owog fQogCi1zdGF0aWMgaW50IF9faTkxNV9zcGluX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsIGludCBzdGF0ZSkKK3N0YXRpYyBib29sIF9faTkxNV9zcGluX3JlcXVlc3Qo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCisJCQkJc3RydWN0IGludGVsX3dhaXQg KndhaXQsCisJCQkJaW50IHN0YXRlKQogewogCXVuc2lnbmVkIGxvbmcgdGltZW91dDsKIAl1bnNp Z25lZCBjcHU7CkBAIC0xMTc5LDMxICsxMTcwLDMwIEBAIHN0YXRpYyBpbnQgX19pOTE1X3NwaW5f cmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IHN0YXRlKQogCSAq IHRha2VzIHRvIHNsZWVwIG9uIGEgcmVxdWVzdCwgb24gdGhlIG9yZGVyIG9mIGEgbWljcm9zZWNv bmQuCiAJICovCiAKLQlpZiAocmVxLT5yaW5nLT5pcnFfcmVmY291bnQpCi0JCXJldHVybiAtRUJV U1k7Ci0KIAkvKiBPbmx5IHNwaW4gaWYgd2Uga25vdyB0aGUgR1BVIGlzIHByb2Nlc3NpbmcgdGhp cyByZXF1ZXN0ICovCiAJaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X3N0YXJ0ZWQocmVxLCB0cnVlKSkK LQkJcmV0dXJuIC1FQUdBSU47CisJCXJldHVybiBmYWxzZTsKIAogCXRpbWVvdXQgPSBsb2NhbF9j bG9ja191cygmY3B1KSArIDU7Ci0Jd2hpbGUgKCFuZWVkX3Jlc2NoZWQoKSkgeworCWRvIHsKIAkJ aWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSwgdHJ1ZSkpCi0JCQlyZXR1cm4gMDsK KwkJCXJldHVybiB0cnVlOwogCi0JCWlmIChzaWduYWxfcGVuZGluZ19zdGF0ZShzdGF0ZSwgY3Vy cmVudCkpCisJCWlmIChzaWduYWxfcGVuZGluZ19zdGF0ZShzdGF0ZSwgd2FpdC0+dGFzaykpCiAJ CQlicmVhazsKIAogCQlpZiAoYnVzeXdhaXRfc3RvcCh0aW1lb3V0LCBjcHUpKQogCQkJYnJlYWs7 CiAKIAkJY3B1X3JlbGF4X2xvd2xhdGVuY3koKTsKLQl9CiAKLQlpZiAoaTkxNV9nZW1fcmVxdWVz dF9jb21wbGV0ZWQocmVxLCBmYWxzZSkpCi0JCXJldHVybiAwOworCQkvKiBCcmVhayB0aGUgbG9v cCBpZiB3ZSBoYXZlIGNvbnN1bWVkIHRoZSB0aW1lc2xpY2UgKG9yIGJlZW4KKwkJICogcHJlZW1w dGVkKSBvciB3aGVuIGVpdGhlciB0aGUgYmFja2dyb3VuZCB0aHJlYWQgaGFzCisJCSAqIGVuYWJs ZWQgdGhlIGludGVycnVwdCwgb3IgdGhlIElSUSBoYXMgZmlyZWQuCisJCSAqLworCX0gd2hpbGUg KCFuZWVkX3Jlc2NoZWQoKSAmJiB3YWl0LT50YXNrLT5zdGF0ZSA9PSBzdGF0ZSk7CiAKLQlyZXR1 cm4gLUVBR0FJTjsKKwlyZXR1cm4gZmFsc2U7CiB9CiAKIC8qKgpAQCAtMTIyNywxOCArMTIxNywx MyBAQCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKIAkJCXM2NCAqdGltZW91dCwKIAkJCXN0cnVjdCBpbnRlbF9ycHNfY2xpZW50ICpycHMp CiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0 X3JpbmcocmVxKTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2OwotCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JY29uc3Qg Ym9vbCBpcnFfdGVzdF9pbl9wcm9ncmVzcyA9Ci0JCUFDQ0VTU19PTkNFKGRldl9wcml2LT5ncHVf ZXJyb3IudGVzdF9pcnFfcmluZ3MpICYgaW50ZWxfcmluZ19mbGFnKHJpbmcpOwogCWludCBzdGF0 ZSA9IGludGVycnVwdGlibGUgPyBUQVNLX0lOVEVSUlVQVElCTEUgOiBUQVNLX1VOSU5URVJSVVBU SUJMRTsKLQlERUZJTkVfV0FJVCh3YWl0KTsKLQl1bnNpZ25lZCBsb25nIHRpbWVvdXRfZXhwaXJl OworCXN0cnVjdCBpbnRlbF93YWl0IHdhaXQ7CisJdW5zaWduZWQgbG9uZyB0aW1lb3V0X3JlbWFp bjsKIAlzNjQgYmVmb3JlLCBub3c7Ci0JaW50IHJldDsKKwlpbnQgcmV0ID0gMDsKIAotCVdBUk4o IWludGVsX2lycXNfZW5hYmxlZChkZXZfcHJpdiksICJJUlFzIGRpc2FibGVkIik7CisJbWlnaHRf c2xlZXAoKTsKIAogCWlmIChsaXN0X2VtcHR5KCZyZXEtPmxpc3QpKQogCQlyZXR1cm4gMDsKQEAg LTEyNDYsNyArMTIzMSw3IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAogCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEs IHRydWUpKQogCQlyZXR1cm4gMDsKIAotCXRpbWVvdXRfZXhwaXJlID0gMDsKKwl0aW1lb3V0X3Jl bWFpbiA9IE1BWF9TQ0hFRFVMRV9USU1FT1VUOwogCWlmICh0aW1lb3V0KSB7CiAJCWlmIChXQVJO X09OKCp0aW1lb3V0IDwgMCkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTEyNTQsODMgKzEyMzks NjYgQEAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCiAJCWlmICgqdGltZW91dCA9PSAwKQogCQkJcmV0dXJuIC1FVElNRTsKIAotCQl0aW1l b3V0X2V4cGlyZSA9IGppZmZpZXMgKyBuc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoKnRpbWVvdXQp OworCQl0aW1lb3V0X3JlbWFpbiA9IG5zZWNzX3RvX2ppZmZpZXNfdGltZW91dCgqdGltZW91dCk7 CiAJfQogCi0JaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikKLQkJZ2VuNl9ycHNf Ym9vc3QoZGV2X3ByaXYsIHJwcywgcmVxLT5lbWl0dGVkX2ppZmZpZXMpOwotCiAJLyogUmVjb3Jk IGN1cnJlbnQgdGltZSBpbiBjYXNlIGludGVycnVwdGVkIGJ5IHNpZ25hbCwgb3Igd2VkZ2VkICov CiAJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF93YWl0X2JlZ2luKHJlcSk7CiAJYmVmb3JlID0ga3Rp bWVfZ2V0X3Jhd19ucygpOwogCi0JLyogT3B0aW1pc3RpYyBzcGluIGZvciB0aGUgbmV4dCBqaWZm aWUgYmVmb3JlIHRvdWNoaW5nIElSUXMgKi8KLQlyZXQgPSBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHJl cSwgc3RhdGUpOwotCWlmIChyZXQgPT0gMCkKLQkJZ290byBvdXQ7CisJaWYgKElOVEVMX0lORk8o cmVxLT5pOTE1KS0+Z2VuID49IDYpCisJCWdlbjZfcnBzX2Jvb3N0KHJlcS0+aTkxNSwgcnBzLCBy ZXEtPmVtaXR0ZWRfamlmZmllcyk7CiAKLQlpZiAoIWlycV90ZXN0X2luX3Byb2dyZXNzICYmIFdB Uk5fT04oIXJpbmctPmlycV9nZXQocmluZykpKSB7Ci0JCXJldCA9IC1FTk9ERVY7Ci0JCWdvdG8g b3V0OwotCX0KKwlpbnRlbF93YWl0X2luaXQoJndhaXQsIHJlcS0+c2Vxbm8pOworCXNldF90YXNr X3N0YXRlKHdhaXQudGFzaywgc3RhdGUpOwogCi0JZm9yICg7OykgewotCQlzdHJ1Y3QgdGltZXJf bGlzdCB0aW1lcjsKKwkvKiBPcHRpbWlzdGljIHNwaW4gZm9yIHRoZSBuZXh0IH5qaWZmaWUgYmVm b3JlIHRvdWNoaW5nIElSUXMgKi8KKwlpZiAoaW50ZWxfZW5naW5lX2FkZF93YWl0KHJlcS0+cmlu ZywgJndhaXQpKSB7CisJCWlmIChfX2k5MTVfc3Bpbl9yZXF1ZXN0KHJlcSwgJndhaXQsIHN0YXRl KSkKKwkJCWdvdG8gY29tcGxldGU7CiAKLQkJcHJlcGFyZV90b193YWl0KCZyaW5nLT5pcnFfcXVl dWUsICZ3YWl0LCBzdGF0ZSk7CisJCWludGVsX2VuZ2luZV9lbmFibGVfaXJxKHJlcS0+cmluZyk7 CiAKLQkJLyogV2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIGFueSBncHUgcmVzZXQgaGFwcGVuZWQg aW4gYmV0d2VlbgotCQkgKiB0aGUgcmVxdWVzdCBiZWluZyBzdWJtaXR0ZWQgYW5kIG5vdy4gSWYg YSByZXNldCBoYXMgb2NjdXJyZWQsCi0JCSAqIHRoZSByZXF1ZXN0IGlzIGVmZmVjdGl2ZWx5IGNv bXBsZXRlICh3ZSBlaXRoZXIgYXJlIGluIHRoZQotCQkgKiBwcm9jZXNzIG9mIG9yIGhhdmUgZGlz Y2FyZGVkIHRoZSByZW5kZXJpbmcgYW5kIGNvbXBsZXRlbHkKLQkJICogcmVzZXQgdGhlIEdQVS4g VGhlIHJlc3VsdHMgb2YgdGhlIHJlcXVlc3QgYXJlIGxvc3QgYW5kIHdlCi0JCSAqIGFyZSBmcmVl IHRvIGNvbnRpbnVlIG9uIHdpdGggdGhlIG9yaWdpbmFsIG9wZXJhdGlvbi4KKwkJLyogSW4gb3Jk ZXIgdG8gY2hlY2sgdGhhdCB3ZSBoYXZlbid0IG1pc3NlZCB0aGUgaW50ZXJydXB0CisJCSAqIGFz IHdlIGVuYWJsZWQgaXQsIHdlIG5lZWQgdG8ga2ljayBvdXJzZWx2ZXMgdG8gZG8gYQorCQkgKiBj b2hlcmVudCBjaGVjayBvbiB0aGUgc2Vxbm8gYmVmb3JlIHdlIHNsZWVwLgogCQkgKi8KLQkJaWYg KHJlcS0+cmVzZXRfY291bnRlciAhPSBpOTE1X3Jlc2V0X2NvdW50ZXIoJmRldl9wcml2LT5ncHVf ZXJyb3IpKSB7Ci0JCQlyZXQgPSAwOwotCQkJYnJlYWs7Ci0JCX0KLQotCQlpZiAoaTkxNV9nZW1f cmVxdWVzdF9jb21wbGV0ZWQocmVxLCBmYWxzZSkpIHsKLQkJCXJldCA9IDA7Ci0JCQlicmVhazsK LQkJfQorCQlnb3RvIHdha2V1cDsKKwl9CiAKLQkJaWYgKHNpZ25hbF9wZW5kaW5nX3N0YXRlKHN0 YXRlLCBjdXJyZW50KSkgeworCWZvciAoOzspIHsKKwkJaWYgKHNpZ25hbF9wZW5kaW5nX3N0YXRl KHN0YXRlLCB3YWl0LnRhc2spKSB7CiAJCQlyZXQgPSAtRVJFU1RBUlRTWVM7CiAJCQlicmVhazsK IAkJfQogCi0JCWlmICh0aW1lb3V0ICYmIHRpbWVfYWZ0ZXJfZXEoamlmZmllcywgdGltZW91dF9l eHBpcmUpKSB7CisJCS8qIEVuc3VyZSB0aGF0IGV2ZW4gaWYgdGhlIEdQVSBoYW5ncywgd2UgZ2V0 IHdva2VuIHVwLiAqLworCQlpOTE1X3F1ZXVlX2hhbmdjaGVjayhyZXEtPmk5MTUpOworCisJCXRp bWVvdXRfcmVtYWluID0gaW9fc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0X3JlbWFpbik7CisJCWlm ICh0aW1lb3V0X3JlbWFpbiA9PSAwKSB7CiAJCQlyZXQgPSAtRVRJTUU7CiAJCQlicmVhazsKIAkJ fQogCi0JCS8qIEVuc3VyZSB0aGF0IGV2ZW4gaWYgdGhlIEdQVSBoYW5ncywgd2UgZ2V0IHdva2Vu IHVwLiAqLwotCQlpOTE1X3F1ZXVlX2hhbmdjaGVjayhkZXZfcHJpdik7Ci0KLQkJdGltZXIuZnVu Y3Rpb24gPSBOVUxMOwotCQlpZiAodGltZW91dCB8fCBtaXNzZWRfaXJxKGRldl9wcml2LCByaW5n KSkgewotCQkJdW5zaWduZWQgbG9uZyBleHBpcmU7Ci0KLQkJCXNldHVwX3RpbWVyX29uX3N0YWNr KCZ0aW1lciwgZmFrZV9pcnEsICh1bnNpZ25lZCBsb25nKWN1cnJlbnQpOwotCQkJZXhwaXJlID0g bWlzc2VkX2lycShkZXZfcHJpdiwgcmluZykgPyBqaWZmaWVzICsgMSA6IHRpbWVvdXRfZXhwaXJl OwotCQkJbW9kX3RpbWVyKCZ0aW1lciwgZXhwaXJlKTsKLQkJfQorCQlpZiAoaW50ZWxfd2FpdF9j b21wbGV0ZSgmd2FpdCkpCisJCQlicmVhazsKIAotCQlpb19zY2hlZHVsZSgpOword2FrZXVwOgor CQlzZXRfdGFza19zdGF0ZSh3YWl0LnRhc2ssIHN0YXRlKTsKIAotCQlpZiAodGltZXIuZnVuY3Rp b24pIHsKLQkJCWRlbF9zaW5nbGVzaG90X3RpbWVyX3N5bmMoJnRpbWVyKTsKLQkJCWRlc3Ryb3lf dGltZXJfb25fc3RhY2soJnRpbWVyKTsKLQkJfQorCQkvKiBDYXJlZnVsbHkgY2hlY2sgaWYgdGhl IHJlcXVlc3QgaXMgY29tcGxldGUsIGdpdmluZyB0aW1lCisJCSAqIGZvciB0aGUgc2Vxbm8gdG8g YmUgdmlzaWJsZSBmb2xsb3dpbmcgdGhlIGludGVycnVwdC4KKwkJICogV2UgYWxzbyBoYXZlIHRv IGNoZWNrIGluIGNhc2Ugd2UgYXJlIGtpY2tlZCBieSB0aGUgR1BVCisJCSAqIHJlc2V0IGluIG9y ZGVyIHRvIGRyb3AgdGhlIHN0cnVjdF9tdXRleC4KKwkJICovCisJCWlmIChfX2k5MTVfcmVxdWVz dF9pcnFfY29tcGxldGUocmVxKSkKKwkJCWJyZWFrOwogCX0KLQlpZiAoIWlycV90ZXN0X2luX3By b2dyZXNzKQotCQlyaW5nLT5pcnFfcHV0KHJpbmcpOwotCi0JZmluaXNoX3dhaXQoJnJpbmctPmly cV9xdWV1ZSwgJndhaXQpOwogCi1vdXQ6Citjb21wbGV0ZToKKwlpbnRlbF9lbmdpbmVfcmVtb3Zl X3dhaXQocmVxLT5yaW5nLCAmd2FpdCk7CisJX19zZXRfdGFza19zdGF0ZSh3YWl0LnRhc2ssIFRB U0tfUlVOTklORyk7CiAJbm93ID0ga3RpbWVfZ2V0X3Jhd19ucygpOwogCXRyYWNlX2k5MTVfZ2Vt X3JlcXVlc3Rfd2FpdF9lbmQocmVxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKaW5kZXggMDZjYTQwODI3MzViLi5mODA1ZDExN2YzZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYwpAQCAtOTAwLDcgKzkwMCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVj b3JkX3Jpbmdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJZXJpbmctPmluc3Rkb25l ID0gSTkxNV9SRUFEKEdFTjJfSU5TVERPTkUpOwogCX0KIAotCWVyaW5nLT53YWl0aW5nID0gd2Fp dHF1ZXVlX2FjdGl2ZSgmcmluZy0+aXJxX3F1ZXVlKTsKKwllcmluZy0+d2FpdGluZyA9IGludGVs X2VuZ2luZV9oYXNfd2FpdGVyKHJpbmcpOwogCWVyaW5nLT5pbnN0cG0gPSBJOTE1X1JFQUQoUklO R19JTlNUUE0ocmluZy0+bW1pb19iYXNlKSk7CiAJZXJpbmctPnNlcW5vID0gcmluZy0+Z2V0X3Nl cW5vKHJpbmcsIGZhbHNlKTsKIAllcmluZy0+YWN0aGQgPSBpbnRlbF9yaW5nX2dldF9hY3RpdmVf aGVhZChyaW5nKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IDViYTgyYTg3ZjNkMS4uMDM5 YWIyMzIzOGEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKQEAgLTEwMDAsOCArMTAwMCw3IEBA IHN0YXRpYyB2b2lkIG5vdGlmeV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJ CXJldHVybjsKIAogCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJpbmcpOwotCi0Jd2Fr ZV91cF9hbGwoJnJpbmctPmlycV9xdWV1ZSk7CisJaW50ZWxfZW5naW5lX3dha2V1cChyaW5nKTsK IH0KIAogc3RhdGljIHZvaWQgdmx2X2MwX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LApAQCAtMTA4Myw3ICsxMDgyLDcgQEAgc3RhdGljIGJvb2wgYW55X3dhaXRlcnMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludCBpOwogCiAJZm9yX2VhY2hfcmlu ZyhyaW5nLCBkZXZfcHJpdiwgaSkKLQkJaWYgKHJpbmctPmlycV9yZWZjb3VudCkKKwkJaWYgKGlu dGVsX2VuZ2luZV9oYXNfd2FpdGVyKHJpbmcpKQogCQkJcmV0dXJuIHRydWU7CiAKIAlyZXR1cm4g ZmFsc2U7CkBAIC0yNDMxLDkgKzI0MzAsNiBAQCBvdXQ6CiBzdGF0aWMgdm9pZCBpOTE1X2Vycm9y X3dha2VfdXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgIGJv b2wgcmVzZXRfY29tcGxldGVkKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmc7Ci0J aW50IGk7Ci0KIAkvKgogCSAqIE5vdGlmeSBhbGwgd2FpdGVycyBmb3IgR1BVIGNvbXBsZXRpb24g ZXZlbnRzIHRoYXQgcmVzZXQgc3RhdGUgaGFzCiAJICogYmVlbiBjaGFuZ2VkLCBhbmQgdGhhdCB0 aGV5IG5lZWQgdG8gcmVzdGFydCB0aGVpciB3YWl0IGFmdGVyCkBAIC0yNDQxLDkgKzI0MzcsOCBA QCBzdGF0aWMgdm9pZCBpOTE1X2Vycm9yX3dha2VfdXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCSAqIGEgZ3B1IHJlc2V0IHBlbmRpbmcgc28gdGhhdCBpOTE1X2Vycm9yX3dv cmtfZnVuYyBjYW4gYWNxdWlyZSB0aGVtKS4KIAkgKi8KIAotCS8qIFdha2UgdXAgX193YWl0X3Nl cW5vLCBwb3RlbnRpYWxseSBob2xkaW5nIGRldi0+c3RydWN0X211dGV4LiAqLwotCWZvcl9lYWNo X3JpbmcocmluZywgZGV2X3ByaXYsIGkpCi0JCXdha2VfdXBfYWxsKCZyaW5nLT5pcnFfcXVldWUp OworCS8qIFdha2UgdXAgaTkxNV93YWl0X3JlcXVlc3QsIHBvdGVudGlhbGx5IGhvbGRpbmcgZGV2 LT5zdHJ1Y3RfbXV0ZXguICovCisJaW50ZWxfa2lja193YWl0ZXJzKGRldl9wcml2KTsKIAogCS8q IFdha2UgdXAgaW50ZWxfY3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzLCBob2xkaW5nIGNydGMt Pm11dGV4LiAqLwogCXdha2VfdXBfYWxsKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlwX3F1ZXVlKTsK QEAgLTMwMjUsMTYgKzMwMjAsMTcgQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxhcHNl ZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQlpZiAocmluZ19pZGxlKHJpbmcsIHNlcW5v KSkgewogCQkJCXJpbmctPmhhbmdjaGVjay5hY3Rpb24gPSBIQU5HQ0hFQ0tfSURMRTsKIAotCQkJ CWlmICh3YWl0cXVldWVfYWN0aXZlKCZyaW5nLT5pcnFfcXVldWUpKSB7CisJCQkJaWYgKGludGVs X2VuZ2luZV9oYXNfd2FpdGVyKHJpbmcpKSB7CiAJCQkJCS8qIElzc3VlIGEgd2FrZS11cCB0byBj YXRjaCBzdHVjayBoL3cuICovCiAJCQkJCWlmICghdGVzdF9hbmRfc2V0X2JpdChyaW5nLT5pZCwg JmRldl9wcml2LT5ncHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncykpIHsKLQkJCQkJCWlmICghKGRl dl9wcml2LT5ncHVfZXJyb3IudGVzdF9pcnFfcmluZ3MgJiBpbnRlbF9yaW5nX2ZsYWcocmluZykp KQorCQkJCQkJaWYgKCF0ZXN0X2JpdChyaW5nLT5pZCwgJmRldl9wcml2LT5ncHVfZXJyb3IudGVz dF9pcnFfcmluZ3MpKQogCQkJCQkJCURSTV9FUlJPUigiSGFuZ2NoZWNrIHRpbWVyIGVsYXBzZWQu Li4gJXMgaWRsZVxuIiwKIAkJCQkJCQkJICByaW5nLT5uYW1lKTsKIAkJCQkJCWVsc2UKIAkJCQkJ CQlEUk1fSU5GTygiRmFrZSBtaXNzZWQgaXJxIG9uICVzXG4iLAogCQkJCQkJCQkgcmluZy0+bmFt ZSk7Ci0JCQkJCQl3YWtlX3VwX2FsbCgmcmluZy0+aXJxX3F1ZXVlKTsKKworCQkJCQkJaW50ZWxf ZW5naW5lX2VuYWJsZV9mYWtlX2lycShyaW5nKTsKIAkJCQkJfQogCQkJCQkvKiBTYWZlZ3VhcmQg YWdhaW5zdCBkcml2ZXIgZmFpbHVyZSAqLwogCQkJCQlyaW5nLT5oYW5nY2hlY2suc2NvcmUgKz0g QlVTWTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjYwMzQ1MWE2YjBjCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwpAQCAtMCwwICsx LDI5MyBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE1IEludGVsIENvcnBvcmF0aW9uCisgKgor ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2Fy ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5j bHVkZSAiaTkxNV9kcnYuaCIKKworc3RhdGljIHZvaWQgaW50ZWxfYnJlYWRjcnVtYnNfZmFrZV9p cnEodW5zaWduZWQgbG9uZyBkYXRhKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICopZGF0YTsKKworCS8qCisJICogVGhlIHRpbWVy IHBlcnNpc3RzIGluIGNhc2Ugd2UgY2Fubm90IGVuYWJsZSBpbnRlcnJ1cHRzLAorCSAqIG9yIGlm IHdlIGhhdmUgcHJldmlvdXNseSBzZWVuIHNlcW5vL2ludGVycnVwdCBpbmNvaGVyZW5jeQorCSAq ICgibWlzc2VkIGludGVycnVwdCIgc3luZHJvbWUpLiBIZXJlIHRoZSB3b3JrZXIgd2lsbCB3YWtl IHVwCisJICogZXZlcnkgamlmZmllIGluIG9yZGVyIHRvIGtpY2sgdGhlIG9sZGVzdCB3YWl0ZXIg dG8gZG8gdGhlCisJICogY29oZXJlbnQgc2Vxbm8gY2hlY2suCisJICovCisJcmN1X3JlYWRfbG9j aygpOworCWlmIChpbnRlbF9lbmdpbmVfd2FrZXVwKGVuZ2luZSkpCisJCW1vZF90aW1lcigmZW5n aW5lLT5icmVhZGNydW1icy5mYWtlX2lycSwgamlmZmllcyArIDEpOworCXJjdV9yZWFkX3VubG9j aygpOworfQorCitzdGF0aWMgdm9pZCBpcnFfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKK3sKKwlXQVJOX09OKCFlbmdpbmUtPmlycV9nZXQoZW5naW5lKSk7Cit9CisKK3N0 YXRpYyB2b2lkIGlycV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sK KwllbmdpbmUtPmlycV9wdXQoZW5naW5lKTsKK30KKworc3RhdGljIHZvaWQgX19pbnRlbF9icmVh ZGNydW1ic19lbmFibGVfaXJxKHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYikKK3sKKwlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQorCQljb250YWluZXJfb2YoYiwgc3RydWN0IGlu dGVsX2VuZ2luZV9jcywgYnJlYWRjcnVtYnMpOworCWJvb2wgbm9pcnE7CisKKwlhc3NlcnRfc3Bp bl9sb2NrZWQoJmItPmxvY2spOworCWlmIChiLT5ycG1fd2FrZWxvY2spCisJCXJldHVybjsKKwor CS8qIFNpbmNlIHdlIGFyZSB3YWl0aW5nIG9uIGEgcmVxdWVzdCwgdGhlIEdQVSBzaG91bGQgYmUg YnVzeQorCSAqIGFuZCBzaG91bGQgaGF2ZSBpdHMgb3duIHJwbSByZWZlcmVuY2UuIEZvciBjb21w bGV0ZW5lc3MsCisJICogcmVjb3JkIGFuIHJwbSByZWZlcmVuY2UgZm9yIG91cnNlbHZlcyB0byBj b3ZlciB0aGUKKwkgKiBpbnRlcnJ1cHQgd2UgdW5tYXNrLgorCSAqLworCWludGVsX3J1bnRpbWVf cG1fZ2V0X25vcmVzdW1lKGVuZ2luZS0+aTkxNSk7CisJYi0+cnBtX3dha2Vsb2NrID0gdHJ1ZTsK KworCS8qIE5vIGludGVycnVwdHM/IEtpY2sgdGhlIHdhaXRlciBldmVyeSBqaWZmaWUhICovCisJ bm9pcnEgPSB0cnVlOworCWlmIChpbnRlbF9pcnFzX2VuYWJsZWQoZW5naW5lLT5pOTE1KSkgewor CQlub2lycSA9IHRlc3RfYml0KGVuZ2luZS0+aWQsCisJCQkJICZlbmdpbmUtPmk5MTUtPmdwdV9l cnJvci5taXNzZWRfaXJxX3JpbmdzKTsKKwkJaWYgKCF0ZXN0X2JpdChlbmdpbmUtPmlkLAorCQkJ ICAgICAgJmVuZ2luZS0+aTkxNS0+Z3B1X2Vycm9yLnRlc3RfaXJxX3JpbmdzKSkgeworCQkJaXJx X2VuYWJsZShlbmdpbmUpOworCQkJYi0+aXJxX2VuYWJsZWQgPSB0cnVlOworCQl9CisJfQorCWlm IChub2lycSkKKwkJbW9kX3RpbWVyKCZiLT5mYWtlX2lycSwgamlmZmllcyArIDEpOworfQorCitz dGF0aWMgdm9pZCBfX2ludGVsX2JyZWFkY3J1bWJzX2Rpc2FibGVfaXJxKHN0cnVjdCBpbnRlbF9i cmVhZGNydW1icyAqYikKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQorCQlj b250YWluZXJfb2YoYiwgc3RydWN0IGludGVsX2VuZ2luZV9jcywgYnJlYWRjcnVtYnMpOworCisJ YXNzZXJ0X3NwaW5fbG9ja2VkKCZiLT5sb2NrKTsKKwlpZiAoIWItPnJwbV93YWtlbG9jaykKKwkJ cmV0dXJuOworCisJaWYgKGItPmlycV9lbmFibGVkKSB7CisJCWlycV9kaXNhYmxlKGVuZ2luZSk7 CisJCWItPmlycV9lbmFibGVkID0gZmFsc2U7CisJfQorCisJaW50ZWxfcnVudGltZV9wbV9wdXQo ZW5naW5lLT5pOTE1KTsKKwliLT5ycG1fd2FrZWxvY2sgPSBmYWxzZTsKK30KKworaW5saW5lIHN0 cnVjdCBpbnRlbF93YWl0ICp0b193YWl0KHN0cnVjdCByYl9ub2RlICpub2RlKQoreworCXJldHVy biBjb250YWluZXJfb2Yobm9kZSwgc3RydWN0IGludGVsX3dhaXQsIG5vZGUpOworfQorCitib29s IGludGVsX2VuZ2luZV9hZGRfd2FpdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJ CQkgICBzdHJ1Y3QgaW50ZWxfd2FpdCAqd2FpdCkKK3sKKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVt YnMgKmIgPSAmZW5naW5lLT5icmVhZGNydW1iczsKKwl1MzIgc2Vxbm8gPSBlbmdpbmUtPmdldF9z ZXFubyhlbmdpbmUsIHRydWUpOworCXN0cnVjdCByYl9ub2RlICoqcCwgKnBhcmVudCwgKmNvbXBs ZXRlZDsKKwlib29sIGZpcnN0OworCisJc3Bpbl9sb2NrKCZiLT5sb2NrKTsKKworCS8qIEluc2Vy dCB0aGUgcmVxdWVzdCBpbnRvIHRoZSByZXRpcm1lbnQgb3JkZXJlZCBsaXN0CisJICogb2Ygd2Fp dGVycyBieSB3YWxraW5nIHRoZSByYnRyZWUuIElmIHdlIGFyZSB0aGUgb2xkZXN0CisJICogc2Vx bm8gaW4gdGhlIHRyZWUgKHRoZSBmaXJzdCB0byBiZSByZXRpcmVkKSwgdGhlbgorCSAqIHNldCBv dXJzZWx2ZXMgYXMgdGhlIGJvdHRvbS1oYWxmLgorCSAqCisJICogQXMgd2UgZGVzY2VuZCB0aGUg dHJlZSwgcHJ1bmUgY29tcGxldGVkIGJyYW5jaGVzIHNpbmNlIHdlIGhvbGQgdGhlCisJICogc3Bp bmxvY2sgd2Uga25vdyB0aGF0IHRoZSBmaXJzdF93YWl0ZXIgbXVzdCBiZSBkZWxheWVkIGFuZCBj YW4KKwkgKiByZWR1Y2Ugc29tZSBvZiB0aGUgc2VxdWVudGlhbCB3YWtlIHVwIGxhdGVuY3kgaWYg d2UgdGFrZSBhY3Rpb24KKwkgKiBvdXJzZWx2ZXMgYW5kIHdha2UgdXAgdGhlIGNvcG1sZXRlZCB0 YXNrcyBpbiBwYXJhbGxlbC4gQWxzbywgYnkKKwkgKiByZW1vdmluZyBzdGFsZSBlbGVtZW50cyBp biB0aGUgdHJlZSwgd2UgbWF5IGJlIGFibGUgdG8gcmVkdWNlIHRoZQorCSAqIHBpbmctcG9uZyBi ZXR3ZWVuIHRoZSBvbGQgYm90dG9tLWhhbGYgYW5kIG91cnNlbHZlcyBhcyBmaXJzdC13YWl0ZXIu CisJICovCisJZmlyc3QgPSB0cnVlOworCXBhcmVudCA9IE5VTEw7CisJY29tcGxldGVkID0gTlVM TDsKKwlwID0gJmItPndhaXRlcnMucmJfbm9kZTsKKwl3aGlsZSAoKnApIHsKKwkJcGFyZW50ID0g KnA7CisJCWlmIChpOTE1X3NlcW5vX3Bhc3NlZCh3YWl0LT5zZXFubywgdG9fd2FpdChwYXJlbnQp LT5zZXFubykpIHsKKwkJCXAgPSAmcGFyZW50LT5yYl9yaWdodDsKKwkJCWlmIChpOTE1X3NlcW5v X3Bhc3NlZChzZXFubywgdG9fd2FpdChwYXJlbnQpLT5zZXFubykpCisJCQkJY29tcGxldGVkID0g cGFyZW50OworCQkJZWxzZQorCQkJCWZpcnN0ID0gZmFsc2U7CisJCX0gZWxzZQorCQkJcCA9ICZw YXJlbnQtPnJiX2xlZnQ7CisJfQorCXJiX2xpbmtfbm9kZSgmd2FpdC0+bm9kZSwgcGFyZW50LCBw KTsKKwlyYl9pbnNlcnRfY29sb3IoJndhaXQtPm5vZGUsICZiLT53YWl0ZXJzKTsKKworCWlmIChj b21wbGV0ZWQgIT0gTlVMTCkgeworCQlzdHJ1Y3QgcmJfbm9kZSAqbmV4dCA9IHJiX25leHQoY29t cGxldGVkKTsKKworCQlpZiAobmV4dCAmJiBuZXh0ICE9ICZ3YWl0LT5ub2RlKSB7CisJCQlzbXBf c3RvcmVfbWIoYi0+Zmlyc3Rfd2FpdGVyLCB0b193YWl0KG5leHQpLT50YXNrKTsKKwkJCV9faW50 ZWxfYnJlYWRjcnVtYnNfZW5hYmxlX2lycShiKTsKKwkJCXdha2VfdXBfcHJvY2Vzcyh0b193YWl0 KG5leHQpLT50YXNrKTsKKwkJfQorCisJCWRvIHsKKwkJCXN0cnVjdCBpbnRlbF93YWl0ICpjcnVt YiA9IHRvX3dhaXQoY29tcGxldGVkKTsKKwkJCWNvbXBsZXRlZCA9IHJiX3ByZXYoY29tcGxldGVk KTsKKworCQkJcmJfZXJhc2UoJmNydW1iLT5ub2RlLCAmYi0+d2FpdGVycyk7CisJCQlSQl9DTEVB Ul9OT0RFKCZjcnVtYi0+bm9kZSk7CisJCQl3YWtlX3VwX3Byb2Nlc3MoY3J1bWItPnRhc2spOwor CQl9IHdoaWxlIChjb21wbGV0ZWQgIT0gTlVMTCk7CisJfQorCisJaWYgKGZpcnN0KQorCQlzbXBf c3RvcmVfbWIoYi0+Zmlyc3Rfd2FpdGVyLCB3YWl0LT50YXNrKTsKKwlCVUdfT04oYi0+Zmlyc3Rf d2FpdGVyID09IE5VTEwpOworCisJc3Bpbl91bmxvY2soJmItPmxvY2spOworCisJcmV0dXJuIGZp cnN0OworfQorCit2b2lkIGludGVsX2VuZ2luZV9lbmFibGVfaXJxKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIgPSAmZW5naW5l LT5icmVhZGNydW1iczsKKworCXNwaW5fbG9jaygmYi0+bG9jayk7CisJX19pbnRlbF9icmVhZGNy dW1ic19lbmFibGVfaXJxKGIpOworCXNwaW5fdW5sb2NrKCZiLT5sb2NrKTsKK30KKwordm9pZCBp bnRlbF9lbmdpbmVfZW5hYmxlX2Zha2VfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKK3sKKwltb2RfdGltZXIoJmVuZ2luZS0+YnJlYWRjcnVtYnMuZmFrZV9pcnEsIGppZmZpZXMg KyAxKTsKK30KKwordm9pZCBpbnRlbF9lbmdpbmVfcmVtb3ZlX3dhaXQoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAorCQkJICAgICAgc3RydWN0IGludGVsX3dhaXQgKndhaXQpCit7CisJ c3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+YnJlYWRjcnVtYnM7CisKKwkv KiBRdWljayBjaGVjayB0byBzZWUgaWYgdGhpcyB3YWl0ZXIgd2FzIGFscmVhZHkgZGVjb3VwbGVk IGZyb20KKwkgKiB0aGUgdHJlZSBieSB0aGUgYm90dG9tLWhhbGYgdG8gYXZvaWQgY29udGVudGlv biBvbiB0aGUgc3BpbmxvY2sKKwkgKiBieSB0aGUgaGVyZC4KKwkgKi8KKwlpZiAoUkJfRU1QVFlf Tk9ERSgmd2FpdC0+bm9kZSkpCisJCXJldHVybjsKKworCXNwaW5fbG9jaygmYi0+bG9jayk7CisK KwlpZiAoYi0+Zmlyc3Rfd2FpdGVyID09IHdhaXQtPnRhc2spIHsKKwkJc3RydWN0IHJiX25vZGUg Km5leHQ7CisJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKKworCQkvKiBXZSBhcmUgdGhlIGN1 cnJlbnQgYm90dG9tLWhhbGYuIEZpbmQgdGhlIG5leHQgY2FuZGlkYXRlLAorCQkgKiB0aGUgZmly c3Qgd2FpdGVyIGluIHRoZSBxdWV1ZSBvbiB0aGUgcmVtYWluaW5nIG9sZGVzdAorCQkgKiByZXF1 ZXN0LiBBcyBtdWx0aXBsZSBzZXFub3MgbWF5IGNvbXBsZXRlIGluIHRoZSB0aW1lIGl0CisJCSAq IHRha2VzIHVzIHRvIHdha2UgdXAgYW5kIGZpbmQgdGhlIG5leHQgd2FpdGVyLCB3ZSBoYXZlIHRv CisJCSAqIHdha2UgdXAgdGhhdCB3YWl0ZXIgZm9yIGl0IHRvIHBlcmZvcm0gaXRzIG93biBjb2hl cmVudAorCQkgKiBjb21wbGV0aW9uIGNoZWNrLgorCQkgKi8KKwkJbmV4dCA9IHJiX25leHQoJndh aXQtPm5vZGUpOworCQlpZiAobmV4dCkgeworCQkJLyogSWYgdGhlIG5leHQgd2FpdGVyIGlzIGFs cmVhZHkgY29tcGxldGUsCisJCQkgKiB3YWtlIGl0IHVwIGFuZCBjb250aW51ZSBvbnRvIHRoZSBu ZXh0IHdhaXRlci4gU28KKwkJCSAqIGlmIGhhdmUgYSBzbWFsbCBoZXJkLCB0aGV5IHdpbGwgd2Fr ZSB1cCBpbiBwYXJhbGxlbAorCQkJICogcmF0aGVyIHRoYW4gc2VxdWVudGlhbGx5LCB3aGljaCBz aG91bGQgcmVkdWNlCisJCQkgKiB0aGUgb3ZlcmFsbCBsYXRlbmN5IGluIHdha2luZyBhbGwgdGhl IGNvbXBsZXRlZAorCQkJICogY2xpZW50cy4KKwkJCSAqLworCQkJdTMyIHNlcW5vID0gZW5naW5l LT5nZXRfc2Vxbm8oZW5naW5lLCB0cnVlKTsKKwkJCXdoaWxlIChpOTE1X3NlcW5vX3Bhc3NlZChz ZXFubywKKwkJCQkJCSB0b193YWl0KG5leHQpLT5zZXFubykpIHsKKwkJCQlzdHJ1Y3QgcmJfbm9k ZSAqbiA9IHJiX25leHQobmV4dCk7CisKKwkJCQlyYl9lcmFzZShuZXh0LCAmYi0+d2FpdGVycyk7 CisJCQkJUkJfQ0xFQVJfTk9ERShuZXh0KTsKKwkJCQl3YWtlX3VwX3Byb2Nlc3ModG9fd2FpdChu ZXh0KS0+dGFzayk7CisKKwkJCQluZXh0ID0gbjsKKwkJCQlpZiAobmV4dCA9PSBOVUxMKQorCQkJ CQlicmVhazsKKwkJCX0KKwkJfQorCQl0YXNrID0gbmV4dCA/IHRvX3dhaXQobmV4dCktPnRhc2sg OiBOVUxMOworCisJCXNtcF9zdG9yZV9tYihiLT5maXJzdF93YWl0ZXIsIHRhc2spOworCQlpZiAo dGFzaykgeworCQkJLyogSW4gb3VyIGhhc3RlLCB3ZSBtYXkgaGF2ZSBjb21wbGV0ZWQgdGhlIGZp cnN0IHdhaXRlcgorCQkJICogYmVmb3JlIHdlIGVuYWJsZWQgdGhlIGludGVycnVwdC4gRG8gc28g bm93IGFzIHdlCisJCQkgKiBoYXZlIGEgc2Vjb25kIHdhaXRlciBmb3IgYSBmdXR1cmUgc2Vxbm8u IEFmdGVyd2FyZHMsCisJCQkgKiB3ZSBoYXZlIHRvIHdha2UgdXAgdGhhdCB3YWl0ZXIgaW4gY2Fz ZSB3ZSBtaXNzZWQKKwkJCSAqIHRoZSBpbnRlcnJ1cHQsIG9yIGlmIHdlIGhhdmUgdG8gaGFuZGxl IGFuCisJCQkgKiBleGNlcHRpb24gcmF0aGVyIHRoYW4gYSBzZXFubyBjb21wbGV0aW9uLgorCQkJ ICovCisJCQlfX2ludGVsX2JyZWFkY3J1bWJzX2VuYWJsZV9pcnEoYik7CisJCQl3YWtlX3VwX3By b2Nlc3ModGFzayk7CisJCX0gZWxzZQorCQkJX19pbnRlbF9icmVhZGNydW1ic19kaXNhYmxlX2ly cShiKTsKKwl9CisKKwlpZiAoIVJCX0VNUFRZX05PREUoJndhaXQtPm5vZGUpKQorCQlyYl9lcmFz ZSgmd2FpdC0+bm9kZSwgJmItPndhaXRlcnMpOworCXNwaW5fdW5sb2NrKCZiLT5sb2NrKTsKK30K Kwordm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9icmVhZGNydW1icyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCit7CisJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+ YnJlYWRjcnVtYnM7CisKKwlzcGluX2xvY2tfaW5pdCgmYi0+bG9jayk7CisJc2V0dXBfdGltZXIo JmItPmZha2VfaXJxLAorCQkgICAgaW50ZWxfYnJlYWRjcnVtYnNfZmFrZV9pcnEsCisJCSAgICAo dW5zaWduZWQgbG9uZyllbmdpbmUpOworfQorCit2b2lkIGludGVsX2VuZ2luZV9maW5pX2JyZWFk Y3J1bWJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3QgaW50ZWxf YnJlYWRjcnVtYnMgKmIgPSAmZW5naW5lLT5icmVhZGNydW1iczsKKworCWRlbF90aW1lcl9zeW5j KCZiLT5mYWtlX2lycSk7Cit9CisKK3ZvaWQgaW50ZWxfa2lja193YWl0ZXJzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK KwlpbnQgaTsKKworCS8qIFRvIGF2b2lkIHRoZSB0YXNrX3N0cnVjdCBkaXNhcHBlYXJpbmcgYmVu ZWF0aCB1cyBhcyB3ZSB3YWtlIHVwCisJICogdGhlIHByb2Nlc3MsIHdlIG11c3QgZmlyc3QgaW5z cGVjdCB0aGUgdGFza19zdHJ1Y3QtPnN0YXRlIHVuZGVyIHRoZQorCSAqIFJDVSBsb2NrLCBpLmUu IGFzIHdlIGNhbGwgd2FrZV91cF9wcm9jZXNzKCkgd2UgbXVzdCBiZSBob2xkaW5nIHRoZQorCSAq IHJjdV9yZWFkX2xvY2soKS4KKwkgKi8KKwlyY3VfcmVhZF9sb2NrKCk7CisJZm9yX2VhY2hfcmlu ZyhlbmdpbmUsIGk5MTUsIGkpCisJCWludGVsX2VuZ2luZV93YWtldXAoZW5naW5lKTsKKwlyY3Vf cmVhZF91bmxvY2soKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggNDRkNzkyZDc2 ZTZmLi4wZjg3ODBmOTRiOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0xODk4LDYg KzE4OTgsOCBAQCB2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcpCiAJaTkxNV9jbWRfcGFyc2VyX2ZpbmlfcmluZyhyaW5nKTsKIAlpOTE1 X2dlbV9iYXRjaF9wb29sX2ZpbmkoJnJpbmctPmJhdGNoX3Bvb2wpOwogCisJaW50ZWxfZW5naW5l X2ZpbmlfYnJlYWRjcnVtYnMocmluZyk7CisKIAlpZiAocmluZy0+c3RhdHVzX3BhZ2Uub2JqKSB7 CiAJCWt1bm1hcChzZ19wYWdlKHJpbmctPnN0YXR1c19wYWdlLm9iai0+cGFnZXMtPnNnbCkpOwog CQlyaW5nLT5zdGF0dXNfcGFnZS5vYmogPSBOVUxMOwpAQCAtMTkxNSwxMCArMTkxNywxMSBAQCBz dGF0aWMgaW50IGxvZ2ljYWxfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbgogCXJpbmctPmJ1ZmZlciA9IE5VTEw7CiAKIAlyaW5nLT5k ZXYgPSBkZXY7CisJcmluZy0+aTkxNSA9IHRvX2k5MTUoZGV2KTsKIAlJTklUX0xJU1RfSEVBRCgm cmluZy0+YWN0aXZlX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5yZXF1ZXN0X2xpc3Qp OwogCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdChkZXYsICZyaW5nLT5iYXRjaF9wb29sKTsKLQlp bml0X3dhaXRxdWV1ZV9oZWFkKCZyaW5nLT5pcnFfcXVldWUpOworCWludGVsX2VuZ2luZV9pbml0 X2JyZWFkY3J1bWJzKHJpbmcpOwogCiAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmJ1ZmZlcnMpOwog CUlOSVRfTElTVF9IRUFEKCZyaW5nLT5leGVjbGlzdF9xdWV1ZSk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggNjlkZDY5ZTQ2ZmE5Li5lOTBjMjhlMmRhMzEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTIxNTIsNiArMjE1Miw3 IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCVdBUk5fT04ocmluZy0+YnVmZmVyKTsKIAogCXJpbmctPmRldiA9IGRldjsKKwlyaW5n LT5pOTE1ID0gdG9faTkxNShkZXYpOwogCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5hY3RpdmVfbGlz dCk7CiAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPnJlcXVlc3RfbGlzdCk7CiAJSU5JVF9MSVNUX0hF QUQoJnJpbmctPmV4ZWNsaXN0X3F1ZXVlKTsKQEAgLTIxNTksNyArMjE2MCw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWk5MTVf Z2VtX2JhdGNoX3Bvb2xfaW5pdChkZXYsICZyaW5nLT5iYXRjaF9wb29sKTsKIAltZW1zZXQocmlu Zy0+c2VtYXBob3JlLnN5bmNfc2Vxbm8sIDAsIHNpemVvZihyaW5nLT5zZW1hcGhvcmUuc3luY19z ZXFubykpOwogCi0JaW5pdF93YWl0cXVldWVfaGVhZCgmcmluZy0+aXJxX3F1ZXVlKTsKKwlpbnRl bF9lbmdpbmVfaW5pdF9icmVhZGNydW1icyhyaW5nKTsKIAogCXJpbmdidWYgPSBpbnRlbF9lbmdp bmVfY3JlYXRlX3JpbmdidWZmZXIocmluZywgMzIgKiBQQUdFX1NJWkUpOwogCWlmIChJU19FUlIo cmluZ2J1ZikpIHsKQEAgLTIyMjMsNiArMjIyNCw4IEBAIHZvaWQgaW50ZWxfY2xlYW51cF9yaW5n X2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCiAJaTkxNV9jbWRfcGFyc2Vy X2ZpbmlfcmluZyhyaW5nKTsKIAlpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoJnJpbmctPmJhdGNo X3Bvb2wpOworCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKHJpbmcpOworCiAJcmluZy0+ ZGV2ID0gTlVMTDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmlu ZGV4IDQ5NTc0ZmZlNTRiYy4uMTNiNmZmYmM1NDBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5oCkBAIC0xNTcsOSArMTU3LDM1IEBAIHN0cnVjdCAgaW50ZWxfZW5naW5l X2NzIHsKICNkZWZpbmUgTEFTVF9VU0VSX1JJTkcgKFZFQ1MgKyAxKQogCXUzMgkJbW1pb19iYXNl OwogCXN0cnVjdAkJZHJtX2RldmljZSAqZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1OwogCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpidWZmZXI7CiAJc3RydWN0IGxpc3RfaGVh ZCBidWZmZXJzOwogCisJLyogUmF0aGVyIHRoYW4gaGF2ZSBldmVyeSBjbGllbnQgd2FpdCB1cG9u IGFsbCB1c2VyIGludGVycnVwdHMsCisJICogd2l0aCB0aGUgaGVyZCB3YWtpbmcgYWZ0ZXIgZXZl cnkgaW50ZXJydXB0IGFuZCBlYWNoIGRvaW5nIHRoZQorCSAqIGhlYXZ5d2VpZ2h0IHNlcW5vIGRh bmNlLCB3ZSBkZWxlZ2F0ZSB0aGUgdGFzayAob2YgYmVpbmcgdGhlCisJICogYm90dG9tLWhhbGYg b2YgdGhlIHVzZXIgaW50ZXJydXB0KSB0byB0aGUgZmlyc3QgY2xpZW50LiBBZnRlcgorCSAqIGV2 ZXJ5IGludGVycnVwdCwgd2Ugd2FrZSB1cCBvbmUgY2xpZW50LCB3aG8gZG9lcyB0aGUgaGVhdnl3 ZWlnaHQKKwkgKiBjb2hlcmVudCBzZXFubyByZWFkIGFuZCBlaXRoZXIgZ29lcyBiYWNrIHRvIHNs ZWVwIChpZiBpbmNvbXBsZXRlKSwKKwkgKiBvciB3YWtlcyB1cCBhbGwgdGhlIGNvbXBsZXRlZCBj bGllbnRzIGluIHBhcmFsbGVsLCBiZWZvcmUgdGhlbgorCSAqIHRyYW5zZmVycmluZyB0aGUgYm90 dG9tLWhhbGYgc3RhdHVzIHRvIHRoZSBuZXh0IGNsaWVudCBpbiB0aGUgcXVldWUuCisJICoKKwkg KiBDb21wYXJlZCB0byB3YWxraW5nIHRoZSBlbnRpcmUgbGlzdCBvZiB3YWl0ZXJzIGluIGEgc2lu Z2xlIGRlZGljYXRlZAorCSAqIGJvdHRvbS1oYWxmLCB3ZSByZWR1Y2UgdGhlIGxhdGVuY3kgb2Yg dGhlIGZpcnN0IHdhaXRlciBieSBhdm9pZGluZworCSAqIGEgY29udGV4dCBzd2l0Y2gsIGJ1dCBp bmN1ciBhZGRpdGlvbmFsIGNvaGVyZW50IHNlcW5vIHJlYWRzIHdoZW4KKwkgKiBmb2xsb3dpbmcg dGhlIGNoYWluIG9mIHJlcXVlc3QgYnJlYWRjcnVtYnMuIFNpbmNlIGl0IGlzIG1vc3QgbGlrZWx5 CisJICogdGhhdCB3ZSBoYXZlIGEgc2luZ2xlIGNsaWVudCB3YWl0aW5nIG9uIGVhY2ggc2Vxbm8s IHRoZW4gcmVkdWNpbmcKKwkgKiB0aGUgb3ZlcmhlYWQgb2Ygd2FraW5nIHRoYXQgY2xpZW50IGlz IG11Y2ggcHJlZmVycmVkLgorCSAqLworCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyB7CisJCXNw aW5sb2NrX3QgbG9jazsgLyogcHJvdGVjdHMgdGhlIGxpc3RzIG9mIHJlcXVlc3RzICovCisJCXN0 cnVjdCByYl9yb290IHdhaXRlcnM7IC8qIHNvcnRlZCBieSByZXRpcmVtZW50ICovCisJCXN0cnVj dCB0YXNrX3N0cnVjdCAqZmlyc3Rfd2FpdGVyOyAvKiBiaCBmb3IgdXNlciBpbnRlcnJ1cHRzICov CisJCXN0cnVjdCB0aW1lcl9saXN0IGZha2VfaXJxOyAvKiB1c2VkIGFmdGVyIGEgbWlzc2VkIGlu dGVycnVwdCAqLworCQlib29sIGlycV9lbmFibGVkOworCQlib29sIHJwbV93YWtlbG9jazsKKwl9 IGJyZWFkY3J1bWJzOworCiAJLyoKIAkgKiBBIHBvb2wgb2Ygb2JqZWN0cyB0byB1c2UgYXMgc2hh ZG93IGNvcGllcyBvZiBjbGllbnQgYmF0Y2ggYnVmZmVycwogCSAqIHdoZW4gdGhlIGNvbW1hbmQg cGFyc2VyIGlzIGVuYWJsZWQuIFByZXZlbnRzIHRoZSBjbGllbnQgZnJvbQpAQCAtMzAzLDggKzMy OSw2IEBAIHN0cnVjdCAgaW50ZWxfZW5naW5lX2NzIHsKIAogCWJvb2wgZ3B1X2NhY2hlc19kaXJ0 eTsKIAotCXdhaXRfcXVldWVfaGVhZF90IGlycV9xdWV1ZTsKLQogCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpkZWZhdWx0X2NvbnRleHQ7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmxhc3RfY29udGV4 dDsKIApAQCAtNTEwLDQgKzUzNCw0NCBAQCB2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2Vf ZW5kKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKIC8qIExlZ2FjeSByaW5nYnVm ZmVyIHNwZWNpZmljIHBvcnRpb24gb2YgcmVzZXJ2YXRpb24gY29kZTogKi8KIGludCBpbnRlbF9y aW5nX3Jlc2VydmVfc3BhY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KTsK IAorLyogaW50ZWxfYnJlYWRjcnVtYnMuYyAtLSB1c2VyIGludGVycnVwdCBib3R0b20taGFsZiBm b3Igd2FpdGVycyAqLworc3RydWN0IGludGVsX3dhaXQgeworCXN0cnVjdCByYl9ub2RlIG5vZGU7 CisJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOworCXUzMiBzZXFubzsKK307Cit2b2lkIGludGVs X2VuZ2luZV9pbml0X2JyZWFkY3J1bWJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7 CitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfd2FpdF9pbml0KHN0cnVjdCBpbnRlbF93YWl0ICp3 YWl0LCB1MzIgc2Vxbm8pCit7CisJd2FpdC0+dGFzayA9IGN1cnJlbnQ7CisJd2FpdC0+c2Vxbm8g PSBzZXFubzsKK30KK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF93YWl0X2NvbXBsZXRlKHN0cnVj dCBpbnRlbF93YWl0ICp3YWl0KQoreworCXJldHVybiBSQl9FTVBUWV9OT0RFKCZ3YWl0LT5ub2Rl KTsKK30KK2Jvb2wgaW50ZWxfZW5naW5lX2FkZF93YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKKwkJCSAgIHN0cnVjdCBpbnRlbF93YWl0ICp3YWl0KTsKK3ZvaWQgaW50ZWxfZW5n aW5lX3JlbW92ZV93YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCSAgICAg IHN0cnVjdCBpbnRlbF93YWl0ICp3YWl0KTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9lbmdp bmVfaGFzX3dhaXRlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJcmV0dXJu IFJFQURfT05DRShlbmdpbmUtPmJyZWFkY3J1bWJzLmZpcnN0X3dhaXRlcik7Cit9CitzdGF0aWMg aW5saW5lIGJvb2wgaW50ZWxfZW5naW5lX3dha2V1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCit7CisJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrID0gUkVBRF9PTkNFKGVuZ2luZS0+ YnJlYWRjcnVtYnMuZmlyc3Rfd2FpdGVyKTsKKwkvKiBOb3RlIHRoYXQgZm9yIHRoaXMgbm90IHRv IGRhbmdlcm91c2x5IGNoYXNlIGEgZGFuZ2xpbmcgcG9pbnRlciwKKwkgKiB0aGUgY2FsbGVyIGlz IHJlc3BvbnNpYmxlIGZvciBlbnN1cmUgdGhhdCB0aGUgdGFzayByZW1haW4gdmFsaWQgZm9yCisJ ICogd2FrZV91cF9wcm9jZXNzKCkgaS5lLiB0aGF0IHRoZSBSQ1UgZ3JhY2UgcGVyaW9kIGNhbm5v dCBleHBpcmUuCisJICovCisJaWYgKHRhc2spCisJCXdha2VfdXBfcHJvY2Vzcyh0YXNrKTsKKwly ZXR1cm4gdGFzayAhPSBOVUxMOworfQordm9pZCBpbnRlbF9lbmdpbmVfZW5hYmxlX2lycShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwordm9pZCBpbnRlbF9lbmdpbmVfZW5hYmxlX2Zh a2VfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cit2b2lkIGludGVsX2VuZ2lu ZV9maW5pX2JyZWFkY3J1bWJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cit2b2lk IGludGVsX2tpY2tfd2FpdGVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CisKICNl bmRpZiAvKiBfSU5URUxfUklOR0JVRkZFUl9IXyAqLwotLSAKMi42LjQKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==