From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [PATCH 1/25] VIOMMU: Add vIOMMU helper functions to create, destroy and query capabilities Date: Thu, 29 Jun 2017 01:50:33 -0400 Message-ID: <1498715457-16565-2-git-send-email-tianyu.lan@intel.com> References: <1498715457-16565-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: <1498715457-16565-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@intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpcyB0byBpbnRyb2R1Y3QgYW4gYWJzdHJhY3QgbGF5ZXIgZm9yIGFyY2ggdklP TU1VIGltcGxlbWVudGF0aW9uCnRvIGRlYWwgd2l0aCByZXF1ZXN0cyBmcm9tIGRvbTAuIEFyY2gg dklPTU1VIGNvZGUgbmVlZHMgdG8gcHJvdmlkZSBjYWxsYmFjawp0byBwZXJmb3JtIGNyZWF0ZSwg ZGVzdHJveSBhbmQgcXVlcnkgY2FwYWJpbGl0aWVzIG9wZXJhdGlvbi4KClNpZ25lZC1vZmYtYnk6 IExhbiBUaWFueXUgPHRpYW55dS5sYW5AaW50ZWwuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9zZXR1 cC5jICAgICAgICB8ICAgMSArCiB4ZW4vY29tbW9uL0tjb25maWcgICAgICAgICAgfCAgMTIgKysr KwogeGVuL2NvbW1vbi9NYWtlZmlsZSAgICAgICAgIHwgICAxICsKIHhlbi9jb21tb24vZG9tYWlu LmMgICAgICAgICB8ICAgMyArCiB4ZW4vY29tbW9uL3Zpb21tdS5jICAgICAgICAgfCAxNjMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3B1 YmxpYy92aW9tbXUuaCB8ICA0OSArKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQu aCAgICAgfCAgIDIgKwogeGVuL2luY2x1ZGUveGVuL3Zpb21tdS5oICAgIHwgIDcxICsrKysrKysr KysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzAyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vY29tbW9uL3Zpb21tdS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2lu Y2x1ZGUvcHVibGljL3Zpb21tdS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUveGVu L3Zpb21tdS5oCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94 ODYvc2V0dXAuYwppbmRleCBmN2I5Mjc4Li5mMjA0ZDcxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvc2V0dXAuYworKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtMTUxMyw2ICsxNTEzLDcg QEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkK ICAgICBlYXJseV9tc2lfaW5pdCgpOwogCiAgICAgaW9tbXVfc2V0dXAoKTsgICAgLyogc2V0dXAg aW9tbXUgaWYgYXZhaWxhYmxlICovCisgICAgdmlvbW11X3NldHVwKCk7CiAKICAgICBzbXBfcHJl cGFyZV9jcHVzKG1heF9jcHVzKTsKIApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9LY29uZmlnIGIv eGVuL2NvbW1vbi9LY29uZmlnCmluZGV4IGRjOGU4NzYuLjhiYTRmNWEgMTAwNjQ0Ci0tLSBhL3hl bi9jb21tb24vS2NvbmZpZworKysgYi94ZW4vY29tbW9uL0tjb25maWcKQEAgLTczLDYgKzczLDE4 IEBAIGNvbmZpZyBUTUVNCiAKIAkgIElmIHVuc3VyZSwgc2F5IFkuCiAKK2NvbmZpZyBWSU9NTVUK KwlkZWZfYm9vbCB5CisJZGVwZW5kcyBvbiBYODYKKwktLS1oZWxwLS0tCisJICBWaXJ0dWFsIElP TU1VIHByb3ZpZGVzIGludGVycnVwdCByZW1hcHBpbmcgZnVuY3Rpb24gZm9yIGd1ZXN0IGFuZAor CSAgaXQgYWxsb3dzIGd1ZXN0IHRvIGJvb3QgdXAgbW9yZSB0aGFuIDI1NSB2Y3B1cyB3aGljaCBy ZXF1aXJlcyBpbnRlcnJ1cHQKKwkgIHJlbWFwcGluZyBmdW5jdGlvbi4KKworCSAgWW91IGFsc28g aGF2ZSB0byBlbmFibGUgaXQgb24gdGhlIFhlbiBjb21tYW5kbGluZSBieSB1c2luZyB2aW9tbXU9 MQorCisJICBJZiB1bnN1cmUsIHNheSBZLgorCiBjb25maWcgWEVOT1BST0YKIAlkZWZfYm9vbCB5 CiAJcHJvbXB0ICJYZW4gT3Byb2ZpbGUgU3VwcG9ydCIgaWYgRVhQRVJUID0gInkiCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL01ha2VmaWxlIGIveGVuL2NvbW1vbi9NYWtlZmlsZQppbmRleCAyNmM1 YTY0Li44NTI1NTNkIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL01ha2VmaWxlCisrKyBiL3hlbi9j b21tb24vTWFrZWZpbGUKQEAgLTU2LDYgKzU2LDcgQEAgb2JqLXkgKz0gdGltZS5vCiBvYmoteSAr PSB0aW1lci5vCiBvYmoteSArPSB0cmFjZS5vCiBvYmoteSArPSB2ZXJzaW9uLm8KK29iai0kKENP TkZJR19WSU9NTVUpICs9IHZpb21tdS5vCiBvYmoteSArPSB2aXJ0dWFsX3JlZ2lvbi5vCiBvYmot eSArPSB2bV9ldmVudC5vCiBvYmoteSArPSB2bWFwLm8KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v ZG9tYWluLmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCmluZGV4IGIyMmFhY2MuLmQxZjliMTAgMTAw NjQ0Ci0tLSBhL3hlbi9jb21tb24vZG9tYWluLmMKKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwpA QCAtMzk2LDYgKzM5Niw5IEBAIHN0cnVjdCBkb21haW4gKmRvbWFpbl9jcmVhdGUoZG9taWRfdCBk b21pZCwgdW5zaWduZWQgaW50IGRvbWNyX2ZsYWdzLAogICAgICAgICBzcGluX3VubG9jaygmZG9t bGlzdF91cGRhdGVfbG9jayk7CiAgICAgfQogCisgICAgaWYgKCAoZXJyID0gdmlvbW11X2luaXRf ZG9tYWluKGQpKSAhPSAwICkKKyAgICAgICAgZ290byBmYWlsOworCiAgICAgcmV0dXJuIGQ7CiAK ICBmYWlsOgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi92aW9tbXUuYyBiL3hlbi9jb21tb24vdmlv bW11LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTliYTUyOQotLS0gL2Rl di9udWxsCisrKyBiL3hlbi9jb21tb24vdmlvbW11LmMKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisg KiBjb21tb24vdmlvbW11LmMKKyAqIAorICogQ29weXJpZ2h0IChjKSAyMDE3IEludGVsIENvcnBv cmF0aW9uCisgKiBBdXRob3I6IExhbiBUaWFueXUgPHRpYW55dS5sYW5AaW50ZWwuY29tPiAKKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9V VAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg TUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMu CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHhlbi90 eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9zcGlubG9jay5o PgorCitib29sX3QgX19yZWFkX21vc3RseSBvcHRfdmlvbW11ID0gMDsKK2Jvb2xlYW5fcGFyYW0o InZpb21tdSIsIG9wdF92aW9tbXUpOworCitzcGlubG9ja190IHR5cGVfbGlzdF9sb2NrOworc3Rh dGljIHN0cnVjdCBsaXN0X2hlYWQgdHlwZV9saXN0OworCitzdHJ1Y3QgdmlvbW11X3R5cGUgewor ICAgIHU2NCB0eXBlOworICAgIHN0cnVjdCB2aW9tbXVfb3BzICpvcHM7CisgICAgc3RydWN0IGxp c3RfaGVhZCBub2RlOworfTsKKworaW50IHZpb21tdV9pbml0X2RvbWFpbihzdHJ1Y3QgZG9tYWlu ICpkKQoreworICAgIGQtPnZpb21tdS5ucl92aW9tbXUgPSAwOworICAgIHJldHVybiAwOworfQor CitzdGF0aWMgc3RydWN0IHZpb21tdV90eXBlICp2aW9tbXVfZ2V0X3R5cGUodTY0IHR5cGUpCit7 CisgICAgc3RydWN0IHZpb21tdV90eXBlICp2aW9tbXVfdHlwZSA9IE5VTEw7CisKKyAgICBzcGlu X2xvY2soJnR5cGVfbGlzdF9sb2NrKTsKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KCB2aW9tbXVf dHlwZSwgJnR5cGVfbGlzdCwgbm9kZSApCisgICAgeworICAgICAgICBpZiAoIHZpb21tdV90eXBl LT50eXBlID09IHR5cGUgKQorICAgICAgICB7CisgICAgICAgICAgICBzcGluX3VubG9jaygmdHlw ZV9saXN0X2xvY2spOworICAgICAgICAgICAgcmV0dXJuIHZpb21tdV90eXBlOworICAgICAgICB9 CisgICAgfQorICAgIHNwaW5fdW5sb2NrKCZ0eXBlX2xpc3RfbG9jayk7CisKKyAgICByZXR1cm4g TlVMTDsKK30KKworaW50IHZpb21tdV9yZWdpc3Rlcl90eXBlKHU2NCB0eXBlLCBzdHJ1Y3Qgdmlv bW11X29wcyAqIG9wcykKK3sKKyAgICBzdHJ1Y3QgdmlvbW11X3R5cGUgKnZpb21tdV90eXBlID0g TlVMTDsKKworICAgIGlmICggIXZpb21tdV9lbmFibGVkKCkgKQorICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKworICAgIGlmICggdmlvbW11X2dldF90eXBlKHR5cGUpICkKKyAgICAgICAgcmV0dXJu IC1FRVhJU1Q7CisKKyAgICB2aW9tbXVfdHlwZSA9IHh6YWxsb2Moc3RydWN0IHZpb21tdV90eXBl KTsKKyAgICBpZiAoICF2aW9tbXVfdHlwZSApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisg ICAgdmlvbW11X3R5cGUtPnR5cGUgPSB0eXBlOworICAgIHZpb21tdV90eXBlLT5vcHMgPSBvcHM7 CisKKyAgICBzcGluX2xvY2soJnR5cGVfbGlzdF9sb2NrKTsKKyAgICBsaXN0X2FkZF90YWlsKCZ2 aW9tbXVfdHlwZS0+bm9kZSwgJnR5cGVfbGlzdCk7CisgICAgc3Bpbl91bmxvY2soJnR5cGVfbGlz dF9sb2NrKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZpb21tdV9jcmVhdGUo c3RydWN0IGRvbWFpbiAqZCwgdTY0IHR5cGUsIHU2NCBiYXNlX2FkZHJlc3MsCisgICAgICAgICAg ICAgICAgICB1NjQgbGVuZ3RoLCB1NjQgY2FwcykKK3sKKyAgICBzdHJ1Y3QgdmlvbW11X2luZm8g KmluZm8gPSAmZC0+dmlvbW11OworICAgIHN0cnVjdCB2aW9tbXUgKnZpb21tdTsKKyAgICBzdHJ1 Y3QgdmlvbW11X3R5cGUgKnZpb21tdV90eXBlID0gTlVMTDsKKyAgICBpbnQgcmM7CisKKyAgICB2 aW9tbXVfdHlwZSA9IHZpb21tdV9nZXRfdHlwZSh0eXBlKTsKKyAgICBpZiAoICF2aW9tbXVfdHlw ZSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCBpbmZvLT5ucl92aW9tbXUg Pj0gTlJfVklPTU1VX1BFUl9ET01BSU4KKyAgICAgICAgfHwgIXZpb21tdV90eXBlLT5vcHMgfHwg IXZpb21tdV90eXBlLT5vcHMtPmNyZWF0ZSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisg ICAgdmlvbW11ID0geHphbGxvYyhzdHJ1Y3QgdmlvbW11KTsKKyAgICBpZiAoICF2aW9tbXUgKQor ICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIHZpb21tdS0+YmFzZV9hZGRyZXNzID0gYmFz ZV9hZGRyZXNzOworICAgIHZpb21tdS0+bGVuZ3RoID0gbGVuZ3RoOworICAgIHZpb21tdS0+Y2Fw cyA9IGNhcHM7CisgICAgdmlvbW11LT5vcHMgPSB2aW9tbXVfdHlwZS0+b3BzOworICAgIHZpb21t dS0+dmlvbW11X2lkID0gaW5mby0+bnJfdmlvbW11OworCisgICAgaW5mby0+dmlvbW11W2luZm8t Pm5yX3Zpb21tdV0gPSB2aW9tbXU7CisgICAgaW5mby0+bnJfdmlvbW11Kys7CisKKyAgICByYyA9 IHZpb21tdS0+b3BzLT5jcmVhdGUoZCwgdmlvbW11KTsKKyAgICBpZiAoIHJjIDwgMCApCisgICAg eworICAgICAgICB4ZnJlZSh2aW9tbXUpOworCQlpbmZvLT5ucl92aW9tbXUtLTsKKwkJaW5mby0+ dmlvbW11W2luZm8tPm5yX3Zpb21tdV0gPSBOVUxMOworICAgICAgICByZXR1cm4gcmM7CisgICAg fQorCisgICAgcmV0dXJuIHZpb21tdS0+dmlvbW11X2lkOworfQorCitzdGF0aWMgaW50IHZpb21t dV9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQsIHUzMiB2aW9tbXVfaWQpCit7CisgICAgc3RydWN0 IHZpb21tdV9pbmZvICppbmZvID0gJmQtPnZpb21tdTsKKworICAgIGlmICggdmlvbW11X2lkID4g aW5mby0+bnJfdmlvbW11IHx8ICFpbmZvLT52aW9tbXVbdmlvbW11X2lkXSApCisgICAgICAgIHJl dHVybiAtRUlOVkFMOworCisgICAgaWYgKCBpbmZvLT52aW9tbXVbdmlvbW11X2lkXS0+b3BzLT5k ZXN0cm95KGluZm8tPnZpb21tdVt2aW9tbXVfaWRdKSApCisgICAgICAgIHJldHVybiAtRUZBVUxU OworCisgICAgaW5mby0+dmlvbW11W3Zpb21tdV9pZF0gPSBOVUxMOworICAgIHJldHVybiAwOwor fQorCitzdGF0aWMgdTY0IHZpb21tdV9xdWVyeV9jYXBzKHN0cnVjdCBkb21haW4gKmQsIHU2NCB0 eXBlKQoreworICAgIHN0cnVjdCB2aW9tbXVfdHlwZSAqdmlvbW11X3R5cGUgPSB2aW9tbXVfZ2V0 X3R5cGUodHlwZSk7CisKKyAgICBpZiAoICF2aW9tbXVfdHlwZSApCisgICAgICAgIHJldHVybiAt RUlOVkFMOworCisgICAgcmV0dXJuIHZpb21tdV90eXBlLT5vcHMtPnF1ZXJ5X2NhcHMoZCk7Cit9 CisKK2ludCBfX2luaXQgdmlvbW11X3NldHVwKHZvaWQpCit7CisgICAgSU5JVF9MSVNUX0hFQUQo JnR5cGVfbGlzdCk7CisgICAgc3Bpbl9sb2NrX2luaXQoJnR5cGVfbGlzdF9sb2NrKTsKKyAgICBy ZXR1cm4gMDsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMt ZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQK KyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3Zpb21tdS5oIGIv eGVuL2luY2x1ZGUvcHVibGljL3Zpb21tdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmQyNWUzYWQKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvdmlv bW11LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIHZpb21tdS5oCisgKgorICogVmlydHVhbCBJ T01NVSBpbmZvcm1hdGlvbgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNyBJbnRlbCBDb3Jwb3Jh dGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uCisgKiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorICogZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwKKyAqIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us CisgKiBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLAorICogYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywKKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCisgKiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyAq IEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsCisgKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRQorICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX1ZJT01N VV9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX1ZJT01NVV9IX18KKworLyogVklPTU1VIHR5cGUg Ki8KKyNkZWZpbmUgVklPTU1VX1RZUEVfSU5URUxfVlREICAgICAoMXUgPDwgMCkKKworLyogVklP TU1VIGNhcGFiaWxpdGllcyovCisjZGVmaW5lIFZJT01NVV9DQVBfSVJRX1JFTUFQUElORyAgKDF1 IDw8IDApCisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfVklPTU1VX0hfXyAqLworCisvKgorICog TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTog bmlsCisgKiBFbmQ6CisgKi8KKwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgg Yi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAppbmRleCAxMTI3Y2E5Li5hZjUyYWU4IDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQu aApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgPHhlbi9wZXJmYy5oPgogI2luY2x1ZGUgPGFz bS9hdG9taWMuaD4KICNpbmNsdWRlIDx4ZW4vd2FpdC5oPgorI2luY2x1ZGUgPHhlbi92aW9tbXUu aD4KICNpbmNsdWRlIDxwdWJsaWMveGVuLmg+CiAjaW5jbHVkZSA8cHVibGljL2RvbWN0bC5oPgog I2luY2x1ZGUgPHB1YmxpYy9zeXNjdGwuaD4KQEAgLTQ3Nyw2ICs0NzgsNyBAQCBzdHJ1Y3QgZG9t YWluCiAgICAgLyogdk5VTUEgdG9wb2xvZ3kgYWNjZXNzZXMgYXJlIHByb3RlY3RlZCBieSByd2xv Y2suICovCiAgICAgcndsb2NrX3Qgdm51bWFfcndsb2NrOwogICAgIHN0cnVjdCB2bnVtYV9pbmZv ICp2bnVtYTsKKyAgICBzdHJ1Y3QgdmlvbW11X2luZm8gdmlvbW11OwogCiAgICAgLyogQ29tbW9u IG1vbml0b3Igb3B0aW9ucyAqLwogICAgIHN0cnVjdCB7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS94ZW4vdmlvbW11LmggYi94ZW4vaW5jbHVkZS94ZW4vdmlvbW11LmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMGE5M2FhNAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNs dWRlL3hlbi92aW9tbXUuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogaW5jbHVkZS94ZW4vdmlv bW11LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uCisgKiBB dXRob3I6IExhbiBUaWFueXUgPHRpYW55dS5sYW5AaW50ZWwuY29tPiAKKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM SVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICovCisjaWZuZGVmIF9fWEVOX1ZJT01NVV9IX18K KyNkZWZpbmUgX19YRU5fVklPTU1VX0hfXworCisjZGVmaW5lIE5SX1ZJT01NVV9QRVJfRE9NQUlO IDEKKworc3RydWN0IHZpb21tdTsKKworc3RydWN0IHZpb21tdV9vcHMgeworICAgIHU2NCAoKnF1 ZXJ5X2NhcHMpKHN0cnVjdCBkb21haW4gKmQpOworICAgIGludCAoKmNyZWF0ZSkoc3RydWN0IGRv bWFpbiAqZCwgc3RydWN0IHZpb21tdSAqdmlvbW11KTsKKyAgICBpbnQgKCpkZXN0cm95KShzdHJ1 Y3QgdmlvbW11ICp2aW9tbXUpOworfTsKKworc3RydWN0IHZpb21tdSB7CisgICAgdTY0IGJhc2Vf YWRkcmVzczsKKyAgICB1NjQgbGVuZ3RoOworICAgIHU2NCBjYXBzOworICAgIHUzMiB2aW9tbXVf aWQ7CisgICAgY29uc3Qgc3RydWN0IHZpb21tdV9vcHMgKm9wczsKKyAgICB2b2lkICpwcml2Owor fTsKKworc3RydWN0IHZpb21tdV9pbmZvIHsKKyAgICB1MzIgbnJfdmlvbW11OworICAgIHN0cnVj dCB2aW9tbXUgKnZpb21tdVtOUl9WSU9NTVVfUEVSX0RPTUFJTl07IC8qIHZpb21tdSBhcnJheSov Cit9OworCisjaWZkZWYgQ09ORklHX1ZJT01NVQorZXh0ZXJuIGJvb2xfdCBvcHRfdmlvbW11Owor c3RhdGljIGlubGluZSBib29sX3QgdmlvbW11X2VuYWJsZWQodm9pZCkgeyByZXR1cm4gb3B0X3Zp b21tdTsgfQoraW50IHZpb21tdV9pbml0X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKTsKK2ludCB2 aW9tbXVfcmVnaXN0ZXJfdHlwZSh1NjQgdHlwZSwgc3RydWN0IHZpb21tdV9vcHMgKiBvcHMpOwor aW50IHZpb21tdV9zZXR1cCh2b2lkKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCB2aW9tbXVf aW5pdF9kb21haW4oc3RydWN0IGRvbWFpbiAqZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGlu ZSBpbnQgdmlvbW11X3JlZ2lzdGVyX3R5cGUodTY0IHR5cGUsIHN0cnVjdCB2aW9tbXVfb3BzICog b3BzKQoreyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgX19pbml0IHZpb21tdV9zZXR1 cCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGJvb2xfdCB2aW9tbXVfZW5hYmxl ZCh2b2lkKSB7IHJldHVybiAwOyB9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fWEVOX1ZJT01NVV9I X18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1z dHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGlu ZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIAoxLjguMy4xCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==