From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 3/6] x86/cpuid: Move all xstate leaf handling into guest_cpuid() Date: Mon, 16 Jan 2017 11:40:27 +0000 Message-ID: <1484566830-13916-4-git-send-email-andrew.cooper3@citrix.com> References: <1484566830-13916-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: <1484566830-13916-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhlIHhzdGF0ZSB1bmlvbiBub3cgY29udGFpbnMgc2FuaXRpc2VkIHZhbHVlcywgc28gaXQgY2Fu IGJlIGhhbmRsZWQgZnVsbHkgaW4KdGhlIG5vbi1sZWdhY3kgcGF0aC4KCmMvcyAxYzBiYzcwOWQg Ing4Ni9jcHVpZDogUGVyZm9ybSBtYXhfbGVhZiBjYWxjdWxhdGlvbnMgaW4gZ3Vlc3RfY3B1aWQo KSIKYWNjaWRlbnRhbGx5IGludHJvZHVjZWQgYSBib3VuZGFyeSBlcnJvciBmb3IgdGhlIHN1Ymxl YWYgY2hlY2ssIGFsdGhvdWdoIGl0CndhcyBtYXNrZWQgYnkgdGhlIGNvcnJlY3QgbG9naWMgaW4g dGhlIGxlZ2FjeSBwYXRoLgoKVHdvIGR5bmFtaWMgYWRqdXN0bWVudHMgbmVlZCBtYWtpbmcsIGJ1 dCBhIFRPRE8gYW5kIEJVSUxEX0JVR19PTigpIGFyZSBsZWZ0IHRvCmNvdmVyIGEgbGF0ZW50IGJ1 ZyB3aGljaCB3aWxsIHByZXNlbnQgaXRzZWxmIHdoZW4gWGVuIHN0YXJ0cyBzdXBwb3J0aW5nIFhT UwpzdGF0ZXMgZm9yIGd1ZXN0cy4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJl dy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2Uu Y29tPgotLS0KIHhlbi9hcmNoL3g4Ni9jcHVpZC5jICAgICAgICAgICAgfCAxNzkgKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L2RvbWN0bC5jICAg ICAgICAgICB8ICAgNCArLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaCB8ICAxMCAr KysKIDMgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMTQ4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHVpZC5jIGIveGVuL2FyY2gveDg2L2NwdWlkLmMK aW5kZXggMzAzNTY4ZC4uOWYxNjUwMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdWlkLmMK KysrIGIveGVuL2FyY2gveDg2L2NwdWlkLmMKQEAgLTQ4NCw4ICs0ODQsNiBAQCBzdGF0aWMgdm9p ZCBwdl9jcHVpZCh1aW50MzJfdCBsZWFmLCB1aW50MzJfdCBzdWJsZWFmLCBzdHJ1Y3QgY3B1aWRf bGVhZiAqcmVzKQogCiAgICAgc3dpdGNoICggbGVhZiApCiAgICAgewotICAgICAgICB1aW50MzJf dCB0bXA7Ci0KICAgICBjYXNlIDB4MDAwMDAwMDE6CiAgICAgICAgIHJlcy0+YyA9IHAtPmJhc2lj Ll8xYzsKICAgICAgICAgcmVzLT5kID0gcC0+YmFzaWMuXzFkOwpAQCAtNjM3LDU3ICs2MzUsNiBA QCBzdGF0aWMgdm9pZCBwdl9jcHVpZCh1aW50MzJfdCBsZWFmLCB1aW50MzJfdCBzdWJsZWFmLCBz dHJ1Y3QgY3B1aWRfbGVhZiAqcmVzKQogICAgICAgICAgICAgcmVzLT5hID0gKHJlcy0+YSAmIH4w eGZmKSB8IDM7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBYU1RBVEVfQ1BVSUQ6Ci0gICAg ICAgIGlmICggIXAtPmJhc2ljLnhzYXZlIHx8IHN1YmxlYWYgPj0gNjMgKQotICAgICAgICAgICAg Z290byB1bnN1cHBvcnRlZDsKLSAgICAgICAgc3dpdGNoICggc3VibGVhZiApCi0gICAgICAgIHsK LSAgICAgICAgY2FzZSAwOgotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50NjRfdCB4ZmVhdHVy ZV9tYXNrID0gWFNUQVRFX0ZQX1NTRTsKLSAgICAgICAgICAgIHVpbnQzMl90IHhzdGF0ZV9zaXpl ID0gWFNUQVRFX0FSRUFfTUlOX1NJWkU7Ci0KLSAgICAgICAgICAgIGlmICggcC0+YmFzaWMuYXZ4 ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB4ZmVhdHVyZV9tYXNrIHw9IFhTVEFU RV9ZTU07Ci0gICAgICAgICAgICAgICAgeHN0YXRlX3NpemUgPSAoeHN0YXRlX29mZnNldHNbX1hT VEFURV9ZTU1dICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfc2l6ZXNb X1hTVEFURV9ZTU1dKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCBwLT5mZWF0 LmF2eDUxMmYgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHhmZWF0dXJlX21hc2sg fD0gWFNUQVRFX09QTUFTSyB8IFhTVEFURV9aTU0gfCBYU1RBVEVfSElfWk1NOwotICAgICAgICAg ICAgICAgIHhzdGF0ZV9zaXplID0gbWF4KHhzdGF0ZV9zaXplLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHhzdGF0ZV9vZmZzZXRzW19YU1RBVEVfT1BNQVNLXSArCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXRlX3NpemVzW19YU1RBVEVfT1BNQVNLXSk7 Ci0gICAgICAgICAgICAgICAgeHN0YXRlX3NpemUgPSBtYXgoeHN0YXRlX3NpemUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXRlX29mZnNldHNbX1hTVEFURV9aTU1dICsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfc2l6ZXNbX1hTVEFURV9a TU1dKTsKLSAgICAgICAgICAgICAgICB4c3RhdGVfc2l6ZSA9IG1heCh4c3RhdGVfc2l6ZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfb2Zmc2V0c1tfWFNUQVRFX0hJ X1pNTV0gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGF0ZV9zaXplc1tf WFNUQVRFX0hJX1pNTV0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXMtPmEgPSB4 ZmVhdHVyZV9tYXNrOwotICAgICAgICAgICAgcmVzLT5kID0geGZlYXR1cmVfbWFzayA+PiAzMjsK LSAgICAgICAgICAgIHJlcy0+YyA9IHhzdGF0ZV9zaXplOwotCi0gICAgICAgICAgICAvKgotICAg ICAgICAgICAgICogQWx3YXlzIHJlYWQgQ1BVSUQuMHhEW0VDWD0wXS5FQlggZnJvbSBoYXJkd2Fy ZSwgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAqIGRvbWFpbiBwb2xpY3kuICBJdCB2YXJpZXMg d2l0aCBlbmFibGVkIHhzdGF0ZSwgYW5kIHRoZSBjb3JyZWN0Ci0gICAgICAgICAgICAgKiB4Y3Iw IGlzIGluIGNvbnRleHQuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGNwdWlkX2NvdW50 KGxlYWYsIHN1YmxlYWYsICZ0bXAsICZyZXMtPmIsICZ0bXAsICZ0bXApOwotICAgICAgICAgICAg YnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICByZXMtPmEg PSBwLT54c3RhdGUuRGExOwotICAgICAgICAgICAgcmVzLT5iID0gcmVzLT5jID0gcmVzLT5kID0g MDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCiAgICAg Y2FzZSAweDgwMDAwMDAxOgogICAgICAgICByZXMtPmMgPSBwLT5leHRkLmUxYzsKICAgICAgICAg cmVzLT5kID0gcC0+ZXh0ZC5lMWQ7CkBAIC03MzAsNiArNjc3LDcgQEAgc3RhdGljIHZvaWQgcHZf Y3B1aWQodWludDMyX3QgbGVhZiwgdWludDMyX3Qgc3VibGVhZiwgc3RydWN0IGNwdWlkX2xlYWYg KnJlcykKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4NzoKKyAgICBjYXNlIFhTVEFURV9D UFVJRDoKICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CiAgICAgICAgIC8qIE5vdyBoYW5k bGVkIGluIGd1ZXN0X2NwdWlkKCkuICovCiAgICAgfQpAQCAtNzk3LDk4ICs3NDUsNiBAQCBzdGF0 aWMgdm9pZCBodm1fY3B1aWQodWludDMyX3QgbGVhZiwgdWludDMyX3Qgc3VibGVhZiwgc3RydWN0 IGNwdWlkX2xlYWYgKnJlcykKICAgICAgICAgcmVzLT5kID0gdi0+dmNwdV9pZCAqIDI7CiAgICAg ICAgIGJyZWFrOwogCi0gICAgY2FzZSBYU1RBVEVfQ1BVSUQ6Ci0gICAgICAgIGlmICggIXAtPmJh c2ljLnhzYXZlIHx8IHN1YmxlYWYgPj0gNjMgKQotICAgICAgICB7Ci0gICAgICAgICAgICAqcmVz ID0gRU1QVFlfTEVBRjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHN3 aXRjaCAoIHN1YmxlYWYgKQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgMDoKLSAgICAgICAgewot ICAgICAgICAgICAgdWludDY0X3QgeGZlYXR1cmVfbWFzayA9IFhTVEFURV9GUF9TU0U7Ci0gICAg ICAgICAgICB1aW50MzJfdCB4c3RhdGVfc2l6ZSA9IFhTVEFURV9BUkVBX01JTl9TSVpFOwotCi0g ICAgICAgICAgICBpZiAoIHAtPmJhc2ljLmF2eCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg ICAgICAgeGZlYXR1cmVfbWFzayB8PSBYU1RBVEVfWU1NOwotICAgICAgICAgICAgICAgIHhzdGF0 ZV9zaXplID0gbWF4KHhzdGF0ZV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHhzdGF0ZV9vZmZzZXRzW19YU1RBVEVfWU1NXSArCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeHN0YXRlX3NpemVzW19YU1RBVEVfWU1NXSk7Ci0gICAgICAgICAgICB9Ci0K LSAgICAgICAgICAgIGlmICggcC0+ZmVhdC5tcHggKQotICAgICAgICAgICAgewotICAgICAgICAg ICAgICAgIHhmZWF0dXJlX21hc2sgfD0gWFNUQVRFX0JORFJFR1MgfCBYU1RBVEVfQk5EQ1NSOwot ICAgICAgICAgICAgICAgIHhzdGF0ZV9zaXplID0gbWF4KHhzdGF0ZV9zaXplLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGF0ZV9vZmZzZXRzW19YU1RBVEVfQk5EQ1NSXSAr Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXRlX3NpemVzW19YU1RBVEVf Qk5EQ1NSXSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggcC0+ZmVhdC5hdng1 MTJmICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB4ZmVhdHVyZV9tYXNrIHw9IFhT VEFURV9PUE1BU0sgfCBYU1RBVEVfWk1NIHwgWFNUQVRFX0hJX1pNTTsKLSAgICAgICAgICAgICAg ICB4c3RhdGVfc2l6ZSA9IG1heCh4c3RhdGVfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB4c3RhdGVfb2Zmc2V0c1tfWFNUQVRFX09QTUFTS10gKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhzdGF0ZV9zaXplc1tfWFNUQVRFX09QTUFTS10pOwotICAg ICAgICAgICAgICAgIHhzdGF0ZV9zaXplID0gbWF4KHhzdGF0ZV9zaXplLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhzdGF0ZV9vZmZzZXRzW19YU1RBVEVfWk1NXSArCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXRlX3NpemVzW19YU1RBVEVfWk1NXSk7 Ci0gICAgICAgICAgICAgICAgeHN0YXRlX3NpemUgPSBtYXgoeHN0YXRlX3NpemUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXRlX29mZnNldHNbX1hTVEFURV9ISV9aTU1d ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfc2l6ZXNbX1hTVEFU RV9ISV9aTU1dKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCBwLT5mZWF0LnBr dSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgeGZlYXR1cmVfbWFzayB8PSBYU1RB VEVfUEtSVTsKLSAgICAgICAgICAgICAgICB4c3RhdGVfc2l6ZSA9IG1heCh4c3RhdGVfc2l6ZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfb2Zmc2V0c1tfWFNUQVRF X1BLUlVdICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfc2l6ZXNb X1hTVEFURV9QS1JVXSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggcC0+ZXh0 ZC5sd3AgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHhmZWF0dXJlX21hc2sgfD0g WFNUQVRFX0xXUDsKLSAgICAgICAgICAgICAgICB4c3RhdGVfc2l6ZSA9IG1heCh4c3RhdGVfc2l6 ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfb2Zmc2V0c1tfWFNU QVRFX0xXUF0gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGF0ZV9zaXpl c1tfWFNUQVRFX0xXUF0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXMtPmEgPSB4 ZmVhdHVyZV9tYXNrOwotICAgICAgICAgICAgcmVzLT5kID0geGZlYXR1cmVfbWFzayA+PiAzMjsK LSAgICAgICAgICAgIHJlcy0+YyA9IHhzdGF0ZV9zaXplOwotCi0gICAgICAgICAgICAvKgotICAg ICAgICAgICAgICogQWx3YXlzIHJlYWQgQ1BVSURbMHhELDBdLkVCWCBmcm9tIGhhcmR3YXJlLCBy YXRoZXIgdGhhbiBkb21haW4KLSAgICAgICAgICAgICAqIHBvbGljeS4gIEl0IHZhcmllcyB3aXRo IGVuYWJsZWQgeHN0YXRlLCBhbmQgdGhlIGNvcnJlY3QgeGNyMCBpcwotICAgICAgICAgICAgICog aW4gY29udGV4dC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgY3B1aWRfY291bnQobGVh Ziwgc3VibGVhZiwgJnRtcCwgJnJlcy0+YiwgJnRtcCwgJnRtcCk7Ci0gICAgICAgICAgICBicmVh azsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIHJlcy0+YSA9IHAt PnhzdGF0ZS5EYTE7Ci0KLSAgICAgICAgICAgIGlmICggcC0+eHN0YXRlLnhzYXZlcyApCi0gICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBBbHdheXMg cmVhZCBDUFVJRFsweEQsMV0uRUJYIGZyb20gaGFyZHdhcmUsIHJhdGhlciB0aGFuCi0gICAgICAg ICAgICAgICAgICogZG9tYWluIHBvbGljeS4gIEl0IHZhcmllcyB3aXRoIGVuYWJsZWQgeHN0YXRl LCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICogY29ycmVjdCB4Y3IwL3hzcyBhcmUgaW4gY29u dGV4dC4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBjcHVpZF9jb3VudChs ZWFmLCBzdWJsZWFmLCAmdG1wLCAmcmVzLT5iLCAmdG1wLCAmdG1wKTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXMtPmIgPSAwOwotCi0gICAgICAg ICAgICByZXMtPmMgPSByZXMtPmQgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K LSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIDB4MDAwMDAwMGE6IC8qIEFyY2hpdGVjdHVyYWwg UGVyZm9ybWFuY2UgTW9uaXRvciBGZWF0dXJlcyAoSW50ZWwpICovCiAgICAgICAgIGlmICggYm9v dF9jcHVfZGF0YS54ODZfdmVuZG9yICE9IFg4Nl9WRU5ET1JfSU5URUwgfHwgIXZwbXVfZW5hYmxl ZCh2KSApCiAgICAgICAgIHsKQEAgLTk3MCw2ICs4MjYsNyBAQCBzdGF0aWMgdm9pZCBodm1fY3B1 aWQodWludDMyX3QgbGVhZiwgdWludDMyX3Qgc3VibGVhZiwgc3RydWN0IGNwdWlkX2xlYWYgKnJl cykKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4NzoKKyAgICBjYXNlIFhTVEFURV9DUFVJ RDoKICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CiAgICAgICAgIC8qIE5vdyBoYW5kbGVk IGluIGd1ZXN0X2NwdWlkKCkuICovCiAgICAgfQpAQCAtMTAwNywxMCArODY0LDEzIEBAIHZvaWQg Z3Vlc3RfY3B1aWQoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGxlYWYsCiAgICAgICAg ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFhTVEFURV9DUFVJRDoKLSAgICAgICAgICAgIGlm ICggc3VibGVhZiA+IEFSUkFZX1NJWkUocC0+eHN0YXRlLnJhdykgKQorICAgICAgICAgICAgaWYg KCAhcC0+YmFzaWMueHNhdmUgfHwgc3VibGVhZiA+PSBBUlJBWV9TSVpFKHAtPnhzdGF0ZS5yYXcp ICkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIC8qIEZhbGx0aHJvdWdo LiAqLworICAgICAgICAgICAgQlVHX09OKHN1YmxlYWYgPj0gQVJSQVlfU0laRShwLT54c3RhdGUu cmF3KSk7CisgICAgICAgICAgICAqcmVzID0gcC0+eHN0YXRlLnJhd1tzdWJsZWFmXTsKKyAgICAg ICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBnb3RvIGxlZ2Fj eTsKICAgICAgICAgfQpAQCAtMTA2Nyw2ICs5MjcsMzEgQEAgdm9pZCBndWVzdF9jcHVpZChjb25z dCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbGVhZiwKICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICB9CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1RBVEVfQ1BVSUQ6CisgICAgICAg IHN3aXRjaCAoIHN1YmxlYWYgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAg ICAgIGlmICggcC0+eHN0YXRlLnhzYXZlcyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgLyoKKyAgICAgICAgICAgICAgICAgKiBUT0RPOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gZm9y IFhTUyBzdGF0ZS4gIFZULXggbWFuYWdlcworICAgICAgICAgICAgICAgICAqIGhvc3QgdnMgZ3Vl c3QgTVNSX1hTUyBhdXRvbWF0aWNhbGx5LCBzbyBhcyBzb29uIGFzIHdlIHN0YXJ0CisgICAgICAg ICAgICAgICAgICogc3VwcG9ydGluZyBhbnkgWFNTIHN0YXRlcywgdGhlIHdyb25nIFhTUyB3aWxs IGJlIGluCisgICAgICAgICAgICAgICAgICogY29udGV4dC4KKyAgICAgICAgICAgICAgICAgKi8K KyAgICAgICAgICAgICAgICBCVUlMRF9CVUdfT04oWFNUQVRFX1hTQVZFU19PTkxZICE9IDApOwor CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBSZWFkIENQVUlEWzB4RCww LzFdLkVCWCBmcm9tIGhhcmR3YXJlLiAgVGhleSB2YXJ5IHdpdGgKKyAgICAgICAgICAgICAgICAg KiBlbmFibGVkIFhTVEFURSwgYW5kIGFwcHJvcHJhaXRlIFhDUjB8WFNTIGFyZSBpbiBjb250ZXh0 LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAg cmVzLT5iID0gY3B1aWRfY291bnRfZWJ4KGxlYWYsIHN1YmxlYWYpOworICAgICAgICAgICAgfQor ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg ICAgLyogRG9uZS4gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9h cmNoL3g4Ni9kb21jdGwuYwppbmRleCA3NzJjNWQyLi44ZTg0MzdkIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvZG9tY3RsLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCkBAIC0xMDUsOCAr MTA1LDEwIEBAIHN0YXRpYyBpbnQgdXBkYXRlX2RvbWFpbl9jcHVpZF9pbmZvKHN0cnVjdCBkb21h aW4gKmQsCiAgICAgICAgIGlmICggY3RsLT5pbnB1dFswXSA9PSA3ICYmCiAgICAgICAgICAgICAg Y3RsLT5pbnB1dFsxXSA+PSBBUlJBWV9TSVpFKHAtPmZlYXQucmF3KSApCiAgICAgICAgICAgICBy ZXR1cm4gMDsKKworICAgICAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShwLT54c3RhdGUucmF3 KSA8IDIpOwogICAgICAgICBpZiAoIGN0bC0+aW5wdXRbMF0gPT0gWFNUQVRFX0NQVUlEICYmCi0g ICAgICAgICAgICAgY3RsLT5pbnB1dFsxXSA+PSBBUlJBWV9TSVpFKHAtPnhzdGF0ZS5yYXcpICkK KyAgICAgICAgICAgICBjdGwtPmlucHV0WzFdICE9IDEgKSAvKiBFdmVyeXRoaW5nIGVsc2UgYXV0 b21hdGljYWxseSBjYWxjdWxhdGVkLiAqLwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg IGJyZWFrOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaAppbmRleCBiMTMwZjQ3Li41NGQwYTE3IDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCisrKyBiL3hlbi9pbmNs dWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKQEAgLTMxOSw2ICszMTksMTYgQEAgc3RhdGljIGFsd2F5 c19pbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VkeCh1bnNpZ25lZCBpbnQgb3ApCiAgICAgcmV0 dXJuIGVkeDsKIH0KIAorc3RhdGljIGFsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2Nv dW50X2VieCgKKyAgICB1bnNpZ25lZCBpbnQgbGVhZiwgdW5zaWduZWQgaW50IHN1YmxlYWYpCit7 CisgICAgdW5zaWduZWQgaW50IGVieCwgdG1wOworCisgICAgY3B1aWRfY291bnQobGVhZiwgc3Vi bGVhZiwgJnRtcCwgJmVieCwgJnRtcCwgJnRtcCk7CisKKyAgICByZXR1cm4gZWJ4OworfQorCiBz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcmVhZF9jcjAodm9pZCkKIHsKICAgICB1bnNpZ25l ZCBsb25nIGNyMDsKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==