From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm: Only warn about an invalid EDID block prior to rejection Date: Mon, 9 Mar 2015 17:29:44 +0200 Message-ID: <20150309152944.GV11371@intel.com> References: <1425901445-6809-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1425901445-6809-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBNYXIgMDksIDIwMTUgYXQgMTE6NDQ6MDVBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IE9uIGEgbm9pc3kgbGluaywgd2UgbWF5IHJldHJ5IHRoZSBFRElEIHJlYWRzIG11bHRp cGxlIHRpbWVzIHBlciBibG9jawo+IGFuZCBzdGlsbCBzdWNjZWVkLiBJbiBzdWNoIGNhc2VzLCB3 ZSBkb24ndCB3YW50IHRvIGZsb29kIHRoZSBrZXJuZWwgbG9ncwo+IHdpdGggKkVSUk9SKiBtZXNz YWdlcyBhcyB3ZSB0aGVuIHN1Y2NlZWQuIFJlZmFjdG9yIHRoZSBFRElEIGR1bXBpbmcgYW5kCj4g cHVzaCBpdCBpbnRvIHRoZSBjYWxsZXIgcmF0aGVyIHRoYW4gdGhlIHZhbGlkYXRvciBzbyB3ZSBj YW4gc3VwcHJlc3MgdGhlCj4gd2FybmluZ3MgZnJvbSB0cmFuc2llbnQgZmFpbHVyZXMuIEluIHRo ZSBwcm9jZXNzLCB3ZSB3YW50IHRvIHJlZmFjdG9yCj4gZHJtX2xvYWRfZWRpZF9maXJtd2FyZSgp IHRvIHVzZSB0aGUgY29tbW9uIGRybV9kb19nZXRfZWRpZCgpIHRvIHNoYXJlCj4gdGhlIHNhbWUg bG9naWMgKHNpbmNlIGl0IGFscmVhZHkgZHVwbGljYXRlcyBpdCkuCj4gCj4gU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gUmVmZXJlbmNlczog aHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk0NTQKCkNvdWxk IHdlIGdldCBpdCB0byBkdW1wIHRoZSBudW1iZXIgb2YgcmV0cmllcyBpdCBoYWQgdG8gbWFrZSB0 byBnZXQgYQp2YWxpZCBFRElEPyBUaGUgcmV0cmllcyBjb3VsZCBiZSBkdWUgdG8gZHJpdmVyIGJ1 Z3Mgc28gd2UgbWF5IHdhbnQgdG8Ka25vdyB0aGF0IHRoZXkgaW4gZmFjdCBvY2N1cmVkLiBPdGhl cndpc2Ugd2UgbWlnaHQgZW5kIHVwIHdpdGggZWcuCmxhcmdlIGRlbGF5cyBkdXJpbmcgcmVzdW1l IHdpdGhvdXQgYW55IGluZGljYXRpb24gd2hhdCBjYXVzZWQgdGhlbS4KCj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9kcm1fZWRpZC5jICAgICAgfCA2NCArKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWRfbG9hZC5jIHwgNjAg KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgaW5jbHVkZS9kcm0vZHJt X2NydGMuaCAgICAgICAgICB8ICAyICstCj4gIDMgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9u cygrKSwgNjUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiBpbmRleCA1M2JjN2E2Mjg5 MDkuLjAyNGI0N2ZmYjA2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gQEAgLTEwNDAsMTQgKzEwNDAs MTMgQEAgc3RhdGljIGJvb2wgZHJtX2VkaWRfaXNfemVybyhjb25zdCB1OCAqaW5fZWRpZCwgaW50 IGxlbmd0aCkKPiAgICogZHJtX2VkaWRfYmxvY2tfdmFsaWQgLSBTYW5pdHkgY2hlY2sgdGhlIEVE SUQgYmxvY2sgKGJhc2Ugb3IgZXh0ZW5zaW9uKQo+ICAgKiBAcmF3X2VkaWQ6IHBvaW50ZXIgdG8g cmF3IEVESUQgYmxvY2sKPiAgICogQGJsb2NrOiB0eXBlIG9mIGJsb2NrIHRvIHZhbGlkYXRlICgw IGZvciBiYXNlLCBleHRlbnNpb24gb3RoZXJ3aXNlKQo+IC0gKiBAcHJpbnRfYmFkX2VkaWQ6IGlm IHRydWUsIGR1bXAgYmFkIEVESUQgYmxvY2tzIHRvIHRoZSBjb25zb2xlCj4gICAqCj4gICAqIFZh bGlkYXRlIGEgYmFzZSBvciBleHRlbnNpb24gRURJRCBibG9jayBhbmQgb3B0aW9uYWxseSBkdW1w IGJhZCBibG9ja3MgdG8KPiAgICogdGhlIGNvbnNvbGUuCj4gICAqCj4gICAqIFJldHVybjogVHJ1 ZSBpZiB0aGUgYmxvY2sgaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS4KPiAgICovCj4gLWJvb2wg ZHJtX2VkaWRfYmxvY2tfdmFsaWQodTggKnJhd19lZGlkLCBpbnQgYmxvY2ssIGJvb2wgcHJpbnRf YmFkX2VkaWQpCj4gK2Jvb2wgZHJtX2VkaWRfYmxvY2tfdmFsaWQodTggKnJhd19lZGlkLCBpbnQg YmxvY2spCj4gIHsKPiAgCXU4IGNzdW07Cj4gIAlzdHJ1Y3QgZWRpZCAqZWRpZCA9IChzdHJ1Y3Qg ZWRpZCAqKXJhd19lZGlkOwo+IEBAIC0xMDcxLDEwICsxMDcwLDYgQEAgYm9vbCBkcm1fZWRpZF9i bG9ja192YWxpZCh1OCAqcmF3X2VkaWQsIGludCBibG9jaywgYm9vbCBwcmludF9iYWRfZWRpZCkK PiAgCj4gIAljc3VtID0gZHJtX2VkaWRfYmxvY2tfY2hlY2tzdW0ocmF3X2VkaWQpOwo+ICAJaWYg KGNzdW0pIHsKPiAtCQlpZiAocHJpbnRfYmFkX2VkaWQpIHsKPiAtCQkJRFJNX0VSUk9SKCJFRElE IGNoZWNrc3VtIGlzIGludmFsaWQsIHJlbWFpbmRlciBpcyAlZFxuIiwgY3N1bSk7Cj4gLQkJfQo+ IC0KPiAgCQkvKiBhbGxvdyBDRUEgdG8gc2xpZGUgdGhyb3VnaCwgc3dpdGNoZXMgbWFuZ2xlIHRo aXMgKi8KPiAgCQlpZiAocmF3X2VkaWRbMF0gIT0gMHgwMikKPiAgCQkJZ290byBiYWQ7Cj4gQEAg LTEwOTksMTkgKzEwOTQsMjkgQEAgYm9vbCBkcm1fZWRpZF9ibG9ja192YWxpZCh1OCAqcmF3X2Vk aWQsIGludCBibG9jaywgYm9vbCBwcmludF9iYWRfZWRpZCkKPiAgCXJldHVybiB0cnVlOwo+ICAK PiAgYmFkOgo+IC0JaWYgKHByaW50X2JhZF9lZGlkKSB7Cj4gLQkJaWYgKGRybV9lZGlkX2lzX3pl cm8ocmF3X2VkaWQsIEVESURfTEVOR1RIKSkgewo+IC0JCQlwcmludGsoS0VSTl9FUlIgIkVESUQg YmxvY2sgaXMgYWxsIHplcm9lc1xuIik7Cj4gLQkJfSBlbHNlIHsKPiAtCQkJcHJpbnRrKEtFUk5f RVJSICJSYXcgRURJRDpcbiIpOwo+IC0JCQlwcmludF9oZXhfZHVtcChLRVJOX0VSUiwgIiBcdCIs IERVTVBfUFJFRklYX05PTkUsIDE2LCAxLAo+IC0JCQkgICAgICAgcmF3X2VkaWQsIEVESURfTEVO R1RILCBmYWxzZSk7Cj4gLQkJfQo+IC0JfQo+ICAJcmV0dXJuIGZhbHNlOwo+ICB9Cj4gIEVYUE9S VF9TWU1CT0woZHJtX2VkaWRfYmxvY2tfdmFsaWQpOwo+ICAKPiArc3RhdGljIHZvaWQgZHJtX2Vk aWRfYmxvY2tfZHVtcCh1OCAqcmF3X2VkaWQsIGludCBibG9jaykKPiArewo+ICsJdTggY3N1bTsK PiArCj4gKwlpZiAoZHJtX2VkaWRfaXNfemVybyhyYXdfZWRpZCwgRURJRF9MRU5HVEgpKSB7Cj4g KwkJcHJpbnRrKEtFUk5fTk9USUNFICJFRElEIGJsb2NrICVkIGlzIGFsbCB6ZXJvZXMuXG4iLCBi bG9jayk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCWlmICgoY3N1bSA9IGRybV9lZGlkX2Js b2NrX2NoZWNrc3VtKHJhd19lZGlkKSkpCj4gKwkJcHJpbnRrKEtFUk5fTk9USUNFICJFRElEIGJs b2NrICVkIGNoZWNrc3VtIGlzIGludmFsaWQsIHJlbWFpbmRlciBpcyAlZFxuIiwgYmxvY2ssIGNz dW0pOwo+ICsJZWxzZQo+ICsJCXByaW50ayhLRVJOX05PVElDRSAiRURJRCBibG9jayAlZCBpbnZh bGlkLlxuIiwgYmxvY2spOwo+ICsKPiArCXByaW50ayhLRVJOX05PVElDRSAiUmF3IEVESUQ6XG4i KTsKPiArCXByaW50X2hleF9kdW1wKEtFUk5fTk9USUNFLCAiIFx0IiwgRFVNUF9QUkVGSVhfTk9O RSwgMTYsIDEsCj4gKwkJICAgICAgIHJhd19lZGlkLCBFRElEX0xFTkdUSCwgZmFsc2UpOwo+ICt9 Cj4gKwo+ICAvKioKPiAgICogZHJtX2VkaWRfaXNfdmFsaWQgLSBzYW5pdHkgY2hlY2sgRURJRCBk YXRhCj4gICAqIEBlZGlkOiBFRElEIGRhdGEKPiBAQCAtMTEyOSw4ICsxMTM0LDEwIEBAIGJvb2wg ZHJtX2VkaWRfaXNfdmFsaWQoc3RydWN0IGVkaWQgKmVkaWQpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ ICAKPiAgCWZvciAoaSA9IDA7IGkgPD0gZWRpZC0+ZXh0ZW5zaW9uczsgaSsrKQo+IC0JCWlmICgh ZHJtX2VkaWRfYmxvY2tfdmFsaWQocmF3ICsgaSAqIEVESURfTEVOR1RILCBpLCB0cnVlKSkKPiAr CQlpZiAoIWRybV9lZGlkX2Jsb2NrX3ZhbGlkKHJhdyArIGkgKiBFRElEX0xFTkdUSCwgaSkpIHsK PiArCQkJZHJtX2VkaWRfYmxvY2tfZHVtcChyYXcgKyBpICogRURJRF9MRU5HVEgsIGkpOwo+ICAJ CQlyZXR1cm4gZmFsc2U7Cj4gKwkJfQo+ICAKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gQEAgLTEy MjEsNyArMTIyOCw3IEBAIHN0cnVjdCBlZGlkICpkcm1fZG9fZ2V0X2VkaWQoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkJICAgICAgc2l6ZV90IGxlbiksCj4gIAl2b2lkICpk YXRhKQo+ICB7Cj4gLQlpbnQgaSwgaiA9IDAsIHZhbGlkX2V4dGVuc2lvbnMgPSAwOwo+ICsJaW50 IGksIGogPSAwLCB2YWxpZF9leHRlbnNpb25zID0gLTE7Cj4gIAl1OCAqYmxvY2ssICpuZXc7Cj4g IAlib29sIHByaW50X2JhZF9lZGlkID0gIWNvbm5lY3Rvci0+YmFkX2VkaWRfY291bnRlciB8fCAo ZHJtX2RlYnVnICYgRFJNX1VUX0tNUyk7Cj4gIAo+IEBAIC0xMjMyLDcgKzEyMzksNyBAQCBzdHJ1 Y3QgZWRpZCAqZHJtX2RvX2dldF9lZGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gIAlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gIAkJaWYgKGdldF9lZGlkX2Jsb2NrKGRh dGEsIGJsb2NrLCAwLCBFRElEX0xFTkdUSCkpCj4gIAkJCWdvdG8gb3V0Owo+IC0JCWlmIChkcm1f ZWRpZF9ibG9ja192YWxpZChibG9jaywgMCwgcHJpbnRfYmFkX2VkaWQpKQo+ICsJCWlmIChkcm1f ZWRpZF9ibG9ja192YWxpZChibG9jaywgMCkpCj4gIAkJCWJyZWFrOwo+ICAJCWlmIChpID09IDAg JiYgZHJtX2VkaWRfaXNfemVybyhibG9jaywgRURJRF9MRU5HVEgpKSB7Cj4gIAkJCWNvbm5lY3Rv ci0+bnVsbF9lZGlkX2NvdW50ZXIrKzsKPiBAQCAtMTI1MSwxMyArMTI1OCwxNCBAQCBzdHJ1Y3Qg ZWRpZCAqZHJtX2RvX2dldF9lZGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4g IAkJZ290byBvdXQ7Cj4gIAlibG9jayA9IG5ldzsKPiAgCj4gKwl2YWxpZF9leHRlbnNpb25zID0g MDsKPiAgCWZvciAoaiA9IDE7IGogPD0gYmxvY2tbMHg3ZV07IGorKykgewo+ICAJCWZvciAoaSA9 IDA7IGkgPCA0OyBpKyspIHsKPiAgCQkJaWYgKGdldF9lZGlkX2Jsb2NrKGRhdGEsCj4gIAkJCQkg IGJsb2NrICsgKHZhbGlkX2V4dGVuc2lvbnMgKyAxKSAqIEVESURfTEVOR1RILAo+ICAJCQkJICBq LCBFRElEX0xFTkdUSCkpCj4gIAkJCQlnb3RvIG91dDsKPiAtCQkJaWYgKGRybV9lZGlkX2Jsb2Nr X3ZhbGlkKGJsb2NrICsgKHZhbGlkX2V4dGVuc2lvbnMgKyAxKSAqIEVESURfTEVOR1RILCBqLCBw cmludF9iYWRfZWRpZCkpIHsKPiArCQkJaWYgKGRybV9lZGlkX2Jsb2NrX3ZhbGlkKGJsb2NrICsg KHZhbGlkX2V4dGVuc2lvbnMgKyAxKSAqIEVESURfTEVOR1RILCBqKSkgewo+ICAJCQkJdmFsaWRf ZXh0ZW5zaW9ucysrOwo+ICAJCQkJYnJlYWs7Cj4gIAkJCX0KPiBAQCAtMTI2NSwxNCArMTI3Mywy NSBAQCBzdHJ1Y3QgZWRpZCAqZHJtX2RvX2dldF9lZGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCj4gIAo+ICAJCWlmIChpID09IDQgJiYgcHJpbnRfYmFkX2VkaWQpIHsKPiAgCQkJ ZGV2X3dhcm4oY29ubmVjdG9yLT5kZXYtPmRldiwKPiAtCQkJICIlczogSWdub3JpbmcgaW52YWxp ZCBFRElEIGJsb2NrICVkLlxuIiwKPiAtCQkJIGNvbm5lY3Rvci0+bmFtZSwgaik7Cj4gKwkJCQkg IiVzOiBJZ25vcmluZyBpbnZhbGlkIEVESUQgYmxvY2sgJWQuXG4iLAo+ICsJCQkJIGNvbm5lY3Rv ci0+bmFtZSwgaik7Cj4gKwo+ICsJCQlkcm1fZWRpZF9ibG9ja19kdW1wKGJsb2NrICsgKHZhbGlk X2V4dGVuc2lvbnMrMSkgKiBFRElEX0xFTkdUSCwKPiArCQkJCQkgICAgaik7Cj4gIAo+ICAJCQlj b25uZWN0b3ItPmJhZF9lZGlkX2NvdW50ZXIrKzsKPiAgCQl9Cj4gIAl9Cj4gIAo+ICAJaWYgKHZh bGlkX2V4dGVuc2lvbnMgIT0gYmxvY2tbMHg3ZV0pIHsKPiArCQlpZiAocHJpbnRfYmFkX2VkaWQp IHsKPiArCQkJZGV2X3dhcm4oY29ubmVjdG9yLT5kZXYtPmRldiwKPiArCQkJCSAiRm91bmQgJWQg dmFsaWQgZXh0ZW5zaW9ucyBpbnN0ZWFkIG9mICVkIGluICIKPiArCQkJCSAiRURJRCBmb3IgY29u bmVjdG9yIFwiJXNcIlxuIiwKPiArCQkJCSB2YWxpZF9leHRlbnNpb25zLAo+ICsJCQkJIGJsb2Nr WzB4N2VdLCBjb25uZWN0b3ItPm5hbWUpOwo+ICsJCX0KPiArCj4gIAkJYmxvY2tbRURJRF9MRU5H VEgtMV0gKz0gYmxvY2tbMHg3ZV0gLSB2YWxpZF9leHRlbnNpb25zOwo+ICAJCWJsb2NrWzB4N2Vd ID0gdmFsaWRfZXh0ZW5zaW9uczsKPiAgCQluZXcgPSBrcmVhbGxvYyhibG9jaywgKHZhbGlkX2V4 dGVuc2lvbnMgKyAxKSAqIEVESURfTEVOR1RILCBHRlBfS0VSTkVMKTsKPiBAQCAtMTI4Nyw2ICsx MzA2LDkgQEAgY2FycDoKPiAgCWlmIChwcmludF9iYWRfZWRpZCkgewo+ICAJCWRldl93YXJuKGNv bm5lY3Rvci0+ZGV2LT5kZXYsICIlczogRURJRCBibG9jayAlZCBpbnZhbGlkLlxuIiwKPiAgCQkJ IGNvbm5lY3Rvci0+bmFtZSwgaik7Cj4gKwo+ICsJCWRybV9lZGlkX2Jsb2NrX2R1bXAoYmxvY2sg KyAodmFsaWRfZXh0ZW5zaW9ucysxKSAqIEVESURfTEVOR1RILAo+ICsJCQkJICAgIGopOwo+ICAJ fQo+ICAJY29ubmVjdG9yLT5iYWRfZWRpZF9jb3VudGVyKys7Cj4gIAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2VkaWRfbG9hZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlk X2xvYWQuYwo+IGluZGV4IDczMmNiNmY4ZTY1My4uZjZhNDQwOGNiMDk2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZF9sb2FkLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2VkaWRfbG9hZC5jCj4gQEAgLTE2MCwxNSArMTYwLDIwIEBAIHN0YXRpYyBpbnQgZWRpZF9z aXplKGNvbnN0IHU4ICplZGlkLCBpbnQgZGF0YV9zaXplKQo+ICAJcmV0dXJuIChlZGlkWzB4N2Vd ICsgMSkgKiBFRElEX0xFTkdUSDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBnZXRfZWRpZF9ibG9j ayh2b2lkICpkYXRhLCB1OCAqYnVmLCB1bnNpZ25lZCBpbnQgYmxvY2ssIHNpemVfdCBsZW4pCj4g K3sKPiArCW1lbWNweShidWYsIGRhdGEgKyBibG9jayAqIEVESURfTEVOR1RILCBFRElEX0xFTkdU SCk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgKmVkaWRfbG9hZChzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBjb25zdCBjaGFyICpuYW1lLAo+ICAJCQljb25z dCBjaGFyICpjb25uZWN0b3JfbmFtZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGZpcm13YXJlICpm dyA9IE5VTEw7Cj4gIAljb25zdCB1OCAqZndkYXRhOwo+IC0JdTggKmVkaWQ7Cj4gKwlzdHJ1Y3Qg ZWRpZCAqZWRpZDsKPiAgCWludCBmd3NpemUsIGJ1aWx0aW47Cj4gLQlpbnQgaSwgdmFsaWRfZXh0 ZW5zaW9ucyA9IDA7Cj4gLQlib29sIHByaW50X2JhZF9lZGlkID0gIWNvbm5lY3Rvci0+YmFkX2Vk aWRfY291bnRlciB8fCAoZHJtX2RlYnVnICYgRFJNX1VUX0tNUyk7Cj4gKwlpbnQgaTsKPiAgCj4g IAlidWlsdGluID0gMDsKPiAgCWZvciAoaSA9IDA7IGkgPCBHRU5FUklDX0VESURTOyBpKyspIHsK PiBAQCAtMjEwLDQ5ICsyMTUsMTggQEAgc3RhdGljIHZvaWQgKmVkaWRfbG9hZChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBjb25zdCBjaGFyICpuYW1lLAo+ICAJCWdvdG8gb3V0Owo+ ICAJfQo+ICAKPiAtCWVkaWQgPSBrbWVtZHVwKGZ3ZGF0YSwgZndzaXplLCBHRlBfS0VSTkVMKTsK PiAtCWlmIChlZGlkID09IE5VTEwpIHsKPiAtCQllZGlkID0gRVJSX1BUUigtRU5PTUVNKTsKPiAt CQlnb3RvIG91dDsKPiAtCX0KPiAtCj4gLQlpZiAoIWRybV9lZGlkX2Jsb2NrX3ZhbGlkKGVkaWQs IDAsIHByaW50X2JhZF9lZGlkKSkgewo+IC0JCWNvbm5lY3Rvci0+YmFkX2VkaWRfY291bnRlcisr Owo+IC0JCURSTV9FUlJPUigiQmFzZSBibG9jayBvZiBFRElEIGZpcm13YXJlIFwiJXNcIiBpcyBp bnZhbGlkICIsCj4gLQkJICAgIG5hbWUpOwo+IC0JCWtmcmVlKGVkaWQpOwo+ICsJZWRpZCA9IGRy bV9kb19nZXRfZWRpZChjb25uZWN0b3IsIGdldF9lZGlkX2Jsb2NrLCAodm9pZCAqKWZ3ZGF0YSk7 Cj4gKwlpZiAoZWRpZCkgewo+ICsJCURSTV9JTkZPKCJHb3QgJXMgRURJRCBiYXNlIGJsb2NrIGFu ZCAlZCBleHRlbnNpb24lcyBmcm9tICIKPiArCQkJICJcIiVzXCIgZm9yIGNvbm5lY3RvciBcIiVz XCJcbiIsCj4gKwkJCSBidWlsdGluID8gImJ1aWx0LWluIiA6ICJleHRlcm5hbCIsCj4gKwkJCSAo KHU4ICopZWRpZClbMHg3ZV0sICgodTggKillZGlkKVsweDdlXSA9PSAxID8gIiIgOiAicyIsCj4g KwkJCSBuYW1lLCBjb25uZWN0b3JfbmFtZSk7Cj4gKwl9IGVsc2Ugewo+ICsJCURSTV9FUlJPUigi RURJRCBmaXJtd2FyZSBcIiVzXCIgaXMgaW52YWxpZCAiLCBuYW1lKTsKPiAgCQllZGlkID0gRVJS X1BUUigtRUlOVkFMKTsKPiAtCQlnb3RvIG91dDsKPiAgCX0KPiAgCj4gLQlmb3IgKGkgPSAxOyBp IDw9IGVkaWRbMHg3ZV07IGkrKykgewo+IC0JCWlmIChpICE9IHZhbGlkX2V4dGVuc2lvbnMgKyAx KQo+IC0JCQltZW1jcHkoZWRpZCArICh2YWxpZF9leHRlbnNpb25zICsgMSkgKiBFRElEX0xFTkdU SCwKPiAtCQkJICAgIGVkaWQgKyBpICogRURJRF9MRU5HVEgsIEVESURfTEVOR1RIKTsKPiAtCQlp ZiAoZHJtX2VkaWRfYmxvY2tfdmFsaWQoZWRpZCArIGkgKiBFRElEX0xFTkdUSCwgaSwgcHJpbnRf YmFkX2VkaWQpKQo+IC0JCQl2YWxpZF9leHRlbnNpb25zKys7Cj4gLQl9Cj4gLQo+IC0JaWYgKHZh bGlkX2V4dGVuc2lvbnMgIT0gZWRpZFsweDdlXSkgewo+IC0JCXU4ICpuZXdfZWRpZDsKPiAtCj4g LQkJZWRpZFtFRElEX0xFTkdUSC0xXSArPSBlZGlkWzB4N2VdIC0gdmFsaWRfZXh0ZW5zaW9uczsK PiAtCQlEUk1fSU5GTygiRm91bmQgJWQgdmFsaWQgZXh0ZW5zaW9ucyBpbnN0ZWFkIG9mICVkIGlu IEVESUQgZGF0YSAiCj4gLQkJICAgICJcIiVzXCIgZm9yIGNvbm5lY3RvciBcIiVzXCJcbiIsIHZh bGlkX2V4dGVuc2lvbnMsCj4gLQkJICAgIGVkaWRbMHg3ZV0sIG5hbWUsIGNvbm5lY3Rvcl9uYW1l KTsKPiAtCQllZGlkWzB4N2VdID0gdmFsaWRfZXh0ZW5zaW9uczsKPiAtCj4gLQkJbmV3X2VkaWQg PSBrcmVhbGxvYyhlZGlkLCAodmFsaWRfZXh0ZW5zaW9ucyArIDEpICogRURJRF9MRU5HVEgsCj4g LQkJCQkgICAgR0ZQX0tFUk5FTCk7Cj4gLQkJaWYgKG5ld19lZGlkKQo+IC0JCQllZGlkID0gbmV3 X2VkaWQ7Cj4gLQl9Cj4gLQo+IC0JRFJNX0lORk8oIkdvdCAlcyBFRElEIGJhc2UgYmxvY2sgYW5k ICVkIGV4dGVuc2lvbiVzIGZyb20gIgo+IC0JICAgICJcIiVzXCIgZm9yIGNvbm5lY3RvciBcIiVz XCJcbiIsIGJ1aWx0aW4gPyAiYnVpbHQtaW4iIDoKPiAtCSAgICAiZXh0ZXJuYWwiLCB2YWxpZF9l eHRlbnNpb25zLCB2YWxpZF9leHRlbnNpb25zID09IDEgPyAiIiA6ICJzIiwKPiAtCSAgICBuYW1l LCBjb25uZWN0b3JfbmFtZSk7Cj4gLQo+ICBvdXQ6Cj4gIAlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsK PiAgCXJldHVybiBlZGlkOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oIGIv aW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+IGluZGV4IGRhODNkMzllMzdkNC4uMTUyNzhmZDE0NzM5 IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiArKysgYi9pbmNsdWRlL2Ry bS9kcm1fY3J0Yy5oCj4gQEAgLTE0NDEsNyArMTQ0MSw3IEBAIGV4dGVybiB2b2lkIGRybV9zZXRf cHJlZmVycmVkX21vZGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkJCSAg IGludCBocHJlZiwgaW50IHZwcmVmKTsKPiAgCj4gIGV4dGVybiBpbnQgZHJtX2VkaWRfaGVhZGVy X2lzX3ZhbGlkKGNvbnN0IHU4ICpyYXdfZWRpZCk7Cj4gLWV4dGVybiBib29sIGRybV9lZGlkX2Js b2NrX3ZhbGlkKHU4ICpyYXdfZWRpZCwgaW50IGJsb2NrLCBib29sIHByaW50X2JhZF9lZGlkKTsK PiArZXh0ZXJuIGJvb2wgZHJtX2VkaWRfYmxvY2tfdmFsaWQodTggKnJhd19lZGlkLCBpbnQgYmxv Y2spOwo+ICBleHRlcm4gYm9vbCBkcm1fZWRpZF9pc192YWxpZChzdHJ1Y3QgZWRpZCAqZWRpZCk7 Cj4gIAo+ICBleHRlcm4gc3RydWN0IGRybV90aWxlX2dyb3VwICpkcm1fbW9kZV9jcmVhdGVfdGls ZV9ncm91cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0tIAo+IDIuMS40Cj4gCj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFp bGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApWaWxsZSBT eXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==