From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 10/14] drm/msm/dpu: move hw resource tracking to crtc state Date: Fri, 31 Aug 2018 10:56:47 -0400 Message-ID: <20180831145647.GB91962@art_vandelay> References: <1535503203-22054-1-git-send-email-jsanka@codeaurora.org> <1535503203-22054-11-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yb1-xb42.google.com (mail-yb1-xb42.google.com [IPv6:2607:f8b0:4864:20::b42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 541946E904 for ; Fri, 31 Aug 2018 14:56:49 +0000 (UTC) Received: by mail-yb1-xb42.google.com with SMTP id d34-v6so964478yba.3 for ; Fri, 31 Aug 2018 07:56:49 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1535503203-22054-11-git-send-email-jsanka@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jeykumar Sankaran Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, seanpaul@chromium.org, hoegsberg@google.com, freedreno@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMjgsIDIwMTggYXQgMDU6Mzk6NTlQTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gUHJlcCBjaGFuZ2VzIGZvciBzdGF0ZSBiYXNlZCByZXNvdXJjZSBtYW5hZ2Vt ZW50Lgo+IAo+IE1vdmVzIGFsbCB0aGUgaHcgYmxvY2sgdHJhY2tpbmcgZm9yIHRoZSBjcnRjIHRv IHRoZSBzdGF0ZQo+IG9iamVjdC4KCkNoYW5nZXMgaW4gdjQuLi4KCj4gCj4gU2lnbmVkLW9mZi1i eTogSmV5a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyB8IDYwICsrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9j cnRjLmggfCAyMiArKysrKystLS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25z KCspLCAzOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9jcnRjLmMKPiBpbmRleCBlMDYxODQ3Li43YWIzMjBkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4gQEAgLTE2Myw5ICsxNjMsOSBAQCBzdGF0aWMgdm9p ZCBfZHB1X2NydGNfcHJvZ3JhbV9sbV9vdXRwdXRfcm9pKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiAgCWNydGNfc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gIAo+ICAJ bG1faG9yaXpfcG9zaXRpb24gPSAwOwo+IC0JZm9yIChsbV9pZHggPSAwOyBsbV9pZHggPCBkcHVf Y3J0Yy0+bnVtX21peGVyczsgbG1faWR4KyspIHsKPiArCWZvciAobG1faWR4ID0gMDsgbG1faWR4 IDwgY3J0Y19zdGF0ZS0+bnVtX21peGVyczsgbG1faWR4KyspIHsKPiAgCQljb25zdCBzdHJ1Y3Qg ZHJtX3JlY3QgKmxtX3JvaSA9ICZjcnRjX3N0YXRlLT5sbV9ib3VuZHNbbG1faWR4XTsKPiAtCQlz dHJ1Y3QgZHB1X2h3X21peGVyICpod19sbSA9IGRwdV9jcnRjLT5taXhlcnNbbG1faWR4XS5od19s bTsKPiArCQlzdHJ1Y3QgZHB1X2h3X21peGVyICpod19sbSA9IGNydGNfc3RhdGUtPm1peGVyc1ts bV9pZHhdLmh3X2xtOwo+ICAJCXN0cnVjdCBkcHVfaHdfbWl4ZXJfY2ZnIGNmZzsKPiAgCj4gIAkJ aWYgKCFsbV9yb2kgfHwgIWRybV9yZWN0X3Zpc2libGUobG1fcm9pKSkKPiBAQCAtMjQ2LDcgKzI0 Niw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cF9taXhlcihzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAkJCQkJICAgZmIgPyBmYi0+bW9kaWZpZXIgOiAwKTsKPiAgCj4gIAkJ LyogYmxlbmQgY29uZmlnIHVwZGF0ZSAqLwo+IC0JCWZvciAobG1faWR4ID0gMDsgbG1faWR4IDwg ZHB1X2NydGMtPm51bV9taXhlcnM7IGxtX2lkeCsrKSB7Cj4gKwkJZm9yIChsbV9pZHggPSAwOyBs bV9pZHggPCBjc3RhdGUtPm51bV9taXhlcnM7IGxtX2lkeCsrKSB7Cj4gIAkJCV9kcHVfY3J0Y19z ZXR1cF9ibGVuZF9jZmcobWl4ZXIgKyBsbV9pZHgsCj4gIAkJCQkJCXBzdGF0ZSwgZm9ybWF0KTsK PiAgCj4gQEAgLTI3MCw3ICsyNzAsNyBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfYmxlbmRfc2V0 dXBfbWl4ZXIoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICBzdGF0aWMgdm9pZCBfZHB1X2NydGNf YmxlbmRfc2V0dXAoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHB1X2Ny dGMgKmRwdV9jcnRjOwo+IC0Jc3RydWN0IGRwdV9jcnRjX3N0YXRlICpkcHVfY3J0Y19zdGF0ZTsK PiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+ICAJc3RydWN0IGRwdV9jcnRjX21p eGVyICptaXhlcjsKPiAgCXN0cnVjdCBkcHVfaHdfY3RsICpjdGw7Cj4gIAlzdHJ1Y3QgZHB1X2h3 X21peGVyICpsbTsKPiBAQCAtMjgxLDE3ICsyODEsMTcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRj X2JsZW5kX3NldHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQlyZXR1cm47Cj4gIAo+ICAJ ZHB1X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPiAtCWRwdV9jcnRjX3N0YXRlID0gdG9fZHB1 X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+IC0JbWl4ZXIgPSBkcHVfY3J0Yy0+bWl4ZXJzOwo+ ICsJY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICsJbWl4ZXIgPSBj c3RhdGUtPm1peGVyczsKPiAgCj4gIAlEUFVfREVCVUcoIiVzXG4iLCBkcHVfY3J0Yy0+bmFtZSk7 Cj4gIAo+IC0JaWYgKGRwdV9jcnRjLT5udW1fbWl4ZXJzID4gQ1JUQ19EVUFMX01JWEVSUykgewo+ IC0JCURQVV9FUlJPUigiaW52YWxpZCBudW1iZXIgbWl4ZXJzOiAlZFxuIiwgZHB1X2NydGMtPm51 bV9taXhlcnMpOwo+ICsJaWYgKGNzdGF0ZS0+bnVtX21peGVycyA+IENSVENfRFVBTF9NSVhFUlMp IHsKClRoaXMgaXMgbm90IHBvc3NpYmxlLgoKPiArCQlEUFVfRVJST1IoImludmFsaWQgbnVtYmVy IG1peGVyczogJWRcbiIsIGNzdGF0ZS0+bnVtX21peGVycyk7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgaSsrKSB7Cj4gKwlm b3IgKGkgPSAwOyBpIDwgY3N0YXRlLT5udW1fbWl4ZXJzOyBpKyspIHsKPiAgCQlpZiAoIW1peGVy W2ldLmh3X2xtIHx8ICFtaXhlcltpXS5od19jdGwpIHsKPiAgCQkJRFBVX0VSUk9SKCJpbnZhbGlk IGxtIG9yIGN0bCBhc3NpZ25lZCB0byBtaXhlclxuIik7Cj4gIAkJCXJldHVybjsKPiBAQCAtMzA4 LDcgKzMwOCw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAo+ICAJX2RwdV9jcnRjX2JsZW5kX3NldHVwX21peGVyKGNydGMsIGRw dV9jcnRjLCBtaXhlcik7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4 ZXJzOyBpKyspIHsKPiArCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7IGkrKykg ewo+ICAJCWN0bCA9IG1peGVyW2ldLmh3X2N0bDsKPiAgCQlsbSA9IG1peGVyW2ldLmh3X2xtOwo+ ICAKPiBAQCAtNTMwLDcgKzUzMCw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhl cl9mb3JfZW5jb2RlcigKPiAgCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJc3RydWN0IGRy bV9lbmNvZGVyICplbmMpCj4gIHsKPiAtCXN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGMgPSB0b19k cHVfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9fZHB1 X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMgPSBf ZHB1X2NydGNfZ2V0X2ttcyhjcnRjKTsKPiAgCXN0cnVjdCBkcHVfcm0gKnJtID0gJmRwdV9rbXMt PnJtOwo+ICAJc3RydWN0IGRwdV9jcnRjX21peGVyICptaXhlcjsKPiBAQCAtNTQyLDggKzU0Miw4 IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcl9mb3JfZW5jb2RlcigKPiAgCWRw dV9ybV9pbml0X2h3X2l0ZXIoJmN0bF9pdGVyLCBlbmMtPmJhc2UuaWQsIERQVV9IV19CTEtfQ1RM KTsKPiAgCj4gIAkvKiBTZXQgdXAgYWxsIHRoZSBtaXhlcnMgYW5kIGN0bHMgcmVzZXJ2ZWQgYnkg dGhpcyBlbmNvZGVyICovCj4gLQlmb3IgKGkgPSBkcHVfY3J0Yy0+bnVtX21peGVyczsgaSA8IEFS UkFZX1NJWkUoZHB1X2NydGMtPm1peGVycyk7IGkrKykgewo+IC0JCW1peGVyID0gJmRwdV9jcnRj LT5taXhlcnNbaV07Cj4gKwlmb3IgKGkgPSBjc3RhdGUtPm51bV9taXhlcnM7IGkgPCBBUlJBWV9T SVpFKGNzdGF0ZS0+bWl4ZXJzKTsgaSsrKSB7Cj4gKwkJbWl4ZXIgPSAmY3N0YXRlLT5taXhlcnNb aV07Cj4gIAo+ICAJCWlmICghZHB1X3JtX2dldF9odyhybSwgJmxtX2l0ZXIpKQo+ICAJCQlicmVh azsKPiBAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhl cl9mb3JfZW5jb2RlcigKPiAgCj4gIAkJbWl4ZXItPmVuY29kZXIgPSBlbmM7Cj4gIAo+IC0JCWRw dV9jcnRjLT5udW1fbWl4ZXJzKys7Cj4gKwkJY3N0YXRlLT5udW1fbWl4ZXJzKys7Cj4gIAkJRFBV X0RFQlVHKCJzZXR1cCBtaXhlciAlZDogbG0gJWRcbiIsCj4gIAkJCQlpLCBtaXhlci0+aHdfbG0t PmlkeCAtIExNXzApOwo+ICAJCURQVV9ERUJVRygic2V0dXAgbWl4ZXIgJWQ6IGN0bCAlZFxuIiwK PiBAQCAtNTc5LDExICs1NzksMTEgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVy X2Zvcl9lbmNvZGVyKAo+ICBzdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJzKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YyA9IHRv X2RwdV9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19k cHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYzsK PiAgCj4gLQlkcHVfY3J0Yy0+bnVtX21peGVycyA9IDA7Cj4gLQlkcHVfY3J0Yy0+bWl4ZXJzX3N3 YXBwZWQgPSBmYWxzZTsKPiAtCW1lbXNldChkcHVfY3J0Yy0+bWl4ZXJzLCAwLCBzaXplb2YoZHB1 X2NydGMtPm1peGVycykpOwo+ICsJY3N0YXRlLT5udW1fbWl4ZXJzID0gMDsKPiArCW1lbXNldChj c3RhdGUtPm1peGVycywgMCwgc2l6ZW9mKGNzdGF0ZS0+bWl4ZXJzKSk7CgpXaHkgaXMgdGhpcyBu ZWNlc3Nhcnk/Cgo+ICAKPiAgCW11dGV4X2xvY2soJmRwdV9jcnRjLT5jcnRjX2xvY2spOwo+ICAJ LyogQ2hlY2sgZm9yIG1peGVycyBvbiBhbGwgZW5jb2RlcnMgYXR0YWNoZWQgdG8gdGhpcyBjcnRj ICovCj4gQEAgLTYxOCw3ICs2MTgsNyBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbG1f Ym91bmRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCWNydGNfc3BsaXRfd2lkdGggPSBfZHB1 X2NydGNfZ2V0X21peGVyX3dpZHRoKGRwdV9jcnRjLCBjc3RhdGUsCj4gIAkJCQkJCSAgICBhZGpf bW9kZSk7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyBpKysp IHsKPiArCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7IGkrKykgewo+ICAJCXN0 cnVjdCBkcm1fcmVjdCAqciA9ICZjc3RhdGUtPmxtX2JvdW5kc1tpXTsKPiAgCQlyLT54MSA9IGNy dGNfc3BsaXRfd2lkdGggKiBpOwo+ICAJCXItPnkxID0gMDsKPiBAQCAtNjM1LDYgKzYzNSw3IEBA IHN0YXRpYyB2b2lkIGRwdV9jcnRjX2F0b21pY19iZWdpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gIAkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBk cHVfY3J0YyAqZHB1X2NydGM7Cj4gKwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKPiAg CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7 Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IEBAIC02NTQsMTAgKzY1NSwxMSBAQCBzdGF0aWMg dm9pZCBkcHVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJRFBV X0RFQlVHKCJjcnRjJWRcbiIsIGNydGMtPmJhc2UuaWQpOwo+ICAKPiAgCWRwdV9jcnRjID0gdG9f ZHB1X2NydGMoY3J0Yyk7Cj4gKwljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0 ZSk7Cj4gIAlkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzbW11X3N0YXRlID0gJmRwdV9jcnRjLT5zbW11 X3N0YXRlOwo+ICAKPiAtCWlmICghZHB1X2NydGMtPm51bV9taXhlcnMpIHsKPiArCWlmICghY3N0 YXRlLT5udW1fbWl4ZXJzKSB7Cj4gIAkJX2RwdV9jcnRjX3NldHVwX21peGVycyhjcnRjKTsKPiAg CQlfZHB1X2NydGNfc2V0dXBfbG1fYm91bmRzKGNydGMsIGNydGMtPnN0YXRlKTsKPiAgCX0KPiBA QCAtNjg0LDcgKzY4Niw3IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2F0b21pY19iZWdpbihzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkgKiBpdCBtZWFucyB3ZSBhcmUgdHJ5aW5nIHRvIGZsdXNo IGEgQ1JUQyB3aG9zZSBzdGF0ZSBpcyBkaXNhYmxlZDoKPiAgCSAqIG5vdGhpbmcgZWxzZSBuZWVk cyB0byBiZSBkb25lLgo+ICAJICovCj4gLQlpZiAodW5saWtlbHkoIWRwdV9jcnRjLT5udW1fbWl4 ZXJzKSkKPiArCWlmICh1bmxpa2VseSghY3N0YXRlLT5udW1fbWl4ZXJzKSkKPiAgCQlyZXR1cm47 Cj4gIAo+ICAJX2RwdV9jcnRjX2JsZW5kX3NldHVwKGNydGMpOwo+IEBAIC03NDgsNyArNzUwLDcg QEAgc3RhdGljIHZvaWQgZHB1X2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlpbmcgdG8gZmx1c2ggYSBDUlRDIHdob3NlIHN0 YXRlIGlzIGRpc2FibGVkOgo+ICAJICogbm90aGluZyBlbHNlIG5lZWRzIHRvIGJlIGRvbmUuCj4g IAkgKi8KPiAtCWlmICh1bmxpa2VseSghZHB1X2NydGMtPm51bV9taXhlcnMpKQo+ICsJaWYgKHVu bGlrZWx5KCFjc3RhdGUtPm51bV9taXhlcnMpKQo+ICAJCXJldHVybjsKPiAgCj4gIAkvKgo+IEBA IC04NjMsNyArODY1LDcgQEAgdm9pZCBkcHVfY3J0Y19jb21taXRfa2lja29mZihzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAkgKiBpdCBtZWFucyB3ZSBhcmUgdHJ5aW5nIHRvIHN0YXJ0IGEgQ1JU QyB3aG9zZSBzdGF0ZSBpcyBkaXNhYmxlZDoKPiAgCSAqIG5vdGhpbmcgZWxzZSBuZWVkcyB0byBi ZSBkb25lLgo+ICAJICovCj4gLQlpZiAodW5saWtlbHkoIWRwdV9jcnRjLT5udW1fbWl4ZXJzKSkK PiArCWlmICh1bmxpa2VseSghY3N0YXRlLT5udW1fbWl4ZXJzKSkKPiAgCQlyZXR1cm47Cj4gIAo+ ICAJRFBVX0FUUkFDRV9CRUdJTigiY3J0Y19jb21taXQiKTsKPiBAQCAtMTA5NywxMiArMTA5OSwx NCBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19oYW5kbGVfcG93ZXJfZXZlbnQodTMyIGV2ZW50X3R5 cGUsIHZvaWQgKmFyZykKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGFyZzsKPiAgCXN0cnVj dCBkcHVfY3J0YyAqZHB1X2NydGM7Cj4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4g KwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKPiAgCj4gIAlpZiAoIWNydGMpIHsKPiAg CQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xuIik7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAJZHB1 X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPiArCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRl KGRwdV9jcnRjLT5iYXNlLnN0YXRlKTsKPiAgCj4gIAltdXRleF9sb2NrKCZkcHVfY3J0Yy0+Y3J0 Y19sb2NrKTsKPiAgCj4gQEAgLTExOTcsOSArMTIwMSw4IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRj X2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCWRwdV9wb3dlcl9oYW5kbGVfdW5y ZWdpc3Rlcl9ldmVudChkcHVfY3J0Yy0+cGhhbmRsZSwKPiAgCQkJCWRwdV9jcnRjLT5wb3dlcl9l dmVudCk7Cj4gIAo+IC0JbWVtc2V0KGRwdV9jcnRjLT5taXhlcnMsIDAsIHNpemVvZihkcHVfY3J0 Yy0+bWl4ZXJzKSk7Cj4gLQlkcHVfY3J0Yy0+bnVtX21peGVycyA9IDA7Cj4gLQlkcHVfY3J0Yy0+ bWl4ZXJzX3N3YXBwZWQgPSBmYWxzZTsKPiArCW1lbXNldChjc3RhdGUtPm1peGVycywgMCwgc2l6 ZW9mKGNzdGF0ZS0+bWl4ZXJzKSk7CgpTYW1lIHF1ZXN0aW9uIGhlcmUsIHdoeSBpcyB0aGlzIG5l Y2Vzc2FyeT8KCj4gKwljc3RhdGUtPm51bV9taXhlcnMgPSAwOwo+ICAKPiAgCS8qIGRpc2FibGUg Y2xrICYgYncgY29udHJvbCB1bnRpbCBjbGsgJiBidyBwcm9wZXJ0aWVzIGFyZSBzZXQgKi8KPiAg CWNzdGF0ZS0+YndfY29udHJvbCA9IGZhbHNlOwo+IEBAIC0xNTQ3LDYgKzE1NTAsOCBAQCBzdGF0 aWMgaW50IF9kcHVfZGVidWdmc19zdGF0dXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQg KmRhdGEpCj4gIAo+ICAJZHB1X2NydGMgPSBzLT5wcml2YXRlOwo+ICAJY3J0YyA9ICZkcHVfY3J0 Yy0+YmFzZTsKPiArCj4gKwlkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgTlVMTCk7CgpX aGVuIEkgc3VnZ2VzdGVkIHRoaXMsIEkgd2FzIGhvcGluZyB5b3UnZCBwdXQgaXQgaW4gYSBzZXBh cmF0ZSBwYXRjaC4KQWRkaXRpb25hbGx5LCB5b3UnbGwgcHJvYmFibHkgd2FudCBtb2Rlc2V0X2xv Y2tfYWxsIGluc3RlYWQuCgo+ICAJY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3Rh dGUpOwo+ICAKPiAgCW11dGV4X2xvY2soJmRwdV9jcnRjLT5jcnRjX2xvY2spOwo+IEBAIC0xNTU4 LDggKzE1NjMsOCBAQCBzdGF0aWMgaW50IF9kcHVfZGVidWdmc19zdGF0dXNfc2hvdyhzdHJ1Y3Qg c2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpCj4gIAo+ICAJc2VxX3B1dHMocywgIlxuIik7Cj4gIAo+ IC0JZm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyArK2kpIHsKPiAtCQltID0g JmRwdV9jcnRjLT5taXhlcnNbaV07Cj4gKwlmb3IgKGkgPSAwOyBpIDwgY3N0YXRlLT5udW1fbWl4 ZXJzOyArK2kpIHsKPiArCQltID0gJmNzdGF0ZS0+bWl4ZXJzW2ldOwo+ICAJCWlmICghbS0+aHdf bG0pCj4gIAkJCXNlcV9wcmludGYocywgIlx0bWl4ZXJbJWRdIGhhcyBubyBsbVxuIiwgaSk7Cj4g IAkJZWxzZSBpZiAoIW0tPmh3X2N0bCkKPiBAQCAtMTYzOSw2ICsxNjQ0LDcgQEAgc3RhdGljIGlu dCBfZHB1X2RlYnVnZnNfc3RhdHVzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRh KQo+ICAJc2VxX3ByaW50ZihzLCAidmJsYW5rX2VuYWJsZTolZFxuIiwgZHB1X2NydGMtPnZibGFu a19yZXF1ZXN0ZWQpOwo+ICAKPiAgCW11dGV4X3VubG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7 Cj4gKwlkcm1fbW9kZXNldF91bmxvY2soJmNydGMtPm11dGV4KTsKPiAgCj4gIAlyZXR1cm4gMDsK PiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0 Yy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAo+IGluZGV4IDVl NGRjNWMuLjdhYTc3MmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2NydGMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9j cnRjLmgKPiBAQCAtMTIxLDExICsxMjEsNiBAQCBzdHJ1Y3QgZHB1X2NydGNfZnJhbWVfZXZlbnQg ewo+ICAgKiBzdHJ1Y3QgZHB1X2NydGMgLSB2aXJ0dWFsaXplZCBDUlRDIGRhdGEgc3RydWN0dXJl Cj4gICAqIEBiYXNlICAgICAgICAgIDogQmFzZSBkcm0gY3J0YyBzdHJ1Y3R1cmUKPiAgICogQG5h bWUgICAgICAgICAgOiBBU0NJSSBkZXNjcmlwdGlvbiBvZiB0aGlzIGNydGMKPiAtICogQG51bV9j dGxzICAgICAgOiBOdW1iZXIgb2YgY3RsIHBhdGhzIGluIHVzZQo+IC0gKiBAbnVtX21peGVycyAg ICA6IE51bWJlciBvZiBtaXhlcnMgaW4gdXNlCj4gLSAqIEBtaXhlcnNfc3dhcHBlZDogV2hldGhl ciB0aGUgbWl4ZXJzIGhhdmUgYmVlbiBzd2FwcGVkIGZvciBsZWZ0L3JpZ2h0IHVwZGF0ZQo+IC0g KiAgICAgICAgICAgICAgICAgIGVzcGVjaWFsbHkgaW4gdGhlIGNhc2Ugb2YgRFNDIE1lcmdlLgo+ IC0gKiBAbWl4ZXJzICAgICAgICA6IExpc3Qgb2YgYWN0aXZlIG1peGVycwo+ICAgKiBAZXZlbnQg ICAgICAgICA6IFBvaW50ZXIgdG8gbGFzdCByZWNlaXZlZCBkcm0gdmJsYW5rIGV2ZW50LiBJZiB0 aGVyZSBpcyBhCj4gICAqICAgICAgICAgICAgICAgICAgcGVuZGluZyB2YmxhbmsgZXZlbnQsIHRo aXMgd2lsbCBiZSBub24tbnVsbC4KPiAgICogQHZzeW5jX2NvdW50ICAgOiBSdW5uaW5nIGNvdW50 IG9mIHJlY2VpdmVkIHZzeW5jIGV2ZW50cwo+IEBAIC0xNjQsMTIgKzE1OSw2IEBAIHN0cnVjdCBk cHVfY3J0YyB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgYmFzZTsKPiAgCWNoYXIgbmFtZVtEUFVfQ1JU Q19OQU1FX1NJWkVdOwo+ICAKPiAtCS8qIEhXIFJlc291cmNlcyByZXNlcnZlZCBmb3IgdGhlIGNy dGMgKi8KPiAtCXUzMiBudW1fY3RsczsKPiAtCXUzMiBudW1fbWl4ZXJzOwo+IC0JYm9vbCBtaXhl cnNfc3dhcHBlZDsKPiAtCXN0cnVjdCBkcHVfY3J0Y19taXhlciBtaXhlcnNbQ1JUQ19EVUFMX01J WEVSU107Cj4gLQo+ICAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Cj4g IAl1MzIgdnN5bmNfY291bnQ7Cj4gIAo+IEBAIC0yMjEsNiArMjEwLDEwIEBAIHN0cnVjdCBkcHVf Y3J0YyB7Cj4gICAqIEBwcm9wZXJ0eV92YWx1ZXM6IEN1cnJlbnQgY3J0YyBwcm9wZXJ0eSB2YWx1 ZXMKPiAgICogQGlucHV0X2ZlbmNlX3RpbWVvdXRfbnMgOiBDYWNoZWQgaW5wdXQgZmVuY2UgdGlt ZW91dCwgaW4gbnMKPiAgICogQG5ld19wZXJmOiBuZXcgcGVyZm9ybWFuY2Ugc3RhdGUgYmVpbmcg cmVxdWVzdGVkCj4gKyAqIEBudW1fbWl4ZXJzICAgIDogTnVtYmVyIG9mIG1peGVycyBpbiB1c2UK PiArICogQG1peGVycyAgICAgICAgOiBMaXN0IG9mIGFjdGl2ZSBtaXhlcnMKPiArICogQG51bV9j dGxzICAgICAgOiBOdW1iZXIgb2YgY3RsIHBhdGhzIGluIHVzZQo+ICsgKiBAaHdfY3RscyAgICAg ICA6IExpc3Qgb2YgYWN0aXZlIGN0bCBwYXRocwo+ICAgKi8KPiAgc3RydWN0IGRwdV9jcnRjX3N0 YXRlIHsKPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBiYXNlOwo+IEBAIC0yMzIsNiArMjI1LDEz IEBAIHN0cnVjdCBkcHVfY3J0Y19zdGF0ZSB7Cj4gIAl1aW50NjRfdCBpbnB1dF9mZW5jZV90aW1l b3V0X25zOwo+ICAKPiAgCXN0cnVjdCBkcHVfY29yZV9wZXJmX3BhcmFtcyBuZXdfcGVyZjsKPiAr Cj4gKwkvKiBIVyBSZXNvdXJjZXMgcmVzZXJ2ZWQgZm9yIHRoZSBjcnRjICovCj4gKwl1MzIgbnVt X21peGVyczsKPiArCXN0cnVjdCBkcHVfY3J0Y19taXhlciBtaXhlcnNbQ1JUQ19EVUFMX01JWEVS U107Cj4gKwo+ICsJdTMyIG51bV9jdGxzOwo+ICsJc3RydWN0IGRwdV9od19jdGwgKmh3X2N0bHNb Q1JUQ19EVUFMX01JWEVSU107Cj4gIH07Cj4gIAo+ICAjZGVmaW5lIHRvX2RwdV9jcnRjX3N0YXRl KHgpIFwKPiAtLSAKPiBUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBt ZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAo+IGEgTGludXggRm91bmRhdGlvbiBDb2xs YWJvcmF0aXZlIFByb2plY3QKPiAKCi0tIApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBH b29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK