From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v3 5/7] x86/alt: Support for automatic padding calculations Date: Wed, 7 Mar 2018 15:51:34 +0000 Message-ID: <1520437896-29359-6-git-send-email-andrew.cooper3@citrix.com> References: <1520437896-29359-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1520437896-29359-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhlIGNvcnJlY3QgYW1vdW50IG9mIHBhZGRpbmcgaW4gYW4gb3JpZ2luIHBhdGNoIHNpdGUgY2Fu IGJlIGNhbGN1bGF0ZWQKYXV0b21hdGljYWxseSwgYmFzZWQgb24gdGhlIHJlbGF0aXZlIGxlbmd0 aHMgb2YgdGhlIHJlcGxhY2VtZW50cy4KClRoaXMgcmVxdWlyZXMgYSBiaXQgb2YgdHJpY2tlcnkg dG8gY2FsY3VsYXRlIGNvcnJlY3RseSwgZXNwZWNpYWxseSBpbiB0aGUKQUxURU5SQVRJVkVfMiBj YXNlIHdoZXJlIGEgYnJhbmNobGVzcyBtYXgoKSBjYWxjdWxhdGlvbiBpbiBuZWVkZWQuICBUaGUK Y2FsY3VsYXRpb24gaXMgZnVydGhlciBjb21wbGljYXRlZCBiZWNhdXNlIEdBUydzIGlkZWEgb2Yg dHJ1ZSBpcyAtMSByYXRoZXIKdGhhbiAxLCB3aGljaCBpcyB3aHkgdGhlIGV4dHJhIG5lZ2F0aW9u cyBhcmUgcmVxdWlyZWQuCgpBZGRpdGlvbmFsbHksIGhhdmUgYXBwbHlfYWx0ZXJuYXRpdmVzKCkg YXR0ZW1wdCB0byBvcHRpbWlzZSB0aGUgcGFkZGluZyBub3BzLgpUaGlzIGlzIGNvbXBsaWNhdGVk IGJ5IHRoZSBmYWN0IHRoYXQgd2UgbXVzdCBub3QgYXR0ZW1wdCB0byBvcHRpbWlzZSBub3BzIG92 ZXIKYW4gb3JpZ2luIHNpdGUgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBtb2RpZmllZC4KClRvIGtl ZXAgdHJhY2sgb2YgdGhpcywgYWRkIGEgcHJpdiBmaWVsZCB0byBzdHJ1Y3QgYWx0X2luc3RyLCB3 aGljaCBnZXRzCm1vZGlmaWVkIGJ5IGFwcGx5X2FsdGVybmF0aXZlcygpLiAgT25lIGV4dHJhIHJl cXVpcmVtZW50IGlzIHRoYXQgYWx0X2luc3RyJ3MKcmVmZXJyaW5nIHRvIHRoZSBzYW1lIG9yaWdp biBzaXRlIG11c3Qgbm93IGJlIGNvbnNlY3V0aXZlLCBidXQgd2UgYWxyZWFkeSBoYXZlCnRoaXMg cHJvcGVydHkuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IEtv bnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ0M6IFJvZ2VyIFBh dSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0 cml4LmNvbT4KCnYyOgogKiBGaXggYnVpbGQgd2l0aCBDbGFuZwp2MzoKICogcy9HQ0MvR0FTLyBm b3IgdGhlIE5FR0FUSVZFX1RSVUUgY29tbWVudHMKICogRmFjdG9yIG91dCBPTERJTlNUUigpIGdl bmVyYXRpb24gb24gdGhlIEMgc2lkZQogKiBJbnRyb2R1Y2UgYWx0X2luc3RyLT5wcml2IGFuZCB1 c2UgaXQgdG8gYXZvaWQgcmVwZWF0ZWRseSBvcHRpbWlzaW5nIHRoZQogICBhbHRlcm5hdGl2ZXMu Ci0tLQogeGVuL2FyY2gveDg2L1J1bGVzLm1rICAgICAgICAgICAgICAgICB8ICA0ICsrKwogeGVu L2FyY2gveDg2L2FsdGVybmF0aXZlLmMgICAgICAgICAgICB8IDQ1ICsrKysrKysrKysrKysrKysr KysrKysrLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUtYXNtLmggfCA1NiAr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9h bHRlcm5hdGl2ZS5oICAgICB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDQg ZmlsZXMgY2hhbmdlZCwgMTI0IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9SdWxlcy5tayBiL3hlbi9hcmNoL3g4Ni9SdWxlcy5tawppbmRl eCBhMjlhYjIyLi5hYzU4NWEzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvUnVsZXMubWsKKysr IGIveGVuL2FyY2gveDg2L1J1bGVzLm1rCkBAIC0yNSw2ICsyNSwxMCBAQCAkKGNhbGwgYXMtb3B0 aW9uLWFkZCxDRkxBR1MsQ0MsIi5lcXUgXCJ4XCIkJChjb21tYSkxIiwgXAogICAgICAgICAgICAg ICAgICAgICAgJy1EX19PQkpFQ1RfTEFCRUxfXz0kKHN1YnN0ICQoQkFTRURJUikvLCwkKENVUkRJ UikpLyQkQCcpCiAkKGNhbGwgYXMtb3B0aW9uLWFkZCxDRkxBR1MsQ0MsImludnBjaWQgKCVyYXgp JCQoY29tbWEpJXJheCIsLURIQVZFX0FTX0lOVlBDSUQpCiAKKyMgR0FTJ3MgaWRlYSBvZiB0cnVl IGlzIC0xLiAgQ2xhbmcncyBpZGVhIGlzIDEKKyQoY2FsbCBhcy1vcHRpb24tYWRkLENGTEFHUyxD QyxcCisgICAgIi5pZiAoKDEgPiAwKSA8IDApOyAuZXJyb3IgXCJcIjsuZW5kaWYiLCwtREhBVkVf QVNfTkVHQVRJVkVfVFJVRSkKKwogQ0ZMQUdTICs9IC1tbm8tcmVkLXpvbmUgLWZwaWMgLWZuby1h c3luY2hyb25vdXMtdW53aW5kLXRhYmxlcwogCiAjIFhlbiBkb2Vzbid0IHVzZSBTU0UgaW50ZXJh bGx5LiAgSWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGl0LCBhbHNvIHNraXAgdGhlCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvYWx0ZXJuYXRpdmUuYyBiL3hlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2 ZS5jCmluZGV4IDUxY2E1M2UuLjkzYWRmNTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9hbHRl cm5hdGl2ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5jCkBAIC0xNTksMTAgKzE1 OSwxMCBAQCB0ZXh0X3Bva2Uodm9pZCAqYWRkciwgY29uc3Qgdm9pZCAqb3Bjb2RlLCBzaXplX3Qg bGVuKQogICogQVBzIGhhdmUgbGVzcyBjYXBhYmlsaXRpZXMgdGhhbiB0aGUgYm9vdCBwcm9jZXNz b3IgYXJlIG5vdCBoYW5kbGVkLgogICogVG91Z2guIE1ha2Ugc3VyZSB5b3UgZGlzYWJsZSBzdWNo IGZlYXR1cmVzIGJ5IGhhbmQuCiAgKi8KLXZvaWQgaW5pdF9vcl9saXZlcGF0Y2ggYXBwbHlfYWx0 ZXJuYXRpdmVzKGNvbnN0IHN0cnVjdCBhbHRfaW5zdHIgKnN0YXJ0LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGFsdF9pbnN0ciAqZW5kKQor dm9pZCBpbml0X29yX2xpdmVwYXRjaCBhcHBseV9hbHRlcm5hdGl2ZXMoc3RydWN0IGFsdF9pbnN0 ciAqc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgYWx0X2luc3RyICplbmQpCiB7Ci0gICAgY29uc3Qgc3RydWN0IGFsdF9pbnN0ciAqYTsKKyAg ICBzdHJ1Y3QgYWx0X2luc3RyICphLCAqYmFzZTsKIAogICAgIHByaW50ayhLRVJOX0lORk8gImFs dCB0YWJsZSAlcCAtPiAlcFxuIiwgc3RhcnQsIGVuZCk7CiAKQEAgLTE3NSwxOCArMTc1LDQ3IEBA IHZvaWQgaW5pdF9vcl9saXZlcGF0Y2ggYXBwbHlfYWx0ZXJuYXRpdmVzKGNvbnN0IHN0cnVjdCBh bHRfaW5zdHIgKnN0YXJ0LAogICAgICAqIFNvIGJlIGNhcmVmdWwgaWYgeW91IHdhbnQgdG8gY2hh bmdlIHRoZSBzY2FuIG9yZGVyIHRvIGFueSBvdGhlcgogICAgICAqIG9yZGVyLgogICAgICAqLwot ICAgIGZvciAoIGEgPSBzdGFydDsgYSA8IGVuZDsgYSsrICkKKyAgICBmb3IgKCBhID0gYmFzZSA9 IHN0YXJ0OyBhIDwgZW5kOyBhKysgKQogICAgIHsKICAgICAgICAgdWludDhfdCAqb3JpZyA9IEFM VF9PUklHX1BUUihhKTsKICAgICAgICAgdWludDhfdCAqcmVwbCA9IEFMVF9SRVBMX1BUUihhKTsK ICAgICAgICAgdWludDhfdCBidWZbTUFYX1BBVENIX0xFTl07CisgICAgICAgIHVuc2lnbmVkIGlu dCB0b3RhbF9sZW4gPSBhLT5vcmlnX2xlbiArIGEtPnBhZF9sZW47CiAKLSAgICAgICAgQlVHX09O KGEtPnJlcGxfbGVuID4gYS0+b3JpZ19sZW4pOwotICAgICAgICBCVUdfT04oYS0+b3JpZ19sZW4g PiBzaXplb2YoYnVmKSk7CisgICAgICAgIEJVR19PTihhLT5yZXBsX2xlbiA+IHRvdGFsX2xlbik7 CisgICAgICAgIEJVR19PTih0b3RhbF9sZW4gPiBzaXplb2YoYnVmKSk7CiAgICAgICAgIEJVR19P TihhLT5jcHVpZCA+PSBOQ0FQSU5UUyAqIDMyKTsKIAorICAgICAgICAvKgorICAgICAgICAgKiBE ZXRlY3Qgc2VxdWVuY2VzIG9mIGFsdF9pbnN0cidzIHBhdGNoaW5nIHRoZSBzYW1lIG9yaWdpbiBz aXRlLCBhbmQKKyAgICAgICAgICoga2VlcCBiYXNlIHBvaW50aW5nIGF0IHRoZSBmaXJzdCBhbHRf aW5zdHIgZW50cnkuICBUaGlzIGlzIHNvIHdlIGNhbgorICAgICAgICAgKiByZWZlciB0byBhIHNp bmdsZSAtPnByaXYgZmllbGQgZm9yIHBhdGNoaW5nIGRlY2lzaW9ucy4KKyAgICAgICAgICoKKyAg ICAgICAgICogLT5wcml2IGJlaW5nIG5vbnplcm8gbWVhbnMgdGhhdCB0aGUgb3JpZ2luIHNpdGUg aGFzIGFscmVhZHkgYmVlbgorICAgICAgICAgKiBtb2RpZmllZCwgYW5kIHdlIHNob3VsZG4ndCB0 cnkgdG8gb3B0aW1pc2UgdGhlIG5vcHMgYWdhaW4uCisgICAgICAgICAqLworICAgICAgICBpZiAo IEFMVF9PUklHX1BUUihiYXNlKSAhPSBvcmlnICkKKyAgICAgICAgICAgIGJhc2UgPSBhOworCisg ICAgICAgIC8qIElmIHRoZXJlIGlzIG5vIHJlcGxhY2VtZW50IHRvIG1ha2UsIHNlZSBhYm91dCBv cHRpbWlzaW5nIHRoZSBub3BzLiAqLwogICAgICAgICBpZiAoICFib290X2NwdV9oYXMoYS0+Y3B1 aWQpICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogT3JpZ2luIHNpdGUgc2l0ZSBhbHJlYWR5 IHRvdWNoZWQ/ICBEb24ndCBub3AgYW55dGhpbmcuICovCisgICAgICAgICAgICBpZiAoIGJhc2Ut PnByaXYgKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBiYXNlLT5w cml2ID0gMTsKKworICAgICAgICAgICAgLyogTm90aGluZyB1c2VmdWwgdG8gZG8/ICovCisgICAg ICAgICAgICBpZiAoIGEtPnBhZF9sZW4gPD0gMSApCisgICAgICAgICAgICAgICAgY29udGludWU7 CisKKyAgICAgICAgICAgIGFkZF9ub3BzKGJ1ZiwgYS0+cGFkX2xlbik7CisgICAgICAgICAgICB0 ZXh0X3Bva2Uob3JpZyArIGEtPm9yaWdfbGVuLCBidWYsIGEtPnBhZF9sZW4pOwogICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBiYXNlLT5wcml2ID0gMTsKIAogICAg ICAgICBtZW1jcHkoYnVmLCByZXBsLCBhLT5yZXBsX2xlbik7CiAKQEAgLTE5NCw4ICsyMjMsOCBA QCB2b2lkIGluaXRfb3JfbGl2ZXBhdGNoIGFwcGx5X2FsdGVybmF0aXZlcyhjb25zdCBzdHJ1Y3Qg YWx0X2luc3RyICpzdGFydCwKICAgICAgICAgaWYgKCBhLT5yZXBsX2xlbiA+PSA1ICYmICgqYnVm ICYgMHhmZSkgPT0gMHhlOCApCiAgICAgICAgICAgICAqKGludDMyX3QgKikoYnVmICsgMSkgKz0g cmVwbCAtIG9yaWc7CiAKLSAgICAgICAgYWRkX25vcHMoYnVmICsgYS0+cmVwbF9sZW4sIGEtPm9y aWdfbGVuIC0gYS0+cmVwbF9sZW4pOwotICAgICAgICB0ZXh0X3Bva2Uob3JpZywgYnVmLCBhLT5v cmlnX2xlbik7CisgICAgICAgIGFkZF9ub3BzKGJ1ZiArIGEtPnJlcGxfbGVuLCB0b3RhbF9sZW4g LSBhLT5yZXBsX2xlbik7CisgICAgICAgIHRleHRfcG9rZShvcmlnLCBidWYsIHRvdGFsX2xlbik7 CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZl LWFzbS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2ZS1hc20uaAppbmRleCAyYWY0 ZjZiLi4wYjYxNTE2IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZl LWFzbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUtYXNtLmgKQEAgLTks MzAgKzksNTMgQEAKICAqIGVub3VnaCBpbmZvcm1hdGlvbiBmb3IgdGhlIGFsdGVybmF0aXZlcyBw YXRjaGluZyBjb2RlIHRvIHBhdGNoIGFuCiAgKiBpbnN0cnVjdGlvbi4gU2VlIGFwcGx5X2FsdGVy bmF0aXZlcygpLgogICovCi0ubWFjcm8gYWx0aW5zdHJ1Y3Rpb25fZW50cnkgb3JpZyByZXBsIGZl YXR1cmUgb3JpZ19sZW4gcmVwbF9sZW4KKy5tYWNybyBhbHRpbnN0cnVjdGlvbl9lbnRyeSBvcmln IHJlcGwgZmVhdHVyZSBvcmlnX2xlbiByZXBsX2xlbiBwYWRfbGVuCiAgICAgLmxvbmcgXG9yaWcg LSAuCiAgICAgLmxvbmcgXHJlcGwgLSAuCiAgICAgLndvcmQgXGZlYXR1cmUKICAgICAuYnl0ZSBc b3JpZ19sZW4KICAgICAuYnl0ZSBccmVwbF9sZW4KKyAgICAuYnl0ZSBccGFkX2xlbgorICAgIC5i eXRlIDAgLyogcHJpdiAqLwogLmVuZG0KIAotI2RlZmluZSBkZWNsX29yaWcoaW5zbikgICAgICAg ICAuTFxAX29yaWdfczogICAgICBpbnNuOyAuTFxAX29yaWdfZToKKy8qIEdBUydzIGlkZWEgb2Yg dHJ1ZSBpcyAtMSwgd2hpbGUgQ2xhbmcncyBpZGVhIGlzIDEuICovCisjaWZkZWYgSEFWRV9BU19O RUdBVElWRV9UUlVFCisjIGRlZmluZSBhc190cnVlKHgpICgtKHgpKQorI2Vsc2UKKyMgZGVmaW5l IGFzX3RydWUoeCkgKHgpCisjZW5kaWYKKworI2RlZmluZSBkZWNsX29yaWcoaW5zbiwgcGFkZGlu ZykgICAgICAgICAgICAgICAgICBcCisgLkxcQF9vcmlnX3M6IGluc247IC5MXEBfb3JpZ19lOiAg ICAgICAgICAgICAgICAgIFwKKyAuTFxAX2RpZmYgPSBwYWRkaW5nOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorIC5za2lwIGFzX3RydWUoLkxcQF9kaWZmID4gMCkgKiAuTFxAX2RpZmYs IDB4OTA7ICBcCisgLkxcQF9vcmlnX3A6CisKICNkZWZpbmUgb3JpZ19sZW4gICAgICAgICAgICAg ICAoLkxcQF9vcmlnX2UgICAgICAgLSAgICAgLkxcQF9vcmlnX3MpCisjZGVmaW5lIHBhZF9sZW4g ICAgICAgICAgICAgICAgKC5MXEBfb3JpZ19wICAgICAgIC0gICAgIC5MXEBfb3JpZ19lKQorI2Rl ZmluZSB0b3RhbF9sZW4gICAgICAgICAgICAgICguTFxAX29yaWdfcCAgICAgICAtICAgICAuTFxA X29yaWdfcykKIAogI2RlZmluZSBkZWNsX3JlcGwoaW5zbiwgbnIpICAgICAuTFxAX3JlcGxfc1wo KW5yOiBpbnNuOyAuTFxAX3JlcGxfZVwoKW5yOgogI2RlZmluZSByZXBsX2xlbihucikgICAgICAg ICAgICguTFxAX3JlcGxfZVwoKW5yICAtICAgICAuTFxAX3JlcGxfc1woKW5yKQogCisjZGVmaW5l IGFzX21heChhLCBiKSAgICAgICAgICAgKChhKSBeICgoKGEpIF4gKGIpKSAmIC1hc190cnVlKChh KSA8IChiKSkpKQorCiAubWFjcm8gQUxURVJOQVRJVkUgb2xkaW5zdHIsIG5ld2luc3RyLCBmZWF0 dXJlCi0gICAgZGVjbF9vcmlnKFxvbGRpbnN0cikKKyAgICBkZWNsX29yaWcoXG9sZGluc3RyLCBy ZXBsX2xlbigxKSAtIG9yaWdfbGVuKQogCiAgICAgLnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlv bnMsICJhIiwgQHByb2diaXRzCiAgICAgYWx0aW5zdHJ1Y3Rpb25fZW50cnkgLkxcQF9vcmlnX3Ms IC5MXEBfcmVwbF9zMSwgXGZlYXR1cmUsIFwKLSAgICAgICAgb3JpZ19sZW4sIHJlcGxfbGVuKDEp CisgICAgICAgIG9yaWdfbGVuLCByZXBsX2xlbigxKSwgcGFkX2xlbgogCiAgICAgLnNlY3Rpb24g LmRpc2NhcmQsICJhIiwgQHByb2diaXRzCi0gICAgLyogQXNzZW1ibGVyLXRpbWUgY2hlY2sgdGhh dCBcbmV3aW5zdHIgaXNuJ3QgbG9uZ2VyIHRoYW4gXG9sZGluc3RyLiAqLwotICAgIC5ieXRlIDB4 ZmYgKyByZXBsX2xlbigxKSAtIG9yaWdfbGVuCisgICAgLyoKKyAgICAgKiBBc3NlbWJsZXItdGlt ZSBjaGVja3M6CisgICAgICogICAtIHRvdGFsX2xlbiA8PSAyNTUKKyAgICAgKiAgIC0gXG5ld2lu c3RyIDw9IHRvdGFsX2xlbgorICAgICAqLworICAgIC5ieXRlIHRvdGFsX2xlbgorICAgIC5ieXRl IDB4ZmYgKyByZXBsX2xlbigxKSAtIHRvdGFsX2xlbgogCiAgICAgLnNlY3Rpb24gLmFsdGluc3Ry X3JlcGxhY2VtZW50LCAiYXgiLCBAcHJvZ2JpdHMKIApAQCAtNDIsMTkgKzY1LDI0IEBACiAuZW5k bQogCiAubWFjcm8gQUxURVJOQVRJVkVfMiBvbGRpbnN0ciwgbmV3aW5zdHIxLCBmZWF0dXJlMSwg bmV3aW5zdHIyLCBmZWF0dXJlMgotICAgIGRlY2xfb3JpZyhcb2xkaW5zdHIpCisgICAgZGVjbF9v cmlnKFxvbGRpbnN0ciwgYXNfbWF4KHJlcGxfbGVuKDEpLCByZXBsX2xlbigyKSkgLSBvcmlnX2xl bikKIAogICAgIC5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLCAiYSIsIEBwcm9nYml0cwog CiAgICAgYWx0aW5zdHJ1Y3Rpb25fZW50cnkgLkxcQF9vcmlnX3MsIC5MXEBfcmVwbF9zMSwgXGZl YXR1cmUxLCBcCi0gICAgICAgIG9yaWdfbGVuLCByZXBsX2xlbigxKQorICAgICAgICBvcmlnX2xl biwgcmVwbF9sZW4oMSksIHBhZF9sZW4KICAgICBhbHRpbnN0cnVjdGlvbl9lbnRyeSAuTFxAX29y aWdfcywgLkxcQF9yZXBsX3MyLCBcZmVhdHVyZTIsIFwKLSAgICAgICAgb3JpZ19sZW4sIHJlcGxf bGVuKDIpCisgICAgICAgIG9yaWdfbGVuLCByZXBsX2xlbigyKSwgcGFkX2xlbgogCiAgICAgLnNl Y3Rpb24gLmRpc2NhcmQsICJhIiwgQHByb2diaXRzCi0gICAgLyogQXNzZW1ibGVyLXRpbWUgY2hl Y2sgdGhhdCBcbmV3aW5zdHJ7MSwyfSBhcmVuJ3QgbG9uZ2VyIHRoYW4gXG9sZGluc3RyLiAqLwot ICAgIC5ieXRlIDB4ZmYgKyByZXBsX2xlbigxKSAtIG9yaWdfbGVuCi0gICAgLmJ5dGUgMHhmZiAr IHJlcGxfbGVuKDIpIC0gb3JpZ19sZW4KKyAgICAvKgorICAgICAqIEFzc2VtYmxlci10aW1lIGNo ZWNrczoKKyAgICAgKiAgIC0gdG90YWxfbGVuIDw9IDI1NQorICAgICAqICAgLSBcbmV3aW5zdHIq IDw9IHRvdGFsX2xlbgorICAgICAqLworICAgIC5ieXRlIHRvdGFsX2xlbgorICAgIC5ieXRlIDB4 ZmYgKyByZXBsX2xlbigxKSAtIHRvdGFsX2xlbgorICAgIC5ieXRlIDB4ZmYgKyByZXBsX2xlbigy KSAtIHRvdGFsX2xlbgogCiAgICAgLnNlY3Rpb24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCAiYXgi LCBAcHJvZ2JpdHMKIApAQCAtNjQsMTAgKzkyLDE0IEBACiAgICAgLnBvcHNlY3Rpb24KIC5lbmRt CiAKKyN1bmRlZiBhc19tYXgKICN1bmRlZiByZXBsX2xlbgogI3VuZGVmIGRlY2xfcmVwbAorI3Vu ZGVmIHRvdGFsX2xlbgorI3VuZGVmIHBhZF9sZW4KICN1bmRlZiBvcmlnX2xlbgogI3VuZGVmIGRl Y2xfb3JpZworI3VuZGVmIGFzX3RydWUKIAogI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwogI2Vu ZGlmIC8qIF9BU01fWDg2X0FMVEVSTkFUSVZFX0FTTV9IXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2ZS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbHRlcm5h dGl2ZS5oCmluZGV4IGJjYWQzZWUuLjQ4MDMzNjggMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvYWx0ZXJuYXRpdmUuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZl LmgKQEAgLTgsMTIgKzgsMTQgQEAKICNpbmNsdWRlIDx4ZW4vc3RyaW5naWZ5Lmg+CiAjaW5jbHVk ZSA8eGVuL3R5cGVzLmg+CiAKLXN0cnVjdCBhbHRfaW5zdHIgeworc3RydWN0IF9fcGFja2VkIGFs dF9pbnN0ciB7CiAgICAgaW50MzJfdCAgb3JpZ19vZmZzZXQ7ICAgLyogb3JpZ2luYWwgaW5zdHJ1 Y3Rpb24gKi8KICAgICBpbnQzMl90ICByZXBsX29mZnNldDsgICAvKiBvZmZzZXQgdG8gcmVwbGFj ZW1lbnQgaW5zdHJ1Y3Rpb24gKi8KICAgICB1aW50MTZfdCBjcHVpZDsgICAgICAgICAvKiBjcHVp ZCBiaXQgc2V0IGZvciByZXBsYWNlbWVudCAqLwogICAgIHVpbnQ4X3QgIG9yaWdfbGVuOyAgICAg IC8qIGxlbmd0aCBvZiBvcmlnaW5hbCBpbnN0cnVjdGlvbiAqLwotICAgIHVpbnQ4X3QgIHJlcGxf bGVuOyAgICAgIC8qIGxlbmd0aCBvZiBuZXcgaW5zdHJ1Y3Rpb24sIDw9IGluc3RybGVuICovCisg ICAgdWludDhfdCAgcmVwbF9sZW47ICAgICAgLyogbGVuZ3RoIG9mIG5ldyBpbnN0cnVjdGlvbiAq LworICAgIHVpbnQ4X3QgIHBhZF9sZW47ICAgICAgIC8qIGxlbmd0aCBvZiBidWlsZC10aW1lIHBh ZGRpbmcgKi8KKyAgICB1aW50OF90ICBwcml2OyAgICAgICAgICAvKiBQcml2YXRlLCBmb3IgdXNl IGJ5IGFwcGx5X2FsdGVybmF0aXZlcygpICovCiB9OwogCiAjZGVmaW5lIF9fQUxUX1BUUihhLGYp ICAgICAgKCh1aW50OF90ICopKCh2b2lkICopJihhKS0+ZiArIChhKS0+ZikpCkBAIC0yMiw0NyAr MjQsNzMgQEAgc3RydWN0IGFsdF9pbnN0ciB7CiAKIGV4dGVybiB2b2lkIGFkZF9ub3BzKHZvaWQg Kmluc25zLCB1bnNpZ25lZCBpbnQgbGVuKTsKIC8qIFNpbWlsYXIgdG8gYWx0ZXJuYXRpdmVfaW5z dHJ1Y3Rpb25zIGV4Y2VwdCBpdCBjYW4gYmUgcnVuIHdpdGggSVJRcyBlbmFibGVkLiAqLwotZXh0 ZXJuIHZvaWQgYXBwbHlfYWx0ZXJuYXRpdmVzKGNvbnN0IHN0cnVjdCBhbHRfaW5zdHIgKnN0YXJ0 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBhbHRfaW5zdHIg KmVuZCk7CitleHRlcm4gdm9pZCBhcHBseV9hbHRlcm5hdGl2ZXMoc3RydWN0IGFsdF9pbnN0ciAq c3RhcnQsIHN0cnVjdCBhbHRfaW5zdHIgKmVuZCk7CiBleHRlcm4gdm9pZCBhbHRlcm5hdGl2ZV9p bnN0cnVjdGlvbnModm9pZCk7CiAKLSNkZWZpbmUgT0xESU5TVFIob2xkaW5zdHIpICIuTFhFTiU9 X29yaWdfczpcblx0IiBvbGRpbnN0ciAiXG4uTFhFTiU9X29yaWdfZTpcbiIKLQogI2RlZmluZSBh bHRfb3JpZ19sZW4gICAgICAgIiguTFhFTiU9X29yaWdfZSAtIC5MWEVOJT1fb3JpZ19zKSIKKyNk ZWZpbmUgYWx0X3BhZF9sZW4gICAgICAgICIoLkxYRU4lPV9vcmlnX3AgLSAuTFhFTiU9X29yaWdf ZSkiCisjZGVmaW5lIGFsdF90b3RhbF9sZW4gICAgICAiKC5MWEVOJT1fb3JpZ19wIC0gLkxYRU4l PV9vcmlnX3MpIgogI2RlZmluZSBhbHRfcmVwbF9zKG51bSkgICAgIi5MWEVOJT1fcmVwbF9zIiNu dW0KICNkZWZpbmUgYWx0X3JlcGxfZShudW0pICAgICIuTFhFTiU9X3JlcGxfZSIjbnVtCiAjZGVm aW5lIGFsdF9yZXBsX2xlbihudW0pICAiKCIgYWx0X3JlcGxfZShudW0pICIgLSAiIGFsdF9yZXBs X3MobnVtKSAiKSIKIAorLyogR0FTJ3MgaWRlYSBvZiB0cnVlIGlzIC0xLCB3aGlsZSBDbGFuZydz IGlkZWEgaXMgMS4gKi8KKyNpZmRlZiBIQVZFX0FTX05FR0FUSVZFX1RSVUUKKyMgZGVmaW5lIEFT X1RSVUUgIi0iCisjZWxzZQorIyBkZWZpbmUgQVNfVFJVRSAiIgorI2VuZGlmCisKKyNkZWZpbmUg YXNfbWF4KGEsIGIpICIoKCJhIikgXiAoKCgiYSIpIF4gKCJiIikpICYgLSgiQVNfVFJVRSIoKCJh IikgPCAoImIiKSkpKSkiCisKKyNkZWZpbmUgT0xESU5TVFIob2xkaW5zdHIsIHBhZGRpbmcpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICIuTFhFTiU9X29yaWdfczpcblx0IiBv bGRpbnN0ciAiXG4gLkxYRU4lPV9vcmlnX2U6XG5cdCIgICAgICBcCisgICAgIi5MWEVOJT1fZGlm ZiA9ICIgcGFkZGluZyAiXG5cdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAi LnNraXAgIkFTX1RSVUUiKC5MWEVOJT1fZGlmZiA+IDApICogLkxYRU4lPV9kaWZmLCAweDkwXG5c dCIgXAorICAgICIuTFhFTiU9X29yaWdfcDpcblx0IgorCisjZGVmaW5lIE9MRElOU1RSXzEob2xk aW5zdHIsIG4xKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBPTERJTlNU UihvbGRpbnN0ciwgYWx0X3JlcGxfbGVuKG4xKSAiLSIgYWx0X29yaWdfbGVuKQorCisjZGVmaW5l IE9MRElOU1RSXzIob2xkaW5zdHIsIG4xLCBuMikgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICBPTERJTlNUUihvbGRpbnN0ciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICAgICAgIGFzX21heCgoYWx0X3JlcGxfbGVuKG4xKSwgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBhbHRfcmVwbF9s ZW4objIpKSAiLSIgYWx0X29yaWdfbGVuKSkKKwogI2RlZmluZSBBTFRJTlNUUl9FTlRSWShmZWF0 dXJlLCBudW0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAi IC5sb25nIC5MWEVOJT1fb3JpZ19zIC0gLlxuIiAgICAgICAgICAgICAvKiBsYWJlbCAgICAgICAg ICAgKi8gXAogICAgICAgICAiIC5sb25nICIgYWx0X3JlcGxfcyhudW0pIiAtIC5cbiIgICAgICAg ICAvKiBuZXcgaW5zdHJ1Y3Rpb24gKi8gXAogICAgICAgICAiIC53b3JkICIgX19zdHJpbmdpZnko ZmVhdHVyZSkgIlxuIiAgICAgICAvKiBmZWF0dXJlIGJpdCAgICAgKi8gXAogICAgICAgICAiIC5i eXRlICIgYWx0X29yaWdfbGVuICJcbiIgICAgICAgICAgICAgICAvKiBzb3VyY2UgbGVuICAgICAg Ki8gXAotICAgICAgICAiIC5ieXRlICIgYWx0X3JlcGxfbGVuKG51bSkgIlxuIiAgICAgICAgICAv KiByZXBsYWNlbWVudCBsZW4gKi8KKyAgICAgICAgIiAuYnl0ZSAiIGFsdF9yZXBsX2xlbihudW0p ICJcbiIgICAgICAgICAgLyogcmVwbGFjZW1lbnQgbGVuICovIFwKKyAgICAgICAgIiAuYnl0ZSAi IGFsdF9wYWRfbGVuICJcbiIgICAgICAgICAgICAgICAgLyogcGFkZGluZyBsZW4gICAgICovIFwK KyAgICAgICAgIiAuYnl0ZSAwXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJp diAgICAgICAgICAgICovCiAKLSNkZWZpbmUgRElTQ0FSRF9FTlRSWShudW0pICAgICAgICAgICAg ICAgICAgICAgICAgLyogcmVwbCA8PSBvcmlnICovICAgIFwKLSAgICAgICAgIiAuYnl0ZSAweGZm ICsgKCIgYWx0X3JlcGxfbGVuKG51bSkgIikgLSAoIiBhbHRfb3JpZ19sZW4gIilcbiIKKyNkZWZp bmUgRElTQ0FSRF9FTlRSWShudW0pICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVwbCA8PSB0 b3RhbCAqLyAgIFwKKyAgICAgICAgIiAuYnl0ZSAweGZmICsgKCIgYWx0X3JlcGxfbGVuKG51bSkg IikgLSAoIiBhbHRfdG90YWxfbGVuICIpXG4iCiAKICNkZWZpbmUgQUxUSU5TVFJfUkVQTEFDRU1F TlQobmV3aW5zdHIsIG51bSkgICAgICAgLyogcmVwbGFjZW1lbnQgKi8gICAgIFwKICAgICAgICAg YWx0X3JlcGxfcyhudW0pIjpcblx0IiBuZXdpbnN0ciAiXG4iIGFsdF9yZXBsX2UobnVtKSAiOlxu XHQiCiAKIC8qIGFsdGVybmF0aXZlIGFzc2VtYmx5IHByaW1pdGl2ZTogKi8KICNkZWZpbmUgQUxU RVJOQVRJVkUob2xkaW5zdHIsIG5ld2luc3RyLCBmZWF0dXJlKSAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgT0xESU5TVFIob2xkaW5zdHIpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgT0xESU5TVFJfMShvbGRpbnN0ciwgMSkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIi5wdXNo c2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLCBcImFcIiwgQHByb2diaXRzXG4iICAgICAgICAgICAg IFwKICAgICAgICAgQUxUSU5TVFJfRU5UUlkoZmVhdHVyZSwgMSkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIi5zZWN0aW9uIC5kaXNjYXJkLCBcImFcIiwg QHByb2diaXRzXG4iICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIi5ieXRlICIg YWx0X3RvdGFsX2xlbiAiXG4iIC8qIHRvdGFsX2xlbiA8PSAyNTUgKi8gICAgICAgICAgICAgIFwK ICAgICAgICAgRElTQ0FSRF9FTlRSWSgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICAgICAgIi5zZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVu dCwgXCJheFwiLCBAcHJvZ2JpdHNcbiIgICAgICAgICAgIFwKICAgICAgICAgQUxUSU5TVFJfUkVQ TEFDRU1FTlQobmV3aW5zdHIsIDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICAgICAgIi5wb3BzZWN0aW9uXG4iCiAKICNkZWZpbmUgQUxURVJOQVRJVkVfMihvbGRpbnN0ciwg bmV3aW5zdHIxLCBmZWF0dXJlMSwgbmV3aW5zdHIyLCBmZWF0dXJlMikgXAotICAgICAgICBPTERJ TlNUUihvbGRpbnN0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICBPTERJTlNUUl8yKG9sZGluc3RyLCAxLCAyKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVj dGlvbnMsIFwiYVwiLCBAcHJvZ2JpdHNcbiIgICAgICAgICAgICAgXAogICAgICAgICBBTFRJTlNU Ul9FTlRSWShmZWF0dXJlMSwgMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogICAgICAgICBBTFRJTlNUUl9FTlRSWShmZWF0dXJlMiwgMikgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAiLnNlY3Rpb24gLmRpc2NhcmQsIFwiYVwiLCBA cHJvZ2JpdHNcbiIgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAiLmJ5dGUgIiBh bHRfdG90YWxfbGVuICJcbiIgLyogdG90YWxfbGVuIDw9IDI1NSAqLyAgICAgICAgICAgICAgXAog ICAgICAgICBESVNDQVJEX0VOVFJZKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICAgICBESVNDQVJEX0VOVFJZKDIpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAiLnNlY3Rpb24gLmFs dGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCIsIEBwcm9nYml0c1xuIiAgICAgICAgICAgXAotLSAK Mi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs