From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/5] drm: add interface to get drm devices on the system v2 Date: Thu, 13 Aug 2015 17:07:55 +0200 Message-ID: <20150813150755.GD17734@phenom.ffwll.local> References: <1439436825-16908-1-git-send-email-Jammy.Zhou@amd.com> <1439436825-16908-2-git-send-email-Jammy.Zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) by gabe.freedesktop.org (Postfix) with ESMTPS id 57CFB6EDC6 for ; Thu, 13 Aug 2015 08:07:59 -0700 (PDT) Received: by wicne3 with SMTP id ne3so263416704wic.1 for ; Thu, 13 Aug 2015 08:07:57 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1439436825-16908-2-git-send-email-Jammy.Zhou@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jammy Zhou Cc: Emil Velikov , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBBdWcgMTMsIDIwMTUgYXQgMTE6MzM6NDFBTSArMDgwMCwgSmFtbXkgWmhvdSB3cm90 ZToKPiBGcm9tOiBFbWlsIFZlbGlrb3YgPGVtaWwubC52ZWxpa292QGdtYWlsLmNvbT4KPiAKPiBG b3IgbXV0aXBsZSBHUFUgc3VwcG9ydCwgdGhlIGRldmljZXMgb24gdGhlIHN5c3RlbSBzaG91bGQg YmUgZW51bWVyYXRlZAo+IHRvIGdldCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBk ZXZpY2UsIGFuZCB0aGUgZHJtR2V0RGV2aWNlcwo+IGludGVyZmFjZSBpcyBhZGRlZCBmb3IgdGhp cy4gQ3VycmVudGx5IG9ubHkgUENJIGRldmljZXMgYXJlIHN1cHBvcnRlZCBmb3IKPiB0aGUgZW51 bWVyYXRpb24uCj4gCj4gVHlwaWNhbCB1c2FnZToKPiBpbnQgY291bnQ7Cj4gZHJtRGV2aWNlUHRy ICpmb287Cj4gY291bnQgPSBkcm1HZXREZXZpY2VzKE5VTEwsIDApOwo+IGZvbyA9IGNhbGxvYyhj b3VudCwgc2l6ZW9mKGRybURldmljZVB0cikpOwo+IGNvdW50ID0gZHJtR2V0RGV2aWNlcyhmb28s IGNvdW50KTsKPiAvKiBmaW5kIHByb3BlciBkZXZpY2UsIG9wZW4gY29ycmVjdCBkZXZpY2Ugbm9k ZSwgZXRjICovCj4gZHJtRnJlZURldmljZXMoZm9vLCBjb3VudCk7Cj4gZnJlZShmb28pOwo+IAo+ IHYyOiBjaGFuZ2UgYWNjb3JkaW5nIHRvIGZlZWRiYWNrIGZyb20gRW1pbAo+IAo+IFNpZ25lZC1v ZmYtYnk6IEphbW15IFpob3UgPEphbW15Llpob3VAYW1kLmNvbT4KPiAtLS0KPiAgeGY4NmRybS5j IHwgMzUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gIHhmODZkcm0uaCB8ICAzNCArKysrKysKPiAgMiBmaWxlcyBjaGFuZ2Vk LCAzODUgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS94Zjg2ZHJtLmMgYi94Zjg2ZHJt LmMKPiBpbmRleCA1ZTAyOTY5Li4yMzc2NjNiIDEwMDY0NAo+IC0tLSBhL3hmODZkcm0uYwo+ICsr KyBiL3hmODZkcm0uYwo+IEBAIC01NSw2ICs1NSw3IEBACj4gICNpZmRlZiBIQVZFX1NZU19NS0RF Vl9ICj4gICMgaW5jbHVkZSA8c3lzL21rZGV2Lmg+IC8qIGRlZmluZXMgbWFqb3IoKSwgbWlub3Io KSwgYW5kIG1ha2VkZXYoKSBvbiBTb2xhcmlzICovCj4gICNlbmRpZgo+ICsjaW5jbHVkZSA8bWF0 aC5oPgo+ICAKPiAgLyogTm90IGFsbCBzeXN0ZW1zIGhhdmUgTUFQX0ZBSUxFRCBkZWZpbmVkICov Cj4gICNpZm5kZWYgTUFQX0ZBSUxFRAo+IEBAIC0yODI5LDMgKzI4MzAsMzUzIEBAIGNoYXIgKmRy bUdldFJlbmRlckRldmljZU5hbWVGcm9tRmQoaW50IGZkKQo+ICB7Cj4gIAlyZXR1cm4gZHJtR2V0 TWlub3JOYW1lRm9yRkQoZmQsIERSTV9OT0RFX1JFTkRFUik7Cj4gIH0KPiArCj4gKyNpZmRlZiBf X2xpbnV4X18KPiArc3RhdGljIGludCBkcm1QYXJzZVN1YnN5c3RlbVR5cGUoY29uc3QgY2hhciAq c3RyKQo+ICt7Cj4gKyAgICBjaGFyIGxpbmtbUEFUSF9NQVggKyAxXSA9ICIiOwo+ICsgICAgY2hh ciAqbmFtZTsKPiArCj4gKyAgICBpZiAocmVhZGxpbmsoc3RyLCBsaW5rLCBQQVRIX01BWCkgPCAw KQo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsKPiArICAgIG5hbWUgPSBzdHJyY2hyKGxp bmssICcvJyk7Cj4gKyAgICBpZiAoIW5hbWUpCj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsgICAgbmFtZSsrOwo+ICsKPiArICAgIGlmIChzdHJuY21wKG5hbWUsICJwY2kiLCAzKSA9 PSAwKQo+ICsgICAgICAgIHJldHVybiBEUk1fQlVTX1BDSTsKPiArCj4gKyAgICByZXR1cm4gLUVJ TlZBTDsKPiArfQo+ICsKPiArc3RhdGljIGludCBkcm1QYXJzZVBjaUJ1c0luZm8oY29uc3QgY2hh ciAqc3RyLCBkcm1QY2lCdXNJbmZvUHRyIGluZm8pCj4gK3sKPiArICAgIGludCBkb21haW4sIGJ1 cywgZGV2LCBmdW5jOwo+ICsgICAgY2hhciAqdmFsdWU7Cj4gKwo+ICsgICAgaWYgKHN0ciA9PSBO VUxMKQo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsKPiArICAgIHZhbHVlID0gc3Ryc3Ry KHN0ciwgIlBDSV9TTE9UX05BTUU9Iik7Cj4gKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKPiArICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICB2YWx1ZSArPSBzdHJsZW4oIlBDSV9TTE9U X05BTUU9Iik7Cj4gKwo+ICsgICAgaWYgKHNzY2FuZih2YWx1ZSwgIiUwNHg6JTAyeDolMDJ4LiUx dSIsCj4gKyAgICAgICAgICAgICAgICZkb21haW4sICZidXMsICZkZXYsICZmdW5jKSAhPSA0KQo+ ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsKPiArICAgIGluZm8tPmRvbWFpbiA9IGRvbWFp bjsKPiArICAgIGluZm8tPmJ1cyA9IGJ1czsKPiArICAgIGluZm8tPmRldiA9IGRldjsKPiArICAg IGluZm8tPmZ1bmMgPSBmdW5jOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IGRybVNhbWVEZXZpY2UoZHJtRGV2aWNlUHRyIGEsIGRybURldmljZVB0ciBiKQo+ICt7 Cj4gKyAgICBpZiAoYS0+YnVzdHlwZSAhPSBiLT5idXN0eXBlKQo+ICsgICAgICAgIHJldHVybiAw Owo+ICsKPiArICAgIHN3aXRjaCAoYS0+YnVzdHlwZSkgewo+ICsgICAgY2FzZSBEUk1fQlVTX1BD SToKPiArICAgICAgICBpZiAobWVtY21wKGEtPmJ1c2luZm8ucGNpLCBiLT5idXNpbmZvLnBjaSwg c2l6ZW9mKGRybVBjaUJ1c0luZm8pKSA9PSAwKQo+ICsgICAgICAgICAgICByZXR1cm4gMTsKPiAr ICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZHJtR2V0Tm9kZVR5cGUoY29uc3QgY2hhciAqbmFt ZSkKPiArewo+ICsgICAgaWYgKHN0cm5jbXAobmFtZSwgRFJNX1BSSU1BUllfTUlOT1JfTkFNRSwK PiArICAgICAgICBzaXplb2YoRFJNX1BSSU1BUllfTUlOT1JfTkFNRSkgLSAxKSA9PSAwKQo+ICsg ICAgICAgIHJldHVybiBEUk1fTk9ERV9QUklNQVJZOwo+ICsKPiArICAgIGlmIChzdHJuY21wKG5h bWUsIERSTV9DT05UUk9MX01JTk9SX05BTUUsCj4gKyAgICAgICAgc2l6ZW9mKERSTV9DT05UUk9M X01JTk9SX05BTUUgKSAtIDEpID09IDApCj4gKyAgICAgICAgcmV0dXJuIERSTV9OT0RFX0NPTlRS T0w7Cj4gKwo+ICsgICAgaWYgKHN0cm5jbXAobmFtZSwgRFJNX1JFTkRFUl9NSU5PUl9OQU1FLAo+ ICsgICAgICAgIHNpemVvZihEUk1fUkVOREVSX01JTk9SX05BTUUpIC0gMSkgPT0gMCkKPiArICAg ICAgICByZXR1cm4gRFJNX05PREVfUkVOREVSOwo+ICsKPiArICAgIHJldHVybiAtRUlOVkFMOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRybVBhcnNlUGNpRGV2aWNlSW5mbyhjb25zdCBjaGFyICpj b25maWcsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRybVBjaURldmljZUlu Zm9QdHIgZGV2aWNlKQo+ICt7Cj4gKyAgICBpZiAoY29uZmlnID09IE5VTEwpCj4gKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsgICAgZGV2aWNlLT52ZW5kb3JfaWQgPSBjb25maWdbMF0g fCAoY29uZmlnWzFdIDw8IDgpOwo+ICsgICAgZGV2aWNlLT5kZXZpY2VfaWQgPSBjb25maWdbMl0g fCAoY29uZmlnWzNdIDw8IDgpOwo+ICsgICAgZGV2aWNlLT5yZXZpc2lvbl9pZCA9IGNvbmZpZ1s4 XTsKPiArICAgIGRldmljZS0+c3VidmVuZG9yX2lkID0gY29uZmlnWzQ0XSB8IChjb25maWdbNDVd IDw8IDgpOwo+ICsgICAgZGV2aWNlLT5zdWJkZXZpY2VfaWQgPSBjb25maWdbNDZdIHwgKGNvbmZp Z1s0N10gPDwgOCk7CgpXaHkgbm90IHJldXNlIGxpYnBjaWFjY2Vzcz8KLURhbmllbAoKPiArCj4g KyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHJtRnJlZURldmljZShkcm1E ZXZpY2VQdHIgZGV2aWNlKQo+ICt7Cj4gKyAgICBpbnQgaTsKPiArCj4gKyAgICBpZiAoZGV2aWNl ID09IE5VTEwpCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgIGlmIChkZXZpY2UtPm5vZGVz ICE9IE5VTEwpCj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IERSTV9OT0RFX01BWDsgaSsrKQo+ ICsgICAgICAgICAgICBmcmVlKGRldmljZS0+bm9kZXNbaV0pOwo+ICsKPiArICAgIGZyZWUoZGV2 aWNlLT5ub2Rlcyk7Cj4gKyAgICBmcmVlKGRldmljZS0+YnVzaW5mby5wY2kpOwo+ICsgICAgZnJl ZShkZXZpY2UtPmRldmljZWluZm8ucGNpKTsKPiArfQo+ICsKPiArdm9pZCBkcm1GcmVlRGV2aWNl cyhkcm1EZXZpY2VQdHIgZGV2aWNlc1tdLCBpbnQgY291bnQpCj4gK3sKPiArICAgIGludCBpOwo+ ICsKPiArICAgIGlmIChkZXZpY2VzID09IE5VTEwpCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiAr ICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gKyAgICAgICAgZHJtRnJlZURldmlj ZShkZXZpY2VzW2ldKTsKPiArICAgICAgICBmcmVlKGRldmljZXNbaV0pOwo+ICsgICAgICAgIGRl dmljZXNbaV0gPSBOVUxMOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICsvKioKPiArICogR2V0IGRybSBk ZXZpY2VzIG9uIHRoZSBzeXN0ZW0KPiArICoKPiArICogXHBhcmFtIGRldmljZXMgdGhlIGFycmF5 IG9mIGRldmljZXMgd2l0aCBkcm1EZXZpY2VQdHIgZWxlbWVudHMKPiArICogICAgICAgICAgICAg ICAgY2FuIGJlIE5VTEwgdG8gZ2V0IHRoZSBkZXZpY2UgbnVtYmVyIGZpcnN0Cj4gKyAqIFxwYXJh bSBtYXhfZGV2aWNlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGV2aWNlcyBmb3IgdGhlIGFycmF5 Cj4gKyAqCj4gKyAqIFxyZXR1cm4gb24gZXJyb3IgLSBuZWdhdGl2ZSBlcnJvciBjb2RlLAo+ICsg KiAgICAgICAgIGlmIGRldmljZXMgaXMgTlVMTCAtIHRvdGFsIG51bWJlciBvZiBkZXZpY2VzIGF2 YWlsYWJsZSBvbiB0aGUgc3lzdGVtLAo+ICsgKiAgICAgICAgIGFsdGVybmF0aXZlbHkgdGhlIG51 bWJlciBvZiBkZXZpY2VzIHN0b3JlZCBpbiBkZXZpY2VzW10sIHdoaWNoIGlzCj4gKyAqICAgICAg ICAgY2FwcGVkIGJ5IHRoZSBtYXhfZGV2aWNlcy4KPiArICovCj4gK2ludCBkcm1HZXREZXZpY2Vz KGRybURldmljZVB0ciBkZXZpY2VzW10sIGludCBtYXhfZGV2aWNlcykKPiArewo+ICsgICAgZHJt RGV2aWNlUHRyIGRldnMgPSBOVUxMOwo+ICsgICAgZHJtUGNpQnVzSW5mb1B0ciBwY2lidXMgPSBO VUxMOwo+ICsgICAgZHJtUGNpRGV2aWNlSW5mb1B0ciBwY2lkZXZpY2UgPSBOVUxMOwo+ICsgICAg RElSICpzeXNkaXIgPSBOVUxMOwo+ICsgICAgc3RydWN0IGRpcmVudCAqZGVudCA9IE5VTEw7Cj4g KyAgICBzdHJ1Y3Qgc3RhdCBzYnVmID0gezB9Owo+ICsgICAgY2hhciBub2RlW1BBVEhfTUFYICsg MV0gPSAiIjsKPiArICAgIGNoYXIgcGF0aFtQQVRIX01BWCArIDFdID0gIiI7Cj4gKyAgICBjaGFy IGRhdGFbMTI4XSA9ICIiOwo+ICsgICAgY2hhciBjb25maWdbNjRdID0gIiI7Cj4gKyAgICBpbnQg bm9kZV90eXBlLCBzdWJzeXN0ZW1fdHlwZTsKPiArICAgIGludCBtYWosIG1pbjsKPiArICAgIGlu dCBmZDsKPiArICAgIGludCByZXQsIGkgPSAwLCBqLCBub2RlX2NvdW50LCBkZXZpY2VfY291bnQg PSAwOwo+ICsgICAgaW50IG1heF9jb3VudCA9IDE2Owo+ICsgICAgaW50ICpkdXBsaWNhdGVkID0g TlVMTDsKPiArCj4gKyAgICBkZXZzID0gY2FsbG9jKG1heF9jb3VudCwgc2l6ZW9mKCpkZXZzKSk7 Cj4gKyAgICBpZiAoZGV2cyA9PSBOVUxMKQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsK PiArICAgIHN5c2RpciA9IG9wZW5kaXIoRFJNX0RJUl9OQU1FKTsKPiArICAgIGlmICghc3lzZGly KSB7Cj4gKyAgICAgICAgcmV0ID0gLWVycm5vOwo+ICsgICAgICAgIGdvdG8gZnJlZV9sb2NhbHM7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgd2hpbGUgKChkZW50ID0gcmVhZGRpcihzeXNkaXIpKSkgewo+ ICsgICAgICAgIG5vZGVfdHlwZSA9IGRybUdldE5vZGVUeXBlKGRlbnQtPmRfbmFtZSk7Cj4gKyAg ICAgICAgaWYgKG5vZGVfdHlwZSA8IDApCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiAr ICAgICAgICBzbnByaW50Zihub2RlLCBQQVRIX01BWCwgIiVzLyVzIiwgRFJNX0RJUl9OQU1FLCBk ZW50LT5kX25hbWUpOwo+ICsgICAgICAgIGlmIChzdGF0KG5vZGUsICZzYnVmKSkKPiArICAgICAg ICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgIG1haiA9IG1ham9yKHNidWYuc3RfcmRldik7 Cj4gKyAgICAgICAgbWluID0gbWlub3Ioc2J1Zi5zdF9yZGV2KTsKPiArCj4gKyAgICAgICAgaWYg KG1haiAhPSBEUk1fTUFKT1IgfHwgIVNfSVNDSFIoc2J1Zi5zdF9tb2RlKSkKPiArICAgICAgICAg ICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgIHNucHJpbnRmKHBhdGgsIFBBVEhfTUFYLCAiL3N5 cy9kZXYvY2hhci8lZDolZC9kZXZpY2Uvc3Vic3lzdGVtIiwKPiArICAgICAgICAgICAgICAgICBt YWosIG1pbik7Cj4gKyAgICAgICAgc3Vic3lzdGVtX3R5cGUgPSBkcm1QYXJzZVN1YnN5c3RlbVR5 cGUocGF0aCk7Cj4gKwo+ICsgICAgICAgIGlmIChzdWJzeXN0ZW1fdHlwZSA8IDApCj4gKyAgICAg ICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAgICBzd2l0Y2ggKHN1YnN5c3RlbV90eXBlKSB7 Cj4gKyAgICAgICAgY2FzZSBEUk1fQlVTX1BDSToKPiArICAgICAgICAgICAgcGNpYnVzID0gY2Fs bG9jKDEsIHNpemVvZigqcGNpYnVzKSk7Cj4gKyAgICAgICAgICAgIGlmIChwY2lidXMgPT0gTlVM TCkgewo+ICsgICAgICAgICAgICAgICAgcmV0ID0gLUVOT01FTTsKPiArICAgICAgICAgICAgICAg IGdvdG8gZnJlZV9sb2NhbHM7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIHNu cHJpbnRmKHBhdGgsIFBBVEhfTUFYLCAiL3N5cy9kZXYvY2hhci8lZDolZC9kZXZpY2UvdWV2ZW50 IiwKPiArICAgICAgICAgICAgICAgICAgICAgbWFqLCBtaW4pOwo+ICsgICAgICAgICAgICBmZCA9 IG9wZW4ocGF0aCwgT19SRE9OTFkpOwo+ICsgICAgICAgICAgICBpZiAoZmQgPCAwKSB7Cj4gKyAg ICAgICAgICAgICAgICByZXQgPSAtZXJybm87Cj4gKyAgICAgICAgICAgICAgICBnb3RvIGZyZWVf bG9jYWxzOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIHJldCA9IHJlYWQoZmQsIGRh dGEsIHNpemVvZihkYXRhKSk7Cj4gKyAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAg ICAgICAgICAgICByZXQgPSAtZXJybm87Cj4gKyAgICAgICAgICAgICAgICBjbG9zZShmZCk7Cj4g KyAgICAgICAgICAgICAgICBnb3RvIGZyZWVfbG9jYWxzOwo+ICsgICAgICAgICAgICB9Cj4gKwo+ ICsgICAgICAgICAgICByZXQgPSBkcm1QYXJzZVBjaUJ1c0luZm8oZGF0YSwgcGNpYnVzKTsKPiAr ICAgICAgICAgICAgY2xvc2UoZmQpOwo+ICsgICAgICAgICAgICBpZiAocmV0KQo+ICsgICAgICAg ICAgICAgICAgZ290byBmcmVlX2xvY2FsczsKPiArCj4gKyAgICAgICAgICAgIGlmIChpID49IG1h eF9jb3VudCkgewo+ICsgICAgICAgICAgICAgICAgbWF4X2NvdW50ICs9IDE2Owo+ICsgICAgICAg ICAgICAgICAgZGV2cyA9IHJlYWxsb2MoZGV2cywgbWF4X2NvdW50ICogc2l6ZW9mKCpkZXZzKSk7 Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIGRldnNbaV0uYnVzaW5mby5wY2kg PSBwY2lidXM7Cj4gKyAgICAgICAgICAgIGRldnNbaV0uYnVzdHlwZSA9IHN1YnN5c3RlbV90eXBl Owo+ICsgICAgICAgICAgICBkZXZzW2ldLm5vZGVzID0gY2FsbG9jKERSTV9OT0RFX01BWCwgc2l6 ZW9mKGNoYXIgKikpOwo+ICsgICAgICAgICAgICBpZiAoZGV2c1tpXS5ub2RlcyA9PSBOVUxMKSB7 Cj4gKyAgICAgICAgICAgICAgICByZXQgPSAtRU5PTUVNOwo+ICsgICAgICAgICAgICAgICAgZ290 byBmcmVlX2xvY2FsczsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBkZXZzW2ldLm5v ZGVzW25vZGVfdHlwZV0gPSBzdHJkdXAobm9kZSk7Cj4gKyAgICAgICAgICAgIGlmIChkZXZzW2ld Lm5vZGVzW25vZGVfdHlwZV0gPT0gTlVMTCkgewo+ICsgICAgICAgICAgICAgICAgcmV0ID0gLUVO T01FTTsKPiArICAgICAgICAgICAgICAgIGdvdG8gZnJlZV9sb2NhbHM7Cj4gKyAgICAgICAgICAg IH0KPiArICAgICAgICAgICAgZGV2c1tpXS5hdmFpbGFibGVfbm9kZXMgPSAxIDw8IG5vZGVfdHlw ZTsKPiArCj4gKyAgICAgICAgICAgIGlmIChkZXZpY2VzICE9IE5VTEwpIHsKPiArICAgICAgICAg ICAgICAgIHNucHJpbnRmKHBhdGgsIFBBVEhfTUFYLCAiL3N5cy9jbGFzcy9kcm0vJXMvZGV2aWNl L2NvbmZpZyIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBkZW50LT5kX25hbWUpOwo+ICsg ICAgICAgICAgICAgICAgZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsKPiArICAgICAgICAgICAg ICAgIGlmIChmZCA8IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLWVycm5vOwo+ ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIGZyZWVfbG9jYWxzOwo+ICsgICAgICAgICAgICAg ICAgfQo+ICsgICAgICAgICAgICAgICAgcmV0ID0gcmVhZChmZCwgY29uZmlnLCA2NCk7Cj4gKyAg ICAgICAgICAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICAgICAgIHJldCA9 IC1lcnJubzsKPiArICAgICAgICAgICAgICAgICAgICBjbG9zZShmZCk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgZ290byBmcmVlX2xvY2FsczsKPiArICAgICAgICAgICAgICAgIH0KPiArCj4gKyAg ICAgICAgICAgICAgICBwY2lkZXZpY2UgPSBjYWxsb2MoMSwgc2l6ZW9mKCpwY2lkZXZpY2UpKTsK PiArICAgICAgICAgICAgICAgIGlmIChwY2lkZXZpY2UgPT0gTlVMTCkgewo+ICsgICAgICAgICAg ICAgICAgICAgIHJldCA9IC1FTk9NRU07Cj4gKyAgICAgICAgICAgICAgICAgICAgZ290byBmcmVl X2xvY2FsczsKPiArICAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgICByZXQg PSBkcm1QYXJzZVBjaURldmljZUluZm8oY29uZmlnLCBwY2lkZXZpY2UpOwo+ICsgICAgICAgICAg ICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAgICAgICAgICBnb3RvIGZyZWVfbG9jYWxzOwo+ ICsKPiArICAgICAgICAgICAgICAgIGRldnNbaV0uZGV2aWNlaW5mby5wY2kgPSBwY2lkZXZpY2U7 Cj4gKyAgICAgICAgICAgICAgICBjbG9zZShmZCk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAg ICAgICAgYnJlYWs7Cj4gKyAgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsICJUaGUgc3Vic3lzdGVtIHR5cGUgaXMgbm90IHN1cHBvcnRlZCB5ZXRcbiIpOwo+ICsg ICAgICAgICAgICBicmVhazsKPiArICAgICAgICB9Cj4gKyAgICAgICAgaSsrOwo+ICsgICAgfQo+ ICsKPiArICAgIG5vZGVfY291bnQgPSBpOwo+ICsKPiArICAgIC8qIG1lcmdlIGR1cGxpY2F0ZWQg ZGV2aWNlcyB3aXRoIHNhbWUgZG9tYWluL2J1cy9kZXZpY2UvZnVuYyBJRHMgKi8KPiArICAgIGR1 cGxpY2F0ZWQgPSBjYWxsb2Mobm9kZV9jb3VudCwgc2l6ZW9mKCpkdXBsaWNhdGVkKSk7Cj4gKyAg ICBpZiAoZHVwbGljYXRlZCA9PSBOVUxMKSB7Cj4gKyAgICAgICAgcmV0ID0gLUVOT01FTTsKPiAr ICAgICAgICBnb3RvIGZyZWVfbG9jYWxzOwo+ICsgICAgfQo+ICsKPiArICAgIGZvciAoaSA9IDA7 IGkgPCBub2RlX2NvdW50OyBpKyspIHsKPiArICAgICAgICBmb3IgKGogPSBpKzE7IGogPCBub2Rl X2NvdW50OyBqKyspIHsKPiArICAgICAgICAgICAgaWYgKGR1cGxpY2F0ZWRbaV0gfHwgZHVwbGlj YXRlZFtqXSkKPiArICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgICAgICBpZiAo ZHJtU2FtZURldmljZSgmZGV2c1tpXSwgJmRldnNbal0pKSB7Cj4gKyAgICAgICAgICAgICAgICBk dXBsaWNhdGVkW2pdID0gMTsKPiArICAgICAgICAgICAgICAgIGRldnNbaV0uYXZhaWxhYmxlX25v ZGVzIHw9IGRldnNbal0uYXZhaWxhYmxlX25vZGVzOwo+ICsgICAgICAgICAgICAgICAgbm9kZV90 eXBlID0gbG9nMihkZXZzW2pdLmF2YWlsYWJsZV9ub2Rlcyk7Cj4gKyAgICAgICAgICAgICAgICBk ZXZzW2ldLm5vZGVzW25vZGVfdHlwZV0gPSBkZXZzW2pdLm5vZGVzW25vZGVfdHlwZV07Cj4gKyAg ICAgICAgICAgICAgICBmcmVlKGRldnNbal0ubm9kZXMpOwo+ICsgICAgICAgICAgICAgICAgZnJl ZShkZXZzW2pdLmJ1c2luZm8ucGNpKTsKPiArICAgICAgICAgICAgICAgIGZyZWUoZGV2c1tqXS5k ZXZpY2VpbmZvLnBjaSk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4g Kwo+ICsgICAgZm9yIChpID0gMDsgaSA8IG5vZGVfY291bnQ7IGkrKykgewo+ICsgICAgICAgIGlm KGR1cGxpY2F0ZWRbaV0gPT0gMCkgewo+ICsgICAgICAgICAgICBpZiAoKGRldmljZXMgIT0gTlVM TCkgJiYgKGRldmljZV9jb3VudCA8IG1heF9kZXZpY2VzKSkgewo+ICsgICAgICAgICAgICAgICAg ZGV2aWNlc1tkZXZpY2VfY291bnRdID0gY2FsbG9jKDEsIHNpemVvZihkcm1EZXZpY2UpKTsKPiAr ICAgICAgICAgICAgICAgIGlmIChkZXZpY2VzW2RldmljZV9jb3VudF0gPT0gTlVMTCkgewo+ICsg ICAgICAgICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07Cj4gKyAgICAgICAgICAgICAgICAgICAg YnJlYWs7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICBtZW1jcHkoZGV2 aWNlc1tkZXZpY2VfY291bnRdLCAmZGV2c1tpXSwgc2l6ZW9mKGRybURldmljZSkpOwo+ICsgICAg ICAgICAgICB9IGVsc2UKPiArICAgICAgICAgICAgICAgIGRybUZyZWVEZXZpY2UoJmRldnNbaV0p Owo+ICsgICAgICAgICAgICBkZXZpY2VfY291bnQrKzsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4g Kwo+ICsgICAgaWYgKGkgPCBub2RlX2NvdW50KSB7Cj4gKyAgICAgICAgZHJtRnJlZURldmljZXMo ZGV2aWNlcywgZGV2aWNlX2NvdW50KTsKPiArICAgICAgICBmb3IgKCA7IGkgPCBub2RlX2NvdW50 OyBpKyspCj4gKyAgICAgICAgICAgIGlmKGR1cGxpY2F0ZWRbaV0gPT0gMCkKPiArICAgICAgICAg ICAgICAgIGRybUZyZWVEZXZpY2UoJmRldnNbaV0pOwo+ICsgICAgfSBlbHNlCj4gKyAgICAgICAg cmV0ID0gZGV2aWNlX2NvdW50Owo+ICsKPiArICAgIGZyZWUoZHVwbGljYXRlZCk7Cj4gKyAgICBm cmVlKGRldnMpOwo+ICsgICAgY2xvc2VkaXIoc3lzZGlyKTsKPiArICAgIHJldHVybiByZXQ7Cj4g Kwo+ICtmcmVlX2xvY2FsczoKPiArICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspCj4gKyAgICAg ICAgZHJtRnJlZURldmljZSgmZGV2c1tqXSk7Cj4gKyAgICBmcmVlKHBjaWRldmljZSk7Cj4gKyAg ICBmcmVlKHBjaWJ1cyk7Cj4gKyAgICBmcmVlKGRldnMpOwo+ICsgICAgY2xvc2VkaXIoc3lzZGly KTsKPiArICAgIHJldHVybiByZXQ7Cj4gK30KPiArI2Vsc2UKPiArdm9pZCBkcm1GcmVlRGV2aWNl cyhkcm1EZXZpY2VQdHIgZGV2aWNlc1tdLCBpbnQgY291bnQpCj4gK3sKPiArICAgICh2b2lkKWRl dmljZXM7Cj4gKyAgICAodm9pZCljb3VudDsKPiArfQo+ICsKPiAraW50IGRybUdldERldmljZXMo ZHJtRGV2aWNlUHRyIGRldmljZXNbXSwgaW50IG1heF9kZXZpY2VzKQo+ICt7Cj4gKyAgICAodm9p ZClkZXZpY2VzOwo+ICsgICAgKHZvaWQpbWF4X2RldmljZXM7Cj4gKyAgICByZXR1cm4gLUVJTlZB TDsKPiArfQo+ICsKPiArI3dhcm5pbmcgIk1pc3NpbmcgaW1wbGVtZW50YXRpb24gb2YgZHJtR2V0 RGV2aWNlcy9kcm1GcmVlRGV2aWNlcyIKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS94Zjg2 ZHJtLmggYi94Zjg2ZHJtLmgKPiBpbmRleCAzNjBlMDRhLi5lODJjYTg0IDEwMDY0NAo+IC0tLSBh L3hmODZkcm0uaAo+ICsrKyBiL3hmODZkcm0uaAo+IEBAIC01NjMsNiArNTYzLDggQEAgZXh0ZXJu IGludCAgICAgICAgICAgZHJtT3Blbihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpidXNp ZCk7Cj4gICNkZWZpbmUgRFJNX05PREVfUFJJTUFSWSAwCj4gICNkZWZpbmUgRFJNX05PREVfQ09O VFJPTCAxCj4gICNkZWZpbmUgRFJNX05PREVfUkVOREVSICAyCj4gKyNkZWZpbmUgRFJNX05PREVf TUFYICAgICAzCj4gKwo+ICBleHRlcm4gaW50ICAgICAgICAgICBkcm1PcGVuV2l0aFR5cGUoY29u c3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqYnVzaWQsCj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgdHlwZSk7Cj4gIAo+IEBAIC03NTksNiArNzYxLDM4IEBAIGV4 dGVybiBpbnQgZHJtUHJpbWVGRFRvSGFuZGxlKGludCBmZCwgaW50IHByaW1lX2ZkLCB1aW50MzJf dCAqaGFuZGxlKTsKPiAgZXh0ZXJuIGNoYXIgKmRybUdldFByaW1hcnlEZXZpY2VOYW1lRnJvbUZk KGludCBmZCk7Cj4gIGV4dGVybiBjaGFyICpkcm1HZXRSZW5kZXJEZXZpY2VOYW1lRnJvbUZkKGlu dCBmZCk7Cj4gIAo+ICsjZGVmaW5lIERSTV9CVVNfUENJICAgMAo+ICsKPiArdHlwZWRlZiBzdHJ1 Y3QgX2RybVBjaUJ1c0luZm8gewo+ICsgICAgdWludDE2X3QgZG9tYWluOwo+ICsgICAgdWludDhf dCBidXM7Cj4gKyAgICB1aW50OF90IGRldjsKPiArICAgIHVpbnQ4X3QgZnVuYzsKPiArfSBkcm1Q Y2lCdXNJbmZvLCAqZHJtUGNpQnVzSW5mb1B0cjsKPiArCj4gK3R5cGVkZWYgc3RydWN0IF9kcm1Q Y2lEZXZpY2VJbmZvIHsKPiArICAgIHVpbnQxNl90IHZlbmRvcl9pZDsKPiArICAgIHVpbnQxNl90 IGRldmljZV9pZDsKPiArICAgIHVpbnQxNl90IHN1YnZlbmRvcl9pZDsKPiArICAgIHVpbnQxNl90 IHN1YmRldmljZV9pZDsKPiArICAgIHVpbnQ4X3QgcmV2aXNpb25faWQ7Cj4gK30gZHJtUGNpRGV2 aWNlSW5mbywgKmRybVBjaURldmljZUluZm9QdHI7Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBfZHJt RGV2aWNlIHsKPiArICAgIGNoYXIgKipub2RlczsgLyogRFJNX05PREVfTUFYIHNpemVkIGFycmF5 ICovCj4gKyAgICBpbnQgYXZhaWxhYmxlX25vZGVzOyAvKiBEUk1fTk9ERV8qIGJpdG1hc2sgKi8K PiArICAgIGludCBidXN0eXBlOwo+ICsgICAgdW5pb24gewo+ICsgICAgICAgIGRybVBjaUJ1c0lu Zm9QdHIgcGNpOwo+ICsgICAgfSBidXNpbmZvOwo+ICsgICAgdW5pb24gewo+ICsgICAgICAgIGRy bVBjaURldmljZUluZm9QdHIgcGNpOwo+ICsgICAgfSBkZXZpY2VpbmZvOwo+ICt9IGRybURldmlj ZSwgKmRybURldmljZVB0cjsKPiArCj4gK2V4dGVybiBpbnQgZHJtR2V0RGV2aWNlcyhkcm1EZXZp Y2VQdHIgZGV2aWNlc1tdLCBpbnQgbWF4X2RldmljZXMpOwo+ICtleHRlcm4gdm9pZCBkcm1GcmVl RGV2aWNlcyhkcm1EZXZpY2VQdHIgZGV2aWNlc1tdLCBpbnQgY291bnQpOwo+ICsKPiAgI2lmIGRl ZmluZWQoX19jcGx1c3BsdXMpCj4gIH0KPiAgI2VuZGlmCj4gLS0gCj4gMS45LjEKPiAKPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==