From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v4 01/27] x86: factor out common PV emulation code Date: Thu, 8 Jun 2017 18:11:37 +0100 Message-ID: <20170608171203.20416-2-wei.liu2@citrix.com> References: <20170608171203.20416-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJ0yh-0004r3-JC for xen-devel@lists.xenproject.org; Thu, 08 Jun 2017 17:12:11 +0000 In-Reply-To: <20170608171203.20416-1-wei.liu2@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 , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org V2UncmUgZ29pbmcgdG8gc3BsaXQgUFYgZW11bGF0aW9uIGNvZGUgaW50byBzZXZlcmFsIGZpbGVz LiBUaGlzIHBhdGNoCmV4dHJhY3RzIHRoZSBmdW5jdGlvbnMgbmVlZGVkIGJ5IHRoZW0gaW50byBh IGRlZGljYXRlZCBmaWxlLgoKVGhlIGZ1bmN0aW9ucyBhcmUgbm93IHByZWZpeGVkIHdpdGggInB2 X2VtdWxfIiBhbmQgZXhwb3J0ZWQgdmlhIGEKbG9jYWwgaGVhZGVyIGZpbGUuCgpXaGlsZSBhdCBp dCwgY2hhbmdlIGJvb2xfdCB0byBib29sLgoKU2lnbmVkLW9mZi1ieTogV2VpIExpdSA8d2VpLmxp dTJAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvcHYvTWFrZWZpbGUgIHwgIDEgKwogeGVu L2FyY2gveDg2L3B2L2VtdWxhdGUuYyB8IDk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYvcHYvZW11bGF0ZS5oIHwgMTAgKysrKysK IHhlbi9hcmNoL3g4Ni90cmFwcy5jICAgICAgfCA5NSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyks IDc4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9wdi9lbXVs YXRlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYvcHYvZW11bGF0ZS5oCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L3B2L01ha2Vm aWxlCmluZGV4IDQ4OWE5ZjU5Y2IuLjU2NDIwMmNiYjcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9wdi9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvcHYvTWFrZWZpbGUKQEAgLTMsMyArMyw0 IEBAIG9iai15ICs9IHRyYXBzLm8KIAogb2JqLWJpbi15ICs9IGRvbTBfYnVpbGQuaW5pdC5vCiBv YmoteSArPSBkb21haW4ubworb2JqLXkgKz0gZW11bGF0ZS5vCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvcHYvZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L3B2L2VtdWxhdGUuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41NzUwYzc2OTliCi0tLSAvZGV2L251bGwKKysr IGIveGVuL2FyY2gveDg2L3B2L2VtdWxhdGUuYwpAQCAtMCwwICsxLDk4IEBACisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKiBhcmNoL3g4Ni9wdi9lbXVsYXRlLmMKKyAqCisgKiBDb21tb24gUFYg ZW11bGF0aW9uIGNvZGUKKyAqCisgKiBNb2RpZmljYXRpb25zIHRvIExpbnV4IG9yaWdpbmFsIGFy ZSBjb3B5cmlnaHQgKGMpIDIwMDItMjAwNCwgSyBBIEZyYXNlcgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorCisj aW5jbHVkZSA8YXNtL2RlYnVncmVnLmg+CisKKyNpbmNsdWRlICJlbXVsYXRlLmgiCisKK2ludCBw dl9lbXVsX3JlYWRfZGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgc2VsLCBjb25zdCBzdHJ1Y3QgdmNw dSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpiYXNlLCB1 bnNpZ25lZCBsb25nICpsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgKmFyLCBib29sIGluc25fZmV0Y2gpCit7CisgICAgc3RydWN0IGRlc2Nfc3RydWN0IGRl c2M7CisKKyAgICBpZiAoIHNlbCA8IDQpCisgICAgICAgIGRlc2MuYiA9IGRlc2MuYSA9IDA7Cisg ICAgZWxzZSBpZiAoIF9fZ2V0X3VzZXIoZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAo Y29uc3Qgc3RydWN0IGRlc2Nfc3RydWN0ICopKCEoc2VsICYgNCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gR0RUX1ZJUlRfU1RBUlQodikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog TERUX1ZJUlRfU1RBUlQodikpCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAoc2VsID4+IDMp KSApCisgICAgICAgIHJldHVybiAwOworICAgIGlmICggIWluc25fZmV0Y2ggKQorICAgICAgICBk ZXNjLmIgJj0gfl9TRUdNRU5UX0w7CisKKyAgICAqYXIgPSBkZXNjLmIgJiAweDAwZjBmZjAwOwor ICAgIGlmICggIShkZXNjLmIgJiBfU0VHTUVOVF9MKSApCisgICAgeworICAgICAgICAqYmFzZSA9 ICgoZGVzYy5hID4+IDE2KSArICgoZGVzYy5iICYgMHhmZikgPDwgMTYpICsKKyAgICAgICAgICAg ICAgICAgKGRlc2MuYiAmIDB4ZmYwMDAwMDApKTsKKyAgICAgICAgKmxpbWl0ID0gKGRlc2MuYSAm IDB4ZmZmZikgfCAoZGVzYy5iICYgMHgwMDBmMDAwMCk7CisgICAgICAgIGlmICggZGVzYy5iICYg X1NFR01FTlRfRyApCisgICAgICAgICAgICAqbGltaXQgPSAoKCpsaW1pdCArIDEpIDw8IDEyKSAt IDE7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBpZiAoIHNlbCA+IDMgKQorICAgICAgICB7Cisg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgYSwgbDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg dmFsaWQ7CisKKyAgICAgICAgICAgIGFzbSB2b2xhdGlsZSAoCisgICAgICAgICAgICAgICAgImxh cmwgJTIsJTAgOyBzZXR6ICUxIgorICAgICAgICAgICAgICAgIDogIj1yIiAoYSksICI9cW0iICh2 YWxpZCkgOiAicm0iIChzZWwpKTsKKyAgICAgICAgICAgIEJVR19PTih2YWxpZCAmJiAoKGEgJiAw eDAwZjBmZjAwKSAhPSAqYXIpKTsKKyAgICAgICAgICAgIGFzbSB2b2xhdGlsZSAoCisgICAgICAg ICAgICAgICAgImxzbGwgJTIsJTAgOyBzZXR6ICUxIgorICAgICAgICAgICAgICAgIDogIj1yIiAo bCksICI9cW0iICh2YWxpZCkgOiAicm0iIChzZWwpKTsKKyAgICAgICAgICAgIEJVR19PTih2YWxp ZCAmJiAobCAhPSAqbGltaXQpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIGVsc2UK KyAgICB7CisgICAgICAgICpiYXNlID0gMFVMOworICAgICAgICAqbGltaXQgPSB+MFVMOworICAg IH0KKworICAgIHJldHVybiAxOworfQorCit2b2lkIHB2X2VtdWxfaW5zdHJ1Y3Rpb25fZG9uZShz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyByaXApCit7CisgICAgcmVn cy0+cmlwID0gcmlwOworICAgIHJlZ3MtPmVmbGFncyAmPSB+WDg2X0VGTEFHU19SRjsKKyAgICBp ZiAoIHJlZ3MtPmVmbGFncyAmIFg4Nl9FRkxBR1NfVEYgKQorICAgIHsKKyAgICAgICAgY3VycmVu dC0+YXJjaC5kZWJ1Z3JlZ1s2XSB8PSBEUl9TVEVQIHwgRFJfU1RBVFVTX1JFU0VSVkVEX09ORTsK KyAgICAgICAgcHZfaW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2RlYnVnLCBYODZfRVZFTlRfTk9f RUMpOworICAgIH0KK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAq IGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6 IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvcHYvZW11bGF0ZS5oIGIveGVuL2FyY2gveDg2L3B2L2VtdWxhdGUuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iMmIxMTkyZDQ4Ci0tLSAvZGV2L251 bGwKKysrIGIveGVuL2FyY2gveDg2L3B2L2VtdWxhdGUuaApAQCAtMCwwICsxLDEwIEBACisjaWZu ZGVmIF9fUFZfRU1VTEFURV9IX18KKyNkZWZpbmUgX19QVl9FTVVMQVRFX0hfXworCitpbnQgcHZf ZW11bF9yZWFkX2Rlc2NyaXB0b3IodW5zaWduZWQgaW50IHNlbCwgY29uc3Qgc3RydWN0IHZjcHUg KnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqYmFzZSwgdW5z aWduZWQgbG9uZyAqbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50ICphciwgYm9vbCBpbnNuX2ZldGNoKTsKKwordm9pZCBwdl9lbXVsX2luc3RydWN0aW9uX2Rv bmUoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgcmlwKTsKKworI2Vu ZGlmIC8qIF9fUFZfRU1VTEFURV9IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFw cy5jIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKaW5kZXggNTJlNzQwZjExZi4uZGNjNDhmOTg2MCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3RyYXBzLmMKKysrIGIveGVuL2FyY2gveDg2L3RyYXBz LmMKQEAgLTc4LDYgKzc4LDggQEAKICNpbmNsdWRlIDxhc20vY3B1aWQuaD4KICNpbmNsdWRlIDx4 c20veHNtLmg+CiAKKyNpbmNsdWRlICJwdi9lbXVsYXRlLmgiCisKIC8qCiAgKiBvcHRfbm1pOiBv bmUgb2YgJ2lnbm9yZScsICdkb20wJywgb3IgJ2ZhdGFsJy4KICAqICBmYXRhbDogIFhlbiBwcmlu dHMgZGlhZ25vc3RpYyBtZXNzYWdlIGFuZCB0aGVuIGhhbmdzLgpAQCAtNjk0LDE3ICs2OTYsNiBA QCB2b2lkIHB2X2luamVjdF9ldmVudChjb25zdCBzdHJ1Y3QgeDg2X2V2ZW50ICpldmVudCkKICAg ICB9CiB9CiAKLXN0YXRpYyB2b2lkIGluc3RydWN0aW9uX2RvbmUoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgcmlwKQotewotICAgIHJlZ3MtPnJpcCA9IHJpcDsKLSAg ICByZWdzLT5lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfUkY7Ci0gICAgaWYgKCByZWdzLT5lZmxhZ3Mg JiBYODZfRUZMQUdTX1RGICkKLSAgICB7Ci0gICAgICAgIGN1cnJlbnQtPmFyY2guZGVidWdyZWdb Nl0gfD0gRFJfU1RFUCB8IERSX1NUQVRVU19SRVNFUlZFRF9PTkU7Ci0gICAgICAgIHB2X2luamVj dF9od19leGNlcHRpb24oVFJBUF9kZWJ1ZywgWDg2X0VWRU5UX05PX0VDKTsKLSAgICB9Ci19Ci0K IHN0YXRpYyB1bnNpZ25lZCBpbnQgY2hlY2tfZ3Vlc3RfaW9fYnJlYWtwb2ludChzdHJ1Y3QgdmNw dSAqdiwKICAgICB1bnNpZ25lZCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IGxlbikKIHsKQEAgLTEw MjcsNyArMTAxOCw3IEBAIHN0YXRpYyBpbnQgZW11bGF0ZV9pbnZhbGlkX3JkdHNjcChzdHJ1Y3Qg Y3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZWlwICs9IHNpemVv ZihvcGNvZGUpOwogICAgIHB2X3NvZnRfcmR0c2ModiwgcmVncywgMSk7Ci0gICAgaW5zdHJ1Y3Rp b25fZG9uZShyZWdzLCBlaXApOworICAgIHB2X2VtdWxfaW5zdHJ1Y3Rpb25fZG9uZShyZWdzLCBl aXApOwogICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4ZWQ7CiB9CiAKQEAgLTEwNzUsNyArMTA2 Niw3IEBAIHN0YXRpYyBpbnQgZW11bGF0ZV9mb3JjZWRfaW52YWxpZF9vcChzdHJ1Y3QgY3B1X3Vz ZXJfcmVncyAqcmVncykKICAgICByZWdzLT5yY3ggPSByZXMuYzsKICAgICByZWdzLT5yZHggPSBy ZXMuZDsKIAotICAgIGluc3RydWN0aW9uX2RvbmUocmVncywgZWlwKTsKKyAgICBwdl9lbXVsX2lu c3RydWN0aW9uX2RvbmUocmVncywgZWlwKTsKIAogICAgIHRyYWNlX3RyYXBfb25lX2FkZHIoVFJD X1BWX0ZPUkNFRF9JTlZBTElEX09QLCByZWdzLT5yaXApOwogCkBAIC0xNjIzLDYwICsxNjE0LDYg QEAgbG9uZyBkb19mcHVfdGFza3N3aXRjaChpbnQgc2V0KQogICAgIHJldHVybiAwOwogfQogCi1z dGF0aWMgaW50IHJlYWRfZGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgc2VsLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZjcHUgKnYsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nICpiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyAqbGltaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgKmFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF90IGluc25fZmV0Y2gp Ci17Ci0gICAgc3RydWN0IGRlc2Nfc3RydWN0IGRlc2M7Ci0KLSAgICBpZiAoIHNlbCA8IDQpCi0g ICAgICAgIGRlc2MuYiA9IGRlc2MuYSA9IDA7Ci0gICAgZWxzZSBpZiAoIF9fZ2V0X3VzZXIoZGVz YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc3RydWN0IGRlc2Nfc3RydWN0ICop KCEoc2VsICYgNCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID8gR0RUX1ZJUlRfU1RBUlQodikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTERUX1ZJUlRfU1RBUlQodikpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgKyAoc2VsID4+IDMpKSApCi0gICAgICAgIHJldHVybiAwOwotICAg IGlmICggIWluc25fZmV0Y2ggKQotICAgICAgICBkZXNjLmIgJj0gfl9TRUdNRU5UX0w7Ci0KLSAg ICAqYXIgPSBkZXNjLmIgJiAweDAwZjBmZjAwOwotICAgIGlmICggIShkZXNjLmIgJiBfU0VHTUVO VF9MKSApCi0gICAgewotICAgICAgICAqYmFzZSA9ICgoZGVzYy5hID4+IDE2KSArICgoZGVzYy5i ICYgMHhmZikgPDwgMTYpICsKLSAgICAgICAgICAgICAgICAgKGRlc2MuYiAmIDB4ZmYwMDAwMDAp KTsKLSAgICAgICAgKmxpbWl0ID0gKGRlc2MuYSAmIDB4ZmZmZikgfCAoZGVzYy5iICYgMHgwMDBm MDAwMCk7Ci0gICAgICAgIGlmICggZGVzYy5iICYgX1NFR01FTlRfRyApCi0gICAgICAgICAgICAq bGltaXQgPSAoKCpsaW1pdCArIDEpIDw8IDEyKSAtIDE7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAg ICBpZiAoIHNlbCA+IDMgKQotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgYSwg bDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdmFsaWQ7Ci0KLSAgICAgICAgICAgIGFzbSB2 b2xhdGlsZSAoCi0gICAgICAgICAgICAgICAgImxhcmwgJTIsJTAgOyBzZXR6ICUxIgotICAgICAg ICAgICAgICAgIDogIj1yIiAoYSksICI9cW0iICh2YWxpZCkgOiAicm0iIChzZWwpKTsKLSAgICAg ICAgICAgIEJVR19PTih2YWxpZCAmJiAoKGEgJiAweDAwZjBmZjAwKSAhPSAqYXIpKTsKLSAgICAg ICAgICAgIGFzbSB2b2xhdGlsZSAoCi0gICAgICAgICAgICAgICAgImxzbGwgJTIsJTAgOyBzZXR6 ICUxIgotICAgICAgICAgICAgICAgIDogIj1yIiAobCksICI9cW0iICh2YWxpZCkgOiAicm0iIChz ZWwpKTsKLSAgICAgICAgICAgIEJVR19PTih2YWxpZCAmJiAobCAhPSAqbGltaXQpKTsKLSAgICAg ICAgfQotI2VuZGlmCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgICpiYXNlID0gMFVM OwotICAgICAgICAqbGltaXQgPSB+MFVMOwotICAgIH0KLQotICAgIHJldHVybiAxOwotfQotCiBz dGF0aWMgaW50IHJlYWRfZ2F0ZV9kZXNjcmlwdG9yKHVuc2lnbmVkIGludCBnYXRlX3NlbCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZjcHUgKnYsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqc2VsLApAQCAtMTg0MSw3 ICsxNzc4LDggQEAgc3RhdGljIGludCBwcml2X29wX3JlYWRfc2VnbWVudChlbnVtIHg4Nl9zZWdt ZW50IHNlZywKICAgICAgICAgZGVmYXVsdDogcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwog ICAgICAgICB9CiAKLSAgICAgICAgaWYgKCAhcmVhZF9kZXNjcmlwdG9yKHNlbCwgY3VycmVudCwg JnJlZy0+YmFzZSwgJmxpbWl0LCAmYXIsIDApICkKKyAgICAgICAgaWYgKCAhcHZfZW11bF9yZWFk X2Rlc2NyaXB0b3Ioc2VsLCBjdXJyZW50LCAmcmVnLT5iYXNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmbGltaXQsICZhciwgMCkgKQogICAgICAgICAgICAgcmV0dXJu IFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogCiAgICAgICAgIHJlZy0+bGltaXQgPSBsaW1pdDsKQEAg LTI5ODcsOCArMjkyNSw4IEBAIHN0YXRpYyBpbnQgZW11bGF0ZV9wcml2aWxlZ2VkX29wKHN0cnVj dCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIGludCByYzsKICAgICB1bnNpZ25lZCBpbnQgZWZs YWdzLCBhcjsKIAotICAgIGlmICggIXJlYWRfZGVzY3JpcHRvcihyZWdzLT5jcywgY3VyciwgJmN0 eHQuY3MuYmFzZSwgJmN0eHQuY3MubGltaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZh ciwgMSkgfHwKKyAgICBpZiAoICFwdl9lbXVsX3JlYWRfZGVzY3JpcHRvcihyZWdzLT5jcywgY3Vy ciwgJmN0eHQuY3MuYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3R4 dC5jcy5saW1pdCwgJmFyLCAxKSB8fAogICAgICAgICAgIShhciAmIF9TRUdNRU5UX1MpIHx8CiAg ICAgICAgICAhKGFyICYgX1NFR01FTlRfUCkgfHwKICAgICAgICAgICEoYXIgJiBfU0VHTUVOVF9D T0RFKSApCkBAIC0zMTEwLDcgKzMwNDgsNyBAQCBzdGF0aWMgaW50IGdhdGVfb3BfcmVhZCgKICAg ICAgICAgdW5zaWduZWQgaW50IGFyOwogCiAgICAgICAgIEFTU0VSVCghZ29jLT5pbnNuX2ZldGNo KTsKLSAgICAgICAgaWYgKCAhcmVhZF9kZXNjcmlwdG9yKHNlbCwgY3VycmVudCwgJmFkZHIsICZs aW1pdCwgJmFyLCAwKSB8fAorICAgICAgICBpZiAoICFwdl9lbXVsX3JlYWRfZGVzY3JpcHRvcihz ZWwsIGN1cnJlbnQsICZhZGRyLCAmbGltaXQsICZhciwgMCkgfHwKICAgICAgICAgICAgICAhKGFy ICYgX1NFR01FTlRfUykgfHwKICAgICAgICAgICAgICAhKGFyICYgX1NFR01FTlRfUCkgfHwKICAg ICAgICAgICAgICAoKGFyICYgX1NFR01FTlRfQ09ERSkgJiYgIShhciAmIF9TRUdNRU5UX1dSKSkg KQpAQCAtMzE3MCw4ICszMTA4LDggQEAgc3RhdGljIHZvaWQgZW11bGF0ZV9nYXRlX29wKHN0cnVj dCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAqIERlY29kZSBpbnN0cnVjdGlvbiAoYW5kIHBl cmhhcHMgb3BlcmFuZCkgdG8gZGV0ZXJtaW5lIFJQTCwKICAgICAgKiB3aGV0aGVyIHRoaXMgaXMg YSBqdW1wIG9yIGEgY2FsbCwgYW5kIHRoZSBjYWxsIHJldHVybiBvZmZzZXQuCiAgICAgICovCi0g ICAgaWYgKCAhcmVhZF9kZXNjcmlwdG9yKHJlZ3MtPmNzLCB2LCAmY3R4dC5jcy5iYXNlLCAmY3R4 dC5jcy5saW1pdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyLCAwKSB8fAorICAgIGlm ICggIXB2X2VtdWxfcmVhZF9kZXNjcmlwdG9yKHJlZ3MtPmNzLCB2LCAmY3R4dC5jcy5iYXNlLCAm Y3R4dC5jcy5saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXIsIDAp IHx8CiAgICAgICAgICAhKGFyICYgX1NFR01FTlRfUykgfHwKICAgICAgICAgICEoYXIgJiBfU0VH TUVOVF9QKSB8fAogICAgICAgICAgIShhciAmIF9TRUdNRU5UX0NPREUpICkKQEAgLTMyNDMsNyAr MzE4MSw3IEBAIHN0YXRpYyB2b2lkIGVtdWxhdGVfZ2F0ZV9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICggIXJlYWRfZGVzY3Jp cHRvcihzZWwsIHYsICZiYXNlLCAmbGltaXQsICZhciwgMCkgfHwKKyAgICBpZiAoICFwdl9lbXVs X3JlYWRfZGVzY3JpcHRvcihzZWwsIHYsICZiYXNlLCAmbGltaXQsICZhciwgMCkgfHwKICAgICAg ICAgICEoYXIgJiBfU0VHTUVOVF9TKSB8fAogICAgICAgICAgIShhciAmIF9TRUdNRU5UX0NPREUp IHx8CiAgICAgICAgICAoIWp1bXAgfHwgKGFyICYgX1NFR01FTlRfRUMpID8KQEAgLTMyOTMsNyAr MzIzMSw3IEBAIHN0YXRpYyB2b2lkIGVtdWxhdGVfZ2F0ZV9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncykKICAgICAgICAgICAgIGVzcCA9IHYtPmFyY2gucHZfdmNwdS5rZXJuZWxfc3A7CiAg ICAgICAgICAgICBzcyA9IHYtPmFyY2gucHZfdmNwdS5rZXJuZWxfc3M7CiAgICAgICAgICAgICBp ZiAoIChzcyAmIDMpICE9IChzZWwgJiAzKSB8fAotICAgICAgICAgICAgICAgICAhcmVhZF9kZXNj cmlwdG9yKHNzLCB2LCAmYmFzZSwgJmxpbWl0LCAmYXIsIDApIHx8CisgICAgICAgICAgICAgICAg ICFwdl9lbXVsX3JlYWRfZGVzY3JpcHRvcihzcywgdiwgJmJhc2UsICZsaW1pdCwgJmFyLCAwKSB8 fAogICAgICAgICAgICAgICAgICAoKGFyID4+IDEzKSAmIDMpICE9IChzZWwgJiAzKSB8fAogICAg ICAgICAgICAgICAgICAhKGFyICYgX1NFR01FTlRfUykgfHwKICAgICAgICAgICAgICAgICAgKGFy ICYgX1NFR01FTlRfQ09ERSkgfHwKQEAgLTMzMjAsNyArMzI1OCw4IEBAIHN0YXRpYyB2b2lkIGVt dWxhdGVfZ2F0ZV9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgKnVzdGtwOwogCi0gICAgICAgICAg ICAgICAgaWYgKCAhcmVhZF9kZXNjcmlwdG9yKHJlZ3MtPnNzLCB2LCAmYmFzZSwgJmxpbWl0LCAm YXIsIDApIHx8CisgICAgICAgICAgICAgICAgaWYgKCAhcHZfZW11bF9yZWFkX2Rlc2NyaXB0b3Io cmVncy0+c3MsIHYsICZiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZsaW1pdCwgJmFyLCAwKSB8fAogICAgICAgICAgICAgICAgICAgICAgKChhciA+ PiAxMykgJiAzKSAhPSAocmVncy0+Y3MgJiAzKSB8fAogICAgICAgICAgICAgICAgICAgICAgIShh ciAmIF9TRUdNRU5UX1MpIHx8CiAgICAgICAgICAgICAgICAgICAgICAoYXIgJiBfU0VHTUVOVF9D T0RFKSB8fApAQCAtMzM1NCw3ICszMjkzLDcgQEAgc3RhdGljIHZvaWQgZW11bGF0ZV9nYXRlX29w KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICAgICAgc2VsIHw9IChyZWdzLT5j cyAmIDMpOwogICAgICAgICAgICAgZXNwID0gcmVncy0+cnNwOwogICAgICAgICAgICAgc3MgPSBy ZWdzLT5zczsKLSAgICAgICAgICAgIGlmICggIXJlYWRfZGVzY3JpcHRvcihzcywgdiwgJmJhc2Us ICZsaW1pdCwgJmFyLCAwKSB8fAorICAgICAgICAgICAgaWYgKCAhcHZfZW11bF9yZWFkX2Rlc2Ny aXB0b3Ioc3MsIHYsICZiYXNlLCAmbGltaXQsICZhciwgMCkgfHwKICAgICAgICAgICAgICAgICAg KChhciA+PiAxMykgJiAzKSAhPSAoc2VsICYgMykgKQogICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgIHB2X2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgcmVncy0+ZXJyb3Jf Y29kZSk7CkBAIC0zMzgyLDcgKzMzMjEsNyBAQCBzdGF0aWMgdm9pZCBlbXVsYXRlX2dhdGVfb3Ao c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICAgIHNlbCB8PSAocmVncy0+Y3MgJiAz KTsKIAogICAgIHJlZ3MtPmNzID0gc2VsOwotICAgIGluc3RydWN0aW9uX2RvbmUocmVncywgb2Zm KTsKKyAgICBwdl9lbXVsX2luc3RydWN0aW9uX2RvbmUocmVncywgb2ZmKTsKIH0KIAogdm9pZCBk b19nZW5lcmFsX3Byb3RlY3Rpb24oc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCi0tIAoyLjEx LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK