From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Chen Subject: [PATCH v3] xen/arm32: Introduce alternative runtime patching Date: Thu, 30 Mar 2017 17:02:33 +0800 Message-ID: <1490864553-17245-1-git-send-email-Wei.Chen@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: sstabellini@kernel.org, wei.chen@arm.com, steve.capper@arm.com, Kaly.Xin@arm.com, julien.grall@arm.com, nd@arm.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpcyBiYXNlZCBvbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgQVJNNjQsIGl0IGlu dHJvZHVjZXMKYWx0ZXJuYXRpdmUgcnVudGltZSBwYXRjaGluZyB0byBBUk0zMi4gVGhpcyBhbGxv d3MgdG8gcGF0Y2ggYXNzZW1ibHkKaW5zdHJ1Y3Rpb24gYXQgcnVudGltZSB0byBlaXRoZXIgZml4 IGhhcmR3YXJlIGJ1Z3Mgb3Igb3B0aW1pemUgZm9yCmNlcnRhaW4gaGFyZHdhcmUgZmVhdHVyZXMg b24gQVJNMzIgcGxhdGZvcm0uCgpYZW4gaHlwZXJ2aXNvciBpcyB1c2luZyBBUk0gZXhlY3V0aW9u IHN0YXRlIG9ubHkgb24gQVJNMzIgcGxhdGZvcm0sClRodW1iIGlzIG5vdCB1c2VkLiBTbywgdGhl IFRodW1iIG9ubHkgYnJhbmNoIGluc3RydWN0aW9ucyAoQ0JaLCBDQk5aLApUQkIgYW5kIFRCSCkg YXJlIG5vdCBjb25zaWRlcmVkIGluIGFsdGVybmF0aXZlcy4KClRoZSBsZWZ0IEFSTTMyIGJyYW5j aCBpbnN0cnVjdGlvbnMgYXJlIEJYLCBCTFgsIEJMIGFuZCBCLiBUaGUKaW5zdHJ1Y3Rpb24gQlgg aXMgdGFraW5nIGEgcmVnaXN0ZXIgaW4gcGFyYW1ldGVyLCBzbyB3ZSBkb24ndCBuZWVkIHRvCnJl d3JpdGUgaXQuIFRoZSBpbnN0cnVjdGlvbnMgQkxYLCBCTCBhbmQgQiBhcmUgdXNpbmcgdGhlIHNp bWlsYXIKZW5jb2RpbmcgZm9yIHRoZSBvZmZzZXQgYW5kIHdpbGwgYXZvaWQgc3BlY2lmaWMgY2Fz ZSB3aGVuIGV4dHJhY3RpbmcKYW5kIHVwZGF0aW5nIHRoZSBvZmZzZXQuCgpJbiB0aGlzIHBhdGNo LCB3ZSBpbmNsdWRlIGFsdGVybmF0aXZlLmggaGVhZGVyIGZpbGUgdG8gbGl2ZXBhdGNoLmMKZGly ZWN0bHkgZm9yIEFSTTMyIGNvbXBpbGF0aW9uIGlzc3Vlcy4gV2hlbiB0aGUgYWx0ZXJuYXRpdmUg cGF0Y2hpbmcKY29uZmlnIGlzIGVuYWJsZWQsIHRoZSBsaXZlcGF0Y2guYyB3aWxsIHVzZSB0aGUg YWx0ZXJuYXRpdmUgZnVuY3Rpb25zLgpJbiB0aGlzIGNhc2UsIHdlIHNob3VsZCBpbmNsdWRlIHRo ZSBhbHRlcm5hdGl2ZSBoZWFkZXIgZmlsZSB0byB0aGlzCmZpbGUuIEJ1dCBmb3IgQVJNNjQsIGl0 IGRvZXMgbm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgZmlsZSBkaXJlY3RseS4KSXQgaW5jbHVkZXMg dGhpcyBoZWFkZXIgZmlsZSBpbmRpcmVjdGx5IHRocm91Z2g6CnNjaGVkLmgtPmRvbWFpbi5oLT5w YWdlLmgtPmFsdGVybmF0aXZlLmguCkJ1dCwgdW5mb3J0dW5hdGVseSwgdGhlIHBhZ2UuaCBvZiBB Uk0zMiBkb2Vzbid0IGluY2x1ZGUgYWx0ZXJuYXRpdmUuaCwKYW5kIHdlIGRvbid0IGhhdmUgdGhl IHJlYXNvbiB0byBpbmNsdWRlIGl0IHRvIEFSTTMyIHBhZ2UuaCBub3cuIFNvIHdlCmhhdmUgdG8g aW5jbHVkZSB0aGUgYWx0ZXJuYXRpdmUuaCBkaXJlY3RseSBpbiBsaXZlcGF0Y2guYy4KClNpZ25l ZC1vZmYtYnk6IFdlaSBDaGVuIDxXZWkuQ2hlbkBhcm0uY29tPgpSZXZpZXdlZC1ieTogS29ucmFk IFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgoKLS0tCnYyLT52MzoKMS4g SW50cm9kdWNlIGEgbWFjcm8gdG8gY2FjaGUgYmx4LgoyLiBDaGVjayB0aGUgaW5zdHJ1Y3Rpb24g Y29uZGl0aW9uYWwgYml0cyBpbiBvcGVuLWNvZGUgdG8gYXZvaWQKICAgcmVjb2duaXppbmcgYmx4 IGluIHRoZSBtYWNyb3Mgb2YgYiBhbmQgYmwuCjMuIEV4cGxhaW4gaW4gY29kZSBjb21tZW50LCB3 aHkgd2UgbWFzayB0aGUgSCBiaXQgZm9yIGJseCBpbiBtYWNyby4KLS0tCiB4ZW4vYXJjaC9hcm0v S2NvbmZpZyAgICAgICAgICAgICB8ICAyICstCiB4ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUg ICAgICB8ICAxICsKIHhlbi9hcmNoL2FybS9hcm0zMi9pbnNuLmMgICAgICAgIHwgOTEgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi9saXZlcGF0Y2gu YyAgICAgICAgICAgfCAgMSArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2FybTMyL2luc24uaCB8IDc1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9p bnNuLmggICAgICAgfCAgMiArCiA2IGZpbGVzIGNoYW5nZWQsIDE3MSBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2FybTMyL2luc24u YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS1hcm0vYXJtMzIvaW5zbi5oCgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL0tjb25maWcgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZwpp bmRleCAyZTAyM2QxLi40MzEyM2U2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vS2NvbmZpZwor KysgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZwpAQCAtMTIsMTEgKzEyLDExIEBAIGNvbmZpZyBBUk1f MzIKIGNvbmZpZyBBUk1fNjQKIAlkZWZfYm9vbCB5CiAJZGVwZW5kcyBvbiA2NEJJVAotCXNlbGVj dCBIQVNfQUxURVJOQVRJVkUKIAlzZWxlY3QgSEFTX0dJQ1YzCiAKIGNvbmZpZyBBUk0KIAlkZWZf Ym9vbCB5CisJc2VsZWN0IEhBU19BTFRFUk5BVElWRQogCXNlbGVjdCBIQVNfQVJNX0hETENECiAJ c2VsZWN0IEhBU19ERVZJQ0VfVFJFRQogCXNlbGVjdCBIQVNfTUVNX0FDQ0VTUwpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL2FybTMyL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL2FybTMyL01ha2Vm aWxlCmluZGV4IDQzOTU2OTMuLjBhYzI1NGYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9hcm0z Mi9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUKQEAgLTQsNiArNCw3 IEBAIG9iai0kKEVBUkxZX1BSSU5USykgKz0gZGVidWcubwogb2JqLXkgKz0gZG9tY3RsLm8KIG9i ai15ICs9IGRvbWFpbi5vCiBvYmoteSArPSBlbnRyeS5vCitvYmoteSArPSBpbnNuLm8KIG9iai0k KENPTkZJR19MSVZFUEFUQ0gpICs9IGxpdmVwYXRjaC5vCiBvYmoteSArPSBwcm9jLXY3Lm8gcHJv Yy1jYXh4Lm8KIG9iai15ICs9IHNtcGJvb3QubwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2Fy bTMyL2luc24uYyBiL3hlbi9hcmNoL2FybS9hcm0zMi9pbnNuLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uN2E1ZGJjNQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL2Fy bS9hcm0zMi9pbnNuLmMKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAgKiBDb3B5cmlnaHQgKEMpIDIw MTcgQVJNIEx0ZC4KKyAgKgorICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICogaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAgKiBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgKgorICAqIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgICoKKyAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAqIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICAqLwor I2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vYml0b3BzLmg+CisjaW5jbHVkZSA8 eGVuL3NpemVzLmg+CisjaW5jbHVkZSA8YXNtL2luc24uaD4KKworLyogTWFzayBvZiBicmFuY2gg aW5zdHJ1Y3Rpb25zJyBpbW1lZGlhdGUuICovCisjZGVmaW5lIEJSQU5DSF9JTlNOX0lNTV9NQVNL ICAgIEdFTk1BU0soMjMsIDApCisvKiBTaGlmdCBvZiBicmFuY2ggaW5zdHJ1Y3Rpb25zJyBpbW1l ZGlhdGUuICovCisjZGVmaW5lIEJSQU5DSF9JTlNOX0lNTV9TSElGVCAgIDAKKworc3RhdGljIHVp bnQzMl90IGJyYW5jaF9pbnNuX2VuY29kZV9pbW1lZGlhdGUodWludDMyX3QgaW5zbiwgaW50MzJf dCBvZmZzZXQpCit7CisgICAgdWludDMyX3QgaW1tOworCisgICAgLyoKKyAgICAgKiBFbmNvZGUg dGhlIG9mZnNldCB0byBpbW0uIEFsbCBBUk0zMiBpbnN0cnVjdGlvbnMgbXVzdCBiZSB3b3JkIGFs aWduZWQuCisgICAgICogVGhlcmVmb3JlIHRoZSBvZmZzZXQgdmFsdWUncyBiaXRzIFsxOjBdIGVx dWFsIHRvIHplcm8uCisgICAgICogKHNlZSBBUk0gRERJIDA0MDZDLmMgQTguOC4xOC9BOC44LjI1 IGZvciBtb3JlIGVuY29kZS9kZWNvZGUgZGV0YWlscworICAgICAqIGFib3V0IEFSTTMyIGJyYW5j aCBpbnN0cnVjdGlvbnMpCisgICAgICovCisgICAgaW1tID0gKChvZmZzZXQgPj4gMikgJiBCUkFO Q0hfSU5TTl9JTU1fTUFTSykgPDwgQlJBTkNIX0lOU05fSU1NX1NISUZUOworCisgICAgLyogVXBk YXRlIHRoZSBpbW1lZGlhdGUgZmllbGQuICovCisgICAgaW5zbiAmPSB+KEJSQU5DSF9JTlNOX0lN TV9NQVNLIDw8IEJSQU5DSF9JTlNOX0lNTV9TSElGVCk7CisgICAgaW5zbiB8PSBpbW07CisKKyAg ICByZXR1cm4gaW5zbjsKK30KKworLyoKKyAqIERlY29kZSB0aGUgYnJhbmNoIG9mZnNldCBmcm9t IGEgYnJhbmNoIGluc3RydWN0aW9uJ3MgaW1tIGZpZWxkLgorICogVGhlIGJyYW5jaCBvZmZzZXQg aXMgYSBzaWduZWQgdmFsdWUsIHNvIGl0IGNhbiBiZSB1c2VkIHRvIGNvbXB1dGUKKyAqIGEgbmV3 IGJyYW5jaCB0YXJnZXQuCisgKi8KK2ludDMyX3QgYWFyY2gzMl9nZXRfYnJhbmNoX29mZnNldCh1 aW50MzJfdCBpbnNuKQoreworICAgIHVpbnQzMl90IGltbTsKKworICAgIC8qIFJldHJpZXZlIGlt bSBmcm9tIGJyYW5jaCBpbnN0cnVjdGlvbi4gKi8KKyAgICBpbW0gPSAoIGluc24gPj4gQlJBTkNI X0lOU05fSU1NX1NISUZUICkgJiBCUkFOQ0hfSU5TTl9JTU1fTUFTSzsKKworICAgIC8qCisgICAg ICogQ2hlY2sgdGhlIGltbSBzaWduZWQgYml0LiBJZiB0aGUgaW1tIGlzIGEgbmVnYXRpdmUgdmFs dWUsIHdlCisgICAgICogaGF2ZSB0byBleHRlbmQgdGhlIGltbSB0byBhIGZ1bGwgMzIgYml0IG5l Z2F0aXZlIHZhbHVlLgorICAgICAqLworICAgIGlmICggaW1tICYgQklUKDIzKSApCisgICAgICAg IGltbSB8PSBHRU5NQVNLKDMxLCAyNCk7CisKKyAgICByZXR1cm4gKGludDMyX3QpKGltbSA8PCAy KTsKK30KKworLyoKKyAqIEVuY29kZSB0aGUgZGlzcGxhY2VtZW50IG9mIGEgYnJhbmNoIGluIHRo ZSBpbW0gZmllbGQgYW5kIHJldHVybiB0aGUKKyAqIHVwZGF0ZWQgaW5zdHJ1Y3Rpb24uCisgKi8K K3VpbnQzMl90IGFhcmNoMzJfc2V0X2JyYW5jaF9vZmZzZXQodWludDMyX3QgaW5zbiwgaW50MzJf dCBvZmZzZXQpCit7CisgICAgLyogQi9CTCBzdXBwb3J0IFstMzJNLCAzMk0pIG9mZnNldCAoc2Vl IEFSTSBEREkgMDQwNkMuYyBBNC4zKS4gKi8KKyAgICBpZiAoIG9mZnNldCA8IC1TWl8zMk0gfHwg b2Zmc2V0ID49IFNaXzMyTSApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0VSUgorICAg ICAgICAgICAgICAgIiVzOiBuZXcgYnJhbmNoIG9mZnNldCBvdXQgb2YgcmFuZ2UuXG4iLCBfX2Z1 bmNfXyk7CisgICAgICAgIHJldHVybiBCVUdfT1BDT0RFOworICAgIH0KKworICAgIHJldHVybiBi cmFuY2hfaW5zbl9lbmNvZGVfaW1tZWRpYXRlKGluc24sIG9mZnNldCk7Cit9CisKKy8qCisgKiBM b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj LWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8K ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vbGl2ZXBhdGNoLmMgYi94ZW4vY29tbW9uL2xpdmVwYXRj aC5jCmluZGV4IDI0NmU2NzMuLmYxNGJjYmMgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vbGl2ZXBh dGNoLmMKKysrIGIveGVuL2NvbW1vbi9saXZlcGF0Y2guYwpAQCAtMjUsNiArMjUsNyBAQAogI2lu Y2x1ZGUgPHhlbi9saXZlcGF0Y2guaD4KICNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoX3BheWxvYWQu aD4KIAorI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPGFzbS9ldmVudC5o PgogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9hcm0zMi9pbnNuLmggYi94 ZW4vaW5jbHVkZS9hc20tYXJtL2FybTMyL2luc24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5iNWM2MGMyCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFy bS9hcm0zMi9pbnNuLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAgKiBDb3B5cmlnaHQgKEMpIDIw MTcgQVJNIEx0ZC4KKyAgKgorICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICogaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAgKiBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgKgorICAqIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgICoKKyAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAqIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICAqLwor I2lmbmRlZiBfX0FSQ0hfQVJNX0FSTTMyX0lOU04KKyNkZWZpbmUgX19BUkNIX0FSTV9BUk0zMl9J TlNOCisKKyNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KKworI2RlZmluZSBfX0NPTkRJVElPTkFMX0lO U04oaW5zbikgICgoKGluc24pID4+IDI4KSAhPSAweGYpCisKKyNkZWZpbmUgX19BQVJDSDMyX0lO U05fRlVOQ1MoYWJiciwgbWFzaywgdmFsKSAgIFwKK3N0YXRpYyBhbHdheXNfaW5saW5lIGJvb2xf dCBhYXJjaDMyX2luc25faXNfIyNhYmJyKHVpbnQzMl90IGNvZGUpIFwKK3sgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICByZXR1cm4gKGNvZGUgJiAobWFzaykpID09ICh2YWwpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKK30KKworLyogQ29uZGl0aW9uYWwgYnJhbmNoIGluc3RydWN0aW9ucyAqLworX19B QVJDSDMyX0lOU05fRlVOQ1MoYiwgIDB4MEYwMDAwMDAsIDB4MEEwMDAwMDApCitfX0FBUkNIMzJf SU5TTl9GVU5DUyhibCwgMHgwRjAwMDAwMCwgMHgwQjAwMDAwMCkKKworLyogVW5jb25kaXRpb25h bCBicmFuY2ggaW5zdHJ1Y3Rpb25zICovCisvKgorICogRnJvbSBBUk0gRERJIDA0MDZDLmMgU2Vj dGlvbiBBOC44LjI1LiBXZSBjYW4gc2VlIGJseCBoYXMgYSBIIGJpdC4KKyAqIEluIGFuIEFSTS9U aHVtYiBpbnN0cnVjdGlvbnMgbWl4ZWQgcnVubmluZyBlbnZpcm9ubWVudCwgdGhpcyBiaXQKKyAq IGNhbiBiZSAxIG9yIDAuIEFsdGhvdWdoIFhlbiBpcyBvbmx5IHVzaW5nIHRoZSBBUk0gaW5zdHJ1 Y3Rpb25zCisgKiBhbmQgdGhlIEggYml0IGlzIGFsd2F5cyAwLiBXZSBtYXNrIHRoaXMgYml0IHRv IGNhdGNoIGJvdGggb2YgdGhlc2UKKyAqIHR3byBlbmNvZGluZ3MgZm9yIGZ1dHVyZS1wcm9vZi4K KyAqLworX19BQVJDSDMyX0lOU05fRlVOQ1MoYmx4LCAweDBFMDAwMDAwLCAweDBBMDAwMDAwKQor CitpbnQzMl90IGFhcmNoMzJfZ2V0X2JyYW5jaF9vZmZzZXQodWludDMyX3QgaW5zbik7Cit1aW50 MzJfdCBhYXJjaDMyX3NldF9icmFuY2hfb2Zmc2V0KHVpbnQzMl90IGluc24sIGludDMyX3Qgb2Zm c2V0KTsKKworLyogV3JhcHBlciBmb3IgY29tbW9uIGNvZGUgKi8KK3N0YXRpYyBpbmxpbmUgYm9v bCBpbnNuX2lzX2JyYW5jaF9pbW0odWludDMyX3QgaW5zbikKK3sKKyAgICAvKiBDaGVjayBjb25k aXRpb25hbCBicmFuY2ggaW5zdHJ1Y3Rpb25zICovCisgICAgaWYgKCBfX0NPTkRJVElPTkFMX0lO U04oaW5zbikgKQorICAgICAgICByZXR1cm4gKCBhYXJjaDMyX2luc25faXNfYihpbnNuKSB8fCBh YXJjaDMyX2luc25faXNfYmwoaW5zbikgKTsKKworICAgIC8qIENoZWNrIHVuY29uZGl0aW9uYWwg YnJhbmNoIGluc3RydWN0aW9ucyAqLworICAgIHJldHVybiBhYXJjaDMyX2luc25faXNfYmx4KGlu c24pOworfQorCitzdGF0aWMgaW5saW5lIGludDMyX3QgaW5zbl9nZXRfYnJhbmNoX29mZnNldCh1 aW50MzJfdCBpbnNuKQoreworICAgIHJldHVybiBhYXJjaDMyX2dldF9icmFuY2hfb2Zmc2V0KGlu c24pOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IGluc25fc2V0X2JyYW5jaF9vZmZzZXQo dWludDMyX3QgaW5zbiwgaW50MzJfdCBvZmZzZXQpCit7CisgICAgcmV0dXJuIGFhcmNoMzJfc2V0 X2JyYW5jaF9vZmZzZXQoaW5zbiwgb2Zmc2V0KTsKK30KKworI2VuZGlmIC8qICFfX0FSQ0hfQVJN X0FSTTMyX0lOU04gKi8KKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMt bW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0v aW5zbi5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9pbnNuLmgKaW5kZXggYTIwNWNlYi4uMzQ4OTE3 OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9pbnNuLmgKKysrIGIveGVuL2luY2x1 ZGUvYXNtLWFybS9pbnNuLmgKQEAgLTUsNiArNSw4IEBACiAKICNpZiBkZWZpbmVkKENPTkZJR19B Uk1fNjQpCiAjIGluY2x1ZGUgPGFzbS9hcm02NC9pbnNuLmg+CisjZWxpZiBkZWZpbmVkKENPTkZJ R19BUk1fMzIpCisjIGluY2x1ZGUgPGFzbS9hcm0zMi9pbnNuLmg+CiAjZWxzZQogIyBlcnJvciAi dW5rbm93biBBUk0gdmFyaWFudCIKICNlbmRpZgotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK