From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Differentiate between sw write location into ring and last hw read Date: Mon, 19 Jun 2017 11:21:09 +0300 Message-ID: <8760fse6bu.fsf@intel.com> References: <87r2zqe1e2.fsf@intel.com> <20170615131129.3061-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 565C86E159 for ; Mon, 19 Jun 2017 08:17:52 +0000 (UTC) In-Reply-To: <20170615131129.3061-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 Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxNSBKdW4gMjAxNywgQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+IHdyb3RlOgo+IFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbGFzdCBsb2NhdGlvbiB3 ZSBhc2sgdGhlIGh3IHRvIHJlYWQgdXAgdG8KPiAoUklOR19UQUlMKSBzZXBhcmF0ZWx5IGZyb20g b3VyIGxhc3Qgd3JpdGUgbG9jYXRpb24gaW50byB0aGUgcmluZywgc28KPiB0aGF0IGluIHRoZSBl dmVudCBvZiBhIEdQVSByZXNldCB3ZSBkbyBub3QgdGVsbCB0aGUgSFcgdG8gcHJvY2VlZCBpbnRv Cj4gYSBwYXJ0aWFsbHkgd3JpdHRlbiByZXF1ZXN0ICh3aGljaCBjYW4gaGFwcGVuIGlmIHRoYXQg cmVxdWVzdCBpcyB3YWl0aW5nCj4gZm9yIGFuIGV4dGVybmFsIHNpZ25hbCBiZWZvcmUgYmVpbmcg ZXhlY3V0ZWQpLgo+Cj4gdjI6IFJlZmFjdG9yIGludGVsX3JpbmdfcmVzZXQoKSAoTWlrYSkKPgo+ IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0x MDAxNDQKPiBUZXN0Y2FzZTogaWd0L2dlbV9leGVjX2ZlbmNlL2F3YWl0LWhhbmcKPiBGaXhlczog ODIxZWQ3ZGY2ZTJhICgiZHJtL2k5MTU6IFVwZGF0ZSByZXNldCBwYXRoIHRvIGZpeCBpbmNvbXBs ZXRlIHJlcXVlc3RzIikKPiBGaXhlczogZDU1YWM1YmY5N2M2ICgiZHJtL2k5MTU6IERlZmVyIHRy YW5zZmVyIG9udG8gZXhlY3V0aW9uIHRpbWVsaW5lIHRvIGFjdHVhbCBodyBzdWJtaXNzaW9uIikK PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K PiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBDYzogTWlr YSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+Cj4gTGluazogaHR0cDovL3BhdGNo d29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvbXNnaWQvMjAxNzA0MjUxMzAwNDkuMjYxNDctMS1j aHJpc0BjaHJpcy13aWxzb24uY28udWsKPiBSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8bWlr YS5rdW9wcGFsYUBpbnRlbC5jb20+Cj4gKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZTZiYTk5 OTJkZTZjNjNmZTg2YzAyOGI0ODc2MzM4ZTFjYjdkYWMzNCkKClRoYW5rcywgcGlja2VkIHVwIHRv IGRybS1pbnRlbC1maXhlcy4KCkJSLApKYW5pLgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVxdWVzdC5jICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgIDQgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jICAgICAgICAgICB8ICA2ICsrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYyAgICB8IDQxICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggICAgfCAxOSArKysrKysr KysrKystLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9u cygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IGluZGV4IDVk ZGJjOTQ5OTc3NS4uYTc0ZDBhYzczN2NiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlcXVlc3QuYwo+IEBAIC02MjMsNyArNjIzLDcgQEAgaTkxNV9nZW1fcmVxdWVzdF9hbGxv YyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAkgKiBHUFUgcHJvY2Vzc2luZyB0 aGUgcmVxdWVzdCwgd2UgbmV2ZXIgb3Zlci1lc3RpbWF0ZSB0aGUKPiAgCSAqIHBvc2l0aW9uIG9m IHRoZSBoZWFkLgo+ICAJICovCj4gLQlyZXEtPmhlYWQgPSByZXEtPnJpbmctPnRhaWw7Cj4gKwly ZXEtPmhlYWQgPSByZXEtPnJpbmctPmVtaXQ7Cj4gIAo+ICAJLyogQ2hlY2sgdGhhdCB3ZSBkaWRu J3QgaW50ZXJydXB0IG91cnNlbHZlcyB3aXRoIGEgbmV3IHJlcXVlc3QgKi8KPiAgCUdFTV9CVUdf T04ocmVxLT50aW1lbGluZS0+c2Vxbm8gIT0gcmVxLT5mZW5jZS5zZXFubyk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDE2NDJmZmY5Y2YxMy4u YWI1MTQwYmExMDhkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Vj X3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1p c3Npb24uYwo+IEBAIC00ODAsOSArNDgwLDcgQEAgc3RhdGljIHZvaWQgZ3VjX3dxX2l0ZW1fYXBw ZW5kKHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCwKPiAgCUdFTV9CVUdfT04oZnJlZXNw YWNlIDwgd3FpX3NpemUpOwo+ICAKPiAgCS8qIFRoZSBHdUMgZmlybXdhcmUgd2FudHMgdGhlIHRh aWwgaW5kZXggaW4gUVdvcmRzLCBub3QgYnl0ZXMgKi8KPiAtCXRhaWwgPSBycS0+dGFpbDsKPiAt CWFzc2VydF9yaW5nX3RhaWxfdmFsaWQocnEtPnJpbmcsIHJxLT50YWlsKTsKPiAtCXRhaWwgPj49 IDM7Cj4gKwl0YWlsID0gaW50ZWxfcmluZ19zZXRfdGFpbChycS0+cmluZywgcnEtPnRhaWwpID4+ IDM7Cj4gIAlHRU1fQlVHX09OKHRhaWwgPiBXUV9SSU5HX1RBSUxfTUFYKTsKPiAgCj4gIAkvKiBG b3Igbm93IHdvcmtxdWV1ZSBpdGVtIGlzIDQgRFdzOyB3b3JrcXVldWUgYnVmZmVyIGlzIDIgcGFn ZXMuIFNvIHdlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCBjOGY3YzYzMWZjMWYu LjEwYzYzZGJkNjE3YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTMyNiw4 ICszMjYsNyBAQCBzdGF0aWMgdTY0IGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICAJCXJxLT5jdHgtPnBwZ3R0ID86IHJxLT5pOTE1LT5t bS5hbGlhc2luZ19wcGd0dDsKPiAgCXUzMiAqcmVnX3N0YXRlID0gY2UtPmxyY19yZWdfc3RhdGU7 Cj4gIAo+IC0JYXNzZXJ0X3JpbmdfdGFpbF92YWxpZChycS0+cmluZywgcnEtPnRhaWwpOwo+IC0J cmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSBycS0+dGFpbDsKPiArCXJlZ19zdGF0ZVtDVFhf UklOR19UQUlMKzFdID0gaW50ZWxfcmluZ19zZXRfdGFpbChycS0+cmluZywgcnEtPnRhaWwpOwo+ ICAKPiAgCS8qIFRydWUgMzJiIFBQR1RUIHdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVw ZGF0ZSBQRFAKPiAgCSAqIHJlZ2lzdGVycyBhbmQgcG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMg dG8gc2NyYXRjaCBwYWdlLgo+IEBAIC0yMDM2LDggKzIwMzUsNyBAQCB2b2lkIGludGVsX2xyX2Nv bnRleHRfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJY2Ut PnN0YXRlLT5vYmotPm1tLmRpcnR5ID0gdHJ1ZTsKPiAgCQkJaTkxNV9nZW1fb2JqZWN0X3VucGlu X21hcChjZS0+c3RhdGUtPm9iaik7Cj4gIAo+IC0JCQljZS0+cmluZy0+aGVhZCA9IGNlLT5yaW5n LT50YWlsID0gMDsKPiAtCQkJaW50ZWxfcmluZ191cGRhdGVfc3BhY2UoY2UtPnJpbmcpOwo+ICsJ CQlpbnRlbF9yaW5nX3Jlc2V0KGNlLT5yaW5nLCAwKTsKPiAgCQl9Cj4gIAl9Cj4gIH0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggNjZhMmI4YjgzOTcyLi41 MTNhMGY0YjQ2OWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j Cj4gQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGludCBfX2ludGVsX3Jpbmdfc3BhY2UoaW50IGhl YWQsIGludCB0YWlsLCBpbnQgc2l6ZSkKPiAgCj4gIHZvaWQgaW50ZWxfcmluZ191cGRhdGVfc3Bh Y2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCj4gIHsKPiAtCXJpbmctPnNwYWNlID0gX19pbnRl bF9yaW5nX3NwYWNlKHJpbmctPmhlYWQsIHJpbmctPnRhaWwsIHJpbmctPnNpemUpOwo+ICsJcmlu Zy0+c3BhY2UgPSBfX2ludGVsX3Jpbmdfc3BhY2UocmluZy0+aGVhZCwgcmluZy0+ZW1pdCwgcmlu Zy0+c2l6ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQKPiBAQCAtNzc0LDggKzc3NCw4IEBAIHN0 YXRpYyB2b2lkIGk5eHhfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0KQo+ICAKPiAgCWk5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KHJlcXVlc3QpOwo+ICAK PiAtCWFzc2VydF9yaW5nX3RhaWxfdmFsaWQocmVxdWVzdC0+cmluZywgcmVxdWVzdC0+dGFpbCk7 Cj4gLQlJOTE1X1dSSVRFX1RBSUwocmVxdWVzdC0+ZW5naW5lLCByZXF1ZXN0LT50YWlsKTsKPiAr CUk5MTVfV1JJVEVfVEFJTChyZXF1ZXN0LT5lbmdpbmUsCj4gKwkJCWludGVsX3Jpbmdfc2V0X3Rh aWwocmVxdWVzdC0+cmluZywgcmVxdWVzdC0+dGFpbCkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9p ZCBpOXh4X2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwg dTMyICpjcykKPiBAQCAtMTMxNiwxMSArMTMxNiwyMyBAQCBpbnQgaW50ZWxfcmluZ19waW4oc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcsIHVuc2lnbmVkIGludCBvZmZzZXRfYmlhcykKPiAgCXJldHVy biBQVFJfRVJSKGFkZHIpOwo+ICB9Cj4gIAo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXQoc3RydWN0 IGludGVsX3JpbmcgKnJpbmcsIHUzMiB0YWlsKQo+ICt7Cj4gKwlHRU1fQlVHX09OKCFsaXN0X2Vt cHR5KCZyaW5nLT5yZXF1ZXN0X2xpc3QpKTsKPiArCXJpbmctPnRhaWwgPSB0YWlsOwo+ICsJcmlu Zy0+aGVhZCA9IHRhaWw7Cj4gKwlyaW5nLT5lbWl0ID0gdGFpbDsKPiArCWludGVsX3JpbmdfdXBk YXRlX3NwYWNlKHJpbmcpOwo+ICt9Cj4gKwo+ICB2b2lkIGludGVsX3JpbmdfdW5waW4oc3RydWN0 IGludGVsX3JpbmcgKnJpbmcpCj4gIHsKPiAgCUdFTV9CVUdfT04oIXJpbmctPnZtYSk7Cj4gIAlH RU1fQlVHX09OKCFyaW5nLT52YWRkcik7Cj4gIAo+ICsJLyogRGlzY2FyZCBhbnkgdW51c2VkIGJ5 dGVzIGJleW9uZCB0aGF0IHN1Ym1pdHRlZCB0byBody4gKi8KPiArCWludGVsX3JpbmdfcmVzZXQo cmluZywgcmluZy0+dGFpbCk7Cj4gKwo+ICAJaWYgKGk5MTVfdm1hX2lzX21hcF9hbmRfZmVuY2Vh YmxlKHJpbmctPnZtYSkpCj4gIAkJaTkxNV92bWFfdW5waW5faW9tYXAocmluZy0+dm1hKTsKPiAg CWVsc2UKPiBAQCAtMTU2Miw4ICsxNTc0LDkgQEAgdm9pZCBpbnRlbF9sZWdhY3lfc3VibWlzc2lv bl9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAo+ ICsJLyogUmVzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJpbmdzIGZvciBjb252ZW5p ZW5jZSAqLwo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKQo+IC0JCWVu Z2luZS0+YnVmZmVyLT5oZWFkID0gZW5naW5lLT5idWZmZXItPnRhaWw7Cj4gKwkJaW50ZWxfcmlu Z19yZXNldChlbmdpbmUtPmJ1ZmZlciwgMCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgcmluZ19y ZXF1ZXN0X2FsbG9jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiBAQCAt MTYxNiw3ICsxNjI5LDcgQEAgc3RhdGljIGludCB3YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IGJ5dGVzKQo+ICAJCXVuc2lnbmVkIHNwYWNlOwo+ICAK PiAgCQkvKiBXb3VsZCBjb21wbGV0aW9uIG9mIHRoaXMgcmVxdWVzdCBmcmVlIGVub3VnaCBzcGFj ZT8gKi8KPiAtCQlzcGFjZSA9IF9faW50ZWxfcmluZ19zcGFjZSh0YXJnZXQtPnBvc3RmaXgsIHJp bmctPnRhaWwsCj4gKwkJc3BhY2UgPSBfX2ludGVsX3Jpbmdfc3BhY2UodGFyZ2V0LT5wb3N0Zml4 LCByaW5nLT5lbWl0LAo+ICAJCQkJCSAgIHJpbmctPnNpemUpOwo+ICAJCWlmIChzcGFjZSA+PSBi eXRlcykKPiAgCQkJYnJlYWs7Cj4gQEAgLTE2NDEsOCArMTY1NCw4IEBAIHN0YXRpYyBpbnQgd2Fp dF9mb3Jfc3BhY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBieXRlcykK PiAgdTMyICppbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LCBpbnQgbnVtX2R3b3JkcykKPiAgewo+ICAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEt PnJpbmc7Cj4gLQlpbnQgcmVtYWluX2FjdHVhbCA9IHJpbmctPnNpemUgLSByaW5nLT50YWlsOwo+ IC0JaW50IHJlbWFpbl91c2FibGUgPSByaW5nLT5lZmZlY3RpdmVfc2l6ZSAtIHJpbmctPnRhaWw7 Cj4gKwlpbnQgcmVtYWluX2FjdHVhbCA9IHJpbmctPnNpemUgLSByaW5nLT5lbWl0Owo+ICsJaW50 IHJlbWFpbl91c2FibGUgPSByaW5nLT5lZmZlY3RpdmVfc2l6ZSAtIHJpbmctPmVtaXQ7Cj4gIAlp bnQgYnl0ZXMgPSBudW1fZHdvcmRzICogc2l6ZW9mKHUzMik7Cj4gIAlpbnQgdG90YWxfYnl0ZXMs IHdhaXRfYnl0ZXM7Cj4gIAlib29sIG5lZWRfd3JhcCA9IGZhbHNlOwo+IEBAIC0xNjc4LDE3ICsx NjkxLDE3IEBAIHUzMiAqaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgaW50IG51bV9kd29yZHMpCj4gIAo+ICAJaWYgKHVubGlrZWx5KG5lZWRfd3JhcCkp IHsKPiAgCQlHRU1fQlVHX09OKHJlbWFpbl9hY3R1YWwgPiByaW5nLT5zcGFjZSk7Cj4gLQkJR0VN X0JVR19PTihyaW5nLT50YWlsICsgcmVtYWluX2FjdHVhbCA+IHJpbmctPnNpemUpOwo+ICsJCUdF TV9CVUdfT04ocmluZy0+ZW1pdCArIHJlbWFpbl9hY3R1YWwgPiByaW5nLT5zaXplKTsKPiAgCj4g IAkJLyogRmlsbCB0aGUgdGFpbCB3aXRoIE1JX05PT1AgKi8KPiAtCQltZW1zZXQocmluZy0+dmFk ZHIgKyByaW5nLT50YWlsLCAwLCByZW1haW5fYWN0dWFsKTsKPiAtCQlyaW5nLT50YWlsID0gMDsK PiArCQltZW1zZXQocmluZy0+dmFkZHIgKyByaW5nLT5lbWl0LCAwLCByZW1haW5fYWN0dWFsKTsK PiArCQlyaW5nLT5lbWl0ID0gMDsKPiAgCQlyaW5nLT5zcGFjZSAtPSByZW1haW5fYWN0dWFsOwo+ ICAJfQo+ICAKPiAtCUdFTV9CVUdfT04ocmluZy0+dGFpbCA+IHJpbmctPnNpemUgLSBieXRlcyk7 Cj4gLQljcyA9IHJpbmctPnZhZGRyICsgcmluZy0+dGFpbDsKPiAtCXJpbmctPnRhaWwgKz0gYnl0 ZXM7Cj4gKwlHRU1fQlVHX09OKHJpbmctPmVtaXQgPiByaW5nLT5zaXplIC0gYnl0ZXMpOwo+ICsJ Y3MgPSByaW5nLT52YWRkciArIHJpbmctPmVtaXQ7Cj4gKwlyaW5nLT5lbWl0ICs9IGJ5dGVzOwo+ ICAJcmluZy0+c3BhY2UgLT0gYnl0ZXM7Cj4gIAlHRU1fQlVHX09OKHJpbmctPnNwYWNlIDwgMCk7 Cj4gIAo+IEBAIC0xNjk5LDcgKzE3MTIsNyBAQCB1MzIgKmludGVsX3JpbmdfYmVnaW4oc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdvcmRzKQo+ICBpbnQgaW50ZWxf cmluZ19jYWNoZWxpbmVfYWxpZ24oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4g IHsKPiAgCWludCBudW1fZHdvcmRzID0KPiAtCQkocmVxLT5yaW5nLT50YWlsICYgKENBQ0hFTElO RV9CWVRFUyAtIDEpKSAvIHNpemVvZih1aW50MzJfdCk7Cj4gKwkJKHJlcS0+cmluZy0+ZW1pdCAm IChDQUNIRUxJTkVfQllURVMgLSAxKSkgLyBzaXplb2YodWludDMyX3QpOwo+ICAJdTMyICpjczsK PiAgCj4gIAlpZiAobnVtX2R3b3JkcyA9PSAwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKPiBpbmRleCBhODJhMDgwN2Y2NGQuLmY3MTQ0ZmUwOTYxMyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtMTQ1LDYgKzE0NSw3IEBA IHN0cnVjdCBpbnRlbF9yaW5nIHsKPiAgCj4gIAl1MzIgaGVhZDsKPiAgCXUzMiB0YWlsOwo+ICsJ dTMyIGVtaXQ7Cj4gIAo+ICAJaW50IHNwYWNlOwo+ICAJaW50IHNpemU7Cj4gQEAgLTQ4OCw2ICs0 ODksOCBAQCBpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIGludCByZWcsIHUzMiB2YWx1ZSkKPiAgc3RydWN0IGludGVsX3JpbmcgKgo+ICBpbnRl bF9lbmdpbmVfY3JlYXRlX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQg c2l6ZSk7Cj4gIGludCBpbnRlbF9yaW5nX3BpbihzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdW5z aWduZWQgaW50IG9mZnNldF9iaWFzKTsKPiArdm9pZCBpbnRlbF9yaW5nX3Jlc2V0KHN0cnVjdCBp bnRlbF9yaW5nICpyaW5nLCB1MzIgdGFpbCk7Cj4gK3ZvaWQgaW50ZWxfcmluZ191cGRhdGVfc3Bh Y2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpOwo+ICB2b2lkIGludGVsX3JpbmdfdW5waW4oc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcpOwo+ICB2b2lkIGludGVsX3JpbmdfZnJlZShzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyk7Cj4gIAo+IEBAIC01MTEsNyArNTE0LDcgQEAgaW50ZWxfcmluZ19hZHZh bmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgKmNzKQo+ICAJICogcmVz ZXJ2ZWQgZm9yIHRoZSBjb21tYW5kIHBhY2tldCAoaS5lLiB0aGUgdmFsdWUgcGFzc2VkIHRvCj4g IAkgKiBpbnRlbF9yaW5nX2JlZ2luKCkpLgo+ICAJICovCj4gLQlHRU1fQlVHX09OKChyZXEtPnJp bmctPnZhZGRyICsgcmVxLT5yaW5nLT50YWlsKSAhPSBjcyk7Cj4gKwlHRU1fQlVHX09OKChyZXEt PnJpbmctPnZhZGRyICsgcmVxLT5yaW5nLT5lbWl0KSAhPSBjcyk7Cj4gIH0KPiAgCj4gIHN0YXRp YyBpbmxpbmUgdTMyCj4gQEAgLTU0MCw3ICs1NDMsMTkgQEAgYXNzZXJ0X3JpbmdfdGFpbF92YWxp ZChjb25zdCBzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdW5zaWduZWQgaW50IHRhaWwpCj4gIAlH RU1fQlVHX09OKHRhaWwgPj0gcmluZy0+c2l6ZSk7Cj4gIH0KPiAgCj4gLXZvaWQgaW50ZWxfcmlu Z191cGRhdGVfc3BhY2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpOwo+ICtzdGF0aWMgaW5saW5l IHVuc2lnbmVkIGludAo+ICtpbnRlbF9yaW5nX3NldF90YWlsKHN0cnVjdCBpbnRlbF9yaW5nICpy aW5nLCB1bnNpZ25lZCBpbnQgdGFpbCkKPiArewo+ICsJLyogV2hpbHN0IHdyaXRlcyB0byB0aGUg dGFpbCBhcmUgc3RyaWN0bHkgb3JkZXIsIHRoZXJlIGlzIG5vCj4gKwkgKiBzZXJpYWxpc2F0aW9u IGJldHdlZW4gcmVhZGVycyBhbmQgdGhlIHdyaXRlcnMuIFRoZSB0YWlsIG1heSBiZQo+ICsJICog cmVhZCBieSBpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZSgpIGp1c3QgYXMgaXQgaXMgYmVpbmcgdXBk YXRlZAo+ICsJICogYnkgZXhlY2xpc3RzLCBhcyBhbHRob3VnaCB0aGUgYnJlYWRjcnVtYiBpcyBj b21wbGV0ZSwgdGhlIGNvbnRleHQKPiArCSAqIHN3aXRjaCBoYXNuJ3QgYmVlbiBzZWVuLgo+ICsJ ICovCj4gKwlhc3NlcnRfcmluZ190YWlsX3ZhbGlkKHJpbmcsIHRhaWwpOwo+ICsJcmluZy0+dGFp bCA9IHRhaWw7Cj4gKwlyZXR1cm4gdGFpbDsKPiArfQo+ICAKPiAgdm9pZCBpbnRlbF9lbmdpbmVf aW5pdF9nbG9iYWxfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vx bm8pOwoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRl cgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK