From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v4 19/27] drm/i915: Read hw state into an atomic state struct, v2. Date: Tue, 09 Jun 2015 17:24:28 +0300 Message-ID: <871thl7yeb.fsf@intel.com> References: <1433155811-9671-1-git-send-email-maarten.lankhorst@linux.intel.com> <1433155811-9671-20-git-send-email-maarten.lankhorst@linux.intel.com> <5576D28B.4090109@linux.intel.com> <5576E93C.3080308@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 4D1CB6E750 for ; Tue, 9 Jun 2015 07:31:09 -0700 (PDT) In-Reply-To: <5576E93C.3080308@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , Tvrtko Ursulin , intel-gfx@lists.freedesktop.org Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAwOSBKdW4gMjAxNSwgTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gSGV5LAo+Cj4gT3AgMDktMDYtMTUgb20gMTM6NDgg c2NocmVlZiBUdnJ0a28gVXJzdWxpbjoKPj4KPj4gT24gMDYvMDEvMjAxNSAxMTo1MCBBTSwgTWFh cnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+PiBGcm9tOiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVp cmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Cj4+Pgo+Pj4gVG8gbWFr ZSB0aGlzIHdvcmsgd2UgbG9hZCB0aGUgbmV3IGhhcmR3YXJlIHN0YXRlIGludG8gdGhlCj4+PiBh dG9taWNfc3RhdGUsIHRoZW4gc3dhcCBpdCB3aXRoIHRoZSBzdyBzdGF0ZS4KPj4+Cj4+PiBUaGlz IGxldHMgdXMgY2hhbmdlIHRoZSBmb3JjZSByZXN0b3JlIHBhdGggaW4gc2V0dXBfaHdfc3RhdGUo KQo+Pj4gdG8gdXNlIGEgc2luZ2xlIGNhbGwgdG8gaW50ZWxfbW9kZV9zZXQoKSB0byByZXN0b3Jl IGFsbCB0aGUKPj4+IHByZXZpb3VzIHN0YXRlLgo+Pj4KPj4+IEFzIGEgbmljZSBib251cyB0aGlz IGtpbGxzIG9mZiBlbmNvZGVyLT5uZXdfZW5jb2RlciwKPj4+IGNvbm5lY3Rvci0+bmV3X2VuYWJs ZWQgYW5kIGNydGMtPm5ld19lbmFibGVkLiBUaGV5IHdlcmUgdXNlZCBvbmx5Cj4+PiB0byByZXN0 b3JlIHRoZSBzdGF0ZSBhZnRlciBhIG1vZGVzZXQuCj4+Pgo+Pj4gQ2hhbmdlcyBzaW5jZSB2MToK Pj4+IC0gTWFrZSBzdXJlIGFsbCBwb3NzaWJsZSBwbGFuZXMgYXJlIGFkZGVkIHdpdGggdGhlaXIg Y3J0YyBzZXQsCj4+PiAgICBzbyB0aGV5IHdpbGwgYmUgdHVybmVkIG9mZiBvbiBmaXJzdCBtb2Rl c2V0Lgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8 YW5kZXIuY29uc2VsdmFuLmRlLm9saXZlaXJhQGludGVsLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6 IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+ Cj4+IFRoaXMgYnJlYWtzIGRpc3BsYXkgZm9yIG1lLCB3aGljaCBpcyBlRFAgb24gU0tMLiBBdCBs ZWFzdCBiaXNlY3QgcG9pbnRzIHRvIGl0LiBBIGxvdCBvZiB0aGVzZSBpbiB0aGUgbG9nczoKPj4K Pj4gKkVSUk9SKiBtaXNtYXRjaCBpbiBkcF9tX24ubGlua19tIChleHBlY3RlZCA3MDE1OTQgb3Ig MCwgZm91bmQgMzUwNzk3KQo+Pgo+PiBBbmQgdGhlIGRpc3BsYXkgZG9lcyBub3QgbGlnaHQgdXAu Cj4KPiBZZWFoLCBpdCBwcm9iYWJseSByZWxpZXMgb24gYmV0dGVyIGh3IHJlYWRvdXQuIFRoaXMg aXMgcGFydGlhbGx5IG1pdGlnYXRlZCBieSBjb252ZXJ0IHRvIGF0b21pYywgcGFydCAzLgo+IEJ1 dCBpdCByZXF1aXJlcyAyIGFkZGl0aW9uYWwgcGF0Y2hlcy4KCk1hYXJ0ZW4sIEknZCBsaWtlIHRv IGhhdmUgdGhlIGZhbGxvdXQgZnJvbSB0aGlzIHNlcmllcyBmaXhlZCBiZWZvcmUKbW92aW5nIG9u IHRvIG1lcmdpbmcgYW5vdGhlciBiaWcgc2VyaWVzLi4uCgpCUiwKSmFuaS4KCgo+Cj4gY29tbWl0 IDVhOTc1MjliZWNiMjVmYWJmMThhMzUwN2E5NGY4OTJjMzY1YTRhMWQKPiBBdXRob3I6IE1hYXJ0 ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gRGF0ZTog ICBNb24gSnVuIDggMTE6MzE6MjggMjAxNSArMDIwMAo+Cj4gICAgIGRybS9pOTE1OiB1cGRhdGUg bW9yZSBzdyBzdGF0ZSB3aXRoIGh3IHN0YXRlIGR1cmluZyBhdG9taWMgcmVhZG91dAo+ICAgICAK PiAgICAgSSd2ZSBub3RpY2VkIHRoZSBmb2xsb3dpbmcgZHVyaW5nIGluaXRpYWwgcmVhZG91dDoK PiAgICAgc3RhdGUtPmFkanVzdGVkX21vZGUncyBub24gY3J0Y18qIG1lbWJlcnMgd2VyZSBub3Qg c2V0LAo+ICAgICBidXQgc29tZSBjb2RlIHJlbGllcyBoZGlzcGxheSBhbmQgdmRpc3BsYXksIHNv IG1ha2Ugc3VyZSBpdCdzCj4gICAgIHNldCBjb3JyZWN0bHkuCj4gICAgIAo+ICAgICBBbHNvIHZi bGFuayB3YXMgbm90IGVuYWJsZWQgYmVjYXVzZSBjb25zdGFudHMgd2VyZSBub3QgY2FsY3VsYXRl ZCwKPiAgICAgdGhpcyBzaG93cyB1cCBpbiBkbWVzZyBhczoKPiAgICAgW2RybTpkcm1fdmJsYW5r X2VuYWJsZV0gZW5hYmxpbmcgdmJsYW5rIG9uIGNydGMgMCwgcmV0OiAwCj4gICAgIFtkcm06ZHJt X2NhbGNfdmJsdGltZXN0YW1wX2Zyb21fc2Nhbm91dHBvc10gY3J0YyAwOiBOb29wIGR1ZSB0byB1 bmluaXRpYWxpemVkIG1vZGUuCj4gICAgIAo+ICAgICBUaGlzIGNvbW1pdCBmaXhlcyB0aGUgcmVn cmVzc2lvbiBmcm9tIHRoZSBmb2xsb3dpbmcgY29tbWl0Ogo+ICAgICAKPiAgICAgY29tbWl0IDNi YWUyNmViMjk5MWMwMDY3MGRmMzc3Y2Y2YzNiYzJiMDU3N2U4MmEKPiAgICAgQXV0aG9yOiBBbmRl ciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRl bC5jb20+Cj4gICAgIERhdGU6ICAgTW9uIEp1biAxIDEyOjUwOjAzIDIwMTUgKzAyMDAKPiAgICAg Cj4gICAgICAgICBkcm0vaTkxNTogUmVhZCBodyBzdGF0ZSBpbnRvIGFuIGF0b21pYyBzdGF0ZSBz dHJ1Y3QsIHYyLgo+ICAgICAKPiAgICAgQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3Rv cC5vcmcvc2hvd19idWcuY2dpP2lkPTkwODYxCj4gICAgIFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4g TGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggZmI5ZjA3YjFlNWNhLi5kYzI5YmFiNTI3 ZDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTE0ODU5LDgg KzE0ODU5LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKPiAgCj4gIAkvKiByZXN0b3JlIHZibGFuayBpbnRlcnJ1cHRzIHRvIGNvcnJl Y3Qgc3RhdGUgKi8KPiAgCWRybV9jcnRjX3ZibGFua19yZXNldCgmY3J0Yy0+YmFzZSk7Cj4gLQlp ZiAoY3J0Yy0+YWN0aXZlKSB7Cj4gKwlpZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKSB7Cj4g IAkJdXBkYXRlX3NjYW5saW5lX29mZnNldChjcnRjKTsKPiArCQlkcm1fY2FsY190aW1lc3RhbXBp bmdfY29uc3RhbnRzKCZjcnRjLT5iYXNlLCAmY3J0Yy0+YmFzZS5od21vZGUpOwo+ICAJCWRybV9j cnRjX3ZibGFua19vbigmY3J0Yy0+YmFzZSk7Cj4gIAl9Cj4gIAo+IEBAIC0xNTMwNyw2ICsxNTMw OCw4IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICAJCWlmIChjcnRjLT5lbmFibGVkKSB7Cj4gIAkJCWludGVsX21vZGVfZnJvbV9w aXBlX2NvbmZpZygmY3J0Yy0+c3RhdGUtPm1vZGUsCj4gIAkJCQl0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKSk7Cj4gKwkJCWludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZygmY3J0Yy0+ c3RhdGUtPmFkanVzdGVkX21vZGUsCj4gKwkJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKSk7Cj4gIAo+ICAJCQlkcm1fbW9kZV9jb3B5KCZjcnRjLT5tb2RlLCAmY3J0Yy0+c3RhdGUt Pm1vZGUpOwo+ICAJCQlkcm1fbW9kZV9jb3B5KCZjcnRjLT5od21vZGUsCj4KPiBjb21taXQgZDBm N2U3YWU4YTE1MWU5ZDAxOGUyZGJmMzZhNWFmYmE4MTJiYWI0Zgo+IEF1dGhvcjogTWFhcnRlbiBM YW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBEYXRlOiAgIFR1 ZSBKdW4gOSAwOTowMToxNyAyMDE1ICswMjAwCj4KPiAgICAgZHJtL2k5MTU6IG9ubHkgcGVyZm9y bSBhIHNpbmdsZSBtb2Rlc2V0IGluIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAyOWFlOTJlNWM4YTkuLjc3YTU1 M2UyMWE3YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTE5 OTQsMjQgKzExOTk0LDM1IEBAIHN0YXRpYyBib29sIGludGVsX2Z1enp5X2Nsb2NrX2NoZWNrKGlu dCBjbG9jazEsIGludCBjbG9jazIpCj4gIHN0YXRpYyBib29sCj4gIGludGVsX3BpcGVfY29uZmln X2NvbXBhcmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3VycmVudF9jb25maWcsCj4gLQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnKQo+ICsJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp ZywKPiArCQkJICBib29sIGNoZWNrX29ubHkpCj4gIHsKPiArCWJvb2wgcmV0ID0gdHJ1ZTsKPiAr Cj4gKyNkZWZpbmUgSU5URUxfRVJSX09SX0RCR19LTVMoZm10LCAuLi4pIFwKPiArCWRvIHsgXAo+ ICsJCWlmIChjaGVja19vbmx5KSBcCj4gKwkJCURSTV9FUlJPUihmbXQsICMjX19WQV9BUkdTX18p OyBcCj4gKwkJZWxzZSBcCj4gKwkJCURSTV9ERUJVR19LTVMoZm10LCAjI19fVkFfQVJHU19fKTsg XAo+ICsJfSB3aGlsZSAoMCkKPiArCj4gICNkZWZpbmUgUElQRV9DT05GX0NIRUNLX1gobmFtZSkJ XAo+ICAJaWYgKGN1cnJlbnRfY29uZmlnLT5uYW1lICE9IHBpcGVfY29uZmlnLT5uYW1lKSB7IFwK PiAtCQlEUk1fRVJST1IoIm1pc21hdGNoIGluICIgI25hbWUgIiAiIFwKPiArCQlJTlRFTF9FUlJf T1JfREJHX0tNUygibWlzbWF0Y2ggaW4gIiAjbmFtZSAiICIgXAo+ICAJCQkgICIoZXhwZWN0ZWQg MHglMDh4LCBmb3VuZCAweCUwOHgpXG4iLCBcCj4gIAkJCSAgY3VycmVudF9jb25maWctPm5hbWUs IFwKPiAgCQkJICBwaXBlX2NvbmZpZy0+bmFtZSk7IFwKPiAtCQlyZXR1cm4gZmFsc2U7IFwKPiAr CQlyZXQgPSBmYWxzZTsgXAo+ICAJfQo+ICAKPiAgI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfSShu YW1lKQlcCj4gIAlpZiAoY3VycmVudF9jb25maWctPm5hbWUgIT0gcGlwZV9jb25maWctPm5hbWUp IHsgXAo+IC0JCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gIiAjbmFtZSAiICIgXAo+ICsJCUlOVEVM X0VSUl9PUl9EQkdfS01TKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCj4gIAkJCSAgIihleHBl Y3RlZCAlaSwgZm91bmQgJWkpXG4iLCBcCj4gIAkJCSAgY3VycmVudF9jb25maWctPm5hbWUsIFwK PiAgCQkJICBwaXBlX2NvbmZpZy0+bmFtZSk7IFwKPiAtCQlyZXR1cm4gZmFsc2U7IFwKPiArCQly ZXQgPSBmYWxzZTsgXAo+ICAJfQo+ICAKPiAgLyogVGhpcyBpcyByZXF1aXJlZCBmb3IgQkRXKyB3 aGVyZSB0aGVyZSBpcyBvbmx5IG9uZSBzZXQgb2YgcmVnaXN0ZXJzIGZvcgo+IEBAIC0xMjAyMiwz MCArMTIwMzMsMzAgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICAjZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19JX0FMVChuYW1lLCBhbHRfbmFtZSkg XAo+ICAJaWYgKChjdXJyZW50X2NvbmZpZy0+bmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkgJiYg XAo+ICAJCShjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUgIT0gcGlwZV9jb25maWctPm5hbWUpKSB7 IFwKPiAtCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCj4gKwkJCUlOVEVM X0VSUl9PUl9EQkdfS01TKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCj4gIAkJCQkgICIoZXhw ZWN0ZWQgJWkgb3IgJWksIGZvdW5kICVpKVxuIiwgXAo+ICAJCQkJICBjdXJyZW50X2NvbmZpZy0+ bmFtZSwgXAo+ICAJCQkJICBjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUsIFwKPiAgCQkJCSAgcGlw ZV9jb25maWctPm5hbWUpOyBcCj4gLQkJCXJldHVybiBmYWxzZTsgXAo+ICsJCQlyZXQgPSBmYWxz ZTsgXAo+ICAJfQo+ICAKPiAgI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MobmFtZSwgbWFz aykJXAo+ICAJaWYgKChjdXJyZW50X2NvbmZpZy0+bmFtZSBeIHBpcGVfY29uZmlnLT5uYW1lKSAm IChtYXNrKSkgeyBcCj4gLQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiAiICNuYW1lICIoIiAjbWFz ayAiKSAiCSAgIFwKPiArCQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlzbWF0Y2ggaW4gIiAjbmFt ZSAiKCIgI21hc2sgIikgIgkgICBcCj4gIAkJCSAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4i LCBcCj4gIAkJCSAgY3VycmVudF9jb25maWctPm5hbWUgJiAobWFzayksIFwKPiAgCQkJICBwaXBl X2NvbmZpZy0+bmFtZSAmIChtYXNrKSk7IFwKPiAtCQlyZXR1cm4gZmFsc2U7IFwKPiArCQlyZXQg PSBmYWxzZTsgXAo+ICAJfQo+ICAKPiAgI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVa WlkobmFtZSkgXAo+ICAJaWYgKCFpbnRlbF9mdXp6eV9jbG9ja19jaGVjayhjdXJyZW50X2NvbmZp Zy0+bmFtZSwgcGlwZV9jb25maWctPm5hbWUpKSB7IFwKPiAtCQlEUk1fRVJST1IoIm1pc21hdGNo IGluICIgI25hbWUgIiAiIFwKPiArCQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlzbWF0Y2ggaW4g IiAjbmFtZSAiICIgXAo+ICAJCQkgICIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwgXAo+ICAJ CQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lLCBcCj4gIAkJCSAgcGlwZV9jb25maWctPm5hbWUpOyBc Cj4gLQkJcmV0dXJuIGZhbHNlOyBcCj4gKwkJcmV0ID0gZmFsc2U7IFwKPiAgCX0KPiAgCj4gICNk ZWZpbmUgUElQRV9DT05GX1FVSVJLKHF1aXJrKQlcCj4gQEAgLTEyMTc5LDggKzEyMTkwLDkgQEAg aW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAjdW5k ZWYgUElQRV9DT05GX0NIRUNLX0ZMQUdTCj4gICN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tf RlVaWlkKPiAgI3VuZGVmIFBJUEVfQ09ORl9RVUlSSwo+ICsjdW5kZWYgSU5URUxfRVJSX09SX0RC R19LTVMKPiAgCj4gLQlyZXR1cm4gdHJ1ZTsKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gIHN0 YXRpYyB2b2lkIGNoZWNrX3dtX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gQEAgLTEy Mzc3LDcgKzEyMzg5LDcgQEAgY2hlY2tfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLCBjcnRjLT5iYXNlLnN0YXRl LT5hY3RpdmUsIGNydGMtPmFjdGl2ZSk7Cj4gIAo+ICAJCWlmIChhY3RpdmUgJiYKPiAtCQkgICAg IWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LCBjcnRjLT5jb25maWcsICZwaXBlX2NvbmZp ZykpIHsKPiArCQkgICAgIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LCBjcnRjLT5jb25m aWcsICZwaXBlX2NvbmZpZywgZmFsc2UpKSB7Cj4gIAkJCUk5MTVfU1RBVEVfV0FSTigxLCAicGlw ZSBzdGF0ZSBkb2Vzbid0IG1hdGNoIVxuIik7Cj4gIAkJCWludGVsX2R1bXBfcGlwZV9jb25maWco Y3J0YywgJnBpcGVfY29uZmlnLAo+ICAJCQkJCSAgICAgICAiW2h3IHN0YXRlXSIpOwo+IEBAIC0x MjczNCw2ICsxMjc0NiwxMiBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJaW50ZWxfY3J0Yy0+YWN0aXZlID0gZmFsc2U7Cj4gIAkJ CWludGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwoaW50ZWxfY3J0Yyk7Cj4gIAkJfQo+ICsKPiArCQkv KiBGSVhNRTogTW92ZSB0aGlzIHRvIGk5eHhfY3J0Y19kaXNhYmxlIHdoZW4gaXQgZ2V0cyBhIHBv aW50ZXIKPiArCQkgKiB0byB0aGUgb2xkIGNydGNfc3RhdGUuICovCj4gKwkJaWYgKHRvX2ludGVs X2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktPnF1aXJrcyAmCj4gKwkJICAgIFBJUEVfQ09ORklHX1FV SVJLX1dST05HX1BMQU5FKQo+ICsJCQlpbnRlbF9jcnRjLT5wbGFuZSA9ICFpbnRlbF9jcnRjLT5w bGFuZTsKPiAgCX0KPiAgCj4gIAkvKiBPbmx5IGFmdGVyIGRpc2FibGluZyBhbGwgb3V0cHV0IHBp cGVsaW5lcyB0aGF0IHdpbGwgYmUgY2hhbmdlZCBjYW4gd2UKPiBAQCAtMTQ0NjQsMTMgKzE0NDgy LDE2IEBAIGludGVsX2NoZWNrX3BsYW5lX21hcHBpbmcoc3RydWN0IGludGVsX2NydGMgKmNydGMp Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gLQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp Cj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gKwkJCQlib29s IGZvcmNlX3Jlc3RvcmUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5i YXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcjsKPiArCXN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IHBpcGVfY29uZmlnLT5iYXNlLnN0YXRlOwo+ ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmh3X3N0YXRlID0KPiArCQl0b19pbnRlbF9jcnRj X3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ICAJdTMyIHJlZzsKPiAtCWJvb2wgZW5hYmxlOwo+ ICAKPiAgCS8qIENsZWFyIGFueSBmcmFtZSBzdGFydCBkZWxheXMgdXNlZCBmb3IgZGVidWdnaW5n IGxlZnQgYnkgdGhlIEJJT1MgKi8KPiAgCXJlZyA9IFBJUEVDT05GKGNydGMtPmNvbmZpZy0+Y3B1 X3RyYW5zY29kZXIpOwo+IEBAIC0xNDQ4NCwyOCArMTQ1MDUsNjQgQEAgc3RhdGljIHZvaWQgaW50 ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQlkcm1fY3J0Y192 Ymxhbmtfb24oJmNydGMtPmJhc2UpOwo+ICAJfQo+ICAKPiArCS8qIHNldCB1cCBjdXJyZW50IHN0 YXRlICovCj4gKwlpZiAoIWZvcmNlX3Jlc3RvcmUgJiYgaHdfc3RhdGUtPmJhc2UuYWN0aXZlKSB7 Cj4gKwkJYm9vbCBlbmFibGU7Cj4gKwo+ICsJCW1lbWNweShwaXBlX2NvbmZpZywgaHdfc3RhdGUs IHNpemVvZigqcGlwZV9jb25maWcpKTsKPiArCQlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVw bGljYXRlX3N0YXRlKCZjcnRjLT5iYXNlLCAmcGlwZV9jb25maWctPmJhc2UpOwo+ICsJCXBpcGVf Y29uZmlnLT5iYXNlLnN0YXRlID0gc3RhdGU7Cj4gKwo+ICsJCWVuYWJsZSA9IGZhbHNlOwo+ICsJ CWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsICZjcnRjLT5iYXNlLCBpbnRlbF9lbmNvZGVy KQo+ICsJCQllbmFibGUgfD0gaW50ZWxfZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmU7Cj4gKwo+ ICsJCXBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSA9ICEhZW5hYmxlOwo+ICsJfQo+ICsKPiAgCS8q IFdlIG5lZWQgdG8gc2FuaXRpemUgdGhlIHBsYW5lIC0+IHBpcGUgbWFwcGluZyBmaXJzdCBiZWNh dXNlIHRoaXMgd2lsbAo+ICAJICogZGlzYWJsZSB0aGUgY3J0YyAoYW5kIGhlbmNlIGNoYW5nZSB0 aGUgc3RhdGUpIGlmIGl0IGlzIHdyb25nLiBOb3RlCj4gIAkgKiB0aGF0IGdlbjQrIGhhcyBhIGZp eGVkIHBsYW5lIC0+IHBpcGUgbWFwcGluZy4gICovCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPCA0ICYmICFpbnRlbF9jaGVja19wbGFuZV9tYXBwaW5nKGNydGMpKSB7Cj4gLQkJYm9vbCBw bGFuZTsKPiAtCj4gIAkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdIHdyb25nIHBsYW5lIGNvbm5l Y3Rpb24gZGV0ZWN0ZWQhXG4iLAo+ICAJCQkgICAgICBjcnRjLT5iYXNlLmJhc2UuaWQpOwo+ICAK PiAgCQkvKiBQaXBlIGhhcyB0aGUgd3JvbmcgcGxhbmUgYXR0YWNoZWQgYW5kIHRoZSBwbGFuZSBp cyBhY3RpdmUuCj4gIAkJICogVGVtcG9yYXJpbHkgY2hhbmdlIHRoZSBwbGFuZSBtYXBwaW5nIGFu ZCBkaXNhYmxlIGV2ZXJ5dGhpbmcKPiAgCQkgKiAuLi4gICovCj4gLQkJcGxhbmUgPSBjcnRjLT5w bGFuZTsKPiAtCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShjcnRjLT5iYXNlLnByaW1hcnktPnN0YXRl KS0+dmlzaWJsZSA9IHRydWU7Cj4gLQkJY3J0Yy0+YmFzZS5wcmltYXJ5LT5jcnRjID0gJmNydGMt PmJhc2U7Cj4gLQkJY3J0Yy0+cGxhbmUgPSAhcGxhbmU7Cj4gLQkJaW50ZWxfY3J0Y19jb250cm9s KCZjcnRjLT5iYXNlLCBmYWxzZSwgdHJ1ZSk7Cj4gLQkJY3J0Yy0+cGxhbmUgPSBwbGFuZTsKPiAr CQlod19zdGF0ZS0+cXVpcmtzIHw9Cj4gKwkJCVBJUEVfQ09ORklHX1FVSVJLX1dST05HX1BMQU5F Owo+ICsKPiArCQljcnRjLT5wbGFuZSA9ICFjcnRjLT5wbGFuZTsKPiArCj4gKwkJaWYgKGZvcmNl X3Jlc3RvcmUpCj4gKwkJCXBpcGVfY29uZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4g KwkJZWxzZQo+ICsJCQlwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgPSBmYWxzZTsKPiAgCX0KPiAg Cj4gLQlpZiAoZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJUEVBX0ZPUkNFICYmCj4gLQkgICAg Y3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYgKCFwaXBlX2NvbmZpZyB8fCAhcGlwZV9jb25maWctPmJh c2UuYWN0aXZlKSkgewo+ICsJLyogWFhYOiBUaGlzIGlzIG5vdCBhY3RpdmUgcmlnaHQgbm93ICov Cj4gKwlpZiAoaHdfc3RhdGUtPmJhc2UuYWN0aXZlICYmIHBpcGVfY29uZmlnLT5iYXNlLmFjdGl2 ZSAmJgo+ICsJICAgICFpOTE1LmZhc3Rib290KSB7Cj4gKwkJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgc3dfc3RhdGU7Cj4gKwo+ICsJCW1lbXNldCgmc3dfc3RhdGUsIDAsIHNpemVvZihzd19zdGF0 ZSkpOwo+ICsJCXN3X3N0YXRlLmJhc2UgPSBwaXBlX2NvbmZpZy0+YmFzZTsKPiArCQlzd19zdGF0 ZS5zY2FsZXJfc3RhdGUgPSBwaXBlX2NvbmZpZy0+c2NhbGVyX3N0YXRlOwo+ICsJCXN3X3N0YXRl LnNoYXJlZF9kcGxsID0gcGlwZV9jb25maWctPnNoYXJlZF9kcGxsOwo+ICsJCXN3X3N0YXRlLmRw bGxfaHdfc3RhdGUgPSBwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZTsKPiArCQlzd19zdGF0ZS5k ZGlfcGxsX3NlbCA9IHBpcGVfY29uZmlnLT5kZGlfcGxsX3NlbDsKPiArCj4gKwkJaW50ZWxfbW9k ZXNldF9waXBlX2NvbmZpZygmY3J0Yy0+YmFzZSwgJnN3X3N0YXRlKTsKPiArCj4gKwkJLyogQ2hl Y2sgaWYgd2UgbmVlZCB0byBmb3JjZSBhIG1vZGVzZXQgKi8KPiArCQlpZiAoIWludGVsX3BpcGVf Y29uZmlnX2NvbXBhcmUoZGV2LCAmc3dfc3RhdGUsIGh3X3N0YXRlLCB0cnVlKSkKPiArCQkJcGlw ZV9jb25maWctPmJhc2UubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiArCX0KPiArCj4gKwo+ICsJaWYg KGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSVBFQV9GT1JDRSAmJiAhaHdfc3RhdGUtPmJhc2Uu YWN0aXZlICYmCj4gKwkgICAgY3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYgIXBpcGVfY29uZmlnLT5i YXNlLmFjdGl2ZSkgewo+ICAJCS8qIEJJT1MgZm9yZ290IHRvIGVuYWJsZSBwaXBlIEEsIHRoaXMg bW9zdGx5IGhhcHBlbnMgYWZ0ZXIKPiAgCQkgKiByZXN1bWUuIEZvcmNlLWVuYWJsZSB0aGUgcGlw ZSB0byBmaXggdGhpcywgdGhlIHVwZGF0ZV9kcG1zCj4gIAkJICogY2FsbCBiZWxvdyB3ZSByZXN0 b3JlIHRoZSBwaXBlIHRvIHRoZSByaWdodCBzdGF0ZSwgYnV0IGxlYXZlCj4gQEAgLTE0NTEzLDE5 ICsxNDU3MCwyNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJCWludGVsX2VuYWJsZV9waXBlX2EoZGV2KTsKPiAgCX0KPiAgCj4g LQkvKiBBZGp1c3QgdGhlIHN0YXRlIG9mIHRoZSBvdXRwdXQgcGlwZSBhY2NvcmRpbmcgdG8gd2hl dGhlciB3ZQo+IC0JICogaGF2ZSBhY3RpdmUgY29ubmVjdG9ycy9lbmNvZGVycyAqLwo+IC0JZW5h YmxlID0gZmFsc2U7Cj4gLQlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCAmY3J0Yy0+YmFz ZSwgaW50ZWxfZW5jb2RlcikKPiAtCQllbmFibGUgfD0gaW50ZWxfZW5jb2Rlci0+Y29ubmVjdG9y c19hY3RpdmU7Cj4gKwkvKiBub3QgcmVzdG9yaW5nIHN0YXRlLCBraWxsIG9mZiBhbGwgY29ubmVj dG9ycyBhbmQgZGlzYWJsZSB0aGlzIHRoaW5nICovCj4gKwlpZiAoIWZvcmNlX3Jlc3RvcmUgJiYg IXBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSkgewo+ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uX3N0YXRlOwo+ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4g KwkJaW50IGksIHJldDsKPiAgCj4gLQkvKiBvbmx5IHR1cm4gb2ZmIHNlcGFyYXRlbHkgaWYgY29u ZmlndXJhdGlvbidzIG5vdCByZXN0b3JlZCwKPiAtCSAqIGlmIGl0J3MgcmVzdG9yZWQgaXQgd2ls bCBjaGFuZ2UgbW9kZSBvciB0dXJuIG9mZiBhbnl3YXkuCj4gLQkgKi8KPiAtCWlmICghZW5hYmxl ICYmIGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSAmJiAhcGlwZV9jb25maWcpCj4gLQkJaW50ZWxf Y3J0Y19jb250cm9sKCZjcnRjLT5iYXNlLCBmYWxzZSwgdHJ1ZSk7Cj4gKwkJcmV0ID0gZHJtX2F0 b21pY19zZXRfbW9kZV9mb3JfY3J0YygmcGlwZV9jb25maWctPmJhc2UsIE5VTEwpOwo+ICsKPiAr CQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubl9zdGF0 ZSwgaSkgewo+ICsJCQlpZiAoY29ubl9zdGF0ZS0+Y3J0YyAhPSAmY3J0Yy0+YmFzZSkKPiArCQkJ CWNvbnRpbnVlOwo+ICAKPiAtCWlmIChjcnRjLT5hY3RpdmUgfHwgSEFTX0dNQ0hfRElTUExBWShk ZXYpKSB7Cj4gKwkJCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25u X3N0YXRlLCBOVUxMKTsKPiArCQkJV0FSTl9PTihyZXQpOwo+ICsJCX0KPiArCX0KPiArCj4gKwlp ZiAoaHdfc3RhdGUtPmJhc2UuYWN0aXZlIHx8IEhBU19HTUNIX0RJU1BMQVkoZGV2KSkgewo+ICAJ CS8qCj4gIAkJICogV2Ugc3RhcnQgb3V0IHdpdGggdW5kZXJydW4gcmVwb3J0aW5nIGRpc2FibGVk IHRvIGF2b2lkIHJhY2VzLgo+ICAJCSAqIEZvciBjb3JyZWN0IGJvb2trZWVwaW5nIG1hcmsgdGhp cyBvbiBhY3RpdmUgY3J0Y3MuCj4gQEAgLTE0NTgxLDYgKzE0NjQzLDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfc2FuaXRpemVfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAg CQlmb3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKPiAgCQkJaWYgKGNv bm5lY3Rvci0+ZW5jb2RlciAhPSBlbmNvZGVyKQo+ICAJCQkJY29udGludWU7Cj4gKwo+ICAJCQlj b25uZWN0b3ItPmJhc2UuZHBtcyA9IERSTV9NT0RFX0RQTVNfT0ZGOwo+ICAJCQljb25uZWN0b3It PmJhc2UuZW5jb2RlciA9IE5VTEw7Cj4gIAkJfQo+IEBAIC0xNDg4Nyw3ICsxNDk1MCw3IEBAIHZv aWQgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHNoYXJlZF9k cGxsc1tJOTE1X05VTV9QTExTXTsKPiAtCWludCBpOwo+ICsJaW50IGksIHJldDsKPiAgCj4gIAlz dGF0ZSA9IGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShkZXYpOwo+ICAJaWYgKElTX0VS UihzdGF0ZSkpIHsKPiBAQCAtMTQ4OTcsNiArMTQ5NjAsNyBAQCB2b2lkIGludGVsX21vZGVzZXRf c2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAkvKiBzd2FwIHN3 L2h3IHN0YXRlICovCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKGRldiwgc3RhdGUp Owo+ICsKPiAgCWludGVsX2F0b21pY19kdXBsaWNhdGVfZHBsbF9zdGF0ZShkZXZfcHJpdiwgc2hh cmVkX2RwbGxzKTsKPiAgCWludGVsX3NoYXJlZF9kcGxsX2NvbW1pdChzdGF0ZSk7Cj4gIAltZW1j cHkodG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+c2hhcmVkX2RwbGwsCj4gQEAgLTE0OTE5 LDMxICsxNDk4MywxOSBAQCB2b2lkIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCQljcnRjX3N0YXRlLT5wbGFuZXNfY2hhbmdlZCA9IGZhbHNl Owo+ICAKPiAgCQlpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSkgewo+IC0JCQlpbnRlbF9tb2RlX2Zy b21fcGlwZV9jb25maWcoJmNydGMtPnN0YXRlLT5tb2RlLAo+ICsJCQlpbnRlbF9tb2RlX2Zyb21f cGlwZV9jb25maWcoJmNydGMtPm1vZGUsCj4gIAkJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PnN0YXRlKSk7Cj4gIAkJCWludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZygmY3J0Yy0+c3RhdGUt PmFkanVzdGVkX21vZGUsCj4gIAkJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7 Cj4gIAo+IC0JCQlkcm1fbW9kZV9jb3B5KCZjcnRjLT5tb2RlLCAmY3J0Yy0+c3RhdGUtPm1vZGUp Owo+ICsJCQlpZiAoZHJtX2F0b21pY19zZXRfbW9kZV9mb3JfY3J0YyhjcnRjLT5zdGF0ZSwgJmNy dGMtPm1vZGUpKQo+ICsJCQkJZHJtX21vZGVfY29weSgmY3J0Yy0+c3RhdGUtPm1vZGUsICZjcnRj LT5tb2RlKTsKPiArCj4gIAkJCWRybV9tb2RlX2NvcHkoJmNydGMtPmh3bW9kZSwKPiAgCQkJCSAg ICAgICZjcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7Cj4gLQo+IC0JCQkvKiBDaGVjayBpZiB3 ZSBuZWVkIHRvIGZvcmNlIGEgbW9kZXNldCAqLwo+IC0JCQlpZiAodG9faW50ZWxfY3J0Y19zdGF0 ZShjcnRjX3N0YXRlKS0+aGFzX2F1ZGlvICE9Cj4gLQkJCSAgICB0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKS0+aGFzX2F1ZGlvKQo+IC0JCQkJY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2Vk ID0gdHJ1ZTsKPiAtCj4gLQkJCWlmICh0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5o YXNfaW5mb2ZyYW1lICE9Cj4gLQkJCSAgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRl KS0+aGFzX2luZm9mcmFtZSkKPiAtCQkJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7 Cj4gIAkJfQo+ICAKPiAtCQlpbnRlbF9zYW5pdGl6ZV9jcnRjKGludGVsX2NydGMsICFmb3JjZV9y ZXN0b3JlID8gTlVMTCA6Cj4gLQkJCQkgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRl KSk7Cj4gLQo+IC0JCS8qIHR1cm4gQ1JUQyBvZmYgaWYgYSBtb2Rlc2V0IGlzIHJlcXVlc3RlZC4g Ki8KPiAtCQlpZiAoY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkICYmICFmb3JjZV9yZXN0b3JlKQo+ IC0JCQlpbnRlbF9jcnRjX2NvbnRyb2woY3J0YywgZmFsc2UsIHRydWUpOwo+ICsJCWludGVsX3Nh bml0aXplX2NydGMoaW50ZWxfY3J0YywgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKSwg Zm9yY2VfcmVzdG9yZSk7Cj4gIAo+ICAJCS8qCj4gIAkJICogc2FuaXRpemVfY3J0YyBtYXkgaGF2 ZSBmb3JjZWQgYW4gdXBkYXRlIG9mIGNydGMtPnN0YXRlLAo+IEBAIC0xNDk3MywxNyArMTUwMjUs MTAgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAllbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikpCj4gIAkJaWxrX3dtX2dldF9o d19zdGF0ZShkZXYpOwo+ICAKPiAtCWlmIChmb3JjZV9yZXN0b3JlKSB7Cj4gLQkJaW50IHJldDsK PiAtCj4gLQkJaTkxNV9yZWRpc2FibGVfdmdhKGRldik7Cj4gLQo+IC0JCXJldCA9IGRybV9hdG9t aWNfY29tbWl0KHN0YXRlKTsKPiAtCQlpZiAocmV0KSB7Cj4gLQkJCURSTV9FUlJPUigiRmFpbGVk IHRvIHJlc3RvcmUgcHJldmlvdXMgbW9kZVxuIik7Cj4gLQkJCWRybV9hdG9taWNfc3RhdGVfZnJl ZShzdGF0ZSk7Cj4gLQkJfQo+IC0JfSBlbHNlIHsKPiArCWk5MTVfcmVkaXNhYmxlX3ZnYShkZXYp Owo+ICsJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+ICsJaWYgKHJldCkgewo+ICsJ CURSTV9FUlJPUigiRmFpbGVkIHRvIHJlc3RvcmUgcHJldmlvdXMgbW9kZVxuIik7Cj4gIAkJZHJt X2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiBpbmRleCAyYmY2ODczYTViODkuLjJkMTliNWQ2N2Q5ZCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gQEAgLTMzMCw2ICszMzAsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSB7Cj4gICNkZWZpbmUgUElQRV9DT05GSUdfUVVJUktfTU9ERV9TWU5DX0ZMQUdTCSgxPDww KSAvKiB1bnJlbGlhYmxlIHN5bmMgbW9kZS5mbGFncyAqLwo+ICAjZGVmaW5lIFBJUEVfQ09ORklH X1FVSVJLX0lOSEVSSVRFRF9NT0RFCSgxPDwxKSAvKiBtb2RlIGluaGVyaXRlZCBmcm9tIGZpcm13 YXJlICovCj4gICNkZWZpbmUgUElQRV9DT05GSUdfUVVJUktfSU5JVElBTF9QTEFORVMJKDE8PDIp IC8qIHBsYW5lcyBhcmUgaW4gdW5rbm93biBzdGF0ZSAqLwo+ICsjZGVmaW5lIFBJUEVfQ09ORklH X1FVSVJLX1dST05HX1BMQU5FCQkoMTw8MykgLyogaW50ZWxfY3J0Yy0+cGxhbmUgaXMgd3Jvbmcg Ki8KPiAgCXVuc2lnbmVkIGxvbmcgcXVpcmtzOwo+ICAKPiAgCS8qIFBpcGUgc291cmNlIHNpemUg KGllLiBwYW5lbCBmaXR0ZXIgaW5wdXQgc2l6ZSkKPgo+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4g U291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==