From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 2/6] drm/modes: add connector reference counting. (v2) Date: Tue, 3 May 2016 14:28:22 +1000 Message-ID: <1462249706-4759-2-git-send-email-airlied@gmail.com> References: <1462249706-4759-1-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1462249706-4759-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, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgdXNlcyB0aGUgcHJl dmlvdXMgY2hhbmdlcyB0byBhZGQgcmVmZXJlbmNlIGNvdW50cwp0byBkcm0gY29ubmVjdG9yIG9i amVjdHMuCgp2MjogbW92ZSBmYmRldiBjaGFuZ2VzIHRvIHRoZWlyIG93biBwYXRjaC4KYWRkIHNv bWUga2VybmVsZG9jCgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBm ZndsbC5jaD4KU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIHwgMTkgKysrKysrKysrKysrKysrKyst LQogZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgICB8IDI4ICsrKysrKysrKysrKysrKysrKysr KysrKy0tLS0KIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgfCAzMiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCmluZGV4IDhlZTFkYjguLjlkNWUzYzggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWMuYwpAQCAtMTU0LDYgKzE1NCw3IEBAIHZvaWQgZHJtX2F0b21pY19zdGF0 ZV9kZWZhdWx0X2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJCQkJCSAg ICAgICBzdGF0ZS0+Y29ubmVjdG9yX3N0YXRlc1tpXSk7CiAJCXN0YXRlLT5jb25uZWN0b3JzW2ld ID0gTlVMTDsKIAkJc3RhdGUtPmNvbm5lY3Rvcl9zdGF0ZXNbaV0gPSBOVUxMOworCQlkcm1fY29u bmVjdG9yX3VucmVmZXJlbmNlKGNvbm5lY3Rvcik7CiAJfQogCiAJZm9yIChpID0gMDsgaSA8IGNv bmZpZy0+bnVtX2NydGM7IGkrKykgewpAQCAtOTI0LDYgKzkyNSw3IEBAIGRybV9hdG9taWNfZ2V0 X2Nvbm5lY3Rvcl9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJaWYgKCFj b25uZWN0b3Jfc3RhdGUpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCisJZHJtX2Nvbm5l Y3Rvcl9yZWZlcmVuY2UoY29ubmVjdG9yKTsKIAlzdGF0ZS0+Y29ubmVjdG9yX3N0YXRlc1tpbmRl eF0gPSBjb25uZWN0b3Jfc3RhdGU7CiAJc3RhdGUtPmNvbm5lY3RvcnNbaW5kZXhdID0gY29ubmVj dG9yOwogCWNvbm5lY3Rvcl9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKQEAgLTE2MTQsMTIgKzE2MTYs MTkgQEAgcmV0cnk6CiAJCX0KIAogCQlvYmogPSBkcm1fbW9kZV9vYmplY3RfZmluZChkZXYsIG9i al9pZCwgRFJNX01PREVfT0JKRUNUX0FOWSk7Ci0JCWlmICghb2JqIHx8ICFvYmotPnByb3BlcnRp ZXMpIHsKKwkJaWYgKCFvYmopIHsKKwkJCXJldCA9IC1FTk9FTlQ7CisJCQlnb3RvIG91dDsKKwkJ fQorCisJCWlmICghb2JqLT5wcm9wZXJ0aWVzKSB7CisJCQlkcm1fbW9kZV9vYmplY3RfdW5yZWZl cmVuY2Uob2JqKTsKIAkJCXJldCA9IC1FTk9FTlQ7CiAJCQlnb3RvIG91dDsKIAkJfQogCiAJCWlm IChnZXRfdXNlcihjb3VudF9wcm9wcywgY291bnRfcHJvcHNfcHRyICsgY29waWVkX29ianMpKSB7 CisJCQlkcm1fbW9kZV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKIAkJCXJldCA9IC1FRkFVTFQ7 CiAJCQlnb3RvIG91dDsKIAkJfQpAQCAtMTYzMiwxMiArMTY0MSwxNCBAQCByZXRyeToKIAkJCXN0 cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7CiAKIAkJCWlmIChnZXRfdXNlcihwcm9wX2lkLCBwcm9w c19wdHIgKyBjb3BpZWRfcHJvcHMpKSB7CisJCQkJZHJtX21vZGVfb2JqZWN0X3VucmVmZXJlbmNl KG9iaik7CiAJCQkJcmV0ID0gLUVGQVVMVDsKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAogCQkJcHJv cCA9IGRybV9wcm9wZXJ0eV9maW5kKGRldiwgcHJvcF9pZCk7CiAJCQlpZiAoIXByb3ApIHsKKwkJ CQlkcm1fbW9kZV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKIAkJCQlyZXQgPSAtRU5PRU5UOwog CQkJCWdvdG8gb3V0OwogCQkJfQpAQCAtMTY0NSwxMyArMTY1NiwxNiBAQCByZXRyeToKIAkJCWlm IChjb3B5X2Zyb21fdXNlcigmcHJvcF92YWx1ZSwKIAkJCQkJICAgcHJvcF92YWx1ZXNfcHRyICsg Y29waWVkX3Byb3BzLAogCQkJCQkgICBzaXplb2YocHJvcF92YWx1ZSkpKSB7CisJCQkJZHJtX21v ZGVfb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CiAJCQkJcmV0ID0gLUVGQVVMVDsKIAkJCQlnb3Rv IG91dDsKIAkJCX0KIAogCQkJcmV0ID0gYXRvbWljX3NldF9wcm9wKHN0YXRlLCBvYmosIHByb3As IHByb3BfdmFsdWUpOwotCQkJaWYgKHJldCkKKwkJCWlmIChyZXQpIHsKKwkJCQlkcm1fbW9kZV9v YmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKIAkJCQlnb3RvIG91dDsKKwkJCX0KIAogCQkJY29waWVk X3Byb3BzKys7CiAJCX0KQEAgLTE2NjIsNiArMTY3Niw3IEBAIHJldHJ5OgogCQkJcGxhbmVfbWFz ayB8PSAoMSA8PCBkcm1fcGxhbmVfaW5kZXgocGxhbmUpKTsKIAkJCXBsYW5lLT5vbGRfZmIgPSBw bGFuZS0+ZmI7CiAJCX0KKwkJZHJtX21vZGVfb2JqZWN0X3VucmVmZXJlbmNlKG9iaik7CiAJfQog CiAJaWYgKGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQpIHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRj LmMKaW5kZXggNGU1YjAxNS4uYTc4ZTIwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKQEAgLTg2Miw2ICs4NjIs MTYgQEAgc3RhdGljIHZvaWQgZHJtX2Nvbm5lY3Rvcl9nZXRfY21kbGluZV9tb2RlKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJCSAgICAgIG1vZGUtPmludGVybGFjZSA/ICAiIGlu dGVybGFjZWQiIDogIiIpOwogfQogCitzdGF0aWMgdm9pZCBkcm1fY29ubmVjdG9yX2ZyZWUoc3Ry dWN0IGtyZWYgKmtyZWYpCit7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9CisJ CWNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciwgYmFzZS5yZWZjb3VudCk7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2OworCisJZHJtX21vZGVf b2JqZWN0X3VucmVnaXN0ZXIoZGV2LCAmY29ubmVjdG9yLT5iYXNlKTsKKwljb25uZWN0b3ItPmZ1 bmNzLT5kZXN0cm95KGNvbm5lY3Rvcik7Cit9CisKIC8qKgogICogZHJtX2Nvbm5lY3Rvcl9pbml0 IC0gSW5pdCBhIHByZWFsbG9jYXRlZCBjb25uZWN0b3IKICAqIEBkZXY6IERSTSBkZXZpY2UKQEAg LTg4Nyw3ICs4OTcsOSBAQCBpbnQgZHJtX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAKIAlkcm1fbW9kZXNldF9sb2NrX2FsbChkZXYpOwogCi0JcmV0ID0gZHJtX21vZGVf b2JqZWN0X2dldF9yZWcoZGV2LCAmY29ubmVjdG9yLT5iYXNlLCBEUk1fTU9ERV9PQkpFQ1RfQ09O TkVDVE9SLCBmYWxzZSwgTlVMTCk7CisJcmV0ID0gZHJtX21vZGVfb2JqZWN0X2dldF9yZWcoZGV2 LCAmY29ubmVjdG9yLT5iYXNlLAorCQkJCSAgICAgIERSTV9NT0RFX09CSkVDVF9DT05ORUNUT1Is CisJCQkJICAgICAgZmFsc2UsIGRybV9jb25uZWN0b3JfZnJlZSk7CiAJaWYgKHJldCkKIAkJZ290 byBvdXRfdW5sb2NrOwogCkBAIC0yMTQ3LDcgKzIxNTksNyBAQCBpbnQgZHJtX21vZGVfZ2V0Y29u bmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAltdXRleF9sb2Nr KCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAotCWNvbm5lY3RvciA9IGRybV9jb25uZWN0b3Jf ZmluZChkZXYsIG91dF9yZXNwLT5jb25uZWN0b3JfaWQpOworCWNvbm5lY3RvciA9IGRybV9jb25u ZWN0b3JfbG9va3VwKGRldiwgb3V0X3Jlc3AtPmNvbm5lY3Rvcl9pZCk7CiAJaWYgKCFjb25uZWN0 b3IpIHsKIAkJcmV0ID0gLUVOT0VOVDsKIAkJZ290byBvdXRfdW5sb2NrOwpAQCAtMjIzMSw2ICsy MjQzLDcgQEAgaW50IGRybV9tb2RlX2dldGNvbm5lY3RvcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAogb3V0OgogCWRybV9tb2Rlc2V0X3VubG9jaygmZGV2LT5tb2RlX2NvbmZp Zy5jb25uZWN0aW9uX211dGV4KTsKIAorCWRybV9jb25uZWN0b3JfdW5yZWZlcmVuY2UoY29ubmVj dG9yKTsKIG91dF91bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4 KTsKIApAQCAtMjg3NSwxMyArMjg4OCwxNCBAQCBpbnQgZHJtX21vZGVfc2V0Y3J0YyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQl9CiAKIAkJZm9yIChpID0gMDsgaSA8IGNy dGNfcmVxLT5jb3VudF9jb25uZWN0b3JzOyBpKyspIHsKKwkJCWNvbm5lY3Rvcl9zZXRbaV0gPSBO VUxMOwogCQkJc2V0X2Nvbm5lY3RvcnNfcHRyID0gKHVpbnQzMl90IF9fdXNlciAqKSh1bnNpZ25l ZCBsb25nKWNydGNfcmVxLT5zZXRfY29ubmVjdG9yc19wdHI7CiAJCQlpZiAoZ2V0X3VzZXIob3V0 X2lkLCAmc2V0X2Nvbm5lY3RvcnNfcHRyW2ldKSkgewogCQkJCXJldCA9IC1FRkFVTFQ7CiAJCQkJ Z290byBvdXQ7CiAJCQl9CiAKLQkJCWNvbm5lY3RvciA9IGRybV9jb25uZWN0b3JfZmluZChkZXYs IG91dF9pZCk7CisJCQljb25uZWN0b3IgPSBkcm1fY29ubmVjdG9yX2xvb2t1cChkZXYsIG91dF9p ZCk7CiAJCQlpZiAoIWNvbm5lY3RvcikgewogCQkJCURSTV9ERUJVR19LTVMoIkNvbm5lY3RvciBp ZCAlZCB1bmtub3duXG4iLAogCQkJCQkJb3V0X2lkKTsKQEAgLTI5MDksNiArMjkyMywxMiBAQCBv dXQ6CiAJaWYgKGZiKQogCQlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2UoZmIpOwogCisJaWYg KGNvbm5lY3Rvcl9zZXQpIHsKKwkJZm9yIChpID0gMDsgaSA8IGNydGNfcmVxLT5jb3VudF9jb25u ZWN0b3JzOyBpKyspIHsKKwkJCWlmIChjb25uZWN0b3Jfc2V0W2ldKQorCQkJCWRybV9jb25uZWN0 b3JfdW5yZWZlcmVuY2UoY29ubmVjdG9yX3NldFtpXSk7CisJCX0KKwl9CiAJa2ZyZWUoY29ubmVj dG9yX3NldCk7CiAJZHJtX21vZGVfZGVzdHJveShkZXYsIG1vZGUpOwogCWRybV9tb2Rlc2V0X3Vu bG9ja19hbGwoZGV2KTsKQEAgLTQ5OTksNyArNTAxOSw3IEBAIGludCBkcm1fbW9kZV9vYmpfc2V0 X3Byb3BlcnR5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJcHJv cGVydHkgPSBvYmpfdG9fcHJvcGVydHkocHJvcF9vYmopOwogCiAJaWYgKCFkcm1fcHJvcGVydHlf Y2hhbmdlX3ZhbGlkX2dldChwcm9wZXJ0eSwgYXJnLT52YWx1ZSwgJnJlZikpCi0JCWdvdG8gb3V0 OworCQlnb3RvIG91dF91bnJlZjsKIAogCXN3aXRjaCAoYXJnX29iai0+dHlwZSkgewogCWNhc2Ug RFJNX01PREVfT0JKRUNUX0NPTk5FQ1RPUjoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9j cnRjLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCmluZGV4IDYyNzk5ODkuLjY4MTAwYjggMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Ny dGMuaApAQCAtMjU3MSw3ICsyNTcxLDE1IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9lbmNv ZGVyICpkcm1fZW5jb2Rlcl9maW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuIG1v ID8gb2JqX3RvX2VuY29kZXIobW8pIDogTlVMTDsKIH0KIAotc3RhdGljIGlubGluZSBzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqZHJtX2Nvbm5lY3Rvcl9maW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CisvKioKKyAqIGRybV9jb25uZWN0b3JfbG9va3VwIC0gbG9va3VwIGNvbm5lY3RvciBvYmplY3QK KyAqIEBkZXY6IERSTSBkZXZpY2UKKyAqIEBpZDogY29ubmVjdG9yIG9iamVjdCBpZAorICoKKyAq IFRoaXMgZnVuY3Rpb24gbG9va3MgdXAgdGhlIGNvbm5lY3RvciBvYmplY3Qgc3BlY2lmaWVkIGJ5 IGlkCisgKiBhZGQgdGFrZXMgYSByZWZlcmVuY2UgdG8gaXQuCisgKi8KK3N0YXRpYyBpbmxpbmUg c3RydWN0IGRybV9jb25uZWN0b3IgKmRybV9jb25uZWN0b3JfbG9va3VwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAJCXVpbnQzMl90IGlkKQogewogCXN0cnVjdCBkcm1fbW9kZV9vYmplY3QgKm1v OwpAQCAtMjYzOSw2ICsyNjQ3LDI4IEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZHJtX2ZyYW1l YnVmZmVyX3JlYWRfcmVmY291bnQoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCiAJcmV0dXJu IGF0b21pY19yZWFkKCZmYi0+YmFzZS5yZWZjb3VudC5yZWZjb3VudCk7CiB9CiAKKy8qKgorICog ZHJtX2Nvbm5lY3Rvcl9yZWZlcmVuY2UgLSBpbmNyIHRoZSBjb25uZWN0b3IgcmVmY250CisgKiBA Y29ubmVjdG9yOiBjb25uZWN0b3IKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhl IGNvbm5lY3RvcidzIHJlZmNvdW50LgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2Nvbm5l Y3Rvcl9yZWZlcmVuY2Uoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlkcm1f bW9kZV9vYmplY3RfcmVmZXJlbmNlKCZjb25uZWN0b3ItPmJhc2UpOworfQorCisvKioKKyAqIGRy bV9jb25uZWN0b3JfdW5yZWZlcmVuY2UgLSB1bnJlZiBhIGNvbm5lY3RvcgorICogQGNvbm5lY3Rv cjogY29ubmVjdG9yIHRvIHVucmVmCisgKgorICogVGhpcyBmdW5jdGlvbiBkZWNyZW1lbnRzIHRo ZSBjb25uZWN0b3IncyByZWZjb3VudCBhbmQgZnJlZXMgaXQgaWYgaXQgZHJvcHMgdG8gemVyby4K KyAqLworc3RhdGljIGlubGluZSB2b2lkIGRybV9jb25uZWN0b3JfdW5yZWZlcmVuY2Uoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlkcm1fbW9kZV9vYmplY3RfdW5yZWZlcmVu Y2UoJmNvbm5lY3Rvci0+YmFzZSk7Cit9CisKIC8qIFBsYW5lIGxpc3QgaXRlcmF0b3IgZm9yIGxl Z2FjeSAob3ZlcmxheSBvbmx5KSBwbGFuZXMuICovCiAjZGVmaW5lIGRybV9mb3JfZWFjaF9sZWdh Y3lfcGxhbmUocGxhbmUsIGRldikgXAogCWxpc3RfZm9yX2VhY2hfZW50cnkocGxhbmUsICYoZGV2 KS0+bW9kZV9jb25maWcucGxhbmVfbGlzdCwgaGVhZCkgXAotLSAKMi41LjUKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=