From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 02/15] drm/i915/guc: Add GuC css header parser Date: Fri, 25 Sep 2015 17:36:37 +0300 Message-ID: <87d1x6muq2.fsf@intel.com> References: <1441234355-7524-1-git-send-email-yu.dai@intel.com> <1442359691-31293-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id E29D96F138 for ; Fri, 25 Sep 2015 07:33:19 -0700 (PDT) In-Reply-To: <1442359691-31293-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 T24gV2VkLCAxNiBTZXAgMjAxNSwgeXUuZGFpQGludGVsLmNvbSB3cm90ZToKPiBGcm9tOiBBbGV4 IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPgo+IEJ5IHVzaW5nIGluZm9ybWF0aW9uIGZyb20gR3VD IGNzcyBoZWFkZXIsIHdlIGNhbiBlbGltaW5hdGUgc29tZQo+IGhhcmQgY29kZSB3LnIudCBzaXpl IG9mIHNvbWUgY29tcG9uZW50cyBvZiBmaXJtd2FyZS4KClRoZXJlJ3MgYSBjYXRjaCBoZXJlLiBZ b3UgY2FuJ3QgdHJ1c3QgYW55IG9mIHRoZSBmaXJtd2FyZSBibG9iCmNvbnRlbnRzLiBOb25lIGF0 IGFsbC4gSXQncyBhbGwgbWFsaWNpb3VzIHVzZXIgaW5wdXQgYXMgZmFyIGFzIHRoZQprZXJuZWwg aXMgY29uY2VybmVkLCBhbmQgd2UgZG9uJ3QgaGF2ZSB0aGUgbWVhbnMgdG8gY2hlY2sgdGhlIHNp Z25hdHVyZS4KCkkgbGlrZSB0aGUgdXNlIG9mIHRoZSBfX3BhY2tlZCBzdHJ1Y3QgaGVyZSwgYW5k IEkgbGlrZSBtYWtpbmcgdGhpcyBtb3JlCmR5bmFtaWMuIEJ1dCB5b3UgaGF2ZSB0byBjaGVjayB0 aGUgYm91bmRzIGZvciBldmVyeXRoaW5nIHlvdSB1c2UgZnJvbQp0aGUgY3NzIGhlYWRlci4KCkJS LApKYW5pLgoKCj4KPiB2MjogQWRkIGluZGVudCBpbnRvIERPQyB0byBtYWtlIGZpeGVkLXdpZHRo IGZvcm1hdCByYXRoZXIgdGhhbgo+IGNoYW5nZSB0aGUgdG1wbC4KPgo+IHYxOiAxKSBndWNfY3Nz X2hlYWRlciBpcyBkZWZpbmVkIGFzIF9fcGFja2VkIG5vdwo+ICAgICAyKSBBZGQgYW5kIGNvcnJl Y3QgR3VDIHJlbGF0ZWQgdG9waWNzIGluIGtlcm5lbC9Eb2MKPgo+IFNpZ25lZC1vZmYtYnk6IEFs ZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+IC0tLQo+ICBEb2N1bWVudGF0aW9uL0RvY0Jvb2sv ZHJtLnRtcGwgICAgICAgICAgfCAgIDkgKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Yy5oICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf ZndpZi5oICAgfCAgMzYgKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX2xvYWRlci5jIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4gIDQg ZmlsZXMgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbCBiL0RvY3VtZW50YXRpb24v RG9jQm9vay9kcm0udG1wbAo+IGluZGV4IDY2YmM2NDYuLjExNjMzMmYgMTAwNjQ0Cj4gLS0tIGEv RG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NC b29rL2RybS50bXBsCj4gQEAgLTQxNTUsMTQgKzQxNTUsMTkgQEAgaW50IG51bV9pb2N0bHM7PC9z eW5vcHNpcz4KPiAgICAgICAgPHRpdGxlPkd1Qy1iYXNlZCBDb21tYW5kIFN1Ym1pc3Npb248L3Rp dGxlPgo+ICAgICAgICA8c2VjdDI+Cj4gICAgICAgICAgPHRpdGxlPkd1QzwvdGl0bGU+Cj4gLSFQ ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIEd1Qy1zcGVjaWZpYyBmaXJt d2FyZSBsb2FkZXIKPiArIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMg R3VDCj4gICFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gICAgICAg IDwvc2VjdDI+Cj4gICAgICAgIDxzZWN0Mj4KPiAgICAgICAgICA8dGl0bGU+R3VDIENsaWVudDwv dGl0bGU+Cj4gLSFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIEd1 Qy1iYXNlZCBjb21tYW5kIHN1Ym1pc3Npc29uCj4gKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jIEd1QyBDbGllbnQKPiAgIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2d1Y19zdWJtaXNzaW9uLmMKPiAgICAgICAgPC9zZWN0Mj4KPiArICAgICAgPHNlY3QyPgo+ ICsgICAgICAgIDx0aXRsZT5HdUMgRmlybXdhcmUgTGF5b3V0PC90aXRsZT4KPiArIVBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgR3VDIEZpcm13YXJlIExheW91dAo+ICsh SWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ICsgICAgICA8L3NlY3Qy Pgo+ICAgICAgPC9zZWN0MT4KPiAgCj4gICAgICA8c2VjdDE+Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmgKPiBpbmRleCA0ZWMyZDI3Li5lMTM4OWZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmgKPiBAQCAtNzEsNiArNzEsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKPiAgCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICoJZ3VjX2Z3X29iajsKPiAgCWVudW0gaW50ZWxfZ3VjX2Z3 X3N0YXR1cwlndWNfZndfZmV0Y2hfc3RhdHVzOwo+ICAJZW51bSBpbnRlbF9ndWNfZndfc3RhdHVz CWd1Y19md19sb2FkX3N0YXR1czsKPiArCXN0cnVjdCBndWNfY3NzX2hlYWRlcgkJZ3VjX2Z3X2hl YWRlcjsKPiAgCj4gIAl1aW50MTZfdAkJCWd1Y19md19tYWpvcl93YW50ZWQ7Cj4gIAl1aW50MTZf dAkJCWd1Y19md19taW5vcl93YW50ZWQ7Cj4gQEAgLTgwLDcgKzgxLDYgQEAgc3RydWN0IGludGVs X2d1Y19mdyB7Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfZ3VjIHsKPiAgCXN0cnVjdCBpbnRlbF9ndWNf ZncgZ3VjX2Z3Owo+IC0KPiAgCXVpbnQzMl90IGxvZ19mbGFnczsKPiAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpsb2dfb2JqOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19m d2lmLmgKPiBpbmRleCBlMWY0N2JhLi4wMDZkYzBkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfZndpZi5oCj4gQEAgLTEyMiw2ICsxMjIsNDIgQEAKPiAgCj4gICNkZWZpbmUgR1VD X0NUTF9NQVhfRFdPUkRTCQkoR1VDX0NUTF9SU1JWRCArIDEpCj4gIAo+ICtzdHJ1Y3QgZ3VjX2Nz c19oZWFkZXIgewo+ICsJdWludDMyX3QgbW9kdWxlX3R5cGU7Cj4gKwl1aW50MzJfdCBoZWFkZXJf bGVuOyAvKiBoZWFkZXIgbGVuZ3RoIHBsdXMgc2l6ZSBvZiBhbGwgb3RoZXIga2V5cyAqLwo+ICsJ dWludDMyX3QgaGVhZGVyX3ZlcnNpb247Cj4gKwl1aW50MzJfdCBtb2R1bGVfaWQ7Cj4gKwl1aW50 MzJfdCBtb2R1bGVfdmVuZG9yOwo+ICsJdW5pb24gewo+ICsJCXN0cnVjdCB7Cj4gKwkJCXVpbnQ4 X3QgZGF5Owo+ICsJCQl1aW50OF90IG1vbnRoOwo+ICsJCQl1aW50MTZfdCB5ZWFyOwo+ICsJCX07 Cj4gKwkJdWludDMyX3QgZGF0ZTsKPiArCX07Cj4gKwl1aW50MzJfdCBzaXplOyAvKiB1Q29kZSBz aXplIHBsdXMgaGVhZGVyX2xlbiAqLwo+ICsJdWludDMyX3Qga2V5X3NpemU7Cj4gKwl1aW50MzJf dCBtb2R1bHVzX3NpemU7Cj4gKwl1aW50MzJfdCBleHBvbmVudF9zaXplOwo+ICsJdW5pb24gewo+ ICsJCXN0cnVjdCB7Cj4gKwkJCXVpbnQ4X3QgaG91cjsKPiArCQkJdWludDhfdCBtaW47Cj4gKwkJ CXVpbnQxNl90IHNlYzsKPiArCQl9Owo+ICsJCXVpbnQzMl90IHRpbWU7Cj4gKwl9Owo+ICsKPiAr CWNoYXIgdXNlcm5hbWVbOF07Cj4gKwljaGFyIGJ1aWxkbnVtYmVyWzEyXTsKPiArCXVpbnQzMl90 IGRldmljZV9pZDsKPiArCXVpbnQzMl90IGd1Y19zd192ZXJzaW9uOwo+ICsJdWludDMyX3QgcHJv ZF9wcmVwcm9kX2Z3Owo+ICsJdWludDMyX3QgcmVzZXJ2ZWRbMTJdOwo+ICsJdWludDMyX3QgaGVh ZGVyX2luZm87Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICBzdHJ1Y3QgZ3VjX2Rvb3JiZWxsX2luZm8g ewo+ICAJdTMyIGRiX3N0YXR1czsKPiAgCXUzMiBjb29raWU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYwo+IGluZGV4IDQwMjQxZjMuLmE2NzAzYjQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gQEAgLTIxNSwxOCArMjE1LDI5IEBA IHN0YXRpYyBpbmxpbmUgYm9vbCBndWNfdWNvZGVfcmVzcG9uc2Uoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJCSgodmFsICYgR1NfTUlBX0NPUkVfU1RBVEUpICYmIHVrX3Zh bCA9PSBHU19VS0VSTkVMX0xBUElDX0RPTkUpKTsKPiAgfQo+ICAKPiAtLyoKPiAtICogVHJhbnNm ZXIgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZSBtaWNyb2Nv bnRyb2xsZXIuCj4gKy8qKgo+ICsgKiBET0M6IEd1QyBGaXJtd2FyZSBMYXlvdXQKPiAgICoKPiAt ICogR3VDIEZpcm13YXJlIGxheW91dDoKPiAtICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rICAtLS0tCj4gLSAqIHwgICAgICAgICAgQ1NTIGhlYWRlciAgICAgICAgICAgfCAgMTI4 Qgo+IC0gKiB8IGNvbnRhaW5zIG1ham9yL21pbm9yIHZlcnNpb24gIHwKPiAtICogKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0tCj4gLSAqIHwgICAgICAgICAgICAgdUNvZGUg ICAgICAgICAgICAgfAo+IC0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0t LS0KPiAtICogfCAgICAgICAgIFJTQSBzaWduYXR1cmUgICAgICAgICB8ICAyNTZCCj4gLSAqICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQo+ICsgKiBUaGUgR3VDIGZpcm13 YXJlIGxheW91dCBsb29rcyBsaWtlIHRoaXM6Cj4gKyAqCj4gKyAqICAgICArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKPiArICogICAgIHwgICAgICAgIGd1Y19jc3NfaGVhZGVyICAg ICAgICAgfAo+ICsgKiAgICAgfCBjb250YWlucyBtYWpvci9taW5vciB2ZXJzaW9uICB8Cj4gKyAq ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiArICogICAgIHwgICAgICAg ICAgICAgdUNvZGUgICAgICAgICAgICAgfAo+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rCj4gKyAqICAgICB8ICAgICAgICAgUlNBIHNpZ25hdHVyZSAgICAgICAgIHwK PiArICogICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAgICAgfCAg ICAgICAgICBtb2R1bHVzIGtleSAgICAgICAgICB8Cj4gKyAqICAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKPiArICogICAgIHwgICAgICAgICAgZXhwb25lbnQgdmFsICAgICAg ICAgfAo+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqCj4g KyAqIFRoZSBmaXJtd2FyZSBtYXkgb3IgbWF5IG5vdCBoYXZlIG1vZHVsdXMga2V5IGFuZCBleHBv bmVudCBkYXRhLiBUaGUgaGVhZGVyLAo+ICsgKiB1Q29kZSBhbmQgUlNBIHNpZ25hdHVyZSBhcmUg bXVzdC1oYXZlIGNvbXBvbmVudHMgdGhhdCB3aWxsIGJlIHVzZWQgYnkgZHJpdmVyLgo+ICsgKiBT aXplIG9mIGVhY2ggY29tcG9uZW50cyAoaW4gZHdvcmRzKSBjYW4gYmUgZm91bmQgaW4gaGVhZGVy LiBJbiB0aGUgY2FzZSB0aGF0Cj4gKyAqIG1vZHVsdXMgYW5kIGV4cG9uZW50IGFyZSBub3QgcHJl c2VudCBpbiBmdywgdGhlIHNpemUgdmFsdWUgc3RpbGwgYXBwZWFycyBpbgo+ICsgKiBoZWFkZXIu Cj4gICAqCj4gICAqIEFyY2hpdGVjdHVyYWxseSwgdGhlIERNQSBlbmdpbmUgaXMgYmlkaXJlY3Rp b25hbCwgYW5kIGNhbiBwb3RlbnRpYWxseSBldmVuCj4gICAqIHRyYW5zZmVyIGJldHdlZW4gR1RU IGxvY2F0aW9ucy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGxlZnQgb3V0IG9mIHRoZSBBUEkKPiBA QCAtMjM2LDMwICsyNDcsNDIgQEAgc3RhdGljIGlubGluZSBib29sIGd1Y191Y29kZV9yZXNwb25z ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAqIERNQSBlbmdpbmUgaW4g b25lIG9wZXJhdGlvbiwgd2hlcmVhcyB0aGUgUlNBIHNpZ25hdHVyZSBpcyBsb2FkZWQgdmlhIE1N SU8uCj4gICAqLwo+ICAKPiAtI2RlZmluZSBVT1NfQ1NTX0hFQURFUl9PRkZTRVQJCTAKPiAtI2Rl ZmluZSBVT1NfVkVSX01JTk9SX09GRlNFVAkJMHg0NAo+IC0jZGVmaW5lIFVPU19WRVJfTUFKT1Jf T0ZGU0VUCQkweDQ2Cj4gLSNkZWZpbmUgVU9TX0NTU19IRUFERVJfU0laRQkJMHg4MAo+IC0jZGVm aW5lIFVPU19SU0FfU0lHX1NJWkUJCTB4MTAwCj4gLQo+ICsvKgo+ICsgKiBUcmFuc2ZlciB0aGUg ZmlybXdhcmUgaW1hZ2UgdG8gUkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3JvY29udHJvbGxl ci4KPiArICovCj4gIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3 ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGd1Y19jc3NfaGVhZGVyICpoZWFk ZXIgPSAmZ3VjX2Z3LT5ndWNfZndfaGVhZGVyOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKmZ3X29iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsKPiAgCXVuc2lnbmVkIGxvbmcgb2Zmc2V0 Owo+ICAJc3RydWN0IHNnX3RhYmxlICpzZyA9IGZ3X29iai0+cGFnZXM7Cj4gLQl1MzIgc3RhdHVz LCB1Y29kZV9zaXplLCByc2FbVU9TX1JTQV9TSUdfU0laRSAvIHNpemVvZih1MzIpXTsKPiArCXUz MiBzdGF0dXMsIGhlYWRlcl9zaXplLCByc2Ffc2l6ZSwgdWNvZGVfc2l6ZSwgKnJzYTsKPiAgCWlu dCBpLCByZXQgPSAwOwo+ICAKPiAtCS8qIHVDb2RlIHNpemUsIGFsc28gaXMgd2hlcmUgUlNBIHNp Z25hdHVyZSBzdGFydHMgKi8KPiAtCW9mZnNldCA9IHVjb2RlX3NpemUgPSBndWNfZnctPmd1Y19m d19zaXplIC0gVU9TX1JTQV9TSUdfU0laRTsKPiAtCUk5MTVfV1JJVEUoRE1BX0NPUFlfU0laRSwg dWNvZGVfc2l6ZSk7Cj4gKwkvKiBUaGUgaGVhZGVyIHBsdXMgdUNvZGUgd2lsbCBiZSBjb3BpZWQg dG8gV09QQ00gdmlhIERNQSwgZXhjbHVkaW5nIGFueQo+ICsJICogb3RoZXIgY29tcG9uZW50cyAq Lwo+ICsJaGVhZGVyX3NpemUgPSAoaGVhZGVyLT5oZWFkZXJfbGVuIC0gaGVhZGVyLT5rZXlfc2l6 ZSAtCj4gKwkJaGVhZGVyLT5tb2R1bHVzX3NpemUgLSBoZWFkZXItPmV4cG9uZW50X3NpemUpICog c2l6ZW9mKHUzMik7Cj4gKwl1Y29kZV9zaXplID0gKGhlYWRlci0+c2l6ZSAtIGhlYWRlci0+aGVh ZGVyX2xlbikgKiBzaXplb2YodTMyKTsKPiArCj4gKwlJOTE1X1dSSVRFKERNQV9DT1BZX1NJWkUs IGhlYWRlcl9zaXplICsgdWNvZGVfc2l6ZSk7Cj4gKwo+ICsJLyogd2hlcmUgUlNBIHNpZ25hdHVy ZSBzdGFydHMgKi8KPiArCW9mZnNldCA9IGhlYWRlcl9zaXplICsgdWNvZGVfc2l6ZTsKPiArCj4g Kwlyc2Ffc2l6ZSA9IGhlYWRlci0+a2V5X3NpemUgKiBzaXplb2YodTMyKTsKPiArCXJzYSA9IGtt YWxsb2MocnNhX3NpemUsIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFyc2EpCj4gKwkJcmV0dXJuIC1F Tk9NRU07Cj4gIAo+ICAJLyogQ29weSBSU0Egc2lnbmF0dXJlIGZyb20gdGhlIGZ3IGltYWdlIHRv IEhXIGZvciB2ZXJpZmljYXRpb24gKi8KPiAtCXNnX3Bjb3B5X3RvX2J1ZmZlcihzZy0+c2dsLCBz Zy0+bmVudHMsIHJzYSwgVU9TX1JTQV9TSUdfU0laRSwgb2Zmc2V0KTsKPiAtCWZvciAoaSA9IDA7 IGkgPCBVT1NfUlNBX1NJR19TSVpFIC8gc2l6ZW9mKHUzMik7IGkrKykKPiArCXNnX3Bjb3B5X3Rv X2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsIHJzYSwgcnNhX3NpemUsIG9mZnNldCk7Cj4gKwlm b3IgKGkgPSAwOyBpIDwgcnNhX3NpemUgLyBzaXplb2YodTMyKTsgaSsrKQo+ICAJCUk5MTVfV1JJ VEUoVU9TX1JTQV9TQ1JBVENIXzAgKyBpICogc2l6ZW9mKHUzMiksIHJzYVtpXSk7Cj4gIAo+ICsJ a2ZyZWUocnNhKTsKPiArCj4gIAkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgbmV3 IGJsb2IgKi8KPiAgCW9mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChmd19vYmopOwo+ ICAJSTkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKPiBA QCAtNDY1LDEwICs0ODgsOCBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsK PiAtCWNvbnN0IHU4ICpjc3NfaGVhZGVyOwo+IC0JY29uc3Qgc2l6ZV90IG1pbnNpemUgPSBVT1Nf Q1NTX0hFQURFUl9TSVpFICsgVU9TX1JTQV9TSUdfU0laRTsKPiAtCWNvbnN0IHNpemVfdCBtYXhz aXplID0gR1VDX1dPUENNX1NJWkVfVkFMVUUgKyBVT1NfUlNBX1NJR19TSVpFCj4gLQkJCS0gMHg4 MDAwOyAvKiAzMmsgcmVzZXJ2ZWQgKDhLIHN0YWNrICsgMjRrIGNvbnRleHQpICovCj4gKwlzdHJ1 Y3QgZ3VjX2Nzc19oZWFkZXIgKmNzc19oZWFkZXIgPSAmZ3VjX2Z3LT5ndWNfZndfaGVhZGVyOwo+ ICsJc2l6ZV90IHNpemU7Cj4gIAlpbnQgZXJyOwo+ICAKPiAgCURSTV9ERUJVR19EUklWRVIoImJl Zm9yZSByZXF1ZXN0aW5nIGZpcm13YXJlOiBHdUMgZncgZmV0Y2ggc3RhdHVzICVzXG4iLAo+IEBA IC00ODIsMTIgKzUwMywzMSBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+ICAKPiAgCURSTV9ERUJV R19EUklWRVIoImZldGNoIEd1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCj4gIAkJ Z3VjX2Z3LT5ndWNfZndfcGF0aCwgZncpOwo+IC0JRFJNX0RFQlVHX0RSSVZFUigiZmlybXdhcmUg ZmlsZSBzaXplICV6dSAobWluaW11bSAlenUsIG1heGltdW0gJXp1KVxuIiwKPiAtCQlmdy0+c2l6 ZSwgbWluc2l6ZSwgbWF4c2l6ZSk7Cj4gIAo+IC0JLyogQ2hlY2sgdGhlIHNpemUgb2YgdGhlIGJs b2IgYmVmb2UgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwo+IC0JaWYgKGZ3LT5zaXplIDwg bWluc2l6ZSB8fCBmdy0+c2l6ZSA+IG1heHNpemUpCj4gKwkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0 aGUgYmxvYiBiZWZvcmUgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwo+ICsJaWYgKGZ3LT5z aXplIDwgc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKPiArCQlEUk1fRVJST1IoIkZp cm13YXJlIGhlYWRlciBpcyBtaXNzaW5nXG4iKTsKPiArCQlnb3RvIGZhaWw7Cj4gKwl9Cj4gKwo+ ICsJbWVtY3B5KGNzc19oZWFkZXIsIGZ3LT5kYXRhLCBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVh ZGVyKSk7Cj4gKwo+ICsJLyogQXQgbGVhc3QsIGl0IHNob3VsZCBoYXZlIGhlYWRlciwgdUNvZGUg YW5kIFJTQS4gU2l6ZSBvZiBhbGwgdGhyZWUuICovCj4gKwlzaXplID0gKGNzc19oZWFkZXItPnNp emUgLSBjc3NfaGVhZGVyLT5tb2R1bHVzX3NpemUgLQo+ICsJCQljc3NfaGVhZGVyLT5leHBvbmVu dF9zaXplKSAqIHNpemVvZih1MzIpOwo+ICsJaWYgKGZ3LT5zaXplIDwgc2l6ZSkgewo+ICsJCURS TV9FUlJPUigiTWlzc2luZyBmaXJtd2FyZSBjb21wb25lbnRzXG4iKTsKPiAgCQlnb3RvIGZhaWw7 Cj4gKwl9Cj4gKwo+ICsJLyogSGVhZGVyIGFuZCB1Q29kZSB3aWxsIGJlIGxvYWRlZCB0byBXT1BD TS4gU2l6ZSBvZiB0aGUgdHdvLiAqLwo+ICsJc2l6ZSAtPSBjc3NfaGVhZGVyLT5rZXlfc2l6ZSAq IHNpemVvZih1MzIpOwo+ICsKPiArCS8qIFRvcCAzMmsgb2YgV09QQ00gaXMgcmVzZXJ2ZWQgKDhL IHN0YWNrICsgMjRrIFJDNiBjb250ZXh0KS4gKi8KPiArCWlmIChzaXplID4gR1VDX1dPUENNX1NJ WkVfVkFMVUUgLSAweDgwMDApIHsKPiArCQlEUk1fRVJST1IoIkZpcm13YXJlIGlzIHRvbyBsYXJn ZSB0byBmaXQgaW4gV09QQ01cbiIpOwo+ICsJCWdvdG8gZmFpbDsKPiArCX0KPiAgCj4gIAkvKgo+ ICAJICogVGhlIEd1QyBmaXJtd2FyZSBpbWFnZSBoYXMgdGhlIHZlcnNpb24gbnVtYmVyIGVtYmVk ZGVkIGF0IGEgd2VsbC1rbm93bgo+IEBAIC00OTUsOSArNTM1LDggQEAgc3RhdGljIHZvaWQgZ3Vj X2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1 Y19mdykKPiAgCSAqIFRXTyBieXRlcyBlYWNoIChpLmUuIHUxNiksIGFsdGhvdWdoIGFsbCBwb2lu dGVycyBhbmQgb2Zmc2V0cyBhcmUgZGVmaW5lZAo+ICAJICogaW4gdGVybXMgb2YgYnl0ZXMgKHU4 KS4KPiAgCSAqLwo+IC0JY3NzX2hlYWRlciA9IGZ3LT5kYXRhICsgVU9TX0NTU19IRUFERVJfT0ZG U0VUOwo+IC0JZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgPSAqKHUxNiAqKShjc3NfaGVhZGVy ICsgVU9TX1ZFUl9NQUpPUl9PRkZTRVQpOwo+IC0JZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQg PSAqKHUxNiAqKShjc3NfaGVhZGVyICsgVU9TX1ZFUl9NSU5PUl9PRkZTRVQpOwo+ICsJZ3VjX2Z3 LT5ndWNfZndfbWFqb3JfZm91bmQgPSBjc3NfaGVhZGVyLT5ndWNfc3dfdmVyc2lvbiA+PiAxNjsK PiArCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kID0gY3NzX2hlYWRlci0+Z3VjX3N3X3ZlcnNp b24gJiAweEZGRkY7Cj4gIAo+ICAJaWYgKGd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kICE9IGd1 Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCB8fAo+ICAJICAgIGd1Y19mdy0+Z3VjX2Z3X21pbm9y X2ZvdW5kIDwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKSB7Cj4gLS0gCj4gMS45LjEKPgo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAK SmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==