From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 84B5EC531D0 for ; Mon, 27 Jul 2026 06:59:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=QE2Oruoh4EyLOfNQhADNBgABJ0QOtXh+0sv5tg74TnM=; b=3gK3rDMDhzmCGs 0nBpeGtJnnmlLMlinWEXN6q2ZSsCZMy1XjltS7hSFPuCn+v19OoelMqbIt6hUDfauHVWeL0eX3wit xBS9NGjiclbe9g18z97NJmIjw6ZxuiRGc/8lnZgRyR4/Z8vg5HVBCioYArcbDDNdWKSkRkhWk/aXb 8EPHLibq+Jt1h4DetFh4fsFXW3GSpDpDVsFyn1kMv4+J1izmsFoDJMED9FIJwbDfEWkaMD5sT45Lc vFy/J0oKEAp8VMNQHINRAMXLDTiBipnrYaWUdkSWt0BvQD3B0YrH27nF7ri56U3Ahfi5CbpaB/uN9 Q0sJx89sZ02xYwtClstw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1woFJ7-000000024pv-0yqz; Mon, 27 Jul 2026 06:59:25 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1woFJ5-000000024pp-2DbL for linux-phy@lists.infradead.org; Mon, 27 Jul 2026 06:59:23 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 6849041204; Mon, 27 Jul 2026 06:59:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EEC881F00A3D; Mon, 27 Jul 2026 06:59:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785135561; bh=NIO7f2ZGZj/TCtxMJJ+w33A7kjMCArYNKTzgks5DySE=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=YNvSBpQhJBu5nm0UGWJoPSpz/E/7psDU8XvrNLe4JwJHAc0j+5VxS3iKo0saXEnAx K61f/qqvyFOPQrnaUtS0cYYeWNAEMLlwG61nG5VYb0neuVmVme7Dtr6I09c6WNKkFa uuJC2FpivU6CYP3dFxZa9Ej97JFtRuNc5KNDsZneyEioqEVT93hJyp5QRlfDryZPEF /f2P/Nj/9mfdfj3yUWJVUwaxCFETM8iL3tnCY+gVR/t77UxQhmNAZkemkrfv1j2T/4 Soil3hk345MiJJDmsMDrXyUvy12pjjayBRFLzNxEUzQ1EN7uqSIRS5D2iyGp/mB9U+ XXw6270ufHXrg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 5/5] drm/rockchip: cdn-dp: Add multiple bridges to support PHY port selection To: "Chaoyi Chen" Cc: neil.armstrong@linaro.org, vkoul@kernel.org, olteanv@gmail.com, linux-phy@lists.infradead.org, dri-devel@lists.freedesktop.org In-Reply-To: <20260727064408.101-6-kernel@airkyi.com> References: <20260727064408.101-1-kernel@airkyi.com> <20260727064408.101-6-kernel@airkyi.com> Date: Mon, 27 Jul 2026 06:59:20 +0000 Message-Id: <20260727065920.EEC881F00A3D@smtp.kernel.org> X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MTIgcG90ZW50aWFsIGlzc3VlKHMpIHRvIGNvbnNpZGVyOgoKTmV3IGlzc3VlczoKLSBbSGlnaF0g YGNkbl9kcF9jb25uZWN0ZWRfcG9ydGAgdW5jb25kaXRpb25hbGx5IHJldHVybnMgdGhlIGZpcnN0 IHBvcnQgb24gbGVnYWN5IG9yIGV4dGNvbiBkZXZpY2VzLCBicmVha2luZyBob3RwbHVnIGRldGVj dGlvbi4KLSBbSGlnaF0gVGhlIGRyaXZlciBlcnJvbmVvdXNseSBza2lwcyB2YWxpZCBgZXh0Y29u YCBkZXZpY2VzIGR1cmluZyBwcm9iZSBkdWUgdG8gYSBmbGF3ZWQgZXJyb3IgcG9pbnRlciBjaGVj ay4KLSBbSGlnaF0gYGNkbl9kcF9zd2l0Y2hfcG9ydGAgcGVyZm9ybXMgZnVsbCB2aWRlbyBjb25m aWd1cmF0aW9uIGR1cmluZyBhbiBFRElEIHJlYWQsIGJyZWFraW5nIHBvcnQgc3dpdGNoaW5nIGFu ZCBFRElEIGRldGVjdGlvbi4KLSBbSGlnaF0gTXVsdGlwbGUgZW5jb2RlcnMgYXJlIHJlZ2lzdGVy ZWQgd2l0aG91dCBhbiBgYXRvbWljX2NoZWNrYCBjYWxsYmFjayB0byBlbmZvcmNlIG11dHVhbCBl eGNsdXNpb24sIGVuYWJsaW5nIGhhcmR3YXJlIGNvcnJ1cHRpb24uCi0gW0hpZ2hdIERhbmdsaW5n IHBvaW50ZXJzIGluIGBkcC0+bmV4dF9icmlkZ2VfbGlzdGAgY2F1c2UgYSBkb3VibGUtcHV0IFVz ZS1BZnRlci1GcmVlIGR1cmluZyBjb21wb25lbnQgcmViaW5kcyBvciBkZWZlcnJlZCBwcm9iZXMu Ci0gW0hpZ2hdIERhbmdsaW5nIHBvaW50ZXJzIGluIGBkcC0+ZWRpZF9jYWNoZWAgY2F1c2UgYSBk b3VibGUtZnJlZSBtZW1vcnkgY29ycnVwdGlvbiBkdXJpbmcgY29tcG9uZW50IHJlYmluZHMuCi0g W0hpZ2hdIExhY2sgb2YgYm91bmRzIHZhbGlkYXRpb24gYmV0d2VlbiBEVCBlbmRwb2ludHMgKGBi cmlkZ2VfY291bnRgKSBhbmQgcHJvYmVkIFBIWXMgKGBwb3J0c2ApIGxlYWRzIHRvIE5VTEwgcG9p bnRlciBkZXJlZmVyZW5jZXMgYW5kIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4KLSBbSGln aF0gYGNkbl9kcF9icmlkZ2VfYXRvbWljX2VuYWJsZWAgYnlwYXNzZXMgUEhZIHN3aXRjaGluZyBp ZiB0aGUgQ0ROLURQIGNvbnRyb2xsZXIgaXMgYWxyZWFkeSBhY3RpdmUuCi0gW0hpZ2hdIEZhaWxl ZCBQSFkgc3dpdGNoaW5nIGluIGBjZG5fZHBfc3dpdGNoX3BvcnRgIGxlYXZlcyB0aGUgZGV2aWNl IGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4KLSBbTWVkaXVtXSBPdXQtb2YtYm91bmRzIHdyaXRl IGluIGBjZG5fZHBfcGFyc2VfbmV4dF9icmlkZ2VfZHRgIHdoZW4gcGFyc2luZyBkZXZpY2UgdHJl ZSBlbmRwb2ludHMuCi0gW01lZGl1bV0gRGF0YSByYWNlIG9uIHRoZSBgY29ubmVjdGVkYCBmbGFn IG9mIHRoZSBicmlkZ2VzLgoKUHJlLWV4aXN0aW5nIGlzc3VlczoKLSBbQ3JpdGljYWxdIGBkZXZt X2AgYWxsb2NhdGlvbnMgaW5zaWRlIHRoZSBjb21wb25lbnQgYGJpbmRgIGNhbGxiYWNrIGNhdXNl IHJlc291cmNlIGxlYWtzLCBkdXBsaWNhdGUgcmVnaXN0cmF0aW9ucywgYW5kIFVzZS1BZnRlci1G cmVlIHZ1bG5lcmFiaWxpdGllcy4KLS0KCi0tLSBQYXRjaCBbNV06IFtQQVRDSCB2NCA1LzVdIGRy bS9yb2NrY2hpcDogY2RuLWRwOiBBZGQgbXVsdGlwbGUgYnJpZGdlcyB0byBzdXBwb3J0IFBIWSBw b3J0IHNlbGVjdGlvbiAtLS0KY29tbWl0IGFlODlkZDQ0MDJjNGU5OGFiOTY1YzViZDI5ZjJlYjE5 ZmE1ZDQ4YmMKQXV0aG9yOiBDaGFveWkgQ2hlbiA8Y2hhb3lpLmNoZW5Acm9jay1jaGlwcy5jb20+ Cgpkcm0vcm9ja2NoaXA6IGNkbi1kcDogQWRkIG11bHRpcGxlIGJyaWRnZXMgdG8gc3VwcG9ydCBQ SFkgcG9ydCBzZWxlY3Rpb24KClRoZSBSSzMzOTkgaGFzIHR3byBVU0IvRFAgY29tYm8gUEhZIGFu ZCBvbmUgQ0ROLURQIGNvbnRyb2xsZXIuIEFuZAp0aGUgQ0ROLURQIGNhbiBiZSBzd2l0Y2hlZCB0 byBvdXRwdXQgdG8gb25lIG9mIHRoZSBQSFlzLiBJZiBib3RoIHBvcnRzCmFyZSBwbHVnZ2VkIGlu dG8gRFAsIERQIHdpbGwgc2VsZWN0IHRoZSBmaXJzdCBwb3J0IGZvciBvdXRwdXQuCgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLWNvcmUuYyBiL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jCj4gaW5kZXggMWMxYzExMTZiNWViZS4uMjUx ZTc2NjkyZWI2MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRw LWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jClsg Li4uIF0KPiBAQCAtMTkxLDE0ICsxOTIsMjcgQEAgc3RhdGljIGludCBjZG5fZHBfZ2V0X3Npbmtf Y291bnQoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwLCB1OCAqc2lua19jb3VudCkKPiAgc3RhdGlj IHN0cnVjdCBjZG5fZHBfcG9ydCAqY2RuX2RwX2Nvbm5lY3RlZF9wb3J0KHN0cnVjdCBjZG5fZHBf ZGV2aWNlICpkcCkKPiAgewo+ICAJc3RydWN0IGNkbl9kcF9wb3J0ICpwb3J0Owo+IC0JaW50IGks IGxhbmVzOwo+ICsJaW50IGksIGxhbmVzW01BWF9QSFldOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkg PCBkcC0+cG9ydHM7IGkrKykgewo+ICAJCXBvcnQgPSBkcC0+cG9ydFtpXTsKPiAtCQlsYW5lcyA9 IGNkbl9kcF9nZXRfcG9ydF9sYW5lcyhwb3J0KTsKPiAtCQlpZiAobGFuZXMpCj4gKwkJbGFuZXNb aV0gPSBjZG5fZHBfZ2V0X3BvcnRfbGFuZXMocG9ydCk7Cj4gKwkJaWYgKCFkcC0+bmV4dF9icmlk Z2VfdmFsaWQpCj4gIAkJCXJldHVybiBwb3J0OwoKW1NldmVyaXR5OiBIaWdoXQpXaGF0IGhhcHBl bnMgaGVyZSBmb3IgbGVnYWN5IG9yIGV4dGNvbiBkZXZpY2VzIHdoZXJlIGBuZXh0X2JyaWRnZV92 YWxpZGAgaXMKZmFsc2U/CgpJZiBgIWRwLT5uZXh0X2JyaWRnZV92YWxpZGAgZXZhbHVhdGVzIHRv IHRydWUsIHRoZSBsb29wIGltbWVkaWF0ZWx5IHJldHVybnMKYGRwLT5wb3J0WzBdYCBvbiB0aGUg dmVyeSBmaXJzdCBpdGVyYXRpb24uIFRoaXMgc2VlbXMgdG8gY29tcGxldGVseSBpZ25vcmUKdGhl IHBoeXNpY2FsIGNvbm5lY3Rpb24gc3RhdGUgaW4gYGxhbmVzW2ldYCwgYWx3YXlzIGZhbHNlbHkg cmVwb3J0aW5nIHRoZSBwb3J0CmFzIGNvbm5lY3RlZCwgd2hpY2ggY291bGQgYnJlYWsgRFAgaG90 cGx1ZyBkZXRlY3Rpb24gZW50aXJlbHkuCgo+ICAJfQo+ICsKPiArCWlmIChkcC0+bmV4dF9icmlk Z2VfdmFsaWQpIHsKWyAuLi4gXQo+IEBAIC0yNTMsMTIgKzI2Nyw0NSBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9lZGlkICoKPiAgY2RuX2RwX2JyaWRnZV9lZGlkX3JlYWQoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSwgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgewo+ICAJ c3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwID0gYnJpZGdlX3RvX2RwKGJyaWRnZSk7Cj4gLQljb25z dCBzdHJ1Y3QgZHJtX2VkaWQgKmRybV9lZGlkOwo+ICsJc3RydWN0IGNkbl9kcF9icmlkZ2UgKmRw X2JyaWRnZSA9IGJyaWRnZV90b19kcF9icmlkZ2UoYnJpZGdlKTsKPiArCXN0cnVjdCBjZG5fZHBf cG9ydCAqcG9ydCA9IGRwLT5wb3J0W2RwX2JyaWRnZS0+aWRdOwoKW1NldmVyaXR5OiBIaWdoXQpJ cyBpdCBwb3NzaWJsZSBmb3IgYSBkZXZpY2UgdHJlZSB0byBkZWZpbmUgbW9yZSBlbmRwb2ludHMg dGhhbiBwcm9iZWQgUEhZcz8KClRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGJvdW5kcyBjaGVj ayBlbnN1cmluZyBgZHAtPmJyaWRnZV9jb3VudGAgaXMgbGVzcwp0aGFuIG9yIGVxdWFsIHRvIGBk cC0+cG9ydHNgLiBJZiBhIG1pc2NvbmZpZ3VyYXRpb24gY2F1c2VzIGBkcF9icmlkZ2UtPmlkYAp0 byBpbmRleCBiZXlvbmQgYGRwLT5wb3J0c2AsIGBkcC0+cG9ydFtkcF9icmlkZ2UtPmlkXWAgd291 bGQgcmV0dXJuIE5VTEwuClRoaXMgd291bGQgY2F1c2UgYSBrZXJuZWwgcGFuaWMgd2hlbiBjaGVj a2luZyBgIXBvcnQtPnBoeV9lbmFibGVkYCBiZWxvdy4KCj4gKwlzdHJ1Y3QgY2RuX2RwX3BvcnQg KnByZXZfcG9ydCA9IE5VTEw7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2VkaWQgKmRybV9lZGlkID0g TlVMTDsKPiArCWludCBpLCByZXQ7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZHAtPmxvY2spOwo+ICsK PiArCS8qIE1vcmUgdGhhbiBvbmUgcG9ydCBpcyBhdmFpbGFibGUgKi8KPiArCWlmIChkcC0+YnJp ZGdlX2NvdW50ID4gMSAmJiAhcG9ydC0+cGh5X2VuYWJsZWQpIHsKPiArCQlmb3IgKGkgPSAwOyBp IDwgZHAtPmJyaWRnZV9jb3VudDsgaSsrKSB7Cj4gKwkJCS8qIEFub3RoZXIgcG9ydCBhbHJlYWR5 IGVuYWJsZSAqLwo+ICsJCQlpZiAoZHAtPmJyaWRnZV9saXN0W2ldICE9IGRwX2JyaWRnZSAmJiBk cC0+YnJpZGdlX2xpc3RbaV0tPmVuYWJsZWQpCj4gKwkJCQlnb3RvIGdldF9jYWNoZTsKPiArCQkJ LyogRmluZCBhbHJlYWR5IGVuYWJsZWQgcG9ydCAqLwo+ICsJCQlpZiAoZHAtPnBvcnRbaV0tPnBo eV9lbmFibGVkKQo+ICsJCQkJcHJldl9wb3J0ID0gZHAtPnBvcnRbaV07Cj4gKwkJfQo+ICsKPiAr CQkvKiBTd2l0Y2ggdG8gY3VycmVudCBwb3J0ICovCj4gKwkJaWYgKHByZXZfcG9ydCkgewo+ICsJ CQlyZXQgPSBjZG5fZHBfc3dpdGNoX3BvcnQoZHAsIHByZXZfcG9ydCwgcG9ydCk7Cj4gKwkJCWlm IChyZXQpCj4gKwkJCQlnb3RvIGdldF9jYWNoZTsKPiArCQl9Cj4gKwl9CgpbU2V2ZXJpdHk6IEhp Z2hdCkFyZSB3ZSB0cnlpbmcgdG8gcGVyZm9ybSBmdWxsIHZpZGVvIGNvbmZpZ3VyYXRpb24gZHVy aW5nIGFuIEVESUQgcmVhZD8KCldoZW4gc3dpdGNoaW5nIHRoZSBQSFksIGBjZG5fZHBfc3dpdGNo X3BvcnRgIGludGVybmFsbHkgY2FsbHMKYGNkbl9kcF9jb25maWdfdmlkZW8oZHApYC4gSG93ZXZl ciwgZHVyaW5nIGFuIEVESUQgcmVhZCBvcGVyYXRpb24sIG5vIGRpc3BsYXkKbW9kZSBpcyBjb21t aXR0ZWQgeWV0LCBtZWFuaW5nIGBtb2RlLT5jbG9ja2AgbWF5IGJlIDAuIFNpbmNlCmBjZG5fZHBf Y29uZmlnX3ZpZGVvYCB1c2VzIGBtb2RlLT5jbG9ja2AgaW4gYSB0aW1pbmcgbG9vcCwgdGhpcyB3 aWxsIGZhaWwuCgpUaGlzIGZvcmNlcyBgY2RuX2RwX3N3aXRjaF9wb3J0YCB0byBmYWlsLCByZXN1 bHRpbmcgaW4gYSBmYWxsYmFjayB0byBhCnN0YWxlIG9yIE5VTEwgRURJRCBjYWNoZSwgY29tcGxl dGVseSBicmVha2luZyBvdXRwdXQgZGV0ZWN0aW9uIG9uIHNlY29uZGFyeQpwb3J0cy4KCj4gKwo+ ICAJZHJtX2VkaWQgPSBkcm1fZWRpZF9yZWFkX2N1c3RvbShjb25uZWN0b3IsIGNkbl9kcF9nZXRf ZWRpZF9ibG9jaywgZHApOwo+ICsJLyogcmVwbGFjZSBlZGlkIGNhY2hlICovCj4gKwlpZiAoZHAt PmVkaWRfY2FjaGVbZHBfYnJpZGdlLT5pZF0pCj4gKwkJZHJtX2VkaWRfZnJlZShkcC0+ZWRpZF9j YWNoZVtkcF9icmlkZ2UtPmlkXSk7CgpbU2V2ZXJpdHk6IEhpZ2hdCkNvdWxkIHRoaXMgcmVzdWx0 IGluIGEgZG91YmxlLWZyZWUgb24gYSBkYW5nbGluZyBwb2ludGVyPwoKSW4gYGNkbl9kcF91bmJp bmQoKWAsIHRoZSBjYWNoZWQgRURJRHMgYXJlIGZyZWVkIGJ1dCB0aGUgcG9pbnRlcnMgaW4KYGRw LT5lZGlkX2NhY2hlYCBhcmUgbm90IHNldCB0byBOVUxMLiBTaW5jZSB0aGUgYGRwYCBjb250ZXh0 IHN1cnZpdmVzIGEKY29tcG9uZW50IHVuYmluZC9yZWJpbmQgY3ljbGUsIGlmIHRoZSBjb21wb25l bnQgaXMgcmVib3VuZCwgdGhpcyBjaGVjayB3aWxsCmV2YWx1YXRlIHRvIHRydWUgYW5kIGF0dGVt cHQgdG8gZnJlZSB0aGUgZGFuZ2xpbmcgcG9pbnRlciBhZ2Fpbi4KCj4gKwlkcC0+ZWRpZF9jYWNo ZVtkcF9icmlkZ2UtPmlkXSA9IGRybV9lZGlkX2R1cChkcm1fZWRpZCk7Cj4gKwo+ICAJbXV0ZXhf dW5sb2NrKCZkcC0+bG9jayk7Cj4gKwlyZXR1cm4gZHJtX2VkaWQ7ClsgLi4uIF0KPiBAQCAtNTUw LDYgKzU5OCw1MCBAQCBzdGF0aWMgYm9vbCBjZG5fZHBfY2hlY2tfbGlua19zdGF0dXMoc3RydWN0 IGNkbl9kcF9kZXZpY2UgKmRwKQo+ICAJcmV0dXJuIGRybV9kcF9jaGFubmVsX2VxX29rKGxpbmtf c3RhdHVzLCBtaW4ocG9ydC0+bGFuZXMsIHNpbmtfbGFuZXMpKTsKPiAgfQo+ICAKPiArc3RhdGlj IGludCBjZG5fZHBfc3dpdGNoX3BvcnQoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwLCBzdHJ1Y3Qg Y2RuX2RwX3BvcnQgKnByZXZfcG9ydCwKPiArCQkJICAgICAgc3RydWN0IGNkbl9kcF9wb3J0ICpw b3J0KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGNkbl9kcF9kaXNhYmxlX3BoeShk cCwgcHJldl9wb3J0KTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXQ7Cj4gKwlyZXQgPSBjZG5f ZHBfZW5hYmxlX3BoeShkcCwgcG9ydCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0Owo+ICsK PiArCXJldCA9IGNkbl9kcF9nZXRfc2lua19jYXBhYmlsaXR5KGRwKTsKPiArCWlmIChyZXQpIHsK PiArCQljZG5fZHBfZGlzYWJsZV9waHkoZHAsIHBvcnQpOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQoK W1NldmVyaXR5OiBIaWdoXQpEb2VzIHRoaXMgZXJyb3IgcGF0aCBsZWF2ZSB0aGUgZHJpdmVyIGlu IGFuIGluY29uc2lzdGVudCBzdGF0ZT8KCklmIGBjZG5fZHBfZ2V0X3NpbmtfY2FwYWJpbGl0eWAg ZmFpbHMsIHRoZSBjb2RlIGRpc2FibGVzIGJvdGggdGhlIHByZXZpb3VzCmFuZCB0YXJnZXQgUEhZ cyBhbmQgcmV0dXJucyBhbiBlcnJvci4gSG93ZXZlciwgaXQgZmFpbHMgdG8gdXBkYXRlIHRoZQpj b250cm9sbGVyJ3MgaW50ZXJuYWwgc3RhdGUgbWFjaGluZSwgbGVhdmluZyBgZHAtPmFjdGl2ZWAg YXMgdHJ1ZS4KCkJlY2F1c2UgYGRwLT5hY3RpdmVgIGlzIHRydWUgYnV0IG5vIFBIWSBpcyBhY3R1 YWxseSBlbmFibGVkLCBhbnkgc3Vic2VxdWVudApoYXJkd2FyZSBvcGVyYXRpb25zIHdpbGwgYXNz dW1lIHRoZSBoYXJkd2FyZSBpcyBhY3RpdmUsIHBvdGVudGlhbGx5IGxlYWRpbmcKdG8gYnVzIGVy cm9ycyBvciBoYXJkd2FyZSB0aW1lb3V0cy4KCj4gKwo+ICsJZHAtPmxhbmVzID0gcG9ydC0+bGFu ZXM7Cj4gKwo+ICsJaWYgKCFjZG5fZHBfY2hlY2tfbGlua19zdGF0dXMoZHApKSB7ClsgLi4uIF0K PiBAQCAtNTk5LDYgKzY5Miw5IEBAIHN0YXRpYyB2b2lkIGNkbl9kcF9icmlkZ2VfYXRvbWljX2Vu YWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLCBzdHJ1Y3QgZHJtX2F0Cj4gIAo+ICAJbXV0 ZXhfbG9jaygmZHAtPmxvY2spOwo+ICAKPiArCWlmIChkcC0+bmV4dF9icmlkZ2VfdmFsaWQpCj4g KwkJZHAtPmFjdGl2ZV9wb3J0ID0gZHBfYnJpZGdlLT5pZDsKPiArCj4gIAlyZXQgPSBjZG5fZHBf ZW5hYmxlKGRwKTsKCltTZXZlcml0eTogSGlnaF0KV2lsbCBgY2RuX2RwX2VuYWJsZWAgYWN0dWFs bHkgc3dpdGNoIHRoZSBQSFkgaWYgb25lIGlzIGFscmVhZHkgYWN0aXZlPwoKVGhlIGRyaXZlciBz ZXRzIGBkcC0+YWN0aXZlX3BvcnQgPSBkcF9icmlkZ2UtPmlkYCBhbmQgY2FsbHMgYGNkbl9kcF9l bmFibGUoZHApYC4KSG93ZXZlciwgYGNkbl9kcF9lbmFibGVgIGNvbnRhaW5zIGFuIGVhcmx5IHJl dHVybiBpZiBgZHAtPmFjdGl2ZWAgaXMgYWxyZWFkeQp0cnVlLgoKSWYgUG9ydCBBIGlzIGFjdGl2 ZSBhbmQgYW4gYXRvbWljIGNvbW1pdCByZXF1ZXN0cyBlbmFibGluZyBQb3J0IEIsCmBjZG5fZHBf ZW5hYmxlYCB3aWxsIHJldHVybiBpbW1lZGlhdGVseSB3aXRob3V0IHBvd2VyaW5nIG9uIFBvcnQg QidzIFBIWS4KU3Vic2VxdWVudCB2aWRlbyBjb25maWd1cmF0aW9uIGFuZCBsaW5rIHRyYWluaW5n IGNvbW1hbmRzIHdpbGwgdGhlbiBiZSBzZW50CndoaWxlIHRoZSB0YXJnZXQgUEhZIGlzIHBvd2Vy ZWQgb2ZmLgoKPiAgCWlmIChyZXQpIHsKPiAgCQlEUk1fREVWX0VSUk9SKGRwLT5kZXYsICJGYWls ZWQgdG8gZW5hYmxlIGJyaWRnZSAlZFxuIiwKWyAuLi4gXQo+IEBAIC04MzEsNiArOTMwLDE3IEBA IHN0YXRpYyBpbnQgY2RuX2RwX2F1ZGlvX211dGVfc3RyZWFtKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBjZG5fZHBfYnJp ZGdlX2hwZF9ub3RpZnkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiArCQkJCSAgICAgc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCSAgICAgZW51bSBkcm1fY29ubmVj dG9yX3N0YXR1cyBzdGF0dXMpCj4gK3sKPiArCXN0cnVjdCBjZG5fZHBfYnJpZGdlICpkcF9icmlk Z2UgPSBicmlkZ2VfdG9fZHBfYnJpZGdlKGJyaWRnZSk7Cj4gKwlzdHJ1Y3QgY2RuX2RwX2Rldmlj ZSAqZHAgPSBicmlkZ2VfdG9fZHAoYnJpZGdlKTsKPiArCj4gKwlkcC0+YnJpZGdlX2xpc3RbZHBf YnJpZGdlLT5pZF0tPmNvbm5lY3RlZCA9IHN0YXR1cyA9PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5l Y3RlZDsKCltTZXZlcml0eTogTWVkaXVtXQpDb3VsZCB0aGlzIGFzc2lnbm1lbnQgY2F1c2UgYSBk YXRhIHJhY2U/CgpUaGlzIHdyaXRlcyB0byBgZHAtPmJyaWRnZV9saXN0W2RwX2JyaWRnZS0+aWRd LT5jb25uZWN0ZWRgIHdpdGhvdXQgaG9sZGluZwpgZHAtPmxvY2tgLiBDb25jdXJyZW50bHksIHRo aXMgZmxhZyBpcyByZWFkIGJ5IGBjZG5fZHBfcGRfZXZlbnRfd29ya2AgaW5zaWRlCmEgbG9vcCAo YWZ0ZXIgcmVsZWFzaW5nIGBkcC0+bG9ja2ApLCBhbmQgYnkgYGNkbl9kcF9icmlkZ2VfbW9kZV92 YWxpZGAKd2l0aG91dCBob2xkaW5nIGFueSBsb2Nrcy4gVGhpcyB1bnN5bmNocm9uaXplZCBhY2Nl c3MgbWlnaHQgbGVhZCB0byBzdGFsZSByZWFkcwphY3Jvc3MgY29yZXMuCgo+ICsJc2NoZWR1bGVf d29yaygmZHAtPmV2ZW50X3dvcmspOwo+ICt9Cj4gKwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9icmlkZ2VfZnVuY3MgY2RuX2RwX2JyaWRnZV9mdW5jcyA9IHsKPiAgCS5hdG9taWNfZHVwbGlj YXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX2R1cGxpY2F0ZV9zdGF0ZSwKPiAg CS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9kZXN0cm95 X3N0YXRlLAo+IEBAIC04NDEsNiArOTUxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJp ZGdlX2Z1bmNzIGNkbl9kcF9icmlkZ2VfZnVuY3MgPSB7Cj4gIAkuYXRvbWljX2Rpc2FibGUgPSBj ZG5fZHBfYnJpZGdlX2F0b21pY19kaXNhYmxlLAo+ICAJLm1vZGVfdmFsaWQgPSBjZG5fZHBfYnJp ZGdlX21vZGVfdmFsaWQsCj4gIAkubW9kZV9zZXQgPSBjZG5fZHBfYnJpZGdlX21vZGVfc2V0LAo+ ICsJLmhwZF9ub3RpZnkgPSBjZG5fZHBfYnJpZGdlX2hwZF9ub3RpZnksCgpbU2V2ZXJpdHk6IEhp Z2hdClNob3VsZCB0aGlzIGJyaWRnZSBpbXBsZW1lbnQgYW4gYGF0b21pY19jaGVja2AgY2FsbGJh Y2sgdG8gZW5mb3JjZSBtdXR1YWwKZXhjbHVzaW9uPwoKVGhlIFJLMzM5OSBDRE4tRFAgY29udHJv bGxlciBjYW4gb25seSBkcml2ZSBvbmUgcG9ydCBhdCBhIHRpbWUuIEJ5IHJlZ2lzdGVyaW5nCm11 bHRpcGxlIGVuY29kZXJzIHdpdGhvdXQgYW4gYGF0b21pY19jaGVja2AgdG8gcHJldmVudCBib3Ro IG91dHB1dHMgZnJvbSBiZWluZwplbmFibGVkIHNpbXVsdGFuZW91c2x5LCB1c2Vyc3BhY2UgY291 bGQgY29tbWl0IGFuIGF0b21pYyBzdGF0ZSB0aGF0IGVuYWJsZXMgYm90aC4KClRoaXMgd291bGQg Y2F1c2UgY29uY3VycmVudCBjYWxscyB0byBgY2RuX2RwX2JyaWRnZV9hdG9taWNfZW5hYmxlYCwg b3ZlcndyaXRpbmcKc2hhcmVkIHJlZ2lzdGVycyBhbmQgbGVhZGluZyB0byBoYXJkd2FyZSBjb3Jy dXB0aW9uIG9yIGtlcm5lbCB0aW1lb3V0cy4KCj4gIAo+ICAJLmRwX2F1ZGlvX3ByZXBhcmUgPSBj ZG5fZHBfYXVkaW9fcHJlcGFyZSwKPiAgCS5kcF9hdWRpb19tdXRlX3N0cmVhbSA9IGNkbl9kcF9h dWRpb19tdXRlX3N0cmVhbSwKWyAuLi4gXQo+IEBAIC0xMDMzLDYgKzExNDUsMTAxIEBAIHN0YXRp YyBpbnQgY2RuX2RwX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0 ZXIsIHZvaWQgKmRhdGEpCj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gKwlpZiAobGFzdF9i cmlkZ2UpIHsKPiArCQlmd25vZGVfaGFuZGxlX3B1dChjb25uZWN0b3ItPmZ3bm9kZSk7Cj4gKwkJ Y29ubmVjdG9yLT5md25vZGUgPSBmd25vZGVfaGFuZGxlX2dldChvZl9md25vZGVfaGFuZGxlKGxh c3RfYnJpZGdlLT5vZl9ub2RlKSk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgY2RuX2RwX3BhcnNlX25leHRfYnJpZGdlX2R0KHN0cnVjdCBjZG5fZHBfZGV2 aWNlICpkcCkKPiArewo+ICsJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRwLT5kZXYtPm9mX25v ZGU7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnQgX19mcmVlKGRldmljZV9ub2RlKSA9IG9m X2dyYXBoX2dldF9wb3J0X2J5X2lkKG5wLCAxKTsKPiArCXN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2U7Cj4gKwlpbnQgY291bnQgPSAwOwo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgaTsKPiArCj4g KwkvKiBJZiBkZXZpY2UgdXNlIGV4dGNvbiwgZG8gbm90IHVzZSBocGQgYnJpZGdlICovCj4gKwlm b3IgKGkgPSAwOyBpIDwgZHAtPnBvcnRzOyBpKyspIHsKPiArCQlpZiAoZHAtPnBvcnRbaV0tPmV4 dGNvbikgewo+ICsJCQlkcC0+YnJpZGdlX2NvdW50ID0gMTsKPiArCQkJcmV0dXJuIDA7Cj4gKwkJ fQo+ICsJfQo+ICsKPiArCS8qIE9uZSBlbmRwb2ludCBtYXkgY29ycmVzcG9uZCB0byBvbmUgbmV4 dCBicmlkZ2UuICovCj4gKwlmb3JfZWFjaF9vZl9ncmFwaF9wb3J0X2VuZHBvaW50KHBvcnQsIGRw X2VwKSB7Cj4gKwkJc3RydWN0IGRldmljZV9ub2RlICpuZXh0X2JyaWRnZV9ub2RlIF9fZnJlZShk ZXZpY2Vfbm9kZSkgPQo+ICsJCQlvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGRwX2Vw KTsKPiArCj4gKwkJYnJpZGdlID0gb2ZfZHJtX2ZpbmRfYnJpZGdlKG5leHRfYnJpZGdlX25vZGUp Owo+ICsJCWlmICghYnJpZGdlKSB7Cj4gKwkJCXJldCA9IC1FUFJPQkVfREVGRVI7Cj4gKwkJCWdv dG8gb3V0Owo+ICsJCX0KPiArCj4gKwkJZHAtPm5leHRfYnJpZGdlX3ZhbGlkID0gdHJ1ZTsKPiAr CQlkcC0+bmV4dF9icmlkZ2VfbGlzdFtjb3VudF0gPSBkcm1fYnJpZGdlX2dldChicmlkZ2UpOwo+ ICsJCWNvdW50Kys7CgpbU2V2ZXJpdHk6IE1lZGl1bV0KV2hhdCBwcmV2ZW50cyBhbiBvdXQtb2Yt Ym91bmRzIHdyaXRlIGhlcmUgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiAyIGVuZHBvaW50cz8KClRo ZSBgZHAtPm5leHRfYnJpZGdlX2xpc3RgIGFycmF5IGlzIHN0YXRpY2FsbHkgc2l6ZWQgdG8gYE1B WF9QSFlgICgyKS4gVGhlIGxvb3AKYmxpbmRseSBpbmNyZW1lbnRzIGBjb3VudGAgYW5kIHdyaXRl cyB0byB0aGUgYXJyYXkgd2l0aG91dCBib3VuZHMgY2hlY2tpbmcuIEEKbWlzY29uZmlndXJlZCBk ZXZpY2UgdHJlZSBjb3VsZCBlYXNpbHkgb3ZlcmZsb3cgdGhpcyBhcnJheS4KCj4gKwl9Cj4gKwo+ ICtvdXQ6Cj4gKwlkcC0+YnJpZGdlX2NvdW50ID0gY291bnQgPyBjb3VudCA6IDE7Cj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNkbl9kcF9iaW5kKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQo+ICt7ClsgLi4uIF0KPiAr Cj4gKwlJTklUX1dPUksoJmRwLT5ldmVudF93b3JrLCBjZG5fZHBfcGRfZXZlbnRfd29yayk7Cj4g Kwo+ICAJZm9yIChpID0gMDsgaSA8IGRwLT5wb3J0czsgaSsrKSB7Cj4gIAkJcG9ydCA9IGRwLT5w b3J0W2ldOwo+ICAKPiBAQCAtMTA0Niw3ICsxMjUzLDcgQEAgc3RhdGljIGludCBjZG5fZHBfYmlu ZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkK PiAgCQlpZiAocmV0KSB7Cj4gIAkJCURSTV9ERVZfRVJST1IoZGV2LAo+ICAJCQkJICAgICAgInJl Z2lzdGVyIEVYVENPTl9ESVNQX0RQIG5vdGlmaWVyIGVyclxuIik7Cj4gLQkJCXJldHVybiByZXQ7 Cj4gKwkJCWdvdG8gb3V0Owo+ICAJCX0KPiAgCX0KCltTZXZlcml0eTogQ3JpdGljYWxdClRoaXMg aXMgYSBwcmUtZXhpc3RpbmcgaXNzdWUsIGJ1dCB3b24ndCB0aGVzZSBgZGV2bV9gIGFsbG9jYXRp b25zIGNhdXNlIG1lbW9yeQpsZWFrcyBhbmQgVXNlLUFmdGVyLUZyZWUgZHVyaW5nIGNvbXBvbmVu dCB1bmJpbmQ/CgpUaGUgZHJpdmVyIHVzZXMgYGRldm1fZHJtX2JyaWRnZV9hbGxvY2AsIGBkZXZt X2RybV9icmlkZ2VfYWRkYCwgYW5kCmBkZXZtX2V4dGNvbl9yZWdpc3Rlcl9ub3RpZmllcmAgaW5z aWRlIGBjZG5fZHBfYmluZGAuIFRoZXNlIHRpZSByZXNvdXJjZXMgdG8KdGhlIHBsYXRmb3JtIGRl dmljZSAoYGRwLT5kZXZgKSwgbm90IHRoZSBjb21wb25lbnQgbGlmZWN5Y2xlLgoKVXBvbiB1bmJp bmQsIHRoZXNlIGFsbG9jYXRpb25zIGFyZW4ndCBmcmVlZCwgbGVha2luZyBtZW1vcnkgb24gZXZl cnkgcmViaW5kLgpDcml0aWNhbGx5LCB0aGUgZXh0Y29uIG5vdGlmaWVyIGlzIG5ldmVyIHVucmVn aXN0ZXJlZC4gSWYgYW4gZXZlbnQgZmlyZXMgYWZ0ZXIKdW5iaW5kLCBgY2RuX2RwX3BkX2V2ZW50 X3dvcmtgIGlzIGV4ZWN1dGVkLCBkaXNjb3ZlcmluZyBgZHAtPmZ3X2xvYWRlZCA9PSB0cnVlYAph bmQgYXR0ZW1wdGluZyB0byBkZXJlZmVyZW5jZSBgZHAtPmZ3LT5kYXRhYCB3aGljaCB3YXMgcmVs ZWFzZWQgaW4gYHVuYmluZGAsCmxlYWRpbmcgdG8gYSBrZXJuZWwgcGFuaWMuCgo+ICAKPiBAQCAt MTA1NSwxNSArMTI2MiwyOSBAQCBzdGF0aWMgaW50IGNkbl9kcF9iaW5kKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQo+ICAJc2NoZWR1bGVfd29y aygmZHAtPmV2ZW50X3dvcmspOwo+ICAKPiAgCXJldHVybiAwOwo+ICsKPiArb3V0Ogo+ICsJZm9y IChpID0gMDsgaSA8IE1BWF9QSFk7IGkrKykKPiArCQlkcm1fYnJpZGdlX3B1dChkcC0+bmV4dF9i cmlkZ2VfbGlzdFtpXSk7CgpbU2V2ZXJpdHk6IEhpZ2hdCkRvZXMgbGVhdmluZyB0aGVzZSBwb2lu dGVycyBpbiB0aGUgYXJyYXkgY2F1c2UgYSBVc2UtQWZ0ZXItRnJlZSBvbiByZWJpbmQ/CgpUaGUg YXJyYXkgZWxlbWVudHMgYXJlbid0IHNldCB0byBOVUxMIGFmdGVyIGNhbGxpbmcgYGRybV9icmlk Z2VfcHV0KClgLiBTaW5jZQpgZHBgIHBlcnNpc3RzIGFjcm9zcyBjb21wb25lbnQgYmluZC91bmJp bmQgY3ljbGVzLCBhIHN1YnNlcXVlbnQgYGJpbmRgIGZhaWx1cmUKd291bGQgaXRlcmF0ZSBvdmVy IHRoaXMgYXJyYXkgYW5kIHB1dCB0aGUgZGFuZ2xpbmcgcG9pbnRlcnMgYSBzZWNvbmQgdGltZSwK Y29ycnVwdGluZyB0aGUgYnJpZGdlIHJlZmNvdW50cy4KCj4gKwo+ICsJcmV0dXJuIHJldDsKPiAg fQo+ICAKPiAgc3RhdGljIHZvaWQgY2RuX2RwX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPiAgewo+ICAJc3RydWN0IGNkbl9kcF9k ZXZpY2UgKmRwID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gLQlzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIgPSAmZHAtPmVuY29kZXIuZW5jb2RlcjsKPiArCXN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcjsKPiArCWludCBpOwo+ICAKPiAgCWNhbmNlbF93b3JrX3N5bmMoJmRwLT5ldmVudF93 b3JrKTsKPiAtCWVuY29kZXItPmZ1bmNzLT5kZXN0cm95KGVuY29kZXIpOwo+ICsJZm9yIChpID0g MDsgaSA8IGRwLT5icmlkZ2VfY291bnQ7IGkrKykgewo+ICsJCWVuY29kZXIgPSAmZHAtPmJyaWRn ZV9saXN0W2ldLT5lbmNvZGVyLmVuY29kZXI7Cj4gKwkJZW5jb2Rlci0+ZnVuY3MtPmRlc3Ryb3ko ZW5jb2Rlcik7Cj4gKwkJZHJtX2JyaWRnZV9wdXQoZHAtPm5leHRfYnJpZGdlX2xpc3RbaV0pOwo+ ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBNQVhfUEhZOyBpKyspCj4gKwkJZHJtX2VkaWRf ZnJlZShkcC0+ZWRpZF9jYWNoZVtpXSk7CgpbU2V2ZXJpdHk6IEhpZ2hdClNhbWUgYXMgYWJvdmUs IHNob3VsZCBgZHAtPmVkaWRfY2FjaGVbaV1gIGFuZCBgZHAtPm5leHRfYnJpZGdlX2xpc3RbaV1g IGJlCmNsZWFyZWQgdG8gTlVMTCBhZnRlciBmcmVlaW5nPwoKVGhlc2UgZGFuZ2xpbmcgcG9pbnRl cnMgd2lsbCBjYXVzZSBkb3VibGUtZnJlZXMgZHVyaW5nIGEgc3Vic2VxdWVudCBiaW5kIGN5Y2xl Cm9yIEVESUQgcmVhZCBpZiB0aGUgY29tcG9uZW50IGlzIHJlYm91bmQuCgo+ICAKPiAgCXBtX3J1 bnRpbWVfZGlzYWJsZShkZXYpOwo+ICAJaWYgKGRwLT5md19sb2FkZWQpCj4gQEAgLTExMTQsMTAg KzEzMzUsMTAgQEAgc3RhdGljIGludCBjZG5fZHBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPiAgCWludCByZXQ7Cj4gIAlpbnQgaTsKPiAgCj4gLQlkcCA9IGRldm1fZHJtX2Jy aWRnZV9hbGxvYyhkZXYsIHN0cnVjdCBjZG5fZHBfZGV2aWNlLCBicmlkZ2UsCj4gLQkJCQkgICAm Y2RuX2RwX2JyaWRnZV9mdW5jcyk7Cj4gLQlpZiAoSVNfRVJSKGRwKSkKPiAtCQlyZXR1cm4gUFRS X0VSUihkcCk7Cj4gKwlkcCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZHApLCBHRlBfS0VS TkVMKTsKPiArCWlmICghZHApCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICAJZHAtPmRldiA9 IGRldjsKPiAgCj4gIAltYXRjaCA9IG9mX21hdGNoX25vZGUoY2RuX2RwX2R0X2lkcywgcGRldi0+ ZGV2Lm9mX25vZGUpOwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGlzbid0IGEgYnVnIGludHJvZHVj ZWQgYnkgdGhpcyBwYXRjaCwgYnV0IGRvZXMgdGhlIHByb2JlIGZhaWwgdG8KcmVjb2duaXplIHZh bGlkIGV4dGNvbiBkZXZpY2VzPwoKSnVzdCBiZWxvdyB0aGlzIGluIGBjZG5fZHBfcHJvYmVgLCB0 aGVyZSBpcyBhIGNoZWNrOgoKICAgIGlmIChJU19FUlIocGh5KSB8fCBQVFJfRVJSKGV4dGNvbikg IT0gLUVOT0RFVikKICAgICAgICBjb250aW51ZTsKCklmIGBleHRjb25fZ2V0X2VkZXZfYnlfcGhh bmRsZSgpYCBzdWNjZXNzZnVsbHkgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIsIGl0cwphZGRyZXNz IGlzIGV2YWx1YXRlZCBhZ2FpbnN0IGAtRU5PREVWYCwgd2hpY2ggaXMgYWx3YXlzIHRydWUuIFRo aXMgc2tpcHMgdGhlCnZhbGlkIGV4dGNvbiBwb3J0IGFuZCBsZWF2ZXMgYGRwLT5wb3J0c2AgYXMg MCwgZmFpbGluZyB0aGUgcHJvYmUgd2l0aCBgLUVJTlZBTGAuCgotLSAKU2FzaGlrbyBBSSByZXZp ZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYwNzI3MDY0NDA4LjEwMS0x LWtlcm5lbEBhaXJreWkuY29tP3BhcnQ9NQoKLS0gCmxpbnV4LXBoeSBtYWlsaW5nIGxpc3QKbGlu dXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg==