From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2] drm/i915: Differentiate between sw write location into ring and last hw read Date: Tue, 25 Apr 2017 16:50:15 +0300 Message-ID: <87bmrkd2aw.fsf@gaia.fi.intel.com> References: <20170423170619.7156-1-chris@chris-wilson.co.uk> <20170425130049.26147-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 945426E326 for ; Tue, 25 Apr 2017 13:50:20 +0000 (UTC) In-Reply-To: <20170425130049.26147-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: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gV2UgbmVl ZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBsYXN0IGxvY2F0aW9uIHdlIGFzayB0aGUgaHcgdG8gcmVh ZCB1cCB0bwo+IChSSU5HX1RBSUwpIHNlcGFyYXRlbHkgZnJvbSBvdXIgbGFzdCB3cml0ZSBsb2Nh dGlvbiBpbnRvIHRoZSByaW5nLCBzbwo+IHRoYXQgaW4gdGhlIGV2ZW50IG9mIGEgR1BVIHJlc2V0 IHdlIGRvIG5vdCB0ZWxsIHRoZSBIVyB0byBwcm9jZWVkIGludG8KPiBhIHBhcnRpYWxseSB3cml0 dGVuIHJlcXVlc3QgKHdoaWNoIGNhbiBoYXBwZW4gaWYgdGhhdCByZXF1ZXN0IGlzIHdhaXRpbmcK PiBmb3IgYW4gZXh0ZXJuYWwgc2lnbmFsIGJlZm9yZSBiZWluZyBleGVjdXRlZCkuCj4KPiB2Mjog UmVmYWN0b3IgaW50ZWxfcmluZ19yZXNldCgpIChNaWthKQo+Cj4gQnVnemlsbGE6IGh0dHBzOi8v YnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDE0NAo+IFRlc3RjYXNlOiBp Z3QvZ2VtX2V4ZWNfZmVuY2UvYXdhaXQtaGFuZwo+IEZpeGVzOiA4MjFlZDdkZjZlMmEgKCJkcm0v aTkxNTogVXBkYXRlIHJlc2V0IHBhdGggdG8gZml4IGluY29tcGxldGUgcmVxdWVzdHMiKQo+IEZp eGVzOiBkNTVhYzViZjk3YzYgKCJkcm0vaTkxNTogRGVmZXIgdHJhbnNmZXIgb250byBleGVjdXRp b24gdGltZWxpbmUgdG8gYWN0dWFsIGh3IHN1Ym1pc3Npb24iKQo+IFNpZ25lZC1vZmYtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxp biA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IENjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1 b3BwYWxhQGludGVsLmNvbT4KClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3Bw YWxhQGludGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Jl cXVlc3QuYyAgICB8IDE2ICsrKysrKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19zdWJtaXNzaW9uLmMgfCAgNCArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgICAgICAgICAgIHwgIDYgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8IDE5ICsrKysrKysrKysr Ky0tCj4gIDUgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4gaW5kZXggZTJlYzQy YjJiZjI0Li4xMjZjZDEzYWJmNTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cmVxdWVzdC5jCj4gQEAgLTI4MywxMCArMjgzLDE4IEBAIHN0YXRpYyB2b2lkIGFkdmFuY2Vfcmlu ZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIAkgKiBOb3RlIHRoaXMg cmVxdWlyZXMgdGhhdCB3ZSBhcmUgYWx3YXlzIGNhbGxlZCBpbiByZXF1ZXN0Cj4gIAkgKiBjb21w bGV0aW9uIG9yZGVyLgo+ICAJICovCj4gLQlpZiAobGlzdF9pc19sYXN0KCZyZXF1ZXN0LT5yaW5n X2xpbmssICZyZXF1ZXN0LT5yaW5nLT5yZXF1ZXN0X2xpc3QpKQo+IC0JCXRhaWwgPSByZXF1ZXN0 LT5yaW5nLT50YWlsOwo+IC0JZWxzZQo+ICsJaWYgKGxpc3RfaXNfbGFzdCgmcmVxdWVzdC0+cmlu Z19saW5rLCAmcmVxdWVzdC0+cmluZy0+cmVxdWVzdF9saXN0KSkgewo+ICsJCS8qIFdlIG1heSBy YWNlIGhlcmUgd2l0aCBleGVjbGlzdHMgcmVzdWJtaXR0aW5nIHRoaXMgcmVxdWVzdAo+ICsJCSAq IGFzIHdlIHJldGlyZSBpdC4gVGhlIHJlc3VibWlzc2lvbiB3aWxsIG1vdmUgdGhlIHJpbmctPnRh aWwKPiArCQkgKiBmb3J3YXJkcyAodG8gcmVxdWVzdC0+d2FfdGFpbCkuIFdlIGVpdGhlciByZWFk IHRoZQo+ICsJCSAqIGN1cnJlbnQgdmFsdWUgdGhhdCB3YXMgd3JpdHRlbiB0byBodywgb3IgdGhl IHZhbHVlIHRoYXQKPiArCQkgKiBpcyBqdXN0IGFib3V0IHRvIGJlLiBFaXRoZXIgd29ya3MsIGlm IHdlIG1pc3MgdGhlIGxhc3QgdHdvCj4gKwkJICogbm9vcHMgLSB0aGV5IGFyZSBzYWZlIHRvIGJl IHJlcGxheWVkIG9uIGEgcmVzZXQuCj4gKwkJICovCj4gKwkJdGFpbCA9IFJFQURfT05DRShyZXF1 ZXN0LT5yaW5nLT50YWlsKTsKPiArCX0gZWxzZSB7Cj4gIAkJdGFpbCA9IHJlcXVlc3QtPnBvc3Rm aXg7Cj4gKwl9Cj4gIAlsaXN0X2RlbCgmcmVxdWVzdC0+cmluZ19saW5rKTsKPiAgCj4gIAlyZXF1 ZXN0LT5yaW5nLT5oZWFkID0gdGFpbDsKPiBAQCAtNjUxLDcgKzY1OSw3IEBAIGk5MTVfZ2VtX3Jl cXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJICogR1BVIHBy b2Nlc3NpbmcgdGhlIHJlcXVlc3QsIHdlIG5ldmVyIG92ZXItZXN0aW1hdGUgdGhlCj4gIAkgKiBw b3NpdGlvbiBvZiB0aGUgaGVhZC4KPiAgCSAqLwo+IC0JcmVxLT5oZWFkID0gcmVxLT5yaW5nLT50 YWlsOwo+ICsJcmVxLT5oZWFkID0gcmVxLT5yaW5nLT5lbWl0Owo+ICAKPiAgCS8qIENoZWNrIHRo YXQgd2UgZGlkbid0IGludGVycnVwdCBvdXJzZWx2ZXMgd2l0aCBhIG5ldyByZXF1ZXN0ICovCj4g IAlHRU1fQlVHX09OKHJlcS0+dGltZWxpbmUtPnNlcW5vICE9IHJlcS0+ZmVuY2Uuc2Vxbm8pOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCAxNjQy ZmZmOWNmMTMuLmFiNTE0MGJhMTA4ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtNDgwLDkgKzQ4MCw3IEBAIHN0YXRpYyB2b2lkIGd1Y193 cV9pdGVtX2FwcGVuZChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQsCj4gIAlHRU1fQlVH X09OKGZyZWVzcGFjZSA8IHdxaV9zaXplKTsKPiAgCj4gIAkvKiBUaGUgR3VDIGZpcm13YXJlIHdh bnRzIHRoZSB0YWlsIGluZGV4IGluIFFXb3Jkcywgbm90IGJ5dGVzICovCj4gLQl0YWlsID0gcnEt PnRhaWw7Cj4gLQlhc3NlcnRfcmluZ190YWlsX3ZhbGlkKHJxLT5yaW5nLCBycS0+dGFpbCk7Cj4g LQl0YWlsID4+PSAzOwo+ICsJdGFpbCA9IGludGVsX3Jpbmdfc2V0X3RhaWwocnEtPnJpbmcsIHJx LT50YWlsKSA+PiAzOwo+ICAJR0VNX0JVR19PTih0YWlsID4gV1FfUklOR19UQUlMX01BWCk7Cj4g IAo+ICAJLyogRm9yIG5vdyB3b3JrcXVldWUgaXRlbSBpcyA0IERXczsgd29ya3F1ZXVlIGJ1ZmZl ciBpcyAyIHBhZ2VzLiBTbyB3ZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggN2Rm Mjc4ZmU0OTJlLi4xMzA1N2EzNzM5MGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ IEBAIC0zMjYsOCArMzI2LDcgQEAgc3RhdGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPiAgCQlycS0+Y3R4LT5wcGd0dCA/OiBy cS0+aTkxNS0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4gIAl1MzIgKnJlZ19zdGF0ZSA9IGNlLT5scmNf cmVnX3N0YXRlOwo+ICAKPiAtCWFzc2VydF9yaW5nX3RhaWxfdmFsaWQocnEtPnJpbmcsIHJxLT50 YWlsKTsKPiAtCXJlZ19zdGF0ZVtDVFhfUklOR19UQUlMKzFdID0gcnEtPnRhaWw7Cj4gKwlyZWdf c3RhdGVbQ1RYX1JJTkdfVEFJTCsxXSA9IGludGVsX3Jpbmdfc2V0X3RhaWwocnEtPnJpbmcsIHJx LT50YWlsKTsKPiAgCj4gIAkvKiBUcnVlIDMyYiBQUEdUVCB3aXRoIGR5bmFtaWMgcGFnZSBhbGxv Y2F0aW9uOiB1cGRhdGUgUERQCj4gIAkgKiByZWdpc3RlcnMgYW5kIHBvaW50IHRoZSB1bmFsbG9j YXRlZCBQRFBzIHRvIHNjcmF0Y2ggcGFnZS4KPiBAQCAtMjA1NCw4ICsyMDUzLDcgQEAgdm9pZCBp bnRlbF9scl9jb250ZXh0X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAkJCWNlLT5zdGF0ZS0+b2JqLT5tbS5kaXJ0eSA9IHRydWU7Cj4gIAkJCWk5MTVfZ2VtX29i amVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwo+ICAKPiAtCQkJY2UtPnJpbmctPmhlYWQg PSBjZS0+cmluZy0+dGFpbCA9IDA7Cj4gLQkJCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKGNlLT5y aW5nKTsKPiArCQkJaW50ZWxfcmluZ19yZXNldChjZS0+cmluZywgMCk7Cj4gIAkJfQo+ICAJfQo+ ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IDMyYWZh YzZjNzU0Zi4uMjI3ZGZjZjE3NjRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYwo+IEBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9yaW5nX3Nw YWNlKGludCBoZWFkLCBpbnQgdGFpbCwgaW50IHNpemUpCj4gIAo+ICB2b2lkIGludGVsX3Jpbmdf dXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQo+ICB7Cj4gLQlyaW5nLT5zcGFj ZSA9IF9faW50ZWxfcmluZ19zcGFjZShyaW5nLT5oZWFkLCByaW5nLT50YWlsLCByaW5nLT5zaXpl KTsKPiArCXJpbmctPnNwYWNlID0gX19pbnRlbF9yaW5nX3NwYWNlKHJpbmctPmhlYWQsIHJpbmct PmVtaXQsIHJpbmctPnNpemUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gQEAgLTc3NCw4ICs3 NzQsOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCj4gIAlpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChyZXF1 ZXN0KTsKPiAgCj4gLQlhc3NlcnRfcmluZ190YWlsX3ZhbGlkKHJlcXVlc3QtPnJpbmcsIHJlcXVl c3QtPnRhaWwpOwo+IC0JSTkxNV9XUklURV9UQUlMKHJlcXVlc3QtPmVuZ2luZSwgcmVxdWVzdC0+ dGFpbCk7Cj4gKwlJOTE1X1dSSVRFX1RBSUwocmVxdWVzdC0+ZW5naW5lLAo+ICsJCQlpbnRlbF9y aW5nX3NldF90YWlsKHJlcXVlc3QtPnJpbmcsIHJlcXVlc3QtPnRhaWwpKTsKPiAgfQo+ICAKPiAg c3RhdGljIHZvaWQgaTl4eF9lbWl0X2JyZWFkY3J1bWIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiAqY3MpCj4gQEAgLTEzMTksMTEgKzEzMTksMjMgQEAgaW50IGludGVsX3Jp bmdfcGluKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLAo+ICAJcmV0dXJuIFBUUl9FUlIoYWRkcik7 Cj4gIH0KPiAgCj4gK3ZvaWQgaW50ZWxfcmluZ19yZXNldChzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZywgdTMyIHRhaWwpCj4gK3sKPiArCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnJpbmctPnJlcXVl c3RfbGlzdCkpOwo+ICsJcmluZy0+dGFpbCA9IHRhaWw7Cj4gKwlyaW5nLT5oZWFkID0gdGFpbDsK PiArCXJpbmctPmVtaXQgPSB0YWlsOwo+ICsJaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZyk7 Cj4gK30KPiArCj4gIHZvaWQgaW50ZWxfcmluZ191bnBpbihzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZykKPiAgewo+ICAJR0VNX0JVR19PTighcmluZy0+dm1hKTsKPiAgCUdFTV9CVUdfT04oIXJpbmct PnZhZGRyKTsKPiAgCj4gKwkvKiBEaXNjYXJkIGFueSB1bnVzZWQgYnl0ZXMgYmV5b25kIHRoYXQg c3VibWl0dGVkIHRvIGh3LiAqLwo+ICsJaW50ZWxfcmluZ19yZXNldChyaW5nLCByaW5nLT50YWls KTsKPiArCj4gIAlpZiAoaTkxNV92bWFfaXNfbWFwX2FuZF9mZW5jZWFibGUocmluZy0+dm1hKSkK PiAgCQlpOTE1X3ZtYV91bnBpbl9pb21hcChyaW5nLT52bWEpOwo+ICAJZWxzZQo+IEBAIC0xNTU1 LDggKzE1NjcsOSBAQCB2b2lkIGludGVsX2xlZ2FjeV9zdWJtaXNzaW9uX3Jlc3VtZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgCj4gKwkvKiBSZXN0YXJ0IGZy b20gdGhlIGJlZ2lubmluZyBvZiB0aGUgcmluZ3MgZm9yIGNvbnZlbmllbmNlICovCj4gIAlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpCj4gLQkJZW5naW5lLT5idWZmZXItPmhl YWQgPSBlbmdpbmUtPmJ1ZmZlci0+dGFpbDsKPiArCQlpbnRlbF9yaW5nX3Jlc2V0KGVuZ2luZS0+ YnVmZmVyLCAwKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCByaW5nX3JlcXVlc3RfYWxsb2Moc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+IEBAIC0xNjA5LDcgKzE2MjIsNyBA QCBzdGF0aWMgaW50IHdhaXRfZm9yX3NwYWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLCBpbnQgYnl0ZXMpCj4gIAkJdW5zaWduZWQgc3BhY2U7Cj4gIAo+ICAJCS8qIFdvdWxkIGNv bXBsZXRpb24gb2YgdGhpcyByZXF1ZXN0IGZyZWUgZW5vdWdoIHNwYWNlPyAqLwo+IC0JCXNwYWNl ID0gX19pbnRlbF9yaW5nX3NwYWNlKHRhcmdldC0+cG9zdGZpeCwgcmluZy0+dGFpbCwKPiArCQlz cGFjZSA9IF9faW50ZWxfcmluZ19zcGFjZSh0YXJnZXQtPnBvc3RmaXgsIHJpbmctPmVtaXQsCj4g IAkJCQkJICAgcmluZy0+c2l6ZSk7Cj4gIAkJaWYgKHNwYWNlID49IGJ5dGVzKQo+ICAJCQlicmVh azsKPiBAQCAtMTYzNCw4ICsxNjQ3LDggQEAgc3RhdGljIGludCB3YWl0X2Zvcl9zcGFjZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IGJ5dGVzKQo+ICB1MzIgKmludGVsX3Jp bmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdvcmRz KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKPiAtCWludCBy ZW1haW5fYWN0dWFsID0gcmluZy0+c2l6ZSAtIHJpbmctPnRhaWw7Cj4gLQlpbnQgcmVtYWluX3Vz YWJsZSA9IHJpbmctPmVmZmVjdGl2ZV9zaXplIC0gcmluZy0+dGFpbDsKPiArCWludCByZW1haW5f YWN0dWFsID0gcmluZy0+c2l6ZSAtIHJpbmctPmVtaXQ7Cj4gKwlpbnQgcmVtYWluX3VzYWJsZSA9 IHJpbmctPmVmZmVjdGl2ZV9zaXplIC0gcmluZy0+ZW1pdDsKPiAgCWludCBieXRlcyA9IG51bV9k d29yZHMgKiBzaXplb2YodTMyKTsKPiAgCWludCB0b3RhbF9ieXRlcywgd2FpdF9ieXRlczsKPiAg CWJvb2wgbmVlZF93cmFwID0gZmFsc2U7Cj4gQEAgLTE2NzEsMTcgKzE2ODQsMTcgQEAgdTMyICpp bnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbnVt X2R3b3JkcykKPiAgCj4gIAlpZiAodW5saWtlbHkobmVlZF93cmFwKSkgewo+ICAJCUdFTV9CVUdf T04ocmVtYWluX2FjdHVhbCA+IHJpbmctPnNwYWNlKTsKPiAtCQlHRU1fQlVHX09OKHJpbmctPnRh aWwgKyByZW1haW5fYWN0dWFsID4gcmluZy0+c2l6ZSk7Cj4gKwkJR0VNX0JVR19PTihyaW5nLT5l bWl0ICsgcmVtYWluX2FjdHVhbCA+IHJpbmctPnNpemUpOwo+ICAKPiAgCQkvKiBGaWxsIHRoZSB0 YWlsIHdpdGggTUlfTk9PUCAqLwo+IC0JCW1lbXNldChyaW5nLT52YWRkciArIHJpbmctPnRhaWws IDAsIHJlbWFpbl9hY3R1YWwpOwo+IC0JCXJpbmctPnRhaWwgPSAwOwo+ICsJCW1lbXNldChyaW5n LT52YWRkciArIHJpbmctPmVtaXQsIDAsIHJlbWFpbl9hY3R1YWwpOwo+ICsJCXJpbmctPmVtaXQg PSAwOwo+ICAJCXJpbmctPnNwYWNlIC09IHJlbWFpbl9hY3R1YWw7Cj4gIAl9Cj4gIAo+IC0JR0VN X0JVR19PTihyaW5nLT50YWlsID4gcmluZy0+c2l6ZSAtIGJ5dGVzKTsKPiAtCWNzID0gcmluZy0+ dmFkZHIgKyByaW5nLT50YWlsOwo+IC0JcmluZy0+dGFpbCArPSBieXRlczsKPiArCUdFTV9CVUdf T04ocmluZy0+ZW1pdCA+IHJpbmctPnNpemUgLSBieXRlcyk7Cj4gKwljcyA9IHJpbmctPnZhZGRy ICsgcmluZy0+ZW1pdDsKPiArCXJpbmctPmVtaXQgKz0gYnl0ZXM7Cj4gIAlyaW5nLT5zcGFjZSAt PSBieXRlczsKPiAgCUdFTV9CVUdfT04ocmluZy0+c3BhY2UgPCAwKTsKPiAgCj4gQEAgLTE2OTIs NyArMTcwNSw3IEBAIHUzMiAqaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwgaW50IG51bV9kd29yZHMpCj4gIGludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9h bGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgewo+ICAJaW50IG51bV9k d29yZHMgPQo+IC0JCShyZXEtPnJpbmctPnRhaWwgJiAoQ0FDSEVMSU5FX0JZVEVTIC0gMSkpIC8g c2l6ZW9mKHVpbnQzMl90KTsKPiArCQkocmVxLT5yaW5nLT5lbWl0ICYgKENBQ0hFTElORV9CWVRF UyAtIDEpKSAvIHNpemVvZih1aW50MzJfdCk7Cj4gIAl1MzIgKmNzOwo+ICAKPiAgCWlmIChudW1f ZHdvcmRzID09IDApCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGlu ZGV4IDAwZDM2YWE0ZTI2ZC4uOTY3MTBiNjE2ZWZiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0xNDMsNiArMTQzLDcgQEAgc3RydWN0IGludGVsX3Jp bmcgewo+ICAKPiAgCXUzMiBoZWFkOwo+ICAJdTMyIHRhaWw7Cj4gKwl1MzIgZW1pdDsKPiAgCj4g IAlpbnQgc3BhY2U7Cj4gIAlpbnQgc2l6ZTsKPiBAQCAtNDk0LDYgKzQ5NSw4IEBAIGludGVsX2Vu Z2luZV9jcmVhdGVfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBzaXpl KTsKPiAgaW50IGludGVsX3JpbmdfcGluKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLAo+ICAJCSAg IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJCSAgIHVuc2lnbmVkIGludCBvZmZz ZXRfYmlhcyk7Cj4gK3ZvaWQgaW50ZWxfcmluZ19yZXNldChzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZywgdTMyIHRhaWwpOwo+ICt2b2lkIGludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRl bF9yaW5nICpyaW5nKTsKPiAgdm9pZCBpbnRlbF9yaW5nX3VucGluKHN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nKTsKPiAgdm9pZCBpbnRlbF9yaW5nX2ZyZWUoc3RydWN0IGludGVsX3JpbmcgKnJpbmcp Owo+ICAKPiBAQCAtNTE3LDcgKzUyMCw3IEBAIGludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyICpjcykKPiAgCSAqIHJlc2VydmVkIGZvciB0aGUg Y29tbWFuZCBwYWNrZXQgKGkuZS4gdGhlIHZhbHVlIHBhc3NlZCB0bwo+ICAJICogaW50ZWxfcmlu Z19iZWdpbigpKS4KPiAgCSAqLwo+IC0JR0VNX0JVR19PTigocmVxLT5yaW5nLT52YWRkciArIHJl cS0+cmluZy0+dGFpbCkgIT0gY3MpOwo+ICsJR0VNX0JVR19PTigocmVxLT5yaW5nLT52YWRkciAr IHJlcS0+cmluZy0+ZW1pdCkgIT0gY3MpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHUzMgo+ IEBAIC01NDYsNyArNTQ5LDE5IEBAIGFzc2VydF9yaW5nX3RhaWxfdmFsaWQoY29uc3Qgc3RydWN0 IGludGVsX3JpbmcgKnJpbmcsIHVuc2lnbmVkIGludCB0YWlsKQo+ICAJR0VNX0JVR19PTih0YWls ID49IHJpbmctPnNpemUpOwo+ICB9Cj4gIAo+IC12b2lkIGludGVsX3JpbmdfdXBkYXRlX3NwYWNl KHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKTsKPiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQK PiAraW50ZWxfcmluZ19zZXRfdGFpbChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdW5zaWduZWQg aW50IHRhaWwpCj4gK3sKPiArCS8qIFdoaWxzdCB3cml0ZXMgdG8gdGhlIHRhaWwgYXJlIHN0cmlj dGx5IG9yZGVyLCB0aGVyZSBpcyBubwo+ICsJICogc2VyaWFsaXNhdGlvbiBiZXR3ZWVuIHJlYWRl cnMgYW5kIHRoZSB3cml0ZXJzLiBUaGUgdGFpbCBtYXkgYmUKPiArCSAqIHJlYWQgYnkgaTkxNV9n ZW1fcmVxdWVzdF9yZXRpcmUoKSBqdXN0IGFzIGl0IGlzIGJlaW5nIHVwZGF0ZWQKPiArCSAqIGJ5 IGV4ZWNsaXN0cywgYXMgYWx0aG91Z2ggdGhlIGJyZWFkY3J1bWIgaXMgY29tcGxldGUsIHRoZSBj b250ZXh0Cj4gKwkgKiBzd2l0Y2ggaGFzbid0IGJlZW4gc2Vlbi4KPiArCSAqLwo+ICsJYXNzZXJ0 X3JpbmdfdGFpbF92YWxpZChyaW5nLCB0YWlsKTsKPiArCXJpbmctPnRhaWwgPSB0YWlsOwo+ICsJ cmV0dXJuIHRhaWw7Cj4gK30KPiAgCj4gIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZ2xvYmFsX3Nl cW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKTsKPiAgCj4gLS0g Cj4gMi4xMS4wCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==