From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 4/5] drm/atomic: Fix freeing connector/plane state too early by tracking commits, v2. Date: Wed, 30 Aug 2017 17:10:43 +0300 Message-ID: <1874864.FOqojDSi1Q@avalon> References: <20170830121752.31291-1-maarten.lankhorst@linux.intel.com> <20170830121752.31291-5-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170830121752.31291-5-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGkgTWFhcnRlbiwKClRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoLgoKT24gV2VkbmVzZGF5LCAzMCBB dWd1c3QgMjAxNyAxNToxNzo1MSBFRVNUIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+IEN1cnJl bnRseSB3ZSBuZWF0bHkgdHJhY2sgdGhlIGNydGMgc3RhdGUsIGJ1dCBmb3JnZXQgdG8gbG9vayBh dAo+IHBsYW5lL2Nvbm5lY3RvciBzdGF0ZS4KPiAKPiBXaGVuIGRvaW5nIGEgbm9uYmxvY2tpbmcg bW9kZXNldCwgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYSBzZXRwcm9wCj4gYmVmb3JlIHRoZSBt b2Rlc2V0IGNvbXBsZXRlcywgdGhlIHNldHByb3Agd2lsbCBzZWUgdGhlIG1vZGVzZXRzIG5ldwo+ IHN0YXRlIGFzIHRoZSBvbGQgc3RhdGUgYW5kIGZyZWUgaXQuCj4gCj4gVGhpcyBoYXMgdG8gYmUg c29sdmVkIGJ5IHdhaXRpbmcgZm9yIGh3X2RvbmUgb24gdGhlIGNvbm5lY3RvciwgZXZlbgo+IGlm IGl0J3Mgbm90IGFzc2lnbmVkIHRvIGEgY3J0Yy4gV2hlbiBhIGNvbm5lY3RvciBpcyB1bmJvdW5k IHdlIHRha2UKPiB0aGUgbGFzdCBjcnRjIGNvbW1pdCwgYW5kIHdoZW4gaXQgc3RheXMgdW5ib3Vu ZCB3ZSBjcmVhdGUgYSBuZXcKPiBmYWtlIGNydGMgY29tbWl0IGZvciB0aGF0IGdldHMgc2lnbmFs ZWQgb24gaHdfZG9uZSBmb3IgYWxsIHRoZQo+IHBsYW5lcy9jb25uZWN0b3JzLgo+IAo+IFdlIHdh aXQgZm9yIGl0IHRoZSBzYW1lIHdheSBhcyB3ZSBkbyBmb3IgY3J0YydzLCB3aGljaCB3aWxsIG1h a2UKPiBzdXJlIHdlIG5ldmVyIHJ1biBpbnRvIGEgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uLgo+ IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBPbmx5IGNyZWF0ZSBhIHNpbmdsZSBkaXNhYmxlIGNv bW1pdC4gKGRhbnZldCkKPiAtIEZpeCBsZWFrIGluIGludGVsX2xlZ2FjeV9jdXJzb3JfdXBkYXRl Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3Jz dEBsaW51eC5pbnRlbC5jb20+Cj4gVGVzdGNhc2U6IGttc19hdG9taWNfdHJhbnNpdGlvbi5wbGFu ZS11c2UtYWZ0ZXItbm9uYmxvY2tpbmctdW5iaW5kKgo+IENjOiBMYXVyZW50IFBpbmNoYXJ0IDxs YXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljLmMgICAgICAgICB8ICAgNCArCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jICB8IDE1NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgIDIgKwo+ICBpbmNsdWRlL2Ry bS9kcm1fYXRvbWljLmggICAgICAgICAgICAgfCAgMTIgKysrCj4gIGluY2x1ZGUvZHJtL2RybV9j b25uZWN0b3IuaCAgICAgICAgICB8ICAgNyArKwo+ICBpbmNsdWRlL2RybS9kcm1fcGxhbmUuaCAg ICAgICAgICAgICAgfCAgIDcgKysKPiAgNiBmaWxlcyBjaGFuZ2VkLCAxODIgaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBpbmRleCAyY2NlNDhmMjAz ZTAuLjc1ZjVmNzRkZTliZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+IEBAIC0xOTIsNiArMTky LDEwIEBAIHZvaWQgZHJtX2F0b21pY19zdGF0ZV9kZWZhdWx0X2NsZWFyKHN0cnVjdAo+IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKSB9Cj4gIAlzdGF0ZS0+bnVtX3ByaXZhdGVfb2JqcyA9IDA7Cj4g Cj4gKwlpZiAoc3RhdGUtPmZha2VfY29tbWl0KSB7Cj4gKwkJZHJtX2NydGNfY29tbWl0X3B1dChz dGF0ZS0+ZmFrZV9jb21taXQpOwo+ICsJCXN0YXRlLT5mYWtlX2NvbW1pdCA9IE5VTEw7Cj4gKwl9 Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX3N0YXRlX2RlZmF1bHRfY2xlYXIpOwo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IGIv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgaW5kZXggOGNjYjhiNjUzNmMwLi4w MzRmNTYzZmIxMzAKPiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gQEAg LTE2NDQsNiArMTY0NCw0MCBAQCBzdGF0aWMgdm9pZCByZWxlYXNlX2NydGNfY29tbWl0KHN0cnVj dCBjb21wbGV0aW9uCj4gKmNvbXBsZXRpb24pIGRybV9jcnRjX2NvbW1pdF9wdXQoY29tbWl0KTsK PiAgfQo+IAo+ICtzdGF0aWMgdm9pZCBpbml0X2NvbW1pdChzdHJ1Y3QgZHJtX2NydGNfY29tbWl0 ICpjb21taXQsIHN0cnVjdCBkcm1fY3J0Ywo+ICpjcnRjKQo+ICt7CgpZb3UgY291bGQgYWxsb2Nh dGUgdGhlIGNvbW1pdCBpbiB0aGlzIGZ1bmN0aW9uIHRvbywgdGhlIGt6YWxsb2MoKSBpcyBjdXJy ZW50bHkgCmR1cGxpY2F0ZWQuIFRoZSBmdW5jdGlvbiBzaG91bGQgcHJvYmFibHkgYmUgY2FsbGVk IGFsbG9jX2NvbW1pdCgpIHRoZW4uCgo+ICsJaW5pdF9jb21wbGV0aW9uKCZjb21taXQtPmZsaXBf ZG9uZSk7Cj4gKwlpbml0X2NvbXBsZXRpb24oJmNvbW1pdC0+aHdfZG9uZSk7Cj4gKwlpbml0X2Nv bXBsZXRpb24oJmNvbW1pdC0+Y2xlYW51cF9kb25lKTsKPiArCUlOSVRfTElTVF9IRUFEKCZjb21t aXQtPmNvbW1pdF9lbnRyeSk7Cj4gKwlrcmVmX2luaXQoJmNvbW1pdC0+cmVmKTsKPiArCWNvbW1p dC0+Y3J0YyA9IGNydGM7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2NydGNfY29tbWl0 ICoKPiArZmFrZV9vcl9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAq Y29tbWl0Owo+ICsKPiArCWlmIChjcnRjKSB7Cj4gKwkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpu ZXdfY3J0Y19zdGF0ZTsKPiArCj4gKwkJbmV3X2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9u ZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gKwo+ICsJCWNvbW1pdCA9IG5ld19jcnRjX3N0 YXRlLT5jb21taXQ7Cj4gKwl9IGVsc2UgaWYgKCFzdGF0ZS0+ZmFrZV9jb21taXQpIHsKPiArCQlz dGF0ZS0+ZmFrZV9jb21taXQgPSBjb21taXQgPSBremFsbG9jKHNpemVvZigqY29tbWl0KSwgR0ZQ X0tFUk5FTCk7Cj4gKwkJaWYgKCFjb21taXQpCj4gKwkJCXJldHVybiBOVUxMOwo+ICsKPiArCQlp bml0X2NvbW1pdChjb21taXQsIE5VTEwpOwo+ICsJfSBlbHNlCj4gKwkJY29tbWl0ID0gc3RhdGUt PmZha2VfY29tbWl0Owo+ICsKPiArCWRybV9jcnRjX2NvbW1pdF9nZXQoY29tbWl0KTsKCkkgYmVs aWV2ZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIHJpZ2h0LiBUaGUgZG91YmxlIHJlZmVyZW5j ZSBpbiB0aGUgc2Vjb25kIApjYXNlIChrcmVmX2luaXQoKSB3aGVuIGluaXRpYWxpemluZyB0aGUg Y29tbWl0IGFuZCBkcm1fY3J0Y19jb21taXRfZ2V0KCkpIApzaG91bGQgbm90IGNhdXNlIGEgbGVh ay4gVGhlIGtyZWZfaW5pdCgpIHRha2VzIGEgcmVmZXJlbmNlIHRvIHN0b3JlIHRoZSBjb21taXQg CmluIHN0YXRlLT5mYWtlX2NvbW1pdCwgcmVsZWFzZWQgaW4gZHJtX2F0b21pY19zdGF0ZV9kZWZh dWx0X2NsZWFyKCksIGFuZCB0aGUgCmRybV9jcnRjX2NvbW1pdF9nZXQoKSB0YWtlcyBhIHJlZmVy ZW5jZSByZXR1cm5lZCBieSB0aGUgZnVuY3Rpb24sIHN0b3JlZCBpbiAKbmV3Xypfc3RhdGUtPmNv bW1pdCBieSB0aGUgY2FsbGVyLgoKVGhpcyBiZWluZyBzYWlkLCBJIHRoaW5rIHRoZSByZWZlcmVu Y2UgY291bnRpbmcgaXMgY29uZnVzaW5nLCBhcyBwcm92ZWQgYnkgCkRhbmllbCB0aGlua2luZyB0 aGVyZSB3YXMgYSBsZWFrIGhlcmUgKG9yIGJ5IG1lIHRoaW5raW5nIHRoZXJlJ3Mgbm8gbGVhayB3 aGlsZSAKdGhlcmUncyBvbmUgOi0pKS4gVG8gbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gY2xlYXJl ciwgSSBwcm9wb3NlIHR1cm5pbmcgdGhlIApkZWZpbml0aW9uIG9mIGRybV9jcnRjX2NvbW1pdF9n ZXQoKSB0bwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICoKZHJtX2NydGNf Y29tbWl0X2dldChzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpjb21taXQpCnsKCWtyZWZfZ2V0KCZj b21taXQtPnJlZik7CglyZXR1cm4gY29tbWl0Owp9CgphbmQgd3JpdGluZyB0aGlzIGZ1bmN0aW9u IGFzCgovKiBSZXR1cm4gYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBjb21taXQgb2JqZWN0ICovCnN0 YXRpYyBzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICoKZmFrZV9vcl9jcnRjX2NvbW1pdChzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKewoJc3RydWN0 IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0OwoKCWlmIChjcnRjKSB7CgkJc3RydWN0IGRybV9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKCgkJbmV3X2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dl dF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CgoJCWNvbW1pdCA9IG5ld19jcnRjX3N0YXRl LT5jb21taXQ7Cgl9IGVsc2UgewoJCWlmICghc3RhdGUtPmZha2VfY29tbWl0KQoJCQlzdGF0ZS0+ ZmFrZV9jb21taXQgPSBhbGxvY19jb21taXQoTlVMTCk7CgoJCWNvbW1pdCA9IHN0YXRlLT5mYWtl X2NvbW1pdDsKCX0KCglyZXR1cm4gZHJtX2NydGNfY29tbWl0X2dldChjb21taXQpOwp9Cgo+ICsJ cmV0dXJuIGNvbW1pdDsKPiArfQo+ICsKPiAgLyoqCj4gICAqIGRybV9hdG9taWNfaGVscGVyX3Nl dHVwX2NvbW1pdCAtIHNldHVwIHBvc3NpYmx5IG5vbmJsb2NraW5nIGNvbW1pdAo+ICAgKiBAc3Rh dGU6IG5ldyBtb2Rlc2V0IHN0YXRlIHRvIGJlIGNvbW1pdHRlZAo+IEBAIC0xNjkyLDYgKzE3MjYs MTAgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX3NldHVwX2NvbW1pdChzdHJ1Y3QKPiBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSwgewo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICAJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlOwo+ICsJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm47Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq b2xkX2Nvbm5fc3RhdGUsICpuZXdfY29ubl9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lOwo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLCAqbmV3X3Bs YW5lX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0Owo+ICAJaW50IGks IHJldDsKPiAKPiBAQCAtMTcwMCwxMiArMTczOCw3IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9z ZXR1cF9jb21taXQoc3RydWN0Cj4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsIGlmICghY29tbWl0 KQo+ICAJCQlyZXR1cm4gLUVOT01FTTsKPiAKPiAtCQlpbml0X2NvbXBsZXRpb24oJmNvbW1pdC0+ ZmxpcF9kb25lKTsKPiAtCQlpbml0X2NvbXBsZXRpb24oJmNvbW1pdC0+aHdfZG9uZSk7Cj4gLQkJ aW5pdF9jb21wbGV0aW9uKCZjb21taXQtPmNsZWFudXBfZG9uZSk7Cj4gLQkJSU5JVF9MSVNUX0hF QUQoJmNvbW1pdC0+Y29tbWl0X2VudHJ5KTsKPiAtCQlrcmVmX2luaXQoJmNvbW1pdC0+cmVmKTsK PiAtCQljb21taXQtPmNydGMgPSBjcnRjOwo+ICsJCWluaXRfY29tbWl0KGNvbW1pdCwgY3J0Yyk7 Cj4gCj4gIAkJbmV3X2NydGNfc3RhdGUtPmNvbW1pdCA9IGNvbW1pdDsKPiAKPiBAQCAtMTc0MSw2 ICsxNzc0LDM2IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQoc3RydWN0Cj4g ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsIGRybV9jcnRjX2NvbW1pdF9nZXQoY29tbWl0KTsKPiAg CX0KPiAKPiArCWZvcl9lYWNoX29sZG5ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm4s IG9sZF9jb25uX3N0YXRlLAo+IG5ld19jb25uX3N0YXRlLCBpKSB7Cj4gKwkJaWYgKG5ld19jb25u X3N0YXRlLT5jcnRjKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKG5vbmJsb2NrICYmIG9s ZF9jb25uX3N0YXRlLT5jb21taXQgJiYKPiArCQkgICAgIXRyeV93YWl0X2Zvcl9jb21wbGV0aW9u KCZvbGRfY29ubl9zdGF0ZS0+Y29tbWl0LT5mbGlwX2RvbmUpKQo+ICsJCQlyZXR1cm4gLUVCVVNZ OwoKZmxpcF9kb25lIG9ubHksIG5vdCBod19kb25lID8gQSBjb21tZW50IHRoYXQgZXhwbGFpbnMg d2h5IHdvdWxkIGJlIGhlbHBmdWwuCgo+ICsKPiArCQljb21taXQgPSBmYWtlX29yX2NydGNfY29t bWl0KHN0YXRlLCBvbGRfY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gKwkJaWYgKCFjb21taXQpCj4gKwkJ CXJldHVybiAtRU5PTUVNOwo+ICsKPiArCQluZXdfY29ubl9zdGF0ZS0+Y29tbWl0ID0gY29tbWl0 Owo+ICsJfQo+ICsKPiArCWZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxh bmUsIG9sZF9wbGFuZV9zdGF0ZSwKPiBuZXdfcGxhbmVfc3RhdGUsIGkpIHsKPiArCQlpZiAobmV3 X3BsYW5lX3N0YXRlLT5jcnRjKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKG5vbmJsb2Nr ICYmIG9sZF9wbGFuZV9zdGF0ZS0+Y29tbWl0ICYmCj4gKwkJICAgICF0cnlfd2FpdF9mb3JfY29t cGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT5jb21taXQtPmZsaXBfZG9uZSkpCj4gKwkJCXJldHVy biAtRUJVU1k7CgpTYW1lIGhlcmUuCgo+ICsJCWNvbW1pdCA9IGZha2Vfb3JfY3J0Y19jb21taXQo c3RhdGUsIG9sZF9wbGFuZV9zdGF0ZS0+Y3J0Yyk7Cj4gKwkJaWYgKCFjb21taXQpCj4gKwkJCXJl dHVybiAtRU5PTUVNOwo+ICsKPiArCQluZXdfcGxhbmVfc3RhdGUtPmNvbW1pdCA9IGNvbW1pdDsK PiArCX0KPiArCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf aGVscGVyX3NldHVwX2NvbW1pdCk7Cj4gQEAgLTE3NjEsNiArMTgyNCwxMCBAQCB2b2lkIGRybV9h dG9taWNfaGVscGVyX3dhaXRfZm9yX2RlcGVuZGVuY2llcyhzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0 YXRlICpvbGRfc3RhdGUpIHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZTsKPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9s ZF9jb25uX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0Owo+ICAJaW50 IGk7Cj4gIAlsb25nIHJldDsKPiBAQCAtMTc4NSw2ICsxODUyLDQ4IEBAIHZvaWQgZHJtX2F0b21p Y19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUg Km9sZF9zdGF0ZSkgRFJNX0VSUk9SKCJbQ1JUQzolZDolc10gZmxpcF9kb25lIHRpbWVkCj4gb3V0 XG4iLAo+ICAJCQkJICBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKPiAgCX0KPiArCj4gKwlm b3JfZWFjaF9vbGRfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubiwgb2xkX2Nvbm5f c3RhdGUsIGkpIHsKPiArCQljb21taXQgPSBvbGRfY29ubl9zdGF0ZS0+Y29tbWl0Owo+ICsKPiAr CQlpZiAoIWNvbW1pdCkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXJldCA9IHdhaXRfZm9yX2Nv bXBsZXRpb25fdGltZW91dCgmY29tbWl0LT5od19kb25lLAo+ICsJCQkJCQkgIDEwKkhaKTsKPiAr CQlpZiAocmV0ID09IDApCj4gKwkJCURSTV9FUlJPUigiW0NPTk5FQ1RPUjolZDolc10gaHdfZG9u ZSB0aW1lZCBvdXRcbiIsCj4gKwkJCQkgIGNvbm4tPmJhc2UuaWQsIGNvbm4tPm5hbWUpOwo+ICsK PiArCQkvKiBDdXJyZW50bHkgbm8gc3VwcG9ydCBmb3Igb3ZlcndyaXRpbmcgZmxpcHMsIGhlbmNl Cj4gKwkJICogc3RhbGwgZm9yIHByZXZpb3VzIG9uZSB0byBleGVjdXRlIGNvbXBsZXRlbHkuICov Cj4gKwkJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZjb21taXQtPmZsaXBfZG9u ZSwKPiArCQkJCQkJICAxMCpIWik7Cj4gKwkJaWYgKHJldCA9PSAwKQo+ICsJCQlEUk1fRVJST1Io IltDT05ORUNUT1I6JWQ6JXNdIGZsaXBfZG9uZSB0aW1lZCBvdXRcbiIsCj4gKwkJCQkgIGNvbm4t PmJhc2UuaWQsIGNvbm4tPm5hbWUpOwoKVGhlcmUncyBwcm9iYWJseSBzb21ldGhpbmcgSSBkb24n dCBnZXQsIGJ1dCBnaXZlbiB0aGF0IHRoZSBjb25uZWN0b3Igc3RhdGUgLQo+Y29tbWl0IHBvaW50 ZXIgaXMgb25seSBzZXQgZm9yIGNvbW1pdHMgdGhhdCBoYXZlIG5vIENSVEMsIGRvIHdlIGhhdmUg YSAKZ3VhcmFudGVlIHRoYXQgdGhlcmUgd2lsbCBiZSBhIHBhZ2UgZmxpcCB0byBiZSBzaWduYWxs ZWQgPyBDYW4ndCB3ZSBmb3IgCmluc3RhbmNlIGRpc2FibGUgYSBjb25uZWN0b3Igd2l0aG91dCBh IHBhZ2UgZmxpcCA/IE9yIHNldCBhIHByb3BlcnR5IG9uIGFuIAphbHJlYWR5IGRpc2FibGVkIGNv bm5lY3RvciA/Cgo+ICsJfQo+ICsKPiArCWZvcl9lYWNoX29sZF9wbGFuZV9pbl9zdGF0ZShvbGRf c3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsIGkpIHsKPiArCQljb21taXQgPSBvbGRfcGxh bmVfc3RhdGUtPmNvbW1pdDsKPiArCj4gKwkJaWYgKCFjb21taXQpCj4gKwkJCWNvbnRpbnVlOwo+ ICsKPiArCQlyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJmNvbW1pdC0+aHdfZG9u ZSwKPiArCQkJCQkJICAxMCpIWik7Cj4gKwkJaWYgKHJldCA9PSAwKQo+ICsJCQlEUk1fRVJST1Io IltQTEFORTolZDolc10gaHdfZG9uZSB0aW1lZCBvdXRcbiIsCj4gKwkJCQkgIHBsYW5lLT5iYXNl LmlkLCBwbGFuZS0+bmFtZSk7Cj4gKwo+ICsJCS8qIEN1cnJlbnRseSBubyBzdXBwb3J0IGZvciBv dmVyd3JpdGluZyBmbGlwcywgaGVuY2UKPiArCQkgKiBzdGFsbCBmb3IgcHJldmlvdXMgb25lIHRv IGV4ZWN1dGUgY29tcGxldGVseS4gKi8KPiArCQlyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3Rp bWVvdXQoJmNvbW1pdC0+ZmxpcF9kb25lLAo+ICsJCQkJCQkgIDEwKkhaKTsKPiArCQlpZiAocmV0 ID09IDApCj4gKwkJCURSTV9FUlJPUigiW1BMQU5FOiVkOiVzXSBmbGlwX2RvbmUgdGltZWQgb3V0 XG4iLAo+ICsJCQkJICBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUpOwo+ICsJfQo+ICB9Cj4g IEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKTsK PiAKPiBAQCAtMTgxOSw2ICsxOTI4LDExIEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 X2h3X2RvbmUoc3RydWN0Cj4gZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKSBXQVJOX09OKG5l d19jcnRjX3N0YXRlLT5ldmVudCk7Cj4gIAkJY29tcGxldGVfYWxsKCZjb21taXQtPmh3X2RvbmUp Owo+ICAJfQo+ICsKPiArCWlmIChvbGRfc3RhdGUtPmZha2VfY29tbWl0KSB7Cj4gKwkJY29tcGxl dGVfYWxsKCZvbGRfc3RhdGUtPmZha2VfY29tbWl0LT5od19kb25lKTsKPiArCQljb21wbGV0ZV9h bGwoJm9sZF9zdGF0ZS0+ZmFrZV9jb21taXQtPmZsaXBfZG9uZSk7Cj4gKwl9Cj4gIH0KPiAgRVhQ T1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9uZSk7Cj4gCj4gQEAgLTIy NDEsNiArMjM1NSwyOCBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdHJ1Y3QK PiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgaWYgKHJldCkKPiAgCQkJCXJldHVybiByZXQ7Cj4g IAkJfQo+ICsKCkEgY29tbWVudCB3b3VsZCBiZSBoZWxwZnVsIGhlcmUgdG9vLiBJbiBwYXJ0aWN1 bGFyIGV4cGxhaW5pbmcgd2h5IHlvdSB3YWl0IG9uIApod19kb25lIG9ubHkgaXNuJ3Qgc3RyYWln aHRmb3J3YXJkLgoKPiArCQlmb3JfZWFjaF9vbGRfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBj b25uZWN0b3IsIG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gKwkJCWNvbW1pdCA9IG9sZF9jb25uX3N0 YXRlLT5jb21taXQ7Cj4gKwo+ICsJCQlpZiAoIWNvbW1pdCkKPiArCQkJCWNvbnRpbnVlOwo+ICsK PiArCQkJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZjb21taXQtPmh3 X2RvbmUpOwo+ICsJCQlpZiAocmV0KQo+ICsJCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJ CWZvcl9lYWNoX29sZF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0 ZSwgaSkgewo+ICsJCQljb21taXQgPSBvbGRfcGxhbmVfc3RhdGUtPmNvbW1pdDsKPiArCj4gKwkJ CWlmICghY29tbWl0KQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlyZXQgPSB3YWl0X2Zvcl9j b21wbGV0aW9uX2ludGVycnVwdGlibGUoJmNvbW1pdC0+aHdfZG9uZSk7Cj4gKwkJCWlmIChyZXQp Cj4gKwkJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiAgCX0KPiAKPiAgCWZvcl9lYWNoX29sZG5ld19j b25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsCj4gbmV3 X2Nvbm5fc3RhdGUsIGkpIHsgQEAgLTMyMjMsNiArMzM1OSw3IEBAIHZvaWQKPiBfX2RybV9hdG9t aWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiBkcm1fZnJhbWVidWZmZXJfZ2V0KHN0YXRlLT5mYik7Cj4gCj4gIAlzdGF0ZS0+ZmVuY2UgPSBO VUxMOwo+ICsJc3RhdGUtPmNvbW1pdCA9IE5VTEw7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChfX2Ry bV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSk7Cj4gCj4gQEAgLTMyNjQsNiAr MzQwMSw5IEBAIHZvaWQgX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKHN0 cnVjdAo+IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gCj4gIAlpZiAoc3RhdGUtPmZlbmNlKQo+ ICAJCWRtYV9mZW5jZV9wdXQoc3RhdGUtPmZlbmNlKTsKPiArCj4gKwlpZiAoc3RhdGUtPmNvbW1p dCkKPiArCQlkcm1fY3J0Y19jb21taXRfcHV0KHN0YXRlLT5jb21taXQpOwo+ICB9Cj4gIEVYUE9S VF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKTsKPiAKPiBA QCAtMzM0Miw2ICszNDgyLDcgQEAgX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdAo+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgbWVtY3B5KHN0YXRl LCBjb25uZWN0b3ItPnN0YXRlLCBzaXplb2YoKnN0YXRlKSk7Cj4gIAlpZiAoc3RhdGUtPmNydGMp Cj4gIAkJZHJtX2Nvbm5lY3Rvcl9nZXQoY29ubmVjdG9yKTsKPiArCXN0YXRlLT5jb21taXQgPSBO VUxMOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf ZHVwbGljYXRlX3N0YXRlKTsKPiAKPiBAQCAtMzQ2OCw2ICszNjA5LDkgQEAgX19kcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZShzdHJ1Y3QKPiBkcm1fY29ubmVjdG9yX3N0 YXRlICpzdGF0ZSkgewo+ICAJaWYgKHN0YXRlLT5jcnRjKQo+ICAJCWRybV9jb25uZWN0b3JfcHV0 KHN0YXRlLT5jb25uZWN0b3IpOwo+ICsKPiArCWlmIChzdGF0ZS0+Y29tbWl0KQo+ICsJCWRybV9j cnRjX2NvbW1pdF9wdXQoc3RhdGUtPmNvbW1pdCk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChfX2Ry bV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlKTsKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgaW5kZXggM2YzY2I5NmFhMTFlLi43MGNlMDI3NTMxNzcK PiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTMxMDksOCAr MTMxMDksMTAgQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gCj4gIAkvKiBTd2FwIHBsYW5lIHN0YXRlICovCj4gIAluZXdfcGxhbmVfc3RhdGUt PmZlbmNlID0gb2xkX3BsYW5lX3N0YXRlLT5mZW5jZTsKPiArCW5ld19wbGFuZV9zdGF0ZS0+Y29t bWl0ID0gb2xkX3BsYW5lX3N0YXRlLT5jb21taXQ7Cj4gIAkqdG9faW50ZWxfcGxhbmVfc3RhdGUo b2xkX3BsYW5lX3N0YXRlKSA9Cj4gKnRvX2ludGVsX3BsYW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0 ZSk7IG5ld19wbGFuZV9zdGF0ZS0+ZmVuY2UgPSBOVUxMOwo+ICsJbmV3X3BsYW5lX3N0YXRlLT5j b21taXQgPSBOVUxMOwo+ICAJbmV3X3BsYW5lX3N0YXRlLT5mYiA9IG9sZF9mYjsKPiAgCXRvX2lu dGVsX3BsYW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0ZSktPnZtYSA9IE5VTEw7Cj4gCj4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaCBiL2luY2x1ZGUvZHJtL2RybV9hdG9taWMu aAo+IGluZGV4IGU3NmQ5Zjk1YzE5MS4uYmE5NzZmNGE0OTM4IDEwMDY0NAo+IC0tLSBhL2luY2x1 ZGUvZHJtL2RybV9hdG9taWMuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaAo+IEBA IC0yMzYsNiArMjM2LDE4IEBAIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlIHsKPiAgCXN0cnVjdCBk cm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqYWNxdWlyZV9jdHg7Cj4gCj4gIAkvKioKPiArCSAqIEBm YWtlX2NvbW1pdDoKPiArCSAqCj4gKwkgKiBVc2VkIGZvciBzaWduYWxpbmcgdW5ib3VuZCBwbGFu ZXMvY29ubmVjdG9ycy4KPiArCSAqIFdoZW4gYSBjb25uZWN0b3Igb3IgcGxhbmUgaXMgbm90IGJv dW5kIHRvIGFueSBDUlRDLCBpdCdzIHN0aWxsCj4gaW1wb3J0YW50Cj4gKwkgKiB0byBwcmVzZXJ2 ZSBsaW5lYXJpdHkgdG8gcHJldmVudCB0aGUgYXRvbWljIHN0YXRlcyBmcm9tIGJlaW5nIGZyZWVk IHRvCj4gZWFybHkuCj4gKwkgKgo+ICsJICogVGhpcyBjb21taXQgKGlmIHNldCkgaXMgbm90IGJv dW5kIHRvIGFueSBjcnRjLCBidXQgd2lsbCBiZSBjb21wbGV0ZWQKPiB3aGVuCj4gKwkgKiBkcm1f YXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9uZSgpIGlzIGNhbGxlZC4KPiArCSAqLwo+ICsJc3Ry dWN0IGRybV9jcnRjX2NvbW1pdCAqZmFrZV9jb21taXQ7Cj4gKwo+ICsJLyoqCj4gIAkgKiBAY29t bWl0X3dvcms6Cj4gIAkgKgo+ICAJICogV29yayBpdGVtIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IHRo ZSBkcml2ZXIgb3IgaGVscGVycyB0byBleGVjdXRlIHRoZQo+IGRpZmYgLS1naXQgYS9pbmNsdWRl L2RybS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiBpbmRl eCBlYThkYTQwMWM5M2MuLjg4Mzc2NDlkMTZlOCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fY29ubmVjdG9yLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiBAQCAt MzQ3LDYgKzM0NywxMyBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSB7Cj4gCj4gIAlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gCj4gKwkvKioKPiArCSAqIEBjb21taXQ6IFRy YWNrcyB0aGUgcGVuZGluZyBjb21taXQgdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZQo+IGNvbmRp dGlvbnMuCj4gKwkgKgo+ICsJICogSXMgb25seSBzZXQgd2hlbiBAY3J0YyBpcyBOVUxMLgo+ICsJ ICovCj4gKwlzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpjb21taXQ7Cj4gKwo+ICAJc3RydWN0IGRy bV90dl9jb25uZWN0b3Jfc3RhdGUgdHY7Cj4gCj4gIAkvKioKPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX3BsYW5lLmggYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+IGluZGV4IDczZjkw ZjlkMDU3Zi4uN2Q5NjExNmZkNGM0IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9wbGFu ZS5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiBAQCAtMTIzLDYgKzEyMywxMyBA QCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHsKPiAgCSAqLwo+ICAJYm9vbCB2aXNpYmxlOwo+IAo+ ICsJLyoqCj4gKwkgKiBAY29tbWl0OiBUcmFja3MgdGhlIHBlbmRpbmcgY29tbWl0IHRvIHByZXZl bnQgdXNlLWFmdGVyLWZyZWUKPiBjb25kaXRpb25zLgo+ICsJICoKPiArCSAqIElzIG9ubHkgc2V0 IHdoZW4gQGNydGMgaXMgTlVMTC4KPiArCSAqLwo+ICsJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAq Y29tbWl0Owo+ICsKPiAgCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiAgfTsKCgot LSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hhcnQKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=