From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH] drm/i915: split out intel_pch.[ch] from i915_drv.[ch] Date: Wed, 7 Aug 2019 07:21:59 -0700 Message-ID: <20190807142159.GA1761@intel.com> References: <20190807120415.17917-1-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 92D7E6E714 for ; Wed, 7 Aug 2019 14:21:28 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190807120415.17917-1-jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBdWcgMDcsIDIwMTkgYXQgMDM6MDQ6MTVQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gQWJzdHJhY3QgdGhlIHJhdGhlciBzZWxmLWNvbnRhaW5lZCBwaWVjZSBvZiBjb2RlIGZy b20gaTkxNV9kcnYuW2NoXS4gTm8KPiBmdW5jdGlvbmFsIGNoYW5nZXMuCj4gCj4gQ2M6IEpvc8Op IFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+IENjOiBEYW5pZWxlIENl cmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+CgpBY2tlZC1ieTogUm9k cmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgoKPiAtLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jICB8IDE5NCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICB8ICA2MCArLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcGNoLmMgfCAyMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wY2guaCB8ICA3MyArKysrKysrKysrKwo+ICA1 IGZpbGVzIGNoYW5nZWQsIDI3NiBpbnNlcnRpb25zKCspLCAyNTMgZGVsZXRpb25zKC0pCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wY2guYwo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGNoLmgKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQo+IGluZGV4IDhmZTE1N2Y3MTYxNy4uN2Y3MTA0MTVhNTI1IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtNDgsNiArNDgsNyBAQCBpOTE1LXkgKz0gaTkxNV9kcnYu byBcCj4gIAkgIGk5MTVfc3lzZnMubyBcCj4gIAkgIGludGVsX2Nzci5vIFwKPiAgCSAgaW50ZWxf ZGV2aWNlX2luZm8ubyBcCj4gKwkgIGludGVsX3BjaC5vIFwKPiAgCSAgaW50ZWxfcG0ubyBcCj4g IAkgIGludGVsX3J1bnRpbWVfcG0ubyBcCj4gIAkgIGludGVsX3NpZGViYW5kLm8gXAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDUzNTIwOWVlNDc0MS4uNTgwN2MxYTBkYWIxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTE1MCwyMDAgKzE1MCw2IEBAIF9faTkxNV9w cmludGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBjb25zdCBjaGFyICpsZXZl bCwKPiAgCX0KPiAgfQo+ICAKPiAtLyogTWFwIFBDSCBkZXZpY2UgaWQgdG8gUENIIHR5cGUsIG9y IFBDSF9OT05FIGlmIHVua25vd24uICovCj4gLXN0YXRpYyBlbnVtIGludGVsX3BjaAo+IC1pbnRl bF9wY2hfdHlwZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2ln bmVkIHNob3J0IGlkKQo+IC17Cj4gLQlzd2l0Y2ggKGlkKSB7Cj4gLQljYXNlIElOVEVMX1BDSF9J QlhfREVWSUNFX0lEX1RZUEU6Cj4gLQkJRFJNX0RFQlVHX0tNUygiRm91bmQgSWJleCBQZWFrIFBD SFxuIik7Cj4gLQkJV0FSTl9PTighSVNfR0VOKGRldl9wcml2LCA1KSk7Cj4gLQkJcmV0dXJuIFBD SF9JQlg7Cj4gLQljYXNlIElOVEVMX1BDSF9DUFRfREVWSUNFX0lEX1RZUEU6Cj4gLQkJRFJNX0RF QlVHX0tNUygiRm91bmQgQ291Z2FyUG9pbnQgUENIXG4iKTsKPiAtCQlXQVJOX09OKCFJU19HRU4o ZGV2X3ByaXYsIDYpICYmICFJU19JVllCUklER0UoZGV2X3ByaXYpKTsKPiAtCQlyZXR1cm4gUENI X0NQVDsKPiAtCWNhc2UgSU5URUxfUENIX1BQVF9ERVZJQ0VfSURfVFlQRToKPiAtCQlEUk1fREVC VUdfS01TKCJGb3VuZCBQYW50aGVyUG9pbnQgUENIXG4iKTsKPiAtCQlXQVJOX09OKCFJU19HRU4o ZGV2X3ByaXYsIDYpICYmICFJU19JVllCUklER0UoZGV2X3ByaXYpKTsKPiAtCQkvKiBQYW50aGVy UG9pbnQgaXMgQ1BUIGNvbXBhdGlibGUgKi8KPiAtCQlyZXR1cm4gUENIX0NQVDsKPiAtCWNhc2Ug SU5URUxfUENIX0xQVF9ERVZJQ0VfSURfVFlQRToKPiAtCQlEUk1fREVCVUdfS01TKCJGb3VuZCBM eW54UG9pbnQgUENIXG4iKTsKPiAtCQlXQVJOX09OKCFJU19IQVNXRUxMKGRldl9wcml2KSAmJiAh SVNfQlJPQURXRUxMKGRldl9wcml2KSk7Cj4gLQkJV0FSTl9PTihJU19IU1dfVUxUKGRldl9wcml2 KSB8fCBJU19CRFdfVUxUKGRldl9wcml2KSk7Cj4gLQkJcmV0dXJuIFBDSF9MUFQ7Cj4gLQljYXNl IElOVEVMX1BDSF9MUFRfTFBfREVWSUNFX0lEX1RZUEU6Cj4gLQkJRFJNX0RFQlVHX0tNUygiRm91 bmQgTHlueFBvaW50IExQIFBDSFxuIik7Cj4gLQkJV0FSTl9PTighSVNfSEFTV0VMTChkZXZfcHJp dikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpOwo+IC0JCVdBUk5fT04oIUlTX0hTV19VTFQo ZGV2X3ByaXYpICYmICFJU19CRFdfVUxUKGRldl9wcml2KSk7Cj4gLQkJcmV0dXJuIFBDSF9MUFQ7 Cj4gLQljYXNlIElOVEVMX1BDSF9XUFRfREVWSUNFX0lEX1RZUEU6Cj4gLQkJRFJNX0RFQlVHX0tN UygiRm91bmQgV2lsZGNhdFBvaW50IFBDSFxuIik7Cj4gLQkJV0FSTl9PTighSVNfSEFTV0VMTChk ZXZfcHJpdikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpOwo+IC0JCVdBUk5fT04oSVNfSFNX X1VMVChkZXZfcHJpdikgfHwgSVNfQkRXX1VMVChkZXZfcHJpdikpOwo+IC0JCS8qIFdpbGRjYXRQ b2ludCBpcyBMUFQgY29tcGF0aWJsZSAqLwo+IC0JCXJldHVybiBQQ0hfTFBUOwo+IC0JY2FzZSBJ TlRFTF9QQ0hfV1BUX0xQX0RFVklDRV9JRF9UWVBFOgo+IC0JCURSTV9ERUJVR19LTVMoIkZvdW5k IFdpbGRjYXRQb2ludCBMUCBQQ0hcbiIpOwo+IC0JCVdBUk5fT04oIUlTX0hBU1dFTEwoZGV2X3By aXYpICYmICFJU19CUk9BRFdFTEwoZGV2X3ByaXYpKTsKPiAtCQlXQVJOX09OKCFJU19IU1dfVUxU KGRldl9wcml2KSAmJiAhSVNfQkRXX1VMVChkZXZfcHJpdikpOwo+IC0JCS8qIFdpbGRjYXRQb2lu dCBpcyBMUFQgY29tcGF0aWJsZSAqLwo+IC0JCXJldHVybiBQQ0hfTFBUOwo+IC0JY2FzZSBJTlRF TF9QQ0hfU1BUX0RFVklDRV9JRF9UWVBFOgo+IC0JCURSTV9ERUJVR19LTVMoIkZvdW5kIFN1bnJp c2VQb2ludCBQQ0hcbiIpOwo+IC0JCVdBUk5fT04oIUlTX1NLWUxBS0UoZGV2X3ByaXYpICYmICFJ U19LQUJZTEFLRShkZXZfcHJpdikpOwo+IC0JCXJldHVybiBQQ0hfU1BUOwo+IC0JY2FzZSBJTlRF TF9QQ0hfU1BUX0xQX0RFVklDRV9JRF9UWVBFOgo+IC0JCURSTV9ERUJVR19LTVMoIkZvdW5kIFN1 bnJpc2VQb2ludCBMUCBQQ0hcbiIpOwo+IC0JCVdBUk5fT04oIUlTX1NLWUxBS0UoZGV2X3ByaXYp ICYmICFJU19LQUJZTEFLRShkZXZfcHJpdikpOwo+IC0JCXJldHVybiBQQ0hfU1BUOwo+IC0JY2Fz ZSBJTlRFTF9QQ0hfS0JQX0RFVklDRV9JRF9UWVBFOgo+IC0JCURSTV9ERUJVR19LTVMoIkZvdW5k IEthYnkgTGFrZSBQQ0ggKEtCUClcbiIpOwo+IC0JCVdBUk5fT04oIUlTX1NLWUxBS0UoZGV2X3By aXYpICYmICFJU19LQUJZTEFLRShkZXZfcHJpdikgJiYKPiAtCQkJIUlTX0NPRkZFRUxBS0UoZGV2 X3ByaXYpKTsKPiAtCQkvKiBLQlAgaXMgU1BUIGNvbXBhdGlibGUgKi8KPiAtCQlyZXR1cm4gUENI X1NQVDsKPiAtCWNhc2UgSU5URUxfUENIX0NOUF9ERVZJQ0VfSURfVFlQRToKPiAtCQlEUk1fREVC VUdfS01TKCJGb3VuZCBDYW5ub24gTGFrZSBQQ0ggKENOUClcbiIpOwo+IC0JCVdBUk5fT04oIUlT X0NBTk5PTkxBS0UoZGV2X3ByaXYpICYmICFJU19DT0ZGRUVMQUtFKGRldl9wcml2KSk7Cj4gLQkJ cmV0dXJuIFBDSF9DTlA7Cj4gLQljYXNlIElOVEVMX1BDSF9DTlBfTFBfREVWSUNFX0lEX1RZUEU6 Cj4gLQkJRFJNX0RFQlVHX0tNUygiRm91bmQgQ2Fubm9uIExha2UgTFAgUENIIChDTlAtTFApXG4i KTsKPiAtCQlXQVJOX09OKCFJU19DQU5OT05MQUtFKGRldl9wcml2KSAmJiAhSVNfQ09GRkVFTEFL RShkZXZfcHJpdikpOwo+IC0JCXJldHVybiBQQ0hfQ05QOwo+IC0JY2FzZSBJTlRFTF9QQ0hfQ01Q X0RFVklDRV9JRF9UWVBFOgo+IC0JCURSTV9ERUJVR19LTVMoIkZvdW5kIENvbWV0IExha2UgUENI IChDTVApXG4iKTsKPiAtCQlXQVJOX09OKCFJU19DT0ZGRUVMQUtFKGRldl9wcml2KSk7Cj4gLQkJ LyogQ29tZXRQb2ludCBpcyBDTlAgQ29tcGF0aWJsZSAqLwo+IC0JCXJldHVybiBQQ0hfQ05QOwo+ IC0JY2FzZSBJTlRFTF9QQ0hfSUNQX0RFVklDRV9JRF9UWVBFOgo+IC0JCURSTV9ERUJVR19LTVMo IkZvdW5kIEljZSBMYWtlIFBDSFxuIik7Cj4gLQkJV0FSTl9PTighSVNfSUNFTEFLRShkZXZfcHJp dikpOwo+IC0JCXJldHVybiBQQ0hfSUNQOwo+IC0JY2FzZSBJTlRFTF9QQ0hfTUNDX0RFVklDRV9J RF9UWVBFOgo+IC0JY2FzZSBJTlRFTF9QQ0hfTUNDMl9ERVZJQ0VfSURfVFlQRToKPiAtCQlEUk1f REVCVUdfS01TKCJGb3VuZCBNdWxlIENyZWVrIENhbnlvbiBQQ0hcbiIpOwo+IC0JCVdBUk5fT04o IUlTX0VMS0hBUlRMQUtFKGRldl9wcml2KSk7Cj4gLQkJcmV0dXJuIFBDSF9NQ0M7Cj4gLQljYXNl IElOVEVMX1BDSF9UR1BfREVWSUNFX0lEX1RZUEU6Cj4gLQkJRFJNX0RFQlVHX0tNUygiRm91bmQg VGlnZXIgTGFrZSBMUCBQQ0hcbiIpOwo+IC0JCVdBUk5fT04oIUlTX1RJR0VSTEFLRShkZXZfcHJp dikpOwo+IC0JCXJldHVybiBQQ0hfVEdQOwo+IC0JZGVmYXVsdDoKPiAtCQlyZXR1cm4gUENIX05P TkU7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN0YXRpYyBib29sIGludGVsX2lzX3ZpcnRfcGNoKHVuc2ln bmVkIHNob3J0IGlkLAo+IC0JCQkgICAgICB1bnNpZ25lZCBzaG9ydCBzdmVuZG9yLCB1bnNpZ25l ZCBzaG9ydCBzZGV2aWNlKQo+IC17Cj4gLQlyZXR1cm4gKGlkID09IElOVEVMX1BDSF9QMlhfREVW SUNFX0lEX1RZUEUgfHwKPiAtCQlpZCA9PSBJTlRFTF9QQ0hfUDNYX0RFVklDRV9JRF9UWVBFIHx8 Cj4gLQkJKGlkID09IElOVEVMX1BDSF9RRU1VX0RFVklDRV9JRF9UWVBFICYmCj4gLQkJIHN2ZW5k b3IgPT0gUENJX1NVQlZFTkRPUl9JRF9SRURIQVRfUVVNUkFORVQgJiYKPiAtCQkgc2RldmljZSA9 PSBQQ0lfU1VCREVWSUNFX0lEX1FFTVUpKTsKPiAtfQo+IC0KPiAtc3RhdGljIHVuc2lnbmVkIHNo b3J0Cj4gLWludGVsX3ZpcnRfZGV0ZWN0X3BjaChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCXVuc2lnbmVkIHNob3J0IGlkID0gMDsKPiAtCj4gLQkvKgo+ IC0JICogSW4gYSB2aXJ0dWFsaXplZCBwYXNzdGhyb3VnaCBlbnZpcm9ubWVudCB3ZSBjYW4gYmUg aW4gYQo+IC0JICogc2V0dXAgd2hlcmUgdGhlIElTQSBicmlkZ2UgaXMgbm90IGFibGUgdG8gYmUg cGFzc2VkIHRocm91Z2guCj4gLQkgKiBJbiB0aGlzIGNhc2UsIGEgc291dGggYnJpZGdlIGNhbiBi ZSBlbXVsYXRlZCBhbmQgd2UgaGF2ZSB0bwo+IC0JICogbWFrZSBhbiBlZHVjYXRlZCBndWVzcyBh cyB0byB3aGljaCBQQ0ggaXMgcmVhbGx5IHRoZXJlLgo+IC0JICovCj4gLQo+IC0JaWYgKElTX1RJ R0VSTEFLRShkZXZfcHJpdikpCj4gLQkJaWQgPSBJTlRFTF9QQ0hfVEdQX0RFVklDRV9JRF9UWVBF Owo+IC0JZWxzZSBpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQo+IC0JCWlkID0gSU5URUxf UENIX01DQ19ERVZJQ0VfSURfVFlQRTsKPiAtCWVsc2UgaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYp KQo+IC0JCWlkID0gSU5URUxfUENIX0lDUF9ERVZJQ0VfSURfVFlQRTsKPiAtCWVsc2UgaWYgKElT X0NBTk5PTkxBS0UoZGV2X3ByaXYpIHx8IElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKQo+IC0JCWlk ID0gSU5URUxfUENIX0NOUF9ERVZJQ0VfSURfVFlQRTsKPiAtCWVsc2UgaWYgKElTX0tBQllMQUtF KGRldl9wcml2KSB8fCBJU19TS1lMQUtFKGRldl9wcml2KSkKPiAtCQlpZCA9IElOVEVMX1BDSF9T UFRfREVWSUNFX0lEX1RZUEU7Cj4gLQllbHNlIGlmIChJU19IU1dfVUxUKGRldl9wcml2KSB8fCBJ U19CRFdfVUxUKGRldl9wcml2KSkKPiAtCQlpZCA9IElOVEVMX1BDSF9MUFRfTFBfREVWSUNFX0lE X1RZUEU7Cj4gLQllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwo ZGV2X3ByaXYpKQo+IC0JCWlkID0gSU5URUxfUENIX0xQVF9ERVZJQ0VfSURfVFlQRTsKPiAtCWVs c2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiAt CQlpZCA9IElOVEVMX1BDSF9DUFRfREVWSUNFX0lEX1RZUEU7Cj4gLQllbHNlIGlmIChJU19HRU4o ZGV2X3ByaXYsIDUpKQo+IC0JCWlkID0gSU5URUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQRTsKPiAt Cj4gLQlpZiAoaWQpCj4gLQkJRFJNX0RFQlVHX0tNUygiQXNzdW1pbmcgUENIIElEICUwNHhcbiIs IGlkKTsKPiAtCWVsc2UKPiAtCQlEUk1fREVCVUdfS01TKCJBc3N1bWluZyBubyBQQ0hcbiIpOwo+ IC0KPiAtCXJldHVybiBpZDsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgaW50ZWxfZGV0ZWN0X3Bj aChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCXN0cnVjdCBwY2lf ZGV2ICpwY2ggPSBOVUxMOwo+IC0KPiAtCS8qCj4gLQkgKiBUaGUgcmVhc29uIHRvIHByb2JlIElT QSBicmlkZ2UgaW5zdGVhZCBvZiBEZXYzMTpGdW4wIGlzIHRvCj4gLQkgKiBtYWtlIGdyYXBoaWNz IGRldmljZSBwYXNzdGhyb3VnaCB3b3JrIGVhc3kgZm9yIFZNTSwgdGhhdCBvbmx5Cj4gLQkgKiBu ZWVkIHRvIGV4cG9zZSBJU0EgYnJpZGdlIHRvIGxldCBkcml2ZXIga25vdyB0aGUgcmVhbCBoYXJk d2FyZQo+IC0JICogdW5kZXJuZWF0aC4gVGhpcyBpcyBhIHJlcXVpcmVtZW50IGZyb20gdmlydHVh bGl6YXRpb24gdGVhbS4KPiAtCSAqCj4gLQkgKiBJbiBzb21lIHZpcnR1YWxpemVkIGVudmlyb25t ZW50cyAoZS5nLiBYRU4pLCB0aGVyZSBpcyBpcnJlbGV2YW50Cj4gLQkgKiBJU0EgYnJpZGdlIGlu IHRoZSBzeXN0ZW0uIFRvIHdvcmsgcmVsaWFibHksIHdlIHNob3VsZCBzY2FuIHRyaG91Z2gKPiAt CSAqIGFsbCB0aGUgSVNBIGJyaWRnZSBkZXZpY2VzIGFuZCBjaGVjayBmb3IgdGhlIGZpcnN0IG1h dGNoLCBpbnN0ZWFkCj4gLQkgKiBvZiBvbmx5IGNoZWNraW5nIHRoZSBmaXJzdCBvbmUuCj4gLQkg Ki8KPiAtCXdoaWxlICgocGNoID0gcGNpX2dldF9jbGFzcyhQQ0lfQ0xBU1NfQlJJREdFX0lTQSA8 PCA4LCBwY2gpKSkgewo+IC0JCXVuc2lnbmVkIHNob3J0IGlkOwo+IC0JCWVudW0gaW50ZWxfcGNo IHBjaF90eXBlOwo+IC0KPiAtCQlpZiAocGNoLT52ZW5kb3IgIT0gUENJX1ZFTkRPUl9JRF9JTlRF TCkKPiAtCQkJY29udGludWU7Cj4gLQo+IC0JCWlkID0gcGNoLT5kZXZpY2UgJiBJTlRFTF9QQ0hf REVWSUNFX0lEX01BU0s7Cj4gLQo+IC0JCXBjaF90eXBlID0gaW50ZWxfcGNoX3R5cGUoZGV2X3By aXYsIGlkKTsKPiAtCQlpZiAocGNoX3R5cGUgIT0gUENIX05PTkUpIHsKPiAtCQkJZGV2X3ByaXYt PnBjaF90eXBlID0gcGNoX3R5cGU7Cj4gLQkJCWRldl9wcml2LT5wY2hfaWQgPSBpZDsKPiAtCQkJ YnJlYWs7Cj4gLQkJfSBlbHNlIGlmIChpbnRlbF9pc192aXJ0X3BjaChpZCwgcGNoLT5zdWJzeXN0 ZW1fdmVuZG9yLAo+IC0JCQkJCSBwY2gtPnN1YnN5c3RlbV9kZXZpY2UpKSB7Cj4gLQkJCWlkID0g aW50ZWxfdmlydF9kZXRlY3RfcGNoKGRldl9wcml2KTsKPiAtCQkJcGNoX3R5cGUgPSBpbnRlbF9w Y2hfdHlwZShkZXZfcHJpdiwgaWQpOwo+IC0KPiAtCQkJLyogU2FuaXR5IGNoZWNrIHZpcnR1YWwg UENIIGlkICovCj4gLQkJCWlmIChXQVJOX09OKGlkICYmIHBjaF90eXBlID09IFBDSF9OT05FKSkK PiAtCQkJCWlkID0gMDsKPiAtCj4gLQkJCWRldl9wcml2LT5wY2hfdHlwZSA9IHBjaF90eXBlOwo+ IC0JCQlkZXZfcHJpdi0+cGNoX2lkID0gaWQ7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAtCX0KPiAt Cj4gLQkvKgo+IC0JICogVXNlIFBDSF9OT1AgKFBDSCBidXQgbm8gU291dGggRGlzcGxheSkgZm9y IFBDSCBwbGF0Zm9ybXMgd2l0aG91dAo+IC0JICogZGlzcGxheS4KPiAtCSAqLwo+IC0JaWYgKHBj aCAmJiAhSEFTX0RJU1BMQVkoZGV2X3ByaXYpKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiRGlzcGxh eSBkaXNhYmxlZCwgcmV2ZXJ0aW5nIHRvIE5PUCBQQ0hcbiIpOwo+IC0JCWRldl9wcml2LT5wY2hf dHlwZSA9IFBDSF9OT1A7Cj4gLQkJZGV2X3ByaXYtPnBjaF9pZCA9IDA7Cj4gLQl9Cj4gLQo+IC0J aWYgKCFwY2gpCj4gLQkJRFJNX0RFQlVHX0tNUygiTm8gUENIIGZvdW5kLlxuIik7Cj4gLQo+IC0J cGNpX2Rldl9wdXQocGNoKTsKPiAtfQo+IC0KPiAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJCSAgICAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKPiAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGlu ZGV4IDdkNDI0ZGRkMzUyMy4uNDNiMGQxNDlkMTE0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gQEAgLTc3LDYgKzc3LDcgQEAKPiAgI2luY2x1ZGUgImd0L3VjL2ludGVsX3VjLmgiCj4g IAo+ICAjaW5jbHVkZSAiaW50ZWxfZGV2aWNlX2luZm8uaCIKPiArI2luY2x1ZGUgImludGVsX3Bj aC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfcnVudGltZV9wbS5oIgo+ICAjaW5jbHVkZSAiaW50ZWxf dW5jb3JlLmgiCj4gICNpbmNsdWRlICJpbnRlbF93YWtlcmVmLmgiCj4gQEAgLTUyOCwyNSArNTI5 LDYgQEAgc3RydWN0IGk5MTVfcHNyIHsKPiAgCXUxNiBzdV94X2dyYW51bGFyaXR5Owo+ICB9Owo+ ICAKPiAtLyoKPiAtICogU29ydGVkIGJ5IHNvdXRoIGRpc3BsYXkgZW5naW5lIGNvbXBhdGliaWxp dHkuCj4gLSAqIElmIHRoZSBuZXcgUENIIGNvbWVzIHdpdGggYSBzb3V0aCBkaXNwbGF5IGVuZ2lu ZSB0aGF0IGlzIG5vdAo+IC0gKiBpbmhlcml0ZWQgZnJvbSB0aGUgbGF0ZXN0IGl0ZW0sIHBsZWFz ZSBkbyBub3QgYWRkIGl0IHRvIHRoZQo+IC0gKiBlbmQuIEluc3RlYWQsIGFkZCBpdCByaWdodCBh ZnRlciBpdHMgInBhcmVudCIgUENILgo+IC0gKi8KPiAtZW51bSBpbnRlbF9wY2ggewo+IC0JUENI X05PUCA9IC0xLAkvKiBQQ0ggd2l0aG91dCBzb3V0aCBkaXNwbGF5ICovCj4gLQlQQ0hfTk9ORSA9 IDAsCS8qIE5vIFBDSCBwcmVzZW50ICovCj4gLQlQQ0hfSUJYLAkvKiBJYmV4cGVhayBQQ0ggKi8K PiAtCVBDSF9DUFQsCS8qIENvdWdhcnBvaW50L1BhbnRoZXJwb2ludCBQQ0ggKi8KPiAtCVBDSF9M UFQsCS8qIEx5bnhwb2ludC9XaWxkY2F0cG9pbnQgUENIICovCj4gLQlQQ0hfU1BULCAgICAgICAg LyogU3VucmlzZXBvaW50L0thYnkgTGFrZSBQQ0ggKi8KPiAtCVBDSF9DTlAsICAgICAgICAvKiBD YW5ub24vQ29tZXQgTGFrZSBQQ0ggKi8KPiAtCVBDSF9JQ1AsCS8qIEljZSBMYWtlIFBDSCAqLwo+ IC0JUENIX01DQywgICAgICAgIC8qIE11bGUgQ3JlZWsgQ2FueW9uIFBDSCAqLwo+IC0JUENIX1RH UCwJLyogVGlnZXIgTGFrZSBQQ0ggKi8KPiAtfTsKPiAtCj4gICNkZWZpbmUgUVVJUktfTFZEU19T U0NfRElTQUJMRSAoMTw8MSkKPiAgI2RlZmluZSBRVUlSS19JTlZFUlRfQlJJR0hUTkVTUyAoMTw8 MikKPiAgI2RlZmluZSBRVUlSS19CQUNLTElHSFRfUFJFU0VOVCAoMTw8MykKPiBAQCAtMjI5MSw0 NiArMjI3Myw2IEBAIElTX1NVQlBMQVRGT1JNKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAo+ICAKPiAgI2RlZmluZSBIQVNfR0xPQkFMX01PQ1NfUkVHSVNURVJTKGRldl9wcml2 KQkoSU5URUxfSU5GTyhkZXZfcHJpdiktPmhhc19nbG9iYWxfbW9jcykKPiAgCj4gLSNkZWZpbmUg SU5URUxfUENIX0RFVklDRV9JRF9NQVNLCQkweGZmODAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfSUJY X0RFVklDRV9JRF9UWVBFCQkweDNiMDAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfQ1BUX0RFVklDRV9J RF9UWVBFCQkweDFjMDAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfUFBUX0RFVklDRV9JRF9UWVBFCQkw eDFlMDAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBFCQkweDhjMDAKPiAt I2RlZmluZSBJTlRFTF9QQ0hfTFBUX0xQX0RFVklDRV9JRF9UWVBFCQkweDljMDAKPiAtI2RlZmlu ZSBJTlRFTF9QQ0hfV1BUX0RFVklDRV9JRF9UWVBFCQkweDhjODAKPiAtI2RlZmluZSBJTlRFTF9Q Q0hfV1BUX0xQX0RFVklDRV9JRF9UWVBFCQkweDljODAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfU1BU X0RFVklDRV9JRF9UWVBFCQkweEExMDAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfU1BUX0xQX0RFVklD RV9JRF9UWVBFCQkweDlEMDAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfS0JQX0RFVklDRV9JRF9UWVBF CQkweEEyODAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfQ05QX0RFVklDRV9JRF9UWVBFCQkweEEzMDAK PiAtI2RlZmluZSBJTlRFTF9QQ0hfQ05QX0xQX0RFVklDRV9JRF9UWVBFCQkweDlEODAKPiAtI2Rl ZmluZSBJTlRFTF9QQ0hfQ01QX0RFVklDRV9JRF9UWVBFCQkweDAyODAKPiAtI2RlZmluZSBJTlRF TF9QQ0hfSUNQX0RFVklDRV9JRF9UWVBFCQkweDM0ODAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfTUND X0RFVklDRV9JRF9UWVBFCQkweDRCMDAKPiAtI2RlZmluZSBJTlRFTF9QQ0hfTUNDMl9ERVZJQ0Vf SURfVFlQRQkJMHgzODgwCj4gLSNkZWZpbmUgSU5URUxfUENIX1RHUF9ERVZJQ0VfSURfVFlQRQkJ MHhBMDgwCj4gLSNkZWZpbmUgSU5URUxfUENIX1AyWF9ERVZJQ0VfSURfVFlQRQkJMHg3MTAwCj4g LSNkZWZpbmUgSU5URUxfUENIX1AzWF9ERVZJQ0VfSURfVFlQRQkJMHg3MDAwCj4gLSNkZWZpbmUg SU5URUxfUENIX1FFTVVfREVWSUNFX0lEX1RZUEUJCTB4MjkwMCAvKiBxZW11IHEzNSBoYXMgMjkx OCAqLwo+IC0KPiAtI2RlZmluZSBJTlRFTF9QQ0hfVFlQRShkZXZfcHJpdikgKChkZXZfcHJpdikt PnBjaF90eXBlKQo+IC0jZGVmaW5lIElOVEVMX1BDSF9JRChkZXZfcHJpdikgKChkZXZfcHJpdikt PnBjaF9pZCkKPiAtI2RlZmluZSBIQVNfUENIX01DQyhkZXZfcHJpdikgKElOVEVMX1BDSF9UWVBF KGRldl9wcml2KSA9PSBQQ0hfTUNDKQo+IC0jZGVmaW5lIEhBU19QQ0hfVEdQKGRldl9wcml2KSAo SU5URUxfUENIX1RZUEUoZGV2X3ByaXYpID09IFBDSF9UR1ApCj4gLSNkZWZpbmUgSEFTX1BDSF9J Q1AoZGV2X3ByaXYpIChJTlRFTF9QQ0hfVFlQRShkZXZfcHJpdikgPT0gUENIX0lDUCkKPiAtI2Rl ZmluZSBIQVNfUENIX0NOUChkZXZfcHJpdikgKElOVEVMX1BDSF9UWVBFKGRldl9wcml2KSA9PSBQ Q0hfQ05QKQo+IC0jZGVmaW5lIEhBU19QQ0hfU1BUKGRldl9wcml2KSAoSU5URUxfUENIX1RZUEUo ZGV2X3ByaXYpID09IFBDSF9TUFQpCj4gLSNkZWZpbmUgSEFTX1BDSF9MUFQoZGV2X3ByaXYpIChJ TlRFTF9QQ0hfVFlQRShkZXZfcHJpdikgPT0gUENIX0xQVCkKPiAtI2RlZmluZSBIQVNfUENIX0xQ VF9MUChkZXZfcHJpdikgXAo+IC0JKElOVEVMX1BDSF9JRChkZXZfcHJpdikgPT0gSU5URUxfUENI X0xQVF9MUF9ERVZJQ0VfSURfVFlQRSB8fCBcCj4gLQkgSU5URUxfUENIX0lEKGRldl9wcml2KSA9 PSBJTlRFTF9QQ0hfV1BUX0xQX0RFVklDRV9JRF9UWVBFKQo+IC0jZGVmaW5lIEhBU19QQ0hfTFBU X0goZGV2X3ByaXYpIFwKPiAtCShJTlRFTF9QQ0hfSUQoZGV2X3ByaXYpID09IElOVEVMX1BDSF9M UFRfREVWSUNFX0lEX1RZUEUgfHwgXAo+IC0JIElOVEVMX1BDSF9JRChkZXZfcHJpdikgPT0gSU5U RUxfUENIX1dQVF9ERVZJQ0VfSURfVFlQRSkKPiAtI2RlZmluZSBIQVNfUENIX0NQVChkZXZfcHJp dikgKElOVEVMX1BDSF9UWVBFKGRldl9wcml2KSA9PSBQQ0hfQ1BUKQo+IC0jZGVmaW5lIEhBU19Q Q0hfSUJYKGRldl9wcml2KSAoSU5URUxfUENIX1RZUEUoZGV2X3ByaXYpID09IFBDSF9JQlgpCj4g LSNkZWZpbmUgSEFTX1BDSF9OT1AoZGV2X3ByaXYpIChJTlRFTF9QQ0hfVFlQRShkZXZfcHJpdikg PT0gUENIX05PUCkKPiAtI2RlZmluZSBIQVNfUENIX1NQTElUKGRldl9wcml2KSAoSU5URUxfUENI X1RZUEUoZGV2X3ByaXYpICE9IFBDSF9OT05FKQo+ICAKPiAgI2RlZmluZSBIQVNfR01DSChkZXZf cHJpdikgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5kaXNwbGF5Lmhhc19nbWNoKQo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGNoLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wY2guYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAwMDAwLi5mYTg2NGQ4ZjJiNzMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcGNoLmMKPiBAQCAtMCwwICsxLDIwMSBAQAo+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogTUlUCj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE5IEludGVsIENvcnBv cmF0aW9uLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAi aW50ZWxfcGNoLmgiCj4gKwo+ICsvKiBNYXAgUENIIGRldmljZSBpZCB0byBQQ0ggdHlwZSwgb3Ig UENIX05PTkUgaWYgdW5rbm93bi4gKi8KPiArc3RhdGljIGVudW0gaW50ZWxfcGNoCj4gK2ludGVs X3BjaF90eXBlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdW5zaWdu ZWQgc2hvcnQgaWQpCj4gK3sKPiArCXN3aXRjaCAoaWQpIHsKPiArCWNhc2UgSU5URUxfUENIX0lC WF9ERVZJQ0VfSURfVFlQRToKPiArCQlEUk1fREVCVUdfS01TKCJGb3VuZCBJYmV4IFBlYWsgUENI XG4iKTsKPiArCQlXQVJOX09OKCFJU19HRU4oZGV2X3ByaXYsIDUpKTsKPiArCQlyZXR1cm4gUENI X0lCWDsKPiArCWNhc2UgSU5URUxfUENIX0NQVF9ERVZJQ0VfSURfVFlQRToKPiArCQlEUk1fREVC VUdfS01TKCJGb3VuZCBDb3VnYXJQb2ludCBQQ0hcbiIpOwo+ICsJCVdBUk5fT04oIUlTX0dFTihk ZXZfcHJpdiwgNikgJiYgIUlTX0lWWUJSSURHRShkZXZfcHJpdikpOwo+ICsJCXJldHVybiBQQ0hf Q1BUOwo+ICsJY2FzZSBJTlRFTF9QQ0hfUFBUX0RFVklDRV9JRF9UWVBFOgo+ICsJCURSTV9ERUJV R19LTVMoIkZvdW5kIFBhbnRoZXJQb2ludCBQQ0hcbiIpOwo+ICsJCVdBUk5fT04oIUlTX0dFTihk ZXZfcHJpdiwgNikgJiYgIUlTX0lWWUJSSURHRShkZXZfcHJpdikpOwo+ICsJCS8qIFBhbnRoZXJQ b2ludCBpcyBDUFQgY29tcGF0aWJsZSAqLwo+ICsJCXJldHVybiBQQ0hfQ1BUOwo+ICsJY2FzZSBJ TlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBFOgo+ICsJCURSTV9ERUJVR19LTVMoIkZvdW5kIEx5 bnhQb2ludCBQQ0hcbiIpOwo+ICsJCVdBUk5fT04oIUlTX0hBU1dFTEwoZGV2X3ByaXYpICYmICFJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKTsKPiArCQlXQVJOX09OKElTX0hTV19VTFQoZGV2X3ByaXYp IHx8IElTX0JEV19VTFQoZGV2X3ByaXYpKTsKPiArCQlyZXR1cm4gUENIX0xQVDsKPiArCWNhc2Ug SU5URUxfUENIX0xQVF9MUF9ERVZJQ0VfSURfVFlQRToKPiArCQlEUk1fREVCVUdfS01TKCJGb3Vu ZCBMeW54UG9pbnQgTFAgUENIXG4iKTsKPiArCQlXQVJOX09OKCFJU19IQVNXRUxMKGRldl9wcml2 KSAmJiAhSVNfQlJPQURXRUxMKGRldl9wcml2KSk7Cj4gKwkJV0FSTl9PTighSVNfSFNXX1VMVChk ZXZfcHJpdikgJiYgIUlTX0JEV19VTFQoZGV2X3ByaXYpKTsKPiArCQlyZXR1cm4gUENIX0xQVDsK PiArCWNhc2UgSU5URUxfUENIX1dQVF9ERVZJQ0VfSURfVFlQRToKPiArCQlEUk1fREVCVUdfS01T KCJGb3VuZCBXaWxkY2F0UG9pbnQgUENIXG4iKTsKPiArCQlXQVJOX09OKCFJU19IQVNXRUxMKGRl dl9wcml2KSAmJiAhSVNfQlJPQURXRUxMKGRldl9wcml2KSk7Cj4gKwkJV0FSTl9PTihJU19IU1df VUxUKGRldl9wcml2KSB8fCBJU19CRFdfVUxUKGRldl9wcml2KSk7Cj4gKwkJLyogV2lsZGNhdFBv aW50IGlzIExQVCBjb21wYXRpYmxlICovCj4gKwkJcmV0dXJuIFBDSF9MUFQ7Cj4gKwljYXNlIElO VEVMX1BDSF9XUFRfTFBfREVWSUNFX0lEX1RZUEU6Cj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQg V2lsZGNhdFBvaW50IExQIFBDSFxuIik7Cj4gKwkJV0FSTl9PTighSVNfSEFTV0VMTChkZXZfcHJp dikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpOwo+ICsJCVdBUk5fT04oIUlTX0hTV19VTFQo ZGV2X3ByaXYpICYmICFJU19CRFdfVUxUKGRldl9wcml2KSk7Cj4gKwkJLyogV2lsZGNhdFBvaW50 IGlzIExQVCBjb21wYXRpYmxlICovCj4gKwkJcmV0dXJuIFBDSF9MUFQ7Cj4gKwljYXNlIElOVEVM X1BDSF9TUFRfREVWSUNFX0lEX1RZUEU6Cj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgU3Vucmlz ZVBvaW50IFBDSFxuIik7Cj4gKwkJV0FSTl9PTighSVNfU0tZTEFLRShkZXZfcHJpdikgJiYgIUlT X0tBQllMQUtFKGRldl9wcml2KSk7Cj4gKwkJcmV0dXJuIFBDSF9TUFQ7Cj4gKwljYXNlIElOVEVM X1BDSF9TUFRfTFBfREVWSUNFX0lEX1RZUEU6Cj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgU3Vu cmlzZVBvaW50IExQIFBDSFxuIik7Cj4gKwkJV0FSTl9PTighSVNfU0tZTEFLRShkZXZfcHJpdikg JiYgIUlTX0tBQllMQUtFKGRldl9wcml2KSk7Cj4gKwkJcmV0dXJuIFBDSF9TUFQ7Cj4gKwljYXNl IElOVEVMX1BDSF9LQlBfREVWSUNFX0lEX1RZUEU6Cj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQg S2FieSBMYWtlIFBDSCAoS0JQKVxuIik7Cj4gKwkJV0FSTl9PTighSVNfU0tZTEFLRShkZXZfcHJp dikgJiYgIUlTX0tBQllMQUtFKGRldl9wcml2KSAmJgo+ICsJCQkhSVNfQ09GRkVFTEFLRShkZXZf cHJpdikpOwo+ICsJCS8qIEtCUCBpcyBTUFQgY29tcGF0aWJsZSAqLwo+ICsJCXJldHVybiBQQ0hf U1BUOwo+ICsJY2FzZSBJTlRFTF9QQ0hfQ05QX0RFVklDRV9JRF9UWVBFOgo+ICsJCURSTV9ERUJV R19LTVMoIkZvdW5kIENhbm5vbiBMYWtlIFBDSCAoQ05QKVxuIik7Cj4gKwkJV0FSTl9PTighSVNf Q0FOTk9OTEFLRShkZXZfcHJpdikgJiYgIUlTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKTsKPiArCQly ZXR1cm4gUENIX0NOUDsKPiArCWNhc2UgSU5URUxfUENIX0NOUF9MUF9ERVZJQ0VfSURfVFlQRToK PiArCQlEUk1fREVCVUdfS01TKCJGb3VuZCBDYW5ub24gTGFrZSBMUCBQQ0ggKENOUC1MUClcbiIp Owo+ICsJCVdBUk5fT04oIUlTX0NBTk5PTkxBS0UoZGV2X3ByaXYpICYmICFJU19DT0ZGRUVMQUtF KGRldl9wcml2KSk7Cj4gKwkJcmV0dXJuIFBDSF9DTlA7Cj4gKwljYXNlIElOVEVMX1BDSF9DTVBf REVWSUNFX0lEX1RZUEU6Cj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgQ29tZXQgTGFrZSBQQ0gg KENNUClcbiIpOwo+ICsJCVdBUk5fT04oIUlTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKTsKPiArCQkv KiBDb21ldFBvaW50IGlzIENOUCBDb21wYXRpYmxlICovCj4gKwkJcmV0dXJuIFBDSF9DTlA7Cj4g KwljYXNlIElOVEVMX1BDSF9JQ1BfREVWSUNFX0lEX1RZUEU6Cj4gKwkJRFJNX0RFQlVHX0tNUygi Rm91bmQgSWNlIExha2UgUENIXG4iKTsKPiArCQlXQVJOX09OKCFJU19JQ0VMQUtFKGRldl9wcml2 KSk7Cj4gKwkJcmV0dXJuIFBDSF9JQ1A7Cj4gKwljYXNlIElOVEVMX1BDSF9NQ0NfREVWSUNFX0lE X1RZUEU6Cj4gKwljYXNlIElOVEVMX1BDSF9NQ0MyX0RFVklDRV9JRF9UWVBFOgo+ICsJCURSTV9E RUJVR19LTVMoIkZvdW5kIE11bGUgQ3JlZWsgQ2FueW9uIFBDSFxuIik7Cj4gKwkJV0FSTl9PTigh SVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKTsKPiArCQlyZXR1cm4gUENIX01DQzsKPiArCWNhc2Ug SU5URUxfUENIX1RHUF9ERVZJQ0VfSURfVFlQRToKPiArCQlEUk1fREVCVUdfS01TKCJGb3VuZCBU aWdlciBMYWtlIExQIFBDSFxuIik7Cj4gKwkJV0FSTl9PTighSVNfVElHRVJMQUtFKGRldl9wcml2 KSk7Cj4gKwkJcmV0dXJuIFBDSF9UR1A7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiBQQ0hfTk9O RTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGJvb2wgaW50ZWxfaXNfdmlydF9wY2godW5zaWdu ZWQgc2hvcnQgaWQsCj4gKwkJCSAgICAgIHVuc2lnbmVkIHNob3J0IHN2ZW5kb3IsIHVuc2lnbmVk IHNob3J0IHNkZXZpY2UpCj4gK3sKPiArCXJldHVybiAoaWQgPT0gSU5URUxfUENIX1AyWF9ERVZJ Q0VfSURfVFlQRSB8fAo+ICsJCWlkID09IElOVEVMX1BDSF9QM1hfREVWSUNFX0lEX1RZUEUgfHwK PiArCQkoaWQgPT0gSU5URUxfUENIX1FFTVVfREVWSUNFX0lEX1RZUEUgJiYKPiArCQkgc3ZlbmRv ciA9PSBQQ0lfU1VCVkVORE9SX0lEX1JFREhBVF9RVU1SQU5FVCAmJgo+ICsJCSBzZGV2aWNlID09 IFBDSV9TVUJERVZJQ0VfSURfUUVNVSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgc2hv cnQKPiAraW50ZWxfdmlydF9kZXRlY3RfcGNoKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiArewo+ICsJdW5zaWduZWQgc2hvcnQgaWQgPSAwOwo+ICsKPiArCS8qCj4g KwkgKiBJbiBhIHZpcnR1YWxpemVkIHBhc3N0aHJvdWdoIGVudmlyb25tZW50IHdlIGNhbiBiZSBp biBhCj4gKwkgKiBzZXR1cCB3aGVyZSB0aGUgSVNBIGJyaWRnZSBpcyBub3QgYWJsZSB0byBiZSBw YXNzZWQgdGhyb3VnaC4KPiArCSAqIEluIHRoaXMgY2FzZSwgYSBzb3V0aCBicmlkZ2UgY2FuIGJl IGVtdWxhdGVkIGFuZCB3ZSBoYXZlIHRvCj4gKwkgKiBtYWtlIGFuIGVkdWNhdGVkIGd1ZXNzIGFz IHRvIHdoaWNoIFBDSCBpcyByZWFsbHkgdGhlcmUuCj4gKwkgKi8KPiArCj4gKwlpZiAoSVNfVElH RVJMQUtFKGRldl9wcml2KSkKPiArCQlpZCA9IElOVEVMX1BDSF9UR1BfREVWSUNFX0lEX1RZUEU7 Cj4gKwllbHNlIGlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikpCj4gKwkJaWQgPSBJTlRFTF9Q Q0hfTUNDX0RFVklDRV9JRF9UWVBFOwo+ICsJZWxzZSBpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikp Cj4gKwkJaWQgPSBJTlRFTF9QQ0hfSUNQX0RFVklDRV9JRF9UWVBFOwo+ICsJZWxzZSBpZiAoSVNf Q0FOTk9OTEFLRShkZXZfcHJpdikgfHwgSVNfQ09GRkVFTEFLRShkZXZfcHJpdikpCj4gKwkJaWQg PSBJTlRFTF9QQ0hfQ05QX0RFVklDRV9JRF9UWVBFOwo+ICsJZWxzZSBpZiAoSVNfS0FCWUxBS0Uo ZGV2X3ByaXYpIHx8IElTX1NLWUxBS0UoZGV2X3ByaXYpKQo+ICsJCWlkID0gSU5URUxfUENIX1NQ VF9ERVZJQ0VfSURfVFlQRTsKPiArCWVsc2UgaWYgKElTX0hTV19VTFQoZGV2X3ByaXYpIHx8IElT X0JEV19VTFQoZGV2X3ByaXYpKQo+ICsJCWlkID0gSU5URUxfUENIX0xQVF9MUF9ERVZJQ0VfSURf VFlQRTsKPiArCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChk ZXZfcHJpdikpCj4gKwkJaWQgPSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBFOwo+ICsJZWxz ZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICsJ CWlkID0gSU5URUxfUENIX0NQVF9ERVZJQ0VfSURfVFlQRTsKPiArCWVsc2UgaWYgKElTX0dFTihk ZXZfcHJpdiwgNSkpCj4gKwkJaWQgPSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFOwo+ICsK PiArCWlmIChpZCkKPiArCQlEUk1fREVCVUdfS01TKCJBc3N1bWluZyBQQ0ggSUQgJTA0eFxuIiwg aWQpOwo+ICsJZWxzZQo+ICsJCURSTV9ERUJVR19LTVMoIkFzc3VtaW5nIG5vIFBDSFxuIik7Cj4g Kwo+ICsJcmV0dXJuIGlkOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2RldGVjdF9wY2goc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgcGNpX2RldiAqcGNo ID0gTlVMTDsKPiArCj4gKwkvKgo+ICsJICogVGhlIHJlYXNvbiB0byBwcm9iZSBJU0EgYnJpZGdl IGluc3RlYWQgb2YgRGV2MzE6RnVuMCBpcyB0bwo+ICsJICogbWFrZSBncmFwaGljcyBkZXZpY2Ug cGFzc3Rocm91Z2ggd29yayBlYXN5IGZvciBWTU0sIHRoYXQgb25seQo+ICsJICogbmVlZCB0byBl eHBvc2UgSVNBIGJyaWRnZSB0byBsZXQgZHJpdmVyIGtub3cgdGhlIHJlYWwgaGFyZHdhcmUKPiAr CSAqIHVuZGVybmVhdGguIFRoaXMgaXMgYSByZXF1aXJlbWVudCBmcm9tIHZpcnR1YWxpemF0aW9u IHRlYW0uCj4gKwkgKgo+ICsJICogSW4gc29tZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUu Zy4gWEVOKSwgdGhlcmUgaXMgaXJyZWxldmFudAo+ICsJICogSVNBIGJyaWRnZSBpbiB0aGUgc3lz dGVtLiBUbyB3b3JrIHJlbGlhYmx5LCB3ZSBzaG91bGQgc2NhbiB0cmhvdWdoCj4gKwkgKiBhbGwg dGhlIElTQSBicmlkZ2UgZGV2aWNlcyBhbmQgY2hlY2sgZm9yIHRoZSBmaXJzdCBtYXRjaCwgaW5z dGVhZAo+ICsJICogb2Ygb25seSBjaGVja2luZyB0aGUgZmlyc3Qgb25lLgo+ICsJICovCj4gKwl3 aGlsZSAoKHBjaCA9IHBjaV9nZXRfY2xhc3MoUENJX0NMQVNTX0JSSURHRV9JU0EgPDwgOCwgcGNo KSkpIHsKPiArCQl1bnNpZ25lZCBzaG9ydCBpZDsKPiArCQllbnVtIGludGVsX3BjaCBwY2hfdHlw ZTsKPiArCj4gKwkJaWYgKHBjaC0+dmVuZG9yICE9IFBDSV9WRU5ET1JfSURfSU5URUwpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQlpZCA9IHBjaC0+ZGV2aWNlICYgSU5URUxfUENIX0RFVklDRV9J RF9NQVNLOwo+ICsKPiArCQlwY2hfdHlwZSA9IGludGVsX3BjaF90eXBlKGRldl9wcml2LCBpZCk7 Cj4gKwkJaWYgKHBjaF90eXBlICE9IFBDSF9OT05FKSB7Cj4gKwkJCWRldl9wcml2LT5wY2hfdHlw ZSA9IHBjaF90eXBlOwo+ICsJCQlkZXZfcHJpdi0+cGNoX2lkID0gaWQ7Cj4gKwkJCWJyZWFrOwo+ ICsJCX0gZWxzZSBpZiAoaW50ZWxfaXNfdmlydF9wY2goaWQsIHBjaC0+c3Vic3lzdGVtX3ZlbmRv ciwKPiArCQkJCQkgICAgIHBjaC0+c3Vic3lzdGVtX2RldmljZSkpIHsKPiArCQkJaWQgPSBpbnRl bF92aXJ0X2RldGVjdF9wY2goZGV2X3ByaXYpOwo+ICsJCQlwY2hfdHlwZSA9IGludGVsX3BjaF90 eXBlKGRldl9wcml2LCBpZCk7Cj4gKwo+ICsJCQkvKiBTYW5pdHkgY2hlY2sgdmlydHVhbCBQQ0gg aWQgKi8KPiArCQkJaWYgKFdBUk5fT04oaWQgJiYgcGNoX3R5cGUgPT0gUENIX05PTkUpKQo+ICsJ CQkJaWQgPSAwOwo+ICsKPiArCQkJZGV2X3ByaXYtPnBjaF90eXBlID0gcGNoX3R5cGU7Cj4gKwkJ CWRldl9wcml2LT5wY2hfaWQgPSBpZDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsKPiAr CS8qCj4gKwkgKiBVc2UgUENIX05PUCAoUENIIGJ1dCBubyBTb3V0aCBEaXNwbGF5KSBmb3IgUENI IHBsYXRmb3JtcyB3aXRob3V0Cj4gKwkgKiBkaXNwbGF5Lgo+ICsJICovCj4gKwlpZiAocGNoICYm ICFIQVNfRElTUExBWShkZXZfcHJpdikpIHsKPiArCQlEUk1fREVCVUdfS01TKCJEaXNwbGF5IGRp c2FibGVkLCByZXZlcnRpbmcgdG8gTk9QIFBDSFxuIik7Cj4gKwkJZGV2X3ByaXYtPnBjaF90eXBl ID0gUENIX05PUDsKPiArCQlkZXZfcHJpdi0+cGNoX2lkID0gMDsKPiArCX0KPiArCj4gKwlpZiAo IXBjaCkKPiArCQlEUk1fREVCVUdfS01TKCJObyBQQ0ggZm91bmQuXG4iKTsKPiArCj4gKwlwY2lf ZGV2X3B1dChwY2gpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BjaC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGNoLmgKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZTZhMmQ2NWYxOWM2Cj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BjaC5oCj4gQEAgLTAsMCAr MSw3MyBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCj4gKy8qCj4gKyAq IENvcHlyaWdodCAyMDE5IEludGVsIENvcnBvcmF0aW9uLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYg X19JTlRFTF9QQ0hfXwo+ICsjZGVmaW5lIF9fSU5URUxfUENIX18KPiArCj4gK3N0cnVjdCBkcm1f aTkxNV9wcml2YXRlOwo+ICsKPiArLyoKPiArICogU29ydGVkIGJ5IHNvdXRoIGRpc3BsYXkgZW5n aW5lIGNvbXBhdGliaWxpdHkuCj4gKyAqIElmIHRoZSBuZXcgUENIIGNvbWVzIHdpdGggYSBzb3V0 aCBkaXNwbGF5IGVuZ2luZSB0aGF0IGlzIG5vdAo+ICsgKiBpbmhlcml0ZWQgZnJvbSB0aGUgbGF0 ZXN0IGl0ZW0sIHBsZWFzZSBkbyBub3QgYWRkIGl0IHRvIHRoZQo+ICsgKiBlbmQuIEluc3RlYWQs IGFkZCBpdCByaWdodCBhZnRlciBpdHMgInBhcmVudCIgUENILgo+ICsgKi8KPiArZW51bSBpbnRl bF9wY2ggewo+ICsJUENIX05PUCA9IC0xLAkvKiBQQ0ggd2l0aG91dCBzb3V0aCBkaXNwbGF5ICov Cj4gKwlQQ0hfTk9ORSA9IDAsCS8qIE5vIFBDSCBwcmVzZW50ICovCj4gKwlQQ0hfSUJYLAkvKiBJ YmV4cGVhayBQQ0ggKi8KPiArCVBDSF9DUFQsCS8qIENvdWdhcnBvaW50L1BhbnRoZXJwb2ludCBQ Q0ggKi8KPiArCVBDSF9MUFQsCS8qIEx5bnhwb2ludC9XaWxkY2F0cG9pbnQgUENIICovCj4gKwlQ Q0hfU1BULCAgICAgICAgLyogU3VucmlzZXBvaW50L0thYnkgTGFrZSBQQ0ggKi8KPiArCVBDSF9D TlAsICAgICAgICAvKiBDYW5ub24vQ29tZXQgTGFrZSBQQ0ggKi8KPiArCVBDSF9JQ1AsCS8qIElj ZSBMYWtlIFBDSCAqLwo+ICsJUENIX01DQywgICAgICAgIC8qIE11bGUgQ3JlZWsgQ2FueW9uIFBD SCAqLwo+ICsJUENIX1RHUCwJLyogVGlnZXIgTGFrZSBQQ0ggKi8KPiArfTsKPiArCj4gKyNkZWZp bmUgSU5URUxfUENIX0RFVklDRV9JRF9NQVNLCQkweGZmODAKPiArI2RlZmluZSBJTlRFTF9QQ0hf SUJYX0RFVklDRV9JRF9UWVBFCQkweDNiMDAKPiArI2RlZmluZSBJTlRFTF9QQ0hfQ1BUX0RFVklD RV9JRF9UWVBFCQkweDFjMDAKPiArI2RlZmluZSBJTlRFTF9QQ0hfUFBUX0RFVklDRV9JRF9UWVBF CQkweDFlMDAKPiArI2RlZmluZSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBFCQkweDhjMDAK PiArI2RlZmluZSBJTlRFTF9QQ0hfTFBUX0xQX0RFVklDRV9JRF9UWVBFCQkweDljMDAKPiArI2Rl ZmluZSBJTlRFTF9QQ0hfV1BUX0RFVklDRV9JRF9UWVBFCQkweDhjODAKPiArI2RlZmluZSBJTlRF TF9QQ0hfV1BUX0xQX0RFVklDRV9JRF9UWVBFCQkweDljODAKPiArI2RlZmluZSBJTlRFTF9QQ0hf U1BUX0RFVklDRV9JRF9UWVBFCQkweEExMDAKPiArI2RlZmluZSBJTlRFTF9QQ0hfU1BUX0xQX0RF VklDRV9JRF9UWVBFCQkweDlEMDAKPiArI2RlZmluZSBJTlRFTF9QQ0hfS0JQX0RFVklDRV9JRF9U WVBFCQkweEEyODAKPiArI2RlZmluZSBJTlRFTF9QQ0hfQ05QX0RFVklDRV9JRF9UWVBFCQkweEEz MDAKPiArI2RlZmluZSBJTlRFTF9QQ0hfQ05QX0xQX0RFVklDRV9JRF9UWVBFCQkweDlEODAKPiAr I2RlZmluZSBJTlRFTF9QQ0hfQ01QX0RFVklDRV9JRF9UWVBFCQkweDAyODAKPiArI2RlZmluZSBJ TlRFTF9QQ0hfSUNQX0RFVklDRV9JRF9UWVBFCQkweDM0ODAKPiArI2RlZmluZSBJTlRFTF9QQ0hf TUNDX0RFVklDRV9JRF9UWVBFCQkweDRCMDAKPiArI2RlZmluZSBJTlRFTF9QQ0hfTUNDMl9ERVZJ Q0VfSURfVFlQRQkJMHgzODgwCj4gKyNkZWZpbmUgSU5URUxfUENIX1RHUF9ERVZJQ0VfSURfVFlQ RQkJMHhBMDgwCj4gKyNkZWZpbmUgSU5URUxfUENIX1AyWF9ERVZJQ0VfSURfVFlQRQkJMHg3MTAw Cj4gKyNkZWZpbmUgSU5URUxfUENIX1AzWF9ERVZJQ0VfSURfVFlQRQkJMHg3MDAwCj4gKyNkZWZp bmUgSU5URUxfUENIX1FFTVVfREVWSUNFX0lEX1RZUEUJCTB4MjkwMCAvKiBxZW11IHEzNSBoYXMg MjkxOCAqLwo+ICsKPiArI2RlZmluZSBJTlRFTF9QQ0hfVFlQRShkZXZfcHJpdikJCSgoZGV2X3By aXYpLT5wY2hfdHlwZSkKPiArI2RlZmluZSBJTlRFTF9QQ0hfSUQoZGV2X3ByaXYpCQkJKChkZXZf cHJpdiktPnBjaF9pZCkKPiArI2RlZmluZSBIQVNfUENIX01DQyhkZXZfcHJpdikJCQkoSU5URUxf UENIX1RZUEUoZGV2X3ByaXYpID09IFBDSF9NQ0MpCj4gKyNkZWZpbmUgSEFTX1BDSF9UR1AoZGV2 X3ByaXYpCQkJKElOVEVMX1BDSF9UWVBFKGRldl9wcml2KSA9PSBQQ0hfVEdQKQo+ICsjZGVmaW5l IEhBU19QQ0hfSUNQKGRldl9wcml2KQkJCShJTlRFTF9QQ0hfVFlQRShkZXZfcHJpdikgPT0gUENI X0lDUCkKPiArI2RlZmluZSBIQVNfUENIX0NOUChkZXZfcHJpdikJCQkoSU5URUxfUENIX1RZUEUo ZGV2X3ByaXYpID09IFBDSF9DTlApCj4gKyNkZWZpbmUgSEFTX1BDSF9TUFQoZGV2X3ByaXYpCQkJ KElOVEVMX1BDSF9UWVBFKGRldl9wcml2KSA9PSBQQ0hfU1BUKQo+ICsjZGVmaW5lIEhBU19QQ0hf TFBUKGRldl9wcml2KQkJCShJTlRFTF9QQ0hfVFlQRShkZXZfcHJpdikgPT0gUENIX0xQVCkKPiAr I2RlZmluZSBIQVNfUENIX0xQVF9MUChkZXZfcHJpdikgXAo+ICsJKElOVEVMX1BDSF9JRChkZXZf cHJpdikgPT0gSU5URUxfUENIX0xQVF9MUF9ERVZJQ0VfSURfVFlQRSB8fCBcCj4gKwkgSU5URUxf UENIX0lEKGRldl9wcml2KSA9PSBJTlRFTF9QQ0hfV1BUX0xQX0RFVklDRV9JRF9UWVBFKQo+ICsj ZGVmaW5lIEhBU19QQ0hfTFBUX0goZGV2X3ByaXYpIFwKPiArCShJTlRFTF9QQ0hfSUQoZGV2X3By aXYpID09IElOVEVMX1BDSF9MUFRfREVWSUNFX0lEX1RZUEUgfHwgXAo+ICsJIElOVEVMX1BDSF9J RChkZXZfcHJpdikgPT0gSU5URUxfUENIX1dQVF9ERVZJQ0VfSURfVFlQRSkKPiArI2RlZmluZSBI QVNfUENIX0NQVChkZXZfcHJpdikJCQkoSU5URUxfUENIX1RZUEUoZGV2X3ByaXYpID09IFBDSF9D UFQpCj4gKyNkZWZpbmUgSEFTX1BDSF9JQlgoZGV2X3ByaXYpCQkJKElOVEVMX1BDSF9UWVBFKGRl dl9wcml2KSA9PSBQQ0hfSUJYKQo+ICsjZGVmaW5lIEhBU19QQ0hfTk9QKGRldl9wcml2KQkJCShJ TlRFTF9QQ0hfVFlQRShkZXZfcHJpdikgPT0gUENIX05PUCkKPiArI2RlZmluZSBIQVNfUENIX1NQ TElUKGRldl9wcml2KQkJCShJTlRFTF9QQ0hfVFlQRShkZXZfcHJpdikgIT0gUENIX05PTkUpCj4g Kwo+ICt2b2lkIGludGVsX2RldGVjdF9wY2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKPiArCj4gKyNlbmRpZiAvKiBfX0lOVEVMX1BDSF9fICovCj4gLS0gCj4gMi4yMC4xCj4g Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==