From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/3] drm/i915: Pipeline PDP updates for Braswell Date: Fri, 7 Dec 2018 10:30:53 +0000 Message-ID: <60283cd2-533b-a606-3879-be7e971ab343@linux.intel.com> References: <20181207090213.14352-1-chris@chris-wilson.co.uk> <20181207090213.14352-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 153176E71E for ; Fri, 7 Dec 2018 10:30:56 +0000 (UTC) In-Reply-To: <20181207090213.14352-3-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDA3LzEyLzIwMTggMDk6MDIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBDdXJyZW50bHkgd2Ug ZmFjZSBhIHNldmVyZSBwcm9ibGVtIG9uIEJyYXN3ZWxsIHRoYXQgbWFuaWZlc3RzIGFzIGludmFs aWQKPiBwcEdUVCBhY2Nlc3Nlcy4gVGhlIGNvZGUgdHJpZXMgdG8gbWFpbnRhaW4gdGhlIFBEUCAo cGFnZSBkaXJlY3RvcnkKPiBwb2ludGVycykgaW5zaWRlIHRoZSBjb250ZXh0IGluIHR3byB3YXlz LCBkaXJlY3Qgd3JpdGUgaW50byB0aGUgY29udGV4dAo+IGFuZCBhIHBpcGVsaW5lZCBMUkkgdXBk YXRlLiBUaGUgZGlyZWN0IHdyaXRlIGludG8gdGhlIGNvbnRleHQgaXMKPiBmdW5kYW1lbnRhbGx5 IHJhY3kgYXMgaXQgaXMgdW5zZXJpYWxpc2VkIHdpdGggYW55IGFjY2VzcyAocmVhZCBvciB3cml0 ZSkKPiB0aGUgR1BVIGlzIGRvaW5nLiBCeSBhc3NlcnRpbmcgdGhhdCBCcmFzd2VsbCBpcyBub3Qg dXNlZCB3aXRoIHZHUFUKPiAoY3VycmVudGx5IGFuIHVuc3VwcG9ydGVkIHBsYXRmb3JtKSB3ZSBj YW4gZWxpbWluYXRlIHRoZSBkYW5nZXJvdXMKPiBkaXJlY3Qgd3JpdGUgaW50byB0aGUgY29udGV4 dCBpbWFnZSBhbmQgc29sZWx5IHVzZSB0aGUgcGlwZWxpbmVkIHVwZGF0ZS4KPiAKPiBIb3dldmVy LCB0aGUgTFJJIG9mIHRoZSBQRFAgZm91bHMgdXAgdGhlIEdQVSwgY2F1c2luZyBpdCB0byBmcmVl emUgYW5kCj4gdGFrZSBvdXQgdGhlIG1hY2hpbmUgd2l0aCAiZm9yY2V3YWtlIGFjayB0aW1lb3V0 cyIuIFRoaXMgc2VlbXMgcG9zc2libGUKPiB0byB3b3JrYXJvdW5kIGJ5IHByZXZlbnRpbmcgdGhl IEdQVSBmcm9tIHNsZWVwaW5nICh2aWEgbWVhbnMgb2YKPiBkaXNhYmxpbmcgdGhlIHBvd2VyLXN0 YXRlIG1hbmFnZW1lbnQgaW50ZXJmYWNlLCBpLmUuIGZvcmNpbmcgZWFjaCByaW5nCj4gdG8gcmVt YWluIGF3YWtlKSBhcm91bmQgdGhlIHVwZGF0ZS4KCkNoYW5nZWxvZyBpcyBtaXNzaW5nLgoKPiBC dWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4 NjU2Cj4gUmVmZXJlbmNlczogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9MTA4NzE0Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5j b20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8ICAgMiAt Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICB8IDE0MCArKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tCj4gICAyIGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyks IDczIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5k ZXggYWRkMWZlN2FlYjkzLi42MmJkZTUxN2QzODMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+IEBAIC0xNDIzLDggKzE0MjMsNiBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRf YWxsb2NfcGRwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAgCQkJZ2VuOF9pbml0 aWFsaXplX3BkKHZtLCBwZCk7Cj4gICAJCQlnZW44X3BwZ3R0X3NldF9wZHBlKHZtLCBwZHAsIHBk LCBwZHBlKTsKPiAgIAkJCUdFTV9CVUdfT04ocGRwLT51c2VkX3BkcGVzID4gaTkxNV9wZHBlc19w ZXJfcGRwKHZtKSk7Cj4gLQo+IC0JCQltYXJrX3RsYnNfZGlydHkoaTkxNV92bV90b19wcGd0dCh2 bSkpOwo+ICAgCQl9Cj4gICAKPiAgIAkJcmV0ID0gZ2VuOF9wcGd0dF9hbGxvY19wZCh2bSwgcGQs IHN0YXJ0LCBsZW5ndGgpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggYjFmNWRi MzQ0MmViLi5jODRiZGMyMWJjY2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBA IC0zNjMsMzEgKzM2MywxMiBAQCBleGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9vdXQoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsIHVuc2lnbmVkIGxvbmcgc3RhdHVzKQo+ICAgCXRyYWNlX2k5MTVf cmVxdWVzdF9vdXQocnEpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkCj4gLWV4ZWNsaXN0c191 cGRhdGVfY29udGV4dF9wZHBzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgdTMyICpyZWdf c3RhdGUpCj4gLXsKPiAtCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDMpOwo+IC0J QVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMik7Cj4gLQlBU1NJR05fQ1RYX1BEUChw cGd0dCwgcmVnX3N0YXRlLCAxKTsKPiAtCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUs IDApOwo+IC19Cj4gLQo+ICAgc3RhdGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICB7Cj4gLQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQgPSBycS0+Z2VtX2NvbnRleHQtPnBwZ3R0Owo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSA9IHJxLT5od19jb250ZXh0Owo+IC0JdTMyICpyZWdfc3RhdGUgPSBjZS0+bHJjX3JlZ19zdGF0 ZTsKPiAgIAo+IC0JcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSBpbnRlbF9yaW5nX3NldF90 YWlsKHJxLT5yaW5nLCBycS0+dGFpbCk7Cj4gLQo+IC0JLyoKPiAtCSAqIFRydWUgMzJiIFBQR1RU IHdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVwZGF0ZSBQRFAKPiAtCSAqIHJlZ2lzdGVy cyBhbmQgcG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gc2NyYXRjaCBwYWdlLgo+IC0JICog UE1MNCBpcyBhbGxvY2F0ZWQgZHVyaW5nIHBwZ3R0IGluaXQsIHNvIHRoaXMgaXMgbm90IG5lZWRl ZAo+IC0JICogaW4gNDgtYml0IG1vZGUuCj4gLQkgKi8KPiAtCWlmICghaTkxNV92bV9pc180OGJp dCgmcHBndHQtPnZtKSkKPiAtCQlleGVjbGlzdHNfdXBkYXRlX2NvbnRleHRfcGRwcyhwcGd0dCwg cmVnX3N0YXRlKTsKPiArCWNlLT5scmNfcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwgKyAxXSA9Cj4g KwkJaW50ZWxfcmluZ19zZXRfdGFpbChycS0+cmluZywgcnEtPnRhaWwpOwo+ICAgCj4gICAJLyoK PiAgIAkgKiBNYWtlIHN1cmUgdGhlIGNvbnRleHQgaW1hZ2UgaXMgY29tcGxldGUgYmVmb3JlIHdl IHN1Ym1pdCBpdCB0byBIVy4KPiBAQCAtMTI0Nyw2ICsxMjI4LDU5IEBAIGV4ZWNsaXN0c19jb250 ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJcmV0dXJuIF9fZXhl Y2xpc3RzX2NvbnRleHRfcGluKGVuZ2luZSwgY3R4LCBjZSk7Cj4gICB9Cj4gICAKPiArc3RhdGlj IGludCBlbWl0X3BkcHMoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3sKPiArCWNvbnN0IHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUgPSBycS0+ZW5naW5lOwo+ICsJc3Ry dWN0IGk5MTVfaHdfcHBndHQgKiBjb25zdCBwcGd0dCA9IHJxLT5nZW1fY29udGV4dC0+cHBndHQ7 Cj4gKwlpbnQgZXJyLCBpOwo+ICsJdTMyICpjczsKPiArCj4gKwlHRU1fQlVHX09OKGludGVsX3Zn cHVfYWN0aXZlKHJxLT5pOTE1KSk7Cj4gKwo+ICsJLyoKPiArCSAqIEJld2FyZSB5ZSBvZiB0aGUg ZHJhZ29ucywgdGhpcyBzZXF1ZW5jZSBpcyBtYWdpYyEKPiArCSAqCj4gKwkgKiBTbWFsbCBjaGFu Z2VzIHRvIHRoaXMgc2VxdWVuY2UgY2FuIGNhdXNlIGFueXRoaW5nIGZyb20KPiArCSAqIEdQVSBo YW5ncyB0byBmb3JjZXdha2UgZXJyb3JzIGFuZCBtYWNoaW5lIGxvY2t1cHMhCj4gKwkgKi8KPiAr Cj4gKwkvKiBGbHVzaCBhbnkgcmVzaWR1YWwgb3BlcmF0aW9ucyBmcm9tIHRoZSBjb250ZXh0IGxv YWQgKi8KPiArCWVyciA9IGVuZ2luZS0+ZW1pdF9mbHVzaChycSwgRU1JVF9GTFVTSCk7Cj4gKwlp ZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJLyogTWFnaWMgcmVxdWlyZWQgdG8gcHJl dmVudCBmb3JjZXdha2UgZXJyb3JzISAqLwo+ICsJZXJyID0gZW5naW5lLT5lbWl0X2ZsdXNoKHJx LCBFTUlUX0lOVkFMSURBVEUpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiAr CWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCAqIEdFTjhfM0xWTF9QRFBFUyArIDIpOwo+ICsJ aWYgKElTX0VSUihjcykpCj4gKwkJcmV0dXJuIFBUUl9FUlIoY3MpOwo+ICsKPiArCS8qIEVuc3Vy ZSB0aGUgTFJJIGhhdmUgbGFuZGVkIGJlZm9yZSB3ZSBpbnZhbGlkYXRlICYgY29udGludWUgKi8K PiArCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMiAqIEdFTjhfM0xWTF9QRFBFUykgfCBN SV9MUklfRk9SQ0VfUE9TVEVEOwo+ICsJZm9yIChpID0gR0VOOF8zTFZMX1BEUEVTOyBpLS07ICkg ewo+ICsJCWNvbnN0IGRtYV9hZGRyX3QgcGRfZGFkZHIgPSBpOTE1X3BhZ2VfZGlyX2RtYV9hZGRy KHBwZ3R0LCBpKTsKPiArCj4gKwkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJ TkdfUERQX1VEVyhlbmdpbmUsIGkpKTsKPiArCQkqY3MrKyA9IHVwcGVyXzMyX2JpdHMocGRfZGFk ZHIpOwo+ICsJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9MRFco ZW5naW5lLCBpKSk7Cj4gKwkJKmNzKysgPSBsb3dlcl8zMl9iaXRzKHBkX2RhZGRyKTsKPiArCX0K PiArCSpjcysrID0gTUlfTk9PUDsKPiArCj4gKwlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsK PiArCj4gKwkvKiBCZSBkb3VibHkgc3VyZSB0aGUgTFJJIGhhdmUgbGFuZGVkIGJlZm9yZSBwcm9j ZWVkaW5nICovCj4gKwllcnIgPSBlbmdpbmUtPmVtaXRfZmx1c2gocnEsIEVNSVRfRkxVU0gpOwo+ ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCS8qIFJlLWludmFsaWRhdGUgdGhl IFRMQiBmb3IgbHVjayAqLwo+ICsJcmV0dXJuIGVuZ2luZS0+ZW1pdF9mbHVzaChycSwgRU1JVF9J TlZBTElEQVRFKTsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgZXhlY2xpc3RzX3JlcXVlc3RfYWxs b2Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIHsKPiAgIAlpbnQgcmV0Owo+IEBA IC0xMjYwLDExICsxMjk0LDYgQEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCSAqLwo+ICAgCXJlcXVlc3QtPnJlc2Vy dmVkX3NwYWNlICs9IEVYRUNMSVNUU19SRVFVRVNUX1NJWkU7Cj4gICAKPiAtCS8qIFVuY29uZGl0 aW9uYWxseSBpbnZhbGlkYXRlIEdQVSBjYWNoZXMgYW5kIFRMQnMuICovCj4gLQlyZXQgPSByZXF1 ZXN0LT5lbmdpbmUtPmVtaXRfZmx1c2gocmVxdWVzdCwgRU1JVF9JTlZBTElEQVRFKTsKPiAtCWlm IChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gICAJLyoKPiAgIAkgKiBOb3RlIHRoYXQgYWZ0 ZXIgdGhpcyBwb2ludCwgd2UgaGF2ZSBjb21taXR0ZWQgdG8gdXNpbmcKPiAgIAkgKiB0aGlzIHJl cXVlc3QgYXMgaXQgaXMgYmVpbmcgdXNlZCB0byBib3RoIHRyYWNrIHRoZQo+IEBAIC0xMjczLDYg KzEzMDIsMTQgQEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCSAqIHRvIGNhbmNlbC91bndpbmQgdGhpcyByZXF1ZXN0 IG5vdy4KPiAgIAkgKi8KPiAgIAo+ICsJLyogVW5jb25kaXRpb25hbGx5IGludmFsaWRhdGUgR1BV IGNhY2hlcyBhbmQgVExCcy4gKi8KPiArCWlmIChpOTE1X3ZtX2lzXzQ4Yml0KCZyZXF1ZXN0LT5n ZW1fY29udGV4dC0+cHBndHQtPnZtKSkKPiArCQlyZXQgPSByZXF1ZXN0LT5lbmdpbmUtPmVtaXRf Zmx1c2gocmVxdWVzdCwgRU1JVF9JTlZBTElEQVRFKTsKPiArCWVsc2UKPiArCQlyZXQgPSBlbWl0 X3BkcHMocmVxdWVzdCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICAgCXJl cXVlc3QtPnJlc2VydmVkX3NwYWNlIC09IEVYRUNMSVNUU19SRVFVRVNUX1NJWkU7Cj4gICAJcmV0 dXJuIDA7Cj4gICB9Cj4gQEAgLTE4MDgsNTYgKzE4NDUsMTEgQEAgc3RhdGljIHZvaWQgZXhlY2xp c3RzX3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCSAg YXRvbWljX3JlYWQoJmV4ZWNsaXN0cy0+dGFza2xldC5jb3VudCkpOwo+ICAgfQo+ICAgCj4gLXN0 YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcGRwcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSkKPiAtewo+IC0Jc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gcnEtPmdlbV9jb250 ZXh0LT5wcGd0dDsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJxLT5lbmdp bmU7Cj4gLQljb25zdCBpbnQgbnVtX2xyaV9jbWRzID0gR0VOOF8zTFZMX1BEUEVTICogMjsKPiAt CXUzMiAqY3M7Cj4gLQlpbnQgaTsKPiAtCj4gLQljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIG51 bV9scmlfY21kcyAqIDIgKyAyKTsKPiAtCWlmIChJU19FUlIoY3MpKQo+IC0JCXJldHVybiBQVFJf RVJSKGNzKTsKPiAtCj4gLQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9scmlfY21k cyk7Cj4gLQlmb3IgKGkgPSBHRU44XzNMVkxfUERQRVMgLSAxOyBpID49IDA7IGktLSkgewo+IC0J CWNvbnN0IGRtYV9hZGRyX3QgcGRfZGFkZHIgPSBpOTE1X3BhZ2VfZGlyX2RtYV9hZGRyKHBwZ3R0 LCBpKTsKPiAtCj4gLQkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQ X1VEVyhlbmdpbmUsIGkpKTsKPiAtCQkqY3MrKyA9IHVwcGVyXzMyX2JpdHMocGRfZGFkZHIpOwo+ IC0JCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5l LCBpKSk7Cj4gLQkJKmNzKysgPSBsb3dlcl8zMl9iaXRzKHBkX2RhZGRyKTsKPiAtCX0KPiAtCj4g LQkqY3MrKyA9IE1JX05PT1A7Cj4gLQlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKPiAtCj4g LQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICAgCQkJICAgICAgdTY0IG9mZnNldCwgdTMyIGxlbiwK PiAgIAkJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncykKPiAgIHsKPiAgIAl1MzIgKmNz Owo+IC0JaW50IHJldDsKPiAtCj4gLQkvKiBEb24ndCByZWx5IGluIGh3IHVwZGF0aW5nIFBEUHMs IHNwZWNpYWxseSBpbiBsaXRlLXJlc3RvcmUuCj4gLQkgKiBJZGVhbGx5LCB3ZSBzaG91bGQgc2V0 IEZvcmNlIFBEIFJlc3RvcmUgaW4gY3R4IGRlc2NyaXB0b3IsCj4gLQkgKiBidXQgd2UgY2FuJ3Qu IEZvcmNlIFJlc3RvcmUgd291bGQgYmUgYSBzZWNvbmQgb3B0aW9uLCBidXQKPiAtCSAqIGl0IGlz IHVuc2FmZSBpbiBjYXNlIG9mIGxpdGUtcmVzdG9yZSAoYmVjYXVzZSB0aGUgY3R4IGlzCj4gLQkg KiBub3QgaWRsZSkuIFBNTDQgaXMgYWxsb2NhdGVkIGR1cmluZyBwcGd0dCBpbml0IHNvIHRoaXMg aXMKPiAtCSAqIG5vdCBuZWVkZWQgaW4gNDgtYml0LiovCj4gLQlpZiAoKGludGVsX2VuZ2luZV9m bGFnKHJxLT5lbmdpbmUpICYgcnEtPmdlbV9jb250ZXh0LT5wcGd0dC0+cGRfZGlydHlfcmluZ3Mp ICYmCj4gLQkgICAgIWk5MTVfdm1faXNfNDhiaXQoJnJxLT5nZW1fY29udGV4dC0+cHBndHQtPnZt KSAmJgo+IC0JICAgICFpbnRlbF92Z3B1X2FjdGl2ZShycS0+aTkxNSkpIHsKPiAtCQlyZXQgPSBp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBzKHJxKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1 cm4gcmV0Owo+IC0KPiAtCQlycS0+Z2VtX2NvbnRleHQtPnBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyAm PSB+aW50ZWxfZW5naW5lX2ZsYWcocnEtPmVuZ2luZSk7Cj4gLQl9Cj4gICAKPiAgIAljcyA9IGlu dGVsX3JpbmdfYmVnaW4ocnEsIDYpOwo+ICAgCWlmIChJU19FUlIoY3MpKQo+IEBAIC0xODkwLDYg KzE4ODIsNyBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwKPiAgIAo+ICAgCSpjcysrID0gTUlfQVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxF Owo+ICAgCSpjcysrID0gTUlfTk9PUDsKPiArCj4gICAJaW50ZWxfcmluZ19hZHZhbmNlKHJxLCBj cyk7Cj4gICAKPiAgIAlyZXR1cm4gMDsKPiBAQCAtMjUwMSw2ICsyNDk0LDExIEBAIHN0YXRpYyB2 b2lkIGV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZSh1MzIgKnJlZ3MsCj4gICAJCSAqIG90aGVyIFBE UCBEZXNjcmlwdG9ycyBhcmUgaWdub3JlZC4KPiAgIAkJICovCj4gICAJCUFTU0lHTl9DVFhfUE1M NChjdHgtPnBwZ3R0LCByZWdzKTsKPiArCX0gZWxzZSB7Cj4gKwkJQVNTSUdOX0NUWF9QRFAoY3R4 LT5wcGd0dCwgcmVncywgMyk7Cj4gKwkJQVNTSUdOX0NUWF9QRFAoY3R4LT5wcGd0dCwgcmVncywg Mik7Cj4gKwkJQVNTSUdOX0NUWF9QRFAoY3R4LT5wcGd0dCwgcmVncywgMSk7Cj4gKwkJQVNTSUdO X0NUWF9QRFAoY3R4LT5wcGd0dCwgcmVncywgMCk7Cj4gICAJfQo+ICAgCj4gICAJaWYgKHJjcykg ewo+IAoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5j b20+CgpJcyBCU1cgZml4ZWQgbm93PyBPciBqdXN0IGEgdGlueSBiaXQgYmV0dGVyPwoKUmVnYXJk cywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK