From mboxrd@z Thu Jan 1 00:00:00 1970 From: Venu Busireddy Subject: [PATCH v13 3/3] iommu: add rmrr Xen command line option for extra rmrrs Date: Tue, 10 Jan 2017 16:57:36 -0600 Message-ID: <1484089056-8762-4-git-send-email-venu.busireddy@oracle.com> References: <1484089056-8762-1-git-send-email-venu.busireddy@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1484089056-8762-1-git-send-email-venu.busireddy@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: venu.busireddy@oracle.com, Konrad Rzeszutek Wilk Cc: Elena Ufimtseva , Kevin Tian , Feng Wu , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org RnJvbTogRWxlbmEgVWZpbXRzZXZhIDxlbGVuYS51ZmltdHNldmFAb3JhY2xlLmNvbT4KCk9uIHNv bWUgcGxhdGZvcm1zIGZpcm13YXJlIGZhaWxzIHRvIHNwZWNpZnkgUk1SUiByZWdpb25zIGluIEFD UEkgdGFibGVzIGFuZAp0aHVzIHRob3NlIHJlZ2lvbnMgd2lsbCBub3QgYmUgbWFwcGVkIGluIGRv bTAgb3IgZ3Vlc3RzIGFuZCBtYXkgY2F1c2UgSU8KUGFnZSBGYXVsdHMgYW5kIHByZXZlbnQgZG9t MCBmcm9tIGJvb3RpbmcgaWYgImlvbW11PWRvbTAtc3RyaWN0IiBvcHRpb24gaXMKc3BlY2lmaWVk IG9uIHRoZSBYZW4gY29tbWFuZCBsaW5lLgoKTmV3IFhlbiBjb21tYW5kIGxpbmUgb3B0aW9uIHJt cnIgYWxsb3dzIHRvIHNwZWNpZnkgc3VjaCBkZXZpY2VzIGFuZAptZW1vcnkgcmVnaW9ucy4gVGhl c2UgcmVnaW9ucyBhcmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgUk1SUiBkZWZpbmVkIGluIEFDUEkK aWYgdGhlIGRldmljZSBpcyBwcmVzZW50IGluIHN5c3RlbS4gQXMgYSByZXN1bHQsIGFkZGl0aW9u YWwgUk1SUnMgd2lsbCBiZQptYXBwZWQgMToxIGluIGRvbTAgd2l0aCBjb3JyZWN0IHBlcm1pc3Np b25zLgoKVGhlIGFib3ZlIG1lbnRpb25lZCBwcm9ibGVtcyB3ZXJlIGRpc2NvdmVyZWQgZHVyaW5n IHRoZSBQVkggd29yayB3aXRoClRoaW5rQ2VudHJlIE0gYW5kIERlbGwgNTYwMFQuIE5vIG9mZmlj aWFsIGRvY3VtZW50YXRpb24gd2FzIGZvdW5kIHNvIGZhcgppbiByZWdhcmRzIHRvIHdoYXQgZGV2 aWNlcyBhbmQgd2h5IGNhdXNlIHRoaXMuIEV4cGVyaW1lbnRzIHNob3cgdGhhdApUaGlua0NlbnRy ZSBNIFVTQiBkZXZpY2VzIHdpdGggZW5hYmxlZCBkZWJ1ZyBwb3J0IGdlbmVyYXRlIERNQSByZWFk CnRyYW5zYWN0aW9ucyB0byB0aGUgcmVnaW9ucyBvZiBtZW1vcnkgbWFya2VkIHJlc2VydmVkIGlu IGhvc3QgZTgyMCBtYXAuCgpGb3IgRGVsbCA1NjAwVCB0aGUgZGV2aWNlIGFuZCBmYXVsdGluZyBh ZGRyZXNzZXMgYXJlIG5vdCBmb3VuZCB5ZXQuCkZvciBkZXRhaWxlZCBoaXN0b3J5IG9mIHRoZSBk aXNjdXNzaW9uIHBsZWFzZSBjaGVjayBmb2xsb3dpbmcgdGhyZWFkczoKICAgIGh0dHA6Ly9saXN0 cy5YZW4ub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTUtMDIvbXNnMDE3MjQuaHRtbAog ICAgaHR0cDovL2xpc3RzLlhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNS0wMS9t c2cwMjUxMy5odG1sCgpGb3JtYXQgZm9yIHJtcnIgWGVuIGNvbW1hbmQgbGluZSBvcHRpb246CiAg ICBybXJyPXN0YXJ0PC1lbmQ+PVtzMV1iZGYxWyxbczFdYmRmMlssLi4uXV07c3RhcnQ8LWVuZD49 W3MyXWJkZjFbLFtzMl1iZGYyWywuLi5dXQogICAgRm9yIGV4YW1wbGUsIGZvciBMZW5vdm8gVGhp bmtDZW50cmUgTSwgdXNlOgogICAgICAgIHJtcnI9MHhkNWQ0NT0wOjA6MWQuMDsweGQ1ZDQ2PTA6 MDoxYS4wCiAgICBJZiBncnViMiB1c2VkIGFuZCBtdWx0aXBsZSByYW5nZXMgYXJlIHNwZWNpZmll ZCwgJzsnIHNob3VsZCBiZQogICAgcXVvdGVkL2VzY2FwZWQsIHJlZmVyIHRvIGdydWIyIG1hbnVh bCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KClNpZ25lZC1vZmYtYnk6IEVsZW5hIFVmaW10c2V2YSA8 ZWxlbmEudWZpbXRzZXZhQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFZlbnUgQnVzaXJlZGR5 IDx2ZW51LmJ1c2lyZWRkeUBvcmFjbGUuY29tPgotLS0KIGRvY3MvbWlzYy94ZW4tY29tbWFuZC1s aW5lLm1hcmtkb3duIHwgIDEzICsrKwogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2RtYXIu YyAgfCAyMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAyIGZpbGVzIGNo YW5nZWQsIDIxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpDaGFuZ2VzIGluIHYxMzoK IC0gSW1wbGVtZW50IGZlZWRiYWNrIGZyb20gS2V2aW4gVGlhbi4KICAgaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE1LTEwL21zZzAzMTY5Lmh0 bWwKICAgaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZl bC8yMDE1LTEwL21zZzAzMTcwLmh0bWwKICAgaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9h cmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE1LTEwL21zZzAzMTcxLmh0bWwKIC0gTGltaXQgYWxs IHNvdXJjZSBsaW5lcyBhbmQgY29tbWVudHMgdG8gODAgY2hhcmFjdGVycyBwZXIgbGluZS4KIC0g SW1wbGVtZW50IGNvZGluZyBzdHlsZSBzdWdnZXN0aW9ucyBmcm9tIEtvbnJhZCBXaWxrLgoKZGlm ZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIGIvZG9jcy9taXNj L3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KaW5kZXggMDEzODk3OC4uYTExZmRmOSAxMDA2NDQK LS0tIGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KKysrIGIvZG9jcy9taXNj L3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KQEAgLTEzNzcsNiArMTM3NywxOSBAQCBTcGVjaWZ5 IHRoZSBob3N0IHJlYm9vdCBtZXRob2QuCiAnZWZpJyBpbnN0cnVjdHMgWGVuIHRvIHJlYm9vdCB1 c2luZyB0aGUgRUZJIHJlYm9vdCBjYWxsIChpbiBFRkkgbW9kZSBieQogIGRlZmF1bHQgaXQgd2ls bCB1c2UgdGhhdCBtZXRob2QgZmlyc3QpLgogCisjIyMgcm1ycgorPiAnPSBzdGFydDwtZW5kPj1b czFdYmRmMVssW3MxXWJkZjJbLC4uLl1dO3N0YXJ0PC1lbmQ+PVtzMl1iZGYxWyxbczJdYmRmMlss Li4uXV0KKworRGVmaW5lIFJNUlIgdW5pdHMgdGhhdCBhcmUgbWlzc2luZyBmcm9tIEFDUEkgdGFi bGUgYWxvbmcgd2l0aCBkZXZpY2UgdGhleQorYmVsb25nIHRvIGFuZCB1c2UgdGhlbSBmb3IgMTox IG1hcHBpbmcuIEVuZCBhZGRyZXNzZXMgY2FuIGJlIG9taXR0ZWQgYW5kIG9uZQorcGFnZSB3aWxs IGJlIG1hcHBlZC4gVGhlIHJhbmdlcyBhcmUgaW5jbHVzaXZlIHdoZW4gc3RhcnQgYW5kIGVuZCBh cmUgc3BlY2lmaWVkLgorSWYgc2VnbWVudCBvZiB0aGUgZmlyc3QgZGV2aWNlIGlzIG5vdCBzcGVj aWZpZWQsIHNlZ21lbnQgemVybyB3aWxsIGJlIHVzZWQuCitJZiBvdGhlciBzZWdtZW50cyBhcmUg bm90IHNwZWNpZmllZCwgZmlyc3QgZGV2aWNlIHNlZ21lbnQgd2lsbCBiZSB1c2VkLgorSWYgYSBz ZWdtZW50IGlzIHNwZWNpZmllZCBmb3Igb3RoZXIgdGhhbiB0aGUgZmlyc3QgZGV2aWNlIGFuZCBp dCBkb2VzIG5vdCBtYXRjaAordGhlIG9uZSBzcGVjaWZpZWQgZm9yIHRoZSBmaXJzdCBvbmUsIGFu IGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuCitOb3RlOiBncnViMiByZXF1aXJlcyB0byBlc2NhcGUg b3IgdXNlIHF1b3RhdGlvbnMgaWYgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSB1c2VkLAorbmFtZWx5 ICc7JywgcmVmZXIgdG8gdGhlIGdydWIyIGRvY3VtZW50YXRpb24gaWYgbXVsdGlwbGUgcmFuZ2Vz IGFyZSBzcGVjaWZpZWQuCisKICMjIyByby1ocGV0CiA+IGA9IDxib29sZWFuPmAKIApkaWZmIC0t Z2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2RtYXIuYyBiL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3Z0ZC9kbWFyLmMKaW5kZXggODRiZjYzZC4uMjNiYTdhNiAxMDA2NDQKLS0tIGEv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2RtYXIuYworKysgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvZG1hci5jCkBAIC04NTksNiArODU5LDEzMiBAQCBvdXQ6CiAgICAgcmV0dXJu IHJldDsKIH0KIAorI2RlZmluZSBNQVhfRVhUUkFfUk1SUl9QQUdFUyAxNgorI2RlZmluZSBNQVhf RVhUUkFfUk1SUiAxMAorCisvKiBSTVJSIHVuaXRzIGRlcml2ZWQgZnJvbSBjb21tYW5kIGxpbmUg cm1yciBvcHRpb24uICovCisjZGVmaW5lIE1BWF9FWFRSQV9STVJSX0RFViAyMAorc3RydWN0IHVz ZXJfcm1yciB7CisgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OworICAgIHVuc2lnbmVkIGxvbmcg YmFzZV9wZm4sIGVuZF9wZm47CisgICAgdW5zaWduZWQgaW50IGRldl9jb3VudDsKKyAgICB1MzIg c2JkZltNQVhfRVhUUkFfUk1SUl9ERVZdOworfTsKKworc3RhdGljIF9faW5pdGRhdGEgdW5zaWdu ZWQgaW50IG5yX3JtcnI7CitzdGF0aWMgc3RydWN0IF9faW5pdGRhdGEgdXNlcl9ybXJyIHVzZXJf cm1ycnNbTUFYX0VYVFJBX1JNUlJdOworCisvKiBNYWNybyBmb3IgUk1SUiBpbmNsdXNpdmUgcmFu Z2UgZm9ybWF0dGluZy4gKi8KKyNkZWZpbmUgRVJNUlJVX0ZNVCAiWyVseC0lbHhdIgorI2RlZmlu ZSBFUk1SUlVfQVJHKGVydSkgZXJ1LmJhc2VfcGZuLCBlcnUuZW5kX3BmbgorCitzdGF0aWMgaW50 IF9faW5pdCBhZGRfdXNlcl9ybXJyKHZvaWQpCit7CisgICAgc3RydWN0IGFjcGlfcm1ycl91bml0 ICpybXJyLCAqcm1ycnU7CisgICAgdW5zaWduZWQgaW50IGlkeCwgc2VnLCBpOworICAgIHVuc2ln bmVkIGxvbmcgYmFzZSwgZW5kOworICAgIGJvb2wgb3ZlcmxhcDsKKworICAgIGZvciAoIGkgPSAw OyBpIDwgbnJfcm1ycjsgaSsrICkKKyAgICB7CisgICAgICAgIGJhc2UgPSB1c2VyX3JtcnJzW2ld LmJhc2VfcGZuOworICAgICAgICBlbmQgPSB1c2VyX3JtcnJzW2ldLmVuZF9wZm47CisKKyAgICAg ICAgaWYgKCBiYXNlID4gZW5kICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnRrKFhFTkxP R19FUlIgVlREUFJFRklYCisgICAgICAgICAgICAgICAgICAgIkludmFsaWQgUk1SUiBSYW5nZSAi RVJNUlJVX0ZNVCJcbiIsCisgICAgICAgICAgICAgICAgICAgRVJNUlJVX0FSRyh1c2VyX3JtcnJz W2ldKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgg KGVuZCAtIGJhc2UpID49IE1BWF9FWFRSQV9STVJSX1BBR0VTICkKKyAgICAgICAgeworICAgICAg ICAgICAgcHJpbnRrKFhFTkxPR19FUlIgVlREUFJFRklYCisgICAgICAgICAgICAgICAgICAgIlJN UlIgcmFuZ2UgIkVSTVJSVV9GTVQiIGV4Y2VlZHMgIlwKKyAgICAgICAgICAgICAgICAgICBfX3N0 cmluZ2lmeShNQVhfRVhUUkFfUk1SUl9QQUdFUykiIHBhZ2VzXG4iLAorICAgICAgICAgICAgICAg ICAgIEVSTVJSVV9BUkcodXNlcl9ybXJyc1tpXSkpOworICAgICAgICAgICAgY29udGludWU7Cisg ICAgICAgIH0KKworICAgICAgICBvdmVybGFwID0gZmFsc2U7CisgICAgICAgIGxpc3RfZm9yX2Vh Y2hfZW50cnkocm1ycnUsICZhY3BpX3JtcnJfdW5pdHMsIGxpc3QpCisgICAgICAgIHsKKyAgICAg ICAgICAgIGlmICggcGZuX3RvX3BhZGRyKGJhc2UpIDwgcm1ycnUtPmVuZF9hZGRyZXNzICYmCisg ICAgICAgICAgICAgICAgIHJtcnJ1LT5iYXNlX2FkZHJlc3MgPCBwZm5fdG9fcGFkZHIoZW5kICsg MSkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFZU RFBSRUZJWAorICAgICAgICAgICAgICAgICAgICAgICAiT3ZlcmxhcHBpbmcgUk1SUnM6ICJFUk1S UlVfRk1UIiBhbmQgWyVseC0lbHhdXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBFUk1SUlVf QVJHKHVzZXJfcm1ycnNbaV0pLAorICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90b19wZm4o cm1ycnUtPmJhc2VfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3RvX3Bm bihybXJydS0+ZW5kX2FkZHJlc3MpKTsKKyAgICAgICAgICAgICAgICBvdmVybGFwID0gdHJ1ZTsK KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg ICAvKiBEb24ndCBhZGQgb3ZlcmxhcHBpbmcgUk1SUi4gKi8KKyAgICAgICAgaWYgKCBvdmVybGFw ICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAg ICAgICAgIGlmICggIW1mbl92YWxpZChiYXNlKSApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgcHJpbnRrKFhFTkxPR19FUlIgVlREUFJFRklYCisgICAgICAgICAgICAgICAgICAgICAg ICJJbnZhbGlkIHBmbiBpbiBSTVJSIHJhbmdlICJFUk1SUlVfRk1UIlxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgRVJNUlJVX0FSRyh1c2VyX3JtcnJzW2ldKSk7CisgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKCBiYXNlKysgPCBlbmQgKTsK KworICAgICAgICAvKiBJbnZhbGlkIHBmbiBpbiByYW5nZSBhcyB0aGUgbG9vcCBlbmRlZCBiZWZv cmUgZW5kX3BmbiB3YXMgcmVhY2hlZC4gKi8KKyAgICAgICAgaWYgKCBiYXNlIDw9IGVuZCApCisg ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBybXJyID0geHphbGxvYyhzdHJ1Y3QgYWNw aV9ybXJyX3VuaXQpOworICAgICAgICBpZiAoICFybXJyICkKKyAgICAgICAgICAgIHJldHVybiAt RU5PTUVNOworCisgICAgICAgIHJtcnItPnNjb3BlLmRldmljZXMgPSB4bWFsbG9jX2FycmF5KHUx NiwgdXNlcl9ybXJyc1tpXS5kZXZfY291bnQpOworICAgICAgICBpZiAoICFybXJyLT5zY29wZS5k ZXZpY2VzICkKKyAgICAgICAgeworICAgICAgICAgICAgeGZyZWUocm1ycik7CisgICAgICAgICAg ICByZXR1cm4gLUVOT01FTTsKKyAgICAgICAgfQorCisgICAgICAgIHNlZyA9IDA7CisgICAgICAg IGZvciAoIGlkeCA9IDA7IGlkeCA8IHVzZXJfcm1ycnNbaV0uZGV2X2NvdW50OyBpZHgrKyApCisg ICAgICAgIHsKKyAgICAgICAgICAgIHJtcnItPnNjb3BlLmRldmljZXNbaWR4XSA9IHVzZXJfcm1y cnNbaV0uc2JkZltpZHhdOworICAgICAgICAgICAgc2VnIHw9IFBDSV9TRUcodXNlcl9ybXJyc1tp XS5zYmRmW2lkeF0pOworICAgICAgICB9CisgICAgICAgIGlmICggc2VnICE9IFBDSV9TRUcodXNl cl9ybXJyc1tpXS5zYmRmWzBdKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ayhYRU5M T0dfRVJSIFZURFBSRUZJWAorICAgICAgICAgICAgICAgICAgICJTZWdtZW50cyBhcmUgbm90IGVx dWFsIGZvciBSTVJSIHJhbmdlICJFUk1SUlVfRk1UIlxuIiwKKyAgICAgICAgICAgICAgICAgICBF Uk1SUlVfQVJHKHVzZXJfcm1ycnNbaV0pKTsKKyAgICAgICAgICAgIHNjb3BlX2RldmljZXNfZnJl ZSgmcm1yci0+c2NvcGUpOworICAgICAgICAgICAgeGZyZWUocm1ycik7CisgICAgICAgICAgICBj b250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJtcnItPnNlZ21lbnQgPSBzZWc7CisgICAg ICAgIHJtcnItPmJhc2VfYWRkcmVzcyA9IHBmbl90b19wYWRkcih1c2VyX3JtcnJzW2ldLmJhc2Vf cGZuKTsKKyAgICAgICAgcm1yci0+ZW5kX2FkZHJlc3MgPSBwZm5fdG9fcGFkZHIodXNlcl9ybXJy c1tpXS5lbmRfcGZuICsgMSk7CisgICAgICAgIHJtcnItPnNjb3BlLmRldmljZXNfY250ID0gdXNl cl9ybXJyc1tpXS5kZXZfY291bnQ7CisKKyAgICAgICAgaWYgKCByZWdpc3Rlcl9vbmVfcm1ycihy bXJyKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFZURFBSRUZJ WAorICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgcmVnaXN0ZXIgUk1NUiByYW5nZSAiRVJN UlJVX0ZNVCJcbiIsCisgICAgICAgICAgICAgICAgICAgRVJNUlJVX0FSRyh1c2VyX3JtcnJzW2ld KSk7CisgICAgICAgICAgICBzY29wZV9kZXZpY2VzX2ZyZWUoJnJtcnItPnNjb3BlKTsKKyAgICAg ICAgICAgIHhmcmVlKHJtcnIpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQor CiAjaW5jbHVkZSA8YXNtL3Rib290Lmg+CiAvKiBBQ1BJIHRhYmxlcyBtYXkgbm90IGJlIERNQSBw cm90ZWN0ZWQgYnkgdGJvb3QsIHNvIHVzZSBETUFSIGNvcHkgKi8KIC8qIFNJTklUIHNhdmVkIGlu IFNpbml0TWxlRGF0YSBpbiBUWFQgaGVhcCAod2hpY2ggaXMgRE1BIHByb3RlY3RlZCkgKi8KQEAg LTg2OCw2ICs5OTQsNyBAQCBpbnQgX19pbml0IGFjcGlfZG1hcl9pbml0KHZvaWQpCiB7CiAgICAg YWNwaV9waHlzaWNhbF9hZGRyZXNzIGRtYXJfYWRkcjsKICAgICBhY3BpX25hdGl2ZV91aW50IGRt YXJfbGVuOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIEFDUElfU1VDQ0VTUyhhY3BpX2dldF90 YWJsZV9waHlzKEFDUElfU0lHX0RNQVIsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmZG1hcl9hZGRyLCAmZG1hcl9sZW4pKSApCkBAIC04NzgsNyArMTAwNSwx MiBAQCBpbnQgX19pbml0IGFjcGlfZG1hcl9pbml0KHZvaWQpCiAgICAgICAgIGRtYXJfdGFibGUg PSBfX3ZhKGRtYXJfYWRkcik7CiAgICAgfQogCi0gICAgcmV0dXJuIHBhcnNlX2RtYXJfdGFibGUo YWNwaV9wYXJzZV9kbWFyKTsKKyAgICByZXQgPSBwYXJzZV9kbWFyX3RhYmxlKGFjcGlfcGFyc2Vf ZG1hcik7CisKKyAgICBpZiAoICFyZXQgKQorICAgICAgICByZXR1cm4gYWRkX3VzZXJfcm1ycigp OworCisgICAgcmV0dXJuIHJldDsKIH0KIAogdm9pZCBhY3BpX2RtYXJfcmVpbnN0YXRlKHZvaWQp CkBAIC05MzcsMyArMTA2OSw3MCBAQCBpbnQgaW50ZWxfaW9tbXVfZ2V0X3Jlc2VydmVkX2Rldmlj ZV9tZW1vcnkoaW9tbXVfZ3JkbV90ICpmdW5jLCB2b2lkICpjdHh0KQogCiAgICAgcmV0dXJuIDA7 CiB9CisKKy8qCisgKiBQYXJzZSBybXJyIFhlbiBjb21tYW5kIGxpbmUgb3B0aW9ucyBhbmQgYWRk IHBhcnNlZCBkZXZpY2VzIGFuZCByZWdpb25zIGludG8KKyAqIGFjcGlfcm1ycl91bml0IGxpc3Qg dG8gbWFwcGVkIGFzIFJNUlJzIHBhcnNlZCBmcm9tIEFDUEkuCisgKiBGb3JtYXQ6CisgKiBybXJy PXN0YXJ0PC1lbmQ+PVtzMV1iZGYxWyxbczFdYmRmMlssLi4uXV07c3RhcnQ8LWVuZD49W3MyXWJk ZjFbLFtzMl1iZGYyWywuLi5dXQorICogSWYgdGhlIHNlZ21lbnQgb2YgdGhlIGZpcnN0IGRldmlj ZSBpcyBub3Qgc3BlY2lmaWVkLAorICogc2VnbWVudCB6ZXJvIHdpbGwgYmUgdXNlZC4KKyAqIElm IG90aGVyIHNlZ21lbnRzIGFyZSBub3Qgc3BlY2lmaWVkLCBmaXJzdCBkZXZpY2Ugc2VnbWVudCB3 aWxsIGJlIHVzZWQuCisgKiBJZiBhIHNlZ21lbnQgaXMgc3BlY2lmaWVkIGZvciBvdGhlciB0aGFu IHRoZSBmaXJzdCBkZXZpY2UsIGFuZCBpdCBkb2VzIG5vdAorICogbWF0Y2ggdGhlIG9uZSBzcGVj aWZpZWQgZm9yIHRoZSBmaXJzdCBvbmUsIGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuCisgKi8K K3N0YXRpYyB2b2lkIF9faW5pdCBwYXJzZV9ybXJyX3BhcmFtKGNvbnN0IGNoYXIgKnN0cikKK3sK KyAgICBjb25zdCBjaGFyICpzID0gc3RyLCAqY3VyLCAqc3RtcDsKKyAgICB1bnNpZ25lZCBpbnQg c2VnLCBidXMsIGRldiwgZnVuYywgZGV2X2NvdW50OworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQs IGVuZDsKKworICAgIGRvIHsKKyAgICAgICAgc3RhcnQgPSBzaW1wbGVfc3RydG91bChjdXIgPSBz LCAmcywgMCk7CisgICAgICAgIGlmICggY3VyID09IHMgKQorICAgICAgICAgICAgYnJlYWs7CisK KyAgICAgICAgaWYgKCAqcyA9PSAnLScgKQorICAgICAgICB7CisgICAgICAgICAgICBlbmQgPSBz aW1wbGVfc3RydG91bChjdXIgPSBzICsgMSwgJnMsIDApOworICAgICAgICAgICAgaWYgKCBjdXIg PT0gcyApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor ICAgICAgICAgICAgZW5kID0gc3RhcnQ7CisKKyAgICAgICAgdXNlcl9ybXJyc1tucl9ybXJyXS5i YXNlX3BmbiA9IHN0YXJ0OworICAgICAgICB1c2VyX3JtcnJzW25yX3JtcnJdLmVuZF9wZm4gPSBl bmQ7CisKKyAgICAgICAgaWYgKCAqcyAhPSAnPScgKQorICAgICAgICAgICAgY29udGludWU7CisK KyAgICAgICAgZG8geworICAgICAgICAgICAgYm9vbCBkZWZfc2VnID0gZmFsc2U7CisKKyAgICAg ICAgICAgIHN0bXAgPSBwYXJzZV9wY2lfc2VnKHMgKyAxLCAmc2VnLCAmYnVzLCAmZGV2LCAmZnVu YywgJmRlZl9zZWcpOworICAgICAgICAgICAgaWYgKCAhc3RtcCApCisgICAgICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBOb3Qgc3BlY2lmaWVkLgor ICAgICAgICAgICAgICogU2VnbWVudCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggb25lIGZyb20gZmly c3QgZGV2aWNlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIHVzZXJfcm1ycnNb bnJfcm1ycl0uZGV2X2NvdW50ICYmIGRlZl9zZWcgKQorICAgICAgICAgICAgICAgIHNlZyA9IFBD SV9TRUcodXNlcl9ybXJyc1tucl9ybXJyXS5zYmRmWzBdKTsKKworICAgICAgICAgICAgLyogS2Vl cCBzYmRmJ3MgZXZlbiBpZiB0aGV5IGRpZmZlciBhbmQgbGF0ZXIgcmVwb3J0IGFuIGVycm9yLiAq LworICAgICAgICAgICAgZGV2X2NvdW50ID0gdXNlcl9ybXJyc1tucl9ybXJyXS5kZXZfY291bnQ7 CisgICAgICAgICAgICB1c2VyX3JtcnJzW25yX3JtcnJdLnNiZGZbZGV2X2NvdW50XSA9IFBDSV9T QkRGKHNlZywgYnVzLCBkZXYsIGZ1bmMpOworCisgICAgICAgICAgICB1c2VyX3JtcnJzW25yX3Jt cnJdLmRldl9jb3VudCsrOworICAgICAgICAgICAgcyA9IHN0bXA7CisgICAgICAgIH0gd2hpbGUg KCAqcyA9PSAnLCcgJiYKKyAgICAgICAgICAgICAgICAgIHVzZXJfcm1ycnNbbnJfcm1ycl0uZGV2 X2NvdW50IDwgTUFYX0VYVFJBX1JNUlJfREVWICk7CisKKyAgICAgICAgaWYgKCB1c2VyX3JtcnJz W25yX3JtcnJdLmRldl9jb3VudCApCisgICAgICAgICAgICBucl9ybXJyKys7CisKKyAgICB9IHdo aWxlICggKnMrKyA9PSAnOycgJiYgbnJfcm1yciA8IE1BWF9FWFRSQV9STVJSICk7Cit9CitjdXN0 b21fcGFyYW0oInJtcnIiLCBwYXJzZV9ybXJyX3BhcmFtKTsKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=