From mboxrd@z Thu Jan 1 00:00:00 1970 From: Egbert Eich Subject: [PATCH v3] DRM/KMS/EDID: Cache EDID blobs with extensions (v3) Date: Thu, 22 Nov 2012 09:43:13 -0500 Message-ID: <1353595393-23118-1-git-send-email-eich@suse.com> References: <1353579788-30637-14-git-send-email-eich@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.187]) by gabe.freedesktop.org (Postfix) with ESMTP id 7B64DE5ED4 for ; Thu, 22 Nov 2012 07:10:03 -0800 (PST) In-Reply-To: <1353579788-30637-14-git-send-email-eich@suse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: Egbert Eich , tiwai@suse.com List-Id: dri-devel@lists.freedesktop.org QWNjb3JkaW5nIHRoZSB0aGUgVkVTQSBzcGVjcyB0aGVyZSBjYW4gYmUgdXAgdG8gMjU0IEVFRElE IGV4dGVuc2lvbiBibG9ja3MuClNpbmNlIHdlIG1heSByZWFkIHRoZSBFRElEIChpbmNsdWRpbmcg ZXh0ZW5zaW9ucykgaW4gMTAgc2Vjb25kIGludGVydmFscyB0bwpwcm9iZSBmb3IgZGlzcGxheSBo b3RwbHVnZ2luZyAoYXQgbGVhc3QgaW4gY2FzZXMgd2hlcmUgbm8gaGFyZHdhcmUgaG90cGx1Zwpk ZXRlY3Rpb24gZXhpc3RzKSBhbmQgSTJDIHRyYW5zZmVyIGlzIHJhdGhlciBzbG93IHdlIG1heSBl bmQgdXAgY29uc3VtaW5nCmEgY29uc2lkZXJhYmxlIGFtb3VudCBvbiBDUFUgdGltZSBmb3IganVz dCB0aGF0LgpUaGlzIHBhdGNoIGNhY2hlcyB0aGUgRURJRCBibG9jayBpZiBpdCBjb250YWlucyBh dCBsZWFzdCBvbmUgZXh0ZW5zaW9uLgpUbyBkZXRlcm1pbmUgaWYgdGhlIGJsb2NrcyBtYXRjaCB3 ZSBvbmx5IHRyYW5mZXIgdGhlIGJhc2UgYmxvY2ssIG9uIGEgbWF0Y2gKd2UgdXNlIHRoZSBjYWNo ZWQgZGF0YS4KClYyOiBVc2Uga21lbWR1cCgpIGluc3RlYWQgb2YgYSBrbWFsbG9jKCkvbWVtY3B5 KCkgY29tYm8sCiAgICBlcmFzZSBjYWNoZSB3aGVuIHJlYWRpbmcgYSAnZmlybXdhcmUnLXN1cHBs aWVkIEVESUQgb3Igb24gZXJyb3IuClYzOiBVbmNhY2hlIHdoZW4gb25seSBvbmUgZXh0ZW5zaW9u IGJsb2NrIGlzIGZvdW5kLiBUaGlzIGNodW5rIGhhZAogICAgYWNjaWRlbnRhbGx5IGdvbmUgaW50 byB0aGUgbmV4dCBwYXRjaCBvZiB0aGUgc2VyaWVzLiBGb3VuZCBieQogICAgVmlsbGUgU3lyasOk bMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4uCgpTaWduZWQtb2ZmLWJ5OiBFZ2Jl cnQgRWljaCA8ZWljaEBzdXNlLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyB8 ICAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMgfCAgIDYwICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAg IHwgICAgMSArCiBpbmNsdWRlL2RybS9kcm1fZWRpZC5oICAgICB8ICAgIDEgKwogNCBmaWxlcyBj aGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKaW5k ZXggMzUzMzYwOS4uZTI4MzM1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKQEAgLTU5OCw2ICs1OTgsNyBAQCB2 b2lkIGRybV9jb25uZWN0b3JfY2xlYW51cChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KQogCQlkcm1fbW9kZV9yZW1vdmUoY29ubmVjdG9yLCBtb2RlKTsKIAogCW11dGV4X2xvY2soJmRl di0+bW9kZV9jb25maWcubXV0ZXgpOworCWRybV9jYWNoZV9lZGlkKGNvbm5lY3RvciwgTlVMTCk7 CiAJZHJtX21vZGVfb2JqZWN0X3B1dChkZXYsICZjb25uZWN0b3ItPmJhc2UpOwogCWxpc3RfZGVs KCZjb25uZWN0b3ItPmhlYWQpOwogCWRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3Rvci0tOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2VkaWQuYwppbmRleCBlMjY5NzM5Li5kZDBkZjYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2VkaWQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwpAQCAtNDE5 LDYgKzQxOSwzOCBAQCBmaXh1cF9lZGlkKHU4ICoqYmxvY2twLCBpbnQgdmFsaWRfZXh0ZW5zaW9u cykKIAl9CiB9CiAKK3N0YXRpYyBib29sCitjb21wYXJlX2dldF9lZGlkX2Zyb21fY2FjaGUoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKiplZGlkcCkKK3sKKwlp ZiAoY29ubmVjdG9yLT5lZGlkX2NhY2hlICYmCisJICAgIGNvbm5lY3Rvci0+ZWRpZF9jYWNoZS0+ cHJvZF9jb2RlWzBdID09ICgqZWRpZHApLT5wcm9kX2NvZGVbMF0gJiYKKwkgICAgY29ubmVjdG9y LT5lZGlkX2NhY2hlLT5wcm9kX2NvZGVbMV0gPT0gKCplZGlkcCktPnByb2RfY29kZVsxXSAmJgor CSAgICBjb25uZWN0b3ItPmVkaWRfY2FjaGUtPnNlcmlhbCA9PSAoKmVkaWRwKS0+c2VyaWFsICYm CisJICAgIGNvbm5lY3Rvci0+ZWRpZF9jYWNoZS0+aW5wdXQgPT0gKCplZGlkcCktPmlucHV0KSB7 CisJCWludCBzaXplID0gKGNvbm5lY3Rvci0+ZWRpZF9jYWNoZS0+ZXh0ZW5zaW9ucyArIDEpICog RURJRF9MRU5HVEg7CisJCXN0cnVjdCBlZGlkICpuZXcgPSBrbWVtZHVwKGNvbm5lY3Rvci0+ZWRp ZF9jYWNoZSwgc2l6ZSwgR0ZQX0tFUk5FTCk7CisJCWlmICghbmV3KQorCQkJcmV0dXJuIGZhbHNl OworCQlEUk1fREVCVUdfS01TKCJHb3QgRURJRCBmb3IgJXMgZnJvbSBjYWNoZS5cbiIsIGRybV9n ZXRfY29ubmVjdG9yX25hbWUoY29ubmVjdG9yKSk7CisJCWtmcmVlKCplZGlkcCk7CisJCSplZGlk cCA9IG5ldzsKKwkJcmV0dXJuIHRydWU7CisJfQorCXJldHVybiBmYWxzZTsKK30KKwordm9pZAor ZHJtX2NhY2hlX2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVk aWQgKmVkaWQpCit7CisJc3RydWN0IGVkaWQgKm5ldyA9IE5VTEw7CisJa2ZyZWUoY29ubmVjdG9y LT5lZGlkX2NhY2hlKTsKKwlpZiAoZWRpZCkgeworCQlpbnQgc2l6ZSA9IChlZGlkLT5leHRlbnNp b25zICsgMSkgKiBFRElEX0xFTkdUSDsKKwkJbmV3ID0ga21lbWR1cChlZGlkLCBzaXplLCBHRlBf S0VSTkVMKTsKKwl9CisJY29ubmVjdG9yLT5lZGlkX2NhY2hlID0gbmV3OworfQorCiBzdGF0aWMg dTggKgogZHJtX2RvX2dldF9lZGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0 cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKIHsKQEAgLTQyOSwzNSArNDYxLDQxIEBAIGRybV9k b19nZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmFkYXB0ZXIpCiAjaWZkZWYgQ09ORklHX0RSTV9MT0FEX0VESURfRklSTVdBUkUKIAkv KiBjaGVjayBpZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIGEgJ2Zpcm13YXJlJyBFRElEIGZpbGUg Ki8KIAlibG9jayA9ICh1OCAqKWRybV9sb2FkX2VkaWRfZmlybXdhcmUoY29ubmVjdG9yKTsKLQlp ZiAoYmxvY2spCisJaWYgKGJsb2NrKSB7CisJCWRybV9jYWNoZV9lZGlkKGNvbm5lY3RvciwgTlVM TCk7CiAJCXJldHVybiBibG9jazsKKwl9CiAjZW5kaWYKIAogCWlmICgoYmxvY2sgPSBrbWFsbG9j KEVESURfTEVOR1RILCBHRlBfS0VSTkVMKSkgPT0gTlVMTCkKLQkJcmV0dXJuIE5VTEw7CisJCWdv dG8gZXJyb3I7CiAKIAkvKiBiYXNlIGJsb2NrIGZldGNoICovCiAJZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykgewogCQlpZiAoZHJtX2RvX3Byb2JlX2RkY19lZGlkKGFkYXB0ZXIsIGJsb2NrLCAwLCBF RElEX0xFTkdUSCkpCi0JCQlnb3RvIG91dDsKKwkJCWdvdG8gZXJyb3JfZnJlZTsKIAkJaWYgKGRy bV9lZGlkX2Jsb2NrX3ZhbGlkKGJsb2NrLCAwLCBwcmludF9iYWRfZWRpZCkpCiAJCQlicmVhazsK IAkJaWYgKGkgPT0gMCAmJiBkcm1fZWRpZF9pc196ZXJvKGJsb2NrLCBFRElEX0xFTkdUSCkpIHsK IAkJCWNvbm5lY3Rvci0+bnVsbF9lZGlkX2NvdW50ZXIrKzsKLQkJCWdvdG8gY2FycDsKKwkJCWdv dG8gZXJyb3JfY2FycDsKIAkJfQogCX0KIAlpZiAoaSA9PSA0KQotCQlnb3RvIGNhcnA7CisJCWdv dG8gZXJyb3JfY2FycDsKIAotCS8qIGlmIHRoZXJlJ3Mgbm8gZXh0ZW5zaW9ucywgd2UncmUgZG9u ZSAqLworCS8qIGlmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zLCB3ZSdyZSBkb25lIC0gZG9uJ3Qg Ym90aGVyIGNhY2hpbmcgKi8KIAlpZiAoYmxvY2tbRURJRF9FWFRFTlNJT05fRkxBR19PRkZTRVRd ID09IDApCi0JCXJldHVybiBibG9jazsKKwkJZ290byBkb25lOwogCiAJLyogZG9uJ3QgZXhwZWN0 IGV4dGVuc2lvbiBibG9ja3MgaW4gRURJRCBWZXJzaW9ucyA8IDEuMzogcmV0dXJuIGJhc2UgYmxv Y2sgd2l0aCBjb3JyZWN0IGV4dGVuc2lvbiBmbGFnICovCiAJaWYgKGJsb2NrW0VESURfVkVSU0lP Tl9NSU5PUl9PRkZTRVRdIDwgMykKIAkJZ290byBkb25lX2ZpeF9leHRlbnNpb25fY291bnQ7CiAK KwkvKiBzZWUgaWYgRURJRCBpcyBpbiB0aGUgY2FjaGUgLSBubyBuZWVkIHRvIHJlYWQgYWxsIGV4 dGVuc2lvbiBibG9ja3MgKi8KKwlpZiAoY29tcGFyZV9nZXRfZWRpZF9mcm9tX2NhY2hlKGNvbm5l Y3RvciwgKHN0cnVjdCBlZGlkICoqKSZibG9jaykpCisJCXJldHVybiBibG9jazsKKwogCW5ldyA9 IGtyZWFsbG9jKGJsb2NrLCAoYmxvY2tbRURJRF9FWFRFTlNJT05fRkxBR19PRkZTRVRdICsgMSkg KiBFRElEX0xFTkdUSCwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFuZXcpIHsKIAkJZGV2X3dhcm4oY29u bmVjdG9yLT5kZXYtPmRldiwgIiVzOiBjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciAlZCBFRElE IGJsb2NrczogdHJ1bmNhdGluZy5cbiIsCkBAIC00OTcsMTggKzUzNSwyMiBAQCBkcm1fZG9fZ2V0 X2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGkyY19hZGFwdGVy ICphZGFwdGVyKQogCiBkb25lX2ZpeF9leHRlbnNpb25fY291bnQ6CiAJZml4dXBfZWRpZCgmYmxv Y2ssIHZhbGlkX2V4dGVuc2lvbnMpOworZG9uZToKKwlkcm1fY2FjaGVfZWRpZChjb25uZWN0b3Is ICh2YWxpZF9leHRlbnNpb25zID4gMCkgPyAoc3RydWN0IGVkaWQgKilibG9jayA6IE5VTEwpOwog CiAJcmV0dXJuIGJsb2NrOwogCi1jYXJwOgorZXJyb3JfY2FycDoKIAlpZiAocHJpbnRfYmFkX2Vk aWQpIHsKIAkJZGV2X3dhcm4oY29ubmVjdG9yLT5kZXYtPmRldiwgIiVzOiBFRElEIGJsb2NrICVk IGludmFsaWQuXG4iLAogCQkJIGRybV9nZXRfY29ubmVjdG9yX25hbWUoY29ubmVjdG9yKSwgaik7 CiAJfQogCWNvbm5lY3Rvci0+YmFkX2VkaWRfY291bnRlcisrOwogCi1vdXQ6CitlcnJvcl9mcmVl OgogCWtmcmVlKGJsb2NrKTsKK2Vycm9yOgorCWRybV9jYWNoZV9lZGlkKGNvbm5lY3RvciwgTlVM TCk7CiAJcmV0dXJuIE5VTEw7CiB9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRj LmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCmluZGV4IDQ5ZGQ4YzIuLjZhMTA1NGMgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMu aApAQCAtNjAxLDYgKzYwMSw3IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKIAlzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXI7IC8qIGN1cnJlbnRseSBhY3RpdmUgZW5jb2RlciAqLwogCiAJLyog RURJRCBiaXRzICovCisJc3RydWN0IGVkaWQgKmVkaWRfY2FjaGU7CiAJdWludDhfdCBlbGRbTUFY X0VMRF9CWVRFU107CiAJYm9vbCBkdmlfZHVhbDsKIAlpbnQgbWF4X3RtZHNfY2xvY2s7CS8qIGlu IE1IeiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2VkaWQuaCBiL2luY2x1ZGUvZHJt L2RybV9lZGlkLmgKaW5kZXggNTNjNjE5Yy4uYzg4MDUxMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9k cm0vZHJtX2VkaWQuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZWRpZC5oCkBAIC0yNTYsNSArMjU2 LDYgQEAgc3RydWN0IGRybV9jb25uZWN0b3IgKmRybV9zZWxlY3RfZWxkKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlciwKIHN0cnVjdCBlZGlkICpkcm1fbG9hZF9lZGlkX2Zpcm13YXJlKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwogI2VuZGlmCiBpbnQgZHJtX3ZhbGlkYXRlX2Vk aWRfYmxvYihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1OCAqKmJsb2NrcCwgaW50 IGxlbik7Cit2b2lkIGRybV9jYWNoZV9lZGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsIHN0cnVjdCBlZGlkICplZGlkKTsKIAogI2VuZGlmIC8qIF9fRFJNX0VESURfSF9fICovCi0t IAoxLjcuNwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK