From mboxrd@z Thu Jan 1 00:00:00 1970 From: Akshay Jaggi Subject: [PATCH] gnttab: Add gntdev device mappings for FreeBSD Date: Thu, 4 Aug 2016 18:23:51 +0530 Message-ID: <1470315231-12966-1-git-send-email-akshay1994.leo@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bVIAw-0004kI-2d for xen-devel@lists.xenproject.org; Thu, 04 Aug 2016 12:55:02 +0000 Received: by mail-pa0-f67.google.com with SMTP id q2so17265862pap.0 for ; Thu, 04 Aug 2016 05:55:00 -0700 (PDT) List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , royger@freebsd.org, Ian Jackson , Tim Deegan , Jan Beulich , Akshay Jaggi List-Id: xen-devel@lists.xenproject.org QWRkIGdyYW50IHRhYmxlIHVzZXJzcGFjZSBkZXZpY2UgbWFwcGluZ3MgZm9yCkZyZWVCU0QgKGVu YWJsZXMgc3VwcG9ydCBmb3IgcWRpc2sgYmFja2VuZApvbiBGcmVlQlNEIERvbTApLgoKU2lnbmVk LW9mZi1ieTogQWtzaGF5IEphZ2dpIDxha3NoYXkxOTk0Lmxlb0BnbWFpbC5jb20+Ci0tLQogdG9v bHMvaW5jbHVkZS94ZW4tc3lzL0ZyZWVCU0QvZ250ZGV2LmggfCAxMTggKysrKysrKysrKysrCiB0 b29scy9saWJzL2dudHRhYi9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMiArLQogdG9vbHMvbGli cy9nbnR0YWIvZnJlZWJzZC5jICAgICAgICAgICAgfCAzMzUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQ1NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvaW5jbHVkZS94ZW4tc3lzL0ZyZWVCU0Qv Z250ZGV2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2dudHRhYi9mcmVlYnNkLmMK CmRpZmYgLS1naXQgYS90b29scy9pbmNsdWRlL3hlbi1zeXMvRnJlZUJTRC9nbnRkZXYuaCBiL3Rv b2xzL2luY2x1ZGUveGVuLXN5cy9GcmVlQlNEL2dudGRldi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjFkMDljNWQKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9pbmNsdWRl L3hlbi1zeXMvRnJlZUJTRC9nbnRkZXYuaApAQCAtMCwwICsxLDExOCBAQAorLyotCisgKiBDb3B5 cmlnaHQgKGMpIDIwMTYgQWtzaGF5IEphZ2dpIDxqYWdnaUBGcmVlQlNELm9yZz4KKyAqIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVY UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBB TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0Yg VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dF VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O VFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0Yg VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog U1VDSCBEQU1BR0UuCisgKgorICogZ250ZGV2LmgKKyAqIAorICogSW50ZXJmYWNlIHRvIC9kZXYv eGVuL2dudGRldi4KKyAqIAorICovCisKKyNpZm5kZWYgX19YRU5fR05UREVWX0hfXworI2RlZmlu ZSBfX1hFTl9HTlRERVZfSF9fCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2RlZmluZSBJ T0NUTF9HTlRERVZfU0VUX1VOTUFQX05PVElGWQkJCQkJXAorCV9JT1coJ0UnLCAwLCBzdHJ1Y3Qg aW9jdGxfZ250ZGV2X3VubWFwX25vdGlmeSkKK3N0cnVjdCBpb2N0bF9nbnRkZXZfdW5tYXBfbm90 aWZ5IHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzICovCisgICAgdWludDY0X3QgaW5kZXg7CisgICAg dWludDMyX3QgYWN0aW9uOworICAgIHVpbnQzMl90IGV2ZW50X2NoYW5uZWxfcG9ydDsKK307CisK KyNkZWZpbmUgVU5NQVBfTk9USUZZX0NMRUFSX0JZVEUgMHgxCisjZGVmaW5lIFVOTUFQX05PVElG WV9TRU5EX0VWRU5UIDB4MgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tIEdyYW50IENyZWF0aW9u IElPQ1RMcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjZGVmaW5lIElP Q1RMX0dOVERFVl9BTExPQ19HUkVGCQkJCQkJXAorCV9JT1dSKCdFJywgMSwgc3RydWN0IGlvY3Rs X2dudGRldl9hbGxvY19ncmVmKQorc3RydWN0IGlvY3RsX2dudGRldl9hbGxvY19ncmVmIHsKKyAg ICAvKiBJTiBwYXJhbWV0ZXJzICovCisgICAgdWludDE2X3QgZG9taWQ7CisgICAgdWludDE2X3Qg ZmxhZ3M7CisgICAgdWludDMyX3QgY291bnQ7CisgICAgLyogT1VUIHBhcmFtZXRlcnMgKi8KKyAg ICB1aW50NjRfdCBpbmRleDsKKyAgICAvKiBWYXJpYWJsZSBPVVQgcGFyYW1ldGVyICovCisgICAg dWludDMyX3QgZ3JlZl9pZHNbMV07Cit9OworCisjZGVmaW5lIEdOVERFVl9BTExPQ19GTEFHX1dS SVRBQkxFIDEKKworI2RlZmluZSBJT0NUTF9HTlRERVZfREVBTExPQ19HUkVGCQkJCQlcCisJX0lP VygnRScsIDIsIHN0cnVjdCBpb2N0bF9nbnRkZXZfZGVhbGxvY19ncmVmKQorc3RydWN0IGlvY3Rs X2dudGRldl9kZWFsbG9jX2dyZWYgeworICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICB1aW50 NjRfdCBpbmRleDsKKyAgICB1aW50MzJfdCBjb3VudDsKK307CisKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0gR3JhbnQgQWNjZXNzaW5nIElPQ1RMcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSovCisKK3N0cnVjdCBpb2N0bF9nbnRkZXZfZ3JhbnRfcmVmIHsKKyAgICB1aW50MzJfdCBk b21pZDsKKyAgICB1aW50MzJfdCByZWY7Cit9OworCisjZGVmaW5lIElPQ1RMX0dOVERFVl9NQVBf R1JBTlRfUkVGCQkJCQlcCisJX0lPV1IoJ0UnLCAzLCBzdHJ1Y3QgaW9jdGxfZ250ZGV2X21hcF9n cmFudF9yZWYpCitzdHJ1Y3QgaW9jdGxfZ250ZGV2X21hcF9ncmFudF9yZWYgeworICAgIC8qIElO IHBhcmFtZXRlcnMgKi8KKyAgICB1aW50MzJfdCBjb3VudDsKKyAgICB1aW50MzJfdCBwYWQwOwor ICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCisgICAgdWludDY0X3QgaW5kZXg7CisgICAgLyogVmFy aWFibGUgSU4gcGFyYW1ldGVyICovCisgICAgc3RydWN0IGlvY3RsX2dudGRldl9ncmFudF9yZWYg cmVmc1sxXTsKK307CisKKyNkZWZpbmUgSU9DVExfR05UREVWX1VOTUFQX0dSQU5UX1JFRgkJCQkJ XAorCV9JT1coJ0UnLCA0LCBzdHJ1Y3QgaW9jdGxfZ250ZGV2X3VubWFwX2dyYW50X3JlZikKK3N0 cnVjdCBpb2N0bF9nbnRkZXZfdW5tYXBfZ3JhbnRfcmVmIHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJz ICovCisgICAgdWludDY0X3QgaW5kZXg7CisgICAgdWludDMyX3QgY291bnQ7Cit9OworCisjZGVm aW5lIElPQ1RMX0dOVERFVl9HRVRfT0ZGU0VUX0ZPUl9WQUREUgkJCQlcCisJX0lPV1IoJ0UnLCA1 LCBzdHJ1Y3QgaW9jdGxfZ250ZGV2X2dldF9vZmZzZXRfZm9yX3ZhZGRyKQorc3RydWN0IGlvY3Rs X2dudGRldl9nZXRfb2Zmc2V0X2Zvcl92YWRkciB7CisgICAgLyogSU4gcGFyYW1ldGVycyAqLwor ICAgIHVpbnQ2NF90IHZhZGRyOworICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCisgICAgdWludDY0 X3Qgb2Zmc2V0OworICAgIHVpbnQzMl90IGNvdW50OworfTsKKworI2RlZmluZSBJT0NUTF9HTlRE RVZfU0VUX01BWF9HUkFOVFMJCQkJCVwKKwlfSU9XKCdFJywgNiwgc3RydWN0IGlvY3RsX2dudGRl dl9zZXRfbWF4X2dyYW50cykKK3N0cnVjdCBpb2N0bF9nbnRkZXZfc2V0X21heF9ncmFudHMgewor ICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICB1aW50MzJfdCBjb3VudDsKK307CisKKyNlbmRp ZiAvKiBfX1hFTl9HTlRERVZfSF9fICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL2dudHRhYi9N YWtlZmlsZSBiL3Rvb2xzL2xpYnMvZ250dGFiL01ha2VmaWxlCmluZGV4IGFmNjQ1NDIuLjY5YmIy MDcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvZ250dGFiL01ha2VmaWxlCisrKyBiL3Rvb2xzL2xp YnMvZ250dGFiL01ha2VmaWxlCkBAIC0xNCw3ICsxNCw3IEBAIFNSQ1MtR05UU0hSICAgICAgICAg ICAgKz0gZ250c2hyX2NvcmUuYwogCiBTUkNTLSQoQ09ORklHX0xpbnV4KSAgICs9ICQoU1JDUy1H TlRUQUIpICQoU1JDUy1HTlRTSFIpIGxpbnV4LmMKIFNSQ1MtJChDT05GSUdfTWluaU9TKSAgKz0g JChTUkNTLUdOVFRBQikgZ250c2hyX3VuaW1wLmMgbWluaW9zLmMKLVNSQ1MtJChDT05GSUdfRnJl ZUJTRCkgKz0gZ250dGFiX3VuaW1wLmMgZ250c2hyX3VuaW1wLmMKK1NSQ1MtJChDT05GSUdfRnJl ZUJTRCkgKz0gJChTUkNTLUdOVFRBQikgJChTUkNTLUdOVFNIUikgZnJlZWJzZC5jCiBTUkNTLSQo Q09ORklHX1N1bk9TKSAgICs9IGdudHRhYl91bmltcC5jIGdudHNocl91bmltcC5jCiBTUkNTLSQo Q09ORklHX05ldEJTRCkgICs9IGdudHRhYl91bmltcC5jIGdudHNocl91bmltcC5jCiAKZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnMvZ250dGFiL2ZyZWVic2QuYyBiL3Rvb2xzL2xpYnMvZ250dGFiL2Zy ZWVic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWYwMjM4Ci0tLSAv ZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9nbnR0YWIvZnJlZWJzZC5jCkBAIC0wLDAgKzEsMzM1 IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDgsIEQgRyBNdXJyYXkgPERlcmVrLk11 cnJheUBjbC5jYW0uYWMudWs+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAxNywgQWtzaGF5IEph Z2dpIDxqYWdnaUBGcmVlQlNELm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOworICogdmVyc2lvbiAy LjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIFNwbGl0IG91dCBmcm9t IGxpbnV4LmMKKyAqLworCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgor I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlu dC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5j bHVkZSA8c3lzL21tYW4uaD4KKworI2luY2x1ZGUgPHhlbi9zeXMvZ250ZGV2Lmg+CisKKyNpbmNs dWRlICJwcml2YXRlLmgiCisKKyNkZWZpbmUgREVWWEVOICIvZGV2L3hlbi8iCisKKyNkZWZpbmUg Uk9VTkRVUChfeCxfdykgKCgodW5zaWduZWQgbG9uZykoX3gpKygxVUw8PChfdykpLTEpICYgfigo MVVMPDwoX3cpKS0xKSkKKworI2RlZmluZSBHVEVSUk9SKF9sLCBfZi4uLikgeHRsX2xvZyhfbCwg WFRMX0VSUk9SLCBlcnJubywgImdudHRhYiIsIF9mKQorI2RlZmluZSBHU0VSUk9SKF9sLCBfZi4u LikgeHRsX2xvZyhfbCwgWFRMX0VSUk9SLCBlcnJubywgImdudHNociIsIF9mKQorCisjZGVmaW5l IFBBR0VfU0hJRlQgICAgICAgICAgIDEyCisjZGVmaW5lIFBBR0VfU0laRSAgICAgICAgICAgICgx VUwgPDwgUEFHRV9TSElGVCkKKyNkZWZpbmUgUEFHRV9NQVNLICAgICAgICAgICAgKH4oUEFHRV9T SVpFLTEpKQorCisjaWZuZGVmIE9fQ0xPRVhFQworI2RlZmluZSBPX0NMT0VYRUMgMAorI2VuZGlm CisKK2ludCBvc2RlcF9nbnR0YWJfb3Blbih4ZW5nbnR0YWJfaGFuZGxlICp4Z3QpCit7CisgICAg aW50IGZkID0gb3BlbihERVZYRU4gImdudGRldiIsIE9fUkRXUnxPX0NMT0VYRUMpOworICAgIGlm ICggZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gLTE7CisgICAgeGd0LT5mZCA9IGZkOworICAg IHJldHVybiAwOworfQorCitpbnQgb3NkZXBfZ250dGFiX2Nsb3NlKHhlbmdudHRhYl9oYW5kbGUg KnhndCkKK3sKKyAgICBpZiAoIHhndC0+ZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gMDsKKwor ICAgIHJldHVybiBjbG9zZSh4Z3QtPmZkKTsKK30KKworaW50IG9zZGVwX2dudHRhYl9zZXRfbWF4 X2dyYW50cyh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsIHVpbnQzMl90IGNvdW50KQoreworICAgIGlu dCBmZCA9IHhndC0+ZmQsIHJjOworICAgIHN0cnVjdCBpb2N0bF9nbnRkZXZfc2V0X21heF9ncmFu dHMgbWF4X2dyYW50cyA9IHsgLmNvdW50ID0gY291bnQgfTsKKworICAgIHJjID0gaW9jdGwoZmQs IElPQ1RMX0dOVERFVl9TRVRfTUFYX0dSQU5UUywgJm1heF9ncmFudHMpOworICAgIGlmIChyYykg eworICAgICAgICAvKgorICAgICAgICAgKiBGcmVlQlNEIGtlcm5lbCBkb2Vzbid0IGltcGxlbWVu dCB0aGlzIElPQ1RMLAorICAgICAgICAgKiBzbyBpZ25vcmUgdGhlIHJlc3VsdGluZyBzcGVjaWZp YyBmYWlsdXJlLCBpZiBhbnkuCisgICAgICAgICAqLworICAgICAgICBpZiAoZXJybm8gPT0gRU5P VFRZKQorICAgICAgICAgICAgcmMgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBHVEVS Uk9SKHhndC0+bG9nZ2VyLCAiaW9jdGwgU0VUX01BWF9HUkFOVFMgZmFpbGVkIik7CisgICAgfQor CisgICAgcmV0dXJuIHJjOworfQorCit2b2lkICpvc2RlcF9nbnR0YWJfZ3JhbnRfbWFwKHhlbmdu dHRhYl9oYW5kbGUgKnhndCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg Y291bnQsIGludCBmbGFncywgaW50IHByb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90ICpkb21pZHMsIHVpbnQzMl90ICpyZWZzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBub3RpZnlfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBldnRjaG5fcG9ydF90IG5vdGlmeV9wb3J0KQoreworICAgIGludCBmZCA9IHhndC0+ZmQ7 CisgICAgc3RydWN0IGlvY3RsX2dudGRldl9tYXBfZ3JhbnRfcmVmICptYXA7CisgICAgdW5zaWdu ZWQgaW50IG1hcF9zaXplID0gUk9VTkRVUCgoc2l6ZW9mKCptYXApICsgKGNvdW50IC0gMSkgKgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpb2N0bF9n bnRkZXZfbWFwX2dyYW50X3JlZikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUEFHRV9TSElGVCk7CisgICAgdm9pZCAqYWRkciA9IE5VTEw7CisgICAgaW50IGRvbWlkc19z dHJpZGUgPSAxOworICAgIGludCBpOworCisgICAgaWYgKGZsYWdzICYgWEVOR05UVEFCX0dSQU5U X01BUF9TSU5HTEVfRE9NQUlOKQorICAgICAgICBkb21pZHNfc3RyaWRlID0gMDsKKworICAgIGlm ICggbWFwX3NpemUgPD0gUEFHRV9TSVpFICkKKyAgICAgICAgbWFwID0gYWxsb2NhKHNpemVvZigq bWFwKSArCisgICAgICAgICAgICAgICAgICAgICAoY291bnQgLSAxKSAqIHNpemVvZihzdHJ1Y3Qg aW9jdGxfZ250ZGV2X21hcF9ncmFudF9yZWYpKTsKKyAgICBlbHNlCisgICAgeworICAgICAgICBt YXAgPSBtbWFwKE5VTEwsIG1hcF9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorICAgICAg ICAgICAgICAgICAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKyAgICAgICAgaWYg KCBtYXAgPT0gTUFQX0ZBSUxFRCApCisgICAgICAgIHsKKyAgICAgICAgICAgIEdURVJST1IoeGd0 LT5sb2dnZXIsICJtbWFwIG9mIG1hcCBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxM OworICAgICAgICB9CisgICAgfQorCisgICAgZm9yICggaSA9IDA7IGkgPCBjb3VudDsgaSsrICkK KyAgICB7CisgICAgICAgIG1hcC0+cmVmc1tpXS5kb21pZCA9IGRvbWlkc1tpICogZG9taWRzX3N0 cmlkZV07CisgICAgICAgIG1hcC0+cmVmc1tpXS5yZWYgPSByZWZzW2ldOworICAgIH0KKworICAg IG1hcC0+Y291bnQgPSBjb3VudDsKKworICAgIGlmICggaW9jdGwoZmQsIElPQ1RMX0dOVERFVl9N QVBfR1JBTlRfUkVGLCBtYXApICkgeworICAgICAgICBHVEVSUk9SKHhndC0+bG9nZ2VyLCAiaW9j dGwgTUFQX0dSQU5UX1JFRiBmYWlsZWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisg cmV0cnk6CisgICAgYWRkciA9IG1tYXAoTlVMTCwgUEFHRV9TSVpFICogY291bnQsIHByb3QsIE1B UF9TSEFSRUQsIGZkLAorICAgICAgICAgICAgICAgIG1hcC0+aW5kZXgpOworCisgICAgaWYgKGFk ZHIgPT0gTUFQX0ZBSUxFRCAmJiBlcnJubyA9PSBFQUdBSU4pCisgICAgeworICAgICAgICAvKgor ICAgICAgICAgKiBUaGUgZ3JhbnQgaHlwZXJjYWxsIGNhbiByZXR1cm4gRUFHQUlOIGlmIHRoZSBn cmFudGVkIHBhZ2UKKyAgICAgICAgICogaXMgc3dhcHBlZCBvdXQuIFNpbmNlIHRoZSBwYWdpbmcg ZGFlbW9uIG1heSBiZSBpbiB0aGUgc2FtZQorICAgICAgICAgKiBkb21haW4sIHRoZSBoeXBlcmNh bGwgY2Fubm90IGJsb2NrIHdpdGhvdXQgY2F1c2luZyBhCisgICAgICAgICAqIGRlYWRsb2NrLgor ICAgICAgICAgKgorICAgICAgICAgKiBCZWNhdXNlIHRoZXJlIGFyZSBubyBub3RpZmljYXRpb25z IHdoZW4gdGhlIHBhZ2UgaXMgc3dhcHBlZAorICAgICAgICAgKiBpbiwgd2FpdCBhIGJpdCBiZWZv cmUgcmV0cnlpbmcsIGFuZCBob3BlIHRoYXQgdGhlIHBhZ2Ugd2lsbAorICAgICAgICAgKiBhcnJp dmUgZXZlbnR1YWxseS4KKyAgICAgICAgICovCisgICAgICAgIHVzbGVlcCgxMDAwKTsKKyAgICAg ICAgZ290byByZXRyeTsKKyAgICB9CisKKyAgICBpZiAoYWRkciAhPSBNQVBfRkFJTEVEKQorICAg IHsKKyAgICAgICAgaW50IHJ2ID0gMDsKKyAgICAgICAgc3RydWN0IGlvY3RsX2dudGRldl91bm1h cF9ub3RpZnkgbm90aWZ5OworICAgICAgICBub3RpZnkuaW5kZXggPSBtYXAtPmluZGV4OworICAg ICAgICBub3RpZnkuYWN0aW9uID0gMDsKKyAgICAgICAgaWYgKG5vdGlmeV9vZmZzZXQgPCBQQUdF X1NJWkUgKiBjb3VudCkgeworICAgICAgICAgICAgbm90aWZ5LmluZGV4ICs9IG5vdGlmeV9vZmZz ZXQ7CisgICAgICAgICAgICBub3RpZnkuYWN0aW9uIHw9IFVOTUFQX05PVElGWV9DTEVBUl9CWVRF OworICAgICAgICB9CisgICAgICAgIGlmIChub3RpZnlfcG9ydCAhPSAtMSkgeworICAgICAgICAg ICAgbm90aWZ5LmV2ZW50X2NoYW5uZWxfcG9ydCA9IG5vdGlmeV9wb3J0OworICAgICAgICAgICAg bm90aWZ5LmFjdGlvbiB8PSBVTk1BUF9OT1RJRllfU0VORF9FVkVOVDsKKyAgICAgICAgfQorICAg ICAgICBpZiAobm90aWZ5LmFjdGlvbikKKyAgICAgICAgICAgIHJ2ID0gaW9jdGwoZmQsIElPQ1RM X0dOVERFVl9TRVRfVU5NQVBfTk9USUZZLCAmbm90aWZ5KTsKKyAgICAgICAgaWYgKHJ2KSB7Cisg ICAgICAgICAgICBHVEVSUk9SKHhndC0+bG9nZ2VyLCAiaW9jdGwgU0VUX1VOTUFQX05PVElGWSBm YWlsZWQiKTsKKyAgICAgICAgICAgIG11bm1hcChhZGRyLCBjb3VudCAqIFBBR0VfU0laRSk7Cisg ICAgICAgICAgICBhZGRyID0gTUFQX0ZBSUxFRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm IChhZGRyID09IE1BUF9GQUlMRUQpCisgICAgeworICAgICAgICBpbnQgc2F2ZWRfZXJybm8gPSBl cnJubzsKKyAgICAgICAgc3RydWN0IGlvY3RsX2dudGRldl91bm1hcF9ncmFudF9yZWYgdW5tYXBf Z3JhbnQ7CisKKyAgICAgICAgLyogVW5tYXAgdGhlIGRyaXZlciBzbG90cyB1c2VkIHRvIHN0b3Jl IHRoZSBncmFudCBpbmZvcm1hdGlvbi4gKi8KKyAgICAgICAgR1RFUlJPUih4Z3QtPmxvZ2dlciwg Im1tYXAgZmFpbGVkIik7CisgICAgICAgIHVubWFwX2dyYW50LmluZGV4ID0gbWFwLT5pbmRleDsK KyAgICAgICAgdW5tYXBfZ3JhbnQuY291bnQgPSBjb3VudDsKKyAgICAgICAgaW9jdGwoZmQsIElP Q1RMX0dOVERFVl9VTk1BUF9HUkFOVF9SRUYsICZ1bm1hcF9ncmFudCk7CisgICAgICAgIGVycm5v ID0gc2F2ZWRfZXJybm87CisgICAgICAgIGFkZHIgPSBOVUxMOworICAgIH0KKworIG91dDoKKyAg ICBpZiAoIG1hcF9zaXplID4gUEFHRV9TSVpFICkKKyAgICAgICAgbXVubWFwKG1hcCwgbWFwX3Np emUpOworCisgICAgcmV0dXJuIGFkZHI7Cit9CisKK2ludCBvc2RlcF9nbnR0YWJfdW5tYXAoeGVu Z250dGFiX2hhbmRsZSAqeGd0LAorICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdGFydF9h ZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjb3VudCkKK3sKKyAgICBp bnQgZmQgPSB4Z3QtPmZkOworICAgIHN0cnVjdCBpb2N0bF9nbnRkZXZfZ2V0X29mZnNldF9mb3Jf dmFkZHIgZ2V0X29mZnNldDsKKyAgICBzdHJ1Y3QgaW9jdGxfZ250ZGV2X3VubWFwX2dyYW50X3Jl ZiB1bm1hcF9ncmFudDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIHN0YXJ0X2FkZHJlc3MgPT0g TlVMTCApCisgICAgeworICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJuIC0x OworICAgIH0KKworICAgIC8qIEZpcnN0LCBpdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBvZmZz ZXQgd2hpY2ggd2FzIGluaXRpYWxseSB1c2VkIHRvCisgICAgICogbW1hcCgpIHRoZSBwYWdlcy4K KyAgICAgKi8KKyAgICBnZXRfb2Zmc2V0LnZhZGRyID0gKHVuc2lnbmVkIGxvbmcpc3RhcnRfYWRk cmVzczsKKyAgICBpZiAoIChyYyA9IGlvY3RsKGZkLCBJT0NUTF9HTlRERVZfR0VUX09GRlNFVF9G T1JfVkFERFIsCisgICAgICAgICAgICAgICAgICAgICAmZ2V0X29mZnNldCkpICkKKyAgICAgICAg cmV0dXJuIHJjOworCisgICAgaWYgKCBnZXRfb2Zmc2V0LmNvdW50ICE9IGNvdW50ICkKKyAgICB7 CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisg ICAgLyogTmV4dCwgdW5tYXAgdGhlIG1lbW9yeS4gKi8KKyAgICBpZiAoIChyYyA9IG11bm1hcChz dGFydF9hZGRyZXNzLCBjb3VudCAqIFBBR0VfU0laRSkpICkKKyAgICAgICAgcmV0dXJuIHJjOwor CisgICAgLyogRmluYWxseSwgdW5tYXAgdGhlIGRyaXZlciBzbG90cyB1c2VkIHRvIHN0b3JlIHRo ZSBncmFudCBpbmZvcm1hdGlvbi4gKi8KKyAgICB1bm1hcF9ncmFudC5pbmRleCA9IGdldF9vZmZz ZXQub2Zmc2V0OworICAgIHVubWFwX2dyYW50LmNvdW50ID0gY291bnQ7CisgICAgaWYgKCAocmMg PSBpb2N0bChmZCwgSU9DVExfR05UREVWX1VOTUFQX0dSQU5UX1JFRiwgJnVubWFwX2dyYW50KSkg KQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IG9zZGVwX2du dHNocl9vcGVuKHhlbmdudHNocl9oYW5kbGUgKnhncykKK3sKKyAgICBpbnQgZmQgPSBvcGVuKERF VlhFTiAiZ250ZGV2IiwgT19SRFdSKTsKKyAgICBpZiAoIGZkID09IC0xICkKKyAgICAgICAgcmV0 dXJuIC0xOworICAgIHhncy0+ZmQgPSBmZDsKKyAgICByZXR1cm4gMDsKK30KKworaW50IG9zZGVw X2dudHNocl9jbG9zZSh4ZW5nbnRzaHJfaGFuZGxlICp4Z3MpCit7CisgICAgaWYgKCB4Z3MtPmZk ID09IC0xICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2xvc2UoeGdzLT5mZCk7 Cit9CisKK3ZvaWQgKm9zZGVwX2dudHNocl9zaGFyZV9wYWdlcyh4ZW5nbnRzaHJfaGFuZGxlICp4 Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsIGludCBj b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcmVmcywgaW50 IHdyaXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5vdGlm eV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCBu b3RpZnlfcG9ydCkKK3sKKyAgICBzdHJ1Y3QgaW9jdGxfZ250ZGV2X2FsbG9jX2dyZWYgKmdyZWZf aW5mbyA9IE5VTEw7CisgICAgc3RydWN0IGlvY3RsX2dudGRldl91bm1hcF9ub3RpZnkgbm90aWZ5 OworICAgIHN0cnVjdCBpb2N0bF9nbnRkZXZfZGVhbGxvY19ncmVmIGdyZWZfZHJvcDsKKyAgICBp bnQgZmQgPSB4Z3MtPmZkOworICAgIGludCBlcnI7CisgICAgdm9pZCAqYXJlYSA9IE5VTEw7Cisg ICAgZ3JlZl9pbmZvID0gbWFsbG9jKHNpemVvZigqZ3JlZl9pbmZvKSArIGNvdW50ICogc2l6ZW9m KHVpbnQzMl90KSk7CisgICAgaWYgKCFncmVmX2luZm8pCisgICAgICAgIHJldHVybiBOVUxMOwor ICAgIGdyZWZfaW5mby0+ZG9taWQgPSBkb21pZDsKKyAgICBncmVmX2luZm8tPmZsYWdzID0gd3Jp dGFibGUgPyBHTlRERVZfQUxMT0NfRkxBR19XUklUQUJMRSA6IDA7CisgICAgZ3JlZl9pbmZvLT5j b3VudCA9IGNvdW50OworCisgICAgZXJyID0gaW9jdGwoZmQsIElPQ1RMX0dOVERFVl9BTExPQ19H UkVGLCBncmVmX2luZm8pOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgR1NFUlJPUih4Z3MtPmxv Z2dlciwgImlvY3RsIGZhaWxlZCIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBh cmVhID0gbW1hcChOVUxMLCBjb3VudCAqIFBBR0VfU0laRSwgUFJPVF9SRUFEIHwgUFJPVF9XUklU RSwKKyAgICAgICAgTUFQX1NIQVJFRCwgZmQsIGdyZWZfaW5mby0+aW5kZXgpOworCisgICAgaWYg KGFyZWEgPT0gTUFQX0ZBSUxFRCkgeworICAgICAgICBhcmVhID0gTlVMTDsKKyAgICAgICAgR1NF UlJPUih4Z3MtPmxvZ2dlciwgIm1tYXAgZmFpbGVkIik7CisgICAgICAgIGdvdG8gb3V0X3JlbW92 ZV9mZG1hcDsKKyAgICB9CisKKyAgICBub3RpZnkuaW5kZXggPSBncmVmX2luZm8tPmluZGV4Owor ICAgIG5vdGlmeS5hY3Rpb24gPSAwOworICAgIGlmIChub3RpZnlfb2Zmc2V0IDwgUEFHRV9TSVpF ICogY291bnQpIHsKKyAgICAgICAgbm90aWZ5LmluZGV4ICs9IG5vdGlmeV9vZmZzZXQ7CisgICAg ICAgIG5vdGlmeS5hY3Rpb24gfD0gVU5NQVBfTk9USUZZX0NMRUFSX0JZVEU7CisgICAgfQorICAg IGlmIChub3RpZnlfcG9ydCAhPSAtMSkgeworICAgICAgICBub3RpZnkuZXZlbnRfY2hhbm5lbF9w b3J0ID0gbm90aWZ5X3BvcnQ7CisgICAgICAgIG5vdGlmeS5hY3Rpb24gfD0gVU5NQVBfTk9USUZZ X1NFTkRfRVZFTlQ7CisgICAgfQorICAgIGlmIChub3RpZnkuYWN0aW9uKQorICAgICAgICBlcnIg PSBpb2N0bChmZCwgSU9DVExfR05UREVWX1NFVF9VTk1BUF9OT1RJRlksICZub3RpZnkpOworICAg IGlmIChlcnIpIHsKKyAgICAgICAgR1NFUlJPUih4Z3MtPmxvZ2dlciwgImlvY3RsIFNFVF9VTk1B UF9OT1RJRlkgZmFpbGVkIik7CisgICAgICAgIG11bm1hcChhcmVhLCBjb3VudCAqIFBBR0VfU0la RSk7CisgICAgICAgIGFyZWEgPSBOVUxMOworICAgIH0KKworICAgIG1lbWNweShyZWZzLCBncmVm X2luZm8tPmdyZWZfaWRzLCBjb3VudCAqIHNpemVvZih1aW50MzJfdCkpOworCisgb3V0X3JlbW92 ZV9mZG1hcDoKKyAgICAvKiBSZW1vdmluZyB0aGUgbWFwcGluZyBmcm9tIHRoZSBmaWxlIGRlc2Ny aXB0b3IgZG9lcyBub3QgY2F1c2UgdGhlIHBhZ2VzIHRvCisgICAgICogYmUgZGVhbGxvY2F0ZWQg dW50aWwgdGhlIG1hcHBpbmcgaXMgcmVtb3ZlZC4KKyAgICAgKi8KKyAgICBncmVmX2Ryb3AuaW5k ZXggPSBncmVmX2luZm8tPmluZGV4OworICAgIGdyZWZfZHJvcC5jb3VudCA9IGNvdW50OworICAg IGlvY3RsKGZkLCBJT0NUTF9HTlRERVZfREVBTExPQ19HUkVGLCAmZ3JlZl9kcm9wKTsKKyBvdXQ6 CisgICAgZnJlZShncmVmX2luZm8pOworICAgIHJldHVybiBhcmVhOworfQorCitpbnQgb3NkZXBf Z250c2hyX3Vuc2hhcmUoeGVuZ250c2hyX2hhbmRsZSAqeGdzLAorICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKnN0YXJ0X2FkZHJlc3MsIHVpbnQzMl90IGNvdW50KQoreworICAgIHJldHVy biBtdW5tYXAoc3RhcnRfYWRkcmVzcywgY291bnQgKiBQQUdFX1NJWkUpOworfQorCisvKgorICog TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTog bmlsCisgKiBFbmQ6CisgKi8KLS0gCjIuOC4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==