From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v4 3/9] xen/balloon: Share common memory reservation routines Date: Fri, 15 Jun 2018 09:27:47 +0300 Message-ID: <20180615062753.9229-4-andr2000@gmail.com> References: <20180615062753.9229-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x242.google.com (mail-lf0-x242.google.com [IPv6:2a00:1450:4010:c07::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9A9716E984 for ; Fri, 15 Jun 2018 06:28:08 +0000 (UTC) Received: by mail-lf0-x242.google.com with SMTP id n15-v6so12965392lfn.10 for ; Thu, 14 Jun 2018 23:28:08 -0700 (PDT) In-Reply-To: <20180615062753.9229-1-andr2000@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, daniel.vetter@intel.com, dongwon.kim@intel.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKTWVtb3J5IHtpbmNyZWFzZXxkZWNyZWFzZX1fcmVzZXJ2YXRpb24gYW5kIFZBIG1h cHBpbmdzIHVwZGF0ZS9yZXNldApjb2RlIHVzZWQgaW4gYmFsbG9vbiBkcml2ZXIgY2FuIGJlIG1h ZGUgY29tbW9uLCBzbyBvdGhlciBkcml2ZXJzIGNhbgphbHNvIHJlLXVzZSB0aGUgc2FtZSBmdW5j dGlvbmFsaXR5IHdpdGhvdXQgb3Blbi1jb2RpbmcuCkNyZWF0ZSBhIGRlZGljYXRlZCBmaWxlIGZv ciB0aGUgc2hhcmVkIGNvZGUgYW5kIGV4cG9ydCBjb3JyZXNwb25kaW5nCnN5bWJvbHMgZm9yIG90 aGVyIGtlcm5lbCBtb2R1bGVzLgoKU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVu a28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgotLS0KIGRyaXZlcnMveGVuL01h a2VmaWxlICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMveGVuL2JhbGxvb24uYyAgICAgICAgIHwg IDc1ICsrLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy94ZW4vbWVtLXJlc2VydmF0aW9uLmMg fCAxMTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS94ZW4vbWVt LXJlc2VydmF0aW9uLmggfCAgNTkgKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwg MTg0IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMveGVuL21lbS1yZXNlcnZhdGlvbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94 ZW4vbWVtLXJlc2VydmF0aW9uLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9NYWtlZmlsZSBi L2RyaXZlcnMveGVuL01ha2VmaWxlCmluZGV4IDQ1MWU4MzNmNTkzMS4uM2M4N2IwYzNhY2E2IDEw MDY0NAotLS0gYS9kcml2ZXJzL3hlbi9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3hlbi9NYWtlZmls ZQpAQCAtMiw2ICsyLDcgQEAKIG9iai0kKENPTkZJR19IT1RQTFVHX0NQVSkJCSs9IGNwdV9ob3Rw bHVnLm8KIG9iai0kKENPTkZJR19YODYpCQkJKz0gZmFsbGJhY2subwogb2JqLXkJKz0gZ3JhbnQt dGFibGUubyBmZWF0dXJlcy5vIGJhbGxvb24ubyBtYW5hZ2UubyBwcmVlbXB0Lm8gdGltZS5vCitv YmoteQkrPSBtZW0tcmVzZXJ2YXRpb24ubwogb2JqLXkJKz0gZXZlbnRzLwogb2JqLXkJKz0geGVu YnVzLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9iYWxsb29uLmMgYi9kcml2ZXJzL3hlbi9i YWxsb29uLmMKaW5kZXggMDY1ZjBiNjA3MzczLi5lMTJiYjI1NjAzNmYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMveGVuL2JhbGxvb24uYworKysgYi9kcml2ZXJzL3hlbi9iYWxsb29uLmMKQEAgLTcxLDYg KzcxLDcgQEAKICNpbmNsdWRlIDx4ZW4vYmFsbG9vbi5oPgogI2luY2x1ZGUgPHhlbi9mZWF0dXJl cy5oPgogI2luY2x1ZGUgPHhlbi9wYWdlLmg+CisjaW5jbHVkZSA8eGVuL21lbS1yZXNlcnZhdGlv bi5oPgogCiBzdGF0aWMgaW50IHhlbl9ob3RwbHVnX3VucG9wdWxhdGVkOwogCkBAIC0xNTcsMTMg KzE1OCw2IEBAIHN0YXRpYyBERUNMQVJFX0RFTEFZRURfV09SSyhiYWxsb29uX3dvcmtlciwgYmFs bG9vbl9wcm9jZXNzKTsKICNkZWZpbmUgR0ZQX0JBTExPT04gXAogCShHRlBfSElHSFVTRVIgfCBf X0dGUF9OT1dBUk4gfCBfX0dGUF9OT1JFVFJZIHwgX19HRlBfTk9NRU1BTExPQykKIAotc3RhdGlj IHZvaWQgc2NydWJfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKLXsKLSNpZmRlZiBDT05GSUdfWEVO X1NDUlVCX1BBR0VTCi0JY2xlYXJfaGlnaHBhZ2UocGFnZSk7Ci0jZW5kaWYKLX0KLQogLyogYmFs bG9vbl9hcHBlbmQ6IGFkZCB0aGUgZ2l2ZW4gcGFnZSB0byB0aGUgYmFsbG9vbi4gKi8KIHN0YXRp YyB2b2lkIF9fYmFsbG9vbl9hcHBlbmQoc3RydWN0IHBhZ2UgKnBhZ2UpCiB7CkBAIC00NjMsMTEg KzQ1Nyw2IEBAIHN0YXRpYyBlbnVtIGJwX3N0YXRlIGluY3JlYXNlX3Jlc2VydmF0aW9uKHVuc2ln bmVkIGxvbmcgbnJfcGFnZXMpCiAJaW50IHJjOwogCXVuc2lnbmVkIGxvbmcgaTsKIAlzdHJ1Y3Qg cGFnZSAgICpwYWdlOwotCXN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIHJlc2VydmF0aW9u ID0gewotCQkuYWRkcmVzc19iaXRzID0gMCwKLQkJLmV4dGVudF9vcmRlciA9IEVYVEVOVF9PUkRF UiwKLQkJLmRvbWlkICAgICAgICA9IERPTUlEX1NFTEYKLQl9OwogCiAJaWYgKG5yX3BhZ2VzID4g QVJSQVlfU0laRShmcmFtZV9saXN0KSkKIAkJbnJfcGFnZXMgPSBBUlJBWV9TSVpFKGZyYW1lX2xp c3QpOwpAQCAtNDc5LDE2ICs0NjgsMTEgQEAgc3RhdGljIGVudW0gYnBfc3RhdGUgaW5jcmVhc2Vf cmVzZXJ2YXRpb24odW5zaWduZWQgbG9uZyBucl9wYWdlcykKIAkJCWJyZWFrOwogCQl9CiAKLQkJ LyogWEVOTUVNX3BvcHVsYXRlX3BoeXNtYXAgcmVxdWlyZXMgYSBQRk4gYmFzZWQgb24gWGVuCi0J CSAqIGdyYW51bGFyaXR5LgotCQkgKi8KIAkJZnJhbWVfbGlzdFtpXSA9IHBhZ2VfdG9feGVuX3Bm bihwYWdlKTsKIAkJcGFnZSA9IGJhbGxvb25fbmV4dF9wYWdlKHBhZ2UpOwogCX0KIAotCXNldF94 ZW5fZ3Vlc3RfaGFuZGxlKHJlc2VydmF0aW9uLmV4dGVudF9zdGFydCwgZnJhbWVfbGlzdCk7Ci0J cmVzZXJ2YXRpb24ubnJfZXh0ZW50cyA9IG5yX3BhZ2VzOwotCXJjID0gSFlQRVJWSVNPUl9tZW1v cnlfb3AoWEVOTUVNX3BvcHVsYXRlX3BoeXNtYXAsICZyZXNlcnZhdGlvbik7CisJcmMgPSB4ZW5t ZW1fcmVzZXJ2YXRpb25faW5jcmVhc2UobnJfcGFnZXMsIGZyYW1lX2xpc3QpOwogCWlmIChyYyA8 PSAwKQogCQlyZXR1cm4gQlBfRUFHQUlOOwogCkBAIC00OTYsMjkgKzQ4MCw3IEBAIHN0YXRpYyBl bnVtIGJwX3N0YXRlIGluY3JlYXNlX3Jlc2VydmF0aW9uKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMp CiAJCXBhZ2UgPSBiYWxsb29uX3JldHJpZXZlKGZhbHNlKTsKIAkJQlVHX09OKHBhZ2UgPT0gTlVM TCk7CiAKLSNpZmRlZiBDT05GSUdfWEVOX0hBVkVfUFZNTVUKLQkJLyoKLQkJICogV2UgZG9uJ3Qg c3VwcG9ydCBQViBNTVUgd2hlbiBMaW51eCBhbmQgWGVuIGlzIHVzaW5nCi0JCSAqIGRpZmZlcmVu dCBwYWdlIGdyYW51bGFyaXR5LgotCQkgKi8KLQkJQlVJTERfQlVHX09OKFhFTl9QQUdFX1NJWkUg IT0gUEFHRV9TSVpFKTsKLQotCQlpZiAoIXhlbl9mZWF0dXJlKFhFTkZFQVRfYXV0b190cmFuc2xh dGVkX3BoeXNtYXApKSB7Ci0JCQl1bnNpZ25lZCBsb25nIHBmbiA9IHBhZ2VfdG9fcGZuKHBhZ2Up OwotCi0JCQlzZXRfcGh5c190b19tYWNoaW5lKHBmbiwgZnJhbWVfbGlzdFtpXSk7Ci0KLQkJCS8q IExpbmsgYmFjayBpbnRvIHRoZSBwYWdlIHRhYmxlcyBpZiBub3QgaGlnaG1lbS4gKi8KLQkJCWlm ICghUGFnZUhpZ2hNZW0ocGFnZSkpIHsKLQkJCQlpbnQgcmV0OwotCQkJCXJldCA9IEhZUEVSVklT T1JfdXBkYXRlX3ZhX21hcHBpbmcoCi0JCQkJCQkodW5zaWduZWQgbG9uZylfX3ZhKHBmbiA8PCBQ QUdFX1NISUZUKSwKLQkJCQkJCW1mbl9wdGUoZnJhbWVfbGlzdFtpXSwgUEFHRV9LRVJORUwpLAot CQkJCQkJMCk7Ci0JCQkJQlVHX09OKHJldCk7Ci0JCQl9Ci0JCX0KLSNlbmRpZgorCQl4ZW5tZW1f cmVzZXJ2YXRpb25fdmFfbWFwcGluZ191cGRhdGUoMSwgJnBhZ2UsICZmcmFtZV9saXN0W2ldKTsK IAogCQkvKiBSZWxpbnF1aXNoIHRoZSBwYWdlIGJhY2sgdG8gdGhlIGFsbG9jYXRvci4gKi8KIAkJ ZnJlZV9yZXNlcnZlZF9wYWdlKHBhZ2UpOwpAQCAtNTM1LDExICs0OTcsNiBAQCBzdGF0aWMgZW51 bSBicF9zdGF0ZSBkZWNyZWFzZV9yZXNlcnZhdGlvbih1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBn ZnBfdCBnZnApCiAJdW5zaWduZWQgbG9uZyBpOwogCXN0cnVjdCBwYWdlICpwYWdlLCAqdG1wOwog CWludCByZXQ7Ci0Jc3RydWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24gcmVzZXJ2YXRpb24gPSB7 Ci0JCS5hZGRyZXNzX2JpdHMgPSAwLAotCQkuZXh0ZW50X29yZGVyID0gRVhURU5UX09SREVSLAot CQkuZG9taWQgICAgICAgID0gRE9NSURfU0VMRgotCX07CiAJTElTVF9IRUFEKHBhZ2VzKTsKIAog CWlmIChucl9wYWdlcyA+IEFSUkFZX1NJWkUoZnJhbWVfbGlzdCkpCkBAIC01NTMsNyArNTEwLDcg QEAgc3RhdGljIGVudW0gYnBfc3RhdGUgZGVjcmVhc2VfcmVzZXJ2YXRpb24odW5zaWduZWQgbG9u ZyBucl9wYWdlcywgZ2ZwX3QgZ2ZwKQogCQkJYnJlYWs7CiAJCX0KIAkJYWRqdXN0X21hbmFnZWRf cGFnZV9jb3VudChwYWdlLCAtMSk7Ci0JCXNjcnViX3BhZ2UocGFnZSk7CisJCXhlbm1lbV9yZXNl cnZhdGlvbl9zY3J1Yl9wYWdlKHBhZ2UpOwogCQlsaXN0X2FkZCgmcGFnZS0+bHJ1LCAmcGFnZXMp OwogCX0KIApAQCAtNTcyLDI4ICs1MjksMTAgQEAgc3RhdGljIGVudW0gYnBfc3RhdGUgZGVjcmVh c2VfcmVzZXJ2YXRpb24odW5zaWduZWQgbG9uZyBucl9wYWdlcywgZ2ZwX3QgZ2ZwKQogCSAqLwog CWkgPSAwOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwYWdlLCB0bXAsICZwYWdlcywgbHJ1 KSB7Ci0JCS8qIFhFTk1FTV9kZWNyZWFzZV9yZXNlcnZhdGlvbiByZXF1aXJlcyBhIEdGTiAqLwog CQlmcmFtZV9saXN0W2krK10gPSB4ZW5fcGFnZV90b19nZm4ocGFnZSk7CiAKLSNpZmRlZiBDT05G SUdfWEVOX0hBVkVfUFZNTVUKLQkJLyoKLQkJICogV2UgZG9uJ3Qgc3VwcG9ydCBQViBNTVUgd2hl biBMaW51eCBhbmQgWGVuIGlzIHVzaW5nCi0JCSAqIGRpZmZlcmVudCBwYWdlIGdyYW51bGFyaXR5 LgotCQkgKi8KLQkJQlVJTERfQlVHX09OKFhFTl9QQUdFX1NJWkUgIT0gUEFHRV9TSVpFKTsKLQot CQlpZiAoIXhlbl9mZWF0dXJlKFhFTkZFQVRfYXV0b190cmFuc2xhdGVkX3BoeXNtYXApKSB7Ci0J CQl1bnNpZ25lZCBsb25nIHBmbiA9IHBhZ2VfdG9fcGZuKHBhZ2UpOworCQl4ZW5tZW1fcmVzZXJ2 YXRpb25fdmFfbWFwcGluZ19yZXNldCgxLCAmcGFnZSk7CiAKLQkJCWlmICghUGFnZUhpZ2hNZW0o cGFnZSkpIHsKLQkJCQlyZXQgPSBIWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nKAotCQkJCQkJ KHVuc2lnbmVkIGxvbmcpX192YShwZm4gPDwgUEFHRV9TSElGVCksCi0JCQkJCQlfX3B0ZV9tYSgw KSwgMCk7Ci0JCQkJQlVHX09OKHJldCk7Ci0JCQl9Ci0JCQlfX3NldF9waHlzX3RvX21hY2hpbmUo cGZuLCBJTlZBTElEX1AyTV9FTlRSWSk7Ci0JCX0KLSNlbmRpZgogCQlsaXN0X2RlbCgmcGFnZS0+ bHJ1KTsKIAogCQliYWxsb29uX2FwcGVuZChwYWdlKTsKQEAgLTYwMSw5ICs1NDAsNyBAQCBzdGF0 aWMgZW51bSBicF9zdGF0ZSBkZWNyZWFzZV9yZXNlcnZhdGlvbih1bnNpZ25lZCBsb25nIG5yX3Bh Z2VzLCBnZnBfdCBnZnApCiAKIAlmbHVzaF90bGJfYWxsKCk7CiAKLQlzZXRfeGVuX2d1ZXN0X2hh bmRsZShyZXNlcnZhdGlvbi5leHRlbnRfc3RhcnQsIGZyYW1lX2xpc3QpOwotCXJlc2VydmF0aW9u Lm5yX2V4dGVudHMgICA9IG5yX3BhZ2VzOwotCXJldCA9IEhZUEVSVklTT1JfbWVtb3J5X29wKFhF Tk1FTV9kZWNyZWFzZV9yZXNlcnZhdGlvbiwgJnJlc2VydmF0aW9uKTsKKwlyZXQgPSB4ZW5tZW1f cmVzZXJ2YXRpb25fZGVjcmVhc2UobnJfcGFnZXMsIGZyYW1lX2xpc3QpOwogCUJVR19PTihyZXQg IT0gbnJfcGFnZXMpOwogCiAJYmFsbG9vbl9zdGF0cy5jdXJyZW50X3BhZ2VzIC09IG5yX3BhZ2Vz OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vbWVtLXJlc2VydmF0aW9uLmMgYi9kcml2ZXJzL3hl bi9tZW0tcmVzZXJ2YXRpb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjA4NDc5OWM2MTgwZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMveGVuL21lbS1yZXNl cnZhdGlvbi5jCkBAIC0wLDAgKzEsMTE4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBYZW4gbWVtb3J5IHJlc2VydmF0 aW9uIHV0aWxpdGllcy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMsIEIgRHJhZ292aWMKKyAq IENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBNIFdpbGxpYW1zb24sIEsgRnJhc2VyCisgKiBDb3B5 cmlnaHQgKGMpIDIwMDUgRGFuIE0uIFNtaXRoLCBJQk0gQ29ycG9yYXRpb24KKyAqIENvcHlyaWdo dCAoYykgMjAxMCBEYW5pZWwgS2lwZXIKKyAqIENvcHlyaWdodCAoYykgMjAxOCBPbGVrc2FuZHIg QW5kcnVzaGNoZW5rbywgRVBBTSBTeXN0ZW1zIEluYy4KKyAqLworCisjaW5jbHVkZSA8YXNtL3hl bi9oeXBlcmNhbGwuaD4KKworI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvbWVtb3J5Lmg+CisjaW5j bHVkZSA8eGVuL21lbS1yZXNlcnZhdGlvbi5oPgorCisvKgorICogVXNlIG9uZSBleHRlbnQgcGVy IFBBR0VfU0laRSB0byBhdm9pZCB0byBicmVhayBkb3duIHRoZSBwYWdlIGludG8KKyAqIG11bHRp cGxlIGZyYW1lLgorICovCisjZGVmaW5lIEVYVEVOVF9PUkRFUiAoZmxzKFhFTl9QRk5fUEVSX1BB R0UpIC0gMSkKKworI2lmZGVmIENPTkZJR19YRU5fSEFWRV9QVk1NVQordm9pZCBfX3hlbm1lbV9y ZXNlcnZhdGlvbl92YV9tYXBwaW5nX3VwZGF0ZSh1bnNpZ25lZCBsb25nIGNvdW50LAorCQkJCQkg ICAgc3RydWN0IHBhZ2UgKipwYWdlcywKKwkJCQkJICAgIHhlbl9wZm5fdCAqZnJhbWVzKQorewor CWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJc3RydWN0IHBhZ2Ug KnBhZ2UgPSBwYWdlc1tpXTsKKwkJdW5zaWduZWQgbG9uZyBwZm4gPSBwYWdlX3RvX3BmbihwYWdl KTsKKworCQlCVUdfT04oIXBhZ2UpOworCisJCS8qCisJCSAqIFdlIGRvbid0IHN1cHBvcnQgUFYg TU1VIHdoZW4gTGludXggYW5kIFhlbiBpcyB1c2luZworCQkgKiBkaWZmZXJlbnQgcGFnZSBncmFu dWxhcml0eS4KKwkJICovCisJCUJVSUxEX0JVR19PTihYRU5fUEFHRV9TSVpFICE9IFBBR0VfU0la RSk7CisKKwkJc2V0X3BoeXNfdG9fbWFjaGluZShwZm4sIGZyYW1lc1tpXSk7CisKKwkJLyogTGlu ayBiYWNrIGludG8gdGhlIHBhZ2UgdGFibGVzIGlmIG5vdCBoaWdobWVtLiAqLworCQlpZiAoIVBh Z2VIaWdoTWVtKHBhZ2UpKSB7CisJCQlpbnQgcmV0OworCisJCQlyZXQgPSBIWVBFUlZJU09SX3Vw ZGF0ZV92YV9tYXBwaW5nKAorCQkJCQkodW5zaWduZWQgbG9uZylfX3ZhKHBmbiA8PCBQQUdFX1NI SUZUKSwKKwkJCQkJbWZuX3B0ZShmcmFtZXNbaV0sIFBBR0VfS0VSTkVMKSwKKwkJCQkJMCk7CisJ CQlCVUdfT04ocmV0KTsKKwkJfQorCX0KK30KK0VYUE9SVF9TWU1CT0xfR1BMKF9feGVubWVtX3Jl c2VydmF0aW9uX3ZhX21hcHBpbmdfdXBkYXRlKTsKKwordm9pZCBfX3hlbm1lbV9yZXNlcnZhdGlv bl92YV9tYXBwaW5nX3Jlc2V0KHVuc2lnbmVkIGxvbmcgY291bnQsCisJCQkJCSAgIHN0cnVjdCBw YWdlICoqcGFnZXMpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykg eworCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHBhZ2VzW2ldOworCQl1bnNpZ25lZCBsb25nIHBmbiA9 IHBhZ2VfdG9fcGZuKHBhZ2UpOworCisJCS8qCisJCSAqIFdlIGRvbid0IHN1cHBvcnQgUFYgTU1V IHdoZW4gTGludXggYW5kIFhlbiBhcmUgdXNpbmcKKwkJICogZGlmZmVyZW50IHBhZ2UgZ3JhbnVs YXJpdHkuCisJCSAqLworCQlCVUlMRF9CVUdfT04oWEVOX1BBR0VfU0laRSAhPSBQQUdFX1NJWkUp OworCisJCWlmICghUGFnZUhpZ2hNZW0ocGFnZSkpIHsKKwkJCWludCByZXQ7CisKKwkJCXJldCA9 IEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoCisJCQkJCSh1bnNpZ25lZCBsb25nKV9fdmEo cGZuIDw8IFBBR0VfU0hJRlQpLAorCQkJCQlfX3B0ZV9tYSgwKSwgMCk7CisJCQlCVUdfT04ocmV0 KTsKKwkJfQorCQlfX3NldF9waHlzX3RvX21hY2hpbmUocGZuLCBJTlZBTElEX1AyTV9FTlRSWSk7 CisJfQorfQorRVhQT1JUX1NZTUJPTF9HUEwoX194ZW5tZW1fcmVzZXJ2YXRpb25fdmFfbWFwcGlu Z19yZXNldCk7CisjZW5kaWYgLyogQ09ORklHX1hFTl9IQVZFX1BWTU1VICovCisKKy8qIEBmcmFt ZXMgaXMgYW4gYXJyYXkgb2YgUEZOcyAqLworaW50IHhlbm1lbV9yZXNlcnZhdGlvbl9pbmNyZWFz ZShpbnQgY291bnQsIHhlbl9wZm5fdCAqZnJhbWVzKQoreworCXN0cnVjdCB4ZW5fbWVtb3J5X3Jl c2VydmF0aW9uIHJlc2VydmF0aW9uID0geworCQkuYWRkcmVzc19iaXRzID0gMCwKKwkJLmV4dGVu dF9vcmRlciA9IEVYVEVOVF9PUkRFUiwKKwkJLmRvbWlkICAgICAgICA9IERPTUlEX1NFTEYKKwl9 OworCisJLyogWEVOTUVNX3BvcHVsYXRlX3BoeXNtYXAgcmVxdWlyZXMgYSBQRk4gYmFzZWQgb24g WGVuIGdyYW51bGFyaXR5LiAqLworCXNldF94ZW5fZ3Vlc3RfaGFuZGxlKHJlc2VydmF0aW9uLmV4 dGVudF9zdGFydCwgZnJhbWVzKTsKKwlyZXNlcnZhdGlvbi5ucl9leHRlbnRzID0gY291bnQ7CisJ cmV0dXJuIEhZUEVSVklTT1JfbWVtb3J5X29wKFhFTk1FTV9wb3B1bGF0ZV9waHlzbWFwLCAmcmVz ZXJ2YXRpb24pOworfQorRVhQT1JUX1NZTUJPTF9HUEwoeGVubWVtX3Jlc2VydmF0aW9uX2luY3Jl YXNlKTsKKworLyogQGZyYW1lcyBpcyBhbiBhcnJheSBvZiBHRk5zICovCitpbnQgeGVubWVtX3Jl c2VydmF0aW9uX2RlY3JlYXNlKGludCBjb3VudCwgeGVuX3Bmbl90ICpmcmFtZXMpCit7CisJc3Ry dWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24gcmVzZXJ2YXRpb24gPSB7CisJCS5hZGRyZXNzX2Jp dHMgPSAwLAorCQkuZXh0ZW50X29yZGVyID0gRVhURU5UX09SREVSLAorCQkuZG9taWQgICAgICAg ID0gRE9NSURfU0VMRgorCX07CisKKwkvKiBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24gcmVx dWlyZXMgYSBHRk4gKi8KKwlzZXRfeGVuX2d1ZXN0X2hhbmRsZShyZXNlcnZhdGlvbi5leHRlbnRf c3RhcnQsIGZyYW1lcyk7CisJcmVzZXJ2YXRpb24ubnJfZXh0ZW50cyA9IGNvdW50OworCXJldHVy biBIWVBFUlZJU09SX21lbW9yeV9vcChYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24sICZyZXNl cnZhdGlvbik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh4ZW5tZW1fcmVzZXJ2YXRpb25fZGVjcmVh c2UpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vbWVtLXJlc2VydmF0aW9uLmggYi9pbmNsdWRl L3hlbi9tZW0tcmVzZXJ2YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjgwYjUyYjQ5NDVlOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL21lbS1y ZXNlcnZhdGlvbi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wICovCisKKy8qCisgKiBYZW4gbWVtb3J5IHJlc2VydmF0aW9uIHV0aWxpdGllcy4K KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMsIEIgRHJhZ292aWMKKyAqIENvcHlyaWdodCAoYykg MjAwMy0yMDA0LCBNIFdpbGxpYW1zb24sIEsgRnJhc2VyCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUg RGFuIE0uIFNtaXRoLCBJQk0gQ29ycG9yYXRpb24KKyAqIENvcHlyaWdodCAoYykgMjAxMCBEYW5p ZWwgS2lwZXIKKyAqIENvcHlyaWdodCAoYykgMjAxOCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbywg RVBBTSBTeXN0ZW1zIEluYy4KKyAqLworCisjaWZuZGVmIF9YRU5NRU1fUkVTRVJWQVRJT05fSAor I2RlZmluZSBfWEVOTUVNX1JFU0VSVkFUSU9OX0gKKworI2luY2x1ZGUgPGxpbnV4L2hpZ2htZW0u aD4KKworI2luY2x1ZGUgPHhlbi9wYWdlLmg+CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB4ZW5tZW1f cmVzZXJ2YXRpb25fc2NydWJfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sKKyNpZmRlZiBDT05G SUdfWEVOX1NDUlVCX1BBR0VTCisJY2xlYXJfaGlnaHBhZ2UocGFnZSk7CisjZW5kaWYKK30KKwor I2lmZGVmIENPTkZJR19YRU5fSEFWRV9QVk1NVQordm9pZCBfX3hlbm1lbV9yZXNlcnZhdGlvbl92 YV9tYXBwaW5nX3VwZGF0ZSh1bnNpZ25lZCBsb25nIGNvdW50LAorCQkJCQkgICAgc3RydWN0IHBh Z2UgKipwYWdlcywKKwkJCQkJICAgIHhlbl9wZm5fdCAqZnJhbWVzKTsKKwordm9pZCBfX3hlbm1l bV9yZXNlcnZhdGlvbl92YV9tYXBwaW5nX3Jlc2V0KHVuc2lnbmVkIGxvbmcgY291bnQsCisJCQkJ CSAgIHN0cnVjdCBwYWdlICoqcGFnZXMpOworI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgdm9pZCB4 ZW5tZW1fcmVzZXJ2YXRpb25fdmFfbWFwcGluZ191cGRhdGUodW5zaWduZWQgbG9uZyBjb3VudCwK KwkJCQkJCQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkJCQkJCXhlbl9wZm5fdCAqZnJhbWVzKQor eworI2lmZGVmIENPTkZJR19YRU5fSEFWRV9QVk1NVQorCWlmICgheGVuX2ZlYXR1cmUoWEVORkVB VF9hdXRvX3RyYW5zbGF0ZWRfcGh5c21hcCkpCisJCV9feGVubWVtX3Jlc2VydmF0aW9uX3ZhX21h cHBpbmdfdXBkYXRlKGNvdW50LCBwYWdlcywgZnJhbWVzKTsKKyNlbmRpZgorfQorCitzdGF0aWMg aW5saW5lIHZvaWQgeGVubWVtX3Jlc2VydmF0aW9uX3ZhX21hcHBpbmdfcmVzZXQodW5zaWduZWQg bG9uZyBjb3VudCwKKwkJCQkJCSAgICAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQoreworI2lmZGVm IENPTkZJR19YRU5fSEFWRV9QVk1NVQorCWlmICgheGVuX2ZlYXR1cmUoWEVORkVBVF9hdXRvX3Ry YW5zbGF0ZWRfcGh5c21hcCkpCisJCV9feGVubWVtX3Jlc2VydmF0aW9uX3ZhX21hcHBpbmdfcmVz ZXQoY291bnQsIHBhZ2VzKTsKKyNlbmRpZgorfQorCitpbnQgeGVubWVtX3Jlc2VydmF0aW9uX2lu Y3JlYXNlKGludCBjb3VudCwgeGVuX3Bmbl90ICpmcmFtZXMpOworCitpbnQgeGVubWVtX3Jlc2Vy dmF0aW9uX2RlY3JlYXNlKGludCBjb3VudCwgeGVuX3Bmbl90ICpmcmFtZXMpOworCisjZW5kaWYK LS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==