From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v3 1/4] iommu: introduce dom0-iommu option Date: Tue, 7 Aug 2018 16:02:40 +0200 Message-ID: <20180807140243.11265-2-roger.pau@citrix.com> References: <20180807140243.11265-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fn2a6-0003zE-2P for xen-devel@lists.xenproject.org; Tue, 07 Aug 2018 14:03:26 +0000 In-Reply-To: <20180807140243.11265-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Suravee Suthikulpanit , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Brian Woods , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VG8gc2VsZWN0IHRoZSBpb21tdSBjb25maWd1cmF0aW9uIHVzZWQgYnkgRG9tMC4gVGhpcyBvcHRp b24gc3VwZXJzZWRlcwppb21tdT1kb20wLXN0cmljdHxkb20wLXBhc3N0aHJvdWdoLgoKTm8gZnVu Y3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5w YXVAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNp dHJpeC5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNlIHYyOgogLSBDaGFuZ2UgdGhlIHN0eWxlIGFuZCB0 ZXh0IHVzZWQgaW4gdGhlIHhlbiBjb21tYW5kIGxpbmUgZG9jdW1lbnQuCiAtIERvbid0IGFsbG93 IG5vbmUsIHN0cmljdCBvciByZWxheGVkIHRvIHVzZSB0aGUgbm8tIHByZWZpeC4KCkNoYW5nZXMg c2luY2UgdjE6CiAtIE5ldyBpbiB0aGlzIHZlcnNpb24uCi0tLQpDYzogQW5kcmV3IENvb3BlciA8 YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5s YXBAZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXgu Y29tPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogSnVsaWVuIEdyYWxs IDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFk LndpbGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2Vy bmVsLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxp dTJAY2l0cml4LmNvbT4KQ2M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1 bHBhbml0QGFtZC5jb20+CkNjOiBCcmlhbiBXb29kcyA8YnJpYW4ud29vZHNAYW1kLmNvbT4KQ2M6 IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgotLS0KIGRvY3MvbWlzYy94ZW4tY29t bWFuZC1saW5lLm1hcmtkb3duICAgICAgICAgfCAyMyArKysrKysrKysrKwogeGVuL2FyY2gveDg2 L3g4Nl82NC9tbS5jICAgICAgICAgICAgICAgICAgICB8ICAzICstCiB4ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jICAgIHwgIDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL2FtZC9wY2lfYW1kX2lvbW11LmMgfCAgNCArLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv aW9tbXUuYyAgICAgICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrLS0tLQogeGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgICAgICAgICB8IDE2ICsrKystLS0tCiB4ZW4vaW5j bHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAgICAgICAgICAgIHwgIDYgKystCiA3IGZpbGVzIGNo YW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Y3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIGIvZG9jcy9taXNjL3hlbi1jb21tYW5k LWxpbmUubWFya2Rvd24KaW5kZXggNjViNDc1NDQxOC4uZWE0NTFmMDg4ZSAxMDA2NDQKLS0tIGEv ZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KKysrIGIvZG9jcy9taXNjL3hlbi1j b21tYW5kLWxpbmUubWFya2Rvd24KQEAgLTExNTAsMTIgKzExNTAsMTggQEAgZGV0ZWN0aW9uIG9m IHN5c3RlbXMga25vd24gdG8gbWlzYmVoYXZlIHVwb24gYWNjZXNzZXMgdG8gdGhhdCBwb3J0Lgog CiA+IGBkb20wLXBhc3N0aHJvdWdoYAogCis+ICoqV0FSTklORzogVGhpcyBjb21tYW5kIGxpbmUg b3B0aW9uIGlzIGRlcHJlY2F0ZWQsIGFuZCBzdXBlcnNlZGVkIGJ5Cis+IF9kb20wLWlvbW11PW5v bmVfIC0gdXNpbmcgYm90aCBvcHRpb25zIGluIGNvbWJpbmF0aW9uIGlzIHVuZGVmaW5lZC4qKgor CiA+IERlZmF1bHQ6IGBmYWxzZWAKIAogPj4gQ29udHJvbCB3aGV0aGVyIHRvIGRpc2FibGUgRE1B IHJlbWFwcGluZyBmb3IgRG9tMC4KIAogPiBgZG9tMC1zdHJpY3RgCiAKKz4gKipXQVJOSU5HOiBU aGlzIGNvbW1hbmQgbGluZSBvcHRpb24gaXMgZGVwcmVjYXRlZCwgYW5kIHN1cGVyc2VkZWQgYnkK Kz4gX2RvbTAtaW9tbXU9c3RyaWN0XyAtIHVzaW5nIGJvdGggb3B0aW9ucyBpbiBjb21iaW5hdGlv biBpcyB1bmRlZmluZWQuKioKKwogPiBEZWZhdWx0OiBgZmFsc2VgCiAKID4+IENvbnRyb2wgd2hl dGhlciB0byBzZXQgdXAgRE1BIHJlbWFwcGluZyBvbmx5IGZvciB0aGUgbWVtb3J5IERvbTAgYWN0 dWFsbHkKQEAgLTExOTgsNiArMTIwNCwyMyBAQCBkZXRlY3Rpb24gb2Ygc3lzdGVtcyBrbm93biB0 byBtaXNiZWhhdmUgdXBvbiBhY2Nlc3NlcyB0byB0aGF0IHBvcnQuCiAKID4+IEVuYWJsZSBJT01N VSBkZWJ1Z2dpbmcgY29kZSAoaW1wbGllcyBgdmVyYm9zZWApLgogCisjIyMgZG9tMC1pb21tdQor PiBgPSBMaXN0IG9mIFsgbm9uZSB8IHN0cmljdCB8IHJlbGF4ZWQgXWAKKworKiBgbm9uZWA6IGRp c2FibGVzIERNQSByZW1hcHBpbmcgZm9yIERvbTAuCisKK1RoZSBmb2xsb3dpbmcgdHdvIG9wdGlv bnMgY29udHJvbCBob3cgUkFNIHJlZ2lvbnMgYXJlIG1hcHBlZCBpbiB0aGUgaW9tbXUgZm9yCitQ ViBEb20wOgorCisqIGBzdHJpY3RgOiBzZXRzIHVwIERNQSByZW1hcHBpbmcgb25seSBmb3IgdGhl IG1lbW9yeSBEb20wIGFjdHVhbGx5IGdvdAorICBhc3NpZ25lZC4KKworKiBgcmVsYXhlZGA6IHNl dHMgRE1BIHJlbWFwcGluZyBmb3IgYWxsIHRoZSBob3N0IFJBTSBleGNlcHQgcmVnaW9ucyBpbiB1 c2UgYnkKKyAgWGVuLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGlvbW11IGJlaGF2aW91ci4KKworTm90 ZSB0aGF0IGFsbCB0aGUgYWJvdmUgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBTcGVj aWZ5aW5nIG1vcmUgdGhhbgorb25lIG9uIHRoZSBgZG9tMC1pb21tdWAgY29tbWFuZCBsaW5lIHdp bGwgcmVzdWx0IGluIHVuZGVmaW5lZCBiZWhhdmlvci4KKwogIyMjIGlvbW11XF9kZXZcX2lvdGxi XF90aW1lb3V0CiA+IGA9IDxpbnRlZ2VyPmAKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4 Nl82NC9tbS5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCmluZGV4IGNjYTRhZTkyNmUuLjg0 MjI2YjMzMjYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYworKysgYi94ZW4v YXJjaC94ODYveDg2XzY0L21tLmMKQEAgLTE0MjYsNyArMTQyNiw4IEBAIGludCBtZW1vcnlfYWRk KHVuc2lnbmVkIGxvbmcgc3BmbiwgdW5zaWduZWQgbG9uZyBlcGZuLCB1bnNpZ25lZCBpbnQgcHht KQogICAgIGlmICggcmV0ICkKICAgICAgICAgZ290byBkZXN0cm95X20ycDsKIAotICAgIGlmICgg aW9tbXVfZW5hYmxlZCAmJiAhaW9tbXVfcGFzc3Rocm91Z2ggJiYgIW5lZWRfaW9tbXUoaGFyZHdh cmVfZG9tYWluKSApCisgICAgaWYgKCBpb21tdV9lbmFibGVkICYmICFpb21tdV9kb20wX3Bhc3N0 aHJvdWdoICYmCisgICAgICAgICAhbmVlZF9pb21tdShoYXJkd2FyZV9kb21haW4pICkKICAgICB7 CiAgICAgICAgIGZvciAoIGkgPSBzcGZuOyBpIDwgZXBmbjsgaSsrICkKICAgICAgICAgICAgIGlm ICggaW9tbXVfbWFwX3BhZ2UoaGFyZHdhcmVfZG9tYWluLCBpLCBpLCBJT01NVUZfcmVhZGFibGV8 SU9NTVVGX3dyaXRhYmxlKSApCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h bWQvaW9tbXVfaW5pdC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2luaXQu YwppbmRleCA0NzQ5OTJhNzVhLi5hZDhjNDhiZTFjIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FtZC9pb21tdV9pbml0LmMKQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyB2b2lkIF9faW5p dCBhbWRfaW9tbXVfaW5pdF9jbGVhbnVwKHZvaWQpCiAgICAgcmFkaXhfdHJlZV9kZXN0cm95KCZp dnJzX21hcHMsIHhmcmVlKTsKIAogICAgIGlvbW11X2VuYWJsZWQgPSAwOwotICAgIGlvbW11X3Bh c3N0aHJvdWdoID0gMDsKKyAgICBpb21tdV9kb20wX3Bhc3N0aHJvdWdoID0gZmFsc2U7CiAgICAg aW9tbXVfaW50cmVtYXAgPSAwOwogICAgIGlvbW11djJfZW5hYmxlZCA9IDA7CiB9CmRpZmYgLS1n aXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYwppbmRleCAxMmQyNjk1Yjg5Li5l ZWFjZjcxM2U0IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2Ft ZF9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11 LmMKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgdm9pZCBhbWRfaW9tbXVfc2V0dXBfZG9tYWlu X2RldmljZSgKICAgICBCVUdfT04oICFoZC0+YXJjaC5yb290X3RhYmxlIHx8ICFoZC0+YXJjaC5w YWdpbmdfbW9kZSB8fAogICAgICAgICAgICAgIWlvbW11LT5kZXZfdGFibGUuYnVmZmVyICk7CiAK LSAgICBpZiAoIGlvbW11X3Bhc3N0aHJvdWdoICYmIGlzX2hhcmR3YXJlX2RvbWFpbihkb21haW4p ICkKKyAgICBpZiAoIGlvbW11X2RvbTBfcGFzc3Rocm91Z2ggJiYgaXNfaGFyZHdhcmVfZG9tYWlu KGRvbWFpbikgKQogICAgICAgICB2YWxpZCA9IDA7CiAKICAgICBpZiAoIGF0c19lbmFibGVkICkK QEAgLTI1Niw3ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCBfX2h3ZG9tX2luaXQgYW1kX2lvbW11X2h3 ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICBpZiAoIGFsbG9jYXRlX2RvbWFpbl9yZXNv dXJjZXMoZG9tX2lvbW11KGQpKSApCiAgICAgICAgIEJVRygpOwogCi0gICAgaWYgKCAhaW9tbXVf cGFzc3Rocm91Z2ggJiYgIW5lZWRfaW9tbXUoZCkgKQorICAgIGlmICggIWlvbW11X2RvbTBfcGFz c3Rocm91Z2ggJiYgIW5lZWRfaW9tbXUoZCkgKQogICAgIHsKICAgICAgICAgaW50IHJjID0gMDsK IApkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKaW5kZXggNzBkMjE4ZjkxMC4uODMwNTYwYmRjZiAxMDA2 NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9pb21tdS5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSA8eHNtL3hz bS5oPgogCiBzdGF0aWMgaW50IHBhcnNlX2lvbW11X3BhcmFtKGNvbnN0IGNoYXIgKnMpOworc3Rh dGljIGludCBwYXJzZV9kb20wX2lvbW11X3BhcmFtKGNvbnN0IGNoYXIgKnMpOwogc3RhdGljIHZv aWQgaW9tbXVfZHVtcF9wMm1fdGFibGUodW5zaWduZWQgY2hhciBrZXkpOwogCiB1bnNpZ25lZCBp bnQgX19yZWFkX21vc3RseSBpb21tdV9kZXZfaW90bGJfdGltZW91dCA9IDEwMDA7CkBAIC01Miwx MSArNTMsOSBAQCBjdXN0b21fcGFyYW0oImlvbW11IiwgcGFyc2VfaW9tbXVfcGFyYW0pOwogYm9v bF90IF9faW5pdGRhdGEgaW9tbXVfZW5hYmxlID0gMTsKIGJvb2xfdCBfX3JlYWRfbW9zdGx5IGlv bW11X2VuYWJsZWQ7CiBib29sX3QgX19yZWFkX21vc3RseSBmb3JjZV9pb21tdTsKLWJvb2xfdCBf X2h3ZG9tX2luaXRkYXRhIGlvbW11X2RvbTBfc3RyaWN0OwogYm9vbF90IF9fcmVhZF9tb3N0bHkg aW9tbXVfdmVyYm9zZTsKIGJvb2xfdCBfX3JlYWRfbW9zdGx5IGlvbW11X3dvcmthcm91bmRfYmlv c19idWc7CiBib29sX3QgX19yZWFkX21vc3RseSBpb21tdV9pZ2Z4ID0gMTsKLWJvb2xfdCBfX3Jl YWRfbW9zdGx5IGlvbW11X3Bhc3N0aHJvdWdoOwogYm9vbF90IF9fcmVhZF9tb3N0bHkgaW9tbXVf c25vb3AgPSAxOwogYm9vbF90IF9fcmVhZF9tb3N0bHkgaW9tbXVfcWludmFsID0gMTsKIGJvb2xf dCBfX3JlYWRfbW9zdGx5IGlvbW11X2ludHJlbWFwID0gMTsKQEAgLTcyLDYgKzcxLDEwIEBAIGJv b2xfdCBfX3JlYWRfbW9zdGx5IGlvbW11X2hhcF9wdF9zaGFyZSA9IDE7CiBib29sX3QgX19yZWFk X21vc3RseSBpb21tdV9kZWJ1ZzsKIGJvb2xfdCBfX3JlYWRfbW9zdGx5IGFtZF9pb21tdV9wZXJk ZXZfaW50cmVtYXAgPSAxOwogCitjdXN0b21fcGFyYW0oImRvbTAtaW9tbXUiLCBwYXJzZV9kb20w X2lvbW11X3BhcmFtKTsKK2Jvb2wgX19od2RvbV9pbml0ZGF0YSBpb21tdV9kb20wX3N0cmljdDsK K2Jvb2wgX19yZWFkX21vc3RseSBpb21tdV9kb20wX3Bhc3N0aHJvdWdoOworCiBERUZJTkVfUEVS X0NQVShib29sX3QsIGlvbW11X2RvbnRfZmx1c2hfaW90bGIpOwogCiBERUZJTkVfU1BJTkxPQ0so aW9tbXVfcHRfY2xlYW51cF9sb2NrKTsKQEAgLTEyMSw3ICsxMjQsNyBAQCBzdGF0aWMgaW50IF9f aW5pdCBwYXJzZV9pb21tdV9wYXJhbShjb25zdCBjaGFyICpzKQogICAgICAgICBlbHNlIGlmICgg IXN0cm5jbXAocywgImFtZC1pb21tdS1wZXJkZXYtaW50cmVtYXAiLCBzcyAtIHMpICkKICAgICAg ICAgICAgIGFtZF9pb21tdV9wZXJkZXZfaW50cmVtYXAgPSB2YWw7CiAgICAgICAgIGVsc2UgaWYg KCAhc3RybmNtcChzLCAiZG9tMC1wYXNzdGhyb3VnaCIsIHNzIC0gcykgKQotICAgICAgICAgICAg aW9tbXVfcGFzc3Rocm91Z2ggPSB2YWw7CisgICAgICAgICAgICBpb21tdV9kb20wX3Bhc3N0aHJv dWdoID0gdmFsOwogICAgICAgICBlbHNlIGlmICggIXN0cm5jbXAocywgImRvbTAtc3RyaWN0Iiwg c3MgLSBzKSApCiAgICAgICAgICAgICBpb21tdV9kb20wX3N0cmljdCA9IHZhbDsKICAgICAgICAg ZWxzZSBpZiAoICFzdHJuY21wKHMsICJzaGFyZXB0Iiwgc3MgLSBzKSApCkBAIC0xMzUsNiArMTM4 LDMxIEBAIHN0YXRpYyBpbnQgX19pbml0IHBhcnNlX2lvbW11X3BhcmFtKGNvbnN0IGNoYXIgKnMp CiAgICAgcmV0dXJuIHJjOwogfQogCitzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9kb20wX2lvbW11 X3BhcmFtKGNvbnN0IGNoYXIgKnMpCit7CisgICAgY29uc3QgY2hhciAqc3M7CisgICAgaW50IHJj ID0gMDsKKworICAgIGRvIHsKKyAgICAgICAgc3MgPSBzdHJjaHIocywgJywnKTsKKyAgICAgICAg aWYgKCAhc3MgKQorICAgICAgICAgICAgc3MgPSBzdHJjaHIocywgJ1wwJyk7CisKKyAgICAgICAg aWYgKCAhc3RybmNtcChzLCAibm9uZSIsIHNzIC0gcykgKQorICAgICAgICAgICAgaW9tbXVfZG9t MF9wYXNzdGhyb3VnaCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKCAhc3RybmNtcChzLCAic3Ry aWN0Iiwgc3MgLSBzKSApCisgICAgICAgICAgICBpb21tdV9kb20wX3N0cmljdCA9IHRydWU7Cisg ICAgICAgIGVsc2UgaWYgKCAhc3RybmNtcChzLCAicmVsYXhlZCIsIHNzIC0gcykgKQorICAgICAg ICAgICAgaW9tbXVfZG9tMF9zdHJpY3QgPSBmYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg ICAgcmMgPSAtRUlOVkFMOworCisgICAgICAgIHMgPSBzcyArIDE7CisgICAgfSB3aGlsZSAoICpz cyApOworCisgICAgcmV0dXJuIHJjOworfQorCiBpbnQgaW9tbXVfZG9tYWluX2luaXQoc3RydWN0 IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShk KTsKQEAgLTE1OCw3ICsxODYsNyBAQCBzdGF0aWMgdm9pZCBfX2h3ZG9tX2luaXQgY2hlY2tfaHdk b21fcmVxcyhzdHJ1Y3QgZG9tYWluICpkKQogCiAgICAgYXJjaF9pb21tdV9jaGVja19hdXRvdHJh bnNsYXRlZF9od2RvbShkKTsKIAotICAgIGlmICggaW9tbXVfcGFzc3Rocm91Z2ggKQorICAgIGlm ICggaW9tbXVfZG9tMF9wYXNzdGhyb3VnaCApCiAgICAgICAgIHBhbmljKCJEb20wIHVzZXMgcGFn aW5nIHRyYW5zbGF0ZWQgbW9kZSwgZG9tMC1wYXNzdGhyb3VnaCBtdXN0IG5vdCBiZSAiCiAgICAg ICAgICAgICAgICJlbmFibGVkXG4iKTsKIApAQCAtMzcyLDcgKzQwMCw3IEBAIGludCBfX2luaXQg aW9tbXVfc2V0dXAodm9pZCkKICAgICBib29sX3QgZm9yY2VfaW50cmVtYXAgPSBmb3JjZV9pb21t dSAmJiBpb21tdV9pbnRyZW1hcDsKIAogICAgIGlmICggaW9tbXVfZG9tMF9zdHJpY3QgKQotICAg ICAgICBpb21tdV9wYXNzdGhyb3VnaCA9IDA7CisgICAgICAgIGlvbW11X2RvbTBfcGFzc3Rocm91 Z2ggPSBmYWxzZTsKIAogICAgIGlmICggaW9tbXVfZW5hYmxlICkKICAgICB7CkBAIC0zOTMsMTQg KzQyMSwxNCBAQCBpbnQgX19pbml0IGlvbW11X3NldHVwKHZvaWQpCiAgICAgaWYgKCAhaW9tbXVf ZW5hYmxlZCApCiAgICAgewogICAgICAgICBpb21tdV9zbm9vcCA9IDA7Ci0gICAgICAgIGlvbW11 X3Bhc3N0aHJvdWdoID0gMDsKKyAgICAgICAgaW9tbXVfZG9tMF9wYXNzdGhyb3VnaCA9IGZhbHNl OwogICAgICAgICBpb21tdV9kb20wX3N0cmljdCA9IDA7CiAgICAgfQogICAgIHByaW50aygiSS9P IHZpcnR1YWxpc2F0aW9uICVzYWJsZWRcbiIsIGlvbW11X2VuYWJsZWQgPyAiZW4iIDogImRpcyIp OwogICAgIGlmICggaW9tbXVfZW5hYmxlZCApCiAgICAgewogICAgICAgICBwcmludGsoIiAtIERv bTAgbW9kZTogJXNcbiIsCi0gICAgICAgICAgICAgICBpb21tdV9wYXNzdGhyb3VnaCA/ICJQYXNz dGhyb3VnaCIgOgorICAgICAgICAgICAgICAgaW9tbXVfZG9tMF9wYXNzdGhyb3VnaCA/ICJQYXNz dGhyb3VnaCIgOgogICAgICAgICAgICAgICAgaW9tbXVfZG9tMF9zdHJpY3QgPyAiU3RyaWN0IiA6 ICJSZWxheGVkIik7CiAgICAgICAgIHByaW50aygiSW50ZXJydXB0IHJlbWFwcGluZyAlc2FibGVk XG4iLCBpb21tdV9pbnRyZW1hcCA/ICJlbiIgOiAiZGlzIik7CiAgICAgICAgIHRhc2tsZXRfaW5p dCgmaW9tbXVfcHRfY2xlYW51cF90YXNrbGV0LCBpb21tdV9mcmVlX3BhZ2V0YWJsZXMsIDApOwpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgYi94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwppbmRleCAxNzEwMjU2ODIzLi44YWM3NzQyMTVi IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYworKysgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAg c3RhdGljIHZvaWQgX19od2RvbV9pbml0IGludGVsX2lvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRv bWFpbiAqZCkKIHsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAKLSAgICBpZiAo ICFpb21tdV9wYXNzdGhyb3VnaCAmJiBpc19wdl9kb21haW4oZCkgKQorICAgIGlmICggIWlvbW11 X2RvbTBfcGFzc3Rocm91Z2ggJiYgaXNfcHZfZG9tYWluKGQpICkKICAgICB7CiAgICAgICAgIC8q IFNldCB1cCAxOjEgcGFnZSB0YWJsZSBmb3IgaGFyZHdhcmUgZG9tYWluLiAqLwogICAgICAgICB2 dGRfc2V0X2h3ZG9tX21hcHBpbmcoZCk7CkBAIC0xMzkxLDcgKzEzOTEsNyBAQCBpbnQgZG9tYWlu X2NvbnRleHRfbWFwcGluZ19vbmUoCiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogCi0gICAg aWYgKCBpb21tdV9wYXNzdGhyb3VnaCAmJiBpc19oYXJkd2FyZV9kb21haW4oZG9tYWluKSApCisg ICAgaWYgKCBpb21tdV9kb20wX3Bhc3N0aHJvdWdoICYmIGlzX2hhcmR3YXJlX2RvbWFpbihkb21h aW4pICkKICAgICB7CiAgICAgICAgIGNvbnRleHRfc2V0X3RyYW5zbGF0aW9uX3R5cGUoKmNvbnRl eHQsIENPTlRFWFRfVFRfUEFTU19USFJVKTsKICAgICAgICAgYWdhdyA9IGxldmVsX3RvX2FnYXco aW9tbXUtPm5yX3B0X2xldmVscyk7CkBAIC0xNzgxLDcgKzE3ODEsNyBAQCBzdGF0aWMgaW50IF9f bXVzdF9jaGVjayBpbnRlbF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAogICAgICAg ICByZXR1cm4gMDsKIAogICAgIC8qIERvIG5vdGhpbmcgaWYgaGFyZHdhcmUgZG9tYWluIGFuZCBp b21tdSBzdXBwb3J0cyBwYXNzIHRocnUuICovCi0gICAgaWYgKCBpb21tdV9wYXNzdGhyb3VnaCAm JiBpc19oYXJkd2FyZV9kb21haW4oZCkgKQorICAgIGlmICggaW9tbXVfZG9tMF9wYXNzdGhyb3Vn aCAmJiBpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHNw aW5fbG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKQEAgLTE4MjYsNyArMTgyNiw3IEBAIHN0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBnZm4pCiB7CiAgICAgLyogRG8gbm90aGluZyBpZiBoYXJkd2FyZSBkb21haW4g YW5kIGlvbW11IHN1cHBvcnRzIHBhc3MgdGhydS4gKi8KLSAgICBpZiAoIGlvbW11X3Bhc3N0aHJv dWdoICYmIGlzX2hhcmR3YXJlX2RvbWFpbihkKSApCisgICAgaWYgKCBpb21tdV9kb20wX3Bhc3N0 aHJvdWdoICYmIGlzX2hhcmR3YXJlX2RvbWFpbihkKSApCiAgICAgICAgIHJldHVybiAwOwogCiAg ICAgcmV0dXJuIGRtYV9wdGVfY2xlYXJfb25lKGQsIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZU XzRLKTsKQEAgLTIyNjksOCArMjI2OSw4IEBAIGludCBfX2luaXQgaW50ZWxfdnRkX3NldHVwKHZv aWQpCiAgICAgICAgIGlmICggaW9tbXVfc25vb3AgJiYgIWVjYXBfc25wX2N0bChpb21tdS0+ZWNh cCkgKQogICAgICAgICAgICAgaW9tbXVfc25vb3AgPSAwOwogCi0gICAgICAgIGlmICggaW9tbXVf cGFzc3Rocm91Z2ggJiYgIWVjYXBfcGFzc190aHJ1KGlvbW11LT5lY2FwKSApCi0gICAgICAgICAg ICBpb21tdV9wYXNzdGhyb3VnaCA9IDA7CisgICAgICAgIGlmICggaW9tbXVfZG9tMF9wYXNzdGhy b3VnaCAmJiAhZWNhcF9wYXNzX3RocnUoaW9tbXUtPmVjYXApICkKKyAgICAgICAgICAgIGlvbW11 X2RvbTBfcGFzc3Rocm91Z2ggPSBmYWxzZTsKIAogICAgICAgICBpZiAoIGlvbW11X3FpbnZhbCAm JiAhZWNhcF9xdWV1ZWRfaW52YWwoaW9tbXUtPmVjYXApICkKICAgICAgICAgICAgIGlvbW11X3Fp bnZhbCA9IDA7CkBAIC0yMzA4LDcgKzIzMDgsNyBAQCBpbnQgX19pbml0IGludGVsX3Z0ZF9zZXR1 cCh2b2lkKQogCiAjZGVmaW5lIFAocCxzKSBwcmludGsoIkludGVsIFZULWQgJXMgJXNlbmFibGVk LlxuIiwgcywgKHApPyAiIiA6ICJub3QgIikKICAgICBQKGlvbW11X3Nub29wLCAiU25vb3AgQ29u dHJvbCIpOwotICAgIFAoaW9tbXVfcGFzc3Rocm91Z2gsICJEb20wIERNQSBQYXNzdGhyb3VnaCIp OworICAgIFAoaW9tbXVfZG9tMF9wYXNzdGhyb3VnaCwgIkRvbTAgRE1BIFBhc3N0aHJvdWdoIik7 CiAgICAgUChpb21tdV9xaW52YWwsICJRdWV1ZWQgSW52YWxpZGF0aW9uIik7CiAgICAgUChpb21t dV9pbnRyZW1hcCwgIkludGVycnVwdCBSZW1hcHBpbmciKTsKICAgICBQKGlvbW11X2ludHBvc3Qs ICJQb3N0ZWQgSW50ZXJydXB0Iik7CkBAIC0yMzMwLDcgKzIzMzAsNyBAQCBpbnQgX19pbml0IGlu dGVsX3Z0ZF9zZXR1cCh2b2lkKQogIGVycm9yOgogICAgIGlvbW11X2VuYWJsZWQgPSAwOwogICAg IGlvbW11X3Nub29wID0gMDsKLSAgICBpb21tdV9wYXNzdGhyb3VnaCA9IDA7CisgICAgaW9tbXVf ZG9tMF9wYXNzdGhyb3VnaCA9IGZhbHNlOwogICAgIGlvbW11X3FpbnZhbCA9IDA7CiAgICAgaW9t bXVfaW50cmVtYXAgPSAwOwogICAgIGlvbW11X2ludHBvc3QgPSAwOwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUveGVuL2lvbW11LmggYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAppbmRleCA2YjQy ZTNiODc2Li5jMGM2OTc1YWM0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAor KysgYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaApAQCAtMjksMTMgKzI5LDE1IEBACiAjaW5jbHVk ZSA8YXNtL2lvbW11Lmg+CiAKIGV4dGVybiBib29sX3QgaW9tbXVfZW5hYmxlLCBpb21tdV9lbmFi bGVkOwotZXh0ZXJuIGJvb2xfdCBmb3JjZV9pb21tdSwgaW9tbXVfZG9tMF9zdHJpY3QsIGlvbW11 X3ZlcmJvc2U7Ci1leHRlcm4gYm9vbF90IGlvbW11X3dvcmthcm91bmRfYmlvc19idWcsIGlvbW11 X2lnZngsIGlvbW11X3Bhc3N0aHJvdWdoOworZXh0ZXJuIGJvb2xfdCBmb3JjZV9pb21tdSwgaW9t bXVfdmVyYm9zZTsKK2V4dGVybiBib29sX3QgaW9tbXVfd29ya2Fyb3VuZF9iaW9zX2J1ZywgaW9t bXVfaWdmeDsKIGV4dGVybiBib29sX3QgaW9tbXVfc25vb3AsIGlvbW11X3FpbnZhbCwgaW9tbXVf aW50cmVtYXAsIGlvbW11X2ludHBvc3Q7CiBleHRlcm4gYm9vbF90IGlvbW11X2hhcF9wdF9zaGFy ZTsKIGV4dGVybiBib29sX3QgaW9tbXVfZGVidWc7CiBleHRlcm4gYm9vbF90IGFtZF9pb21tdV9w ZXJkZXZfaW50cmVtYXA7CiAKK2V4dGVybiBib29sIGlvbW11X2RvbTBfc3RyaWN0LCBpb21tdV9k b20wX3Bhc3N0aHJvdWdoOworCiBleHRlcm4gdW5zaWduZWQgaW50IGlvbW11X2Rldl9pb3RsYl90 aW1lb3V0OwogCiBpbnQgaW9tbXVfc2V0dXAodm9pZCk7Ci0tIAoyLjE4LjAKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl Y3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs