From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 09/10] x86/spec_ctrl: Introduce a new `spec-ctrl=` command line argument to replace `bti=` Date: Fri, 11 May 2018 11:38:13 +0100 Message-ID: <1526035094-14343-10-git-send-email-andrew.cooper3@citrix.com> References: <1526035094-14343-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: <1526035094-14343-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: Juergen Gross , Andrew Cooper , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org SW4gaGluZHNpZ2h0LCB0aGUgb3B0aW9ucyBmb3IgYGJ0aT1gIGFyZW4ndCBhcyBmbGV4aWJsZSBv ciB1c2VmdWwgYXMgZXhwZWN0ZWQKKGluY2x1ZGluZyBzZXZlcmFsIG9wdGlvbnMgd2hpY2ggZG9u J3QgYXBwZWFyIHRvIGJlaGF2ZSBhcyBpbnRlbmRlZCkuCkNoYW5naW5nIHRoZSBiZWhhdmlvdXIg b2YgYW4gZXhpc3Rpbmcgb3B0aW9uIGlzIHByb2JsZW1hdGljIGZvciBjb21wYXRpYmlsaXR5LApz byBpbnRyb2R1Y2UgYSBuZXcgYHNwZWMtY3RybD1gIGluIHRoZSBob3BlcyB0aGF0IHdlIGNhbiBk byBiZXR0ZXIuCgpPbmUgY29tbW9uIHdheSBvZiBkZXBsb3lpbmcgWGVuIGlzIHdpdGggYSBzaW5n bGUgUFYgZG9tMCBhbmQgYWxsIGRvbVVzIGJlaW5nCkhWTSBkb21haW5zLiAgSW4gc3VjaCBhIHNl dHVwLCBhbiBhZG1pbmlzdHJhdG9yIHdobyBoYXMgd2VpZ2hlZCB1cCB0aGUgcmlza3MKbWF5IHdp c2ggdG8gZm9yZ28gcHJvdGVjdGlvbiBhZ2FpbnN0IG1hbGljaW91cyBQViBkb21haW5zLCB0byBy ZWR1Y2UgdGhlCm92ZXJhbGwgcGVyZm9ybWFuY2UgaGl0LiAgVG8gY2F0ZXIgZm9yIHRoaXMgdXNl Y2FzZSwgYHNwZWMtY3RybD1uby1wdmAgd2lsbApkaXNhYmxlIGFsbCBzcGVjdWxhdGl2ZSBwcm90 ZWN0aW9uIGZvciBQViBkb21haW5zLCB3aGlsZSBsZWF2aW5nIGFsbApzcGVjdWxhdGl2ZSBwcm90 ZWN0aW9uIGZvciBIVk0gZG9tYWlucyBpbnRhY3QuCgpGb3IgY29kaW5nIGNsYXJpdHkgYXMgbXVj aCBhcyBhbnl0aGluZyBlbHNlLCB0aGUgc3Vib3B0aW9ucyBhcmUgZ3JvdXBlZCBieQpsb2dpY2Fs IGFyZWE7IHRob3NlIHdoaWNoIGFmZmVjdCB0aGUgYWx0ZXJuYXRpdmVzIGJsb2NrcywgYW5kIHRo b3NlIHdoaWNoCmFmZmVjdCBYZW4ncyBpbi1oeXBlcnZpc29yIHNldHRpbmdzLiAgU2VlIHRoZSB4 ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIGZvcgpmdWxsIGRldGFpbHMgb2YgdGhlIG5ldyBvcHRp b25zLgoKV2hpbGUgY2hhbmdpbmcgdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zLCB0YWtlIHRoZSB0 aW1lIHRvIGNoYW5nZSBob3cgdGhlIGRhdGEKaXMgcmVwb3J0ZWQgdG8gdGhlIHVzZXIuICBUaGUg dGhyZWUgREVCVUcgcHJpbnRrcyBhcmUgdXBncmFkZWQgdG8gdW5pbGF0ZXJhbCwKYXMgdGhleSBh cmUgYWxsIHJlbGV2YW50IHBpZWNlcyBvZiBpbmZvcm1hdGlvbiwgYW5kIHRoZSBvbGQgIm1pdGln YXRpb25zOiIKbGluZSBpcyBzcGxpdCBpbiB0aGUgdHdvIGxvZ2ljYWwgYXJlYXMgZGVzY3JpYmVk IGFib3ZlLgoKU2FtcGxlIG91dHB1dCBmcm9tIGJvb3Rpbmcgd2l0aCBgc3BlYy1jdHJsPW5vLXB2 YCBsb29rcyBsaWtlOgoKICAoWEVOKSBTcGVjdWxhdGl2ZSBtaXRpZ2F0aW9uIGZhY2lsaXRpZXM6 CiAgKFhFTikgICBIYXJkd2FyZSBmZWF0dXJlczogSUJSUy9JQlBCIFNUSUJQIElCUEIKICAoWEVO KSAgIENvbXBpbGVkLWluIHN1cHBvcnQ6IElORElSRUNUX1RIVU5LCiAgKFhFTikgICBYZW4gc2V0 dGluZ3M6IEJUSS1UaHVuayBSRVRQT0xJTkUsIFNQRUNfQ1RSTDogSUJSUy0sIE90aGVyOiBJQlBC CiAgKFhFTikgICBTdXBwb3J0IGZvciBWTXM6IFBWOiBOb25lLCBIVk06IE1TUl9TUEVDX0NUUkwg UlNCCiAgKFhFTikgICBYUFRJICg2NC1iaXQgUFYgb25seSk6IERvbTAgZW5hYmxlZCwgRG9tVSBl bmFibGVkCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy aXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IFdlaSBM aXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNDOiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVA Y2l0cml4LmNvbT4KQ0M6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KLS0tCiBkb2Nz L21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93biB8ICA0OSArKysrKysrKysrKwogeGVuL2Fy Y2gveDg2L3NwZWNfY3RybC5jICAgICAgICAgICAgfCAxNjQgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspLCAyNSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJr ZG93biBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCmluZGV4IDViNjU3MWEu LmI2YjE1MzAgMTAwNjQ0Ci0tLSBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3du CisrKyBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCkBAIC0yNDgsNiArMjQ4 LDkgQEAgdGhlIE5NSSB3YXRjaGRvZyBpcyBhbHNvIGVuYWJsZWQuCiAjIyMgYnRpICh4ODYpCiA+ IGA9IExpc3Qgb2YgWyA8Ym9vbD4sIHRodW5rPXJldHBvbGluZXxsZmVuY2V8am1wLCBpYnJzPTxi b29sPiwgaWJwYj08Ym9vbD4sIHJzYj08Ym9vbD4sIHJzYl97dm1leGl0LG5hdGl2ZX09PGJvb2w+ IF1gCiAKKyoqV0FSTklORzogVGhpcyBjb21tYW5kIGxpbmUgb3B0aW9uIGlzIGRlcHJlY2F0ZWQs IGFuZCBzdXBlcnNlZGVkIGJ5Citfc3BlYy1jdHJsPV8gLSB1c2luZyBib3RoIG9wdGlvbnMgaW4g Y29tYmluYXRpb24gaXMgdW5kZWZpbmVkLioqCisKIEJyYW5jaCBUYXJnZXQgSW5qZWN0aW9uIGNv bnRyb2xzLiAgQnkgZGVmYXVsdCwgWGVuIHdpbGwgcGljayB0aGUgbW9zdAogYXBwcm9wcmlhdGUg QlRJIG1pdGlnYXRpb25zIGJhc2VkIG9uIGNvbXBpbGVkIGluIHN1cHBvcnQsIGxvYWRlZCBtaWNy b2NvZGUsCiBhbmQgaGFyZHdhcmUgZGV0YWlscy4KQEAgLTE3NTIsNiArMTc1NSw1MiBAQCBlbmZv cmNlcyB0aGUgbWF4aW11bSB0aGVvcmV0aWNhbGx5IG5lY2Vzc2FyeSB0aW1lb3V0IG9mIDY3MG1z LiBBbnkgbnVtYmVyCiBpcyBiZWluZyBpbnRlcnByZXRlZCBhcyBhIGN1c3RvbSB0aW1lb3V0IGlu IG1pbGxpc2Vjb25kcy4gWmVybyBvciBib29sZWFuCiBmYWxzZSBkaXNhYmxlIHRoZSBxdWlyayB3 b3JrYXJvdW5kLCB3aGljaCBpcyBhbHNvIHRoZSBkZWZhdWx0LgogCisjIyMgc3BlYy1jdHJsICh4 ODYpCis+IGA9IExpc3Qgb2YgWyA8Ym9vbD4sIHhlbj08Ym9vbD4sIHtwdixodm0sbXNyLXNjLHJz Yn09PGJvb2w+LAorPiAgICAgICAgICAgICAgYnRpLXRodW5rPXJldHBvbGluZXxsZmVuY2V8am1w LCB7aWJycyxpYnBifT08Ym9vbD4gXWAKKworQ29udHJvbHMgZm9yIHNwZWN1bGF0aXZlIGV4ZWN1 dGlvbiBzaWRlY2hhbm5lbCBtaXRpZ2F0aW9ucy4gIEJ5IGRlZmF1bHQsIFhlbgord2lsbCBwaWNr IHRoZSBtb3N0IGFwcHJvcHJpYXRlIG1pdGlnYXRpb25zIGJhc2VkIG9uIGNvbXBpbGVkIGluIHN1 cHBvcnQsCitsb2FkZWQgbWljcm9jb2RlLCBhbmQgaGFyZHdhcmUgZGV0YWlscywgYW5kIHdpbGwg dmlydHVhbGlzZSBhcHByb3ByaWF0ZQorbWl0aWdhdGlvbnMgZm9yIGd1ZXN0cyB0byB1c2UuCisK KyoqV0FSTklORzogQW55IHVzZSBvZiB0aGlzIG9wdGlvbiBtYXkgaW50ZXJmZXJlIHdpdGggaGV1 cmlzdGljcy4gIFVzZSB3aXRoCitleHRyZW1lIGNhcmUuKioKKworQW4gb3ZlcmFsbCBib29sZWFu IHZhbHVlLCBgc3BlYy1jdHJsPW5vYCwgY2FuIGJlIHNwZWNpZmllZCB0byB0dXJuIG9mZiBhbGwK K21pdGlnYXRpb25zLCBpbmNsdWRpbmcgcGllY2VzIG9mIGluZnJhc3RydWN0dXJlIHVzZWQgdG8g dmlydHVhbGlzZSBjZXJ0YWluCittaXRpZ2F0aW9uIGZlYXR1cmVzIGZvciBndWVzdHMuICBBbHRl cm5hdGl2ZWx5LCBhIHNsaWdodGx5IG1vcmUgcmVzdHJpY3RlZAorYHNwZWMtY3RybD1uby14ZW5g IGNhbiBiZSB1c2VkIHRvIHR1cm4gb2ZmIGFsbCBvZiBYZW4ncyBtaXRpZ2F0aW9ucywgd2hpbGUK K2xlYXZpbmcgdGhlIHZpcnR1YWxpc2F0aW9uIHN1cHBvcnQgaW4gcGxhY2UgZm9yIGd1ZXN0cyB0 byB1c2UuICBVc2Ugb2YgYQorcG9zaXRpdmUgYm9vbGVhbiB2YWx1ZSBmb3IgZWl0aGVyIG9mIHRo ZXNlIG9wdGlvbnMgaXMgaW52YWxpZC4KKworVGhlIGJvb2xlYW5zIGBwdj1gLCBgaHZtPWAsIGBt c3Itc2M9YCBhbmQgYHJzYj1gIG9mZmVyIGZpbmUgZ3JhaW5lZCBjb250cm9sCitvdmVyIHRoZSBh bHRlcm5hdGl2ZSBibG9ja3MgdXNlZCBieSBYZW4uICBUaGVzZSBpbXBhY3QgWGVuJ3MgYWJpbGl0 eSB0bworcHJvdGVjdCBpdHNlbGYsIGFuZCBYZW4ncyBhYmlsaXR5IHRvIHZpcnR1YWxpc2Ugc3Vw cG9ydCBmb3IgZ3Vlc3RzIHRvIHVzZS4KKworKiBgcHY9YCBhbmQgYGh2bT1gIG9mZmVyIGNvbnRy b2wgb3ZlciBhbGwgc3Vib3B0aW9ucyBmb3IgUFYgYW5kIEhWTSBndWVzdHMKKyAgcmVzcGVjdGl2 ZWx5LgorKiBgbXNyLXNjPWAgb2ZmZXJzIGNvbnRyb2wgb3ZlciBYZW4ncyBzdXBwb3J0IGZvciBt YW5pcHVsYXRpbmcgTVNSXF9TUEVDXF9DVFJMCisgIG9uIGVudHJ5IGFuZCBleGl0LiAgVGhlc2Ug YmxvY2tzIGFyZSBuZWNlc3NhcnkgdG8gdmlydHVhbGlzZSBzdXBwb3J0IGZvcgorICBndWVzdHMg YW5kIGlmIGRpc2FibGVkLCBndWVzdHMgd2lsbCBiZSB1bmFibGUgdG8gdXNlIElCUlMvU1RJQlAv ZXRjLgorKiBgcnNiPWAgb2ZmZXJzIGNvbnRyb2wgb3ZlciB3aGV0aGVyIHRvIG92ZXJ3cml0ZSB0 aGUgUmV0dXJuIFN0YWNrIEJ1ZmZlciAvCisgIFJldHVybiBBZGRyZXNzIFN0YWNrIG9uIGVudHJ5 IHRvIFhlbi4KKworSWYgWGVuIHdhcyBjb21waWxlZCB3aXRoIElORElSRUNUXF9USFVOSyBzdXBw b3J0LCBgYnRpLXRodW5rPWAgY2FuIGJlIHVzZWQgdG8KK3NlbGVjdCB3aGljaCBvZiB0aGUgdGh1 bmtzIGdldHMgcGF0Y2hlZCBpbnRvIHRoZSBgX194ODZfaW5kaXJlY3RfdGh1bmtfJXJlZ2AKK2xv Y2F0aW9ucy4gIFRoZSBkZWZhdWx0IHRodW5rIGlzIGByZXRwb2xpbmVgIChnZW5lcmFsbHkgcHJl ZmVycmVkIGZvciBJbnRlbAoraGFyZHdhcmUpLCB3aXRoIHRoZSBhbHRlcm5hdGl2ZXMgYmVpbmcg YGptcGAgKGEgYGptcCAqJXJlZ2AgZ2FkZ2V0LCBtaW5pbWFsCitvdmVyaGVhZCksIGFuZCBgbGZl bmNlYCAoYW4gYGxmZW5jZTsgam1wIColcmVnYCBnYWRnZXQsIHByZWZlcnJlZCBmb3IgQU1EKS4K KworT24gaGFyZHdhcmUgc3VwcG9ydGluZyBJQlJTIChJbmRpcmVjdCBCcmFuY2ggUmVzdHJpY3Rl ZCBTcGVjdWxhdGlvbiksIHRoZQorYGlicnM9YCBvcHRpb24gY2FuIGJlIHVzZWQgdG8gZm9yY2Ug b3IgcHJldmVudCBYZW4gdXNpbmcgdGhlIGZlYXR1cmUgaXRzZWxmLgorSWYgWGVuIGlzIG5vdCB1 c2luZyBJQlJTIGl0c2VsZiwgZnVuY3Rpb25hbGl0eSBpcyBzdGlsbCBzZXQgdXAgc28gSUJSUyBj YW4gYmUKK3ZpcnR1YWxpc2VkIGZvciBndWVzdHMuCisKK09uIGhhcmR3YXJlIHN1cHBvcnRpbmcg SUJQQiAoSW5kaXJlY3QgQnJhbmNoIFByZWRpY3Rpb24gQmFycmllciksIHRoZSBgaWJwYj1gCitv cHRpb24gY2FuIGJlIHVzZWQgdG8gZm9yY2UgKHRoZSBkZWZhdWx0KSBvciBwcmV2ZW50IFhlbiBm cm9tIGlzc3VpbmcgYnJhbmNoCitwcmVkaWN0aW9uIGJhcnJpZXJzIG9uIHZjcHUgY29udGV4dCBz d2l0Y2hlcy4KKwogIyMjIHN5bmNcX2NvbnNvbGUKID4gYD0gPGJvb2xlYW4+YAogCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvc3BlY19jdHJsLmMgYi94ZW4vYXJjaC94ODYvc3BlY19jdHJsLmMK aW5kZXggZGU4YjM1Zi4uYTIzMjhiZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NwZWNfY3Ry bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zcGVjX2N0cmwuYwpAQCAtMjYsNiArMjYsMTMgQEAKICNp bmNsdWRlIDxhc20vc3BlY19jdHJsLmg+CiAjaW5jbHVkZSA8YXNtL3NwZWNfY3RybF9hc20uaD4K IAorLyogQ21kbGluZSBjb250cm9scyBmb3IgWGVuJ3MgYWx0ZXJuYXRpdmUgYmxvY2tzLiAqLwor c3RhdGljIGJvb2wgX19pbml0ZGF0YSBvcHRfbXNyX3NjX3B2ID0gdHJ1ZTsKK3N0YXRpYyBib29s IF9faW5pdGRhdGEgb3B0X21zcl9zY19odm0gPSB0cnVlOworc3RhdGljIGJvb2wgX19pbml0ZGF0 YSBvcHRfcnNiX3B2ID0gdHJ1ZTsKK3N0YXRpYyBib29sIF9faW5pdGRhdGEgb3B0X3JzYl9odm0g PSB0cnVlOworCisvKiBDbWRsaW5lIGNvbnRyb2xzIGZvciBYZW4ncyBzcGVjdWxhdGl2ZSBzZXR0 aW5ncy4gKi8KIHN0YXRpYyBlbnVtIGluZF90aHVuayB7CiAgICAgVEhVTktfREVGQVVMVCwgLyog RGVjaWRlIHdoaWNoIHRodW5rIHRvIHVzZSBhdCBib290IHRpbWUuICovCiAgICAgVEhVTktfTk9O RSwgICAgLyogTWlzc2luZyBjb21waWxlciBzdXBwb3J0IGZvciB0aHVua3MuICovCkBAIC0zNSw4 ICs0Miw2IEBAIHN0YXRpYyBlbnVtIGluZF90aHVuayB7CiAgICAgVEhVTktfSk1QLAogfSBvcHRf dGh1bmsgX19pbml0ZGF0YSA9IFRIVU5LX0RFRkFVTFQ7CiBzdGF0aWMgaW50OF90IF9faW5pdGRh dGEgb3B0X2licnMgPSAtMTsKLXN0YXRpYyBib29sIF9faW5pdGRhdGEgb3B0X3JzYl9wdiA9IHRy dWU7Ci1zdGF0aWMgYm9vbCBfX2luaXRkYXRhIG9wdF9yc2JfaHZtID0gdHJ1ZTsKIGJvb2wgX19y ZWFkX21vc3RseSBvcHRfaWJwYiA9IHRydWU7CiAKIGJvb2wgX19pbml0ZGF0YSBic3BfZGVsYXlf c3BlY19jdHJsOwpAQCAtMTAwLDggKzEwNSw5NSBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9i dGkoY29uc3QgY2hhciAqcykKIH0KIGN1c3RvbV9wYXJhbSgiYnRpIiwgcGFyc2VfYnRpKTsKIAor c3RhdGljIGludCBfX2luaXQgcGFyc2Vfc3BlY19jdHJsKGNvbnN0IGNoYXIgKnMpCit7CisgICAg Y29uc3QgY2hhciAqc3M7CisgICAgaW50IHZhbCwgcmMgPSAwOworCisgICAgZG8geworICAgICAg ICBzcyA9IHN0cmNocihzLCAnLCcpOworICAgICAgICBpZiAoICFzcyApCisgICAgICAgICAgICBz cyA9IHN0cmNocihzLCAnXDAnKTsKKworICAgICAgICAvKiBHbG9iYWwgYW5kIFhlbi13aWRlIGRp c2FibGUuICovCisgICAgICAgIHZhbCA9IHBhcnNlX2Jvb2wocywgc3MpOworICAgICAgICBpZiAo ICF2YWwgKQorICAgICAgICB7CisgICAgICAgICAgICBvcHRfbXNyX3NjX3B2ID0gZmFsc2U7Cisg ICAgICAgICAgICBvcHRfbXNyX3NjX2h2bSA9IGZhbHNlOworCisgICAgICAgIGRpc2FibGVfY29t bW9uOgorICAgICAgICAgICAgb3B0X3JzYl9wdiA9IGZhbHNlOworICAgICAgICAgICAgb3B0X3Jz Yl9odm0gPSBmYWxzZTsKKworICAgICAgICAgICAgb3B0X3RodW5rID0gVEhVTktfSk1QOworICAg ICAgICAgICAgb3B0X2licnMgPSAwOworICAgICAgICAgICAgb3B0X2licGIgPSBmYWxzZTsKKyAg ICAgICAgfQorICAgICAgICBlbHNlIGlmICggdmFsID4gMCApCisgICAgICAgICAgICByYyA9IC1F SU5WQUw7CisgICAgICAgIGVsc2UgaWYgKCAodmFsID0gcGFyc2VfYm9vbGVhbigieGVuIiwgcywg c3MpKSA+PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAhdmFsICkKKyAgICAgICAg ICAgICAgICBnb3RvIGRpc2FibGVfY29tbW9uOworCisgICAgICAgICAgICByYyA9IC1FSU5WQUw7 CisgICAgICAgIH0KKworICAgICAgICAvKiBYZW4ncyBhbHRlcm5hdGl2ZSBibG9ja3MuICovCisg ICAgICAgIGVsc2UgaWYgKCAodmFsID0gcGFyc2VfYm9vbGVhbigicHYiLCBzLCBzcykpID49IDAg KQorICAgICAgICB7CisgICAgICAgICAgICBvcHRfbXNyX3NjX3B2ID0gdmFsOworICAgICAgICAg ICAgb3B0X3JzYl9wdiA9IHZhbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggKHZhbCA9 IHBhcnNlX2Jvb2xlYW4oImh2bSIsIHMsIHNzKSkgPj0gMCApCisgICAgICAgIHsKKyAgICAgICAg ICAgIG9wdF9tc3Jfc2NfaHZtID0gdmFsOworICAgICAgICAgICAgb3B0X3JzYl9odm0gPSB2YWw7 CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoICh2YWwgPSBwYXJzZV9ib29sZWFuKCJtc3It c2MiLCBzLCBzcykpID49IDAgKQorICAgICAgICB7CisgICAgICAgICAgICBvcHRfbXNyX3NjX3B2 ID0gdmFsOworICAgICAgICAgICAgb3B0X21zcl9zY19odm0gPSB2YWw7CisgICAgICAgIH0KKyAg ICAgICAgZWxzZSBpZiAoICh2YWwgPSBwYXJzZV9ib29sZWFuKCJyc2IiLCBzLCBzcykpID49IDAg KQorICAgICAgICB7CisgICAgICAgICAgICBvcHRfcnNiX3B2ID0gdmFsOworICAgICAgICAgICAg b3B0X3JzYl9odm0gPSB2YWw7CisgICAgICAgIH0KKworICAgICAgICAvKiBYZW4ncyBzcGVjdWxh dGl2ZSBzaWRlY2hhbm5lbCBtaXRpZ2F0aW9uIHNldHRpbmdzLiAqLworICAgICAgICBlbHNlIGlm ICggIXN0cm5jbXAocywgImJ0aS10aHVuaz0iLCAxMCkgKQorICAgICAgICB7CisgICAgICAgICAg ICBzICs9IDEwOworCisgICAgICAgICAgICBpZiAoICFzdHJuY21wKHMsICJyZXRwb2xpbmUiLCBz cyAtIHMpICkKKyAgICAgICAgICAgICAgICBvcHRfdGh1bmsgPSBUSFVOS19SRVRQT0xJTkU7Cisg ICAgICAgICAgICBlbHNlIGlmICggIXN0cm5jbXAocywgImxmZW5jZSIsIHNzIC0gcykgKQorICAg ICAgICAgICAgICAgIG9wdF90aHVuayA9IFRIVU5LX0xGRU5DRTsKKyAgICAgICAgICAgIGVsc2Ug aWYgKCAhc3RybmNtcChzLCAiam1wIiwgc3MgLSBzKSApCisgICAgICAgICAgICAgICAgb3B0X3Ro dW5rID0gVEhVTktfSk1QOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJjID0g LUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggKHZhbCA9IHBhcnNlX2Jvb2xl YW4oImlicnMiLCBzLCBzcykpID49IDAgKQorICAgICAgICAgICAgb3B0X2licnMgPSB2YWw7Cisg ICAgICAgIGVsc2UgaWYgKCAodmFsID0gcGFyc2VfYm9vbGVhbigiaWJwYiIsIHMsIHNzKSkgPj0g MCApCisgICAgICAgICAgICBvcHRfaWJwYiA9IHZhbDsKKyAgICAgICAgZWxzZQorICAgICAgICAg ICAgcmMgPSAtRUlOVkFMOworCisgICAgICAgIHMgPSBzcyArIDE7CisgICAgfSB3aGlsZSAoICpz cyApOworCisgICAgcmV0dXJuIHJjOworfQorY3VzdG9tX3BhcmFtKCJzcGVjLWN0cmwiLCBwYXJz ZV9zcGVjX2N0cmwpOworCiBzdGF0aWMgdm9pZCBfX2luaXQgcHJpbnRfZGV0YWlscyhlbnVtIGlu ZF90aHVuayB0aHVuaywgdWludDY0X3QgY2FwcykKIHsKKyAgICBib29sIHVzZV9zcGVjX2N0cmwg PSAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NDX01TUl9QVikgfHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NDX01TUl9IVk0pKTsKICAgICB1 bnNpZ25lZCBpbnQgXzdkMCA9IDAsIGU4YiA9IDAsIHRtcDsKIAogICAgIC8qIENvbGxlY3QgZGlh Z25vc3RpY3MgYWJvdXQgYXZhaWxhYmxlIG1pdGlnYXRpb25zLiAqLwpAQCAtMTEwLDEwICsyMDIs MTAgQEAgc3RhdGljIHZvaWQgX19pbml0IHByaW50X2RldGFpbHMoZW51bSBpbmRfdGh1bmsgdGh1 bmssIHVpbnQ2NF90IGNhcHMpCiAgICAgaWYgKCBib290X2NwdV9kYXRhLmV4dGVuZGVkX2NwdWlk X2xldmVsID49IDB4ODAwMDAwMDggKQogICAgICAgICBjcHVpZCgweDgwMDAwMDA4LCAmdG1wLCAm ZThiLCAmdG1wLCAmdG1wKTsKIAotICAgIHByaW50ayhYRU5MT0dfREVCVUcgIlNwZWN1bGF0aXZl IG1pdGlnYXRpb24gZmFjaWxpdGllczpcbiIpOworICAgIHByaW50aygiU3BlY3VsYXRpdmUgbWl0 aWdhdGlvbiBmYWNpbGl0aWVzOlxuIik7CiAKICAgICAvKiBIYXJkd2FyZSBmZWF0dXJlcyB3aGlj aCBwZXJ0YWluIHRvIHNwZWN1bGF0aXZlIG1pdGlnYXRpb25zLiAqLwotICAgIHByaW50ayhYRU5M T0dfREVCVUcgIiAgSGFyZHdhcmUgZmVhdHVyZXM6JXMlcyVzJXMlcyVzXG4iLAorICAgIHByaW50 aygiICBIYXJkd2FyZSBmZWF0dXJlczolcyVzJXMlcyVzJXNcbiIsCiAgICAgICAgICAgIChfN2Qw ICYgY3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX0lCUlNCKSkgPyAiIElCUlMvSUJQQiIgOiAiIiwK ICAgICAgICAgICAgKF83ZDAgJiBjcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfU1RJQlApKSA/ICIg U1RJQlAiICAgICA6ICIiLAogICAgICAgICAgICAoZThiICAmIGNwdWZlYXRfbWFzayhYODZfRkVB VFVSRV9JQlBCKSkgID8gIiBJQlBCIiAgICAgIDogIiIsCkBAIC0xMjMsMjIgKzIxNSwzMyBAQCBz dGF0aWMgdm9pZCBfX2luaXQgcHJpbnRfZGV0YWlscyhlbnVtIGluZF90aHVuayB0aHVuaywgdWlu dDY0X3QgY2FwcykKIAogICAgIC8qIENvbXBpbGVkLWluIHN1cHBvcnQgd2hpY2ggcGVydGFpbnMg dG8gQlRJIG1pdGlnYXRpb25zLiAqLwogICAgIGlmICggSVNfRU5BQkxFRChDT05GSUdfSU5ESVJF Q1RfVEhVTkspICkKLSAgICAgICAgcHJpbnRrKFhFTkxPR19ERUJVRyAiICBDb21waWxlZC1pbiBz dXBwb3J0OiBJTkRJUkVDVF9USFVOS1xuIik7CisgICAgICAgIHByaW50aygiICBDb21waWxlZC1p biBzdXBwb3J0OiBJTkRJUkVDVF9USFVOS1xuIik7CiAKLSAgICBwcmludGsoIkJUSSBtaXRpZ2F0 aW9uczogVGh1bmsgJXMsIE90aGVyczolcyVzJXMlc1xuIiwKKyAgICAvKiBTZXR0aW5ncyBmb3Ig WGVuJ3MgcHJvdGVjdGlvbiwgaXJyZXNwZWN0aXZlIG9mIGd1ZXN0cy4gKi8KKyAgICBwcmludGso IiAgWGVuIHNldHRpbmdzOiBCVEktVGh1bmsgJXMsIFNQRUNfQ1RSTDogJXMsIE90aGVyOiVzXG4i LAogICAgICAgICAgICB0aHVuayA9PSBUSFVOS19OT05FICAgICAgPyAiTi9BIiA6CiAgICAgICAg ICAgIHRodW5rID09IFRIVU5LX1JFVFBPTElORSA/ICJSRVRQT0xJTkUiIDoKICAgICAgICAgICAg dGh1bmsgPT0gVEhVTktfTEZFTkNFICAgID8gIkxGRU5DRSIgOgogICAgICAgICAgICB0aHVuayA9 PSBUSFVOS19KTVAgICAgICAgPyAiSk1QIiA6ICI/IiwKKyAgICAgICAgICAgIXVzZV9zcGVjX2N0 cmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAgIk5vIiA6CisgICAgICAgICAgIChkZWZh dWx0X3hlbl9zcGVjX2N0cmwgJiBTUEVDX0NUUkxfSUJSUykgID8gICJJQlJTKyIgOiAgIklCUlMt IiwKKyAgICAgICAgICAgb3B0X2licGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PyAiIElCUEIiICA6ICIiKTsKKworICAgIC8qCisgICAgICogQWx0ZXJuYXRpdmVzIGJsb2NrcyBm b3IgcHJvdGVjdGluZyBhZ2FpbnN0IGFuZC9vciB2aXJ0dWFsaXNpbmcKKyAgICAgKiBtaXRpZ2F0 aW9uIHN1cHBvcnQgZm9yIGd1ZXN0cy4KKyAgICAgKi8KKyAgICBwcmludGsoIiAgU3VwcG9ydCBm b3IgVk1zOiBQVjolcyVzJXMsIEhWTTolcyVzJXNcbiIsCiAgICAgICAgICAgIChib290X2NwdV9o YXMoWDg2X0ZFQVRVUkVfU0NfTVNSX1BWKSB8fAotICAgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4 Nl9GRUFUVVJFX1NDX01TUl9IVk0pKSA/Ci0gICAgICAgICAgIGRlZmF1bHRfeGVuX3NwZWNfY3Ry bCAmIFNQRUNfQ1RSTF9JQlJTICAgID8gIiBJQlJTKyIgOgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgSUJSUy0iICAgICAgOiAiIiwKLSAg ICAgICAgICAgb3B0X2licGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiIElC UEIiICAgICAgIDogIiIsCi0gICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TQ19S U0JfUFYpICAgICAgID8gIiBSU0JfTkFUSVZFIiA6ICIiLAotICAgICAgICAgICBib290X2NwdV9o YXMoWDg2X0ZFQVRVUkVfU0NfUlNCX0hWTSkgICAgICA/ICIgUlNCX1ZNRVhJVCIgOiAiIik7Ci0K LSAgICBwcmludGsoIlhQVEkgKDY0LWJpdCBQViBvbmx5KTogRG9tMCAlcywgRG9tVSAlc1xuIiwK KyAgICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TQ19SU0JfUFYpKSAgICAgPyAi IiAgICAgICAgICAgICAgIDogIiBOb25lIiwKKyAgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9G RUFUVVJFX1NDX01TUl9QVikgICAgICAgPyAiIE1TUl9TUEVDX0NUUkwiIDogIiIsCisgICAgICAg ICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TQ19SU0JfUFYpICAgICAgID8gIiBSU0IiICAg ICAgICAgICA6ICIiLAorICAgICAgICAgICAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NDX01T Ul9IVk0pIHx8CisgICAgICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfU0NfUlNCX0hW TSkpICAgID8gIiIgICAgICAgICAgICAgICA6ICIgTm9uZSIsCisgICAgICAgICAgIGJvb3RfY3B1 X2hhcyhYODZfRkVBVFVSRV9TQ19NU1JfSFZNKSAgICAgID8gIiBNU1JfU1BFQ19DVFJMIiA6ICIi LAorICAgICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfU0NfUlNCX0hWTSkgICAgICA/ ICIgUlNCIiAgICAgICAgICAgOiAiIik7CisKKyAgICBwcmludGsoIiAgWFBUSSAoNjQtYml0IFBW IG9ubHkpOiBEb20wICVzLCBEb21VICVzXG4iLAogICAgICAgICAgICBvcHRfeHB0aSAmIE9QVF9Y UFRJX0RPTTAgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiLAogICAgICAgICAgICBvcHRfeHB0aSAm IE9QVF9YUFRJX0RPTVUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKIH0KQEAgLTI5Myw3ICsz OTYsNyBAQCBjdXN0b21fcGFyYW0oInhwdGkiLCBwYXJzZV94cHRpKTsKIHZvaWQgX19pbml0IGlu aXRfc3BlY3VsYXRpb25fbWl0aWdhdGlvbnModm9pZCkKIHsKICAgICBlbnVtIGluZF90aHVuayB0 aHVuayA9IFRIVU5LX0RFRkFVTFQ7Ci0gICAgYm9vbCBpYnJzID0gZmFsc2U7CisgICAgYm9vbCB1 c2Vfc3BlY19jdHJsID0gZmFsc2UsIGlicnMgPSBmYWxzZTsKICAgICB1aW50NjRfdCBjYXBzID0g MDsKIAogICAgIGlmICggYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FSQ0hfQ0FQUykgKQpAQCAt MzYzLDIwICs0NjYsMzEgQEAgdm9pZCBfX2luaXQgaW5pdF9zcGVjdWxhdGlvbl9taXRpZ2F0aW9u cyh2b2lkKQogICAgIGVsc2UgaWYgKCB0aHVuayA9PSBUSFVOS19KTVAgKQogICAgICAgICBzZXR1 cF9mb3JjZV9jcHVfY2FwKFg4Nl9GRUFUVVJFX0lORF9USFVOS19KTVApOwogCisgICAgLyoKKyAg ICAgKiBJZiB3ZSBhcmUgb24gaGFyZHdhcmUgc3VwcG9ydGluZyBNU1JfU1BFQ19DVFJMLCBzZWUg YWJvdXQgc2V0dGluZyB1cAorICAgICAqIHRoZSBhbHRlcm5hdGl2ZXMgYmxvY2tzIHNvIHdlIGNh biB2aXJ0dWFsaXNlIHN1cHBvcnQgZm9yIGd1ZXN0cy4KKyAgICAgKi8KICAgICBpZiAoIGJvb3Rf Y3B1X2hhcyhYODZfRkVBVFVSRV9JQlJTQikgKQogICAgIHsKLSAgICAgICAgLyoKLSAgICAgICAg ICogRXZlbiBpZiB3ZSd2ZSBjaG9zZW4gdG8gbm90IGhhdmUgSUJSUyBzZXQgaW4gWGVuIGNvbnRl eHQsIHdlIHN0aWxsCi0gICAgICAgICAqIG5lZWQgdGhlIElCUlMgZW50cnkvZXhpdCBsb2dpYyB0 byB2aXJ0dWFsaXNlIElCUlMgc3VwcG9ydCBmb3IKLSAgICAgICAgICogZ3Vlc3RzLgotICAgICAg ICAgKi8KLSAgICAgICAgc2V0dXBfZm9yY2VfY3B1X2NhcChYODZfRkVBVFVSRV9TQ19NU1JfUFYp OwotICAgICAgICBzZXR1cF9mb3JjZV9jcHVfY2FwKFg4Nl9GRUFUVVJFX1NDX01TUl9IVk0pOwor ICAgICAgICBpZiAoIG9wdF9tc3Jfc2NfcHYgKQorICAgICAgICB7CisgICAgICAgICAgICB1c2Vf c3BlY19jdHJsID0gdHJ1ZTsKKyAgICAgICAgICAgIHNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZF QVRVUkVfU0NfTVNSX1BWKTsKKyAgICAgICAgfQogCi0gICAgICAgIGlmICggaWJycyApCi0gICAg ICAgICAgICBkZWZhdWx0X3hlbl9zcGVjX2N0cmwgfD0gU1BFQ19DVFJMX0lCUlM7CisgICAgICAg IGlmICggb3B0X21zcl9zY19odm0gKQorICAgICAgICB7CisgICAgICAgICAgICB1c2Vfc3BlY19j dHJsID0gdHJ1ZTsKKyAgICAgICAgICAgIHNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVf U0NfTVNSX0hWTSk7CisgICAgICAgIH0KIAotICAgICAgICBkZWZhdWx0X3NwZWNfY3RybF9mbGFn cyB8PSBTQ0ZfaXN0X3dybXNyOworICAgICAgICBpZiAoIHVzZV9zcGVjX2N0cmwgKQorICAgICAg ICB7CisgICAgICAgICAgICBpZiAoIGlicnMgKQorICAgICAgICAgICAgICAgIGRlZmF1bHRfeGVu X3NwZWNfY3RybCB8PSBTUEVDX0NUUkxfSUJSUzsKKworICAgICAgICAgICAgZGVmYXVsdF9zcGVj X2N0cmxfZmxhZ3MgfD0gU0NGX2lzdF93cm1zcjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8q Ci0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=