From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [PATCH] drm/i915: Engine relative MMIO Date: Fri, 29 Mar 2019 17:10:45 -0700 Message-ID: <20190330001045.4850-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 36B5F6E56A for ; Sat, 30 Mar 2019 00:10:47 +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 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 ZXdlciBiYXNlIHRyZWUgYW5kIGZpeAptZXJnZSBjb25mbGljdC4KClNpZ25lZC1vZmYtYnk6IEpv aG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4dC5jICAgICAgIHwgMTYgKysrLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8IDEyICstLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGVyZi5jICAgICAgICAgICAgICB8IDE5ICsrKy0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgfCAxMSArKysKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2dwdV9jb21tYW5kcy5oICAgICB8ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgfCA4MCArKysrKysrKysrLS0tLS0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmNfcmVnLmggICAgICAgICAgfCAgNCArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jICAgICAgICAgICAgIHwgMTcgKystLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgICAgIHwgNDUgKysrKysrKysrLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICAgICB8ICA0ICsKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMgICAgICB8ICA0ICstCiAuLi4v ZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMgICAgfCAgOSArKy0KIDE0IGZp bGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMKaW5kZXggNzY2MzBmYmU1MWI2Li4xZDI0MDk1 YjM0NWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMKQEAgLTE5OSwx NCArMTk5LDE0IEBAIHJlc3RvcmVfY29udGV4dF9tbWlvX2Zvcl9pbmhpYml0KHN0cnVjdCBpbnRl bF92Z3B1ICp2Z3B1LAogCWlmIChJU19FUlIoY3MpKQogCQlyZXR1cm4gUFRSX0VSUihjcyk7CiAK LQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKGNvdW50KTsKKwkqY3MrKyA9IGk5MTVfZ2V0 X2xyaV9jbWQocmVxLT5lbmdpbmUsIGNvdW50KTsKIAlmb3IgKG1taW8gPSBndnQtPmVuZ2luZV9t bWlvX2xpc3QubW1pbzsKIAkgICAgIGk5MTVfbW1pb19yZWdfdmFsaWQobW1pby0+cmVnKTsgbW1p bysrKSB7CiAJCWlmIChtbWlvLT5yaW5nX2lkICE9IHJpbmdfaWQgfHwKIAkJICAgICFtbWlvLT5p bl9jb250ZXh0KQogCQkJY29udGludWU7CiAKLQkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNl dChtbWlvLT5yZWcpOworCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcocmVxLT5lbmdpbmUsIG1t aW8tPnJlZyk7CiAJCSpjcysrID0gdmdwdV92cmVnX3QodmdwdSwgbW1pby0+cmVnKSB8CiAJCQkJ KG1taW8tPm1hc2sgPDwgMTYpOwogCQlndnRfZGJnX2NvcmUoImFkZCBscmkgcmVnIHBhaXIgMHgl eDoweCV4IGluIGluaGliaXQgY3R4LCB2Z3B1OiVkLCByaW5kX2lkOiVkXG4iLApAQCAtMjM0LDcg KzIzNCwxMSBAQCByZXN0b3JlX3JlbmRlcl9tb2NzX2NvbnRyb2xfZm9yX2luaGliaXQoc3RydWN0 IGludGVsX3ZncHUgKnZncHUsCiAJaWYgKElTX0VSUihjcykpCiAJCXJldHVybiBQVFJfRVJSKGNz KTsKIAotCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9NT0NTX1NJWkUpOworCS8q CisJICogR0VOOV9HRlhfTU9DUyBpcyBub3QgZW5naW5lIHJlbGF0aXZlLCB0aGVyZWZvcmUgdGhl cmUgaXMgbm8KKwkgKiBuZWVkIGZvciByZWxhdGl2ZSBhZGRyZXNzaW5nLgorCSAqLworCSpjcysr ID0gX19NSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X01PQ1NfU0laRSk7CiAKIAlmb3IgKGluZGV4 ID0gMDsgaW5kZXggPCBHRU45X01PQ1NfU0laRTsgaW5kZXgrKykgewogCQkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEdFTjlfR0ZYX01PQ1MoaW5kZXgpKTsKQEAgLTI2MSw3ICsyNjUsMTEg QEAgcmVzdG9yZV9yZW5kZXJfbW9jc19sM2NjX2Zvcl9pbmhpYml0KHN0cnVjdCBpbnRlbF92Z3B1 ICp2Z3B1LAogCWlmIChJU19FUlIoY3MpKQogCQlyZXR1cm4gUFRSX0VSUihjcyk7CiAKLQkqY3Mr KyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTU9DU19TSVpFIC8gMik7CisJLyoKKwkgKiBH RU45X0xOQ0ZDTU9DUyBpcyBub3QgZW5naW5lIHJlbGF0aXZlLCB0aGVyZWZvcmUgdGhlcmUgaXMg bm8KKwkgKiBuZWVkIGZvciByZWxhdGl2ZSBhZGRyZXNzaW5nLgorCSAqLworCSpjcysrID0gX19N SV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X01PQ1NfU0laRSAvIDIpOwogCiAJZm9yIChpbmRleCA9 IDA7IGluZGV4IDwgR0VOOV9NT0NTX1NJWkUgLyAyOyBpbmRleCsrKSB7CiAJCSpjcysrID0gaTkx NV9tbWlvX3JlZ19vZmZzZXQoR0VOOV9MTkNGQ01PQ1MoaW5kZXgpKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9jbWRfcGFyc2VyLmMKaW5kZXggNTAzZDU0OGE1NWY3Li45MWViZTE4YWFjYzYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCkBAIC0yMjAsNyArMjIwLDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciBjb21tb25fY21kc1td ID0gewogCUNNRCggIE1JX1NVU1BFTkRfRkxVU0gsICAgICAgICAgICAgICAgICBTTUksICAgIEYs ICAxLCAgICAgIFMgICksCiAJQ01EKCAgTUlfU0VNQVBIT1JFX01CT1gsICAgICAgICAgICAgICAg IFNNSSwgICAhRiwgIDB4RkYsICAgUiAgKSwKIAlDTUQoICBNSV9TVE9SRV9EV09SRF9JTkRFWCwg ICAgICAgICAgICAgU01JLCAgICFGLCAgMHhGRiwgICBSICApLAotCUNNRCggIE1JX0xPQURfUkVH SVNURVJfSU1NKDEpLCAgICAgICAgICBTTUksICAgIUYsICAweEZGLCAgIFcsCisJQ01EKCAgX19N SV9MT0FEX1JFR0lTVEVSX0lNTSgxKSwgICAgICAgIFNNSSwgICAhRiwgIDB4RkYsICAgVywKIAkg ICAgICAucmVnID0geyAub2Zmc2V0ID0gMSwgLm1hc2sgPSAweDAwN0ZGRkZDLCAuc3RlcCA9IDIg fSAgICApLAogCUNNRCggIE1JX1NUT1JFX1JFR0lTVEVSX01FTSwgICAgICAgICAgICBTTUksICAg IEYsICAzLCAgICAgVyB8IEIsCiAJICAgICAgLnJlZyA9IHsgLm9mZnNldCA9IDEsIC5tYXNrID0g MHgwMDdGRkZGQyB9LApAQCAtMTE4Miw3ICsxMTgyLDcgQEAgc3RhdGljIGJvb2wgY2hlY2tfY21k KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkJcmV0dXJuIGZhbHNl OwogCQkJCX0KIAotCQkJCWlmIChkZXNjLT5jbWQudmFsdWUgPT0gTUlfTE9BRF9SRUdJU1RFUl9J TU0oMSkgJiYKKwkJCQlpZiAoZGVzYy0+Y21kLnZhbHVlID09IF9fTUlfTE9BRF9SRUdJU1RFUl9J TU0oMSkgJiYKIAkJCQkgICAgKG9mZnNldCArIDIgPiBsZW5ndGggfHwKIAkJCQkgICAgIChjbWRb b2Zmc2V0ICsgMV0gJiByZWctPm1hc2spICE9IHJlZy0+dmFsdWUpKSB7CiAJCQkJCURSTV9ERUJV R19EUklWRVIoIkNNRDogUmVqZWN0ZWQgTFJJIHRvIG1hc2tlZCByZWdpc3RlciAweCUwOFhcbiIs CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggNjYyZGE0ODVlMTVm Li44YmJhMzY0MDA1OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMK QEAgLTEwMzgsMTEgKzEwMzgsMTEgQEAgc3RhdGljIGludCBlbWl0X3BwZ3R0X3VwZGF0ZShzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdm9pZCAqZGF0YSkKIAkJaWYgKElTX0VSUihjcykpCiAJCQly ZXR1cm4gUFRSX0VSUihjcyk7CiAKLQkJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyKTsK KwkJKmNzKysgPSBpOTE1X2dldF9scmlfY21kKGVuZ2luZSwgMik7CiAKLQkJKmNzKysgPSBpOTE1 X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIDApKTsKKwkJKmNzKysg PSBpOTE1X2dldF9scmlfcmVnKGVuZ2luZSwgR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCAwKSk7 CiAJCSpjcysrID0gdXBwZXJfMzJfYml0cyhwZF9kYWRkcik7Ci0JCSpjcysrID0gaTkxNV9tbWlv X3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5lLCAwKSk7CisJCSpjcysrID0gaTkx NV9nZXRfbHJpX3JlZyhlbmdpbmUsIEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgMCkpOwogCQkq Y3MrKyA9IGxvd2VyXzMyX2JpdHMocGRfZGFkZHIpOwogCiAJCSpjcysrID0gTUlfTk9PUDsKQEAg LTEwNTIsMTMgKzEwNTIsMTMgQEAgc3RhdGljIGludCBlbWl0X3BwZ3R0X3VwZGF0ZShzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSwgdm9pZCAqZGF0YSkKIAkJaWYgKElTX0VSUihjcykpCiAJCQlyZXR1 cm4gUFRSX0VSUihjcyk7CiAKLQkJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyICogR0VO OF8zTFZMX1BEUEVTKTsKKwkJKmNzKysgPSBpOTE1X2dldF9scmlfY21kKGVuZ2luZSwgMiAqIEdF TjhfM0xWTF9QRFBFUyk7CiAJCWZvciAoaSA9IEdFTjhfM0xWTF9QRFBFUzsgaS0tOyApIHsKIAkJ CWNvbnN0IGRtYV9hZGRyX3QgcGRfZGFkZHIgPSBpOTE1X3BhZ2VfZGlyX2RtYV9hZGRyKHBwZ3R0 LCBpKTsKIAotCQkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX1VE VyhlbmdpbmUsIGkpKTsKKwkJCSpjcysrID0gaTkxNV9nZXRfbHJpX3JlZyhlbmdpbmUsIEdFTjhf UklOR19QRFBfVURXKGVuZ2luZSwgaSkpOwogCQkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBkX2Rh ZGRyKTsKLQkJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9MRFco ZW5naW5lLCBpKSk7CisJCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcoZW5naW5lLCBHRU44X1JJ TkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKIAkJCSpjcysrID0gbG93ZXJfMzJfYml0cyhwZF9kYWRk cik7CiAJCX0KIAkJKmNzKysgPSBNSV9OT09QOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jCmluZGV4IDNkNjcyYzllZGI5NC4uYmQ2MDJiNjI2MWVkIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0xOTY1LDkgKzE5NjUs OSBAQCBzdGF0aWMgaW50IGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSkKIAlpZiAoSVNfRVJSKGNzKSkKIAkJcmV0dXJuIFBUUl9FUlIoY3MpOwogCi0J KmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSg0KTsKKwkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9j bWQocnEtPmVuZ2luZSwgNCk7CiAJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewotCQkqY3MrKyA9 IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjdfU09fV1JJVEVfT0ZGU0VUKGkpKTsKKwkJKmNzKysg PSBpOTE1X2dldF9scmlfcmVnKHJxLT5lbmdpbmUsIEdFTjdfU09fV1JJVEVfT0ZGU0VUKGkpKTsK IAkJKmNzKysgPSAwOwogCX0KIAkqY3MrKyA9IE1JX05PT1A7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVy Zi5jCmluZGV4IDM5YTQ4MDQwOTFkNy4uMTBkNWFiOTkxOTA4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmYuYwpAQCAtMTYyOCw3ICsxNjI4LDggQEAgc3RhdGljIHZvaWQgaHN3X2Rpc2FibGVfbWV0 cmljX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAgKiBpbiB0aGUgY2Fz ZSB0aGF0IHRoZSBPQSB1bml0IGhhcyBiZWVuIGRpc2FibGVkLgogICovCiBzdGF0aWMgdm9pZAot Z2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwK K2dlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCisJCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQkJICAgICAgIHUz MiAqcmVnX3N0YXRlLAogCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2Ff Y29uZmlnKQogewpAQCAtMTY0Nyw3ICsxNjQ4LDEyIEBAIGdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91 bmxvY2tlZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJfTsKIAlpbnQgaTsKIAotCUNUWF9S RUcocmVnX3N0YXRlLCBjdHhfb2FjdHhjdHJsLCBHRU44X09BQ1RYQ09OVFJPTCwKKwkvKgorCSAq IE5COiBUaGUgTFJJIGluc3RydWN0aW9uIGlzIGdlbmVyYXRlZCBieSB0aGUgaGFyZHdhcmUuCisJ ICogU2hvdWxkIHdlIHJlYWQgaXQgaW4gYW5kIGFzc2VydCB0aGF0IHRoZSBvZmZzZXQgZmxhZyBp cyBzZXQ/CisJICovCisKKwlDVFhfUkVHKGVuZ2luZSwgcmVnX3N0YXRlLCBjdHhfb2FjdHhjdHJs LCBHRU44X09BQ1RYQ09OVFJPTCwKIAkJKGk5MTUtPnBlcmYub2EucGVyaW9kX2V4cG9uZW50IDw8 IEdFTjhfT0FfVElNRVJfUEVSSU9EX1NISUZUKSB8CiAJCShpOTE1LT5wZXJmLm9hLnBlcmlvZGlj ID8gR0VOOF9PQV9USU1FUl9FTkFCTEUgOiAwKSB8CiAJCUdFTjhfT0FfQ09VTlRFUl9SRVNVTUUp OwpAQCAtMTY3NCwxMCArMTY4MCwxMCBAQCBnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQo c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQkJfQogCQl9CiAKLQkJQ1RYX1JFRyhyZWdfc3Rh dGUsIHN0YXRlX29mZnNldCwgZmxleF9yZWdzW2ldLCB2YWx1ZSk7CisJCUNUWF9SRUcoZW5naW5l LCByZWdfc3RhdGUsIHN0YXRlX29mZnNldCwgZmxleF9yZWdzW2ldLCB2YWx1ZSk7CiAJfQogCi0J Q1RYX1JFRyhyZWdfc3RhdGUsCisJQ1RYX1JFRyhlbmdpbmUsIHJlZ19zdGF0ZSwKIAkJQ1RYX1Jf UFdSX0NMS19TVEFURSwgR0VOOF9SX1BXUl9DTEtfU1RBVEUsCiAJCWdlbjhfbWFrZV9ycGNzKGk5 MTUsICZjZS0+c3NldSkpOwogfQpAQCAtMTc1Miw3ICsxNzU4LDcgQEAgc3RhdGljIGludCBnZW44 X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCQljZS0+c3RhdGUtPm9iai0+bW0uZGlydHkgPSB0cnVlOwogCQlyZWdzICs9IExSQ19TVEFU RV9QTiAqIFBBR0VfU0laRSAvIHNpemVvZigqcmVncyk7CiAKLQkJZ2VuOF91cGRhdGVfcmVnX3N0 YXRlX3VubG9ja2VkKGNlLCByZWdzLCBvYV9jb25maWcpOworCQlnZW44X3VwZGF0ZV9yZWdfc3Rh dGVfdW5sb2NrZWQoZW5naW5lLCBjZSwgcmVncywgb2FfY29uZmlnKTsKIAogCQlpOTE1X2dlbV9v YmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+b2JqKTsKIAl9CkBAIC0yMTQ2LDcgKzIxNTIsOCBA QCB2b2lkIGk5MTVfb2FfaW5pdF9yZWdfc3RhdGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAogCiAJc3RyZWFtID0gZW5naW5lLT5pOTE1LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW07 CiAJaWYgKHN0cmVhbSkKLQkJZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKGNlLCByZWdz LCBzdHJlYW0tPm9hX2NvbmZpZyk7CisJCWdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChl bmdpbmUsIGNlLCByZWdzLAorCQkJCQkgICAgICAgc3RyZWFtLT5vYV9jb25maWcpOwogfQogCiAv KioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggZDA0MjdjMmUzOTk3 Li4wYjU1ODBiMTlkM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Vu Z2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBA IC0yNDYsNiArMjQ2LDE3IEBAIHN0YXRpYyB1MzIgX19lbmdpbmVfbW1pb19iYXNlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAogCXJldHVybiBiYXNlc1tpXS5iYXNlOwogfQogCitib29s IGk5MTVfZW5naW5lX2hhc19yZWxhdGl2ZV9scmkoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQoreworCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDExKQorCQlyZXR1 cm4gZmFsc2U7CisKKwlpZiAoZW5naW5lLT5pZCA9PSBCQ1MwKQorCQlyZXR1cm4gZmFsc2U7CisK KwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIHZvaWQgX19zcHJpbnRfZW5naW5lX25hbWUoY2hh ciAqbmFtZSwgY29uc3Qgc3RydWN0IGVuZ2luZV9pbmZvICppbmZvKQogewogCVdBUk5fT04oc25w cmludGYobmFtZSwgSU5URUxfRU5HSU5FX0NTX01BWF9OQU1FLCAiJXMldSIsCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ncHVfY29tbWFuZHMuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2dwdV9jb21tYW5kcy5oCmluZGV4IGEzNGVjZTUzYTc3MS4uOTdjMmNm ZDFkMzhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ncHVfY29tbWFu ZHMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ncHVfY29tbWFuZHMuaApAQCAt MTIzLDkgKzEyMywxMyBAQAogICogICBzaW1wbHkgaWdub3JlcyB0aGUgcmVnaXN0ZXIgbG9hZCB1 bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuCiAgKiAtIE9uZSBjYW4gYWN0dWFsbHkgbG9hZCBhcmJp dHJhcnkgbWFueSBhcmJpdHJhcnkgcmVnaXN0ZXJzOiBTaW1wbHkgaXNzdWUgeAogICogICBhZGRy ZXNzL3ZhbHVlIHBhaXJzLiBEb24ndCBvdmVyZHVlIGl0LCB0aG91Z2gsIHggPD0gMl40IG11c3Qg aG9sZCEKKyAqIC0gTmV3ZXIgaGFyZHdhcmUgc3VwcG9ydHMgZW5naW5lIHJlbGF0aXZlIGFkZHJl c3NlcyBidXQgb2xkZXIgaGFyZHdhcmUgZG9lcworICogICBub3QuIFNvIG5ldmVyIGNhbGwgTUlf TFJJIGRpcmVjdGx5LCBhbHdheXMgdXNlIHRoZSBpOTE1X2dldF9scmlfY21kKCkKKyAqICAgYW5k IGk5MTVfZ2V0X2xyaV9yZWcoKSBoZWxwZXIgZnVuY3Rpb25zLgogICovCi0jZGVmaW5lIE1JX0xP QURfUkVHSVNURVJfSU1NKHgpCU1JX0lOU1RSKDB4MjIsIDIqKHgpLTEpCisjZGVmaW5lIF9fTUlf TE9BRF9SRUdJU1RFUl9JTU0oeCkJTUlfSU5TVFIoMHgyMiwgMiooeCktMSkKICNkZWZpbmUgICBN SV9MUklfRk9SQ0VfUE9TVEVECQkoMTw8MTIpCisjZGVmaW5lICAgTUlfTFJJX0FERF9DU19NTUlP X1NUQVJUCSgxPDwxOSkKICNkZWZpbmUgTUlfU1RPUkVfUkVHSVNURVJfTUVNICAgICAgICBNSV9J TlNUUigweDI0LCAxKQogI2RlZmluZSBNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOOCAgIE1JX0lO U1RSKDB4MjQsIDIpCiAjZGVmaW5lICAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUCQkoMTw8MjIpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGJlYzIzMmFjYzhkNy4uYjY1OGY5ZDc3ZDI1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMTQ0OCwxMyArMTQ0OCwxNCBAQCBzdGF0aWMg aW50IGVtaXRfcGRwcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAkJcmV0dXJuIFBUUl9FUlIo Y3MpOwogCiAJLyogRW5zdXJlIHRoZSBMUkkgaGF2ZSBsYW5kZWQgYmVmb3JlIHdlIGludmFsaWRh dGUgJiBjb250aW51ZSAqLwotCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMiAqIEdFTjhf M0xWTF9QRFBFUykgfCBNSV9MUklfRk9SQ0VfUE9TVEVEOworCSpjcysrID0gaTkxNV9nZXRfbHJp X2NtZChlbmdpbmUsIDIgKiBHRU44XzNMVkxfUERQRVMpIHwKKwkJCQkgTUlfTFJJX0ZPUkNFX1BP U1RFRDsKIAlmb3IgKGkgPSBHRU44XzNMVkxfUERQRVM7IGktLTsgKSB7CiAJCWNvbnN0IGRtYV9h ZGRyX3QgcGRfZGFkZHIgPSBpOTE1X3BhZ2VfZGlyX2RtYV9hZGRyKHBwZ3R0LCBpKTsKIAotCQkq Y3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgaSkp OworCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcoZW5naW5lLCBHRU44X1JJTkdfUERQX1VEVyhl bmdpbmUsIGkpKTsKIAkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKTsKLQkJKmNzKysg PSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKKwkJ KmNzKysgPSBpOTE1X2dldF9scmlfcmVnKGVuZ2luZSwgR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5l LCBpKSk7CiAJCSpjcysrID0gbG93ZXJfMzJfYml0cyhwZF9kYWRkcik7CiAJfQogCSpjcysrID0g TUlfTk9PUDsKQEAgLTE1MjgsOCArMTUyOSw4IEBAIGdlbjhfZW1pdF9mbHVzaF9jb2hlcmVudGwz X3dhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyICpiYXRjaCkKIAkqYmF0Y2gr KyA9IGk5MTVfc2NyYXRjaF9vZmZzZXQoZW5naW5lLT5pOTE1KSArIDI1NjsKIAkqYmF0Y2grKyA9 IDA7CiAKLQkqYmF0Y2grKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOwotCSpiYXRjaCsrID0g aTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9MM1NRQ1JFRzQpOworCSpiYXRjaCsrID0gaTkxNV9n ZXRfbHJpX2NtZChlbmdpbmUsIDEpOworCSpiYXRjaCsrID0gaTkxNV9nZXRfbHJpX3JlZyhlbmdp bmUsIEdFTjhfTDNTUUNSRUc0KTsKIAkqYmF0Y2grKyA9IDB4NDA0MDAwMDAgfCBHRU44X0xRU0Nf RkxVU0hfQ09IRVJFTlRfTElORVM7CiAKIAliYXRjaCA9IGdlbjhfZW1pdF9waXBlX2NvbnRyb2wo YmF0Y2gsCkBAIC0xNTk5LDEzICsxNjAwLDE0IEBAIHN0cnVjdCBscmkgewogCXUzMiB2YWx1ZTsK IH07CiAKLXN0YXRpYyB1MzIgKmVtaXRfbHJpKHUzMiAqYmF0Y2gsIGNvbnN0IHN0cnVjdCBscmkg KmxyaSwgdW5zaWduZWQgaW50IGNvdW50KQorc3RhdGljIHUzMiAqZW1pdF9scmkoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgKmJhdGNoLAorCQkgICAgIGNvbnN0IHN0cnVjdCBs cmkgKmxyaSwgdW5zaWduZWQgaW50IGNvdW50KQogewogCUdFTV9CVUdfT04oIWNvdW50IHx8IGNv dW50ID4gNjMpOwogCi0JKmJhdGNoKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShjb3VudCk7CisJ KmJhdGNoKysgPSBpOTE1X2dldF9scmlfY21kKGVuZ2luZSwgY291bnQpOwogCWRvIHsKLQkJKmJh dGNoKysgPSBpOTE1X21taW9fcmVnX29mZnNldChscmktPnJlZyk7CisJCSpiYXRjaCsrID0gaTkx NV9nZXRfbHJpX3JlZyhlbmdpbmUsIGxyaS0+cmVnKTsKIAkJKmJhdGNoKysgPSBscmktPnZhbHVl OwogCX0gd2hpbGUgKGxyaSsrLCAtLWNvdW50KTsKIAkqYmF0Y2grKyA9IE1JX05PT1A7CkBAIC0x NjQzLDcgKzE2NDUsNyBAQCBzdGF0aWMgdTMyICpnZW45X2luaXRfaW5kaXJlY3RjdHhfYmIoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgKmJhdGNoKQogCS8qIFdhRmx1c2hDb2hl cmVudEwzQ2FjaGVMaW5lc0F0Q29udGV4dFN3aXRjaDpza2wsYnh0LGdsayAqLwogCWJhdGNoID0g Z2VuOF9lbWl0X2ZsdXNoX2NvaGVyZW50bDNfd2EoZW5naW5lLCBiYXRjaCk7CiAKLQliYXRjaCA9 IGVtaXRfbHJpKGJhdGNoLCBscmksIEFSUkFZX1NJWkUobHJpKSk7CisJYmF0Y2ggPSBlbWl0X2xy aShlbmdpbmUsIGJhdGNoLCBscmksIEFSUkFZX1NJWkUobHJpKSk7CiAKIAkvKiBXYU1lZGlhUG9v bFN0YXRlQ21kSW5XQUJCOmJ4dCxnbGsgKi8KIAlpZiAoSEFTX1BPT0xFRF9FVShlbmdpbmUtPmk5 MTUpKSB7CkBAIC0yNjU1LDEwICsyNjU3LDEwIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19pbml0 X3JlZ19zdGF0ZSh1MzIgKnJlZ3MsCiAJICogdmFsdWVzIChpbmNsdWRpbmcgYWxsIHRoZSBtaXNz aW5nIE1JX0xPQURfUkVHSVNURVJfSU1NIGNvbW1hbmRzIHRoYXQKIAkgKiB3ZSBhcmUgbm90IGlu aXRpYWxpemluZyBoZXJlKS4KIAkgKi8KLQlyZWdzW0NUWF9MUklfSEVBREVSXzBdID0gTUlfTE9B RF9SRUdJU1RFUl9JTU0ocmNzID8gMTQgOiAxMSkgfAotCQkJCSBNSV9MUklfRk9SQ0VfUE9TVEVE OworCXJlZ3NbQ1RYX0xSSV9IRUFERVJfMF0gPSBpOTE1X2dldF9scmlfY21kKGVuZ2luZSwgcmNz ID8gMTQgOiAxMSkgfAorCQkJCQkJICBNSV9MUklfRk9SQ0VfUE9TVEVEOwogCi0JQ1RYX1JFRyhy ZWdzLCBDVFhfQ09OVEVYVF9DT05UUk9MLCBSSU5HX0NPTlRFWFRfQ09OVFJPTChiYXNlKSwKKwlD VFhfUkVHKGVuZ2luZSwgcmVncywgQ1RYX0NPTlRFWFRfQ09OVFJPTCwgUklOR19DT05URVhUX0NP TlRST0woYmFzZSksCiAJCV9NQVNLRURfQklUX0RJU0FCTEUoQ1RYX0NUUkxfRU5HSU5FX0NUWF9S RVNUT1JFX0lOSElCSVQpIHwKIAkJX01BU0tFRF9CSVRfRU5BQkxFKENUWF9DVFJMX0lOSElCSVRf U1lOX0NUWF9TV0lUQ0gpKTsKIAlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCAxMSkgewpA QCAtMjY2NiwyMiArMjY2OCwyMyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5pdF9yZWdfc3Rh dGUodTMyICpyZWdzLAogCQkJX01BU0tFRF9CSVRfRElTQUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RY X1NBVkVfSU5ISUJJVCB8CiAJCQkJCSAgICBDVFhfQ1RSTF9SU19DVFhfRU5BQkxFKTsKIAl9Ci0J Q1RYX1JFRyhyZWdzLCBDVFhfUklOR19IRUFELCBSSU5HX0hFQUQoYmFzZSksIDApOwotCUNUWF9S RUcocmVncywgQ1RYX1JJTkdfVEFJTCwgUklOR19UQUlMKGJhc2UpLCAwKTsKLQlDVFhfUkVHKHJl Z3MsIENUWF9SSU5HX0JVRkZFUl9TVEFSVCwgUklOR19TVEFSVChiYXNlKSwgMCk7Ci0JQ1RYX1JF RyhyZWdzLCBDVFhfUklOR19CVUZGRVJfQ09OVFJPTCwgUklOR19DVEwoYmFzZSksCisJQ1RYX1JF RyhlbmdpbmUsIHJlZ3MsIENUWF9SSU5HX0hFQUQsIFJJTkdfSEVBRChiYXNlKSwgMCk7CisJQ1RY X1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9SSU5HX1RBSUwsIFJJTkdfVEFJTChiYXNlKSwgMCk7CisJ Q1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9SSU5HX0JVRkZFUl9TVEFSVCwgUklOR19TVEFSVChi YXNlKSwgMCk7CisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9SSU5HX0JVRkZFUl9DT05UUk9M LCBSSU5HX0NUTChiYXNlKSwKIAkJUklOR19DVExfU0laRShyaW5nLT5zaXplKSB8IFJJTkdfVkFM SUQpOwotCUNUWF9SRUcocmVncywgQ1RYX0JCX0hFQURfVSwgUklOR19CQkFERFJfVURXKGJhc2Up LCAwKTsKLQlDVFhfUkVHKHJlZ3MsIENUWF9CQl9IRUFEX0wsIFJJTkdfQkJBRERSKGJhc2UpLCAw KTsKLQlDVFhfUkVHKHJlZ3MsIENUWF9CQl9TVEFURSwgUklOR19CQlNUQVRFKGJhc2UpLCBSSU5H X0JCX1BQR1RUKTsKLQlDVFhfUkVHKHJlZ3MsIENUWF9TRUNPTkRfQkJfSEVBRF9VLCBSSU5HX1NC QkFERFJfVURXKGJhc2UpLCAwKTsKLQlDVFhfUkVHKHJlZ3MsIENUWF9TRUNPTkRfQkJfSEVBRF9M LCBSSU5HX1NCQkFERFIoYmFzZSksIDApOwotCUNUWF9SRUcocmVncywgQ1RYX1NFQ09ORF9CQl9T VEFURSwgUklOR19TQkJTVEFURShiYXNlKSwgMCk7CisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENU WF9CQl9IRUFEX1UsIFJJTkdfQkJBRERSX1VEVyhiYXNlKSwgMCk7CisJQ1RYX1JFRyhlbmdpbmUs IHJlZ3MsIENUWF9CQl9IRUFEX0wsIFJJTkdfQkJBRERSKGJhc2UpLCAwKTsKKwlDVFhfUkVHKGVu Z2luZSwgcmVncywgQ1RYX0JCX1NUQVRFLCBSSU5HX0JCU1RBVEUoYmFzZSksIFJJTkdfQkJfUFBH VFQpOworCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfU0VDT05EX0JCX0hFQURfVSwgUklOR19T QkJBRERSX1VEVyhiYXNlKSwgMCk7CisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9TRUNPTkRf QkJfSEVBRF9MLCBSSU5HX1NCQkFERFIoYmFzZSksIDApOworCUNUWF9SRUcoZW5naW5lLCByZWdz LCBDVFhfU0VDT05EX0JCX1NUQVRFLCBSSU5HX1NCQlNUQVRFKGJhc2UpLCAwKTsKIAlpZiAocmNz KSB7CiAJCXN0cnVjdCBpOTE1X2N0eF93b3JrYXJvdW5kcyAqd2FfY3R4ID0gJmVuZ2luZS0+d2Ff Y3R4OwogCi0JCUNUWF9SRUcocmVncywgQ1RYX1JDU19JTkRJUkVDVF9DVFgsIFJJTkdfSU5ESVJF Q1RfQ1RYKGJhc2UpLCAwKTsKLQkJQ1RYX1JFRyhyZWdzLCBDVFhfUkNTX0lORElSRUNUX0NUWF9P RkZTRVQsCisJCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUkNTX0lORElSRUNUX0NUWCwKKwkJ CVJJTkdfSU5ESVJFQ1RfQ1RYKGJhc2UpLCAwKTsKKwkJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENU WF9SQ1NfSU5ESVJFQ1RfQ1RYX09GRlNFVCwKIAkJCVJJTkdfSU5ESVJFQ1RfQ1RYX09GRlNFVChi YXNlKSwgMCk7CiAJCWlmICh3YV9jdHgtPmluZGlyZWN0X2N0eC5zaXplKSB7CiAJCQl1MzIgZ2d0 dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHdhX2N0eC0+dm1hKTsKQEAgLTI2OTQsNyArMjY5 Nyw4IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZSh1MzIgKnJlZ3MsCiAJ CQkJaW50ZWxfbHJfaW5kaXJlY3RfY3R4X29mZnNldChlbmdpbmUpIDw8IDY7CiAJCX0KIAotCQlD VFhfUkVHKHJlZ3MsIENUWF9CQl9QRVJfQ1RYX1BUUiwgUklOR19CQl9QRVJfQ1RYX1BUUihiYXNl KSwgMCk7CisJCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfQkJfUEVSX0NUWF9QVFIsCisJCQlS SU5HX0JCX1BFUl9DVFhfUFRSKGJhc2UpLCAwKTsKIAkJaWYgKHdhX2N0eC0+cGVyX2N0eC5zaXpl KSB7CiAJCQl1MzIgZ2d0dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHdhX2N0eC0+dm1hKTsK IApAQCAtMjcwMywxOCArMjcwNywxOSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5pdF9yZWdf c3RhdGUodTMyICpyZWdzLAogCQl9CiAJfQogCi0JcmVnc1tDVFhfTFJJX0hFQURFUl8xXSA9IE1J X0xPQURfUkVHSVNURVJfSU1NKDkpIHwgTUlfTFJJX0ZPUkNFX1BPU1RFRDsKKwlyZWdzW0NUWF9M UklfSEVBREVSXzFdID0gaTkxNV9nZXRfbHJpX2NtZChlbmdpbmUsIDkpIHwKKwkJCQkJCSAgTUlf TFJJX0ZPUkNFX1BPU1RFRDsKIAotCUNUWF9SRUcocmVncywgQ1RYX0NUWF9USU1FU1RBTVAsIFJJ TkdfQ1RYX1RJTUVTVEFNUChiYXNlKSwgMCk7CisJQ1RYX1JFRyhlbmdpbmUsIHJlZ3MsIENUWF9D VFhfVElNRVNUQU1QLCBSSU5HX0NUWF9USU1FU1RBTVAoYmFzZSksIDApOwogCS8qIFBEUCB2YWx1 ZXMgd2VsbCBiZSBhc3NpZ25lZCBsYXRlciBpZiBuZWVkZWQgKi8KLQlDVFhfUkVHKHJlZ3MsIENU WF9QRFAzX1VEVywgR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCAzKSwgMCk7Ci0JQ1RYX1JFRyhy ZWdzLCBDVFhfUERQM19MRFcsIEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgMyksIDApOwotCUNU WF9SRUcocmVncywgQ1RYX1BEUDJfVURXLCBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIDIpLCAw KTsKLQlDVFhfUkVHKHJlZ3MsIENUWF9QRFAyX0xEVywgR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5l LCAyKSwgMCk7Ci0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQMV9VRFcsIEdFTjhfUklOR19QRFBfVURX KGVuZ2luZSwgMSksIDApOwotCUNUWF9SRUcocmVncywgQ1RYX1BEUDFfTERXLCBHRU44X1JJTkdf UERQX0xEVyhlbmdpbmUsIDEpLCAwKTsKLQlDVFhfUkVHKHJlZ3MsIENUWF9QRFAwX1VEVywgR0VO OF9SSU5HX1BEUF9VRFcoZW5naW5lLCAwKSwgMCk7Ci0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQMF9M RFcsIEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgMCksIDApOworCUNUWF9SRUcoZW5naW5lLCBy ZWdzLCBDVFhfUERQM19VRFcsIEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgMyksIDApOworCUNU WF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUERQM19MRFcsIEdFTjhfUklOR19QRFBfTERXKGVuZ2lu ZSwgMyksIDApOworCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUERQMl9VRFcsIEdFTjhfUklO R19QRFBfVURXKGVuZ2luZSwgMiksIDApOworCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUERQ Ml9MRFcsIEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgMiksIDApOworCUNUWF9SRUcoZW5naW5l LCByZWdzLCBDVFhfUERQMV9VRFcsIEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgMSksIDApOwor CUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUERQMV9MRFcsIEdFTjhfUklOR19QRFBfTERXKGVu Z2luZSwgMSksIDApOworCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhfUERQMF9VRFcsIEdFTjhf UklOR19QRFBfVURXKGVuZ2luZSwgMCksIDApOworCUNUWF9SRUcoZW5naW5lLCByZWdzLCBDVFhf UERQMF9MRFcsIEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgMCksIDApOwogCiAJaWYgKGk5MTVf dm1faXNfNGx2bCgmcHBndHQtPnZtKSkgewogCQkvKiA2NGIgUFBHVFQgKDQ4Yml0IGNhbm9uaWNh bCkKQEAgLTI3MzAsOCArMjczNSw5IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19pbml0X3JlZ19z dGF0ZSh1MzIgKnJlZ3MsCiAJfQogCiAJaWYgKHJjcykgewotCQlyZWdzW0NUWF9MUklfSEVBREVS XzJdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Ci0JCUNUWF9SRUcocmVncywgQ1RYX1JfUFdS X0NMS19TVEFURSwgR0VOOF9SX1BXUl9DTEtfU1RBVEUsIDApOworCQlyZWdzW0NUWF9MUklfSEVB REVSXzJdID0gaTkxNV9nZXRfbHJpX2NtZChlbmdpbmUsIDEpOworCQlDVFhfUkVHKGVuZ2luZSwg cmVncywgQ1RYX1JfUFdSX0NMS19TVEFURSwKKwkJCUdFTjhfUl9QV1JfQ0xLX1NUQVRFLCAwKTsK IAogCQlpOTE1X29hX2luaXRfcmVnX3N0YXRlKGVuZ2luZSwgY2UsIHJlZ3MpOwogCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyY19yZWcuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyY19yZWcuaAppbmRleCA1ZWY5MzJkODEwYTcuLjQwYjExNDJkMGQ3 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjX3JlZy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyY19yZWcuaApAQCAtMzksMTAgKzM5LDEwIEBA CiAjZGVmaW5lIENUWF9SX1BXUl9DTEtfU1RBVEUJCTB4NDIKICNkZWZpbmUgQ1RYX0VORAkJCQkw eDQ0CiAKLSNkZWZpbmUgQ1RYX1JFRyhyZWdfc3RhdGUsIHBvcywgcmVnLCB2YWwpIGRvIHsgXAor I2RlZmluZSBDVFhfUkVHKGVuZ2luZSwgcmVnX3N0YXRlLCBwb3MsIHJlZywgdmFsKSBkbyB7IFwK IAl1MzIgKnJlZ19zdGF0ZV9fID0gKHJlZ19zdGF0ZSk7IFwKIAljb25zdCB1MzIgcG9zX18gPSAo cG9zKTsgXAotCShyZWdfc3RhdGVfXylbKHBvc19fKSArIDBdID0gaTkxNV9tbWlvX3JlZ19vZmZz ZXQocmVnKTsgXAorCShyZWdfc3RhdGVfXylbKHBvc19fKSArIDBdID0gaTkxNV9nZXRfbHJpX3Jl ZygoZW5naW5lKSwgKHJlZykpOyBcCiAJKHJlZ19zdGF0ZV9fKVsocG9zX18pICsgMV0gPSAodmFs KTsgXAogfSB3aGlsZSAoMCkKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCmluZGV4IDI3NGJh Nzg1MDBjMC4uYmIxMWQwZjY4YmJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9tb2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCkBAIC0z MjIsOSArMzIyLDYgQEAgc3RhdGljIHUzMiBnZXRfZW50cnlfY29udHJvbChjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfbW9jc190YWJsZSAqdGFibGUsCiAvKioKICAqIGludGVsX21vY3NfaW5pdF9lbmdp bmUoKSAtIGVtaXQgdGhlIG1vY3MgY29udHJvbCB0YWJsZQogICogQGVuZ2luZToJVGhlIGVuZ2lu ZSBmb3Igd2hvbSB0byBlbWl0IHRoZSByZWdpc3RlcnMuCi0gKgotICogVGhpcyBmdW5jdGlvbiBz aW1wbHkgZW1pdHMgYSBNSV9MT0FEX1JFR0lTVEVSX0lNTSBjb21tYW5kIGZvciB0aGUKLSAqIGdp dmVuIHRhYmxlIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBhZGRyZXNzLgogICovCiB2b2lkIGludGVs X21vY3NfaW5pdF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewpAQCAt Mzc4LDE4ICszNzUsMjAgQEAgc3RhdGljIGludCBlbWl0X21vY3NfY29udHJvbF90YWJsZShzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAlpZiAoSVNfRVJSKGNzKSkKIAkJcmV0dXJuIFBUUl9FUlIo Y3MpOwogCi0JKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSh0YWJsZS0+bl9lbnRyaWVzKTsK KwkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9jbWQocnEtPmVuZ2luZSwgdGFibGUtPm5fZW50cmllcyk7 CiAKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCB0YWJsZS0+c2l6ZTsgaW5kZXgrKykgewogCQl1 MzIgdmFsdWUgPSBnZXRfZW50cnlfY29udHJvbCh0YWJsZSwgaW5kZXgpOwogCi0JCSpjcysrID0g aTkxNV9tbWlvX3JlZ19vZmZzZXQobW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7CisJCSpj cysrID0gaTkxNV9nZXRfbHJpX3JlZyhycS0+ZW5naW5lLAorCQkJCQkgbW9jc19yZWdpc3Rlcihl bmdpbmUsIGluZGV4KSk7CiAJCSpjcysrID0gdmFsdWU7CiAJfQogCiAJLyogQWxsIHJlbWFpbmlu ZyBlbnRyaWVzIGFyZSBhbHNvIHVudXNlZCAqLwogCWZvciAoOyBpbmRleCA8IHRhYmxlLT5uX2Vu dHJpZXM7IGluZGV4KyspIHsKLQkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChtb2NzX3Jl Z2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKKwkJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKHJxLT5l bmdpbmUsCisJCQkJCSBtb2NzX3JlZ2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKIAkJKmNzKysgPSB1 bnVzZWRfdmFsdWU7CiAJfQogCkBAIC00NDcsNyArNDQ2LDExIEBAIHN0YXRpYyBpbnQgZW1pdF9t b2NzX2wzY2NfdGFibGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJaWYgKElTX0VSUihjcykp CiAJCXJldHVybiBQVFJfRVJSKGNzKTsKIAotCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0o dGFibGUtPm5fZW50cmllcyAvIDIpOworCS8qCisJICogR0VOOV9MTkNGQ01PQ1MgaXMgbm90IGVu Z2luZSByZWxhdGl2ZSwgdGhlcmVmb3JlIHRoZXJlIGlzIG5vCisJICogbmVlZCBmb3IgcmVsYXRp dmUgYWRkcmVzc2luZz8KKwkgKi8KKwkqY3MrKyA9IF9fTUlfTE9BRF9SRUdJU1RFUl9JTU0odGFi bGUtPm5fZW50cmllcyAvIDIpOwogCiAJZm9yIChpID0gMDsgaSA8IHRhYmxlLT5zaXplIC8gMjsg aSsrKSB7CiAJCXUxNiBsb3cgPSBnZXRfZW50cnlfbDNjYyh0YWJsZSwgMiAqIGkpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IDhhMTllZWU5YzVkNC4uZjJhNDEw YzQ4YzdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC0xNjAx LDEyICsxNjAxLDEzIEBAIHN0YXRpYyBpbnQgbG9hZF9wZF9kaXIoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsCiAJaWYgKElTX0VSUihjcykpCiAJCXJldHVybiBQVFJfRVJSKGNzKTsKIAotCSpjcysr ID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Ci0JKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNl dChSSU5HX1BQX0RJUl9EQ0xWKGVuZ2luZS0+bW1pb19iYXNlKSk7CisJLyogQ2FuIHRoZXNlIG5v dCBiZSBtZXJnZWQgaW50byBhIHNpbmdsZSBMUkk/Pz8gKi8KKwkqY3MrKyA9IGk5MTVfZ2V0X2xy aV9jbWQoZW5naW5lLCAxKTsKKwkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9yZWcoZW5naW5lLCBSSU5H X1BQX0RJUl9EQ0xWKGVuZ2luZS0+bW1pb19iYXNlKSk7CiAJKmNzKysgPSBQUF9ESVJfRENMVl8y RzsKIAotCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Ci0JKmNzKysgPSBpOTE1X21t aW9fcmVnX29mZnNldChSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZS0+bW1pb19iYXNlKSk7CisJKmNz KysgPSBpOTE1X2dldF9scmlfY21kKGVuZ2luZSwgMSk7CisJKmNzKysgPSBpOTE1X2dldF9scmlf cmVnKGVuZ2luZSwgUklOR19QUF9ESVJfQkFTRShlbmdpbmUtPm1taW9fYmFzZSkpOwogCSpjcysr ID0gcHBndHQtPnBkLmJhc2UuZ2d0dF9vZmZzZXQgPDwgMTA7CiAKIAlpbnRlbF9yaW5nX2FkdmFu Y2UocnEsIGNzKTsKQEAgLTE2NzEsNyArMTY3MiwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBtaV9z ZXRfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIGZsYWdzKQogCQlpZiAobnVt X2VuZ2luZXMpIHsKIAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKIAotCQkJ KmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fZW5naW5lcyk7CisJCQkvKgorCQkJICog TXVzdCB1c2UgYWJzb2x1dGUgZW5naW5lIGFkZHJlc3MgYXMgdGhlIHJlZ2lzdGVyCisJCQkgKiB3 cml0ZSBpcyB0YXJnZXRpbmcgYSBkaWZmZXJlbnQgZW5naW5lLgorCQkJICovCisJCQkqY3MrKyA9 IF9fTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX2VuZ2luZXMpOwogCQkJZm9yX2VhY2hfZW5naW5l KHNpZ25hbGxlciwgaTkxNSwgaWQpIHsKIAkJCQlpZiAoc2lnbmFsbGVyID09IGVuZ2luZSkKIAkJ CQkJY29udGludWU7CkBAIC0xNzE3LDcgKzE3MjIsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgbWlf c2V0X2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBmbGFncykKIAkJCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKIAkJCWk5MTVfcmVnX3QgbGFzdF9yZWcgPSB7 fTsgLyoga2VlcCBnY2MgcXVpZXQgKi8KIAotCQkJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lN TShudW1fZW5naW5lcyk7CisJCQkvKgorCQkJICogTXVzdCB1c2UgYWJzb2x1dGUgZW5naW5lIGFk ZHJlc3MgYXMgdGhlIHJlZ2lzdGVyCisJCQkgKiB3cml0ZSBpcyB0YXJnZXRpbmcgYSBkaWZmZXJl bnQgZW5naW5lLgorCQkJICovCisJCQkqY3MrKyA9IF9fTUlfTE9BRF9SRUdJU1RFUl9JTU0obnVt X2VuZ2luZXMpOwogCQkJZm9yX2VhY2hfZW5naW5lKHNpZ25hbGxlciwgaTkxNSwgaWQpIHsKIAkJ CQlpZiAoc2lnbmFsbGVyID09IGVuZ2luZSkKIAkJCQkJY29udGludWU7CkBAIC0xNzU5LDkgKzE3 NjgsOSBAQCBzdGF0aWMgaW50IHJlbWFwX2wzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQg c2xpY2UpCiAJICogaGVyZSBiZWNhdXNlIG5vIG90aGVyIGNvZGUgc2hvdWxkIGFjY2VzcyB0aGVz ZSByZWdpc3RlcnMgb3RoZXIgdGhhbgogCSAqIGF0IGluaXRpYWxpemF0aW9uIHRpbWUuCiAJICov Ci0JKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9HX1NJWkUvNCk7CisJKmNz KysgPSBpOTE1X2dldF9scmlfY21kKHJxLT5lbmdpbmUsIEdFTjdfTDNMT0dfU0laRS80KTsKIAlm b3IgKGkgPSAwOyBpIDwgR0VON19MM0xPR19TSVpFLzQ7IGkrKykgewotCQkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEdFTjdfTDNMT0coc2xpY2UsIGkpKTsKKwkJKmNzKysgPSBpOTE1X2dl dF9scmlfcmVnKHJxLT5lbmdpbmUsIEdFTjdfTDNMT0coc2xpY2UsIGkpKTsKIAkJKmNzKysgPSBy ZW1hcF9pbmZvW2ldOwogCX0KIAkqY3MrKyA9IE1JX05PT1A7CkBAIC0yMzQ2LDMgKzIzNTUsMjMg QEAgaW50IGludGVsX2luaXRfdmVib3hfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogCiAJcmV0dXJuIGludGVsX2luaXRfcmluZ19idWZmZXIoZW5naW5lKTsKIH0K KwordTMyIGk5MTVfZ2V0X2xyaV9jbWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCB1MzIgd29yZF9jb3VudCkKK3sKKwl1MzIgd29yZDsKKworCXdvcmQgPSBfX01JX0xPQURf UkVHSVNURVJfSU1NKHdvcmRfY291bnQpOworCisJaWYgKGk5MTVfZW5naW5lX2hhc19yZWxhdGl2 ZV9scmkoZW5naW5lKSkKKwkJd29yZCB8PSBNSV9MUklfQUREX0NTX01NSU9fU1RBUlQ7CisKKwly ZXR1cm4gd29yZDsKK30KKwordTMyIGk5MTVfZ2V0X2xyaV9yZWcoY29uc3Qgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBpOTE1X3JlZ190IHJlZykKK3sKKwlpZiAoIWk5MTVfZW5naW5l X2hhc19yZWxhdGl2ZV9scmkoZW5naW5lKSkKKwkJcmV0dXJuIGk5MTVfbW1pb19yZWdfb2Zmc2V0 KHJlZyk7CisKKwlyZXR1cm4gaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSAtIGVuZ2luZS0+bW1p b19iYXNlOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IGU1 OGQ2ZjA0MTc3Yi4uOGY4OWNjMTRiM2UwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCkBAIC01ODEsNCArNTgxLDggQEAgaW50ZWxfZW5naW5lX2dldF9oYW5nY2hlY2tf c2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiBpbnRlbF9yZWFk X3N0YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX0hBTkdDSEVDSyk7CiB9CiAKK2Jvb2wg aTkxNV9lbmdpbmVfaGFzX3JlbGF0aXZlX2xyaShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwordTMyIGk5MTVfZ2V0X2xyaV9jbWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCB1MzIgd29yZF9jb3VudCk7Cit1MzIgaTkxNV9nZXRfbHJpX3JlZyhjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGk5MTVfcmVnX3QgcmVnKTsKKwogI2Vu ZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVSX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf d29ya2Fyb3VuZHMuYwppbmRleCBhMDRkYmM1OGVjMWMuLjBiNmM4MWY1ZTY1YyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jCkBAIC02MTQsOSArNjE0LDkgQEAgaW50 IGludGVsX2VuZ2luZV9lbWl0X2N0eF93YShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlpZiAo SVNfRVJSKGNzKSkKIAkJcmV0dXJuIFBUUl9FUlIoY3MpOwogCi0JKmNzKysgPSBNSV9MT0FEX1JF R0lTVEVSX0lNTSh3YWwtPmNvdW50KTsKKwkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9jbWQocnEtPmVu Z2luZSwgd2FsLT5jb3VudCk7CiAJZm9yIChpID0gMCwgd2EgPSB3YWwtPmxpc3Q7IGkgPCB3YWwt PmNvdW50OyBpKyssIHdhKyspIHsKLQkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldCh3YS0+ cmVnKTsKKwkJKmNzKysgPSBpOTE1X2dldF9scmlfcmVnKHJxLT5lbmdpbmUsIHdhLT5yZWcpOwog CQkqY3MrKyA9IHdhLT52YWw7CiAJfQogCSpjcysrID0gTUlfTk9PUDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMKaW5kZXggM2JhZWQ1 OTAwOGQ3Li4zNGVmNGEzZDU4YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jCkBAIC00ODcsNiArNDg3LDcgQEAgc3RhdGljIGlu dCBjaGVja19kaXJ0eV93aGl0ZWxpc3Qoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAog CWZvciAoaSA9IDA7IGkgPCBlbmdpbmUtPndoaXRlbGlzdC5jb3VudDsgaSsrKSB7CiAJCXUzMiBy ZWcgPSBpOTE1X21taW9fcmVnX29mZnNldChlbmdpbmUtPndoaXRlbGlzdC5saXN0W2ldLnJlZyk7 CisJCXUzMiByZWdMUkkgPSBpOTE1X2dldF9scmlfcmVnKGVuZ2luZSwgZW5naW5lLT53aGl0ZWxp c3QubGlzdFtpXS5yZWcpOwogCQl1NjQgYWRkciA9IHNjcmF0Y2gtPm5vZGUuc3RhcnQ7CiAJCXN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCQl1MzIgc3JtLCBscm0sIHJzdmQ7CkBAIC01MTksOCAr NTIwLDggQEAgc3RhdGljIGludCBjaGVja19kaXJ0eV93aGl0ZWxpc3Qoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwKIAkJaWR4ID0gMTsKIAkJZm9yICh2ID0gMDsgdiA8IEFSUkFZX1NJWkUo dmFsdWVzKTsgdisrKSB7CiAJCQkvKiBMUkkgZ2FyYmFnZSAqLwotCQkJKmNzKysgPSBNSV9MT0FE X1JFR0lTVEVSX0lNTSgxKTsKLQkJCSpjcysrID0gcmVnOworCQkJKmNzKysgPSBpOTE1X2dldF9s cmlfY21kKGVuZ2luZSwgMSk7CisJCQkqY3MrKyA9IHJlZ0xSSTsKIAkJCSpjcysrID0gdmFsdWVz W3ZdOwogCiAJCQkvKiBTUk0gcmVzdWx0ICovCkBAIC01MzIsOCArNTMzLDggQEAgc3RhdGljIGlu dCBjaGVja19kaXJ0eV93aGl0ZWxpc3Qoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJ fQogCQlmb3IgKHYgPSAwOyB2IDwgQVJSQVlfU0laRSh2YWx1ZXMpOyB2KyspIHsKIAkJCS8qIExS SSBnYXJiYWdlICovCi0JCQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOwotCQkJKmNz KysgPSByZWc7CisJCQkqY3MrKyA9IGk5MTVfZ2V0X2xyaV9jbWQoZW5naW5lLCAxKTsKKwkJCSpj cysrID0gcmVnTFJJOwogCQkJKmNzKysgPSB+dmFsdWVzW3ZdOwogCiAJCQkvKiBTUk0gcmVzdWx0 ICovCi0tIAoyLjIxLjAuNS5nYWViNTgyYTk4MwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4