From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [RFC 1/2] core: Add generic object registry implementation Date: Tue, 4 Nov 2014 17:29:27 +0100 Message-ID: <1415118568-18771-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f47.google.com (mail-pa0-f47.google.com [209.85.220.47]) by gabe.freedesktop.org (Postfix) with ESMTP id 69B9D6E0A4 for ; Tue, 4 Nov 2014 08:29:34 -0800 (PST) Received: by mail-pa0-f47.google.com with SMTP id kx10so14621434pab.6 for ; Tue, 04 Nov 2014 08:29:34 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Greg Kroah-Hartman Cc: Daniel Vetter , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCkFkZCBhIGdlbmVyaWMg aW1wbGVtZW50YXRpb24gb2YgYW4gb2JqZWN0IHJlZ2lzdHJ5LiBUaGlzIHRhcmdldHMgZHJpdmVy cwphbmQgc3Vic3lzdGVtcyB0aGF0IHByb3ZpZGUgYXV4aWxpYXJ5IG9iamVjdHMgdGhhdCBvdGhl ciBkcml2ZXJzIG5lZWQgdG8KbG9vayB1cC4gVGhlIGdvYWwgaXMgdG8gcHV0IHRoZSBkaWZmaWN1 bHQgcGFydHMgKGtlZXAgb2JqZWN0IHJlZmVyZW5jZXMsCm1vZHVsZSB1c2FnZSBjb3VudCwgLi4u KSBpbnRvIGNvcmUgY29kZSBzbyB0aGF0IGluZGl2aWR1YWwgc3Vic3lzdGVtcyBkbwpub3QgaGF2 ZSB0byBkZWFsIHdpdGggdGhlbS4KClRoZSBpbnRlbnRpb24gaXMgZm9yIHN1YnN5c3RlbXMgdG8g aW5zdGFudGlhdGUgYSBzdHJ1Y3QgcmVnaXN0cnkgYW5kIHVzZQphIHN0cnVjdCByZWdpc3RyeV9y ZWNvcmQgZW1iZWRkZWQgaW50byBhIHN1YnN5c3RlbS1zcGVjaWZpYyBzdHJ1Y3R1cmUgdG8KcHJv dmlkZSBhIHN1YnN5c3RlbS1zcGVjaWZpYyBBUEkgYXJvdW5kIHRoYXQuCgpTaWduZWQtb2ZmLWJ5 OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgotLS0KIGRyaXZlcnMvYmFzZS9N YWtlZmlsZSAgICB8ICAgMiArLQogZHJpdmVycy9iYXNlL3JlZ2lzdHJ5LmMgIHwgMTQ3ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2xpbnV4 L3JlZ2lzdHJ5LmggfCAgNjIgKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg MjEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2Jhc2UvcmVnaXN0cnkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvcmVn aXN0cnkuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9NYWtlZmlsZSBiL2RyaXZlcnMvYmFz ZS9NYWtlZmlsZQppbmRleCA1M2MzZmUxYWViMjkuLjI1MDI2MmQxYWYyYyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9iYXNlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvYmFzZS9NYWtlZmlsZQpAQCAtNCw3 ICs0LDcgQEAgb2JqLXkJCQk6PSBjb21wb25lbnQubyBjb3JlLm8gYnVzLm8gZGQubyBzeXNjb3Jl Lm8gXAogCQkJICAgZHJpdmVyLm8gY2xhc3MubyBwbGF0Zm9ybS5vIFwKIAkJCSAgIGNwdS5vIGZp cm13YXJlLm8gaW5pdC5vIG1hcC5vIGRldnJlcy5vIFwKIAkJCSAgIGF0dHJpYnV0ZV9jb250YWlu ZXIubyB0cmFuc3BvcnRfY2xhc3MubyBcCi0JCQkgICB0b3BvbG9neS5vIGNvbnRhaW5lci5vIHBy b3BlcnR5Lm8KKwkJCSAgIHRvcG9sb2d5Lm8gY29udGFpbmVyLm8gcHJvcGVydHkubyByZWdpc3Ry eS5vCiBvYmotJChDT05GSUdfREVWVE1QRlMpCSs9IGRldnRtcGZzLm8KIG9iai0kKENPTkZJR19E TUFfQ01BKSArPSBkbWEtY29udGlndW91cy5vCiBvYmoteQkJCSs9IHBvd2VyLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9iYXNlL3JlZ2lzdHJ5LmMgYi9kcml2ZXJzL2Jhc2UvcmVnaXN0cnkuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlmNTEwZjYyMzdiNwotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvYmFzZS9yZWdpc3RyeS5jCkBAIC0wLDAgKzEsMTQ3IEBACisv KgorICogQ29weXJpZ2h0IChDKSAyMDE0LCBOVklESUEgQ29ycG9yYXRpb24uICBBbGwgcmlnaHRz IHJlc2VydmVkLgorICoKKyAqIFRoaXMgZmlsZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgR1BMIHYy LgorICovCisKKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdpc3RyeS5oPgorCitzdGF0aWMgaW5saW5lIHN0cnVj dCByZWdpc3RyeV9yZWNvcmQgKnRvX3JlZ2lzdHJ5X3JlY29yZChzdHJ1Y3Qga3JlZiAqa3JlZikK K3sKKwlyZXR1cm4gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCByZWdpc3RyeV9yZWNvcmQsIGty ZWYpOworfQorCitzdGF0aWMgdm9pZCByZWdpc3RyeV9yZWNvcmRfcmVsZWFzZShzdHJ1Y3Qga3Jl ZiAqa3JlZikKK3sKKwlzdHJ1Y3QgcmVnaXN0cnlfcmVjb3JkICpyZWNvcmQgPSB0b19yZWdpc3Ry eV9yZWNvcmQoa3JlZik7CisKKwlyZWNvcmQtPnJlbGVhc2UocmVjb3JkKTsKK30KKworLyoqCisg KiByZWdpc3RyeV9yZWNvcmRfaW5pdCAtIGluaXRpYWxpemUgYSByZWdpc3RyeSByZWNvcmQKKyAq IEByZWNvcmQ6IHJlY29yZCB0byBpbml0aWFsaXplCisgKgorICogU2V0cyB1cCBpbnRlcm5hbCBm aWVsZHMgb2YgdGhlIHJlZ2lzdHJ5IHJlY29yZCBzbyB0aGF0IGl0IGNhbiBzdWJzZXF1ZW50bHkK KyAqIGJlIGFkZGVkIHRvIGEgcmVnaXN0cnkuCisgKi8KK3ZvaWQgcmVnaXN0cnlfcmVjb3JkX2lu aXQoc3RydWN0IHJlZ2lzdHJ5X3JlY29yZCAqcmVjb3JkKQoreworCUlOSVRfTElTVF9IRUFEKCZy ZWNvcmQtPmxpc3QpOworCWtyZWZfaW5pdCgmcmVjb3JkLT5rcmVmKTsKK30KKworLyoqCisgKiBy ZWdpc3RyeV9yZWNvcmRfcmVmIC0gcmVmZXJlbmNlIG9uIHRoZSByZWdpc3RyeSByZWNvcmQKKyAq IEByZWNvcmQ6IHJlY29yZCB0byByZWZlcmVuY2UKKyAqCisgKiBJbmNyZWFzZXMgdGhlIHJlZmVy ZW5jZSBjb3VudCBvbiB0aGUgcmVjb3JkIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBpdC4KKyAq CisgKiBSZXR1cm46IEEgcG9pbnRlciB0byB0aGUgcmVjb3JkIG9uIHN1Y2Nlc3Mgb3IgTlVMTCBv biBmYWlsdXJlLgorICovCitzdHJ1Y3QgcmVnaXN0cnlfcmVjb3JkICpyZWdpc3RyeV9yZWNvcmRf cmVmKHN0cnVjdCByZWdpc3RyeV9yZWNvcmQgKnJlY29yZCkKK3sKKwlpZiAoIXJlY29yZCkKKwkJ cmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFJlZnVzZSB0byBnaXZlIG91dCBhbnkgbW9yZSByZWZl cmVuY2VzIGlmIHRoZSBtb2R1bGUgb3duaW5nIHRoZQorCSAqIHJlY29yZCBpcyBiZWluZyByZW1v dmVkLgorCSAqLworCWlmICghdHJ5X21vZHVsZV9nZXQocmVjb3JkLT5vd25lcikpCisJCXJldHVy biBOVUxMOworCisJa3JlZl9nZXQoJnJlY29yZC0+a3JlZik7CisKKwlyZXR1cm4gcmVjb3JkOwor fQorCisvKioKKyAqIHJlZ2lzdHJ5X3JlY29yZF91bnJlZiAtIGRyb3AgYSByZWZlcmVuY2UgdG8g YSByZWdpc3RyeSByZWNvcmQKKyAqIEByZWNvcmQ6IHJlY29yZCB0byB1bnJlZmVyZW5jZQorICoK KyAqIERlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSByZWNvcmQuIFdoZW4gdGhl IHJlZmVyZW5jZSBjb3VudAorICogcmVhY2hlcyB6ZXJvIHRoZSByZWNvcmQgd2lsbCBiZSBkZXN0 cm95ZWQuCisgKi8KK3ZvaWQgcmVnaXN0cnlfcmVjb3JkX3VucmVmKHN0cnVjdCByZWdpc3RyeV9y ZWNvcmQgKnJlY29yZCkKK3sKKwlpZiAocmVjb3JkKSB7CisJCS8qCisJCSAqIEtlZXAgYSBjb3B5 IG9mIHRoZSBtb2R1bGUgb3duZXIgc2luY2UgdGhlIHJlY29yZCBtYXkKKwkJICogZGlzYXBwZWFy IGR1cmluZyB0aGUga3JlZl9wdXQoKS4KKwkJICovCisJCXN0cnVjdCBtb2R1bGUgKm93bmVyID0g cmVjb3JkLT5vd25lcjsKKworCQlrcmVmX3B1dCgmcmVjb3JkLT5rcmVmLCByZWdpc3RyeV9yZWNv cmRfcmVsZWFzZSk7CisJCW1vZHVsZV9wdXQob3duZXIpOworCX0KK30KKworLyoqCisgKiByZWdp c3RyeV9hZGQgLSBhZGQgYSByZWNvcmQgdG8gYSByZWdpc3RyeQorICogQHJlZ2lzdHJ5OiByZWdp c3RyeSB0byBhZGQgdGhlIHJlY29yZCB0bworICogQHJlY29yZDogcmVjb3JkIHRvIGFkZAorICoK KyAqIFRyaWVzIHRvIGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG1vZHVsZSBv d25pbmcgdGhlIHJlZ2lzdHJ5LiBJZgorICogc3VjY2Vzc2Z1bCBhZGRzIHRoZSBuZXcgcmVjb3Jk IHRvIHRoZSByZWdpc3RyeS4KKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0 aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworaW50IHJlZ2lzdHJ5X2FkZChzdHJ1Y3Qg cmVnaXN0cnkgKnJlZ2lzdHJ5LCBzdHJ1Y3QgcmVnaXN0cnlfcmVjb3JkICpyZWNvcmQpCit7CisJ aWYgKCF0cnlfbW9kdWxlX2dldChyZWdpc3RyeS0+b3duZXIpKQorCQlyZXR1cm4gLUVOT0RFVjsK KworCW11dGV4X2xvY2soJnJlZ2lzdHJ5LT5sb2NrKTsKKwlsaXN0X2FkZF90YWlsKCZyZWNvcmQt Pmxpc3QsICZyZWdpc3RyeS0+bGlzdCk7CisJbXV0ZXhfdW5sb2NrKCZyZWdpc3RyeS0+bG9jayk7 CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiByZWdpc3RyeV9yZW1vdmUgLSByZW1vdmUgYSBy ZWNvcmQgZnJvbSBhIHJlZ2lzdHJ5CisgKiBAcmVnaXN0cnk6IHJlZ2lzdHJ5IHRvIHJlbW92ZSB0 aGUgcmVjb3JkIGZyb20KKyAqIEByZWNvcmQ6IHJlY29yZCB0byByZW1vdmUKKyAqCisgKiBEZWNy ZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiB0aGUgbW9kdWxlIG93bmluZyB0aGUgcmVnaXN0 cnkuCisgKi8KK3ZvaWQgcmVnaXN0cnlfcmVtb3ZlKHN0cnVjdCByZWdpc3RyeSAqcmVnaXN0cnks CisJCSAgICAgc3RydWN0IHJlZ2lzdHJ5X3JlY29yZCAqcmVjb3JkKQoreworCW11dGV4X2xvY2so JnJlZ2lzdHJ5LT5sb2NrKTsKKwlsaXN0X2RlbF9pbml0KCZyZWNvcmQtPmxpc3QpOworCW11dGV4 X3VubG9jaygmcmVnaXN0cnktPmxvY2spOworCisJbW9kdWxlX3B1dChyZWdpc3RyeS0+b3duZXIp OworfQorCisjaWZkZWYgQ09ORklHX09GCisvKioKKyAqIHJlZ2lzdHJ5X2ZpbmRfYnlfb2Zfbm9k ZSAtIGxvb2sgdXAgYW4gb2JqZWN0IGJ5IGRldmljZSBub2RlIGluIGEgcmVnaXN0cnkKKyAqIEBy ZWdpc3RyeTogcmVnaXN0cnkgdG8gc2VhcmNoCisgKiBAbnA6IGRldmljZSBub2RlIHRvIG1hdGNo IG9uCisgKgorICogUmV0dXJuOiBBIHBvaW50ZXIgdG8gdGhlIHJlY29yZCBtYXRjaGluZyBAbnAg b3IgTlVMTCBpZiBubyBzdWNoIHJlY29yZCB3YXMKKyAqIGZvdW5kLgorICovCitzdHJ1Y3QgcmVn aXN0cnlfcmVjb3JkICpyZWdpc3RyeV9maW5kX2J5X29mX25vZGUoc3RydWN0IHJlZ2lzdHJ5ICpy ZWdpc3RyeSwKKwkJCQkJCSBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQoreworCXN0cnVjdCByZWdp c3RyeV9yZWNvcmQgKnJlY29yZDsKKworCW11dGV4X2xvY2soJnJlZ2lzdHJ5LT5sb2NrKTsKKwor CWxpc3RfZm9yX2VhY2hfZW50cnkocmVjb3JkLCAmcmVnaXN0cnktPmxpc3QsIGxpc3QpCisJCWlm IChyZWNvcmQtPmRldi0+b2Zfbm9kZSA9PSBucCkKKwkJCWdvdG8gb3V0OworCisJcmVjb3JkID0g TlVMTDsKKworb3V0OgorCW11dGV4X3VubG9jaygmcmVnaXN0cnktPmxvY2spOworCXJldHVybiBy ZWNvcmQ7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVnaXN0cnkuaCBi L2luY2x1ZGUvbGludXgvcmVnaXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmE4MDdmNDEyNDczNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgv cmVnaXN0cnkuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCBO VklESUEgQ29ycG9yYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgZmls ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgR1BMIHYyLgorICovCisKKyNpZm5kZWYgX19MSU5VWF9S RUdJU1RSWV9ICisjZGVmaW5lIF9fTElOVVhfUkVHSVNUUllfSAorCisjaW5jbHVkZSA8bGludXgv a3JlZi5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5o PgorCitzdHJ1Y3QgZGV2aWNlOworc3RydWN0IGRldmljZV9ub2RlOworc3RydWN0IG1vZHVsZTsK Kworc3RydWN0IHJlZ2lzdHJ5OworCisvKioKKyAqIHN0cnVjdCByZWdpc3RyeV9yZWNvcmQgLSBy ZWdpc3RyeSByZWNvcmQgb2JqZWN0CisgKiBAbGlzdDogZW50cnkgaW4gcmVnaXN0cnkgZm9yIHRo aXMgcmVjb3JkCisgKiBAb3duZXI6IG93bmVyIG1vZHVsZQorICogQGtyZWY6IHJlZmVyZW5jZSBj b3VudAorICogQGRldjogcGFyZW50IGRldmljZQorICogQHJlbGVhc2U6IGNhbGxiYWNrIHRvIGRl c3Ryb3kgYSByZWNvcmQgd2hlbiBubyByZWZlcmVuY2UgYXJlIGxlZnQKKyAqLworc3RydWN0IHJl Z2lzdHJ5X3JlY29yZCB7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCXN0cnVjdCBtb2R1bGUg Km93bmVyOworCXN0cnVjdCBrcmVmIGtyZWY7CisJc3RydWN0IGRldmljZSAqZGV2OworCisJdm9p ZCAoKnJlbGVhc2UpKHN0cnVjdCByZWdpc3RyeV9yZWNvcmQgKnJlY29yZCk7Cit9OworCit2b2lk IHJlZ2lzdHJ5X3JlY29yZF9pbml0KHN0cnVjdCByZWdpc3RyeV9yZWNvcmQgKnJlY29yZCk7Citz dHJ1Y3QgcmVnaXN0cnlfcmVjb3JkICpyZWdpc3RyeV9yZWNvcmRfcmVmKHN0cnVjdCByZWdpc3Ry eV9yZWNvcmQgKnJlY29yZCk7Cit2b2lkIHJlZ2lzdHJ5X3JlY29yZF91bnJlZihzdHJ1Y3QgcmVn aXN0cnlfcmVjb3JkICpyZWNvcmQpOworCisvKioKKyAqIHN0cnVjdCByZWdpc3RyeSAtIGdlbmVy aWMgb2JqZWN0IHJlZ2lzdHJ5CisgKiBAbGlzdDogbGlzdCBoZWFkIG9mIG9iamVjdHMKKyAqIEBv d25lcjogb3duZXIgbW9kdWxlCisgKiBAbG9jazogbG9jayBmb3Igb2JqZWN0IGxpc3QKKyAqLwor c3RydWN0IHJlZ2lzdHJ5IHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisJc3RydWN0IG1vZHVs ZSAqb3duZXI7CisJc3RydWN0IG11dGV4IGxvY2s7Cit9OworCitpbnQgcmVnaXN0cnlfYWRkKHN0 cnVjdCByZWdpc3RyeSAqcmVnaXN0cnksIHN0cnVjdCByZWdpc3RyeV9yZWNvcmQgKnJlY29yZCk7 Cit2b2lkIHJlZ2lzdHJ5X3JlbW92ZShzdHJ1Y3QgcmVnaXN0cnkgKnJlZ2lzdHJ5LAorCQkgICAg IHN0cnVjdCByZWdpc3RyeV9yZWNvcmQgKnJlY29yZCk7CisKKyNpZmRlZiBDT05GSUdfT0YKK3N0 cnVjdCByZWdpc3RyeV9yZWNvcmQgKnJlZ2lzdHJ5X2ZpbmRfYnlfb2Zfbm9kZShzdHJ1Y3QgcmVn aXN0cnkgKnJlZ2lzdHJ5LAorCQkJCQkJIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApOworI2VuZGlm CisKKyNlbmRpZgotLSAKMi4xLjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==