From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v4 02/28] VIOMMU: Add vIOMMU framework and vIOMMU domctl Date: Fri, 17 Nov 2017 14:22:09 +0800 Message-ID: <1510899755-40237-3-git-send-email-chao.gao@intel.com> References: <1510899755-40237-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1510899755-40237-1-git-send-email-chao.gao@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 , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Ian Jackson , Tim Deegan , Jan Beulich , Andrew Cooper , Chao Gao , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org RnJvbTogTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+CgpUaGlzIHBhdGNoIGlzIHRv IGludHJvZHVjZSBhbiBhYnN0cmFjdCBsYXllciBmb3IgYXJjaCB2SU9NTVUgaW1wbGVtZW50YXRp b24KYW5kIHZJT01NVSBkb21jdGwgdG8gZGVhbCB3aXRoIHJlcXVlc3RzIGZyb20gdG9vbCBzdGFj ay4gQXJjaCB2SU9NTVUgY29kZSBuZWVkcyB0bwpwcm92aWRlIGNhbGxiYWNrLiB2SU9NTVUgZG9t Y3RsIHN1cHBvcnRzIHRvIGNyZWF0ZSB2SU9NTVUgaW5zdGFuY2UgaW4gaHlwZXJ2aXNvcgphbmQg aXQgd2lsbCBiZSBkZXN0cm95ZWQgZHVyaW5nIGRlc3Ryb3lpbmcgZG9tYWluLgoKU2lnbmVkLW9m Zi1ieTogTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IENo YW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Ci0tLQp2NDoKIC0gaW50cm9kdWNlIFJFR0lTVEVS X1ZJT01NVSgpIHRvIHJlZ2lzdGVyIHZpb21tdSB0eXBlcyBhbmQgb3BzLgogLSByZW1vdmUgdW5u ZWVkZWQgZG9tY3RsIGludGVyZmFjZSB0byBkZXN0cm95IHZpb21tdS4KLS0tCiBkb2NzL21pc2Mv eGVuLWNvbW1hbmQtbGluZS5tYXJrZG93biB8ICAgNyArKwogeGVuL2FyY2gveDg2L0tjb25maWcg ICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAg ICAgfCAgIDMgKwogeGVuL2FyY2gveDg2L3hlbi5sZHMuUyAgICAgICAgICAgICAgfCAgIDMgKwog eGVuL2NvbW1vbi9LY29uZmlnICAgICAgICAgICAgICAgICAgfCAgIDMgKwogeGVuL2NvbW1vbi9N YWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2NvbW1vbi9kb21jdGwuYyAgICAg ICAgICAgICAgICAgfCAgIDcgKysKIHhlbi9jb21tb24vdmlvbW11LmMgICAgICAgICAgICAgICAg IHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vZG9tYWluLmggICAgfCAgIDMgKwogeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0 bC5oICAgICAgICAgfCAgMzEgKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vdmlvbW11LmggICAg ICAgICAgICB8ICA2OSArKysrKysrKysrKysrKysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgMjUz IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vY29tbW9uL3Zpb21tdS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUveGVuL3Zpb21tdS5oCgpkaWZmIC0tZ2l0IGEv ZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gYi9kb2NzL21pc2MveGVuLWNvbW1h bmQtbGluZS5tYXJrZG93bgppbmRleCBlYjQ5OTVlLi5kMDk3MzgyIDEwMDY0NAotLS0gYS9kb2Nz L21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgorKysgYi9kb2NzL21pc2MveGVuLWNvbW1h bmQtbGluZS5tYXJrZG93bgpAQCAtMTgzNiwzICsxODM2LDEwIEBAIG1vZGUuCiA+IERlZmF1bHQ6 IGB0cnVlYAogCiBQZXJtaXQgdXNlIG9mIHRoZSBgeHNhdmUveHJzdG9yYCBpbnN0cnVjdGlvbnMu CisKKyMjIyB2aW9tbXUKKz4gYD0gPGJvb2xlYW4+YAorCis+IERlZmF1bHQ6IGBmYWxzZWAKKwor UGVybWl0IHVzZSBvZiB2aW9tbXUgaW50ZXJmYWNlIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSB2aW9t bXUgZGV2aWNlIG1vZGVsLgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L0tjb25maWcgYi94ZW4v YXJjaC94ODYvS2NvbmZpZwppbmRleCA2NDk1NWRjLi5kZjI1NGU0IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvS2NvbmZpZworKysgYi94ZW4vYXJjaC94ODYvS2NvbmZpZwpAQCAtMjUsNiArMjUs NyBAQCBjb25maWcgWDg2CiAJc2VsZWN0IEhBU19VQlNBTgogCXNlbGVjdCBOVU1BCiAJc2VsZWN0 IFZHQQorCXNlbGVjdCBWSU9NTVUKIAogY29uZmlnIEFSQ0hfREVGQ09ORklHCiAJc3RyaW5nCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0u YwppbmRleCAyMDViNGNiLi45NjQ0MThhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2 bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs dWRlIDx4ZW4vcmFuZ2VzZXQuaD4KICNpbmNsdWRlIDx4ZW4vbW9uaXRvci5oPgogI2luY2x1ZGUg PHhlbi93YXJuaW5nLmg+CisjaW5jbHVkZSA8eGVuL3Zpb21tdS5oPgogI2luY2x1ZGUgPGFzbS9z aGFkb3cuaD4KICNpbmNsdWRlIDxhc20vaGFwLmg+CiAjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4K QEAgLTY5Myw2ICs2OTQsOCBAQCB2b2lkIGh2bV9kb21haW5fcmVsaW5xdWlzaF9yZXNvdXJjZXMo c3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgcG10aW1lcl9kZWluaXQoZCk7CiAgICAgICAgIGhw ZXRfZGVpbml0KGQpOwogICAgIH0KKworICAgIHZpb21tdV9kZXN0cm95X2RvbWFpbihkKTsKIH0K IAogdm9pZCBodm1fZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni94ZW4ubGRzLlMgYi94ZW4vYXJjaC94ODYveGVuLmxkcy5TCmluZGV4IGQ1 ZTg4MjEuLjdmOGQyYjggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ZW4ubGRzLlMKKysrIGIv eGVuL2FyY2gveDg2L3hlbi5sZHMuUwpAQCAtMjMxLDYgKzIzMSw5IEBAIFNFQ1RJT05TCiAgICAg ICAgX19zdGFydF9zY2hlZHVsZXJzX2FycmF5ID0gLjsKICAgICAgICAqKC5kYXRhLnNjaGVkdWxl cnMpCiAgICAgICAgX19lbmRfc2NoZWR1bGVyc19hcnJheSA9IC47CisgICAgICAgX19zdGFydF92 aW9tbXVzX2FycmF5ID0gLjsKKyAgICAgICAqKC5kYXRhLnZpb21tdXMpCisgICAgICAgX19lbmRf dmlvbW11c19hcnJheSA9IC47CiAgIH0gOnRleHQKIAogICAuZGF0YSA6IHsgICAgICAgICAgICAg ICAgICAgIC8qIERhdGEgKi8KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vS2NvbmZpZyBiL3hlbi9j b21tb24vS2NvbmZpZwppbmRleCAxMDNlZjQ0Li42MmFhYTc2IDEwMDY0NAotLS0gYS94ZW4vY29t bW9uL0tjb25maWcKKysrIGIveGVuL2NvbW1vbi9LY29uZmlnCkBAIC01Miw2ICs1Miw5IEBAIGNv bmZpZyBIQVNfQ0hFQ0tQT0xJQ1kKIAlzdHJpbmcKIAlvcHRpb24gZW52PSJYRU5fSEFTX0NIRUNL UE9MSUNZIgogCitjb25maWcgVklPTU1VCisJYm9vbAorCiBjb25maWcgS0VYRUMKIAlib29sICJr ZXhlYyBzdXBwb3J0IgogCWRlZmF1bHQgeQpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9NYWtlZmls ZSBiL3hlbi9jb21tb24vTWFrZWZpbGUKaW5kZXggNjZjYzJjOC4uMTgyYjNhYyAxMDA2NDQKLS0t IGEveGVuL2NvbW1vbi9NYWtlZmlsZQorKysgYi94ZW4vY29tbW9uL01ha2VmaWxlCkBAIC01Niw2 ICs1Niw3IEBAIG9iai15ICs9IHRpbWUubwogb2JqLXkgKz0gdGltZXIubwogb2JqLXkgKz0gdHJh Y2Uubwogb2JqLXkgKz0gdmVyc2lvbi5vCitvYmotJChDT05GSUdfVklPTU1VKSArPSB2aW9tbXUu bwogb2JqLXkgKz0gdmlydHVhbF9yZWdpb24ubwogb2JqLXkgKz0gdm1fZXZlbnQubwogb2JqLXkg Kz0gdm1hcC5vCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2RvbWN0bC5jIGIveGVuL2NvbW1vbi9k b21jdGwuYwppbmRleCAzYzZmYTRlLi45YzU2NTFkIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2Rv bWN0bC5jCisrKyBiL3hlbi9jb21tb24vZG9tY3RsLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNs dWRlIDx4ZW4vcGFnaW5nLmg+CiAjaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5oPgogI2luY2x1ZGUg PHhlbi92bV9ldmVudC5oPgorI2luY2x1ZGUgPHhlbi92aW9tbXUuaD4KICNpbmNsdWRlIDx4ZW4v bW9uaXRvci5oPgogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CiAjaW5jbHVkZSA8YXNtL2lycS5o PgpAQCAtMTE1NSw2ICsxMTU2LDEyIEBAIGxvbmcgZG9fZG9tY3RsKFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0oeGVuX2RvbWN0bF90KSB1X2RvbWN0bCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvcC0+dS5zZXRfZ250dGFiX2xpbWl0cy5tYXB0cmFja19mcmFtZXMpOwogICAg ICAgICBicmVhazsKIAorICAgIGNhc2UgWEVOX0RPTUNUTF92aW9tbXVfb3A6CisgICAgICAgIHJl dCA9IHZpb21tdV9kb21jdGwoZCwgJm9wLT51LnZpb21tdV9vcCk7CisgICAgICAgIGlmICggIXJl dCApCisgICAgICAgICAgICBjb3B5YmFjayA9IDE7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVm YXVsdDoKICAgICAgICAgcmV0ID0gYXJjaF9kb19kb21jdGwob3AsIGQsIHVfZG9tY3RsKTsKICAg ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3Zpb21tdS5jIGIveGVuL2NvbW1v bi92aW9tbXUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDhiN2ZkCi0t LSAvZGV2L251bGwKKysrIGIveGVuL2NvbW1vbi92aW9tbXUuYwpAQCAtMCwwICsxLDEyNSBAQAor LyoKKyAqIGNvbW1vbi92aW9tbXUuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAxNyBJbnRlbCBD b3Jwb3JhdGlvbgorICogQXV0aG9yOiBMYW4gVGlhbnl1IDx0aWFueXUubGFuQGludGVsLmNvbT4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lU SE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFp bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtOyBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHhl bi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi90eXBl cy5oPgorI2luY2x1ZGUgPHhlbi92aW9tbXUuaD4KKworZXh0ZXJuIGNvbnN0IHN0cnVjdCB2aW9t bXVfb3BzICpfX3N0YXJ0X3Zpb21tdXNfYXJyYXlbXSwgKl9fZW5kX3Zpb21tdXNfYXJyYXlbXTsK KyNkZWZpbmUgTlVNX1ZJT01NVV9UWVBFIChfX2VuZF92aW9tbXVzX2FycmF5IC0gX19zdGFydF92 aW9tbXVzX2FycmF5KQorI2RlZmluZSB2aW9tbXVfdHlwZV9hcnJheSBfX3N0YXJ0X3Zpb21tdXNf YXJyYXkKKworaW50IHZpb21tdV9kZXN0cm95X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQorewor ICAgIHN0cnVjdCB2aW9tbXUgKnZpb21tdSA9IGQtPmFyY2guaHZtX2RvbWFpbi52aW9tbXU7Cisg ICAgaW50IHJldDsKKworICAgIGlmICggIXZpb21tdSApCisgICAgICAgIHJldHVybiAtRU5PREVW OworCisgICAgcmV0ID0gdmlvbW11LT5vcHMtPmRlc3Ryb3kodmlvbW11KTsKKyAgICBpZiAoIHJl dCA8IDAgKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgeGZyZWUodmlvbW11KTsKKyAgICBk LT5hcmNoLmh2bV9kb21haW4udmlvbW11ID0gTlVMTDsKKworICAgIHJldHVybiAwOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IHZpb21tdV9vcHMgKnZpb21tdV9nZXRfb3BzKHVpbnQ4X3QgdHlw ZSkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgTlVNX1ZJT01NVV9UWVBF OyBpKyspCisgICAgeworICAgICAgICBpZiAoIHZpb21tdV90eXBlX2FycmF5W2ldLT50eXBlID09 IHR5cGUgKQorICAgICAgICAgICAgcmV0dXJuIHZpb21tdV90eXBlX2FycmF5W2ldOworICAgIH0K KworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50IHZpb21tdV9jcmVhdGUoc3RydWN0 IGRvbWFpbiAqZCwgdWludDhfdCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90IGJhc2VfYWRkcmVzcywgdWludDY0X3QgY2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCAqdmlvbW11X2lkKQoreworICAgIHN0cnVjdCB2aW9tbXUgKnZpb21tdTsKKyAg ICBjb25zdCBzdHJ1Y3QgdmlvbW11X29wcyAqdmlvbW11X29wcyA9IE5VTEw7CisgICAgaW50IHJj OworCisgICAgLyogT25seSBzdXBwb3J0IG9uZSB2SU9NTVUgcGVyIGRvbWFpbi4gKi8KKyAgICBp ZiAoIGQtPmFyY2guaHZtX2RvbWFpbi52aW9tbXUgKQorICAgICAgICByZXR1cm4gLUUyQklHOwor CisgICAgdmlvbW11X29wcyA9IHZpb21tdV9nZXRfb3BzKHR5cGUpOworICAgIGlmICggIXZpb21t dV9vcHMgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIEFTU0VSVCh2aW9tbXVfb3Bz LT5jcmVhdGUpOworCisgICAgdmlvbW11ID0geHphbGxvYyhzdHJ1Y3QgdmlvbW11KTsKKyAgICBp ZiAoICF2aW9tbXUgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIHZpb21tdS0+YmFz ZV9hZGRyZXNzID0gYmFzZV9hZGRyZXNzOworICAgIHZpb21tdS0+Y2FwcyA9IGNhcHM7CisgICAg dmlvbW11LT5vcHMgPSB2aW9tbXVfb3BzOworCisgICAgcmMgPSB2aW9tbXVfb3BzLT5jcmVhdGUo ZCwgdmlvbW11KTsKKyAgICBpZiAoIHJjIDwgMCApCisgICAgeworICAgICAgICB4ZnJlZSh2aW9t bXUpOworICAgICAgICByZXR1cm4gcmM7CisgICAgfQorCisgICAgZC0+YXJjaC5odm1fZG9tYWlu LnZpb21tdSA9IHZpb21tdTsKKworICAgIC8qIE9ubHkgc3VwcG9ydCBvbmUgdklPTU1VIHBlciBk b21haW4uICovCisgICAgKnZpb21tdV9pZCA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCB2 aW9tbXVfZG9tY3RsKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB4ZW5fZG9tY3RsX3Zpb21tdV9v cCAqb3ApCit7CisgICAgaW50IHJjOworCisgICAgc3dpdGNoICggb3AtPmNtZCApCisgICAgewor ICAgIGNhc2UgWEVOX0RPTUNUTF92aW9tbXVfY3JlYXRlOgorICAgICAgICByYyA9IHZpb21tdV9j cmVhdGUoZCwgb3AtPnUuY3JlYXRlLnR5cGUsIG9wLT51LmNyZWF0ZS5iYXNlX2FkZHJlc3MsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+dS5jcmVhdGUuY2FwYWJpbGl0aWVzLCAmb3At PnUuY3JlYXRlLmlkKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0 dXJuIC1FTk9TWVM7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogTG9jYWwg dmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNp Yy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisg KiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKaW5kZXggN2YxMjhjMC4uZmNkMzQ4 MiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUg X19BU01fWDg2X0hWTV9ET01BSU5fSF9fCiAKICNpbmNsdWRlIDx4ZW4vaW9tbXUuaD4KKyNpbmNs dWRlIDx4ZW4vdmlvbW11Lmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9pcnEuaD4KICNpbmNsdWRlIDxh c20vaHZtL3ZwdC5oPgogI2luY2x1ZGUgPGFzbS9odm0vdmxhcGljLmg+CkBAIC0xOTYsNiArMTk3 LDggQEAgc3RydWN0IGh2bV9kb21haW4gewogICAgICAgICBzdHJ1Y3Qgdm14X2RvbWFpbiB2bXg7 CiAgICAgICAgIHN0cnVjdCBzdm1fZG9tYWluIHN2bTsKICAgICB9OworCisgICAgc3RydWN0IHZp b21tdSAqdmlvbW11OwogfTsKIAogI2RlZmluZSBoYXBfZW5hYmxlZChkKSAgKChkKS0+YXJjaC5o dm1fZG9tYWluLmhhcF9lbmFibGVkKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2Rv bWN0bC5oIGIveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oCmluZGV4IDcwMDI3YWIuLjlmNmYw YWEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAorKysgYi94ZW4vaW5j bHVkZS9wdWJsaWMvZG9tY3RsLmgKQEAgLTExMDUsNiArMTEwNSwzNSBAQCBzdHJ1Y3QgeGVuX2Rv bWN0bF92dWFydF9vcCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogfTsK IAorLyogIHZJT01NVSBoZWxwZXIKKyAqCisgKiB2SU9NTVUgaW50ZXJmYWNlIGNhbiBiZSB1c2Vk IHRvIGNyZWF0ZSB2SU9NTVUuCisgKi8KKworc3RydWN0IHhlbl9kb21jdGxfdmlvbW11X29wIHsK KyAgICB1aW50MzJfdCBjbWQ7CisjZGVmaW5lIFhFTl9ET01DVExfdmlvbW11X2NyZWF0ZSAgICAg ICAgMAorICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8qIElOIC0g dklPTU1VIHR5cGUgKi8KKyAgICAgICAgICAgIHVpbnQ4X3QgdHlwZTsKKyNkZWZpbmUgVklPTU1V X1RZUEVfSU5URUxfVlREICAgICAgICAgICAwCisgICAgICAgICAgICAvKiAKKyAgICAgICAgICAg ICAqIElOIC0gTU1JTyBiYXNlIGFkZHJlc3Mgb2YgdklPTU1VLiB2SU9NTVUgZGV2aWNlIG1vZGVs cworICAgICAgICAgICAgICogYXJlIGluIGNoYXJnZSBvZiB0byBjaGVjayBiYXNlX2FkZHJlc3Mu CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHVpbnQ2NF90IGJhc2VfYWRkcmVzczsKKyAg ICAgICAgICAgIC8qIElOIC0gQ2FwYWJpbGl0aWVzIHdpdGggd2hpY2ggd2Ugd2FudCB0byBjcmVh dGUgKi8KKyAgICAgICAgICAgIHVpbnQ2NF90IGNhcGFiaWxpdGllczsKKyNkZWZpbmUgVklPTU1V X0NBUF9JUlFfUkVNQVBQSU5HICAgICAgICAoMXUgPDwgMCkKKyAgICAgICAgICAgIC8qIE9VVCAt IHZJT01NVSBpZGVudGl0eSAqLworICAgICAgICAgICAgdWludDMyX3QgaWQ7CisgICAgICAgIH0g Y3JlYXRlOworICAgIH0gdTsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fZG9tY3RsX3Zpb21tdV9v cCB4ZW5fZG9tY3RsX3Zpb21tdV9vcDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9kb21j dGxfdmlvbW11X29wKTsKKwogc3RydWN0IHhlbl9kb21jdGwgewogICAgIHVpbnQzMl90IGNtZDsK ICNkZWZpbmUgWEVOX0RPTUNUTF9jcmVhdGVkb21haW4gICAgICAgICAgICAgICAgICAgMQpAQCAt MTE4NCw2ICsxMjEzLDcgQEAgc3RydWN0IHhlbl9kb21jdGwgewogI2RlZmluZSBYRU5fRE9NQ1RM X3NvZnRfcmVzZXQgICAgICAgICAgICAgICAgICAgIDc5CiAjZGVmaW5lIFhFTl9ET01DVExfc2V0 X2dudHRhYl9saW1pdHMgICAgICAgICAgICAgODAKICNkZWZpbmUgWEVOX0RPTUNUTF92dWFydF9v cCAgICAgICAgICAgICAgICAgICAgICA4MQorI2RlZmluZSBYRU5fRE9NQ1RMX3Zpb21tdV9vcCAg ICAgICAgICAgICAgICAgICAgIDgyCiAjZGVmaW5lIFhFTl9ET01DVExfZ2Ric3hfZ3Vlc3RtZW1p byAgICAgICAgICAgIDEwMDAKICNkZWZpbmUgWEVOX0RPTUNUTF9nZGJzeF9wYXVzZXZjcHUgICAg ICAgICAgICAgMTAwMQogI2RlZmluZSBYRU5fRE9NQ1RMX2dkYnN4X3VucGF1c2V2Y3B1ICAgICAg ICAgICAxMDAyCkBAIC0xMjQ4LDYgKzEyNzgsNyBAQCBzdHJ1Y3QgeGVuX2RvbWN0bCB7CiAgICAg ICAgIHN0cnVjdCB4ZW5fZG9tY3RsX3Bzcl9jYXRfb3AgICAgICAgIHBzcl9jYXRfb3A7CiAgICAg ICAgIHN0cnVjdCB4ZW5fZG9tY3RsX3NldF9nbnR0YWJfbGltaXRzIHNldF9nbnR0YWJfbGltaXRz OwogICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF92dWFydF9vcCAgICAgICAgICB2dWFydF9vcDsK KyAgICAgICAgc3RydWN0IHhlbl9kb21jdGxfdmlvbW11X29wICAgICAgICAgdmlvbW11X29wOwog ICAgICAgICB1aW50OF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRbMTI4XTsKICAg ICB9IHU7CiB9OwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3Zpb21tdS5oIGIveGVuL2lu Y2x1ZGUveGVuL3Zpb21tdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4 NTlkODAKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS94ZW4vdmlvbW11LmgKQEAgLTAs MCArMSw2OSBAQAorLyoKKyAqIGluY2x1ZGUveGVuL3Zpb21tdS5oCisgKgorICogQ29weXJpZ2h0 IChjKSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbgorICogQXV0aG9yOiBMYW4gVGlhbnl1IDx0aWFu eXUubGFuQGludGVsLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAq IHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwg YmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhp cyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisg KgorICovCisjaWZuZGVmIF9fWEVOX1ZJT01NVV9IX18KKyNkZWZpbmUgX19YRU5fVklPTU1VX0hf XworCisjaWZkZWYgQ09ORklHX1ZJT01NVQorCitzdHJ1Y3QgdmlvbW11OworCitzdHJ1Y3Qgdmlv bW11X29wcyB7CisgICAgdWludDhfdCB0eXBlOworICAgIGludCAoKmNyZWF0ZSkoc3RydWN0IGRv bWFpbiAqZCwgc3RydWN0IHZpb21tdSAqdmlvbW11KTsKKyAgICBpbnQgKCpkZXN0cm95KShzdHJ1 Y3QgdmlvbW11ICp2aW9tbXUpOworfTsKKworc3RydWN0IHZpb21tdSB7CisgICAgdWludDY0X3Qg YmFzZV9hZGRyZXNzOworICAgIHVpbnQ2NF90IGNhcHM7CisgICAgY29uc3Qgc3RydWN0IHZpb21t dV9vcHMgKm9wczsKKyAgICB2b2lkICpwcml2OworfTsKKworI2RlZmluZSBSRUdJU1RFUl9WSU9N TVUoeCkgc3RhdGljIGNvbnN0IHN0cnVjdCB2aW9tbXVfb3BzICp4IyNfZW50cnkgXAorICBfX3Vz ZWRfc2VjdGlvbigiLmRhdGEudmlvbW11cyIpID0gJng7CisKKworaW50IHZpb21tdV9yZWdpc3Rl cl90eXBlKHVpbnQ4X3QgdHlwZSwgc3RydWN0IHZpb21tdV9vcHMgKm9wcyk7CitpbnQgdmlvbW11 X2Rlc3Ryb3lfZG9tYWluKHN0cnVjdCBkb21haW4gKmQpOworaW50IHZpb21tdV9kb21jdGwoc3Ry dWN0IGRvbWFpbiAqZCwgc3RydWN0IHhlbl9kb21jdGxfdmlvbW11X29wICpvcCk7CisjZWxzZQor c3RhdGljIGlubGluZSBpbnQgdmlvbW11X2Rlc3Ryb3lfZG9tYWluKHN0cnVjdCBkb21haW4gKmQp Cit7CisgICAgcmV0dXJuIC1FSU5WQUw7Cit9CitzdGF0aWMgaW5saW5lCitpbnQgdmlvbW11X2Rv bWN0bChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgeGVuX2RvbWN0bF92aW9tbXVfb3AgKm9wKQor eworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19YRU5fVklPTU1V X0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxl LXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICog aW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KLS0gCjEuOC4zLjEKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK