From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 2/4] drm/i915/guc: Submit GuC workitems containing coalesced requests Date: Wed, 13 Sep 2017 12:06:22 +0100 Message-ID: <20170913110624.14545-2-chris@chris-wilson.co.uk> References: <20170913110624.14545-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 4013D898C0 for ; Wed, 13 Sep 2017 11:08:17 +0000 (UTC) In-Reply-To: <20170913110624.14545-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 RnJvbTogTWljaGHFgiBXaW5pYXJza2kgPG1pY2hhbC53aW5pYXJza2lAaW50ZWwuY29tPgoKVG8g Y3JlYXRlIGFuIHVwcGVyIGJvdW5kIG9uIG51bWJlciBvZiBHdUMgd29ya2l0ZW1zLCB3ZSBuZWVk IHRvIGNoYW5nZQp0aGUgd2F5IHRoYXQgcmVxdWVzdHMgYXJlIGJlaW5nIHN1Ym1pdHRlZC4gUmF0 aGVyIHRoYW4gc3VibWl0dGluZyBlYWNoCnJlcXVlc3QgYXMgYW4gaW5kaXZpZHVhbCB3b3JraXRl bSwgd2UgY2FuIGRvIGNvYWxlc2NpbmcgaW4gYSBzaW1pbGFyIHdheQp3ZSdyZSBoYW5kbGlnIGV4 ZWNsaXN0IHN1Ym1pc3Npb24gcG9ydHMuIFdlIGFsc28gbmVlZCB0byBzdG9wIHByZXRlbmRpbmcK dGhhdCB3ZSdyZSBkb2luZyAibGl0ZS1yZXN0b3JlIiBpbiBHdUMgc3VibWlzc2lvbiAod2Ugd291 bGQgY3JlYXRlIGEKd29ya2l0ZW0gZWFjaCB0aW1lIHdlIGhpdCB0aGlzIGNvbmRpdGlvbikuIFRo aXMgYWxsb3dzIHVzIHRvIGNvbXBsZXRlbHkKcmVtb3ZlIHRoZSByZXNlcnZhdGlvbiwgcmVwbGFj aW5nIGl0IHdpdGggYSBjb21waWxlIHRpbWUgY2hlY2suCgp2MjogQWxzbyBjb2FsZXNjZSB3aGVu IHJlcGxheWluZyBvbiByZXNldCAoRGFuaWVsZSkKdjM6IENvbnNpc3RlbnQgd3FfcmVzdiAtIHBl ci1yZXF1ZXN0IChEYW5pZWxlKQp2NDogU3F1YXNoIHJlbW92aW5nIHdxX3Jlc3YKClJlZmVyZW5j ZXM6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg3MwpD YzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBEYW5pZWxlIENl cmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgpDYzogSmVmZiBN Y0dlZSA8amVmZi5tY2dlZUBpbnRlbC5jb20+CkNjOiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwu d2FqZGVjemtvQGludGVsLmNvbT4KQ2M6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IE1pY2hhxYIgV2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tpQGlu dGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KTGluazogaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoL21zZ2lkLzIw MTcwOTEyMTI0NzI2LjE5Njg5LTItbWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAgIDIgLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgMTc5ICsrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAg fCAgMjUgKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCAgICAgICAgICAgIHwg IDExIC0tCiA0IGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDE1NSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDYzMzgwMThmNjU1ZC4uZjVm ZDAwY2ZiM2IwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMjQ1MCw4ICsy NDUwLDYgQEAgc3RhdGljIHZvaWQgaTkxNV9ndWNfY2xpZW50X2luZm8oc3RydWN0IHNlcV9maWxl ICptLAogCXNlcV9wcmludGYobSwgIlx0V1Egc2l6ZSAlZCwgb2Zmc2V0OiAweCV4LCB0YWlsICVk XG4iLAogCQljbGllbnQtPndxX3NpemUsIGNsaWVudC0+d3Ffb2Zmc2V0LCBjbGllbnQtPndxX3Rh aWwpOwogCi0Jc2VxX3ByaW50ZihtLCAiXHRXb3JrIHF1ZXVlIGZ1bGw6ICV1XG4iLCBjbGllbnQt Pm5vX3dxX3NwYWNlKTsKLQogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkg ewogCQl1NjQgc3VibWlzc2lvbnMgPSBjbGllbnQtPnN1Ym1pc3Npb25zW2lkXTsKIAkJdG90ICs9 IHN1Ym1pc3Npb25zOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf c3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5j CmluZGV4IDk4MjhjNzc5MTBiMS4uMjhhZWU4ZTFjODliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC00MDYsNjMgKzQwNiw2IEBAIHN0YXRpYyB2b2lk IGd1Y19zdGFnZV9kZXNjX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCW1lbXNldChkZXNj LCAwLCBzaXplb2YoKmRlc2MpKTsKIH0KIAotLyoqCi0gKiBpOTE1X2d1Y193cV9yZXNlcnZlKCkg LSByZXNlcnZlIHNwYWNlIGluIHRoZSBHdUMncyB3b3JrcXVldWUKLSAqIEByZXF1ZXN0OglyZXF1 ZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tbWFuZHMKLSAqCi0gKiBSZXR1cm46CTAgaWYgc3Bh Y2UgaXMgYXZhaWxhYmxlCi0gKgkJLUVBR0FJTiBpZiBzcGFjZSBpcyBub3QgY3VycmVudGx5IGF2 YWlsYWJsZQotICoKLSAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgKGFuZCBtdXN0IHJl dHVybiAwKSBiZWZvcmUgYSByZXF1ZXN0Ci0gKiBpcyBzdWJtaXR0ZWQgdG8gdGhlIEd1QyB2aWEg aTkxNV9ndWNfc3VibWl0KCkgYmVsb3cuIE9uY2UgYSByZXN1bHQKLSAqIG9mIDAgaGFzIGJlZW4g cmV0dXJuZWQsIGl0IG11c3QgYmUgYmFsYW5jZWQgYnkgYSBjb3JyZXNwb25kaW5nCi0gKiBjYWxs IHRvIHN1Ym1pdCgpLgotICoKLSAqIFJlc2VydmF0aW9uIGFsbG93cyB0aGUgY2FsbGVyIHRvIGRl dGVybWluZSBpbiBhZHZhbmNlIHRoYXQgc3BhY2UKLSAqIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0 aGUgbmV4dCBzdWJtaXNzaW9uIGJlZm9yZSBjb21taXR0aW5nIHJlc291cmNlcwotICogdG8gaXQs IGFuZCBoZWxwcyBhdm9pZCBsYXRlIGZhaWx1cmVzIHdpdGggY29tcGxpY2F0ZWQgcmVjb3Zlcnkg cGF0aHMuCi0gKi8KLWludCBpOTE1X2d1Y193cV9yZXNlcnZlKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxdWVzdCkKLXsKLQljb25zdCBzaXplX3Qgd3FpX3NpemUgPSBzaXplb2Yoc3Ry dWN0IGd1Y193cV9pdGVtKTsKLQlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQgPSByZXF1 ZXN0LT5pOTE1LT5ndWMuZXhlY2J1Zl9jbGllbnQ7Ci0Jc3RydWN0IGd1Y19wcm9jZXNzX2Rlc2Mg KmRlc2MgPSBfX2dldF9wcm9jZXNzX2Rlc2MoY2xpZW50KTsKLQl1MzIgZnJlZXNwYWNlOwotCWlu dCByZXQ7Ci0KLQlzcGluX2xvY2tfaXJxKCZjbGllbnQtPndxX2xvY2spOwotCWZyZWVzcGFjZSA9 IENJUkNfU1BBQ0UoY2xpZW50LT53cV90YWlsLCBkZXNjLT5oZWFkLCBjbGllbnQtPndxX3NpemUp OwotCWZyZWVzcGFjZSAtPSBjbGllbnQtPndxX3JzdmQ7Ci0JaWYgKGxpa2VseShmcmVlc3BhY2Ug Pj0gd3FpX3NpemUpKSB7Ci0JCWNsaWVudC0+d3FfcnN2ZCArPSB3cWlfc2l6ZTsKLQkJcmV0ID0g MDsKLQl9IGVsc2UgewotCQljbGllbnQtPm5vX3dxX3NwYWNlKys7Ci0JCXJldCA9IC1FQUdBSU47 Ci0JfQotCXNwaW5fdW5sb2NrX2lycSgmY2xpZW50LT53cV9sb2NrKTsKLQotCXJldHVybiByZXQ7 Ci19Ci0KLXN0YXRpYyB2b2lkIGd1Y19jbGllbnRfdXBkYXRlX3dxX3JzdmQoc3RydWN0IGk5MTVf Z3VjX2NsaWVudCAqY2xpZW50LCBpbnQgc2l6ZSkKLXsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwot Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmNsaWVudC0+d3FfbG9jaywgZmxhZ3MpOwotCWNsaWVudC0+ d3FfcnN2ZCArPSBzaXplOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNsaWVudC0+d3FfbG9j aywgZmxhZ3MpOwotfQotCi12b2lkIGk5MTVfZ3VjX3dxX3VucmVzZXJ2ZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCi17Ci0JY29uc3QgaW50IHdxaV9zaXplID0gc2l6ZW9m KHN0cnVjdCBndWNfd3FfaXRlbSk7Ci0Jc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50ID0g cmVxdWVzdC0+aTkxNS0+Z3VjLmV4ZWNidWZfY2xpZW50OwotCi0JR0VNX0JVR19PTihSRUFEX09O Q0UoY2xpZW50LT53cV9yc3ZkKSA8IHdxaV9zaXplKTsKLQlndWNfY2xpZW50X3VwZGF0ZV93cV9y c3ZkKGNsaWVudCwgLXdxaV9zaXplKTsKLX0KLQogLyogQ29uc3RydWN0IGEgV29yayBJdGVtIGFu ZCBhcHBlbmQgaXQgdG8gdGhlIEd1QydzIFdvcmsgUXVldWUgKi8KIHN0YXRpYyB2b2lkIGd1Y193 cV9pdGVtX2FwcGVuZChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQsCiAJCQkgICAgICAg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKQEAgLTQ3Niw3ICs0MTksNyBAQCBzdGF0 aWMgdm9pZCBndWNfd3FfaXRlbV9hcHBlbmQoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50 LAogCXN0cnVjdCBndWNfd3FfaXRlbSAqd3FpOwogCXUzMiBmcmVlc3BhY2UsIHRhaWwsIHdxX29m ZjsKIAotCS8qIEZyZWUgc3BhY2UgaXMgZ3VhcmFudGVlZCwgc2VlIGk5MTVfZ3VjX3dxX3Jlc2Vy dmUoKSBhYm92ZSAqLworCS8qIEZyZWUgc3BhY2UgaXMgZ3VhcmFudGVlZCAqLwogCWZyZWVzcGFj ZSA9IENJUkNfU1BBQ0UoY2xpZW50LT53cV90YWlsLCBkZXNjLT5oZWFkLCBjbGllbnQtPndxX3Np emUpOwogCUdFTV9CVUdfT04oZnJlZXNwYWNlIDwgd3FpX3NpemUpOwogCkBAIC00OTEsMTQgKzQz NCwxMiBAQCBzdGF0aWMgdm9pZCBndWNfd3FfaXRlbV9hcHBlbmQoc3RydWN0IGk5MTVfZ3VjX2Ns aWVudCAqY2xpZW50LAogCSAqIHdvcmtxdWV1ZSBidWZmZXIgZHcgYnkgZHcuCiAJICovCiAJQlVJ TERfQlVHX09OKHdxaV9zaXplICE9IDE2KTsKLQlHRU1fQlVHX09OKGNsaWVudC0+d3FfcnN2ZCA8 IHdxaV9zaXplKTsKIAogCS8qIHBvc3RpbmNyZW1lbnQgV1EgdGFpbCBmb3IgbmV4dCB0aW1lICov CiAJd3Ffb2ZmID0gY2xpZW50LT53cV90YWlsOwogCUdFTV9CVUdfT04od3Ffb2ZmICYgKHdxaV9z aXplIC0gMSkpOwogCWNsaWVudC0+d3FfdGFpbCArPSB3cWlfc2l6ZTsKIAljbGllbnQtPndxX3Rh aWwgJj0gY2xpZW50LT53cV9zaXplIC0gMTsKLQljbGllbnQtPndxX3JzdmQgLT0gd3FpX3NpemU7 CiAKIAkvKiBXUSBzdGFydHMgZnJvbSB0aGUgcGFnZSBhZnRlciBkb29yYmVsbCAvIHByb2Nlc3Nf ZGVzYyAqLwogCXdxaSA9IGNsaWVudC0+dmFkZHIgKyB3cV9vZmYgKyBHVUNfREJfU0laRTsKQEAg LTU3OSw0NyArNTIwLDQzIEBAIHN0YXRpYyBpbnQgZ3VjX3JpbmdfZG9vcmJlbGwoc3RydWN0IGk5 MTVfZ3VjX2NsaWVudCAqY2xpZW50KQogfQogCiAvKioKLSAqIF9faTkxNV9ndWNfc3VibWl0KCkg LSBTdWJtaXQgY29tbWFuZHMgdGhyb3VnaCBHdUMKKyAqIGk5MTVfZ3VjX3N1Ym1pdCgpIC0gU3Vi bWl0IGNvbW1hbmRzIHRocm91Z2ggR3VDCiAgKiBAcnE6CQlyZXF1ZXN0IGFzc29jaWF0ZWQgd2l0 aCB0aGUgY29tbWFuZHMKICAqCi0gKiBUaGUgY2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxl ZCBpOTE1X2d1Y193cV9yZXNlcnZlKCkgYWJvdmUgd2l0aAotICogYSByZXN1bHQgb2YgMCAoc3Vj Y2VzcyksIGd1YXJhbnRlZWluZyB0aGF0IHRoZXJlIGlzIHNwYWNlIGluIHRoZSB3b3JrCi0gKiBx dWV1ZSBmb3IgdGhlIG5ldyByZXF1ZXN0LCBzbyBlbnF1ZXVpbmcgdGhlIGl0ZW0gY2Fubm90IGZh aWwuCi0gKgotICogQmFkIFRoaW5ncyBXaWxsIEhhcHBlbiBpZiB0aGUgY2FsbGVyIHZpb2xhdGVz IHRoaXMgcHJvdG9jb2wgZS5nLiBjYWxscwotICogc3VibWl0KCkgd2hlbiBfcmVzZXJ2ZSgpIHNh eXMgdGhlcmUncyBubyBzcGFjZSwgb3IgY2FsbHMgX3N1Ym1pdCgpCi0gKiBhIGRpZmZlcmVudCBu dW1iZXIgb2YgdGltZXMgZnJvbSAoc3VjY2Vzc2Z1bCkgY2FsbHMgdG8gX3Jlc2VydmUoKS4KLSAq CiAgKiBUaGUgb25seSBlcnJvciBoZXJlIGFyaXNlcyBpZiB0aGUgZG9vcmJlbGwgaGFyZHdhcmUg aXNuJ3QgZnVuY3Rpb25pbmcKICAqIGFzIGV4cGVjdGVkLCB3aGljaCByZWFsbHkgc2hvdWxuJ3Qg aGFwcGVuLgogICovCi1zdGF0aWMgdm9pZCBfX2k5MTVfZ3VjX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJxKQorc3RhdGljIHZvaWQgaTkxNV9ndWNfc3VibWl0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBycS0+aTkxNTsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBycS0+ ZW5naW5lOwotCXVuc2lnbmVkIGludCBlbmdpbmVfaWQgPSBlbmdpbmUtPmlkOwotCXN0cnVjdCBp bnRlbF9ndWMgKmd1YyA9ICZycS0+aTkxNS0+Z3VjOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2 X3ByaXYtPmd1YzsKIAlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQgPSBndWMtPmV4ZWNi dWZfY2xpZW50OworCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0ID0gZW5naW5lLT5leGVjbGlz dF9wb3J0OworCXVuc2lnbmVkIGludCBlbmdpbmVfaWQgPSBlbmdpbmUtPmlkOworCXVuc2lnbmVk IGludCBuOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQkvKiBXQSB0byBmbHVzaCBvdXQgdGhl IHBlbmRpbmcgR01BRFIgd3JpdGVzIHRvIHJpbmcgYnVmZmVyLiAqLwotCWlmIChpOTE1X3ZtYV9p c19tYXBfYW5kX2ZlbmNlYWJsZShycS0+cmluZy0+dm1hKSkKLQkJUE9TVElOR19SRUFEX0ZXKEdV Q19TVEFUVVMpOworCWZvciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKGVuZ2luZS0+ZXhlY2xpc3Rf cG9ydCk7IG4rKykgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxOworCQl1bnNp Z25lZCBpbnQgY291bnQ7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmY2xpZW50LT53cV9sb2NrLCBm bGFncyk7CisJCXJxID0gcG9ydF91bnBhY2soJnBvcnRbbl0sICZjb3VudCk7CisJCWlmIChycSAm JiBjb3VudCA9PSAwKSB7CisJCQlwb3J0X3NldCgmcG9ydFtuXSwgcG9ydF9wYWNrKHJxLCArK2Nv dW50KSk7CiAKLQlndWNfd3FfaXRlbV9hcHBlbmQoY2xpZW50LCBycSk7Ci0JV0FSTl9PTihndWNf cmluZ19kb29yYmVsbChjbGllbnQpKTsKKwkJCWlmIChpOTE1X3ZtYV9pc19tYXBfYW5kX2ZlbmNl YWJsZShycS0+cmluZy0+dm1hKSkKKwkJCQlQT1NUSU5HX1JFQURfRlcoR1VDX1NUQVRVUyk7CiAK LQljbGllbnQtPnN1Ym1pc3Npb25zW2VuZ2luZV9pZF0gKz0gMTsKKwkJCXNwaW5fbG9ja19pcnFz YXZlKCZjbGllbnQtPndxX2xvY2ssIGZsYWdzKTsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmNsaWVudC0+d3FfbG9jaywgZmxhZ3MpOwotfQorCQkJZ3VjX3dxX2l0ZW1fYXBwZW5kKGNsaWVu dCwgcnEpOworCQkJV0FSTl9PTihndWNfcmluZ19kb29yYmVsbChjbGllbnQpKTsKIAotc3RhdGlj IHZvaWQgaTkxNV9ndWNfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCi17 Ci0JX19pOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChycSk7Ci0JX19pOTE1X2d1Y19zdWJtaXQocnEp OworCQkJY2xpZW50LT5zdWJtaXNzaW9uc1tlbmdpbmVfaWRdICs9IDE7CisKKwkJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmNsaWVudC0+d3FfbG9jaywgZmxhZ3MpOworCQl9CisJfQogfQogCiBz dGF0aWMgdm9pZCBuZXN0ZWRfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJxKQpAQCAtNjUzLDE2ICs1OTAsMTkgQEAgc3RhdGljIHZvaWQgcG9ydF9hc3NpZ24o c3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQsCiAJaWYgKHBvcnRfaXNzZXQocG9ydCkpCiAJCWk5 MTVfZ2VtX3JlcXVlc3RfcHV0KHBvcnRfcmVxdWVzdChwb3J0KSk7CiAKLQlwb3J0X3NldChwb3J0 LCBpOTE1X2dlbV9yZXF1ZXN0X2dldChycSkpOworCXBvcnRfc2V0KHBvcnQsIHBvcnRfcGFjayhp OTE1X2dlbV9yZXF1ZXN0X2dldChycSksIHBvcnRfY291bnQocG9ydCkpKTsKIAluZXN0ZWRfZW5h YmxlX3NpZ25hbGluZyhycSk7CiB9CiAKLXN0YXRpYyBib29sIGk5MTVfZ3VjX2RlcXVldWUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIHZvaWQgaTkxNV9ndWNfZGVxdWV1 ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGV4ZWNsaXN0X3Bv cnQgKnBvcnQgPSBlbmdpbmUtPmV4ZWNsaXN0X3BvcnQ7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpsYXN0ID0gcG9ydF9yZXF1ZXN0KHBvcnQpOwotCXN0cnVjdCByYl9ub2RlICpyYjsK KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmxhc3QgPSBOVUxMOwogCWJvb2wgc3VibWl0 ID0gZmFsc2U7CisJc3RydWN0IHJiX25vZGUgKnJiOworCisJaWYgKHBvcnRfaXNzZXQocG9ydCkp CisJCXBvcnQrKzsKIAogCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwog CXJiID0gZW5naW5lLT5leGVjbGlzdF9maXJzdDsKQEAgLTY4Nyw3ICs2MjcsNyBAQCBzdGF0aWMg Ym9vbCBpOTE1X2d1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJ CUlOSVRfTElTVF9IRUFEKCZycS0+cHJpb3RyZWUubGluayk7CiAJCQlycS0+cHJpb3RyZWUucHJp b3JpdHkgPSBJTlRfTUFYOwogCi0JCQlpOTE1X2d1Y19zdWJtaXQocnEpOworCQkJX19pOTE1X2dl bV9yZXF1ZXN0X3N1Ym1pdChycSk7CiAJCQl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X2luKHJxLCBw b3J0X2luZGV4KHBvcnQsIGVuZ2luZSkpOwogCQkJbGFzdCA9IHJxOwogCQkJc3VibWl0ID0gdHJ1 ZTsKQEAgLTcwMSwxMSArNjQxLDExIEBAIHN0YXRpYyBib29sIGk5MTVfZ3VjX2RlcXVldWUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0KIGRvbmU6CiAJZW5naW5lLT5leGVjbGlz dF9maXJzdCA9IHJiOwotCWlmIChzdWJtaXQpCisJaWYgKHN1Ym1pdCkgewogCQlwb3J0X2Fzc2ln bihwb3J0LCBsYXN0KTsKKwkJaTkxNV9ndWNfc3VibWl0KGVuZ2luZSk7CisJfQogCXNwaW5fdW5s b2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Ci0KLQlyZXR1cm4gc3VibWl0OwogfQog CiBzdGF0aWMgdm9pZCBpOTE1X2d1Y19pcnFfaGFuZGxlcih1bnNpZ25lZCBsb25nIGRhdGEpCkBA IC03MTMsMjQgKzY1MywyMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2d1Y19pcnFfaGFuZGxlcih1bnNp Z25lZCBsb25nIGRhdGEpCiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKilkYXRhOwogCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0ID0g ZW5naW5lLT5leGVjbGlzdF9wb3J0OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnE7 Ci0JYm9vbCBzdWJtaXQ7CiAKLQlkbyB7Ci0JCXJxID0gcG9ydF9yZXF1ZXN0KCZwb3J0WzBdKTsK LQkJd2hpbGUgKHJxICYmIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJxKSkgewotCQkJdHJh Y2VfaTkxNV9nZW1fcmVxdWVzdF9vdXQocnEpOwotCQkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocnEp OworCXJxID0gcG9ydF9yZXF1ZXN0KCZwb3J0WzBdKTsKKwl3aGlsZSAocnEgJiYgaTkxNV9nZW1f cmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7CisJCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3Rfb3V0KHJx KTsKKwkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocnEpOwogCi0JCQlwb3J0WzBdID0gcG9ydFsxXTsK LQkJCW1lbXNldCgmcG9ydFsxXSwgMCwgc2l6ZW9mKHBvcnRbMV0pKTsKKwkJcG9ydFswXSA9IHBv cnRbMV07CisJCW1lbXNldCgmcG9ydFsxXSwgMCwgc2l6ZW9mKHBvcnRbMV0pKTsKIAotCQkJcnEg PSBwb3J0X3JlcXVlc3QoJnBvcnRbMF0pOwotCQl9CisJCXJxID0gcG9ydF9yZXF1ZXN0KCZwb3J0 WzBdKTsKKwl9CiAKLQkJc3VibWl0ID0gZmFsc2U7Ci0JCWlmICghcG9ydF9jb3VudCgmcG9ydFsx XSkpCi0JCQlzdWJtaXQgPSBpOTE1X2d1Y19kZXF1ZXVlKGVuZ2luZSk7Ci0JfSB3aGlsZSAoc3Vi bWl0KTsKKwlpZiAoIXBvcnRfaXNzZXQoJnBvcnRbMV0pKQorCQlpOTE1X2d1Y19kZXF1ZXVlKGVu Z2luZSk7CiB9CiAKIC8qCkBAIC0xMjI0LDYgKzExNjAsMTkgQEAgaW50IGk5MTVfZ3VjX3N1Ym1p c3Npb25fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAllbnVtIGlu dGVsX2VuZ2luZV9pZCBpZDsKIAlpbnQgZXJyOwogCisJLyoKKwkgKiBXZSdyZSB1c2luZyBHdUMg d29yayBpdGVtcyBmb3Igc3VibWl0dGluZyB3b3JrIHRocm91Z2ggR3VDLiBTaW5jZQorCSAqIHdl J3JlIGNvYWxlc2NpbmcgbXVsdGlwbGUgcmVxdWVzdHMgZnJvbSBhIHNpbmdsZSBjb250ZXh0IGlu dG8gYQorCSAqIHNpbmdsZSB3b3JrIGl0ZW0gcHJpb3IgdG8gYXNzaWduaW5nIGl0IHRvIGV4ZWNs aXN0X3BvcnQsIHdlIGNhbgorCSAqIG5ldmVyIGhhdmUgbW9yZSB3b3JrIGl0ZW1zIHRoYW4gdGhl IHRvdGFsIG51bWJlciBvZiBwb3J0cyAoZm9yIGFsbAorCSAqIGVuZ2luZXMpLiBUaGUgR3VDIGZp cm13YXJlIGlzIGNvbnRyb2xsaW5nIHRoZSBIRUFEIG9mIHdvcmsgcXVldWUsCisJICogYW5kIGl0 IGlzIGd1YXJhbnRlZWQgdGhhdCBpdCB3aWxsIHJlbW92ZSB0aGUgd29yayBpdGVtIGZyb20gdGhl CisJICogcXVldWUgYmVmb3JlIG91ciByZXF1ZXN0IGlzIGNvbXBsZXRlZC4KKwkgKi8KKwlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShlbmdpbmUtPmV4ZWNsaXN0X3BvcnQpICoKKwkJICAgICBzaXpl b2Yoc3RydWN0IGd1Y193cV9pdGVtKSAqCisJCSAgICAgSTkxNV9OVU1fRU5HSU5FUyA+IEdVQ19X UV9TSVpFKTsKKwogCWlmICghY2xpZW50KSB7CiAJCWNsaWVudCA9IGd1Y19jbGllbnRfYWxsb2Mo ZGV2X3ByaXYsCiAJCQkJCSAgSU5URUxfSU5GTyhkZXZfcHJpdiktPnJpbmdfbWFzaywKQEAgLTEy NTEsOSArMTIwMCw2IEBAIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZ3VjX2ludGVycnVwdHNfY2FwdHVyZShkZXZfcHJp dik7CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKLQkJY29uc3Qg aW50IHdxaV9zaXplID0gc2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSk7Ci0JCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcnE7Ci0KIAkJLyogVGhlIHRhc2tsZXQgd2FzIGluaXRpYWxpc2Vk IGJ5IGV4ZWNsaXN0cywgYW5kIG1heSBiZSBpbgogCQkgKiBhIHN0YXRlIG9mIGZsdXggKGFjcm9z cyBhIHJlc2V0KSBhbmQgc28gd2UganVzdCB3YW50IHRvCiAJCSAqIHRha2Ugb3ZlciB0aGUgY2Fs bGJhY2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgb3RoZXIgc3RhdGUKQEAgLTEyNjEsMTQgKzEyMDcs NyBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCQkgKi8KIAkJZW5naW5lLT5pcnFfdGFza2xldC5mdW5jID0gaTkxNV9n dWNfaXJxX2hhbmRsZXI7CiAJCWNsZWFyX2JpdChFTkdJTkVfSVJRX0VYRUNMSVNULCAmZW5naW5l LT5pcnFfcG9zdGVkKTsKLQotCQkvKiBSZXBsYXkgdGhlIGN1cnJlbnQgc2V0IG9mIHByZXZpb3Vz bHkgc3VibWl0dGVkIHJlcXVlc3RzICovCi0JCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxp bmUtPmxvY2spOwotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmZW5naW5lLT50aW1lbGluZS0+ cmVxdWVzdHMsIGxpbmspIHsKLQkJCWd1Y19jbGllbnRfdXBkYXRlX3dxX3JzdmQoY2xpZW50LCB3 cWlfc2l6ZSk7Ci0JCQlfX2k5MTVfZ3VjX3N1Ym1pdChycSk7Ci0JCX0KLQkJc3Bpbl91bmxvY2tf aXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKKwkJaTkxNV9ndWNfc3VibWl0KGVuZ2luZSk7 CiAJfQogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDllNDM0MmI4 ZTUyYi4uNzQ1Nzc4M2VkMTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtOTA4LDI3 ICs5MDgsMTQgQEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJICovCiAJcmVxdWVzdC0+cmVzZXJ2ZWRfc3Bh Y2UgKz0gRVhFQ0xJU1RTX1JFUVVFU1RfU0laRTsKIAotCWlmIChpOTE1LmVuYWJsZV9ndWNfc3Vi bWlzc2lvbikgewotCQkvKgotCQkgKiBDaGVjayB0aGF0IHRoZSBHdUMgaGFzIHNwYWNlIGZvciB0 aGUgcmVxdWVzdCBiZWZvcmUKLQkJICogZ29pbmcgYW55IGZ1cnRoZXIsIGFzIHRoZSBpOTE1X2Fk ZF9yZXF1ZXN0KCkgY2FsbAotCQkgKiBsYXRlciBvbiBtdXN0bid0IGZhaWwgLi4uCi0JCSAqLwot CQlyZXQgPSBpOTE1X2d1Y193cV9yZXNlcnZlKHJlcXVlc3QpOwotCQlpZiAocmV0KQotCQkJZ290 byBlcnI7Ci0JfQotCiAJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIDApOwotCWlmIChJ U19FUlIoY3MpKSB7Ci0JCXJldCA9IFBUUl9FUlIoY3MpOwotCQlnb3RvIGVycl91bnJlc2VydmU7 Ci0JfQorCWlmIChJU19FUlIoY3MpKQorCQlyZXR1cm4gUFRSX0VSUihjcyk7CiAKIAlpZiAoIWNl LT5pbml0aWFsaXNlZCkgewogCQlyZXQgPSBlbmdpbmUtPmluaXRfY29udGV4dChyZXF1ZXN0KTsK IAkJaWYgKHJldCkKLQkJCWdvdG8gZXJyX3VucmVzZXJ2ZTsKKwkJCXJldHVybiByZXQ7CiAKIAkJ Y2UtPmluaXRpYWxpc2VkID0gdHJ1ZTsKIAl9CkBAIC05NDIsMTIgKzkyOSw2IEBAIHN0YXRpYyBp bnQgZXhlY2xpc3RzX3JlcXVlc3RfYWxsb2Moc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQogCiAJcmVxdWVzdC0+cmVzZXJ2ZWRfc3BhY2UgLT0gRVhFQ0xJU1RTX1JFUVVFU1Rf U0laRTsKIAlyZXR1cm4gMDsKLQotZXJyX3VucmVzZXJ2ZToKLQlpZiAoaTkxNS5lbmFibGVfZ3Vj X3N1Ym1pc3Npb24pCi0JCWk5MTVfZ3VjX3dxX3VucmVzZXJ2ZShyZXF1ZXN0KTsKLWVycjoKLQly ZXR1cm4gcmV0OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKaW5kZXggNjlkYWY0YzAx Y2QwLi5kNDEwNTE2ODgyMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaApAQCAtNTIsMTMgKzUy LDYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0OwogICogR3VDKS4gVGhlIHN1YnNlcXVl bnQgIHBhZ2VzIG9mIHRoZSBjbGllbnQgb2JqZWN0IGNvbnN0aXR1dGUgdGhlIHdvcmsKICAqIHF1 ZXVlIChhIGNpcmN1bGFyIGFycmF5IG9mIHdvcmsgaXRlbXMpLCBhZ2FpbiBkZXNjcmliZWQgaW4g dGhlIHByb2Nlc3MKICAqIGRlc2NyaXB0b3IuIFdvcmsgcXVldWUgcGFnZXMgYXJlIG1hcHBlZCBt b21lbnRhcmlseSBhcyByZXF1aXJlZC4KLSAqCi0gKiBXZSBhbHNvIGtlZXAgYSBmZXcgc3RhdGlz dGljcyBvbiBmYWlsdXJlcy4gSWRlYWxseSwgdGhlc2Ugc2hvdWxkIGFsbAotICogYmUgemVybyEK LSAqICAgbm9fd3Ffc3BhY2U6IHRpbWVzIHRoYXQgdGhlIHN1Ym1pc3Npb24gcHJlLWNoZWNrIGZv dW5kIG5vIHNwYWNlIHdhcwotICogICAgICAgICAgICAgICAgYXZhaWxhYmxlIGluIHRoZSB3b3Jr IHF1ZXVlIChub3RlLCB0aGUgcXVldWUgaXMgc2hhcmVkLAotICogICAgICAgICAgICAgICAgbm90 IHBlci1lbmdpbmUpLiBJdCBpcyBPSyBmb3IgdGhpcyB0byBiZSBub256ZXJvLCBidXQKLSAqICAg ICAgICAgICAgICAgIGl0IHNob3VsZCBub3QgYmUgaHVnZSEKICAqLwogc3RydWN0IGk5MTVfZ3Vj X2NsaWVudCB7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CkBAIC03OSw4ICs3Miw2IEBAIHN0cnVj dCBpOTE1X2d1Y19jbGllbnQgewogCXVpbnQzMl90IHdxX29mZnNldDsKIAl1aW50MzJfdCB3cV9z aXplOwogCXVpbnQzMl90IHdxX3RhaWw7Ci0JdWludDMyX3Qgd3FfcnN2ZDsKLQl1aW50MzJfdCBu b193cV9zcGFjZTsKIAogCS8qIFBlci1lbmdpbmUgY291bnRzIG9mIEd1QyBzdWJtaXNzaW9ucyAq LwogCXVpbnQ2NF90IHN1Ym1pc3Npb25zW0k5MTVfTlVNX0VOR0lORVNdOwpAQCAtMjQ2LDggKzIz Nyw2IEBAIHUzMiBpbnRlbF9ndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwogLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCiBpbnQgaTkxNV9ndWNfc3Vi bWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBpbnQgaTkx NV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKLWludCBpOTE1X2d1Y193cV9yZXNlcnZlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cnEpOwotdm9pZCBpOTE1X2d1Y193cV91bnJlc2VydmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0KTsKIHZvaWQgaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZmlu aShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogc3RydWN0IGk5MTVfdm1hICpp bnRlbF9ndWNfYWxsb2NhdGVfdm1hKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIHNpemUpOwot LSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK