From mboxrd@z Thu Jan 1 00:00:00 1970 From: Egbert Eich Subject: [PATCH v5] DRM/KMS/EDID: Consolidate EDID Error Handling (v5) Date: Thu, 22 Nov 2012 15:29:42 -0500 Message-ID: <1353616182-625-1-git-send-email-eich@suse.com> References: <1353610622-28942-1-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.17.10]) by gabe.freedesktop.org (Postfix) with ESMTP id 17D88E5EC3 for ; Thu, 22 Nov 2012 12:57:43 -0800 (PST) In-Reply-To: <1353610622-28942-1-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 Q29uc29saWRhdGUgdGhlIG51bGxfZWRpZF9jb3VudGVyIGFuZCB0aGUgYmFkX2VkaWRfY291bnRl cgppbnRvIEVESUQgZXJyb3Igc3RhdGUgZmxhZ3Mgd2hpY2ggZm9yIHRoZSBsYXN0IEVESUQgcmVh ZAphcmUgYWNjZXNzaWJsZSBmcm9tIHVzZXIuCkVycm9ycyBhcmUgbG9vZ2VkIGl0IHRoZSBzYW1l IGVycm9yIGhhcyBub3QgYmVlbiBwcmVzZW50CmluIHRoZSBwcmV2aW91cyByZWFkIG9mIHRoZSBF RElELiBUaGlzIHdpbGwgcmVzZXQgdGhlCkVESUQgZXJyb3Igc3RhdHVzIGZvciBleGFtcGxlIHdo ZW4gdGhlIG1vbml0b3IgaXMgY2hhbmdlZApidXQgc3RpbGwgcHJldmVudHMgcGVybWFuZW50IEVE SUQgZXJyb3JzIGZyb20gcGlsaW5nIHVwCnRoZSB0aGUga2VybmVsIGxvZ3MuCgp2MjogRml4ZWQg Y29uZmxpdHMgZHVlIHRvIHJlb3JkZXJpbmcgb2YgY29tbWl0cy4KICAgIFNldCBlcnJvciBzdGF0 ZSB3aGVyZSBtaXNzaW5nLgp2MzogRG9uJ3QgdXBkYXRlIGNhY2hlIHdoZW4gcmV0dXJuaW5nIGJs b2NrIGZyb20gY2FjaGUuCnY0OiBJbnNwaXJlZCBieSBhIGRpc2N1c3Npb24gd2l0aCBWaWxsZSBT eXJqw6Rsw6QKICAgIEZpeGVkIGRybV9lZGlkX2lzX3ZhbGlkKCkgdG8gcmV0dXJuIHRoZSBhY3R1 YWwgZXJyb3IKICAgIHN0YXRlLgogICAgSW5jbHVkZWQgcmVzdWx0cyBvZiBleHRlbnNpb24gYmxv Y2sgY2hlY2tpbmcgaW4gdGhlCiAgICBvdmVyYWxsIGVycm9yIHN0YXRlLgogICAgUmVtb3ZlZCBk cm1fZWRpZF9ibG9ja192YWxpZCgpIGFzIHRoZXJlIGlzIG5vb25lCiAgICB1c2luZyBpdC4KdjU6 IEFkZGVkIG1pc3NpbmcgcmFkZW9uL3JhZGVvbl9jb21iaW9zLmMuCgpTaWduZWQtb2ZmLWJ5OiBF Z2JlcnQgRWljaCA8ZWljaEBzdXNlLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQu YyAgICAgICAgICAgICAgICAgfCAgMTM2ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2F0b21iaW9zLmMgICB8ICAgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2NvbWJpb3MuYyAgICB8ICAgIDIgKy0KIGRyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3RvcnMuYyB8ICAgIDIgKy0KIGluY2x1ZGUvZHJt L2RybV9jcnRjLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIGluY2x1ZGUvZHJtL2Ry bV9lZGlkLmggICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKysKIDYgZmlsZXMgY2hhbmdlZCwg OTUgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9lZGlkLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwppbmRleCBkZDBk ZjYwLi42Y2VkZDQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwpAQCAtMTU3LDYgKzE1NywxNyBAQCBpbnQgZHJt X2VkaWRfaGVhZGVyX2lzX3ZhbGlkKGNvbnN0IHU4ICpyYXdfZWRpZCkKIH0KIEVYUE9SVF9TWU1C T0woZHJtX2VkaWRfaGVhZGVyX2lzX3ZhbGlkKTsKIAorc3RhdGljIGJvb2wgZHJtX2VkaWRfaXNf emVybyh1OCAqaW5fZWRpZCwgaW50IGxlbmd0aCkKK3sKKwlpbnQgaTsKKwl1MzIgKnJhd19lZGlk ID0gKHUzMiAqKWluX2VkaWQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoIC8gNDsgaSsrKQor CQlpZiAoKihyYXdfZWRpZCArIGkpICE9IDApCisJCQlyZXR1cm4gZmFsc2U7CisJcmV0dXJuIHRy dWU7Cit9CisKIHN0YXRpYyBpbnQgZWRpZF9maXh1cCBfX3JlYWRfbW9zdGx5ID0gNjsKIG1vZHVs ZV9wYXJhbV9uYW1lZChlZGlkX2ZpeHVwLCBlZGlkX2ZpeHVwLCBpbnQsIDA0MDApOwogTU9EVUxF X1BBUk1fREVTQyhlZGlkX2ZpeHVwLApAQCAtMTY2LDExICsxNzcsMTMgQEAgTU9EVUxFX1BBUk1f REVTQyhlZGlkX2ZpeHVwLAogICogU2FuaXR5IGNoZWNrIHRoZSBFRElEIGJsb2NrIChiYXNlIG9y IGV4dGVuc2lvbikuICBSZXR1cm4gMCBpZiB0aGUgYmxvY2sKICAqIGRvZXNuJ3QgY2hlY2sgb3V0 LCBvciAxIGlmIGl0J3MgdmFsaWQuCiAgKi8KLWJvb2wgZHJtX2VkaWRfYmxvY2tfdmFsaWQodTgg KnJhd19lZGlkLCBpbnQgYmxvY2ssIGJvb2wgcHJpbnRfYmFkX2VkaWQpCit1bnNpZ25lZAorZHJt X2VkaWRfYmxvY2tfY2hlY2tfZXJyb3IodTggKnJhd19lZGlkLCBpbnQgYmxvY2ssIHVuc2lnbmVk IGxhc3RfZXJyb3JfZmxhZ3MpCiB7CiAJaW50IGk7CiAJdTggY3N1bSA9IDA7CiAJc3RydWN0IGVk aWQgKmVkaWQgPSAoc3RydWN0IGVkaWQgKilyYXdfZWRpZDsKKwl1bnNpZ25lZCByZXN1bHQgPSAw OwogCiAJaWYgKGVkaWRfZml4dXAgPiA4IHx8IGVkaWRfZml4dXAgPCAwKQogCQllZGlkX2ZpeHVw ID0gNjsKQEAgLTE4MiwyNyArMTk1LDMzIEBAIGJvb2wgZHJtX2VkaWRfYmxvY2tfdmFsaWQodTgg KnJhd19lZGlkLCBpbnQgYmxvY2ssIGJvb2wgcHJpbnRfYmFkX2VkaWQpCiAJCQlEUk1fREVCVUco IkZpeGluZyBFRElEIGhlYWRlciwgeW91ciBoYXJkd2FyZSBtYXkgYmUgZmFpbGluZ1xuIik7CiAJ CQltZW1jcHkocmF3X2VkaWQsIGVkaWRfaGVhZGVyLCBzaXplb2YoZWRpZF9oZWFkZXIpKTsKIAkJ fSBlbHNlIHsKLQkJCWdvdG8gYmFkOworCQkJcmVzdWx0IHw9IEVESURfRVJSX05PX0JMT0NLMDsK KwkJCWlmIChkcm1fZWRpZF9pc196ZXJvKHJhd19lZGlkLCBFRElEX0xFTkdUSCkpIHsKKwkJCQly ZXN1bHQgfD0gRURJRF9FUlJfTlVMTDsKKwkJCQlnb3RvIGJhZDsKKwkJCX0KIAkJfQogCX0KIAog CWZvciAoaSA9IDA7IGkgPCBFRElEX0xFTkdUSDsgaSsrKQogCQljc3VtICs9IHJhd19lZGlkW2ld OwogCWlmIChjc3VtKSB7Ci0JCWlmIChwcmludF9iYWRfZWRpZCkgeworCQlpZiAoKGxhc3RfZXJy b3JfZmxhZ3MgJiBFRElEX0VSUl9DU1VNKSA9PSAwKQogCQkJRFJNX0VSUk9SKCJFRElEIGNoZWNr c3VtIGlzIGludmFsaWQsIHJlbWFpbmRlciBpcyAlZFxuIiwgY3N1bSk7Ci0JCX0KIAogCQkvKiBh bGxvdyBDRUEgdG8gc2xpZGUgdGhyb3VnaCwgc3dpdGNoZXMgbWFuZ2xlIHRoaXMgKi8KIAkJaWYg KHJhd19lZGlkWzBdICE9IDB4MDIpCi0JCQlnb3RvIGJhZDsKKwkJCXJlc3VsdCB8PSBFRElEX0VS Ul9DU1VNOwogCX0KKwlpZiAocmVzdWx0KQorCQlnb3RvIGJhZDsKIAogCS8qIHBlci1ibG9jay10 eXBlIGNoZWNrcyAqLwogCXN3aXRjaCAocmF3X2VkaWRbMF0pIHsKIAljYXNlIDA6IC8qIGJhc2Ug Ki8KIAkJaWYgKGVkaWQtPnZlcnNpb24gIT0gMSkgewogCQkJRFJNX0VSUk9SKCJFRElEIGhhcyBt YWpvciB2ZXJzaW9uICVkLCBpbnN0ZWFkIG9mIDFcbiIsIGVkaWQtPnZlcnNpb24pOworCQkJcmVz dWx0IHw9IEVESURfRVJSX1VOU1VQUE9SVEVEX1ZFUlNJT047CiAJCQlnb3RvIGJhZDsKIAkJfQog CkBAIC0yMTQsMTcgKzIzMywxNiBAQCBib29sIGRybV9lZGlkX2Jsb2NrX3ZhbGlkKHU4ICpyYXdf ZWRpZCwgaW50IGJsb2NrLCBib29sIHByaW50X2JhZF9lZGlkKQogCQlicmVhazsKIAl9CiAKLQly ZXR1cm4gMTsKKwlyZXR1cm4gMDsKIAogYmFkOgotCWlmIChyYXdfZWRpZCAmJiBwcmludF9iYWRf ZWRpZCkgeworCWlmIChyYXdfZWRpZCAmJiBsYXN0X2Vycm9yX2ZsYWdzICE9IHJlc3VsdCkgewog CQlwcmludGsoS0VSTl9FUlIgIlJhdyBFRElEOlxuIik7CiAJCXByaW50X2hleF9kdW1wKEtFUk5f RVJSLCAiIFx0IiwgRFVNUF9QUkVGSVhfTk9ORSwgMTYsIDEsCiAJCQkgICAgICAgcmF3X2VkaWQs IEVESURfTEVOR1RILCBmYWxzZSk7CiAJfQotCXJldHVybiAwOworCXJldHVybiByZXN1bHQ7CiB9 Ci1FWFBPUlRfU1lNQk9MKGRybV9lZGlkX2Jsb2NrX3ZhbGlkKTsKIAogLyoqCiAgKiBkcm1fZWRp ZF9pc192YWxpZCAtIHNhbml0eSBjaGVjayBFRElEIGRhdGEKQEAgLTIzMiwxOSArMjUwLDIxIEBA IEVYUE9SVF9TWU1CT0woZHJtX2VkaWRfYmxvY2tfdmFsaWQpOwogICoKICAqIFNhbml0eS1jaGVj ayBhbiBlbnRpcmUgRURJRCByZWNvcmQgKGluY2x1ZGluZyBleHRlbnNpb25zKQogICovCi1ib29s IGRybV9lZGlkX2lzX3ZhbGlkKHN0cnVjdCBlZGlkICplZGlkKQordW5zaWduZWQgZHJtX2VkaWRf aXNfdmFsaWQoc3RydWN0IGVkaWQgKmVkaWQsIHVuc2lnbmVkIGxhc3RfZXJyb3JfZmxhZ3MpCiB7 CiAJaW50IGk7CisJdW5zaWduZWQgcmVzdWx0OwogCXU4ICpyYXcgPSAodTggKillZGlkOwogCiAJ aWYgKCFlZGlkKQotCQlyZXR1cm4gZmFsc2U7CisJCXJldHVybiBFRElEX0VSUl9OT19EQVRBOwog Ci0JZm9yIChpID0gMDsgaSA8PSBlZGlkLT5leHRlbnNpb25zOyBpKyspCi0JCWlmICghZHJtX2Vk aWRfYmxvY2tfdmFsaWQocmF3ICsgaSAqIEVESURfTEVOR1RILCBpLCB0cnVlKSkKLQkJCXJldHVy biBmYWxzZTsKLQotCXJldHVybiB0cnVlOworCWZvciAoaSA9IDA7IGkgPD0gZWRpZC0+ZXh0ZW5z aW9uczsgaSsrKSB7CisJCXJlc3VsdCA9IGRybV9lZGlkX2Jsb2NrX2NoZWNrX2Vycm9yKHJhdyAr IGkgKiBFRElEX0xFTkdUSCwgaSwgbGFzdF9lcnJvcl9mbGFncyk7CisJCWlmIChyZXN1bHQpCisJ CQlyZXR1cm4gcmVzdWx0OworCX0KKwlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2Vk aWRfaXNfdmFsaWQpOwogCkBAIC0zMTAsMTcgKzMzMCw2IEBAIGRybV9kb19wcm9iZV9kZGNfZWRp ZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKIAlyZXR1 cm4gcmV0ID09IHhmZXJzID8gMCA6IC0xOwogfQogCi1zdGF0aWMgYm9vbCBkcm1fZWRpZF9pc196 ZXJvKHU4ICppbl9lZGlkLCBpbnQgbGVuZ3RoKQotewotCWludCBpOwotCXUzMiAqcmF3X2VkaWQg PSAodTMyICopaW5fZWRpZDsKLQotCWZvciAoaSA9IDA7IGkgPCBsZW5ndGggLyA0OyBpKyspCi0J CWlmICgqKHJhd19lZGlkICsgaSkgIT0gMCkKLQkJCXJldHVybiBmYWxzZTsKLQlyZXR1cm4gdHJ1 ZTsKLX0KLQogc3RhdGljIHZvaWQKIGZpeF9tYXAodTggKmJsb2NrLCBpbnQgY250KQogewpAQCAt NDU2LDM3ICs0NjUsNDAgQEAgZHJtX2RvX2dldF9lZGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsIHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKIHsKIAlpbnQgaSwgaiA9IDAs IHZhbGlkX2V4dGVuc2lvbnMgPSAwOwogCXU4ICpibG9jaywgKm5ldzsKLQlib29sIHByaW50X2Jh ZF9lZGlkID0gIWNvbm5lY3Rvci0+YmFkX2VkaWRfY291bnRlciB8fCAoZHJtX2RlYnVnICYgRFJN X1VUX0tNUyk7CisJaW50IGxhc3RfZXJyb3JfZmxhZ3MgPSAoZHJtX2RlYnVnICYgRFJNX1VUX0tN UykgPyAwIDogY29ubmVjdG9yLT5sYXN0X2VkaWRfZXJyb3JfZmxhZ3M7CisJdW5zaWduZWQgcmVz dWx0ID0gRURJRF9FUlJfTk9fREFUQTsKIAogI2lmZGVmIENPTkZJR19EUk1fTE9BRF9FRElEX0ZJ Uk1XQVJFCiAJLyogY2hlY2sgaWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhICdmaXJtd2FyZScg RURJRCBmaWxlICovCiAJYmxvY2sgPSAodTggKilkcm1fbG9hZF9lZGlkX2Zpcm13YXJlKGNvbm5l Y3Rvcik7CiAJaWYgKGJsb2NrKSB7CiAJCWRybV9jYWNoZV9lZGlkKGNvbm5lY3RvciwgTlVMTCk7 CisJCWNvbm5lY3Rvci0+bGFzdF9lZGlkX2Vycm9yX2ZsYWdzID0gMDsKIAkJcmV0dXJuIGJsb2Nr OwogCX0KICNlbmRpZgotCi0JaWYgKChibG9jayA9IGttYWxsb2MoRURJRF9MRU5HVEgsIEdGUF9L RVJORUwpKSA9PSBOVUxMKQorCWJsb2NrID0ga21hbGxvYyhFRElEX0xFTkdUSCwgR0ZQX0tFUk5F TCk7CisJaWYgKGJsb2NrID09IE5VTEwpIHsKKwkJcmVzdWx0ID0gRURJRF9FUlJfTk9fTUVNOwog CQlnb3RvIGVycm9yOworCX0KIAogCS8qIGJhc2UgYmxvY2sgZmV0Y2ggKi8KIAlmb3IgKGkgPSAw OyBpIDwgNDsgaSsrKSB7CiAJCWlmIChkcm1fZG9fcHJvYmVfZGRjX2VkaWQoYWRhcHRlciwgYmxv Y2ssIDAsIEVESURfTEVOR1RIKSkKIAkJCWdvdG8gZXJyb3JfZnJlZTsKLQkJaWYgKGRybV9lZGlk X2Jsb2NrX3ZhbGlkKGJsb2NrLCAwLCBwcmludF9iYWRfZWRpZCkpCisJCXJlc3VsdCA9IGRybV9l ZGlkX2Jsb2NrX2NoZWNrX2Vycm9yKGJsb2NrLCAwLCBsYXN0X2Vycm9yX2ZsYWdzKTsKKwkJaWYg KCFyZXN1bHQpCiAJCQlicmVhazsKLQkJaWYgKGkgPT0gMCAmJiBkcm1fZWRpZF9pc196ZXJvKGJs b2NrLCBFRElEX0xFTkdUSCkpIHsKLQkJCWNvbm5lY3Rvci0+bnVsbF9lZGlkX2NvdW50ZXIrKzsK KwkJaWYgKGkgPT0gMCAmJiByZXN1bHQgJiBFRElEX0VSUl9OVUxMKQogCQkJZ290byBlcnJvcl9j YXJwOwotCQl9CiAJfQotCWlmIChpID09IDQpCisJaWYgKHJlc3VsdCkKIAkJZ290byBlcnJvcl9j YXJwOwogCiAJLyogaWYgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMsIHdlJ3JlIGRvbmUgLSBkb24n dCBib3RoZXIgY2FjaGluZyAqLwogCWlmIChibG9ja1tFRElEX0VYVEVOU0lPTl9GTEFHX09GRlNF VF0gPT0gMCkKLQkJZ290byBkb25lOworCQlnb3RvIGRvbmVfdXBkYXRlX2NhY2hlOwogCiAJLyog ZG9uJ3QgZXhwZWN0IGV4dGVuc2lvbiBibG9ja3MgaW4gRURJRCBWZXJzaW9ucyA8IDEuMzogcmV0 dXJuIGJhc2UgYmxvY2sgd2l0aCBjb3JyZWN0IGV4dGVuc2lvbiBmbGFnICovCiAJaWYgKGJsb2Nr W0VESURfVkVSU0lPTl9NSU5PUl9PRkZTRVRdIDwgMykKQEAgLTQ5NCw3ICs1MDYsNyBAQCBkcm1f ZG9fZ2V0X2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGkyY19h ZGFwdGVyICphZGFwdGVyKQogCiAJLyogc2VlIGlmIEVESUQgaXMgaW4gdGhlIGNhY2hlIC0gbm8g bmVlZCB0byByZWFkIGFsbCBleHRlbnNpb24gYmxvY2tzICovCiAJaWYgKGNvbXBhcmVfZ2V0X2Vk aWRfZnJvbV9jYWNoZShjb25uZWN0b3IsIChzdHJ1Y3QgZWRpZCAqKikmYmxvY2spKQotCQlyZXR1 cm4gYmxvY2s7CisJCWdvdG8gZG9uZTsKIAogCW5ldyA9IGtyZWFsbG9jKGJsb2NrLCAoYmxvY2tb RURJRF9FWFRFTlNJT05fRkxBR19PRkZTRVRdICsgMSkgKiBFRElEX0xFTkdUSCwgR0ZQX0tFUk5F TCk7CiAJaWYgKCFuZXcpIHsKQEAgLTUwNiwxMyArNTE4LDE4IEBAIGRybV9kb19nZXRfZWRpZChz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0 ZXIpCiAKIAlmb3IgKGogPSAxOyBqIDw9IGJsb2NrW0VESURfRVhURU5TSU9OX0ZMQUdfT0ZGU0VU XTsgaisrKSB7CiAJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJCXVuc2lnbmVkIGVycjsK IAkJCWlmIChkcm1fZG9fcHJvYmVfZGRjX2VkaWQoYWRhcHRlciwKIAkJCQkgIGJsb2NrICsgKHZh bGlkX2V4dGVuc2lvbnMgKyAxKSAqIEVESURfTEVOR1RILAogCQkJCSAgaiwgRURJRF9MRU5HVEgp KSB7CiAJCQkJdmFsaWRfZXh0ZW5zaW9ucyA9IDA7CiAJCQkJZ290byBkb25lX2ZpeF9leHRlbnNp b25fY291bnQ7CiAJCQl9Ci0JCQlpZiAoZHJtX2VkaWRfYmxvY2tfdmFsaWQoYmxvY2sgKyAodmFs aWRfZXh0ZW5zaW9ucyArIDEpICogRURJRF9MRU5HVEgsIGosIHByaW50X2JhZF9lZGlkKSkgewor CQkJZXJyID0gZHJtX2VkaWRfYmxvY2tfY2hlY2tfZXJyb3IoCisJCQkJYmxvY2sgKyAodmFsaWRf ZXh0ZW5zaW9ucyArIDEpICogRURJRF9MRU5HVEgsCisJCQkJaiwgbGFzdF9lcnJvcl9mbGFncyk7 CisJCQlyZXN1bHQgfD0gZXJyOworCQkJaWYgKCFlcnIpIHsKIAkJCQl2YWxpZF9leHRlbnNpb25z Kys7CiAJCQkJLyogSWYgZXh0ZW5zaW9uIGJsb2NrIDIgaXMgaWRlbnRpY2FsIHRvIHRoZSBiYXNl IGJsb2NrIHRoZSBkaXNwbGF5IGlzIHByb2JhYmx5CiAJCQkJICogbm90IEVEREMgY2FiYWJsZSAt IGRlc3BpdGUgb2Ygd2hhdCB0aGUgZXh0ZW5zaW9uIGZsYWcgc2F5cyAtIGFzIGl0IGRvZXNuJ3QK QEAgLTUzNSwyMiArNTUyLDIzIEBAIGRybV9kb19nZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLCBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCiAKIGRvbmVfZml4X2V4 dGVuc2lvbl9jb3VudDoKIAlmaXh1cF9lZGlkKCZibG9jaywgdmFsaWRfZXh0ZW5zaW9ucyk7Ci1k b25lOgorZG9uZV91cGRhdGVfY2FjaGU6CiAJZHJtX2NhY2hlX2VkaWQoY29ubmVjdG9yLCAodmFs aWRfZXh0ZW5zaW9ucyA+IDApID8gKHN0cnVjdCBlZGlkICopYmxvY2sgOiBOVUxMKTsKK2RvbmU6 CisJY29ubmVjdG9yLT5sYXN0X2VkaWRfZXJyb3JfZmxhZ3MgPSAwOwogCiAJcmV0dXJuIGJsb2Nr OwogCiBlcnJvcl9jYXJwOgotCWlmIChwcmludF9iYWRfZWRpZCkgeworCWlmIChsYXN0X2Vycm9y X2ZsYWdzICE9IHJlc3VsdCkgewogCQlkZXZfd2Fybihjb25uZWN0b3ItPmRldi0+ZGV2LCAiJXM6 IEVESUQgYmxvY2sgJWQgaW52YWxpZC5cbiIsCiAJCQkgZHJtX2dldF9jb25uZWN0b3JfbmFtZShj b25uZWN0b3IpLCBqKTsKIAl9Ci0JY29ubmVjdG9yLT5iYWRfZWRpZF9jb3VudGVyKys7Ci0KIGVy cm9yX2ZyZWU6CiAJa2ZyZWUoYmxvY2spOwogZXJyb3I6CiAJZHJtX2NhY2hlX2VkaWQoY29ubmVj dG9yLCBOVUxMKTsKKwljb25uZWN0b3ItPmxhc3RfZWRpZF9lcnJvcl9mbGFncyA9IHJlc3VsdDsK IAlyZXR1cm4gTlVMTDsKIH0KIApAQCAtNTY3LDI2ICs1ODUsMzEgQEAgaW50CiBkcm1fdmFsaWRh dGVfZWRpZF9ibG9iKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHU4ICoqYmxvY2tw LCBpbnQgbGVuKQogewogCWludCBuX2Jsb2NrcyA9IGxlbiAvIEVESURfTEVOR1RIOwotCWludCB2 YWxpZF9leHRlbnNpb25zID0gMCwgcmV0ID0gMDsKLQlib29sIHByaW50X2JhZF9lZGlkID0gIWNv bm5lY3Rvci0+YmFkX2VkaWRfY291bnRlciB8fCAoZHJtX2RlYnVnICYgRFJNX1VUX0tNUyk7CisJ aW50IHZhbGlkX2V4dGVuc2lvbnMgPSAwLCByZXQgPSAtRUlOVkFMOworCWludCBsYXN0X2Vycm9y X2ZsYWdzID0gKGRybV9kZWJ1ZyAmIERSTV9VVF9LTVMpID8gMCA6IGNvbm5lY3Rvci0+bGFzdF9l ZGlkX2Vycm9yX2ZsYWdzOworCXVuc2lnbmVkIHJlc3VsdCA9IEVESURfRVJSX05PX0RBVEE7CiAK LQlpZiAoIWJsb2NrcCB8fCAhKmJsb2NrcCkKLQkJcmV0ID0gLUVJTlZBTDsKLQllbHNlIGlmICgh bl9ibG9ja3MgfHwgIWRybV9lZGlkX2Jsb2NrX3ZhbGlkKCpibG9ja3AsIDAsIHByaW50X2JhZF9l ZGlkKSkgewotCQlrZnJlZSgqYmxvY2twKTsKLQkJKmJsb2NrcCA9IE5VTEw7Ci0JCXJldCA9IC1F SU5WQUw7CisJaWYgKGJsb2NrcCAmJiAqYmxvY2twKSB7CisJCWlmIChuX2Jsb2NrcykKKwkJCXJl c3VsdCA9IGRybV9lZGlkX2Jsb2NrX2NoZWNrX2Vycm9yKCpibG9ja3AsIDAsIGxhc3RfZXJyb3Jf ZmxhZ3MpOworCQlpZiAocmVzdWx0KSB7CisJCQlrZnJlZSgqYmxvY2twKTsKKwkJCSpibG9ja3Ag PSBOVUxMOworCQl9CiAJfQotCWlmICghcmV0KSB7CisJaWYgKCFyZXN1bHQpIHsKIAkJaW50IGNu dCA9IDA7CiAJCW5fYmxvY2tzLS07CiAJCWlmICgoKmJsb2NrcClbRURJRF9FWFRFTlNJT05fRkxB R19PRkZTRVRdIDwgbl9ibG9ja3MpCiAJCQluX2Jsb2NrcyA9ICgqYmxvY2twKVtFRElEX0VYVEVO U0lPTl9GTEFHX09GRlNFVF07CiAKIAkJd2hpbGUgKG5fYmxvY2tzLS0pIHsKKwkJCXVuc2lnbmVk IGVycjsKIAkJCWNudCsrOwotCQkJaWYgKGRybV9lZGlkX2Jsb2NrX3ZhbGlkKCpibG9ja3AgKyBj bnQgKiBFRElEX0xFTkdUSCwKLQkJCQkJCSB2YWxpZF9leHRlbnNpb25zICsgMSwgcHJpbnRfYmFk X2VkaWQpKSB7CisJCQllcnIgPSBkcm1fZWRpZF9ibG9ja19jaGVja19lcnJvcigqYmxvY2twICsg Y250ICogRURJRF9MRU5HVEgsCisJCQkJCQkJIHZhbGlkX2V4dGVuc2lvbnMgKyAxLCBsYXN0X2Vy cm9yX2ZsYWdzKTsKKwkJCXJlc3VsdCB8PSBlcnI7CisJCQlpZiAoIWVycikgewogCQkJCXZhbGlk X2V4dGVuc2lvbnMrKzsKIAkJCQlpZiAoY250ICE9IHZhbGlkX2V4dGVuc2lvbnMpCiAJCQkJCW1l bWNweSgqYmxvY2twICsgdmFsaWRfZXh0ZW5zaW9ucyAqIEVESURfTEVOR1RILApAQCAtNTk0LDgg KzYxNyw5IEBAIGRybV92YWxpZGF0ZV9lZGlkX2Jsb2Ioc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwgdTggKipibG9ja3AsIGludCBsZW4pCiAJCQl9CiAJCX0KIAkJZml4dXBfZWRpZChi bG9ja3AsIHZhbGlkX2V4dGVuc2lvbnMpOwotCX0gZWxzZQotCQljb25uZWN0b3ItPmJhZF9lZGlk X2NvdW50ZXIrKzsKKwkJcmV0ID0gMDsKKwl9CisJY29ubmVjdG9yLT5sYXN0X2VkaWRfZXJyb3Jf ZmxhZ3MgPSByZXN1bHQ7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjE4Nyw3ICsyMjExLDcgQEAg aW50IGRybV9hZGRfZWRpZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBz dHJ1Y3QgZWRpZCAqZWRpZCkKIAlpZiAoZWRpZCA9PSBOVUxMKSB7CiAJCXJldHVybiAwOwogCX0K LQlpZiAoIWRybV9lZGlkX2lzX3ZhbGlkKGVkaWQpKSB7CisJaWYgKGRybV9lZGlkX2lzX3ZhbGlk KGVkaWQsIDApKSB7CiAJCWRldl93YXJuKGNvbm5lY3Rvci0+ZGV2LT5kZXYsICIlczogRURJRCBp bnZhbGlkLlxuIiwKIAkJCSBkcm1fZ2V0X2Nvbm5lY3Rvcl9uYW1lKGNvbm5lY3RvcikpOwogCQly ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2F0b21i aW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9hdG9tYmlvcy5jCmluZGV4IGYy MmViNTcuLjJkZTBkNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X2F0b21iaW9zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXRvbWJpb3Mu YwpAQCAtMTY0NCw3ICsxNjQ0LDcgQEAgc3RydWN0IHJhZGVvbl9lbmNvZGVyX2F0b21fZGlnICpy YWRlb25fYXRvbWJpb3NfZ2V0X2x2ZHNfaW5mbyhzdHJ1Y3QKIAkJCQkJCQltZW1jcHkoKHU4ICop ZWRpZCwgKHU4ICopJmZha2VfZWRpZF9yZWNvcmQtPnVjRmFrZUVESURTdHJpbmdbMF0sCiAJCQkJ CQkJICAgICAgIGZha2VfZWRpZF9yZWNvcmQtPnVjRmFrZUVESURMZW5ndGgpOwogCi0JCQkJCQkJ aWYgKGRybV9lZGlkX2lzX3ZhbGlkKGVkaWQpKSB7CisJCQkJCQkJaWYgKGRybV9lZGlkX2lzX3Zh bGlkKGVkaWQsMCkgPT0gMCkgewogCQkJCQkJCQlyZGV2LT5tb2RlX2luZm8uYmlvc19oYXJkY29k ZWRfZWRpZCA9IGVkaWQ7CiAJCQkJCQkJCXJkZXYtPm1vZGVfaW5mby5iaW9zX2hhcmRjb2RlZF9l ZGlkX3NpemUgPSBlZGlkX3NpemU7CiAJCQkJCQkJfSBlbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jb21iaW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl9jb21iaW9zLmMKaW5kZXggNDViNjYwYi4uNDJjZjcwMiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY29tYmlvcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uX2NvbWJpb3MuYwpAQCAtNDYzLDcgKzQ2Myw3IEBAIGJvb2wgcmFkZW9u X2NvbWJpb3NfY2hlY2tfaGFyZGNvZGVkX2VkaWQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYp CiAKIAltZW1jcHkoKHVuc2lnbmVkIGNoYXIgKillZGlkLCByYXcsIHNpemUpOwogCi0JaWYgKCFk cm1fZWRpZF9pc192YWxpZChlZGlkKSkgeworCWlmIChkcm1fZWRpZF9pc192YWxpZChlZGlkLDAp ICE9IDApIHsKIAkJa2ZyZWUoZWRpZCk7CiAJCXJldHVybiBmYWxzZTsKIAl9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jb25uZWN0b3JzLmMgYi9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9jb25uZWN0b3JzLmMKaW5kZXggYjg4NGMzNi4uZTgwYmE2MyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY29ubmVjdG9ycy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3RvcnMuYwpAQCAtOTYxLDcg Kzk2MSw3IEBAIHJhZGVvbl9kdmlfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsIGJvb2wgZm9yY2UpCiAJCQkJCWRybV9nZXRfY29ubmVjdG9yX25hbWUoY29ubmVjdG9yKSk7 CiAJCQkvKiByczY5MCBzZWVtcyB0byBoYXZlIGEgcHJvYmxlbSB3aXRoIGNvbm5lY3RvcnMgbm90 IGV4aXN0aW5nIGFuZCBhbHdheXMKIAkJCSAqIHJldHVybiBhIGJsb2NrIG9mIDAncy4gSWYgd2Ug c2VlIHRoaXMganVzdCBzdG9wIHBvbGxpbmcgb24gdGhpcyBvdXRwdXQgKi8KLQkJCWlmICgocmRl di0+ZmFtaWx5ID09IENISVBfUlM2OTAgfHwgcmRldi0+ZmFtaWx5ID09IENISVBfUlM3NDApICYm IHJhZGVvbl9jb25uZWN0b3ItPmJhc2UubnVsbF9lZGlkX2NvdW50ZXIpIHsKKwkJCWlmICgocmRl di0+ZmFtaWx5ID09IENISVBfUlM2OTAgfHwgcmRldi0+ZmFtaWx5ID09IENISVBfUlM3NDApICYm IHJhZGVvbl9jb25uZWN0b3ItPmJhc2UubGFzdF9lZGlkX2Vycm9yX2ZsYWdzICYgRURJRF9FUlJf TlVMTCkgewogCQkJCXJldCA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwogCQkJCURS TV9FUlJPUigiJXM6IGRldGVjdGVkIFJTNjkwIGZsb2F0aW5nIGJ1cyBidWcsIHN0b3BwaW5nIGRk YyBkZXRlY3RcbiIsIGRybV9nZXRfY29ubmVjdG9yX25hbWUoY29ubmVjdG9yKSk7CiAJCQkJcmFk ZW9uX2Nvbm5lY3Rvci0+ZGRjX2J1cyA9IE5VTEw7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9k cm1fY3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAppbmRleCA2YTEwNTRjLi43YTNjY2Jm IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCisrKyBiL2luY2x1ZGUvZHJtL2Ry bV9jcnRjLmgKQEAgLTYwOCw4ICs2MDgsNyBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciB7CiAJYm9v bCBsYXRlbmN5X3ByZXNlbnRbMl07CiAJaW50IHZpZGVvX2xhdGVuY3lbMl07CS8qIFswXTogcHJv Z3Jlc3NpdmUsIFsxXTogaW50ZXJsYWNlZCAqLwogCWludCBhdWRpb19sYXRlbmN5WzJdOwotCWlu dCBudWxsX2VkaWRfY291bnRlcjsgLyogbmVlZGVkIHRvIHdvcmthcm91bmQgc29tZSBIVyBidWdz IHdoZXJlIHdlIGdldCBhbGwgMHMgKi8KLQl1bnNpZ25lZCBiYWRfZWRpZF9jb3VudGVyOworCXVu c2lnbmVkIGxhc3RfZWRpZF9lcnJvcl9mbGFnczsKIH07CiAKIC8qKgpAQCAtMTA1Niw4ICsxMDU1 LDcgQEAgZXh0ZXJuIGludCBkcm1fYWRkX21vZGVzX25vZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAogCQkJCWludCBoZGlzcGxheSwgaW50IHZkaXNwbGF5KTsKIAogZXh0ZXJu IGludCBkcm1fZWRpZF9oZWFkZXJfaXNfdmFsaWQoY29uc3QgdTggKnJhd19lZGlkKTsKLWV4dGVy biBib29sIGRybV9lZGlkX2Jsb2NrX3ZhbGlkKHU4ICpyYXdfZWRpZCwgaW50IGJsb2NrLCBib29s IHByaW50X2JhZF9lZGlkKTsKLWV4dGVybiBib29sIGRybV9lZGlkX2lzX3ZhbGlkKHN0cnVjdCBl ZGlkICplZGlkKTsKK2V4dGVybiB1bnNpZ25lZCBkcm1fZWRpZF9pc192YWxpZChzdHJ1Y3QgZWRp ZCAqZWRpZCwgdW5zaWduZWQgbGFzdF9lcnJvcl9mbGFncyk7CiBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqZHJtX21vZGVfZmluZF9kbXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJICAg aW50IGhzaXplLCBpbnQgdnNpemUsIGludCBmcmVzaCwKIAkJCQkJICAgYm9vbCByYik7CmRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZWRpZC5oIGIvaW5jbHVkZS9kcm0vZHJtX2VkaWQuaApp bmRleCBjODgwNTEwLi42YmNhZWU1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZWRpZC5o CisrKyBiL2luY2x1ZGUvZHJtL2RybV9lZGlkLmgKQEAgLTI0NCw2ICsyNDQsMTUgQEAgc3RydWN0 IGVkaWQgewogCiAjZGVmaW5lIEVESURfUFJPRFVDVF9JRChlKSAoKGUpLT5wcm9kX2NvZGVbMF0g fCAoKGUpLT5wcm9kX2NvZGVbMV0gPDwgOCkpCiAKK2VudW0gZWRpZF9lcnJvciB7CisJRURJRF9F UlJfTk9fQkxPQ0swID0gMSA8PCAwLAorCUVESURfRVJSX05VTEwgICAgICA9IDEgPDwgMSwKKwlF RElEX0VSUl9DU1VNICAgICAgPSAxIDw8IDIsCisJRURJRF9FUlJfVU5TVVBQT1JURURfVkVSU0lP TiAgPSAxIDw8IDMsCisJRURJRF9FUlJfTk9fREFUQSAgID0gMSA8PCA0LAorCUVESURfRVJSX05P X01FTSAgICA9IDEgPDwgNSwKK307CisKIHN0cnVjdCBkcm1fZW5jb2RlcjsKIHN0cnVjdCBkcm1f Y29ubmVjdG9yOwogc3RydWN0IGRybV9kaXNwbGF5X21vZGU7CkBAIC0yNTcsNSArMjY2LDYgQEAg c3RydWN0IGVkaWQgKmRybV9sb2FkX2VkaWRfZmlybXdhcmUoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3Rvcik7CiAjZW5kaWYKIGludCBkcm1fdmFsaWRhdGVfZWRpZF9ibG9iKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHU4ICoqYmxvY2twLCBpbnQgbGVuKTsKIHZvaWQgZHJt X2NhY2hlX2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQg KmVkaWQpOwordW5zaWduZWQgZHJtX2VkaWRfYmxvY2tfY2hlY2tfZXJyb3IodTggKnJhd19lZGlk LCBpbnQgYmxvY2ssIHVuc2lnbmVkIGxhc3RfZXJyb3JfZmxhZ3MpOwogCiAjZW5kaWYgLyogX19E Uk1fRURJRF9IX18gKi8KLS0gCjEuNy43CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=