From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 8/8] drm/i915: Pipeline PDP updates for Braswell Date: Tue, 4 Dec 2018 11:53:22 +0000 Message-ID: References: <20181203113701.12106-1-chris@chris-wilson.co.uk> <20181203113701.12106-8-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id B5C9B89E98 for ; Tue, 4 Dec 2018 11:53:24 +0000 (UTC) In-Reply-To: <20181203113701.12106-8-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 Ck9uIDAzLzEyLzIwMTggMTE6MzcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBDdXJyZW50bHkgd2Ug ZmFjZSBhIHNldmVyZSBwcm9ibGVtIG9uIEJyYXN3ZWxsIHRoYXQgbWFuaWZlc3RzIGFzIGludmFs aWQKPiBwcEdUVCBhY2Nlc3Nlcy4gVGhlIGNvZGUgdHJpZXMgdG8gbWFpbnRhaW4gdGhlIFBEUCAo cGFnZSBkaXJlY3RvcnkKPiBwb2ludGVycykgaW5zaWRlIHRoZSBjb250ZXh0IGluIHR3byB3YXlz LCBkaXJlY3Qgd3JpdGUgaW50byB0aGUgY29udGV4dAo+IGFuZCBhIHBpcGVsaW5lZCBMUkkgdXBk YXRlLiBUaGUgZGlyZWN0IHdyaXRlIGludG8gdGhlIGNvbnRleHQgaXMKPiBmdW5kYW1lbnRhbGx5 IHJhY3kgYXMgaXQgaXMgdW5zZXJpYWxpc2VkIHdpdGggYW55IGFjY2VzcyAocmVhZCBvciB3cml0 ZSkKPiB0aGUgR1BVIGlzIGRvaW5nLiBCeSBhc3NlcnRpbmcgdGhhdCBCcmFzd2VsbCBpcyBub3Qg dXNlZCB3aXRoIHZHUFUKPiAoY3VycmVudGx5IGFuIHVuc3VwcG9ydGVkIHBsYXRmb3JtKSB3ZSBj YW4gZWxpbWluYXRlIHRoZSBkYW5nZXJvdXMKPiBkaXJlY3Qgd3JpdGUgaW50byB0aGUgY29udGV4 dCBpbWFnZSBhbmQgc29sZWx5IHVzZSB0aGUgcGlwZWxpbmVkIHVwZGF0ZS4KPiAKPiBIb3dldmVy LCB0aGUgTFJJIG9mIHRoZSBQRFAgZm91bHMgdXAgdGhlIEdQVSwgY2F1c2luZyBpdCB0byBmcmVl emUgYW5kCj4gdGFrZSBvdXQgdGhlIG1hY2hpbmUgd2l0aCAiZm9yY2V3YWtlIGFjayB0aW1lb3V0 cyIuIFRoaXMgc2VlbXMgcG9zc2libGUKPiB0byB3b3JrYXJvdW5kIGJ5IHByZXZlbnRpbmcgdGhl IEdQVSBmcm9tIHNsZWVwaW5nICh2aWEgbWVhbnMgb2YKPiBkaXNhYmxpbmcgdGhlIHBvd2VyLXN0 YXRlIG1hbmFnZW1lbnQgaW50ZXJmYWNlLCBpLmUuIGZvcmNpbmcgZWFjaCByaW5nCj4gdG8gcmVt YWluIGF3YWtlKSBhcm91bmQgdGhlIHVwZGF0ZS4KPiAKPiBCdWd6aWxsYTogaHR0cHM6Ly9idWdz LmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NjU2Cj4gUmVmZXJlbmNlczogaHR0 cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzE0Cj4gU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgfCAgIDIgLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgIHwgICA1IC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jICAgICAgICB8IDEzNyArKysrKysrKysrKy0tLS0tLS0tLS0tLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8ICAgNSArLQo+ICAgNCBm aWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IGFkZDFmZTdhZWI5My4uNjJiZGU1MTdk MzgzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMTQyMyw4ICsx NDIzLDYgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BkcChzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKPiAgIAkJCWdlbjhfaW5pdGlhbGl6ZV9wZCh2bSwgcGQpOwo+ICAgCQkJ Z2VuOF9wcGd0dF9zZXRfcGRwZSh2bSwgcGRwLCBwZCwgcGRwZSk7Cj4gICAJCQlHRU1fQlVHX09O KHBkcC0+dXNlZF9wZHBlcyA+IGk5MTVfcGRwZXNfcGVyX3BkcCh2bSkpOwo+IC0KPiAtCQkJbWFy a190bGJzX2RpcnR5KGk5MTVfdm1fdG9fcHBndHQodm0pKTsKPiAgIAkJfQo+ICAgCj4gICAJCXJl dCA9IGdlbjhfcHBndHRfYWxsb2NfcGQodm0sIHBkLCBzdGFydCwgbGVuZ3RoKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IGNhOTVhYjJmNGNmYS4uOGFiOGU4ZTZhMDg2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBAQCAtNzE5LDExICs3MTks NiBAQCBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCSAqLwo+ICAgCXJxLT5oZWFkID0gcnEt PnJpbmctPmVtaXQ7Cj4gICAKPiAtCS8qIFVuY29uZGl0aW9uYWxseSBpbnZhbGlkYXRlIEdQVSBj YWNoZXMgYW5kIFRMQnMuICovCj4gLQlyZXQgPSBlbmdpbmUtPmVtaXRfZmx1c2gocnEsIEVNSVRf SU5WQUxJREFURSk7CgpJdCBzZWVtcyB0aGlzIGlzIHN0aWxsIGFsd2F5cyBjYWxsZWQgYXQgbGVh c3Qgb25jZSBvbiB0aGUgY29tbW9uIHBhdGggc28gCndoeSBhcmUgeW91IG1vdmluZyBpdCB0byB0 aGUgYmFja2VuZD8gSnVzdCBiZWNhdXNlIGl0IGlzIG1vcmUgImJhY2tlbmR5IiAKdHlwZSBvcGVy YXRpb24/IEl0IG1ha2VzIHNlbnNlIEkgZ3Vlc3MuCgo+IC0JaWYgKHJldCkKPiAtCQlnb3RvIGVy cl91bndpbmQ7Cj4gLQo+ICAgCXJldCA9IGVuZ2luZS0+cmVxdWVzdF9hbGxvYyhycSk7Cj4gICAJ aWYgKHJldCkKPiAgIAkJZ290byBlcnJfdW53aW5kOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4gaW5kZXggZGUwNzBkY2E0MDMzLi4xZWMzZjgwYTQ0NzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+IEBAIC0zNjMsMzEgKzM2MywxMiBAQCBleGVjbGlzdHNfY29udGV4dF9zY2hl ZHVsZV9vdXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHVuc2lnbmVkIGxvbmcgc3RhdHVzKQo+ ICAgCXRyYWNlX2k5MTVfcmVxdWVzdF9vdXQocnEpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lk Cj4gLWV4ZWNsaXN0c191cGRhdGVfY29udGV4dF9wZHBzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCwgdTMyICpyZWdfc3RhdGUpCj4gLXsKPiAtCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdf c3RhdGUsIDMpOwo+IC0JQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMik7Cj4gLQlB U1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAxKTsKPiAtCUFTU0lHTl9DVFhfUERQKHBw Z3R0LCByZWdfc3RhdGUsIDApOwo+IC19Cj4gLQo+ICAgc3RhdGljIHU2NCBleGVjbGlzdHNfdXBk YXRlX2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICB7Cj4gLQlzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQgPSBycS0+Z2VtX2NvbnRleHQtPnBwZ3R0Owo+ICAgCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSA9IHJxLT5od19jb250ZXh0Owo+IC0JdTMyICpyZWdfc3RhdGUgPSBj ZS0+bHJjX3JlZ19zdGF0ZTsKPiAtCj4gLQlyZWdfc3RhdGVbQ1RYX1JJTkdfVEFJTCsxXSA9IGlu dGVsX3Jpbmdfc2V0X3RhaWwocnEtPnJpbmcsIHJxLT50YWlsKTsKPiAgIAo+IC0JLyoKPiAtCSAq IFRydWUgMzJiIFBQR1RUIHdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVwZGF0ZSBQRFAK PiAtCSAqIHJlZ2lzdGVycyBhbmQgcG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gc2NyYXRj aCBwYWdlLgo+IC0JICogUE1MNCBpcyBhbGxvY2F0ZWQgZHVyaW5nIHBwZ3R0IGluaXQsIHNvIHRo aXMgaXMgbm90IG5lZWRlZAo+IC0JICogaW4gNDgtYml0IG1vZGUuCj4gLQkgKi8KPiAtCWlmICgh aTkxNV92bV9pc180OGJpdCgmcHBndHQtPnZtKSkKPiAtCQlleGVjbGlzdHNfdXBkYXRlX2NvbnRl eHRfcGRwcyhwcGd0dCwgcmVnX3N0YXRlKTsKPiArCWNlLT5scmNfcmVnX3N0YXRlW0NUWF9SSU5H X1RBSUwgKyAxXSA9Cj4gKwkJaW50ZWxfcmluZ19zZXRfdGFpbChycS0+cmluZywgcnEtPnRhaWwp Owo+ICAgCj4gICAJLyoKPiAgIAkgKiBNYWtlIHN1cmUgdGhlIGNvbnRleHQgaW1hZ2UgaXMgY29t cGxldGUgYmVmb3JlIHdlIHN1Ym1pdCBpdCB0byBIVy4KPiBAQCAtMTI0MCwyOSArMTIyMSw4MCBA QCBleGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ ICAgCXJldHVybiBfX2V4ZWNsaXN0c19jb250ZXh0X3BpbihlbmdpbmUsIGN0eCwgY2UpOwo+ICAg fQo+ICAgCj4gK3N0YXRpYyBpbnQgZW1pdF9wZHBzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ ICt7Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29uc3QgZW5naW5lID0gcnEt PmVuZ2luZTsKPiArCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICogY29uc3QgcHBndHQgPSBycS0+Z2Vt X2NvbnRleHQtPnBwZ3R0Owo+ICsJaW50IGVyciwgaTsKPiArCXUzMiAqY3M7Cj4gKwo+ICsJZXJy ID0gZW5naW5lLT5lbWl0X2ZsdXNoKHJxLCBFTUlUX0lOVkFMSURBVEUpOwo+ICsJaWYgKGVycikK PiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCAqIEdF TjhfM0xWTF9QRFBFUyArIDIpOwo+ICsJaWYgKElTX0VSUihjcykpCj4gKwkJcmV0dXJuIFBUUl9F UlIoY3MpOwo+ICsKPiArCS8qCj4gKwkgKiBGb3JjZSB0aGUgR1BVIChub3QganVzdCB0aGUgbG9j YWwgZW5naW5lL3Bvd2Vyd2VsbCEpIHRvIHJlbWFpbiBhd2FrZSwKPiArCSAqIG9yIGVsc2Ugd2Ug bWF5IGtpbGwgdGhlIG1hY2hpbmUgd2l0aCAidGltZWQgb3V0IHdhaXRpbmcgZm9yCj4gKwkgKiBm b3JjZXdha2UgYWNrIHJlcXVlc3QiLgo+ICsJICovCj4gKwo+ICsJKmNzKysgPSBNSV9MT0FEX1JF R0lTVEVSX0lNTSgyICogR0VOOF8zTFZMX1BEUEVTKSB8IE1JX0xSSV9GT1JDRV9QT1NURUQ7Cj4g Kwlmb3IgKGkgPSBHRU44XzNMVkxfUERQRVM7IGktLTsgKSB7Cj4gKwkJY29uc3QgZG1hX2FkZHJf dCBwZF9kYWRkciA9IGk5MTVfcGFnZV9kaXJfZG1hX2FkZHIocHBndHQsIGkpOwo+ICsKPiArCQkq Y3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgaSkp Owo+ICsJCSpjcysrID0gdXBwZXJfMzJfYml0cyhwZF9kYWRkcik7Cj4gKwkJKmNzKysgPSBpOTE1 X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKPiArCQkqY3Mr KyA9IGxvd2VyXzMyX2JpdHMocGRfZGFkZHIpOwo+ICsJfQo+ICsJKmNzKysgPSBNSV9OT09QOwo+ ICsKPiArCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOwo+ICsKPiArCWVyciA9IGVuZ2luZS0+ ZW1pdF9mbHVzaChycSwgRU1JVF9JTlZBTElEQVRFKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJu IGVycjsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgZXhlY2xpc3Rz X3JlcXVlc3RfYWxsb2Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIHsKPiAgIAlp bnQgcmV0Owo+ICAgCj4gICAJR0VNX0JVR19PTighcmVxdWVzdC0+aHdfY29udGV4dC0+cGluX2Nv dW50KTsKPiAgIAo+IC0JLyogRmx1c2ggZW5vdWdoIHNwYWNlIHRvIHJlZHVjZSB0aGUgbGlrZWxp aG9vZCBvZiB3YWl0aW5nIGFmdGVyCj4gKwkvKgo+ICsJICogRmx1c2ggZW5vdWdoIHNwYWNlIHRv IHJlZHVjZSB0aGUgbGlrZWxpaG9vZCBvZiB3YWl0aW5nIGFmdGVyCj4gICAJICogd2Ugc3RhcnQg YnVpbGRpbmcgdGhlIHJlcXVlc3QgLSBpbiB3aGljaCBjYXNlIHdlIHdpbGwganVzdAo+ICAgCSAq IGhhdmUgdG8gcmVwZWF0IHdvcmsuCj4gICAJICovCj4gICAJcmVxdWVzdC0+cmVzZXJ2ZWRfc3Bh Y2UgKz0gRVhFQ0xJU1RTX1JFUVVFU1RfU0laRTsKPiAgIAo+IC0JcmV0ID0gaW50ZWxfcmluZ193 YWl0X2Zvcl9zcGFjZShyZXF1ZXN0LT5yaW5nLCByZXF1ZXN0LT5yZXNlcnZlZF9zcGFjZSk7Cj4g LQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7CgpSZW1vdmluZyB0aGlzIGluIGZhdm91ciBvZiB3 aGF0IGludGVsX3JpbmdfYmVnaW4gd2lsbCBkbz8gQnV0IGlzIGl0IHRoZSAKc2FtZT8gQ291bGQg YmUuLiBqdXN0IG5vdCBzdXJlIGR1ZSBhbGwgdGhlIGFyaXRobWV0aWMgdGhhdCdzIGhhcHBlbmlu ZyAKaW4gdGhlc2UgYXJlYXMuLgoKPiAtCj4gLQkvKiBOb3RlIHRoYXQgYWZ0ZXIgdGhpcyBwb2lu dCwgd2UgaGF2ZSBjb21taXR0ZWQgdG8gdXNpbmcKPiArCS8qCj4gKwkgKiBOb3RlIHRoYXQgYWZ0 ZXIgdGhpcyBwb2ludCwgd2UgaGF2ZSBjb21taXR0ZWQgdG8gdXNpbmcKPiAgIAkgKiB0aGlzIHJl cXVlc3QgYXMgaXQgaXMgYmVpbmcgdXNlZCB0byBib3RoIHRyYWNrIHRoZQo+ICAgCSAqIHN0YXRl IG9mIGVuZ2luZSBpbml0aWFsaXNhdGlvbiBhbmQgbGl2ZW5lc3Mgb2YgdGhlCj4gICAJICogZ29s ZGVuIHJlbmRlcnN0YXRlIGFib3ZlLiBUaGluayB0d2ljZSBiZWZvcmUgeW91IHRyeQo+ICAgCSAq IHRvIGNhbmNlbC91bndpbmQgdGhpcyByZXF1ZXN0IG5vdy4KPiAgIAkgKi8KPiAgIAo+ICsJLyog VW5jb25kaXRpb25hbGx5IGludmFsaWRhdGUgR1BVIGNhY2hlcyBhbmQgVExCcy4gKi8KPiArCWlm IChpOTE1X3ZtX2lzXzQ4Yml0KCZyZXF1ZXN0LT5nZW1fY29udGV4dC0+cHBndHQtPnZtKSkgewo+ ICsJCXJldCA9IHJlcXVlc3QtPmVuZ2luZS0+ZW1pdF9mbHVzaChyZXF1ZXN0LCBFTUlUX0lOVkFM SURBVEUpOwoKRXhjdXNlIG15IGlnbm9yYW5jZSwgYnV0IHdoYXQgaXMgdGhlIFBEUCB1cGRhdGUg bWVjaGFuaXNtIGluIDQ4LWJpdCBtb2RlPwoKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0 Owo+ICsJfSBlbHNlIHsKPiArCQlHRU1fQlVHX09OKGludGVsX3ZncHVfYWN0aXZlKHJlcXVlc3Qt Pmk5MTUpKTsKPiArCQlyZXQgPSBlbWl0X3BkcHMocmVxdWVzdCk7Cj4gKwkJaWYgKHJldCkKPiAr CQkJcmV0dXJuIHJldDsKPiArCX0KPiArCgpUaGVyZSBpcyBhbHdheXMgYSBzdGFydGluZyBFTUlU X0lOVkFMSURBVEUgb24gYm90aCBvZiB0aGVzZSB0d28gYnJhbmNoZXMgCnNvIHlvdSBjb3VsZCBw dWxsIGl0IG91dCBiZWZvcmUgdGhlIGlmIGJsb2NrLgoKPiAgIAlyZXF1ZXN0LT5yZXNlcnZlZF9z cGFjZSAtPSBFWEVDTElTVFNfUkVRVUVTVF9TSVpFOwo+ICAgCXJldHVybiAwOwo+ICAgfQo+IEBA IC0xODMyLDU2ICsxODY0LDExIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9maW5pc2go c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQkgIGF0b21pY19yZWFkKCZleGVj bGlzdHMtPnRhc2tsZXQuY291bnQpKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGludGVsX2xv Z2ljYWxfcmluZ19lbWl0X3BkcHMoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gLXsKPiAtCXN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9IHJxLT5nZW1fY29udGV4dC0+cHBndHQ7Cj4gLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBycS0+ZW5naW5lOwo+IC0JY29uc3QgaW50 IG51bV9scmlfY21kcyA9IEdFTjhfM0xWTF9QRFBFUyAqIDI7Cj4gLQl1MzIgKmNzOwo+IC0JaW50 IGk7Cj4gLQo+IC0JY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCBudW1fbHJpX2NtZHMgKiAyICsg Mik7Cj4gLQlpZiAoSVNfRVJSKGNzKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihjcyk7Cj4gLQo+IC0J KmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fbHJpX2NtZHMpOwo+IC0JZm9yIChpID0g R0VOOF8zTFZMX1BEUEVTIC0gMTsgaSA+PSAwOyBpLS0pIHsKPiAtCQljb25zdCBkbWFfYWRkcl90 IHBkX2RhZGRyID0gaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihwcGd0dCwgaSk7Cj4gLQo+IC0JCSpj cysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCBpKSk7 Cj4gLQkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKTsKPiAtCQkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgaSkpOwo+IC0JCSpjcysr ID0gbG93ZXJfMzJfYml0cyhwZF9kYWRkcik7Cj4gLQl9Cj4gLQo+IC0JKmNzKysgPSBNSV9OT09Q Owo+IC0JaW50ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0K PiAtCj4gICBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwKPiAgIAkJCSAgICAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCj4gICAJCQkgICAgICBjb25z dCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICB7Cj4gICAJdTMyICpjczsKPiAtCWludCByZXQ7Cj4g LQo+IC0JLyogRG9uJ3QgcmVseSBpbiBodyB1cGRhdGluZyBQRFBzLCBzcGVjaWFsbHkgaW4gbGl0 ZS1yZXN0b3JlLgo+IC0JICogSWRlYWxseSwgd2Ugc2hvdWxkIHNldCBGb3JjZSBQRCBSZXN0b3Jl IGluIGN0eCBkZXNjcmlwdG9yLAo+IC0JICogYnV0IHdlIGNhbid0LiBGb3JjZSBSZXN0b3JlIHdv dWxkIGJlIGEgc2Vjb25kIG9wdGlvbiwgYnV0Cj4gLQkgKiBpdCBpcyB1bnNhZmUgaW4gY2FzZSBv ZiBsaXRlLXJlc3RvcmUgKGJlY2F1c2UgdGhlIGN0eCBpcwo+IC0JICogbm90IGlkbGUpLiBQTUw0 IGlzIGFsbG9jYXRlZCBkdXJpbmcgcHBndHQgaW5pdCBzbyB0aGlzIGlzCj4gLQkgKiBub3QgbmVl ZGVkIGluIDQ4LWJpdC4qLwo+IC0JaWYgKChpbnRlbF9lbmdpbmVfZmxhZyhycS0+ZW5naW5lKSAm IHJxLT5nZW1fY29udGV4dC0+cHBndHQtPnBkX2RpcnR5X3JpbmdzKSAmJgo+IC0JICAgICFpOTE1 X3ZtX2lzXzQ4Yml0KCZycS0+Z2VtX2NvbnRleHQtPnBwZ3R0LT52bSkgJiYKPiAtCSAgICAhaW50 ZWxfdmdwdV9hY3RpdmUocnEtPmk5MTUpKSB7Cj4gLQkJcmV0ID0gaW50ZWxfbG9naWNhbF9yaW5n X2VtaXRfcGRwcyhycSk7CgpXaGF0IGlzIHRoZSByZWFzb24gdG8gbW92ZSBmcm9tIGVtaXRfYmJf c3RhcnQgdG8gcmVxdWVzdF9hbGxvYz8KCj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsK PiAtCj4gLQkJcnEtPmdlbV9jb250ZXh0LT5wcGd0dC0+cGRfZGlydHlfcmluZ3MgJj0gfmludGVs X2VuZ2luZV9mbGFnKHJxLT5lbmdpbmUpOwo+IC0JfQo+ICAgCj4gICAJY3MgPSBpbnRlbF9yaW5n X2JlZ2luKHJxLCA2KTsKPiAgIAlpZiAoSVNfRVJSKGNzKSkKPiBAQCAtMTkxNCw2ICsxOTAxLDcg QEAgc3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs Cj4gICAKPiAgIAkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRElTQUJMRTsKPiAgIAkq Y3MrKyA9IE1JX05PT1A7Cj4gKwo+ICAgCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOwo+ICAg Cj4gICAJcmV0dXJuIDA7Cj4gQEAgLTI1NDQsNiArMjUzMiwxMSBAQCBzdGF0aWMgdm9pZCBleGVj bGlzdHNfaW5pdF9yZWdfc3RhdGUodTMyICpyZWdzLAo+ICAgCQkgKiBvdGhlciBQRFAgRGVzY3Jp cHRvcnMgYXJlIGlnbm9yZWQuCj4gICAJCSAqLwo+ICAgCQlBU1NJR05fQ1RYX1BNTDQoY3R4LT5w cGd0dCwgcmVncyk7Cj4gKwl9IGVsc2Ugewo+ICsJCUFTU0lHTl9DVFhfUERQKGN0eC0+cHBndHQs IHJlZ3MsIDMpOwo+ICsJCUFTU0lHTl9DVFhfUERQKGN0eC0+cHBndHQsIHJlZ3MsIDIpOwo+ICsJ CUFTU0lHTl9DVFhfUERQKGN0eC0+cHBndHQsIHJlZ3MsIDEpOwo+ICsJCUFTU0lHTl9DVFhfUERQ KGN0eC0+cHBndHQsIHJlZ3MsIDApOwo+ICAgCX0KPiAgIAo+ICAgCWlmIChyY3MpIHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggMzdiZDA1Y2VmMGU5Li40 NTkxZjU2ODU0N2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j Cj4gQEAgLTE4MzMsMTEgKzE4MzMsMTIgQEAgc3RhdGljIGludCByaW5nX3JlcXVlc3RfYWxsb2Mo c3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAkgKi8KPiAgIAlyZXF1ZXN0LT5yZXNl cnZlZF9zcGFjZSArPSBMRUdBQ1lfUkVRVUVTVF9TSVpFOwo+ICAgCj4gLQlyZXQgPSBpbnRlbF9y aW5nX3dhaXRfZm9yX3NwYWNlKHJlcXVlc3QtPnJpbmcsIHJlcXVlc3QtPnJlc2VydmVkX3NwYWNl KTsKPiArCXJldCA9IHN3aXRjaF9jb250ZXh0KHJlcXVlc3QpOwo+ICAgCWlmIChyZXQpCj4gICAJ CXJldHVybiByZXQ7Cj4gICAKPiAtCXJldCA9IHN3aXRjaF9jb250ZXh0KHJlcXVlc3QpOwo+ICsJ LyogVW5jb25kaXRpb25hbGx5IGludmFsaWRhdGUgR1BVIGNhY2hlcyBhbmQgVExCcy4gKi8KPiAr CXJldCA9IHJlcXVlc3QtPmVuZ2luZS0+ZW1pdF9mbHVzaChyZXF1ZXN0LCBFTUlUX0lOVkFMSURB VEUpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiAKClJlZ2FyZHMsCgpU dnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==