From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [PATCH 1/2] drm/i915: Engine relative MMIO Date: Mon, 23 Sep 2019 16:51:51 -0700 Message-ID: <20190923235152.35979-2-John.C.Harrison@Intel.com> References: <20190923235152.35979-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 B972C6E9B8 for ; Mon, 23 Sep 2019 23:51:53 +0000 (UTC) In-Reply-To: <20190923235152.35979-1-John.C.Harrison@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 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 Cgp2NjogQ2hhbmdlIHRvIE1JX0xSSSBmb3IgZ2VuZXJpYyBjb2RlIGFuZCBfX01JX0xSSSBmb3Ig bGVnYWN5IGNvZGUuCk1JX0xSSSBpcyBub3cgYSBtYWNybyB3cmFwcGVyIGFyb3VuZCBhbiBlbmdp bmUgZnVuY3Rpb24gcG9pbnRlciB0bwpyZWR1Y2UgcnVudGltZSBjaGVja3Mgb24gTFJJIHJlbGF0 aXZlIHN1cHBvcnQuIFtyZXZpZXcgZmVlZGJhY2sgZnJvbQpUdnJ0a29dCgp2NzogUmVwbGFjZSBl bmdpbmUgZnVuY3Rpb24gcG9pbnRlciB3aXRoIGEgcGVyIGVuZ2luZSBmbGFncyBmaWVsZCB0aGF0 CmlzIGFkZGVkIGJ5IGEgY29tbW9uIGZ1bmN0aW9uLiBbRGFuaWVsZV0KCnY4OiBSZS13cml0ZSBv biB0b3Agb2YgcGF0Y2ggc2VyaWVzIGJ5IE1pa2EuCgp2OTogRml4IHdvcmthcm91bmQgSUdUIGZh aWx1cmUuIE5vdCBzdXJlIHdoeSBidXQgbXkgbG9jYWwgdGVzdCBydW5zCndlcmUgcGFzc2luZyBi eSBjbGFpbWluZyBubyB3b3JrYXJvdW5kcyB3aGVyZWFzIHRoZSBwcmUtY29tbWl0IGNoZWNrCmZh aWxlZC4gQXMgYWxsIHRoZSB3b3JrYXJvdW5kIHJlZ2lzdGVycyBhcmUgY3VycmVudGx5IGVuZ2lu ZQppbmRlcGVuZGVudCwgaXQgaXMgc2FmZSB0byBzaW1wbHkgbm90IGFkZCB0aGUgZW5naW5lIHJl bGF0aXZlIGZsYWcKKHdoaWNoIGlzIHdoYXQgdGhlIHNlbGZ0ZXN0IHdhcyBleHBlY3RpbmcpLgoK QnNwZWM6IDQ1NjA2ClNpZ25lZC1vZmYtYnk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNv bkBJbnRlbC5jb20+CkNDOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+CkND OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDQzogQ2hyaXMgUCBX aWxzb24gPGNocmlzLnAud2lsc29uQGludGVsLmNvbT4KQ0M6IERhbmllbGUgQ2VyYW9sbyBTcHVy aW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyAgfCAgNyArKy0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICB8IDI0ICsrKysrKysrKysrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggfCAgMyArKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmggfCAgNyArKystCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICB8IDQwICsrKysrKysrKystLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgICAgICAgICB8ICA2ICstLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jICAgfCAxMiArKystLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jICAgICAgICAgICAgIHwgIDggKysrLQog OCBmaWxlcyBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCA0YTM0YzRmNjIw NjUuLmM4ZDcwNzVhNDgxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f Y29udGV4dC5jCkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIGludCBlbWl0X3BwZ3R0X3VwZGF0 ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSA9IHJxLT5od19jb250ZXh0LT52bTsKIAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSBycS0+ZW5naW5lOwotCXUzMiBiYXNlID0gZW5naW5lLT5tbWlvX2Jh c2U7CisJdTMyIGJhc2UgPSBlbmdpbmUtPmxyaV9tbWlvX2Jhc2U7CiAJdTMyICpjczsKIAlpbnQg aTsKIApAQCAtOTkyLDcgKzk5Miw3IEBAIHN0YXRpYyBpbnQgZW1pdF9wcGd0dF91cGRhdGUoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsIHZvaWQgKmRhdGEpCiAJCWlmIChJU19FUlIoY3MpKQogCQkJ cmV0dXJuIFBUUl9FUlIoY3MpOwogCi0JCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMik7 CisJCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMikgfCBlbmdpbmUtPmxyaV9jbWRfbW9k ZTsKIAogCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGJh c2UsIDApKTsKIAkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKTsKQEAgLTEwMTQsNyAr MTAxNCw4IEBAIHN0YXRpYyBpbnQgZW1pdF9wcGd0dF91cGRhdGUoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsIHZvaWQgKmRhdGEpCiAJCWlmIChJU19FUlIoY3MpKQogCQkJcmV0dXJuIFBUUl9FUlIo Y3MpOwogCi0JCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMiAqIEdFTjhfM0xWTF9QRFBF UykgfCBNSV9MUklfRk9SQ0VfUE9TVEVEOworCQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1N KDIgKiBHRU44XzNMVkxfUERQRVMpIHwKKwkJCU1JX0xSSV9GT1JDRV9QT1NURUQgfCBlbmdpbmUt PmxyaV9jbWRfbW9kZTsKIAkJZm9yIChpID0gR0VOOF8zTFZMX1BEUEVTOyBpLS07ICkgewogCQkJ Y29uc3QgZG1hX2FkZHJfdCBwZF9kYWRkciA9IGk5MTVfcGFnZV9kaXJfZG1hX2FkZHIocHBndHQs IGkpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf Y3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IGY0 NTFkNTA3NmJkZS4uNWFhNThlMDY5ODA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfY3MuYwpAQCAtMjM2LDYgKzIzNiwyOCBAQCBzdGF0aWMgdTMyIF9fZW5naW5lX21t aW9fYmFzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlyZXR1cm4gYmFzZXNbaV0u YmFzZTsKIH0KIAorc3RhdGljIGJvb2wgaTkxNV9lbmdpbmVfaGFzX3JlbGF0aXZlX2xyaShjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJaWYgKElOVEVMX0dFTihlbmdp bmUtPmk5MTUpIDwgMTEpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChlbmdpbmUtPmNsYXNzID09 IENPUFlfRU5HSU5FX0NMQVNTKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30K Kworc3RhdGljIHZvaWQgbHJpX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQor eworCWlmIChpOTE1X2VuZ2luZV9oYXNfcmVsYXRpdmVfbHJpKGVuZ2luZSkpIHsKKwkJZW5naW5l LT5scmlfY21kX21vZGUgPSBNSV9MUklfQUREX0NTX01NSU9fU1RBUlRfR0VOMTE7CisJCWVuZ2lu ZS0+bHJpX21taW9fYmFzZSA9IDA7CisJfSBlbHNlIHsKKwkJZW5naW5lLT5scmlfY21kX21vZGUg PSAwOworCQllbmdpbmUtPmxyaV9tbWlvX2Jhc2UgPSBlbmdpbmUtPm1taW9fYmFzZTsKKwl9Cit9 CisKIHN0YXRpYyB2b2lkIF9fc3ByaW50X2VuZ2luZV9uYW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKIAkvKgpAQCAtMzIwLDYgKzM0Miw4IEBAIHN0YXRpYyBpbnQgaW50ZWxf ZW5naW5lX3NldHVwKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGVudW0gaW50ZWxfZW5naW5lX2lkIGlk KQogCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSwgZXhlY3V0ZSBpbiBvcmRlciBvZiBkZXBlbmRlbmNp ZXMgKi8KIAllbmdpbmUtPnNjaGVkdWxlID0gTlVMTDsKIAorCWxyaV9pbml0KGVuZ2luZSk7CisK IAlzZXFsb2NrX2luaXQoJmVuZ2luZS0+c3RhdHMubG9jayk7CiAKIAlBVE9NSUNfSU5JVF9OT1RJ RklFUl9IRUFEKCZlbmdpbmUtPmNvbnRleHRfc3RhdHVzX25vdGlmaWVyKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKaW5kZXggOTQzZjA2NjM4MzdlLi4z OGY0ODZmN2Y3ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90 eXBlcy5oCkBAIC0zMDYsNiArMzA2LDkgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJdTMy IGNvbnRleHRfc2l6ZTsKIAl1MzIgbW1pb19iYXNlOwogCisJdTMyIGxyaV9tbWlvX2Jhc2U7CisJ dTMyIGxyaV9jbWRfbW9kZTsKKwogCXUzMiB1YWJpX2NhcGFiaWxpdGllczsKIAogCXN0cnVjdCBy Yl9ub2RlIHVhYmlfbm9kZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2dwdV9jb21tYW5kcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2Nv bW1hbmRzLmgKaW5kZXggZjc4YjEzZDc0ZTE3Li5iZmI1MWQ4ZDdjZTIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9jb21tYW5kcy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9jb21tYW5kcy5oCkBAIC0xMzMsMTEgKzEzMywxNiBA QAogICogICBzaW1wbHkgaWdub3JlcyB0aGUgcmVnaXN0ZXIgbG9hZCB1bmRlciBjZXJ0YWluIGNv bmRpdGlvbnMuCiAgKiAtIE9uZSBjYW4gYWN0dWFsbHkgbG9hZCBhcmJpdHJhcnkgbWFueSBhcmJp dHJhcnkgcmVnaXN0ZXJzOiBTaW1wbHkgaXNzdWUgeAogICogICBhZGRyZXNzL3ZhbHVlIHBhaXJz LiBEb24ndCBvdmVyZHVlIGl0LCB0aG91Z2gsIHggPD0gMl40IG11c3QgaG9sZCEKKyAqIC0gTmV3 ZXIgaGFyZHdhcmUgc3VwcG9ydHMgZW5naW5lIHJlbGF0aXZlIGFkZHJlc3NpbmcgYnV0IG9sZGVy IGhhcmR3YXJlIGRvZXMKKyAqICAgbm90LiBUaGlzIGlzIHJlcXVpcmVkIGZvciBodyBlbmdpbmUg bG9hZCBiYWxhbmNpbmcuIEhlbmNlIHRoZSBNSV9MUkkKKyAqICAgaW5zdHJ1Y3Rpb24gaXRzZWxm IGlzIHByZWZpeGVkIHdpdGggJ19fJyBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBvbgorICogICBs ZWdhY3kgaGFyZHdhcmUgY29kZSBwYXRocy4gR2VuZXJpYyBjb2RlIG11c3QgYWx3YXlzIHVzZSB0 aGUgTUlfTFJJCisgKiAgIGFuZCBpOTE1X2dldF9scmlfcmVnKCkgaGVscGVyIGZ1bmN0aW9ucyBp bnN0ZWFkLgogICovCiAjZGVmaW5lIE1JX0xPQURfUkVHSVNURVJfSU1NKHgpCU1JX0lOU1RSKDB4 MjIsIDIqKHgpLTEpCiAvKiBHZW4xMSsuIGFkZHIgPSBiYXNlICsgKGN0eF9yZXN0b3JlID8gb2Zm c2V0ICYgR0VOTUFTSygxMiwyKSA6IG9mZnNldCkgKi8KLSNkZWZpbmUgICBNSV9MUklfQ1NfTU1J TwkJKDE8PDE5KQogI2RlZmluZSAgIE1JX0xSSV9GT1JDRV9QT1NURUQJCSgxPDwxMikKKyNkZWZp bmUgICBNSV9MUklfQUREX0NTX01NSU9fU1RBUlRfR0VOMTEJQklUKDE5KQogI2RlZmluZSBNSV9T VE9SRV9SRUdJU1RFUl9NRU0gICAgICAgIE1JX0lOU1RSKDB4MjQsIDEpCiAjZGVmaW5lIE1JX1NU T1JFX1JFR0lTVEVSX01FTV9HRU44ICAgTUlfSU5TVFIoMHgyNCwgMikKICNkZWZpbmUgICBNSV9T Uk1fTFJNX0dMT0JBTF9HVFQJCSgxPDwyMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMK aW5kZXggNmNmZGMwZjlmMmI5Li43Y2Q1OWQyOWM0ZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2xyYy5jCkBAIC0yMDEwLDExICsyMDEwLDEyIEBAIHN0cnVjdCBscmkgewogCXUzMiB2YWx1 ZTsKIH07CiAKLXN0YXRpYyB1MzIgKmVtaXRfbHJpKHUzMiAqYmF0Y2gsIGNvbnN0IHN0cnVjdCBs cmkgKmxyaSwgdW5zaWduZWQgaW50IGNvdW50KQorc3RhdGljIHUzMiAqZW1pdF9scmkoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgKmJhdGNoLAorCQkgICAgIGNvbnN0IHN0cnVj dCBscmkgKmxyaSwgdW5zaWduZWQgaW50IGNvdW50KQogewogCUdFTV9CVUdfT04oIWNvdW50IHx8 IGNvdW50ID4gNjMpOwogCi0JKmJhdGNoKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShjb3VudCk7 CisJKmJhdGNoKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShjb3VudCkgfCBlbmdpbmUtPmxyaV9j bWRfbW9kZTsKIAlkbyB7CiAJCSpiYXRjaCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQobHJpLT5y ZWcpOwogCQkqYmF0Y2grKyA9IGxyaS0+dmFsdWU7CkBAIC0yMDU0LDcgKzIwNTUsNyBAQCBzdGF0 aWMgdTMyICpnZW45X2luaXRfaW5kaXJlY3RjdHhfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCB1MzIgKmJhdGNoKQogCS8qIFdhRmx1c2hDb2hlcmVudEwzQ2FjaGVMaW5lc0F0Q29u dGV4dFN3aXRjaDpza2wsYnh0LGdsayAqLwogCWJhdGNoID0gZ2VuOF9lbWl0X2ZsdXNoX2NvaGVy ZW50bDNfd2EoZW5naW5lLCBiYXRjaCk7CiAKLQliYXRjaCA9IGVtaXRfbHJpKGJhdGNoLCBscmks IEFSUkFZX1NJWkUobHJpKSk7CisJYmF0Y2ggPSBlbWl0X2xyaShlbmdpbmUsIGJhdGNoLCBscmks IEFSUkFZX1NJWkUobHJpKSk7CiAKIAkvKiBXYU1lZGlhUG9vbFN0YXRlQ21kSW5XQUJCOmJ4dCxn bGsgKi8KIAlpZiAoSEFTX1BPT0xFRF9FVShlbmdpbmUtPmk5MTUpKSB7CkBAIC0zMjgyLDcgKzMy ODMsNyBAQCBzdGF0aWMgdm9pZCBpbml0X2NvbW1vbl9yZWdfc3RhdGUodTMyICogY29uc3QgcmVn cywKIAkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgIHN0cnVjdCBp bnRlbF9yaW5nICpyaW5nKQogewotCWNvbnN0IHUzMiBiYXNlID0gZW5naW5lLT5tbWlvX2Jhc2U7 CisJY29uc3QgdTMyIGJhc2UgPSBlbmdpbmUtPmxyaV9tbWlvX2Jhc2U7CiAKIAlDVFhfUkVHKHJl Z3MsIENUWF9DT05URVhUX0NPTlRST0wsIFJJTkdfQ09OVEVYVF9DT05UUk9MKGJhc2UpLAogCQlf TUFTS0VEX0JJVF9ESVNBQkxFKENUWF9DVFJMX0VOR0lORV9DVFhfUkVTVE9SRV9JTkhJQklUKSB8 CkBAIC0zMzA3LDcgKzMzMDgsNyBAQCBzdGF0aWMgdm9pZCBpbml0X3dhX2JiX3JlZ19zdGF0ZSh1 MzIgKiBjb25zdCByZWdzLAogCQkJCSB1MzIgcG9zX2JiX3Blcl9jdHgpCiB7CiAJc3RydWN0IGk5 MTVfY3R4X3dvcmthcm91bmRzICogY29uc3Qgd2FfY3R4ID0gJmVuZ2luZS0+d2FfY3R4OwotCWNv bnN0IHUzMiBiYXNlID0gZW5naW5lLT5tbWlvX2Jhc2U7CisJY29uc3QgdTMyIGJhc2UgPSBlbmdp bmUtPmxyaV9tbWlvX2Jhc2U7CiAJY29uc3QgdTMyIHBvc19pbmRpcmVjdF9jdHggPSBwb3NfYmJf cGVyX2N0eCArIDI7CiAJY29uc3QgdTMyIHBvc19pbmRpcmVjdF9jdHhfb2Zmc2V0ID0gcG9zX2lu ZGlyZWN0X2N0eCArIDI7CiAKQEAgLTMzMzUsNiArMzMzNiw3IEBAIHN0YXRpYyB2b2lkIGluaXRf d2FfYmJfcmVnX3N0YXRlKHUzMiAqIGNvbnN0IHJlZ3MsCiB9CiAKIHN0YXRpYyB2b2lkIGluaXRf cHBndHRfcmVnX3N0YXRlKHUzMiAqcmVncywgdTMyIGJhc2UsCisJCQkJIHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgc3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0KQogewogCS8q IFBEUCB2YWx1ZXMgd2VsbCBiZSBhc3NpZ25lZCBsYXRlciBpZiBuZWVkZWQgKi8KQEAgLTMzNzYs MTQgKzMzNzgsMTIgQEAgc3RhdGljIHZvaWQgZ2VuOF9pbml0X3JlZ19zdGF0ZSh1MzIgKiBjb25z dCByZWdzLAogewogCXN0cnVjdCBpOTE1X3BwZ3R0ICogY29uc3QgcHBndHQgPSB2bV9hbGlhcyhj ZS0+dm0pOwogCWNvbnN0IGJvb2wgcmNzID0gZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1M7 Ci0JY29uc3QgdTMyIGJhc2UgPSBlbmdpbmUtPm1taW9fYmFzZTsKLQljb25zdCB1MzIgbHJpX2Jh c2UgPQotCQlpbnRlbF9lbmdpbmVfaGFzX3JlbGF0aXZlX21taW8oZW5naW5lKSA/IE1JX0xSSV9D U19NTUlPIDogMDsKKwljb25zdCB1MzIgYmFzZSA9IGVuZ2luZS0+bHJpX21taW9fYmFzZTsKIAog CXJlZ3NbQ1RYX0xSSV9IRUFERVJfMF0gPQogCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShyY3MgPyAx NCA6IDExKSB8CiAJCU1JX0xSSV9GT1JDRV9QT1NURUQgfAotCQlscmlfYmFzZTsKKwkJZW5naW5l LT5scmlfY21kX21vZGU7CiAKIAlpbml0X2NvbW1vbl9yZWdfc3RhdGUocmVncywgcHBndHQsIGVu Z2luZSwgcmluZyk7CiAJQ1RYX1JFRyhyZWdzLCBDVFhfU0VDT05EX0JCX0hFQURfVSwgUklOR19T QkJBRERSX1VEVyhiYXNlKSwgMCk7CkBAIC0zMzk1LDE1ICszMzk1LDE3IEBAIHN0YXRpYyB2b2lk IGdlbjhfaW5pdF9yZWdfc3RhdGUodTMyICogY29uc3QgcmVncywKIAlyZWdzW0NUWF9MUklfSEVB REVSXzFdID0KIAkJTUlfTE9BRF9SRUdJU1RFUl9JTU0oOSkgfAogCQlNSV9MUklfRk9SQ0VfUE9T VEVEIHwKLQkJbHJpX2Jhc2U7CisJCWVuZ2luZS0+bHJpX2NtZF9tb2RlOwogCiAJQ1RYX1JFRyhy ZWdzLCBDVFhfQ1RYX1RJTUVTVEFNUCwgUklOR19DVFhfVElNRVNUQU1QKGJhc2UpLCAwKTsKIAot CWluaXRfcHBndHRfcmVnX3N0YXRlKHJlZ3MsIGJhc2UsIHBwZ3R0KTsKKwlpbml0X3BwZ3R0X3Jl Z19zdGF0ZShyZWdzLCBiYXNlLCBlbmdpbmUsIHBwZ3R0KTsKIAogCWlmIChyY3MpIHsKLQkJcmVn c1tDVFhfTFJJX0hFQURFUl8yXSA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpIHwgbHJpX2Jhc2U7 Ci0JCUNUWF9SRUcocmVncywgQ1RYX1JfUFdSX0NMS19TVEFURSwgR0VOOF9SX1BXUl9DTEtfU1RB VEUsIDApOworCQlyZWdzW0NUWF9MUklfSEVBREVSXzJdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0o MSkgfAorCQkJCQkgZW5naW5lLT5scmlfY21kX21vZGU7CisJCUNUWF9SRUcocmVncywgQ1RYX1Jf UFdSX0NMS19TVEFURSwKKwkJCUdFTjhfUl9QV1JfQ0xLX1NUQVRFLCAwKTsKIAl9CiAKIAlyZWdz W0NUWF9FTkRdID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKQEAgLTM0MTgsMTQgKzM0MjAsMTIgQEAg c3RhdGljIHZvaWQgZ2VuMTJfaW5pdF9yZWdfc3RhdGUodTMyICogY29uc3QgcmVncywKIHsKIAlz dHJ1Y3QgaTkxNV9wcGd0dCAqIGNvbnN0IHBwZ3R0ID0gaTkxNV92bV90b19wcGd0dChjZS0+dm0p OwogCWNvbnN0IGJvb2wgcmNzID0gZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1M7Ci0JY29u c3QgdTMyIGJhc2UgPSBlbmdpbmUtPm1taW9fYmFzZTsKLQljb25zdCB1MzIgbHJpX2Jhc2UgPQot CQlpbnRlbF9lbmdpbmVfaGFzX3JlbGF0aXZlX21taW8oZW5naW5lKSA/IE1JX0xSSV9DU19NTUlP IDogMDsKKwljb25zdCB1MzIgYmFzZSA9IGVuZ2luZS0+bHJpX21taW9fYmFzZTsKIAogCXJlZ3Nb Q1RYX0xSSV9IRUFERVJfMF0gPQogCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShyY3MgPyAxMSA6IDkp IHwKIAkJTUlfTFJJX0ZPUkNFX1BPU1RFRCB8Ci0JCWxyaV9iYXNlOworCQllbmdpbmUtPmxyaV9j bWRfbW9kZTsKIAogCWluaXRfY29tbW9uX3JlZ19zdGF0ZShyZWdzLCBwcGd0dCwgZW5naW5lLCBy aW5nKTsKIApAQCAtMzQzNSwxNSArMzQzNSwxNSBAQCBzdGF0aWMgdm9pZCBnZW4xMl9pbml0X3Jl Z19zdGF0ZSh1MzIgKiBjb25zdCByZWdzLAogCXJlZ3NbQ1RYX0xSSV9IRUFERVJfMV0gPQogCQlN SV9MT0FEX1JFR0lTVEVSX0lNTSg5KSB8CiAJCU1JX0xSSV9GT1JDRV9QT1NURUQgfAotCQlscmlf YmFzZTsKKwkJZW5naW5lLT5scmlfY21kX21vZGU7CiAKIAlDVFhfUkVHKHJlZ3MsIENUWF9DVFhf VElNRVNUQU1QLCBSSU5HX0NUWF9USU1FU1RBTVAoYmFzZSksIDApOwogCi0JaW5pdF9wcGd0dF9y ZWdfc3RhdGUocmVncywgYmFzZSwgcHBndHQpOworCWluaXRfcHBndHRfcmVnX3N0YXRlKHJlZ3Ms IGJhc2UsIGVuZ2luZSwgcHBndHQpOwogCiAJaWYgKHJjcykgewogCQlyZWdzW0dFTjEyX0NUWF9M UklfSEVBREVSXzNdID0KLQkJCU1JX0xPQURfUkVHSVNURVJfSU1NKDEpIHwgbHJpX2Jhc2U7CisJ CQlNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSB8IGVuZ2luZS0+bHJpX2NtZF9tb2RlOwogCQlDVFhf UkVHKHJlZ3MsIENUWF9SX1BXUl9DTEtfU1RBVEUsIEdFTjhfUl9QV1JfQ0xLX1NUQVRFLCAwKTsK IAogCQkvKiBUT0RPOiBvYV9pbml0X3JlZ19zdGF0ZSA/ICovCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9tb2NzLmMKaW5kZXggNzI4NzA0YmJiZTE4Li44ZThmZTNkZWI5NWMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMKQEAgLTM2OCw5ICszNjgsNiBAQCBzdGF0aWMgdTMyIGdl dF9lbnRyeV9jb250cm9sKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSwK IC8qKgogICogaW50ZWxfbW9jc19pbml0X2VuZ2luZSgpIC0gZW1pdCB0aGUgbW9jcyBjb250cm9s IHRhYmxlCiAgKiBAZW5naW5lOglUaGUgZW5naW5lIGZvciB3aG9tIHRvIGVtaXQgdGhlIHJlZ2lz dGVycy4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHNpbXBseSBlbWl0cyBhIE1JX0xPQURfUkVHSVNU RVJfSU1NIGNvbW1hbmQgZm9yIHRoZQotICogZ2l2ZW4gdGFibGUgc3RhcnRpbmcgYXQgdGhlIGdp dmVuIGFkZHJlc3MuCiAgKi8KIHZvaWQgaW50ZWxfbW9jc19pbml0X2VuZ2luZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CkBAIC00NTYsNyArNDUzLDggQEAgc3RhdGljIGludCBl bWl0X21vY3NfY29udHJvbF90YWJsZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAlpZiAoSVNf RVJSKGNzKSkKIAkJcmV0dXJuIFBUUl9FUlIoY3MpOwogCi0JKmNzKysgPSBNSV9MT0FEX1JFR0lT VEVSX0lNTSh0YWJsZS0+bl9lbnRyaWVzKTsKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1N KHRhYmxlLT5uX2VudHJpZXMpIHwKKwkJcnEtPmVuZ2luZS0+bHJpX2NtZF9tb2RlOwogCiAJZm9y IChpbmRleCA9IDA7IGluZGV4IDwgdGFibGUtPnNpemU7IGluZGV4KyspIHsKIAkJdTMyIHZhbHVl ID0gZ2V0X2VudHJ5X2NvbnRyb2wodGFibGUsIGluZGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3JpbmdidWZmZXIuYwppbmRleCAwNzQ3YjhjOWY3NjguLjcwMjczNjdiMWYxYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtMTUzNiwx MiArMTUzNiwxMyBAQCBzdGF0aWMgaW50IGxvYWRfcGRfZGlyKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxLCBjb25zdCBzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQpCiAJaWYgKElTX0VSUihjcykpCiAJ CXJldHVybiBQVFJfRVJSKGNzKTsKIAotCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7 Ci0JKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX1BQX0RJUl9EQ0xWKGVuZ2luZS0+ bW1pb19iYXNlKSk7CisJLyogQ2FuIHRoZXNlIG5vdCBiZSBtZXJnZWQgaW50byBhIHNpbmdsZSBM Ukk/Pz8gKi8KKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpIHwgZW5naW5lLT5scmlf Y21kX21vZGU7CisJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX1BQX0RJUl9EQ0xW KGVuZ2luZS0+bHJpX21taW9fYmFzZSkpOwogCSpjcysrID0gUFBfRElSX0RDTFZfMkc7CiAKLQkq Y3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpOwotCSpjcysrID0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQoUklOR19QUF9ESVJfQkFTRShlbmdpbmUtPm1taW9fYmFzZSkpOworCSpjcysrID0gTUlf TE9BRF9SRUdJU1RFUl9JTU0oMSkgfCBlbmdpbmUtPmxyaV9jbWRfbW9kZTsKKwkqY3MrKyA9IGk5 MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfUFBfRElSX0JBU0UoZW5naW5lLT5scmlfbW1pb19iYXNl KSk7CiAJKmNzKysgPSBweF9iYXNlKHBwZ3R0LT5wZCktPmdndHRfb2Zmc2V0IDw8IDEwOwogCiAJ aW50ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7CkBAIC0xNzA5LDcgKzE3MTAsOCBAQCBzdGF0aWMg aW50IHJlbWFwX2wzX3NsaWNlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgc2xpY2UpCiAJ ICogaGVyZSBiZWNhdXNlIG5vIG90aGVyIGNvZGUgc2hvdWxkIGFjY2VzcyB0aGVzZSByZWdpc3Rl cnMgb3RoZXIgdGhhbgogCSAqIGF0IGluaXRpYWxpemF0aW9uIHRpbWUuCiAJICovCi0JKmNzKysg PSBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9HX1NJWkUvNCk7CisJKmNzKysgPSBNSV9M T0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9HX1NJWkUgLyA0KSB8CisJCXJxLT5lbmdpbmUtPmxy aV9jbWRfbW9kZTsKIAlmb3IgKGkgPSAwOyBpIDwgR0VON19MM0xPR19TSVpFLzQ7IGkrKykgewog CQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjdfTDNMT0coc2xpY2UsIGkpKTsKIAkJ KmNzKysgPSByZW1hcF9pbmZvW2ldOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwppbmRleCBjMWI3 NjQyMzM3NjEuLjhiODVjZGZhZGEyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKQEAgLTE2 OTMsNiArMTY5MywxMSBAQCBnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAl9OwogCWludCBpOwogCisJLyoKKwkgKiBOQjogVGhl IExSSSBpbnN0cnVjdGlvbiBpcyBnZW5lcmF0ZWQgYnkgdGhlIGhhcmR3YXJlLgorCSAqIFNob3Vs ZCB3ZSByZWFkIGl0IGluIGFuZCBhc3NlcnQgdGhhdCB0aGUgb2Zmc2V0IGZsYWcgaXMgc2V0Pwor CSAqLworCiAJQ1RYX1JFRyhyZWdfc3RhdGUsIGN0eF9vYWN0eGN0cmwsIEdFTjhfT0FDVFhDT05U Uk9MLAogCQkoc3RyZWFtLT5wZXJpb2RfZXhwb25lbnQgPDwgR0VOOF9PQV9USU1FUl9QRVJJT0Rf U0hJRlQpIHwKIAkJKHN0cmVhbS0+cGVyaW9kaWMgPyBHRU44X09BX1RJTUVSX0VOQUJMRSA6IDAp IHwKQEAgLTE3NTIsOCArMTc1Nyw5IEBAIGdlbjhfbG9hZF9mbGV4KHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLAogCWlmIChJU19FUlIoY3MpKQogCQlyZXR1cm4gUFRSX0VSUihjcyk7CiAKLQkqY3Mr KyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKGNvdW50KTsKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNU RVJfSU1NKGNvdW50KSB8IHJxLT5lbmdpbmUtPmxyaV9jbWRfbW9kZTsKIAlkbyB7CisJCS8qIEZJ WE1FOiBJcyB0aGlzIHRhYmxlIExSSSByZW1hcC9vZmZzZXQgZnJpZW5kbHk/ICovCiAJCSpjcysr ID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoZmxleC0+cmVnKTsKIAkJKmNzKysgPSBmbGV4LT52YWx1 ZTsKIAl9IHdoaWxlIChmbGV4KyssIC0tY291bnQpOwotLSAKMi4yMS4wLjUuZ2FlYjU4MmE5ODMK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==