From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 12/15] drm/modes: add connector reference counting. Date: Fri, 15 Apr 2016 15:10:43 +1000 Message-ID: <1460697046-23781-13-git-send-email-airlied@gmail.com> References: <1460697046-23781-1-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 mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id B577E6E114 for ; Fri, 15 Apr 2016 05:11:00 +0000 (UTC) Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6A07562653 for ; Fri, 15 Apr 2016 05:11:00 +0000 (UTC) Received: from dreadlord-bne-redhat-com.bne.redhat.com (dhcp-40-179.bne.redhat.com [10.64.40.179]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u3F5AlYp005176 for ; Fri, 15 Apr 2016 01:10:59 -0400 In-Reply-To: <1460697046-23781-1-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: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgdXNlcyB0aGUgcHJl dmlvdXMgY2hhbmdlcyB0byBhZGQgcmVmZXJlbmNlIGNvdW50aW5nIHRvIHRoZQpkcm0gY29ubmVj dG9yIG9iamVjdHMuCgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAgfCAxOSArKysrKysrKysr KysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyAgICAgIHwgMzkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hl bHBlci5jIHwgMzggKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1 ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgfCAxMyArKysrKysrKysrKystCiA0IGZpbGVzIGNo YW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5j CmluZGV4IDhlZTFkYjguLjlkNWUzYzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwpAQCAtMTU0LDYgKzE1 NCw3IEBAIHZvaWQgZHJtX2F0b21pY19zdGF0ZV9kZWZhdWx0X2NsZWFyKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKIAkJCQkJCSAgICAgICBzdGF0ZS0+Y29ubmVjdG9yX3N0YXRlc1tp XSk7CiAJCXN0YXRlLT5jb25uZWN0b3JzW2ldID0gTlVMTDsKIAkJc3RhdGUtPmNvbm5lY3Rvcl9z dGF0ZXNbaV0gPSBOVUxMOworCQlkcm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKGNvbm5lY3Rvcik7 CiAJfQogCiAJZm9yIChpID0gMDsgaSA8IGNvbmZpZy0+bnVtX2NydGM7IGkrKykgewpAQCAtOTI0 LDYgKzkyNSw3IEBAIGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUsCiAJaWYgKCFjb25uZWN0b3Jfc3RhdGUpCiAJCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwogCisJZHJtX2Nvbm5lY3Rvcl9yZWZlcmVuY2UoY29ubmVjdG9yKTsKIAlz dGF0ZS0+Y29ubmVjdG9yX3N0YXRlc1tpbmRleF0gPSBjb25uZWN0b3Jfc3RhdGU7CiAJc3RhdGUt PmNvbm5lY3RvcnNbaW5kZXhdID0gY29ubmVjdG9yOwogCWNvbm5lY3Rvcl9zdGF0ZS0+c3RhdGUg PSBzdGF0ZTsKQEAgLTE2MTQsMTIgKzE2MTYsMTkgQEAgcmV0cnk6CiAJCX0KIAogCQlvYmogPSBk cm1fbW9kZV9vYmplY3RfZmluZChkZXYsIG9ial9pZCwgRFJNX01PREVfT0JKRUNUX0FOWSk7Ci0J CWlmICghb2JqIHx8ICFvYmotPnByb3BlcnRpZXMpIHsKKwkJaWYgKCFvYmopIHsKKwkJCXJldCA9 IC1FTk9FTlQ7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCWlmICghb2JqLT5wcm9wZXJ0aWVzKSB7 CisJCQlkcm1fbW9kZV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKIAkJCXJldCA9IC1FTk9FTlQ7 CiAJCQlnb3RvIG91dDsKIAkJfQogCiAJCWlmIChnZXRfdXNlcihjb3VudF9wcm9wcywgY291bnRf cHJvcHNfcHRyICsgY29waWVkX29ianMpKSB7CisJCQlkcm1fbW9kZV9vYmplY3RfdW5yZWZlcmVu Y2Uob2JqKTsKIAkJCXJldCA9IC1FRkFVTFQ7CiAJCQlnb3RvIG91dDsKIAkJfQpAQCAtMTYzMiwx MiArMTY0MSwxNCBAQCByZXRyeToKIAkJCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7CiAKIAkJ CWlmIChnZXRfdXNlcihwcm9wX2lkLCBwcm9wc19wdHIgKyBjb3BpZWRfcHJvcHMpKSB7CisJCQkJ ZHJtX21vZGVfb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CiAJCQkJcmV0ID0gLUVGQVVMVDsKIAkJ CQlnb3RvIG91dDsKIAkJCX0KIAogCQkJcHJvcCA9IGRybV9wcm9wZXJ0eV9maW5kKGRldiwgcHJv cF9pZCk7CiAJCQlpZiAoIXByb3ApIHsKKwkJCQlkcm1fbW9kZV9vYmplY3RfdW5yZWZlcmVuY2Uo b2JqKTsKIAkJCQlyZXQgPSAtRU5PRU5UOwogCQkJCWdvdG8gb3V0OwogCQkJfQpAQCAtMTY0NSwx MyArMTY1NiwxNiBAQCByZXRyeToKIAkJCWlmIChjb3B5X2Zyb21fdXNlcigmcHJvcF92YWx1ZSwK IAkJCQkJICAgcHJvcF92YWx1ZXNfcHRyICsgY29waWVkX3Byb3BzLAogCQkJCQkgICBzaXplb2Yo cHJvcF92YWx1ZSkpKSB7CisJCQkJZHJtX21vZGVfb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CiAJ CQkJcmV0ID0gLUVGQVVMVDsKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAogCQkJcmV0ID0gYXRvbWlj X3NldF9wcm9wKHN0YXRlLCBvYmosIHByb3AsIHByb3BfdmFsdWUpOwotCQkJaWYgKHJldCkKKwkJ CWlmIChyZXQpIHsKKwkJCQlkcm1fbW9kZV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKIAkJCQln b3RvIG91dDsKKwkJCX0KIAogCQkJY29waWVkX3Byb3BzKys7CiAJCX0KQEAgLTE2NjIsNiArMTY3 Niw3IEBAIHJldHJ5OgogCQkJcGxhbmVfbWFzayB8PSAoMSA8PCBkcm1fcGxhbmVfaW5kZXgocGxh bmUpKTsKIAkJCXBsYW5lLT5vbGRfZmIgPSBwbGFuZS0+ZmI7CiAJCX0KKwkJZHJtX21vZGVfb2Jq ZWN0X3VucmVmZXJlbmNlKG9iaik7CiAJfQogCiAJaWYgKGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9Q QUdFX0ZMSVBfRVZFTlQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKaW5kZXggZjZiZjgyOC4uOTBiYzU5NyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9jcnRjLmMKQEAgLTg2MSw2ICs4NjEsMTYgQEAgc3RhdGljIHZvaWQgZHJtX2Nvbm5lY3Rv cl9nZXRfY21kbGluZV9tb2RlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJCSAg ICAgIG1vZGUtPmludGVybGFjZSA/ICAiIGludGVybGFjZWQiIDogIiIpOwogfQogCitzdGF0aWMg dm9pZCBkcm1fY29ubmVjdG9yX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCit7CisJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciA9CisJCWNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZHJt X2Nvbm5lY3RvciwgYmFzZS5yZWZjb3VudCk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNv bm5lY3Rvci0+ZGV2OworCisJZHJtX21vZGVfb2JqZWN0X3VucmVnaXN0ZXIoZGV2LCAmY29ubmVj dG9yLT5iYXNlKTsKKwljb25uZWN0b3ItPmZ1bmNzLT5kZXN0cm95KGNvbm5lY3Rvcik7Cit9CisK IC8qKgogICogZHJtX2Nvbm5lY3Rvcl9pbml0IC0gSW5pdCBhIHByZWFsbG9jYXRlZCBjb25uZWN0 b3IKICAqIEBkZXY6IERSTSBkZXZpY2UKQEAgLTg4Niw3ICs4OTYsNyBAQCBpbnQgZHJtX2Nvbm5l Y3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlkcm1fbW9kZXNldF9sb2NrX2Fs bChkZXYpOwogCi0JcmV0ID0gZHJtX21vZGVfb2JqZWN0X2dldF9yZWcoZGV2LCAmY29ubmVjdG9y LT5iYXNlLCBEUk1fTU9ERV9PQkpFQ1RfQ09OTkVDVE9SLCBmYWxzZSwgTlVMTCk7CisJcmV0ID0g ZHJtX21vZGVfb2JqZWN0X2dldF9yZWcoZGV2LCAmY29ubmVjdG9yLT5iYXNlLCBEUk1fTU9ERV9P QkpFQ1RfQ09OTkVDVE9SLCBmYWxzZSwgZHJtX2Nvbm5lY3Rvcl9mcmVlKTsKIAlpZiAocmV0KQog CQlnb3RvIG91dF91bmxvY2s7CiAKQEAgLTIxMDYsNyArMjExNiw3IEBAIGludCBkcm1fbW9kZV9n ZXRjb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAogCW11dGV4 X2xvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwogCi0JY29ubmVjdG9yID0gZHJtX2Nvbm5l Y3Rvcl9maW5kKGRldiwgb3V0X3Jlc3AtPmNvbm5lY3Rvcl9pZCk7CisJY29ubmVjdG9yID0gZHJt X2Nvbm5lY3Rvcl9sb29rdXAoZGV2LCBvdXRfcmVzcC0+Y29ubmVjdG9yX2lkKTsKIAlpZiAoIWNv bm5lY3RvcikgewogCQlyZXQgPSAtRU5PRU5UOwogCQlnb3RvIG91dF91bmxvY2s7CkBAIC0yMTkw LDYgKzIyMDAsNyBAQCBpbnQgZHJtX21vZGVfZ2V0Y29ubmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiBvdXQ6CiAJZHJtX21vZGVzZXRfdW5sb2NrKCZkZXYtPm1vZGVf Y29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpOwogCisJZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZShj b25uZWN0b3IpOwogb3V0X3VubG9jazoKIAltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcu bXV0ZXgpOwogCkBAIC0yODM0LDEzICsyODQ1LDE0IEBAIGludCBkcm1fbW9kZV9zZXRjcnRjKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCX0KIAogCQlmb3IgKGkgPSAwOyBp IDwgY3J0Y19yZXEtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykgeworCQkJY29ubmVjdG9yX3NldFtp XSA9IE5VTEw7CiAJCQlzZXRfY29ubmVjdG9yc19wdHIgPSAodWludDMyX3QgX191c2VyICopKHVu c2lnbmVkIGxvbmcpY3J0Y19yZXEtPnNldF9jb25uZWN0b3JzX3B0cjsKIAkJCWlmIChnZXRfdXNl cihvdXRfaWQsICZzZXRfY29ubmVjdG9yc19wdHJbaV0pKSB7CiAJCQkJcmV0ID0gLUVGQVVMVDsK IAkJCQlnb3RvIG91dDsKIAkJCX0KIAotCQkJY29ubmVjdG9yID0gZHJtX2Nvbm5lY3Rvcl9maW5k KGRldiwgb3V0X2lkKTsKKwkJCWNvbm5lY3RvciA9IGRybV9jb25uZWN0b3JfbG9va3VwKGRldiwg b3V0X2lkKTsKIAkJCWlmICghY29ubmVjdG9yKSB7CiAJCQkJRFJNX0RFQlVHX0tNUygiQ29ubmVj dG9yIGlkICVkIHVua25vd25cbiIsCiAJCQkJCQlvdXRfaWQpOwpAQCAtMjg2OCw2ICsyODgwLDEy IEBAIG91dDoKIAlpZiAoZmIpCiAJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShmYik7CiAK KwlpZiAoY29ubmVjdG9yX3NldCkgeworCQlmb3IgKGkgPSAwOyBpIDwgY3J0Y19yZXEtPmNvdW50 X2Nvbm5lY3RvcnM7IGkrKykgeworCQkJaWYgKGNvbm5lY3Rvcl9zZXRbaV0pCisJCQkJZHJtX2Nv bm5lY3Rvcl91bnJlZmVyZW5jZShjb25uZWN0b3Jfc2V0W2ldKTsKKwkJfQorCX0KIAlrZnJlZShj b25uZWN0b3Jfc2V0KTsKIAlkcm1fbW9kZV9kZXN0cm95KGRldiwgbW9kZSk7CiAJZHJtX21vZGVz ZXRfdW5sb2NrX2FsbChkZXYpOwpAQCAtNDk1Nyw3ICs0OTc1LDcgQEAgaW50IGRybV9tb2RlX29i al9nZXRfcHJvcGVydGllc19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCX0KIAlpZiAoIW9iai0+cHJvcGVydGllcykgewogCQlyZXQgPSAtRUlOVkFMOwotCQlnb3Rv IG91dDsKKwkJZ290byBvdXRfdW5yZWY7CiAJfQogCiAJcmV0ID0gZ2V0X3Byb3BlcnRpZXMob2Jq LCBmaWxlX3ByaXYtPmF0b21pYywKQEAgLTQ5NjUsNiArNDk4Myw4IEBAIGludCBkcm1fbW9kZV9v YmpfZ2V0X3Byb3BlcnRpZXNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAkJCSh1aW50NjRfdCBfX3VzZXIgKikodW5zaWduZWQgbG9uZykoYXJnLT5wcm9wX3ZhbHVl c19wdHIpLAogCQkJJmFyZy0+Y291bnRfcHJvcHMpOwogCitvdXRfdW5yZWY6CisJZHJtX21vZGVf b2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CiBvdXQ6CiAJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChk ZXYpOwogCXJldHVybiByZXQ7CkBAIC01MDA3LDI1ICs1MDI3LDI1IEBAIGludCBkcm1fbW9kZV9v Ympfc2V0X3Byb3BlcnR5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJCWdvdG8gb3V0OwogCX0KIAlpZiAoIWFyZ19vYmotPnByb3BlcnRpZXMpCi0JCWdvdG8gb3V0 OworCQlnb3RvIG91dF91bnJlZjsKIAogCWZvciAoaSA9IDA7IGkgPCBhcmdfb2JqLT5wcm9wZXJ0 aWVzLT5jb3VudDsgaSsrKQogCQlpZiAoYXJnX29iai0+cHJvcGVydGllcy0+cHJvcGVydGllc1tp XS0+YmFzZS5pZCA9PSBhcmctPnByb3BfaWQpCiAJCQlicmVhazsKIAogCWlmIChpID09IGFyZ19v YmotPnByb3BlcnRpZXMtPmNvdW50KQotCQlnb3RvIG91dDsKKwkJZ290byBvdXRfdW5yZWY7CiAK IAlwcm9wX29iaiA9IGRybV9tb2RlX29iamVjdF9maW5kKGRldiwgYXJnLT5wcm9wX2lkLAogCQkJ CQlEUk1fTU9ERV9PQkpFQ1RfUFJPUEVSVFkpOwogCWlmICghcHJvcF9vYmopIHsKIAkJcmV0ID0g LUVOT0VOVDsKLQkJZ290byBvdXQ7CisJCWdvdG8gb3V0X3VucmVmOwogCX0KIAlwcm9wZXJ0eSA9 IG9ial90b19wcm9wZXJ0eShwcm9wX29iaik7CiAKIAlpZiAoIWRybV9wcm9wZXJ0eV9jaGFuZ2Vf dmFsaWRfZ2V0KHByb3BlcnR5LCBhcmctPnZhbHVlLCAmcmVmKSkKLQkJZ290byBvdXQ7CisJCWdv dG8gb3V0X3VucmVmOwogCiAJc3dpdGNoIChhcmdfb2JqLT50eXBlKSB7CiAJY2FzZSBEUk1fTU9E RV9PQkpFQ1RfQ09OTkVDVE9SOgpAQCAtNTA0Miw3ICs1MDYyLDggQEAgaW50IGRybV9tb2RlX29i al9zZXRfcHJvcGVydHlfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAl9CiAKIAlkcm1fcHJvcGVydHlfY2hhbmdlX3ZhbGlkX3B1dChwcm9wZXJ0eSwgcmVmKTsKLQor b3V0X3VucmVmOgorCWRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZShhcmdfb2JqKTsKIG91dDoK IAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7CiAJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jCmluZGV4IDg1NTEwOGUuLjM2OTE1NjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZmJfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIu YwpAQCAtMTUzLDQwICsxNTMsMTMgQEAgaW50IGRybV9mYl9oZWxwZXJfYWRkX29uZV9jb25uZWN0 b3Ioc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgc3RydWN0IGRybV8KIAlpZiAoIWZi X2hlbHBlcl9jb25uZWN0b3IpCiAJCXJldHVybiAtRU5PTUVNOwogCisJZHJtX2Nvbm5lY3Rvcl9y ZWZlcmVuY2UoY29ubmVjdG9yKTsKIAlmYl9oZWxwZXJfY29ubmVjdG9yLT5jb25uZWN0b3IgPSBj b25uZWN0b3I7CiAJZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tmYl9oZWxwZXItPmNvbm5lY3Rv cl9jb3VudCsrXSA9IGZiX2hlbHBlcl9jb25uZWN0b3I7CiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRf U1lNQk9MKGRybV9mYl9oZWxwZXJfYWRkX29uZV9jb25uZWN0b3IpOwogCi1zdGF0aWMgdm9pZCBy ZW1vdmVfZnJvbV9tb2Rlc2V0KHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCwKLQkJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcikKLXsKLQlpbnQgaSwgajsKLQotCWZvciAoaSA9IDA7IGkg PCBzZXQtPm51bV9jb25uZWN0b3JzOyBpKyspIHsKLQkJaWYgKHNldC0+Y29ubmVjdG9yc1tpXSA9 PSBjb25uZWN0b3IpCi0JCQlicmVhazsKLQl9Ci0KLQlpZiAoaSA9PSBzZXQtPm51bV9jb25uZWN0 b3JzKQotCQlyZXR1cm47Ci0KLQlmb3IgKGogPSBpICsgMTsgaiA8IHNldC0+bnVtX2Nvbm5lY3Rv cnM7IGorKykgewotCQlzZXQtPmNvbm5lY3RvcnNbaiAtIDFdID0gc2V0LT5jb25uZWN0b3JzW2pd OwotCX0KLQlzZXQtPm51bV9jb25uZWN0b3JzLS07Ci0KLQkvKgotCSAqIFRPRE8gbWF5YmUgbmVl ZCB0byBtYWtlcyBzdXJlIHdlIHNldCBpdCBiYWNrIHRvICE9TlVMTCBzb21ld2hlcmU/Ci0JICov Ci0JaWYgKHNldC0+bnVtX2Nvbm5lY3RvcnMgPT0gMCkgewotCQlzZXQtPmZiID0gTlVMTDsKLQkJ ZHJtX21vZGVfZGVzdHJveShjb25uZWN0b3ItPmRldiwgc2V0LT5tb2RlKTsKLQkJc2V0LT5tb2Rl ID0gTlVMTDsKLQl9Ci19Ci0KIGludCBkcm1fZmJfaGVscGVyX3JlbW92ZV9vbmVfY29ubmVjdG9y KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCQkJICAgICAgIHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCiB7CkBAIC0yMTMsMTAgKzE4Niw2IEBAIGludCBkcm1fZmJf aGVscGVyX3JlbW92ZV9vbmVfY29ubmVjdG9yKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIsCiAJZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQtLTsKIAlrZnJlZShmYl9oZWxwZXJfY29u bmVjdG9yKTsKIAotCS8qIGFsc28gY2xlYW51cCBkYW5nbGluZyByZWZlcmVuY2VzIHRvIHRoZSBj b25uZWN0b3I6ICovCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsr KQotCQlyZW1vdmVfZnJvbV9tb2Rlc2V0KCZmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3Nl dCwgY29ubmVjdG9yKTsKLQogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVs cGVyX3JlbW92ZV9vbmVfY29ubmVjdG9yKTsKQEAgLTIwMjQsNyArMTk5MywxMSBAQCBzdGF0aWMg dm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIAkv KiBuZWVkIHRvIHNldCB0aGUgbW9kZXNldHMgdXAgaGVyZSBmb3IgdXNlIGxhdGVyICovCiAJLyog ZmlsbCBvdXQgdGhlIGNvbm5lY3RvcjwtPmNydGMgbWFwcGluZ3MgaW50byB0aGUgbW9kZXNldHMg Ki8KIAlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKKwkJaW50 IGo7CiAJCW1vZGVzZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7CisKKwkJ Zm9yIChqID0gMDsgaiA8IG1vZGVzZXQtPm51bV9jb25uZWN0b3JzOyBqKyspCisJCQlkcm1fY29u bmVjdG9yX3VucmVmZXJlbmNlKG1vZGVzZXQtPmNvbm5lY3RvcnNbal0pOwogCQltb2Rlc2V0LT5u dW1fY29ubmVjdG9ycyA9IDA7CiAJCW1vZGVzZXQtPmZiID0gTlVMTDsKIAl9CkBAIC0yMDQ1LDYg KzIwMTgsNyBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxw ZXIgKmZiX2hlbHBlcikKIAkJCQlkcm1fbW9kZV9kZXN0cm95KGRldiwgbW9kZXNldC0+bW9kZSk7 CiAJCQltb2Rlc2V0LT5tb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwKIAkJCQkJCQkgICBm Yl9jcnRjLT5kZXNpcmVkX21vZGUpOworCQkJZHJtX2Nvbm5lY3Rvcl9yZWZlcmVuY2UoZmJfaGVs cGVyLT5jb25uZWN0b3JfaW5mb1tpXS0+Y29ubmVjdG9yKTsKIAkJCW1vZGVzZXQtPmNvbm5lY3Rv cnNbbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMrK10gPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZv W2ldLT5jb25uZWN0b3I7CiAJCQltb2Rlc2V0LT5mYiA9IGZiX2hlbHBlci0+ZmI7CiAJCQltb2Rl c2V0LT54ID0gb2Zmc2V0LT54OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBi L2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKaW5kZXggNTc2ZmFmNC4uN2UxMzEyNyAxMDA2NDQKLS0t IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCkBA IC0yNTc5LDcgKzI1NzksOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fZW5jb2RlciAqZHJt X2VuY29kZXJfZmluZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXJldHVybiBtbyA/IG9ial90 b19lbmNvZGVyKG1vKSA6IE5VTEw7CiB9CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9jb25u ZWN0b3IgKmRybV9jb25uZWN0b3JfZmluZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorLyogdGFr ZXMgYSByZWZlcmVuY2UgKi8KK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9jb25uZWN0b3IgKmRy bV9jb25uZWN0b3JfbG9va3VwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXVpbnQzMl90IGlk KQogewogCXN0cnVjdCBkcm1fbW9kZV9vYmplY3QgKm1vOwpAQCAtMjYyNSw2ICsyNjI2LDE2IEBA IHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZHJtX2ZyYW1lYnVmZmVyX3JlYWRfcmVmY291bnQoc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCiAJcmV0dXJuIGF0b21pY19yZWFkKCZmYi0+YmFzZS5y ZWZjb3VudC5yZWZjb3VudCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1fY29ubmVjdG9y X3JlZmVyZW5jZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCWRybV9tb2Rl X29iamVjdF9yZWZlcmVuY2UoJmNvbm5lY3Rvci0+YmFzZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg dm9pZCBkcm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCit7CisJZHJtX21vZGVfb2JqZWN0X3VucmVmZXJlbmNlKCZjb25uZWN0b3ItPmJhc2Up OworfQorCiAvKiBQbGFuZSBsaXN0IGl0ZXJhdG9yIGZvciBsZWdhY3kgKG92ZXJsYXkgb25seSkg cGxhbmVzLiAqLwogI2RlZmluZSBkcm1fZm9yX2VhY2hfbGVnYWN5X3BsYW5lKHBsYW5lLCBkZXYp IFwKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBsYW5lLCAmKGRldiktPm1vZGVfY29uZmlnLnBsYW5l X2xpc3QsIGhlYWQpIFwKLS0gCjIuNS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK