From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2] drm/edid: index CEA/HDMI mode tables using the VIC Date: Fri, 8 Jan 2016 15:31:00 +0100 Message-ID: <20160108143100.GY8076@phenom.ffwll.local> References: <1448983014-26551-1-git-send-email-jani.nikula@intel.com> <1452252111-6439-1-git-send-email-jani.nikula@intel.com> <20160108113029.GT4437@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f52.google.com (mail-wm0-f52.google.com [74.125.82.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id 45CF26E0D3 for ; Fri, 8 Jan 2016 06:31:03 -0800 (PST) Received: by mail-wm0-f52.google.com with SMTP id u188so139091634wmu.1 for ; Fri, 08 Jan 2016 06:31:03 -0800 (PST) Content-Disposition: inline In-Reply-To: <20160108113029.GT4437@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Jani Nikula , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKYW4gMDgsIDIwMTYgYXQgMDE6MzA6MjlQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIEZyaSwgSmFuIDA4LCAyMDE2IGF0IDAxOjIxOjUxUE0gKzAyMDAsIEphbmkg TmlrdWxhIHdyb3RlOgo+ID4gQWRkIGEgZHVtbXkgZW50cnkgdG8gQ0VBL0hETUkgbW9kZSB0YWJs ZXMgc28gdGhleSBjYW4gYmUgaW5kZXhlZAo+ID4gZGlyZWN0bHkgdXNpbmcgdGhlIFZJQywgYXZv aWRpbmcgYSArMS8tMSBkYW5jZSBoZXJlIGFuZCB0aGVyZS4gVGhpcyBhZGRzCj4gPiBjbGFyaXR5 IHRvIHRoZSBlcnJvciBjaGVja2luZyBmb3IgdmFyaW91cyBmdW5jdGlvbnMgdGhhdCByZXR1cm4g dGhlIFZJQwo+ID4gb24gc3VjY2VzcyBhbmQgemVybyBvbiBmYWlsdXJlOyB3ZSBjYW4gbm93IGV4 cGxpY2l0bHkgY2hlY2sgZm9yIDAKPiA+IGluc3RlYWQgb2YganVzdCBzdWJ0cmFjdGluZyBvbmUg ZnJvbSBhbiB1bnNpZ25lZCB0eXBlLgo+ID4gCj4gPiBBbHNvIGFkZCBkcm1fdmFsaWRfY2VhX3Zp YygpIGFuZCBkcm1fdmFsaWRfaGRtaV92aWMoKSBoZWxwZXJzIGZvcgo+ID4gY2hlY2tpbmcgdmFs aWQgVklDcy4KPiA+IAo+ID4gdjI6IGFkZCBkcm1fdmFsaWRfY2VhX3ZpYyBhbmQgZHJtX3ZhbGlk X2hkbWlfdmljIGhlbHBlcnMgKFZpbGxlKQo+ID4gICAgIHVzZSB7IH0gaW5zdGVhZCBvZiB7IDAg fSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBkdW1teSBtb2Rlcwo+ID4gCj4gPiBDYzogVmlsbGUgU3ly asOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IENjOiBBbGV4IERldWNo ZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5p a3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IAo+IFJldmlld2VkLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKQXBwbGllZCB0byBkcm0tbWlz YywgdGhhbmtzLgotRGFuaWVsCgo+IAo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9l ZGlkLmMgfCA5NCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gPiAgMSBmaWxlIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQo+ ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2VkaWQuYwo+ID4gaW5kZXggYzIxNGYxMjQ2Y2I0Li4wNGNiNDg3N2ZhYmQg MTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiA+IEBAIC02MzcsOCArNjM3LDEyIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgbWluaW1vZGUgZXh0cmFfbW9kZXNbXSA9IHsKPiA+ICAvKgo+ID4gICAqIFBy b2JhYmx5IHRha2VuIGZyb20gQ0VBLTg2MSBzcGVjLgo+ID4gICAqIFRoaXMgdGFibGUgaXMgY29u dmVydGVkIGZyb20geG9yZydzIGh3L3hmcmVlODYvbW9kZXMveGY4NkVkaWRNb2Rlcy5jLgo+ID4g KyAqCj4gPiArICogSW5kZXggdXNpbmcgdGhlIFZJQy4KPiA+ICAgKi8KPiA+ICBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgZWRpZF9jZWFfbW9kZXNbXSA9IHsKPiA+ICsJLyog MCAtIGR1bW15LCBWSUNzIHN0YXJ0IGF0IDEgKi8KPiA+ICsJeyB9LAo+ID4gIAkvKiAxIC0gNjQw eDQ4MEA2MEh6ICovCj4gPiAgCXsgRFJNX01PREUoIjY0MHg0ODAiLCBEUk1fTU9ERV9UWVBFX0RS SVZFUiwgMjUxNzUsIDY0MCwgNjU2LAo+ID4gIAkJICAgNzUyLCA4MDAsIDAsIDQ4MCwgNDkwLCA0 OTIsIDUyNSwgMCwKPiA+IEBAIC05ODcsOSArOTkxLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSBlZGlkX2NlYV9tb2Rlc1tdID0gewo+ID4gIH07Cj4gPiAgCj4gPiAg LyoKPiA+IC0gKiBIRE1JIDEuNCA0ayBtb2Rlcy4KPiA+ICsgKiBIRE1JIDEuNCA0ayBtb2Rlcy4g SW5kZXggdXNpbmcgdGhlIFZJQy4KPiA+ICAgKi8KPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgZWRpZF80a19tb2Rlc1tdID0gewo+ID4gKwkvKiAwIC0gZHVtbXksIFZJ Q3Mgc3RhcnQgYXQgMSAqLwo+ID4gKwl7IH0sCj4gPiAgCS8qIDEgLSAzODQweDIxNjBAMzBIeiAq Lwo+ID4gIAl7IERSTV9NT0RFKCIzODQweDIxNjAiLCBEUk1fTU9ERV9UWVBFX0RSSVZFUiwgMjk3 MDAwLAo+ID4gIAkJICAgMzg0MCwgNDAxNiwgNDEwNCwgNDQwMCwgMCwKPiA+IEBAIC0yNTQ4LDEz ICsyNTU0LDEzIEBAIGNlYV9tb2RlX2FsdGVybmF0ZV9jbG9jayhjb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqY2VhX21vZGUpCj4gPiAgc3RhdGljIHU4IGRybV9tYXRjaF9jZWFfbW9kZV9j bG9ja190b2xlcmFuY2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRvX21hdGNoLAo+ ID4gIAkJCQkJICAgICB1bnNpZ25lZCBpbnQgY2xvY2tfdG9sZXJhbmNlKQo+ID4gIHsKPiA+IC0J dTggbW9kZTsKPiA+ICsJdTggdmljOwo+ID4gIAo+ID4gIAlpZiAoIXRvX21hdGNoLT5jbG9jaykK PiA+ICAJCXJldHVybiAwOwo+ID4gIAo+ID4gLQlmb3IgKG1vZGUgPSAwOyBtb2RlIDwgQVJSQVlf U0laRShlZGlkX2NlYV9tb2Rlcyk7IG1vZGUrKykgewo+ID4gLQkJY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmNlYV9tb2RlID0gJmVkaWRfY2VhX21vZGVzW21vZGVdOwo+ID4gKwlmb3Ig KHZpYyA9IDE7IHZpYyA8IEFSUkFZX1NJWkUoZWRpZF9jZWFfbW9kZXMpOyB2aWMrKykgewo+ID4g KwkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmNlYV9tb2RlID0gJmVkaWRfY2VhX21v ZGVzW3ZpY107Cj4gPiAgCQl1bnNpZ25lZCBpbnQgY2xvY2sxLCBjbG9jazI7Cj4gPiAgCj4gPiAg CQkvKiBDaGVjayBib3RoIDYwSHogYW5kIDU5Ljk0SHogKi8KPiA+IEBAIC0yNTY2LDcgKzI1NzIs NyBAQCBzdGF0aWMgdTggZHJtX21hdGNoX2NlYV9tb2RlX2Nsb2NrX3RvbGVyYW5jZShjb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdG9fbQo+ID4gIAkJCWNvbnRpbnVlOwo+ID4gIAo+ID4g IAkJaWYgKGRybV9tb2RlX2VxdWFsX25vX2Nsb2Nrcyh0b19tYXRjaCwgY2VhX21vZGUpKQo+ID4g LQkJCXJldHVybiBtb2RlICsgMTsKPiA+ICsJCQlyZXR1cm4gdmljOwo+ID4gIAl9Cj4gPiAgCj4g PiAgCXJldHVybiAwOwo+ID4gQEAgLTI1ODEsMTMgKzI1ODcsMTMgQEAgc3RhdGljIHU4IGRybV9t YXRjaF9jZWFfbW9kZV9jbG9ja190b2xlcmFuY2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKnRvX20KPiA+ICAgKi8KPiA+ICB1OCBkcm1fbWF0Y2hfY2VhX21vZGUoY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKnRvX21hdGNoKQo+ID4gIHsKPiA+IC0JdTggbW9kZTsKPiA+ICsJ dTggdmljOwo+ID4gIAo+ID4gIAlpZiAoIXRvX21hdGNoLT5jbG9jaykKPiA+ICAJCXJldHVybiAw Owo+ID4gIAo+ID4gLQlmb3IgKG1vZGUgPSAwOyBtb2RlIDwgQVJSQVlfU0laRShlZGlkX2NlYV9t b2Rlcyk7IG1vZGUrKykgewo+ID4gLQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmNl YV9tb2RlID0gJmVkaWRfY2VhX21vZGVzW21vZGVdOwo+ID4gKwlmb3IgKHZpYyA9IDE7IHZpYyA8 IEFSUkFZX1NJWkUoZWRpZF9jZWFfbW9kZXMpOyB2aWMrKykgewo+ID4gKwkJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmNlYV9tb2RlID0gJmVkaWRfY2VhX21vZGVzW3ZpY107Cj4gPiAg CQl1bnNpZ25lZCBpbnQgY2xvY2sxLCBjbG9jazI7Cj4gPiAgCj4gPiAgCQkvKiBDaGVjayBib3Ro IDYwSHogYW5kIDU5Ljk0SHogKi8KPiA+IEBAIC0yNTk3LDEyICsyNjAzLDE3IEBAIHU4IGRybV9t YXRjaF9jZWFfbW9kZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdG9fbWF0Y2gpCj4g PiAgCQlpZiAoKEtIWjJQSUNPUyh0b19tYXRjaC0+Y2xvY2spID09IEtIWjJQSUNPUyhjbG9jazEp IHx8Cj4gPiAgCQkgICAgIEtIWjJQSUNPUyh0b19tYXRjaC0+Y2xvY2spID09IEtIWjJQSUNPUyhj bG9jazIpKSAmJgo+ID4gIAkJICAgIGRybV9tb2RlX2VxdWFsX25vX2Nsb2Nrc19ub19zdGVyZW8o dG9fbWF0Y2gsIGNlYV9tb2RlKSkKPiA+IC0JCQlyZXR1cm4gbW9kZSArIDE7Cj4gPiArCQkJcmV0 dXJuIHZpYzsKPiA+ICAJfQo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgRVhQT1JUX1NZTUJP TChkcm1fbWF0Y2hfY2VhX21vZGUpOwo+ID4gIAo+ID4gK3N0YXRpYyBib29sIGRybV92YWxpZF9j ZWFfdmljKHU4IHZpYykKPiA+ICt7Cj4gPiArCXJldHVybiB2aWMgPiAwICYmIHZpYyA8IEFSUkFZ X1NJWkUoZWRpZF9jZWFfbW9kZXMpOwo+ID4gK30KPiA+ICsKPiA+ICAvKioKPiA+ICAgKiBkcm1f Z2V0X2NlYV9hc3BlY3RfcmF0aW8gLSBnZXQgdGhlIHBpY3R1cmUgYXNwZWN0IHJhdGlvIGNvcnJl c3BvbmRpbmcgdG8KPiA+ICAgKiB0aGUgaW5wdXQgVklDIGZyb20gdGhlIENFQSBtb2RlIGxpc3QK PiA+IEBAIC0yNjEyLDEwICsyNjIzLDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fbWF0Y2hfY2VhX21v ZGUpOwo+ID4gICAqLwo+ID4gIGVudW0gaGRtaV9waWN0dXJlX2FzcGVjdCBkcm1fZ2V0X2NlYV9h c3BlY3RfcmF0aW8oY29uc3QgdTggdmlkZW9fY29kZSkKPiA+ICB7Cj4gPiAtCS8qIHJldHVybiBw aWN0dXJlIGFzcGVjdCByYXRpbyBmb3IgdmlkZW9fY29kZSAtIDEgdG8gYWNjZXNzIHRoZQo+ID4g LQkgKiByaWdodCBhcnJheSBlbGVtZW50Cj4gPiAtCSovCj4gPiAtCXJldHVybiBlZGlkX2NlYV9t b2Rlc1t2aWRlb19jb2RlLTFdLnBpY3R1cmVfYXNwZWN0X3JhdGlvOwo+ID4gKwlyZXR1cm4gZWRp ZF9jZWFfbW9kZXNbdmlkZW9fY29kZV0ucGljdHVyZV9hc3BlY3RfcmF0aW87Cj4gPiAgfQo+ID4g IEVYUE9SVF9TWU1CT0woZHJtX2dldF9jZWFfYXNwZWN0X3JhdGlvKTsKPiA+ICAKPiA+IEBAIC0y NjM5LDEzICsyNjQ3LDEzIEBAIGhkbWlfbW9kZV9hbHRlcm5hdGVfY2xvY2soY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmhkbWlfbW9kZSkKPiA+ICBzdGF0aWMgdTggZHJtX21hdGNoX2hk bWlfbW9kZV9jbG9ja190b2xlcmFuY2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRv X21hdGNoLAo+ID4gIAkJCQkJICAgICAgdW5zaWduZWQgaW50IGNsb2NrX3RvbGVyYW5jZSkKPiA+ ICB7Cj4gPiAtCXU4IG1vZGU7Cj4gPiArCXU4IHZpYzsKPiA+ICAKPiA+ICAJaWYgKCF0b19tYXRj aC0+Y2xvY2spCj4gPiAgCQlyZXR1cm4gMDsKPiA+ICAKPiA+IC0JZm9yIChtb2RlID0gMDsgbW9k ZSA8IEFSUkFZX1NJWkUoZWRpZF80a19tb2Rlcyk7IG1vZGUrKykgewo+ID4gLQkJY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmhkbWlfbW9kZSA9ICZlZGlkXzRrX21vZGVzW21vZGVdOwo+ ID4gKwlmb3IgKHZpYyA9IDE7IHZpYyA8IEFSUkFZX1NJWkUoZWRpZF80a19tb2Rlcyk7IHZpYysr KSB7Cj4gPiArCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqaGRtaV9tb2RlID0gJmVk aWRfNGtfbW9kZXNbdmljXTsKPiA+ICAJCXVuc2lnbmVkIGludCBjbG9jazEsIGNsb2NrMjsKPiA+ ICAKPiA+ICAJCS8qIE1ha2Ugc3VyZSB0byBhbHNvIG1hdGNoIGFsdGVybmF0ZSBjbG9ja3MgKi8K PiA+IEBAIC0yNjU3LDcgKzI2NjUsNyBAQCBzdGF0aWMgdTggZHJtX21hdGNoX2hkbWlfbW9kZV9j bG9ja190b2xlcmFuY2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRvXwo+ID4gIAkJ CWNvbnRpbnVlOwo+ID4gIAo+ID4gIAkJaWYgKGRybV9tb2RlX2VxdWFsX25vX2Nsb2Nrcyh0b19t YXRjaCwgaGRtaV9tb2RlKSkKPiA+IC0JCQlyZXR1cm4gbW9kZSArIDE7Cj4gPiArCQkJcmV0dXJu IHZpYzsKPiA+ICAJfQo+ID4gIAo+ID4gIAlyZXR1cm4gMDsKPiA+IEBAIC0yNjczLDEzICsyNjgx LDEzIEBAIHN0YXRpYyB1OCBkcm1fbWF0Y2hfaGRtaV9tb2RlX2Nsb2NrX3RvbGVyYW5jZShjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdG9fCj4gPiAgICovCj4gPiAgc3RhdGljIHU4IGRy bV9tYXRjaF9oZG1pX21vZGUoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRvX21hdGNo KQo+ID4gIHsKPiA+IC0JdTggbW9kZTsKPiA+ICsJdTggdmljOwo+ID4gIAo+ID4gIAlpZiAoIXRv X21hdGNoLT5jbG9jaykKPiA+ICAJCXJldHVybiAwOwo+ID4gIAo+ID4gLQlmb3IgKG1vZGUgPSAw OyBtb2RlIDwgQVJSQVlfU0laRShlZGlkXzRrX21vZGVzKTsgbW9kZSsrKSB7Cj4gPiAtCQljb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqaGRtaV9tb2RlID0gJmVkaWRfNGtfbW9kZXNbbW9k ZV07Cj4gPiArCWZvciAodmljID0gMTsgdmljIDwgQVJSQVlfU0laRShlZGlkXzRrX21vZGVzKTsg dmljKyspIHsKPiA+ICsJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpoZG1pX21vZGUg PSAmZWRpZF80a19tb2Rlc1t2aWNdOwo+ID4gIAkJdW5zaWduZWQgaW50IGNsb2NrMSwgY2xvY2sy Owo+ID4gIAo+ID4gIAkJLyogTWFrZSBzdXJlIHRvIGFsc28gbWF0Y2ggYWx0ZXJuYXRlIGNsb2Nr cyAqLwo+ID4gQEAgLTI2ODksMTEgKzI2OTcsMTYgQEAgc3RhdGljIHU4IGRybV9tYXRjaF9oZG1p X21vZGUoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRvX21hdGNoKQo+ID4gIAkJaWYg KChLSFoyUElDT1ModG9fbWF0Y2gtPmNsb2NrKSA9PSBLSFoyUElDT1MoY2xvY2sxKSB8fAo+ID4g IAkJICAgICBLSFoyUElDT1ModG9fbWF0Y2gtPmNsb2NrKSA9PSBLSFoyUElDT1MoY2xvY2syKSkg JiYKPiA+ICAJCSAgICBkcm1fbW9kZV9lcXVhbF9ub19jbG9ja3Nfbm9fc3RlcmVvKHRvX21hdGNo LCBoZG1pX21vZGUpKQo+ID4gLQkJCXJldHVybiBtb2RlICsgMTsKPiA+ICsJCQlyZXR1cm4gdmlj Owo+ID4gIAl9Cj4gPiAgCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgYm9vbCBk cm1fdmFsaWRfaGRtaV92aWModTggdmljKQo+ID4gK3sKPiA+ICsJcmV0dXJuIHZpYyA+IDAgJiYg dmljIDwgQVJSQVlfU0laRShlZGlkXzRrX21vZGVzKTsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGlj IGludAo+ID4gIGFkZF9hbHRlcm5hdGVfY2VhX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQo+ID4gIHsKPiA+IEBAIC0yNzEzLDE2ICsyNzI2 LDE2IEBAIGFkZF9hbHRlcm5hdGVfY2VhX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQo+ID4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1vZGUs ICZjb25uZWN0b3ItPnByb2JlZF9tb2RlcywgaGVhZCkgewo+ID4gIAkJY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmNlYV9tb2RlID0gTlVMTDsKPiA+ICAJCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICpuZXdtb2RlOwo+ID4gLQkJdTggbW9kZV9pZHggPSBkcm1fbWF0Y2hfY2VhX21vZGUo bW9kZSkgLSAxOwo+ID4gKwkJdTggdmljID0gZHJtX21hdGNoX2NlYV9tb2RlKG1vZGUpOwo+ID4g IAkJdW5zaWduZWQgaW50IGNsb2NrMSwgY2xvY2syOwo+ID4gIAo+ID4gLQkJaWYgKG1vZGVfaWR4 IDwgQVJSQVlfU0laRShlZGlkX2NlYV9tb2RlcykpIHsKPiA+IC0JCQljZWFfbW9kZSA9ICZlZGlk X2NlYV9tb2Rlc1ttb2RlX2lkeF07Cj4gPiArCQlpZiAoZHJtX3ZhbGlkX2NlYV92aWModmljKSkg ewo+ID4gKwkJCWNlYV9tb2RlID0gJmVkaWRfY2VhX21vZGVzW3ZpY107Cj4gPiAgCQkJY2xvY2sy ID0gY2VhX21vZGVfYWx0ZXJuYXRlX2Nsb2NrKGNlYV9tb2RlKTsKPiA+ICAJCX0gZWxzZSB7Cj4g PiAtCQkJbW9kZV9pZHggPSBkcm1fbWF0Y2hfaGRtaV9tb2RlKG1vZGUpIC0gMTsKPiA+IC0JCQlp ZiAobW9kZV9pZHggPCBBUlJBWV9TSVpFKGVkaWRfNGtfbW9kZXMpKSB7Cj4gPiAtCQkJCWNlYV9t b2RlID0gJmVkaWRfNGtfbW9kZXNbbW9kZV9pZHhdOwo+ID4gKwkJCXZpYyA9IGRybV9tYXRjaF9o ZG1pX21vZGUobW9kZSk7Cj4gPiArCQkJaWYgKGRybV92YWxpZF9oZG1pX3ZpYyh2aWMpKSB7Cj4g PiArCQkJCWNlYV9tb2RlID0gJmVkaWRfNGtfbW9kZXNbdmljXTsKPiA+ICAJCQkJY2xvY2syID0g aGRtaV9tb2RlX2FsdGVybmF0ZV9jbG9jayhjZWFfbW9kZSk7Cj4gPiAgCQkJfQo+ID4gIAkJfQo+ ID4gQEAgLTI3NzMsMTcgKzI3ODYsMTcgQEAgZHJtX2Rpc3BsYXlfbW9kZV9mcm9tX3ZpY19pbmRl eChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gIHsKPiA+ICAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbmV3bW9kZTsKPiA+IC0JdTggY2VhX21vZGU7Cj4gPiArCXU4IHZpYzsKPiA+ICAKPiA+ ICAJaWYgKHZpZGVvX2RiID09IE5VTEwgfHwgdmlkZW9faW5kZXggPj0gdmlkZW9fbGVuKQo+ID4g IAkJcmV0dXJuIE5VTEw7Cj4gPiAgCj4gPiAgCS8qIENFQSBtb2RlcyBhcmUgbnVtYmVyZWQgMS4u MTI3ICovCj4gPiAtCWNlYV9tb2RlID0gKHZpZGVvX2RiW3ZpZGVvX2luZGV4XSAmIDEyNykgLSAx Owo+ID4gLQlpZiAoY2VhX21vZGUgPj0gQVJSQVlfU0laRShlZGlkX2NlYV9tb2RlcykpCj4gPiAr CXZpYyA9ICh2aWRlb19kYlt2aWRlb19pbmRleF0gJiAxMjcpOwo+ID4gKwlpZiAoIWRybV92YWxp ZF9jZWFfdmljKHZpYykpCj4gPiAgCQlyZXR1cm4gTlVMTDsKPiA+ICAKPiA+IC0JbmV3bW9kZSA9 IGRybV9tb2RlX2R1cGxpY2F0ZShkZXYsICZlZGlkX2NlYV9tb2Rlc1tjZWFfbW9kZV0pOwo+ID4g KwluZXdtb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwgJmVkaWRfY2VhX21vZGVzW3ZpY10p Owo+ID4gIAlpZiAoIW5ld21vZGUpCj4gPiAgCQlyZXR1cm4gTlVMTDsKPiA+ICAKPiA+IEBAIC0y ODc4LDggKzI4OTEsNyBAQCBzdGF0aWMgaW50IGFkZF9oZG1pX21vZGUoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwgdTggdmljKQo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y29ubmVjdG9yLT5kZXY7Cj4gPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpuZXdtb2RlOwo+ ID4gIAo+ID4gLQl2aWMtLTsgLyogVklDcyBzdGFydCBhdCAxICovCj4gPiAtCWlmICh2aWMgPj0g QVJSQVlfU0laRShlZGlkXzRrX21vZGVzKSkgewo+ID4gKwlpZiAoIWRybV92YWxpZF9oZG1pX3Zp Yyh2aWMpKSB7Cj4gPiAgCQlEUk1fRVJST1IoIlVua25vd24gSERNSSBWSUM6ICVkXG4iLCB2aWMp Owo+ID4gIAkJcmV0dXJuIDA7Cj4gPiAgCX0KPiA+IEBAIC0zMTcwLDI0ICszMTgyLDI0IEBAIHN0 YXRpYyB2b2lkIGZpeHVwX2RldGFpbGVkX2NlYV9tb2RlX2Nsb2NrKHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlKQo+ID4gIHsKPiA+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmNlYV9tb2RlOwo+ID4gIAlpbnQgY2xvY2sxLCBjbG9jazIsIGNsb2NrOwo+ID4gLQl1OCBtb2Rl X2lkeDsKPiA+ICsJdTggdmljOwo+ID4gIAljb25zdCBjaGFyICp0eXBlOwo+ID4gIAo+ID4gIAkv Kgo+ID4gIAkgKiBhbGxvdyA1a0h6IGNsb2NrIGRpZmZlcmVuY2UgZWl0aGVyIHdheSB0byBhY2Nv dW50IGZvcgo+ID4gIAkgKiB0aGUgMTBrSHogY2xvY2sgcmVzb2x1dGlvbiBsaW1pdCBvZiBkZXRh aWxlZCB0aW1pbmdzLgo+ID4gIAkgKi8KPiA+IC0JbW9kZV9pZHggPSBkcm1fbWF0Y2hfY2VhX21v ZGVfY2xvY2tfdG9sZXJhbmNlKG1vZGUsIDUpIC0gMTsKPiA+IC0JaWYgKG1vZGVfaWR4IDwgQVJS QVlfU0laRShlZGlkX2NlYV9tb2RlcykpIHsKPiA+ICsJdmljID0gZHJtX21hdGNoX2NlYV9tb2Rl X2Nsb2NrX3RvbGVyYW5jZShtb2RlLCA1KTsKPiA+ICsJaWYgKGRybV92YWxpZF9jZWFfdmljKHZp YykpIHsKPiA+ICAJCXR5cGUgPSAiQ0VBIjsKPiA+IC0JCWNlYV9tb2RlID0gJmVkaWRfY2VhX21v ZGVzW21vZGVfaWR4XTsKPiA+ICsJCWNlYV9tb2RlID0gJmVkaWRfY2VhX21vZGVzW3ZpY107Cj4g PiAgCQljbG9jazEgPSBjZWFfbW9kZS0+Y2xvY2s7Cj4gPiAgCQljbG9jazIgPSBjZWFfbW9kZV9h bHRlcm5hdGVfY2xvY2soY2VhX21vZGUpOwo+ID4gIAl9IGVsc2Ugewo+ID4gLQkJbW9kZV9pZHgg PSBkcm1fbWF0Y2hfaGRtaV9tb2RlX2Nsb2NrX3RvbGVyYW5jZShtb2RlLCA1KSAtIDE7Cj4gPiAt CQlpZiAobW9kZV9pZHggPCBBUlJBWV9TSVpFKGVkaWRfNGtfbW9kZXMpKSB7Cj4gPiArCQl2aWMg PSBkcm1fbWF0Y2hfaGRtaV9tb2RlX2Nsb2NrX3RvbGVyYW5jZShtb2RlLCA1KTsKPiA+ICsJCWlm IChkcm1fdmFsaWRfaGRtaV92aWModmljKSkgewo+ID4gIAkJCXR5cGUgPSAiSERNSSI7Cj4gPiAt CQkJY2VhX21vZGUgPSAmZWRpZF80a19tb2Rlc1ttb2RlX2lkeF07Cj4gPiArCQkJY2VhX21vZGUg PSAmZWRpZF80a19tb2Rlc1t2aWNdOwo+ID4gIAkJCWNsb2NrMSA9IGNlYV9tb2RlLT5jbG9jazsK PiA+ICAJCQljbG9jazIgPSBoZG1pX21vZGVfYWx0ZXJuYXRlX2Nsb2NrKGNlYV9tb2RlKTsKPiA+ ICAJCX0gZWxzZSB7Cj4gPiBAQCAtMzIwNSw3ICszMjE3LDcgQEAgc3RhdGljIHZvaWQgZml4dXBf ZGV0YWlsZWRfY2VhX21vZGVfY2xvY2soc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4g PiAgCQlyZXR1cm47Cj4gPiAgCj4gPiAgCURSTV9ERUJVRygiZGV0YWlsZWQgbW9kZSBtYXRjaGVz ICVzIFZJQyAlZCwgYWRqdXN0aW5nIGNsb2NrICVkIC0+ICVkXG4iLAo+ID4gLQkJICB0eXBlLCBt b2RlX2lkeCArIDEsIG1vZGUtPmNsb2NrLCBjbG9jayk7Cj4gPiArCQkgIHR5cGUsIHZpYywgbW9k ZS0+Y2xvY2ssIGNsb2NrKTsKPiA+ICAJbW9kZS0+Y2xvY2sgPSBjbG9jazsKPiA+ICB9Cj4gPiAg Cj4gPiAtLSAKPiA+IDIuMS40Cj4gCj4gLS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwgT1RD Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0t IApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRw Oi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=