From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Add GuC css header parser Date: Fri, 4 Sep 2015 10:13:28 +0200 Message-ID: <20150904081328.GK22430@phenom.ffwll.local> 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 mail-wi0-f170.google.com (mail-wi0-f170.google.com [209.85.212.170]) by gabe.freedesktop.org (Postfix) with ESMTPS id 88FA56EB6A for ; Fri, 4 Sep 2015 01:10:47 -0700 (PDT) Received: by wiclk2 with SMTP id lk2so13929073wic.0 for ; Fri, 04 Sep 2015 01:10:46 -0700 (PDT) Content-Disposition: inline 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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMDIsIDIwMTUgYXQgMDM6NTI6MzVQTSAtMDcwMCwgeXUuZGFpQGludGVsLmNv bSB3cm90ZToKPiBGcm9tOiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiAKPiBCeSB1c2lu ZyBpbmZvcm1hdGlvbiBmcm9tIEd1QyBjc3MgaGVhZGVyLCB3ZSBjYW4gZWxpbWluYXRlIHNvbWUK PiBoYXJkIGNvZGUgdy5yLnQgc2l6ZSBvZiBzb21lIGNvbXBvbmVudHMgb2YgZmlybXdhcmUuCj4g Cj4gU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmggICB8IDM2ICsrKysrKysrKysrKysKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHwgOTEgKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygrKSwg MzEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiBpbmRleCA0ZWMy ZDI3Li5lMTM4OWZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiBAQCAtNzEsNiAr NzEsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICoJZ3VjX2Z3X29iajsKPiAgCWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNfZndfZmV0 Y2hfc3RhdHVzOwo+ICAJZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzCWd1Y19md19sb2FkX3N0YXR1 czsKPiArCXN0cnVjdCBndWNfY3NzX2hlYWRlcgkJZ3VjX2Z3X2hlYWRlcjsKPiAgCj4gIAl1aW50 MTZfdAkJCWd1Y19md19tYWpvcl93YW50ZWQ7Cj4gIAl1aW50MTZfdAkJCWd1Y19md19taW5vcl93 YW50ZWQ7Cj4gQEAgLTgwLDcgKzgxLDYgQEAgc3RydWN0IGludGVsX2d1Y19mdyB7Cj4gIAo+ICBz dHJ1Y3QgaW50ZWxfZ3VjIHsKPiAgCXN0cnVjdCBpbnRlbF9ndWNfZncgZ3VjX2Z3Owo+IC0KPiAg CXVpbnQzMl90IGxvZ19mbGFnczsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpsb2df b2JqOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3 aWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgKPiBpbmRleCBlMWY0 N2JhLi5kNmNiNGU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19md2lmLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oCj4g QEAgLTEyMiw2ICsxMjIsNDIgQEAKPiAgCj4gICNkZWZpbmUgR1VDX0NUTF9NQVhfRFdPUkRTCQko R1VDX0NUTF9SU1JWRCArIDEpCj4gIAo+ICtzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgewo+ICsJdWlu dDMyX3QgbW9kdWxlX3R5cGU7Cj4gKwl1aW50MzJfdCBoZWFkZXJfbGVuOyAvKiBoZWFkZXIgbGVu Z3RoIHBsdXMgc2l6ZSBvZiBhbGwgb3RoZXIga2V5cyAqLwo+ICsJdWludDMyX3QgaGVhZGVyX3Zl cnNpb247Cj4gKwl1aW50MzJfdCBtb2R1bGVfaWQ7Cj4gKwl1aW50MzJfdCBtb2R1bGVfdmVuZG9y Owo+ICsJdW5pb24gewo+ICsJCXN0cnVjdCB7Cj4gKwkJCXVpbnQ4X3QgZGF5Owo+ICsJCQl1aW50 OF90IG1vbnRoOwo+ICsJCQl1aW50MTZfdCB5ZWFyOwo+ICsJCX07Cj4gKwkJdWludDMyX3QgZGF0 ZTsKPiArCX07Cj4gKwl1aW50MzJfdCBzaXplOyAvKiB1Q29kZSBzaXplIHBsdXMgaGVhZGVyX2xl biAqLwo+ICsJdWludDMyX3Qga2V5X3NpemU7Cj4gKwl1aW50MzJfdCBtb2R1bHVzX3NpemU7Cj4g Kwl1aW50MzJfdCBleHBvbmVudF9zaXplOwo+ICsJdW5pb24gewo+ICsJCXN0cnVjdCB7Cj4gKwkJ CXVpbnQ4X3QgaG91cjsKPiArCQkJdWludDhfdCBtaW47Cj4gKwkJCXVpbnQxNl90IHNlYzsKPiAr CQl9Owo+ICsJCXVpbnQzMl90IHRpbWU7Cj4gKwl9Owo+ICsKPiArCWNoYXIgdXNlcm5hbWVbOF07 Cj4gKwljaGFyIGJ1aWxkbnVtYmVyWzEyXTsKPiArCXVpbnQzMl90IGRldmljZV9pZDsKPiArCXVp bnQzMl90IGd1Y19zd192ZXJzaW9uOwo+ICsJdWludDMyX3QgcHJvZF9wcmVwcm9kX2Z3Owo+ICsJ dWludDMyX3QgcmVzZXJ2ZWRbMTJdOwo+ICsJdWludDMyX3QgaGVhZGVyX2luZm87Cj4gK307Cj4g Kwo+ICBzdHJ1Y3QgZ3VjX2Rvb3JiZWxsX2luZm8gewo+ICAJdTMyIGRiX3N0YXR1czsKPiAgCXUz MiBjb29raWU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19s b2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+IGluZGV4 IDU4MjM2MTUuLjk2ODI2YWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvYWRlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xv YWRlci5jCj4gQEAgLTIxNSwxOCArMjE1LDI0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBndWNfdWNv ZGVfcmVzcG9uc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCSgodmFs ICYgR1NfTUlBX0NPUkVfU1RBVEUpICYmIHVrX3ZhbCA9PSBHU19VS0VSTkVMX0xBUElDX0RPTkUp KTsKPiAgfQo+ICAKPiAtLyoKPiArLyoqCgpZb3UgbmVlZCBhdCBsZWFzdCBhIERPQzogaGVyZSBw bHVzIGFkZCBhIGxpbmUgdG8gcHVsbCB0aGlzIGludG8gdGhlCmRybS50bXBsIGZvciBrZXJuZWxk b2MgdG8gcGljayB0aGlzIHVwLiBPdGhlcndpc2UgaXQnbGwgY29tcGxhaW4uIEJ1dCBJJ2QKcmVh bGx5IGxpa2UgdGhpcyB0byBiZSBpbiB0aGUgZG9jYm9vaywgdGhhdCdzIGZvciBzdXJlLgotRGFu aWVsCgoKPiAgICogVHJhbnNmZXIgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0 aW9uIGJ5IHRoZSBtaWNyb2NvbnRyb2xsZXIuCj4gICAqCj4gICAqIEd1QyBGaXJtd2FyZSBsYXlv dXQ6Cj4gLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQo+IC0gKiB8 ICAgICAgICAgIENTUyBoZWFkZXIgICAgICAgICAgIHwgIDEyOEIKPiArICogKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgIGd1Y19jc3NfaGVhZGVyICAgICAg ICAgfAo+ICAgKiB8IGNvbnRhaW5zIG1ham9yL21pbm9yIHZlcnNpb24gIHwKPiAtICogKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0tCj4gKyAqICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+ICAgKiB8ICAgICAgICAgICAgIHVDb2RlICAgICAgICAgICAgIHwK PiAtICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0tCj4gLSAqIHwgICAg ICAgICBSU0Egc2lnbmF0dXJlICAgICAgICAgfCAgMjU2Qgo+IC0gKiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsgIC0tLS0KPiArICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rCj4gKyAqIHwgICAgICAgICBSU0Egc2lnbmF0dXJlICAgICAgICAgfAo+ICsgKiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICBtb2R1bHVzIGtl eSAgICAgICAgICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsg KiB8ICAgICAgICAgIGV4cG9uZW50IHZhbCAgICAgICAgIHwKPiArICogKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIFRoZSBmaXJtd2FyZSBtYXkgb3IgbWF5IG5vdCBoYXZl IG1vZHVsdXMga2V5IGFuZCBleHBvbmVudCBkYXRhLiBUaGUgaGVhZGVyLAo+ICsgKiB1Q29kZSBh bmQgUlNBIHNpZ25hdHVyZSBhcmUgbXVzdC1oYXZlIGNvbXBvbmVudHMgdGhhdCB3aWxsIGJlIHVz ZWQgYnkgZHJpdmVyLgo+ICAgKgo+ICAgKiBBcmNoaXRlY3R1cmFsbHksIHRoZSBETUEgZW5naW5l IGlzIGJpZGlyZWN0aW9uYWwsIGFuZCBjYW4gcG90ZW50aWFsbHkgZXZlbgo+ICAgKiB0cmFuc2Zl ciBiZXR3ZWVuIEdUVCBsb2NhdGlvbnMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBsZWZ0IG91dCBv ZiB0aGUgQVBJCj4gQEAgLTIzNiwzMCArMjQyLDM5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBndWNf dWNvZGVfcmVzcG9uc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgKiBE TUEgZW5naW5lIGluIG9uZSBvcGVyYXRpb24sIHdoZXJlYXMgdGhlIFJTQSBzaWduYXR1cmUgaXMg bG9hZGVkIHZpYSBNTUlPLgo+ICAgKi8KPiAgCj4gLSNkZWZpbmUgVU9TX0NTU19IRUFERVJfT0ZG U0VUCQkwCj4gLSNkZWZpbmUgVU9TX1ZFUl9NSU5PUl9PRkZTRVQJCTB4NDQKPiAtI2RlZmluZSBV T1NfVkVSX01BSk9SX09GRlNFVAkJMHg0Ngo+IC0jZGVmaW5lIFVPU19DU1NfSEVBREVSX1NJWkUJ CTB4ODAKPiAtI2RlZmluZSBVT1NfUlNBX1NJR19TSVpFCQkweDEwMAo+IC0KPiAgc3RhdGljIGlu dCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNf Znc7Cj4gKwlzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKmhlYWRlciA9ICZndWNfZnctPmd1Y19md19o ZWFkZXI7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZndfb2JqID0gZ3VjX2Z3LT5n dWNfZndfb2JqOwo+ICAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cj4gIAlzdHJ1Y3Qgc2dfdGFibGUg KnNnID0gZndfb2JqLT5wYWdlczsKPiAtCXUzMiBzdGF0dXMsIHVjb2RlX3NpemUsIHJzYVtVT1Nf UlNBX1NJR19TSVpFIC8gc2l6ZW9mKHUzMildOwo+ICsJdTMyIHN0YXR1cywgaGVhZGVyX3NpemUs IHJzYV9zaXplLCB1Y29kZV9zaXplLCAqcnNhOwo+ICAJaW50IGksIHJldCA9IDA7Cj4gIAo+IC0J LyogdUNvZGUgc2l6ZSwgYWxzbyBpcyB3aGVyZSBSU0Egc2lnbmF0dXJlIHN0YXJ0cyAqLwo+IC0J b2Zmc2V0ID0gdWNvZGVfc2l6ZSA9IGd1Y19mdy0+Z3VjX2Z3X3NpemUgLSBVT1NfUlNBX1NJR19T SVpFOwo+IC0JSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCB1Y29kZV9zaXplKTsKPiArCS8qIFRo ZSBoZWFkZXIgcGx1cyB1Q29kZSB3aWxsIGJlIGNvcGllZCB0byBXT1BDTSB2aWEgRE1BLCBleGNs dWRpbmcgYW55Cj4gKwkgKiBvdGhlciBjb21wb25lbnRzICovCj4gKwloZWFkZXJfc2l6ZSA9ICho ZWFkZXItPmhlYWRlcl9sZW4gLSBoZWFkZXItPmtleV9zaXplIC0KPiArCQloZWFkZXItPm1vZHVs dXNfc2l6ZSAtIGhlYWRlci0+ZXhwb25lbnRfc2l6ZSkgKiBzaXplb2YodTMyKTsKPiArCXVjb2Rl X3NpemUgPSAoaGVhZGVyLT5zaXplIC0gaGVhZGVyLT5oZWFkZXJfbGVuKSAqIHNpemVvZih1MzIp Owo+ICsKPiArCUk5MTVfV1JJVEUoRE1BX0NPUFlfU0laRSwgaGVhZGVyX3NpemUgKyB1Y29kZV9z aXplKTsKPiArCj4gKwkvKiB3aGVyZSBSU0Egc2lnbmF0dXJlIHN0YXJ0cyAqLwo+ICsJb2Zmc2V0 ID0gaGVhZGVyX3NpemUgKyB1Y29kZV9zaXplOwo+ICsKPiArCXJzYV9zaXplID0gaGVhZGVyLT5r ZXlfc2l6ZSAqIHNpemVvZih1MzIpOwo+ICsJcnNhID0ga21hbGxvYyhyc2Ffc2l6ZSwgR0ZQX0tF Uk5FTCk7Cj4gKwlpZiAoIXJzYSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gIAkvKiBDb3B5 IFJTQSBzaWduYXR1cmUgZnJvbSB0aGUgZncgaW1hZ2UgdG8gSFcgZm9yIHZlcmlmaWNhdGlvbiAq Lwo+IC0Jc2dfcGNvcHlfdG9fYnVmZmVyKHNnLT5zZ2wsIHNnLT5uZW50cywgcnNhLCBVT1NfUlNB X1NJR19TSVpFLCBvZmZzZXQpOwo+IC0JZm9yIChpID0gMDsgaSA8IFVPU19SU0FfU0lHX1NJWkUg LyBzaXplb2YodTMyKTsgaSsrKQo+ICsJc2dfcGNvcHlfdG9fYnVmZmVyKHNnLT5zZ2wsIHNnLT5u ZW50cywgcnNhLCByc2Ffc2l6ZSwgb2Zmc2V0KTsKPiArCWZvciAoaSA9IDA7IGkgPCByc2Ffc2l6 ZSAvIHNpemVvZih1MzIpOyBpKyspCj4gIAkJSTkxNV9XUklURShVT1NfUlNBX1NDUkFUQ0hfMCAr IGkgKiBzaXplb2YodTMyKSwgcnNhW2ldKTsKPiAgCj4gKwlrZnJlZShyc2EpOwo+ICsKPiAgCS8q IFNldCB0aGUgc291cmNlIGFkZHJlc3MgZm9yIHRoZSBuZXcgYmxvYiAqLwo+ICAJb2Zmc2V0ID0g aTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGZ3X29iaik7Cj4gIAlJOTE1X1dSSVRFKERNQV9BRERS XzBfTE9XLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwo+IEBAIC00NTgsMTAgKzQ3Myw4IEBAIHN0 YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50 ZWxfZ3VjX2Z3ICpndWNfZncpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv Ymo7Cj4gIAljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3Owo+IC0JY29uc3QgdTggKmNzc19oZWFk ZXI7Cj4gLQljb25zdCBzaXplX3QgbWluc2l6ZSA9IFVPU19DU1NfSEVBREVSX1NJWkUgKyBVT1Nf UlNBX1NJR19TSVpFOwo+IC0JY29uc3Qgc2l6ZV90IG1heHNpemUgPSBHVUNfV09QQ01fU0laRV9W QUxVRSArIFVPU19SU0FfU0lHX1NJWkUKPiAtCQkJLSAweDgwMDA7IC8qIDMyayByZXNlcnZlZCAo OEsgc3RhY2sgKyAyNGsgY29udGV4dCkgKi8KPiArCXN0cnVjdCBndWNfY3NzX2hlYWRlciAqY3Nz X2hlYWRlciA9ICZndWNfZnctPmd1Y19md19oZWFkZXI7Cj4gKwlzaXplX3Qgc2l6ZTsKPiAgCWlu dCBlcnI7Cj4gIAo+ICAJRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdh cmU6IEd1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCj4gQEAgLTQ3NSwxMiArNDg4LDMxIEBAIHN0 YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50 ZWxfZ3VjX2Z3ICpndWNfZncpCj4gIAo+ICAJRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggR3VDIGZ3 IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAlcFxuIiwKPiAgCQlndWNfZnctPmd1Y19md19wYXRoLCBm dyk7Cj4gLQlEUk1fREVCVUdfRFJJVkVSKCJmaXJtd2FyZSBmaWxlIHNpemUgJXp1IChtaW5pbXVt ICV6dSwgbWF4aW11bSAlenUpXG4iLAo+IC0JCWZ3LT5zaXplLCBtaW5zaXplLCBtYXhzaXplKTsK PiAgCj4gLQkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBiZWZvZSBleGFtaW5pbmcgYnVm ZmVyIGNvbnRlbnRzICovCj4gLQlpZiAoZnctPnNpemUgPCBtaW5zaXplIHx8IGZ3LT5zaXplID4g bWF4c2l6ZSkKPiArCS8qIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9iIGJlZm9yZSBleGFtaW5p bmcgYnVmZmVyIGNvbnRlbnRzICovCj4gKwlpZiAoZnctPnNpemUgPCBzaXplb2Yoc3RydWN0IGd1 Y19jc3NfaGVhZGVyKSkgewo+ICsJCURSTV9FUlJPUigiRmlybXdhcmUgaGVhZGVyIGlzIG1pc3Np bmdcbiIpOwo+ICsJCWdvdG8gZmFpbDsKPiArCX0KPiArCj4gKwltZW1jcHkoY3NzX2hlYWRlciwg ZnctPmRhdGEsIHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKTsKPiArCj4gKwkvKiBBdCBs ZWFzdCwgaXQgc2hvdWxkIGhhdmUgaGVhZGVyLCB1Q29kZSBhbmQgUlNBLiBTaXplIG9mIGFsbCB0 aHJlZS4gKi8KPiArCXNpemUgPSAoY3NzX2hlYWRlci0+c2l6ZSAtIGNzc19oZWFkZXItPm1vZHVs dXNfc2l6ZSAtCj4gKwkJCWNzc19oZWFkZXItPmV4cG9uZW50X3NpemUpICogc2l6ZW9mKHUzMik7 Cj4gKwlpZiAoZnctPnNpemUgPCBzaXplKSB7Cj4gKwkJRFJNX0VSUk9SKCJNaXNzaW5nIGZpcm13 YXJlIGNvbXBvbmVudHNcbiIpOwo+ICsJCWdvdG8gZmFpbDsKPiArCX0KPiArCj4gKwkvKiBIZWFk ZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBTaXplIG9mIHRoZSB0d28uICov Cj4gKwlzaXplIC09IGNzc19oZWFkZXItPmtleV9zaXplICogc2l6ZW9mKHUzMik7Cj4gKwo+ICsJ LyogVG9wIDMyayBvZiBXT1BDTSBpcyByZXNlcnZlZCAoOEsgc3RhY2sgKyAyNGsgUkM2IGNvbnRl eHQpLiAqLwo+ICsJaWYgKHNpemUgPiBHVUNfV09QQ01fU0laRV9WQUxVRSAtIDB4ODAwMCkgewo+ ICsJCURSTV9FUlJPUigiRmlybXdhcmUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIik7 Cj4gIAkJZ290byBmYWlsOwo+ICsJfQo+ICAKPiAgCS8qCj4gIAkgKiBUaGUgR3VDIGZpcm13YXJl IGltYWdlIGhhcyB0aGUgdmVyc2lvbiBudW1iZXIgZW1iZWRkZWQgYXQgYSB3ZWxsLWtub3duCj4g QEAgLTQ4OCw5ICs1MjAsOCBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+ICAJICogVFdPIGJ5dGVz IGVhY2ggKGkuZS4gdTE2KSwgYWx0aG91Z2ggYWxsIHBvaW50ZXJzIGFuZCBvZmZzZXRzIGFyZSBk ZWZpbmVkCj4gIAkgKiBpbiB0ZXJtcyBvZiBieXRlcyAodTgpLgo+ICAJICovCj4gLQljc3NfaGVh ZGVyID0gZnctPmRhdGEgKyBVT1NfQ1NTX0hFQURFUl9PRkZTRVQ7Cj4gLQlndWNfZnctPmd1Y19m d19tYWpvcl9mb3VuZCA9ICoodTE2ICopKGNzc19oZWFkZXIgKyBVT1NfVkVSX01BSk9SX09GRlNF VCk7Cj4gLQlndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA9ICoodTE2ICopKGNzc19oZWFkZXIg KyBVT1NfVkVSX01JTk9SX09GRlNFVCk7Cj4gKwlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCA9 IGNzc19oZWFkZXItPmd1Y19zd192ZXJzaW9uID4+IDE2Owo+ICsJZ3VjX2Z3LT5ndWNfZndfbWlu b3JfZm91bmQgPSBjc3NfaGVhZGVyLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKPiAgCj4gIAlp ZiAoZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgIT0gZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2Fu dGVkIHx8Cj4gIAkgICAgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPCBndWNfZnctPmd1Y19m d19taW5vcl93YW50ZWQpIHsKPiAtLSAKPiAxLjkuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK