From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [PATCH] drm/i915: Engine relative MMIO Date: Mon, 13 May 2019 14:09:04 -0700 Message-ID: <20190513210904.5824-1-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE61B89236 for ; Mon, 13 May 2019 21:09:05 +0000 (UTC) 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 Cc: Chris P Wilson List-Id: intel-gfx@lists.freedesktop.org RnJvbTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KCldpdGggdmly dHVhbCBlbmdpbmVzLCBpdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8ga25vdyB3aGljaCBzcGVj aWZpYwpwaHlzaWNhbCBlbmdpbmUgYSBnaXZlbiByZXF1ZXN0IHdpbGwgYmUgZXhlY3V0ZWQgb24g YXQgdGhlIHRpbWUgdGhhdApyZXF1ZXN0IGlzIGdlbmVyYXRlZC4gVGhpcyBtZWFucyB0aGF0IHRo ZSByZXF1ZXN0IGl0c2VsZiBtdXN0IGJlIGVuZ2luZQphZ25vc3RpYyAtIGFueSBkaXJlY3QgcmVn aXN0ZXIgd3JpdGVzIG11c3QgYmUgcmVsYXRpdmUgdG8gdGhlIGVuZ2luZQphbmQgbm90IGFic29s dXRlIGFkZHJlc3Nlcy4KClRoZSBMUkkgY29tbWFuZCBoYXMgc3VwcG9ydCBmb3IgZW5naW5lIHJl bGF0aXZlIGFkZHJlc3NpbmcuIEhvd2V2ZXIsCnRoZSBtZWNoYW5pc20gaXMgbm90IHRyYW5zcGFy ZW50IHRvIHRoZSBkcml2ZXIuIFRoZSBzY2hlbWUgZm9yIEdlbjExCihNSV9MUklfQUREX0NTX01N SU9fU1RBUlQpIHJlcXVpcmVzIHRoZSBMUkkgYWRkcmVzcyB0byBoYXZlIG5vCmFic29sdXRlIGVu Z2luZSBiYXNlIGNvbXBvbmVudC4gVGhlIGhhcmR3YXJlIHRoZW4gYWRkcyBvbiB0aGUgY29ycmVj dAplbmdpbmUgb2Zmc2V0IGF0IGV4ZWN1dGlvbiB0aW1lLgoKRHVlIHRvIHRoZSBub24tdHJpdmlh bCBhbmQgZGlmZmVyaW5nIHNjaGVtZXMgb24gZGlmZmVyZW50IGhhcmR3YXJlLCBpdAppcyBub3Qg cG9zc2libGUgdG8gc2ltcGx5IHVwZGF0ZSB0aGUgY29kZSB0aGF0IGNyZWF0ZXMgdGhlIExSSQpj b21tYW5kcyB0byBzZXQgYSByZW1hcCBmbGFnIGFuZCBsZXQgdGhlIGhhcmR3YXJlIGdldCBvbiB3 aXRoIGl0LgpJbnN0ZWFkLCB0aGlzIHBhdGNoIGFkZHMgZnVuY3Rpb24gd3JhcHBlcnMgZm9yIGdl bmVyYXRpbmcgdGhlIExSSQpjb21tYW5kIGl0c2VsZiBhbmQgdGhlbiBmb3IgY29uc3RydWN0aW5n IHRoZSBjb3JyZWN0IGFkZHJlc3MgdG8gdXNlCndpdGggdGhlIExSSS4KCnYyOiBGaXggYnVpbGQg YnJlYWsgaW4gR1ZULiBSZW1vdmUgZmxhZ3MgcGFyYW1ldGVyIFtyZXZpZXcgZmVlZGJhY2sKZnJv bSBDaHJpcyBXXS4KCnYzOiBGaXggYnVpbGQgYnJlYWsgaW4gc2VsZnRlc3QuIFJlYmFzZSB0byBu ZXdlciBiYXNlIHRyZWUgYW5kIGZpeAptZXJnZSBjb25mbGljdC4KCnY0OiBNb3JlIHJlYmFzaW5n LiBSbW92ZWQgcmVsYXRpdmUgYWRkcmVzc2luZyBzdXBwb3J0IGZyb20gR2VuNy05IG9ubHkKY29k ZSBwYXRocyBbcmV2aWV3IGZlZWRiYWNrIGZyb20gQ2hyaXMgV10uCgp2NTogTW9yZSByZWJhc2lu ZyAobmV3ICdndCcgZGlyZWN0b3J5KS4gRml4IHdoaXRlIHNwYWNlIGlzc3VlLiBVc2UKQ09QWSBj bGFzcyByYXRoZXIgdGhhbiBCQ1MwIGlkIGZvciBjaGVja2luZyBhZ2FpbnN0IEJDUyBlbmdpbmUu CgpTaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29t PgpDQzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgpDQzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ0M6IENocmlzIFAgV2lsc29uIDxjaHJp cy5wLndpbHNvbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lLmggICAgICAgIHwgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX2NzLmMgICAgIHwgMTEgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVf Y29tbWFuZHMuaCAgfCAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMg ICAgICAgICAgIHwgNzkgKysrKysrKysrKy0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbHJjX3JlZy5oICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX21vY3MuYyAgICAgICAgICB8IDE3ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3JpbmdidWZmZXIuYyAgICB8IDQ1ICsrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jICAgfCAgNCArLQogLi4uL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jICAgIHwgMTMgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvbW1pb19jb250ZXh0LmMgICAgICAgfCAxNiArKystCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2NtZF9wYXJzZXIuYyAgICAgICAgfCAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jICAgICAgIHwgMTIgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMgICAgfCAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9wZXJmLmMgICAgICAgICAgICAgIHwgMTkgKysrLS0KIDE0IGZpbGVzIGNoYW5nZWQsIDE1NiBp bnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZS5oCmluZGV4IDkzNTliM2E3YWQ5Yy4uMzUwNmM5OTIxODJjIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaApAQCAtNTQ2LDQgKzU0Niw4IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBpbmplY3RfcHJlZW1wdF9oYW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3Rz ICpleGVjbGlzdHMpCiAKICNlbmRpZgogCitib29sIGk5MTVfZW5naW5lX2hhc19yZWxhdGl2ZV9s cmkoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK3UzMiBpOTE1X2dldF9s cmlfY21kKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHdvcmRfY291 bnQpOwordTMyIGk5MTVfZ2V0X2xyaV9yZWcoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCBpOTE1X3JlZ190IHJlZyk7CisKICNlbmRpZiAvKiBfSU5URUxfUklOR0JVRkZFUl9I XyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2Nz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCA0YzM3 NTNjMWI1NzMuLjIzMzI5NWQ2ODlkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX2NzLmMKQEAgLTI1Myw2ICsyNTMsMTcgQEAgc3RhdGljIHUzMiBfX2VuZ2luZV9tbWlv X2Jhc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJcmV0dXJuIGJhc2VzW2ldLmJh c2U7CiB9CiAKK2Jvb2wgaTkxNV9lbmdpbmVfaGFzX3JlbGF0aXZlX2xyaShjb25zdCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUp IDwgMTEpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChlbmdpbmUtPmNsYXNzID09IENPUFlfRU5H SU5FX0NMQVNTKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGlj IHZvaWQgX19zcHJpbnRfZW5naW5lX25hbWUoY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGVuZ2lu ZV9pbmZvICppbmZvKQogewogCVdBUk5fT04oc25wcmludGYobmFtZSwgSU5URUxfRU5HSU5FX0NT X01BWF9OQU1FLCAiJXMldSIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9ncHVfY29tbWFuZHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9j b21tYW5kcy5oCmluZGV4IGEzNGVjZTUzYTc3MS4uZTc3ODRiM2ZiNzU5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFuZHMuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFuZHMuaApAQCAtMTIzLDkgKzEyMywxMyBA QAogICogICBzaW1wbHkgaWdub3JlcyB0aGUgcmVnaXN0ZXIgbG9hZCB1bmRlciBjZXJ0YWluIGNv bmRpdGlvbnMuCiAgKiAtIE9uZSBjYW4gYWN0dWFsbHkgbG9hZCBhcmJpdHJhcnkgbWFueSBhcmJp dHJhcnkgcmVnaXN0ZXJzOiBTaW1wbHkgaXNzdWUgeAogICogICBhZGRyZXNzL3ZhbHVlIHBhaXJz LiBEb24ndCBvdmVyZHVlIGl0LCB0aG91Z2gsIHggPD0gMl40IG11c3QgaG9sZCEKKyAqIC0gTmV3 ZXIgaGFyZHdhcmUgc3VwcG9ydHMgZW5naW5lIHJlbGF0aXZlIGFkZHJlc3NlcyBidXQgb2xkZXIg aGFyZHdhcmUgZG9lcworICogICBub3QuIFNvIG5ldmVyIGNhbGwgTUlfTFJJIGRpcmVjdGx5LCBh bHdheXMgdXNlIHRoZSBpOTE1X2dldF9scmlfY21kKCkKKyAqICAgYW5kIGk5MTVfZ2V0X2xyaV9y ZWcoKSBoZWxwZXIgZnVuY3Rpb25zLgogICovCi0jZGVmaW5lIE1JX0xPQURfUkVHSVNURVJfSU1N KHgpCU1JX0lOU1RSKDB4MjIsIDIqKHgpLTEpCisjZGVmaW5lIF9fTUlfTE9BRF9SRUdJU1RFUl9J TU0oeCkJTUlfSU5TVFIoMHgyMiwgMiooeCktMSkKICNkZWZpbmUgICBNSV9MUklfRk9SQ0VfUE9T VEVECQkoMTw8MTIpCisjZGVmaW5lICAgTUlfTFJJX0FERF9DU19NTUlPX1NUQVJUX0dFTjExCSgx PDwxOSkKICNkZWZpbmUgTUlfU1RPUkVfUkVHSVNURVJfTUVNICAgICAgICBNSV9JTlNUUigweDI0 LCAxKQogI2RlZmluZSBNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOOCAgIE1JX0lOU1RSKDB4MjQs IDIpCiAjZGVmaW5lICAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUCQkoMTw8MjIpCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2xyYy5jCmluZGV4IGUxODYyM2RlZjI4Mi4uNDlhOWE2NjQ4YjljIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwpAQCAtMTM4OCwxNCArMTM4OCwxNSBAQCBzdGF0 aWMgaW50IGVtaXRfcGRwcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAkJcmV0dXJuIFBUUl9F UlIoY3MpOwogCiAJLyogRW5zdXJlIHRoZSBMUkkgaGF2ZSBsYW5kZWQgYmVmb3JlIHdlIGludmFs aWRhdGUgJiBjb250aW51ZSAqLwotCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMiAqIEdF TjhfM0xWTF9QRFBFUykgfCBNSV9MUklfRk9SQ0VfUE9TVEVEOworCSpjcysrID0gaTkxNV9nZXRf bHJpX2NtZChlbmdpbmUsIDIgKiBHRU44XzNMVkxfUERQRVMpIHwKKwkJCQkgTUlfTFJJX0ZPUkNF X1BPU1RFRDsKIAlmb3IgKGkgPSBHRU44XzNMVkxfUERQRVM7IGktLTsgKSB7CiAJCWNvbnN0IGRt YV9hZGRyX3QgcGRfZGFkZHIgPSBpOTE1X3BhZ2VfZGlyX2RtYV9hZGRyKHBwZ3R0LCBpKTsKIAkJ dTMyIGJhc2UgPSBlbmdpbmUtPm1taW9fYmFzZTsKIAotCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdf b2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGJhc2UsIGkpKTsKKwkJKmNzKysgPSBpOTE1X2dldF9s cmlfcmVnKGVuZ2luZSwgR0VOOF9SSU5HX1BEUF9VRFcoYmFzZSwgaSkpOwogCQkqY3MrKyA9IHVw cGVyXzMyX2JpdHMocGRfZGFkZHIpOwotCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdF TjhfUklOR19QRFBfTERXKGJhc2UsIGkpKTsKKwkJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKGVu Z2luZSwgR0VOOF9SSU5HX1BEUF9MRFcoYmFzZSwgaSkpOwogCQkqY3MrKyA9IGxvd2VyXzMyX2Jp dHMocGRfZGFkZHIpOwogCX0KIAkqY3MrKyA9IE1JX05PT1A7CkBAIC0xNDY5LDcgKzE0NzAsOCBA QCBnZW44X2VtaXRfZmx1c2hfY29oZXJlbnRsM193YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIHUzMiAqYmF0Y2gpCiAJKmJhdGNoKysgPSBpOTE1X3NjcmF0Y2hfb2Zmc2V0KGVuZ2lu ZS0+aTkxNSkgKyAyNTY7CiAJKmJhdGNoKysgPSAwOwogCi0JKmJhdGNoKysgPSBNSV9MT0FEX1JF R0lTVEVSX0lNTSgxKTsKKwkvKiBHZW44Lzkgb25seSBzbyBubyBuZWVkIHRvIHN1cHBvcnQgcmVs YXRpdmUgb2Zmc2V0cyAqLworCSpiYXRjaCsrID0gX19NSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsK IAkqYmF0Y2grKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfTDNTUUNSRUc0KTsKIAkqYmF0 Y2grKyA9IDB4NDA0MDAwMDAgfCBHRU44X0xRU0NfRkxVU0hfQ09IRVJFTlRfTElORVM7CiAKQEAg LTE1NDAsMTMgKzE1NDIsMTQgQEAgc3RydWN0IGxyaSB7CiAJdTMyIHZhbHVlOwogfTsKIAotc3Rh dGljIHUzMiAqZW1pdF9scmkodTMyICpiYXRjaCwgY29uc3Qgc3RydWN0IGxyaSAqbHJpLCB1bnNp Z25lZCBpbnQgY291bnQpCitzdGF0aWMgdTMyICplbWl0X2xyaShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsIHUzMiAqYmF0Y2gsCisJCSAgICAgY29uc3Qgc3RydWN0IGxyaSAqbHJpLCB1 bnNpZ25lZCBpbnQgY291bnQpCiB7CiAJR0VNX0JVR19PTighY291bnQgfHwgY291bnQgPiA2Myk7 CiAKLQkqYmF0Y2grKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKGNvdW50KTsKKwkqYmF0Y2grKyA9 IGk5MTVfZ2V0X2xyaV9jbWQoZW5naW5lLCBjb3VudCk7CiAJZG8gewotCQkqYmF0Y2grKyA9IGk5 MTVfbW1pb19yZWdfb2Zmc2V0KGxyaS0+cmVnKTsKKwkJKmJhdGNoKysgPSBpOTE1X2dldF9scmlf cmVnKGVuZ2luZSwgbHJpLT5yZWcpOwogCQkqYmF0Y2grKyA9IGxyaS0+dmFsdWU7CiAJfSB3aGls ZSAobHJpKyssIC0tY291bnQpOwogCSpiYXRjaCsrID0gTUlfTk9PUDsKQEAgLTE1ODQsNyArMTU4 Nyw3IEBAIHN0YXRpYyB1MzIgKmdlbjlfaW5pdF9pbmRpcmVjdGN0eF9iYihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsIHUzMiAqYmF0Y2gpCiAJLyogV2FGbHVzaENvaGVyZW50TDNDYWNo ZUxpbmVzQXRDb250ZXh0U3dpdGNoOnNrbCxieHQsZ2xrICovCiAJYmF0Y2ggPSBnZW44X2VtaXRf Zmx1c2hfY29oZXJlbnRsM193YShlbmdpbmUsIGJhdGNoKTsKIAotCWJhdGNoID0gZW1pdF9scmko YmF0Y2gsIGxyaSwgQVJSQVlfU0laRShscmkpKTsKKwliYXRjaCA9IGVtaXRfbHJpKGVuZ2luZSwg YmF0Y2gsIGxyaSwgQVJSQVlfU0laRShscmkpKTsKIAogCS8qIFdhTWVkaWFQb29sU3RhdGVDbWRJ bldBQkI6Ynh0LGdsayAqLwogCWlmIChIQVNfUE9PTEVEX0VVKGVuZ2luZS0+aTkxNSkpIHsKQEAg LTI1MzcsMTAgKzI1NDAsMTAgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRl KHUzMiAqcmVncywKIAkgKiB2YWx1ZXMgKGluY2x1ZGluZyBhbGwgdGhlIG1pc3NpbmcgTUlfTE9B RF9SRUdJU1RFUl9JTU0gY29tbWFuZHMgdGhhdAogCSAqIHdlIGFyZSBub3QgaW5pdGlhbGl6aW5n IGhlcmUpLgogCSAqLwotCXJlZ3NbQ1RYX0xSSV9IRUFERVJfMF0gPSBNSV9MT0FEX1JFR0lTVEVS X0lNTShyY3MgPyAxNCA6IDExKSB8Ci0JCQkJIE1JX0xSSV9GT1JDRV9QT1NURUQ7CisJcmVnc1tD VFhfTFJJX0hFQURFUl8wXSA9IGk5MTVfZ2V0X2xyaV9jbWQoZW5naW5lLCByY3MgPyAxNCA6IDEx KSB8CisJCQkJCQkgIE1JX0xSSV9GT1JDRV9QT1NURUQ7CiAKLQlDVFhfUkVHKHJlZ3MsIENUWF9D T05URVhUX0NPTlRST0wsIFJJTkdfQ09OVEVYVF9DT05UUk9MKGJhc2UpLAorCUNUWF9SRUcoZW5n aW5lLCByZWdzLCBDVFhfQ09OVEVYVF9DT05UUk9MLCBSSU5HX0NPTlRFWFRfQ09OVFJPTChiYXNl KSwKIAkJX01BU0tFRF9CSVRfRElTQUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5I SUJJVCkgfAogCQlfTUFTS0VEX0JJVF9FTkFCTEUoQ1RYX0NUUkxfSU5ISUJJVF9TWU5fQ1RYX1NX SVRDSCkpOwogCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDExKSB7CkBAIC0yNTQ4LDIy ICsyNTUxLDIzIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZSh1MzIgKnJl Z3MsCiAJCQlfTUFTS0VEX0JJVF9ESVNBQkxFKENUWF9DVFJMX0VOR0lORV9DVFhfU0FWRV9JTkhJ QklUIHwKIAkJCQkJICAgIENUWF9DVFJMX1JTX0NUWF9FTkFCTEUpOwogCX0KLQlDVFhfUkVHKHJl Z3MsIENUWF9SSU5HX0hFQUQsIFJJTkdfSEVBRChiYXNlKSwgMCk7Ci0JQ1RYX1JFRyhyZWdzLCBD VFhfUklOR19UQUlMLCBSSU5HX1RBSUwoYmFzZSksIDApOwotCUNUWF9SRUcocmVncywgQ1RYX1JJ TkdfQlVGRkVSX1NUQVJULCBSSU5HX1NUQVJUKGJhc2UpLCAwKTsKLQlDVFhfUkVHKHJlZ3MsIENU WF9SSU5HX0JVRkZFUl9DT05UUk9MLCBSSU5HX0NUTChiYXNlKSwKKwlDVFhfUkVHKGVuZ2luZSwg cmVncywgQ1RYX1JJTkdfSEVBRCwgUklOR19IRUFEKGJhc2UpLCAwKTsKKwlDVFhfUkVHKGVuZ2lu ZSwgcmVncywgQ1RYX1JJTkdfVEFJTCwgUklOR19UQUlMKGJhc2UpLCAwKTsKKwlDVFhfUkVHKGVu Z2luZSwgcmVncywgQ1RYX1JJTkdfQlVGRkVSX1NUQVJULCBSSU5HX1NUQVJUKGJhc2UpLCAwKTsK KwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1JJTkdfQlVGRkVSX0NPTlRST0wsIFJJTkdfQ1RM KGJhc2UpLAogCQlSSU5HX0NUTF9TSVpFKHJpbmctPnNpemUpIHwgUklOR19WQUxJRCk7Ci0JQ1RY X1JFRyhyZWdzLCBDVFhfQkJfSEVBRF9VLCBSSU5HX0JCQUREUl9VRFcoYmFzZSksIDApOwotCUNU WF9SRUcocmVncywgQ1RYX0JCX0hFQURfTCwgUklOR19CQkFERFIoYmFzZSksIDApOwotCUNUWF9S RUcocmVncywgQ1RYX0JCX1NUQVRFLCBSSU5HX0JCU1RBVEUoYmFzZSksIFJJTkdfQkJfUFBHVFQp OwotCUNUWF9SRUcocmVncywgQ1RYX1NFQ09ORF9CQl9IRUFEX1UsIFJJTkdfU0JCQUREUl9VRFco YmFzZSksIDApOwotCUNUWF9SRUcocmVncywgQ1RYX1NFQ09ORF9CQl9IRUFEX0wsIFJJTkdfU0JC QUREUihiYXNlKSwgMCk7Ci0JQ1RYX1JFRyhyZWdzLCBDVFhfU0VDT05EX0JCX1NUQVRFLCBSSU5H X1NCQlNUQVRFKGJhc2UpLCAwKTsKKwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX0JCX0hFQURf VSwgUklOR19CQkFERFJfVURXKGJhc2UpLCAwKTsKKwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RY X0JCX0hFQURfTCwgUklOR19CQkFERFIoYmFzZSksIDApOworCUNUWF9SRUcoZW5naW5lLCByZWdz LCBDVFhfQkJfU1RBVEUsIFJJTkdfQkJTVEFURShiYXNlKSwgUklOR19CQl9QUEdUVCk7CisJQ1RY X1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9TRUNPTkRfQkJfSEVBRF9VLCBSSU5HX1NCQkFERFJfVURX KGJhc2UpLCAwKTsKKwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1NFQ09ORF9CQl9IRUFEX0ws IFJJTkdfU0JCQUREUihiYXNlKSwgMCk7CisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9TRUNP TkRfQkJfU1RBVEUsIFJJTkdfU0JCU1RBVEUoYmFzZSksIDApOwogCWlmIChyY3MpIHsKIAkJc3Ry dWN0IGk5MTVfY3R4X3dvcmthcm91bmRzICp3YV9jdHggPSAmZW5naW5lLT53YV9jdHg7CiAKLQkJ Q1RYX1JFRyhyZWdzLCBDVFhfUkNTX0lORElSRUNUX0NUWCwgUklOR19JTkRJUkVDVF9DVFgoYmFz ZSksIDApOwotCQlDVFhfUkVHKHJlZ3MsIENUWF9SQ1NfSU5ESVJFQ1RfQ1RYX09GRlNFVCwKKwkJ Q1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9SQ1NfSU5ESVJFQ1RfQ1RYLAorCQkJUklOR19JTkRJ UkVDVF9DVFgoYmFzZSksIDApOworCQlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1JDU19JTkRJ UkVDVF9DVFhfT0ZGU0VULAogCQkJUklOR19JTkRJUkVDVF9DVFhfT0ZGU0VUKGJhc2UpLCAwKTsK IAkJaWYgKHdhX2N0eC0+aW5kaXJlY3RfY3R4LnNpemUpIHsKIAkJCXUzMiBnZ3R0X29mZnNldCA9 IGk5MTVfZ2d0dF9vZmZzZXQod2FfY3R4LT52bWEpOwpAQCAtMjU3Niw3ICsyNTgwLDggQEAgc3Rh dGljIHZvaWQgZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHUzMiAqcmVncywKIAkJCQlpbnRlbF9s cl9pbmRpcmVjdF9jdHhfb2Zmc2V0KGVuZ2luZSkgPDwgNjsKIAkJfQogCi0JCUNUWF9SRUcocmVn cywgQ1RYX0JCX1BFUl9DVFhfUFRSLCBSSU5HX0JCX1BFUl9DVFhfUFRSKGJhc2UpLCAwKTsKKwkJ Q1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9CQl9QRVJfQ1RYX1BUUiwKKwkJCVJJTkdfQkJfUEVS X0NUWF9QVFIoYmFzZSksIDApOwogCQlpZiAod2FfY3R4LT5wZXJfY3R4LnNpemUpIHsKIAkJCXUz MiBnZ3R0X29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQod2FfY3R4LT52bWEpOwogCkBAIC0yNTg1 LDE4ICsyNTkwLDE5IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZSh1MzIg KnJlZ3MsCiAJCX0KIAl9CiAKLQlyZWdzW0NUWF9MUklfSEVBREVSXzFdID0gTUlfTE9BRF9SRUdJ U1RFUl9JTU0oOSkgfCBNSV9MUklfRk9SQ0VfUE9TVEVEOworCXJlZ3NbQ1RYX0xSSV9IRUFERVJf MV0gPSBpOTE1X2dldF9scmlfY21kKGVuZ2luZSwgOSkgfAorCQkJCQkJICBNSV9MUklfRk9SQ0Vf UE9TVEVEOwogCi0JQ1RYX1JFRyhyZWdzLCBDVFhfQ1RYX1RJTUVTVEFNUCwgUklOR19DVFhfVElN RVNUQU1QKGJhc2UpLCAwKTsKKwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX0NUWF9USU1FU1RB TVAsIFJJTkdfQ1RYX1RJTUVTVEFNUChiYXNlKSwgMCk7CiAJLyogUERQIHZhbHVlcyB3ZWxsIGJl IGFzc2lnbmVkIGxhdGVyIGlmIG5lZWRlZCAqLwotCUNUWF9SRUcocmVncywgQ1RYX1BEUDNfVURX LCBHRU44X1JJTkdfUERQX1VEVyhiYXNlLCAzKSwgMCk7Ci0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQ M19MRFcsIEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDMpLCAwKTsKLQlDVFhfUkVHKHJlZ3MsIENU WF9QRFAyX1VEVywgR0VOOF9SSU5HX1BEUF9VRFcoYmFzZSwgMiksIDApOwotCUNUWF9SRUcocmVn cywgQ1RYX1BEUDJfTERXLCBHRU44X1JJTkdfUERQX0xEVyhiYXNlLCAyKSwgMCk7Ci0JQ1RYX1JF RyhyZWdzLCBDVFhfUERQMV9VRFcsIEdFTjhfUklOR19QRFBfVURXKGJhc2UsIDEpLCAwKTsKLQlD VFhfUkVHKHJlZ3MsIENUWF9QRFAxX0xEVywgR0VOOF9SSU5HX1BEUF9MRFcoYmFzZSwgMSksIDAp OwotCUNUWF9SRUcocmVncywgQ1RYX1BEUDBfVURXLCBHRU44X1JJTkdfUERQX1VEVyhiYXNlLCAw KSwgMCk7Ci0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQMF9MRFcsIEdFTjhfUklOR19QRFBfTERXKGJh c2UsIDApLCAwKTsKKwlDVFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1BEUDNfVURXLCBHRU44X1JJ TkdfUERQX1VEVyhiYXNlLCAzKSwgMCk7CisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9QRFAz X0xEVywgR0VOOF9SSU5HX1BEUF9MRFcoYmFzZSwgMyksIDApOworCUNUWF9SRUcoZW5naW5lLCBy ZWdzLCBDVFhfUERQMl9VRFcsIEdFTjhfUklOR19QRFBfVURXKGJhc2UsIDIpLCAwKTsKKwlDVFhf UkVHKGVuZ2luZSwgcmVncywgQ1RYX1BEUDJfTERXLCBHRU44X1JJTkdfUERQX0xEVyhiYXNlLCAy KSwgMCk7CisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9QRFAxX1VEVywgR0VOOF9SSU5HX1BE UF9VRFcoYmFzZSwgMSksIDApOworCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUERQMV9MRFcs IEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDEpLCAwKTsKKwlDVFhfUkVHKGVuZ2luZSwgcmVncywg Q1RYX1BEUDBfVURXLCBHRU44X1JJTkdfUERQX1VEVyhiYXNlLCAwKSwgMCk7CisJQ1RYX1JFRyhl bmdpbmUsIHJlZ3MsIENUWF9QRFAwX0xEVywgR0VOOF9SSU5HX1BEUF9MRFcoYmFzZSwgMCksIDAp OwogCiAJaWYgKGk5MTVfdm1faXNfNGx2bCgmcHBndHQtPnZtKSkgewogCQkvKiA2NGIgUFBHVFQg KDQ4Yml0IGNhbm9uaWNhbCkKQEAgLTI2MTIsOCArMjYxOCw5IEBAIHN0YXRpYyB2b2lkIGV4ZWNs aXN0c19pbml0X3JlZ19zdGF0ZSh1MzIgKnJlZ3MsCiAJfQogCiAJaWYgKHJjcykgewotCQlyZWdz W0NUWF9MUklfSEVBREVSXzJdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Ci0JCUNUWF9SRUco cmVncywgQ1RYX1JfUFdSX0NMS19TVEFURSwgR0VOOF9SX1BXUl9DTEtfU1RBVEUsIDApOworCQly ZWdzW0NUWF9MUklfSEVBREVSXzJdID0gaTkxNV9nZXRfbHJpX2NtZChlbmdpbmUsIDEpOworCQlD VFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX1JfUFdSX0NMS19TVEFURSwKKwkJCUdFTjhfUl9QV1Jf Q0xLX1NUQVRFLCAwKTsKIAogCQlpOTE1X29hX2luaXRfcmVnX3N0YXRlKGVuZ2luZSwgY2UsIHJl Z3MpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19y ZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaAppbmRleCA1ZWY5 MzJkODEwYTcuLjQwYjExNDJkMGQ3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbHJjX3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xy Y19yZWcuaApAQCAtMzksMTAgKzM5LDEwIEBACiAjZGVmaW5lIENUWF9SX1BXUl9DTEtfU1RBVEUJ CTB4NDIKICNkZWZpbmUgQ1RYX0VORAkJCQkweDQ0CiAKLSNkZWZpbmUgQ1RYX1JFRyhyZWdfc3Rh dGUsIHBvcywgcmVnLCB2YWwpIGRvIHsgXAorI2RlZmluZSBDVFhfUkVHKGVuZ2luZSwgcmVnX3N0 YXRlLCBwb3MsIHJlZywgdmFsKSBkbyB7IFwKIAl1MzIgKnJlZ19zdGF0ZV9fID0gKHJlZ19zdGF0 ZSk7IFwKIAljb25zdCB1MzIgcG9zX18gPSAocG9zKTsgXAotCShyZWdfc3RhdGVfXylbKHBvc19f KSArIDBdID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKTsgXAorCShyZWdfc3RhdGVfXylbKHBv c19fKSArIDBdID0gaTkxNV9nZXRfbHJpX3JlZygoZW5naW5lKSwgKHJlZykpOyBcCiAJKHJlZ19z dGF0ZV9fKVsocG9zX18pICsgMV0gPSAodmFsKTsgXAogfSB3aGlsZSAoMCkKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfbW9jcy5jCmluZGV4IDc5ZGY2NjAyMmQzYS4uNWRhZTYzMzM0ODFkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jCkBAIC0zMjQsOSArMzI0LDYgQEAgc3Rh dGljIHUzMiBnZXRfZW50cnlfY29udHJvbChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJs ZSAqdGFibGUsCiAvKioKICAqIGludGVsX21vY3NfaW5pdF9lbmdpbmUoKSAtIGVtaXQgdGhlIG1v Y3MgY29udHJvbCB0YWJsZQogICogQGVuZ2luZToJVGhlIGVuZ2luZSBmb3Igd2hvbSB0byBlbWl0 IHRoZSByZWdpc3RlcnMuCi0gKgotICogVGhpcyBmdW5jdGlvbiBzaW1wbHkgZW1pdHMgYSBNSV9M T0FEX1JFR0lTVEVSX0lNTSBjb21tYW5kIGZvciB0aGUKLSAqIGdpdmVuIHRhYmxlIHN0YXJ0aW5n IGF0IHRoZSBnaXZlbiBhZGRyZXNzLgogICovCiB2b2lkIGludGVsX21vY3NfaW5pdF9lbmdpbmUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewpAQCAtMzgwLDE4ICszNzcsMjAgQEAg c3RhdGljIGludCBlbWl0X21vY3NfY29udHJvbF90YWJsZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwKIAlpZiAoSVNfRVJSKGNzKSkKIAkJcmV0dXJuIFBUUl9FUlIoY3MpOwogCi0JKmNzKysgPSBN SV9MT0FEX1JFR0lTVEVSX0lNTSh0YWJsZS0+bl9lbnRyaWVzKTsKKwkqY3MrKyA9IGk5MTVfZ2V0 X2xyaV9jbWQocnEtPmVuZ2luZSwgdGFibGUtPm5fZW50cmllcyk7CiAKIAlmb3IgKGluZGV4ID0g MDsgaW5kZXggPCB0YWJsZS0+c2l6ZTsgaW5kZXgrKykgewogCQl1MzIgdmFsdWUgPSBnZXRfZW50 cnlfY29udHJvbCh0YWJsZSwgaW5kZXgpOwogCi0JCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZz ZXQobW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7CisJCSpjcysrID0gaTkxNV9nZXRfbHJp X3JlZyhycS0+ZW5naW5lLAorCQkJCQkgbW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7CiAJ CSpjcysrID0gdmFsdWU7CiAJfQogCiAJLyogQWxsIHJlbWFpbmluZyBlbnRyaWVzIGFyZSBhbHNv IHVudXNlZCAqLwogCWZvciAoOyBpbmRleCA8IHRhYmxlLT5uX2VudHJpZXM7IGluZGV4KyspIHsK LQkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChtb2NzX3JlZ2lzdGVyKGVuZ2luZSwgaW5k ZXgpKTsKKwkJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKHJxLT5lbmdpbmUsCisJCQkJCSBtb2Nz X3JlZ2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKIAkJKmNzKysgPSB1bnVzZWRfdmFsdWU7CiAJfQog CkBAIC00NDksNyArNDQ4LDExIEBAIHN0YXRpYyBpbnQgZW1pdF9tb2NzX2wzY2NfdGFibGUoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJaWYgKElTX0VSUihjcykpCiAJCXJldHVybiBQVFJfRVJS KGNzKTsKIAotCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0odGFibGUtPm5fZW50cmllcyAv IDIpOworCS8qCisJICogR0VOOV9MTkNGQ01PQ1MgaXMgbm90IGVuZ2luZSByZWxhdGl2ZSwgdGhl cmVmb3JlIHRoZXJlIGlzIG5vCisJICogbmVlZCBmb3IgcmVsYXRpdmUgYWRkcmVzc2luZz8KKwkg Ki8KKwkqY3MrKyA9IF9fTUlfTE9BRF9SRUdJU1RFUl9JTU0odGFibGUtPm5fZW50cmllcyAvIDIp OwogCiAJZm9yIChpID0gMDsgaSA8IHRhYmxlLT5zaXplIC8gMjsgaSsrKSB7CiAJCXUxNiBsb3cg PSBnZXRfZW50cnlfbDNjYyh0YWJsZSwgMiAqIGkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGYwZDYwYWZmZGJhMy4uZTk4YzJmZTcyN2E1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC0xNTE2LDEyICsx NTE2LDEzIEBAIHN0YXRpYyBpbnQgbG9hZF9wZF9kaXIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs CiAJaWYgKElTX0VSUihjcykpCiAJCXJldHVybiBQVFJfRVJSKGNzKTsKIAotCSpjcysrID0gTUlf TE9BRF9SRUdJU1RFUl9JTU0oMSk7Ci0JKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5H X1BQX0RJUl9EQ0xWKGVuZ2luZS0+bW1pb19iYXNlKSk7CisJLyogQ2FuIHRoZXNlIG5vdCBiZSBt ZXJnZWQgaW50byBhIHNpbmdsZSBMUkk/Pz8gKi8KKwkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9jbWQo ZW5naW5lLCAxKTsKKwkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcoZW5naW5lLCBSSU5HX1BQX0RJ Ul9EQ0xWKGVuZ2luZS0+bW1pb19iYXNlKSk7CiAJKmNzKysgPSBQUF9ESVJfRENMVl8yRzsKIAot CSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Ci0JKmNzKysgPSBpOTE1X21taW9fcmVn X29mZnNldChSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZS0+bW1pb19iYXNlKSk7CisJKmNzKysgPSBp OTE1X2dldF9scmlfY21kKGVuZ2luZSwgMSk7CisJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKGVu Z2luZSwgUklOR19QUF9ESVJfQkFTRShlbmdpbmUtPm1taW9fYmFzZSkpOwogCSpjcysrID0gcHBn dHQtPnBkLmJhc2UuZ2d0dF9vZmZzZXQgPDwgMTA7CiAKIAlpbnRlbF9yaW5nX2FkdmFuY2UocnEs IGNzKTsKQEAgLTE1ODksNyArMTU5MCwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBtaV9zZXRfY29u dGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIGZsYWdzKQogCQlpZiAobnVtX2VuZ2lu ZXMpIHsKIAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKIAotCQkJKmNzKysg PSBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fZW5naW5lcyk7CisJCQkvKgorCQkJICogTXVzdCB1 c2UgYWJzb2x1dGUgZW5naW5lIGFkZHJlc3MgYXMgdGhlIHJlZ2lzdGVyCisJCQkgKiB3cml0ZSBp cyB0YXJnZXRpbmcgYSBkaWZmZXJlbnQgZW5naW5lLgorCQkJICovCisJCQkqY3MrKyA9IF9fTUlf TE9BRF9SRUdJU1RFUl9JTU0obnVtX2VuZ2luZXMpOwogCQkJZm9yX2VhY2hfZW5naW5lKHNpZ25h bGxlciwgaTkxNSwgaWQpIHsKIAkJCQlpZiAoc2lnbmFsbGVyID09IGVuZ2luZSkKIAkJCQkJY29u dGludWU7CkBAIC0xNjQzLDcgKzE2NDgsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgbWlfc2V0X2Nv bnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBmbGFncykKIAkJCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKIAkJCWk5MTVfcmVnX3QgbGFzdF9yZWcgPSB7fTsgLyog a2VlcCBnY2MgcXVpZXQgKi8KIAotCQkJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1f ZW5naW5lcyk7CisJCQkvKgorCQkJICogTXVzdCB1c2UgYWJzb2x1dGUgZW5naW5lIGFkZHJlc3Mg YXMgdGhlIHJlZ2lzdGVyCisJCQkgKiB3cml0ZSBpcyB0YXJnZXRpbmcgYSBkaWZmZXJlbnQgZW5n aW5lLgorCQkJICovCisJCQkqY3MrKyA9IF9fTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX2VuZ2lu ZXMpOwogCQkJZm9yX2VhY2hfZW5naW5lKHNpZ25hbGxlciwgaTkxNSwgaWQpIHsKIAkJCQlpZiAo c2lnbmFsbGVyID09IGVuZ2luZSkKIAkJCQkJY29udGludWU7CkBAIC0xNjg3LDkgKzE2OTYsOSBA QCBzdGF0aWMgaW50IHJlbWFwX2wzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgc2xpY2Up CiAJICogaGVyZSBiZWNhdXNlIG5vIG90aGVyIGNvZGUgc2hvdWxkIGFjY2VzcyB0aGVzZSByZWdp c3RlcnMgb3RoZXIgdGhhbgogCSAqIGF0IGluaXRpYWxpemF0aW9uIHRpbWUuCiAJICovCi0JKmNz KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9HX1NJWkUvNCk7CisJKmNzKysgPSBp OTE1X2dldF9scmlfY21kKHJxLT5lbmdpbmUsIEdFTjdfTDNMT0dfU0laRS80KTsKIAlmb3IgKGkg PSAwOyBpIDwgR0VON19MM0xPR19TSVpFLzQ7IGkrKykgewotCQkqY3MrKyA9IGk5MTVfbW1pb19y ZWdfb2Zmc2V0KEdFTjdfTDNMT0coc2xpY2UsIGkpKTsKKwkJKmNzKysgPSBpOTE1X2dldF9scmlf cmVnKHJxLT5lbmdpbmUsIEdFTjdfTDNMT0coc2xpY2UsIGkpKTsKIAkJKmNzKysgPSByZW1hcF9p bmZvW2ldOwogCX0KIAkqY3MrKyA9IE1JX05PT1A7CkBAIC0yMzM1LDMgKzIzNDQsMjMgQEAgaW50 IGludGVsX3Jpbmdfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAlpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oZW5naW5lKTsKIAlyZXR1cm4gZXJyOwog fQorCit1MzIgaTkxNV9nZXRfbHJpX2NtZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIHUzMiB3b3JkX2NvdW50KQoreworCXUzMiB3b3JkOworCisJd29yZCA9IF9fTUlfTE9B RF9SRUdJU1RFUl9JTU0od29yZF9jb3VudCk7CisKKwlpZiAoaTkxNV9lbmdpbmVfaGFzX3JlbGF0 aXZlX2xyaShlbmdpbmUpKQorCQl3b3JkIHw9IE1JX0xSSV9BRERfQ1NfTU1JT19TVEFSVF9HRU4x MTsKKworCXJldHVybiB3b3JkOworfQorCit1MzIgaTkxNV9nZXRfbHJpX3JlZyhjb25zdCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGk5MTVfcmVnX3QgcmVnKQoreworCWlmICghaTkx NV9lbmdpbmVfaGFzX3JlbGF0aXZlX2xyaShlbmdpbmUpKQorCQlyZXR1cm4gaTkxNV9tbWlvX3Jl Z19vZmZzZXQocmVnKTsKKworCXJldHVybiBpOTE1X21taW9fcmVnX29mZnNldChyZWcpIC0gZW5n aW5lLT5tbWlvX2Jhc2U7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fy b3VuZHMuYwppbmRleCA0M2UyOTAzMDY1NTEuLmQ1ZWRjMTBjODYwYyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCkBAIC02MjUsOSArNjI1LDkgQEAgaW50 IGludGVsX2VuZ2luZV9lbWl0X2N0eF93YShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlpZiAo SVNfRVJSKGNzKSkKIAkJcmV0dXJuIFBUUl9FUlIoY3MpOwogCi0JKmNzKysgPSBNSV9MT0FEX1JF R0lTVEVSX0lNTSh3YWwtPmNvdW50KTsKKwkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9jbWQocnEtPmVu Z2luZSwgd2FsLT5jb3VudCk7CiAJZm9yIChpID0gMCwgd2EgPSB3YWwtPmxpc3Q7IGkgPCB3YWwt PmNvdW50OyBpKyssIHdhKyspIHsKLQkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldCh3YS0+ cmVnKTsKKwkJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKHJxLT5lbmdpbmUsIHdhLT5yZWcpOwog CQkqY3MrKyA9IHdhLT52YWw7CiAJfQogCSpjcysrID0gTUlfTk9PUDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCmluZGV4IDlmNzY4MGI5OTg0Yi4u ZWQ1OTc5MTIwNGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF93b3JrYXJvdW5kcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dv cmthcm91bmRzLmMKQEAgLTQ0Miw2ICs0NDIsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2RpcnR5X3do aXRlbGlzdChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCiAJZm9yIChpID0gMDsgaSA8 IGVuZ2luZS0+d2hpdGVsaXN0LmNvdW50OyBpKyspIHsKIAkJdTMyIHJlZyA9IGk5MTVfbW1pb19y ZWdfb2Zmc2V0KGVuZ2luZS0+d2hpdGVsaXN0Lmxpc3RbaV0ucmVnKTsKKwkJdTMyIHJlZ0xSSSA9 IGk5MTVfZ2V0X2xyaV9yZWcoZW5naW5lLCBlbmdpbmUtPndoaXRlbGlzdC5saXN0W2ldLnJlZyk7 CiAJCXU2NCBhZGRyID0gc2NyYXRjaC0+bm9kZS5zdGFydDsKIAkJc3RydWN0IGk5MTVfcmVxdWVz dCAqcnE7CiAJCXUzMiBzcm0sIGxybSwgcnN2ZDsKQEAgLTQ3NCw4ICs0NzUsOCBAQCBzdGF0aWMg aW50IGNoZWNrX2RpcnR5X3doaXRlbGlzdChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAog CQlpZHggPSAxOwogCQlmb3IgKHYgPSAwOyB2IDwgQVJSQVlfU0laRSh2YWx1ZXMpOyB2KyspIHsK IAkJCS8qIExSSSBnYXJiYWdlICovCi0JCQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEp OwotCQkJKmNzKysgPSByZWc7CisJCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9jbWQoZW5naW5lLCAx KTsKKwkJCSpjcysrID0gcmVnTFJJOwogCQkJKmNzKysgPSB2YWx1ZXNbdl07CiAKIAkJCS8qIFNS TSByZXN1bHQgKi8KQEAgLTQ4Nyw4ICs0ODgsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2RpcnR5X3do aXRlbGlzdChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQl9CiAJCWZvciAodiA9IDA7 IHYgPCBBUlJBWV9TSVpFKHZhbHVlcyk7IHYrKykgewogCQkJLyogTFJJIGdhcmJhZ2UgKi8KLQkJ CSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Ci0JCQkqY3MrKyA9IHJlZzsKKwkJCSpj cysrID0gaTkxNV9nZXRfbHJpX2NtZChlbmdpbmUsIDEpOworCQkJKmNzKysgPSByZWdMUkk7CiAJ CQkqY3MrKyA9IH52YWx1ZXNbdl07CiAKIAkJCS8qIFNSTSByZXN1bHQgKi8KQEAgLTc1Nyw5ICs3 NTgsOSBAQCBzdGF0aWMgaW50IHNjcnViX3doaXRlbGlzdGVkX3JlZ2lzdGVycyhzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAogCQlnb3RvIGVycl9iYXRjaDsKIAl9CiAKLQkqY3MrKyA9IE1J X0xPQURfUkVHSVNURVJfSU1NKGVuZ2luZS0+d2hpdGVsaXN0LmNvdW50KTsKKwkqY3MrKyA9IGk5 MTVfZ2V0X2xyaV9jbWQoZW5naW5lLCBlbmdpbmUtPndoaXRlbGlzdC5jb3VudCk7CiAJZm9yIChp ID0gMDsgaSA8IGVuZ2luZS0+d2hpdGVsaXN0LmNvdW50OyBpKyspIHsKLQkJKmNzKysgPSBpOTE1 X21taW9fcmVnX29mZnNldChlbmdpbmUtPndoaXRlbGlzdC5saXN0W2ldLnJlZyk7CisJCSpjcysr ID0gaTkxNV9nZXRfbHJpX3JlZyhlbmdpbmUsIGVuZ2luZS0+d2hpdGVsaXN0Lmxpc3RbaV0ucmVn KTsKIAkJKmNzKysgPSAweGZmZmZmZmZmOwogCX0KIAkqY3MrKyA9IE1JX0JBVENIX0JVRkZFUl9F TkQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMKaW5kZXggYTI3YmRkMzk1 MWY2Li4zODA3Y2U1ZmU1NjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9t bWlvX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0 LmMKQEAgLTIwMCwxNCArMjAwLDE0IEBAIHJlc3RvcmVfY29udGV4dF9tbWlvX2Zvcl9pbmhpYml0 KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAogCWlmIChJU19FUlIoY3MpKQogCQlyZXR1cm4gUFRS X0VSUihjcyk7CiAKLQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKGNvdW50KTsKKwkqY3Mr KyA9IGk5MTVfZ2V0X2xyaV9jbWQocmVxLT5lbmdpbmUsIGNvdW50KTsKIAlmb3IgKG1taW8gPSBn dnQtPmVuZ2luZV9tbWlvX2xpc3QubW1pbzsKIAkgICAgIGk5MTVfbW1pb19yZWdfdmFsaWQobW1p by0+cmVnKTsgbW1pbysrKSB7CiAJCWlmIChtbWlvLT5yaW5nX2lkICE9IHJpbmdfaWQgfHwKIAkJ ICAgICFtbWlvLT5pbl9jb250ZXh0KQogCQkJY29udGludWU7CiAKLQkJKmNzKysgPSBpOTE1X21t aW9fcmVnX29mZnNldChtbWlvLT5yZWcpOworCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcocmVx LT5lbmdpbmUsIG1taW8tPnJlZyk7CiAJCSpjcysrID0gdmdwdV92cmVnX3QodmdwdSwgbW1pby0+ cmVnKSB8CiAJCQkJKG1taW8tPm1hc2sgPDwgMTYpOwogCQlndnRfZGJnX2NvcmUoImFkZCBscmkg cmVnIHBhaXIgMHgleDoweCV4IGluIGluaGliaXQgY3R4LCB2Z3B1OiVkLCByaW5kX2lkOiVkXG4i LApAQCAtMjM1LDcgKzIzNSwxMSBAQCByZXN0b3JlX3JlbmRlcl9tb2NzX2NvbnRyb2xfZm9yX2lu aGliaXQoc3RydWN0IGludGVsX3ZncHUgKnZncHUsCiAJaWYgKElTX0VSUihjcykpCiAJCXJldHVy biBQVFJfRVJSKGNzKTsKIAotCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9NT0NT X1NJWkUpOworCS8qCisJICogR0VOOV9HRlhfTU9DUyBpcyBub3QgZW5naW5lIHJlbGF0aXZlLCB0 aGVyZWZvcmUgdGhlcmUgaXMgbm8KKwkgKiBuZWVkIGZvciByZWxhdGl2ZSBhZGRyZXNzaW5nLgor CSAqLworCSpjcysrID0gX19NSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X01PQ1NfU0laRSk7CiAK IAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBHRU45X01PQ1NfU0laRTsgaW5kZXgrKykgewogCQkq Y3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjlfR0ZYX01PQ1MoaW5kZXgpKTsKQEAgLTI2 Miw3ICsyNjYsMTEgQEAgcmVzdG9yZV9yZW5kZXJfbW9jc19sM2NjX2Zvcl9pbmhpYml0KHN0cnVj dCBpbnRlbF92Z3B1ICp2Z3B1LAogCWlmIChJU19FUlIoY3MpKQogCQlyZXR1cm4gUFRSX0VSUihj cyk7CiAKLQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTU9DU19TSVpFIC8gMik7 CisJLyoKKwkgKiBHRU45X0xOQ0ZDTU9DUyBpcyBub3QgZW5naW5lIHJlbGF0aXZlLCB0aGVyZWZv cmUgdGhlcmUgaXMgbm8KKwkgKiBuZWVkIGZvciByZWxhdGl2ZSBhZGRyZXNzaW5nLgorCSAqLwor CSpjcysrID0gX19NSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X01PQ1NfU0laRSAvIDIpOwogCiAJ Zm9yIChpbmRleCA9IDA7IGluZGV4IDwgR0VOOV9NT0NTX1NJWkUgLyAyOyBpbmRleCsrKSB7CiAJ CSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOV9MTkNGQ01PQ1MoaW5kZXgpKTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKaW5kZXggZTlmYWRjYjRkNTkyLi5mZDE4 M2U3MmRhY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNl ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCkBAIC0yMjEs NyArMjIxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciBj b21tb25fY21kc1tdID0gewogCUNNRCggIE1JX1NVU1BFTkRfRkxVU0gsICAgICAgICAgICAgICAg ICBTTUksICAgIEYsICAxLCAgICAgIFMgICksCiAJQ01EKCAgTUlfU0VNQVBIT1JFX01CT1gsICAg ICAgICAgICAgICAgIFNNSSwgICAhRiwgIDB4RkYsICAgUiAgKSwKIAlDTUQoICBNSV9TVE9SRV9E V09SRF9JTkRFWCwgICAgICAgICAgICAgU01JLCAgICFGLCAgMHhGRiwgICBSICApLAotCUNNRCgg IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpLCAgICAgICAgICBTTUksICAgIUYsICAweEZGLCAgIFcs CisJQ01EKCAgX19NSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSwgICAgICAgIFNNSSwgICAhRiwgIDB4 RkYsICAgVywKIAkgICAgICAucmVnID0geyAub2Zmc2V0ID0gMSwgLm1hc2sgPSAweDAwN0ZGRkZD LCAuc3RlcCA9IDIgfSAgICApLAogCUNNRCggIE1JX1NUT1JFX1JFR0lTVEVSX01FTSwgICAgICAg ICAgICBTTUksICAgIEYsICAzLCAgICAgVyB8IEIsCiAJICAgICAgLnJlZyA9IHsgLm9mZnNldCA9 IDEsIC5tYXNrID0gMHgwMDdGRkZGQyB9LApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgc3RhdGljIGJv b2wgY2hlY2tfY21kKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkJ cmV0dXJuIGZhbHNlOwogCQkJCX0KIAotCQkJCWlmIChkZXNjLT5jbWQudmFsdWUgPT0gTUlfTE9B RF9SRUdJU1RFUl9JTU0oMSkgJiYKKwkJCQlpZiAoZGVzYy0+Y21kLnZhbHVlID09IF9fTUlfTE9B RF9SRUdJU1RFUl9JTU0oMSkgJiYKIAkJCQkgICAgKG9mZnNldCArIDIgPiBsZW5ndGggfHwKIAkJ CQkgICAgIChjbWRbb2Zmc2V0ICsgMV0gJiByZWctPm1hc2spICE9IHJlZy0+dmFsdWUpKSB7CiAJ CQkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogUmVqZWN0ZWQgTFJJIHRvIG1hc2tlZCByZWdpc3Rl ciAweCUwOFhcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXgg NjVjZWZjNTIwZTc5Li45ODI2MGQ4YTQ1YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKQEAgLTEwMjYsMTEgKzEwMjYsMTEgQEAgc3RhdGljIGludCBlbWl0X3BwZ3R0 X3VwZGF0ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdm9pZCAqZGF0YSkKIAkJaWYgKElTX0VS UihjcykpCiAJCQlyZXR1cm4gUFRSX0VSUihjcyk7CiAKLQkJKmNzKysgPSBNSV9MT0FEX1JFR0lT VEVSX0lNTSgyKTsKKwkJKmNzKysgPSBpOTE1X2dldF9scmlfY21kKGVuZ2luZSwgMik7CiAKLQkJ KmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX1VEVyhiYXNlLCAwKSk7 CisJCSpjcysrID0gaTkxNV9nZXRfbHJpX3JlZyhlbmdpbmUsIEdFTjhfUklOR19QRFBfVURXKGJh c2UsIDApKTsKIAkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKTsKLQkJKmNzKysgPSBp OTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX0xEVyhiYXNlLCAwKSk7CisJCSpjcysr ID0gaTkxNV9nZXRfbHJpX3JlZyhlbmdpbmUsIEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDApKTsK IAkJKmNzKysgPSBsb3dlcl8zMl9iaXRzKHBkX2RhZGRyKTsKIAogCQkqY3MrKyA9IE1JX05PT1A7 CkBAIC0xMDQwLDEzICsxMDQwLDEzIEBAIHN0YXRpYyBpbnQgZW1pdF9wcGd0dF91cGRhdGUoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsIHZvaWQgKmRhdGEpCiAJCWlmIChJU19FUlIoY3MpKQogCQkJ cmV0dXJuIFBUUl9FUlIoY3MpOwogCi0JCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMiAq IEdFTjhfM0xWTF9QRFBFUyk7CisJCSpjcysrID0gaTkxNV9nZXRfbHJpX2NtZChlbmdpbmUsIDIg KiBHRU44XzNMVkxfUERQRVMpOwogCQlmb3IgKGkgPSBHRU44XzNMVkxfUERQRVM7IGktLTsgKSB7 CiAJCQljb25zdCBkbWFfYWRkcl90IHBkX2RhZGRyID0gaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihw cGd0dCwgaSk7CiAKLQkJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BE UF9VRFcoYmFzZSwgaSkpOworCQkJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKGVuZ2luZSwgR0VO OF9SSU5HX1BEUF9VRFcoYmFzZSwgaSkpOwogCQkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBkX2Rh ZGRyKTsKLQkJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9MRFco YmFzZSwgaSkpOworCQkJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKGVuZ2luZSwgR0VOOF9SSU5H X1BEUF9MRFcoYmFzZSwgaSkpOwogCQkJKmNzKysgPSBsb3dlcl8zMl9iaXRzKHBkX2RhZGRyKTsK IAkJfQogCQkqY3MrKyA9IE1JX05PT1A7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKaW5kZXggNjc5ZjdjMTU2MWJhLi5hYzViMDZkMmZmZGMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKQEAgLTE5NjMsNyArMTk2Myw4IEBA IHN0YXRpYyBpbnQgaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxKQogCWlmIChJU19FUlIoY3MpKQogCQlyZXR1cm4gUFRSX0VSUihjcyk7CiAKLQkqY3Mr KyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDQpOworCS8qIEdlbjcgb25seSBzbyBubyBuZWVkIHRv IHN1cHBvcnQgcmVsYXRpdmUgb2Zmc2V0cyAqLworCSpjcysrID0gX19NSV9MT0FEX1JFR0lTVEVS X0lNTSg0KTsKIAlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAJCSpjcysrID0gaTkxNV9tbWlv X3JlZ19vZmZzZXQoR0VON19TT19XUklURV9PRkZTRVQoaSkpOwogCQkqY3MrKyA9IDA7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jCmluZGV4IGM0OTk1ZDVhMTZkMi4uODZmYWNiY2NkYjAyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtMTYzNiw3ICsxNjM2LDggQEAgc3RhdGljIHZvaWQg aHN3X2Rpc2FibGVfbWV0cmljX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAgKiBpbiB0aGUgY2FzZSB0aGF0IHRoZSBPQSB1bml0IGhhcyBiZWVuIGRpc2FibGVkLgogICov CiBzdGF0aWMgdm9pZAotZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSwKK2dlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNl LAogCQkJICAgICAgIHUzMiAqcmVnX3N0YXRlLAogCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1 X29hX2NvbmZpZyAqb2FfY29uZmlnKQogewpAQCAtMTY1NSw3ICsxNjU2LDEyIEBAIGdlbjhfdXBk YXRlX3JlZ19zdGF0ZV91bmxvY2tlZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJfTsKIAlp bnQgaTsKIAotCUNUWF9SRUcocmVnX3N0YXRlLCBjdHhfb2FjdHhjdHJsLCBHRU44X09BQ1RYQ09O VFJPTCwKKwkvKgorCSAqIE5COiBUaGUgTFJJIGluc3RydWN0aW9uIGlzIGdlbmVyYXRlZCBieSB0 aGUgaGFyZHdhcmUuCisJICogU2hvdWxkIHdlIHJlYWQgaXQgaW4gYW5kIGFzc2VydCB0aGF0IHRo ZSBvZmZzZXQgZmxhZyBpcyBzZXQ/CisJICovCisKKwlDVFhfUkVHKGVuZ2luZSwgcmVnX3N0YXRl LCBjdHhfb2FjdHhjdHJsLCBHRU44X09BQ1RYQ09OVFJPTCwKIAkJKGk5MTUtPnBlcmYub2EucGVy aW9kX2V4cG9uZW50IDw8IEdFTjhfT0FfVElNRVJfUEVSSU9EX1NISUZUKSB8CiAJCShpOTE1LT5w ZXJmLm9hLnBlcmlvZGljID8gR0VOOF9PQV9USU1FUl9FTkFCTEUgOiAwKSB8CiAJCUdFTjhfT0Ff Q09VTlRFUl9SRVNVTUUpOwpAQCAtMTY4MiwxMCArMTY4OCwxMCBAQCBnZW44X3VwZGF0ZV9yZWdf c3RhdGVfdW5sb2NrZWQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQkJfQogCQl9CiAKLQkJ Q1RYX1JFRyhyZWdfc3RhdGUsIHN0YXRlX29mZnNldCwgZmxleF9yZWdzW2ldLCB2YWx1ZSk7CisJ CUNUWF9SRUcoZW5naW5lLCByZWdfc3RhdGUsIHN0YXRlX29mZnNldCwgZmxleF9yZWdzW2ldLCB2 YWx1ZSk7CiAJfQogCi0JQ1RYX1JFRyhyZWdfc3RhdGUsCisJQ1RYX1JFRyhlbmdpbmUsIHJlZ19z dGF0ZSwKIAkJQ1RYX1JfUFdSX0NMS19TVEFURSwgR0VOOF9SX1BXUl9DTEtfU1RBVEUsCiAJCWlu dGVsX3NzZXVfbWFrZV9ycGNzKGk5MTUsICZjZS0+c3NldSkpOwogfQpAQCAtMTc3MCw3ICsxNzc2 LDcgQEAgc3RhdGljIGludCBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJY2UtPnN0YXRlLT5vYmotPm1tLmRpcnR5ID0gdHJ1 ZTsKIAkJCXJlZ3MgKz0gTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFIC8gc2l6ZW9mKCpyZWdzKTsK IAotCQkJZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKGNlLCByZWdzLCBvYV9jb25maWcp OworCQkJZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKGRldl9wcml2LT5lbmdpbmVbUkNT MF0sIGNlLCByZWdzLCBvYV9jb25maWcpOwogCiAJCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFw KGNlLT5zdGF0ZS0+b2JqKTsKIAkJfQpAQCAtMjE2Niw3ICsyMTcyLDggQEAgdm9pZCBpOTE1X29h X2luaXRfcmVnX3N0YXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogCXN0cmVh bSA9IGVuZ2luZS0+aTkxNS0+cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtOwogCWlmIChzdHJlYW0p Ci0JCWdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChjZSwgcmVncywgc3RyZWFtLT5vYV9j b25maWcpOworCQlnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoZW5naW5lLCBjZSwgcmVn cywKKwkJCQkJICAgICAgIHN0cmVhbS0+b2FfY29uZmlnKTsKIH0KIAogLyoqCi0tIAoyLjIxLjAu NS5nYWViNTgyYTk4MwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4