From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [RFC PATCH V2 11/26] x86/hvm: Introduce a emulated VTD for HVM Date: Thu, 18 May 2017 01:34:41 -0400 Message-ID: <1495085696-10819-12-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 , kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, jbeulich@suse.com, Chao Gao List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KClRoaXMgcGF0Y2ggYWRkcyBjcmVh dGUvZGVzdHJveS9xdWVyeSBmdW5jdGlvbiBmb3IgdGhlIGVtdWxhdGVkIFZURAphbmQgYWRhcHRz IGl0IHRvIHRoZSBjb21tb24gVklPTU1VIGFic3RyYWN0aW9uLgoKU2lnbmVkLW9mZi1ieTogQ2hh byBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTGFuIFRpYW55dSA8dGlh bnl1LmxhbkBpbnRlbC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZSAgICAgICAg ICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2h2bS92dnRkLmMgICAgICAgICAgICAgfCAxNzYgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC92dGQvaW9tbXUuaCB8IDEwMiArKysrKysrKysrKysrKysrLS0tLS0KIHhlbi9pbmNsdWRlL2Fz bS14ODYvdmlvbW11LmggICAgICAgIHwgICAzICsKIDQgZmlsZXMgY2hhbmdlZCwgMjU5IGluc2Vy dGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4 Ni9odm0vdnZ0ZC5jCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZSBiL3hl bi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUKaW5kZXggMGEzZDBmNC4uODJhMjAzMCAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvaHZtL01ha2Vm aWxlCkBAIC0yMiw2ICsyMiw3IEBAIG9iai15ICs9IHJ0Yy5vCiBvYmoteSArPSBzYXZlLm8KIG9i ai15ICs9IHN0ZHZnYS5vCiBvYmoteSArPSB2aW9hcGljLm8KK29iai15ICs9IHZ2dGQubwogb2Jq LXkgKz0gdmlyaWRpYW4ubwogb2JqLXkgKz0gdmxhcGljLm8KIG9iai15ICs9IHZtc2kubwpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92dnRkLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Z2dGQu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzY0ZjJiCi0tLSAvZGV2L251 bGwKKysrIGIveGVuL2FyY2gveDg2L2h2bS92dnRkLmMKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisg KiB2dnRkLmMKKyAqCisgKiB2aXJ0dWFsaXplIFZURCBmb3IgSFZNLgorICoKKyAqIENvcHlyaWdo dCAoQykgMjAxNyBDaGFvIEdhbywgSW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljCisgKiBMaWNlbnNlLCB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj CisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHhlbi9kb21haW5fcGFn ZS5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2lu Y2x1ZGUgPHhlbi92aW9tbXUuaD4KKyNpbmNsdWRlIDx4ZW4veG1hbGxvYy5oPgorI2luY2x1ZGUg PGFzbS9jdXJyZW50Lmg+CisjaW5jbHVkZSA8YXNtL2h2bS9kb21haW4uaD4KKyNpbmNsdWRlIDxh c20vcGFnZS5oPgorI2luY2x1ZGUgPHB1YmxpYy92aW9tbXUuaD4KKworI2luY2x1ZGUgIi4uLy4u Ly4uL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmgiCisKK3N0cnVjdCBodm1faHdfdnZ0 ZF9yZWdzIHsKKyAgICB1aW50OF90IGRhdGFbMTAyNF07Cit9OworCisvKiBTdGF0dXMgZmllbGQg b2Ygc3RydWN0IHZ2dGQgKi8KKyNkZWZpbmUgVklPTU1VX1NUQVRVU19JUlFfUkVNQVBQSU5HX0VO QUJMRUQgICAgICgxIDw8IDApCisjZGVmaW5lIFZJT01NVV9TVEFUVVNfRE1BX1JFTUFQUElOR19F TkFCTEVEICAgICAoMSA8PCAxKQorCitzdHJ1Y3QgdnZ0ZCB7CisgICAgLyogVklPTU1VX1NUQVRV U19YWFhfUkVNQVBQSU5HX0VOQUJMRUQgKi8KKyAgICBpbnQgc3RhdHVzOworICAgIC8qIEFkZHJl c3MgcmFuZ2Ugb2YgcmVtYXBwaW5nIGhhcmR3YXJlIHJlZ2lzdGVyLXNldCAqLworICAgIHVpbnQ2 NF90IGJhc2VfYWRkcjsKKyAgICB1aW50NjRfdCBsZW5ndGg7CisgICAgLyogUG9pbnQgYmFjayB0 byB0aGUgb3duZXIgZG9tYWluICovCisgICAgc3RydWN0IGRvbWFpbiAqZG9tYWluOworICAgIHN0 cnVjdCBodm1faHdfdnZ0ZF9yZWdzICpyZWdzOworICAgIHN0cnVjdCBwYWdlX2luZm8gKnJlZ3Nf cGFnZTsKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB2dnRkX3NldF9yZWcoc3RydWN0IHZ2dGQg KnZ0ZCwgdWludDMyX3QgcmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCB2YWx1ZSkKK3sKKyAgICAqKCh1aW50MzJfdCAqKSgmdnRkLT5yZWdzLT5kYXRhW3JlZ10p KSA9IHZhbHVlOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IHZ2dGRfZ2V0X3JlZyhzdHJ1 Y3QgdnZ0ZCAqdnRkLCB1aW50MzJfdCByZWcpCit7CisgICAgcmV0dXJuICooKHVpbnQzMl90ICop KCZ2dGQtPnJlZ3MtPmRhdGFbcmVnXSkpOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ4X3QgdnZ0 ZF9nZXRfcmVnX2J5dGUoc3RydWN0IHZ2dGQgKnZ0ZCwgdWludDMyX3QgcmVnKQoreworICAgIHJl dHVybiAqKCh1aW50OF90ICopKCZ2dGQtPnJlZ3MtPmRhdGFbcmVnXSkpOworfQorCisjZGVmaW5l IHZ2dGRfZ2V0X3JlZ19xdWFkKHZ2dGQsIHJlZywgdmFsKSBkbyB7IFwKKyAgICAodmFsKSA9IHZ2 dGRfZ2V0X3JlZyh2dnRkLCAocmVnKSArIDQgKTsgXAorICAgICh2YWwpID0gKHZhbCkgPDwgMzI7 IFwKKyAgICAodmFsKSArPSB2dnRkX2dldF9yZWcodnZ0ZCwgcmVnKTsgXAorfSB3aGlsZSgwKQor I2RlZmluZSB2dnRkX3NldF9yZWdfcXVhZCh2dnRkLCByZWcsIHZhbCkgZG8geyBcCisgICAgdnZ0 ZF9zZXRfcmVnKHZ2dGQsIHJlZywgKHZhbCkpOyBcCisgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIChy ZWcpICsgNCwgKHZhbCkgPj4gMzIpOyBcCit9IHdoaWxlKDApCisKK3N0YXRpYyB2b2lkIHZ2dGRf cmVzZXQoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQ2NF90IGNhcGFiaWxpdHkpCit7CisgICAgdWlu dDY0X3QgY2FwLCBlY2FwOworCisgICAgY2FwID0gRE1BX0NBUF9ORlIgfCBETUFfQ0FQX1NMTFBT IHwgRE1BX0NBUF9GUk8gfCBcCisgICAgICAgICAgRE1BX0NBUF9NR0FXIHwgRE1BX0NBUF9TQUdB VyB8IERNQV9DQVBfTkQ7CisgICAgZWNhcCA9IERNQV9FQ0FQX0lSIHwgRE1BX0VDQVBfRUlNIHwg RE1BX0VDQVBfUUk7CisgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIERNQVJfVkVSX1JFRywgMHgxMFVM KTsKKyAgICB2dnRkX3NldF9yZWdfcXVhZCh2dnRkLCBETUFSX0NBUF9SRUcsIGNhcCk7CisgICAg dnZ0ZF9zZXRfcmVnX3F1YWQodnZ0ZCwgRE1BUl9FQ0FQX1JFRywgZWNhcCk7CisgICAgdnZ0ZF9z ZXRfcmVnKHZ2dGQsIERNQVJfR0NNRF9SRUcsIDApOworICAgIHZ2dGRfc2V0X3JlZyh2dnRkLCBE TUFSX0dTVFNfUkVHLCAwKTsKKyAgICB2dnRkX3NldF9yZWcodnZ0ZCwgRE1BUl9SVEFERFJfUkVH LCAwKTsKKyAgICB2dnRkX3NldF9yZWdfcXVhZCh2dnRkLCBETUFSX0NDTURfUkVHLCAweDBVTEwp OworICAgIHZ2dGRfc2V0X3JlZyh2dnRkLCBETUFSX0ZTVFNfUkVHLCAwKTsKKyAgICB2dnRkX3Nl dF9yZWcodnZ0ZCwgRE1BUl9GRUNUTF9SRUcsIDB4ODAwMDAwMDBVTCk7CisgICAgdnZ0ZF9zZXRf cmVnKHZ2dGQsIERNQVJfRkVEQVRBX1JFRywgMCk7CisgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIERN QVJfRkVBRERSX1JFRywgMCk7CisgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIERNQVJfRkVVQUREUl9S RUcsIDApOworICAgIHZ2dGRfc2V0X3JlZyh2dnRkLCBETUFSX1BNRU5fUkVHLCAwKTsKKyAgICB2 dnRkX3NldF9yZWdfcXVhZCh2dnRkLCBETUFSX0lRSF9SRUcsIDB4MFVMTCk7CisgICAgdnZ0ZF9z ZXRfcmVnX3F1YWQodnZ0ZCwgRE1BUl9JUVRfUkVHLCAweDBVTEwpOworICAgIHZ2dGRfc2V0X3Jl Z19xdWFkKHZ2dGQsIERNQVJfSVFBX1JFRywgMHgwVUxMKTsKKyAgICB2dnRkX3NldF9yZWcodnZ0 ZCwgRE1BUl9JQ1NfUkVHLCAwKTsKKyAgICB2dnRkX3NldF9yZWcodnZ0ZCwgRE1BUl9JRUNUTF9S RUcsIDB4ODAwMDAwMDBVTCk7CisgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIERNQVJfSUVEQVRBX1JF RywgMCk7CisgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIERNQVJfSUVBRERSX1JFRywgMCk7CisgICAg dnZ0ZF9zZXRfcmVnKHZ2dGQsIERNQVJfSUVVQUREUl9SRUcsIDApOworICAgIHZ2dGRfc2V0X3Jl Zyh2dnRkLCBETUFSX0lSVEFfUkVHLCAwKTsKK30KKworc3RhdGljIHU2NCB2dnRkX3F1ZXJ5X2Nh cHMoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICByZXR1cm4gVklPTU1VX0NBUF9JUlFfUkVNQVBQ SU5HOworfQorCitzdGF0aWMgaW50IHZ2dGRfY3JlYXRlKHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCB2aW9tbXUgKnZpb21tdSkKK3sKKyAgICBzdHJ1Y3QgdnZ0ZCAqdnZ0ZDsKKyAgICBpbnQgcmV0 OworCisgICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSB8fCAodmlvbW11LT5sZW5ndGggIT0gUEFH RV9TSVpFKSB8fAorICAgICAgICAoKH52dnRkX3F1ZXJ5X2NhcHMoZCkpICYgdmlvbW11LT5jYXBz KSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgcmV0ID0gLUVOT01FTTsKKyAgICB2 dnRkID0geG1hbGxvY19ieXRlcyhzaXplb2Yoc3RydWN0IHZ2dGQpKTsKKyAgICBpZiAoIHZ2dGQg PT0gTlVMTCApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICB2dnRkLT5yZWdzX3BhZ2UgPSBh bGxvY19kb21oZWFwX3BhZ2UoZCwgTUVNRl9ub19vd25lcik7CisgICAgaWYgKCB2dnRkLT5yZWdz X3BhZ2UgPT0gTlVMTCApCisgICAgICAgIGdvdG8gb3V0MTsKKworICAgIHZ2dGQtPnJlZ3MgPSBf X21hcF9kb21haW5fcGFnZV9nbG9iYWwodnZ0ZC0+cmVnc19wYWdlKTsKKyAgICBpZiAoIHZ2dGQt PnJlZ3MgPT0gTlVMTCApCisgICAgICAgIGdvdG8gb3V0MjsKKyAgICBjbGVhcl9wYWdlKHZ2dGQt PnJlZ3MpOworCisgICAgdnZ0ZF9yZXNldCh2dnRkLCB2aW9tbXUtPmNhcHMpOworICAgIHZ2dGQt PmJhc2VfYWRkciA9IHZpb21tdS0+YmFzZV9hZGRyZXNzOworICAgIHZ2dGQtPmxlbmd0aCA9IHZp b21tdS0+bGVuZ3RoOworICAgIHZ2dGQtPmRvbWFpbiA9IGQ7CisgICAgdnZ0ZC0+c3RhdHVzID0g MDsKKyAgICByZXR1cm4gMDsKKworb3V0MjoKKyAgICBmcmVlX2RvbWhlYXBfcGFnZSh2dnRkLT5y ZWdzX3BhZ2UpOworb3V0MToKKyAgICB4ZnJlZSh2dnRkKTsKKyAgICByZXR1cm4gcmV0OworfQor CitzdGF0aWMgaW50IHZ2dGRfZGVzdHJveShzdHJ1Y3QgdmlvbW11ICp2aW9tbXUpCit7CisgICAg c3RydWN0IHZ2dGQgKnZ2dGQgPSB2aW9tbXUtPnByaXY7CisKKyAgICBpZiAoIHZ2dGQgKQorICAg IHsKKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHZ2dGQtPnJlZ3MpOworICAgICAg ICBmcmVlX2RvbWhlYXBfcGFnZSh2dnRkLT5yZWdzX3BhZ2UpOworICAgICAgICB4ZnJlZSh2dnRk KTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0cnVjdCB2aW9tbXVfb3BzIHZ2dGRfaHZt X3ZteF9vcHMgPSB7CisgICAgLnF1ZXJ5X2NhcHMgPSB2dnRkX3F1ZXJ5X2NhcHMsCisgICAgLmNy ZWF0ZSA9IHZ2dGRfY3JlYXRlLAorICAgIC5kZXN0cm95ID0gdnZ0ZF9kZXN0cm95Cit9OworCitz dGF0aWMgaW50IHZ2dGRfcmVnaXN0ZXIodm9pZCkKK3sKKyAgICB2aW9tbXVfcmVnaXN0ZXJfdHlw ZShWSU9NTVVfVFlQRV9JTlRFTF9WVEQsICZ2dnRkX2h2bV92bXhfb3BzKTsKKyAgICByZXR1cm4g MDsKK30KK19faW5pdGNhbGwodnZ0ZF9yZWdpc3Rlcik7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaCBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9p b21tdS5oCmluZGV4IDcyYzFhMmUuLjJlOWRjYWEgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3Z0ZC9pb21tdS5oCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9p b21tdS5oCkBAIC0yMywzMSArMjMsNTQgQEAKICNpbmNsdWRlIDxhc20vbXNpLmg+CiAKIC8qCi0g KiBJbnRlbCBJT01NVSByZWdpc3RlciBzcGVjaWZpY2F0aW9uIHBlciB2ZXJzaW9uIDEuMCBwdWJs aWMgc3BlYy4KKyAqIEludGVsIElPTU1VIHJlZ2lzdGVyIHNwZWNpZmljYXRpb24gcGVyIHZlcnNp b24gMi40IHB1YmxpYyBzcGVjLgogICovCiAKLSNkZWZpbmUgICAgRE1BUl9WRVJfUkVHICAgIDB4 MCAgICAvKiBBcmNoIHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoaXMgSU9NTVUgKi8KLSNkZWZpbmUg ICAgRE1BUl9DQVBfUkVHICAgIDB4OCAgICAvKiBIYXJkd2FyZSBzdXBwb3J0ZWQgY2FwYWJpbGl0 aWVzICovCi0jZGVmaW5lICAgIERNQVJfRUNBUF9SRUcgICAgMHgxMCAgICAvKiBFeHRlbmRlZCBj YXBhYmlsaXRpZXMgc3VwcG9ydGVkICovCi0jZGVmaW5lICAgIERNQVJfR0NNRF9SRUcgICAgMHgx OCAgICAvKiBHbG9iYWwgY29tbWFuZCByZWdpc3RlciAqLwotI2RlZmluZSAgICBETUFSX0dTVFNf UkVHICAgIDB4MWMgICAgLyogR2xvYmFsIHN0YXR1cyByZWdpc3RlciAqLwotI2RlZmluZSAgICBE TUFSX1JUQUREUl9SRUcgICAgMHgyMCAgICAvKiBSb290IGVudHJ5IHRhYmxlICovCi0jZGVmaW5l ICAgIERNQVJfQ0NNRF9SRUcgICAgMHgyOCAgICAvKiBDb250ZXh0IGNvbW1hbmQgcmVnICovCi0j ZGVmaW5lICAgIERNQVJfRlNUU19SRUcgICAgMHgzNCAgICAvKiBGYXVsdCBTdGF0dXMgcmVnaXN0 ZXIgKi8KLSNkZWZpbmUgICAgRE1BUl9GRUNUTF9SRUcgICAgMHgzOCAgICAvKiBGYXVsdCBjb250 cm9sIHJlZ2lzdGVyICovCi0jZGVmaW5lICAgIERNQVJfRkVEQVRBX1JFRyAgICAweDNjICAgIC8q IEZhdWx0IGV2ZW50IGludGVycnVwdCBkYXRhIHJlZ2lzdGVyICovCi0jZGVmaW5lICAgIERNQVJf RkVBRERSX1JFRyAgICAweDQwICAgIC8qIEZhdWx0IGV2ZW50IGludGVycnVwdCBhZGRyIHJlZ2lz dGVyICovCi0jZGVmaW5lICAgIERNQVJfRkVVQUREUl9SRUcgMHg0NCAgICAvKiBVcHBlciBhZGRy ZXNzIHJlZ2lzdGVyICovCi0jZGVmaW5lICAgIERNQVJfQUZMT0dfUkVHICAgIDB4NTggICAgLyog QWR2YW5jZWQgRmF1bHQgY29udHJvbCAqLwotI2RlZmluZSAgICBETUFSX1BNRU5fUkVHICAgIDB4 NjQgICAgLyogRW5hYmxlIFByb3RlY3RlZCBNZW1vcnkgUmVnaW9uICovCi0jZGVmaW5lICAgIERN QVJfUExNQkFTRV9SRUcgMHg2OCAgICAvKiBQTVJSIExvdyBhZGRyICovCi0jZGVmaW5lICAgIERN QVJfUExNTElNSVRfUkVHIDB4NmMgICAgLyogUE1SUiBsb3cgbGltaXQgKi8KLSNkZWZpbmUgICAg RE1BUl9QSE1CQVNFX1JFRyAweDcwICAgIC8qIHBtcnIgaGlnaCBiYXNlIGFkZHIgKi8KLSNkZWZp bmUgICAgRE1BUl9QSE1MSU1JVF9SRUcgMHg3OCAgICAvKiBwbXJyIGhpZ2ggbGltaXQgKi8KLSNk ZWZpbmUgICAgRE1BUl9JUUhfUkVHICAgIDB4ODAgICAgLyogaW52YWxpZGF0aW9uIHF1ZXVlIGhl YWQgKi8KLSNkZWZpbmUgICAgRE1BUl9JUVRfUkVHICAgIDB4ODggICAgLyogaW52YWxpZGF0aW9u IHF1ZXVlIHRhaWwgKi8KLSNkZWZpbmUgICAgRE1BUl9JUUFfUkVHICAgIDB4OTAgICAgLyogaW52 YWxpZGF0aW9uIHF1ZXVlIGFkZHIgKi8KLSNkZWZpbmUgICAgRE1BUl9JUlRBX1JFRyAgIDB4Qjgg ICAgLyogaW50ciByZW1hcCAqLworI2RlZmluZSBETUFSX1ZFUl9SRUcgICAgICAgICAgICAweDAg IC8qIEFyY2ggdmVyc2lvbiBzdXBwb3J0ZWQgYnkgdGhpcyBJT01NVSAqLworI2RlZmluZSBETUFS X0NBUF9SRUcgICAgICAgICAgICAweDggIC8qIEhhcmR3YXJlIHN1cHBvcnRlZCBjYXBhYmlsaXRp ZXMgKi8KKyNkZWZpbmUgRE1BUl9FQ0FQX1JFRyAgICAgICAgICAgMHgxMCAvKiBFeHRlbmRlZCBj YXBhYmlsaXRpZXMgc3VwcG9ydGVkICovCisjZGVmaW5lIERNQVJfR0NNRF9SRUcgICAgICAgICAg IDB4MTggLyogR2xvYmFsIGNvbW1hbmQgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BUl9HU1RTX1JF RyAgICAgICAgICAgMHgxYyAvKiBHbG9iYWwgc3RhdHVzIHJlZ2lzdGVyICovCisjZGVmaW5lIERN QVJfUlRBRERSX1JFRyAgICAgICAgIDB4MjAgLyogUm9vdCBlbnRyeSB0YWJsZSAqLworI2RlZmlu ZSBETUFSX0NDTURfUkVHICAgICAgICAgICAweDI4IC8qIENvbnRleHQgY29tbWFuZCByZWcgKi8K KyNkZWZpbmUgRE1BUl9GU1RTX1JFRyAgICAgICAgICAgMHgzNCAvKiBGYXVsdCBTdGF0dXMgcmVn aXN0ZXIgKi8KKyNkZWZpbmUgRE1BUl9GRUNUTF9SRUcgICAgICAgICAgMHgzOCAvKiBGYXVsdCBj b250cm9sIHJlZ2lzdGVyICovCisjZGVmaW5lIERNQVJfRkVEQVRBX1JFRyAgICAgICAgIDB4M2Mg LyogRmF1bHQgZXZlbnQgaW50ZXJydXB0IGRhdGEgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BUl9G RUFERFJfUkVHICAgICAgICAgMHg0MCAvKiBGYXVsdCBldmVudCBpbnRlcnJ1cHQgYWRkciByZWdp c3RlciAqLworI2RlZmluZSBETUFSX0ZFVUFERFJfUkVHICAgICAgICAweDQ0IC8qIFVwcGVyIGFk ZHJlc3MgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BUl9BRkxPR19SRUcgICAgICAgICAgMHg1OCAv KiBBZHZhbmNlZCBGYXVsdCBjb250cm9sICovCisjZGVmaW5lIERNQVJfUE1FTl9SRUcgICAgICAg ICAgIDB4NjQgLyogRW5hYmxlIFByb3RlY3RlZCBNZW1vcnkgUmVnaW9uICovCisjZGVmaW5lIERN QVJfUExNQkFTRV9SRUcgICAgICAgIDB4NjggLyogUE1SUiBMb3cgYWRkciAqLworI2RlZmluZSBE TUFSX1BMTUxJTUlUX1JFRyAgICAgICAweDZjIC8qIFBNUlIgbG93IGxpbWl0ICovCisjZGVmaW5l IERNQVJfUEhNQkFTRV9SRUcgICAgICAgIDB4NzAgLyogcG1yciBoaWdoIGJhc2UgYWRkciAqLwor I2RlZmluZSBETUFSX1BITUxJTUlUX1JFRyAgICAgICAweDc4IC8qIHBtcnIgaGlnaCBsaW1pdCAq LworI2RlZmluZSBETUFSX0lRSF9SRUcgICAgICAgICAgICAweDgwIC8qIGludmFsaWRhdGlvbiBx dWV1ZSBoZWFkICovCisjZGVmaW5lIERNQVJfSVFUX1JFRyAgICAgICAgICAgIDB4ODggLyogaW52 YWxpZGF0aW9uIHF1ZXVlIHRhaWwgKi8KKyNkZWZpbmUgRE1BUl9JUVRfUkVHX0hJICAgICAgICAg MHg4YworI2RlZmluZSBETUFSX0lRQV9SRUcgICAgICAgICAgICAweDkwIC8qIGludmFsaWRhdGlv biBxdWV1ZSBhZGRyICovCisjZGVmaW5lIERNQVJfSVFBX1JFR19ISSAgICAgICAgIDB4OTQKKyNk ZWZpbmUgRE1BUl9JQ1NfUkVHICAgICAgICAgICAgMHg5YyAvKiBJbnZhbGlkYXRpb24gY29tcGxl dGUgc3RhdHVzICovCisjZGVmaW5lIERNQVJfSUVDVExfUkVHICAgICAgICAgIDB4YTAgLyogSW52 YWxpZGF0aW9uIGV2ZW50IGNvbnRyb2wgKi8KKyNkZWZpbmUgRE1BUl9JRURBVEFfUkVHICAgICAg ICAgMHhhNCAvKiBJbnZhbGlkYXRpb24gZXZlbnQgZGF0YSAqLworI2RlZmluZSBETUFSX0lFQURE Ul9SRUcgICAgICAgICAweGE4IC8qIEludmFsaWRhdGlvbiBldmVudCBhZGRyZXNzICovCisjZGVm aW5lIERNQVJfSUVVQUREUl9SRUcgICAgICAgIDB4YWMgLyogSW52YWxpZGF0aW9uIGV2ZW50IGFk ZHJlc3MgKi8KKyNkZWZpbmUgRE1BUl9JUlRBX1JFRyAgICAgICAgICAgMHhiOCAvKiBJbnRlcnJ1 cHQgcmVtYXBwaW5nIHRhYmxlIGFkZHIgKi8KKyNkZWZpbmUgRE1BUl9JUlRBX1JFR19ISSAgICAg ICAgMHhiYworI2RlZmluZSBETUFSX1BRSF9SRUcgICAgICAgICAgICAweGMwIC8qIFBhZ2UgcmVx dWVzdCBxdWV1ZSBoZWFkICovCisjZGVmaW5lIERNQVJfUFFIX1JFR19ISSAgICAgICAgIDB4YzQK KyNkZWZpbmUgRE1BUl9QUVRfUkVHICAgICAgICAgICAgMHhjOCAvKiBQYWdlIHJlcXVlc3QgcXVl dWUgdGFpbCovCisjZGVmaW5lIERNQVJfUFFUX1JFR19ISSAgICAgICAgIDB4Y2MKKyNkZWZpbmUg RE1BUl9QUUFfUkVHICAgICAgICAgICAgMHhkMCAvKiBQYWdlIHJlcXVlc3QgcXVldWUgYWRkcmVz cyAqLworI2RlZmluZSBETUFSX1BRQV9SRUdfSEkgICAgICAgICAweGQ0CisjZGVmaW5lIERNQVJf UFJTX1JFRyAgICAgICAgICAgIDB4ZGMgLyogUGFnZSByZXF1ZXN0IHN0YXR1cyAqLworI2RlZmlu ZSBETUFSX1BFQ1RMX1JFRyAgICAgICAgICAweGUwIC8qIFBhZ2UgcmVxdWVzdCBldmVudCBjb250 cm9sICovCisjZGVmaW5lIERNQVJfUEVEQVRBX1JFRyAgICAgICAgIDB4ZTQgLyogUGFnZSByZXF1 ZXN0IGV2ZW50IGRhdGEgKi8KKyNkZWZpbmUgRE1BUl9QRUFERFJfUkVHICAgICAgICAgMHhlOCAv KiBQYWdlIHJlcXVlc3QgZXZlbnQgYWRkcmVzcyAqLworI2RlZmluZSBETUFSX1BFVUFERFJfUkVH ICAgICAgICAweGVjIC8qIFBhZ2UgZXZlbnQgdXBwZXIgYWRkcmVzcyAqLworI2RlZmluZSBETUFS X01UUlJDQVBfUkVHICAgICAgICAweDEwMCAvKiBNVFJSIGNhcGFiaWxpdHkgKi8KKyNkZWZpbmUg RE1BUl9NVFJSQ0FQX1JFR19ISSAgICAgMHgxMDQKKyNkZWZpbmUgRE1BUl9NVFJSREVGX1JFRyAg ICAgICAgMHgxMDggLyogTVRSUiBkZWZhdWx0IHR5cGUgKi8KKyNkZWZpbmUgRE1BUl9NVFJSREVG X1JFR19ISSAgICAgMHgxMGMKIAogI2RlZmluZSBPRkZTRVRfU1RSSURFICAgICAgICAoOSkKICNk ZWZpbmUgZG1hcl9yZWFkbChkbWFyLCByZWcpIHJlYWRsKChkbWFyKSArIChyZWcpKQpAQCAtNTgs NiArODEsMzEgQEAKICNkZWZpbmUgVkVSX01BSk9SKHYpICAgICAgICAoKCh2KSAmIDB4ZjApID4+ IDQpCiAjZGVmaW5lIFZFUl9NSU5PUih2KSAgICAgICAgKCh2KSAmIDB4MGYpCiAKKy8qIENBUF9S RUcgKi8KKy8qIChvZmZzZXQgPj4gNCkgPDwgMjQgKi8KKyNkZWZpbmUgRE1BX0RPTUFJTl9JRF9T SElGVCAgICAgICAgIDE2ICAvKiAxNi1iaXQgZG9tYWluIGlkIGZvciA2NEsgZG9tYWlucyAqLwor I2RlZmluZSBETUFfRE9NQUlOX0lEX01BU0sgICAgICAgICAgKCgxVUwgPDwgRE1BX0RPTUFJTl9J RF9TSElGVCkgLSAxKQorI2RlZmluZSBETUFfQ0FQX05EICAgICAgICAgICAgICAgICAgKCgoRE1B X0RPTUFJTl9JRF9TSElGVCAtIDQpIC8gMikgJiA3VUxMKQorI2RlZmluZSBETUFfTUdBVyAgICAg ICAgICAgICAgICAgICAgMzkgIC8qIE1heGltdW0gR3Vlc3QgQWRkcmVzcyBXaWR0aCAqLworI2Rl ZmluZSBETUFfQ0FQX01HQVcgICAgICAgICAgICAgICAgKCgoRE1BX01HQVcgLSAxKSAmIDB4M2ZV TEwpIDw8IDE2KQorI2RlZmluZSBETUFfTUFNViAgICAgICAgICAgICAgICAgICAgMThVTEwKKyNk ZWZpbmUgRE1BX0NBUF9NQU1WICAgICAgICAgICAgICAgIChETUFfTUFNViA8PCA0OCkKKyNkZWZp bmUgRE1BX0NBUF9QU0kgICAgICAgICAgICAgICAgICgxVUxMIDw8IDM5KQorI2RlZmluZSBETUFf Q0FQX1NMTFBTICAgICAgICAgICAgICAgKCgxVUxMIDw8IDM0KSB8ICgxVUxMIDw8IDM1KSkKKyNk ZWZpbmUgRE1BUl9GUkNEX1JFR19OUiAgICAgICAgICAgIDFVTEwKKyNkZWZpbmUgRE1BX0NBUF9G Uk9fT0ZGU0VUICAgICAgICAgIDB4MjIwVUxMCisjZGVmaW5lIERNQV9DQVBfRlJPICAgICAgICAg ICAgICAgICAoRE1BX0NBUF9GUk9fT0ZGU0VUIDw8IDIwKQorI2RlZmluZSBETUFfQ0FQX05GUiAg ICAgICAgICAgICAgICAgKChETUFSX0ZSQ0RfUkVHX05SIC0gMSkgPDwgNDApCisKKy8qIFN1cHBv cnRlZCBBZGp1c3RlZCBHdWVzdCBBZGRyZXNzIFdpZHRocyAqLworI2RlZmluZSBETUFfQ0FQX1NB R0FXX1NISUZUICAgICAgICAgOAorI2RlZmluZSBETUFfQ0FQX1NBR0FXX01BU0sgICAgICAgICAg KDB4MWZVTEwgPDwgRE1BX0NBUF9TQUdBV19TSElGVCkKKyAvKiAzOS1iaXQgQUdBVywgMy1sZXZl bCBwYWdlLXRhYmxlICovCisjZGVmaW5lIERNQV9DQVBfU0FHQVdfMzliaXQgICAgICAgICAoMHgy VUxMIDw8IERNQV9DQVBfU0FHQVdfU0hJRlQpCisgLyogNDgtYml0IEFHQVcsIDQtbGV2ZWwgcGFn ZS10YWJsZSAqLworI2RlZmluZSBETUFfQ0FQX1NBR0FXXzQ4Yml0ICAgICAgICAgKDB4NFVMTCA8 PCBETUFfQ0FQX1NBR0FXX1NISUZUKQorI2RlZmluZSBETUFfQ0FQX1NBR0FXICAgICAgICAgICAg ICAgRE1BX0NBUF9TQUdBV18zOWJpdAorCiAvKgogICogRGVjb2RpbmcgQ2FwYWJpbGl0eSBSZWdp c3RlcgogICovCkBAIC04OSw2ICsxMzcsMTQgQEAKICNkZWZpbmUgY2FwX2FmbChjKSAgICAgICAg KCgoYykgPj4gMykgJiAxKQogI2RlZmluZSBjYXBfbmRvbXMoYykgICAgICAgICgxIDw8ICg0ICsg MiAqICgoYykgJiAweDcpKSkKIAorLyogRUNBUF9SRUcgKi8KKy8qIChvZmZzZXQgPj4gNCkgPDwg OCAqLworI2RlZmluZSBETUFfRUNBUF9RSSAgICAgICAgICAgICAgICAgKDFVTEwgPDwgMSkKKy8q IEludGVycnVwdCBSZW1hcHBpbmcgc3VwcG9ydCAqLworI2RlZmluZSBETUFfRUNBUF9JUiAgICAg ICAgICAgICAgICAgKDFVTEwgPDwgMykKKyNkZWZpbmUgRE1BX0VDQVBfRUlNICAgICAgICAgICAg ICAgICgxVUxMIDw8IDQpCisjZGVmaW5lIERNQV9FQ0FQX01ITVYgICAgICAgICAgICAgICAoMTVV TEwgPDwgMjApCisKIC8qCiAgKiBFeHRlbmRlZCBDYXBhYmlsaXR5IFJlZ2lzdGVyCiAgKi8KZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvdmlvbW11LmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L3Zpb21tdS5oCmluZGV4IDFlOGQ0YmUuLmI3MzBlNjUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL2FzbS14ODYvdmlvbW11LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni92aW9tbXUuaApA QCAtMjIsNiArMjIsOSBAQAogCiAjaW5jbHVkZSA8eGVuL3Zpb21tdS5oPgogI2luY2x1ZGUgPGFz bS90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKworZXh0ZXJuIHN0cnVjdCB2 aW9tbXVfb3BzIHZ2dGRfaHZtX3ZteF9vcHM7CiAKIC8qIElSUSByZXF1ZXN0IHR5cGUgKi8KICNk ZWZpbmUgVklPTU1VX1JFUVVFU1RfSVJRX01TSSAgICAgICAgICAwCi0tIAoxLjguMy4xCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==