From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Add GuC css header parser Date: Thu, 03 Sep 2015 10:36:41 +0300 Message-ID: <87k2s80x9y.fsf@intel.com> References: <1441234355-7524-1-git-send-email-yu.dai@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 894896EA09 for ; Thu, 3 Sep 2015 00:33:35 -0700 (PDT) In-Reply-To: <1441234355-7524-1-git-send-email-yu.dai@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: yu.dai@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAwMyBTZXAgMjAxNSwgeXUuZGFpQGludGVsLmNvbSB3cm90ZToKPiBGcm9tOiBBbGV4 IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPgo+IEJ5IHVzaW5nIGluZm9ybWF0aW9uIGZyb20gR3VD IGNzcyBoZWFkZXIsIHdlIGNhbiBlbGltaW5hdGUgc29tZQo+IGhhcmQgY29kZSB3LnIudCBzaXpl IG9mIHNvbWUgY29tcG9uZW50cyBvZiBmaXJtd2FyZS4KPgo+IFNpZ25lZC1vZmYtYnk6IEFsZXgg RGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuaCAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf ZndpZi5oICAgfCAzNiArKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19sb2FkZXIuYyB8IDkxICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICAz IGZpbGVzIGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiBpbmRleCA0ZWMyZDI3Li5lMTM4OWZjIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiBAQCAtNzEsNiArNzEsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3Vj X2Z3IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoJZ3VjX2Z3X29iajsKPiAgCWVu dW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNfZndfZmV0Y2hfc3RhdHVzOwo+ICAJZW51bSBpbnRl bF9ndWNfZndfc3RhdHVzCWd1Y19md19sb2FkX3N0YXR1czsKPiArCXN0cnVjdCBndWNfY3NzX2hl YWRlcgkJZ3VjX2Z3X2hlYWRlcjsKPiAgCj4gIAl1aW50MTZfdAkJCWd1Y19md19tYWpvcl93YW50 ZWQ7Cj4gIAl1aW50MTZfdAkJCWd1Y19md19taW5vcl93YW50ZWQ7Cj4gQEAgLTgwLDcgKzgxLDYg QEAgc3RydWN0IGludGVsX2d1Y19mdyB7Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfZ3VjIHsKPiAgCXN0 cnVjdCBpbnRlbF9ndWNfZncgZ3VjX2Z3Owo+IC0KPiAgCXVpbnQzMl90IGxvZ19mbGFnczsKPiAg CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpsb2dfb2JqOwo+ICAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19md2lmLmgKPiBpbmRleCBlMWY0N2JhLi5kNmNiNGU4IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oCj4gQEAgLTEyMiw2ICsxMjIsNDIgQEAKPiAg Cj4gICNkZWZpbmUgR1VDX0NUTF9NQVhfRFdPUkRTCQkoR1VDX0NUTF9SU1JWRCArIDEpCj4gIAo+ ICtzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgewo+ICsJdWludDMyX3QgbW9kdWxlX3R5cGU7Cj4gKwl1 aW50MzJfdCBoZWFkZXJfbGVuOyAvKiBoZWFkZXIgbGVuZ3RoIHBsdXMgc2l6ZSBvZiBhbGwgb3Ro ZXIga2V5cyAqLwo+ICsJdWludDMyX3QgaGVhZGVyX3ZlcnNpb247Cj4gKwl1aW50MzJfdCBtb2R1 bGVfaWQ7Cj4gKwl1aW50MzJfdCBtb2R1bGVfdmVuZG9yOwo+ICsJdW5pb24gewo+ICsJCXN0cnVj dCB7Cj4gKwkJCXVpbnQ4X3QgZGF5Owo+ICsJCQl1aW50OF90IG1vbnRoOwo+ICsJCQl1aW50MTZf dCB5ZWFyOwo+ICsJCX07Cj4gKwkJdWludDMyX3QgZGF0ZTsKPiArCX07Cj4gKwl1aW50MzJfdCBz aXplOyAvKiB1Q29kZSBzaXplIHBsdXMgaGVhZGVyX2xlbiAqLwo+ICsJdWludDMyX3Qga2V5X3Np emU7Cj4gKwl1aW50MzJfdCBtb2R1bHVzX3NpemU7Cj4gKwl1aW50MzJfdCBleHBvbmVudF9zaXpl Owo+ICsJdW5pb24gewo+ICsJCXN0cnVjdCB7Cj4gKwkJCXVpbnQ4X3QgaG91cjsKPiArCQkJdWlu dDhfdCBtaW47Cj4gKwkJCXVpbnQxNl90IHNlYzsKPiArCQl9Owo+ICsJCXVpbnQzMl90IHRpbWU7 Cj4gKwl9Owo+ICsKPiArCWNoYXIgdXNlcm5hbWVbOF07Cj4gKwljaGFyIGJ1aWxkbnVtYmVyWzEy XTsKPiArCXVpbnQzMl90IGRldmljZV9pZDsKPiArCXVpbnQzMl90IGd1Y19zd192ZXJzaW9uOwo+ ICsJdWludDMyX3QgcHJvZF9wcmVwcm9kX2Z3Owo+ICsJdWludDMyX3QgcmVzZXJ2ZWRbMTJdOwo+ ICsJdWludDMyX3QgaGVhZGVyX2luZm87Cj4gK307CgpEcml2ZS1ieSByZXZpZXcsIHRoaXMgd2ls bCBuZWVkIF9fcGFja2VkLgoKQlIsCkphbmkuCgoKPiArCj4gIHN0cnVjdCBndWNfZG9vcmJlbGxf aW5mbyB7Cj4gIAl1MzIgZGJfc3RhdHVzOwo+ICAJdTMyIGNvb2tpZTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gaW5kZXggNTgyMzYxNS4uOTY4MjZhZSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBAQCAtMjE1LDE4ICsyMTUs MjQgQEAgc3RhdGljIGlubGluZSBib29sIGd1Y191Y29kZV9yZXNwb25zZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJKCh2YWwgJiBHU19NSUFfQ09SRV9TVEFURSkgJiYg dWtfdmFsID09IEdTX1VLRVJORUxfTEFQSUNfRE9ORSkpOwo+ICB9Cj4gIAo+IC0vKgo+ICsvKioK PiAgICogVHJhbnNmZXIgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5 IHRoZSBtaWNyb2NvbnRyb2xsZXIuCj4gICAqCj4gICAqIEd1QyBGaXJtd2FyZSBsYXlvdXQ6Cj4g LSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQo+IC0gKiB8ICAgICAg ICAgIENTUyBoZWFkZXIgICAgICAgICAgIHwgIDEyOEIKPiArICogKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgIGd1Y19jc3NfaGVhZGVyICAgICAgICAgfAo+ ICAgKiB8IGNvbnRhaW5zIG1ham9yL21pbm9yIHZlcnNpb24gIHwKPiAtICogKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0tCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwo+ICAgKiB8ICAgICAgICAgICAgIHVDb2RlICAgICAgICAgICAgIHwKPiAtICog Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0tCj4gLSAqIHwgICAgICAgICBS U0Egc2lnbmF0dXJlICAgICAgICAgfCAgMjU2Qgo+IC0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsgIC0tLS0KPiArICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r Cj4gKyAqIHwgICAgICAgICBSU0Egc2lnbmF0dXJlICAgICAgICAgfAo+ICsgKiArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICBtb2R1bHVzIGtleSAgICAg ICAgICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAg ICAgICAgIGV4cG9uZW50IHZhbCAgICAgICAgIHwKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rCj4gKyAqIFRoZSBmaXJtd2FyZSBtYXkgb3IgbWF5IG5vdCBoYXZlIG1vZHVs dXMga2V5IGFuZCBleHBvbmVudCBkYXRhLiBUaGUgaGVhZGVyLAo+ICsgKiB1Q29kZSBhbmQgUlNB IHNpZ25hdHVyZSBhcmUgbXVzdC1oYXZlIGNvbXBvbmVudHMgdGhhdCB3aWxsIGJlIHVzZWQgYnkg ZHJpdmVyLgo+ICAgKgo+ICAgKiBBcmNoaXRlY3R1cmFsbHksIHRoZSBETUEgZW5naW5lIGlzIGJp ZGlyZWN0aW9uYWwsIGFuZCBjYW4gcG90ZW50aWFsbHkgZXZlbgo+ICAgKiB0cmFuc2ZlciBiZXR3 ZWVuIEdUVCBsb2NhdGlvbnMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBsZWZ0IG91dCBvZiB0aGUg QVBJCj4gQEAgLTIzNiwzMCArMjQyLDM5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBndWNfdWNvZGVf cmVzcG9uc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgKiBETUEgZW5n aW5lIGluIG9uZSBvcGVyYXRpb24sIHdoZXJlYXMgdGhlIFJTQSBzaWduYXR1cmUgaXMgbG9hZGVk IHZpYSBNTUlPLgo+ICAgKi8KPiAgCj4gLSNkZWZpbmUgVU9TX0NTU19IRUFERVJfT0ZGU0VUCQkw Cj4gLSNkZWZpbmUgVU9TX1ZFUl9NSU5PUl9PRkZTRVQJCTB4NDQKPiAtI2RlZmluZSBVT1NfVkVS X01BSk9SX09GRlNFVAkJMHg0Ngo+IC0jZGVmaW5lIFVPU19DU1NfSEVBREVSX1NJWkUJCTB4ODAK PiAtI2RlZmluZSBVT1NfUlNBX1NJR19TSVpFCQkweDEwMAo+IC0KPiAgc3RhdGljIGludCBndWNf dWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4g IAlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4g KwlzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKmhlYWRlciA9ICZndWNfZnctPmd1Y19md19oZWFkZXI7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZndfb2JqID0gZ3VjX2Z3LT5ndWNfZndf b2JqOwo+ICAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cj4gIAlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0g Zndfb2JqLT5wYWdlczsKPiAtCXUzMiBzdGF0dXMsIHVjb2RlX3NpemUsIHJzYVtVT1NfUlNBX1NJ R19TSVpFIC8gc2l6ZW9mKHUzMildOwo+ICsJdTMyIHN0YXR1cywgaGVhZGVyX3NpemUsIHJzYV9z aXplLCB1Y29kZV9zaXplLCAqcnNhOwo+ICAJaW50IGksIHJldCA9IDA7Cj4gIAo+IC0JLyogdUNv ZGUgc2l6ZSwgYWxzbyBpcyB3aGVyZSBSU0Egc2lnbmF0dXJlIHN0YXJ0cyAqLwo+IC0Jb2Zmc2V0 ID0gdWNvZGVfc2l6ZSA9IGd1Y19mdy0+Z3VjX2Z3X3NpemUgLSBVT1NfUlNBX1NJR19TSVpFOwo+ IC0JSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCB1Y29kZV9zaXplKTsKPiArCS8qIFRoZSBoZWFk ZXIgcGx1cyB1Q29kZSB3aWxsIGJlIGNvcGllZCB0byBXT1BDTSB2aWEgRE1BLCBleGNsdWRpbmcg YW55Cj4gKwkgKiBvdGhlciBjb21wb25lbnRzICovCj4gKwloZWFkZXJfc2l6ZSA9IChoZWFkZXIt PmhlYWRlcl9sZW4gLSBoZWFkZXItPmtleV9zaXplIC0KPiArCQloZWFkZXItPm1vZHVsdXNfc2l6 ZSAtIGhlYWRlci0+ZXhwb25lbnRfc2l6ZSkgKiBzaXplb2YodTMyKTsKPiArCXVjb2RlX3NpemUg PSAoaGVhZGVyLT5zaXplIC0gaGVhZGVyLT5oZWFkZXJfbGVuKSAqIHNpemVvZih1MzIpOwo+ICsK PiArCUk5MTVfV1JJVEUoRE1BX0NPUFlfU0laRSwgaGVhZGVyX3NpemUgKyB1Y29kZV9zaXplKTsK PiArCj4gKwkvKiB3aGVyZSBSU0Egc2lnbmF0dXJlIHN0YXJ0cyAqLwo+ICsJb2Zmc2V0ID0gaGVh ZGVyX3NpemUgKyB1Y29kZV9zaXplOwo+ICsKPiArCXJzYV9zaXplID0gaGVhZGVyLT5rZXlfc2l6 ZSAqIHNpemVvZih1MzIpOwo+ICsJcnNhID0ga21hbGxvYyhyc2Ffc2l6ZSwgR0ZQX0tFUk5FTCk7 Cj4gKwlpZiAoIXJzYSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gIAkvKiBDb3B5IFJTQSBz aWduYXR1cmUgZnJvbSB0aGUgZncgaW1hZ2UgdG8gSFcgZm9yIHZlcmlmaWNhdGlvbiAqLwo+IC0J c2dfcGNvcHlfdG9fYnVmZmVyKHNnLT5zZ2wsIHNnLT5uZW50cywgcnNhLCBVT1NfUlNBX1NJR19T SVpFLCBvZmZzZXQpOwo+IC0JZm9yIChpID0gMDsgaSA8IFVPU19SU0FfU0lHX1NJWkUgLyBzaXpl b2YodTMyKTsgaSsrKQo+ICsJc2dfcGNvcHlfdG9fYnVmZmVyKHNnLT5zZ2wsIHNnLT5uZW50cywg cnNhLCByc2Ffc2l6ZSwgb2Zmc2V0KTsKPiArCWZvciAoaSA9IDA7IGkgPCByc2Ffc2l6ZSAvIHNp emVvZih1MzIpOyBpKyspCj4gIAkJSTkxNV9XUklURShVT1NfUlNBX1NDUkFUQ0hfMCArIGkgKiBz aXplb2YodTMyKSwgcnNhW2ldKTsKPiAgCj4gKwlrZnJlZShyc2EpOwo+ICsKPiAgCS8qIFNldCB0 aGUgc291cmNlIGFkZHJlc3MgZm9yIHRoZSBuZXcgYmxvYiAqLwo+ICAJb2Zmc2V0ID0gaTkxNV9n ZW1fb2JqX2dndHRfb2Zmc2V0KGZ3X29iaik7Cj4gIAlJOTE1X1dSSVRFKERNQV9BRERSXzBfTE9X LCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwo+IEBAIC00NTgsMTAgKzQ3Myw4IEBAIHN0YXRpYyB2 b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3Vj X2Z3ICpndWNfZncpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4g IAljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3Owo+IC0JY29uc3QgdTggKmNzc19oZWFkZXI7Cj4g LQljb25zdCBzaXplX3QgbWluc2l6ZSA9IFVPU19DU1NfSEVBREVSX1NJWkUgKyBVT1NfUlNBX1NJ R19TSVpFOwo+IC0JY29uc3Qgc2l6ZV90IG1heHNpemUgPSBHVUNfV09QQ01fU0laRV9WQUxVRSAr IFVPU19SU0FfU0lHX1NJWkUKPiAtCQkJLSAweDgwMDA7IC8qIDMyayByZXNlcnZlZCAoOEsgc3Rh Y2sgKyAyNGsgY29udGV4dCkgKi8KPiArCXN0cnVjdCBndWNfY3NzX2hlYWRlciAqY3NzX2hlYWRl ciA9ICZndWNfZnctPmd1Y19md19oZWFkZXI7Cj4gKwlzaXplX3Qgc2l6ZTsKPiAgCWludCBlcnI7 Cj4gIAo+ICAJRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IEd1 QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCj4gQEAgLTQ3NSwxMiArNDg4LDMxIEBAIHN0YXRpYyB2 b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3Vj X2Z3ICpndWNfZncpCj4gIAo+ICAJRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggR3VDIGZ3IGZyb20g JXMgc3VjY2VlZGVkLCBmdyAlcFxuIiwKPiAgCQlndWNfZnctPmd1Y19md19wYXRoLCBmdyk7Cj4g LQlEUk1fREVCVUdfRFJJVkVSKCJmaXJtd2FyZSBmaWxlIHNpemUgJXp1IChtaW5pbXVtICV6dSwg bWF4aW11bSAlenUpXG4iLAo+IC0JCWZ3LT5zaXplLCBtaW5zaXplLCBtYXhzaXplKTsKPiAgCj4g LQkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBiZWZvZSBleGFtaW5pbmcgYnVmZmVyIGNv bnRlbnRzICovCj4gLQlpZiAoZnctPnNpemUgPCBtaW5zaXplIHx8IGZ3LT5zaXplID4gbWF4c2l6 ZSkKPiArCS8qIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9iIGJlZm9yZSBleGFtaW5pbmcgYnVm ZmVyIGNvbnRlbnRzICovCj4gKwlpZiAoZnctPnNpemUgPCBzaXplb2Yoc3RydWN0IGd1Y19jc3Nf aGVhZGVyKSkgewo+ICsJCURSTV9FUlJPUigiRmlybXdhcmUgaGVhZGVyIGlzIG1pc3NpbmdcbiIp Owo+ICsJCWdvdG8gZmFpbDsKPiArCX0KPiArCj4gKwltZW1jcHkoY3NzX2hlYWRlciwgZnctPmRh dGEsIHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKTsKPiArCj4gKwkvKiBBdCBsZWFzdCwg aXQgc2hvdWxkIGhhdmUgaGVhZGVyLCB1Q29kZSBhbmQgUlNBLiBTaXplIG9mIGFsbCB0aHJlZS4g Ki8KPiArCXNpemUgPSAoY3NzX2hlYWRlci0+c2l6ZSAtIGNzc19oZWFkZXItPm1vZHVsdXNfc2l6 ZSAtCj4gKwkJCWNzc19oZWFkZXItPmV4cG9uZW50X3NpemUpICogc2l6ZW9mKHUzMik7Cj4gKwlp ZiAoZnctPnNpemUgPCBzaXplKSB7Cj4gKwkJRFJNX0VSUk9SKCJNaXNzaW5nIGZpcm13YXJlIGNv bXBvbmVudHNcbiIpOwo+ICsJCWdvdG8gZmFpbDsKPiArCX0KPiArCj4gKwkvKiBIZWFkZXIgYW5k IHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBTaXplIG9mIHRoZSB0d28uICovCj4gKwlz aXplIC09IGNzc19oZWFkZXItPmtleV9zaXplICogc2l6ZW9mKHUzMik7Cj4gKwo+ICsJLyogVG9w IDMyayBvZiBXT1BDTSBpcyByZXNlcnZlZCAoOEsgc3RhY2sgKyAyNGsgUkM2IGNvbnRleHQpLiAq Lwo+ICsJaWYgKHNpemUgPiBHVUNfV09QQ01fU0laRV9WQUxVRSAtIDB4ODAwMCkgewo+ICsJCURS TV9FUlJPUigiRmlybXdhcmUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIik7Cj4gIAkJ Z290byBmYWlsOwo+ICsJfQo+ICAKPiAgCS8qCj4gIAkgKiBUaGUgR3VDIGZpcm13YXJlIGltYWdl IGhhcyB0aGUgdmVyc2lvbiBudW1iZXIgZW1iZWRkZWQgYXQgYSB3ZWxsLWtub3duCj4gQEAgLTQ4 OCw5ICs1MjAsOCBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+ICAJICogVFdPIGJ5dGVzIGVhY2gg KGkuZS4gdTE2KSwgYWx0aG91Z2ggYWxsIHBvaW50ZXJzIGFuZCBvZmZzZXRzIGFyZSBkZWZpbmVk Cj4gIAkgKiBpbiB0ZXJtcyBvZiBieXRlcyAodTgpLgo+ICAJICovCj4gLQljc3NfaGVhZGVyID0g ZnctPmRhdGEgKyBVT1NfQ1NTX0hFQURFUl9PRkZTRVQ7Cj4gLQlndWNfZnctPmd1Y19md19tYWpv cl9mb3VuZCA9ICoodTE2ICopKGNzc19oZWFkZXIgKyBVT1NfVkVSX01BSk9SX09GRlNFVCk7Cj4g LQlndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA9ICoodTE2ICopKGNzc19oZWFkZXIgKyBVT1Nf VkVSX01JTk9SX09GRlNFVCk7Cj4gKwlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCA9IGNzc19o ZWFkZXItPmd1Y19zd192ZXJzaW9uID4+IDE2Owo+ICsJZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91 bmQgPSBjc3NfaGVhZGVyLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKPiAgCj4gIAlpZiAoZ3Vj X2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgIT0gZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8 Cj4gIAkgICAgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPCBndWNfZnctPmd1Y19md19taW5v cl93YW50ZWQpIHsKPiAtLSAKPiAxLjkuMQo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3Vy Y2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK