From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v4 4/4] x86/iommu: add reserved dom0-iommu option to map reserved memory ranges Date: Wed, 8 Aug 2018 12:07:47 +0200 Message-ID: <20180808100747.19464-5-roger.pau@citrix.com> References: <20180808100747.19464-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fnLO5-0001qI-HH for xen-devel@lists.xenproject.org; Wed, 08 Aug 2018 10:08:17 +0000 In-Reply-To: <20180808100747.19464-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: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org U2V2ZXJhbCBwZW9wbGUgaGF2ZSByZXBvcnRlZCBoYXJkd2FyZSBpc3N1ZXMgKG1hbGZ1bmN0aW9u aW5nIFVTQgpjb250cm9sbGVycykgZHVlIHRvIGlvbW11IHBhZ2UgZmF1bHRzIG9uIEludGVsIGhh cmR3YXJlLiBUaG9zZSBmYXVsdHMKYXJlIGNhdXNlZCBieSBtaXNzaW5nIFJNUlIgKFZUZCkgZW50 cmllcyBpbiB0aGUgQUNQSSB0YWJsZXMuIFRob3NlIGNhbgpiZSB3b3JrZWQgYXJvdW5kIG9uIFZU ZCBoYXJkd2FyZSBieSBtYW51YWxseSBhZGRpbmcgUk1SUiBlbnRyaWVzIG9uCnRoZSBjb21tYW5k IGxpbmUsIHRoaXMgaXMgaG93ZXZlciBsaW1pdGVkIHRvIEludGVsIGhhcmR3YXJlIGFuZCBxdWl0 ZQpjdW1iZXJzb21lIHRvIGRvLgoKSW4gb3JkZXIgdG8gc29sdmUgdGhvc2UgaXNzdWVzIGFkZCBh IG5ldyBkb20wLWlvbW11PXJlc2VydmVkIG9wdGlvbgp0aGF0IGlkZW50aXR5IG1hcHMgYWxsIHJl Z2lvbnMgbWFya2VkIGFzIHJlc2VydmVkIGluIHRoZSBtZW1vcnkgbWFwLgpOb3RlIHRoYXQgcmVn aW9ucyB1c2VkIGJ5IGRldmljZXMgZW11bGF0ZWQgYnkgWGVuIChMQVBJQywgSU8tQVBJQyBvcgpQ Q0llIE1DRkcgcmVnaW9ucykgYXJlIHNwZWNpZmljYWxseSBhdm9pZGVkLiBOb3RlIHRoYXQgdGhp cyBvcHRpb24gaXMKYXZhaWxhYmxlIHRvIGEgUFZIIERvbTAgKGFzIG9wcG9zZWQgdG8gdGhlIGlu Y2x1c2l2ZSBvcHRpb24gd2hpY2ggb25seQp3b3JrcyBmb3IgUFYgRG9tMCkuCgpTaWduZWQtb2Zm LWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6 IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNl IHYzOgogLSBBZGQgbWFwcGluZ3MgaWYgdGhlIGlvbW11IHBhZ2UgdGFibGVzIGFyZSBzaGFyZWQu CgpDaGFuZ2VzIHNpbmNlIHYyOgogLSBGaXggY29tbWVudCByZWdhcmRpbmcgZG9tMC1zdHJpY3Qu CiAtIENoYW5nZSBkb2N1bWVudGF0aW9uIHN0eWxlIG9mIHhlbiBjb21tYW5kIGxpbmUuCiAtIFJl bmFtZSBpb21tdV9tYXAgdG8gaHdkb21faW9tbXVfbWFwLgogLSBNb3ZlIGFsbCB0aGUgY2hlY2tz IHRvIGh3ZG9tX2lvbW11X21hcC4KCkNoYW5nZXMgc2luY2UgdjE6CiAtIEludHJvZHVjZSBhIG5l dyByZXNlcnZlZCBvcHRpb24gaW5zdGVhZCBvZiBhYnVzaW5nIHRoZSBpbmNsdXNpdmUKICAgb3B0 aW9uLgogLSBVc2UgdGhlIHNhbWUgaGVscGVyIGZ1bmN0aW9uIGZvciBQViBhbmQgUFZIIGluIG9y ZGVyIHRvIGRlY2lkZSBpZiBhCiAgIHBhZ2Ugc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBkb21haW4g cGFnZSB0YWJsZXMuCiAtIFVzZSB0aGUgZGF0YSBpbnNpZGUgb2YgdGhlIGRvbWFpbiBzdHJ1Y3Qg dG8gZGV0ZWN0IG92ZXJsYXBzIHdpdGgKICAgZW11bGF0ZWQgTU1JTyByZWdpb25zLgotLS0KQ2M6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVu bGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmph Y2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4K Q2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNjOiBLb25yYWQgUnplc3p1 dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkg PHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KQ2M6 IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQogZG9jcy9taXNjL3hlbi1jb21tYW5k LWxpbmUubWFya2Rvd24gICAgICAgICB8IDExICsrLQogeGVuL2FyY2gveDg2L2h2bS9pby5jICAg ICAgICAgICAgICAgICAgICAgICB8ICA1ICsrCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQv cGNpX2FtZF9pb21tdS5jIHwgIDMgKwogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAg ICAgICAgICAgICB8ICAzICsKIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAg ICAgICAgfCAgMyArCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYyAgICAgICAg IHwgOTIgKysrKysrKysrKysrKystLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5o ICAgICAgICAgICAgICAgIHwgIDMgKwogeGVuL2luY2x1ZGUveGVuL2lvbW11LmggICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDkxIGluc2VydGlvbnMoKyksIDMx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1h cmtkb3duIGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KaW5kZXggOTBiMzJm ZTNmMC4uNTllYzJhZmM1ZCAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUu bWFya2Rvd24KKysrIGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KQEAgLTEy MDUsNyArMTIwNSw3IEBAIGRldGVjdGlvbiBvZiBzeXN0ZW1zIGtub3duIHRvIG1pc2JlaGF2ZSB1 cG9uIGFjY2Vzc2VzIHRvIHRoYXQgcG9ydC4KID4+IEVuYWJsZSBJT01NVSBkZWJ1Z2dpbmcgY29k ZSAoaW1wbGllcyBgdmVyYm9zZWApLgogCiAjIyMgZG9tMC1pb21tdQotPiBgPSBMaXN0IG9mIFsg bm9uZSB8IHN0cmljdCB8IHJlbGF4ZWQgfCBpbmNsdXNpdmUgXWAKKz4gYD0gTGlzdCBvZiBbIG5v bmUgfCBzdHJpY3QgfCByZWxheGVkIHwgaW5jbHVzaXZlIHwgcmVzZXJ2ZWQgXWAKIAogKiBgbm9u ZWA6IGRpc2FibGVzIERNQSByZW1hcHBpbmcgZm9yIERvbTAuCiAKQEAgLTEyMzMsNiArMTIzMywx NSBAQCBtZWFuaW5nOgogICBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIHRvIGEgUFYgRG9tMCBh bmQgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9uIEludGVsCiAgIGhhcmR3YXJlLgogCisqIGByZXNl cnZlZGA6IHNldHMgdXAgRE1BIHJlbWFwcGluZyBmb3IgYWxsIHRoZSByZXNlcnZlZCByZWdpb25z IGluIHRoZSBtZW1vcnkKKyAgbWFwIGZvciBEb20wLiBVc2UgdGhpcyB0byB3b3JrIGFyb3VuZCBm aXJtd2FyZSBpc3N1ZXMgcHJvdmlkaW5nIGluY29ycmVjdAorICBSTVJSL0lWTUQgZW50cmllcy4g UmF0aGVyIHRoYW4gb25seSBtYXBwaW5nIFJBTSBwYWdlcyBmb3IgSU9NTVUgYWNjZXNzZXMKKyAg Zm9yIERvbTAsIGFsbCBtZW1vcnkgcmVnaW9ucyBtYXJrZWQgYXMgcmVzZXJ2ZWQgaW4gdGhlIG1l bW9yeSBtYXAgdGhhdCBkb24ndAorICBvdmVybGFwIHdpdGggYW55IE1NSU8gcmVnaW9uIGZyb20g ZW11bGF0ZWQgZGV2aWNlcyB3aWxsIGJlIGlkZW50aXR5IG1hcHBlZC4KKyAgVGhpcyBvcHRpb24g bWFwcyBhIHN1YnNldCBvZiB0aGUgbWVtb3J5IHRoYXQgd291bGQgYmUgbWFwcGVkIHdoZW4gdXNp bmcgdGhlCisgIGBpbmNsdXNpdmVgIG9wdGlvbi4gVGhpcyBvcHRpb24gaXMgYXZhaWxhYmxlIHRv IGEgUFZIIERvbTAgYW5kIGlzIGVuYWJsZWQgYnkKKyAgZGVmYXVsdCBvbiBJbnRlbCBoYXJkd2Fy ZS4KKwogIyMjIGlvbW11XF9kZXZcX2lvdGxiXF90aW1lb3V0CiA+IGA9IDxpbnRlZ2VyPmAKIApk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pby5jIGIveGVuL2FyY2gveDg2L2h2bS9pby5j CmluZGV4IGJmNGQ4NzQ4ZDMuLjVlMDFjMzM4OTAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vaW8uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvLmMKQEAgLTQwNCw2ICs0MDQsMTEgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBodm1fbW1jZmcgKnZwY2lfbW1jZmdfZmluZChjb25zdCBzdHJ1 Y3QgZG9tYWluICpkLAogICAgIHJldHVybiBOVUxMOwogfQogCitib29sIHZwY2lfbW1jZmdfYWRk cmVzcyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGFkZHIpCit7CisgICAgcmV0dXJu IHZwY2lfbW1jZmdfZmluZChkLCBhZGRyKTsKK30KKwogc3RhdGljIHVuc2lnbmVkIGludCB2cGNp X21tY2ZnX2RlY29kZV9hZGRyKGNvbnN0IHN0cnVjdCBodm1fbW1jZmcgKm1tY2ZnLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgYWRkciwgcGNpX3Ni ZGZfdCAqc2JkZikKIHsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9w Y2lfYW1kX2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21t dS5jCmluZGV4IDBlMGM5OWM5NDIuLjJjMjg2N2QwODggMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYwpAQCAtMjU2LDYgKzI1Niw5IEBAIHN0YXRpYyB2b2lk IF9faHdkb21faW5pdCBhbWRfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAg IC8qIEluY2x1c2l2ZSBJT01NVSBtYXBwaW5ncyBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdCBvbiBB TUQgaGFyZHdhcmUuICovCiAgICAgaW9tbXVfZG9tMF9pbmNsdXNpdmUgPSBpb21tdV9kb20wX2lu Y2x1c2l2ZSA9PSAtMSA/IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6IGlvbW11X2RvbTBfaW5jbHVzaXZlOworICAgIC8qIFJlc2Vy dmVkIElPTU1VIG1hcHBpbmdzIGFyZSBkaXNhYmxlZCBieSBkZWZhdWx0IG9uIEFNRCBoYXJkd2Fy ZS4gKi8KKyAgICBpb21tdV9kb20wX3Jlc2VydmVkID0gaW9tbXVfZG9tMF9yZXNlcnZlZCA9PSAt MSA/IGZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiBpb21tdV9kb20wX3Jlc2VydmVkOwogCiAgICAgaWYgKCBhbGxvY2F0ZV9kb21haW5f cmVzb3VyY2VzKGRvbV9pb21tdShkKSkgKQogICAgICAgICBCVUcoKTsKZGlmZiAtLWdpdCBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9p b21tdS5jCmluZGV4IGYxNWM5NGJlNDIuLjljOTkxYmQyY2YgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9t bXUuYwpAQCAtNzUsNiArNzUsNyBAQCBjdXN0b21fcGFyYW0oImRvbTAtaW9tbXUiLCBwYXJzZV9k b20wX2lvbW11X3BhcmFtKTsKIGJvb2wgX19od2RvbV9pbml0ZGF0YSBpb21tdV9kb20wX3N0cmlj dDsKIGJvb2wgX19yZWFkX21vc3RseSBpb21tdV9kb20wX3Bhc3N0aHJvdWdoOwogaW50OF90IF9f aHdkb21faW5pdGRhdGEgaW9tbXVfZG9tMF9pbmNsdXNpdmUgPSAtMTsKK2ludDhfdCBfX2h3ZG9t X2luaXRkYXRhIGlvbW11X2RvbTBfcmVzZXJ2ZWQgPSAtMTsKIAogREVGSU5FX1BFUl9DUFUoYm9v bF90LCBpb21tdV9kb250X2ZsdXNoX2lvdGxiKTsKIApAQCAtMTYyLDYgKzE2Myw4IEBAIHN0YXRp YyBpbnQgX19pbml0IHBhcnNlX2RvbTBfaW9tbXVfcGFyYW0oY29uc3QgY2hhciAqcykKICAgICAg ICAgICAgIGlvbW11X2RvbTBfc3RyaWN0ID0gZmFsc2U7CiAgICAgICAgIGVsc2UgaWYgKCAhc3Ry bmNtcChzLCAiaW5jbHVzaXZlIiwgc3MgLSBzKSApCiAgICAgICAgICAgICBpb21tdV9kb20wX2lu Y2x1c2l2ZSA9IHZhbDsKKyAgICAgICAgZWxzZSBpZiAoICFzdHJuY21wKHMsICJyZXNlcnZlZCIs IHNzIC0gcykgKQorICAgICAgICAgICAgaW9tbXVfZG9tMF9yZXNlcnZlZCA9IHZhbDsKICAgICAg ICAgZWxzZQogICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwogCmRpZmYgLS1naXQgYS94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0 ZC9pb21tdS5jCmluZGV4IDdjN2UxNTc1NWQuLjc3YTA3NjIxNWIgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3Z0ZC9pb21tdS5jCkBAIC0xMzA3LDYgKzEzMDcsOSBAQCBzdGF0aWMgdm9pZCBfX2h3ZG9t X2luaXQgaW50ZWxfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgIC8qIElu Y2x1c2l2ZSBtYXBwaW5ncyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0IG9uIEludGVsIGhhcmR3YXJl IGZvciBQVi4gKi8KICAgICBpb21tdV9kb20wX2luY2x1c2l2ZSA9IGlvbW11X2RvbTBfaW5jbHVz aXZlID09IC0xID8gaXNfcHZfZG9tYWluKGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlvbW11X2RvbTBfaW5jbHVzaXZlOworICAgIC8q IFJlc2VydmVkIElPTU1VIG1hcHBpbmdzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gSW50ZWwg aGFyZHdhcmUuICovCisgICAgaW9tbXVfZG9tMF9yZXNlcnZlZCA9IGlvbW11X2RvbTBfcmVzZXJ2 ZWQgPT0gLTEgPyB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiBpb21tdV9kb20wX3Jlc2VydmVkOwogCiAgICAgc2V0dXBfaHdkb21fcGNp X2RldmljZXMoZCwgc2V0dXBfaHdkb21fZGV2aWNlKTsKICAgICBzZXR1cF9od2RvbV9ybXJyKGQp OwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMgYi94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwppbmRleCA1YTdhNzY1ZTlkLi42MjcxZDhi NjcxIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYworKysg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwpAQCAtMjAsNiArMjAsNyBAQAog I2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CiAjaW5jbHVkZSA8eHNtL3hzbS5oPgogCisjaW5jbHVk ZSA8YXNtL2h2bS9pby5oPgogI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgogCiB2b2lkIGlvbW11X3Vw ZGF0ZV9pcmVfZnJvbV9hcGljKApAQCAtMTM0LDEzICsxMzUsNjcgQEAgdm9pZCBhcmNoX2lvbW11 X2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCiB7CiB9CiAKK3N0YXRpYyBib29sIF9f aHdkb21faW5pdCBod2RvbV9pb21tdV9tYXAoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBwZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgbWF4X3BmbikKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIC8qCisg ICAgICogSWdub3JlIGFueSBhZGRyZXNzIGJlbG93IDFNQiwgdGhhdCdzIGFscmVhZHkgaWRlbnRp dHkgbWFwcGVkIGJ5IHRoZQorICAgICAqIGRvbWFpbiBidWlsZGVyIGZvciBIVk0uCisgICAgICov CisgICAgaWYgKCAoaXNfaHZtX2RvbWFpbihkKSAmJiBwZm4gPCBQRk5fRE9XTihNQigxKSkpIHx8 CisgICAgICAgICAvKiBFeGNsdWRlIFhlbiBiaXRzLiAqLworICAgICAgICAgeGVuX2luX3Jhbmdl KHBmbikgfHwgKHBmbiA+IG1heF9wZm4gJiYgIW1mbl92YWxpZChfbWZuKHBmbikpKSApCisgICAg ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8qCisgICAgICogSWYgZG9tMC1zdHJpY3QgbW9kZSBp cyBlbmFibGVkIG9yIHRoZSBndWVzdCB0eXBlIGlzIFBWSC9IVk0gdGhlbiBleGNsdWRlCisgICAg ICogY29udmVudGlvbmFsIFJBTSBhbmQgbGV0IHRoZSBjb21tb24gY29kZSBtYXAgZG9tMCdzIHBh Z2VzLgorICAgICAqLworICAgIGlmICggcGFnZV9pc19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX0NP TlZFTlRJT05BTCkgJiYKKyAgICAgICAgIChpb21tdV9kb20wX3N0cmljdCB8fCBpc19odm1fZG9t YWluKGQpKSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIHBhZ2VfaXNfcmFtX3R5 cGUocGZuLCBSQU1fVFlQRV9SRVNFUlZFRCkgJiYKKyAgICAgICAgICFpb21tdV9kb20wX3Jlc2Vy dmVkICYmICFpb21tdV9kb20wX2luY2x1c2l2ZSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICBpZiAoICFwYWdlX2lzX3JhbV90eXBlKHBmbiwgUkFNX1RZUEVfVU5VU0FCTEUpICYmCisgICAg ICAgICAhcGFnZV9pc19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX1JFU0VSVkVEKSAmJgorICAgICAg ICAgIXBhZ2VfaXNfcmFtX3R5cGUocGZuLCBSQU1fVFlQRV9DT05WRU5USU9OQUwpICYmCisgICAg ICAgICAoIWlvbW11X2RvbTBfaW5jbHVzaXZlIHx8IHBmbiA+IG1heF9wZm4pICkKKyAgICAgICAg cmV0dXJuIGZhbHNlOworCisgICAgLyogQ2hlY2sgdGhhdCBpdCBkb2Vzbid0IG92ZXJsYXAgd2l0 aCB0aGUgTEFQSUMgKi8KKyAgICBpZiAoIGhhc192bGFwaWMoZCkgKQorICAgIHsKKyAgICAgICAg Y29uc3Qgc3RydWN0IHZjcHUgKnY7CisKKyAgICAgICAgZm9yX2VhY2hfdmNwdShkLCB2KQorICAg ICAgICAgICAgaWYgKCBwZm4gPT0gUEZOX0RPV04odmxhcGljX2Jhc2VfYWRkcmVzcyh2Y3B1X3Zs YXBpYyh2KSkpICkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8q IC4uLiBvciB0aGUgSU8tQVBJQyAqLworICAgIGZvciAoIGkgPSAwOyBoYXNfdmlvYXBpYyhkKSAm JiBpIDwgZC0+YXJjaC5odm1fZG9tYWluLm5yX3Zpb2FwaWNzOyBpKysgKQorICAgICAgICBpZiAo IHBmbiA9PSBQRk5fRE9XTihkb21haW5fdmlvYXBpYyhkLCBpKS0+YmFzZV9hZGRyZXNzKSApCisg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLyoKKyAgICAgKiAuLi4gb3IgdGhlIFBDSWUg TUNGRyByZWdpb25zLgorICAgICAqIFRPRE86IHJ1bnRpbWUgYWRkZWQgTU1DRkcgcmVnaW9ucyBh cmUgbm90IGNoZWNrZWQgdG8gbWFrZSBzdXJlIHRoZXkKKyAgICAgKiBkb24ndCBvdmVybGFwIHdp dGggYWxyZWFkeSBtYXBwZWQgcmVnaW9ucywgdGh1cyBwcmV2ZW50aW5nIHRyYXBwaW5nLgorICAg ICAqLworICAgIGlmICggaGFzX3ZwY2koZCkgJiYgdnBjaV9tbWNmZ19hZGRyZXNzKGQsIHBmbiA8 PCBQQUdFX1NISUZUKSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVl OworfQorCiB2b2lkIF9faHdkb21faW5pdCBhcmNoX2lvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRv bWFpbiAqZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGksIHRvcCwgbWF4X3BmbjsKIAogICAgIEJV R19PTighaXNfaGFyZHdhcmVfZG9tYWluKGQpKTsKIAotICAgIGlmICggaW9tbXVfZG9tMF9wYXNz dGhyb3VnaCB8fCAhaXNfcHZfZG9tYWluKGQpICkKKyAgICBpZiAoIGlvbW11X2RvbTBfcGFzc3Ro cm91Z2ggKQogICAgICAgICByZXR1cm47CiAKICAgICBtYXhfcGZuID0gKEdCKDQpID4+IFBBR0Vf U0hJRlQpIC0gMTsKQEAgLTE0OSwzOSArMjA0LDE4IEBAIHZvaWQgX19od2RvbV9pbml0IGFyY2hf aW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgIGZvciAoIGkgPSAwOyBpIDwg dG9wOyBpKysgKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBwZm4gPSBwZHhfdG9fcGZu KGkpOwotICAgICAgICBib29sIG1hcDsKICAgICAgICAgaW50IHJjOwogCi0gICAgICAgIC8qCi0g ICAgICAgICAqIFNldCB1cCAxOjEgbWFwcGluZyBmb3IgZG9tMC4gRGVmYXVsdCB0byBpbmNsdWRl IG9ubHkKLSAgICAgICAgICogY29udmVudGlvbmFsIFJBTSBhcmVhcyBhbmQgbGV0IFJNUlJzIGlu Y2x1ZGUgbmVlZGVkIHJlc2VydmVkCi0gICAgICAgICAqIHJlZ2lvbnMuIFdoZW4gc2V0LCB0aGUg aW5jbHVzaXZlIG1hcHBpbmcgYWRkaXRpb25hbGx5IG1hcHMgaW4KLSAgICAgICAgICogZXZlcnkg cGZuIHVwIHRvIDRHQiBleGNlcHQgdGhvc2UgdGhhdCBmYWxsIGluIHVudXNhYmxlIHJhbmdlcy4K LSAgICAgICAgICovCi0gICAgICAgIGlmICggcGZuID4gbWF4X3BmbiAmJiAhbWZuX3ZhbGlkKF9t Zm4ocGZuKSkgKQorICAgICAgICBpZiAoICFod2RvbV9pb21tdV9tYXAoZCwgcGZuLCBtYXhfcGZu KSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIGlvbW11X2RvbTBfaW5j bHVzaXZlICYmIHBmbiA8PSBtYXhfcGZuICkKLSAgICAgICAgICAgIG1hcCA9ICFwYWdlX2lzX3Jh bV90eXBlKHBmbiwgUkFNX1RZUEVfVU5VU0FCTEUpOworICAgICAgICBpZiAoIGlvbW11X3VzZV9o YXBfcHQoZCkgKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNfaHZtX2RvbWFpbihk KSk7CisgICAgICAgICAgICByYyA9IHNldF9pZGVudGl0eV9wMm1fZW50cnkoZCwgcGZuLCBwMm1f YWNjZXNzX3J3LCAwKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtYXAg PSBwYWdlX2lzX3JhbV90eXBlKHBmbiwgUkFNX1RZUEVfQ09OVkVOVElPTkFMKTsKLQotICAgICAg ICBpZiAoICFtYXAgKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLyogRXhjbHVk ZSBYZW4gYml0cyAqLwotICAgICAgICBpZiAoIHhlbl9pbl9yYW5nZShwZm4pICkKLSAgICAgICAg ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIElmIGRvbTAtc3RyaWN0IG1v ZGUgaXMgZW5hYmxlZCB0aGVuIGV4Y2x1ZGUgY29udmVudGlvbmFsIFJBTQotICAgICAgICAgKiBh bmQgbGV0IHRoZSBjb21tb24gY29kZSBtYXAgZG9tMCdzIHBhZ2VzLgotICAgICAgICAgKi8KLSAg ICAgICAgaWYgKCBpb21tdV9kb20wX3N0cmljdCAmJgotICAgICAgICAgICAgIHBhZ2VfaXNfcmFt X3R5cGUocGZuLCBSQU1fVFlQRV9DT05WRU5USU9OQUwpICkKLSAgICAgICAgICAgIGNvbnRpbnVl OwotCi0gICAgICAgIHJjID0gaW9tbXVfbWFwX3BhZ2UoZCwgcGZuLCBwZm4sIElPTU1VRl9yZWFk YWJsZXxJT01NVUZfd3JpdGFibGUpOworICAgICAgICAgICAgcmMgPSBpb21tdV9tYXBfcGFnZShk LCBwZm4sIHBmbiwgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7CiAgICAgICAgIGlm ICggcmMgKQogICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICIgZCVkOiBJT01NVSBt YXBwaW5nIGZhaWxlZDogJWRcbiIsCiAgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBy Yyk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vaW8uaAppbmRleCBlNmI2ZWQwYjkyLi44Y2NhNDU2YjU1IDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL2lvLmgKQEAgLTE4MCw2ICsxODAsOSBAQCBpbnQgcmVnaXN0ZXJfdnBjaV9tbWNmZ19o YW5kbGVyKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgYWRkciwKIC8qIERlc3Ryb3kgdHJhY2tl ZCBNTUNGRyBhcmVhcy4gKi8KIHZvaWQgZGVzdHJveV92cGNpX21tY2ZnKHN0cnVjdCBkb21haW4g KmQpOwogCisvKiBDaGVjayBpZiBhbiBhZGRyZXNzIGlzIGJldHdlZW4gYSBNTUNGRyByZWdpb24g Zm9yIGEgZG9tYWluLiAqLworYm9vbCB2cGNpX21tY2ZnX2FkZHJlc3MoY29uc3Qgc3RydWN0IGRv bWFpbiAqZCwgcGFkZHJfdCBhZGRyKTsKKwogI2VuZGlmIC8qIF9fQVNNX1g4Nl9IVk1fSU9fSF9f ICovCiAKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmggYi94ZW4vaW5jbHVk ZS94ZW4vaW9tbXUuaAppbmRleCA5OWU1Yjg5YzBmLi5mZWQxYjFlYTdhIDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaApAQCAt MzcsNyArMzcsNyBAQCBleHRlcm4gYm9vbF90IGlvbW11X2RlYnVnOwogZXh0ZXJuIGJvb2xfdCBh bWRfaW9tbXVfcGVyZGV2X2ludHJlbWFwOwogCiBleHRlcm4gYm9vbCBpb21tdV9kb20wX3N0cmlj dCwgaW9tbXVfZG9tMF9wYXNzdGhyb3VnaDsKLWV4dGVybiBpbnQ4X3QgaW9tbXVfZG9tMF9pbmNs dXNpdmU7CitleHRlcm4gaW50OF90IGlvbW11X2RvbTBfaW5jbHVzaXZlLCBpb21tdV9kb20wX3Jl c2VydmVkOwogCiBleHRlcm4gdW5zaWduZWQgaW50IGlvbW11X2Rldl9pb3RsYl90aW1lb3V0Owog Ci0tIAoyLjE4LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs