From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [RFC PATCH 10/23] x86/hvm: Introduce a emulated VTD for HVM Date: Fri, 17 Mar 2017 19:27:10 +0800 Message-ID: <1489750043-17260-11-git-send-email-tianyu.lan@intel.com> References: <1489750043-17260-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: <1489750043-17260-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@intel.com List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KCk9ubHkgYWRkIGNyZWF0ZS9kZXN0 cm95IGZ1bmN0aW9uIGZvciB0aGUgZW11bGF0ZWQgVlREIGluIHRoaXMgcGF0Y2ggYW5kIGFkYXB0 Cml0IHRvIGNvbW1vbiBWSU9NTVUgbGF5ZXIuIHdlIHdpbGwgYWRkIG1vcmUgc3ViLWZlYXR1cmUg b2YgdGhpcyBlbXVsYXRlZCBWVEQuCgpTaWduZWQtb2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5nYW9A aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBMYW4gVGlhbnl1IDx0aWFueXUubGFuQGludGVsLmNv bT4KLS0tCiB4ZW4vYXJjaC94ODYvaHZtL01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiB4ZW4v YXJjaC94ODYvaHZtL3Z2dGQuYyAgICAgICAgICAgICB8IDE3MyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oIHwg MTAyICsrKysrKysrKysrKysrKystLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni92aW9tbXUuaCAg ICAgICAgfCAgIDkgKysKIDQgZmlsZXMgY2hhbmdlZCwgMjYyIGluc2VydGlvbnMoKyksIDIzIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9odm0vdnZ0ZC5jCgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9odm0v TWFrZWZpbGUKaW5kZXggZWMwZGFhZS4uM2E2Y2U1MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L2h2bS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvaHZtL01ha2VmaWxlCkBAIC0yMSw2ICsy MSw3IEBAIG9iai15ICs9IHJ0Yy5vCiBvYmoteSArPSBzYXZlLm8KIG9iai15ICs9IHN0ZHZnYS5v CiBvYmoteSArPSB2aW9hcGljLm8KK29iai15ICs9IHZ2dGQubwogb2JqLXkgKz0gdmlyaWRpYW4u bwogb2JqLXkgKz0gdmxhcGljLm8KIG9iai15ICs9IHZtc2kubwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS92dnRkLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Z2dGQuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzg0MmI5Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2Fy Y2gveDg2L2h2bS92dnRkLmMKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiB2dnRkLmMKKyAqCisg KiB2aXJ0dWFsaXplIFZURCBmb3IgSFZNLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBDaGFv IEdhbywgSW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBM aWNlbnNlLCB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgorI2luY2x1ZGUg PHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi92aW9t bXUuaD4KKyNpbmNsdWRlIDx4ZW4veG1hbGxvYy5oPgorI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+ CisjaW5jbHVkZSA8YXNtL2h2bS9kb21haW4uaD4KKyNpbmNsdWRlIDxhc20vcGFnZS5oPgorI2lu Y2x1ZGUgPHB1YmxpYy92aW9tbXUuaD4KKworI2luY2x1ZGUgIi4uLy4uLy4uL2RyaXZlcnMvcGFz c3Rocm91Z2gvdnRkL2lvbW11LmgiCisKK3N0cnVjdCBodm1faHdfdnZ0ZF9yZWdzIHsKKyAgICB1 aW50OF90IGRhdGFbMTAyNF07Cit9OworCisvKiBTdGF0dXMgZmllbGQgb2Ygc3RydWN0IHZ2dGQg Ki8KKyNkZWZpbmUgVklPTU1VX1NUQVRVU19JUlFfUkVNQVBQSU5HX0VOQUJMRUQgICAgICgxIDw8 IDApCisjZGVmaW5lIFZJT01NVV9TVEFUVVNfRE1BX1JFTUFQUElOR19FTkFCTEVEICAgICAoMSA8 PCAxKQorCitzdHJ1Y3QgdnZ0ZCB7CisgICAgLyogVklPTU1VX1NUQVRVU19YWFhfUkVNQVBQSU5H X0VOQUJMRUQgKi8KKyAgICBpbnQgc3RhdHVzOworICAgIC8qIEJhc2UgYWRkcmVzcyBvZiByZW1h cHBpbmcgaGFyZHdhcmUgcmVnaXN0ZXItc2V0ICovCisgICAgdWludDY0X3QgYmFzZV9hZGRyOwor ICAgIC8qIFBvaW50IGJhY2sgdG8gdGhlIG93bmVyIGRvbWFpbiAqLworICAgIHN0cnVjdCBkb21h aW4gKmRvbWFpbjsKKyAgICBzdHJ1Y3QgaHZtX2h3X3Z2dGRfcmVncyAqcmVnczsKKyAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpyZWdzX3BhZ2U7Cit9OworCitzdGF0aWMgaW5saW5lIHZvaWQgdnZ0ZF9z ZXRfcmVnKHN0cnVjdCB2dnRkICp2dGQsIHVpbnQzMl90IHJlZywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgdmFsdWUpCit7CisgICAgKigodWludDMyX3QgKikoJnZ0 ZC0+cmVncy0+ZGF0YVtyZWddKSkgPSB2YWx1ZTsKK30KKworc3RhdGljIGlubGluZSB1aW50MzJf dCB2dnRkX2dldF9yZWcoc3RydWN0IHZ2dGQgKnZ0ZCwgdWludDMyX3QgcmVnKQoreworICAgIHJl dHVybiAqKCh1aW50MzJfdCAqKSgmdnRkLT5yZWdzLT5kYXRhW3JlZ10pKTsKK30KKworc3RhdGlj IGlubGluZSB1aW50OF90IHZ2dGRfZ2V0X3JlZ19ieXRlKHN0cnVjdCB2dnRkICp2dGQsIHVpbnQz Ml90IHJlZykKK3sKKyAgICByZXR1cm4gKigodWludDhfdCAqKSgmdnRkLT5yZWdzLT5kYXRhW3Jl Z10pKTsKK30KKworI2RlZmluZSB2dnRkX2dldF9yZWdfcXVhZCh2dnRkLCByZWcsIHZhbCkgZG8g eyBcCisgICAgKHZhbCkgPSB2dnRkX2dldF9yZWcodnZ0ZCwgKHJlZykgKyA0ICk7IFwKKyAgICAo dmFsKSA9ICh2YWwpIDw8IDMyOyBcCisgICAgKHZhbCkgKz0gdnZ0ZF9nZXRfcmVnKHZ2dGQsIHJl Zyk7IFwKK30gd2hpbGUoMCkKKyNkZWZpbmUgdnZ0ZF9zZXRfcmVnX3F1YWQodnZ0ZCwgcmVnLCB2 YWwpIGRvIHsgXAorICAgIHZ2dGRfc2V0X3JlZyh2dnRkLCByZWcsICh1aW50MzJfdCkoKHZhbCkg JiAweGZmZmZmZmZmKSk7IFwKKyAgICB2dnRkX3NldF9yZWcodnZ0ZCwgKHJlZykgKyA0LCAodWlu dDMyX3QpKCh2YWwpID4+IDMyKSk7IFwKK30gd2hpbGUoMCkKKworc3RhdGljIHZvaWQgdnZ0ZF9y ZXNldChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDY0X3QgY2FwYWJpbGl0eSkKK3sKKyAgICB1aW50 NjRfdCBjYXAsIGVjYXA7CisKKyAgICBjYXAgPSBETUFfQ0FQX05GUiB8IERNQV9DQVBfU0xMUFMg fCBETUFfQ0FQX0ZSTyB8IFwKKyAgICAgICAgICBETUFfQ0FQX01HQVcgfCBETUFfQ0FQX1NBR0FX IHwgRE1BX0NBUF9ORDsKKyAgICBlY2FwID0gRE1BX0VDQVBfSVIgfCBETUFfRUNBUF9FSU0gfCBE TUFfRUNBUF9RSTsKKyAgICB2dnRkX3NldF9yZWcodnZ0ZCwgRE1BUl9WRVJfUkVHLCAweDEwVUwp OworICAgIHZ2dGRfc2V0X3JlZ19xdWFkKHZ2dGQsIERNQVJfQ0FQX1JFRywgY2FwKTsKKyAgICB2 dnRkX3NldF9yZWdfcXVhZCh2dnRkLCBETUFSX0VDQVBfUkVHLCBlY2FwKTsKKyAgICB2dnRkX3Nl dF9yZWcodnZ0ZCwgRE1BUl9HQ01EX1JFRywgMCk7CisgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIERN QVJfR1NUU19SRUcsIDApOworICAgIHZ2dGRfc2V0X3JlZyh2dnRkLCBETUFSX1JUQUREUl9SRUcs IDApOworICAgIHZ2dGRfc2V0X3JlZ19xdWFkKHZ2dGQsIERNQVJfQ0NNRF9SRUcsIDB4MFVMTCk7 CisgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIERNQVJfRlNUU19SRUcsIDApOworICAgIHZ2dGRfc2V0 X3JlZyh2dnRkLCBETUFSX0ZFQ1RMX1JFRywgMHg4MDAwMDAwMFVMKTsKKyAgICB2dnRkX3NldF9y ZWcodnZ0ZCwgRE1BUl9GRURBVEFfUkVHLCAwKTsKKyAgICB2dnRkX3NldF9yZWcodnZ0ZCwgRE1B Ul9GRUFERFJfUkVHLCAwKTsKKyAgICB2dnRkX3NldF9yZWcodnZ0ZCwgRE1BUl9GRVVBRERSX1JF RywgMCk7CisgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIERNQVJfUE1FTl9SRUcsIDApOworICAgIHZ2 dGRfc2V0X3JlZ19xdWFkKHZ2dGQsIERNQVJfSVFIX1JFRywgMHgwVUxMKTsKKyAgICB2dnRkX3Nl dF9yZWdfcXVhZCh2dnRkLCBETUFSX0lRVF9SRUcsIDB4MFVMTCk7CisgICAgdnZ0ZF9zZXRfcmVn X3F1YWQodnZ0ZCwgRE1BUl9JUUFfUkVHLCAweDBVTEwpOworICAgIHZ2dGRfc2V0X3JlZyh2dnRk LCBETUFSX0lDU19SRUcsIDApOworICAgIHZ2dGRfc2V0X3JlZyh2dnRkLCBETUFSX0lFQ1RMX1JF RywgMHg4MDAwMDAwMFVMKTsKKyAgICB2dnRkX3NldF9yZWcodnZ0ZCwgRE1BUl9JRURBVEFfUkVH LCAwKTsKKyAgICB2dnRkX3NldF9yZWcodnZ0ZCwgRE1BUl9JRUFERFJfUkVHLCAwKTsKKyAgICB2 dnRkX3NldF9yZWcodnZ0ZCwgRE1BUl9JRVVBRERSX1JFRywgMCk7CisgICAgdnZ0ZF9zZXRfcmVn KHZ2dGQsIERNQVJfSVJUQV9SRUcsIDApOworfQorCitzdGF0aWMgc3RydWN0IHZ2dGQgKl9fdnZ0 ZF9jcmVhdGUoc3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCBiYXNlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDY0X3QgY2FwKQoreworICAgIHN0cnVjdCB2dnRkICp2dnRkOworCisgICAgaWYgKCAh aXNfaHZtX2RvbWFpbihkKSApCisgICAgICAgIHJldHVybiAwOworCisgICAgdnZ0ZCA9IHhtYWxs b2NfYnl0ZXMoc2l6ZW9mKHN0cnVjdCB2dnRkKSk7CisgICAgaWYgKCB2dnRkID09IE5VTEwgKQor ICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZ2dGQtPnJlZ3NfcGFnZSA9IGFsbG9jX2RvbWhl YXBfcGFnZShkLCBNRU1GX25vX293bmVyKTsKKyAgICBpZiAoIHZ2dGQtPnJlZ3NfcGFnZSA9PSBO VUxMICkKKyAgICAgICAgZ290byBvdXQxOworCisgICAgdnZ0ZC0+cmVncyA9IF9fbWFwX2RvbWFp bl9wYWdlX2dsb2JhbCh2dnRkLT5yZWdzX3BhZ2UpOworICAgIGlmICggdnZ0ZC0+cmVncyA9PSBO VUxMICkKKyAgICAgICAgZ290byBvdXQyOworICAgIGNsZWFyX3BhZ2UodnZ0ZC0+cmVncyk7CisK KyAgICB2dnRkX3Jlc2V0KHZ2dGQsIGNhcCk7CisgICAgdnZ0ZC0+YmFzZV9hZGRyID0gYmFzZV9h ZGRyOworICAgIHZ2dGQtPmRvbWFpbiA9IGQ7CisgICAgdnZ0ZC0+c3RhdHVzID0gMDsKKyAgICBy ZXR1cm4gdnZ0ZDsKKworb3V0MjoKKyAgICBmcmVlX2RvbWhlYXBfcGFnZSh2dnRkLT5yZWdzX3Bh Z2UpOworb3V0MToKKyAgICB4ZnJlZSh2dnRkKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3Rh dGljIHZvaWQgX192dnRkX2Rlc3Ryb3koc3RydWN0IHZ2dGQgKnZ2dGQpCit7CisgICAgdW5tYXBf ZG9tYWluX3BhZ2VfZ2xvYmFsKHZ2dGQtPnJlZ3MpOworICAgIGZyZWVfZG9taGVhcF9wYWdlKHZ2 dGQtPnJlZ3NfcGFnZSk7CisgICAgeGZyZWUodnZ0ZCk7Cit9CisKK3N0YXRpYyB1NjQgdnZ0ZF9x dWVyeV9jYXBzKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgcmV0dXJuIFZJT01NVV9DQVBfSVJR X1JFTUFQUElORzsKK30KKworc3RhdGljIGludCB2dnRkX2NyZWF0ZShzdHJ1Y3QgZG9tYWluICpk LCBzdHJ1Y3QgdmlvbW11ICp2aW9tbXUpCit7CisgICAgdmlvbW11LT5wcml2ID0gKHZvaWQgKilf X3Z2dGRfY3JlYXRlKGQsIHZpb21tdS0+YmFzZV9hZGRyZXNzLCB2aW9tbXUtPmNhcHMpOworICAg IHJldHVybiB2aW9tbXUtPnByaXYgPyAwIDogLUVOT01FTTsKK30KKworc3RhdGljIGludCB2dnRk X2Rlc3Ryb3koc3RydWN0IHZpb21tdSAqdmlvbW11KQoreworICAgIGlmICggdmlvbW11LT5wcml2 ICkKKyAgICAgICAgX192dnRkX2Rlc3Ryb3kodmlvbW11LT5wcml2KTsKKyAgICByZXR1cm4gMDsK K30KKworc3RydWN0IHZpb21tdV9vcHMgdnZ0ZF9odm1fdm14X29wcyA9IHsKKyAgICAucXVlcnlf Y2FwcyA9IHZ2dGRfcXVlcnlfY2FwcywKKyAgICAuY3JlYXRlID0gdnZ0ZF9jcmVhdGUsCisgICAg LmRlc3Ryb3kgPSB2dnRkX2Rlc3Ryb3kKK307CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvaW9tbXUuaCBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5o CmluZGV4IDcyYzFhMmUuLjJlOWRjYWEgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3Z0ZC9pb21tdS5oCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5o CkBAIC0yMywzMSArMjMsNTQgQEAKICNpbmNsdWRlIDxhc20vbXNpLmg+CiAKIC8qCi0gKiBJbnRl bCBJT01NVSByZWdpc3RlciBzcGVjaWZpY2F0aW9uIHBlciB2ZXJzaW9uIDEuMCBwdWJsaWMgc3Bl Yy4KKyAqIEludGVsIElPTU1VIHJlZ2lzdGVyIHNwZWNpZmljYXRpb24gcGVyIHZlcnNpb24gMi40 IHB1YmxpYyBzcGVjLgogICovCiAKLSNkZWZpbmUgICAgRE1BUl9WRVJfUkVHICAgIDB4MCAgICAv KiBBcmNoIHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoaXMgSU9NTVUgKi8KLSNkZWZpbmUgICAgRE1B Ul9DQVBfUkVHICAgIDB4OCAgICAvKiBIYXJkd2FyZSBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzICov Ci0jZGVmaW5lICAgIERNQVJfRUNBUF9SRUcgICAgMHgxMCAgICAvKiBFeHRlbmRlZCBjYXBhYmls aXRpZXMgc3VwcG9ydGVkICovCi0jZGVmaW5lICAgIERNQVJfR0NNRF9SRUcgICAgMHgxOCAgICAv KiBHbG9iYWwgY29tbWFuZCByZWdpc3RlciAqLwotI2RlZmluZSAgICBETUFSX0dTVFNfUkVHICAg IDB4MWMgICAgLyogR2xvYmFsIHN0YXR1cyByZWdpc3RlciAqLwotI2RlZmluZSAgICBETUFSX1JU QUREUl9SRUcgICAgMHgyMCAgICAvKiBSb290IGVudHJ5IHRhYmxlICovCi0jZGVmaW5lICAgIERN QVJfQ0NNRF9SRUcgICAgMHgyOCAgICAvKiBDb250ZXh0IGNvbW1hbmQgcmVnICovCi0jZGVmaW5l ICAgIERNQVJfRlNUU19SRUcgICAgMHgzNCAgICAvKiBGYXVsdCBTdGF0dXMgcmVnaXN0ZXIgKi8K LSNkZWZpbmUgICAgRE1BUl9GRUNUTF9SRUcgICAgMHgzOCAgICAvKiBGYXVsdCBjb250cm9sIHJl Z2lzdGVyICovCi0jZGVmaW5lICAgIERNQVJfRkVEQVRBX1JFRyAgICAweDNjICAgIC8qIEZhdWx0 IGV2ZW50IGludGVycnVwdCBkYXRhIHJlZ2lzdGVyICovCi0jZGVmaW5lICAgIERNQVJfRkVBRERS X1JFRyAgICAweDQwICAgIC8qIEZhdWx0IGV2ZW50IGludGVycnVwdCBhZGRyIHJlZ2lzdGVyICov Ci0jZGVmaW5lICAgIERNQVJfRkVVQUREUl9SRUcgMHg0NCAgICAvKiBVcHBlciBhZGRyZXNzIHJl Z2lzdGVyICovCi0jZGVmaW5lICAgIERNQVJfQUZMT0dfUkVHICAgIDB4NTggICAgLyogQWR2YW5j ZWQgRmF1bHQgY29udHJvbCAqLwotI2RlZmluZSAgICBETUFSX1BNRU5fUkVHICAgIDB4NjQgICAg LyogRW5hYmxlIFByb3RlY3RlZCBNZW1vcnkgUmVnaW9uICovCi0jZGVmaW5lICAgIERNQVJfUExN QkFTRV9SRUcgMHg2OCAgICAvKiBQTVJSIExvdyBhZGRyICovCi0jZGVmaW5lICAgIERNQVJfUExN TElNSVRfUkVHIDB4NmMgICAgLyogUE1SUiBsb3cgbGltaXQgKi8KLSNkZWZpbmUgICAgRE1BUl9Q SE1CQVNFX1JFRyAweDcwICAgIC8qIHBtcnIgaGlnaCBiYXNlIGFkZHIgKi8KLSNkZWZpbmUgICAg RE1BUl9QSE1MSU1JVF9SRUcgMHg3OCAgICAvKiBwbXJyIGhpZ2ggbGltaXQgKi8KLSNkZWZpbmUg ICAgRE1BUl9JUUhfUkVHICAgIDB4ODAgICAgLyogaW52YWxpZGF0aW9uIHF1ZXVlIGhlYWQgKi8K LSNkZWZpbmUgICAgRE1BUl9JUVRfUkVHICAgIDB4ODggICAgLyogaW52YWxpZGF0aW9uIHF1ZXVl IHRhaWwgKi8KLSNkZWZpbmUgICAgRE1BUl9JUUFfUkVHICAgIDB4OTAgICAgLyogaW52YWxpZGF0 aW9uIHF1ZXVlIGFkZHIgKi8KLSNkZWZpbmUgICAgRE1BUl9JUlRBX1JFRyAgIDB4QjggICAgLyog aW50ciByZW1hcCAqLworI2RlZmluZSBETUFSX1ZFUl9SRUcgICAgICAgICAgICAweDAgIC8qIEFy Y2ggdmVyc2lvbiBzdXBwb3J0ZWQgYnkgdGhpcyBJT01NVSAqLworI2RlZmluZSBETUFSX0NBUF9S RUcgICAgICAgICAgICAweDggIC8qIEhhcmR3YXJlIHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMgKi8K KyNkZWZpbmUgRE1BUl9FQ0FQX1JFRyAgICAgICAgICAgMHgxMCAvKiBFeHRlbmRlZCBjYXBhYmls aXRpZXMgc3VwcG9ydGVkICovCisjZGVmaW5lIERNQVJfR0NNRF9SRUcgICAgICAgICAgIDB4MTgg LyogR2xvYmFsIGNvbW1hbmQgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BUl9HU1RTX1JFRyAgICAg ICAgICAgMHgxYyAvKiBHbG9iYWwgc3RhdHVzIHJlZ2lzdGVyICovCisjZGVmaW5lIERNQVJfUlRB RERSX1JFRyAgICAgICAgIDB4MjAgLyogUm9vdCBlbnRyeSB0YWJsZSAqLworI2RlZmluZSBETUFS X0NDTURfUkVHICAgICAgICAgICAweDI4IC8qIENvbnRleHQgY29tbWFuZCByZWcgKi8KKyNkZWZp bmUgRE1BUl9GU1RTX1JFRyAgICAgICAgICAgMHgzNCAvKiBGYXVsdCBTdGF0dXMgcmVnaXN0ZXIg Ki8KKyNkZWZpbmUgRE1BUl9GRUNUTF9SRUcgICAgICAgICAgMHgzOCAvKiBGYXVsdCBjb250cm9s IHJlZ2lzdGVyICovCisjZGVmaW5lIERNQVJfRkVEQVRBX1JFRyAgICAgICAgIDB4M2MgLyogRmF1 bHQgZXZlbnQgaW50ZXJydXB0IGRhdGEgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BUl9GRUFERFJf UkVHICAgICAgICAgMHg0MCAvKiBGYXVsdCBldmVudCBpbnRlcnJ1cHQgYWRkciByZWdpc3RlciAq LworI2RlZmluZSBETUFSX0ZFVUFERFJfUkVHICAgICAgICAweDQ0IC8qIFVwcGVyIGFkZHJlc3Mg cmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BUl9BRkxPR19SRUcgICAgICAgICAgMHg1OCAvKiBBZHZh bmNlZCBGYXVsdCBjb250cm9sICovCisjZGVmaW5lIERNQVJfUE1FTl9SRUcgICAgICAgICAgIDB4 NjQgLyogRW5hYmxlIFByb3RlY3RlZCBNZW1vcnkgUmVnaW9uICovCisjZGVmaW5lIERNQVJfUExN QkFTRV9SRUcgICAgICAgIDB4NjggLyogUE1SUiBMb3cgYWRkciAqLworI2RlZmluZSBETUFSX1BM TUxJTUlUX1JFRyAgICAgICAweDZjIC8qIFBNUlIgbG93IGxpbWl0ICovCisjZGVmaW5lIERNQVJf UEhNQkFTRV9SRUcgICAgICAgIDB4NzAgLyogcG1yciBoaWdoIGJhc2UgYWRkciAqLworI2RlZmlu ZSBETUFSX1BITUxJTUlUX1JFRyAgICAgICAweDc4IC8qIHBtcnIgaGlnaCBsaW1pdCAqLworI2Rl ZmluZSBETUFSX0lRSF9SRUcgICAgICAgICAgICAweDgwIC8qIGludmFsaWRhdGlvbiBxdWV1ZSBo ZWFkICovCisjZGVmaW5lIERNQVJfSVFUX1JFRyAgICAgICAgICAgIDB4ODggLyogaW52YWxpZGF0 aW9uIHF1ZXVlIHRhaWwgKi8KKyNkZWZpbmUgRE1BUl9JUVRfUkVHX0hJICAgICAgICAgMHg4Ywor I2RlZmluZSBETUFSX0lRQV9SRUcgICAgICAgICAgICAweDkwIC8qIGludmFsaWRhdGlvbiBxdWV1 ZSBhZGRyICovCisjZGVmaW5lIERNQVJfSVFBX1JFR19ISSAgICAgICAgIDB4OTQKKyNkZWZpbmUg RE1BUl9JQ1NfUkVHICAgICAgICAgICAgMHg5YyAvKiBJbnZhbGlkYXRpb24gY29tcGxldGUgc3Rh dHVzICovCisjZGVmaW5lIERNQVJfSUVDVExfUkVHICAgICAgICAgIDB4YTAgLyogSW52YWxpZGF0 aW9uIGV2ZW50IGNvbnRyb2wgKi8KKyNkZWZpbmUgRE1BUl9JRURBVEFfUkVHICAgICAgICAgMHhh NCAvKiBJbnZhbGlkYXRpb24gZXZlbnQgZGF0YSAqLworI2RlZmluZSBETUFSX0lFQUREUl9SRUcg ICAgICAgICAweGE4IC8qIEludmFsaWRhdGlvbiBldmVudCBhZGRyZXNzICovCisjZGVmaW5lIERN QVJfSUVVQUREUl9SRUcgICAgICAgIDB4YWMgLyogSW52YWxpZGF0aW9uIGV2ZW50IGFkZHJlc3Mg Ki8KKyNkZWZpbmUgRE1BUl9JUlRBX1JFRyAgICAgICAgICAgMHhiOCAvKiBJbnRlcnJ1cHQgcmVt YXBwaW5nIHRhYmxlIGFkZHIgKi8KKyNkZWZpbmUgRE1BUl9JUlRBX1JFR19ISSAgICAgICAgMHhi YworI2RlZmluZSBETUFSX1BRSF9SRUcgICAgICAgICAgICAweGMwIC8qIFBhZ2UgcmVxdWVzdCBx dWV1ZSBoZWFkICovCisjZGVmaW5lIERNQVJfUFFIX1JFR19ISSAgICAgICAgIDB4YzQKKyNkZWZp bmUgRE1BUl9QUVRfUkVHICAgICAgICAgICAgMHhjOCAvKiBQYWdlIHJlcXVlc3QgcXVldWUgdGFp bCovCisjZGVmaW5lIERNQVJfUFFUX1JFR19ISSAgICAgICAgIDB4Y2MKKyNkZWZpbmUgRE1BUl9Q UUFfUkVHICAgICAgICAgICAgMHhkMCAvKiBQYWdlIHJlcXVlc3QgcXVldWUgYWRkcmVzcyAqLwor I2RlZmluZSBETUFSX1BRQV9SRUdfSEkgICAgICAgICAweGQ0CisjZGVmaW5lIERNQVJfUFJTX1JF RyAgICAgICAgICAgIDB4ZGMgLyogUGFnZSByZXF1ZXN0IHN0YXR1cyAqLworI2RlZmluZSBETUFS X1BFQ1RMX1JFRyAgICAgICAgICAweGUwIC8qIFBhZ2UgcmVxdWVzdCBldmVudCBjb250cm9sICov CisjZGVmaW5lIERNQVJfUEVEQVRBX1JFRyAgICAgICAgIDB4ZTQgLyogUGFnZSByZXF1ZXN0IGV2 ZW50IGRhdGEgKi8KKyNkZWZpbmUgRE1BUl9QRUFERFJfUkVHICAgICAgICAgMHhlOCAvKiBQYWdl IHJlcXVlc3QgZXZlbnQgYWRkcmVzcyAqLworI2RlZmluZSBETUFSX1BFVUFERFJfUkVHICAgICAg ICAweGVjIC8qIFBhZ2UgZXZlbnQgdXBwZXIgYWRkcmVzcyAqLworI2RlZmluZSBETUFSX01UUlJD QVBfUkVHICAgICAgICAweDEwMCAvKiBNVFJSIGNhcGFiaWxpdHkgKi8KKyNkZWZpbmUgRE1BUl9N VFJSQ0FQX1JFR19ISSAgICAgMHgxMDQKKyNkZWZpbmUgRE1BUl9NVFJSREVGX1JFRyAgICAgICAg MHgxMDggLyogTVRSUiBkZWZhdWx0IHR5cGUgKi8KKyNkZWZpbmUgRE1BUl9NVFJSREVGX1JFR19I SSAgICAgMHgxMGMKIAogI2RlZmluZSBPRkZTRVRfU1RSSURFICAgICAgICAoOSkKICNkZWZpbmUg ZG1hcl9yZWFkbChkbWFyLCByZWcpIHJlYWRsKChkbWFyKSArIChyZWcpKQpAQCAtNTgsNiArODEs MzEgQEAKICNkZWZpbmUgVkVSX01BSk9SKHYpICAgICAgICAoKCh2KSAmIDB4ZjApID4+IDQpCiAj ZGVmaW5lIFZFUl9NSU5PUih2KSAgICAgICAgKCh2KSAmIDB4MGYpCiAKKy8qIENBUF9SRUcgKi8K Ky8qIChvZmZzZXQgPj4gNCkgPDwgMjQgKi8KKyNkZWZpbmUgRE1BX0RPTUFJTl9JRF9TSElGVCAg ICAgICAgIDE2ICAvKiAxNi1iaXQgZG9tYWluIGlkIGZvciA2NEsgZG9tYWlucyAqLworI2RlZmlu ZSBETUFfRE9NQUlOX0lEX01BU0sgICAgICAgICAgKCgxVUwgPDwgRE1BX0RPTUFJTl9JRF9TSElG VCkgLSAxKQorI2RlZmluZSBETUFfQ0FQX05EICAgICAgICAgICAgICAgICAgKCgoRE1BX0RPTUFJ Tl9JRF9TSElGVCAtIDQpIC8gMikgJiA3VUxMKQorI2RlZmluZSBETUFfTUdBVyAgICAgICAgICAg ICAgICAgICAgMzkgIC8qIE1heGltdW0gR3Vlc3QgQWRkcmVzcyBXaWR0aCAqLworI2RlZmluZSBE TUFfQ0FQX01HQVcgICAgICAgICAgICAgICAgKCgoRE1BX01HQVcgLSAxKSAmIDB4M2ZVTEwpIDw8 IDE2KQorI2RlZmluZSBETUFfTUFNViAgICAgICAgICAgICAgICAgICAgMThVTEwKKyNkZWZpbmUg RE1BX0NBUF9NQU1WICAgICAgICAgICAgICAgIChETUFfTUFNViA8PCA0OCkKKyNkZWZpbmUgRE1B X0NBUF9QU0kgICAgICAgICAgICAgICAgICgxVUxMIDw8IDM5KQorI2RlZmluZSBETUFfQ0FQX1NM TFBTICAgICAgICAgICAgICAgKCgxVUxMIDw8IDM0KSB8ICgxVUxMIDw8IDM1KSkKKyNkZWZpbmUg RE1BUl9GUkNEX1JFR19OUiAgICAgICAgICAgIDFVTEwKKyNkZWZpbmUgRE1BX0NBUF9GUk9fT0ZG U0VUICAgICAgICAgIDB4MjIwVUxMCisjZGVmaW5lIERNQV9DQVBfRlJPICAgICAgICAgICAgICAg ICAoRE1BX0NBUF9GUk9fT0ZGU0VUIDw8IDIwKQorI2RlZmluZSBETUFfQ0FQX05GUiAgICAgICAg ICAgICAgICAgKChETUFSX0ZSQ0RfUkVHX05SIC0gMSkgPDwgNDApCisKKy8qIFN1cHBvcnRlZCBB ZGp1c3RlZCBHdWVzdCBBZGRyZXNzIFdpZHRocyAqLworI2RlZmluZSBETUFfQ0FQX1NBR0FXX1NI SUZUICAgICAgICAgOAorI2RlZmluZSBETUFfQ0FQX1NBR0FXX01BU0sgICAgICAgICAgKDB4MWZV TEwgPDwgRE1BX0NBUF9TQUdBV19TSElGVCkKKyAvKiAzOS1iaXQgQUdBVywgMy1sZXZlbCBwYWdl LXRhYmxlICovCisjZGVmaW5lIERNQV9DQVBfU0FHQVdfMzliaXQgICAgICAgICAoMHgyVUxMIDw8 IERNQV9DQVBfU0FHQVdfU0hJRlQpCisgLyogNDgtYml0IEFHQVcsIDQtbGV2ZWwgcGFnZS10YWJs ZSAqLworI2RlZmluZSBETUFfQ0FQX1NBR0FXXzQ4Yml0ICAgICAgICAgKDB4NFVMTCA8PCBETUFf Q0FQX1NBR0FXX1NISUZUKQorI2RlZmluZSBETUFfQ0FQX1NBR0FXICAgICAgICAgICAgICAgRE1B X0NBUF9TQUdBV18zOWJpdAorCiAvKgogICogRGVjb2RpbmcgQ2FwYWJpbGl0eSBSZWdpc3Rlcgog ICovCkBAIC04OSw2ICsxMzcsMTQgQEAKICNkZWZpbmUgY2FwX2FmbChjKSAgICAgICAgKCgoYykg Pj4gMykgJiAxKQogI2RlZmluZSBjYXBfbmRvbXMoYykgICAgICAgICgxIDw8ICg0ICsgMiAqICgo YykgJiAweDcpKSkKIAorLyogRUNBUF9SRUcgKi8KKy8qIChvZmZzZXQgPj4gNCkgPDwgOCAqLwor I2RlZmluZSBETUFfRUNBUF9RSSAgICAgICAgICAgICAgICAgKDFVTEwgPDwgMSkKKy8qIEludGVy cnVwdCBSZW1hcHBpbmcgc3VwcG9ydCAqLworI2RlZmluZSBETUFfRUNBUF9JUiAgICAgICAgICAg ICAgICAgKDFVTEwgPDwgMykKKyNkZWZpbmUgRE1BX0VDQVBfRUlNICAgICAgICAgICAgICAgICgx VUxMIDw8IDQpCisjZGVmaW5lIERNQV9FQ0FQX01ITVYgICAgICAgICAgICAgICAoMTVVTEwgPDwg MjApCisKIC8qCiAgKiBFeHRlbmRlZCBDYXBhYmlsaXR5IFJlZ2lzdGVyCiAgKi8KZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvdmlvbW11LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3Zp b21tdS5oCmluZGV4IDQzZTQ0NmUuLjBiMjVmMzQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvdmlvbW11LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni92aW9tbXUuaApAQCAtMjIs NiArMjIsOSBAQAogCiAjaW5jbHVkZSA8eGVuL3Zpb21tdS5oPgogI2luY2x1ZGUgPGFzbS90eXBl cy5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKworZXh0ZXJuIHN0cnVjdCB2aW9tbXVf b3BzIHZ2dGRfaHZtX3ZteF9vcHM7CiAKIHN0cnVjdCBpcnFfcmVtYXBwaW5nX2luZm8KIHsKQEAg LTQ4LDYgKzUxLDEyIEBAIHN0cnVjdCBpcnFfcmVtYXBwaW5nX3JlcXVlc3QKIAogc3RhdGljIGlu bGluZSBjb25zdCBzdHJ1Y3QgdmlvbW11X29wcyAqdmlvbW11X2dldF9vcHModm9pZCkKIHsKKyAg ICAvKgorICAgICAqIERvbid0IG1lYW4gdGhhdCB2aW9tbXUgcmVsaWVzIG9uIGhhcmR3YXJkIGNw dSB2ZW5kb3IsIGJ1dCBqdXN0CisgICAgICogbGltaXQgdGhlIHVzYWdlIHRvIG1pbmltaXplIHRo ZSBpbXBhY3QgdG8gZXhpc3RpbmcgY29kZS4KKyAgICAgKi8KKyAgICBpZiAoIGJvb3RfY3B1X2Rh dGEueDg2X3ZlbmRvciA9PSBYODZfVkVORE9SX0lOVEVMICkKKyAgICAgICAgcmV0dXJuICZ2dnRk X2h2bV92bXhfb3BzOwogICAgIHJldHVybiBOVUxMOwogfQogCi0tIAoxLjguMy4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==