From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v24 5/6] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Fri, 11 Jan 2019 14:22:42 +0000 Message-ID: <4c7fcf6c-3cf0-d06b-67b8-fbd05d8ffd27@linux.intel.com> References: <20190108151252.4214-6-tvrtko.ursulin@linux.intel.com> <20190108162927.5616-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id A57F26F733 for ; Fri, 11 Jan 2019 14:22:44 +0000 (UTC) In-Reply-To: <20190108162927.5616-1-tvrtko.ursulin@linux.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA4LzAxLzIwMTkgMTY6MjksIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+IEZyb206IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gCj4gV2Ugd2FudCB0byBhbGxv dyB1c2Vyc3BhY2UgdG8gcmVjb25maWd1cmUgdGhlIHN1YnNsaWNlIGNvbmZpZ3VyYXRpb24gb24g YQo+IHBlciBjb250ZXh0IGJhc2lzLgo+IAo+IFRoaXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBmdW5j dGlvbmFsIHJlcXVpcmVtZW50IG9mIHNodXR0aW5nIGRvd24gbm9uLVZNRQo+IGVuYWJsZWQgc3Vi LXNsaWNlcyBvbiBHZW4xMSBwYXJ0cy4KPiAKPiBUbyBkbyBzbywgd2UgZXhwb3NlIGEgY29udGV4 dCBwYXJhbWV0ZXIgdG8gYWxsb3cgYWRqdXN0bWVudCBvZiB0aGUgUlBDUwo+IHJlZ2lzdGVyIHN0 b3JlZCB3aXRoaW4gdGhlIGNvbnRleHQgaW1hZ2UgKGFuZCBjdXJyZW50bHkgbm90IGFjY2Vzc2li bGUgdmlhCj4gTFJJKS4KPiAKPiBJZiB0aGUgY29udGV4dCBpcyBhZGp1c3RlZCBiZWZvcmUgZmly c3QgdXNlIG9yIHdoaWxzdCBpZGxlLCB0aGUgYWRqdXN0bWVudAo+IGlzIGZvciAiZnJlZSI7IG90 aGVyd2lzZSBpZiB0aGUgY29udGV4dCBpcyBhY3RpdmUgd2UgcXVldWUgYSByZXF1ZXN0IHRvIGRv Cj4gc28gKHVzaW5nIHRoZSBrZXJuZWwgY29udGV4dCksIGZvbGxvd2luZyBhbGwgb3RoZXIgYWN0 aXZpdHkgYnkgdGhhdAo+IGNvbnRleHQsIHdoaWNoIGlzIGFsc28gbWFya2VkIGFzIGJhcnJpZXIg Zm9yIGFsbCBmb2xsb3dpbmcgc3VibWlzc2lvbgo+IGFnYWluc3QgdGhlIHNhbWUgY29udGV4dC4K PiAKPiBTaW5jZSB0aGUgb3ZlcmhlYWQgb2YgZGV2aWNlIHJlLWNvbmZpZ3VyYXRpb24gZHVyaW5n IGNvbnRleHQgc3dpdGNoaW5nIGNhbgo+IGJlIHNpZ25pZmljYW50LCBlc3BlY2lhbGx5IGluIG11 bHRpLWNvbnRleHQgd29ya2xvYWRzLCB3ZSBsaW1pdCB0aGlzIG5ldwo+IHVBUEkgdG8gb25seSBz dXBwb3J0IHRoZSBHZW4xMSBWTUUgdXNlIGNhc2UuIEluIHRoaXMgdXNlIGNhc2UgZWl0aGVyIHRo ZQo+IGRldmljZSBpcyBmdWxseSBlbmFibGVkLCBhbmQgZXhhY3RseSBvbmUgc2xpY2UgYW5kIGhh bGYgb2YgdGhlIHN1YnNsaWNlcwo+IGFyZSBlbmFibGVkLgo+IAo+IEV4YW1wbGUgdXNhZ2U6Cj4g Cj4gCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHNzZXUgPSB7IH07Cj4g CXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPQo+IAkJeyAucGFyYW0gPSBJ OTE1X0NPTlRFWFRfUEFSQU1fU1NFVSwKPiAJCSAgLmN0eF9pZCA9IGdlbV9jb250ZXh0X2NyZWF0 ZShmZCksCj4gCQkgIC5zaXplID0gc2l6ZW9mKHNzZXUpLAo+IAkJICAudmFsdWUgPSB0b191c2Vy X3BvaW50ZXIoJnNzZXUpCj4gCQl9Owo+IAo+IAkvKiBRdWVyeSBkZXZpY2UgZGVmYXVsdHMuICov Cj4gCWdlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyk7Cj4gCj4gCS8qIFNldCBWTUUgY29u ZmlndXJhdGlvbiBvbiBhIDF4Nng4IHBhcnQuICovCj4gCXNzZXUuc2xpY2VfbWFzayA9IDB4MTsK PiAJc3NldS5zdWJzbGljZV9tYXNrID0gMHhlMDsKPiAJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZk LCAmYXJnKTsKPiAKPiB2MjogRml4IG9mZnNldCBvZiBDVFhfUl9QV1JfQ0xLX1NUQVRFIGluIGlu dGVsX2xyX2NvbnRleHRfc2V0X3NzZXUoKSAoTGlvbmVsKQo+IAo+IHYzOiBBZGQgYWJpbGl0eSB0 byBwcm9ncmFtIHRoaXMgcGVyIGVuZ2luZSAoQ2hyaXMpCj4gCj4gdjQ6IE1vdmUgbW9zdCBnZXRf c3NldSgpIGludG8gaTkxNV9nZW1fY29udGV4dC5jIChMaW9uZWwpCj4gCj4gdjU6IFZhbGlkYXRl IHNzZXUgY29uZmlndXJhdGlvbiBhZ2FpbnN0IHRoZSBkZXZpY2UncyBjYXBhYmlsaXRpZXMgKExp b25lbCkKPiAKPiB2NjogQ2hhbmdlIGNvbnRleHQgcG93ZXJnYXRpbmcgc2V0dGluZ3MgdGhyb3Vn aCBNSV9TRE0gb24ga2VybmVsIGNvbnRleHQgKENocmlzKQo+IAo+IHY3OiBTeW5jaHJvbml6ZSB0 aGUgcmVxdWVzdHMgZm9sbG93aW5nIGEgcG93ZXJnYXRpbmcgc2V0dGluZyBjaGFuZ2UgdXNpbmcg YSBnbG9iYWwKPiAgICAgIGRlcGVuZGVuY3kgKENocmlzKQo+ICAgICAgSXRlcmF0ZSB0aW1lbGlu ZXMgdGhyb3VnaCBkZXZfcHJpdi5ndC5hY3RpdmVfcmluZ3MgKFR2cnRrbykKPiAgICAgIERpc2Fi bGUgUlBDUyBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIG5vbiBjYXBhYmxlIHVzZXJzIChMaW9u ZWwvVHZydGtvKQo+IAo+IHY4OiBzL3VuaW9uIGludGVsX3NzZXUvc3RydWN0IGludGVsX3NzZXUv IChMaW9uZWwpCj4gICAgICBzL2Rldl9wcml2L2k5MTUvIChUdnJ0a28pCj4gICAgICBDaGFuZ2Ug dWFwaSBjbGFzcy9pbnN0YW5jZSBmaWVsZHMgdG8gdTE2IChUdnJ0a28pCj4gICAgICBCdW1wIG1h c2sgZmllbGRzIHRvIDY0Yml0cyAoTGlvbmVsKQo+ICAgICAgRG9uJ3QgcmV0dXJuIEVQRVJNIHdo ZW4gZHluYW1pYyBzc2V1IGlzIGRpc2FibGVkIChUdnJ0a28pCj4gCj4gdjk6IEltcG9ydCBjb250 ZXh0IGltYWdlIGludG8ga2VybmVsIGNvbnRleHQncyBwcGd0dCBvbmx5IHdoZW4KPiAgICAgIHJl Y29uZmlndXJpbmcgcG93ZXJnYXRlZCBzbGljZS9zdWJzbGljZXMgKENocmlzKQo+ICAgICAgVXNl IGFsaWFzaW5nIHBwZ3R0IHdoZW4gbmVlZGVkIChNaWNoZWwpCj4gCj4gVHZydGtvIFVyc3VsaW46 Cj4gCj4gdjEwOgo+ICAgKiBVcGRhdGUgZm9yIHVwc3RyZWFtIGNoYW5nZXMuCj4gICAqIFJlcXVl c3Qgc3VibWl0IG5lZWRzIGEgUlBNIHJlZmVyZW5jZS4KPiAgICogUmVqZWN0IG9uICFGVUxMX1BQ R1RUIGZvciBzaW1wbGljaXR5Lgo+ICAgKiBQdWxsIG91dCBnZXQvc2V0IHBhcmFtIHRvIGhlbHBl cnMgZm9yIHJlYWRhYmlsaXR5IGFuZCBsZXNzIGluZGVudC4KPiAgICogVXNlIGk5MTVfcmVxdWVz dF9hd2FpdF9kbWFfZmVuY2UgaW4gYWRkX2dsb2JhbF9iYXJyaWVyIHRvIHNraXAgd2FpdHMKPiAg ICAgb24gdGhlIHNhbWUgdGltZWxpbmUgYW5kIGF2b2lkIEdFTV9CVUdfT04uCj4gICAqIE5vIG5l ZWQgdG8gZXhwbGljaXRseSBhc3NpZ24gYSBOVUxMIHBvaW50ZXIgdG8gZW5naW5lIGluIGxlZ2Fj eSBtb2RlLgo+ICAgKiBObyBuZWVkIHRvIG1vdmUgZ2VuOF9tYWtlX3JwY3MgdXAuCj4gICAqIEZh Y3RvcmVkIG91dCBnbG9iYWwgYmFycmllciBhcyBwcmVwIHBhdGNoLgo+ICAgKiBBbGxvdyB0byBv bmx5IENBUF9TWVNfQURNSU4gaWYgIUdlbjExLgo+IAo+IHYxMToKPiAgICogUmVtb3ZlIGVuZ2lu ZSB2ZnVuYyBpbiBmYXZvdXIgb2YgbG9jYWwgaGVscGVyLiAoQ2hyaXMgV2lsc29uKQo+ICAgKiBT dG9wIHJldGlyaW5nIHJlcXVlc3RzIGJlZm9yZSB1cGRhdGVzIHNpbmNlIGl0IGlzIG5vdCBuZWVk ZWQKPiAgICAgKENocmlzIFdpbHNvbikKPiAgICogSW1wbGVtZW50IGRpcmVjdCBDUFUgdXBkYXRl IHBhdGggZm9yIGlkbGUgY29udGV4dHMuIChDaHJpcyBXaWxzb24pCj4gICAqIExlZnQgc2lkZSBk ZXBlbmRlbmN5IG5lZWRzIG9ubHkgYmUgb24gdGhlIHNhbWUgY29udGV4dCB0aW1lbGluZS4KPiAg ICAgKENocmlzIFdpbHNvbikKPiAgICogSXQgaXMgc3VmZmljaWVudCB0byBvcmRlciB0aGUgdGlt ZWxpbmUuIChDaHJpcyBXaWxzb24pCj4gICAqIFJlamVjdCAhUkNTIGNvbmZpZ3VyYXRpb24gYXR0 ZW1wdHMgd2l0aCAtRU5PREVWIGZvciBub3cuCj4gCj4gdjEyOgo+ICAgKiBSZWJhc2UgZm9yIG1h a2VfcnBjcy4KPiAKPiB2MTM6Cj4gICAqIENlbnRyYWxpemUgU1NFVSBub3JtYWxpemF0aW9uIHRv IG1ha2VfcnBjcy4KPiAgICogVHlwZSB3aWR0aCBjaGVja2luZyAodUFQSSA8LT4gaW1wbGVtZW50 YXRpb24pLgo+ICAgKiBHZW4xMSByZXN0cmljdGlvbnMgdUFQSSBjaGVja3MuCj4gICAqIEdlbjEx IHN1YnNsaWNlIGNvdW50IGRpZmZlcmVuY2VzIGhhbmRsaW5nLgo+ICAgQ2hyaXMgV2lsc29uOgo+ ICAgKiBhcmdzLT5zaXplIGhhbmRsaW5nIGZpeGVzLgo+ICAgKiBVcGRhdGUgY29udGV4dCBpbWFn ZSBmcm9tIEdHVFQuCj4gICAqIFBvc3Rwb25lIGNvbnRleHQgaW1hZ2UgdXBkYXRlIHRvIHBpbm5p bmcuCj4gICAqIFVzZSBpOTE1X2dlbV9hY3RpdmVfcmF3IGluc3RlYWQgb2YgbGFzdF9yZXF1ZXN0 X29uX2VuZ2luZS4KPiAKPiB2MTQ6Cj4gICAqIEFkZCBhY3Rpdml0eSB0cmFja2VyIG9uIGludGVs X2NvbnRleHQgdG8gZml4IHRoZSBsaWZldGltZSBpc3N1ZXMKPiAgICAgYW5kIHNpbXBsaWZ5IHRo ZSBjb2RlLiAoQ2hyaXMgV2lsc29uKQo+IAo+IHYxNToKPiAgICogRml4IGNvbnRleHQgcGluIGxl YWsgaWYgbm8gc3BhY2UgaW4gcmluZyBieSBzaW1wbGlmeWluZyB0aGUKPiAgICAgY29udGV4dCBw aW5uaW5nIHNlcXVlbmNlLgo+IAo+IHYxNjoKPiAgICogUmViYXNlIGZvciBjb250ZXh0IGdldC9z ZXQgcGFyYW0gbG9ja2luZyBjaGFuZ2VzLgo+ICAgKiBKdXN0IC1FTk9ERVYgb24gIUdlbjExLiAo Sm9vbmFzKQo+IAo+IHYxNzoKPiAgICogRml4IG9uZSBHZW4xMSBzdWJzbGljZSBlbmFibGVtZW50 IHJ1bGUuCj4gICAqIEhhbmRsZSBlcnJvciBmcm9tIGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVu Y2VfZ2ZwLiAoQ2hyaXMgV2lsc29uKQo+IAo+IHYxODoKPiAgICogVXBkYXRlIGNvbW1pdCBtZXNz YWdlLiAoSm9vbmFzKQo+ICAgKiBSZXN0cmljdCB1QVBJIHRvIFZNRSB1c2UgY2FzZS4gKEpvb25h cykKPiAKPiB2MTk6Cj4gICAqIFJlYmFzZS4KPiAKPiB2MjA6Cj4gICAqIFJlYmFzZSBmb3IgY2Ut PmFjdGl2ZV90cmFja2VyLgo+IAo+IHYyMToKPiAgICogUmViYXNlIGZvciBJU19HRU4gY2hhbmdl cy4KPiAKPiB2MjI6Cj4gICAqIFJlc2VydmUgdUFQSSBmb3IgZmxhZ3Mgc3RyYWlnaHQgYXdheS4g KENocmlzIFdpbHNvbikKPiAKPiB2MjM6Cj4gICAqIFJlYmFzZSBmb3IgUlVOVElNRV9JTkZPLgo+ IAo+IHYyNDoKPiAgICogQWRkZWQgc29tZSBoZWFkbGluZSBkb2NzIGZvciB0aGUgdWFwaSB1c2Fn ZS4gKEpvb25hcy9DaHJpcykKPiAKPiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9w Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODk5Cj4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVl ZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzYzNAo+IElzc3VlOiBodHRwczovL2dpdGh1 Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2lzc3Vlcy8yNjcKPiBTaWduZWQtb2ZmLWJ5OiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBTaWduZWQtb2ZmLWJ5OiBMaW9u ZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Cj4gQ2M6IERtaXRy eSBSb2dvemhraW4gPGRtaXRyeS52LnJvZ296aGtpbkBpbnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gQ2M6IFpoaXBlbmcgR29uZyA8emhp cGVuZy5nb25nQGludGVsLmNvbT4KPiBDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGlu ZW5AbGludXguaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0 a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPiAjIHYyMQo+IFJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAzNDEgKysrKysrKysrKysrKysrKysrKysrKyst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggfCAgIDYgKwo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICA0ICstCj4gICBpbmNs dWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgfCAgNjQgKysrKysKPiAgIDQgZmls ZXMgY2hhbmdlZCwgNDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IGE1NjU2NDNlOWEyNi4uMWFi N2Q2OTgwYzM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ IEBAIC05MCw2ICs5MCw3IEBACj4gICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gICAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKPiAgICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCj4gKyNpbmNsdWRl ICJpbnRlbF9scmNfcmVnLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfd29ya2Fyb3VuZHMuaCIKPiAg IAo+ICAgI2RlZmluZSBBTExfTDNfU0xJQ0VTKGRldikgKDEgPDwgTlVNX0wzX1NMSUNFUyhkZXYp KSAtIDEKPiBAQCAtMzIyLDYgKzMyMywxNSBAQCBzdGF0aWMgdTMyIGRlZmF1bHRfZGVzY190ZW1w bGF0ZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAlyZXR1cm4gZGVz YzsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZCBpbnRlbF9jb250ZXh0X3JldGlyZShzdHJ1Y3Qg aTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCj4gKwkJCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp Cj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9Cj4gKwkJY29udGFpbmVyX29mKGFj dGl2ZSwgdHlwZW9mKCpjZSksIGFjdGl2ZV90cmFja2VyKTsKPiArCj4gKwlpbnRlbF9jb250ZXh0 X3VucGluKGNlKTsKPiArfQo+ICsKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Cj4gICBfX2NyZWF0ZV9od19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgIAkJICAgIHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdikKPiBA QCAtMzQ1LDYgKzM1NSw4IEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAgCQljZS0+Z2VtX2NvbnRleHQgPSBjdHg7Cj4gICAJCS8qIFVz ZSB0aGUgd2hvbGUgZGV2aWNlIGJ5IGRlZmF1bHQgKi8KPiAgIAkJY2UtPnNzZXUgPSBpbnRlbF9k ZXZpY2VfZGVmYXVsdF9zc2V1KGRldl9wcml2KTsKPiArCj4gKwkJaW5pdF9yZXF1ZXN0X2FjdGl2 ZSgmY2UtPmFjdGl2ZV90cmFja2VyLCBpbnRlbF9jb250ZXh0X3JldGlyZSk7Cj4gICAJfQo+ICAg Cj4gICAJSU5JVF9SQURJWF9UUkVFKCZjdHgtPmhhbmRsZXNfdm1hLCBHRlBfS0VSTkVMKTsKPiBA QCAtODQyLDYgKzg1NCw1NiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4g ICAKPiArc3RhdGljIGludCBnZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ ICsJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCj4gK3sKPiAr CXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKPiArCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZTsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKGFyZ3MtPnNpemUgPT0gMCkKPiArCQlnb3RvIG91 dDsKPiArCWVsc2UgaWYgKGFyZ3MtPnNpemUgPCBzaXplb2YodXNlcl9zc2V1KSkKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0X3Rv X3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwKPiArCQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQo+ICsJ CXJldHVybiAtRUZBVUxUOwo+ICsKPiArCWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1 LnJzdmQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZW5naW5lID0gaW50ZWxfZW5naW5l X2xvb2t1cF91c2VyKGN0eC0+aTkxNSwKPiArCQkJCQkgIHVzZXJfc3NldS5jbGFzcywKPiArCQkJ CQkgIHVzZXJfc3NldS5pbnN0YW5jZSk7Cj4gKwlpZiAoIWVuZ2luZSkKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiArCj4gKwkvKiBPbmx5IHVzZSBmb3IgbXV0ZXggaGVyZSBpcyB0byBzZXJpYWxpemUg Z2V0X3BhcmFtIGFuZCBzZXRfcGFyYW0uICovCj4gKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJl dHVybiByZXQ7Cj4gKwo+ICsJY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKPiAr Cj4gKwl1c2VyX3NzZXUuc2xpY2VfbWFzayA9IGNlLT5zc2V1LnNsaWNlX21hc2s7Cj4gKwl1c2Vy X3NzZXUuc3Vic2xpY2VfbWFzayA9IGNlLT5zc2V1LnN1YnNsaWNlX21hc2s7Cj4gKwl1c2VyX3Nz ZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsK PiArCXVzZXJfc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IGNlLT5zc2V1Lm1heF9ldXNfcGVy X3N1YnNsaWNlOwo+ICsKPiArCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiArCj4gKwlpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1 ZSksICZ1c2VyX3NzZXUsCj4gKwkJCSBzaXplb2YodXNlcl9zc2V1KSkpCj4gKwkJcmV0dXJuIC1F RkFVTFQ7Cj4gKwo+ICtvdXQ6Cj4gKwlhcmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3NldSk7Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gICBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJh bV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkJCSAgICBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gICB7Cj4gQEAgLTg1NCwxNSArOTE2LDE3IEBAIGludCBp OTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCj4gICAJaWYgKCFjdHgpCj4gICAJCXJldHVybiAtRU5PRU5UOwo+ICAgCj4gLQlh cmdzLT5zaXplID0gMDsKPiAgIAlzd2l0Y2ggKGFyZ3MtPnBhcmFtKSB7Cj4gICAJY2FzZSBJOTE1 X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAgIAkJcmV0ID0gLUVJTlZBTDsKPiAgIAkJYnJl YWs7Cj4gICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVST01BUDoKPiArCQlhcmdzLT5z aXplID0gMDsKPiAgIAkJYXJncy0+dmFsdWUgPSB0ZXN0X2JpdChVQ09OVEVYVF9OT19aRVJPTUFQ LCAmY3R4LT51c2VyX2ZsYWdzKTsKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSBJOTE1X0NPTlRFWFRf UEFSQU1fR1RUX1NJWkU6Cj4gKwkJYXJncy0+c2l6ZSA9IDA7Cj4gKwo+ICAgCQlpZiAoY3R4LT5w cGd0dCkKPiAgIAkJCWFyZ3MtPnZhbHVlID0gY3R4LT5wcGd0dC0+dm0udG90YWw7Cj4gICAJCWVs c2UgaWYgKHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQpCj4gQEAgLTg3MSwxNCArOTM1 LDIwIEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+ Z2d0dC52bS50b3RhbDsKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1f Tk9fRVJST1JfQ0FQVFVSRToKPiArCQlhcmdzLT5zaXplID0gMDsKPiAgIAkJYXJncy0+dmFsdWUg PSBpOTE1X2dlbV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUoY3R4KTsKPiAgIAkJYnJlYWs7Cj4g ICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOTkFCTEU6Cj4gKwkJYXJncy0+c2l6ZSA9IDA7 Cj4gICAJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4dF9pc19iYW5uYWJsZShjdHgpOwo+ ICAgCQlicmVhazsKPiAgIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWToKPiArCQlh cmdzLT5zaXplID0gMDsKPiAgIAkJYXJncy0+dmFsdWUgPSBjdHgtPnNjaGVkLnByaW9yaXR5ID4+ IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKPiAgIAkJYnJlYWs7Cj4gKwljYXNlIEk5MTVfQ09O VEVYVF9QQVJBTV9TU0VVOgo+ICsJCXJldCA9IGdldF9zc2V1KGN0eCwgYXJncyk7Cj4gKwkJYnJl YWs7Cj4gICAJZGVmYXVsdDoKPiAgIAkJcmV0ID0gLUVJTlZBTDsKPiAgIAkJYnJlYWs7Cj4gQEAg LTg4OCw2ICs5NTgsMjcxIEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJcmV0dXJuIHJldDsKPiAgIH0K PiAgIAo+ICtzdGF0aWMgaW50IGdlbjhfZW1pdF9ycGNzX2NvbmZpZyhzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gKwkJCQkgc3RydWN0 IGludGVsX3NzZXUgc3NldSkKPiArewo+ICsJdTY0IG9mZnNldDsKPiArCXUzMiAqY3M7Cj4gKwo+ ICsJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0KTsKPiArCWlmIChJU19FUlIoY3MpKQo+ICsJ CXJldHVybiBQVFJfRVJSKGNzKTsKPiArCj4gKwlvZmZzZXQgPSBjZS0+c3RhdGUtPm5vZGUuc3Rh cnQgKwo+ICsJCUxSQ19TVEFURV9QTiAqIFBBR0VfU0laRSArCj4gKwkJKENUWF9SX1BXUl9DTEtf U1RBVEUgKyAxKSAqIDQ7Cj4gKwo+ICsJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8 IE1JX1VTRV9HR1RUOwo+ICsJKmNzKysgPSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7Cj4gKwkqY3Mr KyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKPiArCSpjcysrID0gZ2VuOF9tYWtlX3JwY3MocnEt Pmk5MTUsICZzc2V1KTsKPiArCj4gKwlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtnZW44X21vZGlmeV9ycGNzX2dw dShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gKwkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCj4gKwkJICAgICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKPiArCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLCAqcHJldjsKPiArCWludCByZXQ7Cj4gKwo+ICsJR0VNX0JVR19PTigh Y2UtPnBpbl9jb3VudCk7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gKwo+ICsJLyogU3VibWl0dGluZyByZXF1ZXN0cyBldGMgbmVlZHMgdGhl IGh3IGF3YWtlLiAqLwo+ICsJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwo+ICsJcnEg PSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1LT5rZXJuZWxfY29udGV4dCk7Cj4gKwlp ZiAoSVNfRVJSKHJxKSkgewo+ICsJCXJldCA9IFBUUl9FUlIocnEpOwo+ICsJCWdvdG8gb3V0X3B1 dDsKPiArCX0KPiArCj4gKwkvKiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRlciBhbGwgb3RoZXIgYWN0 aXZpdHkgYnkgdGhpcyBjb250ZXh0LiAqLwo+ICsJcHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXco JmNlLT5yaW5nLT50aW1lbGluZS0+bGFzdF9yZXF1ZXN0LAo+ICsJCQkJICAgJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICsJaWYgKHByZXYgJiYgIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocHJl dikpIHsKPiArCQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1 Ym1pdCwKPiArCQkJCQkJICAgICAgICZwcmV2LT5zdWJtaXQsCj4gKwkJCQkJCSAgICAgICBJOTE1 X0ZFTkNFX0dGUCk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCWdvdG8gb3V0X2FkZDsKPiArCX0K PiArCj4gKwlyZXQgPSBnZW44X2VtaXRfcnBjc19jb25maWcocnEsIGNlLCBzc2V1KTsKPiArCWlm IChyZXQpCj4gKwkJZ290byBvdXRfYWRkOwo+ICsKPiArCS8qIE9yZGVyIGFsbCBmb2xsb3dpbmcg cmVxdWVzdHMgdG8gYmUgYWZ0ZXIuICovCj4gKwlpOTE1X3RpbWVsaW5lX3NldF9iYXJyaWVyKGNl LT5yaW5nLT50aW1lbGluZSwgcnEpOwo+ICsKPiArCS8qCj4gKwkgKiBHdWFyYW50ZWUgY29udGV4 dCBpbWFnZSBhbmQgdGhlIHRpbWVsaW5lIHJlbWFpbnMgcGlubmVkIHVudGlsIHRoZQo+ICsJICog bW9kaWZ5aW5nIHJlcXVlc3QgaXMgcmV0aXJlZCBieSBzZXR0aW5nIHRoZSBjZSBhY3Rpdml0eSB0 cmFja2VyLgo+ICsJICoKPiArCSAqIEJ1dCB3ZSBvbmx5IG5lZWQgdG8gdGFrZSBvbmUgcGluIG9u IHRoZSBhY2NvdW50IG9mIGl0LiBPciBpbiBvdGhlcgo+ICsJICogd29yZHMgdHJhbnNmZXIgdGhl IHBpbm5lZCBjZSBvYmplY3QgdG8gdHJhY2tlZCBhY3RpdmUgcmVxdWVzdC4KPiArCSAqLwo+ICsJ aWYgKCFpOTE1X2dlbV9hY3RpdmVfaXNzZXQoJmNlLT5hY3RpdmVfdHJhY2tlcikpCj4gKwkJX19p bnRlbF9jb250ZXh0X3BpbihjZSk7Cj4gKwlpOTE1X2dlbV9hY3RpdmVfc2V0KCZjZS0+YWN0aXZl X3RyYWNrZXIsIHJxKTsKPiArCj4gK291dF9hZGQ6Cj4gKwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsK PiArb3V0X3B1dDoKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICsKPiArCXJldHVy biByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiAraTkxNV9nZW1fY29udGV4dF9yZWNvbmZp Z3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gKwkJCQkgIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArCQkJCSAgc3RydWN0IGludGVsX3NzZXUgc3NldSkK PiArewo+ICsJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgs IGVuZ2luZSk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCUdFTV9CVUdfT04oSU5URUxfR0VOKGN0eC0+ aTkxNSkgPCA4KTsKPiArCUdFTV9CVUdfT04oZW5naW5lLT5pZCAhPSBSQ1MpOwo+ICsKPiArCXJl dCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwkvKiBOb3RoaW5nIHRvIGRv IGlmIHVubW9kaWZpZWQuICovCj4gKwlpZiAoIW1lbWNtcCgmY2UtPnNzZXUsICZzc2V1LCBzaXpl b2Yoc3NldSkpKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCS8qCj4gKwkgKiBJZiBjb250ZXh0IGlz IG5vdCBpZGxlIHdlIGhhdmUgdG8gc3VibWl0IGFuIG9yZGVyZWQgcmVxdWVzdCB0byBtb2RpZnkK PiArCSAqIGl0cyBjb250ZXh0IGltYWdlIHZpYSB0aGUga2VybmVsIGNvbnRleHQuIFByaXN0aW5l IGFuZCBpZGxlIGNvbnRleHRzCj4gKwkgKiB3aWxsIGJlIGNvbmZpZ3VyZWQgb24gcGlubmluZy4K PiArCSAqLwo+ICsJaWYgKGNlLT5waW5fY291bnQpCj4gKwkJcmV0ID0gZ2VuOF9tb2RpZnlfcnBj c19ncHUoY2UsIGVuZ2luZSwgc3NldSk7Cj4gKwo+ICsJaWYgKCFyZXQpCj4gKwkJY2UtPnNzZXUg PSBzc2V1Owo+ICsKPiArb3V0Ogo+ICsJbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiAr dXNlcl90b19jb250ZXh0X3NzZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJ ICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSAqdXNlciwK PiArCQkgICAgIHN0cnVjdCBpbnRlbF9zc2V1ICpjb250ZXh0KQo+ICt7Cj4gKwljb25zdCBzdHJ1 Y3Qgc3NldV9kZXZfaW5mbyAqZGV2aWNlID0gJlJVTlRJTUVfSU5GTyhpOTE1KS0+c3NldTsKPiAr Cj4gKwkvKiBObyB6ZXJvcyBpbiBhbnkgZmllbGQuICovCj4gKwlpZiAoIXVzZXItPnNsaWNlX21h c2sgfHwgIXVzZXItPnN1YnNsaWNlX21hc2sgfHwKPiArCSAgICAhdXNlci0+bWluX2V1c19wZXJf c3Vic2xpY2UgfHwgIXVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlKQo+ICsJCXJldHVybiAtRUlO VkFMOwo+ICsKPiArCS8qIE1heCA+IG1pbi4gKi8KPiArCWlmICh1c2VyLT5tYXhfZXVzX3Blcl9z dWJzbGljZSA8IHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlKQo+ICsJCXJldHVybiAtRUlOVkFM Owo+ICsKPiArCS8qIENoZWNrIHZhbGlkaXR5IGFnYWluc3QgaGFyZHdhcmUuICovCj4gKwlpZiAo dXNlci0+c2xpY2VfbWFzayAmIH5kZXZpY2UtPnNsaWNlX21hc2spCj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gKwo+ICsJaWYgKHVzZXItPnN1YnNsaWNlX21hc2sgJiB+ZGV2aWNlLT5zdWJzbGljZV9t YXNrWzBdKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmICh1c2VyLT5tYXhfZXVzX3Bl cl9zdWJzbGljZSA+IGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpCj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICsJLyoKPiArCSAqIFNvbWUgZnV0dXJlIHByb29maW5nIG9uIHRoZSB0eXBl cyBzaW5jZSB0aGUgdUFQSSBpcyB3aWRlciB0aGFuIHRoZQo+ICsJICogY3VycmVudCBpbnRlcm5h bCBpbXBsZW1lbnRhdGlvbi4KPiArCSAqLwo+ICsJaWYgKFdBUk5fT04oKGZscyh1c2VyLT5zbGlj ZV9tYXNrKSA+Cj4gKwkJICAgICBzaXplb2YoY29udGV4dC0+c2xpY2VfbWFzaykgKiBCSVRTX1BF Ul9CWVRFKSB8fAo+ICsJCSAgICAoZmxzKHVzZXItPnN1YnNsaWNlX21hc2spID4KPiArCQkgICAg IHNpemVvZihjb250ZXh0LT5zdWJzbGljZV9tYXNrKSAqIEJJVFNfUEVSX0JZVEUpIHx8Cj4gKwkJ ICAgIG92ZXJmbG93c190eXBlKHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlLAo+ICsJCQkJICAg Y29udGV4dC0+bWluX2V1c19wZXJfc3Vic2xpY2UpIHx8Cj4gKwkJICAgIG92ZXJmbG93c190eXBl KHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlLAo+ICsJCQkJICAgY29udGV4dC0+bWF4X2V1c19w ZXJfc3Vic2xpY2UpKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwljb250ZXh0LT5zbGlj ZV9tYXNrID0gdXNlci0+c2xpY2VfbWFzazsKPiArCWNvbnRleHQtPnN1YnNsaWNlX21hc2sgPSB1 c2VyLT5zdWJzbGljZV9tYXNrOwo+ICsJY29udGV4dC0+bWluX2V1c19wZXJfc3Vic2xpY2UgPSB1 c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZTsKPiArCWNvbnRleHQtPm1heF9ldXNfcGVyX3N1YnNs aWNlID0gdXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2U7Cj4gKwo+ICsJLyogUGFydCBzcGVjaWZp YyByZXN0cmljdGlvbnMuICovCj4gKwlpZiAoSVNfR0VOKGk5MTUsIDExKSkgewo+ICsJCXVuc2ln bmVkIGludCBod19zID0gaHdlaWdodDgoZGV2aWNlLT5zbGljZV9tYXNrKTsKPiArCQl1bnNpZ25l ZCBpbnQgaHdfc3NfcGVyX3MgPSBod2VpZ2h0OChkZXZpY2UtPnN1YnNsaWNlX21hc2tbMF0pOwo+ ICsJCXVuc2lnbmVkIGludCByZXFfcyA9IGh3ZWlnaHQ4KGNvbnRleHQtPnNsaWNlX21hc2spOwo+ ICsJCXVuc2lnbmVkIGludCByZXFfc3MgPSBod2VpZ2h0OChjb250ZXh0LT5zdWJzbGljZV9tYXNr KTsKPiArCj4gKwkJLyoKPiArCQkgKiBPbmx5IGZ1bGwgc3Vic2xpY2UgZW5hYmxlbWVudCBpcyBw b3NzaWJsZSBpZiBtb3JlIHRoYW4gb25lCj4gKwkJICogc2xpY2UgaXMgdHVybmVkIG9uLgo+ICsJ CSAqLwo+ICsJCWlmIChyZXFfcyA+IDEgJiYgcmVxX3NzICE9IGh3X3NzX3Blcl9zKQo+ICsJCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkJLyoKPiArCQkgKiBJZiBtb3JlIHRoYW4gZm91ciAoU1Nj b3VudCBiaXRmaWVsZCBsaW1pdCkgc3Vic2xpY2VzIGFyZQo+ICsJCSAqIHJlcXVlc3RlZCB0aGVu IHRoZSBudW1iZXIgaGFzIHRvIGJlIGV2ZW4uCj4gKwkJICovCj4gKwkJaWYgKHJlcV9zcyA+IDQg JiYgKHJlcV9zcyAmIDEpKQo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkJLyoKPiArCQkg KiBJZiBvbmx5IG9uZSBzbGljZSBpcyBlbmFibGVkIGFuZCBzdWJzbGljZSBjb3VudCBpcyBiZWxv dyB0aGUKPiArCQkgKiBkZXZpY2UgZnVsbCBlbmFibGVtZW50LCBpdCBtdXN0IGJlIGF0IG1vc3Qg aGFsZiBvZiB0aGUgYWxsCj4gKwkJICogYXZhaWxhYmxlIHN1YnNsaWNlcy4KPiArCQkgKi8KPiAr CQlpZiAocmVxX3MgPT0gMSAmJiByZXFfc3MgPCBod19zc19wZXJfcyAmJgo+ICsJCSAgICByZXFf c3MgPiAoaHdfc3NfcGVyX3MgLyAyKSkKPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJCS8q IEFCSSByZXN0cmljdGlvbiAtIFZNRSB1c2UgY2FzZSBvbmx5LiAqLwo+ICsKPiArCQkvKiBBbGwg c2xpY2VzIG9yIG9uZSBzbGljZSBvbmx5LiAqLwo+ICsJCWlmIChyZXFfcyAhPSAxICYmIHJlcV9z ICE9IGh3X3MpCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCQkvKgo+ICsJCSAqIEhhbGYg c3Vic2xpY2VzIG9yIGZ1bGwgZW5hYmxlbWVudCBvbmx5IHdoZW4gb25lIHNsaWNlIGlzCj4gKwkJ ICogZW5hYmxlZC4KPiArCQkgKi8KPiArCQlpZiAocmVxX3MgPT0gMSAmJgo+ICsJCSAgICAocmVx X3NzICE9IGh3X3NzX3Blcl9zICYmIHJlcV9zcyAhPSAoaHdfc3NfcGVyX3MgLyAyKSkpCj4gKwkJ CXJldHVybiAtRUlOVkFMOwo+ICsKPiArCQkvKiBObyBFVSBjb25maWd1cmF0aW9uIGNoYW5nZXMu ICovCj4gKwkJaWYgKCh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSAhPQo+ICsJCSAgICAgZGV2 aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkgfHwKPiArCQkgICAgKHVzZXItPm1heF9ldXNfcGVy X3N1YnNsaWNlICE9Cj4gKwkJICAgICBkZXZpY2UtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSkKPiAr CQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgc2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCQkgICAg c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiArCXN0cnVjdCBpbnRlbF9zc2V1IHNzZXU7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCWlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJfc3NldSkpCj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gKwo+ICsJaWYgKCFJU19HRU4oaTkxNSwgMTEpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ ICsKPiArCWlmIChjb3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9fdXNlcl9wdHIoYXJn cy0+dmFsdWUpLAo+ICsJCQkgICBzaXplb2YodXNlcl9zc2V1KSkpCj4gKwkJcmV0dXJuIC1FRkFV TFQ7Cj4gKwo+ICsJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1c2VyX3NzZXUucnN2ZCkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIo aTkxNSwKPiArCQkJCQkgIHVzZXJfc3NldS5jbGFzcywKPiArCQkJCQkgIHVzZXJfc3NldS5pbnN0 YW5jZSk7Cj4gKwlpZiAoIWVuZ2luZSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkvKiBP bmx5IHJlbmRlciBlbmdpbmUgc3VwcG9ydHMgUlBDUyBjb25maWd1cmF0aW9uLiAqLwo+ICsJaWYg KGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsK PiArCXJldCA9IHVzZXJfdG9fY29udGV4dF9zc2V1KGk5MTUsICZ1c2VyX3NzZXUsICZzc2V1KTsK PiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBpOTE1X2dlbV9jb250 ZXh0X3JlY29uZmlndXJlX3NzZXUoY3R4LCBlbmdpbmUsIHNzZXUpOwo+ICsJaWYgKHJldCkKPiAr CQlyZXR1cm4gcmV0Owo+ICsKPiArCWFyZ3MtPnNpemUgPSBzaXplb2YodXNlcl9zc2V1KTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFt X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJCQkJICAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgIHsKPiBAQCAtOTUwLDcgKzEyODUsOSBAQCBpbnQgaTkx NV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAo+ICAgCQkJCQlJOTE1X1VTRVJfUFJJT1JJVFkocHJpb3JpdHkpOwo+ICAgCQl9Cj4g ICAJCWJyZWFrOwo+IC0KPiArCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6Cj4gKwkJcmV0 ID0gc2V0X3NzZXUoY3R4LCBhcmdzKTsKPiArCQlicmVhazsKPiAgIAlkZWZhdWx0Ogo+ICAgCQly ZXQgPSAtRUlOVkFMOwo+ICAgCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5oCj4gaW5kZXggZWYwNGU0MjJjZjlhLi4yZGVkNGI4YzliOWYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gQEAgLTE3MSw2ICsxNzEsMTIgQEAg c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewo+ICAgCQl1NjQgbHJjX2Rlc2M7Cj4gICAJCWludCBw aW5fY291bnQ7Cj4gICAKPiArCQkvKioKPiArCQkgKiBhY3RpdmVfdHJhY2tlcjogQWN0aXZlIHRy YWNrZXIgZm9yIHRoZSBleHRlcm5hbCBycSBhY3Rpdml0eQo+ICsJCSAqIG9uIHRoaXMgaW50ZWxf Y29udGV4dCBvYmplY3QuCj4gKwkJICovCj4gKwkJc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSBhY3Rp dmVfdHJhY2tlcjsKPiArCj4gICAJCWNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyAqb3Bz Owo+ICAgCj4gICAJCS8qKiBzc2V1OiBDb250cm9sIGV1L3NsaWNlIHBhcnRpdGlvbmluZyAqLwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggYmNhMDlhNDk3ZjI3Li5lOWM2ODc2YTU4 OTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0yMzkyLDcgKzIzOTIsOSBA QCB1MzIgZ2VuOF9tYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVj dCBpbnRlbF9zc2V1ICpyZXFfc3NldSkKPiAgIAkgKiBzdWJzbGljZXMgYXJlIGVuYWJsZWQsIG9y IGEgY291bnQgYmV0d2VlbiBvbmUgYW5kIGZvdXIgb24gdGhlIGZpcnN0Cj4gICAJICogc2xpY2Uu Cj4gICAJICovCj4gLQlpZiAoSVNfR0VOKGk5MTUsIDExKSAmJiBzbGljZXMgPT0gMSAmJiBzdWJz bGljZXMgPj0gNCkgewo+ICsJaWYgKElTX0dFTihpOTE1LCAxMSkgJiYKPiArCSAgICBzbGljZXMg PT0gMSAmJgo+ICsJICAgIHN1YnNsaWNlcyA+IG1pbl90KHU4LCA0LCBod2VpZ2h0OChzc2V1LT5z dWJzbGljZV9tYXNrWzBdKSAvIDIpKSB7Cj4gICAJCUdFTV9CVUdfT04oc3Vic2xpY2VzICYgMSk7 Cj4gICAKPiAgIAkJc3Vic2xpY2VfcGcgPSBmYWxzZTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gaW5kZXgg Mjk4YjJlMTk3NzQ0Li41NWRjYmJmNTRjYjkgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gQEAgLTE0 ODYsOSArMTQ4Niw3MyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gewo+ICAg I2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWQkxMDIzIC8qIGluY2x1c2l2 ZSAqLwo+ICAgI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9ERUZBVUxUX1BSSU9SSVRZCQkwCj4gICAj ZGVmaW5lICAgSTkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9SSVRZCS0xMDIzIC8qIGluY2x1c2l2 ZSAqLwo+ICsJLyoKPiArCSAqIFdoZW4gdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbSwgdmFsdWUg c2hvdWxkIGJlIGEgcG9pbnRlciB0bwo+ICsJICogZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1f c3NldS4KPiArCSAqLwo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVCQkweDcKPiAg IAlfX3U2NCB2YWx1ZTsKPiAgIH07Cj4gICAKPiArLyoqCj4gKyAqIENvbnRleHQgU1NFVSBwcm9n cmFtbWluZwo+ICsgKgo+ICsgKiBJdCBtYXkgYmUgbmVjZXNzYXJ5IGZvciBlaXRoZXIgZnVuY3Rp b25hbCBvciBwZXJmb3JtYW5jZSByZWFzb24gdG8gY29uZmlndXJlCj4gKyAqIGEgY29udGV4dCB0 byBydW4gd2l0aCBhIHJlZHVjZWQgbnVtYmVyIG9mIFNTRVUgKHdoZXJlIFNTRVUgc3RhbmRzIGZv ciBTbGljZS8KPiArICogU3ViLXNsaWNlL0VVKS4KPiArICoKPiArICogVGhpcyBpcyBkb25lIGJ5 IGNvbmZpZ3VyaW5nIFNTRVUgY29uZmlndXJhdGlvbiB1c2luZyB0aGUgYmVsb3cKPiArICogQHN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IGZvciBldmVyeSBzdXBwb3J0ZWQg ZW5naW5lIHdoaWNoCj4gKyAqIHVzZXJzcGFjZSBpbnRlbmRzIHRvIHVzZS4KPiArICoKPiArICog Tm90IGFsbCBHUFVzIG9yIGVuZ2luZXMgc3VwcG9ydCB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4gd2hp Y2ggY2FzZSBhbiBlcnJvcgo+ICsgKiBjb2RlIC1FTk9ERVYgd2lsbCBiZSByZXR1cm5lZC4KPiAr ICoKPiArICogQWxzbywgZmxleGliaWxpdHkgb2YgcG9zc2libGUgU1NFVSBjb25maWd1cmF0aW9u IHBlcm11dGF0aW9ucyB2YXJpZXMgYmV0d2Vlbgo+ICsgKiBHUFUgZ2VuZXJhdGlvbnMgYW5kIHNv ZnR3YXJlIGltcG9zZWQgbGltaXRhdGlvbnMuIFJlcXVlc3Rpbmcgc3VjaCBhCj4gKyAqIGNvbWJp bmF0aW9uIHdpbGwgcmV0dXJuIGFuIGVycm9yIGNvZGUgb2YgLUVJTlZBTC4KPiArICoKPiArICog Tk9URTogV2hlbiBwZXJmL09BIGlzIGFjdGl2ZSB0aGUgY29udGV4dCdzIFNTRVUgY29uZmlndXJh dGlvbiBpcyBpZ25vcmVkIGluCj4gKyAqIGZhdm91ciBvZiBhIHNpbmdsZSBnbG9iYWwgc2V0dGlu Zy4KPiArICovCj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHsKPiAr CS8qCj4gKwkgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBiZSBjb25maWd1cmVkIG9yIHF1 ZXJpZWQuCj4gKwkgKi8KPiArCV9fdTE2IGNsYXNzOwoKSSBmb3Jnb3QgYWJvdXQgb25lIHJlcXVl c3QgdG8gcmVuYW1lIHRoaXMgZmllbGQgdG8gZW5naW5lX2NsYXNzIHRvIGF2b2lkIApDKysgcmVz ZXJ2ZWQga2V5d29yZC4KCkFueSBjb21wbGFpbnRzIGFnYWluc3QgYSByZXNwaW4gdG8gdGhpcyBl ZmZlY3Q/CgpJdCB0aGVuIG1ha2VzIHNlbnNlIHRvIHJlbmFtZSBpbnN0YW5jZSB0byBlbmdpbmVf aW5zdGFuY2UgYXMgd2VsbC4KClJlZ2FyZHMsCgpUdnJ0a28KCj4gKwlfX3UxNiBpbnN0YW5jZTsK PiArCj4gKwkvKgo+ICsJICogVW51c2VkIGZvciBub3cuIE11c3QgYmUgY2xlYXJlZCB0byB6ZXJv Lgo+ICsJICovCj4gKwlfX3UzMiBmbGFnczsKPiArCj4gKwkvKgo+ICsJICogTWFzayBvZiBzbGlj ZXMgdG8gZW5hYmxlIGZvciB0aGUgY29udGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhIHN1YnNldAo+ ICsJICogb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuZWQgZm9yIEk5MTVfUEFSQU1fU0xJQ0Vf TUFTSy4KPiArCSAqLwo+ICsJX191NjQgc2xpY2VfbWFzazsKPiArCj4gKwkvKgo+ICsJICogTWFz ayBvZiBzdWJzbGljZXMgdG8gZW5hYmxlIGZvciB0aGUgY29udGV4dC4gVmFsaWQgdmFsdWVzIGFy ZSBhCj4gKwkgKiBzdWJzZXQgb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuIGJ5IEk5MTVfUEFS QU1fU1VCU0xJQ0VfTUFTSy4KPiArCSAqLwo+ICsJX191NjQgc3Vic2xpY2VfbWFzazsKPiArCj4g KwkvKgo+ICsJICogTWluaW11bS9NYXhpbXVtIG51bWJlciBvZiBFVXMgdG8gZW5hYmxlIHBlciBz dWJzbGljZSBmb3IgdGhlCj4gKwkgKiBjb250ZXh0LiBtaW5fZXVzX3Blcl9zdWJzbGljZSBtdXN0 IGJlIGluZmVyaW9yIG9yIGVxdWFsIHRvCj4gKwkgKiBtYXhfZXVzX3Blcl9zdWJzbGljZS4KPiAr CSAqLwo+ICsJX191MTYgbWluX2V1c19wZXJfc3Vic2xpY2U7Cj4gKwlfX3UxNiBtYXhfZXVzX3Bl cl9zdWJzbGljZTsKPiArCj4gKwkvKgo+ICsJICogVW51c2VkIGZvciBub3cuIE11c3QgYmUgY2xl YXJlZCB0byB6ZXJvLgo+ICsJICovCj4gKwlfX3UzMiByc3ZkOwo+ICt9Owo+ICsKPiAgIGVudW0g ZHJtX2k5MTVfb2FfZm9ybWF0IHsKPiAgIAlJOTE1X09BX0ZPUk1BVF9BMTMgPSAxLAkgICAgLyog SFNXIG9ubHkgKi8KPiAgIAlJOTE1X09BX0ZPUk1BVF9BMjksCSAgICAvKiBIU1cgb25seSAqLwo+ IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK