From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [PATCH V3 2/29] VIOMMU: Add vIOMMU helper functions to create, destroy vIOMMU instance Date: Thu, 21 Sep 2017 23:01:43 -0400 Message-ID: <1506049330-11196-3-git-send-email-tianyu.lan@intel.com> References: <1506049330-11196-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: <1506049330-11196-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, sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, jbeulich@suse.com, roger.pau@citrix.com, chao.gao@intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpcyB0byBpbnRyb2R1Y2UgYW4gYWJzdHJhY3QgbGF5ZXIgZm9yIGFyY2ggdklP TU1VIGltcGxlbWVudGF0aW9uCnRvIGRlYWwgd2l0aCByZXF1ZXN0cyBmcm9tIGRvbTAuIEFyY2gg dklPTU1VIGNvZGUgbmVlZHMgdG8gcHJvdmlkZSBjYWxsYmFjawp0byBkbyBjcmVhdGUgYW5kIGRl c3Ryb3kgb3BlcmF0aW9uLgoKU2lnbmVkLW9mZi1ieTogTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBp bnRlbC5jb20+Ci0tLQogZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gfCAgIDcg KysKIHhlbi9hcmNoL3g4Ni9LY29uZmlnICAgICAgICAgICAgICAgIHwgICAxICsKIHhlbi9jb21t b24vS2NvbmZpZyAgICAgICAgICAgICAgICAgIHwgICAzICsKIHhlbi9jb21tb24vTWFrZWZpbGUg ICAgICAgICAgICAgICAgIHwgICAxICsKIHhlbi9jb21tb24vZG9tYWluLmMgICAgICAgICAgICAg ICAgIHwgICA0ICsKIHhlbi9jb21tb24vdmlvbW11LmMgICAgICAgICAgICAgICAgIHwgMTQ0ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUveGVuL3NjaGVk LmggICAgICAgICAgICAgfCAgIDggKysKIHhlbi9pbmNsdWRlL3hlbi92aW9tbXUuaCAgICAgICAg ICAgIHwgIDYzICsrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjMxIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vY29tbW9uL3Zpb21tdS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgeGVuL2luY2x1ZGUveGVuL3Zpb21tdS5oCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNj L3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5t YXJrZG93bgppbmRleCA5Nzk3YzhkLi5kZmQxZGI1IDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVu LWNvbW1hbmQtbGluZS5tYXJrZG93bgorKysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5t YXJrZG93bgpAQCAtMTgyNSwzICsxODI1LDEwIEBAIG1vZGUuCiA+IERlZmF1bHQ6IGB0cnVlYAog CiBQZXJtaXQgdXNlIG9mIHRoZSBgeHNhdmUveHJzdG9yYCBpbnN0cnVjdGlvbnMuCisKKyMjIyB2 aW9tbXUKKz4gYD0gPGJvb2xlYW4+YAorCis+IERlZmF1bHQ6IGBmYWxzZWAKKworUGVybWl0IHVz ZSBvZiB2aW9tbXUgaW50ZXJmYWNlIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSB2aW9tbXUgZGV2aWNl IG1vZGVsLgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L0tjb25maWcgYi94ZW4vYXJjaC94ODYv S2NvbmZpZwppbmRleCAzMGMyNzY5Li4xZjFkZTk2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv S2NvbmZpZworKysgYi94ZW4vYXJjaC94ODYvS2NvbmZpZwpAQCAtMjMsNiArMjMsNyBAQCBjb25m aWcgWDg2CiAJc2VsZWN0IEhBU19QRFgKIAlzZWxlY3QgTlVNQQogCXNlbGVjdCBWR0EKKwlzZWxl Y3QgVklPTU1VCiAKIGNvbmZpZyBBUkNIX0RFRkNPTkZJRwogCXN0cmluZwpkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi9LY29uZmlnIGIveGVuL2NvbW1vbi9LY29uZmlnCmluZGV4IGRjOGU4NzYuLjJh ZDJjOGQgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vS2NvbmZpZworKysgYi94ZW4vY29tbW9uL0tj b25maWcKQEAgLTQ5LDYgKzQ5LDkgQEAgY29uZmlnIEhBU19DSEVDS1BPTElDWQogCXN0cmluZwog CW9wdGlvbiBlbnY9IlhFTl9IQVNfQ0hFQ0tQT0xJQ1kiCiAKK2NvbmZpZyBWSU9NTVUKKwlib29s CisKIGNvbmZpZyBLRVhFQwogCWJvb2wgImtleGVjIHN1cHBvcnQiCiAJZGVmYXVsdCB5CmRpZmYg LS1naXQgYS94ZW4vY29tbW9uL01ha2VmaWxlIGIveGVuL2NvbW1vbi9NYWtlZmlsZQppbmRleCAz OWUyNjE0Li5kYTMyZjcxIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL01ha2VmaWxlCisrKyBiL3hl bi9jb21tb24vTWFrZWZpbGUKQEAgLTU2LDYgKzU2LDcgQEAgb2JqLXkgKz0gdGltZS5vCiBvYmot eSArPSB0aW1lci5vCiBvYmoteSArPSB0cmFjZS5vCiBvYmoteSArPSB2ZXJzaW9uLm8KK29iai0k KENPTkZJR19WSU9NTVUpICs9IHZpb21tdS5vCiBvYmoteSArPSB2aXJ0dWFsX3JlZ2lvbi5vCiBv YmoteSArPSB2bV9ldmVudC5vCiBvYmoteSArPSB2bWFwLm8KZGlmZiAtLWdpdCBhL3hlbi9jb21t b24vZG9tYWluLmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCmluZGV4IDVhZWJjZjIuLmNkYjFjOWQg MTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZG9tYWluLmMKKysrIGIveGVuL2NvbW1vbi9kb21haW4u YwpAQCAtODE0LDYgKzgxNCwxMCBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9kb21haW5fZGVzdHJv eShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiAKICAgICBzY2hlZF9kZXN0cm95X2RvbWFpbihkKTsK IAorI2lmZGVmIENPTkZJR19WSU9NTVUKKyAgICB2aW9tbXVfZGVzdHJveV9kb21haW4oZCk7Cisj ZW5kaWYKKwogICAgIC8qIEZyZWUgcGFnZSB1c2VkIGJ5IHhlbiBvcHJvZmlsZSBidWZmZXIuICov CiAjaWZkZWYgQ09ORklHX1hFTk9QUk9GCiAgICAgZnJlZV94ZW5vcHJvZl9wYWdlcyhkKTsKZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24vdmlvbW11LmMgYi94ZW4vY29tbW9uL3Zpb21tdS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ZDkxZTYKLS0tIC9kZXYvbnVsbAorKysg Yi94ZW4vY29tbW9uL3Zpb21tdS5jCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogY29tbW9uL3Zp b21tdS5jCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisgKiBB dXRob3I6IExhbiBUaWFueXUgPHRpYW55dS5sYW5AaW50ZWwuY29tPgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5j bHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8 eGVuL3Zpb21tdS5oPgorCitib29sIF9fcmVhZF9tb3N0bHkgb3B0X3Zpb21tdTsKK2Jvb2xlYW5f cGFyYW0oInZpb21tdSIsIG9wdF92aW9tbXUpOworCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHR5 cGVfbGlzdF9sb2NrKTsKK3N0YXRpYyBMSVNUX0hFQUQodHlwZV9saXN0KTsKKworc3RydWN0IHZp b21tdV90eXBlIHsKKyAgICB1aW50NjRfdCB0eXBlOworICAgIHN0cnVjdCB2aW9tbXVfb3BzICpv cHM7CisgICAgc3RydWN0IGxpc3RfaGVhZCBub2RlOworfTsKKworaW50IHZpb21tdV9kZXN0cm95 X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIGludCByZXQ7CisKKyAgICBpZiAoICFk LT52aW9tbXUgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJldCA9IGQtPnZpb21t dS0+b3BzLT5kZXN0cm95KGQtPnZpb21tdSk7CisgICAgaWYgKCByZXQgPCAwICkKKyAgICAgICAg cmV0dXJuIHJldDsKKworICAgIHhmcmVlKGQtPnZpb21tdSk7CisgICAgZC0+dmlvbW11ID0gTlVM TDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCB2aW9tbXVfdHlwZSAqdmlvbW11 X2dldF90eXBlKHVpbnQ2NF90IHR5cGUpCit7CisgICAgc3RydWN0IHZpb21tdV90eXBlICp2aW9t bXVfdHlwZSA9IE5VTEw7CisKKyAgICBzcGluX2xvY2soJnR5cGVfbGlzdF9sb2NrKTsKKyAgICBs aXN0X2Zvcl9lYWNoX2VudHJ5KCB2aW9tbXVfdHlwZSwgJnR5cGVfbGlzdCwgbm9kZSApCisgICAg eworICAgICAgICBpZiAoIHZpb21tdV90eXBlLT50eXBlID09IHR5cGUgKQorICAgICAgICB7Cisg ICAgICAgICAgICBzcGluX3VubG9jaygmdHlwZV9saXN0X2xvY2spOworICAgICAgICAgICAgcmV0 dXJuIHZpb21tdV90eXBlOworICAgICAgICB9CisgICAgfQorICAgIHNwaW5fdW5sb2NrKCZ0eXBl X2xpc3RfbG9jayk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworaW50IHZpb21tdV9yZWdpc3Rl cl90eXBlKHVpbnQ2NF90IHR5cGUsIHN0cnVjdCB2aW9tbXVfb3BzICpvcHMpCit7CisgICAgc3Ry dWN0IHZpb21tdV90eXBlICp2aW9tbXVfdHlwZSA9IE5VTEw7CisKKyAgICBpZiAoICF2aW9tbXVf ZW5hYmxlZCgpICkKKyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisKKyAgICBpZiAoIHZpb21tdV9n ZXRfdHlwZSh0eXBlKSApCisgICAgICAgIHJldHVybiAtRUVYSVNUOworCisgICAgdmlvbW11X3R5 cGUgPSB4emFsbG9jKHN0cnVjdCB2aW9tbXVfdHlwZSk7CisgICAgaWYgKCAhdmlvbW11X3R5cGUg KQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIHZpb21tdV90eXBlLT50eXBlID0gdHlw ZTsKKyAgICB2aW9tbXVfdHlwZS0+b3BzID0gb3BzOworCisgICAgc3Bpbl9sb2NrKCZ0eXBlX2xp c3RfbG9jayk7CisgICAgbGlzdF9hZGRfdGFpbCgmdmlvbW11X3R5cGUtPm5vZGUsICZ0eXBlX2xp c3QpOworICAgIHNwaW5fdW5sb2NrKCZ0eXBlX2xpc3RfbG9jayk7CisKKyAgICByZXR1cm4gMDsK K30KKworc3RhdGljIGludCB2aW9tbXVfY3JlYXRlKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90 IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgYmFzZV9hZGRyZXNzLCB1 aW50NjRfdCBjYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICp2aW9tbXVf aWQpCit7CisgICAgc3RydWN0IHZpb21tdSAqdmlvbW11OworICAgIHN0cnVjdCB2aW9tbXVfdHlw ZSAqdmlvbW11X3R5cGUgPSBOVUxMOworICAgIGludCByYzsKKworICAgIC8qIE9ubHkgc3VwcG9y dCBvbmUgdklPTU1VIHBlciBkb21haW4uICovCisgICAgaWYgKCBkLT52aW9tbXUgKQorICAgICAg ICByZXR1cm4gLUUyQklHOworCisgICAgdmlvbW11X3R5cGUgPSB2aW9tbXVfZ2V0X3R5cGUodHlw ZSk7CisgICAgaWYgKCAhdmlvbW11X3R5cGUgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKwor ICAgIGlmICggIXZpb21tdV90eXBlLT5vcHMgfHwgIXZpb21tdV90eXBlLT5vcHMtPmNyZWF0ZSAp CisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgdmlvbW11ID0geHphbGxvYyhzdHJ1Y3Qg dmlvbW11KTsKKyAgICBpZiAoICF2aW9tbXUgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKwor ICAgIHZpb21tdS0+YmFzZV9hZGRyZXNzID0gYmFzZV9hZGRyZXNzOworICAgIHZpb21tdS0+Y2Fw cyA9IGNhcHM7CisgICAgdmlvbW11LT5vcHMgPSB2aW9tbXVfdHlwZS0+b3BzOworCisgICAgcmMg PSB2aW9tbXUtPm9wcy0+Y3JlYXRlKGQsIHZpb21tdSk7CisgICAgaWYgKCByYyA8IDAgKQorICAg IHsKKyAgICAgICAgeGZyZWUodmlvbW11KTsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKwor ICAgIGQtPnZpb21tdSA9IHZpb21tdTsKKworICAgIC8qIE9ubHkgc3VwcG9ydCBvbmUgdklPTU1V IHBlciBkb21haW4uICovCisgICAgKnZpb21tdV9pZCA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisK Ky8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJC U0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFi cy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3Nj aGVkLmggYi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAppbmRleCA1YjhmOGM2Li43NTBmMjM1IDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4v c2NoZWQuaApAQCAtMzMsNiArMzMsMTAgQEAKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVf cnVuc3RhdGVfaW5mb19jb21wYXRfdCk7CiAjZW5kaWYKIAorI2lmZGVmIENPTkZJR19WSU9NTVUK KyNpbmNsdWRlIDx4ZW4vdmlvbW11Lmg+CisjZW5kaWYKKwogLyoKICAqIFN0YXRzCiAgKgpAQCAt NDc5LDYgKzQ4MywxMCBAQCBzdHJ1Y3QgZG9tYWluCiAgICAgcndsb2NrX3Qgdm51bWFfcndsb2Nr OwogICAgIHN0cnVjdCB2bnVtYV9pbmZvICp2bnVtYTsKIAorI2lmZGVmIENPTkZJR19WSU9NTVUK KyAgICBzdHJ1Y3QgdmlvbW11ICp2aW9tbXU7CisjZW5kaWYKKwogICAgIC8qIENvbW1vbiBtb25p dG9yIG9wdGlvbnMgKi8KICAgICBzdHJ1Y3QgewogICAgICAgICB1bnNpZ25lZCBpbnQgZ3Vlc3Rf cmVxdWVzdF9lbmFibGVkICAgICAgIDogMTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi92 aW9tbXUuaCBiL3hlbi9pbmNsdWRlL3hlbi92aW9tbXUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi42MzZhMmEzCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVu L3Zpb21tdS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBpbmNsdWRlL3hlbi92aW9tbXUuaAor ICoKKyAqIENvcHlyaWdodCAoYykgMjAxNywgSW50ZWwgQ29ycG9yYXRpb24KKyAqIEF1dGhvcjog TGFuIFRpYW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQK KyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFs b25nIHdpdGgKKyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorICoKKyAqLworI2lmbmRlZiBfX1hFTl9WSU9NTVVfSF9fCisjZGVmaW5l IF9fWEVOX1ZJT01NVV9IX18KKworc3RydWN0IHZpb21tdTsKKworc3RydWN0IHZpb21tdV9vcHMg eworICAgIGludCAoKmNyZWF0ZSkoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZpb21tdSAqdmlv bW11KTsKKyAgICBpbnQgKCpkZXN0cm95KShzdHJ1Y3QgdmlvbW11ICp2aW9tbXUpOworfTsKKwor c3RydWN0IHZpb21tdSB7CisgICAgdWludDY0X3QgYmFzZV9hZGRyZXNzOworICAgIHVpbnQ2NF90 IGNhcHM7CisgICAgY29uc3Qgc3RydWN0IHZpb21tdV9vcHMgKm9wczsKKyAgICB2b2lkICpwcml2 OworfTsKKworI2lmZGVmIENPTkZJR19WSU9NTVUKK2V4dGVybiBib29sIG9wdF92aW9tbXU7Citz dGF0aWMgaW5saW5lIGJvb2wgdmlvbW11X2VuYWJsZWQodm9pZCkKK3sKKyAgICByZXR1cm4gb3B0 X3Zpb21tdTsKK30KKworaW50IHZpb21tdV9yZWdpc3Rlcl90eXBlKHVpbnQ2NF90IHR5cGUsIHN0 cnVjdCB2aW9tbXVfb3BzICpvcHMpOworaW50IHZpb21tdV9kZXN0cm95X2RvbWFpbihzdHJ1Y3Qg ZG9tYWluICpkKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCB2aW9tbXVfcmVnaXN0ZXJfdHlw ZSh1aW50NjRfdCB0eXBlLCBzdHJ1Y3QgdmlvbW11X29wcyAqb3BzKQoreworICAgIHJldHVybiAt RUlOVkFMOworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX1hFTl9WSU9NTVVfSF9fICovCisKKy8q CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwotLSAKMS44LjMuMQoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=