From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 1/2] x86/hvm: Don't raise #GP behind the emulators back for CR accesses Date: Thu, 2 Mar 2017 14:59:37 +0000 Message-ID: <1488466778-10163-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: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Kevin Tian , Jan Beulich , Andrew Cooper , Paul Durrant , Jun Nakajima , Boris Ostrovsky , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org aHZtX3NldF9jcnswLDR9KCkgYXJlIHJlYWNoYWJsZSBmcm9tIHRoZSBlbXVsYXRvciwgYnV0IHVz ZQpodm1faW5qZWN0X2h3X2V4Y2VwdGlvbigpIGRpcmVjdGx5LgoKQWx0ZXIgdGhlIEFQSSB0byBt YWtlIHRoZSBjYWxsZXJzIG9mIGh2bV9zZXRfY3J7MCwzLDR9KCkgcmVzcG9uc2libGUgZm9yCnJh aXNpbmcgI0dQLCBhbmQgYXBwbHkgdGhpcyBjaGFuZ2UgdG8gYWxsIGV4aXN0aW5nIGNhbGxlcnMu CgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t PgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IFBhdWwgRHVycmFu dCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+CkNDOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamlt YUBpbnRlbC5jb20+CkNDOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ0M6IEJv cmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+CkNDOiBTdXJhdmVlIFN1 dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5pdEBhbWQuY29tPgoKSXNzdWVzIGlkZW50 aWZpZWQgd2hpY2ggSSBhbSBwdXJwb3NlZnVsbHkgbm90IGZpeGluZyBpbiB0aGlzIHBhdGNoOgoK KEkgd2lsbCB0cnkgdG8gZ2V0IGFyb3VuZCB0byB0aGVtLCBidXQgcHJvYmFibHkgbm90IGluIHRo ZSA0LjkgdGltZWZyYW1lLCBhdAp0aGlzIHBvaW50LikKCiAqIGh2bV9zZXRfY3IzKCkgZG9lc24n dCBoYW5kbGUgYmFkIDMyYml0IFBBRSBQRFBUUnMgcHJvcGVybHksIGFzIGl0IGRvZXNuJ3QKICAg YWN0dWFsbHkgaGF2ZSBhIHBhdGggd2hpY2ggcmFpc2VzICNHUC4KICogVGhlcmUgaXMgYSBsb3Qg b2YgcmVkdW5kYW5jeSBpbiBvdXIgSFZNIENSIHNldHRpbmcgcm91dGluZXMsIGJ1dCBub3QgZW5v dWdoCiAgIHRvIHRyaXZpYWxseSBkZWR1cCBhdCB0aGlzIHBvaW50LgogKiBCb3RoIG5lc3RlZCBW VC14IGFuZCBTVk0gYXJlIGxpYWJsZSByYWlzZSAjR1Agd2l0aCBMMSwgcmF0aGVyIHRoYW4gZmFp bGluZwogICB0aGUgdmlydHVhbCB2bWVudHJ5L3ZtZXhpdC4gIFRoaXMgaXMgbm90IGEgY2hhbmdl IGluIGJlaGF2aW91ciwgYnV0IGlzIGZhcgogICBtb3JlIG9idmlvdXMgbm93LgogKiBUaGUgaHZt X2RvX3Jlc3VtZSgpIHBhdGggZm9yIHZtX2V2ZW50IHByb2Nlc3NpbmcgaGFzIHRoZSBzYW1lIGJ1 ZyBhcyB0aGUKICAgTVNSIHNpZGUsIHdoZXJlIGV4Y2VwdGlvbnMgYXJlIHJhaXNlZCBhZnRlciAl cmlwIGhhcyBtb3ZlZCBmb3J3YXJkcy4gIFRoaXMKICAgaXMgYWxzbyBub3QgYSBjaGFuZ2UgaW4g YmVoYXZpb3VyLgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAgICAgICB8IDI0ICsr KysrKysrKysrKy0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICB8IDU5ICsr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L2h2bS9z dm0vbmVzdGVkc3ZtLmMgIHwgMTQgKysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2bS92bXgvdm14 LmMgICAgICAgIHwgIDcgKysrKy0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYyAgICAgICB8 IDI5ICsrKysrKysrKysrKysrKy0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQu aCB8ICA2ICsrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTAxIGluc2VydGlvbnMoKyksIDM4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jIGIveGVuL2Fy Y2gveDg2L2h2bS9lbXVsYXRlLmMKaW5kZXggOTM3ODJkMC4uMWM2NjAxMCAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRl LmMKQEAgLTE1MjAsMjMgKzE1MjAsMzcgQEAgc3RhdGljIGludCBodm1lbXVsX3dyaXRlX2NyKAog ICAgIHVuc2lnbmVkIGxvbmcgdmFsLAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0 KQogeworICAgIGludCByYzsKKwogICAgIEhWTVRSQUNFX0xPTkdfMkQoQ1JfV1JJVEUsIHJlZywg VFJDX1BBUl9MT05HKHZhbCkpOwogICAgIHN3aXRjaCAoIHJlZyApCiAgICAgewogICAgIGNhc2Ug MDoKLSAgICAgICAgcmV0dXJuIGh2bV9zZXRfY3IwKHZhbCwgMSk7CisgICAgICAgIHJjID0gaHZt X3NldF9jcjAodmFsLCAxKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIDI6CiAgICAgICAg IGN1cnJlbnQtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbMl0gPSB2YWw7Ci0gICAgICAgIHJldHVy biBYODZFTVVMX09LQVk7CisgICAgICAgIHJjID0gWDg2RU1VTF9PS0FZOworICAgICAgICBicmVh azsKKwogICAgIGNhc2UgMzoKLSAgICAgICAgcmV0dXJuIGh2bV9zZXRfY3IzKHZhbCwgMSk7Cisg ICAgICAgIHJjID0gaHZtX3NldF9jcjModmFsLCAxKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBj YXNlIDQ6Ci0gICAgICAgIHJldHVybiBodm1fc2V0X2NyNCh2YWwsIDEpOworICAgICAgICByYyA9 IGh2bV9zZXRfY3I0KHZhbCwgMSk7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKKyAg ICAgICAgcmMgPSBYODZFTVVMX1VOSEFORExFQUJMRTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog Ci0gICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOworICAgIGlmICggcmMgPT0gWDg2RU1V TF9FWENFUFRJT04gKQorICAgICAgICB4ODZfZW11bF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVs dCwgMCwgY3R4dCk7CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgaHZtZW11bF9y ZWFkX21zcigKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94 ODYvaHZtL2h2bS5jCmluZGV4IDc0MzJjNzAuLmNjZmFlNGYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpAQCAtNTI3LDE5ICs1 MjcsMjUgQEAgdm9pZCBodm1fZG9fcmVzdW1lKHN0cnVjdCB2Y3B1ICp2KQogCiAgICAgICAgIGlm ICggdy0+ZG9fd3JpdGUuY3IwICkKICAgICAgICAgewotICAgICAgICAgICAgaHZtX3NldF9jcjAo dy0+Y3IwLCAwKTsKKyAgICAgICAgICAgIGlmICggaHZtX3NldF9jcjAody0+Y3IwLCAwKSA9PSBY ODZFTVVMX0VYQ0VQVElPTiApCisgICAgICAgICAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRp b24oVFJBUF9ncF9mYXVsdCwgMCk7CisKICAgICAgICAgICAgIHctPmRvX3dyaXRlLmNyMCA9IDA7 CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIHctPmRvX3dyaXRlLmNyNCApCiAgICAgICAgIHsK LSAgICAgICAgICAgIGh2bV9zZXRfY3I0KHctPmNyNCwgMCk7CisgICAgICAgICAgICBpZiAoIGh2 bV9zZXRfY3I0KHctPmNyNCwgMCkgPT0gWDg2RU1VTF9FWENFUFRJT04gKQorICAgICAgICAgICAg ICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOworCiAgICAgICAg ICAgICB3LT5kb193cml0ZS5jcjQgPSAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCB3LT5k b193cml0ZS5jcjMgKQogICAgICAgICB7Ci0gICAgICAgICAgICBodm1fc2V0X2NyMyh3LT5jcjMs IDApOworICAgICAgICAgICAgaWYgKCBodm1fc2V0X2NyMyh3LT5jcjMsIDApID09IFg4NkVNVUxf RVhDRVBUSU9OICkKKyAgICAgICAgICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQ X2dwX2ZhdWx0LCAwKTsKKwogICAgICAgICAgICAgdy0+ZG9fd3JpdGUuY3IzID0gMDsKICAgICAg ICAgfQogICAgIH0KQEAgLTIwNjgsNiArMjA3NCw3IEBAIGludCBodm1fbW92X3RvX2NyKHVuc2ln bmVkIGludCBjciwgdW5zaWduZWQgaW50IGdwcikKIHsKICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9 IGN1cnJlbnQ7CiAgICAgdW5zaWduZWQgbG9uZyB2YWwsICpyZWc7CisgICAgaW50IHJjOwogCiAg ICAgaWYgKCAocmVnID0gZGVjb2RlX3JlZ2lzdGVyKGdwciwgZ3Vlc3RfY3B1X3VzZXJfcmVncygp LCAwKSkgPT0gTlVMTCApCiAgICAgewpAQCAtMjA4MiwxNiArMjA4OSwyMCBAQCBpbnQgaHZtX21v dl90b19jcih1bnNpZ25lZCBpbnQgY3IsIHVuc2lnbmVkIGludCBncHIpCiAgICAgc3dpdGNoICgg Y3IgKQogICAgIHsKICAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiBodm1fc2V0X2NyMCh2YWws IDEpOworICAgICAgICByYyA9IGh2bV9zZXRfY3IwKHZhbCwgMSk7CisgICAgICAgIGJyZWFrOwog CiAgICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gaHZtX3NldF9jcjModmFsLCAxKTsKKyAgICAg ICAgcmMgPSBodm1fc2V0X2NyMyh2YWwsIDEpOworICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug NDoKLSAgICAgICAgcmV0dXJuIGh2bV9zZXRfY3I0KHZhbCwgMSk7CisgICAgICAgIHJjID0gaHZt X3NldF9jcjQodmFsLCAxKTsKKyAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDg6CiAgICAgICAg IHZsYXBpY19zZXRfcmVnKHZjcHVfdmxhcGljKGN1cnIpLCBBUElDX1RBU0tQUkksICgodmFsICYg MHgwZikgPDwgNCkpOworICAgICAgICByYyA9IFg4NkVNVUxfT0tBWTsKICAgICAgICAgYnJlYWs7 CiAKICAgICBkZWZhdWx0OgpAQCAtMjA5OSw3ICsyMTEwLDEwIEBAIGludCBodm1fbW92X3RvX2Ny KHVuc2lnbmVkIGludCBjciwgdW5zaWduZWQgaW50IGdwcikKICAgICAgICAgZ290byBleGl0X2Fu ZF9jcmFzaDsKICAgICB9CiAKLSAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworICAgIGlmICggcmMg PT0gWDg2RU1VTF9FWENFUFRJT04gKQorICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihU UkFQX2dwX2ZhdWx0LCAwKTsKKworICAgIHJldHVybiByYzsKIAogIGV4aXRfYW5kX2NyYXNoOgog ICAgIGRvbWFpbl9jcmFzaChjdXJyLT5kb21haW4pOwpAQCAtMjE5OSw3ICsyMjEzLDcgQEAgaW50 IGh2bV9zZXRfY3IwKHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpCiAgICAg ICAgIEhWTV9EQkdfTE9HKERCR19MRVZFTF8xLAogICAgICAgICAgICAgICAgICAgICAiR3Vlc3Qg YXR0ZW1wdHMgdG8gc2V0IHVwcGVyIDMyIGJpdHMgaW4gQ1IwOiAlbHgiLAogICAgICAgICAgICAg ICAgICAgICB2YWx1ZSk7Ci0gICAgICAgIGdvdG8gZ3BmOworICAgICAgICByZXR1cm4gWDg2RU1V TF9FWENFUFRJT047CiAgICAgfQogCiAgICAgdmFsdWUgJj0gfkhWTV9DUjBfR1VFU1RfUkVTRVJW RURfQklUUzsKQEAgLTIyMDksNyArMjIyMyw3IEBAIGludCBodm1fc2V0X2NyMCh1bnNpZ25lZCBs b25nIHZhbHVlLCBib29sX3QgbWF5X2RlZmVyKQogCiAgICAgaWYgKCAhbmVzdGVkaHZtX3Ztc3dp dGNoX2luX3Byb2dyZXNzKHYpICYmCiAgICAgICAgICAodmFsdWUgJiAoWDg2X0NSMF9QRSB8IFg4 Nl9DUjBfUEcpKSA9PSBYODZfQ1IwX1BHICkKLSAgICAgICAgZ290byBncGY7CisgICAgICAgIHJl dHVybiBYODZFTVVMX0VYQ0VQVElPTjsKIAogICAgIC8qIEEgcHZoIGlzIG5vdCBleHBlY3RlZCB0 byBjaGFuZ2UgdG8gcmVhbCBtb2RlLiAqLwogICAgIGlmICggaXNfcHZoX2RvbWFpbihkKSAmJgpA QCAtMjIxNyw3ICsyMjMxLDcgQEAgaW50IGh2bV9zZXRfY3IwKHVuc2lnbmVkIGxvbmcgdmFsdWUs IGJvb2xfdCBtYXlfZGVmZXIpCiAgICAgewogICAgICAgICBwcmludGsoWEVOTE9HX0dfV0FSTklO RwogICAgICAgICAgICAgICAgIlBWSCBhdHRlbXB0aW5nIHRvIHR1cm4gb2ZmIFBFL1BHLiBDUjA6 JWx4XG4iLCB2YWx1ZSk7Ci0gICAgICAgIGdvdG8gZ3BmOworICAgICAgICByZXR1cm4gWDg2RU1V TF9FWENFUFRJT047CiAgICAgfQogCiAgICAgaWYgKCBtYXlfZGVmZXIgJiYgdW5saWtlbHkodi0+ ZG9tYWluLT5hcmNoLm1vbml0b3Iud3JpdGVfY3RybHJlZ19lbmFibGVkICYKQEAgLTIyNDMsNyAr MjI1Nyw3IEBAIGludCBodm1fc2V0X2NyMCh1bnNpZ25lZCBsb25nIHZhbHVlLCBib29sX3QgbWF5 X2RlZmVyKQogICAgICAgICAgICAgICAgICAhbmVzdGVkaHZtX3Ztc3dpdGNoX2luX3Byb2dyZXNz KHYpICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBIVk1fREJHX0xPRyhEQkdfTEVW RUxfMSwgIkVuYWJsZSBwYWdpbmcgYmVmb3JlIFBBRSBlbmFibGUiKTsKLSAgICAgICAgICAgICAg ICBnb3RvIGdwZjsKKyAgICAgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAg ICAgICAgICAgICB9CiAgICAgICAgICAgICBIVk1fREJHX0xPRyhEQkdfTEVWRUxfMSwgIkVuYWJs aW5nIGxvbmcgbW9kZSIpOwogICAgICAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9lZmVy IHw9IEVGRVJfTE1BOwpAQCAtMjI3Niw3ICsyMjkwLDcgQEAgaW50IGh2bV9zZXRfY3IwKHVuc2ln bmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAg IEhWTV9EQkdfTE9HKERCR19MRVZFTF8xLCAiR3Vlc3QgYXR0ZW1wdHMgdG8gY2xlYXIgQ1IwLlBH ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGlsZSBDUjQuUENJREU9MSIpOwotICAgICAg ICAgICAgZ290byBncGY7CisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAg ICAgICAgIH0KIAogICAgICAgICAvKiBXaGVuIENSMC5QRyBpcyBjbGVhcmVkLCBMTUEgaXMgY2xl YXJlZCBpbW1lZGlhdGVseS4gKi8KQEAgLTIzMTAsMTAgKzIzMjQsNiBAQCBpbnQgaHZtX3NldF9j cjAodW5zaWduZWQgbG9uZyB2YWx1ZSwgYm9vbF90IG1heV9kZWZlcikKICAgICB9CiAKICAgICBy ZXR1cm4gWDg2RU1VTF9PS0FZOwotCi0gZ3BmOgotICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9u KFRSQVBfZ3BfZmF1bHQsIDApOwotICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKIH0KIAog aW50IGh2bV9zZXRfY3IzKHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpCkBA IC0yMzczLDcgKzIzODMsNyBAQCBpbnQgaHZtX3NldF9jcjQodW5zaWduZWQgbG9uZyB2YWx1ZSwg Ym9vbF90IG1heV9kZWZlcikKICAgICAgICAgSFZNX0RCR19MT0coREJHX0xFVkVMXzEsCiAgICAg ICAgICAgICAgICAgICAgICJHdWVzdCBhdHRlbXB0cyB0byBzZXQgcmVzZXJ2ZWQgYml0IGluIENS NDogJWx4IiwKICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwotICAgICAgICBnb3RvIGdwZjsK KyAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogICAgIH0KIAogICAgIGlmICggISh2 YWx1ZSAmIFg4Nl9DUjRfUEFFKSApCkBAIC0yMzgyLDEyICsyMzkyLDEyIEBAIGludCBodm1fc2V0 X2NyNCh1bnNpZ25lZCBsb25nIHZhbHVlLCBib29sX3QgbWF5X2RlZmVyKQogICAgICAgICB7CiAg ICAgICAgICAgICBIVk1fREJHX0xPRyhEQkdfTEVWRUxfMSwgIkd1ZXN0IGNsZWFyZWQgQ1I0LlBB RSB3aGlsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiRUZFUi5MTUEgaXMgc2V0Iik7Ci0g ICAgICAgICAgICBnb3RvIGdwZjsKKyAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElP TjsKICAgICAgICAgfQogICAgICAgICBpZiAoIGlzX3B2aF92Y3B1KHYpICkKICAgICAgICAgewog ICAgICAgICAgICAgSFZNX0RCR19MT0coREJHX0xFVkVMXzEsICIzMi1iaXQgUFZIIGd1ZXN0IGNs ZWFyZWQgQ1I0LlBBRSIpOwotICAgICAgICAgICAgZ290byBncGY7CisgICAgICAgICAgICByZXR1 cm4gWDg2RU1VTF9FWENFUFRJT047CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIzOTksNyArMjQw OSw3IEBAIGludCBodm1fc2V0X2NyNCh1bnNpZ25lZCBsb25nIHZhbHVlLCBib29sX3QgbWF5X2Rl ZmVyKQogICAgIHsKICAgICAgICAgSFZNX0RCR19MT0coREJHX0xFVkVMXzEsICJHdWVzdCBhdHRl bXB0cyB0byBjaGFuZ2UgQ1I0LlBDSURFIGZyb20gIgogICAgICAgICAgICAgICAgICAgICAiMCB0 byAxIHdoaWxlIGVpdGhlciBFRkVSLkxNQT0wIG9yIENSM1sxMTowXSE9MDAwSCIpOwotICAgICAg ICBnb3RvIGdwZjsKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogICAgIH0KIAog ICAgIGlmICggbWF5X2RlZmVyICYmIHVubGlrZWx5KHYtPmRvbWFpbi0+YXJjaC5tb25pdG9yLndy aXRlX2N0cmxyZWdfZW5hYmxlZCAmCkBAIC0yNDM0LDEwICsyNDQ0LDYgQEAgaW50IGh2bV9zZXRf Y3I0KHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpCiAgICAgfQogCiAgICAg cmV0dXJuIFg4NkVNVUxfT0tBWTsKLQotIGdwZjoKLSAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlv bihUUkFQX2dwX2ZhdWx0LCAwKTsKLSAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiB9CiAK IGJvb2xfdCBodm1fdmlydHVhbF90b19saW5lYXJfYWRkcigKQEAgLTMwMjAsNyArMzAyNiwxMCBA QCB2b2lkIGh2bV90YXNrX3N3aXRjaCgKICAgICBpZiAoIGh2bV9sb2FkX3NlZ21lbnRfc2VsZWN0 b3IoeDg2X3NlZ19sZHRyLCB0c3MubGR0LCAwKSApCiAgICAgICAgIGdvdG8gb3V0OwogCi0gICAg aWYgKCBodm1fc2V0X2NyMyh0c3MuY3IzLCAxKSApCisgICAgcmMgPSBodm1fc2V0X2NyMyh0c3Mu Y3IzLCAxKTsKKyAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICkKKyAgICAgICAgaHZt X2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CisgICAgaWYgKCByYyAhPSBY ODZFTVVMX09LQVkgKQogICAgICAgICBnb3RvIG91dDsKIAogICAgIHJlZ3MtPnJpcCAgICA9IHRz cy5laXA7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9uZXN0ZWRzdm0uYyBiL3hl bi9hcmNoL3g4Ni9odm0vc3ZtL25lc3RlZHN2bS5jCmluZGV4IGY3YjdhZGEuLmQ0ZmM4MWYgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL25lc3RlZHN2bS5jCisrKyBiL3hlbi9hcmNo L3g4Ni9odm0vc3ZtL25lc3RlZHN2bS5jCkBAIC0yODYsNiArMjg2LDggQEAgc3RhdGljIGludCBu c3ZtX3ZjcHVfaG9zdHJlc3RvcmUoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBjcHVfdXNlcl9yZWdz ICpyZWdzKQogICAgIC8qIENSNCAqLwogICAgIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbNF0g PSBuMXZtY2ItPl9jcjQ7CiAgICAgcmMgPSBodm1fc2V0X2NyNChuMXZtY2ItPl9jcjQsIDEpOwor ICAgIGlmICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQorICAgICAgICBodm1faW5qZWN0X2h3 X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKICAgICBpZiAocmMgIT0gWDg2RU1VTF9PS0FZ KQogICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiaHZtX3NldF9jcjQgZmFpbGVkLCByYzog JXVcbiIsIHJjKTsKIApAQCAtMjk1LDYgKzI5Nyw4IEBAIHN0YXRpYyBpbnQgbnN2bV92Y3B1X2hv c3RyZXN0b3JlKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAg ICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzBdID0gbjF2bWNiLT5fY3IwIHwgWDg2X0NSMF9Q RTsKICAgICBuMXZtY2ItPnJmbGFncyAmPSB+WDg2X0VGTEFHU19WTTsKICAgICByYyA9IGh2bV9z ZXRfY3IwKG4xdm1jYi0+X2NyMCB8IFg4Nl9DUjBfUEUsIDEpOworICAgIGlmICggcmMgPT0gWDg2 RU1VTF9FWENFUFRJT04gKQorICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dw X2ZhdWx0LCAwKTsKICAgICBpZiAocmMgIT0gWDg2RU1VTF9PS0FZKQogICAgICAgICBnZHByaW50 ayhYRU5MT0dfRVJSLCAiaHZtX3NldF9jcjAgZmFpbGVkLCByYzogJXVcbiIsIHJjKTsKICAgICBz dm0tPm5zX2NyMCA9IHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbMF07CkBAIC0zMjEsNiArMzI1 LDggQEAgc3RhdGljIGludCBuc3ZtX3ZjcHVfaG9zdHJlc3RvcmUoc3RydWN0IHZjcHUgKnYsIHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICAvKiBodm1fc2V0X2NyMygpIGJlbG93 IHNldHMgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclszXSBmb3IgdXMuICovCiAgICAgfQogICAg IHJjID0gaHZtX3NldF9jcjMobjF2bWNiLT5fY3IzLCAxKTsKKyAgICBpZiAoIHJjID09IFg4NkVN VUxfRVhDRVBUSU9OICkKKyAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9m YXVsdCwgMCk7CiAgICAgaWYgKHJjICE9IFg4NkVNVUxfT0tBWSkKICAgICAgICAgZ2RwcmludGso WEVOTE9HX0VSUiwgImh2bV9zZXRfY3IzIGZhaWxlZCwgcmM6ICV1XG4iLCByYyk7CiAKQEAgLTU0 OCw2ICs1NTQsOCBAQCBzdGF0aWMgaW50IG5zdm1fdm1jYl9wcmVwYXJlNHZtcnVuKHN0cnVjdCB2 Y3B1ICp2LCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAvKiBDUjQgKi8KICAgICB2 LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzRdID0gbnNfdm1jYi0+X2NyNDsKICAgICByYyA9IGh2 bV9zZXRfY3I0KG5zX3ZtY2ItPl9jcjQsIDEpOworICAgIGlmICggcmMgPT0gWDg2RU1VTF9FWENF UFRJT04gKQorICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAw KTsKICAgICBpZiAocmMgIT0gWDg2RU1VTF9PS0FZKQogICAgICAgICBnZHByaW50ayhYRU5MT0df RVJSLCAiaHZtX3NldF9jcjQgZmFpbGVkLCByYzogJXVcbiIsIHJjKTsKIApAQCAtNTU2LDYgKzU2 NCw4IEBAIHN0YXRpYyBpbnQgbnN2bV92bWNiX3ByZXBhcmU0dm1ydW4oc3RydWN0IHZjcHUgKnYs IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIGNyMCA9IG5lc3RlZHN2bV9mcHVfdm1l bnRyeShzdm0tPm5zX2NyMCwgbnNfdm1jYiwgbjF2bWNiLCBuMnZtY2IpOwogICAgIHYtPmFyY2gu aHZtX3ZjcHUuZ3Vlc3RfY3JbMF0gPSBuc192bWNiLT5fY3IwOwogICAgIHJjID0gaHZtX3NldF9j cjAoY3IwLCAxKTsKKyAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICkKKyAgICAgICAg aHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgaWYgKHJjICE9 IFg4NkVNVUxfT0tBWSkKICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwgImh2bV9zZXRfY3Iw IGZhaWxlZCwgcmM6ICV1XG4iLCByYyk7CiAKQEAgLTU3Miw2ICs1ODIsOCBAQCBzdGF0aWMgaW50 IG5zdm1fdm1jYl9wcmVwYXJlNHZtcnVuKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncykKIAogICAgICAgICAvKiBodm1fc2V0X2NyMygpIGJlbG93IHNldHMgdi0+YXJj aC5odm1fdmNwdS5ndWVzdF9jclszXSBmb3IgdXMuICovCiAgICAgICAgIHJjID0gaHZtX3NldF9j cjMobnNfdm1jYi0+X2NyMywgMSk7CisgICAgICAgIGlmICggcmMgPT0gWDg2RU1VTF9FWENFUFRJ T04gKQorICAgICAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwg MCk7CiAgICAgICAgIGlmIChyYyAhPSBYODZFTVVMX09LQVkpCiAgICAgICAgICAgICBnZHByaW50 ayhYRU5MT0dfRVJSLCAiaHZtX3NldF9jcjMgZmFpbGVkLCByYzogJXVcbiIsIHJjKTsKICAgICB9 IGVsc2UgaWYgKHBhZ2luZ19tb2RlX2hhcCh2LT5kb21haW4pKSB7CkBAIC01ODQsNiArNTk2LDgg QEAgc3RhdGljIGludCBuc3ZtX3ZtY2JfcHJlcGFyZTR2bXJ1bihzdHJ1Y3QgdmNwdSAqdiwgc3Ry dWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICAgICAqLwogICAgICAgICAvKiBodm1fc2V0 X2NyMygpIGJlbG93IHNldHMgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclszXSBmb3IgdXMuICov CiAgICAgICAgIHJjID0gaHZtX3NldF9jcjMobnNfdm1jYi0+X2NyMywgMSk7CisgICAgICAgIGlm ICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQorICAgICAgICAgICAgaHZtX2luamVjdF9od19l eGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgICAgIGlmIChyYyAhPSBYODZFTVVMX09L QVkpCiAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiaHZtX3NldF9jcjMgZmFpbGVk LCByYzogJXVcbiIsIHJjKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2h2bS92bXgvdm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwppbmRleCA1YjE3MTdk Li5jMmNkMTJkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYworKysgYi94 ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwpAQCAtMjQ1OSwxMyArMjQ1OSwxOCBAQCBzdGF0aWMg aW50IHZteF9jcl9hY2Nlc3ModW5zaWduZWQgbG9uZyBleGl0X3F1YWxpZmljYXRpb24pCiAgICAg fQogICAgIGNhc2UgVk1YX0NPTlRST0xfUkVHX0FDQ0VTU19UWVBFX0xNU1c6IHsKICAgICAgICAg dW5zaWduZWQgbG9uZyB2YWx1ZSA9IGN1cnItPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbMF07Cisg ICAgICAgIGludCByYzsKIAogICAgICAgICAvKiBMTVNXIGNhbiAoMSkgc2V0IFBFOyAoMikgc2V0 IG9yIGNsZWFyIE1QLCBFTSwgYW5kIFRTLiAqLwogICAgICAgICB2YWx1ZSA9ICh2YWx1ZSAmIH4o WDg2X0NSMF9NUHxYODZfQ1IwX0VNfFg4Nl9DUjBfVFMpKSB8CiAgICAgICAgICAgICAgICAgKFZN WF9DT05UUk9MX1JFR19BQ0NFU1NfREFUQShleGl0X3F1YWxpZmljYXRpb24pICYKICAgICAgICAg ICAgICAgICAgKFg4Nl9DUjBfUEV8WDg2X0NSMF9NUHxYODZfQ1IwX0VNfFg4Nl9DUjBfVFMpKTsK ICAgICAgICAgSFZNVFJBQ0VfTE9OR18xRChMTVNXLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBo dm1fc2V0X2NyMCh2YWx1ZSwgMSk7CisKKyAgICAgICAgaWYgKCAocmMgPSBodm1fc2V0X2NyMCh2 YWx1ZSwgMSkpID09IFg4NkVNVUxfRVhDRVBUSU9OICkKKyAgICAgICAgICAgIGh2bV9pbmplY3Rf aHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOworCisgICAgICAgIHJldHVybiByYzsKICAg ICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgQlVHKCk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL3ZteC92dm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMKaW5kZXggMGFl ZjdhNy4uOGE0ODZmNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCisr KyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYwpAQCAtMTA0Niw5ICsxMDQ2LDE4IEBAIHN0 YXRpYyB2b2lkIGxvYWRfc2hhZG93X2d1ZXN0X3N0YXRlKHN0cnVjdCB2Y3B1ICp2KQogCiAgICAg bnZjcHUtPmd1ZXN0X2NyWzBdID0gZ2V0X3Z2bWNzKHYsIENSMF9SRUFEX1NIQURPVyk7CiAgICAg bnZjcHUtPmd1ZXN0X2NyWzRdID0gZ2V0X3Z2bWNzKHYsIENSNF9SRUFEX1NIQURPVyk7Ci0gICAg aHZtX3NldF9jcjAoZ2V0X3Z2bWNzKHYsIEdVRVNUX0NSMCksIDEpOwotICAgIGh2bV9zZXRfY3I0 KGdldF92dm1jcyh2LCBHVUVTVF9DUjQpLCAxKTsKLSAgICBodm1fc2V0X2NyMyhnZXRfdnZtY3Mo diwgR1VFU1RfQ1IzKSwgMSk7CisKKyAgICByYyA9IGh2bV9zZXRfY3IwKGdldF92dm1jcyh2LCBH VUVTVF9DUjApLCAxKTsKKyAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICkKKyAgICAg ICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CisKKyAgICByYyA9 IGh2bV9zZXRfY3I0KGdldF92dm1jcyh2LCBHVUVTVF9DUjQpLCAxKTsKKyAgICBpZiAoIHJjID09 IFg4NkVNVUxfRVhDRVBUSU9OICkKKyAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJB UF9ncF9mYXVsdCwgMCk7CisKKyAgICByYyA9IGh2bV9zZXRfY3IzKGdldF92dm1jcyh2LCBHVUVT VF9DUjMpLCAxKTsKKyAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICkKKyAgICAgICAg aHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAKICAgICBjb250cm9s ID0gZ2V0X3Z2bWNzKHYsIFZNX0VOVFJZX0NPTlRST0xTKTsKICAgICBpZiAoIGNvbnRyb2wgJiBW TV9FTlRSWV9MT0FEX0dVRVNUX1BBVCApCkBAIC0xMjM3LDkgKzEyNDYsMTcgQEAgc3RhdGljIHZv aWQgbG9hZF92dm1jc19ob3N0X3N0YXRlKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICBfX3Ztd3Jp dGUodm1jc19oMmdfZmllbGRbaV0uZ3Vlc3RfZmllbGQsIHIpOwogICAgIH0KIAotICAgIGh2bV9z ZXRfY3IwKGdldF92dm1jcyh2LCBIT1NUX0NSMCksIDEpOwotICAgIGh2bV9zZXRfY3I0KGdldF92 dm1jcyh2LCBIT1NUX0NSNCksIDEpOwotICAgIGh2bV9zZXRfY3IzKGdldF92dm1jcyh2LCBIT1NU X0NSMyksIDEpOworICAgIHJjID0gaHZtX3NldF9jcjAoZ2V0X3Z2bWNzKHYsIEhPU1RfQ1IwKSwg MSk7CisgICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiApCisgICAgICAgIGh2bV9pbmpl Y3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOworCisgICAgcmMgPSBodm1fc2V0X2Ny NChnZXRfdnZtY3ModiwgSE9TVF9DUjQpLCAxKTsKKyAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhD RVBUSU9OICkKKyAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwg MCk7CisKKyAgICByYyA9IGh2bV9zZXRfY3IzKGdldF92dm1jcyh2LCBIT1NUX0NSMyksIDEpOwor ICAgIGlmICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQorICAgICAgICBodm1faW5qZWN0X2h3 X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKIAogICAgIGNvbnRyb2wgPSBnZXRfdnZtY3Mo diwgVk1fRVhJVF9DT05UUk9MUyk7CiAgICAgaWYgKCBjb250cm9sICYgVk1fRVhJVF9MT0FEX0hP U1RfUEFUICkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQuaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQuaAppbmRleCBjYjQxMzY0Li42MzJlYjkw IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdXBwb3J0LmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vc3VwcG9ydC5oCkBAIC0xMTksNyArMTE5LDExIEBAIGludCBf X211c3RfY2hlY2sgaHZtX2hhbmRsZV94c2V0YnYodTMyIGluZGV4LCB1NjQgbmV3X2J2KTsKIAog dm9pZCBodm1fc2hhZG93X2hhbmRsZV9jZChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyB2 YWx1ZSk7CiAKLS8qIFRoZXNlIGZ1bmN0aW9ucyBhbGwgcmV0dXJuIFg4NkVNVUwgcmV0dXJuIGNv ZGVzLiAqLworLyoKKyAqIFRoZXNlIGZ1bmN0aW9ucyBhbGwgcmV0dXJuIFg4NkVNVUwgcmV0dXJu IGNvZGVzLiAgRm9yIGh2bV9zZXRfKigpLCB0aGUKKyAqIGNhbGxlciBpcyByZXNwb25zaWJsZSBm b3IgaW5qZWN0aW5nICNHUFswXSBpZiBYODZFTVVMX0VYQ0VQVElPTiBpcworICogcmV0dXJuZWQu CisgKi8KIGludCBodm1fc2V0X2VmZXIodWludDY0X3QgdmFsdWUpOwogaW50IGh2bV9zZXRfY3Iw KHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpOwogaW50IGh2bV9zZXRfY3Iz KHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpOwotLSAKMi4xLjQKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK