From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 3/3] x86/emul: Improvements to internal users of decode_register() Date: Fri, 26 Jan 2018 13:16:40 +0000 Message-ID: <1516972600-26262-4-git-send-email-andrew.cooper3@citrix.com> References: <1516972600-26262-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: <1516972600-26262-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 , Jan Beulich List-Id: xen-devel@lists.xenproject.org TW9zdCB1c2VycyBvZiBkZWNvZGVfcmVnaXN0ZXIoKSBjYW4gYmUgcmVwbGFjZWQgd2l0aCBkZWNv ZGVfZ3ByKCkgcmlnaHQgYXdheS4KRm9yIHRoZSBmZXcgc2l0ZXMgd2hpY2ggZG8gY2FyZSBhYm91 dCBwb3NzaWJseSB1c2luZyB0aGUgaGlnaGJ5dGUgZW5jb2RpbmcsCnJlbmFtZSBkZWNvZGVfcmVn aXN0ZXIoKSB0byBkZWNvZGVfaGlnaF9ncHIoKSBhbmQgbWFrZSBpdCBwcm90b3R5cGUgbWF0Y2gK ZGVjb2RlX2dwcigpLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+Ci0t LQogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgfCA2NyArKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygr KSwgMzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRl L3g4Nl9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpp bmRleCA3MGMzOGEyLi4wNGNiNjQ5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxh dGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxh dGUuYwpAQCAtMTk4MCw5ICsxOTgwLDggQEAgbG9hZF9zZWcoCiAgICAgcmV0dXJuIHJjOwogfQog Ci12b2lkICoKLWRlY29kZV9yZWdpc3RlcigKLSAgICB1aW50OF90IG1vZHJtX3JlZywgc3RydWN0 IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGludCBoaWdoYnl0ZV9yZWdzKQorc3RhdGljIHVuc2lnbmVk IGxvbmcgKmRlY29kZV9oaWdoX2dwcigKKyAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywg dW5zaWduZWQgaW50IG1vZHJtX3JlZywgYm9vbCBoaWdoYnl0ZV9yZWdzKQogewogICAgIGNvbnN0 IHVpbnQ4X3QgKm9mZnNldHMgPSBoaWdoYnl0ZV9yZWdzID8gY3B1X3VzZXJfcmVnc19oaWdoX2dw cl9vZmZzZXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBj cHVfdXNlcl9yZWdzX2dwcl9vZmZzZXRzOwpAQCAtMjAwMSwxMCArMjAwMCwxMSBAQCBkZWNvZGVf cmVnaXN0ZXIoCiAgICAgcmV0dXJuICh2b2lkICopcmVncyArIG9mZnNldHNbbW9kcm1fcmVnXTsK IH0KIAotc3RhdGljIHZvaWQgKmRlY29kZV92ZXhfZ3ByKHVuc2lnbmVkIGludCB2ZXhfcmVnLCBz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3N0YXRpYyB1bnNpZ25lZCBsb25n ICpkZWNvZGVfdmV4X2dwcigKKyAgICB1bnNpZ25lZCBpbnQgdmV4X3JlZywgc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MsCisgICAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQp CiB7Ci0gICAgcmV0dXJuIGRlY29kZV9yZWdpc3Rlcih+dmV4X3JlZyAmIChtb2RlXzY0Yml0KCkg PyAweGYgOiA3KSwgcmVncywgMCk7CisgICAgcmV0dXJuIGRlY29kZV9ncHIocmVncywgfnZleF9y ZWcgJiAobW9kZV82NGJpdCgpID8gMHhmIDogNykpOwogfQogCiBzdGF0aWMgYm9vbCBpc19hbGln bmVkKGVudW0geDg2X3NlZ21lbnQgc2VnLCB1bnNpZ25lZCBsb25nIG9mZnMsCkBAIC0yODEzLDgg KzI4MTMsNyBAQCB4ODZfZGVjb2RlKAogICAgICAgICAgICAgICAgIHNpYl9pbmRleCA9ICgoc2li ID4+IDMpICYgNykgfCAoKHJleF9wcmVmaXggPDwgMikgJiA4KTsKICAgICAgICAgICAgICAgICBz aWJfYmFzZSAgPSAoc2liICYgNykgfCAoKHJleF9wcmVmaXggPDwgMykgJiA4KTsKICAgICAgICAg ICAgICAgICBpZiAoIHNpYl9pbmRleCAhPSA0ICYmICEoZCAmIHZTSUIpICkKLSAgICAgICAgICAg ICAgICAgICAgZWEubWVtLm9mZiA9ICoobG9uZyAqKWRlY29kZV9yZWdpc3RlcihzaWJfaW5kZXgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RhdGUtPnJlZ3MsIDApOworICAgICAgICAgICAgICAgICAgICBlYS5tZW0ub2ZmID0gKmRl Y29kZV9ncHIoc3RhdGUtPnJlZ3MsIHNpYl9pbmRleCk7CiAgICAgICAgICAgICAgICAgZWEubWVt Lm9mZiA8PD0gKHNpYiA+PiA2KSAmIDM7CiAgICAgICAgICAgICAgICAgaWYgKCAobW9kcm1fbW9k ID09IDApICYmICgoc2liX2Jhc2UgJiA3KSA9PSA1KSApCiAgICAgICAgICAgICAgICAgICAgIGVh Lm1lbS5vZmYgKz0gaW5zbl9mZXRjaF90eXBlKGludDMyX3QpOwpAQCAtMjgzMywxNSArMjgzMiwx MyBAQCB4ODZfZGVjb2RlKAogICAgICAgICAgICAgICAgICAgICBlYS5tZW0ub2ZmICs9IHN0YXRl LT5yZWdzLT5yKGJwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQot ICAgICAgICAgICAgICAgICAgICBlYS5tZW0ub2ZmICs9ICoobG9uZyAqKWRlY29kZV9yZWdpc3Rl cihzaWJfYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RhdGUtPnJlZ3MsIDApOworICAgICAgICAgICAgICAgICAgICBlYS5t ZW0ub2ZmICs9ICpkZWNvZGVfZ3ByKHN0YXRlLT5yZWdzLCBzaWJfYmFzZSk7CiAgICAgICAgICAg ICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZ2Vu ZXJhdGVfZXhjZXB0aW9uX2lmKGQgJiB2U0lCLCBFWENfVUQpOwogICAgICAgICAgICAgICAgIG1v ZHJtX3JtIHw9IChyZXhfcHJlZml4ICYgMSkgPDwgMzsKLSAgICAgICAgICAgICAgICBlYS5tZW0u b2ZmID0gKihsb25nICopZGVjb2RlX3JlZ2lzdGVyKG1vZHJtX3JtLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnJlZ3MsIDApOwor ICAgICAgICAgICAgICAgIGVhLm1lbS5vZmYgPSAqZGVjb2RlX2dwcihzdGF0ZS0+cmVncywgbW9k cm1fcm0pOwogICAgICAgICAgICAgICAgIGlmICggKG1vZHJtX3JtID09IDUpICYmIChtb2RybV9t b2QgIT0gMCkgKQogICAgICAgICAgICAgICAgICAgICBlYS5tZW0uc2VnID0geDg2X3NlZ19zczsK ICAgICAgICAgICAgIH0KQEAgLTMwNjYsOCArMzA2Myw3IEBAIHg4Nl9lbXVsYXRlKAogICAgIGdl bmVyYXRlX2V4Y2VwdGlvbl9pZihzdGF0ZS0+bm90XzY0Yml0ICYmIG1vZGVfNjRiaXQoKSwgRVhD X1VEKTsKIAogICAgIGlmICggZWEudHlwZSA9PSBPUF9SRUcgKQotICAgICAgICBlYS5yZWcgPSBk ZWNvZGVfcmVnaXN0ZXIobW9kcm1fcm0sICZfcmVncywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChkICYgQnl0ZU9wKSAmJiAhcmV4X3ByZWZpeCk7CisgICAgICAgIGVhLnJlZyA9 IGRlY29kZV9oaWdoX2dwcigmX3JlZ3MsIG1vZHJtX3JtLCAoZCAmIEJ5dGVPcCkgJiYgIXJleF9w cmVmaXgpOwogCiAgICAgbWVtc2V0KG1tdmFscCwgMHhhYSAvKiBhcmJpdHJhcnkgKi8sIHNpemVv ZigqbW12YWxwKSk7CiAKQEAgLTMwODEsMTMgKzMwNzcsMTMgQEAgeDg2X2VtdWxhdGUoCiAgICAg ICAgIHNyYy50eXBlID0gT1BfUkVHOwogICAgICAgICBpZiAoIGQgJiBCeXRlT3AgKQogICAgICAg ICB7Ci0gICAgICAgICAgICBzcmMucmVnID0gZGVjb2RlX3JlZ2lzdGVyKG1vZHJtX3JlZywgJl9y ZWdzLCAocmV4X3ByZWZpeCA9PSAwKSk7CisgICAgICAgICAgICBzcmMucmVnID0gZGVjb2RlX2hp Z2hfZ3ByKCZfcmVncywgbW9kcm1fcmVnLCAocmV4X3ByZWZpeCA9PSAwKSk7CiAgICAgICAgICAg ICBzcmMudmFsID0gKih1aW50OF90ICopc3JjLnJlZzsKICAgICAgICAgICAgIHNyYy5ieXRlcyA9 IDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBzcmMu cmVnID0gZGVjb2RlX3JlZ2lzdGVyKG1vZHJtX3JlZywgJl9yZWdzLCAwKTsKKyAgICAgICAgICAg IHNyYy5yZWcgPSBkZWNvZGVfZ3ByKCZfcmVncywgbW9kcm1fcmVnKTsKICAgICAgICAgICAgIHN3 aXRjaCAoIChzcmMuYnl0ZXMgPSBvcF9ieXRlcykgKQogICAgICAgICAgICAgewogICAgICAgICAg ICAgY2FzZSAyOiBzcmMudmFsID0gKih1aW50MTZfdCAqKXNyYy5yZWc7IGJyZWFrOwpAQCAtMzE1 NywxMyArMzE1MywxMyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgZHN0LnR5cGUgPSBPUF9SRUc7 CiAgICAgICAgIGlmICggZCAmIEJ5dGVPcCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRzdC5y ZWcgPSBkZWNvZGVfcmVnaXN0ZXIobW9kcm1fcmVnLCAmX3JlZ3MsIChyZXhfcHJlZml4ID09IDAp KTsKKyAgICAgICAgICAgIGRzdC5yZWcgPSBkZWNvZGVfaGlnaF9ncHIoJl9yZWdzLCBtb2RybV9y ZWcsIChyZXhfcHJlZml4ID09IDApKTsKICAgICAgICAgICAgIGRzdC52YWwgPSAqKHVpbnQ4X3Qg Kilkc3QucmVnOwogICAgICAgICAgICAgZHN0LmJ5dGVzID0gMTsKICAgICAgICAgfQogICAgICAg ICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRzdC5yZWcgPSBkZWNvZGVfcmVnaXN0ZXIo bW9kcm1fcmVnLCAmX3JlZ3MsIDApOworICAgICAgICAgICAgZHN0LnJlZyA9IGRlY29kZV9ncHIo Jl9yZWdzLCBtb2RybV9yZWcpOwogICAgICAgICAgICAgc3dpdGNoICggKGRzdC5ieXRlcyA9IG9w X2J5dGVzKSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIDI6IGRzdC52YWwgPSAq KHVpbnQxNl90ICopZHN0LnJlZzsgYnJlYWs7CkBAIC0zMzUzLDcgKzMzNDksNyBAQCB4ODZfZW11 bGF0ZSgKIAogICAgIGNhc2UgMHg0MCAuLi4gMHg0ZjogLyogaW5jL2RlYyByZWcgKi8KICAgICAg ICAgZHN0LnR5cGUgID0gT1BfUkVHOwotICAgICAgICBkc3QucmVnICAgPSBkZWNvZGVfcmVnaXN0 ZXIoYiAmIDcsICZfcmVncywgMCk7CisgICAgICAgIGRzdC5yZWcgICA9IGRlY29kZV9ncHIoJl9y ZWdzLCBiICYgNyk7CiAgICAgICAgIGRzdC5ieXRlcyA9IG9wX2J5dGVzOwogICAgICAgICBkc3Qu dmFsICAgPSAqZHN0LnJlZzsKICAgICAgICAgaWYgKCBiICYgOCApCkBAIC0zMzYzLDE0ICszMzU5 LDEyIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHg1MCAuLi4g MHg1NzogLyogcHVzaCByZWcgKi8KLSAgICAgICAgc3JjLnZhbCA9ICoodW5zaWduZWQgbG9uZyAq KWRlY29kZV9yZWdpc3RlcigKLSAgICAgICAgICAgIChiICYgNykgfCAoKHJleF9wcmVmaXggJiAx KSA8PCAzKSwgJl9yZWdzLCAwKTsKKyAgICAgICAgc3JjLnZhbCA9ICpkZWNvZGVfZ3ByKCZfcmVn cywgKGIgJiA3KSB8ICgocmV4X3ByZWZpeCAmIDEpIDw8IDMpKTsKICAgICAgICAgZ290byBwdXNo OwogCiAgICAgY2FzZSAweDU4IC4uLiAweDVmOiAvKiBwb3AgcmVnICovCiAgICAgICAgIGRzdC50 eXBlICA9IE9QX1JFRzsKLSAgICAgICAgZHN0LnJlZyAgID0gZGVjb2RlX3JlZ2lzdGVyKAotICAg ICAgICAgICAgKGIgJiA3KSB8ICgocmV4X3ByZWZpeCAmIDEpIDw8IDMpLCAmX3JlZ3MsIDApOwor ICAgICAgICBkc3QucmVnICAgPSBkZWNvZGVfZ3ByKCZfcmVncywgKGIgJiA3KSB8ICgocmV4X3By ZWZpeCAmIDEpIDw8IDMpKTsKICAgICAgICAgZHN0LmJ5dGVzID0gb3BfYnl0ZXM7CiAgICAgICAg IGlmICggbW9kZV82NGJpdCgpICYmIChkc3QuYnl0ZXMgPT0gNCkgKQogICAgICAgICAgICAgZHN0 LmJ5dGVzID0gODsKQEAgLTMzODQsNyArMzM3OCw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBl YS52YWwgPSBfcmVncy5lc3A7CiAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgODsgaSsrICkKICAg ICAgICAgewotICAgICAgICAgICAgdm9pZCAqcmVnID0gZGVjb2RlX3JlZ2lzdGVyKGksICZfcmVn cywgMCk7CisgICAgICAgICAgICB2b2lkICpyZWcgPSBkZWNvZGVfZ3ByKCZfcmVncywgaSk7CiAK ICAgICAgICAgICAgIGlmICggKHJjID0gb3BzLT53cml0ZSh4ODZfc2VnX3NzLCBzcF9wcmVfZGVj KG9wX2J5dGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgIT0gJl9y ZWdzLmVzcCA/IHJlZyA6ICZlYS52YWwsCkBAIC0zMzk2LDcgKzMzOTAsNyBAQCB4ODZfZW11bGF0 ZSgKICAgICBjYXNlIDB4NjE6IC8qIHBvcGEgKi8KICAgICAgICAgZm9yICggaSA9IDA7IGkgPCA4 OyBpKysgKQogICAgICAgICB7Ci0gICAgICAgICAgICB2b2lkICpyZWcgPSBkZWNvZGVfcmVnaXN0 ZXIoNyAtIGksICZfcmVncywgMCk7CisgICAgICAgICAgICB2b2lkICpyZWcgPSBkZWNvZGVfZ3By KCZfcmVncywgNyAtIGkpOwogCiAgICAgICAgICAgICBpZiAoIChyYyA9IHJlYWRfdWxvbmcoeDg2 X3NlZ19zcywgc3BfcG9zdF9pbmMob3BfYnl0ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZkc3QudmFsLCBvcF9ieXRlcywgY3R4dCwgb3BzKSkgIT0gMCApCkBAIC0zNjc2 LDggKzM2NzAsNyBAQCB4ODZfZW11bGF0ZSgKICAgICBjYXNlIDB4OTEgLi4uIDB4OTc6IC8qIHhj aGcgcmVnLCUlcmF4ICovCiAgICAgICAgIGRzdC50eXBlID0gT1BfUkVHOwogICAgICAgICBkc3Qu Ynl0ZXMgPSBvcF9ieXRlczsKLSAgICAgICAgZHN0LnJlZyAgPSBkZWNvZGVfcmVnaXN0ZXIoCi0g ICAgICAgICAgICAoYiAmIDcpIHwgKChyZXhfcHJlZml4ICYgMSkgPDwgMyksICZfcmVncywgMCk7 CisgICAgICAgIGRzdC5yZWcgID0gZGVjb2RlX2dwcigmX3JlZ3MsIChiICYgNykgfCAoKHJleF9w cmVmaXggJiAxKSA8PCAzKSk7CiAgICAgICAgIGRzdC52YWwgID0gKmRzdC5yZWc7CiAgICAgICAg IGdvdG8geGNoZzsKIApAQCAtMzkwOSwxNCArMzkwMiwxMyBAQCB4ODZfZW11bGF0ZSgKICAgICB9 CiAKICAgICBjYXNlIDB4YjAgLi4uIDB4Yjc6IC8qIG1vdiBpbW04LHI4ICovCi0gICAgICAgIGRz dC5yZWcgPSBkZWNvZGVfcmVnaXN0ZXIoCi0gICAgICAgICAgICAoYiAmIDcpIHwgKChyZXhfcHJl Zml4ICYgMSkgPDwgMyksICZfcmVncywgKHJleF9wcmVmaXggPT0gMCkpOworICAgICAgICBkc3Qu cmVnID0gZGVjb2RlX2hpZ2hfZ3ByKCZfcmVncywgKGIgJiA3KSB8ICgocmV4X3ByZWZpeCAmIDEp IDw8IDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXhfcHJlZml4ID09 IDApKTsKICAgICAgICAgZHN0LnZhbCA9IHNyYy52YWw7CiAgICAgICAgIGJyZWFrOwogCiAgICAg Y2FzZSAweGI4IC4uLiAweGJmOiAvKiBtb3YgaW1tezE2LDMyLDY0fSxyezE2LDMyLDY0fSAqLwot ICAgICAgICBkc3QucmVnID0gZGVjb2RlX3JlZ2lzdGVyKAotICAgICAgICAgICAgKGIgJiA3KSB8 ICgocmV4X3ByZWZpeCAmIDEpIDw8IDMpLCAmX3JlZ3MsIDApOworICAgICAgICBkc3QucmVnID0g ZGVjb2RlX2dwcigmX3JlZ3MsIChiICYgNykgfCAoKHJleF9wcmVmaXggJiAxKSA8PCAzKSk7CiAg ICAgICAgIGRzdC52YWwgPSBzcmMudmFsOwogICAgICAgICBicmVhazsKIApAQCAtNTY5OCw3ICs1 NjkwLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIG9wY1syXSA9IDB4YzM7CiAKICAgICAgICAg Y29weV9SRVhfVkVYKG9wYywgcmV4X3ByZWZpeCwgdmV4KTsKLSAgICAgICAgZWEucmVnID0gZGVj b2RlX3JlZ2lzdGVyKG1vZHJtX3JlZywgJl9yZWdzLCAwKTsKKyAgICAgICAgZWEucmVnID0gZGVj b2RlX2dwcigmX3JlZ3MsIG1vZHJtX3JlZyk7CiAgICAgICAgIGludm9rZV9zdHViKCIiLCAiIiwg Ij1hIiAoKmVhLnJlZyksICIrbSIgKGZpYy5leG5fcmFpc2VkKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogImMiIChtbXZhbHApLCAibSIgKCptbXZhbHApKTsKIApAQCAtNjQ3NSw3ICs2 NDY3LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAg ICAgc2hpZnQgPSBzcmMudmFsOwotICAgICAgICAgICAgc3JjLnJlZyA9IGRlY29kZV9yZWdpc3Rl cihtb2RybV9yZWcsICZfcmVncywgMCk7CisgICAgICAgICAgICBzcmMucmVnID0gZGVjb2RlX2dw cigmX3JlZ3MsIG1vZHJtX3JlZyk7CiAgICAgICAgICAgICBzcmMudmFsID0gdHJ1bmNhdGVfd29y ZCgqc3JjLnJlZywgZHN0LmJ5dGVzKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIChzaGlmdCAm PSB3aWR0aCAtIDEpID09IDAgKQpAQCAtNjU5NCw3ICs2NTg2LDcgQEAgeDg2X2VtdWxhdGUoCiAg ICAgICAgIGZhaWxfaWYoIW9wcy0+cmVhZF9zZWdtZW50KTsKICAgICAgICAgaWYgKCAocmMgPSBv cHMtPnJlYWRfc2VnbWVudChzZWcsICZzcmVnLCBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkKICAg ICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgZHN0LnJlZyA9IGRlY29kZV9yZWdpc3Rlciht b2RybV9ybSwgJl9yZWdzLCAwKTsKKyAgICAgICAgZHN0LnJlZyA9IGRlY29kZV9ncHIoJl9yZWdz LCBtb2RybV9ybSk7CiAgICAgICAgIGlmICggIShtb2RybV9yZWcgJiAyKSApCiAgICAgICAgIHsK ICAgICAgICAgICAgIC8qIHJke2YsZ31zYmFzZSAqLwpAQCAtNjY1NCw3ICs2NjQ2LDcgQEAgeDg2 X2VtdWxhdGUoCiAKICAgICBjYXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4YjYpOiAvKiBtb3Z6eCBy bTgscnsxNiwzMiw2NH0gKi8KICAgICAgICAgLyogUmVjb21wdXRlIERzdFJlZyBhcyB3ZSBtYXkg aGF2ZSBkZWNvZGVkIEFIL0JIL0NIL0RILiAqLwotICAgICAgICBkc3QucmVnICAgPSBkZWNvZGVf cmVnaXN0ZXIobW9kcm1fcmVnLCAmX3JlZ3MsIDApOworICAgICAgICBkc3QucmVnICAgPSBkZWNv ZGVfZ3ByKCZfcmVncywgbW9kcm1fcmVnKTsKICAgICAgICAgZHN0LmJ5dGVzID0gb3BfYnl0ZXM7 CiAgICAgICAgIGRzdC52YWwgICA9ICh1aW50OF90KXNyYy52YWw7CiAgICAgICAgIGJyZWFrOwpA QCAtNjc0Niw3ICs2NzM4LDcgQEAgeDg2X2VtdWxhdGUoCiAKICAgICBjYXNlIFg4NkVNVUxfT1BD KDB4MGYsIDB4YmUpOiAvKiBtb3ZzeCBybTgscnsxNiwzMiw2NH0gKi8KICAgICAgICAgLyogUmVj b21wdXRlIERzdFJlZyBhcyB3ZSBtYXkgaGF2ZSBkZWNvZGVkIEFIL0JIL0NIL0RILiAqLwotICAg ICAgICBkc3QucmVnICAgPSBkZWNvZGVfcmVnaXN0ZXIobW9kcm1fcmVnLCAmX3JlZ3MsIDApOwor ICAgICAgICBkc3QucmVnICAgPSBkZWNvZGVfZ3ByKCZfcmVncywgbW9kcm1fcmVnKTsKICAgICAg ICAgZHN0LmJ5dGVzID0gb3BfYnl0ZXM7CiAgICAgICAgIGRzdC52YWwgICA9IChpbnQ4X3Qpc3Jj LnZhbDsKICAgICAgICAgYnJlYWs7CkBAIC02OTcxLDggKzY5NjMsNyBAQCB4ODZfZW11bGF0ZSgK IAogICAgIGNhc2UgWDg2RU1VTF9PUEMoMHgwZiwgMHhjOCkgLi4uIFg4NkVNVUxfT1BDKDB4MGYs IDB4Y2YpOiAvKiBic3dhcCAqLwogICAgICAgICBkc3QudHlwZSA9IE9QX1JFRzsKLSAgICAgICAg ZHN0LnJlZyAgPSBkZWNvZGVfcmVnaXN0ZXIoCi0gICAgICAgICAgICAoYiAmIDcpIHwgKChyZXhf cHJlZml4ICYgMSkgPDwgMyksICZfcmVncywgMCk7CisgICAgICAgIGRzdC5yZWcgID0gZGVjb2Rl X2dwcigmX3JlZ3MsIChiICYgNykgfCAoKHJleF9wcmVmaXggJiAxKSA8PCAzKSk7CiAgICAgICAg IHN3aXRjaCAoIGRzdC5ieXRlcyA9IG9wX2J5dGVzICkKICAgICAgICAgewogICAgICAgICBkZWZh dWx0OiAvKiBjYXNlIDI6ICovCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=