From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 25/32] drm/i915: Allow a context to define its set of engines Date: Wed, 17 Apr 2019 08:56:50 +0100 Message-ID: <20190417075657.19456-25-chris@chris-wilson.co.uk> References: <20190417075657.19456-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3AA036E026 for ; Wed, 17 Apr 2019 08:14:58 +0000 (UTC) In-Reply-To: <20190417075657.19456-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3ZlciB0aGUgbGFzdCBmZXcgeWVhcnMsIHdlIGhhdmUgZGViYXRlZCBob3cgdG8gZXh0ZW5kIHRo ZSB1c2VyIEFQSSB0bwpzdXBwb3J0IGFuIGluY3JlYXNlIGluIHRoZSBudW1iZXIgb2YgZW5naW5l cywgdGhhdCBtYXkgYmUgc3BhcnNlIGFuZApldmVuIGJlIGhldGVyb2dlbmVvdXMgd2l0aGluIGEg Y2xhc3MgKG5vdCBhbGwgdmlkZW8gZGVjb2RlcnMgY3JlYXRlZAplcXVhbCkuIFdlIHNldHRsZWQg b24gdXNpbmcgKGNsYXNzLCBpbnN0YW5jZSkgdHVwbGVzIHRvIGlkZW50aWZ5IGEKc3BlY2lmaWMg ZW5naW5lLCB3aXRoIGFuIEFQSSBmb3IgdGhlIHVzZXIgdG8gY29uc3RydWN0IGEgbWFwIG9mIGVu Z2luZXMKdG8gY2FwYWJpbGl0aWVzLiBJbnRvIHRoaXMgcGljdHVyZSwgd2UgdGhlbiBhZGQgYSBj aGFsbGVuZ2Ugb2YgdmlydHVhbAplbmdpbmVzOyBvbmUgdXNlciBlbmdpbmUgdGhhdCBtYXBzIGJl aGluZCB0aGUgc2NlbmVzIHRvIGFueSBudW1iZXIgb2YKcGh5c2ljYWwgZW5naW5lcy4gVG8ga2Vl cCBpdCBnZW5lcmFsLCB3ZSB3YW50IHRoZSB1c2VyIHRvIGhhdmUgZnVsbApjb250cm9sIG92ZXIg dGhhdCBtYXBwaW5nLiBUbyB0aGF0IGVuZCwgd2UgYWxsb3cgdGhlIHVzZXIgdG8gY29uc3RyYWlu IGEKY29udGV4dCB0byBkZWZpbmUgdGhlIHNldCBvZiBlbmdpbmVzIHRoYXQgaXQgY2FuIGFjY2Vz cywgb3JkZXIgZnVsbHkKY29udHJvbGxlZCBieSB0aGUgdXNlciB2aWEgKGNsYXNzLCBpbnN0YW5j ZSkuIFdpdGggc3VjaCBwcmVjaXNlIGNvbnRyb2wKaW4gY29udGV4dCBzZXR1cCwgd2UgY2FuIGNv bnRpbnVlIHRvIHVzZSB0aGUgZXhpc3RpbmcgZXhlY2J1ZiB1QUJJIG9mCnNwZWNpZnlpbmcgYSBz aW5nbGUgaW5kZXg7IG9ubHkgbm93IGl0IGRvZXNuJ3QgYXV0b21hZ2ljYWxseSBtYXAgb250bwp0 aGUgZW5naW5lcywgaXQgdXNlcyB0aGUgdXNlciBkZWZpbmVkIGVuZ2luZSBtYXAgZnJvbSB0aGUg Y29udGV4dC4KClRoZSBJOTE1X0VYRUNfREVGQVVMVCBzbG90IGlzIGxlZnQgZW1wdHksIGFuZCBp bnZhbGlkIGZvciB1c2UgYnkKZXhlY2J1Zi4gSXQncyB1c2Ugd2lsbCBiZSByZXZlYWxlZCBpbiB0 aGUgbmV4dCBwYXRjaC4KCnYyOiBGaXh1cCBmcmVlaW5nIG9mIGxvY2FsIG9uIHN1Y2Nlc3Mgb2Yg Z2V0X2VuZ2luZXMoKQp2MzogQWxsb3cgZW1wdHkgZW5naW5lc1tdCnY0OiBzL25lbmdpbmUvbnVt X2VuZ2luZXMvCnY1OiBSZXBsYWNlIDY0IGxpbWl0IG9uIG51bV9lbmdpbmVzIHdpdGggYSBub3Rl IHRoYXQgZXhlY2J1ZiBpcwpjdXJyZW50bHkgbGltaXRlZCB0byBvbmx5IHVzaW5nIHRoZSBmaXJz dCA2NCBlbmdpbmVzLgp2NjogQWN0dWFsbHkgdXNlIHRoZSBlbmdpbmVzX211dGV4IHRvIGd1YXJk IHRoZSBjdHgtPmVuZ2luZXMuCgpUZXN0Y2FzZTogaWd0L2dlbV9jdHhfZW5naW5lcwpTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAgIHwgMjE5ICsrKysrKysrKysrKysrKysrLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oICAgICAgIHwgIDE4ICsrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmggfCAgIDEgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgICA1ICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3V0aWxzLmggICAgICAgICAgICAgfCAgMzYgKysrCiBpbmNs dWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgICAgICAgfCAgMzEgKysrCiA2IGZp bGVzIGNoYW5nZWQsIDMwMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCAyMTdkNGZlMDM0OWQuLmI0YjdhMmVl ZTFjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtOTAsNyAr OTAsNiBAQAogI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgogCiAjaW5jbHVkZSAiZ3QvaW50ZWxf bHJjX3JlZy5oIgotI2luY2x1ZGUgImd0L2ludGVsX3dvcmthcm91bmRzLmgiCiAKICNpbmNsdWRl ICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImk5MTVfZ2xvYmFscy5oIgpAQCAtMTQzLDEzICsxNDIs MTcgQEAgc3RhdGljIHZvaWQgbHV0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgp CiBzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKgogbG9va3VwX3VzZXJfZW5naW5lKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHUxNiBjbGFzcywgdTE2IGluc3RhbmNlKQogewotCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlpZiAoIWk5MTVfZ2VtX2NvbnRleHRfdXNl cl9lbmdpbmVzKGN0eCkpIHsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCi0J ZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0eC0+aTkxNSwgY2xhc3MsIGluc3Rh bmNlKTsKLQlpZiAoIWVuZ2luZSkKLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJCWVuZ2lu ZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5MTUsIGNsYXNzLCBpbnN0YW5jZSk7 CisJCWlmICghZW5naW5lKQorCQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwkJaW5zdGFu Y2UgPSBlbmdpbmUtPmlkOworCX0KIAotCXJldHVybiBpOTE1X2dlbV9jb250ZXh0X2dldF9lbmdp bmUoY3R4LCBlbmdpbmUtPmlkKTsKKwlyZXR1cm4gaTkxNV9nZW1fY29udGV4dF9nZXRfZW5naW5l KGN0eCwgaW5zdGFuY2UpOwogfQogCiBzdGF0aWMgaW5saW5lIGludCBuZXdfaHdfaWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGdmcF90IGdmcCkKQEAgLTI1Nyw2ICsyNjAsMTcgQEAg c3RhdGljIHZvaWQgZnJlZV9lbmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplKQogCV9f ZnJlZV9lbmdpbmVzKGUsIGUtPm51bV9lbmdpbmVzKTsKIH0KIAorc3RhdGljIHZvaWQgZnJlZV9l bmdpbmVzX3JjdShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndyaykKK3sKKwlzdHJ1Y3QgaTkxNV9nZW1f ZW5naW5lcyAqZSA9CisJCWNvbnRhaW5lcl9vZih3cmssIHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVz LCByY3Uud29yayk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlLT5pOTE1Owor CisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJZnJlZV9lbmdpbmVzKGUp OworCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cit9CisKIHN0YXRpYyBz dHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZGVmYXVsdF9lbmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwpAQCAtMTM4 Miw2ICsxMzk2LDE5MSBAQCBzdGF0aWMgaW50IHNldF9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgsCiAJcmV0dXJuIHJldDsKIH0KIAorc3RydWN0IHNldF9lbmdpbmVzIHsKKwlzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplbmdp bmVzOworfTsKKworc3RhdGljIGNvbnN0IGk5MTVfdXNlcl9leHRlbnNpb25fZm4gc2V0X2VuZ2lu ZXNfX2V4dGVuc2lvbnNbXSA9IHsKK307CisKK3N0YXRpYyBpbnQKK3NldF9lbmdpbmVzKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2lu ZXMgX191c2VyICp1c2VyID0KKwkJdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKTsKKwlzdHJ1 Y3Qgc2V0X2VuZ2luZXMgc2V0ID0geyAuY3R4ID0gY3R4IH07CisJdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLCBuOworCXU2NCBleHRlbnNpb25zOworCWludCBlcnI7CisKKwlpZiAoIWFyZ3MtPnNp emUpIHsgLyogc3dpdGNoIGJhY2sgdG8gbGVnYWN5IHVzZXJfcmluZ19tYXAgKi8KKwkJaWYgKCFp OTE1X2dlbV9jb250ZXh0X3VzZXJfZW5naW5lcyhjdHgpKQorCQkJcmV0dXJuIDA7CisKKwkJc2V0 LmVuZ2luZXMgPSBkZWZhdWx0X2VuZ2luZXMoY3R4KTsKKwkJaWYgKElTX0VSUihzZXQuZW5naW5l cykpCisJCQlyZXR1cm4gUFRSX0VSUihzZXQuZW5naW5lcyk7CisKKwkJZ290byByZXBsYWNlOwor CX0KKworCUJVSUxEX0JVR19PTighSVNfQUxJR05FRChzaXplb2YoKnVzZXIpLCBzaXplb2YoKnVz ZXItPmVuZ2luZXMpKSk7CisJaWYgKGFyZ3MtPnNpemUgPCBzaXplb2YoKnVzZXIpIHx8CisJICAg ICFJU19BTElHTkVEKGFyZ3MtPnNpemUsIHNpemVvZigqdXNlci0+ZW5naW5lcykpKSB7CisJCURS TV9ERUJVRygiSW52YWxpZCBzaXplIGZvciBlbmdpbmUgYXJyYXk6ICVkXG4iLAorCQkJICBhcmdz LT5zaXplKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyoKKwkgKiBOb3RlIHRoYXQgSTkx NV9FWEVDX1JJTkdfTUFTSyBsaW1pdHMgZXhlY2J1ZiB0byBvbmx5IHVzaW5nIHRoZQorCSAqIGZp cnN0IDY0IGVuZ2luZXMgZGVmaW5lZCBoZXJlLgorCSAqLworCW51bV9lbmdpbmVzID0gKGFyZ3Mt PnNpemUgLSBzaXplb2YoKnVzZXIpKSAvIHNpemVvZigqdXNlci0+ZW5naW5lcyk7CisKKwlzZXQu ZW5naW5lcyA9IGttYWxsb2Moc3RydWN0X3NpemUoc2V0LmVuZ2luZXMsIGVuZ2luZXMsIG51bV9l bmdpbmVzKSwKKwkJCSAgICAgIEdGUF9LRVJORUwpOworCWlmICghc2V0LmVuZ2luZXMpCisJCXJl dHVybiAtRU5PTUVNOworCisJc2V0LmVuZ2luZXMtPmk5MTUgPSBjdHgtPmk5MTU7CisJZm9yIChu ID0gMDsgbiA8IG51bV9lbmdpbmVzOyBuKyspIHsKKwkJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNz X2luc3RhbmNlIGNpOworCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisKKwkJaWYg KGNvcHlfZnJvbV91c2VyKCZjaSwgJnVzZXItPmVuZ2luZXNbbl0sIHNpemVvZihjaSkpKSB7CisJ CQlfX2ZyZWVfZW5naW5lcyhzZXQuZW5naW5lcywgbik7CisJCQlyZXR1cm4gLUVGQVVMVDsKKwkJ fQorCisJCWlmIChjaS5lbmdpbmVfY2xhc3MgPT0gKHUxNilJOTE1X0VOR0lORV9DTEFTU19JTlZB TElEICYmCisJCSAgICBjaS5lbmdpbmVfaW5zdGFuY2UgPT0gKHUxNilJOTE1X0VOR0lORV9DTEFT U19JTlZBTElEX05PTkUpIHsKKwkJCXNldC5lbmdpbmVzLT5lbmdpbmVzW25dID0gTlVMTDsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0 eC0+aTkxNSwKKwkJCQkJCSAgY2kuZW5naW5lX2NsYXNzLAorCQkJCQkJICBjaS5lbmdpbmVfaW5z dGFuY2UpOworCQlpZiAoIWVuZ2luZSkgeworCQkJRFJNX0RFQlVHKCJJbnZhbGlkIGVuZ2luZVsl ZF06IHsgY2xhc3M6JWQsIGluc3RhbmNlOiVkIH1cbiIsCisJCQkJICBuLCBjaS5lbmdpbmVfY2xh c3MsIGNpLmVuZ2luZV9pbnN0YW5jZSk7CisJCQlfX2ZyZWVfZW5naW5lcyhzZXQuZW5naW5lcywg bik7CisJCQlyZXR1cm4gLUVOT0VOVDsKKwkJfQorCisJCXNldC5lbmdpbmVzLT5lbmdpbmVzW25d ID0gaW50ZWxfY29udGV4dF9jcmVhdGUoY3R4LCBlbmdpbmUpOworCQlpZiAoIXNldC5lbmdpbmVz LT5lbmdpbmVzW25dKSB7CisJCQlfX2ZyZWVfZW5naW5lcyhzZXQuZW5naW5lcywgbik7CisJCQly ZXR1cm4gLUVOT01FTTsKKwkJfQorCX0KKwlzZXQuZW5naW5lcy0+bnVtX2VuZ2luZXMgPSBudW1f ZW5naW5lczsKKworCWVyciA9IC1FRkFVTFQ7CisJaWYgKCFnZXRfdXNlcihleHRlbnNpb25zLCAm dXNlci0+ZXh0ZW5zaW9ucykpCisJCWVyciA9IGk5MTVfdXNlcl9leHRlbnNpb25zKHU2NF90b191 c2VyX3B0cihleHRlbnNpb25zKSwKKwkJCQkJICAgc2V0X2VuZ2luZXNfX2V4dGVuc2lvbnMsCisJ CQkJCSAgIEFSUkFZX1NJWkUoc2V0X2VuZ2luZXNfX2V4dGVuc2lvbnMpLAorCQkJCQkgICAmc2V0 KTsKKwlpZiAoZXJyKSB7CisJCWZyZWVfZW5naW5lcyhzZXQuZW5naW5lcyk7CisJCXJldHVybiBl cnI7CisJfQorCityZXBsYWNlOgorCW11dGV4X2xvY2soJmN0eC0+ZW5naW5lc19tdXRleCk7CisJ aWYgKGFyZ3MtPnNpemUpCisJCWk5MTVfZ2VtX2NvbnRleHRfc2V0X3VzZXJfZW5naW5lcyhjdHgp OworCWVsc2UKKwkJaTkxNV9nZW1fY29udGV4dF9jbGVhcl91c2VyX2VuZ2luZXMoY3R4KTsKKwly Y3Vfc3dhcF9wcm90ZWN0ZWQoY3R4LT5lbmdpbmVzLCBzZXQuZW5naW5lcywgMSk7CisJbXV0ZXhf dW5sb2NrKCZjdHgtPmVuZ2luZXNfbXV0ZXgpOworCisJSU5JVF9SQ1VfV09SSygmc2V0LmVuZ2lu ZXMtPnJjdSwgZnJlZV9lbmdpbmVzX3JjdSk7CisJcXVldWVfcmN1X3dvcmsoc3lzdGVtX3dxLCAm c2V0LmVuZ2luZXMtPnJjdSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZ2V0X2Vu Z2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1f ZW5naW5lcyBfX3VzZXIgKnVzZXI7CisJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmU7CisJc2l6 ZV90IG4sIGNvdW50LCBzaXplOworCWludCBlcnIgPSAwOworCisJZXJyID0gbXV0ZXhfbG9ja19p bnRlcnJ1cHRpYmxlKCZjdHgtPmVuZ2luZXNfbXV0ZXgpOworCWlmIChlcnIpCisJCXJldHVybiBl cnI7CisKKwlpZiAoIWk5MTVfZ2VtX2NvbnRleHRfdXNlcl9lbmdpbmVzKGN0eCkpIHsKKwkJYXJn cy0+c2l6ZSA9IDA7CisJCWdvdG8gdW5sb2NrOworCX0KKworCWUgPSBpOTE1X2dlbV9jb250ZXh0 X2VuZ2luZXMoY3R4KTsKKwljb3VudCA9IGUtPm51bV9lbmdpbmVzOworCisJLyogQmUgcGFyYW5v aWQgaW4gY2FzZSB3ZSBoYXZlIGFuIGltcGVkYW5jZSBtaXNtYXRjaCAqLworCWlmICghY2hlY2tf c3RydWN0X3NpemUodXNlciwgZW5naW5lcywgY291bnQsICZzaXplKSkgeworCQllcnIgPSAtRUlO VkFMOworCQlnb3RvIHVubG9jazsKKwl9CisJaWYgKG92ZXJmbG93c190eXBlKHNpemUsIGFyZ3Mt PnNpemUpKSB7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gdW5sb2NrOworCX0KKworCWlmICgh YXJncy0+c2l6ZSkgeworCQlhcmdzLT5zaXplID0gc2l6ZTsKKwkJZ290byB1bmxvY2s7CisJfQor CisJaWYgKGFyZ3MtPnNpemUgPCBzaXplKSB7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gdW5s b2NrOworCX0KKworCXVzZXIgPSB1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpOworCWlmICgh YWNjZXNzX29rKHVzZXIsIHNpemUpKSB7CisJCWVyciA9IC1FRkFVTFQ7CisJCWdvdG8gdW5sb2Nr OworCX0KKworCWlmIChwdXRfdXNlcigwLCAmdXNlci0+ZXh0ZW5zaW9ucykpIHsKKwkJZXJyID0g LUVGQVVMVDsKKwkJZ290byB1bmxvY2s7CisJfQorCisJZm9yIChuID0gMDsgbiA8IGNvdW50OyBu KyspIHsKKwkJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlIGNpID0geworCQkJLmVu Z2luZV9jbGFzcyA9IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQsCisJCQkuZW5naW5lX2luc3Rh bmNlID0gSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRF9OT05FLAorCQl9OworCisJCWlmIChlLT5l bmdpbmVzW25dKSB7CisJCQljaS5lbmdpbmVfY2xhc3MgPSBlLT5lbmdpbmVzW25dLT5lbmdpbmUt PnVhYmlfY2xhc3M7CisJCQljaS5lbmdpbmVfaW5zdGFuY2UgPSBlLT5lbmdpbmVzW25dLT5lbmdp bmUtPmluc3RhbmNlOworCQl9CisKKwkJaWYgKGNvcHlfdG9fdXNlcigmdXNlci0+ZW5naW5lc1tu XSwgJmNpLCBzaXplb2YoY2kpKSkgeworCQkJZXJyID0gLUVGQVVMVDsKKwkJCWdvdG8gdW5sb2Nr OworCQl9CisJfQorCisJYXJncy0+c2l6ZSA9IHNpemU7CisKK3VubG9jazoKKwltdXRleF91bmxv Y2soJmN0eC0+ZW5naW5lc19tdXRleCk7CisJcmV0dXJuIGVycjsKK30KKwogc3RhdGljIGludCBj dHhfc2V0cGFyYW0oc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZnByaXYsCiAJCQlzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtICphcmdzKQpAQCAtMTQ1NSw2ICsxNjU0LDEwIEBAIHN0YXRpYyBpbnQgY3R4X3NldHBh cmFtKHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2LAogCQlyZXQgPSBzZXRfcHBn dHQoZnByaXYsIGN0eCwgYXJncyk7CiAJCWJyZWFrOwogCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFS QU1fRU5HSU5FUzoKKwkJcmV0ID0gc2V0X2VuZ2luZXMoY3R4LCBhcmdzKTsKKwkJYnJlYWs7CisK IAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5fUEVSSU9EOgogCWRlZmF1bHQ6CiAJCXJldCA9 IC1FSU5WQUw7CkBAIC0xNjg1LDYgKzE4ODgsMTAgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0 cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0ID0g Z2V0X3BwZ3R0KGZpbGVfcHJpdiwgY3R4LCBhcmdzKTsKIAkJYnJlYWs7CiAKKwljYXNlIEk5MTVf Q09OVEVYVF9QQVJBTV9FTkdJTkVTOgorCQlyZXQgPSBnZXRfZW5naW5lcyhjdHgsIGFyZ3MpOwor CQlicmVhazsKKwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6CiAJZGVmYXVs dDoKIAkJcmV0ID0gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu aAppbmRleCAyNzJlMTgzZWJjMGMuLjlhZDRhNjM2MjQzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtMTEyLDYgKzExMiwyNCBAQCBzdGF0aWMgaW5saW5lIHZv aWQgaTkxNV9nZW1fY29udGV4dF9zZXRfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oc3RydWN0IGk5 MTVfZ2VtXwogCV9fc2V0X2JpdChDT05URVhUX0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9OLCAmY3R4 LT5mbGFncyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAoraTkxNV9nZW1fY29udGV4dF91c2Vy X2VuZ2luZXMoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKK3sKKwlyZXR1cm4g dGVzdF9iaXQoQ09OVEVYVF9VU0VSX0VOR0lORVMsICZjdHgtPmZsYWdzKTsKK30KKworc3RhdGlj IGlubGluZSB2b2lkCitpOTE1X2dlbV9jb250ZXh0X3NldF91c2VyX2VuZ2luZXMoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCkKK3sKKwlzZXRfYml0KENPTlRFWFRfVVNFUl9FTkdJTkVTLCAm Y3R4LT5mbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAoraTkxNV9nZW1fY29udGV4dF9j bGVhcl91c2VyX2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKK3sKKwljbGVh cl9iaXQoQ09OVEVYVF9VU0VSX0VOR0lORVMsICZjdHgtPmZsYWdzKTsKK30KKwogaW50IF9faTkx NV9nZW1fY29udGV4dF9waW5faHdfaWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCk7CiBz dGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9jb250ZXh0X3Bpbl9od19pZChzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dF90eXBlcy5oCmluZGV4IGQ1Y2I0ZjEyMWFhZC4uZmI5NjVkZWQyNTA4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dF90eXBlcy5oCkBAIC0xNDYsNiArMTQ2 LDcgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewogI2RlZmluZSBDT05URVhUX0JBTk5FRAkJ CTAKICNkZWZpbmUgQ09OVEVYVF9DTE9TRUQJCQkxCiAjZGVmaW5lIENPTlRFWFRfRk9SQ0VfU0lO R0xFX1NVQk1JU1NJT04JMgorI2RlZmluZSBDT05URVhUX1VTRVJfRU5HSU5FUwkJMwogCiAJLyoq CiAJICogQGh3X2lkOiAtIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udGV4dApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmluZGV4IDY3OWY3YzE1NjFiYS4u ZDZjNTIyMGFkZGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCkBAIC0yMTY1LDcgKzIxNjUsMTAgQEAgZWJfc2VsZWN0X2VuZ2luZShzdHJ1Y3QgaTkxNV9l eGVjYnVmZmVyICplYiwKIAl1bnNpZ25lZCBpbnQgaWR4OwogCWludCBlcnI7CiAKLQlpZHggPSBl Yl9zZWxlY3RfbGVnYWN5X3JpbmcoZWIsIGZpbGUsIGFyZ3MpOworCWlmIChpOTE1X2dlbV9jb250 ZXh0X3VzZXJfZW5naW5lcyhlYi0+Z2VtX2NvbnRleHQpKQorCQlpZHggPSBhcmdzLT5mbGFncyAm IEk5MTVfRVhFQ19SSU5HX01BU0s7CisJZWxzZQorCQlpZHggPSBlYl9zZWxlY3RfbGVnYWN5X3Jp bmcoZWIsIGZpbGUsIGFyZ3MpOwogCiAJY2UgPSBpOTE1X2dlbV9jb250ZXh0X2dldF9lbmdpbmUo ZWItPmdlbV9jb250ZXh0LCBpZHgpOwogCWlmIChJU19FUlIoY2UpKQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV91dGlscy5oCmluZGV4IDJkYmU4OTMzYjUwYS4uMTQzNmZlMmZiNWY4IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3V0aWxzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV91dGlscy5oCkBAIC0yNSw2ICsyNSw5IEBACiAjaWZuZGVmIF9fSTkxNV9VVElMU19I CiAjZGVmaW5lIF9fSTkxNV9VVElMU19ICiAKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNp bmNsdWRlIDxsaW51eC9vdmVyZmxvdy5oPgorCiAjdW5kZWYgV0FSTl9PTgogLyogTWFueSBnY2Mg c2VlbSB0byBubyBzZWUgdGhyb3VnaCB0aGlzIGFuZCBmYWxsIG92ZXIgOiggKi8KICNpZiAwCkBA IC03Myw2ICs3NiwzOSBAQAogI2RlZmluZSBvdmVyZmxvd3NfdHlwZSh4LCBUKSBcCiAJKHNpemVv Zih4KSA+IHNpemVvZihUKSAmJiAoeCkgPj4gQklUU19QRVJfVFlQRShUKSkKIAorc3RhdGljIGlu bGluZSBib29sCitfX2NoZWNrX3N0cnVjdF9zaXplKHNpemVfdCBiYXNlLCBzaXplX3QgYXJyLCBz aXplX3QgY291bnQsIHNpemVfdCAqc2l6ZSkKK3sKKwlzaXplX3Qgc3o7CisKKwlpZiAoY2hlY2tf bXVsX292ZXJmbG93KGNvdW50LCBhcnIsICZzeikpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChj aGVja19hZGRfb3ZlcmZsb3coc3osIGJhc2UsICZzeikpCisJCXJldHVybiBmYWxzZTsKKworCSpz aXplID0gc3o7CisJcmV0dXJuIHRydWU7Cit9CisKKy8qKgorICogY2hlY2tfc3RydWN0X3NpemUo KSAtIENhbGN1bGF0ZSBzaXplIG9mIHN0cnVjdHVyZSB3aXRoIHRyYWlsaW5nIGFycmF5LgorICog QHA6IFBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZS4KKyAqIEBtZW1iZXI6IE5hbWUgb2YgdGhlIGFy cmF5IG1lbWJlci4KKyAqIEBuOiBOdW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5LgorICog QHN6OiBUb3RhbCBzaXplIG9mIHN0cnVjdHVyZSBhbmQgYXJyYXkKKyAqCisgKiBDYWxjdWxhdGVz IHNpemUgb2YgbWVtb3J5IG5lZWRlZCBmb3Igc3RydWN0dXJlIEBwIGZvbGxvd2VkIGJ5IGFuCisg KiBhcnJheSBvZiBAbiBAbWVtYmVyIGVsZW1lbnRzLCBsaWtlIHN0cnVjdF9zaXplKCkgYnV0IHJl cG9ydHMKKyAqIHdoZXRoZXIgaXQgb3ZlcmZsb3dlZCwgYW5kIHRoZSByZXN1bHRhbnQgc2l6ZSBp biBAc3oKKyAqCisgKiBSZXR1cm46IGZhbHNlIGlmIHRoZSBjYWxjdWxhdGlvbiBvdmVyZmxvd2Vk LgorICovCisjZGVmaW5lIGNoZWNrX3N0cnVjdF9zaXplKHAsIG1lbWJlciwgbiwgc3opIFwKKwls aWtlbHkoX19jaGVja19zdHJ1Y3Rfc2l6ZShzaXplb2YoKihwKSksIFwKKwkJCQkgICBzaXplb2Yo KihwKS0+bWVtYmVyKSArIF9fbXVzdF9iZV9hcnJheSgocCktPm1lbWJlciksIFwKKwkJCQkgICBu LCBzeikpCisKICNkZWZpbmUgcHRyX21hc2tfYml0cyhwdHIsIG4pICh7CQkJCQlcCiAJdW5zaWdu ZWQgbG9uZyBfX3YgPSAodW5zaWduZWQgbG9uZykocHRyKTsJCQlcCiAJKHR5cGVvZihwdHIpKShf X3YgJiAtQklUKG4pKTsJCQkJCVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9k cm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCBkNmFkNGExNWIyYjkuLjhl MWJiMjI5MjZlNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBi L2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMTM2LDYgKzEzNiw3IEBAIGVudW0gZHJt X2k5MTVfZ2VtX2VuZ2luZV9jbGFzcyB7CiBzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFu Y2UgewogCV9fdTE2IGVuZ2luZV9jbGFzczsgLyogc2VlIGVudW0gZHJtX2k5MTVfZ2VtX2VuZ2lu ZV9jbGFzcyAqLwogCV9fdTE2IGVuZ2luZV9pbnN0YW5jZTsKKyNkZWZpbmUgSTkxNV9FTkdJTkVf Q0xBU1NfSU5WQUxJRF9OT05FIC0xCiB9OwogCiAvKioKQEAgLTE1MjIsNiArMTUyMywyNiBAQCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gewogCSAqIFNlZSBEUk1fSTkxNV9HRU1f Vk1fQ1JFQVRFIGFuZCBEUk1fSTkxNV9HRU1fVk1fREVTVFJPWS4KIAkgKi8KICNkZWZpbmUgSTkx NV9DT05URVhUX1BBUkFNX1ZNCQkweDkKKworLyoKKyAqIEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJ TkVTOgorICoKKyAqIEJpbmQgdGhpcyBjb250ZXh0IHRvIG9wZXJhdGUgb24gdGhpcyBzdWJzZXQg b2YgYXZhaWxhYmxlIGVuZ2luZXMuIEhlbmNlZm9ydGgsCisgKiB0aGUgSTkxNV9FWEVDX1JJTkcg c2VsZWN0b3IgZm9yIERSTV9JT0NUTF9JOTE1X0dFTV9FWEVDQlVGRkVSMiBvcGVyYXRlcyBhcwor ICogYW4gaW5kZXggaW50byB0aGlzIGFycmF5IG9mIGVuZ2luZXM7IEk5MTVfRVhFQ19ERUZBVUxU IHNlbGVjdGluZyBlbmdpbmVbMF0KKyAqIGFuZCB1cHdhcmRzLiBTbG90cyAwLi4uTiBhcmUgZmls bGVkIGluIHVzaW5nIHRoZSBzcGVjaWZpZWQgKGNsYXNzLCBpbnN0YW5jZSkuCisgKiBVc2UKKyAq CWVuZ2luZV9jbGFzczogSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRCwKKyAqCWVuZ2luZV9pbnN0 YW5jZTogSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRF9OT05FCisgKiB0byBzcGVjaWZ5IGEgZ2Fw IGluIHRoZSBhcnJheSB0aGF0IGNhbiBiZSBmaWxsZWQgaW4gbGF0ZXIsIGUuZy4gYnkgYQorICog dmlydHVhbCBlbmdpbmUgdXNlZCBmb3IgbG9hZCBiYWxhbmNpbmcuCisgKgorICogU2V0dGluZyB0 aGUgbnVtYmVyIG9mIGVuZ2luZXMgYm91bmQgdG8gdGhlIGNvbnRleHQgdG8gMCwgYnkgcGFzc2lu ZyBhIHplcm8KKyAqIHNpemVkIGFyZ3VtZW50LCB3aWxsIHJldmVydCBiYWNrIHRvIGRlZmF1bHQg c2V0dGluZ3MuCisgKgorICogU2VlIHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcy4K KyAqLworI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUwkweGEKIC8qIE11c3QgYmUg a2VwdCBjb21wYWN0IC0tIG5vIGhvbGVzIGFuZCB3ZWxsIGRvY3VtZW50ZWQgKi8KIAogCV9fdTY0 IHZhbHVlOwpAQCAtMTU4NSw2ICsxNjA2LDE2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbV9zc2V1IHsKIAlfX3UzMiByc3ZkOwogfTsKIAorc3RydWN0IGk5MTVfY29udGV4dF9w YXJhbV9lbmdpbmVzIHsKKwlfX3U2NCBleHRlbnNpb25zOyAvKiBsaW5rZWQgY2hhaW4gb2YgZXh0 ZW5zaW9uIGJsb2NrcywgMCB0ZXJtaW5hdGVzICovCisJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNz X2luc3RhbmNlIGVuZ2luZXNbMF07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCisjZGVm aW5lIEk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhuYW1lX18sIE5fXykgc3RydWN0 IHsgXAorCV9fdTY0IGV4dGVuc2lvbnM7IFwKKwlzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5z dGFuY2UgZW5naW5lc1tOX19dOyBcCit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIG5hbWVfXwor CiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSB7CiAjZGVm aW5lIEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIDAKIAlzdHJ1Y3QgaTkxNV91c2Vy X2V4dGVuc2lvbiBiYXNlOwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZng=