From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v3 16/18] livepatch: ARM32 support. Date: Sun, 11 Sep 2016 16:35:23 -0400 Message-ID: <1473626125-13683-17-git-send-email-konrad.wilk@oracle.com> References: <1473626125-13683-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 1bjBTz-00027h-RN for xen-devel@lists.xenproject.org; Sun, 11 Sep 2016 20:36:08 +0000 In-Reply-To: <1473626125-13683-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, julien.grall@arm.com, sstabellini@kernel.org, ross.lagerwall@citrix.com Cc: andrew.cooper3@citrix.com, 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 ZnJhc3RydWN0dXJlIGZvciBpdCBhbmQgd2UgcGlnZ3liYWNrIG9uIGl0LgoKU2lnbmVkLW9mZi1i eTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgotLS0KQ2M6 IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxp bmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Cgp2MjogRmlyc3Qgc3VibWlzc2lvbi4KdjM6IFVz ZSBMSVZFUEFUQ0hfQVJDSF9SQU5HRSBpbnN0ZWFkIG9mIE5FR0FUSVZFXzMyTUIgbWFjcm8KICAg LVVzZSBQQVRDSF9JTlNOX1NJWkUgaW5zdGVhZCBvZiB0aGUgdmFsdWUgNC4KICAgLURpdGNoIHRo ZSBvbGRfcHRyIGxvY2FsIHZhcmlhYmxlLgogICAtVXNlIDggZm9yIGV2YWx1YXRpbmcgdGhlIGJy YW5jaCBpbnN0ZWFkIG9mIDQuIEJhc2VkIG9uIEFSTSBkb2NzLgogICAtTk9QIHBhdGNoIHVwIHRv IHNpemVvZihvcGFxdWUpICUgUEFUQ0hfSU5TTl9TSVpFIChzbyA3IGluc3RydWN0aW9ucykuCiAg IC1Eb24ndCBtYXNrIDB4MDBGRkZGRl9FXyBhZnRlciBzaGlmdGluZywgaW5zdGVhZCBtYXNrIGJ5 IDB4MDBGRkZGRl9GXy4KICAgIFRoZSByZWFzb24gaXMgdGhhdCBvZmZzZXQgaXMgY29uc3RydWN0 ZWQgYnkgc2hpZnRpbmcgYnkgdHdvIHRoZSBpbnNuCiAgICAoZXhjZXB0IHRoZSBmaXJzdCB0d28g Ynl0ZXMpIGJ5IGxlZnQgd2hpY2ggbWVhbnQgd2Ugd291bGQgaGF2ZSBjbGVhcmVkCiAgICBvZmZz ZXRbMl0hIC0gYW5kIGp1bXBlZCB0byBhIGxvY2F0aW9uIHRoYXQgd2FzIC00IGJ5dGVzIG9mZi4K ICAgLVVwZGF0ZSBjb21taXQgZGVzY3JpcHRpb24gdG8gaGF2ZSAtOCBpbnN0ZWFkIG9mIC00IGRl bHRhIGFuZCBhbHNvCiAgICBpbmNsdWRlIHJlZmVyZW5jZSB0byBzcGVjLgotLS0KIHhlbi9hcmNo L2FybS9hcm0zMi9saXZlcGF0Y2guYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLQogeGVuL2FyY2gvYXJtL2FybTY0L2xpdmVwYXRjaC5jIHwgICA3ICsrCiB4 ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMgICAgICAgfCAgIDcgLS0KIHhlbi9jb21tb24vS2NvbmZp ZyAgICAgICAgICAgICB8ICAgMiArLQogeGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaCAgIHwg IDI0ICsrKy0KIHhlbi90ZXN0L01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMiAtCiB4ZW4vdGVz dC9saXZlcGF0Y2gvTWFrZWZpbGUgICAgfCAgIDMgKwogNyBmaWxlcyBjaGFuZ2VkLCAzMDUgaW5z ZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2Fy bTMyL2xpdmVwYXRjaC5jIGIveGVuL2FyY2gvYXJtL2FybTMyL2xpdmVwYXRjaC5jCmluZGV4IGMz M2I2OGQuLjU2MjMzYTQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9hcm0zMi9saXZlcGF0Y2gu YworKysgYi94ZW4vYXJjaC9hcm0vYXJtMzIvbGl2ZXBhdGNoLmMKQEAgLTMsMjggKzMsMjk3IEBA CiAgKi8KIAogI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9rZXJuZWwuaD4K ICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaF9lbGYuaD4KICNp bmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CiAKKyNpbmNsdWRlIDxhc20vcGFnZS5oPgorI2luY2x1 ZGUgPGFzbS9saXZlcGF0Y2guaD4KKwogdm9pZCBhcmNoX2xpdmVwYXRjaF9hcHBseV9qbXAoc3Ry dWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQogeworICAgIHVpbnQzMl90IGluc247CisgICAgdWlu dDMyX3QgKm5ld19wdHI7CisgICAgdW5zaWduZWQgaW50IGksIGxlbjsKKworICAgIEJVSUxEX0JV R19PTihQQVRDSF9JTlNOX1NJWkUgPiBzaXplb2YoZnVuYy0+b3BhcXVlKSk7CisgICAgQlVJTERf QlVHX09OKFBBVENIX0lOU05fU0laRSAhPSBzaXplb2YoaW5zbikpOworCisgICAgQVNTRVJUKHZt YXBfb2ZfeGVuX3RleHQpOworCisgICAgbGVuID0gYXJjaF9saXZlcGF0Y2hfaW5zbl9sZW4oZnVu Yyk7CisgICAgaWYgKCAhbGVuICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogU2F2ZSBvbGQg b25lcy4gKi8KKyAgICBtZW1jcHkoZnVuYy0+b3BhcXVlLCBmdW5jLT5vbGRfYWRkciwgbGVuKTsK KworICAgIGlmICggZnVuYy0+bmV3X2FkZHIgKQorICAgIHsKKyAgICAgICAgczMyIGRlbHRhOwor CisgICAgICAgIC8qCisgICAgICAgICAqIFBDIGlzIGN1cnJlbnQgYWRkcmVzcyAob2xkX2FkZHIp ICsgOCBieXRlcy4gVGhlIHNlbWFudGljcyBmb3IgYQorICAgICAgICAgKiB1bmNvbmRpdGlvbmFs IGJyYW5jaCBpcyB0byBqdW1wIHRvIFBDICsgaW1tMzIgKG9mZnNldCkuCisgICAgICAgICAqCisg ICAgICAgICAqIEFSTSBEREkgMDQwNkMuYywgc2VlIEEyLjMgKHBnIDQ1KSBhbmQgQTguOC4xOCBw ZyAocGcgMzM0LDMzNSkKKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIGRlbHRhID0g KHMzMilmdW5jLT5uZXdfYWRkciAtIChzMzIpKGZ1bmMtPm9sZF9hZGRyICsgOCk7CisKKyAgICAg ICAgLyogVGhlIGFyY2hfbGl2ZXBhdGNoX3N5bWJvbF9vayBzaG91bGQgaGF2ZSBjYXVnaHQgaXQu ICovCisgICAgICAgIEFTU0VSVChkZWx0YSA+PSAtKHMzMilMSVZFUEFUQ0hfQVJDSF9SQU5HRSB8 fAorICAgICAgICAgICAgICAgZGVsdGEgPCAoczMyKUxJVkVQQVRDSF9BUkNIX1JBTkdFKTsKKwor ICAgICAgICAvKiBDUFUgc2hpZnRzIGJ5IHR3byAobGVmdCkgd2hlbiBkZWNvZGluZywgc28gd2Ug c2hpZnQgcmlnaHQgYnkgdHdvLiAqLworICAgICAgICBkZWx0YSA9IGRlbHRhID4+IDI7CisgICAg ICAgIC8qIExldHMgbm90IG1vZGlmeSB0aGUgY29uZC4gKi8KKyAgICAgICAgZGVsdGEgJj0gMHgw MEZGRkZGRjsKKworICAgICAgICBpbnNuID0gMHhlYTAwMDAwMCB8IGRlbHRhOworICAgIH0KKyAg ICBlbHNlCisgICAgICAgIGluc24gPSAweGUxYTAwMDAwOyAvKiBtb3YgcjAsIHIwICovCisKKyAg ICBuZXdfcHRyID0gZnVuYy0+b2xkX2FkZHIgLSAodm9pZCAqKV9zdGFydCArIHZtYXBfb2ZfeGVu X3RleHQ7CisgICAgbGVuID0gbGVuIC8gc2l6ZW9mKHVpbnQzMl90KTsKKworICAgIC8qIFBBVENI ISAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKQorICAgICAgICAqKG5ld19wdHIg KyBpKSA9IGluc247CisKKyAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFuZ2Uo ZnVuYy0+b2xkX2FkZHIsIHNpemVvZigqbmV3X3B0cikgKiBsZW4pOwogfQogCiB2b2lkIGFyY2hf bGl2ZXBhdGNoX3JldmVydF9qbXAoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQog eworICAgIHVpbnQzMl90ICpuZXdfcHRyOworICAgIHVuc2lnbmVkIGludCBpLCBsZW47CisKKyAg ICBuZXdfcHRyID0gZnVuYy0+b2xkX2FkZHIgLSAodm9pZCAqKV9zdGFydCArIHZtYXBfb2ZfeGVu X3RleHQ7CisgICAgbGVuID0gYXJjaF9saXZlcGF0Y2hfaW5zbl9sZW4oZnVuYykgLyBzaXplb2Yo dWludDMyX3QpOworICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKQorICAgIHsKKyAgICAg ICAgdWludDMyX3QgaW5zbjsKKworICAgICAgICBtZW1jcHkoJmluc24sIGZ1bmMtPm9wYXF1ZSAr IChpICogc2l6ZW9mKHVpbnQzMl90KSksIFBBVENIX0lOU05fU0laRSk7CisgICAgICAgIC8qIFBB 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 ICAgICAqLworICAgICAgICBpZiAoIChzMzIpdmFsIDwgLShzMzIpTElWRVBBVENIX0FSQ0hfUkFO R0UgfHwKKyAgICAgICAgICAgICAoczMyKXZhbCA+PSAoczMyKUxJVkVQQVRDSF9BUkNIX1JBTkdF 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 bGl2ZXBhdGNoLmMgYi94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMKaW5kZXggZjA3MjY3 MS4uYzc4NjY0OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTY0L2xpdmVwYXRjaC5jCisr KyBiL3hlbi9hcmNoL2FybS9hcm02NC9saXZlcGF0Y2guYwpAQCAtMjMxLDYgKzIzMSwxMyBAQCBz dGF0aWMgaW50IHJlbG9jX2luc25faW1tKGVudW0gYWFyY2g2NF9yZWxvY19vcCBvcCwgdm9pZCAq ZGVzdCwgdTY0IHZhbCwKICAgICByZXR1cm4gMDsKIH0KIAoraW50IGFyY2hfbGl2ZXBhdGNoX3Bl cmZvcm1fcmVsKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpiYXNlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAq cmVsYSkKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKwogaW50IGFyY2hfbGl2ZXBhdGNoX3Bl cmZvcm1fcmVsYShzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKmJhc2UsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3Nl YyAqcmVsYSkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9saXZlcGF0Y2guYyBiL3hlbi9hcmNo L2FybS9saXZlcGF0Y2guYwppbmRleCBkYTAxOTU1Li4yOWZjYTZlIDEwMDY0NAotLS0gYS94ZW4v YXJjaC9hcm0vbGl2ZXBhdGNoLmMKKysrIGIveGVuL2FyY2gvYXJtL2xpdmVwYXRjaC5jCkBAIC0x MzIsMTMgKzEzMiw2IEBAIGludCBhcmNoX2xpdmVwYXRjaF9zeW1ib2xfY2hlY2soY29uc3Qgc3Ry dWN0IGxpdmVwYXRjaF9lbGYgKmVsZiwKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFyY2hfbGl2 ZXBhdGNoX3BlcmZvcm1fcmVsKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpiYXNl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hf ZWxmX3NlYyAqcmVsYSkKLXsKLSAgICByZXR1cm4gLUVOT1NZUzsKLX0KLQogaW50IGFyY2hfbGl2 ZXBhdGNoX3NlY3VyZShjb25zdCB2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZh X3R5cGUgdHlwZSkKIHsKICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcp dmE7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL0tjb25maWcgYi94ZW4vY29tbW9uL0tjb25maWcK aW5kZXggMGYyNjAyNy4uZDRmMTBjYSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9LY29uZmlnCisr KyBiL3hlbi9jb21tb24vS2NvbmZpZwpAQCAtMjE3LDcgKzIxNyw3IEBAIGNvbmZpZyBDUllQVE8K IGNvbmZpZyBMSVZFUEFUQ0gKIAlib29sICJMaXZlIHBhdGNoaW5nIHN1cHBvcnQgKFRFQ0ggUFJF VklFVykiCiAJZGVmYXVsdCBuCi0JZGVwZW5kcyBvbiAhQVJNXzMyICYmIEhBU19CVUlMRF9JRCA9 ICJ5IgorCWRlcGVuZHMgb24gSEFTX0JVSUxEX0lEID0gInkiCiAJLS0taGVscC0tLQogCSAgQWxs b3dzIGEgcnVubmluZyBYZW4gaHlwZXJ2aXNvciB0byBiZSBkeW5hbWljYWxseSBwYXRjaGVkIHVz aW5nCiAJICBiaW5hcnkgcGF0Y2hlcyB3aXRob3V0IHJlYm9vdGluZy4gVGhpcyBpcyBwcmltYXJp bHkgdXNlZCB0byBiaW5hcmlseQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2VsZnN0cnVj dHMuaCBiL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgKaW5kZXggNzMyOTk4Ny4uZTU0MzIx MiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaAorKysgYi94ZW4vaW5j bHVkZS94ZW4vZWxmc3RydWN0cy5oCkBAIC0xMDMsNiArMTAzLDE1IEBAIHR5cGVkZWYgdWludDY0 X3QJRWxmNjRfWHdvcmQ7CiAgICAgICAgICAgICAgICAgICAgICAgKGVoZHIpLmVfaWRlbnRbRUlf TUFHMl0gPT0gRUxGTUFHMiAmJiBcCiAgICAgICAgICAgICAgICAgICAgICAgKGVoZHIpLmVfaWRl bnRbRUlfTUFHM10gPT0gRUxGTUFHMykKIAorLyogZV9mbGFncyAqLworI2RlZmluZSBFRl9BUk1f RUFCSV9NQVNLCTB4ZmYwMDAwMDAKKyNkZWZpbmUgRUZfQVJNX0VBQklfVU5LTk9XTgkweDAwMDAw MDAwCisjZGVmaW5lIEVGX0FSTV9FQUJJX1ZFUjEJMHgwMTAwMDAwMAorI2RlZmluZSBFRl9BUk1f RUFCSV9WRVIyCTB4MDIwMDAwMDAKKyNkZWZpbmUgRUZfQVJNX0VBQklfVkVSMwkweDAzMDAwMDAw CisjZGVmaW5lIEVGX0FSTV9FQUJJX1ZFUjQJMHgwNDAwMDAwMAorI2RlZmluZSBFRl9BUk1fRUFC SV9WRVI1CTB4MDUwMDAwMDAKKwogLyogRUxGIEhlYWRlciAqLwogdHlwZWRlZiBzdHJ1Y3QgZWxm aGRyIHsKIAl1bnNpZ25lZCBjaGFyCWVfaWRlbnRbRUlfTklERU5UXTsgLyogRUxGIElkZW50aWZp Y2F0aW9uICovCkBAIC0zNjQsOSArMzczLDIyIEBAIHR5cGVkZWYgc3RydWN0IHsKICNkZWZpbmUg Ul9YODZfNjRfUExUMzIJCTQJLyogMzIgYml0IFBMVCBhZGRyZXNzICovCiAKIC8qCisgKiBBUk0z MiByZWxvY2F0aW9uIHR5cGVzLiBTZWUKKyAqIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVs cC90b3BpYy9jb20uYXJtLmRvYy5paGkwMDQ0Zi9JSEkwMDQ0Rl9hYWVsZi5wZGYKICAqIFMgLSBh ZGRyZXNzIG9mIHN5bWJvbC4KLSAqIEEgLSBhZGRlbmQgZm9yIHJlbG9jYXRpb24gKHJfYWRkZW5k KQorICogQSAtIGFkZGVuZCBmb3IgcmVsb2NhdGlvbiAocl9hZGRlbmQgb3IgbmVlZCB0byBleHRy YWN0IGZyb20gaW5zbikKICAqIFAgLSBhZGRyZXNzIG9mIHRoZSBkZXN0IGJlaW5nIHJlbG9jYXRl ZCAoZGVyaWV2ZWQgZnJvbSByX29mZnNldCkKKyAqLworI2RlZmluZSBSX0FSTV9OT05FICAgICAg ICAgICAgICAwCisjZGVmaW5lIFJfQVJNX0FCUzMyICAgICAgICAgICAgIDIJLyogRGlyZWN0IDMy LWJpdC4gUytBICovCisjZGVmaW5lIFJfQVJNX1JFTDMyICAgICAgICAgICAgIDMJLyogUEMgcmVs YXRpdmUuIFMrQSAqLworI2RlZmluZSBSX0FSTV9DQUxMICAgICAgICAgICAgICAyOAkvKiBTaWdu RXh0ZW5kKFsyMzowXSkgPDwgMi4gUytBLVAgKi8KKyNkZWZpbmUgUl9BUk1fSlVNUDI0ICAgICAg ICAgICAgMjkJLyogU2FtZSBhcyBSX0FSTV9DQUxMICovCisjZGVmaW5lIFJfQVJNX01PVldfQUJT X05DICAgICAgIDQzCS8qIFNpZ25FeHRlbmQoWzE5OjE2XSxbMTE6MF0pJjB4RkZGRiwgUytBICov CisjZGVmaW5lIFJfQVJNX01PVlRfQUJTICAgICAgICAgIDQ0CS8qIFNpZ25FeHRlbmQoWzE5OjE2 XSxbMTE6MCkpJjB4RkZGRjAwMDAgKi8KKwkJCQkJLyogID4+IDE2LCBTK0EuICovCisKKy8qCiAg KiBOQyAtICBObyBjaGVjayBmb3Igb3ZlcmZsb3cuCiAgKgogICogVGhlIGRlZmluZXMgYWxzbyB1 c2UgX1BSRUwgZm9yIFBDLXJlbGF0aXZlIGFkZHJlc3MsIGFuZCBfTkMgaXMgTm8gQ2hlY2suCmRp ZmYgLS1naXQgYS94ZW4vdGVzdC9NYWtlZmlsZSBiL3hlbi90ZXN0L01ha2VmaWxlCmluZGV4IDk1 YzE3NTUuLmQ5MWIzMTkgMTAwNjQ0Ci0tLSBhL3hlbi90ZXN0L01ha2VmaWxlCisrKyBiL3hlbi90 ZXN0L01ha2VmaWxlCkBAIC0xLDggKzEsNiBAQAogLlBIT05ZOiB0ZXN0cwogdGVzdHM6Ci1pZm5l cSAkKFhFTl9UQVJHRVRfQVJDSCksYXJtMzIpCiAJJChNQUtFKSAtZiAkKEJBU0VESVIpL1J1bGVz Lm1rIC1DIGxpdmVwYXRjaCBsaXZlcGF0Y2gKLWVuZGlmCiAKIC5QSE9OWTogY2xlYW4KIGNsZWFu OjoKZGlmZiAtLWdpdCBhL3hlbi90ZXN0L2xpdmVwYXRjaC9NYWtlZmlsZSBiL3hlbi90ZXN0L2xp dmVwYXRjaC9NYWtlZmlsZQppbmRleCBjZTA5ZTFkLi5iZmQ2M2MyIDEwMDY0NAotLS0gYS94ZW4v dGVzdC9saXZlcGF0Y2gvTWFrZWZpbGUKKysrIGIveGVuL3Rlc3QvbGl2ZXBhdGNoL01ha2VmaWxl CkBAIC02LDYgKzYsOSBAQCBlbmRpZgogaWZlcSAoJChYRU5fVEFSR0VUX0FSQ0gpLGFybTY0KQog T0JKQ09QWV9NQUdJQyA6PSAtSSBiaW5hcnkgLU8gZWxmNjQtbGl0dGxlYWFyY2g2NCAtQiBhYXJj aDY0CiBlbmRpZgoraWZlcSAoJChYRU5fVEFSR0VUX0FSQ0gpLGFybTMyKQorT0JKQ09QWV9NQUdJ QyA6PSAtSSBiaW5hcnkgLU8gZWxmMzItbGl0dGxlYXJtIC1CIGFybQorZW5kaWYKIAogQ09ERV9B RERSPSQoc2hlbGwgbm0gLS1kZWZpbmVkICQoMSkgfCBncmVwICQoMikgfCBhd2sgJ3twcmludCAi MHgiJCQxfScpCiBDT0RFX1NaPSQoc2hlbGwgbm0gLS1kZWZpbmVkIC1TICQoMSkgfCBncmVwICQo MikgfCBhd2sgJ3sgcHJpbnQgIjB4IiQkMn0nKQotLSAKMi40LjExCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==