From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 1/4] drm/i915: Differentiate between sw write location into ring and last hw read Date: Mon, 24 Apr 2017 15:21:56 +0300 Message-ID: <87fugy2dy3.fsf@gaia.fi.intel.com> References: <20170423170619.7156-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id E1CA16E062 for ; Mon, 24 Apr 2017 12:22:14 +0000 (UTC) In-Reply-To: <20170423170619.7156-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 PiBmb3IgYW4gZXh0ZXJuYWwgc2lnbmFsIGJlZm9yZSBiZWluZyBleGVjdXRlZCkuCgpCdXQgaXMg aXQgc28gdGhhdCB0aGlzIGNhbiBoYXBwZW4gYWxzbyB3aXRob3V0IGV4dGVybmFsIHNpZ25hbD8K T3VyIHN1Ym1pdCBpcyBhbHJlYWR5IGFzeW5jIGFuZCB3YWl0aW5nIGZvciB0aGUgcHJldi4gQW5k IHdlIGhhdmUKYWxyZWFkeSBwdXNoZWQgdGhlIHRhaWwgaW50byB0aGUgcGFydGlhbCAnY3VycmVu dCcuCgotTWlrYQoKPgo+IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3No b3dfYnVnLmNnaT9pZD0xMDAxNDQKPiBUZXN0Y2FzZTogaWd0L2dlbV9leGVjX2ZlbmNlL2F3YWl0 LWhhbmcKPiBGaXhlczogODIxZWQ3ZGY2ZTJhICgiZHJtL2k5MTU6IFVwZGF0ZSByZXNldCBwYXRo IHRvIGZpeCBpbmNvbXBsZXRlIHJlcXVlc3RzIikKPiBGaXhlczogZDU1YWM1YmY5N2M2ICgiZHJt L2k5MTU6IERlZmVyIHRyYW5zZmVyIG9udG8gZXhlY3V0aW9uIHRpbWVsaW5lIHRvIGFjdHVhbCBo dyBzdWJtaXNzaW9uIikKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KPiBDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+Cj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyAgICB8ICAyICstCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICA0ICstLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAgNiArKy0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgfCA0MiArKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oICAgIHwgMTcgKysrKysrKysrKystCj4gIDUgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0 aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cmVxdWVzdC5jCj4gaW5kZXggZTJlYzQyYjJiZjI0Li45OTE0NmRlMWRjOTMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4gQEAgLTY1MSw3ICs2NTEsNyBAQCBp OTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAg CSAqIEdQVSBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LCB3ZSBuZXZlciBvdmVyLWVzdGltYXRlIHRo ZQo+ICAJICogcG9zaXRpb24gb2YgdGhlIGhlYWQuCj4gIAkgKi8KPiAtCXJlcS0+aGVhZCA9IHJl cS0+cmluZy0+dGFpbDsKPiArCXJlcS0+aGVhZCA9IHJlcS0+cmluZy0+ZW1pdDsKPiAgCj4gIAkv KiBDaGVjayB0aGF0IHdlIGRpZG4ndCBpbnRlcnJ1cHQgb3Vyc2VsdmVzIHdpdGggYSBuZXcgcmVx dWVzdCAqLwo+ICAJR0VNX0JVR19PTihyZXEtPnRpbWVsaW5lLT5zZXFubyAhPSByZXEtPmZlbmNl LnNlcW5vKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3Vi bWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4g aW5kZXggMTY0MmZmZjljZjEzLi5hYjUxNDBiYTEwOGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gQEAgLTQ4MCw5ICs0ODAsNyBAQCBzdGF0aWMg dm9pZCBndWNfd3FfaXRlbV9hcHBlbmQoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50LAo+ ICAJR0VNX0JVR19PTihmcmVlc3BhY2UgPCB3cWlfc2l6ZSk7Cj4gIAo+ICAJLyogVGhlIEd1QyBm aXJtd2FyZSB3YW50cyB0aGUgdGFpbCBpbmRleCBpbiBRV29yZHMsIG5vdCBieXRlcyAqLwo+IC0J dGFpbCA9IHJxLT50YWlsOwo+IC0JYXNzZXJ0X3JpbmdfdGFpbF92YWxpZChycS0+cmluZywgcnEt PnRhaWwpOwo+IC0JdGFpbCA+Pj0gMzsKPiArCXRhaWwgPSBpbnRlbF9yaW5nX3NldF90YWlsKHJx LT5yaW5nLCBycS0+dGFpbCkgPj4gMzsKPiAgCUdFTV9CVUdfT04odGFpbCA+IFdRX1JJTkdfVEFJ TF9NQVgpOwo+ICAKPiAgCS8qIEZvciBub3cgd29ya3F1ZXVlIGl0ZW0gaXMgNCBEV3M7IHdvcmtx dWV1ZSBidWZmZXIgaXMgMiBwYWdlcy4gU28gd2UKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ IGluZGV4IDdkZjI3OGZlNDkyZS4uZDM2MTI5NjkwOThmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPiBAQCAtMzI2LDggKzMyNiw3IEBAIHN0YXRpYyB1NjQgZXhlY2xpc3RzX3VwZGF0 ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4gIAkJcnEtPmN0eC0+ cHBndHQgPzogcnEtPmk5MTUtPm1tLmFsaWFzaW5nX3BwZ3R0Owo+ICAJdTMyICpyZWdfc3RhdGUg PSBjZS0+bHJjX3JlZ19zdGF0ZTsKPiAgCj4gLQlhc3NlcnRfcmluZ190YWlsX3ZhbGlkKHJxLT5y aW5nLCBycS0+dGFpbCk7Cj4gLQlyZWdfc3RhdGVbQ1RYX1JJTkdfVEFJTCsxXSA9IHJxLT50YWls Owo+ICsJcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSBpbnRlbF9yaW5nX3NldF90YWlsKHJx LT5yaW5nLCBycS0+dGFpbCk7Cj4gIAo+ICAJLyogVHJ1ZSAzMmIgUFBHVFQgd2l0aCBkeW5hbWlj IHBhZ2UgYWxsb2NhdGlvbjogdXBkYXRlIFBEUAo+ICAJICogcmVnaXN0ZXJzIGFuZCBwb2ludCB0 aGUgdW5hbGxvY2F0ZWQgUERQcyB0byBzY3JhdGNoIHBhZ2UuCj4gQEAgLTIwNTQsNyArMjA1Myw4 IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJCQljZS0+c3RhdGUtPm9iai0+bW0uZGlydHkgPSB0cnVlOwo+ICAJCQlp OTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+b2JqKTsKPiAgCj4gLQkJCWNlLT5y aW5nLT5oZWFkID0gY2UtPnJpbmctPnRhaWwgPSAwOwo+ICsJCQlHRU1fQlVHX09OKCFsaXN0X2Vt cHR5KCZjZS0+cmluZy0+cmVxdWVzdF9saXN0KSk7Cj4gKwkJCWNlLT5yaW5nLT5oZWFkID0gY2Ut PnJpbmctPnRhaWwgPSBjZS0+cmluZy0+ZW1pdCA9IDA7Cj4gIAkJCWludGVsX3JpbmdfdXBkYXRl X3NwYWNlKGNlLT5yaW5nKTsKPiAgCQl9Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYwo+IGluZGV4IDMyYWZhYzZjNzU0Zi4uOGM4NzQ5OTZjNjE3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC00OSw3ICs0OSw3IEBA IHN0YXRpYyBpbnQgX19pbnRlbF9yaW5nX3NwYWNlKGludCBoZWFkLCBpbnQgdGFpbCwgaW50IHNp emUpCj4gIAo+ICB2b2lkIGludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nKQo+ICB7Cj4gLQlyaW5nLT5zcGFjZSA9IF9faW50ZWxfcmluZ19zcGFjZShyaW5nLT5o ZWFkLCByaW5nLT50YWlsLCByaW5nLT5zaXplKTsKPiArCXJpbmctPnNwYWNlID0gX19pbnRlbF9y aW5nX3NwYWNlKHJpbmctPmhlYWQsIHJpbmctPmVtaXQsIHJpbmctPnNpemUpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgaW50Cj4gQEAgLTc3NCw4ICs3NzQsOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3N1Ym1p dF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCj4gIAlp OTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChyZXF1ZXN0KTsKPiAgCj4gLQlhc3NlcnRfcmluZ190YWls X3ZhbGlkKHJlcXVlc3QtPnJpbmcsIHJlcXVlc3QtPnRhaWwpOwo+IC0JSTkxNV9XUklURV9UQUlM KHJlcXVlc3QtPmVuZ2luZSwgcmVxdWVzdC0+dGFpbCk7Cj4gKwlJOTE1X1dSSVRFX1RBSUwocmVx dWVzdC0+ZW5naW5lLAo+ICsJCQlpbnRlbF9yaW5nX3NldF90YWlsKHJlcXVlc3QtPnJpbmcsIHJl cXVlc3QtPnRhaWwpKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaTl4eF9lbWl0X2JyZWFkY3J1 bWIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiAqY3MpCj4gQEAgLTEzMjQs NiArMTMyNCwxMiBAQCB2b2lkIGludGVsX3JpbmdfdW5waW4oc3RydWN0IGludGVsX3JpbmcgKnJp bmcpCj4gIAlHRU1fQlVHX09OKCFyaW5nLT52bWEpOwo+ICAJR0VNX0JVR19PTighcmluZy0+dmFk ZHIpOwo+ICAKPiArCS8qIERpc2NhcmQgYW55IHVudXNlZCBieXRlcyBiZXlvbmQgdGhhdCBzdWJt aXR0ZWQgdG8gaHcuICovCj4gKwlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZyaW5nLT5yZXF1ZXN0 X2xpc3QpKTsKPiArCXJpbmctPmhlYWQgPSByaW5nLT50YWlsOwo+ICsJcmluZy0+ZW1pdCA9IHJp bmctPnRhaWw7Cj4gKwlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nKTsKPiArCj4gIAlpZiAo aTkxNV92bWFfaXNfbWFwX2FuZF9mZW5jZWFibGUocmluZy0+dm1hKSkKPiAgCQlpOTE1X3ZtYV91 bnBpbl9pb21hcChyaW5nLT52bWEpOwo+ICAJZWxzZQo+IEBAIC0xNTU1LDggKzE1NjEsMTQgQEAg dm9pZCBpbnRlbF9sZWdhY3lfc3VibWlzc2lvbl9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAJZW51 bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2 X3ByaXYsIGlkKQo+IC0JCWVuZ2luZS0+YnVmZmVyLT5oZWFkID0gZW5naW5lLT5idWZmZXItPnRh aWw7Cj4gKwkvKiBSZXN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgcmluZ3MgZm9yIGNv bnZlbmllbmNlICovCj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsK PiArCQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IGVuZ2luZS0+YnVmZmVyOwo+ICsKPiArCQlH RU1fQlVHX09OKCFsaXN0X2VtcHR5KCZyaW5nLT5yZXF1ZXN0X2xpc3QpKTsKPiArCQlyaW5nLT5o ZWFkID0gcmluZy0+dGFpbCA9IHJpbmctPmVtaXQgPSAwOwo+ICsJCWludGVsX3JpbmdfdXBkYXRl X3NwYWNlKHJpbmcpOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHJpbmdfcmVxdWVzdF9h bGxvYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gQEAgLTE2MDksNyAr MTYyMSw3IEBAIHN0YXRpYyBpbnQgd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsIGludCBieXRlcykKPiAgCQl1bnNpZ25lZCBzcGFjZTsKPiAgCj4gIAkJLyog V291bGQgY29tcGxldGlvbiBvZiB0aGlzIHJlcXVlc3QgZnJlZSBlbm91Z2ggc3BhY2U/ICovCj4g LQkJc3BhY2UgPSBfX2ludGVsX3Jpbmdfc3BhY2UodGFyZ2V0LT5wb3N0Zml4LCByaW5nLT50YWls LAo+ICsJCXNwYWNlID0gX19pbnRlbF9yaW5nX3NwYWNlKHRhcmdldC0+cG9zdGZpeCwgcmluZy0+ ZW1pdCwKPiAgCQkJCQkgICByaW5nLT5zaXplKTsKPiAgCQlpZiAoc3BhY2UgPj0gYnl0ZXMpCj4g IAkJCWJyZWFrOwo+IEBAIC0xNjM0LDggKzE2NDYsOCBAQCBzdGF0aWMgaW50IHdhaXRfZm9yX3Nw YWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgYnl0ZXMpCj4gIHUzMiAq aW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG51 bV9kd29yZHMpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwo+ IC0JaW50IHJlbWFpbl9hY3R1YWwgPSByaW5nLT5zaXplIC0gcmluZy0+dGFpbDsKPiAtCWludCBy ZW1haW5fdXNhYmxlID0gcmluZy0+ZWZmZWN0aXZlX3NpemUgLSByaW5nLT50YWlsOwo+ICsJaW50 IHJlbWFpbl9hY3R1YWwgPSByaW5nLT5zaXplIC0gcmluZy0+ZW1pdDsKPiArCWludCByZW1haW5f dXNhYmxlID0gcmluZy0+ZWZmZWN0aXZlX3NpemUgLSByaW5nLT5lbWl0Owo+ICAJaW50IGJ5dGVz ID0gbnVtX2R3b3JkcyAqIHNpemVvZih1MzIpOwo+ICAJaW50IHRvdGFsX2J5dGVzLCB3YWl0X2J5 dGVzOwo+ICAJYm9vbCBuZWVkX3dyYXAgPSBmYWxzZTsKPiBAQCAtMTY3MSwxNyArMTY4MywxNyBA QCB1MzIgKmludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs IGludCBudW1fZHdvcmRzKQo+ICAKPiAgCWlmICh1bmxpa2VseShuZWVkX3dyYXApKSB7Cj4gIAkJ R0VNX0JVR19PTihyZW1haW5fYWN0dWFsID4gcmluZy0+c3BhY2UpOwo+IC0JCUdFTV9CVUdfT04o cmluZy0+dGFpbCArIHJlbWFpbl9hY3R1YWwgPiByaW5nLT5zaXplKTsKPiArCQlHRU1fQlVHX09O KHJpbmctPmVtaXQgKyByZW1haW5fYWN0dWFsID4gcmluZy0+c2l6ZSk7Cj4gIAo+ICAJCS8qIEZp bGwgdGhlIHRhaWwgd2l0aCBNSV9OT09QICovCj4gLQkJbWVtc2V0KHJpbmctPnZhZGRyICsgcmlu Zy0+dGFpbCwgMCwgcmVtYWluX2FjdHVhbCk7Cj4gLQkJcmluZy0+dGFpbCA9IDA7Cj4gKwkJbWVt c2V0KHJpbmctPnZhZGRyICsgcmluZy0+ZW1pdCwgMCwgcmVtYWluX2FjdHVhbCk7Cj4gKwkJcmlu Zy0+ZW1pdCA9IDA7Cj4gIAkJcmluZy0+c3BhY2UgLT0gcmVtYWluX2FjdHVhbDsKPiAgCX0KPiAg Cj4gLQlHRU1fQlVHX09OKHJpbmctPnRhaWwgPiByaW5nLT5zaXplIC0gYnl0ZXMpOwo+IC0JY3Mg PSByaW5nLT52YWRkciArIHJpbmctPnRhaWw7Cj4gLQlyaW5nLT50YWlsICs9IGJ5dGVzOwo+ICsJ R0VNX0JVR19PTihyaW5nLT5lbWl0ID4gcmluZy0+c2l6ZSAtIGJ5dGVzKTsKPiArCWNzID0gcmlu Zy0+dmFkZHIgKyByaW5nLT5lbWl0Owo+ICsJcmluZy0+ZW1pdCArPSBieXRlczsKPiAgCXJpbmct PnNwYWNlIC09IGJ5dGVzOwo+ICAJR0VNX0JVR19PTihyaW5nLT5zcGFjZSA8IDApOwo+ICAKPiBA QCAtMTY5Miw3ICsxNzA0LDcgQEAgdTMyICppbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3b3JkcykKPiAgaW50IGludGVsX3JpbmdfY2Fj aGVsaW5lX2FsaWduKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gIAlp bnQgbnVtX2R3b3JkcyA9Cj4gLQkJKHJlcS0+cmluZy0+dGFpbCAmIChDQUNIRUxJTkVfQllURVMg LSAxKSkgLyBzaXplb2YodWludDMyX3QpOwo+ICsJCShyZXEtPnJpbmctPmVtaXQgJiAoQ0FDSEVM SU5FX0JZVEVTIC0gMSkpIC8gc2l6ZW9mKHVpbnQzMl90KTsKPiAgCXUzMiAqY3M7Cj4gIAo+ICAJ aWYgKG51bV9kd29yZHMgPT0gMCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCj4gaW5kZXggMDBkMzZhYTRlMjZkLi4zMTk5OGVhNDZmYjggMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTE0Myw2ICsxNDMsNyBAQCBzdHJ1Y3Qg aW50ZWxfcmluZyB7Cj4gIAo+ICAJdTMyIGhlYWQ7Cj4gIAl1MzIgdGFpbDsKPiArCXUzMiBlbWl0 Owo+ICAKPiAgCWludCBzcGFjZTsKPiAgCWludCBzaXplOwo+IEBAIC01MTcsNyArNTE4LDcgQEAg aW50ZWxfcmluZ19hZHZhbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIg KmNzKQo+ICAJICogcmVzZXJ2ZWQgZm9yIHRoZSBjb21tYW5kIHBhY2tldCAoaS5lLiB0aGUgdmFs dWUgcGFzc2VkIHRvCj4gIAkgKiBpbnRlbF9yaW5nX2JlZ2luKCkpLgo+ICAJICovCj4gLQlHRU1f QlVHX09OKChyZXEtPnJpbmctPnZhZGRyICsgcmVxLT5yaW5nLT50YWlsKSAhPSBjcyk7Cj4gKwlH RU1fQlVHX09OKChyZXEtPnJpbmctPnZhZGRyICsgcmVxLT5yaW5nLT5lbWl0KSAhPSBjcyk7Cj4g IH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdTMyCj4gQEAgLTU0Niw2ICs1NDcsMjAgQEAgYXNzZXJ0 X3JpbmdfdGFpbF92YWxpZChjb25zdCBzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdW5zaWduZWQg aW50IHRhaWwpCj4gIAlHRU1fQlVHX09OKHRhaWwgPj0gcmluZy0+c2l6ZSk7Cj4gIH0KPiAgCj4g K3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Cj4gK2ludGVsX3Jpbmdfc2V0X3RhaWwoc3RydWN0 IGludGVsX3JpbmcgKnJpbmcsIHVuc2lnbmVkIGludCB0YWlsKQo+ICt7Cj4gKwkvKiBXaGlsc3Qg d3JpdGVzIHRvIHRoZSB0YWlsIGFyZSBzdHJpY3RseSBvcmRlciwgdGhlcmUgaXMgbm8KPiArCSAq IHNlcmlhbGlzYXRpb24gYmV0d2VlbiByZWFkZXJzIGFuZCB0aGUgd3JpdGVycy4gVGhlIHRhaWwg bWF5IGJlCj4gKwkgKiByZWFkIGJ5IGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKCkganVzdCBhcyBp dCBpcyBiZWluZyB1cGRhdGVkCj4gKwkgKiBieSBleGVjbGlzdHMsIGFzIGFsdGhvdWdoIHRoZSBi cmVhZGNydW1iIGlzIGNvbXBsZXRlLCB0aGUgY29udGV4dAo+ICsJICogc3dpdGNoIGhhc24ndCBi ZWVuIHNlZW4uCj4gKwkgKi8KPiArCWFzc2VydF9yaW5nX3RhaWxfdmFsaWQocmluZywgdGFpbCk7 Cj4gKwlyaW5nLT50YWlsID0gdGFpbDsKPiArCXJldHVybiB0YWlsOwo+ICt9Cj4gKwo+ICB2b2lk IGludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKTsKPiAgCj4g IHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZ2xvYmFsX3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwgdTMyIHNlcW5vKTsKPiAtLSAKPiAyLjExLjAKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==