From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v4 13/16] livepatch: Initial ARM32 support. Date: Fri, 16 Sep 2016 12:38:25 -0400 Message-ID: <1474043908-12101-14-git-send-email-konrad.wilk@oracle.com> References: <1474043908-12101-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bkwA6-0002fH-ND for xen-devel@lists.xenproject.org; Fri, 16 Sep 2016 16:38:50 +0000 In-Reply-To: <1474043908-12101-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad@kernel.org, ross.lagerwall@citrix.com, julien.grall@arm.com, sstabellini@kernel.org Cc: Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlIHBhdGNoIHBpZ2d5YmFja3Mgb246IGxpdmVwYXRjaDogSW5pdGlhbCBBUk02NCBzdXBwb3J0 LCB3aGljaApicmluZ3MgdXAgYWxsIG9mIHRoZSBuZWNjZXNzYXJ5IGxpdmVwYXRjaCBpbmZyYXN0 cnVjdHVyZSBwaWVjZXMgaW4uCgpUaGlzIHBhdGNoIGFkZHMgdGhyZWUgbWFqb3IgcGllY2VzOgoK IDEpIEVMRiByZWxvY2F0aW9ucy4gQVJNMzIgdXNlcyBTSFRfUkVMIGluc3RlYWQgb2YgU0hUX1JF TEEgd2hpY2gKICAgIG1lYW5zIHRoZSBhZGRkZW5kdW0gaGFkIHRvIGJlIGV4dHJhY3RlZCBmcm9t IHdpdGhpbiB0aGUKICAgIGluc3RydWN0aW9uLiBXaGljaCByZXF1aXJlZCBwYXJzaW5nIEJML0JM WCwgQi9CTDxjb25kPiwKICAgIE1PVlQsIGFuZCBNT1ZXIGluc3RydWN0aW9ucy4KCiAgICBUaGUg Y29kZSB3YXMgd3JpdHRlbiBmcm9tIHNjcmF0Y2ggdXNpbmcgdGhlIEFSTSBFTEYgbWFudWFsCiAg ICAoYW5kIHRoZSBBUk0gQXJjaGl0ZWN0dXJlIFJlZmVyZW5jZSBNYW51YWwpCgogMikgSW5zZXJ0 aW5nIGFuIHRyYW1wb2xpbmUuIFdlIHVzZSB0aGUgQiAoYnJhbmNoIHRvIGFkZHJlc3MpCiAgICB3 aGljaCB1c2VzIGFuIG9mZnNldCB0aGF0IGlzIGJhc2VkIG9uIHRoZSBQQyB2YWx1ZTogUEMgKyBp bW0zMi4KICAgIEJlY2F1c2Ugd2UgaW5zZXJ0IHRoZSBicmFuY2ggYXQgdGhlIHN0YXJ0IG9mIHRo ZSBvbGQgZnVuY3Rpb24KICAgIHdlIGhhdmUgdG8gYWNjb3VudCBmb3IgdGhlIGluc3RydWN0aW9u IGFscmVhZHkgYmVpbmcgZmV0Y2hlZAogICAgYW5kIHN1YnRyYWN0IC04IGZyb20gdGhlIGRlbHRh IChuZXdfYWRkciAtIG9sZF9hZGRyKS4gU2VlCiAgICBBUk0gRERJIDA0MDZDLmMsIHNlZSBBMi4z IChwZyA0NSkgYW5kIEE4LjguMTggcGcgKHBnIDMzNCwzMzUpCgogMykgQWxsb3dzIHRoZSB0ZXN0 LWNhc2VzIHRvIGJlIGJ1aWx0IHVuZGVyIEFSTSAzMi4KICAgIFRoZSAibGl2ZXBhdGNoOiB0ZXN0 czogTWFrZSB0aGVtIGNvbXBpbGUgdW5kZXIgQVJNNjQiCiAgICBwdXQgaW4gdGhlIHJpZ2h0IGlu ZnJhc3RydWN0dXJlIGZvciBpdCBhbmQgd2UgcGlnZ3liYWNrIG9uIGl0LgoKQWNrZWQtYnk6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4gW2ZvciBub24tQVJNIHBhcnRzXQpTaWduZWQt b2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+Ci0t LQpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IFN0ZWZhbm8gU3Rh YmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KCnYyOiBGaXJzdCBzdWJtaXNzaW9uLgp2 MzogVXNlIExJVkVQQVRDSF9BUkNIX1JBTkdFIGluc3RlYWQgb2YgTkVHQVRJVkVfMzJNQiBtYWNy bwogICAtVXNlIFBBVENIX0lOU05fU0laRSBpbnN0ZWFkIG9mIHRoZSB2YWx1ZSA0LgogICAtRGl0 Y2ggdGhlIG9sZF9wdHIgbG9jYWwgdmFyaWFibGUuCiAgIC1Vc2UgOCBmb3IgZXZhbHVhdGluZyB0 aGUgYnJhbmNoIGluc3RlYWQgb2YgNC4gQmFzZWQgb24gQVJNIGRvY3MuCiAgIC1OT1AgcGF0Y2gg dXAgdG8gc2l6ZW9mKG9wYXF1ZSkgJSBQQVRDSF9JTlNOX1NJWkUgKHNvIDcgaW5zdHJ1Y3Rpb25z KS4KICAgLURvbid0IG1hc2sgMHgwMEZGRkZGX0VfIGFmdGVyIHNoaWZ0aW5nLCBpbnN0ZWFkIG1h c2sgYnkgMHgwMEZGRkZGX0ZfLgogICAgVGhlIHJlYXNvbiBpcyB0aGF0IG9mZnNldCBpcyBjb25z dHJ1Y3RlZCBieSBzaGlmdGluZyBieSB0d28gdGhlIGluc24KICAgIChleGNlcHQgdGhlIGZpcnN0 IHR3byBieXRlcykgYnkgbGVmdCB3aGljaCBtZWFudCB3ZSB3b3VsZCBoYXZlIGNsZWFyZWQKICAg IG9mZnNldFsyXSEgLSBhbmQganVtcGVkIHRvIGEgbG9jYXRpb24gdGhhdCB3YXMgLTQgYnl0ZXMg b2ZmLgogICAtVXBkYXRlIGNvbW1pdCBkZXNjcmlwdGlvbiB0byBoYXZlIC04IGluc3RlYWQgb2Yg LTQgZGVsdGEgYW5kIGFsc28KICAgIGluY2x1ZGUgcmVmZXJlbmNlIHRvIHNwZWMuCnY0OiBBZGRl ZCBKYW4ncyBBY2suCiAgIHMvUEFUQ0hfSU5TTl9TSVpFL0FSQ0hfUEFUQ0hfSU5TTl9TSVpFLwog ICBzL2FyY2hfbGl2ZXBhdGNoX2luc25fbGVuL2xpdmVwYXRjaF9pbnNuX2xlbi8KICAgcy9MSVZF UEFUQ0hfQVJDSF9SQU5HRS9BUkNIX0xJVkVQQVRDSF9SQU5HRS8KLS0tCiB4ZW4vYXJjaC9hcm0v YXJtMzIvbGl2ZXBhdGNoLmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KIHhlbi9hcmNoL2FybS9hcm02NC9saXZlcGF0Y2guYyB8ICAgNyArKwogeGVuL2Fy Y2gvYXJtL2xpdmVwYXRjaC5jICAgICAgIHwgICA3IC0tCiB4ZW4vY29tbW9uL0tjb25maWcgICAg ICAgICAgICAgfCAgIDIgKy0KIHhlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmggICB8ICAyNCAr KystCiB4ZW4vdGVzdC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDIgLQogeGVuL3Rlc3QvbGl2 ZXBhdGNoL01ha2VmaWxlICAgIHwgICAzICsKIDcgZmlsZXMgY2hhbmdlZCwgMzA1IGluc2VydGlv bnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9hcm0zMi9s aXZlcGF0Y2guYyBiL3hlbi9hcmNoL2FybS9hcm0zMi9saXZlcGF0Y2guYwppbmRleCBjMzNiNjhk Li42YWQwY2U1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtMzIvbGl2ZXBhdGNoLmMKKysr IGIveGVuL2FyY2gvYXJtL2FybTMyL2xpdmVwYXRjaC5jCkBAIC0zLDI4ICszLDI5NyBAQAogICov CiAKICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4va2VybmVsLmg+CiAjaW5j bHVkZSA8eGVuL2xpYi5oPgogI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2hfZWxmLmg+CiAjaW5jbHVk ZSA8eGVuL2xpdmVwYXRjaC5oPgogCisjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxh c20vbGl2ZXBhdGNoLmg+CisKIHZvaWQgYXJjaF9saXZlcGF0Y2hfYXBwbHlfam1wKHN0cnVjdCBs aXZlcGF0Y2hfZnVuYyAqZnVuYykKIHsKKyAgICB1aW50MzJfdCBpbnNuOworICAgIHVpbnQzMl90 ICpuZXdfcHRyOworICAgIHVuc2lnbmVkIGludCBpLCBsZW47CisKKyAgICBCVUlMRF9CVUdfT04o QVJDSF9QQVRDSF9JTlNOX1NJWkUgPiBzaXplb2YoZnVuYy0+b3BhcXVlKSk7CisgICAgQlVJTERf QlVHX09OKEFSQ0hfUEFUQ0hfSU5TTl9TSVpFICE9IHNpemVvZihpbnNuKSk7CisKKyAgICBBU1NF UlQodm1hcF9vZl94ZW5fdGV4dCk7CisKKyAgICBsZW4gPSBsaXZlcGF0Y2hfaW5zbl9sZW4oZnVu Yyk7CisgICAgaWYgKCAhbGVuICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogU2F2ZSBvbGQg b25lcy4gKi8KKyAgICBtZW1jcHkoZnVuYy0+b3BhcXVlLCBmdW5jLT5vbGRfYWRkciwgbGVuKTsK KworICAgIGlmICggZnVuYy0+bmV3X2FkZHIgKQorICAgIHsKKyAgICAgICAgczMyIGRlbHRhOwor CisgICAgICAgIC8qCisgICAgICAgICAqIFBDIGlzIGN1cnJlbnQgYWRkcmVzcyAob2xkX2FkZHIp ICsgOCBieXRlcy4gVGhlIHNlbWFudGljcyBmb3IgYQorICAgICAgICAgKiB1bmNvbmRpdGlvbmFs IGJyYW5jaCBpcyB0byBqdW1wIHRvIFBDICsgaW1tMzIgKG9mZnNldCkuCisgICAgICAgICAqCisg ICAgICAgICAqIEFSTSBEREkgMDQwNkMuYywgc2VlIEEyLjMgKHBnIDQ1KSBhbmQgQTguOC4xOCBw ZyAocGcgMzM0LDMzNSkKKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIGRlbHRhID0g KHMzMilmdW5jLT5uZXdfYWRkciAtIChzMzIpKGZ1bmMtPm9sZF9hZGRyICsgOCk7CisKKyAgICAg ICAgLyogVGhlIGFyY2hfbGl2ZXBhdGNoX3N5bWJvbF9vayBzaG91bGQgaGF2ZSBjYXVnaHQgaXQu ICovCisgICAgICAgIEFTU0VSVChkZWx0YSA+PSAtKHMzMilBUkNIX0xJVkVQQVRDSF9SQU5HRSB8 fAorICAgICAgICAgICAgICAgZGVsdGEgPCAoczMyKUFSQ0hfTElWRVBBVENIX1JBTkdFKTsKKwor ICAgICAgICAvKiBDUFUgc2hpZnRzIGJ5IHR3byAobGVmdCkgd2hlbiBkZWNvZGluZywgc28gd2Ug c2hpZnQgcmlnaHQgYnkgdHdvLiAqLworICAgICAgICBkZWx0YSA9IGRlbHRhID4+IDI7CisgICAg ICAgIC8qIExldHMgbm90IG1vZGlmeSB0aGUgY29uZC4gKi8KKyAgICAgICAgZGVsdGEgJj0gMHgw MEZGRkZGRjsKKworICAgICAgICBpbnNuID0gMHhlYTAwMDAwMCB8IGRlbHRhOworICAgIH0KKyAg ICBlbHNlCisgICAgICAgIGluc24gPSAweGUxYTAwMDAwOyAvKiBtb3YgcjAsIHIwICovCisKKyAg ICBuZXdfcHRyID0gZnVuYy0+b2xkX2FkZHIgLSAodm9pZCAqKV9zdGFydCArIHZtYXBfb2ZfeGVu X3RleHQ7CisgICAgbGVuID0gbGVuIC8gc2l6ZW9mKHVpbnQzMl90KTsKKworICAgIC8qIFBBVENI ISAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKQorICAgICAgICAqKG5ld19wdHIg KyBpKSA9IGluc247CisKKyAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFuZ2Uo ZnVuYy0+b2xkX2FkZHIsIHNpemVvZigqbmV3X3B0cikgKiBsZW4pOwogfQogCiB2b2lkIGFyY2hf bGl2ZXBhdGNoX3JldmVydF9qbXAoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQog eworICAgIHVpbnQzMl90ICpuZXdfcHRyOworICAgIHVuc2lnbmVkIGludCBpLCBsZW47CisKKyAg ICBuZXdfcHRyID0gZnVuYy0+b2xkX2FkZHIgLSAodm9pZCAqKV9zdGFydCArIHZtYXBfb2ZfeGVu X3RleHQ7CisgICAgbGVuID0gbGl2ZXBhdGNoX2luc25fbGVuKGZ1bmMpIC8gc2l6ZW9mKHVpbnQz Ml90KTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkKKyAgICB7CisgICAgICAgIHVp bnQzMl90IGluc247CisKKyAgICAgICAgbWVtY3B5KCZpbnNuLCBmdW5jLT5vcGFxdWUgKyAoaSAq IHNpemVvZih1aW50MzJfdCkpLCBBUkNIX1BBVENIX0lOU05fU0laRSk7CisgICAgICAgIC8qIFBB VENIISAqLworICAgICAgICAqKG5ld19wdHIgKyBpKSA9IGluc247CisgICAgfQorCisgICAgY2xl YW5fYW5kX2ludmFsaWRhdGVfZGNhY2hlX3ZhX3JhbmdlKGZ1bmMtPm9sZF9hZGRyLCBzaXplb2Yo Km5ld19wdHIpICogbGVuKTsKIH0KIAogaW50IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9lbGYoY29u c3Qgc3RydWN0IGxpdmVwYXRjaF9lbGYgKmVsZikKIHsKLSAgICByZXR1cm4gLUVPUE5PVFNVUFA7 CisgICAgY29uc3QgRWxmX0VoZHIgKmhkciA9IGVsZi0+aGRyOworCisgICAgaWYgKCBoZHItPmVf bWFjaGluZSAhPSBFTV9BUk0gfHwKKyAgICAgICAgIGhkci0+ZV9pZGVudFtFSV9DTEFTU10gIT0g RUxGQ0xBU1MzMiApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRD SCAiJXM6IFVuc3VwcG9ydGVkIEVMRiBNYWNoaW5lIHR5cGUhXG4iLAorICAgICAgICAgICAgICAg IGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKyAgICB9CisKKyAgICBp ZiAoIChoZHItPmVfZmxhZ3MgJiBFRl9BUk1fRUFCSV9NQVNLKSAhPSBFRl9BUk1fRUFCSV9WRVI1 ICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogVW5z dXBwb3J0ZWQgRUxGIEVBQkkoJXgpIVxuIiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGhk ci0+ZV9mbGFncyk7CisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKyAgICB9CisKKyAgICBy ZXR1cm4gMDsKK30KKworc3RhdGljIHMzMiBnZXRfYWRkZW5kKHVuc2lnbmVkIGNoYXIgdHlwZSwg dm9pZCAqZGVzdCkKK3sKKyAgICBzMzIgYWRkZW5kID0gMDsKKworICAgIHN3aXRjaCAoIHR5cGUg KSB7CisgICAgY2FzZSBSX0FSTV9OT05FOgorICAgICAgICAvKiBpZ25vcmUgKi8KKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIFJfQVJNX0FCUzMyOgorICAgICAgICBhZGRlbmQgPSAqKHUzMiAq KWRlc3Q7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSX0FSTV9SRUwzMjoKKyAgICAgICAg YWRkZW5kID0gKih1MzIgKilkZXN0OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUl9BUk1f TU9WV19BQlNfTkM6CisgICAgY2FzZSBSX0FSTV9NT1ZUX0FCUzoKKyAgICAgICAgYWRkZW5kID0g ICgqKHUzMiAqKWRlc3QgJiAweDAwMDAwRkZGKTsKKyAgICAgICAgYWRkZW5kIHw9ICgqKHUzMiAq KWRlc3QgJiAweDAwMEYwMDAwKSA+PiA0OworICAgICAgICAvKiBBZGRlbmQgaXMgdG8gc2lnbi1l eHRlbmQgKFsxOToxNl0sWzExOjBdKS4gKi8KKyAgICAgICAgYWRkZW5kID0gKHMxNilhZGRlbmQ7 CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSX0FSTV9DQUxMOgorICAgIGNhc2UgUl9BUk1f SlVNUDI0OgorICAgICAgICAvKiBBZGRlbmQgPSBzaWduX2V4dGVuZCAoaW5zblsyMzowXSkgPDwg MiAqLworICAgICAgICBhZGRlbmQgPSAoKCoodTMyICopZGVzdCAmIDB4RkZGRkZGKSBeIDB4ODAw MDAwKSAtIDB4ODAwMDAwOworICAgICAgICBhZGRlbmQgPSBhZGRlbmQgPDwgMjsKKyAgICAgICAg YnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGFkZGVuZDsKK30KKworc3RhdGljIGludCBwZXJm b3JtX3JlbCh1bnNpZ25lZCBjaGFyIHR5cGUsIHZvaWQgKmRlc3QsIHVpbnQzMl90IHZhbCwgczMy IGFkZGVuZCkKK3sKKworICAgIHN3aXRjaCAoIHR5cGUgKSB7CisgICAgY2FzZSBSX0FSTV9OT05F OgorICAgICAgICAvKiBpZ25vcmUgKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJfQVJN X0FCUzMyOiAvKiAoUyArIEEpIHwgVCAqLworICAgICAgICAqKHUzMiAqKWRlc3QgPSAodmFsICsg YWRkZW5kKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJfQVJNX1JFTDMyOiAvKiAoKFMg KyBBKSB8IFQpIOKAkyBQICovCisgICAgICAgICoodTMyICopZGVzdCA9ICh2YWwgKyBhZGRlbmQp IC0gKHVpbnQzMl90KWRlc3Q7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSX0FSTV9NT1ZX X0FCU19OQzogLyogUyArIEEgKi8KKyAgICBjYXNlIFJfQVJNX01PVlRfQUJTOiAvKiBTICsgQSAq LworICAgICAgICAvKiBDbGVhciBhZGRlbmQgaWYgbmVlZGVkIC4gKi8KKyAgICAgICAgaWYgKCBh ZGRlbmQgKQorICAgICAgICAgICAgKih1MzIgKilkZXN0ICY9IDB4RkZGMEYwMDA7CisKKyAgICAg ICAgaWYgKCB0eXBlID09IFJfQVJNX01PVlRfQUJTICkKKyAgICAgICAgeworICAgICAgICAgICAg LyoKKyAgICAgICAgICAgICAqIEFsbW9zdCB0aGUgc2FtZSBhcyBNT1ZXIGV4Y2VwdCBpdCB1c2Vz IHRoZSAxNiBiaXQKKyAgICAgICAgICAgICAqIGhpZ2ggdmFsdWUuIFB1dHRpbmcgaXQgaW4gaW5z biByZXF1aXJlcyBzaGlmdGluZyByaWdodCBieQorICAgICAgICAgICAgICogMTYtYml0IChhcyB3 ZSBvbmx5IGhhdmUgMTYtYml0IGZvciBpbW0uCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg IHZhbCAmPSAweEZGRkYwMDAwOyAvKiBSZXN1bHRNYXNrICovCisgICAgICAgICAgICB2YWwgPSB2 YWwgPj4gMTY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg ICAvKiBNT1ZXIGxvYWRzIDE2IGJpdHMgaW50byB0aGUgYm90dG9tIGhhbGYgb2YgYSByZWdpc3Rl ci4gKi8KKyAgICAgICAgICAgIHZhbCAmPSAweEZGRkY7CisgICAgICAgIH0KKyAgICAgICAgLyog WzExOjBdID0gUmVzdWx0X01hc2soWCkgJiAweEZGRixbMTk6MTZdID0gUmVzdWx0X01hc2soWCkg Pj4gMTIgKi8KKyAgICAgICAgKih1MzIgKilkZXN0IHw9IHZhbCAmIDB4RkZGOworICAgICAgICAq KHUzMiAqKWRlc3QgfD0gKHZhbCA+PiAxMikgPDwgMTY7CisgICAgICAgIGJyZWFrOworCisgICAg Y2FzZSBSX0FSTV9DQUxMOgorICAgIGNhc2UgUl9BUk1fSlVNUDI0OiAvKiAoUyArIEEpIC0gUCAq LworICAgICAgICAvKiBDbGVhciB0aGUgb2xkIGFkZGVuZC4gKi8KKyAgICAgICAgaWYgKCBhZGRl bmQgKQorICAgICAgICAgICAgKih1MzIgKilkZXN0ICY9IDB4RkYwMDAwMDA7CisKKyAgICAgICAg dmFsICs9IGFkZGVuZCAtICh1aW50MzJfdClkZXN0OworCisgICAgICAgIC8qCisgICAgICAgICAq IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9kaXN0YW5jZSBjYW4ndCBhY2NvdW50IG9mIGFkZGVuZCBz byB3ZSBoYXZlCisgICAgICAgICAqIHRvIGRvIHRoZSBjaGVjayBoZXJlIGFzIHdlbGwuCisgICAg ICAgICAqLworICAgICAgICBpZiAoIChzMzIpdmFsIDwgLShzMzIpQVJDSF9MSVZFUEFUQ0hfUkFO R0UgfHwKKyAgICAgICAgICAgICAoczMyKXZhbCA+PSAoczMyKUFSQ0hfTElWRVBBVENIX1JBTkdF ICkKKyAgICAgICAgICAgIHJldHVybiAtRU9WRVJGTE9XOworCisgICAgICAgIC8qIENQVSBhbHdh eXMgc2hpZnRzIGluc24gYnkgdHdvLCBzbyBjb21wbGVtZW50IGl0LiAqLworICAgICAgICB2YWwg PSB2YWwgPj4gMjsKKyAgICAgICAgdmFsICY9IDB4MDBGRkZGRkU7CisgICAgICAgICoodTMyICop ZGVzdCB8PSAodWludDMyX3QpdmFsOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg ICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisK K2ludCBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMg KmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNo X2VsZl9zZWMgKnJlbGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZV9yZWxh KQoreworICAgIGNvbnN0IEVsZl9SZWxBICpyX2E7CisgICAgY29uc3QgRWxmX1JlbCAqcjsKKyAg ICB1bnNpZ25lZCBpbnQgc3ltbmR4LCBpOworICAgIHVpbnQzMl90IHZhbDsKKyAgICB2b2lkICpk ZXN0OworICAgIGludCByYyA9IDA7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IChyZWxhLT5zZWMt PnNoX3NpemUgLyByZWxhLT5zZWMtPnNoX2VudHNpemUpOyBpKysgKQorICAgIHsKKyAgICAgICAg dW5zaWduZWQgY2hhciB0eXBlOworICAgICAgICBzMzIgYWRkZW5kID0gMDsKKworICAgICAgICBp ZiAoIHVzZV9yZWxhICkKKyAgICAgICAgeworICAgICAgICAgICAgcl9hID0gcmVsYS0+ZGF0YSAr IGkgKiByZWxhLT5zZWMtPnNoX2VudHNpemU7CisgICAgICAgICAgICBzeW1uZHggPSBFTEYzMl9S X1NZTShyX2EtPnJfaW5mbyk7CisgICAgICAgICAgICB0eXBlID0gRUxGMzJfUl9UWVBFKHJfYS0+ cl9pbmZvKTsKKyAgICAgICAgICAgIGRlc3QgPSBiYXNlLT5sb2FkX2FkZHIgKyByX2EtPnJfb2Zm c2V0OyAvKiBQICovCisgICAgICAgICAgICBhZGRlbmQgPSByX2EtPnJfYWRkZW5kOworICAgICAg ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgciA9IHJlbGEtPmRhdGEg KyBpICogcmVsYS0+c2VjLT5zaF9lbnRzaXplOworICAgICAgICAgICAgc3ltbmR4ID0gRUxGMzJf Ul9TWU0oci0+cl9pbmZvKTsKKyAgICAgICAgICAgIHR5cGUgPSBFTEYzMl9SX1RZUEUoci0+cl9p bmZvKTsKKyAgICAgICAgICAgIGRlc3QgPSBiYXNlLT5sb2FkX2FkZHIgKyByLT5yX29mZnNldDsg LyogUCAqLworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBzeW1uZHggPiBlbGYtPm5zeW0gKQor ICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6 IFJlbGF0aXZlIHN5bWJvbCB3YW50cyBzeW1ib2xAJXUgd2hpY2ggaXMgcGFzdCBlbmQhXG4iLAor ICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIHN5bW5keCk7CisgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggIXVzZV9yZWxhICkKKyAgICAg ICAgICAgIGFkZGVuZCA9IGdldF9hZGRlbmQodHlwZSwgZGVzdCk7CisKKyAgICAgICAgdmFsID0g ZWxmLT5zeW1bc3ltbmR4XS5zeW0tPnN0X3ZhbHVlOyAvKiBTICovCisKKyAgICAgICAgcmMgPSBw ZXJmb3JtX3JlbCh0eXBlLCBkZXN0LCB2YWwsIGFkZGVuZCk7CisgICAgICAgIHN3aXRjaCAoIHJj ICkgeworICAgICAgICBjYXNlIC1FT1ZFUkZMT1c6CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIExJVkVQQVRDSCAiJXM6IE92ZXJmbG93IGluIHJlbG9jYXRpb24gJXUgaW4gJXMgZm9y ICVzIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBpLCByZWxhLT5uYW1lLCBi YXNlLT5uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgLUVPUE5PVFNV UFA6CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IFVuaGFu ZGxlZCByZWxvY2F0aW9uICMleFxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCB0 eXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgYnJl YWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitpbnQgYXJjaF9saXZlcGF0Y2hfcGVy Zm9ybV9yZWwoc3RydWN0IGxpdmVwYXRjaF9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKmJhc2UsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpy ZWxhKQoreworICAgIHJldHVybiBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtKGVsZiwgYmFzZSwgcmVs YSwgZmFsc2UpOwogfQogCiBpbnQgYXJjaF9saXZlcGF0Y2hfcGVyZm9ybV9yZWxhKHN0cnVjdCBs aXZlcGF0Y2hfZWxmICplbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAqYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpyZWxhKQogewotICAgIHJl dHVybiAtRU5PU1lTOworICAgIHJldHVybiBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtKGVsZiwgYmFz ZSwgcmVsYSwgdHJ1ZSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtNjQv bGl2ZXBhdGNoLmMgYi94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMKaW5kZXggN2Q1OTNi Mi4uZDUzZmU1OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTY0L2xpdmVwYXRjaC5jCisr KyBiL3hlbi9hcmNoL2FybS9hcm02NC9saXZlcGF0Y2guYwpAQCAtMjMxLDYgKzIzMSwxMyBAQCBz dGF0aWMgaW50IHJlbG9jX2luc25faW1tKGVudW0gYWFyY2g2NF9yZWxvY19vcCBvcCwgdm9pZCAq ZGVzdCwgdTY0IHZhbCwKICAgICByZXR1cm4gMDsKIH0KIAoraW50IGFyY2hfbGl2ZXBhdGNoX3Bl cmZvcm1fcmVsKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpiYXNlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAq cmVsYSkKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKwogaW50IGFyY2hfbGl2ZXBhdGNoX3Bl cmZvcm1fcmVsYShzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKmJhc2UsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3Nl YyAqcmVsYSkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9saXZlcGF0Y2guYyBiL3hlbi9hcmNo L2FybS9saXZlcGF0Y2guYwppbmRleCBiNzcxY2I3Li45YzE5OGU5IDEwMDY0NAotLS0gYS94ZW4v YXJjaC9hcm0vbGl2ZXBhdGNoLmMKKysrIGIveGVuL2FyY2gvYXJtL2xpdmVwYXRjaC5jCkBAIC0x MzIsMTMgKzEzMiw2IEBAIGJvb2wgYXJjaF9saXZlcGF0Y2hfc3ltYm9sX2RlbnkoY29uc3Qgc3Ry dWN0IGxpdmVwYXRjaF9lbGYgKmVsZiwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWludCBhcmNo X2xpdmVwYXRjaF9wZXJmb3JtX3JlbChzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAq YmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBh dGNoX2VsZl9zZWMgKnJlbGEpCi17Ci0gICAgcmV0dXJuIC1FTk9TWVM7Ci19Ci0KIGludCBhcmNo X2xpdmVwYXRjaF9zZWN1cmUoY29uc3Qgdm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51 bSB2YV90eXBlIHR5cGUpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBzdGFydCA9ICh1bnNpZ25lZCBs b25nKXZhOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9LY29uZmlnIGIveGVuL2NvbW1vbi9LY29u ZmlnCmluZGV4IDBmMjYwMjcuLmQ0ZjEwY2EgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vS2NvbmZp ZworKysgYi94ZW4vY29tbW9uL0tjb25maWcKQEAgLTIxNyw3ICsyMTcsNyBAQCBjb25maWcgQ1JZ UFRPCiBjb25maWcgTElWRVBBVENICiAJYm9vbCAiTGl2ZSBwYXRjaGluZyBzdXBwb3J0IChURUNI IFBSRVZJRVcpIgogCWRlZmF1bHQgbgotCWRlcGVuZHMgb24gIUFSTV8zMiAmJiBIQVNfQlVJTERf SUQgPSAieSIKKwlkZXBlbmRzIG9uIEhBU19CVUlMRF9JRCA9ICJ5IgogCS0tLWhlbHAtLS0KIAkg IEFsbG93cyBhIHJ1bm5pbmcgWGVuIGh5cGVydmlzb3IgdG8gYmUgZHluYW1pY2FsbHkgcGF0Y2hl ZCB1c2luZwogCSAgYmluYXJ5IHBhdGNoZXMgd2l0aG91dCByZWJvb3RpbmcuIFRoaXMgaXMgcHJp bWFyaWx5IHVzZWQgdG8gYmluYXJpbHkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9lbGZz dHJ1Y3RzLmggYi94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oCmluZGV4IDczMjk5ODcuLmU1 NDMyMTIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgKKysrIGIveGVu L2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaApAQCAtMTAzLDYgKzEwMywxNSBAQCB0eXBlZGVmIHVp bnQ2NF90CUVsZjY0X1h3b3JkOwogICAgICAgICAgICAgICAgICAgICAgIChlaGRyKS5lX2lkZW50 W0VJX01BRzJdID09IEVMRk1BRzIgJiYgXAogICAgICAgICAgICAgICAgICAgICAgIChlaGRyKS5l X2lkZW50W0VJX01BRzNdID09IEVMRk1BRzMpCiAKKy8qIGVfZmxhZ3MgKi8KKyNkZWZpbmUgRUZf QVJNX0VBQklfTUFTSwkweGZmMDAwMDAwCisjZGVmaW5lIEVGX0FSTV9FQUJJX1VOS05PV04JMHgw MDAwMDAwMAorI2RlZmluZSBFRl9BUk1fRUFCSV9WRVIxCTB4MDEwMDAwMDAKKyNkZWZpbmUgRUZf QVJNX0VBQklfVkVSMgkweDAyMDAwMDAwCisjZGVmaW5lIEVGX0FSTV9FQUJJX1ZFUjMJMHgwMzAw MDAwMAorI2RlZmluZSBFRl9BUk1fRUFCSV9WRVI0CTB4MDQwMDAwMDAKKyNkZWZpbmUgRUZfQVJN X0VBQklfVkVSNQkweDA1MDAwMDAwCisKIC8qIEVMRiBIZWFkZXIgKi8KIHR5cGVkZWYgc3RydWN0 IGVsZmhkciB7CiAJdW5zaWduZWQgY2hhcgllX2lkZW50W0VJX05JREVOVF07IC8qIEVMRiBJZGVu dGlmaWNhdGlvbiAqLwpAQCAtMzY0LDkgKzM3MywyMiBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZGVm aW5lIFJfWDg2XzY0X1BMVDMyCQk0CS8qIDMyIGJpdCBQTFQgYWRkcmVzcyAqLwogCiAvKgorICog QVJNMzIgcmVsb2NhdGlvbiB0eXBlcy4gU2VlCisgKiBodHRwOi8vaW5mb2NlbnRlci5hcm0uY29t L2hlbHAvdG9waWMvY29tLmFybS5kb2MuaWhpMDA0NGYvSUhJMDA0NEZfYWFlbGYucGRmCiAgKiBT IC0gYWRkcmVzcyBvZiBzeW1ib2wuCi0gKiBBIC0gYWRkZW5kIGZvciByZWxvY2F0aW9uIChyX2Fk ZGVuZCkKKyAqIEEgLSBhZGRlbmQgZm9yIHJlbG9jYXRpb24gKHJfYWRkZW5kIG9yIG5lZWQgdG8g ZXh0cmFjdCBmcm9tIGluc24pCiAgKiBQIC0gYWRkcmVzcyBvZiB0aGUgZGVzdCBiZWluZyByZWxv Y2F0ZWQgKGRlcmlldmVkIGZyb20gcl9vZmZzZXQpCisgKi8KKyNkZWZpbmUgUl9BUk1fTk9ORSAg ICAgICAgICAgICAgMAorI2RlZmluZSBSX0FSTV9BQlMzMiAgICAgICAgICAgICAyCS8qIERpcmVj dCAzMi1iaXQuIFMrQSAqLworI2RlZmluZSBSX0FSTV9SRUwzMiAgICAgICAgICAgICAzCS8qIFBD IHJlbGF0aXZlLiBTK0EgKi8KKyNkZWZpbmUgUl9BUk1fQ0FMTCAgICAgICAgICAgICAgMjgJLyog U2lnbkV4dGVuZChbMjM6MF0pIDw8IDIuIFMrQS1QICovCisjZGVmaW5lIFJfQVJNX0pVTVAyNCAg ICAgICAgICAgIDI5CS8qIFNhbWUgYXMgUl9BUk1fQ0FMTCAqLworI2RlZmluZSBSX0FSTV9NT1ZX X0FCU19OQyAgICAgICA0MwkvKiBTaWduRXh0ZW5kKFsxOToxNl0sWzExOjBdKSYweEZGRkYsIFMr QSAqLworI2RlZmluZSBSX0FSTV9NT1ZUX0FCUyAgICAgICAgICA0NAkvKiBTaWduRXh0ZW5kKFsx OToxNl0sWzExOjApKSYweEZGRkYwMDAwICovCisJCQkJCS8qICA+PiAxNiwgUytBLiAqLworCisv KgogICogTkMgLSAgTm8gY2hlY2sgZm9yIG92ZXJmbG93LgogICoKICAqIFRoZSBkZWZpbmVzIGFs c28gdXNlIF9QUkVMIGZvciBQQy1yZWxhdGl2ZSBhZGRyZXNzLCBhbmQgX05DIGlzIE5vIENoZWNr LgpkaWZmIC0tZ2l0IGEveGVuL3Rlc3QvTWFrZWZpbGUgYi94ZW4vdGVzdC9NYWtlZmlsZQppbmRl eCA5NWMxNzU1Li5kOTFiMzE5IDEwMDY0NAotLS0gYS94ZW4vdGVzdC9NYWtlZmlsZQorKysgYi94 ZW4vdGVzdC9NYWtlZmlsZQpAQCAtMSw4ICsxLDYgQEAKIC5QSE9OWTogdGVzdHMKIHRlc3RzOgot aWZuZXEgJChYRU5fVEFSR0VUX0FSQ0gpLGFybTMyKQogCSQoTUFLRSkgLWYgJChCQVNFRElSKS9S dWxlcy5tayAtQyBsaXZlcGF0Y2ggbGl2ZXBhdGNoCi1lbmRpZgogCiAuUEhPTlk6IGNsZWFuCiBj bGVhbjo6CmRpZmYgLS1naXQgYS94ZW4vdGVzdC9saXZlcGF0Y2gvTWFrZWZpbGUgYi94ZW4vdGVz dC9saXZlcGF0Y2gvTWFrZWZpbGUKaW5kZXggNWRiNGQ5Yy4uNGQ2NmE0MCAxMDA2NDQKLS0tIGEv eGVuL3Rlc3QvbGl2ZXBhdGNoL01ha2VmaWxlCisrKyBiL3hlbi90ZXN0L2xpdmVwYXRjaC9NYWtl ZmlsZQpAQCAtNiw2ICs2LDkgQEAgZW5kaWYKIGlmZXEgKCQoWEVOX1RBUkdFVF9BUkNIKSxhcm02 NCkKIE9CSkNPUFlfTUFHSUMgOj0gLUkgYmluYXJ5IC1PIGVsZjY0LWxpdHRsZWFhcmNoNjQgLUIg YWFyY2g2NAogZW5kaWYKK2lmZXEgKCQoWEVOX1RBUkdFVF9BUkNIKSxhcm0zMikKK09CSkNPUFlf TUFHSUMgOj0gLUkgYmluYXJ5IC1PIGVsZjMyLWxpdHRsZWFybSAtQiBhcm0KK2VuZGlmCiAKIENP REVfQUREUj0kKHNoZWxsIG5tIC0tZGVmaW5lZCAkKDEpIHwgZ3JlcCAkKDIpIHwgYXdrICd7cHJp bnQgIjB4IiQkMX0nKQogQ09ERV9TWj0kKHNoZWxsIG5tIC0tZGVmaW5lZCAtUyAkKDEpIHwgZ3Jl cCAkKDIpIHwgYXdrICd7IHByaW50ICIweCIkJDJ9JykKLS0gCjIuNS41CgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==