From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2] drm/edid: index CEA/HDMI mode tables using the VIC Date: Fri, 8 Jan 2016 13:30:29 +0200 Message-ID: <20160108113029.GT4437@intel.com> References: <1448983014-26551-1-git-send-email-jani.nikula@intel.com> <1452252111-6439-1-git-send-email-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id E136C6E774 for ; Fri, 8 Jan 2016 03:30:32 -0800 (PST) Content-Disposition: inline In-Reply-To: <1452252111-6439-1-git-send-email-jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jani Nikula Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKYW4gMDgsIDIwMTYgYXQgMDE6MjE6NTFQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gQWRkIGEgZHVtbXkgZW50cnkgdG8gQ0VBL0hETUkgbW9kZSB0YWJsZXMgc28gdGhleSBj YW4gYmUgaW5kZXhlZAo+IGRpcmVjdGx5IHVzaW5nIHRoZSBWSUMsIGF2b2lkaW5nIGEgKzEvLTEg ZGFuY2UgaGVyZSBhbmQgdGhlcmUuIFRoaXMgYWRkcwo+IGNsYXJpdHkgdG8gdGhlIGVycm9yIGNo ZWNraW5nIGZvciB2YXJpb3VzIGZ1bmN0aW9ucyB0aGF0IHJldHVybiB0aGUgVklDCj4gb24gc3Vj Y2VzcyBhbmQgemVybyBvbiBmYWlsdXJlOyB3ZSBjYW4gbm93IGV4cGxpY2l0bHkgY2hlY2sgZm9y IDAKPiBpbnN0ZWFkIG9mIGp1c3Qgc3VidHJhY3Rpbmcgb25lIGZyb20gYW4gdW5zaWduZWQgdHlw ZS4KPiAKPiBBbHNvIGFkZCBkcm1fdmFsaWRfY2VhX3ZpYygpIGFuZCBkcm1fdmFsaWRfaGRtaV92 aWMoKSBoZWxwZXJzIGZvcgo+IGNoZWNraW5nIHZhbGlkIFZJQ3MuCj4gCj4gdjI6IGFkZCBkcm1f dmFsaWRfY2VhX3ZpYyBhbmQgZHJtX3ZhbGlkX2hkbWlfdmljIGhlbHBlcnMgKFZpbGxlKQo+ICAg ICB1c2UgeyB9IGluc3RlYWQgb2YgeyAwIH0gZm9yIGluaXRpYWxpemluZyB0aGUgZHVtbXkgbW9k ZXMKPiAKPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPiBDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+CgpSZXZpZXdlZC1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jIHwgOTQgKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNTMgaW5zZXJ0aW9u cygrKSwgNDEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiBpbmRleCBjMjE0ZjEyNDZj YjQuLjA0Y2I0ODc3ZmFiZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gQEAgLTYzNyw4ICs2MzcsMTIg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaW5pbW9kZSBleHRyYV9tb2Rlc1tdID0gewo+ICAvKgo+ ICAgKiBQcm9iYWJseSB0YWtlbiBmcm9tIENFQS04NjEgc3BlYy4KPiAgICogVGhpcyB0YWJsZSBp cyBjb252ZXJ0ZWQgZnJvbSB4b3JnJ3MgaHcveGZyZWU4Ni9tb2Rlcy94Zjg2RWRpZE1vZGVzLmMu Cj4gKyAqCj4gKyAqIEluZGV4IHVzaW5nIHRoZSBWSUMuCj4gICAqLwo+ICBzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgZWRpZF9jZWFfbW9kZXNbXSA9IHsKPiArCS8qIDAgLSBk dW1teSwgVklDcyBzdGFydCBhdCAxICovCj4gKwl7IH0sCj4gIAkvKiAxIC0gNjQweDQ4MEA2MEh6 ICovCj4gIAl7IERSTV9NT0RFKCI2NDB4NDgwIiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDI1MTc1 LCA2NDAsIDY1NiwKPiAgCQkgICA3NTIsIDgwMCwgMCwgNDgwLCA0OTAsIDQ5MiwgNTI1LCAwLAo+ IEBAIC05ODcsOSArOTkxLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSBlZGlkX2NlYV9tb2Rlc1tdID0gewo+ICB9Owo+ICAKPiAgLyoKPiAtICogSERNSSAxLjQgNGsg bW9kZXMuCj4gKyAqIEhETUkgMS40IDRrIG1vZGVzLiBJbmRleCB1c2luZyB0aGUgVklDLgo+ICAg Ki8KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIGVkaWRfNGtfbW9kZXNb XSA9IHsKPiArCS8qIDAgLSBkdW1teSwgVklDcyBzdGFydCBhdCAxICovCj4gKwl7IH0sCj4gIAkv KiAxIC0gMzg0MHgyMTYwQDMwSHogKi8KPiAgCXsgRFJNX01PREUoIjM4NDB4MjE2MCIsIERSTV9N T0RFX1RZUEVfRFJJVkVSLCAyOTcwMDAsCj4gIAkJICAgMzg0MCwgNDAxNiwgNDEwNCwgNDQwMCwg MCwKPiBAQCAtMjU0OCwxMyArMjU1NCwxMyBAQCBjZWFfbW9kZV9hbHRlcm5hdGVfY2xvY2soY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmNlYV9tb2RlKQo+ICBzdGF0aWMgdTggZHJtX21h dGNoX2NlYV9tb2RlX2Nsb2NrX3RvbGVyYW5jZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqdG9fbWF0Y2gsCj4gIAkJCQkJICAgICB1bnNpZ25lZCBpbnQgY2xvY2tfdG9sZXJhbmNlKQo+ ICB7Cj4gLQl1OCBtb2RlOwo+ICsJdTggdmljOwo+ICAKPiAgCWlmICghdG9fbWF0Y2gtPmNsb2Nr KQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCWZvciAobW9kZSA9IDA7IG1vZGUgPCBBUlJBWV9TSVpF KGVkaWRfY2VhX21vZGVzKTsgbW9kZSsrKSB7Cj4gLQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmNlYV9tb2RlID0gJmVkaWRfY2VhX21vZGVzW21vZGVdOwo+ICsJZm9yICh2aWMgPSAx OyB2aWMgPCBBUlJBWV9TSVpFKGVkaWRfY2VhX21vZGVzKTsgdmljKyspIHsKPiArCQljb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqY2VhX21vZGUgPSAmZWRpZF9jZWFfbW9kZXNbdmljXTsK PiAgCQl1bnNpZ25lZCBpbnQgY2xvY2sxLCBjbG9jazI7Cj4gIAo+ICAJCS8qIENoZWNrIGJvdGgg NjBIeiBhbmQgNTkuOTRIeiAqLwo+IEBAIC0yNTY2LDcgKzI1NzIsNyBAQCBzdGF0aWMgdTggZHJt X21hdGNoX2NlYV9tb2RlX2Nsb2NrX3RvbGVyYW5jZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqdG9fbQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKGRybV9tb2RlX2VxdWFsX25v X2Nsb2Nrcyh0b19tYXRjaCwgY2VhX21vZGUpKQo+IC0JCQlyZXR1cm4gbW9kZSArIDE7Cj4gKwkJ CXJldHVybiB2aWM7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTI1ODEsMTMgKzI1ODcs MTMgQEAgc3RhdGljIHU4IGRybV9tYXRjaF9jZWFfbW9kZV9jbG9ja190b2xlcmFuY2UoY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRvX20KPiAgICovCj4gIHU4IGRybV9tYXRjaF9jZWFf bW9kZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdG9fbWF0Y2gpCj4gIHsKPiAtCXU4 IG1vZGU7Cj4gKwl1OCB2aWM7Cj4gIAo+ICAJaWYgKCF0b19tYXRjaC0+Y2xvY2spCj4gIAkJcmV0 dXJuIDA7Cj4gIAo+IC0JZm9yIChtb2RlID0gMDsgbW9kZSA8IEFSUkFZX1NJWkUoZWRpZF9jZWFf bW9kZXMpOyBtb2RlKyspIHsKPiAtCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqY2Vh X21vZGUgPSAmZWRpZF9jZWFfbW9kZXNbbW9kZV07Cj4gKwlmb3IgKHZpYyA9IDE7IHZpYyA8IEFS UkFZX1NJWkUoZWRpZF9jZWFfbW9kZXMpOyB2aWMrKykgewo+ICsJCWNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICpjZWFfbW9kZSA9ICZlZGlkX2NlYV9tb2Rlc1t2aWNdOwo+ICAJCXVuc2ln bmVkIGludCBjbG9jazEsIGNsb2NrMjsKPiAgCj4gIAkJLyogQ2hlY2sgYm90aCA2MEh6IGFuZCA1 OS45NEh6ICovCj4gQEAgLTI1OTcsMTIgKzI2MDMsMTcgQEAgdTggZHJtX21hdGNoX2NlYV9tb2Rl KGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICp0b19tYXRjaCkKPiAgCQlpZiAoKEtIWjJQ SUNPUyh0b19tYXRjaC0+Y2xvY2spID09IEtIWjJQSUNPUyhjbG9jazEpIHx8Cj4gIAkJICAgICBL SFoyUElDT1ModG9fbWF0Y2gtPmNsb2NrKSA9PSBLSFoyUElDT1MoY2xvY2syKSkgJiYKPiAgCQkg ICAgZHJtX21vZGVfZXF1YWxfbm9fY2xvY2tzX25vX3N0ZXJlbyh0b19tYXRjaCwgY2VhX21vZGUp KQo+IC0JCQlyZXR1cm4gbW9kZSArIDE7Cj4gKwkJCXJldHVybiB2aWM7Cj4gIAl9Cj4gIAlyZXR1 cm4gMDsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9tYXRjaF9jZWFfbW9kZSk7Cj4gIAo+ICtz dGF0aWMgYm9vbCBkcm1fdmFsaWRfY2VhX3ZpYyh1OCB2aWMpCj4gK3sKPiArCXJldHVybiB2aWMg PiAwICYmIHZpYyA8IEFSUkFZX1NJWkUoZWRpZF9jZWFfbW9kZXMpOwo+ICt9Cj4gKwo+ICAvKioK PiAgICogZHJtX2dldF9jZWFfYXNwZWN0X3JhdGlvIC0gZ2V0IHRoZSBwaWN0dXJlIGFzcGVjdCBy YXRpbyBjb3JyZXNwb25kaW5nIHRvCj4gICAqIHRoZSBpbnB1dCBWSUMgZnJvbSB0aGUgQ0VBIG1v ZGUgbGlzdAo+IEBAIC0yNjEyLDEwICsyNjIzLDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fbWF0Y2hf Y2VhX21vZGUpOwo+ICAgKi8KPiAgZW51bSBoZG1pX3BpY3R1cmVfYXNwZWN0IGRybV9nZXRfY2Vh X2FzcGVjdF9yYXRpbyhjb25zdCB1OCB2aWRlb19jb2RlKQo+ICB7Cj4gLQkvKiByZXR1cm4gcGlj dHVyZSBhc3BlY3QgcmF0aW8gZm9yIHZpZGVvX2NvZGUgLSAxIHRvIGFjY2VzcyB0aGUKPiAtCSAq IHJpZ2h0IGFycmF5IGVsZW1lbnQKPiAtCSovCj4gLQlyZXR1cm4gZWRpZF9jZWFfbW9kZXNbdmlk ZW9fY29kZS0xXS5waWN0dXJlX2FzcGVjdF9yYXRpbzsKPiArCXJldHVybiBlZGlkX2NlYV9tb2Rl c1t2aWRlb19jb2RlXS5waWN0dXJlX2FzcGVjdF9yYXRpbzsKPiAgfQo+ICBFWFBPUlRfU1lNQk9M KGRybV9nZXRfY2VhX2FzcGVjdF9yYXRpbyk7Cj4gIAo+IEBAIC0yNjM5LDEzICsyNjQ3LDEzIEBA IGhkbWlfbW9kZV9hbHRlcm5hdGVfY2xvY2soY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmhkbWlfbW9kZSkKPiAgc3RhdGljIHU4IGRybV9tYXRjaF9oZG1pX21vZGVfY2xvY2tfdG9sZXJh bmNlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICp0b19tYXRjaCwKPiAgCQkJCQkgICAg ICB1bnNpZ25lZCBpbnQgY2xvY2tfdG9sZXJhbmNlKQo+ICB7Cj4gLQl1OCBtb2RlOwo+ICsJdTgg dmljOwo+ICAKPiAgCWlmICghdG9fbWF0Y2gtPmNsb2NrKQo+ICAJCXJldHVybiAwOwo+ICAKPiAt CWZvciAobW9kZSA9IDA7IG1vZGUgPCBBUlJBWV9TSVpFKGVkaWRfNGtfbW9kZXMpOyBtb2RlKysp IHsKPiAtCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqaGRtaV9tb2RlID0gJmVkaWRf NGtfbW9kZXNbbW9kZV07Cj4gKwlmb3IgKHZpYyA9IDE7IHZpYyA8IEFSUkFZX1NJWkUoZWRpZF80 a19tb2Rlcyk7IHZpYysrKSB7Cj4gKwkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmhk bWlfbW9kZSA9ICZlZGlkXzRrX21vZGVzW3ZpY107Cj4gIAkJdW5zaWduZWQgaW50IGNsb2NrMSwg Y2xvY2syOwo+ICAKPiAgCQkvKiBNYWtlIHN1cmUgdG8gYWxzbyBtYXRjaCBhbHRlcm5hdGUgY2xv Y2tzICovCj4gQEAgLTI2NTcsNyArMjY2NSw3IEBAIHN0YXRpYyB1OCBkcm1fbWF0Y2hfaGRtaV9t b2RlX2Nsb2NrX3RvbGVyYW5jZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdG9fCj4g IAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAoZHJtX21vZGVfZXF1YWxfbm9fY2xvY2tzKHRvX21h dGNoLCBoZG1pX21vZGUpKQo+IC0JCQlyZXR1cm4gbW9kZSArIDE7Cj4gKwkJCXJldHVybiB2aWM7 Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTI2NzMsMTMgKzI2ODEsMTMgQEAgc3RhdGlj IHU4IGRybV9tYXRjaF9oZG1pX21vZGVfY2xvY2tfdG9sZXJhbmNlKGNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICp0b18KPiAgICovCj4gIHN0YXRpYyB1OCBkcm1fbWF0Y2hfaGRtaV9tb2Rl KGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICp0b19tYXRjaCkKPiAgewo+IC0JdTggbW9k ZTsKPiArCXU4IHZpYzsKPiAgCj4gIAlpZiAoIXRvX21hdGNoLT5jbG9jaykKPiAgCQlyZXR1cm4g MDsKPiAgCj4gLQlmb3IgKG1vZGUgPSAwOyBtb2RlIDwgQVJSQVlfU0laRShlZGlkXzRrX21vZGVz KTsgbW9kZSsrKSB7Cj4gLQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmhkbWlfbW9k ZSA9ICZlZGlkXzRrX21vZGVzW21vZGVdOwo+ICsJZm9yICh2aWMgPSAxOyB2aWMgPCBBUlJBWV9T SVpFKGVkaWRfNGtfbW9kZXMpOyB2aWMrKykgewo+ICsJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICpoZG1pX21vZGUgPSAmZWRpZF80a19tb2Rlc1t2aWNdOwo+ICAJCXVuc2lnbmVkIGlu dCBjbG9jazEsIGNsb2NrMjsKPiAgCj4gIAkJLyogTWFrZSBzdXJlIHRvIGFsc28gbWF0Y2ggYWx0 ZXJuYXRlIGNsb2NrcyAqLwo+IEBAIC0yNjg5LDExICsyNjk3LDE2IEBAIHN0YXRpYyB1OCBkcm1f bWF0Y2hfaGRtaV9tb2RlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICp0b19tYXRjaCkK PiAgCQlpZiAoKEtIWjJQSUNPUyh0b19tYXRjaC0+Y2xvY2spID09IEtIWjJQSUNPUyhjbG9jazEp IHx8Cj4gIAkJICAgICBLSFoyUElDT1ModG9fbWF0Y2gtPmNsb2NrKSA9PSBLSFoyUElDT1MoY2xv Y2syKSkgJiYKPiAgCQkgICAgZHJtX21vZGVfZXF1YWxfbm9fY2xvY2tzX25vX3N0ZXJlbyh0b19t YXRjaCwgaGRtaV9tb2RlKSkKPiAtCQkJcmV0dXJuIG1vZGUgKyAxOwo+ICsJCQlyZXR1cm4gdmlj Owo+ICAJfQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIGRybV92YWxpZF9o ZG1pX3ZpYyh1OCB2aWMpCj4gK3sKPiArCXJldHVybiB2aWMgPiAwICYmIHZpYyA8IEFSUkFZX1NJ WkUoZWRpZF80a19tb2Rlcyk7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQKPiAgYWRkX2FsdGVybmF0 ZV9jZWFfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQg KmVkaWQpCj4gIHsKPiBAQCAtMjcxMywxNiArMjcyNiwxNiBAQCBhZGRfYWx0ZXJuYXRlX2NlYV9t b2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCkK PiAgCWxpc3RfZm9yX2VhY2hfZW50cnkobW9kZSwgJmNvbm5lY3Rvci0+cHJvYmVkX21vZGVzLCBo ZWFkKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmNlYV9tb2RlID0gTlVM TDsKPiAgCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKPiAtCQl1OCBtb2RlX2lk eCA9IGRybV9tYXRjaF9jZWFfbW9kZShtb2RlKSAtIDE7Cj4gKwkJdTggdmljID0gZHJtX21hdGNo X2NlYV9tb2RlKG1vZGUpOwo+ICAJCXVuc2lnbmVkIGludCBjbG9jazEsIGNsb2NrMjsKPiAgCj4g LQkJaWYgKG1vZGVfaWR4IDwgQVJSQVlfU0laRShlZGlkX2NlYV9tb2RlcykpIHsKPiAtCQkJY2Vh X21vZGUgPSAmZWRpZF9jZWFfbW9kZXNbbW9kZV9pZHhdOwo+ICsJCWlmIChkcm1fdmFsaWRfY2Vh X3ZpYyh2aWMpKSB7Cj4gKwkJCWNlYV9tb2RlID0gJmVkaWRfY2VhX21vZGVzW3ZpY107Cj4gIAkJ CWNsb2NrMiA9IGNlYV9tb2RlX2FsdGVybmF0ZV9jbG9jayhjZWFfbW9kZSk7Cj4gIAkJfSBlbHNl IHsKPiAtCQkJbW9kZV9pZHggPSBkcm1fbWF0Y2hfaGRtaV9tb2RlKG1vZGUpIC0gMTsKPiAtCQkJ aWYgKG1vZGVfaWR4IDwgQVJSQVlfU0laRShlZGlkXzRrX21vZGVzKSkgewo+IC0JCQkJY2VhX21v ZGUgPSAmZWRpZF80a19tb2Rlc1ttb2RlX2lkeF07Cj4gKwkJCXZpYyA9IGRybV9tYXRjaF9oZG1p X21vZGUobW9kZSk7Cj4gKwkJCWlmIChkcm1fdmFsaWRfaGRtaV92aWModmljKSkgewo+ICsJCQkJ Y2VhX21vZGUgPSAmZWRpZF80a19tb2Rlc1t2aWNdOwo+ICAJCQkJY2xvY2syID0gaGRtaV9tb2Rl X2FsdGVybmF0ZV9jbG9jayhjZWFfbW9kZSk7Cj4gIAkJCX0KPiAgCQl9Cj4gQEAgLTI3NzMsMTcg KzI3ODYsMTcgQEAgZHJtX2Rpc3BsYXlfbW9kZV9mcm9tX3ZpY19pbmRleChzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29u bmVjdG9yLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKPiAtCXU4 IGNlYV9tb2RlOwo+ICsJdTggdmljOwo+ICAKPiAgCWlmICh2aWRlb19kYiA9PSBOVUxMIHx8IHZp ZGVvX2luZGV4ID49IHZpZGVvX2xlbikKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gIAkvKiBDRUEg bW9kZXMgYXJlIG51bWJlcmVkIDEuLjEyNyAqLwo+IC0JY2VhX21vZGUgPSAodmlkZW9fZGJbdmlk ZW9faW5kZXhdICYgMTI3KSAtIDE7Cj4gLQlpZiAoY2VhX21vZGUgPj0gQVJSQVlfU0laRShlZGlk X2NlYV9tb2RlcykpCj4gKwl2aWMgPSAodmlkZW9fZGJbdmlkZW9faW5kZXhdICYgMTI3KTsKPiAr CWlmICghZHJtX3ZhbGlkX2NlYV92aWModmljKSkKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gLQlu ZXdtb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwgJmVkaWRfY2VhX21vZGVzW2NlYV9tb2Rl XSk7Cj4gKwluZXdtb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwgJmVkaWRfY2VhX21vZGVz W3ZpY10pOwo+ICAJaWYgKCFuZXdtb2RlKQo+ICAJCXJldHVybiBOVUxMOwo+ICAKPiBAQCAtMjg3 OCw4ICsyODkxLDcgQEAgc3RhdGljIGludCBhZGRfaGRtaV9tb2RlKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsIHU4IHZpYykKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25u ZWN0b3ItPmRldjsKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpuZXdtb2RlOwo+ICAKPiAt CXZpYy0tOyAvKiBWSUNzIHN0YXJ0IGF0IDEgKi8KPiAtCWlmICh2aWMgPj0gQVJSQVlfU0laRShl ZGlkXzRrX21vZGVzKSkgewo+ICsJaWYgKCFkcm1fdmFsaWRfaGRtaV92aWModmljKSkgewo+ICAJ CURSTV9FUlJPUigiVW5rbm93biBIRE1JIFZJQzogJWRcbiIsIHZpYyk7Cj4gIAkJcmV0dXJuIDA7 Cj4gIAl9Cj4gQEAgLTMxNzAsMjQgKzMxODIsMjQgQEAgc3RhdGljIHZvaWQgZml4dXBfZGV0YWls ZWRfY2VhX21vZGVfY2xvY2soc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gIHsKPiAg CWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpjZWFfbW9kZTsKPiAgCWludCBjbG9jazEs IGNsb2NrMiwgY2xvY2s7Cj4gLQl1OCBtb2RlX2lkeDsKPiArCXU4IHZpYzsKPiAgCWNvbnN0IGNo YXIgKnR5cGU7Cj4gIAo+ICAJLyoKPiAgCSAqIGFsbG93IDVrSHogY2xvY2sgZGlmZmVyZW5jZSBl aXRoZXIgd2F5IHRvIGFjY291bnQgZm9yCj4gIAkgKiB0aGUgMTBrSHogY2xvY2sgcmVzb2x1dGlv biBsaW1pdCBvZiBkZXRhaWxlZCB0aW1pbmdzLgo+ICAJICovCj4gLQltb2RlX2lkeCA9IGRybV9t YXRjaF9jZWFfbW9kZV9jbG9ja190b2xlcmFuY2UobW9kZSwgNSkgLSAxOwo+IC0JaWYgKG1vZGVf aWR4IDwgQVJSQVlfU0laRShlZGlkX2NlYV9tb2RlcykpIHsKPiArCXZpYyA9IGRybV9tYXRjaF9j ZWFfbW9kZV9jbG9ja190b2xlcmFuY2UobW9kZSwgNSk7Cj4gKwlpZiAoZHJtX3ZhbGlkX2NlYV92 aWModmljKSkgewo+ICAJCXR5cGUgPSAiQ0VBIjsKPiAtCQljZWFfbW9kZSA9ICZlZGlkX2NlYV9t b2Rlc1ttb2RlX2lkeF07Cj4gKwkJY2VhX21vZGUgPSAmZWRpZF9jZWFfbW9kZXNbdmljXTsKPiAg CQljbG9jazEgPSBjZWFfbW9kZS0+Y2xvY2s7Cj4gIAkJY2xvY2syID0gY2VhX21vZGVfYWx0ZXJu YXRlX2Nsb2NrKGNlYV9tb2RlKTsKPiAgCX0gZWxzZSB7Cj4gLQkJbW9kZV9pZHggPSBkcm1fbWF0 Y2hfaGRtaV9tb2RlX2Nsb2NrX3RvbGVyYW5jZShtb2RlLCA1KSAtIDE7Cj4gLQkJaWYgKG1vZGVf aWR4IDwgQVJSQVlfU0laRShlZGlkXzRrX21vZGVzKSkgewo+ICsJCXZpYyA9IGRybV9tYXRjaF9o ZG1pX21vZGVfY2xvY2tfdG9sZXJhbmNlKG1vZGUsIDUpOwo+ICsJCWlmIChkcm1fdmFsaWRfaGRt aV92aWModmljKSkgewo+ICAJCQl0eXBlID0gIkhETUkiOwo+IC0JCQljZWFfbW9kZSA9ICZlZGlk XzRrX21vZGVzW21vZGVfaWR4XTsKPiArCQkJY2VhX21vZGUgPSAmZWRpZF80a19tb2Rlc1t2aWNd Owo+ICAJCQljbG9jazEgPSBjZWFfbW9kZS0+Y2xvY2s7Cj4gIAkJCWNsb2NrMiA9IGhkbWlfbW9k ZV9hbHRlcm5hdGVfY2xvY2soY2VhX21vZGUpOwo+ICAJCX0gZWxzZSB7Cj4gQEAgLTMyMDUsNyAr MzIxNyw3IEBAIHN0YXRpYyB2b2lkIGZpeHVwX2RldGFpbGVkX2NlYV9tb2RlX2Nsb2NrKHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ICAJCXJldHVybjsKPiAgCj4gIAlEUk1fREVCVUco ImRldGFpbGVkIG1vZGUgbWF0Y2hlcyAlcyBWSUMgJWQsIGFkanVzdGluZyBjbG9jayAlZCAtPiAl ZFxuIiwKPiAtCQkgIHR5cGUsIG1vZGVfaWR4ICsgMSwgbW9kZS0+Y2xvY2ssIGNsb2NrKTsKPiAr CQkgIHR5cGUsIHZpYywgbW9kZS0+Y2xvY2ssIGNsb2NrKTsKPiAgCW1vZGUtPmNsb2NrID0gY2xv Y2s7Cj4gIH0KPiAgCj4gLS0gCj4gMi4xLjQKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RD Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==