From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lina Iyer Subject: Re: [PATCH v2 2/7] PM / Domains: Support IRQ safe PM domains Date: Fri, 4 Sep 2015 10:05:40 -0600 Message-ID: <20150904160540.GE876@linaro.org> References: <1441310314-8857-1-git-send-email-lina.iyer@linaro.org> <1441310314-8857-3-git-send-email-lina.iyer@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Ulf Hansson Cc: Krzysztof =?utf-8?Q?Koz=C5=82owski?= , Kevin Hilman , "linux-pm@vger.kernel.org" , Stephen Boyd , "Rafael J. Wysocki" , msivasub@codeaurora.org, Geert Uytterhoeven , Andy Gross , "linux-arm-kernel@lists.infradead.org" List-Id: linux-pm@vger.kernel.org T24gRnJpLCBTZXAgMDQgMjAxNSBhdCAwNDowMiAtMDYwMCwgVWxmIEhhbnNzb24gd3JvdGU6Cj5P biAzIFNlcHRlbWJlciAyMDE1IGF0IDIxOjU4LCBMaW5hIEl5ZXIgPGxpbmEuaXllckBsaW5hcm8u b3JnPiB3cm90ZToKPj4gR2VuZXJpYyBQb3dlciBEb21haW5zIGN1cnJlbnRseSBzdXBwb3J0IHR1 cm5pbmcgb24vb2ZmIG9ubHkgaW4gcHJvY2Vzcwo+PiBjb250ZXh0LiBUaGlzIHByZXZlbnRzIHRo ZSB1c2FnZSBvZiBQTSBkb21haW5zIGZvciBkb21haW5zIHRoYXQgY291bGQgYmUKPj4gcG93ZXJl ZCBvbi9vZmYgaW4gYSBjb250ZXh0IHdoZXJlIElSUXMgYXJlIGRpc2FibGVkLiBNYW55IHN1Y2gg ZG9tYWlucwo+PiBleGlzdCB0b2RheSBhbmQgZG8gbm90IGdldCBwb3dlcmVkIG9mZiwgd2hlbiB0 aGUgSVJRIHNhZmUgZGV2aWNlcyBpbgo+PiB0aGF0IGRvbWFpbiBhcmUgcG93ZXJlZCBvZmYsIGJl Y2F1c2Ugb2YgdGhpcyBsaW1pdGF0aW9uLgo+Pgo+PiBIb3dldmVyLCBub3QgYWxsIGRvbWFpbnMg Y2FuIG9wZXJhdGUgaW4gSVJRIHNhZmUgY29udGV4dHMuIEdlbnBkCj4+IHRoZXJlZm9yZSwgaGFz IHRvIHN1cHBvcnQgYm90aCBjYXNlcyB3aGVyZSB0aGUgZG9tYWluIG1heSBvciBtYXkgbm90Cj4+ IG9wZXJhdGUgaW4gSVJRIHNhZmUgY29udGV4dHMuIENvbmZpZ3VyaW5nIGdlbnBkIHRvIHVzZSBh biBhcHByb3ByaWF0ZQo+PiBsb2NrIGZvciB0aGF0IGRvbWFpbiwgd291bGQgYWxsb3cgZG9tYWlu cyB0aGF0IGhhdmUgSVJRIHNhZmUgZGV2aWNlcyB0bwo+PiBydW50aW1lIHN1c3BlbmQgYW5kIHJl c3VtZSwgaW4gYXRvbWljIGNvbnRleHQuCj4+Cj4+IFRvIGFjaGlldmUgZG9tYWluIHNwZWNpZmlj IGxvY2tpbmcsIHNldCB0aGUgZG9tYWluJ3MgLT5mbGFnIHRvCj4+IEdFTlBEX0ZMQUdfSVJRX1NB RkUgd2hpbGUgZGVmaW5pbmcgdGhlIGRvbWFpbi4gVGhpcyBpbmRpY2F0ZXMgdGhhdCBnZW5wZAo+ PiBzaG91bGQgdXNlIGEgc3BpbmxvY2sgaW5zdGVhZCBvZiBhIG11dGV4IGZvciBsb2NraW5nIHRo ZSBkb21haW4uIExvY2tpbmcKPj4gaXMgYWJzdHJhY3RlZCB0aHJvdWdoIGdlbnBkX2xvY2soKSBh bmQgZ2VucGRfdW5sb2NrKCkgZnVuY3Rpb25zIHRoYXQgdXNlCj4+IHRoZSBmbGFnIHRvIGRldGVy bWluZSB0aGUgYXBwcm9wcmlhdGUgbG9jayB0byBiZSB1c2VkIGZvciB0aGF0IGRvbWFpbi4KPj4g RG9tYWlucyB0aGF0IGhhdmUgbG93ZXIgbGF0ZW5jeSB0byBzdXNwZW5kIGFuZCByZXN1bWUgYW5k IGNhbiBvcGVyYXRlCj4+IHdpdGggSVJRcyBkaXNhYmxlZCBtYXkgbm93IGJlIGFibGUgdG8gc2F2 ZSBwb3dlciwgd2hlbiB0aGUgY29tcG9uZW50Cj4+IGRldmljZXMgYW5kIHN1Yi1kb21haW5zIGFy ZSBpZGxlIGF0IHJ1bnRpbWUuCj4+Cj4+IFRoZSByZXN0cmljdGlvbiB0aGlzIGltcG9zZXMgb24g dGhlIGRvbWFpbiBoaWVyYXJjaHkgaXMgdGhhdCBzdWItZG9tYWlucwo+PiBhbmQgYWxsIGRldmlj ZXMgaW4gdGhlIElSUSBzYWZlIGRvbWFpbidzIGhpZXJhcmNoeSBhbHNvIGhhdmUgdG8gYmUgSVJR Cj4+IHNhZmUsIHNvIHRoYXQgd2UgZG9udCB0cnkgdG8gbG9jayBhIG11dGV4LCB3aGlsZSBob2xk aW5nIGEgc3BpbmxvY2suCj4KPk1vcmVvdmVyIHdlIGNhbid0IGhhdmUgSVJRIHNhZmUgZG9tYWlu cyBtaXhlZCB3aXRoIG5vbi1JUlEgc2FmZQo+c3ViZG9tYWlucyBkb21haW5zLCByaWdodD8KPgo+ PiBOb24tSVJRIHNhZmUgZG9tYWlucyBtYXkgY29udGludWUgdG8gaGF2ZSBkZXZpY2VzIGFuZCBz dWItZG9tYWlucyB0aGF0Cj4+IG1heSBvciBtYXkgbm90IGJlIElSUSBzYWZlLgo+Pgo+PiBDYzog VWxmIEhhbnNzb24gPHVsZi5oYW5zc29uQGxpbmFyby5vcmc+Cj4+IENjOiBLZXZpbiBIaWxtYW4g PGtoaWxtYW5AbGluYXJvLm9yZz4KPj4gQ2M6IFJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNv Y2tpLm5ldD4KPj4gQ2M6IEdlZXJ0IFV5dHRlcmhvZXZlbiA8Z2VlcnRAbGludXgtbTY4ay5vcmc+ Cj4+IENjOiBLcnp5c3p0b2YgS296xYJvd3NraSA8ay5rb3psb3dza2lAc2Ftc3VuZy5jb20+Cj4+ IFNpZ25lZC1vZmYtYnk6IExpbmEgSXllciA8bGluYS5peWVyQGxpbmFyby5vcmc+Cj4+IC0tLQo+ PiAgRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dCB8ICAxMSArKy0KPj4gIGRyaXZlcnMv YmFzZS9wb3dlci9kb21haW4uYyAgICAgfCAyMTIgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLQo+PiAgaW5jbHVkZS9saW51eC9wbV9kb21haW4uaCAgICAgICB8ICAxMSAr Ky0KPj4gIDMgZmlsZXMgY2hhbmdlZCwgMTg5IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9ucygt KQo+Pgo+PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dCBiL0Rv Y3VtZW50YXRpb24vcG93ZXIvZGV2aWNlcy50eHQKPj4gaW5kZXggOGJhNjYyNS4uYmRlNjE0MSAx MDA2NDQKPj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dAo+PiArKysgYi9E b2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0Cj4+IEBAIC02MDcsNyArNjA3LDE2IEBAIGlu ZGl2aWR1YWxseS4gIEluc3RlYWQsIGEgc2V0IG9mIGRldmljZXMgc2hhcmluZyBhIHBvd2VyIHJl c291cmNlIGNhbiBiZSBwdXQKPj4gIGludG8gYSBsb3ctcG93ZXIgc3RhdGUgdG9nZXRoZXIgYXQg dGhlIHNhbWUgdGltZSBieSB0dXJuaW5nIG9mZiB0aGUgc2hhcmVkCj4+ICBwb3dlciByZXNvdXJj ZS4gIE9mIGNvdXJzZSwgdGhleSBhbHNvIG5lZWQgdG8gYmUgcHV0IGludG8gdGhlIGZ1bGwtcG93 ZXIgc3RhdGUKPj4gIHRvZ2V0aGVyLCBieSB0dXJuaW5nIHRoZSBzaGFyZWQgcG93ZXIgcmVzb3Vy Y2Ugb24uICBBIHNldCBvZiBkZXZpY2VzIHdpdGggdGhpcwo+PiAtcHJvcGVydHkgaXMgb2Z0ZW4g cmVmZXJyZWQgdG8gYXMgYSBwb3dlciBkb21haW4uCj4+ICtwcm9wZXJ0eSBpcyBvZnRlbiByZWZl cnJlZCB0byBhcyBhIHBvd2VyIGRvbWFpbi4gQSBwb3dlciBkb21haW4gbWF5IGFsc28gYmUKPj4g K25lc3RlZCBpbnNpZGUgYW5vdGhlciBwb3dlciBkb21haW4uCj4KPlRoaXMgc2VlbXMgbGlrZSBh IHNlcGFyYXRlIGNoYW5nZS4KPgo+PiArCj4+ICtEZXZpY2VzLCBieSBkZWZhdWx0LCBvcGVyYXRl IGluIHByb2Nlc3MgY29udGV4dCBhbmQgaWYgYSBkZXZpY2UgY2FuIG9wZXJhdGUgaW4KPj4gK0lS USBzYWZlIGNvbnRleHQsIGhhcyB0byBiZSBleHBsaWNpdGx5IHNldCBhcyBJUlEgc2FmZS4gUG93 ZXIgZG9tYWlucyBieQo+PiArZGVmYXVsdCwgb3BlcmF0ZSBpbiBwcm9jZXNzIGNvbnRleHQgYnV0 IGNvdWxkIGhhdmUgZGV2aWNlcyB0aGF0IGFyZSBJUlEgc2FmZS4KPj4gK1N1Y2ggcG93ZXIgZG9t YWlucyBjYW5ub3QgYmUgcG93ZXJlZCBvbi9vZmYgZHVyaW5nIHJ1bnRpbWUgUE0uIE9uIHRoZSBv dGhlcgo+PiAraGFuZCwgYW4gSVJRIHNhZmUgUE0gZG9tYWluIHRoYXQgY2FuIGJlIHBvd2VyZWQg b24vb2ZmIGFuZCBzdXNwZW5kZWQgb3IgcmVzdW1lZAo+PiAraW4gYW4gYXRvbWljIGNvbnRleHQs IG1heSBjb250YWluIElSUSBzYWZlIGRldmljZXMuIFN1Y2ggZG9tYWlucyBtYXkgb25seQo+PiAr Y29udGFpbiBJUlEgc2FmZSBkZXZpY2VzIG9yIElSUSBzYWZlIHN1Yi1kb21haW5zLgo+Cj5UaGlz IGlzIGNvbWJpbmF0aW9uIG9mIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3VyIGFuZCB0 aGUKPmNoYW5nZWQgYmVoYXZpb3VyIGFmdGVyIEBzdWJqZWN0IHBhdGNoLiBDb3VsZCB5b3UgcGxl YXNlIHNwbGl0IHRoaXMKPmludG8gc2VwYXJhdGUgcGF0Y2hlcz8KPgpTdXJlLgoKPj4KPj4gIFN1 cHBvcnQgZm9yIHBvd2VyIGRvbWFpbnMgaXMgcHJvdmlkZWQgdGhyb3VnaCB0aGUgcG1fZG9tYWlu IGZpZWxkIG9mIHN0cnVjdAo+PiAgZGV2aWNlLiAgVGhpcyBmaWVsZCBpcyBhIHBvaW50ZXIgdG8g YW4gb2JqZWN0IG9mIHR5cGUgc3RydWN0IGRldl9wbV9kb21haW4sCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2Jhc2UvcG93ZXIvZG9tYWluLmMgYi9kcml2ZXJzL2Jhc2UvcG93ZXIvZG9tYWluLmMK Pj4gaW5kZXggZWY4ZDE5Zi4uOTg0OTMzOCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9iYXNlL3Bv d2VyL2RvbWFpbi5jCj4+ICsrKyBiL2RyaXZlcnMvYmFzZS9wb3dlci9kb21haW4uYwo+PiBAQCAt NTMsNiArNTMsODAgQEAKPj4gIHN0YXRpYyBMSVNUX0hFQUQoZ3BkX2xpc3QpOwo+PiAgc3RhdGlj IERFRklORV9NVVRFWChncGRfbGlzdF9sb2NrKTsKPj4KPj4gK3N0YXRpYyBpbmxpbmUgaW50IGdl bnBkX2xvY2tfbm9zbGVlcChzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBkLAo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN1YmNsYXNz KQo+PiArICAgICAgIF9fYWNxdWlyZXMoJmdlbnBkLT5zbG9jaykKPj4gK3sKPj4gKyAgICAgICB1 bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArCj4+ICsgICAgICAgaWYgKHN1YmNsYXNzID4gMCkKPj4g KyAgICAgICAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlX25lc3RlZCgmZ2VucGQtPnNsb2NrLCBm bGFncywgc3ViY2xhc3MpOwo+PiArICAgICAgIGVsc2UKPj4gKyAgICAgICAgICAgICAgIHNwaW5f bG9ja19pcnFzYXZlKCZnZW5wZC0+c2xvY2ssIGZsYWdzKTsKPj4gKwo+PiArICAgICAgIGdlbnBk LT5sb2NrX2ZsYWdzID0gZmxhZ3M7Cj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5wZF91bmxvY2tfbm9zbGVlcChzdHJ1Y3QgZ2VuZXJpY19w bV9kb21haW4gKmdlbnBkKQo+PiArICAgICAgIF9fcmVsZWFzZXMoJmdlbnBkLT5zbG9jaykKPj4g K3sKPj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZnZW5wZC0+c2xvY2ssIGdlbnBk LT5sb2NrX2ZsYWdzKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSBpbnQgZ2VucGRfbG9j a19pcnEoc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpnZW5wZCwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdWJjbGFzcykKPj4gKyAgICAg ICBfX2FjcXVpcmVzKCZnZW5wZC0+bWxvY2spCj4+ICt7Cj4+ICsgICAgICAgaWYgKHN1YmNsYXNz ID4gMCkKPj4gKyAgICAgICAgICAgICAgIG11dGV4X2xvY2tfbmVzdGVkKCZnZW5wZC0+bWxvY2ss IHN1YmNsYXNzKTsKPj4gKyAgICAgICBlbHNlCj4+ICsgICAgICAgICAgICAgICBtdXRleF9sb2Nr KCZnZW5wZC0+bWxvY2spOwo+PiArICAgICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgaW5saW5lIGludCBnZW5wZF9sb2NrX2ludGVycnVwdGlibGVfaXJxKHN0cnVjdCBnZW5lcmlj X3BtX2RvbWFpbiAqZ2VucGQpCj4+ICsgICAgICAgX19hY3F1aXJlcygmZ2VucGQtPm1sb2NrKQo+ PiArewo+PiArICAgICAgIHJldHVybiBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmdlbnBkLT5t bG9jayk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5wZF91bmxvY2tfaXJx KHN0cnVjdCBnZW5lcmljX3BtX2RvbWFpbiAqZ2VucGQpCj4+ICsgICAgICAgX19yZWxlYXNlcygm Z2VucGQtPm1sb2NrKQo+PiArewo+PiArICAgICAgIG11dGV4X3VubG9jaygmZ2VucGQtPm1sb2Nr KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSBpbnQgZ2VucGRfbG9jayhzdHJ1Y3QgZ2Vu ZXJpY19wbV9kb21haW4gKmdlbnBkKQo+PiArewo+PiArICAgICAgIHJldHVybiBnZW5wZC0+aXJx X3NhZmUgPyBnZW5wZF9sb2NrX25vc2xlZXAoZ2VucGQsIDApCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIDogZ2VucGRfbG9ja19pcnEoZ2VucGQsIDApOwo+PiArfQo+PiArCj4+ICtzdGF0aWMg aW5saW5lIGludCBnZW5wZF9sb2NrX25lc3RlZChzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdl bnBkKQo+PiArewo+PiArICAgICAgIHJldHVybiBnZW5wZC0+aXJxX3NhZmUgPyBnZW5wZF9sb2Nr X25vc2xlZXAoZ2VucGQsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKQo+PiArICAgICAgICAgICAgICAg ICAgICAgICA6IGdlbnBkX2xvY2tfaXJxKGdlbnBkLCBTSU5HTEVfREVQVEhfTkVTVElORyk7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgaW50IGdlbnBkX2xvY2tfaW50ZXJydXB0aWJsZShz dHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBkKQo+PiArewo+PiArICAgICAgIHJldHVybiBn ZW5wZC0+aXJxX3NhZmUgPyBnZW5wZF9sb2NrX25vc2xlZXAoZ2VucGQsIDApCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIDogZ2VucGRfbG9ja19pbnRlcnJ1cHRpYmxlX2lycShnZW5wZCk7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5wZF91bmxvY2soc3RydWN0IGdlbmVy aWNfcG1fZG9tYWluICpnZW5wZCkKPj4gK3sKPj4gKyAgICAgICByZXR1cm4gZ2VucGQtPmlycV9z YWZlID8gZ2VucGRfdW5sb2NrX25vc2xlZXAoZ2VucGQpCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIDogZ2VucGRfdW5sb2NrX2lycShnZW5wZCk7Cj4+ICt9Cj4KPkkgdGhpbmsgYWxsIHRoZSBh Ym92ZSBmdW5jdGlvbnMgdGhhdCBjaGVjayB0aGUgZ2VucGQtPmlycV9zYWZlIGZsYWcKPmNhbiBi ZSBjb252ZXJ0ZWQgaW50byBkZWFsaW5nIG9ubHkgd2l0aCBvbmUgdHlwZSBvZiBsb2NrLCBhbmQg dGhlbgo+YXNzaWduZWQgYXMgZnVuY3Rpb25zIHBvaW50ZXJzIGF0IGluaXRpYWxpemF0aW9uLCBk ZXBlbmRpbmcgb24gdGhlCj5jb25maWd1cmF0aW9uLgo+Cj5UaGlzIHdvdWxkIG1lYW4gd2UgZG9u J3QgbmVlZCB0byBjaGVjayB0aGUgZ2VucGQtPmlycV9zYWZlIGVhY2ggdGltZQo+d2UgYWNxdWly ZSBvciByZWxlYXNlIGEgbG9jay4KPgpJIHRob3VnaHQgYWJvdXQgaXQuIFJlZ21hcCBkb2VzIHRo YXQuIEJ1dCB0aGF0IHdvdWxkIG1lYW4sIHdlIGNhcnJ5CmFyb3VuZCwgdGhyZWUgZnVuY3Rpb24g cG9pbnRlcnMgLSBsb2NrLCBsb2NrX25lc3RlZCwgdW5sb2NrIG9uIGVhY2gKZ2VucGQgb2JqZWN0 LgoKPj4gKwo+PiArc3RhdGljIGlubGluZSBib29sIGlycV9zYWZlX2Rldl9pbl9ub19zbGVlcF9k b21haW4oc3RydWN0IGRldmljZSAqZGV2LAo+PiArICAgICAgICAgICAgICAgc3RydWN0IGdlbmVy aWNfcG1fZG9tYWluICpnZW5wZCkKPj4gK3sKPj4gKyAgICAgICByZXR1cm4gZGV2LT5wb3dlci5p cnFfc2FmZSAmJiAhZ2VucGQtPmlycV9zYWZlOwo+PiArfQo+PiArCj4+ICBzdGF0aWMgc3RydWN0 IGdlbmVyaWNfcG1fZG9tYWluICpwbV9nZW5wZF9sb29rdXBfbmFtZShjb25zdCBjaGFyICpkb21h aW5fbmFtZSkKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBk ID0gTlVMTCwgKmdwZDsKPj4gQEAgLTI3Myw5ICszNDcsOSBAQCBpbnQgcG1fZ2VucGRfcG93ZXJv bihzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBkKQo+PiAgewo+PiAgICAgICAgIGludCBy ZXQ7Cj4+Cj4+IC0gICAgICAgbXV0ZXhfbG9jaygmZ2VucGQtPmxvY2spOwo+PiArICAgICAgIGdl bnBkX2xvY2soZ2VucGQpOwo+PiAgICAgICAgIHJldCA9IF9fcG1fZ2VucGRfcG93ZXJvbihnZW5w ZCk7Cj4+IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZnZW5wZC0+bG9jayk7Cj4+ICsgICAgICAgZ2Vu cGRfdW5sb2NrKGdlbnBkKTsKPj4gICAgICAgICByZXR1cm4gcmV0Owo+PiAgfQo+Pgo+PiBAQCAt MzM1LDkgKzQwOSw5IEBAIHN0YXRpYyBpbnQgZ2VucGRfZGV2X3BtX3Fvc19ub3RpZmllcihzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAo+PiAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2tfaXJx KCZkZXYtPnBvd2VyLmxvY2spOwo+Pgo+PiAgICAgICAgICAgICAgICAgaWYgKCFJU19FUlIoZ2Vu cGQpKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIG11dGV4X2xvY2soJmdlbnBkLT5sb2Nr KTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ2VucGRfbG9jayhnZW5wZCk7Cj4+ICAgICAg ICAgICAgICAgICAgICAgICAgIGdlbnBkLT5tYXhfb2ZmX3RpbWVfY2hhbmdlZCA9IHRydWU7Cj4+ IC0gICAgICAgICAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmZ2VucGQtPmxvY2spOwo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBnZW5wZF91bmxvY2soZ2VucGQpOwo+PiAgICAgICAgICAg ICAgICAgfQo+Pgo+PiAgICAgICAgICAgICAgICAgZGV2ID0gZGV2LT5wYXJlbnQ7Cj4+IEBAIC0z OTQsOCArNDY4LDE3IEBAIHN0YXRpYyBpbnQgcG1fZ2VucGRfcG93ZXJvZmYoc3RydWN0IGdlbmVy aWNfcG1fZG9tYWluICpnZW5wZCkKPj4gICAgICAgICAgICAgICAgIGlmIChzdGF0ID4gUE1fUU9T X0ZMQUdTX05PTkUpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7Cj4+ Cj4+IC0gICAgICAgICAgICAgICBpZiAoIXBtX3J1bnRpbWVfc3VzcGVuZGVkKHBkZC0+ZGV2KSB8 fCBwZGQtPmRldi0+cG93ZXIuaXJxX3NhZmUpCj4KPkkgZG9uJ3QgcmVtZW1iZXIgaGF2aW5nIGFi b3ZlIGxpbmUgaW4gZ2VucGQuIEkgZ3Vlc3MgeW91IG1pc3NlZCB0bwo+aW5jbHVkZSB0aGUgYmVs b3cgcGF0Y2ggd2l0aGluIGluIHRoaXMgcGF0Y2hzZXQ6Cj4iUE0gLyBEb21haW5zOiBSZW1vdmUg ZGV2LT5kcml2ZXIgY2hlY2sgZm9yIHJ1bnRpbWUgUE0iLgo+Ckkgc2VlbWVkIHRvIG1lIHRoYXQg dGhlIGNoYW5nZSBkZXNlcnZlcyBpdHMgb3duIHBhdGNoLgoKPj4gKyAgICAgICAgICAgICAgIC8q Cj4+ICsgICAgICAgICAgICAgICAgKiBXZSBkbyBub3Qgd2FudCB0byBwb3dlciBvZmYgdGhlIGRv bWFpbiBpZiB0aGUgZGV2aWNlIGlzCj4+ICsgICAgICAgICAgICAgICAgKiBub3Qgc3VzcGVuZGVk IG9yIGFuIElSUSBzYWZlIGRldmljZSBpcyBwYXJ0IG9mIHRoaXMKPj4gKyAgICAgICAgICAgICAg ICAqIG5vbi1JUlEgc2FmZSBkb21haW4uCj4+ICsgICAgICAgICAgICAgICAgKi8KPj4gKyAgICAg ICAgICAgICAgIGlmICghcG1fcnVudGltZV9zdXNwZW5kZWQocGRkLT5kZXYpIHx8Cj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlycV9zYWZlX2Rldl9pbl9ub19zbGVlcF9kb21haW4ocGRkLT5k ZXYsIGdlbnBkKSkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgbm90X3N1c3BlbmRlZCsrOwo+ PiArICAgICAgICAgICAgICAgV0FSTl9PTkNFKGlycV9zYWZlX2Rldl9pbl9ub19zbGVlcF9kb21h aW4ocGRkLT5kZXYsIGdlbnBkKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi UE0gZG9tYWluICVzIHdpbGwgbm90IGJlIHBvd2VyZWQgb2ZmXG4iLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdlbnBkLT5uYW1lKTsKPj4gICAgICAgICB9Cj4+Cj4+ICAgICAg ICAgaWYgKG5vdF9zdXNwZW5kZWQgPiBnZW5wZC0+aW5fcHJvZ3Jlc3MpCj4+IEBAIC00NjAsOSAr NTQzLDkgQEAgc3RhdGljIHZvaWQgZ2VucGRfcG93ZXJfb2ZmX3dvcmtfZm4oc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQo+Pgo+PiAgICAgICAgIGdlbnBkID0gY29udGFpbmVyX29mKHdvcmssIHN0 cnVjdCBnZW5lcmljX3BtX2RvbWFpbiwgcG93ZXJfb2ZmX3dvcmspOwo+Pgo+PiAtICAgICAgIG11 dGV4X2xvY2soJmdlbnBkLT5sb2NrKTsKPj4gKyAgICAgICBnZW5wZF9sb2NrKGdlbnBkKTsKPj4g ICAgICAgICBwbV9nZW5wZF9wb3dlcm9mZihnZW5wZCk7Cj4+IC0gICAgICAgbXV0ZXhfdW5sb2Nr KCZnZW5wZC0+bG9jayk7Cj4+ICsgICAgICAgZ2VucGRfdW5sb2NrKGdlbnBkKTsKPj4gIH0KPj4K Pj4gIC8qKgo+PiBAQCAtNTAwLDE3ICs1ODMsMjEgQEAgc3RhdGljIGludCBwbV9nZW5wZF9ydW50 aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+PiAgICAgICAgIH0KPj4KPj4gICAgICAg ICAvKgo+PiAtICAgICAgICAqIElmIHBvd2VyLmlycV9zYWZlIGlzIHNldCwgdGhpcyByb3V0aW5l IHdpbGwgYmUgcnVuIHdpdGggaW50ZXJydXB0cwo+PiAtICAgICAgICAqIG9mZiwgc28gaXQgY2Fu J3QgdXNlIG11dGV4ZXMuCj4+ICsgICAgICAgICogSWYgcG93ZXIuaXJxX3NhZmUgaXMgc2V0LCB0 aGlzIHJvdXRpbmUgbWF5IGJlIHJ1biB3aXRoCj4+ICsgICAgICAgICogSVJRIGRpc2FibGVkLCBz byBzdXNwZW5kIG9ubHkgaWYgdGhlIHBvd2VyIGRvbWFpbiBpcwo+PiArICAgICAgICAqIGlycV9z YWZlLgo+Cj5NYXliZSBlbGFib3JhdGUgb24gdGhhdCB0aGUgbG9ja2luZyBtZWNoYW5pc20gZGlm ZmVyLCB3aGljaCBpcyB3aHkgd2UKPmNhbid0IHByb2NlZWQgaW4gc29tZSBjYXNlcy4uLgo+Cj4+ ICAgICAgICAgICovCj4+IC0gICAgICAgaWYgKGRldi0+cG93ZXIuaXJxX3NhZmUpCj4+ICsgICAg ICAgV0FSTl9PTkNFKGlycV9zYWZlX2Rldl9pbl9ub19zbGVlcF9kb21haW4oZGV2LCBnZW5wZCks Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICJnZW5wZCAlcyB3aWxsIG5vdCBiZSBwb3dlcmVk IG9mZlxuIiwgZ2VucGQtPm5hbWUpOwo+Cj5QZXJoYXBzLCB1bmxlc3MgdGhlIHN0cmluZyBiZWNv bWVzIHRvbyBsb25nLCBzb21lIGluZm9ybWF0aW9uIGFib3V0ICp3aHkqLgo+Ck9rCgo+PiArICAg ICAgIGlmIChpcnFfc2FmZV9kZXZfaW5fbm9fc2xlZXBfZG9tYWluKGRldiwgZ2VucGQpKQo+PiAg ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Cj4+IC0gICAgICAgbXV0ZXhfbG9jaygmZ2VucGQt PmxvY2spOwo+PiArICAgICAgIGdlbnBkX2xvY2soZ2VucGQpOwo+PiArCj4+ICAgICAgICAgZ2Vu cGQtPmluX3Byb2dyZXNzKys7Cj4+ICAgICAgICAgcG1fZ2VucGRfcG93ZXJvZmYoZ2VucGQpOwo+ PiAgICAgICAgIGdlbnBkLT5pbl9wcm9ncmVzcy0tOwo+PiAtICAgICAgIG11dGV4X3VubG9jaygm Z2VucGQtPmxvY2spOwo+PiArICAgICAgIGdlbnBkX3VubG9jayhnZW5wZCk7Cj4+Cj4+ICAgICAg ICAgcmV0dXJuIDA7Cj4+ICB9Cj4+IEBAIC01MzUsMTUgKzYyMiwxOCBAQCBzdGF0aWMgaW50IHBt X2dlbnBkX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gICAgICAgICBpZiAo SVNfRVJSKGdlbnBkKSkKPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pgo+PiAt ICAgICAgIC8qIElmIHBvd2VyLmlycV9zYWZlLCB0aGUgUE0gZG9tYWluIGlzIG5ldmVyIHBvd2Vy ZWQgb2ZmLiAqLwo+PiAtICAgICAgIGlmIChkZXYtPnBvd2VyLmlycV9zYWZlKSB7Cj4+ICsgICAg ICAgLyoKPj4gKyAgICAgICAgKiBBcyB3ZSBkb250IHBvd2VyIG9mZiBhIG5vbiBJUlEgc2FmZSBk b21haW4sIHdoaWNoIGhvbGRzCj4+ICsgICAgICAgICogYW4gSVJRIHNhZmUgZGV2aWNlLCB3ZSBk b250IG5lZWQgdG8gcmVzdG9yZSBwb3dlciB0byBpdC4KPj4gKyAgICAgICAgKi8KPj4gKyAgICAg ICBpZiAoZGV2LT5wb3dlci5pcnFfc2FmZSAmJiAhZ2VucGQtPmlycV9zYWZlKSB7Cj4+ICAgICAg ICAgICAgICAgICB0aW1lZCA9IGZhbHNlOwo+PiAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4+ ICAgICAgICAgfQo+Pgo+PiAtICAgICAgIG11dGV4X2xvY2soJmdlbnBkLT5sb2NrKTsKPj4gKyAg ICAgICBnZW5wZF9sb2NrKGdlbnBkKTsKPj4gICAgICAgICByZXQgPSBfX3BtX2dlbnBkX3Bvd2Vy b24oZ2VucGQpOwo+PiAtICAgICAgIG11dGV4X3VubG9jaygmZ2VucGQtPmxvY2spOwo+PiArICAg ICAgIGdlbnBkX3VubG9jayhnZW5wZCk7Cj4+Cj4+ICAgICAgICAgaWYgKHJldCkKPj4gICAgICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4+IEBAIC03NDMsMTQgKzgzMywxNCBAQCBzdGF0aWMgaW50 IHBtX2dlbnBkX3ByZXBhcmUoc3RydWN0IGRldmljZSAqZGV2KQo+PiAgICAgICAgIGlmIChyZXN1 bWVfbmVlZGVkKGRldiwgZ2VucGQpKQo+PiAgICAgICAgICAgICAgICAgcG1fcnVudGltZV9yZXN1 bWUoZGV2KTsKPj4KPj4gLSAgICAgICBtdXRleF9sb2NrKCZnZW5wZC0+bG9jayk7Cj4+ICsgICAg ICAgZ2VucGRfbG9jayhnZW5wZCk7Cj4+Cj4+ICAgICAgICAgaWYgKGdlbnBkLT5wcmVwYXJlZF9j b3VudCsrID09IDApIHsKPj4gICAgICAgICAgICAgICAgIGdlbnBkLT5zdXNwZW5kZWRfY291bnQg PSAwOwo+PiAgICAgICAgICAgICAgICAgZ2VucGQtPnN1c3BlbmRfcG93ZXJfb2ZmID0gZ2VucGQt PnN0YXR1cyA9PSBHUERfU1RBVEVfUE9XRVJfT0ZGOwo+PiAgICAgICAgIH0KPj4KPj4gLSAgICAg ICBtdXRleF91bmxvY2soJmdlbnBkLT5sb2NrKTsKPj4gKyAgICAgICBnZW5wZF91bmxvY2soZ2Vu cGQpOwo+Pgo+PiAgICAgICAgIGlmIChnZW5wZC0+c3VzcGVuZF9wb3dlcl9vZmYpIHsKPj4gICAg ICAgICAgICAgICAgIHBtX3J1bnRpbWVfcHV0X25vaWRsZShkZXYpOwo+PiBAQCAtNzY4LDEyICs4 NTgsMTIgQEAgc3RhdGljIGludCBwbV9nZW5wZF9wcmVwYXJlKHN0cnVjdCBkZXZpY2UgKmRldikK Pj4KPj4gICAgICAgICByZXQgPSBwbV9nZW5lcmljX3ByZXBhcmUoZGV2KTsKPj4gICAgICAgICBp ZiAocmV0KSB7Cj4+IC0gICAgICAgICAgICAgICBtdXRleF9sb2NrKCZnZW5wZC0+bG9jayk7Cj4+ ICsgICAgICAgICAgICAgICBnZW5wZF9sb2NrKGdlbnBkKTsKPj4KPj4gICAgICAgICAgICAgICAg IGlmICgtLWdlbnBkLT5wcmVwYXJlZF9jb3VudCA9PSAwKQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICBnZW5wZC0+c3VzcGVuZF9wb3dlcl9vZmYgPSBmYWxzZTsKPj4KPj4gLSAgICAgICAgICAg ICAgIG11dGV4X3VubG9jaygmZ2VucGQtPmxvY2spOwo+PiArICAgICAgICAgICAgICAgZ2VucGRf dW5sb2NrKGdlbnBkKTsKPj4gICAgICAgICAgICAgICAgIHBtX3J1bnRpbWVfZW5hYmxlKGRldik7 Cj4+ICAgICAgICAgfQo+Pgo+PiBAQCAtMTEzMCwxMyArMTIyMCwxMyBAQCBzdGF0aWMgdm9pZCBw bV9nZW5wZF9jb21wbGV0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICAgICAgICAgaWYgKElTX0VS UihnZW5wZCkpCj4+ICAgICAgICAgICAgICAgICByZXR1cm47Cj4+Cj4+IC0gICAgICAgbXV0ZXhf bG9jaygmZ2VucGQtPmxvY2spOwo+PiArICAgICAgIGdlbnBkX2xvY2soZ2VucGQpOwo+Pgo+PiAg ICAgICAgIHJ1bl9jb21wbGV0ZSA9ICFnZW5wZC0+c3VzcGVuZF9wb3dlcl9vZmY7Cj4+ICAgICAg ICAgaWYgKC0tZ2VucGQtPnByZXBhcmVkX2NvdW50ID09IDApCj4+ICAgICAgICAgICAgICAgICBn ZW5wZC0+c3VzcGVuZF9wb3dlcl9vZmYgPSBmYWxzZTsKPj4KPj4gLSAgICAgICBtdXRleF91bmxv Y2soJmdlbnBkLT5sb2NrKTsKPj4gKyAgICAgICBnZW5wZF91bmxvY2soZ2VucGQpOwo+Pgo+PiAg ICAgICAgIGlmIChydW5fY29tcGxldGUpIHsKPj4gICAgICAgICAgICAgICAgIHBtX2dlbmVyaWNf Y29tcGxldGUoZGV2KTsKPj4gQEAgLTEyODAsMTEgKzEzNzAsMTggQEAgaW50IF9fcG1fZ2VucGRf YWRkX2RldmljZShzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBkLCBzdHJ1Y3QgZGV2aWNl ICpkZXYsCj4+ICAgICAgICAgaWYgKElTX0VSUl9PUl9OVUxMKGdlbnBkKSB8fCBJU19FUlJfT1Jf TlVMTChkZXYpKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+Cj4+ICsgICAg ICAgaWYgKGdlbnBkLT5pcnFfc2FmZSAmJiAhZGV2LT5wb3dlci5pcnFfc2FmZSkgewo+PiArICAg ICAgICAgICAgICAgZGV2X2VycihkZXYsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICJQTSBE b21haW4gJXMgaXMgSVJRIHNhZmU7IGRldmljZSBoYXMgdG8gSVJRIHNhZmUuXG4iLAo+Cj4vcy87 IGRldmljZSBoYXMgdG8gSVJRIHNhZmUvLCBidXQgZGV2aWNlIGlzbid0Lgo+Cj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGdlbnBkLT5uYW1lKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOwo+PiArICAgICAgIH0KPj4gKwo+PiAgICAgICAgIGdwZF9kYXRhID0gZ2VucGRfYWxs b2NfZGV2X2RhdGEoZGV2LCBnZW5wZCwgdGQpOwo+PiAgICAgICAgIGlmIChJU19FUlIoZ3BkX2Rh dGEpKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZ3BkX2RhdGEpOwo+Pgo+PiAt ICAgICAgIG11dGV4X2xvY2soJmdlbnBkLT5sb2NrKTsKPj4gKyAgICAgICBnZW5wZF9sb2NrKGdl bnBkKTsKPj4KPj4gICAgICAgICBpZiAoZ2VucGQtPnByZXBhcmVkX2NvdW50ID4gMCkgewo+PiAg ICAgICAgICAgICAgICAgcmV0ID0gLUVBR0FJTjsKPj4gQEAgLTEzMDEsNyArMTM5OCw3IEBAIGlu dCBfX3BtX2dlbnBkX2FkZF9kZXZpY2Uoc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpnZW5wZCwg c3RydWN0IGRldmljZSAqZGV2LAo+PiAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmdwZF9kYXRhLT5i YXNlLmxpc3Rfbm9kZSwgJmdlbnBkLT5kZXZfbGlzdCk7Cj4+Cj4+ICAgb3V0Ogo+PiAtICAgICAg IG11dGV4X3VubG9jaygmZ2VucGQtPmxvY2spOwo+PiArICAgICAgIGdlbnBkX3VubG9jayhnZW5w ZCk7Cj4+Cj4+ICAgICAgICAgaWYgKHJldCkKPj4gICAgICAgICAgICAgICAgIGdlbnBkX2ZyZWVf ZGV2X2RhdGEoZGV2LCBncGRfZGF0YSk7Cj4+IEBAIC0xMzQ1LDcgKzE0NDIsNyBAQCBpbnQgcG1f Z2VucGRfcmVtb3ZlX2RldmljZShzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBkLAo+PiAg ICAgICAgIGdwZF9kYXRhID0gdG9fZ3BkX2RhdGEocGRkKTsKPj4gICAgICAgICBkZXZfcG1fcW9z X3JlbW92ZV9ub3RpZmllcihkZXYsICZncGRfZGF0YS0+bmIpOwo+Pgo+PiAtICAgICAgIG11dGV4 X2xvY2soJmdlbnBkLT5sb2NrKTsKPj4gKyAgICAgICBnZW5wZF9sb2NrKGdlbnBkKTsKPj4KPj4g ICAgICAgICBpZiAoZ2VucGQtPnByZXBhcmVkX2NvdW50ID4gMCkgewo+PiAgICAgICAgICAgICAg ICAgcmV0ID0gLUVBR0FJTjsKPj4gQEAgLTEzNjAsMTQgKzE0NTcsMTQgQEAgaW50IHBtX2dlbnBk X3JlbW92ZV9kZXZpY2Uoc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpnZW5wZCwKPj4KPj4gICAg ICAgICBsaXN0X2RlbF9pbml0KCZwZGQtPmxpc3Rfbm9kZSk7Cj4+Cj4+IC0gICAgICAgbXV0ZXhf dW5sb2NrKCZnZW5wZC0+bG9jayk7Cj4+ICsgICAgICAgZ2VucGRfdW5sb2NrKGdlbnBkKTsKPj4K Pj4gICAgICAgICBnZW5wZF9mcmVlX2Rldl9kYXRhKGRldiwgZ3BkX2RhdGEpOwo+Pgo+PiAgICAg ICAgIHJldHVybiAwOwo+Pgo+PiAgIG91dDoKPj4gLSAgICAgICBtdXRleF91bmxvY2soJmdlbnBk LT5sb2NrKTsKPj4gKyAgICAgICBnZW5wZF91bmxvY2soZ2VucGQpOwo+PiAgICAgICAgIGRldl9w bV9xb3NfYWRkX25vdGlmaWVyKGRldiwgJmdwZF9kYXRhLT5uYik7Cj4+Cj4+ICAgICAgICAgcmV0 dXJuIHJldDsKPj4gQEAgLTEzODgsMTIgKzE0ODUsMjMgQEAgaW50IHBtX2dlbnBkX2FkZF9zdWJk b21haW4oc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpnZW5wZCwKPj4gICAgICAgICAgICAgfHwg Z2VucGQgPT0gc3ViZG9tYWluKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ Cj4+ICsgICAgICAgLyoKPj4gKyAgICAgICAgKiBJZiB0aGUgZG9tYWluIGNhbiBiZSBwb3dlcmVk IG9uL29mZiBpbiBhbiBJUlEgc2FmZQo+PiArICAgICAgICAqIGNvbnRleHQsIGVuc3VyZSB0aGF0 IHRoZSBzdWJkb21haW4gY2FuIGFsc28gYmUKPj4gKyAgICAgICAgKiBwb3dlcmVkIG9uL29mZiBp biB0aGF0IGNvbnRleHQuCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgaWYgKGdlbnBkLT5pcnFf c2FmZSAmJiAhc3ViZG9tYWluLT5pcnFfc2FmZSkgewo+Cj5JcyB0aGlzIHJlYWxseSBlbm91Z2g/ IFdoYXQgaWYgdGhlIHN1YmRvbWFpbiBpcyBJUlEgc2FmZSBidXQgaXRzCj5wYXJlbnQgaXNuJ3Qs IHRoYXQncyBub3QgYWxsb3dlZCBlaXRoZXIsIHJpZ2h0Pwo+ClRoYXQgc2hvdWxkIGJlIGFsbG93 YWJsZS4gV2Ugd291bGQganVzdCBub3QgcG93ZXIgb2ZmIHRoZSBwYXJlbnQgYW5kCmV4cGVjdCBp dCB0byBiZSBwb3dlcmVkIG9uIGFsd2F5cywgd2hlbiB0aGUgc3ViZG9tYWluIHBvd2VycyBvbi9v ZmYuCgo+PiArICAgICAgICAgICAgICAgV0FSTigiU3ViLWRvbWFpbiAoJXMpIGluIGFuIElSUS1z YWZlIGRvbWFpbiAoJXMpIGhhcyB0byBiZSBJUlEgc2FmZVxuIiwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdWJkb21haW4tPm5hbWUsIGdlbnBkLT5uYW1lKTsKPj4gKyAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgICAgIH0KPj4gKwo+PiAgICAgICAgIGxp bmsgPSBremFsbG9jKHNpemVvZigqbGluayksIEdGUF9LRVJORUwpOwo+PiAgICAgICAgIGlmICgh bGluaykKPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+Pgo+PiAtICAgICAgIG11 dGV4X2xvY2soJmdlbnBkLT5sb2NrKTsKPj4gLSAgICAgICBtdXRleF9sb2NrX25lc3RlZCgmc3Vi ZG9tYWluLT5sb2NrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7Cj4+ICsgICAgICAgZ2VucGRfbG9j ayhnZW5wZCk7Cj4+ICsgICAgICAgZ2VucGRfbG9ja19uZXN0ZWQoc3ViZG9tYWluKTsKPj4KPj4g ICAgICAgICBpZiAoZ2VucGQtPnN0YXR1cyA9PSBHUERfU1RBVEVfUE9XRVJfT0ZGCj4+ICAgICAg ICAgICAgICYmICBzdWJkb21haW4tPnN0YXR1cyAhPSBHUERfU1RBVEVfUE9XRVJfT0ZGKSB7Cj4+ IEBAIC0xNDE2LDggKzE1MjQsOCBAQCBpbnQgcG1fZ2VucGRfYWRkX3N1YmRvbWFpbihzdHJ1Y3Qg Z2VuZXJpY19wbV9kb21haW4gKmdlbnBkLAo+PiAgICAgICAgICAgICAgICAgZ2VucGRfc2RfY291 bnRlcl9pbmMoZ2VucGQpOwo+Pgo+PiAgIG91dDoKPj4gLSAgICAgICBtdXRleF91bmxvY2soJnN1 YmRvbWFpbi0+bG9jayk7Cj4+IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZnZW5wZC0+bG9jayk7Cj4+ ICsgICAgICAgZ2VucGRfdW5sb2NrKHN1YmRvbWFpbik7Cj4+ICsgICAgICAgZ2VucGRfdW5sb2Nr KGdlbnBkKTsKPj4gICAgICAgICBpZiAocmV0KQo+PiAgICAgICAgICAgICAgICAga2ZyZWUobGlu ayk7Cj4+ICAgICAgICAgcmV0dXJuIHJldDsKPj4gQEAgLTE0NjYsMTMgKzE1NzQsMTMgQEAgaW50 IHBtX2dlbnBkX3JlbW92ZV9zdWJkb21haW4oc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpnZW5w ZCwKPj4gICAgICAgICBpZiAoSVNfRVJSX09SX05VTEwoZ2VucGQpIHx8IElTX0VSUl9PUl9OVUxM KHN1YmRvbWFpbikpCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4KPj4gLSAg ICAgICBtdXRleF9sb2NrKCZnZW5wZC0+bG9jayk7Cj4+ICsgICAgICAgZ2VucGRfbG9jayhnZW5w ZCk7Cj4+Cj4+ICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShsaW5rLCAmZ2VucGQtPm1hc3Rl cl9saW5rcywgbWFzdGVyX25vZGUpIHsKPj4gICAgICAgICAgICAgICAgIGlmIChsaW5rLT5zbGF2 ZSAhPSBzdWJkb21haW4pCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pgo+ PiAtICAgICAgICAgICAgICAgbXV0ZXhfbG9ja19uZXN0ZWQoJnN1YmRvbWFpbi0+bG9jaywgU0lO R0xFX0RFUFRIX05FU1RJTkcpOwo+PiArICAgICAgICAgICAgICAgZ2VucGRfbG9ja19uZXN0ZWQo c3ViZG9tYWluKTsKPj4KPj4gICAgICAgICAgICAgICAgIGxpc3RfZGVsKCZsaW5rLT5tYXN0ZXJf bm9kZSk7Cj4+ICAgICAgICAgICAgICAgICBsaXN0X2RlbCgmbGluay0+c2xhdmVfbm9kZSk7Cj4+ IEBAIC0xNDgwLDEzICsxNTg4LDEzIEBAIGludCBwbV9nZW5wZF9yZW1vdmVfc3ViZG9tYWluKHN0 cnVjdCBnZW5lcmljX3BtX2RvbWFpbiAqZ2VucGQsCj4+ICAgICAgICAgICAgICAgICBpZiAoc3Vi ZG9tYWluLT5zdGF0dXMgIT0gR1BEX1NUQVRFX1BPV0VSX09GRikKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgZ2VucGRfc2RfY291bnRlcl9kZWMoZ2VucGQpOwo+Pgo+PiAtICAgICAgICAgICAg ICAgbXV0ZXhfdW5sb2NrKCZzdWJkb21haW4tPmxvY2spOwo+PiArICAgICAgICAgICAgICAgZ2Vu cGRfdW5sb2NrKHN1YmRvbWFpbik7Cj4+Cj4+ICAgICAgICAgICAgICAgICByZXQgPSAwOwo+PiAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgfQo+Pgo+PiAtICAgICAgIG11dGV4X3Vu bG9jaygmZ2VucGQtPmxvY2spOwo+PiArICAgICAgIGdlbnBkX3VubG9jayhnZW5wZCk7Cj4+Cj4+ ICAgICAgICAgcmV0dXJuIHJldDsKPj4gIH0KPj4gQEAgLTE1MTAsMTEgKzE2MTgsMTcgQEAgaW50 IHBtX2dlbnBkX2F0dGFjaF9jcHVpZGxlKHN0cnVjdCBnZW5lcmljX3BtX2RvbWFpbiAqZ2VucGQs IGludCBzdGF0ZSkKPj4gICAgICAgICBpZiAoSVNfRVJSX09SX05VTEwoZ2VucGQpIHx8IHN0YXRl IDwgMCkKPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pgo+PiArICAgICAgIGlm IChnZW5wZC0+aXJxX3NhZmUpIHsKPj4gKyAgICAgICAgICAgICAgIFdBUk4oIkRvbWFpbiAlcyBp cyBJUlEgc2FmZSwgY2Fubm90IGF0dGFjaCB0byBjcHVpZGxlXG4iLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdlbnBkLT5uYW1lKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+PiArICAgICAgIH0KPj4gKwo+PiAgICAgICAgIGNwdWlkbGVfZGF0YSA9IGt6 YWxsb2Moc2l6ZW9mKCpjcHVpZGxlX2RhdGEpLCBHRlBfS0VSTkVMKTsKPj4gICAgICAgICBpZiAo IWNwdWlkbGVfZGF0YSkKPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+Pgo+PiAt ICAgICAgIG11dGV4X2xvY2soJmdlbnBkLT5sb2NrKTsKPj4gKyAgICAgICBnZW5wZF9sb2NrKGdl bnBkKTsKPj4KPj4gICAgICAgICBpZiAoZ2VucGQtPmNwdWlkbGVfZGF0YSkgewo+PiAgICAgICAg ICAgICAgICAgcmV0ID0gLUVFWElTVDsKPj4gQEAgLTE1NDEsNyArMTY1NSw3IEBAIGludCBwbV9n ZW5wZF9hdHRhY2hfY3B1aWRsZShzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBkLCBpbnQg c3RhdGUpCj4+ICAgICAgICAgZ2VucGRfcmVjYWxjX2NwdV9leGl0X2xhdGVuY3koZ2VucGQpOwo+ Pgo+PiAgIG91dDoKPj4gLSAgICAgICBtdXRleF91bmxvY2soJmdlbnBkLT5sb2NrKTsKPj4gKyAg ICAgICBnZW5wZF91bmxvY2soZ2VucGQpOwo+PiAgICAgICAgIHJldHVybiByZXQ7Cj4+Cj4+ICAg ZXJyOgo+PiBAQCAtMTU3OCw3ICsxNjkyLDcgQEAgaW50IHBtX2dlbnBkX2RldGFjaF9jcHVpZGxl KHN0cnVjdCBnZW5lcmljX3BtX2RvbWFpbiAqZ2VucGQpCj4+ICAgICAgICAgaWYgKElTX0VSUl9P Ul9OVUxMKGdlbnBkKSkKPj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pgo+PiAt ICAgICAgIG11dGV4X2xvY2soJmdlbnBkLT5sb2NrKTsKPj4gKyAgICAgICBnZW5wZF9sb2NrKGdl bnBkKTsKPj4KPj4gICAgICAgICBjcHVpZGxlX2RhdGEgPSBnZW5wZC0+Y3B1aWRsZV9kYXRhOwo+ PiAgICAgICAgIGlmICghY3B1aWRsZV9kYXRhKSB7Cj4+IEBAIC0xNTk2LDcgKzE3MTAsNyBAQCBp bnQgcG1fZ2VucGRfZGV0YWNoX2NwdWlkbGUoc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpnZW5w ZCkKPj4gICAgICAgICBrZnJlZShjcHVpZGxlX2RhdGEpOwo+Pgo+PiAgIG91dDoKPj4gLSAgICAg ICBtdXRleF91bmxvY2soJmdlbnBkLT5sb2NrKTsKPj4gKyAgICAgICBnZW5wZF91bmxvY2soZ2Vu cGQpOwo+PiAgICAgICAgIHJldHVybiByZXQ7Cj4+ICB9Cj4+Cj4+IEBAIC0xNjU3LDYgKzE3NzEs MTcgQEAgc3RhdGljIGludCBwbV9nZW5wZF9kZWZhdWx0X3Jlc3RvcmVfc3RhdGUoc3RydWN0IGRl dmljZSAqZGV2KQo+PiAgICAgICAgIHJldHVybiBjYiA/IGNiKGRldikgOiAwOwo+PiAgfQo+Pgo+ PiArc3RhdGljIHZvaWQgZ2VucGRfbG9ja19pbml0KHN0cnVjdCBnZW5lcmljX3BtX2RvbWFpbiAq Z2VucGQpCj4+ICt7Cj4+ICsgICAgICAgaWYgKGdlbnBkLT5mbGFncyAmIEdFTlBEX0ZMQUdfSVJR X1NBRkUpIHsKPj4gKyAgICAgICAgICAgICAgIHNwaW5fbG9ja19pbml0KCZnZW5wZC0+c2xvY2sp Owo+PiArICAgICAgICAgICAgICAgZ2VucGQtPmlycV9zYWZlID0gdHJ1ZTsKPj4gKyAgICAgICB9 IGVsc2Ugewo+PiArICAgICAgICAgICAgICAgbXV0ZXhfaW5pdCgmZ2VucGQtPm1sb2NrKTsKPj4g KyAgICAgICAgICAgICAgIGdlbnBkLT5pcnFfc2FmZSA9IGZhbHNlOwo+PiArICAgICAgIH0KPgo+ QXMgSSBzdGF0ZWQgZWFybGllciBhcm91bmQgaGF2aW5nIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGlz IHdvdWxkIGJlIHRoZQo+cGxhY2Ugd2hlcmUgdG8gYXNzaWduIHRoZW0gSSBndWVzcy4KPgo+PiAr fQo+PiArCj4+ICAvKioKPj4gICAqIHBtX2dlbnBkX2luaXQgLSBJbml0aWFsaXplIGEgZ2VuZXJp YyBJL08gUE0gZG9tYWluIG9iamVjdC4KPj4gICAqIEBnZW5wZDogUE0gZG9tYWluIG9iamVjdCB0 byBpbml0aWFsaXplLgo+PiBAQCAtMTY3Miw3ICsxNzk3LDcgQEAgdm9pZCBwbV9nZW5wZF9pbml0 KHN0cnVjdCBnZW5lcmljX3BtX2RvbWFpbiAqZ2VucGQsCj4+ICAgICAgICAgSU5JVF9MSVNUX0hF QUQoJmdlbnBkLT5tYXN0ZXJfbGlua3MpOwo+PiAgICAgICAgIElOSVRfTElTVF9IRUFEKCZnZW5w ZC0+c2xhdmVfbGlua3MpOwo+PiAgICAgICAgIElOSVRfTElTVF9IRUFEKCZnZW5wZC0+ZGV2X2xp c3QpOwo+PiAtICAgICAgIG11dGV4X2luaXQoJmdlbnBkLT5sb2NrKTsKPj4gKyAgICAgICBnZW5w ZF9sb2NrX2luaXQoZ2VucGQpOwo+PiAgICAgICAgIGdlbnBkLT5nb3YgPSBnb3Y7Cj4+ICAgICAg ICAgSU5JVF9XT1JLKCZnZW5wZC0+cG93ZXJfb2ZmX3dvcmssIGdlbnBkX3Bvd2VyX29mZl93b3Jr X2ZuKTsKPj4gICAgICAgICBnZW5wZC0+aW5fcHJvZ3Jlc3MgPSAwOwo+PiBAQCAtMjA2Nyw3ICsy MTkyLDcgQEAgc3RhdGljIGludCBwbV9nZW5wZF9zdW1tYXJ5X29uZShzdHJ1Y3Qgc2VxX2ZpbGUg KnMsCj4+ICAgICAgICAgc3RydWN0IGdwZF9saW5rICpsaW5rOwo+PiAgICAgICAgIGludCByZXQ7 Cj4+Cj4+IC0gICAgICAgcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZnZW5wZC0+bG9j ayk7Cj4+ICsgICAgICAgcmV0ID0gZ2VucGRfbG9ja19pbnRlcnJ1cHRpYmxlKGdlbnBkKTsKPj4g ICAgICAgICBpZiAocmV0KQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FUkVTVEFSVFNZUzsK Pj4KPj4gQEAgLTIwODcsNyArMjIxMiw4IEBAIHN0YXRpYyBpbnQgcG1fZ2VucGRfc3VtbWFyeV9v bmUoc3RydWN0IHNlcV9maWxlICpzLAo+PiAgICAgICAgIH0KPj4KPj4gICAgICAgICBsaXN0X2Zv cl9lYWNoX2VudHJ5KHBtX2RhdGEsICZnZW5wZC0+ZGV2X2xpc3QsIGxpc3Rfbm9kZSkgewo+PiAt ICAgICAgICAgICAgICAga29ial9wYXRoID0ga29iamVjdF9nZXRfcGF0aCgmcG1fZGF0YS0+ZGV2 LT5rb2JqLCBHRlBfS0VSTkVMKTsKPj4gKyAgICAgICAgICAgICAgIGtvYmpfcGF0aCA9IGtvYmpl Y3RfZ2V0X3BhdGgoJnBtX2RhdGEtPmRldi0+a29iaiwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZW5wZC0+aXJxX3NhZmUgPyBHRlBfQVRPTUlDIDogR0ZQX0tFUk5FTCk7Cj4+ ICAgICAgICAgICAgICAgICBpZiAoa29ial9wYXRoID09IE5VTEwpCj4+ICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOwo+Pgo+PiBAQCAtMjA5OCw3ICsyMjI0LDcgQEAgc3RhdGljIGlu dCBwbV9nZW5wZF9zdW1tYXJ5X29uZShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsCj4+Cj4+ICAgICAgICAg c2VxX3B1dHMocywgIlxuIik7Cj4+ICBleGl0Ogo+PiAtICAgICAgIG11dGV4X3VubG9jaygmZ2Vu cGQtPmxvY2spOwo+PiArICAgICAgIGdlbnBkX3VubG9jayhnZW5wZCk7Cj4+Cj4+ICAgICAgICAg cmV0dXJuIDA7Cj4+ICB9Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BtX2RvbWFpbi5o IGIvaW5jbHVkZS9saW51eC9wbV9kb21haW4uaAo+PiBpbmRleCBiMjcyNWU2Li5kYzdjYjUzIDEw MDY0NAo+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L3BtX2RvbWFpbi5oCj4+ICsrKyBiL2luY2x1ZGUv bGludXgvcG1fZG9tYWluLmgKPj4gQEAgLTE2LDkgKzE2LDExIEBACj4+ICAjaW5jbHVkZSA8bGlu dXgvb2YuaD4KPj4gICNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgo+PiAgI2luY2x1ZGUgPGxp bnV4L2NwdWlkbGUuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgo+Pgo+PiAgLyog RGVmaW5lcyB1c2VkIGZvciB0aGUgZmxhZ3MgZmllbGQgaW4gdGhlIHN0cnVjdCBnZW5lcmljX3Bt X2RvbWFpbiAqLwo+PiAgI2RlZmluZSBHRU5QRF9GTEFHX1BNX0NMSyAgICAgICgxVSA8PCAwKSAv KiBQTSBkb21haW4gdXNlcyBQTSBjbGsgKi8KPj4gKyNkZWZpbmUgR0VOUERfRkxBR19JUlFfU0FG RSAgICAoMVUgPDwgMSkgLyogUE0gZG9tYWluIG9wZXJhdGVzIGluIGF0b21pYyAqLwo+Pgo+PiAg ZW51bSBncGRfc3RhdHVzIHsKPj4gICAgICAgICBHUERfU1RBVEVfQUNUSVZFID0gMCwgICAvKiBQ TSBkb21haW4gaXMgYWN0aXZlICovCj4+IEBAIC00OSw3ICs1MSw2IEBAIHN0cnVjdCBnZW5lcmlj X3BtX2RvbWFpbiB7Cj4+ICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtYXN0ZXJfbGlua3M7ICAv KiBMaW5rcyB3aXRoIFBNIGRvbWFpbiBhcyBhIG1hc3RlciAqLwo+PiAgICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgc2xhdmVfbGlua3M7ICAgLyogTGlua3Mgd2l0aCBQTSBkb21haW4gYXMgYSBzbGF2 ZSAqLwo+PiAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGV2X2xpc3Q7ICAgICAgLyogTGlzdCBv ZiBkZXZpY2VzICovCj4+IC0gICAgICAgc3RydWN0IG11dGV4IGxvY2s7Cj4+ICAgICAgICAgc3Ry dWN0IGRldl9wb3dlcl9nb3Zlcm5vciAqZ292Owo+PiAgICAgICAgIHN0cnVjdCB3b3JrX3N0cnVj dCBwb3dlcl9vZmZfd29yazsKPj4gICAgICAgICBjb25zdCBjaGFyICpuYW1lOwo+PiBAQCAtNzQs NiArNzUsMTQgQEAgc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluIHsKPj4gICAgICAgICB2b2lkICgq ZGV0YWNoX2Rldikoc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpkb21haW4sCj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldik7Cj4+ICAgICAgICAgdW5zaWdu ZWQgaW50IGZsYWdzOyAgICAgICAgICAgICAvKiBCaXQgZmllbGQgb2YgY29uZmlncyBmb3IgZ2Vu cGQgKi8KPj4gKyAgICAgICBib29sIGlycV9zYWZlOwo+Cj5JZiB5b3UgY29udmVydCB0byBmdW5j dGlvbnMgcG9pbnRlcnMsIHBlcmhhcHMgeW91IGNhbiByZW1vdmUgdGhlCj5pcnFfc2FmZSBib29s IGhlcmUsIGFuZCBpbnN0ZWFkIG9ubHkgdXNlIHRoZSBmbGFncyBmaWVsZC4KPgpBbnN3ZXJlZCBl YXJsaWVyLgoKQW5vdGhlciBwb2ludCB0byBjb25zaWRlciBpcyB0aGF0LCB0aGlzIGZhY2lsaXRh dGVzIHRoZSB1c2Ugb2YKX19hY3F1aXJlcygpIGFuZCBfX3JlbGVhc2VzKCksIHdoaWNoIG5lZWQg YSBsb2NrIG9iamVjdCBhbmQgbm90IGEKcG9pbnRlci4KCj4+ICsgICAgICAgdW5pb24gewo+PiAr ICAgICAgICAgICAgICAgc3RydWN0IG11dGV4IG1sb2NrOwo+PiArICAgICAgICAgICAgICAgc3Ry dWN0IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3BpbmxvY2tfdCBzbG9jazsKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb2NrX2ZsYWdzOwo+PiArICAgICAg ICAgICAgICAgfTsKPj4gKyAgICAgICB9Owo+PiAgfTsKPj4KPj4gIHN0YXRpYyBpbmxpbmUgc3Ry dWN0IGdlbmVyaWNfcG1fZG9tYWluICpwZF90b19nZW5wZChzdHJ1Y3QgZGV2X3BtX2RvbWFpbiAq cGQpCj4+IC0tCj4+IDIuMS40Cj4+Cj4KPktpbmQgcmVnYXJkcwo+VWZmZQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=