From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [RFC PATCH V2 23/26] x86/vvtd: Handle interrupt translation faults Date: Thu, 18 May 2017 01:34:53 -0400 Message-ID: <1495085696-10819-24-git-send-email-tianyu.lan@intel.com> References: <1495085696-10819-1-git-send-email-tianyu.lan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1495085696-10819-1-git-send-email-tianyu.lan@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Lan Tianyu , andrew.cooper3@citrix.com, kevin.tian@intel.com, jbeulich@suse.com, Chao Gao List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KCkludGVycnVwdCB0cmFuc2xhdGlv biBmYXVsdHMgYXJlIG5vbi1yZWNvdmVyYWJsZSBmYXVsdC4gV2hlbiBmYXVsdHMKYXJlIHRyaWdn ZXJlZCwgaXQgbmVlZHMgdG8gcG9wdWxhdGUgZmF1bHQgaW5mbyB0byBGYXVsdCBSZWNvcmRpbmcK UmVnaXN0ZXJzIGFuZCBpbmplY3QgdklPTU1VIG1zaSBpbnRlcnJ1cHQgdG8gbm90aWZ5IGd1ZXN0 IElPTU1VIGRyaXZlcgp0byBkZWFsIHdpdGggZmF1bHRzLgoKVGhpcyBwYXRjaCBlbXVsYXRlcyBo YXJkd2FyZSdzIGhhbmRsaW5nIGludGVycnVwdCB0cmFuc2xhdGlvbgpmYXVsdHMgKG1vcmUgaW5m b3JtYXRpb24gYWJvdXQgdGhlIHByb2Nlc3MgY2FuIGJlIGZvdW5kIGluIFZULWQgc3BlYywKY2hp cHRlciAiVHJhbnNsYXRpb24gRmF1bHRzIiwgc2VjdGlvbiAiTm9uLVJlY292ZXJhYmxlIEZhdWx0 ClJlcG9ydGluZyIgYW5kIHNlY3Rpb24gIk5vbi1SZWNvdmVyYWJsZSBMb2dnaW5nIikuClNwZWNp ZmljYWxseSwgdmlvbW11X3JlY29yZF9mYXVsdCgpIHJlY29yZHMgdGhlIGZhdWx0IGluZm9ybWF0 aW9uIGFuZAp2aW9tbXVfcmVwb3J0X25vbl9yZWNvdmVyYWJsZV9mYXVsdCgpIHJlcG9ydHMgZmF1 bHRzIHRvIHNvZnR3YXJlLgpDdXJyZW50bHksIG9ubHkgUHJpbWFyeSBGYXVsdCBMb2dnaW5nIGlz IHN1cHBvcnRlZCBhbmQgdGhlIE51bWJlciBvZgpGYXVsdC1yZWNvcmRpbmcgUmVnaXN0ZXJzIGlz IDEuCgpTaWduZWQtb2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBMYW4gVGlhbnl1IDx0aWFueXUubGFuQGludGVsLmNvbT4KLS0tCiB4ZW4vYXJjaC94 ODYvaHZtL3Z2dGQuYyAgICAgICAgICAgICB8IDIzNyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oIHwgIDYwICsr KysrKystLQogMiBmaWxlcyBjaGFuZ2VkLCAyODUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92dnRkLmMgYi94ZW4vYXJjaC94ODYv aHZtL3Z2dGQuYwppbmRleCAxMGIwY2QwLi5hNzQxNDUyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvaHZtL3Z2dGQuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3Z2dGQuYwpAQCAtMTksNiArMTks NyBAQAogICovCiAKICNpbmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KKyNpbmNsdWRlIDx4ZW4v bGliLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CiAj aW5jbHVkZSA8eGVuL3Zpb21tdS5oPgpAQCAtMzAsNiArMzEsNyBAQAogI2luY2x1ZGUgPGFzbS9p b19hcGljLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KICNpbmNsdWRlIDxhc20vcDJtLmg+Cisj aW5jbHVkZSA8YXNtL3N5c3RlbS5oPgogI2luY2x1ZGUgPHB1YmxpYy92aW9tbXUuaD4KIAogI2lu Y2x1ZGUgIi4uLy4uLy4uL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmgiCkBAIC00OSw2 ICs1MSw4IEBAIHN0cnVjdCBodm1faHdfdnZ0ZF9yZWdzIHsKIHN0cnVjdCB2dnRkIHsKICAgICAv KiBWSU9NTVVfU1RBVFVTX1hYWF9SRU1BUFBJTkdfRU5BQkxFRCAqLwogICAgIGludCBzdGF0dXM7 CisgICAgLyogRmF1bHQgUmVjb3JkaW5nIGluZGV4ICovCisgICAgaW50IGZyY2RfaWR4OwogICAg IC8qIEFkZHJlc3MgcmFuZ2Ugb2YgcmVtYXBwaW5nIGhhcmR3YXJlIHJlZ2lzdGVyLXNldCAqLwog ICAgIHVpbnQ2NF90IGJhc2VfYWRkcjsKICAgICB1aW50NjRfdCBsZW5ndGg7CkBAIC05Nyw2ICsx MDEsMjMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdnZ0ZCAqdmNwdV92dnRkKHN0cnVjdCB2Y3B1 ICp2KQogICAgIHJldHVybiBkb21haW5fdnZ0ZCh2LT5kb21haW4pOwogfQogCitzdGF0aWMgaW5s aW5lIGludCB2dnRkX3Rlc3RfYW5kX3NldF9iaXQoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90 IHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnIpCit7 CisgICAgcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQobnIsICh1aW50MzJfdCAqKSZ2dnRkLT5yZWdz LT5kYXRhW3JlZ10pOworfQorCitzdGF0aWMgaW5saW5lIGludCB2dnRkX3Rlc3RfYW5kX2NsZWFy X2JpdChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDMyX3QgcmVnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5yKQoreworICAgIHJldHVybiB0ZXN0X2FuZF9j bGVhcl9iaXQobnIsICh1aW50MzJfdCAqKSZ2dnRkLT5yZWdzLT5kYXRhW3JlZ10pOworfQorCitz dGF0aWMgaW5saW5lIGludCB2dnRkX3Rlc3RfYml0KHN0cnVjdCB2dnRkICp2dnRkLCB1aW50MzJf dCByZWcsIGludCBucikKK3sKKyAgICByZXR1cm4gdGVzdF9iaXQobnIsICh1aW50MzJfdCAqKSZ2 dnRkLT5yZWdzLT5kYXRhW3JlZ10pOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgX192dnRkX3Nl dF9iaXQoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IHJlZywgaW50IG5yKQogewogICAgIHJl dHVybiBfX3NldF9iaXQobnIsICh1aW50MzJfdCAqKSZ2dnRkLT5yZWdzLT5kYXRhW3JlZ10pOwpA QCAtMjMyLDYgKzI1MywyNCBAQCBzdGF0aWMgaW50IHZ2dGRfZGVsaXZlcnkoCiAgICAgcmV0dXJu IDA7CiB9CiAKK3ZvaWQgdnZ0ZF9nZW5lcmF0ZV9pbnRlcnJ1cHQoc3RydWN0IHZ2dGQgKnZ2dGQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdGEpCit7CisgICAgdWludDhfdCBkZXN0LCBk bSwgZGxtLCB0bSwgdmVjdG9yOworCisgICAgVlZURF9ERUJVRyhWVlREX0RCR19GQVVMVCwgIlNl bmRpbmcgaW50ZXJydXB0ICV4ICV4IHRvIGQlZCIsCisgICAgICAgICAgICAgICBhZGRyLCBkYXRh LCB2dnRkLT5kb21haW4tPmRvbWFpbl9pZCk7CisKKyAgICBkZXN0ID0gKGFkZHIgJiBNU0lfQURE Ul9ERVNUX0lEX01BU0spID4+IE1TSV9BRERSX0RFU1RfSURfU0hJRlQ7CisgICAgZG0gPSAhIShh ZGRyICYgTVNJX0FERFJfREVTVE1PREVfTUFTSyk7CisgICAgZGxtID0gKGRhdGEgJiBNU0lfREFU QV9ERUxJVkVSWV9NT0RFX01BU0spID4+IE1TSV9EQVRBX0RFTElWRVJZX01PREVfU0hJRlQ7Cisg ICAgdG0gPSAoZGF0YSAmIE1TSV9EQVRBX1RSSUdHRVJfTUFTSykgPj4gTVNJX0RBVEFfVFJJR0dF Ul9TSElGVDsKKyAgICB2ZWN0b3IgPSBkYXRhICYgTVNJX0RBVEFfVkVDVE9SX01BU0s7CisKKyAg ICB2dnRkX2RlbGl2ZXJ5KHZ2dGQtPmRvbWFpbiwgdmVjdG9yLCBkZXN0LCBkbSwgZGxtLCB0bSk7 Cit9CisKIHN0YXRpYyB1aW50MzJfdCBpcnFfcmVtYXBwaW5nX3JlcXVlc3RfaW5kZXgoc3RydWN0 IGlycV9yZW1hcHBpbmdfcmVxdWVzdCAqaXJxKQogewogICAgIGlmICggaXJxLT50eXBlID09IFZJ T01NVV9SRVFVRVNUX0lSUV9NU0kgKQpAQCAtMjYwLDExICsyOTksMTg4IEBAIHN0YXRpYyBpbmxp bmUgdWludDMyX3QgaXJ0ZV9kZXN0KHN0cnVjdCB2dnRkICp2dnRkLCB1aW50MzJfdCBkZXN0KQog ICAgIHJldHVybiBETUFfSVJUQV9FSU1FKGlydGEpID8gZGVzdCA6IE1BU0tfRVhUUihkZXN0LCBJ UlRFX3hBUElDX0RFU1RfTUFTSyk7CiB9CiAKK3N0YXRpYyB2b2lkIHZ2dGRfcmVwb3J0X25vbl9y ZWNvdmVyYWJsZV9mYXVsdChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgaW50IHJlYXNvbikKK3sKKyAgICB1 aW50MzJfdCBmc3RzOworCisgICAgQVNTRVJUKHJlYXNvbiAmIERNQV9GU1RTX0ZBVUxUUyk7Cisg ICAgZnN0cyA9IHZ2dGRfZ2V0X3JlZyh2dnRkLCBETUFSX0ZTVFNfUkVHKTsKKyAgICBfX3Z2dGRf c2V0X2JpdCh2dnRkLCBETUFSX0ZTVFNfUkVHLCByZWFzb24pOworCisgICAgLyoKKyAgICAgKiBB Y2Nvcm9kaW5nIHRvIFZULWQgc3BlYyAiTm9uLVJlY292ZXJhYmxlIEZhdWx0IEV2ZW50IiBjaGFw dGVyLCBpZgorICAgICAqIHRoZXJlIGFyZSBhbnkgcHJldmlvdXNseSByZXBvcnRlZCBpbnRlcnJ1 cHQgY29uZGl0aW9ucyB0aGF0IGFyZSB5ZXQgdG8KKyAgICAgKiBiZSBzZXZpY2VzIGJ5IHNvZnR3 YXJlLCB0aGUgRmF1bHQgRXZlbnQgaW50ZXJycnVwdCBpcyBub3QgZ2VuZXJhdGVkLgorICAgICAq LworICAgIGlmICggZnN0cyAmIERNQV9GU1RTX0ZBVUxUUyApCisgICAgICAgIHJldHVybjsKKwor ICAgIF9fdnZ0ZF9zZXRfYml0KHZ2dGQsIERNQVJfRkVDVExfUkVHLCBETUFfRkVDVExfSVBfQklU KTsKKyAgICBpZiAoICF2dnRkX3Rlc3RfYml0KHZ2dGQsIERNQVJfRkVDVExfUkVHLCBETUFfRkVD VExfSU1fQklUKSApCisgICAgeworICAgICAgICB1aW50MzJfdCBmZV9kYXRhLCBmZV9hZGRyOwor ICAgICAgICBmZV9kYXRhID0gdnZ0ZF9nZXRfcmVnKHZ2dGQsIERNQVJfRkVEQVRBX1JFRyk7Cisg ICAgICAgIGZlX2FkZHIgPSB2dnRkX2dldF9yZWcodnZ0ZCwgRE1BUl9GRUFERFJfUkVHKTsKKyAg ICAgICAgdnZ0ZF9nZW5lcmF0ZV9pbnRlcnJ1cHQodnZ0ZCwgZmVfYWRkciwgZmVfZGF0YSk7Cisg ICAgICAgIF9fdnZ0ZF9jbGVhcl9iaXQodnZ0ZCwgRE1BUl9GRUNUTF9SRUcsIERNQV9GRUNUTF9J UF9CSVQpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgdnZ0ZF9yZWNvbXB1dGluZ19wcGYoc3Ry dWN0IHZ2dGQgKnZ2dGQpCit7CisgICAgaW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IERN QVJfRlJDRF9SRUdfTlI7IGkrKyApCisgICAgeworICAgICAgICBpZiAoIHZ2dGRfdGVzdF9iaXQo dnZ0ZCwgRE1BX0ZSQ0QoaSwgRE1BX0ZSQ0QzX09GRlNFVCksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBETUFfRlJDRF9GX0JJVCkgKQorICAgICAgICB7CisgICAgICAgICAgICB2dnRkX3Jl cG9ydF9ub25fcmVjb3ZlcmFibGVfZmF1bHQodnZ0ZCwgRE1BX0ZTVFNfUFBGX0JJVCk7CisgICAg ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgLyoKKyAgICAgKiBObyBQcmlt YXJ5IEZhdWx0IGlzIGluIEZhdWx0IFJlY29yZCBSZWdpc3RlcnMsIHRodXMgY2xlYXIgUFBGIGJp dCBpbgorICAgICAqIEZTVFMuCisgICAgICovCisgICAgX192dnRkX2NsZWFyX2JpdCh2dnRkLCBE TUFSX0ZTVFNfUkVHLCBETUFfRlNUU19QUEZfQklUKTsKKworICAgIC8qIElmIG5vIGZhdWx0IGlz IGluIEZTVFMsIGNsZWFyIHBlbmRpbmcgYml0IGluIEZFQ1RMLiAqLworICAgIGlmICggISh2dnRk X2dldF9yZWcodnZ0ZCwgRE1BUl9GU1RTX1JFRykgJiBETUFfRlNUU19GQVVMVFMpICkKKyAgICAg ICAgX192dnRkX2NsZWFyX2JpdCh2dnRkLCBETUFSX0ZFQ1RMX1JFRywgRE1BX0ZFQ1RMX0lQX0JJ VCk7Cit9CisKKy8qCisgKiBDb21taXQgYSBmcmNkIHRvIGVtdWxhdGVkIEZhdWx0IFJlY29yZCBS ZWdpc3RlcnMuCisgKi8KK3N0YXRpYyB2b2lkIHZ2dGRfY29tbWl0X2ZyY2Qoc3RydWN0IHZ2dGQg KnZ2dGQsIGludCBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2dGRf ZmF1bHRfcmVjb3JkX3JlZ2lzdGVyICpmcmNkKQoreworICAgIHZ2dGRfc2V0X3JlZ19xdWFkKHZ2 dGQsIERNQV9GUkNEKGlkeCwgRE1BX0ZSQ0QwX09GRlNFVCksIGZyY2QtPmJpdHMubG8pOworICAg IHZ2dGRfc2V0X3JlZ19xdWFkKHZ2dGQsIERNQV9GUkNEKGlkeCwgRE1BX0ZSQ0QyX09GRlNFVCks IGZyY2QtPmJpdHMuaGkpOworICAgIHZ2dGRfcmVjb21wdXRpbmdfcHBmKHZ2dGQpOworfQorCisv KgorICogQWxsb2NhdGUgYSBGUkNEIGZvciB0aGUgY2FsbGVyLiBJZiBzdWNjZXNzLCByZXR1cm4g dGhlIEZSSS4gT3IsIHJldHVybiAtMQorICogd2hlbiBmYWlsdXJlLgorICovCitzdGF0aWMgaW50 IHZ2dGRfYWxsb2NfZnJjZChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCkKK3sKKyAgICBpbnQgcHJldjsKKyAg ICAvKiBTZXQgdGhlIEYgYml0IHRvIGluZGljYXRlIHRoZSBGUkNEIGlzIGluIHVzZS4gKi8KKyAg ICBpZiAoIHZ2dGRfdGVzdF9hbmRfc2V0X2JpdCh2dnRkLCBETUFfRlJDRCh2dnRkLT5mcmNkX2lk eCwgRE1BX0ZSQ0QzX09GRlNFVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1B X0ZSQ0RfRl9CSVQpICkKKyAgICB7CisgICAgICAgIHByZXYgPSB2dnRkLT5mcmNkX2lkeDsKKyAg ICAgICAgdnZ0ZC0+ZnJjZF9pZHggPSAocHJldiArIDEpICUgRE1BUl9GUkNEX1JFR19OUjsKKyAg ICAgICAgcmV0dXJuIHZ2dGQtPmZyY2RfaWR4OworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisK K3N0YXRpYyB2b2lkIHZ2dGRfZnJlZV9mcmNkKHN0cnVjdCB2dnRkICp2dnRkLCBpbnQgaSkKK3sK KyAgICBfX3Z2dGRfY2xlYXJfYml0KHZ2dGQsIERNQV9GUkNEKGksIERNQV9GUkNEM19PRkZTRVQp LCBETUFfRlJDRF9GX0JJVCk7Cit9CisKIHN0YXRpYyBpbnQgdnZ0ZF9yZWNvcmRfZmF1bHQoc3Ry dWN0IHZ2dGQgKnZ2dGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcnFf cmVtYXBwaW5nX3JlcXVlc3QgKmlycSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGlycV9yZW1hcHBpbmdfcmVxdWVzdCAqcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHJlYXNvbikKIHsKLSAgICByZXR1cm4gMDsKKyAgICBzdHJ1Y3QgdnRkX2Zh dWx0X3JlY29yZF9yZWdpc3RlciBmcmNkOworICAgIGludCBmcmNkX2lkeDsKKworICAgIHN3aXRj aChyZWFzb24pCisgICAgeworICAgIGNhc2UgVlREX0ZSX0lSX1JFUV9SU1ZEOgorICAgIGNhc2Ug VlREX0ZSX0lSX0lOREVYX09WRVI6CisgICAgY2FzZSBWVERfRlJfSVJfRU5UUllfUDoKKyAgICBj YXNlIFZURF9GUl9JUl9ST09UX0lOVkFMOgorICAgIGNhc2UgVlREX0ZSX0lSX0lSVEVfUlNWRDoK KyAgICBjYXNlIFZURF9GUl9JUl9SRVFfQ09NUEFUOgorICAgIGNhc2UgVlREX0ZSX0lSX1NJRF9F UlI6CisgICAgICAgIGlmICggdnZ0ZF90ZXN0X2JpdCh2dnRkLCBETUFSX0ZTVFNfUkVHLCBETUFf RlNUU19QRk9fQklUKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworCisgICAg ICAgIC8qIE5vIGF2YWlsYWJsZSBGYXVsdCBSZWNvcmQgbWVhbnMgRmF1bHQgb3ZlcmZsb3dlZCAq LworICAgICAgICBmcmNkX2lkeCA9IHZ2dGRfYWxsb2NfZnJjZCh2dnRkKTsKKyAgICAgICAgaWYg KCBmcmNkX2lkeCA9PSAtMSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHZ2dGRfcmVwb3J0X25v bl9yZWNvdmVyYWJsZV9mYXVsdCh2dnRkLCBETUFfRlNUU19QRk9fQklUKTsKKyAgICAgICAgICAg IHJldHVybiBYODZFTVVMX09LQVk7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KCZmcmNkLCAw LCBzaXplb2YoZnJjZCkpOworICAgICAgICBmcmNkLmZpZWxkcy5GUiA9ICh1OClyZWFzb247Cisg ICAgICAgIGZyY2QuZmllbGRzLkZJID0gKCh1NjQpaXJxX3JlbWFwcGluZ19yZXF1ZXN0X2luZGV4 KHJlcXVlc3QpKSA8PCAzNjsKKyAgICAgICAgZnJjZC5maWVsZHMuU0lEID0gKHUxNilyZXF1ZXN0 LT5zb3VyY2VfaWQ7CisgICAgICAgIGZyY2QuZmllbGRzLkYgPSAxOworICAgICAgICB2dnRkX2Nv bW1pdF9mcmNkKHZ2dGQsIGZyY2RfaWR4LCAmZnJjZCk7CisgICAgICAgIHJldHVybiBYODZFTVVM X09LQVk7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBnZHBy aW50ayhYRU5MT0dfRVJSLCAiQ2FuJ3QgaGFuZGxlIHZWVEQgRmF1bHQgKHJlYXNvbiAweCV4KS4i LCByZWFzb24pOworICAgIGRvbWFpbl9jcmFzaCh2dnRkLT5kb21haW4pOworICAgIHJldHVybiBY ODZFTVVMX09LQVk7Cit9CisKK3N0YXRpYyBpbnQgdnZ0ZF93cml0ZV9mcmNkMyhzdHJ1Y3QgdnZ0 ZCAqdnZ0ZCwgdWludDMyX3QgdmFsKQoreworICAgIC8qIFdyaXRpbmcgYSAxIG1lYW5zIGNsZWFy IGZhdWx0ICovCisgICAgaWYgKCB2YWwgJiBETUFfRlJDRF9GICkKKyAgICB7CisgICAgICAgIHZ2 dGRfZnJlZV9mcmNkKHZ2dGQsIDApOworICAgICAgICB2dnRkX3JlY29tcHV0aW5nX3BwZih2dnRk KTsKKyAgICB9CisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKworc3RhdGljIGludCB2dnRk X3dyaXRlX2ZlY3RsKHN0cnVjdCB2dnRkICp2dnRkLCB1aW50MzJfdCB2YWwpCit7CisgICAgLyoK KyAgICAgKiBPbmx5IERNQV9GRUNUTF9JTSBiaXQgaXMgd3JpdGFibGUuIEdlbmVyYXRlIHBlbmRp bmcgZXZlbnQgd2hlbiB1bm1hc2suCisgICAgICovCisgICAgaWYgKCAhKHZhbCAmIERNQV9GRUNU TF9JTSkgKQorICAgIHsKKyAgICAgICAgLyogQ2xlYXIgSU0gKi8KKyAgICAgICAgX192dnRkX2Ns ZWFyX2JpdCh2dnRkLCBETUFSX0ZFQ1RMX1JFRywgRE1BX0ZFQ1RMX0lNX0JJVCk7CisgICAgICAg IGlmICggdnZ0ZF90ZXN0X2FuZF9jbGVhcl9iaXQodnZ0ZCwgRE1BUl9GRUNUTF9SRUcsIERNQV9G RUNUTF9JUF9CSVQpICkKKyAgICAgICAgeworICAgICAgICAgICAgdWludDMyX3QgZmVfZGF0YSwg ZmVfYWRkcjsKKyAgICAgICAgICAgIGZlX2RhdGEgPSB2dnRkX2dldF9yZWcodnZ0ZCwgRE1BUl9G RURBVEFfUkVHKTsKKyAgICAgICAgICAgIGZlX2FkZHIgPSB2dnRkX2dldF9yZWcodnZ0ZCwgRE1B Ul9GRUFERFJfUkVHKTsKKyAgICAgICAgICAgIHZ2dGRfZ2VuZXJhdGVfaW50ZXJydXB0KHZ2dGQs IGZlX2FkZHIsIGZlX2RhdGEpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgICAg X192dnRkX3NldF9iaXQodnZ0ZCwgRE1BUl9GRUNUTF9SRUcsIERNQV9GRUNUTF9JTV9CSVQpOwor CisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKworc3RhdGljIGludCB2dnRkX3dyaXRlX2Zz dHMoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IHZhbCkKK3sKKyAgICBpbnQgaSwgbWF4X2Zh dWx0X2luZGV4ID0gRE1BX0ZTVFNfUFJPX0JJVDsKKyAgICB1aW50NjRfdCBiaXRzX3RvX2NsZWFy ID0gdmFsICYgRE1BX0ZTVFNfUlcxQ1M7CisKKyAgICBpID0gZmluZF9maXJzdF9iaXQoJmJpdHNf dG9fY2xlYXIsIG1heF9mYXVsdF9pbmRleCAvIDggKyAxKTsKKyAgICB3aGlsZSAoIGkgPD0gbWF4 X2ZhdWx0X2luZGV4ICkKKyAgICB7CisgICAgICAgIF9fdnZ0ZF9jbGVhcl9iaXQodnZ0ZCwgRE1B Ul9GU1RTX1JFRywgaSk7CisgICAgICAgIGkgPSBmaW5kX25leHRfYml0KCZiaXRzX3RvX2NsZWFy LCBtYXhfZmF1bHRfaW5kZXggLyA4ICsgMSwgaSArIDEpOworICAgIH0KKworICAgIC8qCisgICAg ICogQ2xlYXIgSVAgZmllbGQgd2hlbiBhbGwgc3RhdHVzIGZpZWxkcyBpbiB0aGUgRmF1bHQgU3Rh dHVzIFJlZ2lzdGVyCisgICAgICogYmVpbmcgY2xlYXIuCisgICAgICovCisgICAgaWYgKCAhKCh2 dnRkX2dldF9yZWcodnZ0ZCwgRE1BUl9GU1RTX1JFRykgJiBETUFfRlNUU19GQVVMVFMpKSApCisg ICAgICAgIF9fdnZ0ZF9jbGVhcl9iaXQodnZ0ZCwgRE1BUl9GRUNUTF9SRUcsIERNQV9GRUNUTF9J UF9CSVQpOworCisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKIH0KIAogc3RhdGljIGludCB2dnRk X2hhbmRsZV9nY21kX3FpZShzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDMyX3QgdmFsKQpAQCAtNDEy LDYgKzYyOCwxOCBAQCBzdGF0aWMgaW50IHZ2dGRfd3JpdGUoc3RydWN0IHZjcHUgKnYsIHVuc2ln bmVkIGxvbmcgYWRkciwKICAgICAgICAgICAgIHJldCA9IHZ2dGRfd3JpdGVfZ2NtZCh2dnRkLCB2 YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBETUFSX0ZTVFNfUkVHOgor ICAgICAgICAgICAgcmV0ID0gdnZ0ZF93cml0ZV9mc3RzKHZ2dGQsIHZhbCk7CisgICAgICAgICAg ICBicmVhazsKKworICAgICAgICBjYXNlIERNQVJfRkVDVExfUkVHOgorICAgICAgICAgICAgcmV0 ID0gdnZ0ZF93cml0ZV9mZWN0bCh2dnRkLCB2YWwpOworICAgICAgICAgICAgYnJlYWs7CisKKyAg ICAgICAgY2FzZSBETUFfQ0FQX0ZST19PRkZTRVQgKyBETUFfRlJDRDNfT0ZGU0VUOgorICAgICAg ICAgICAgcmV0ID0gdnZ0ZF93cml0ZV9mcmNkMyh2dnRkLCB2YWwpOworICAgICAgICAgICAgYnJl YWs7CisKICAgICAgICAgY2FzZSBETUFSX0lFREFUQV9SRUc6CiAgICAgICAgIGNhc2UgRE1BUl9J RUFERFJfUkVHOgogICAgICAgICBjYXNlIERNQVJfSUVVQUREUl9SRUc6CkBAIC00MzgsNiArNjY2 LDEwIEBAIHN0YXRpYyBpbnQgdnZ0ZF93cml0ZShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9u ZyBhZGRyLAogICAgICAgICAgICAgcmV0ID0gWDg2RU1VTF9PS0FZOwogICAgICAgICAgICAgYnJl YWs7CiAKKyAgICAgICAgY2FzZSBETUFfQ0FQX0ZST19PRkZTRVQgKyBETUFfRlJDRDJfT0ZGU0VU OgorICAgICAgICAgICAgcmV0ID0gdnZ0ZF93cml0ZV9mcmNkMyh2dnRkLCB2YWwgPj4gMzIpOwor ICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldCA9 IFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02NzUsNiArOTA3 LDcgQEAgc3RhdGljIGludCB2dnRkX2NyZWF0ZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qgdmlv bW11ICp2aW9tbXUpCiAgICAgdnZ0ZC0+ZWltID0gMDsKICAgICB2dnRkLT5pcnQgPSAwOwogICAg IHZ2dGQtPmlydF9tYXhfZW50cnkgPSAwOworICAgIHZ2dGQtPmZyY2RfaWR4ID0gMDsKICAgICBy ZWdpc3Rlcl9tbWlvX2hhbmRsZXIoZCwgJnZ2dGRfbW1pb19vcHMpOwogICAgIHJldHVybiAwOwog CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaCBiL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCmluZGV4IDAzMzYxYzAuLjU0NzRjNzIgMTAw NjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCisrKyBiL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCkBAIC0yMjksMjYgKzIyOSw2NiBAQAogI2Rl ZmluZSBETUFfQ0NNRF9DQUlHX01BU0soeCkgKCgodTY0KXgpICYgKCh1NjQpIDB4MyA8PCA1OSkp CiAKIC8qIEZFQ1RMX1JFRyAqLwotI2RlZmluZSBETUFfRkVDVExfSU0gKCgodTY0KTEpIDw8IDMx KQorI2RlZmluZSBETUFfRkVDVExfSU1fQklUIDMxCisjZGVmaW5lIERNQV9GRUNUTF9JTSAoMVUg PDwgRE1BX0ZFQ1RMX0lNX0JJVCkKKyNkZWZpbmUgRE1BX0ZFQ1RMX0lQX0JJVCAzMAorI2RlZmlu ZSBETUFfRkVDVExfSVAgKDFVIDw8IERNQV9GRUNUTF9JUF9CSVQpCiAKIC8qIEZTVFNfUkVHICov Ci0jZGVmaW5lIERNQV9GU1RTX1BGTyAoKHU2NCkxIDw8IDApCi0jZGVmaW5lIERNQV9GU1RTX1BQ RiAoKHU2NCkxIDw8IDEpCi0jZGVmaW5lIERNQV9GU1RTX0FGTyAoKHU2NCkxIDw8IDIpCi0jZGVm aW5lIERNQV9GU1RTX0FQRiAoKHU2NCkxIDw8IDMpCi0jZGVmaW5lIERNQV9GU1RTX0lRRSAoKHU2 NCkxIDw8IDQpCi0jZGVmaW5lIERNQV9GU1RTX0lDRSAoKHU2NCkxIDw8IDUpCi0jZGVmaW5lIERN QV9GU1RTX0lURSAoKHU2NCkxIDw8IDYpCi0jZGVmaW5lIERNQV9GU1RTX0ZBVUxUUyAgICBETUFf RlNUU19QRk8gfCBETUFfRlNUU19QUEYgfCBETUFfRlNUU19BRk8gfCBETUFfRlNUU19BUEYgfCBE TUFfRlNUU19JUUUgfCBETUFfRlNUU19JQ0UgfCBETUFfRlNUU19JVEUKKyNkZWZpbmUgRE1BX0ZT VFNfUEZPX0JJVCAwCisjZGVmaW5lIERNQV9GU1RTX1BGTyAoMVUgPDwgRE1BX0ZTVFNfUEZPX0JJ VCkKKyNkZWZpbmUgRE1BX0ZTVFNfUFBGX0JJVCAxCisjZGVmaW5lIERNQV9GU1RTX1BQRiAoMVUg PDwgRE1BX0ZTVFNfUFBGX0JJVCkKKyNkZWZpbmUgRE1BX0ZTVFNfQUZPICgxVSA8PCAyKQorI2Rl ZmluZSBETUFfRlNUU19BUEYgKDFVIDw8IDMpCisjZGVmaW5lIERNQV9GU1RTX0lRRSAoMVUgPDwg NCkKKyNkZWZpbmUgRE1BX0ZTVFNfSUNFICgxVSA8PCA1KQorI2RlZmluZSBETUFfRlNUU19JVEUg KDFVIDw8IDYpCisjZGVmaW5lIERNQV9GU1RTX1BST19CSVQgNworI2RlZmluZSBETUFfRlNUU19Q Uk8gKDFVIDw8IERNQV9GU1RTX1BST19CSVQpCisjZGVmaW5lIERNQV9GU1RTX0ZBVUxUUyAgICAo RE1BX0ZTVFNfUEZPIHwgRE1BX0ZTVFNfUFBGIHwgRE1BX0ZTVFNfQUZPIHwgRE1BX0ZTVFNfQVBG IHwgRE1BX0ZTVFNfSVFFIHwgRE1BX0ZTVFNfSUNFIHwgRE1BX0ZTVFNfSVRFIHwgRE1BX0ZTVFNf UFJPKQorI2RlZmluZSBETUFfRlNUU19SVzFDUyAgICAgKERNQV9GU1RTX1BGTyB8IERNQV9GU1RT X0FGTyB8IERNQV9GU1RTX0FQRiB8IERNQV9GU1RTX0lRRSB8IERNQV9GU1RTX0lDRSB8IERNQV9G U1RTX0lURSB8IERNQV9GU1RTX1BSTykKICNkZWZpbmUgZG1hX2ZzdHNfZmF1bHRfcmVjb3JkX2lu ZGV4KHMpICgoKHMpID4+IDgpICYgMHhmZikKIAogLyogRlJDRF9SRUcsIDMyIGJpdHMgYWNjZXNz ICovCi0jZGVmaW5lIERNQV9GUkNEX0YgKCgodTY0KTEpIDw8IDMxKQorI2RlZmluZSBETUFfRlJD RF9MRU4gICAgICAgICAgICAweDEwCisjZGVmaW5lIERNQV9GUkNEMF9PRkZTRVQgICAgICAgIDB4 MAorI2RlZmluZSBETUFfRlJDRDFfT0ZGU0VUICAgICAgICAweDQKKyNkZWZpbmUgRE1BX0ZSQ0Qy X09GRlNFVCAgICAgICAgMHg4CisjZGVmaW5lIERNQV9GUkNEM19PRkZTRVQgICAgICAgIDB4Ywor I2RlZmluZSBETUFfRlJDRDNfRlJfTUFTSyAgICAgICAweGZmVUwKKyNkZWZpbmUgRE1BX0ZSQ0Rf Rl9CSVQgMzEKKyNkZWZpbmUgRE1BX0ZSQ0RfRiAoKHU2NCkxIDw8IERNQV9GUkNEX0ZfQklUKQor I2RlZmluZSBETUFfRlJDRChpZHgsIG9mZnNldCkgKERNQV9DQVBfRlJPX09GRlNFVCArIERNQV9G UkNEX0xFTiAqIGlkeCArIG9mZnNldCkKICNkZWZpbmUgZG1hX2ZyY2RfdHlwZShkKSAoKGQgPj4g MzApICYgMSkKICNkZWZpbmUgZG1hX2ZyY2RfZmF1bHRfcmVhc29uKGMpIChjICYgMHhmZikKICNk ZWZpbmUgZG1hX2ZyY2Rfc291cmNlX2lkKGMpIChjICYgMHhmZmZmKQogI2RlZmluZSBkbWFfZnJj ZF9wYWdlX2FkZHIoZCkgKGQgJiAoKCh1NjQpLTEpIDw8IDEyKSkgLyogbG93IDY0IGJpdCAqLwog CitzdHJ1Y3QgdnRkX2ZhdWx0X3JlY29yZF9yZWdpc3RlcgoreworICAgIHVuaW9uIHsKKyAgICAg ICAgc3RydWN0IHsKKyAgICAgICAgICAgIHU2NCBsbzsKKyAgICAgICAgICAgIHU2NCBoaTsKKyAg ICAgICAgfSBiaXRzOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdTY0IHJzdmQwICAg OjEyLAorICAgICAgICAgICAgICAgIEZJICAgICAgOjUyOyAvKiBGYXVsdCBJbmZvICovCisgICAg ICAgICAgICB1NjQgU0lEICAgICA6MTYsIC8qIFNvdXJjZSBJZGVudGlmaWVyICovCisgICAgICAg ICAgICAgICAgcnN2ZDEgICA6OSwKKyAgICAgICAgICAgICAgICBQUklWICAgIDoxLCAgLyogUHJp dmlsZWdlIE1vZGUgUmVxdWVzdGVkICovCisgICAgICAgICAgICAgICAgRVhFICAgICA6MSwgIC8q IEV4ZWN1dGUgUGVybWlzc2lvbiBSZXF1ZXN0ZWQgKi8KKyAgICAgICAgICAgICAgICBQUCAgICAg IDoxLCAgLyogUEFTSUQgUHJlc2VudCAqLworICAgICAgICAgICAgICAgIEZSICAgICAgOjgsICAv KiBGYXVsdCBSZWFzb24gKi8KKyAgICAgICAgICAgICAgICBQViAgICAgIDoyMCwgLyogUEFTSUQg VmFsdWUgKi8KKyAgICAgICAgICAgICAgICBBVCAgICAgIDoyLCAgLyogQWRkcmVzcyBUeXBlICov CisgICAgICAgICAgICAgICAgVCAgICAgICA6MSwgIC8qIFR5cGUuICgwKSBXcml0ZSAoMSkgUmVh ZC9BdG9taWNPcCAqLworICAgICAgICAgICAgICAgIEYgICAgICAgOjE7ICAvKiBGYXVsdCAqLwor ICAgICAgICB9IGZpZWxkczsKKyAgICB9OworfTsKKwogZW51bSBWVERfRkFVTFRfVFlQRQogewog ICAgIC8qIEludGVycnVwdCByZW1hcHBpbmcgdHJhbnNpdGlvbiBmYXVsdHMgKi8KLS0gCjEuOC4z LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK