From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: Re: [PATCH] drm/msm: Optimize GPU crashstate capture read path Date: Thu, 1 Nov 2018 09:04:49 -0600 Message-ID: <20181101150449.GA20483@jcrouse-lnx.qualcomm.com> References: <1541061341-29994-1-git-send-email-smasetty@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1541061341-29994-1-git-send-email-smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sharat Masetty Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gVGh1LCBOb3YgMDEsIDIwMTggYXQgMDI6MDU6NDFQTSArMDUzMCwgU2hhcmF0IE1hc2V0dHkg d3JvdGU6Cj4gV2hlbiB0aGUgdXNlcnNwYWNlIHRyaWVzIHRvIHJlYWQgdGhlIGNyYXNoc3RhdGUg ZHVtcCwgdGhlIHJlYWQgc2lkZQo+IGltcGxlbWVudGF0aW9uIGluIHRoZSBkcml2ZXIgY3VycmVu dGx5IGFzY2lpODUgZW5jb2RlcyBhbGwgdGhlIGJpbmFyeQo+IGJ1ZmZlcnMgYW5kIGl0IGRvZXMg dGhpcyBlYWNoIHRpbWUgdGhlIHJlYWQgc3lzdGVtIGNhbGwgaXMgY2FsbGVkLgo+IEEgdXNlcnNw YWNlIHRvb2wgbGlrZSBjYXQgdHlwaWNhbGx5IGRvZXMgYSBwYWdlIGJ5IHBhZ2UgcmVhZCBhbmQg dGhlCj4gbnVtYmVyIG9mIHJlYWQgY2FsbHMgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGUgZGF0 YSBjYXB0dXJlZCBieSB0aGUKPiBkcml2ZXIuIFRoaXMgaXMgY2VydGFpbmx5IG5vdCBkZXNpcmFi bGUgYW5kIGRvZXMgbm90IHNjYWxlIHdlbGwgd2l0aAo+IGxhcmdlIGNhcHR1cmVzLgo+IAo+IFRo aXMgcGF0Y2ggc3RhcnRzIG9mZiB3aXRoIG1vdmluZyB0aGUgZW5jb2RpbmcgcGFydCB0byB0aGUg Y2FwdHVyZSB0aW1lLAo+IHRoYXQgaXMgd2hlbiB0aGUgR1BVIHRyaWVzIHRvIHJlY292ZXIgYWZ0 ZXIgYSBoYW5nLiBOb3cgd2Ugb25seSBlbmNvZGUKPiBvbmNlIHBlciBidWZmZXIgb2JqZWN0IGFu ZCBub3QgcGVyIHBhZ2UgcmVhZC4gV2l0aCB0aGlzIHRoZXJlIGlzIGFuCj4gaW1tZWRpYXRlID4x MFggc3BlZWQgaW1wcm92ZW1lbnQgaW4gY3Jhc2hzdGF0ZSBzYXZlIHRpbWUuCj4gCj4gVGhlIGZs aXAgc2lkZSBob3dldmVyIGlzIHRoYXQgdGhlIEdQVSByZWNvdmVyeSB0aW1lIGluY3JlYXNlcyBh bmQgdGhpcwo+IG5lZ2F0aXZlbHkgaW1wYWN0cyB0aGUgdXNlciBleHBlcmllbmNlLCBzbyB0aGlz IGlzIGhhbmRsZWQgYnkgbW92aW5nIHRoZQo+IGVuY29kaW5nIHBhcnQgdG8gYSB3b3JrZXIgdGhy ZWFkIGFuZCBvbmx5IHJlZ2lzdGVyIHdpdGggdGhlIGRldl9jb3JlZHVtcAo+IG9uY2UgdGhlIGVu Y29kaW5nIG9mIHRoZSBidWZmZXJzIGlzIGNvbXBsZXRlLgoKRG9lcyB5b3VyIHRyZWUgaGF2ZSBo dHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMjU3MTgxLyA/IFRoYXQgd2ls bApoZWxwIHdpdGggYSBsb3Qgb2YgdGhlIHByb2JsZW1zIHlvdSBoYXZlIGRlc2NyaWJlZC4KCj4g U2lnbmVkLW9mZi1ieTogU2hhcmF0IE1hc2V0dHkgPHNtYXNldHR5QGNvZGVhdXJvcmEub3JnPgo+ IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMgfCAzNSArKyst LS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jICAgICAgICAgICB8IDkz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9ncHUuaCAgICAgICAgICAgfCAgMSArCj4gIDMgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0 aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vYWRyZW5vL2FkcmVub19ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2Fk cmVub19ncHUuYwo+IGluZGV4IDE0MTA2MmYuLjc0NDE1NzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCj4gQEAgLTQwNiw3ICs0MDYsNyBAQCBpbnQgYWRyZW5v X2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9ncHVfc3RhdGUg KnN0YXRlKQo+ICAJCQkJc2l6ZSA9IGogKyAxOwo+ICAKPiAgCQlpZiAoc2l6ZSkgewo+IC0JCQlz dGF0ZS0+cmluZ1tpXS5kYXRhID0ga21hbGxvYyhzaXplIDw8IDIsIEdGUF9LRVJORUwpOwo+ICsJ CQlzdGF0ZS0+cmluZ1tpXS5kYXRhID0ga3ZtYWxsb2Moc2l6ZSA8PCAyLCBHRlBfS0VSTkVMKTsK PiAgCQkJaWYgKHN0YXRlLT5yaW5nW2ldLmRhdGEpIHsKPiAgCQkJCW1lbWNweShzdGF0ZS0+cmlu Z1tpXS5kYXRhLCBncHUtPnJiW2ldLT5zdGFydCwgc2l6ZSA8PCAyKTsKPiAgCQkJCXN0YXRlLT5y aW5nW2ldLmRhdGFfc2l6ZSA9IHNpemUgPDwgMjsKClRoaXMgaXMgYSBnb29kIGZpeCwgYnV0IHVu cmVsYXRlZCB0byB0aGlzIGNoYW5nZSBhcyBkZXRhaWxlZCBhYm92ZS4gU2hvdWxkIGJlCnNlcGFy YXRlLgoKPiBAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgYWRyZW5vX2dwdV9zdGF0ZV9kZXN0cm95 KHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSkKPiAgCWludCBpOwo+ICAKPiAgCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKHN0YXRlLT5yaW5nKTsgaSsrKQo+IC0JCWtmcmVlKHN0YXRlLT5y aW5nW2ldLmRhdGEpOwo+ICsJCWt2ZnJlZShzdGF0ZS0+cmluZ1tpXS5kYXRhKTsKCkFzIGFib3Zl LgoKPiAgCj4gIAlmb3IgKGkgPSAwOyBzdGF0ZS0+Ym9zICYmIGkgPCBzdGF0ZS0+bnJfYm9zOyBp KyspCj4gIAkJa3ZmcmVlKHN0YXRlLT5ib3NbaV0uZGF0YSk7Cj4gQEAgLTQ3NSwzNCArNDc1LDE1 IEBAIGludCBhZHJlbm9fZ3B1X3N0YXRlX3B1dChzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUp Cj4gIAo+ICAjaWYgZGVmaW5lZChDT05GSUdfREVCVUdfRlMpIHx8IGRlZmluZWQoQ09ORklHX0RF Vl9DT1JFRFVNUCkKPiAgCj4gLXN0YXRpYyB2b2lkIGFkcmVub19zaG93X29iamVjdChzdHJ1Y3Qg ZHJtX3ByaW50ZXIgKnAsIHUzMiAqcHRyLCBpbnQgbGVuKQo+ICtzdGF0aWMgdm9pZCBhZHJlbm9f c2hvd19vYmplY3Qoc3RydWN0IGRybV9wcmludGVyICpwLCB2b2lkICpwdHIpCj4gIHsKPiAtCWNo YXIgb3V0W0FTQ0lJODVfQlVGU1pdOwo+IC0JbG9uZyBsLCBkYXRhbGVuLCBpOwo+IC0KPiAtCWlm ICghcHRyIHx8ICFsZW4pCj4gLQkJcmV0dXJuOwo+IC0KPiAtCS8qCj4gLQkgKiBPbmx5IGR1bXAg dGhlIG5vbi16ZXJvIHBhcnQgb2YgdGhlIGJ1ZmZlciAtIHJhcmVseSB3aWxsIGFueSBkYXRhCj4g LQkgKiBjb21wbGV0ZWx5IGZpbGwgdGhlIGVudGlyZSBhbGxvY2F0ZWQgc2l6ZSBvZiB0aGUgYnVm ZmVyCj4gLQkgKi8KPiAtCWZvciAoZGF0YWxlbiA9IDAsIGkgPSAwOyBpIDwgbGVuID4+IDI7IGkr Kykgewo+IC0JCWlmIChwdHJbaV0pCj4gLQkJCWRhdGFsZW4gPSAoaSA8PCAyKSArIDE7Cj4gLQl9 Cj4gLQo+IC0JLyogU2tpcCBwcmludGluZyB0aGUgb2JqZWN0IGlmIGl0IGlzIGVtcHR5ICovCj4g LQlpZiAoZGF0YWxlbiA9PSAwKQo+ICsJaWYgKCFwdHIpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWwg PSBhc2NpaTg1X2VuY29kZV9sZW4oZGF0YWxlbik7Cj4gLQo+ICAJZHJtX3B1dHMocCwgIiAgICBk YXRhOiAhIWFzY2lpODUgfFxuIik7Cj4gIAlkcm1fcHV0cyhwLCAiICAgICAiKTsKPiAgCj4gLQlm b3IgKGkgPSAwOyBpIDwgbDsgaSsrKQo+IC0JCWRybV9wdXRzKHAsIGFzY2lpODVfZW5jb2RlKHB0 cltpXSwgb3V0KSk7Cj4gKwlkcm1fcHV0cyhwLCBwdHIpOwo+ICAKPiAgCWRybV9wdXRzKHAsICJc biIpOwo+ICB9Cj4gQEAgLTUzNCw4ICs1MTUsNyBAQCB2b2lkIGFkcmVub19zaG93KHN0cnVjdCBt c21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSwKPiAgCQlkcm1fcHJpbnRm KHAsICIgICAgd3B0cjogJWRcbiIsIHN0YXRlLT5yaW5nW2ldLndwdHIpOwo+ICAJCWRybV9wcmlu dGYocCwgIiAgICBzaXplOiAlZFxuIiwgTVNNX0dQVV9SSU5HQlVGRkVSX1NaKTsKPiAgCj4gLQkJ YWRyZW5vX3Nob3dfb2JqZWN0KHAsIHN0YXRlLT5yaW5nW2ldLmRhdGEsCj4gLQkJCXN0YXRlLT5y aW5nW2ldLmRhdGFfc2l6ZSk7Cj4gKwkJYWRyZW5vX3Nob3dfb2JqZWN0KHAsIHN0YXRlLT5yaW5n W2ldLmRhdGEpOwo+ICAJfQo+ICAKPiAgCWlmIChzdGF0ZS0+Ym9zKSB7Cj4gQEAgLTU0Niw4ICs1 MjYsNyBAQCB2b2lkIGFkcmVub19zaG93KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21f Z3B1X3N0YXRlICpzdGF0ZSwKPiAgCQkJCXN0YXRlLT5ib3NbaV0uaW92YSk7Cj4gIAkJCWRybV9w cmludGYocCwgIiAgICBzaXplOiAlemRcbiIsIHN0YXRlLT5ib3NbaV0uc2l6ZSk7Cj4gIAo+IC0J CQlhZHJlbm9fc2hvd19vYmplY3QocCwgc3RhdGUtPmJvc1tpXS5kYXRhLAo+IC0JCQkJc3RhdGUt PmJvc1tpXS5zaXplKTsKPiArCQkJYWRyZW5vX3Nob3dfb2JqZWN0KHAsIHN0YXRlLT5ib3NbaV0u ZGF0YSk7Cj4gIAkJfQo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9tc21fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwo+IGluZGV4IGZmOTU4 NDguLmQ1NTMzZjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwo+IEBAIC0yMSw2ICsyMSw3IEBA Cj4gICNpbmNsdWRlICJtc21fZmVuY2UuaCIKPiAgCj4gICNpbmNsdWRlIDxnZW5lcmF0ZWQvdXRz cmVsZWFzZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvYXNjaWk4NS5oPgo+ICAjaW5jbHVkZSA8bGlu dXgvc3RyaW5nX2hlbHBlcnMuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3BtX29wcC5oPgo+ICAjaW5j bHVkZSA8bGludXgvZGV2ZnJlcS5oPgo+IEBAIC0zNzUsOSArMzc2LDcgQEAgc3RhdGljIHZvaWQg bXNtX2dwdV9jcmFzaHN0YXRlX2NhcHR1cmUoc3RydWN0IG1zbV9ncHUgKmdwdSwKPiAgCS8qIFNl dCB0aGUgYWN0aXZlIGNyYXNoIHN0YXRlIHRvIGJlIGR1bXBlZCBvbiBmYWlsdXJlICovCj4gIAln cHUtPmNyYXNoc3RhdGUgPSBzdGF0ZTsKPiAgCj4gLQkvKiBGSVhNRTogUmVsZWFzZSB0aGUgY3Jh c2hzdGF0ZSBpZiB0aGlzIGVycm9ycyBvdXQ/ICovCj4gLQlkZXZfY29yZWR1bXBtKGdwdS0+ZGV2 LT5kZXYsIFRISVNfTU9EVUxFLCBncHUsIDAsIEdGUF9LRVJORUwsCj4gLQkJbXNtX2dwdV9kZXZj b3JlZHVtcF9yZWFkLCBtc21fZ3B1X2RldmNvcmVkdW1wX2ZyZWUpOwo+ICsJc2NoZWR1bGVfd29y aygmZ3B1LT5jcmFzaHN0YXRlX3dvcmspOwoKSSdtIHN1cGVyIGhlc2l0YW50IHRvIGV2ZXIgYWRk IGFueXRoaW5nIGhhdmluZyB0byBkbyB3aXRoIHNjaGVkdWxpbmcgYmVjYXVzZSB3ZQphbHJlYWR5 IGFidXNlIGl0IHNvIGJhZGx5IGJ1dCB0aGlzIHNlZW1zIGxpa2UgaXQgbWlnaHQgYmUgb2theSBz aW5jZSBpdCBpc24ndApoaWdoIHByaW9yaXR5IGFuZCBub3QgcmVsYXRlZCB0byB0aW1pbmcuICBJ IHdvdWxkIGJlIGN1cmlvdXMgd2hhdCBvdGhlcnMgdGhpbmsuCgo+ICB9Cj4gICNlbHNlCj4gIHN0 YXRpYyB2b2lkIG1zbV9ncHVfY3Jhc2hzdGF0ZV9jYXB0dXJlKHN0cnVjdCBtc21fZ3B1ICpncHUs Cj4gQEAgLTQyMCw2ICs0MTksOTMgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2ZlbmNlcyhzdHJ1Y3Qg bXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcsCj4gIAo+ICBzdGF0aWMg dm9pZCByZXRpcmVfc3VibWl0cyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKPiAgCj4gK3N0YXRpYyBj aGFyICptc21fZ3B1X2FzY2lpODVfZW5jb2RlX2J1Zih1MzIgKnNyYywgc2l6ZV90IGxlbikKPiAr ewo+ICsJdm9pZCAqYnVmOwo+ICsJc2l6ZV90IGJ1Zl9pdHIgPSAwLCBidWZmZXJfc2l6ZTsKPiAr CWNoYXIgb3V0W0FTQ0lJODVfQlVGU1pdOwo+ICsJbG9uZyBsOwo+ICsJaW50IGk7Cj4gKwo+ICsJ aWYgKCFzcmMgfHwgIWxlbikKPiArCQlyZXR1cm4gTlVMTDsKCkkgZG9uJ3QgdGhpbmsgc3JjKCkg d2lsbCBldmVyIGxlZ2l0aW1hdGVseSBiZSBOVUxMIHNvIHlvdSBjYW4gcmVtb3ZlIHRoZSBjaGVj ay4KCj4gKwlsID0gYXNjaWk4NV9lbmNvZGVfbGVuKGxlbik7Cj4gKwo+ICsJLyoKPiArCSAqIEFz Y2lpODUgb3V0cHV0cyBlaXRoZXIgYSA1IGJ5dGUgc3RyaW5nIG9yIGEgMSBieXRlIHN0cmluZy4g U28gd2UKPiArCSAqIGFjY291bnQgZm9yIHRoZSB3b3JzdCBjYXNlIG9mIDUgYnl0ZXMgcGVyIGR3 b3JkIHBsdXMgdGhlIDEgZm9yICdcMCcKPiArCSAqLwo+ICsJYnVmZmVyX3NpemUgPSAobCAqIDUp ICsgMTsKCmJ1ZmZlcl9zaXplIGlzJ3QgbmVlZGVkIC0geW91IGNhbiBkbyB0aGUgbWF0aCBpbmxp bmUgaW4gdGhlIGt2bWFsbG9jKCkgZnVuY3Rpb24uCgo+ICsKPiArCWJ1ZiA9IGt2bWFsbG9jKGJ1 ZmZlcl9zaXplLCBHRlBfS0VSTkVMKTsKPiArCWlmICghYnVmKQo+ICsJCXJldHVybiBOVUxMOwo+ ICsKPiArCWZvciAoaSA9IDA7IGkgPCBsOyBpKyspCj4gKwkJYnVmX2l0ciArPSBzbnByaW50Zihi dWYgKyBidWZfaXRyLCBidWZmZXJfc2l6ZSAtIGJ1Zl9pdHIsICIlcyIsCgpUaGlzIHNwZWNpZmlj IGFsZ29yaXRobSBzaG91bGQgdXNlIHNjbnByaW50ZigpIGhlcmUgYnV0IG9uIGEgYnJvYWRlciBu b3RlCnNwcmludGYoKSBhbmQgZnJpZW5kcyBpcyBhIGJhZCBjaG9pY2UgaWYgcGVyZm9ybWFuY2Ug aXMgaW1wb3J0YW50IGJlY2F1c2UgaXQKanVtcHMgdGhyb3VnaCBtb3JlIGhvb3BzIHRvIGV2ZW50 dWFsbHkgZG8gd2hhdCBhbW91bnRzIHRvIGEgbWVtcGN5ICh0aGlzIGlzIHRoZQpyZWFzb24gd2h5 IHNlcV9wcmludGYoKSBhbmQgc2VxX3B1dHMoKSBhcmUgZGlmZmVyZW50IHRoaW5ncyBhbmQgY2hl Y2twYXRjaAppbnNpc3RzIHRoYXQgeW91IHVzZSBzZXFfcHV0cygpIGZvciBjb25zdGFudCBzdHJp bmdzKS4KCkluZiB5b3UgYXJlIHBsYW5uaW5nIG9uICBvdXRwdXR0aW5nIGludG8gYSBidWZmZXIg eW91IHNob3VsZCBqdXN0IG1ha2UgYSBjdXN0b20KYXNjaWk4NSBmdW5jdGlvbiB0byBvdXRwdXQg ZGlyZWN0bHkgYW5kIGF2b2lkIGNvcHlpbmcgaW4gdGhlIGZpcnN0IHBsYWNlLiAKCklmIHlvdSB3 YW50ZWQgdG8gZ2V0IGZhbmN5IHlvdSBjb3VsZCBhZGQgaXQgdG8gaW5jbHVkZS9saW51eC9hc2Np aTg1LmggLSAKYXNjaWk4NV9lbmNvZGVfdG9fYnVmKCkgb3Igc29tZSBzdWNoLgoKPiArCQkJCWFz Y2lpODVfZW5jb2RlKHNyY1tpXSwgb3V0KSk7Cj4gKwo+ICsJcmV0dXJuIGJ1ZjsKPiArfQo+ICsK PiArLyoKPiArICogQ29udmVydCB0aGUgYmluYXJ5IGRhdGEgaW4gdGhlIGdwdSBjcmFzaCBzdGF0 ZSBjYXB0dXJlKGxpa2UgYm9zIGFuZAo+ICsgKiByaW5nYnVmZmVyIGRhdGEpIHRvIGFzY2lpODUg ZW5jb2RlZCBzdHJpbmdzLiBOb3RlIHRoYXQgdGhlIGVuY29kZWQKPiArICogc3RyaW5nIGlzIE5V TEwgdGVybWluYXRlZC4KClRoaXMgaXMgdGVjaG5pY2FsbHkgbm90IHRydWUgYmVjYXVzZSB5b3Ug YXJlIHNwZWNpZmljYWxseSBhY2NvdW50aW5nIGZvciBhIE5VTEwKdGVybWluYXRvciBpbiB0aGUg ZnVuY3Rpb24gYWJvdmUuCgo+ICsgKi8KPiArc3RhdGljIHZvaWQgY3Jhc2hzdGF0ZV93b3JrZXIo c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICt7Cj4gKwlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAq c3RhdGU7Cj4gKwlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVj dCBtc21fZ3B1LAo+ICsJCQljcmFzaHN0YXRlX3dvcmspOwo+ICsJaW50IGk7Cj4gKwo+ICsJc3Rh dGUgPSBtc21fZ3B1X2NyYXNoc3RhdGVfZ2V0KGdwdSk7Cj4gKwlpZiAoIXN0YXRlKQo+ICsJCXJl dHVybjsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgTVNNX0dQVV9NQVhfUklOR1M7IGkrKykgewo+ ICsJCXZvaWQgKmJ1ZiA9IE5VTEw7CgpZb3UgZG9uJ3QgbmVlZGVkIHRvIGluaXRpYWxpemUgYnVm LgoKPiArCj4gKwkJaWYgKCFzdGF0ZS0+cmluZ1tpXS5kYXRhKQo+ICsJCQljb250aW51ZTsKPiAr CgpBIGNvbW1lbnQgaGVyZSBkZXNjcmliaW5nIHRoZSB2YXJpYWJsZSBzd2l0Y2gtYS1yb28geW91 IGFyZSBkb2luZyB3b3VsZCBiZQpoZWxwZnVsLgoKPiArCQlidWYgPSBzdGF0ZS0+cmluZ1tpXS5k YXRhOwo+ICsKPiArCQlzdGF0ZS0+cmluZ1tpXS5kYXRhID0gbXNtX2dwdV9hc2NpaTg1X2VuY29k ZV9idWYoYnVmLAo+ICsJCQkJc3RhdGUtPnJpbmdbaV0uZGF0YV9zaXplKTsKPiArCQlrdmZyZWUo YnVmKTsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgc3RhdGUtPm5yX2JvczsgaSsrKSB7 Cj4gKwkJdTMyICpidWYgPSBOVUxMOwoKYnVmIGRvZXMgbm90IG5lZWQgdG8gYmUgaW5pdGlhbGl6 ZWQuCgo+ICsJCWxvbmcgZGF0YWxlbiwgajsKPiArCj4gKwkJaWYgKCFzdGF0ZS0+Ym9zW2ldLmRh dGEpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlidWYgPSBzdGF0ZS0+Ym9zW2ldLmRhdGE7Cj4g Kwo+ICsJCS8qCj4gKwkJICogT25seSBkdW1wIHRoZSBub24temVybyBwYXJ0IG9mIHRoZSBidWZm ZXIgLSByYXJlbHkgd2lsbAo+ICsJCSAqIGFueSBkYXRhIGNvbXBsZXRlbHkgZmlsbCB0aGUgZW50 aXJlIGFsbG9jYXRlZCBzaXplIG9mIHRoZQo+ICsJCSAqIGJ1ZmZlcgo+ICsJCSAqLwo+ICsJCWZv ciAoZGF0YWxlbiA9IDAsIGogPSAwOyBqIDwgc3RhdGUtPmJvc1tpXS5zaXplID4+IDI7IGorKykK PiArCQkJaWYgKGJ1ZltqXSkKPiArCQkJCWRhdGFsZW4gPSAoKGogKyAxKSA8PCAyKTsKPiArCj4g KwkJc3RhdGUtPmJvc1tpXS5kYXRhID0gbXNtX2dwdV9hc2NpaTg1X2VuY29kZV9idWYoYnVmLCBk YXRhbGVuKTsKPiArCQlrdmZyZWUoYnVmKTsKPiArCX0KPiArCj4gKwltc21fZ3B1X2NyYXNoc3Rh dGVfcHV0KGdwdSk7Cj4gKwo+ICsJZGV2X2NvcmVkdW1wbShncHUtPmRldi0+ZGV2LCBUSElTX01P RFVMRSwgZ3B1LCAwLCBHRlBfS0VSTkVMLAo+ICsJCW1zbV9ncHVfZGV2Y29yZWR1bXBfcmVhZCwg bXNtX2dwdV9kZXZjb3JlZHVtcF9mcmVlKTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgcmVjb3Zl cl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICB7Cj4gIAlzdHJ1Y3QgbXNtX2dw dSAqZ3B1ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtc21fZ3B1LCByZWNvdmVyX3dvcmsp Owo+IEBAIC04NTYsNiArOTQyLDcgQEAgaW50IG1zbV9ncHVfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICAJSU5JVF9MSVNUX0hFQUQo JmdwdS0+YWN0aXZlX2xpc3QpOwo+ICAJSU5JVF9XT1JLKCZncHUtPnJldGlyZV93b3JrLCByZXRp cmVfd29ya2VyKTsKPiAgCUlOSVRfV09SSygmZ3B1LT5yZWNvdmVyX3dvcmssIHJlY292ZXJfd29y a2VyKTsKPiArCUlOSVRfV09SSygmZ3B1LT5jcmFzaHN0YXRlX3dvcmssIGNyYXNoc3RhdGVfd29y a2VyKTsKPiAgCj4gIAo+ICAJdGltZXJfc2V0dXAoJmdwdS0+aGFuZ2NoZWNrX3RpbWVyLCBoYW5n Y2hlY2tfaGFuZGxlciwgMCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2dwdS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmgKPiBpbmRleCBmODJiYWMwLi44 ODI1MDY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmgKPiBAQCAtMTM3LDYgKzEzNyw3IEBAIHN0 cnVjdCBtc21fZ3B1IHsKPiAgCX0gZGV2ZnJlcTsKPiAgCj4gIAlzdHJ1Y3QgbXNtX2dwdV9zdGF0 ZSAqY3Jhc2hzdGF0ZTsKPiArCXN0cnVjdCB3b3JrX3N0cnVjdCBjcmFzaHN0YXRlX3dvcms7Cj4g IH07Cj4gIAo+ICAvKiBJdCB0dXJucyBvdXQgdGhhdCBhbGwgdGFyZ2V0cyB1c2UgdGhlIHNhbWUg cmluZ2J1ZmZlciBzaXplICovCj4gLS0gCj4gMS45LjEKPiAKCi0tIApUaGUgUXVhbGNvbW0gSW5u b3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgQ29kZSBBdXJvcmEgRm9ydW0sCmEg TGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVl ZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==