From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 05/18] drm/i915: Standardize on 'cpp' for bytes per pixel Date: Mon, 25 Jan 2016 18:05:40 +0100 Message-ID: <20160125170540.GB11240@phenom.ffwll.local> References: <1453316739-13296-1-git-send-email-ville.syrjala@linux.intel.com> <1453316739-13296-6-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f54.google.com (mail-wm0-f54.google.com [74.125.82.54]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C8D56E4CB for ; Mon, 25 Jan 2016 09:05:32 -0800 (PST) Received: by mail-wm0-f54.google.com with SMTP id 123so74106735wmz.0 for ; Mon, 25 Jan 2016 09:05:32 -0800 (PST) Content-Disposition: inline In-Reply-To: <1453316739-13296-6-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKYW4gMjAsIDIwMTYgYXQgMDk6MDU6MjZQTSArMDIwMCwgdmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBXZSBtb3JlIG9yIGxlc3MgcmFuZG9tbHkgY2FsbCB0 aGUgImJ5dGVzIHBlciBwaXhlbCIgdmFsdWUKPiAnY3BwJywgJ2J5dGVzX3Blcl9waXhlbCcsICdw aXhlbF9zaXplJywgb3IgZXZlbiAnYnBwJy4gTGV0J3MganVzdCBwaWNrCj4gb25lIGFuZCBzdGlj ayB0byBpdC4gSSd2ZSBjaG9zZW4gJ2NwcCcuCj4gCj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3ly asOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkNvbmN1cnJlZCBvbiB0aGUg Y3BwIGJpa2VzaGVkLCBhbmQgcmV2aWV3ZWQgYWxsIHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2gu CkkgZGlkbid0IGFwcGx5JmNoZWNrIHRoYXQgeW91IGNhdWdodCB0aGVtIGFsbCB0aG91Z2ggdGhp cyB0aW1lIGFyb3VuZC4KClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVy QGZmd2xsLmNoPgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IHwgIDIyICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAx MjggKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgIDM0ICsrKystLS0tLS0KPiAgMyBmaWxlcyBjaGFuZ2Vk LCA4NyBpbnNlcnRpb25zKCspLCA5NyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMGY1ZGY3YTY2Y2M0Li5mOTRkZGFkNzA0YjIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTI3MDksNyArMjcwOSw3IEBA IHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cHJpbWFyeSwKPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ICAJdTMyIGRzcGNudHI7Cj4gIAlpOTE1 X3JlZ190IHJlZyA9IERTUENOVFIocGxhbmUpOwo+IC0JaW50IHBpeGVsX3NpemUgPSBkcm1fZm9y bWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCWludCBjcHAgPSBkcm1fZm9y bWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCWludCB4ID0gcGxhbmVfc3Rh dGUtPnNyYy54MSA+PiAxNjsKPiAgCWludCB5ID0gcGxhbmVfc3RhdGUtPnNyYy55MSA+PiAxNjsK PiAgCj4gQEAgLTI3NjksMTMgKzI3NjksMTIgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAo+ICAJaWYgKElTX0c0WChkZXYp KQo+ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1RSSUNLTEVfRkVFRF9ESVNBQkxFOwo+ICAKPiAt CWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogcGl4ZWxfc2l6ZTsKPiAr CWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogY3BwOwo+ICAKPiAgCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gIAkJaW50ZWxfY3J0Yy0+ZHNwYWRkcl9v ZmZzZXQgPQo+ICAJCQlpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KGRldl9wcml2LCAmeCwgJnks Cj4gLQkJCQkJCSAgZmItPm1vZGlmaWVyWzBdLAo+IC0JCQkJCQkgIHBpeGVsX3NpemUsCj4gKwkJ CQkJCSAgZmItPm1vZGlmaWVyWzBdLCBjcHAsCj4gIAkJCQkJCSAgZmItPnBpdGNoZXNbMF0pOwo+ ICAJCWxpbmVhcl9vZmZzZXQgLT0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7Cj4gIAl9IGVs c2Ugewo+IEBAIC0yNzkyLDcgKzI3OTEsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCj4gIAkJZGF0YSBhbmQgYWRkaW5n IHRvIGxpbmVhcl9vZmZzZXQqLwo+ICAJCWxpbmVhcl9vZmZzZXQgKz0KPiAgCQkJKGNydGNfc3Rh dGUtPnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRjaGVzWzBdICsKPiAtCQkJKGNydGNfc3RhdGUt PnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7Cj4gKwkJCShjcnRjX3N0YXRlLT5waXBlX3Ny Y193IC0gMSkgKiBjcHA7Cj4gIAl9Cj4gIAo+ICAJaW50ZWxfY3J0Yy0+YWRqdXN0ZWRfeCA9IHg7 Cj4gQEAgLTI4NDAsNyArMjgzOSw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCj4gIAl1MzIgbGluZWFyX29mZnNl dDsKPiAgCXUzMiBkc3BjbnRyOwo+ICAJaTkxNV9yZWdfdCByZWcgPSBEU1BDTlRSKHBsYW5lKTsK PiAtCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1h dCwgMCk7Cj4gKwlpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1h dCwgMCk7Cj4gIAlpbnQgeCA9IHBsYW5lX3N0YXRlLT5zcmMueDEgPj4gMTY7Cj4gIAlpbnQgeSA9 IHBsYW5lX3N0YXRlLT5zcmMueTEgPj4gMTY7Cj4gIAo+IEBAIC0yODc5LDExICsyODc4LDEwIEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnByaW1hcnksCj4gIAlpZiAoIUlTX0hBU1dFTEwoZGV2KSAmJiAhSVNfQlJPQURXRUxMKGRl dikpCj4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gIAo+ IC0JbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBwaXhlbF9zaXplOwo+ ICsJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBjcHA7Cj4gIAlpbnRl bF9jcnRjLT5kc3BhZGRyX29mZnNldCA9Cj4gIAkJaW50ZWxfY29tcHV0ZV90aWxlX29mZnNldChk ZXZfcHJpdiwgJngsICZ5LAo+IC0JCQkJCSAgZmItPm1vZGlmaWVyWzBdLAo+IC0JCQkJCSAgcGl4 ZWxfc2l6ZSwKPiArCQkJCQkgIGZiLT5tb2RpZmllclswXSwgY3BwLAo+ICAJCQkJCSAgZmItPnBp dGNoZXNbMF0pOwo+ICAJbGluZWFyX29mZnNldCAtPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNl dDsKPiAgCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8x ODApKSB7Cj4gQEAgLTI4OTcsNyArMjg5NSw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0 ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCj4gIAkJCWRhdGEgYW5k IGFkZGluZyB0byBsaW5lYXJfb2Zmc2V0Ki8KPiAgCQkJbGluZWFyX29mZnNldCArPQo+ICAJCQkJ KGNydGNfc3RhdGUtPnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRjaGVzWzBdICsKPiAtCQkJCShj cnRjX3N0YXRlLT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwo+ICsJCQkJKGNydGNfc3Rh dGUtPnBpcGVfc3JjX3cgLSAxKSAqIGNwcDsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC0xNDY4MCwx MCArMTQ2NzgsMTIgQEAgdTMyIGludGVsX2ZiX3BpdGNoX2xpbWl0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVpbnQ2NF90IGZiX21vZGlmaWVyLAo+ICAJdTMyIGdlbiA9IElOVEVMX0lORk8oZGV2 KS0+Z2VuOwo+ICAKPiAgCWlmIChnZW4gPj0gOSkgewo+ICsJCWludCBjcHAgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChwaXhlbF9mb3JtYXQsIDApOwo+ICsKPiAgCQkvKiAiVGhlIHN0cmlkZSBpbiBi eXRlcyBtdXN0IG5vdCBleGNlZWQgdGhlIG9mIHRoZSBzaXplIG9mIDhLCj4gIAkJICogIHBpeGVs cyBhbmQgMzJLIGJ5dGVzLiIKPiAgCQkgKi8KPiAtCQkgcmV0dXJuIG1pbig4MTkyKmRybV9mb3Jt YXRfcGxhbmVfY3BwKHBpeGVsX2Zvcm1hdCwgMCksIDMyNzY4KTsKPiArCQlyZXR1cm4gbWluKDgx OTIgKiBjcHAsIDMyNzY4KTsKPiAgCX0gZWxzZSBpZiAoZ2VuID49IDUgJiYgIUlTX1ZBTExFWVZJ RVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJcmV0dXJuIDMyKjEwMjQ7Cj4g IAl9IGVsc2UgaWYgKGdlbiA+PSA0KSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXgg MjBiZjg1NGVhZThjLi4zMWJjNGVhMzk1YWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK PiBAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfd2F0ZXJtYXJr X3BhcmFtcyBpODQ1X3dtX2luZm8gPSB7Cj4gICAqIGludGVsX2NhbGN1bGF0ZV93bSAtIGNhbGN1 bGF0ZSB3YXRlcm1hcmsgbGV2ZWwKPiAgICogQGNsb2NrX2luX2toejogcGl4ZWwgY2xvY2sKPiAg ICogQHdtOiBjaGlwIEZJRk8gcGFyYW1zCj4gLSAqIEBwaXhlbF9zaXplOiBkaXNwbGF5IHBpeGVs IHNpemUKPiArICogQGNwcDogYnl0ZXMgcGVyIHBpeGVsCj4gICAqIEBsYXRlbmN5X25zOiBtZW1v cnkgbGF0ZW5jeSBmb3IgdGhlIHBsYXRmb3JtCj4gICAqCj4gICAqIENhbGN1bGF0ZSB0aGUgd2F0 ZXJtYXJrIGxldmVsICh0aGUgbGV2ZWwgYXQgd2hpY2ggdGhlIGRpc3BsYXkgcGxhbmUgd2lsbAo+ IEBAIC01NjQsOCArNTY0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF93YXRlcm1hcmtf cGFyYW1zIGk4NDVfd21faW5mbyA9IHsKPiAgICovCj4gIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlu dGVsX2NhbGN1bGF0ZV93bSh1bnNpZ25lZCBsb25nIGNsb2NrX2luX2toeiwKPiAgCQkJCQljb25z dCBzdHJ1Y3QgaW50ZWxfd2F0ZXJtYXJrX3BhcmFtcyAqd20sCj4gLQkJCQkJaW50IGZpZm9fc2l6 ZSwKPiAtCQkJCQlpbnQgcGl4ZWxfc2l6ZSwKPiArCQkJCQlpbnQgZmlmb19zaXplLCBpbnQgY3Bw LAo+ICAJCQkJCXVuc2lnbmVkIGxvbmcgbGF0ZW5jeV9ucykKPiAgewo+ICAJbG9uZyBlbnRyaWVz X3JlcXVpcmVkLCB3bV9zaXplOwo+IEBAIC01NzYsNyArNTc1LDcgQEAgc3RhdGljIHVuc2lnbmVk IGxvbmcgaW50ZWxfY2FsY3VsYXRlX3dtKHVuc2lnbmVkIGxvbmcgY2xvY2tfaW5fa2h6LAo+ICAJ ICogY2xvY2tzIGdvIGZyb20gYSBmZXcgdGhvdXNhbmQgdG8gc2V2ZXJhbCBodW5kcmVkIHRob3Vz YW5kLgo+ICAJICogbGF0ZW5jeSBpcyB1c3VhbGx5IGEgZmV3IHRob3VzYW5kCj4gIAkgKi8KPiAt CWVudHJpZXNfcmVxdWlyZWQgPSAoKGNsb2NrX2luX2toeiAvIDEwMDApICogcGl4ZWxfc2l6ZSAq IGxhdGVuY3lfbnMpIC8KPiArCWVudHJpZXNfcmVxdWlyZWQgPSAoKGNsb2NrX2luX2toeiAvIDEw MDApICogY3BwICogbGF0ZW5jeV9ucykgLwo+ICAJCTEwMDA7Cj4gIAllbnRyaWVzX3JlcXVpcmVk ID0gRElWX1JPVU5EX1VQKGVudHJpZXNfcmVxdWlyZWQsIHdtLT5jYWNoZWxpbmVfc2l6ZSk7Cj4g IAo+IEBAIC02NDAsMTMgKzYzOSwxMyBAQCBzdGF0aWMgdm9pZCBwaW5ldmlld191cGRhdGVfd20o c3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0YykKPiAgCWNydGMgPSBzaW5nbGVfZW5hYmxlZF9j cnRjKGRldik7Cj4gIAlpZiAoY3J0Yykgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0gJnRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlOwo+IC0JCWludCBwaXhlbF9zaXplID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGUt PmZiLT5iaXRzX3Blcl9waXhlbCAvIDg7Cj4gKwkJaW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVf Y3BwKGNydGMtPnByaW1hcnktPnN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCQlpbnQg Y2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAKPiAgCQkvKiBEaXNwbGF5IFNS ICovCj4gIAkJd20gPSBpbnRlbF9jYWxjdWxhdGVfd20oY2xvY2ssICZwaW5ldmlld19kaXNwbGF5 X3dtLAo+ICAJCQkJCXBpbmV2aWV3X2Rpc3BsYXlfd20uZmlmb19zaXplLAo+IC0JCQkJCXBpeGVs X3NpemUsIGxhdGVuY3ktPmRpc3BsYXlfc3IpOwo+ICsJCQkJCWNwcCwgbGF0ZW5jeS0+ZGlzcGxh eV9zcik7Cj4gIAkJcmVnID0gSTkxNV9SRUFEKERTUEZXMSk7Cj4gIAkJcmVnICY9IH5EU1BGV19T Ul9NQVNLOwo+ICAJCXJlZyB8PSBGV19XTSh3bSwgU1IpOwo+IEBAIC02NTYsNyArNjU1LDcgQEAg c3RhdGljIHZvaWQgcGluZXZpZXdfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51c2VkX2Ny dGMpCj4gIAkJLyogY3Vyc29yIFNSICovCj4gIAkJd20gPSBpbnRlbF9jYWxjdWxhdGVfd20oY2xv Y2ssICZwaW5ldmlld19jdXJzb3Jfd20sCj4gIAkJCQkJcGluZXZpZXdfZGlzcGxheV93bS5maWZv X3NpemUsCj4gLQkJCQkJcGl4ZWxfc2l6ZSwgbGF0ZW5jeS0+Y3Vyc29yX3NyKTsKPiArCQkJCQlj cHAsIGxhdGVuY3ktPmN1cnNvcl9zcik7Cj4gIAkJcmVnID0gSTkxNV9SRUFEKERTUEZXMyk7Cj4g IAkJcmVnICY9IH5EU1BGV19DVVJTT1JfU1JfTUFTSzsKPiAgCQlyZWcgfD0gRldfV00od20sIENV UlNPUl9TUik7Cj4gQEAgLTY2NSw3ICs2NjQsNyBAQCBzdGF0aWMgdm9pZCBwaW5ldmlld191cGRh dGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0YykKPiAgCQkvKiBEaXNwbGF5IEhQTEwg b2ZmIFNSICovCj4gIAkJd20gPSBpbnRlbF9jYWxjdWxhdGVfd20oY2xvY2ssICZwaW5ldmlld19k aXNwbGF5X2hwbGxvZmZfd20sCj4gIAkJCQkJcGluZXZpZXdfZGlzcGxheV9ocGxsb2ZmX3dtLmZp Zm9fc2l6ZSwKPiAtCQkJCQlwaXhlbF9zaXplLCBsYXRlbmN5LT5kaXNwbGF5X2hwbGxfZGlzYWJs ZSk7Cj4gKwkJCQkJY3BwLCBsYXRlbmN5LT5kaXNwbGF5X2hwbGxfZGlzYWJsZSk7Cj4gIAkJcmVn ID0gSTkxNV9SRUFEKERTUEZXMyk7Cj4gIAkJcmVnICY9IH5EU1BGV19IUExMX1NSX01BU0s7Cj4g IAkJcmVnIHw9IEZXX1dNKHdtLCBIUExMX1NSKTsKPiBAQCAtNjc0LDcgKzY3Myw3IEBAIHN0YXRp YyB2b2lkIHBpbmV2aWV3X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQo+ ICAJCS8qIGN1cnNvciBIUExMIG9mZiBTUiAqLwo+ICAJCXdtID0gaW50ZWxfY2FsY3VsYXRlX3dt KGNsb2NrLCAmcGluZXZpZXdfY3Vyc29yX2hwbGxvZmZfd20sCj4gIAkJCQkJcGluZXZpZXdfZGlz cGxheV9ocGxsb2ZmX3dtLmZpZm9fc2l6ZSwKPiAtCQkJCQlwaXhlbF9zaXplLCBsYXRlbmN5LT5j dXJzb3JfaHBsbF9kaXNhYmxlKTsKPiArCQkJCQljcHAsIGxhdGVuY3ktPmN1cnNvcl9ocGxsX2Rp c2FibGUpOwo+ICAJCXJlZyA9IEk5MTVfUkVBRChEU1BGVzMpOwo+ICAJCXJlZyAmPSB+RFNQRldf SFBMTF9DVVJTT1JfTUFTSzsKPiAgCQlyZWcgfD0gRldfV00od20sIEhQTExfQ1VSU09SKTsKPiBA QCAtNjk4LDcgKzY5Nyw3IEBAIHN0YXRpYyBib29sIGc0eF9jb21wdXRlX3dtMChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gIAljb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZTsKPiAtCWludCBodG90YWwsIGhk aXNwbGF5LCBjbG9jaywgcGl4ZWxfc2l6ZTsKPiArCWludCBodG90YWwsIGhkaXNwbGF5LCBjbG9j aywgY3BwOwo+ICAJaW50IGxpbmVfdGltZV91cywgbGluZV9jb3VudDsKPiAgCWludCBlbnRyaWVz LCB0bGJfbWlzczsKPiAgCj4gQEAgLTcxMywxMCArNzEyLDEwIEBAIHN0YXRpYyBib29sIGc0eF9j b21wdXRlX3dtMChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJY2xvY2sgPSBhZGp1c3RlZF9t b2RlLT5jcnRjX2Nsb2NrOwo+ICAJaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7 Cj4gIAloZGlzcGxheSA9IHRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+cGlwZV9zcmNfdzsK PiAtCXBpeGVsX3NpemUgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVyX3BpeGVs IC8gODsKPiArCWNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGNydGMtPnByaW1hcnktPnN0YXRl LT5mYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCj4gIAkvKiBVc2UgdGhlIHNtYWxsIGJ1ZmZlciBt ZXRob2QgdG8gY2FsY3VsYXRlIHBsYW5lIHdhdGVybWFyayAqLwo+IC0JZW50cmllcyA9ICgoY2xv Y2sgKiBwaXhlbF9zaXplIC8gMTAwMCkgKiBkaXNwbGF5X2xhdGVuY3lfbnMpIC8gMTAwMDsKPiAr CWVudHJpZXMgPSAoKGNsb2NrICogY3BwIC8gMTAwMCkgKiBkaXNwbGF5X2xhdGVuY3lfbnMpIC8g MTAwMDsKPiAgCXRsYl9taXNzID0gZGlzcGxheS0+Zmlmb19zaXplKmRpc3BsYXktPmNhY2hlbGlu ZV9zaXplIC0gaGRpc3BsYXkgKiA4Owo+ICAJaWYgKHRsYl9taXNzID4gMCkKPiAgCQllbnRyaWVz ICs9IHRsYl9taXNzOwo+IEBAIC03MjgsNyArNzI3LDcgQEAgc3RhdGljIGJvb2wgZzR4X2NvbXB1 dGVfd20wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkvKiBVc2UgdGhlIGxhcmdlIGJ1ZmZl ciBtZXRob2QgdG8gY2FsY3VsYXRlIGN1cnNvciB3YXRlcm1hcmsgKi8KPiAgCWxpbmVfdGltZV91 cyA9IG1heChodG90YWwgKiAxMDAwIC8gY2xvY2ssIDEpOwo+ICAJbGluZV9jb3VudCA9IChjdXJz b3JfbGF0ZW5jeV9ucyAvIGxpbmVfdGltZV91cyArIDEwMDApIC8gMTAwMDsKPiAtCWVudHJpZXMg PSBsaW5lX2NvdW50ICogY3J0Yy0+Y3Vyc29yLT5zdGF0ZS0+Y3J0Y193ICogcGl4ZWxfc2l6ZTsK PiArCWVudHJpZXMgPSBsaW5lX2NvdW50ICogY3J0Yy0+Y3Vyc29yLT5zdGF0ZS0+Y3J0Y193ICog Y3BwOwo+ICAJdGxiX21pc3MgPSBjdXJzb3ItPmZpZm9fc2l6ZSpjdXJzb3ItPmNhY2hlbGluZV9z aXplIC0gaGRpc3BsYXkgKiA4Owo+ICAJaWYgKHRsYl9taXNzID4gMCkKPiAgCQllbnRyaWVzICs9 IHRsYl9taXNzOwo+IEBAIC03ODQsNyArNzgzLDcgQEAgc3RhdGljIGJvb2wgZzR4X2NvbXB1dGVf c3J3bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNy dGM7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZTsKPiAt CWludCBoZGlzcGxheSwgaHRvdGFsLCBwaXhlbF9zaXplLCBjbG9jazsKPiArCWludCBoZGlzcGxh eSwgaHRvdGFsLCBjcHAsIGNsb2NrOwo+ICAJdW5zaWduZWQgbG9uZyBsaW5lX3RpbWVfdXM7Cj4g IAlpbnQgbGluZV9jb3VudCwgbGluZV9zaXplOwo+ICAJaW50IHNtYWxsLCBsYXJnZTsKPiBAQCAt ODAwLDIxICs3OTksMjEgQEAgc3RhdGljIGJvb2wgZzR4X2NvbXB1dGVfc3J3bShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAJ aHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7Cj4gIAloZGlzcGxheSA9IHRvX2lu dGVsX2NydGMoY3J0YyktPmNvbmZpZy0+cGlwZV9zcmNfdzsKPiAtCXBpeGVsX3NpemUgPSBjcnRj LT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKPiArCWNwcCA9IGRybV9m b3JtYXRfcGxhbmVfY3BwKGNydGMtPnByaW1hcnktPnN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0LCAw KTsKPiAgCj4gIAlsaW5lX3RpbWVfdXMgPSBtYXgoaHRvdGFsICogMTAwMCAvIGNsb2NrLCAxKTsK PiAgCWxpbmVfY291bnQgPSAobGF0ZW5jeV9ucyAvIGxpbmVfdGltZV91cyArIDEwMDApIC8gMTAw MDsKPiAtCWxpbmVfc2l6ZSA9IGhkaXNwbGF5ICogcGl4ZWxfc2l6ZTsKPiArCWxpbmVfc2l6ZSA9 IGhkaXNwbGF5ICogY3BwOwo+ICAKPiAgCS8qIFVzZSB0aGUgbWluaW11bSBvZiB0aGUgc21hbGwg YW5kIGxhcmdlIGJ1ZmZlciBtZXRob2QgZm9yIHByaW1hcnkgKi8KPiAtCXNtYWxsID0gKChjbG9j ayAqIHBpeGVsX3NpemUgLyAxMDAwKSAqIGxhdGVuY3lfbnMpIC8gMTAwMDsKPiArCXNtYWxsID0g KChjbG9jayAqIGNwcCAvIDEwMDApICogbGF0ZW5jeV9ucykgLyAxMDAwOwo+ICAJbGFyZ2UgPSBs aW5lX2NvdW50ICogbGluZV9zaXplOwo+ICAKPiAgCWVudHJpZXMgPSBESVZfUk9VTkRfVVAobWlu KHNtYWxsLCBsYXJnZSksIGRpc3BsYXktPmNhY2hlbGluZV9zaXplKTsKPiAgCSpkaXNwbGF5X3dt ID0gZW50cmllcyArIGRpc3BsYXktPmd1YXJkX3NpemU7Cj4gIAo+ICAJLyogY2FsY3VsYXRlIHRo ZSBzZWxmLXJlZnJlc2ggd2F0ZXJtYXJrIGZvciBkaXNwbGF5IGN1cnNvciAqLwo+IC0JZW50cmll cyA9IGxpbmVfY291bnQgKiBwaXhlbF9zaXplICogY3J0Yy0+Y3Vyc29yLT5zdGF0ZS0+Y3J0Y193 Owo+ICsJZW50cmllcyA9IGxpbmVfY291bnQgKiBjcHAgKiBjcnRjLT5jdXJzb3ItPnN0YXRlLT5j cnRjX3c7Cj4gIAllbnRyaWVzID0gRElWX1JPVU5EX1VQKGVudHJpZXMsIGN1cnNvci0+Y2FjaGVs aW5lX3NpemUpOwo+ICAJKmN1cnNvcl93bSA9IGVudHJpZXMgKyBjdXJzb3ItPmd1YXJkX3NpemU7 Cj4gIAo+IEBAIC05MDYsMTMgKzkwNSwxMyBAQCBlbnVtIHZsdl93bV9sZXZlbCB7Cj4gIHN0YXRp YyB1bnNpZ25lZCBpbnQgdmx2X3dtX21ldGhvZDIodW5zaWduZWQgaW50IHBpeGVsX3JhdGUsCj4g IAkJCQkgICB1bnNpZ25lZCBpbnQgcGlwZV9odG90YWwsCj4gIAkJCQkgICB1bnNpZ25lZCBpbnQg aG9yaXpfcGl4ZWxzLAo+IC0JCQkJICAgdW5zaWduZWQgaW50IGJ5dGVzX3Blcl9waXhlbCwKPiAr CQkJCSAgIHVuc2lnbmVkIGludCBjcHAsCj4gIAkJCQkgICB1bnNpZ25lZCBpbnQgbGF0ZW5jeSkK PiAgewo+ICAJdW5zaWduZWQgaW50IHJldDsKPiAgCj4gIAlyZXQgPSAobGF0ZW5jeSAqIHBpeGVs X3JhdGUpIC8gKHBpcGVfaHRvdGFsICogMTAwMDApOwo+IC0JcmV0ID0gKHJldCArIDEpICogaG9y aXpfcGl4ZWxzICogYnl0ZXNfcGVyX3BpeGVsOwo+ICsJcmV0ID0gKHJldCArIDEpICogaG9yaXpf cGl4ZWxzICogY3BwOwo+ICAJcmV0ID0gRElWX1JPVU5EX1VQKHJldCwgNjQpOwo+ICAKPiAgCXJl dHVybiByZXQ7Cj4gQEAgLTk0MSw3ICs5NDAsNyBAQCBzdGF0aWMgdWludDE2X3Qgdmx2X2NvbXB1 dGVfd21fbGV2ZWwoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCQkJCSAgICAgaW50IGxl dmVsKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KHBsYW5lLT5iYXNlLmRldik7Cj4gLQlpbnQgY2xvY2ssIGh0b3RhbCwgcGl4ZWxfc2l6ZSwgd2lk dGgsIHdtOwo+ICsJaW50IGNsb2NrLCBodG90YWwsIGNwcCwgd2lkdGgsIHdtOwo+ICAKPiAgCWlm IChkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbbGV2ZWxdID09IDApCj4gIAkJcmV0dXJuIFVTSFJU X01BWDsKPiBAQCAtOTQ5LDcgKzk0OCw3IEBAIHN0YXRpYyB1aW50MTZfdCB2bHZfY29tcHV0ZV93 bV9sZXZlbChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJaWYgKCFzdGF0ZS0+dmlzaWJs ZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9j cHAoc3RhdGUtPmJhc2UuZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gKwljcHAgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChzdGF0ZS0+YmFzZS5mYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCWNsb2NrID0g Y3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiAgCWh0b3RhbCA9 IGNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsOwo+ICAJd2lkdGgg PSBjcnRjLT5jb25maWctPnBpcGVfc3JjX3c7Cj4gQEAgLTk2NSw3ICs5NjQsNyBAQCBzdGF0aWMg dWludDE2X3Qgdmx2X2NvbXB1dGVfd21fbGV2ZWwoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK PiAgCQkgKi8KPiAgCQl3bSA9IDYzOwo+ICAJfSBlbHNlIHsKPiAtCQl3bSA9IHZsdl93bV9tZXRo b2QyKGNsb2NrLCBodG90YWwsIHdpZHRoLCBwaXhlbF9zaXplLAo+ICsJCXdtID0gdmx2X3dtX21l dGhvZDIoY2xvY2ssIGh0b3RhbCwgd2lkdGgsIGNwcCwKPiAgCQkJCSAgICBkZXZfcHJpdi0+d20u cHJpX2xhdGVuY3lbbGV2ZWxdICogMTApOwo+ICAJfQo+ICAKPiBAQCAtMTQzOSw3ICsxNDM4LDcg QEAgc3RhdGljIHZvaWQgaTk2NV91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0 YykKPiAgCQlpbnQgY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAJCWludCBo dG90YWwgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbDsKPiAgCQlpbnQgaGRpc3BsYXkgPSB0 b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWctPnBpcGVfc3JjX3c7Cj4gLQkJaW50IHBpeGVsX3Np emUgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKPiArCQlp bnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPmZiLT5w aXhlbF9mb3JtYXQsIDApOwo+ICAJCXVuc2lnbmVkIGxvbmcgbGluZV90aW1lX3VzOwo+ICAJCWlu dCBlbnRyaWVzOwo+ICAKPiBAQCAtMTQ0Nyw3ICsxNDQ2LDcgQEAgc3RhdGljIHZvaWQgaTk2NV91 cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0YykKPiAgCj4gIAkJLyogVXNlIG5z L3VzIHRoZW4gZGl2aWRlIHRvIHByZXNlcnZlIHByZWNpc2lvbiAqLwo+ICAJCWVudHJpZXMgPSAo KChzcl9sYXRlbmN5X25zIC8gbGluZV90aW1lX3VzKSArIDEwMDApIC8gMTAwMCkgKgo+IC0JCQlw aXhlbF9zaXplICogaGRpc3BsYXk7Cj4gKwkJCWNwcCAqIGhkaXNwbGF5Owo+ICAJCWVudHJpZXMg PSBESVZfUk9VTkRfVVAoZW50cmllcywgSTkxNV9GSUZPX0xJTkVfU0laRSk7Cj4gIAkJc3J3bSA9 IEk5NjVfRklGT19TSVpFIC0gZW50cmllczsKPiAgCQlpZiAoc3J3bSA8IDApCj4gQEAgLTE0NTcs NyArMTQ1Niw3IEBAIHN0YXRpYyB2b2lkIGk5NjVfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAq dW51c2VkX2NydGMpCj4gIAkJCSAgICAgIGVudHJpZXMsIHNyd20pOwo+ICAKPiAgCQllbnRyaWVz ID0gKCgoc3JfbGF0ZW5jeV9ucyAvIGxpbmVfdGltZV91cykgKyAxMDAwKSAvIDEwMDApICoKPiAt CQkJcGl4ZWxfc2l6ZSAqIGNydGMtPmN1cnNvci0+c3RhdGUtPmNydGNfdzsKPiArCQkJY3BwICog Y3J0Yy0+Y3Vyc29yLT5zdGF0ZS0+Y3J0Y193Owo+ICAJCWVudHJpZXMgPSBESVZfUk9VTkRfVVAo ZW50cmllcywKPiAgCQkJCQkgIGk5NjVfY3Vyc29yX3dtX2luZm8uY2FjaGVsaW5lX3NpemUpOwo+ ICAJCWN1cnNvcl9zciA9IGk5NjVfY3Vyc29yX3dtX2luZm8uZmlmb19zaXplIC0KPiBAQCAtMTUx OCw3ICsxNTE3LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRj ICp1bnVzZWRfY3J0YykKPiAgCWNydGMgPSBpbnRlbF9nZXRfY3J0Y19mb3JfcGxhbmUoZGV2LCAw KTsKPiAgCWlmIChpbnRlbF9jcnRjX2FjdGl2ZShjcnRjKSkgewo+ICAJCWNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlOwo+IC0JCWludCBjcHAgPSBjcnRjLT5wcmlt YXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKPiArCQlpbnQgY3BwID0gZHJtX2Zv cm1hdF9wbGFuZV9jcHAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPmZiLT5waXhlbF9mb3JtYXQsIDAp Owo+ICAJCWlmIChJU19HRU4yKGRldikpCj4gIAkJCWNwcCA9IDQ7Cj4gIAo+IEBAIC0xNTQwLDcg KzE1MzksNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVu dXNlZF9jcnRjKQo+ICAJY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9wbGFuZShkZXYsIDEpOwo+ ICAJaWYgKGludGVsX2NydGNfYWN0aXZlKGNydGMpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7Cj4gLQkJaW50IGNwcCA9IGNydGMtPnByaW1hcnkt PnN0YXRlLT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4Owo+ICsJCWludCBjcHAgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4g IAkJaWYgKElTX0dFTjIoZGV2KSkKPiAgCQkJY3BwID0gNDsKPiAgCj4gQEAgLTE1ODYsNyArMTU4 NSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51c2Vk X2NydGMpCj4gIAkJaW50IGNsb2NrID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jazsKPiAgCQlp bnQgaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7Cj4gIAkJaW50IGhkaXNwbGF5 ID0gdG9faW50ZWxfY3J0YyhlbmFibGVkKS0+Y29uZmlnLT5waXBlX3NyY193Owo+IC0JCWludCBw aXhlbF9zaXplID0gZW5hYmxlZC0+cHJpbWFyeS0+c3RhdGUtPmZiLT5iaXRzX3Blcl9waXhlbCAv IDg7Cj4gKwkJaW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGVuYWJsZWQtPnByaW1hcnkt PnN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCQl1bnNpZ25lZCBsb25nIGxpbmVfdGlt ZV91czsKPiAgCQlpbnQgZW50cmllczsKPiAgCj4gQEAgLTE1OTQsNyArMTU5Myw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51c2VkX2NydGMpCj4gIAo+ ICAJCS8qIFVzZSBucy91cyB0aGVuIGRpdmlkZSB0byBwcmVzZXJ2ZSBwcmVjaXNpb24gKi8KPiAg CQllbnRyaWVzID0gKCgoc3JfbGF0ZW5jeV9ucyAvIGxpbmVfdGltZV91cykgKyAxMDAwKSAvIDEw MDApICoKPiAtCQkJcGl4ZWxfc2l6ZSAqIGhkaXNwbGF5Owo+ICsJCQljcHAgKiBoZGlzcGxheTsK PiAgCQllbnRyaWVzID0gRElWX1JPVU5EX1VQKGVudHJpZXMsIHdtX2luZm8tPmNhY2hlbGluZV9z aXplKTsKPiAgCQlEUk1fREVCVUdfS01TKCJzZWxmLXJlZnJlc2ggZW50cmllczogJWRcbiIsIGVu dHJpZXMpOwo+ICAJCXNyd20gPSB3bV9pbmZvLT5maWZvX3NpemUgLSBlbnRyaWVzOwo+IEBAIC0x Njg1LDE1ICsxNjg0LDE0IEBAIHVpbnQzMl90IGlsa19waXBlX3BpeGVsX3JhdGUoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB9Cj4gIAo+ICAvKiBsYXRlbmN5 IG11c3QgYmUgaW4gMC4xdXMgdW5pdHMuICovCj4gLXN0YXRpYyB1aW50MzJfdCBpbGtfd21fbWV0 aG9kMSh1aW50MzJfdCBwaXhlbF9yYXRlLCB1aW50OF90IGJ5dGVzX3Blcl9waXhlbCwKPiAtCQkJ ICAgICAgIHVpbnQzMl90IGxhdGVuY3kpCj4gK3N0YXRpYyB1aW50MzJfdCBpbGtfd21fbWV0aG9k MSh1aW50MzJfdCBwaXhlbF9yYXRlLCB1aW50OF90IGNwcCwgdWludDMyX3QgbGF0ZW5jeSkKPiAg ewo+ICAJdWludDY0X3QgcmV0Owo+ICAKPiAgCWlmIChXQVJOKGxhdGVuY3kgPT0gMCwgIkxhdGVu Y3kgdmFsdWUgbWlzc2luZ1xuIikpCj4gIAkJcmV0dXJuIFVJTlRfTUFYOwo+ICAKPiAtCXJldCA9 ICh1aW50NjRfdCkgcGl4ZWxfcmF0ZSAqIGJ5dGVzX3Blcl9waXhlbCAqIGxhdGVuY3k7Cj4gKwly ZXQgPSAodWludDY0X3QpIHBpeGVsX3JhdGUgKiBjcHAgKiBsYXRlbmN5Owo+ICAJcmV0ID0gRElW X1JPVU5EX1VQX1VMTChyZXQsIDY0ICogMTAwMDApICsgMjsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ IEBAIC0xNzAxLDcgKzE2OTksNyBAQCBzdGF0aWMgdWludDMyX3QgaWxrX3dtX21ldGhvZDEodWlu dDMyX3QgcGl4ZWxfcmF0ZSwgdWludDhfdCBieXRlc19wZXJfcGl4ZWwsCj4gIAo+ICAvKiBsYXRl bmN5IG11c3QgYmUgaW4gMC4xdXMgdW5pdHMuICovCj4gIHN0YXRpYyB1aW50MzJfdCBpbGtfd21f bWV0aG9kMih1aW50MzJfdCBwaXhlbF9yYXRlLCB1aW50MzJfdCBwaXBlX2h0b3RhbCwKPiAtCQkJ ICAgICAgIHVpbnQzMl90IGhvcml6X3BpeGVscywgdWludDhfdCBieXRlc19wZXJfcGl4ZWwsCj4g KwkJCSAgICAgICB1aW50MzJfdCBob3Jpel9waXhlbHMsIHVpbnQ4X3QgY3BwLAo+ICAJCQkgICAg ICAgdWludDMyX3QgbGF0ZW5jeSkKPiAgewo+ICAJdWludDMyX3QgcmV0Owo+IEBAIC0xNzEyLDEz ICsxNzEwLDEzIEBAIHN0YXRpYyB1aW50MzJfdCBpbGtfd21fbWV0aG9kMih1aW50MzJfdCBwaXhl bF9yYXRlLCB1aW50MzJfdCBwaXBlX2h0b3RhbCwKPiAgCQlyZXR1cm4gVUlOVF9NQVg7Cj4gIAo+ ICAJcmV0ID0gKGxhdGVuY3kgKiBwaXhlbF9yYXRlKSAvIChwaXBlX2h0b3RhbCAqIDEwMDAwKTsK PiAtCXJldCA9IChyZXQgKyAxKSAqIGhvcml6X3BpeGVscyAqIGJ5dGVzX3Blcl9waXhlbDsKPiAr CXJldCA9IChyZXQgKyAxKSAqIGhvcml6X3BpeGVscyAqIGNwcDsKPiAgCXJldCA9IERJVl9ST1VO RF9VUChyZXQsIDY0KSArIDI7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdWlu dDMyX3QgaWxrX3dtX2ZiYyh1aW50MzJfdCBwcmlfdmFsLCB1aW50MzJfdCBob3Jpel9waXhlbHMs Cj4gLQkJCSAgIHVpbnQ4X3QgYnl0ZXNfcGVyX3BpeGVsKQo+ICsJCQkgICB1aW50OF90IGNwcCkK PiAgewo+ICAJLyoKPiAgCSAqIE5laXRoZXIgb2YgdGhlc2Ugc2hvdWxkIGJlIHBvc3NpYmxlIHNp bmNlIHRoaXMgZnVuY3Rpb24gc2hvdWxkbid0IGJlCj4gQEAgLTE3MjYsMTIgKzE3MjQsMTIgQEAg c3RhdGljIHVpbnQzMl90IGlsa193bV9mYmModWludDMyX3QgcHJpX3ZhbCwgdWludDMyX3QgaG9y aXpfcGl4ZWxzLAo+ICAJICogZXh0cmEgcGFyYW5vaWQgdG8gYXZvaWQgYSBwb3RlbnRpYWwgZGl2 aWRlLWJ5LXplcm8gaWYgd2Ugc2NyZXcgdXAKPiAgCSAqIGVsc2V3aGVyZSBpbiB0aGUgZHJpdmVy Lgo+ICAJICovCj4gLQlpZiAoV0FSTl9PTighYnl0ZXNfcGVyX3BpeGVsKSkKPiArCWlmIChXQVJO X09OKCFjcHApKQo+ICAJCXJldHVybiAwOwo+ICAJaWYgKFdBUk5fT04oIWhvcml6X3BpeGVscykp Cj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JcmV0dXJuIERJVl9ST1VORF9VUChwcmlfdmFsICogNjQs IGhvcml6X3BpeGVscyAqIGJ5dGVzX3Blcl9waXhlbCkgKyAyOwo+ICsJcmV0dXJuIERJVl9ST1VO RF9VUChwcmlfdmFsICogNjQsIGhvcml6X3BpeGVscyAqIGNwcCkgKyAyOwo+ICB9Cj4gIAo+ICBz dHJ1Y3QgaWxrX3dtX21heGltdW1zIHsKPiBAQCAtMTc1MCwxMyArMTc0OCwxNCBAQCBzdGF0aWMg dWludDMyX3QgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUsCj4gIAkJCQkgICB1aW50MzJfdCBtZW1fdmFsdWUsCj4gIAkJCQkgICBib29sIGlz X2xwKQo+ICB7Cj4gLQlpbnQgYnBwID0gcHN0YXRlLT5iYXNlLmZiID8gcHN0YXRlLT5iYXNlLmZi LT5iaXRzX3Blcl9waXhlbCAvIDggOiAwOwo+ICsJaW50IGNwcCA9IHBzdGF0ZS0+YmFzZS5mYiA/ Cj4gKwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAocHN0YXRlLT5iYXNlLmZiLT5waXhlbF9mb3JtYXQs IDApIDogMDsKPiAgCXVpbnQzMl90IG1ldGhvZDEsIG1ldGhvZDI7Cj4gIAo+ICAJaWYgKCFjc3Rh dGUtPmJhc2UuYWN0aXZlIHx8ICFwc3RhdGUtPnZpc2libGUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ IC0JbWV0aG9kMSA9IGlsa193bV9tZXRob2QxKGlsa19waXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwg YnBwLCBtZW1fdmFsdWUpOwo+ICsJbWV0aG9kMSA9IGlsa193bV9tZXRob2QxKGlsa19waXBlX3Bp eGVsX3JhdGUoY3N0YXRlKSwgY3BwLCBtZW1fdmFsdWUpOwo+ICAKPiAgCWlmICghaXNfbHApCj4g IAkJcmV0dXJuIG1ldGhvZDE7Cj4gQEAgLTE3NjQsOCArMTc2Myw3IEBAIHN0YXRpYyB1aW50MzJf dCBpbGtfY29tcHV0ZV9wcmlfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSwKPiAgCW1ldGhvZDIgPSBpbGtfd21fbWV0aG9kMihpbGtfcGlwZV9waXhlbF9yYXRlKGNzdGF0 ZSksCj4gIAkJCQkgY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gIAkJ CQkgZHJtX3JlY3Rfd2lkdGgoJnBzdGF0ZS0+ZHN0KSwKPiAtCQkJCSBicHAsCj4gLQkJCQkgbWVt X3ZhbHVlKTsKPiArCQkJCSBjcHAsIG1lbV92YWx1ZSk7Cj4gIAo+ICAJcmV0dXJuIG1pbihtZXRo b2QxLCBtZXRob2QyKTsKPiAgfQo+IEBAIC0xNzc4LDE4ICsxNzc2LDE4IEBAIHN0YXRpYyB1aW50 MzJfdCBpbGtfY29tcHV0ZV9zcHJfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZSwKPiAgCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHN0YXRlLAo+ ICAJCQkJICAgdWludDMyX3QgbWVtX3ZhbHVlKQo+ICB7Cj4gLQlpbnQgYnBwID0gcHN0YXRlLT5i YXNlLmZiID8gcHN0YXRlLT5iYXNlLmZiLT5iaXRzX3Blcl9waXhlbCAvIDggOiAwOwo+ICsJaW50 IGNwcCA9IHBzdGF0ZS0+YmFzZS5mYiA/Cj4gKwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAocHN0YXRl LT5iYXNlLmZiLT5waXhlbF9mb3JtYXQsIDApIDogMDsKPiAgCXVpbnQzMl90IG1ldGhvZDEsIG1l dGhvZDI7Cj4gIAo+ICAJaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZlIHx8ICFwc3RhdGUtPnZpc2li bGUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JbWV0aG9kMSA9IGlsa193bV9tZXRob2QxKGlsa19w aXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwgYnBwLCBtZW1fdmFsdWUpOwo+ICsJbWV0aG9kMSA9IGls a193bV9tZXRob2QxKGlsa19waXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwgY3BwLCBtZW1fdmFsdWUp Owo+ICAJbWV0aG9kMiA9IGlsa193bV9tZXRob2QyKGlsa19waXBlX3BpeGVsX3JhdGUoY3N0YXRl KSwKPiAgCQkJCSBjc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKPiAgCQkJ CSBkcm1fcmVjdF93aWR0aCgmcHN0YXRlLT5kc3QpLAo+IC0JCQkJIGJwcCwKPiAtCQkJCSBtZW1f dmFsdWUpOwo+ICsJCQkJIGNwcCwgbWVtX3ZhbHVlKTsKPiAgCXJldHVybiBtaW4obWV0aG9kMSwg bWV0aG9kMik7Cj4gIH0KPiAgCj4gQEAgLTE4MDEsNyArMTc5OSw4IEBAIHN0YXRpYyB1aW50MzJf dCBpbGtfY29tcHV0ZV9jdXJfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSwKPiAgCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHN0YXRlLAo+ICAJ CQkJICAgdWludDMyX3QgbWVtX3ZhbHVlKQo+ICB7Cj4gLQlpbnQgYnBwID0gcHN0YXRlLT5iYXNl LmZiID8gcHN0YXRlLT5iYXNlLmZiLT5iaXRzX3Blcl9waXhlbCAvIDggOiAwOwo+ICsJaW50IGNw cCA9IHBzdGF0ZS0+YmFzZS5mYiA/Cj4gKwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAocHN0YXRlLT5i YXNlLmZiLT5waXhlbF9mb3JtYXQsIDApIDogMDsKPiAgCj4gIAlpZiAoIWNzdGF0ZS0+YmFzZS5h Y3RpdmUgfHwgIXBzdGF0ZS0+dmlzaWJsZSkKPiAgCQlyZXR1cm4gMDsKPiBAQCAtMTgwOSw4ICsx ODA4LDcgQEAgc3RhdGljIHVpbnQzMl90IGlsa19jb21wdXRlX2N1cl93bShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAJcmV0dXJuIGlsa193bV9tZXRob2QyKGlsa19w aXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwKPiAgCQkJICAgICAgY3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y19odG90YWwsCj4gIAkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZwc3RhdGUtPmRz dCksCj4gLQkJCSAgICAgIGJwcCwKPiAtCQkJICAgICAgbWVtX3ZhbHVlKTsKPiArCQkJICAgICAg Y3BwLCBtZW1fdmFsdWUpOwo+ICB9Cj4gIAo+ICAvKiBPbmx5IGZvciBXTV9MUC4gKi8KPiBAQCAt MTgxOCwxMiArMTgxNiwxMyBAQCBzdGF0aWMgdWludDMyX3QgaWxrX2NvbXB1dGVfZmJjX3dtKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAkJCQkgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBzdGF0ZSwKPiAgCQkJCSAgIHVpbnQzMl90IHByaV92YWwp Cj4gIHsKPiAtCWludCBicHAgPSBwc3RhdGUtPmJhc2UuZmIgPyBwc3RhdGUtPmJhc2UuZmItPmJp dHNfcGVyX3BpeGVsIC8gOCA6IDA7Cj4gKwlpbnQgY3BwID0gcHN0YXRlLT5iYXNlLmZiID8KPiAr CQlkcm1fZm9ybWF0X3BsYW5lX2NwcChwc3RhdGUtPmJhc2UuZmItPnBpeGVsX2Zvcm1hdCwgMCkg OiAwOwo+ICAKPiAgCWlmICghY3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCAhcHN0YXRlLT52aXNpYmxl KQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCXJldHVybiBpbGtfd21fZmJjKHByaV92YWwsIGRybV9y ZWN0X3dpZHRoKCZwc3RhdGUtPmRzdCksIGJwcCk7Cj4gKwlyZXR1cm4gaWxrX3dtX2ZiYyhwcmlf dmFsLCBkcm1fcmVjdF93aWR0aCgmcHN0YXRlLT5kc3QpLCBjcHApOwo+ICB9Cj4gIAo+ICBzdGF0 aWMgdW5zaWduZWQgaW50IGlsa19kaXNwbGF5X2ZpZm9fc2l6ZShjb25zdCBzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+IEBAIC0zMDQyLDI2ICszMDQxLDI1IEBAIHN0YXRpYyB1aW50MzJfdCBza2xf cGlwZV9waXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcpCj4g IAo+ICAvKgo+ICAgKiBUaGUgbWF4IGxhdGVuY3kgc2hvdWxkIGJlIDI1NyAobWF4IHRoZSBwdW5p dCBjYW4gY29kZSBpcyAyNTUgYW5kIHdlIGFkZCAydXMKPiAtICogZm9yIHRoZSByZWFkIGxhdGVu Y3kpIGFuZCBieXRlc19wZXJfcGl4ZWwgc2hvdWxkIGFsd2F5cyBiZSA8PSA4LCBzbyB0aGF0Cj4g KyAqIGZvciB0aGUgcmVhZCBsYXRlbmN5KSBhbmQgY3BwIHNob3VsZCBhbHdheXMgYmUgPD0gOCwg c28gdGhhdAo+ICAgKiBzaG91bGQgYWxsb3cgcGl4ZWxfcmF0ZSB1cCB0byB+MiBHSHogd2hpY2gg c2VlbXMgc3VmZmljaWVudCBzaW5jZSBtYXgKPiAgICogMnhjZGNsayBpcyAxMzUwIE1IeiBhbmQg dGhlIHBpeGVsIHJhdGUgc2hvdWxkIG5ldmVyIGV4Y2VlZCB0aGF0Lgo+ICAqLwo+IC1zdGF0aWMg dWludDMyX3Qgc2tsX3dtX21ldGhvZDEodWludDMyX3QgcGl4ZWxfcmF0ZSwgdWludDhfdCBieXRl c19wZXJfcGl4ZWwsCj4gLQkJCSAgICAgICB1aW50MzJfdCBsYXRlbmN5KQo+ICtzdGF0aWMgdWlu dDMyX3Qgc2tsX3dtX21ldGhvZDEodWludDMyX3QgcGl4ZWxfcmF0ZSwgdWludDhfdCBjcHAsIHVp bnQzMl90IGxhdGVuY3kpCj4gIHsKPiAgCXVpbnQzMl90IHdtX2ludGVybWVkaWF0ZV92YWwsIHJl dDsKPiAgCj4gIAlpZiAobGF0ZW5jeSA9PSAwKQo+ICAJCXJldHVybiBVSU5UX01BWDsKPiAgCj4g LQl3bV9pbnRlcm1lZGlhdGVfdmFsID0gbGF0ZW5jeSAqIHBpeGVsX3JhdGUgKiBieXRlc19wZXJf cGl4ZWwgLyA1MTI7Cj4gKwl3bV9pbnRlcm1lZGlhdGVfdmFsID0gbGF0ZW5jeSAqIHBpeGVsX3Jh dGUgKiBjcHAgLyA1MTI7Cj4gIAlyZXQgPSBESVZfUk9VTkRfVVAod21faW50ZXJtZWRpYXRlX3Zh bCwgMTAwMCk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAgc3RhdGljIHVpbnQzMl90 IHNrbF93bV9tZXRob2QyKHVpbnQzMl90IHBpeGVsX3JhdGUsIHVpbnQzMl90IHBpcGVfaHRvdGFs LAo+IC0JCQkgICAgICAgdWludDMyX3QgaG9yaXpfcGl4ZWxzLCB1aW50OF90IGJ5dGVzX3Blcl9w aXhlbCwKPiArCQkJICAgICAgIHVpbnQzMl90IGhvcml6X3BpeGVscywgdWludDhfdCBjcHAsCj4g IAkJCSAgICAgICB1aW50NjRfdCB0aWxpbmcsIHVpbnQzMl90IGxhdGVuY3kpCj4gIHsKPiAgCXVp bnQzMl90IHJldDsKPiBAQCAtMzA3MSw3ICszMDY5LDcgQEAgc3RhdGljIHVpbnQzMl90IHNrbF93 bV9tZXRob2QyKHVpbnQzMl90IHBpeGVsX3JhdGUsIHVpbnQzMl90IHBpcGVfaHRvdGFsLAo+ICAJ aWYgKGxhdGVuY3kgPT0gMCkKPiAgCQlyZXR1cm4gVUlOVF9NQVg7Cj4gIAo+IC0JcGxhbmVfYnl0 ZXNfcGVyX2xpbmUgPSBob3Jpel9waXhlbHMgKiBieXRlc19wZXJfcGl4ZWw7Cj4gKwlwbGFuZV9i eXRlc19wZXJfbGluZSA9IGhvcml6X3BpeGVscyAqIGNwcDsKPiAgCj4gIAlpZiAodGlsaW5nID09 IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gIAkgICAgdGlsaW5nID09IEk5MTVfRk9STUFU X01PRF9ZZl9USUxFRCkgewo+IEBAIC0zMTIxLDIzICszMTE5LDIxIEBAIHN0YXRpYyBib29sIHNr bF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgCXVpbnQzMl90IHBsYW5lX2J5dGVzX3Blcl9saW5lLCBwbGFuZV9ibG9ja3NfcGVyX2xp bmU7Cj4gIAl1aW50MzJfdCByZXNfYmxvY2tzLCByZXNfbGluZXM7Cj4gIAl1aW50MzJfdCBzZWxl Y3RlZF9yZXN1bHQ7Cj4gLQl1aW50OF90IGJ5dGVzX3Blcl9waXhlbDsKPiArCXVpbnQ4X3QgY3Bw Owo+ICAKPiAgCWlmIChsYXRlbmN5ID09IDAgfHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUgfHwgIWZi KQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlieXRlc19wZXJfcGl4ZWwgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCWNwcCA9IGRybV9mb3JtYXRfcGxh bmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ICAJbWV0aG9kMSA9IHNrbF93bV9tZXRob2Qx KHNrbF9waXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwKPiAtCQkJCSBieXRlc19wZXJfcGl4ZWwsCj4g LQkJCQkgbGF0ZW5jeSk7Cj4gKwkJCQkgY3BwLCBsYXRlbmN5KTsKPiAgCW1ldGhvZDIgPSBza2xf d21fbWV0aG9kMihza2xfcGlwZV9waXhlbF9yYXRlKGNzdGF0ZSksCj4gIAkJCQkgY3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gIAkJCQkgY3N0YXRlLT5waXBlX3NyY193 LAo+IC0JCQkJIGJ5dGVzX3Blcl9waXhlbCwKPiAtCQkJCSBmYi0+bW9kaWZpZXJbMF0sCj4gKwkJ CQkgY3BwLCBmYi0+bW9kaWZpZXJbMF0sCj4gIAkJCQkgbGF0ZW5jeSk7Cj4gIAo+IC0JcGxhbmVf Ynl0ZXNfcGVyX2xpbmUgPSBjc3RhdGUtPnBpcGVfc3JjX3cgKiBieXRlc19wZXJfcGl4ZWw7Cj4g KwlwbGFuZV9ieXRlc19wZXJfbGluZSA9IGNzdGF0ZS0+cGlwZV9zcmNfdyAqIGNwcDsKPiAgCXBs YW5lX2Jsb2Nrc19wZXJfbGluZSA9IERJVl9ST1VORF9VUChwbGFuZV9ieXRlc19wZXJfbGluZSwg NTEyKTsKPiAgCj4gIAlpZiAoZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJ TEVEIHx8Cj4gQEAgLTMxNDUsMTEgKzMxNDEsMTEgQEAgc3RhdGljIGJvb2wgc2tsX2NvbXB1dGVf cGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXVp bnQzMl90IG1pbl9zY2FubGluZXMgPSA0Owo+ICAJCXVpbnQzMl90IHlfdGlsZV9taW5pbXVtOwo+ ICAJCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocGxhbmUtPnN0YXRlLT5yb3RhdGlvbikp IHsKPiAtCQkJaW50IGJwcCA9IChmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikg Pwo+ICsJCQlpbnQgY3BwID0gKGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSA/ Cj4gIAkJCQlkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAxKSA6Cj4gIAkJ CQlkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCj4gLQkJCXN3 aXRjaCAoYnBwKSB7Cj4gKwkJCXN3aXRjaCAoY3BwKSB7Cj4gIAkJCWNhc2UgMToKPiAgCQkJCW1p bl9zY2FubGluZXMgPSAxNjsKPiAgCQkJCWJyZWFrOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nw cml0ZS5jCj4gaW5kZXggZjFlZTdkYjA4MTFhLi5hMjU4MmM0NTViMzYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IEBAIC0zNTEsNyArMzUxLDcgQEAgdmx2X3VwZGF0ZV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsCj4gIAlpbnQgcGxhbmUgPSBpbnRlbF9wbGFu ZS0+cGxhbmU7Cj4gIAl1MzIgc3ByY3RsOwo+ICAJdTMyIHNwcnN1cmZfb2Zmc2V0LCBsaW5lYXJf b2Zmc2V0Owo+IC0JaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4 ZWxfZm9ybWF0LCAwKTsKPiArCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4 ZWxfZm9ybWF0LCAwKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5 ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gIAlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUt PmRzdC54MTsKPiAgCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+ZHN0LnkxOwo+IEBAIC00MjIs MTAgKzQyMiw5IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLAo+ ICAJY3J0Y193LS07Cj4gIAljcnRjX2gtLTsKPiAgCj4gLQlsaW5lYXJfb2Zmc2V0ID0geSAqIGZi LT5waXRjaGVzWzBdICsgeCAqIHBpeGVsX3NpemU7Cj4gKwlsaW5lYXJfb2Zmc2V0ID0geSAqIGZi LT5waXRjaGVzWzBdICsgeCAqIGNwcDsKPiAgCXNwcnN1cmZfb2Zmc2V0ID0gaW50ZWxfY29tcHV0 ZV90aWxlX29mZnNldChkZXZfcHJpdiwgJngsICZ5LAo+IC0JCQkJCQkgICBmYi0+bW9kaWZpZXJb MF0sCj4gLQkJCQkJCSAgIHBpeGVsX3NpemUsCj4gKwkJCQkJCSAgIGZiLT5tb2RpZmllclswXSwg Y3BwLAo+ICAJCQkJCQkgICBmYi0+cGl0Y2hlc1swXSk7Cj4gIAlsaW5lYXJfb2Zmc2V0IC09IHNw cnN1cmZfb2Zmc2V0Owo+ICAKPiBAQCAtNDM0LDcgKzQzMyw3IEBAIHZsdl91cGRhdGVfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLAo+ICAKPiAgCQl4ICs9IHNyY193Owo+ICAJCXkgKz0g c3JjX2g7Cj4gLQkJbGluZWFyX29mZnNldCArPSBzcmNfaCAqIGZiLT5waXRjaGVzWzBdICsgc3Jj X3cgKiBwaXhlbF9zaXplOwo+ICsJCWxpbmVhcl9vZmZzZXQgKz0gc3JjX2ggKiBmYi0+cGl0Y2hl c1swXSArIHNyY193ICogY3BwOwo+ICAJfQo+ICAKPiAgCWlmIChrZXktPmZsYWdzKSB7Cj4gQEAg LTQ5NCw3ICs0OTMsNyBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKPiAgCXUzMiBzcHJjdGws IHNwcnNjYWxlID0gMDsKPiAgCXUzMiBzcHJzdXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKPiAt CWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwg MCk7Cj4gKwlpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwg MCk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBs YW5lX3N0YXRlLT5ja2V5Owo+ICAJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5kc3QueDE7Cj4g IAlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKPiBAQCAtNTU2LDEwICs1NTUsOSBA QCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJaWYgKGNydGNf dyAhPSBzcmNfdyB8fCBjcnRjX2ggIT0gc3JjX2gpCj4gIAkJc3Byc2NhbGUgPSBTUFJJVEVfU0NB TEVfRU5BQkxFIHwgKHNyY193IDw8IDE2KSB8IHNyY19oOwo+ICAKPiAtCWxpbmVhcl9vZmZzZXQg PSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogcGl4ZWxfc2l6ZTsKPiArCWxpbmVhcl9vZmZzZXQg PSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogY3BwOwo+ICAJc3Byc3VyZl9vZmZzZXQgPSBpbnRl bF9jb21wdXRlX3RpbGVfb2Zmc2V0KGRldl9wcml2LCAmeCwgJnksCj4gLQkJCQkJCSAgIGZiLT5t b2RpZmllclswXSwKPiAtCQkJCQkJICAgcGl4ZWxfc2l6ZSwKPiArCQkJCQkJICAgZmItPm1vZGlm aWVyWzBdLCBjcHAsCj4gIAkJCQkJCSAgIGZiLT5waXRjaGVzWzBdKTsKPiAgCWxpbmVhcl9vZmZz ZXQgLT0gc3Byc3VyZl9vZmZzZXQ7Cj4gIAo+IEBAIC01NzAsOCArNTY4LDcgQEAgaXZiX3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQlpZiAoIUlTX0hBU1dFTEwoZGV2 KSAmJiAhSVNfQlJPQURXRUxMKGRldikpIHsKPiAgCQkJeCArPSBzcmNfdzsKPiAgCQkJeSArPSBz cmNfaDsKPiAtCQkJbGluZWFyX29mZnNldCArPSBzcmNfaCAqIGZiLT5waXRjaGVzWzBdICsKPiAt CQkJCXNyY193ICogcGl4ZWxfc2l6ZTsKPiArCQkJbGluZWFyX29mZnNldCArPSBzcmNfaCAqIGZi LT5waXRjaGVzWzBdICsgc3JjX3cgKiBjcHA7Cj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAtNjM3LDcg KzYzNCw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAlp bnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwo+ICAJdTMyIGR2c2NudHIsIGR2c3NjYWxlOwo+ ICAJdTMyIGR2c3N1cmZfb2Zmc2V0LCBsaW5lYXJfb2Zmc2V0Owo+IC0JaW50IHBpeGVsX3NpemUg PSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCWludCBjcHAg PSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCWNvbnN0IHN0 cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7 Cj4gIAlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmRzdC54MTsKPiAgCWludCBjcnRjX3kgPSBw bGFuZV9zdGF0ZS0+ZHN0LnkxOwo+IEBAIC02OTUsMTAgKzY5Miw5IEBAIGlsa191cGRhdGVfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAlpZiAoY3J0Y193ICE9IHNyY193IHx8IGNy dGNfaCAhPSBzcmNfaCkKPiAgCQlkdnNzY2FsZSA9IERWU19TQ0FMRV9FTkFCTEUgfCAoc3JjX3cg PDwgMTYpIHwgc3JjX2g7Cj4gIAo+IC0JbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1sw XSArIHggKiBwaXhlbF9zaXplOwo+ICsJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1sw XSArIHggKiBjcHA7Cj4gIAlkdnNzdXJmX29mZnNldCA9IGludGVsX2NvbXB1dGVfdGlsZV9vZmZz ZXQoZGV2X3ByaXYsICZ4LCAmeSwKPiAtCQkJCQkJICAgZmItPm1vZGlmaWVyWzBdLAo+IC0JCQkJ CQkgICBwaXhlbF9zaXplLAo+ICsJCQkJCQkgICBmYi0+bW9kaWZpZXJbMF0sIGNwcCwKPiAgCQkJ CQkJICAgZmItPnBpdGNoZXNbMF0pOwo+ICAJbGluZWFyX29mZnNldCAtPSBkdnNzdXJmX29mZnNl dDsKPiAgCj4gQEAgLTcwNyw3ICs3MDMsNyBAQCBpbGtfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ICAKPiAgCQl4ICs9IHNyY193Owo+ICAJCXkgKz0gc3JjX2g7Cj4gLQkJ bGluZWFyX29mZnNldCArPSBzcmNfaCAqIGZiLT5waXRjaGVzWzBdICsgc3JjX3cgKiBwaXhlbF9z aXplOwo+ICsJCWxpbmVhcl9vZmZzZXQgKz0gc3JjX2ggKiBmYi0+cGl0Y2hlc1swXSArIHNyY193 ICogY3BwOwo+ICAJfQo+ICAKPiAgCWlmIChrZXktPmZsYWdzKSB7Cj4gQEAgLTc3Miw3ICs3Njgs NiBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g IAlpbnQgaHNjYWxlLCB2c2NhbGU7Cj4gIAlpbnQgbWF4X3NjYWxlLCBtaW5fc2NhbGU7Cj4gIAli b29sIGNhbl9zY2FsZTsKPiAtCWludCBwaXhlbF9zaXplOwo+ICAKPiAgCWlmICghZmIpIHsKPiAg CQlzdGF0ZS0+dmlzaWJsZSA9IGZhbHNlOwo+IEBAIC04OTQsNiArODg5LDcgQEAgaW50ZWxfY2hl Y2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJLyogQ2hlY2sgc2l6 ZSByZXN0cmljdGlvbnMgd2hlbiBzY2FsaW5nICovCj4gIAlpZiAoc3RhdGUtPnZpc2libGUgJiYg KHNyY193ICE9IGNydGNfdyB8fCBzcmNfaCAhPSBjcnRjX2gpKSB7Cj4gIAkJdW5zaWduZWQgaW50 IHdpZHRoX2J5dGVzOwo+ICsJCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4 ZWxfZm9ybWF0LCAwKTsKPiAgCj4gIAkJV0FSTl9PTighY2FuX3NjYWxlKTsKPiAgCj4gQEAgLTkw NSw5ICs5MDEsNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gIAkJaWYgKHNyY193IDwgMyB8fCBzcmNfaCA8IDMpCj4gIAkJCXN0YXRlLT52aXNp YmxlID0gZmFsc2U7Cj4gIAo+IC0JCXBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChm Yi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAtCQl3aWR0aF9ieXRlcyA9ICgoc3JjX3ggKiBwaXhlbF9z aXplKSAmIDYzKSArCj4gLQkJCQkJc3JjX3cgKiBwaXhlbF9zaXplOwo+ICsJCXdpZHRoX2J5dGVz ID0gKChzcmNfeCAqIGNwcCkgJiA2MykgKyBzcmNfdyAqIGNwcDsKPiAgCj4gIAkJaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuIDwgOSAmJiAoc3JjX3cgPiAyMDQ4IHx8IHNyY19oID4gMjA0OCB8fAo+ ICAJCSAgICB3aWR0aF9ieXRlcyA+IDQwOTYgfHwgZmItPnBpdGNoZXNbMF0gPiA0MDk2KSkgewo+ IC0tIAo+IDIuNC4xMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwg Q29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK