From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 12/15] drm/modes: add connector reference counting. Date: Fri, 22 Apr 2016 11:24:09 +0200 Message-ID: <20160422092409.GS2510@phenom.ffwll.local> References: <1460697046-23781-1-git-send-email-airlied@gmail.com> <1460697046-23781-13-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0189E6E209 for ; Fri, 22 Apr 2016 09:24:13 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id e201so2641626wme.2 for ; Fri, 22 Apr 2016 02:24:13 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1460697046-23781-13-git-send-email-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dave Airlie Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBcHIgMTUsIDIwMTYgYXQgMDM6MTA6NDNQTSArMTAwMCwgRGF2ZSBBaXJsaWUgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KPiAKPiBUaGlzIHVz ZXMgdGhlIHByZXZpb3VzIGNoYW5nZXMgdG8gYWRkIHJlZmVyZW5jZSBjb3VudGluZyB0byB0aGUK PiBkcm0gY29ubmVjdG9yIG9iamVjdHMuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUg PGFpcmxpZWRAcmVkaGF0LmNvbT4KCkJ1bmNoIG9mIG5pdHBpY2tzIGluIHRoaXMgb25lLiBBbmQg SSBub3RpY2VkIGEgcHJldHR5IHNlcmlvdXMgaXNzdWUgd2UKaGF2ZSB3aXRoIHRoZSBnZW5lcmlj IHByb3AgY29kZSBzaW5jZSBmb3JldmVyLiBJJ2xsIHdyaXRlIHRlc3RjYXNlcyBhbmQKYnVnZml4 ZXMgZm9yIHRoYXQgKGhvcGVmdWxseSB0b2RheSkuCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pYy5jICAgIHwgMTkgKysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX2NydGMuYyAgICAgIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgfCAzOCArKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAg ICAgICAgIHwgMTMgKysrKysrKysrKysrLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlv bnMoKyksIDQ0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+IGluZGV4IDhlZTFk YjguLjlkNWUzYzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtMTU0LDYgKzE1NCw3IEBA IHZvaWQgZHJtX2F0b21pY19zdGF0ZV9kZWZhdWx0X2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiAgCQkJCQkJICAgICAgIHN0YXRlLT5jb25uZWN0b3Jfc3RhdGVzW2ldKTsK PiAgCQlzdGF0ZS0+Y29ubmVjdG9yc1tpXSA9IE5VTEw7Cj4gIAkJc3RhdGUtPmNvbm5lY3Rvcl9z dGF0ZXNbaV0gPSBOVUxMOwo+ICsJCWRybV9jb25uZWN0b3JfdW5yZWZlcmVuY2UoY29ubmVjdG9y KTsKPiAgCX0KPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgY29uZmlnLT5udW1fY3J0YzsgaSsrKSB7 Cj4gQEAgLTkyNCw2ICs5MjUsNyBAQCBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJaWYgKCFjb25uZWN0b3Jfc3RhdGUpCj4g IAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAo+ICsJZHJtX2Nvbm5lY3Rvcl9yZWZlcmVu Y2UoY29ubmVjdG9yKTsKPiAgCXN0YXRlLT5jb25uZWN0b3Jfc3RhdGVzW2luZGV4XSA9IGNvbm5l Y3Rvcl9zdGF0ZTsKPiAgCXN0YXRlLT5jb25uZWN0b3JzW2luZGV4XSA9IGNvbm5lY3RvcjsKPiAg CWNvbm5lY3Rvcl9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKPiBAQCAtMTYxNCwxMiArMTYxNiwxOSBA QCByZXRyeToKPiAgCQl9Cj4gIAo+ICAJCW9iaiA9IGRybV9tb2RlX29iamVjdF9maW5kKGRldiwg b2JqX2lkLCBEUk1fTU9ERV9PQkpFQ1RfQU5ZKTsKPiAtCQlpZiAoIW9iaiB8fCAhb2JqLT5wcm9w ZXJ0aWVzKSB7Cj4gKwkJaWYgKCFvYmopIHsKPiArCQkJcmV0ID0gLUVOT0VOVDsKPiArCQkJZ290 byBvdXQ7Cj4gKwkJfQo+ICsKPiArCQlpZiAoIW9iai0+cHJvcGVydGllcykgewo+ICsJCQlkcm1f bW9kZV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKPiAgCQkJcmV0ID0gLUVOT0VOVDsKPiAgCQkJ Z290byBvdXQ7Cj4gIAkJfQo+ICAKPiAgCQlpZiAoZ2V0X3VzZXIoY291bnRfcHJvcHMsIGNvdW50 X3Byb3BzX3B0ciArIGNvcGllZF9vYmpzKSkgewo+ICsJCQlkcm1fbW9kZV9vYmplY3RfdW5yZWZl cmVuY2Uob2JqKTsKPiAgCQkJcmV0ID0gLUVGQVVMVDsKPiAgCQkJZ290byBvdXQ7Cj4gIAkJfQo+ IEBAIC0xNjMyLDEyICsxNjQxLDE0IEBAIHJldHJ5Ogo+ICAJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5 ICpwcm9wOwo+ICAKPiAgCQkJaWYgKGdldF91c2VyKHByb3BfaWQsIHByb3BzX3B0ciArIGNvcGll ZF9wcm9wcykpIHsKPiArCQkJCWRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZShvYmopOwo+ICAJ CQkJcmV0ID0gLUVGQVVMVDsKPiAgCQkJCWdvdG8gb3V0Owo+ICAJCQl9Cj4gIAo+ICAJCQlwcm9w ID0gZHJtX3Byb3BlcnR5X2ZpbmQoZGV2LCBwcm9wX2lkKTsKPiAgCQkJaWYgKCFwcm9wKSB7Cj4g KwkJCQlkcm1fbW9kZV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKPiAgCQkJCXJldCA9IC1FTk9F TlQ7Cj4gIAkJCQlnb3RvIG91dDsKPiAgCQkJfQo+IEBAIC0xNjQ1LDEzICsxNjU2LDE2IEBAIHJl dHJ5Ogo+ICAJCQlpZiAoY29weV9mcm9tX3VzZXIoJnByb3BfdmFsdWUsCj4gIAkJCQkJICAgcHJv cF92YWx1ZXNfcHRyICsgY29waWVkX3Byb3BzLAo+ICAJCQkJCSAgIHNpemVvZihwcm9wX3ZhbHVl KSkpIHsKPiArCQkJCWRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZShvYmopOwo+ICAJCQkJcmV0 ID0gLUVGQVVMVDsKPiAgCQkJCWdvdG8gb3V0Owo+ICAJCQl9Cj4gIAo+ICAJCQlyZXQgPSBhdG9t aWNfc2V0X3Byb3Aoc3RhdGUsIG9iaiwgcHJvcCwgcHJvcF92YWx1ZSk7Cj4gLQkJCWlmIChyZXQp Cj4gKwkJCWlmIChyZXQpIHsKPiArCQkJCWRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZShvYmop Owo+ICAJCQkJZ290byBvdXQ7Cj4gKwkJCX0KPiAgCj4gIAkJCWNvcGllZF9wcm9wcysrOwo+ICAJ CX0KPiBAQCAtMTY2Miw2ICsxNjc2LDcgQEAgcmV0cnk6Cj4gIAkJCXBsYW5lX21hc2sgfD0gKDEg PDwgZHJtX3BsYW5lX2luZGV4KHBsYW5lKSk7Cj4gIAkJCXBsYW5lLT5vbGRfZmIgPSBwbGFuZS0+ ZmI7Cj4gIAkJfQo+ICsJCWRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZShvYmopOwoKQ291bGQg d2UgbWF5YmUgZG8gc29tZXRoaW5nIGxpa2UgdGhpcyB0byBzaGFyZSB0aGUgdW5yZWZlcmVuY2Ug Y2FsbHM6CgoJCWNvbnRpbnVlOwpmYWlsX2xvb3A6CgkJZHJtX21vZGVfb2JqZWN0X3VucmVmZXJl bmNlKG9iaik7CgkJZ290byBvdXQ7CgpBbmQgdGhlbiBjaGFuZ2UgYWxsIHRoZSBnb3RvIG91dDsg aW4gdGhlIGxvb3AgdG8gZ290byBmYWlsX2xvb3A7PyBKdXN0IGEKc3VnZ2VzdGlvbiwgZWl0aGVy IGlzIGZpbmUgd2l0aCBtZS4gSSBqdXN0IGxpa2UgY29tbW9uIGV4aXQgY29kZSBhIGxvdC4KCj4g IAl9Cj4gIAo+ICAJaWYgKGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQpIHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2NydGMuYwo+IGluZGV4IGY2YmY4MjguLjkwYmM1OTcgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMu Ywo+IEBAIC04NjEsNiArODYxLDE2IEBAIHN0YXRpYyB2b2lkIGRybV9jb25uZWN0b3JfZ2V0X2Nt ZGxpbmVfbW9kZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJCSAgICAgIG1v ZGUtPmludGVybGFjZSA/ICAiIGludGVybGFjZWQiIDogIiIpOwo+ICB9Cj4gIAo+ICtzdGF0aWMg dm9pZCBkcm1fY29ubmVjdG9yX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCj4gK3sKPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPQo+ICsJCWNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciwgYmFzZS5yZWZjb3VudCk7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gKwo+ICsJZHJtX21vZGVfb2JqZWN0X3VucmVnaXN0ZXIo ZGV2LCAmY29ubmVjdG9yLT5iYXNlKTsKPiArCWNvbm5lY3Rvci0+ZnVuY3MtPmRlc3Ryb3koY29u bmVjdG9yKTsKPiArfQo+ICsKPiAgLyoqCj4gICAqIGRybV9jb25uZWN0b3JfaW5pdCAtIEluaXQg YSBwcmVhbGxvY2F0ZWQgY29ubmVjdG9yCj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiBAQCAtODg2 LDcgKzg5Niw3IEBAIGludCBkcm1fY29ubmVjdG9yX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAgCj4gIAlkcm1fbW9kZXNldF9sb2NrX2FsbChkZXYpOwo+ICAKPiAtCXJldCA9IGRybV9t b2RlX29iamVjdF9nZXRfcmVnKGRldiwgJmNvbm5lY3Rvci0+YmFzZSwgRFJNX01PREVfT0JKRUNU X0NPTk5FQ1RPUiwgZmFsc2UsIE5VTEwpOwo+ICsJcmV0ID0gZHJtX21vZGVfb2JqZWN0X2dldF9y ZWcoZGV2LCAmY29ubmVjdG9yLT5iYXNlLCBEUk1fTU9ERV9PQkpFQ1RfQ09OTkVDVE9SLCBmYWxz ZSwgZHJtX2Nvbm5lY3Rvcl9mcmVlKTsKClRvbyBsb25nIGxpbmUuCgo+ICAJaWYgKHJldCkKPiAg CQlnb3RvIG91dF91bmxvY2s7Cj4gIAo+IEBAIC0yMTA2LDcgKzIxMTYsNyBAQCBpbnQgZHJtX21v ZGVfZ2V0Y29ubmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAo+ ICAJbXV0ZXhfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gIAo+IC0JY29ubmVjdG9y ID0gZHJtX2Nvbm5lY3Rvcl9maW5kKGRldiwgb3V0X3Jlc3AtPmNvbm5lY3Rvcl9pZCk7Cj4gKwlj b25uZWN0b3IgPSBkcm1fY29ubmVjdG9yX2xvb2t1cChkZXYsIG91dF9yZXNwLT5jb25uZWN0b3Jf aWQpOwo+ICAJaWYgKCFjb25uZWN0b3IpIHsKPiAgCQlyZXQgPSAtRU5PRU5UOwo+ICAJCWdvdG8g b3V0X3VubG9jazsKPiBAQCAtMjE5MCw2ICsyMjAwLDcgQEAgaW50IGRybV9tb2RlX2dldGNvbm5l Y3RvcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICBvdXQ6Cj4gIAlkcm1f bW9kZXNldF91bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7Cj4gIAo+ ICsJZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZShjb25uZWN0b3IpOwo+ICBvdXRfdW5sb2NrOgo+ ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiAgCj4gQEAgLTI4MzQs MTMgKzI4NDUsMTQgQEAgaW50IGRybV9tb2RlX3NldGNydGMoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPiAgCQl9Cj4gIAo+ICAJCWZvciAoaSA9IDA7IGkgPCBjcnRjX3JlcS0+ Y291bnRfY29ubmVjdG9yczsgaSsrKSB7Cj4gKwkJCWNvbm5lY3Rvcl9zZXRbaV0gPSBOVUxMOwo+ ICAJCQlzZXRfY29ubmVjdG9yc19wdHIgPSAodWludDMyX3QgX191c2VyICopKHVuc2lnbmVkIGxv bmcpY3J0Y19yZXEtPnNldF9jb25uZWN0b3JzX3B0cjsKPiAgCQkJaWYgKGdldF91c2VyKG91dF9p ZCwgJnNldF9jb25uZWN0b3JzX3B0cltpXSkpIHsKPiAgCQkJCXJldCA9IC1FRkFVTFQ7Cj4gIAkJ CQlnb3RvIG91dDsKPiAgCQkJfQo+ICAKPiAtCQkJY29ubmVjdG9yID0gZHJtX2Nvbm5lY3Rvcl9m aW5kKGRldiwgb3V0X2lkKTsKPiArCQkJY29ubmVjdG9yID0gZHJtX2Nvbm5lY3Rvcl9sb29rdXAo ZGV2LCBvdXRfaWQpOwo+ICAJCQlpZiAoIWNvbm5lY3Rvcikgewo+ICAJCQkJRFJNX0RFQlVHX0tN UygiQ29ubmVjdG9yIGlkICVkIHVua25vd25cbiIsCj4gIAkJCQkJCW91dF9pZCk7Cj4gQEAgLTI4 NjgsNiArMjg4MCwxMiBAQCBvdXQ6Cj4gIAlpZiAoZmIpCj4gIAkJZHJtX2ZyYW1lYnVmZmVyX3Vu cmVmZXJlbmNlKGZiKTsKPiAgCj4gKwlpZiAoY29ubmVjdG9yX3NldCkgewo+ICsJCWZvciAoaSA9 IDA7IGkgPCBjcnRjX3JlcS0+Y291bnRfY29ubmVjdG9yczsgaSsrKSB7Cj4gKwkJCWlmIChjb25u ZWN0b3Jfc2V0W2ldKQo+ICsJCQkJZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZShjb25uZWN0b3Jf c2V0W2ldKTsKPiArCQl9Cj4gKwl9Cj4gIAlrZnJlZShjb25uZWN0b3Jfc2V0KTsKPiAgCWRybV9t b2RlX2Rlc3Ryb3koZGV2LCBtb2RlKTsKPiAgCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsK PiBAQCAtNDk1Nyw3ICs0OTc1LDcgQEAgaW50IGRybV9tb2RlX29ial9nZXRfcHJvcGVydGllc19p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAoKUHJlZXhpc3RpbmcgYnVn LCBidXQgd2UgZG9uJ3QgZmlsdGVyIG91dCBGQiBhbmQgQkxPQiBwcm9wZXJ0aWVzIGhlcmUuCldo aWNoIG1lYW5zIGF0IGxlYXN0IHdlJ2xsIGJsb3cgdXAgb24gdGhlIFdBUk5fT04sIGJ1dCBJIHRo aW5rIHdlIGNhbiBhbHNvCm5pY2VseSBsZWFrIHJlZmVyZW5jZXMgd2l0aCB5b3VyIHBhdGNoZXMg bm93IChiZWNhdXNlIGF0IGxlYXN0IGZiCnJlZmVyZW5jZXMgYXJlIGdyYWJiZWQgaW4gX29iamVj dF9maW5kIG5vdykgOigKCldlIGRvIGZpbHRlciBvdXQgRkIgYW5kIEJMT0Igb2JqIHdpdGggdGhl IG9iai0+cHJvcGVydGllcyBjaGVjaywgYnV0CnRoYXQncyBhIHVzZS1hZnRlci1mcmVlIGluIDQu NiAoYW5kIHRoZSBpb2N0bCB3aWxsIGxlYWsgd2l0aCB5b3VyIHBhdGNoZXMKbm93IGluIDQuNyku Cgo+ICAJfQo+ICAJaWYgKCFvYmotPnByb3BlcnRpZXMpIHsKPiAgCQlyZXQgPSAtRUlOVkFMOwo+ IC0JCWdvdG8gb3V0Owo+ICsJCWdvdG8gb3V0X3VucmVmOwo+ICAJfQo+ICAKPiAgCXJldCA9IGdl dF9wcm9wZXJ0aWVzKG9iaiwgZmlsZV9wcml2LT5hdG9taWMsCj4gQEAgLTQ5NjUsNiArNDk4Myw4 IEBAIGludCBkcm1fbW9kZV9vYmpfZ2V0X3Byb3BlcnRpZXNfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQkJKHVpbnQ2NF90IF9fdXNlciAqKSh1bnNpZ25lZCBs b25nKShhcmctPnByb3BfdmFsdWVzX3B0ciksCj4gIAkJCSZhcmctPmNvdW50X3Byb3BzKTsKPiAg Cj4gK291dF91bnJlZjoKPiArCWRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZShvYmopOwo+ICBv dXQ6Cj4gIAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7Cj4gIAlyZXR1cm4gcmV0Owo+IEBA IC01MDA3LDI1ICs1MDI3LDI1IEBAIGludCBkcm1fbW9kZV9vYmpfc2V0X3Byb3BlcnR5X2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCgpTYW1lIGlzc3VlIHdpdGggRkIg YW5kIEJMT0IgaGVyZSBhcyB3aXRoIGdldF9wcm9wZXJ0eV9pb2N0bC4KCj4gIAkJZ290byBvdXQ7 Cj4gIAl9Cj4gIAlpZiAoIWFyZ19vYmotPnByb3BlcnRpZXMpCj4gLQkJZ290byBvdXQ7Cj4gKwkJ Z290byBvdXRfdW5yZWY7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IGFyZ19vYmotPnByb3BlcnRp ZXMtPmNvdW50OyBpKyspCj4gIAkJaWYgKGFyZ19vYmotPnByb3BlcnRpZXMtPnByb3BlcnRpZXNb aV0tPmJhc2UuaWQgPT0gYXJnLT5wcm9wX2lkKQo+ICAJCQlicmVhazsKPiAgCj4gIAlpZiAoaSA9 PSBhcmdfb2JqLT5wcm9wZXJ0aWVzLT5jb3VudCkKPiAtCQlnb3RvIG91dDsKPiArCQlnb3RvIG91 dF91bnJlZjsKPiAgCj4gIAlwcm9wX29iaiA9IGRybV9tb2RlX29iamVjdF9maW5kKGRldiwgYXJn LT5wcm9wX2lkLAo+ICAJCQkJCURSTV9NT0RFX09CSkVDVF9QUk9QRVJUWSk7Cj4gIAlpZiAoIXBy b3Bfb2JqKSB7Cj4gIAkJcmV0ID0gLUVOT0VOVDsKPiAtCQlnb3RvIG91dDsKPiArCQlnb3RvIG91 dF91bnJlZjsKPiAgCX0KPiAgCXByb3BlcnR5ID0gb2JqX3RvX3Byb3BlcnR5KHByb3Bfb2JqKTsK PiAgCj4gIAlpZiAoIWRybV9wcm9wZXJ0eV9jaGFuZ2VfdmFsaWRfZ2V0KHByb3BlcnR5LCBhcmct PnZhbHVlLCAmcmVmKSkKPiAtCQlnb3RvIG91dDsKPiArCQlnb3RvIG91dF91bnJlZjsKPiAgCj4g IAlzd2l0Y2ggKGFyZ19vYmotPnR5cGUpIHsKPiAgCWNhc2UgRFJNX01PREVfT0JKRUNUX0NPTk5F Q1RPUjoKPiBAQCAtNTA0Miw3ICs1MDYyLDggQEAgaW50IGRybV9tb2RlX29ial9zZXRfcHJvcGVy dHlfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCX0KPiAgCj4g IAlkcm1fcHJvcGVydHlfY2hhbmdlX3ZhbGlkX3B1dChwcm9wZXJ0eSwgcmVmKTsKPiAtCj4gK291 dF91bnJlZjoKPiArCWRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZShhcmdfb2JqKTsKPiAgb3V0 Ogo+ICAJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwo+ICAJcmV0dXJuIHJldDsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZmJfaGVscGVyLmMKPiBpbmRleCA4NTUxMDhlLi4zNjkxNTY1IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2ZiX2hlbHBlci5jCj4gQEAgLTE1Myw0MCArMTUzLDEzIEBAIGludCBkcm1fZmJfaGVscGVy X2FkZF9vbmVfY29ubmVjdG9yKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIHN0cnVj dCBkcm1fCj4gIAlpZiAoIWZiX2hlbHBlcl9jb25uZWN0b3IpCj4gIAkJcmV0dXJuIC1FTk9NRU07 Cj4gIAo+ICsJZHJtX2Nvbm5lY3Rvcl9yZWZlcmVuY2UoY29ubmVjdG9yKTsKCkkgdGhpbmsgaXQn ZCBiZSBnb29kIHRvIHNwbGl0IHRoZSBjaGFuZ2VzIGZvciB0aGUgZmJkZXYgaGVscGVyIGludG8g YQpzZXBhcmF0ZSBwYXRjaCwgZm9yIGVhc2llciByZXZpZXdpbmcsIGFuZCBpdCBzZWVtcyBpbmNv bnNpc3RlbnQ6IFlvdSBncmFiCmEgcmVmIGhlcmUsIGJ1dCBkb24ndCBkcm9wIGl0IGluIHJlbW92 ZV9vbmVfY29ubmVjdG9yLgoKQWxzbyBJIHRoaW5rIHdlIG5lZWQgdG8gZ3JhYiByZWZlcmVuY2Vz IGZvciBhbGwgdGhlIGludGlhbCBjb25uZWN0b3JzIHRvbywKYW5kIGRyb3AgdGhlbSBvbiB1bmxv YWQsIGluIGNhc2UgeW91IGJvb3QgdXAgKG9yIHJlbG9hZCkgd2l0aCBhbiBtc3QKY29ubmVjdG9y IHBsdWdnZWQgaW4uIFlvdSBkbyBzb21lIG9mIHRoYXQgaW4gZHJtX3NldHVwX2NydGNzLCBidXQg SSB0aGluawppdCdzIGJldHRlciB0byBkbyB0aGF0IGluIGRybV9mYl9oZWxwZXJfc2luZ2xlX2Fk ZF9hbGxfY29ubmVjdG9ycyBhbmQgdGhlCmZpbmFsIGNsZWFudXAgY29kZSwgYW5kIG5vdCBoYXZl IGFueSByZWZjb3VudGluZyBpbiBkcm1fc2V0dXBfY3J0YyAoYnV0Cmluc3RlYWQganVzdCBpbmhl cml0IHRoZSByZWZjb3VudCBmcm9tIHRoZSBjb25uZWN0b3JfaW5mbyBhcnJheSBmb3IgdGhlCmZi ZGV2IG1vZGVzZXQgY29uZmlnIHN0cnVjdHVyZXMpLgoKPiAgCWZiX2hlbHBlcl9jb25uZWN0b3It PmNvbm5lY3RvciA9IGNvbm5lY3RvcjsKPiAgCWZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9bZmJf aGVscGVyLT5jb25uZWN0b3JfY291bnQrK10gPSBmYl9oZWxwZXJfY29ubmVjdG9yOwo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2FkZF9vbmVfY29ubmVj dG9yKTsKPiAgCj4gLXN0YXRpYyB2b2lkIHJlbW92ZV9mcm9tX21vZGVzZXQoc3RydWN0IGRybV9t b2RlX3NldCAqc2V0LAo+IC0JCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gLXsK PiAtCWludCBpLCBqOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBzZXQtPm51bV9jb25uZWN0b3Jz OyBpKyspIHsKPiAtCQlpZiAoc2V0LT5jb25uZWN0b3JzW2ldID09IGNvbm5lY3RvcikKPiAtCQkJ YnJlYWs7Cj4gLQl9Cj4gLQo+IC0JaWYgKGkgPT0gc2V0LT5udW1fY29ubmVjdG9ycykKPiAtCQly ZXR1cm47Cj4gLQo+IC0JZm9yIChqID0gaSArIDE7IGogPCBzZXQtPm51bV9jb25uZWN0b3JzOyBq KyspIHsKPiAtCQlzZXQtPmNvbm5lY3RvcnNbaiAtIDFdID0gc2V0LT5jb25uZWN0b3JzW2pdOwo+ IC0JfQo+IC0Jc2V0LT5udW1fY29ubmVjdG9ycy0tOwo+IC0KPiAtCS8qCj4gLQkgKiBUT0RPIG1h eWJlIG5lZWQgdG8gbWFrZXMgc3VyZSB3ZSBzZXQgaXQgYmFjayB0byAhPU5VTEwgc29tZXdoZXJl Pwo+IC0JICovCj4gLQlpZiAoc2V0LT5udW1fY29ubmVjdG9ycyA9PSAwKSB7Cj4gLQkJc2V0LT5m YiA9IE5VTEw7Cj4gLQkJZHJtX21vZGVfZGVzdHJveShjb25uZWN0b3ItPmRldiwgc2V0LT5tb2Rl KTsKPiAtCQlzZXQtPm1vZGUgPSBOVUxMOwo+IC0JfQo+IC19Cj4gLQo+ICBpbnQgZHJtX2ZiX2hl bHBlcl9yZW1vdmVfb25lX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVy LAo+ICAJCQkJICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIHsKPiBA QCAtMjEzLDEwICsxODYsNiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9yZW1vdmVfb25lX2Nvbm5lY3Rv cihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICAJZmJfaGVscGVyLT5jb25uZWN0 b3JfY291bnQtLTsKPiAgCWtmcmVlKGZiX2hlbHBlcl9jb25uZWN0b3IpOwo+ICAKPiAtCS8qIGFs c28gY2xlYW51cCBkYW5nbGluZyByZWZlcmVuY2VzIHRvIHRoZSBjb25uZWN0b3I6ICovCj4gLQlm b3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspCj4gLQkJcmVtb3ZlX2Zy b21fbW9kZXNldCgmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQsIGNvbm5lY3Rvcik7 Cj4gLQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX3Jl bW92ZV9vbmVfY29ubmVjdG9yKTsKPiBAQCAtMjAyNCw3ICsxOTkzLDExIEBAIHN0YXRpYyB2b2lk IGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ICAJLyog bmVlZCB0byBzZXQgdGhlIG1vZGVzZXRzIHVwIGhlcmUgZm9yIHVzZSBsYXRlciAqLwo+ICAJLyog ZmlsbCBvdXQgdGhlIGNvbm5lY3RvcjwtPmNydGMgbWFwcGluZ3MgaW50byB0aGUgbW9kZXNldHMg Ki8KPiAgCWZvciAoaSA9IDA7IGkgPCBmYl9oZWxwZXItPmNydGNfY291bnQ7IGkrKykgewo+ICsJ CWludCBqOwo+ICAJCW1vZGVzZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7 Cj4gKwo+ICsJCWZvciAoaiA9IDA7IGogPCBtb2Rlc2V0LT5udW1fY29ubmVjdG9yczsgaisrKQo+ ICsJCQlkcm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKG1vZGVzZXQtPmNvbm5lY3RvcnNbal0pOwo+ ICAJCW1vZGVzZXQtPm51bV9jb25uZWN0b3JzID0gMDsKPiAgCQltb2Rlc2V0LT5mYiA9IE5VTEw7 Cj4gIAl9Cj4gQEAgLTIwNDUsNiArMjAxOCw3IEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRj cyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ICAJCQkJZHJtX21vZGVfZGVzdHJv eShkZXYsIG1vZGVzZXQtPm1vZGUpOwo+ICAJCQltb2Rlc2V0LT5tb2RlID0gZHJtX21vZGVfZHVw bGljYXRlKGRldiwKPiAgCQkJCQkJCSAgIGZiX2NydGMtPmRlc2lyZWRfbW9kZSk7Cj4gKwkJCWRy bV9jb25uZWN0b3JfcmVmZXJlbmNlKGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV0tPmNvbm5l Y3Rvcik7Cj4gIAkJCW1vZGVzZXQtPmNvbm5lY3RvcnNbbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMr K10gPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldLT5jb25uZWN0b3I7Cj4gIAkJCW1vZGVz ZXQtPmZiID0gZmJfaGVscGVyLT5mYjsKPiAgCQkJbW9kZXNldC0+eCA9IG9mZnNldC0+eDsKPiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUvZHJtL2RybV9jcnRj LmgKPiBpbmRleCA1NzZmYWY0Li43ZTEzMTI3IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9jcnRjLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gQEAgLTI1NzksNyArMjU3 OSw4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jb2Rlcl9maW5k KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlyZXR1cm4gbW8gPyBvYmpfdG9fZW5jb2Rlciht bykgOiBOVUxMOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fY29ubmVjdG9y ICpkcm1fY29ubmVjdG9yX2ZpbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArLyogdGFrZXMg YSByZWZlcmVuY2UgKi8KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqZHJt X2Nvbm5lY3Rvcl9sb29rdXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQl1aW50MzJfdCBp ZCkKPiAgewo+ICAJc3RydWN0IGRybV9tb2RlX29iamVjdCAqbW87Cj4gQEAgLTI2MjUsNiArMjYy NiwxNiBAQCBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGRybV9mcmFtZWJ1ZmZlcl9yZWFkX3JlZmNv dW50KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+ICAJcmV0dXJuIGF0b21pY19yZWFkKCZm Yi0+YmFzZS5yZWZjb3VudC5yZWZjb3VudCk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbmxpbmUgdm9p ZCBkcm1fY29ubmVjdG9yX3JlZmVyZW5jZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ICt7Cj4gKwlkcm1fbW9kZV9vYmplY3RfcmVmZXJlbmNlKCZjb25uZWN0b3ItPmJhc2UpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoKa2VybmVsZG9jIGZvciB0aGVzZSB0d28g cGx1cyBkcm1fY29ubmVjdG9yX2xvb2t1cCB3b3VsZCBiZSBnb29kIHdpdGggdGhlCnVzdWFsIGZl dyBsaW5lcyBhYm91dCB0aGUgcmVmY291bnRpbmcuIFRoYXQgYWxzbyBnaXZlcyB5b3UgYSBnb29k IHBsYWNlIHRvCnB1dCB0aGUgInRha2VzIGEgcmVmZXJlbmNlIiBjb21tZW50IGFib3ZlLgoKPiAr ewo+ICsJZHJtX21vZGVfb2JqZWN0X3VucmVmZXJlbmNlKCZjb25uZWN0b3ItPmJhc2UpOwo+ICt9 Cj4gKwo+ICAvKiBQbGFuZSBsaXN0IGl0ZXJhdG9yIGZvciBsZWdhY3kgKG92ZXJsYXkgb25seSkg cGxhbmVzLiAqLwo+ICAjZGVmaW5lIGRybV9mb3JfZWFjaF9sZWdhY3lfcGxhbmUocGxhbmUsIGRl dikgXAo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShwbGFuZSwgJihkZXYpLT5tb2RlX2NvbmZpZy5w bGFuZV9saXN0LCBoZWFkKSBcCj4gLS0gCj4gMi41LjUKPiAKPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK