From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v3 4/4] x86/iommu: add reserved dom0-iommu option to map reserved memory ranges Date: Tue, 7 Aug 2018 16:02:43 +0200 Message-ID: <20180807140243.11265-5-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 1fn2aF-00042s-NL for xen-devel@lists.xenproject.org; Tue, 07 Aug 2018 14:03:35 +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: 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 LWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KLS0tCkNoYW5nZXMg c2luY2UgdjI6CiAtIEZpeCBjb21tZW50IHJlZ2FyZGluZyBkb20wLXN0cmljdC4KIC0gQ2hhbmdl IGRvY3VtZW50YXRpb24gc3R5bGUgb2YgeGVuIGNvbW1hbmQgbGluZS4KIC0gUmVuYW1lIGlvbW11 X21hcCB0byBod2RvbV9pb21tdV9tYXAuCiAtIE1vdmUgYWxsIHRoZSBjaGVja3MgdG8gaHdkb21f aW9tbXVfbWFwLgoKQ2hhbmdlcyBzaW5jZSB2MToKIC0gSW50cm9kdWNlIGEgbmV3IHJlc2VydmVk IG9wdGlvbiBpbnN0ZWFkIG9mIGFidXNpbmcgdGhlIGluY2x1c2l2ZQogICBvcHRpb24uCiAtIFVz ZSB0aGUgc2FtZSBoZWxwZXIgZnVuY3Rpb24gZm9yIFBWIGFuZCBQVkggaW4gb3JkZXIgdG8gZGVj aWRlIGlmIGEKICAgcGFnZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGRvbWFpbiBwYWdlIHRhYmxl cy4KIC0gVXNlIHRoZSBkYXRhIGluc2lkZSBvZiB0aGUgZG9tYWluIHN0cnVjdCB0byBkZXRlY3Qg b3ZlcmxhcHMgd2l0aAogICBlbXVsYXRlZCBNTUlPIHJlZ2lvbnMuCi0tLQpDYzogQW5kcmV3IENv b3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3Jn ZS5EdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5j aXRyaXguY29tPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogSnVsaWVu IEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8 a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxp bmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8 d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiBkb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJr ZG93biAgICAgICAgIHwgMTEgKystCiB4ZW4vYXJjaC94ODYvaHZtL2lvLmMgICAgICAgICAgICAg ICAgICAgICAgIHwgIDUgKysKIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lv bW11LmMgfCAgMyArCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jICAgICAgICAgICAg IHwgIDMgKwogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgICAgICAgICB8ICAz ICsKIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jICAgICAgICAgfCA4NiArKysr KysrKysrKysrKy0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvLmggICAgICAgICAg ICAgICAgfCAgMyArCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIDggZmlsZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gYi9k b2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgppbmRleCA5MGIzMmZlM2YwLi41OWVj MmFmYzVkIDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgor KysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgpAQCAtMTIwNSw3ICsxMjA1 LDcgQEAgZGV0ZWN0aW9uIG9mIHN5c3RlbXMga25vd24gdG8gbWlzYmVoYXZlIHVwb24gYWNjZXNz ZXMgdG8gdGhhdCBwb3J0LgogPj4gRW5hYmxlIElPTU1VIGRlYnVnZ2luZyBjb2RlIChpbXBsaWVz IGB2ZXJib3NlYCkuCiAKICMjIyBkb20wLWlvbW11Ci0+IGA9IExpc3Qgb2YgWyBub25lIHwgc3Ry aWN0IHwgcmVsYXhlZCB8IGluY2x1c2l2ZSBdYAorPiBgPSBMaXN0IG9mIFsgbm9uZSB8IHN0cmlj dCB8IHJlbGF4ZWQgfCBpbmNsdXNpdmUgfCByZXNlcnZlZCBdYAogCiAqIGBub25lYDogZGlzYWJs ZXMgRE1BIHJlbWFwcGluZyBmb3IgRG9tMC4KIApAQCAtMTIzMyw2ICsxMjMzLDE1IEBAIG1lYW5p bmc6CiAgIG9wdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgdG8gYSBQViBEb20wIGFuZCBpcyBlbmFi bGVkIGJ5IGRlZmF1bHQgb24gSW50ZWwKICAgaGFyZHdhcmUuCiAKKyogYHJlc2VydmVkYDogc2V0 cyB1cCBETUEgcmVtYXBwaW5nIGZvciBhbGwgdGhlIHJlc2VydmVkIHJlZ2lvbnMgaW4gdGhlIG1l bW9yeQorICBtYXAgZm9yIERvbTAuIFVzZSB0aGlzIHRvIHdvcmsgYXJvdW5kIGZpcm13YXJlIGlz c3VlcyBwcm92aWRpbmcgaW5jb3JyZWN0CisgIFJNUlIvSVZNRCBlbnRyaWVzLiBSYXRoZXIgdGhh biBvbmx5IG1hcHBpbmcgUkFNIHBhZ2VzIGZvciBJT01NVSBhY2Nlc3NlcworICBmb3IgRG9tMCwg YWxsIG1lbW9yeSByZWdpb25zIG1hcmtlZCBhcyByZXNlcnZlZCBpbiB0aGUgbWVtb3J5IG1hcCB0 aGF0IGRvbid0CisgIG92ZXJsYXAgd2l0aCBhbnkgTU1JTyByZWdpb24gZnJvbSBlbXVsYXRlZCBk ZXZpY2VzIHdpbGwgYmUgaWRlbnRpdHkgbWFwcGVkLgorICBUaGlzIG9wdGlvbiBtYXBzIGEgc3Vi c2V0IG9mIHRoZSBtZW1vcnkgdGhhdCB3b3VsZCBiZSBtYXBwZWQgd2hlbiB1c2luZyB0aGUKKyAg YGluY2x1c2l2ZWAgb3B0aW9uLiBUaGlzIG9wdGlvbiBpcyBhdmFpbGFibGUgdG8gYSBQVkggRG9t MCBhbmQgaXMgZW5hYmxlZCBieQorICBkZWZhdWx0IG9uIEludGVsIGhhcmR3YXJlLgorCiAjIyMg aW9tbXVcX2RldlxfaW90bGJcX3RpbWVvdXQKID4gYD0gPGludGVnZXI+YAogCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvaHZtL2lvLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvLmMKaW5kZXggYmY0 ZDg3NDhkMy4uNWUwMWMzMzg5MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pby5jCisr KyBiL3hlbi9hcmNoL3g4Ni9odm0vaW8uYwpAQCAtNDA0LDYgKzQwNCwxMSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGh2bV9tbWNmZyAqdnBjaV9tbWNmZ19maW5kKGNvbnN0IHN0cnVjdCBkb21haW4g KmQsCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK2Jvb2wgdnBjaV9tbWNmZ19hZGRyZXNzKGNvbnN0 IHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgYWRkcikKK3sKKyAgICByZXR1cm4gdnBjaV9tbWNm Z19maW5kKGQsIGFkZHIpOworfQorCiBzdGF0aWMgdW5zaWduZWQgaW50IHZwY2lfbW1jZmdfZGVj b2RlX2FkZHIoY29uc3Qgc3RydWN0IGh2bV9tbWNmZyAqbW1jZmcsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdCBhZGRyLCBwY2lfc2JkZl90ICpzYmRm KQogewpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9t bXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKaW5kZXgg MGUwYzk5Yzk0Mi4uMmMyODY3ZDA4OCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQv cGNpX2FtZF9pb21tdS5jCkBAIC0yNTYsNiArMjU2LDkgQEAgc3RhdGljIHZvaWQgX19od2RvbV9p bml0IGFtZF9pb21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgLyogSW5jbHVz aXZlIElPTU1VIG1hcHBpbmdzIGFyZSBkaXNhYmxlZCBieSBkZWZhdWx0IG9uIEFNRCBoYXJkd2Fy ZS4gKi8KICAgICBpb21tdV9kb20wX2luY2x1c2l2ZSA9IGlvbW11X2RvbTBfaW5jbHVzaXZlID09 IC0xID8gZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogaW9tbXVfZG9tMF9pbmNsdXNpdmU7CisgICAgLyogUmVzZXJ2ZWQgSU9NTVUg bWFwcGluZ3MgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQgb24gQU1EIGhhcmR3YXJlLiAqLworICAg IGlvbW11X2RvbTBfcmVzZXJ2ZWQgPSBpb21tdV9kb20wX3Jlc2VydmVkID09IC0xID8gZmFsc2UK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlv bW11X2RvbTBfcmVzZXJ2ZWQ7CiAKICAgICBpZiAoIGFsbG9jYXRlX2RvbWFpbl9yZXNvdXJjZXMo ZG9tX2lvbW11KGQpKSApCiAgICAgICAgIEJVRygpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKaW5k ZXggZjE1Yzk0YmU0Mi4uOWM5OTFiZDJjZiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCkBAIC03 NSw2ICs3NSw3IEBAIGN1c3RvbV9wYXJhbSgiZG9tMC1pb21tdSIsIHBhcnNlX2RvbTBfaW9tbXVf cGFyYW0pOwogYm9vbCBfX2h3ZG9tX2luaXRkYXRhIGlvbW11X2RvbTBfc3RyaWN0OwogYm9vbCBf X3JlYWRfbW9zdGx5IGlvbW11X2RvbTBfcGFzc3Rocm91Z2g7CiBpbnQ4X3QgX19od2RvbV9pbml0 ZGF0YSBpb21tdV9kb20wX2luY2x1c2l2ZSA9IC0xOworaW50OF90IF9faHdkb21faW5pdGRhdGEg aW9tbXVfZG9tMF9yZXNlcnZlZCA9IC0xOwogCiBERUZJTkVfUEVSX0NQVShib29sX3QsIGlvbW11 X2RvbnRfZmx1c2hfaW90bGIpOwogCkBAIC0xNjIsNiArMTYzLDggQEAgc3RhdGljIGludCBfX2lu aXQgcGFyc2VfZG9tMF9pb21tdV9wYXJhbShjb25zdCBjaGFyICpzKQogICAgICAgICAgICAgaW9t bXVfZG9tMF9zdHJpY3QgPSBmYWxzZTsKICAgICAgICAgZWxzZSBpZiAoICFzdHJuY21wKHMsICJp bmNsdXNpdmUiLCBzcyAtIHMpICkKICAgICAgICAgICAgIGlvbW11X2RvbTBfaW5jbHVzaXZlID0g dmFsOworICAgICAgICBlbHNlIGlmICggIXN0cm5jbXAocywgInJlc2VydmVkIiwgc3MgLSBzKSAp CisgICAgICAgICAgICBpb21tdV9kb20wX3Jlc2VydmVkID0gdmFsOwogICAgICAgICBlbHNlCiAg ICAgICAgICAgICByYyA9IC1FSU5WQUw7CiAKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMK aW5kZXggN2M3ZTE1NzU1ZC4uNzdhMDc2MjE1YiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lv bW11LmMKQEAgLTEzMDcsNiArMTMwNyw5IEBAIHN0YXRpYyB2b2lkIF9faHdkb21faW5pdCBpbnRl bF9pb21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgLyogSW5jbHVzaXZlIG1h cHBpbmdzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gSW50ZWwgaGFyZHdhcmUgZm9yIFBWLiAq LwogICAgIGlvbW11X2RvbTBfaW5jbHVzaXZlID0gaW9tbXVfZG9tMF9pbmNsdXNpdmUgPT0gLTEg PyBpc19wdl9kb21haW4oZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDogaW9tbXVfZG9tMF9pbmNsdXNpdmU7CisgICAgLyogUmVzZXJ2ZWQg SU9NTVUgbWFwcGluZ3MgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBJbnRlbCBoYXJkd2FyZS4g Ki8KKyAgICBpb21tdV9kb20wX3Jlc2VydmVkID0gaW9tbXVfZG9tMF9yZXNlcnZlZCA9PSAtMSA/ IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6IGlvbW11X2RvbTBfcmVzZXJ2ZWQ7CiAKICAgICBzZXR1cF9od2RvbV9wY2lfZGV2aWNlcyhk LCBzZXR1cF9od2RvbV9kZXZpY2UpOwogICAgIHNldHVwX2h3ZG9tX3JtcnIoZCk7CmRpZmYgLS1n aXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3g4Ni9pb21tdS5jCmluZGV4IDVhN2E3NjVlOWQuLjZhZWM0M2VkMWEgMTAwNjQ0 Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCisrKyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSA8 eGVuL3NvZnRpcnEuaD4KICNpbmNsdWRlIDx4c20veHNtLmg+CiAKKyNpbmNsdWRlIDxhc20vaHZt L2lvLmg+CiAjaW5jbHVkZSA8YXNtL3NldHVwLmg+CiAKIHZvaWQgaW9tbXVfdXBkYXRlX2lyZV9m cm9tX2FwaWMoCkBAIC0xMzQsMTMgKzEzNSw2NyBAQCB2b2lkIGFyY2hfaW9tbXVfZG9tYWluX2Rl c3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKIHsKIH0KIAorc3RhdGljIGJvb2wgX19od2RvbV9pbml0 IGh3ZG9tX2lvbW11X21hcChjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBm biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBtYXhfcGZuKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgLyoKKyAgICAgKiBJZ25v cmUgYW55IGFkZHJlc3MgYmVsb3cgMU1CLCB0aGF0J3MgYWxyZWFkeSBpZGVudGl0eSBtYXBwZWQg YnkgdGhlCisgICAgICogZG9tYWluIGJ1aWxkZXIgZm9yIEhWTS4KKyAgICAgKi8KKyAgICBpZiAo IChpc19odm1fZG9tYWluKGQpICYmIHBmbiA8IFBGTl9ET1dOKE1CKDEpKSkgfHwKKyAgICAgICAg IC8qIEV4Y2x1ZGUgWGVuIGJpdHMuICovCisgICAgICAgICB4ZW5faW5fcmFuZ2UocGZuKSB8fCAo cGZuID4gbWF4X3BmbiAmJiAhbWZuX3ZhbGlkKF9tZm4ocGZuKSkpICkKKyAgICAgICAgcmV0dXJu IGZhbHNlOworCisgICAgLyoKKyAgICAgKiBJZiBkb20wLXN0cmljdCBtb2RlIGlzIGVuYWJsZWQg b3IgdGhlIGd1ZXN0IHR5cGUgaXMgUFZIL0hWTSB0aGVuIGV4Y2x1ZGUKKyAgICAgKiBjb252ZW50 aW9uYWwgUkFNIGFuZCBsZXQgdGhlIGNvbW1vbiBjb2RlIG1hcCBkb20wJ3MgcGFnZXMuCisgICAg ICovCisgICAgaWYgKCBwYWdlX2lzX3JhbV90eXBlKHBmbiwgUkFNX1RZUEVfQ09OVkVOVElPTkFM KSAmJgorICAgICAgICAgKGlvbW11X2RvbTBfc3RyaWN0IHx8IGlzX2h2bV9kb21haW4oZCkpICkK KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICggcGFnZV9pc19yYW1fdHlwZShwZm4sIFJB TV9UWVBFX1JFU0VSVkVEKSAmJgorICAgICAgICAgIWlvbW11X2RvbTBfcmVzZXJ2ZWQgJiYgIWlv bW11X2RvbTBfaW5jbHVzaXZlICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICggIXBh Z2VfaXNfcmFtX3R5cGUocGZuLCBSQU1fVFlQRV9VTlVTQUJMRSkgJiYKKyAgICAgICAgICFwYWdl X2lzX3JhbV90eXBlKHBmbiwgUkFNX1RZUEVfUkVTRVJWRUQpICYmCisgICAgICAgICAhcGFnZV9p c19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX0NPTlZFTlRJT05BTCkgJiYKKyAgICAgICAgICghaW9t bXVfZG9tMF9pbmNsdXNpdmUgfHwgcGZuID4gbWF4X3BmbikgKQorICAgICAgICByZXR1cm4gZmFs c2U7CisKKyAgICAvKiBDaGVjayB0aGF0IGl0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIHRoZSBMQVBJ QyAqLworICAgIGlmICggaGFzX3ZsYXBpYyhkKSApCisgICAgeworICAgICAgICBjb25zdCBzdHJ1 Y3QgdmNwdSAqdjsKKworICAgICAgICBmb3JfZWFjaF92Y3B1KGQsIHYpCisgICAgICAgICAgICBp ZiAoIHBmbiA9PSBQRk5fRE9XTih2bGFwaWNfYmFzZV9hZGRyZXNzKHZjcHVfdmxhcGljKHYpKSkg KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLyogLi4uIG9yIHRo ZSBJTy1BUElDICovCisgICAgZm9yICggaSA9IDA7IGhhc192aW9hcGljKGQpICYmIGkgPCBkLT5h cmNoLmh2bV9kb21haW4ubnJfdmlvYXBpY3M7IGkrKyApCisgICAgICAgIGlmICggcGZuID09IFBG Tl9ET1dOKGRvbWFpbl92aW9hcGljKGQsIGkpLT5iYXNlX2FkZHJlc3MpICkKKyAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAvKgorICAgICAqIC4uLiBvciB0aGUgUENJZSBNQ0ZHIHJlZ2lv bnMuCisgICAgICogVE9ETzogcnVudGltZSBhZGRlZCBNTUNGRyByZWdpb25zIGFyZSBub3QgY2hl Y2tlZCB0byBtYWtlIHN1cmUgdGhleQorICAgICAqIGRvbid0IG92ZXJsYXAgd2l0aCBhbHJlYWR5 IG1hcHBlZCByZWdpb25zLCB0aHVzIHByZXZlbnRpbmcgdHJhcHBpbmcuCisgICAgICovCisgICAg aWYgKCBoYXNfdnBjaShkKSAmJiB2cGNpX21tY2ZnX2FkZHJlc3MoZCwgcGZuIDw8IFBBR0VfU0hJ RlQpICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv aWQgX19od2RvbV9pbml0IGFyY2hfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQog ewogICAgIHVuc2lnbmVkIGxvbmcgaSwgdG9wLCBtYXhfcGZuOwogCiAgICAgQlVHX09OKCFpc19o YXJkd2FyZV9kb21haW4oZCkpOwogCi0gICAgaWYgKCBpb21tdV9kb20wX3Bhc3N0aHJvdWdoIHx8 ICFpc19wdl9kb21haW4oZCkgKQorICAgIGlmICggaW9tbXVfZG9tMF9wYXNzdGhyb3VnaCApCiAg ICAgICAgIHJldHVybjsKIAogICAgIG1heF9wZm4gPSAoR0IoNCkgPj4gUEFHRV9TSElGVCkgLSAx OwpAQCAtMTQ5LDM2ICsyMDQsOSBAQCB2b2lkIF9faHdkb21faW5pdCBhcmNoX2lvbW11X2h3ZG9t X2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICBmb3IgKCBpID0gMDsgaSA8IHRvcDsgaSsrICkK ICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGZuID0gcGR4X3RvX3BmbihpKTsKLSAgICAg ICAgYm9vbCBtYXA7CiAgICAgICAgIGludCByYzsKIAotICAgICAgICAvKgotICAgICAgICAgKiBT ZXQgdXAgMToxIG1hcHBpbmcgZm9yIGRvbTAuIERlZmF1bHQgdG8gaW5jbHVkZSBvbmx5Ci0gICAg ICAgICAqIGNvbnZlbnRpb25hbCBSQU0gYXJlYXMgYW5kIGxldCBSTVJScyBpbmNsdWRlIG5lZWRl ZCByZXNlcnZlZAotICAgICAgICAgKiByZWdpb25zLiBXaGVuIHNldCwgdGhlIGluY2x1c2l2ZSBt YXBwaW5nIGFkZGl0aW9uYWxseSBtYXBzIGluCi0gICAgICAgICAqIGV2ZXJ5IHBmbiB1cCB0byA0 R0IgZXhjZXB0IHRob3NlIHRoYXQgZmFsbCBpbiB1bnVzYWJsZSByYW5nZXMuCi0gICAgICAgICAq LwotICAgICAgICBpZiAoIHBmbiA+IG1heF9wZm4gJiYgIW1mbl92YWxpZChfbWZuKHBmbikpICkK LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmICggaW9tbXVfZG9tMF9pbmNsdXNp dmUgJiYgcGZuIDw9IG1heF9wZm4gKQotICAgICAgICAgICAgbWFwID0gIXBhZ2VfaXNfcmFtX3R5 cGUocGZuLCBSQU1fVFlQRV9VTlVTQUJMRSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1h cCA9IHBhZ2VfaXNfcmFtX3R5cGUocGZuLCBSQU1fVFlQRV9DT05WRU5USU9OQUwpOwotCi0gICAg ICAgIGlmICggIW1hcCApCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvKiBFeGNs dWRlIFhlbiBiaXRzICovCi0gICAgICAgIGlmICggeGVuX2luX3JhbmdlKHBmbikgKQotICAgICAg ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogSWYgZG9tMC1zdHJpY3Qg bW9kZSBpcyBlbmFibGVkIHRoZW4gZXhjbHVkZSBjb252ZW50aW9uYWwgUkFNCi0gICAgICAgICAq IGFuZCBsZXQgdGhlIGNvbW1vbiBjb2RlIG1hcCBkb20wJ3MgcGFnZXMuCi0gICAgICAgICAqLwot ICAgICAgICBpZiAoIGlvbW11X2RvbTBfc3RyaWN0ICYmCi0gICAgICAgICAgICAgcGFnZV9pc19y YW1fdHlwZShwZm4sIFJBTV9UWVBFX0NPTlZFTlRJT05BTCkgKQorICAgICAgICBpZiAoICFod2Rv bV9pb21tdV9tYXAoZCwgcGZuLCBtYXhfcGZuKSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAog ICAgICAgICByYyA9IGlvbW11X21hcF9wYWdlKGQsIHBmbiwgcGZuLCBJT01NVUZfcmVhZGFibGV8 SU9NTVVGX3dyaXRhYmxlKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lv LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oCmluZGV4IGU2YjZlZDBiOTIuLjhjY2E0 NTZiNTUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvLmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaApAQCAtMTgwLDYgKzE4MCw5IEBAIGludCByZWdpc3Rl cl92cGNpX21tY2ZnX2hhbmRsZXIoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBhZGRyLAogLyog RGVzdHJveSB0cmFja2VkIE1NQ0ZHIGFyZWFzLiAqLwogdm9pZCBkZXN0cm95X3ZwY2lfbW1jZmco c3RydWN0IGRvbWFpbiAqZCk7CiAKKy8qIENoZWNrIGlmIGFuIGFkZHJlc3MgaXMgYmV0d2VlbiBh IE1NQ0ZHIHJlZ2lvbiBmb3IgYSBkb21haW4uICovCitib29sIHZwY2lfbW1jZmdfYWRkcmVzcyhj b25zdCBzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGFkZHIpOworCiAjZW5kaWYgLyogX19BU01f WDg2X0hWTV9JT19IX18gKi8KIAogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUu aCBiL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCmluZGV4IDk5ZTViODljMGYuLmZlZDFiMWVhN2Eg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCisrKyBiL3hlbi9pbmNsdWRlL3hl bi9pb21tdS5oCkBAIC0zNyw3ICszNyw3IEBAIGV4dGVybiBib29sX3QgaW9tbXVfZGVidWc7CiBl eHRlcm4gYm9vbF90IGFtZF9pb21tdV9wZXJkZXZfaW50cmVtYXA7CiAKIGV4dGVybiBib29sIGlv bW11X2RvbTBfc3RyaWN0LCBpb21tdV9kb20wX3Bhc3N0aHJvdWdoOwotZXh0ZXJuIGludDhfdCBp b21tdV9kb20wX2luY2x1c2l2ZTsKK2V4dGVybiBpbnQ4X3QgaW9tbXVfZG9tMF9pbmNsdXNpdmUs IGlvbW11X2RvbTBfcmVzZXJ2ZWQ7CiAKIGV4dGVybiB1bnNpZ25lZCBpbnQgaW9tbXVfZGV2X2lv dGxiX3RpbWVvdXQ7CiAKLS0gCjIuMTguMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0 aW5mby94ZW4tZGV2ZWw=