From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from m16.mail.163.com (m16.mail.163.com [117.135.210.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3DF063090C2; Thu, 18 Dec 2025 09:11:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=117.135.210.4 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766049105; cv=none; b=JuzeB72uLwc7N7LUQEXgv3e3byp/KTj9jjXCWOPbNghafVu5u7aoGT+szWkDAZdlTqtLFy4r9vRnxBmMAp5MBS3CeRjRR//8LTC6dkpaXXpWxSfFbKFZT3GSuSyinaa5ks9TO6ybxrmFUvarV1Umpvte2PxlcjW7ETnr244ZGZI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766049105; c=relaxed/simple; bh=jy3w9N/qbnWKlauzo5vSmVAoKgO0mFYIN+aRsuvIfOA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=offmf1T2hAT0hsTeBNfvGmrW9NPz1WC1TmJQvQF5BTKO7BE5jY/nd1egxPkWjKoHHUcA1fIg+GluMtrCTQi3OUX58zRpTtFjTbPKyg34VqolGjKlvHLzMofVnTZq4B+xRkLgdhebGUNiyVKiJDZ8clMBT4w7Hz5hxngXfpgVJ3w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=ewHcxPSg; arc=none smtp.client-ip=117.135.210.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="ewHcxPSg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=jy 3w9N/qbnWKlauzo5vSmVAoKgO0mFYIN+aRsuvIfOA=; b=ewHcxPSgkpIVZ6hDXc LS+VXGi82VXlt0qbwZsRymTF1+ieGAcinpa8GJfe1Jn6TTzNGAw8cXQt5c1gj2F+ O4YiXIRObzK3kpAhZFSyhTYBc174zRulSkGBJ6C1Yoh0saRJOocdhPEk1Q1+RvJ1 7Jhsa9XOJEycbKZZy2b44a6SU= Received: from xwm-TianYi510Pro-14IMB.. (unknown []) by gzga-smtp-mtada-g0-4 (Coremail) with SMTP id _____wC3U84cxUNpI7dcBA--.210S10; Thu, 18 Dec 2025 17:11:00 +0800 (CST) From: Xiong Weimin <15927021679@163.com> To: "Michael S . Tsirkin" , David Hildenbrand , Jason Wang , Stefano Garzarella , Thomas Monjalon , David Marchand , Luca Boccassi , Kevin Traynor , Christian Ehrhardt , Xuan Zhuo , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Xueming Li , Maxime Coquelin , Chenbo Xia , Bruce Richardson Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, xiongweimin Subject: [PATCH 08/10] drivers/infiniband/hw/virtio: Implement send/receive verb support Date: Thu, 18 Dec 2025 17:09:48 +0800 Message-ID: <20251218091050.55047-9-15927021679@163.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251218091050.55047-1-15927021679@163.com> References: <20251218091050.55047-1-15927021679@163.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: base64 X-CM-TRANSID:_____wC3U84cxUNpI7dcBA--.210S10 X-Coremail-Antispam: 1Uf129KBjvAXoWfGw15Gw1kWw1UKF18Xw1rtFb_yoW8Gr1DCo WfZws5XF1rtry3Xayqkrs7tFZava1qgas0yr4Yv390kFW7X3yjya4xK3W3X34fCr4ayF15 Cry3Jr1fXFs7Xryrn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxU7038UUUUU X-CM-SenderInfo: jprvmjixqsilmxzbiqqrwthudrp/xtbC8wSlLmlDxSSycAAA31 RnJvbTogeGlvbmd3ZWltaW4gPHhpb25nd2VpbWluQGt5bGlub3MuY24+CgpUaGlzIGNvbW1pdCBh ZGRzIGNvcmUgUkRNQSB2ZXJiIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIHZpcnRpbyBSRE1BIGRy aXZlcjoKCjEuIFBvc3QgUmVjZWl2ZSBTdXBwb3J0OgogICAtIEZ1bGwgaGFuZGxpbmcgb2YgcmVj dl93ciBjaGFpbnMgd2l0aCBTR0UgY29udmVyc2lvbgogICAtIFNNSSBRUCByZWplY3Rpb24gYW5k IHVzZXItc3BhY2UgUVAgZmFzdCBwYXRoCiAgIC0gQXRvbWljIGJ1ZmZlciBhbGxvY2F0aW9uIHdp dGggR0ZQX0FUT01JQwoKMi4gUG9zdCBTZW5kIFN1cHBvcnQ6CiAgIC0gQ29tcHJlaGVuc2l2ZSBv cGNvZGUgc3VwcG9ydCBpbmNsdWRpbmcgUkRNQS9BdG9taWMvVUQKICAgLSBJbmxpbmUgZGF0YSBo YW5kbGluZyB2aWEgY29udGlndW91cyBjb3B5CiAgIC0gRGV0YWlsZWQgZXJyb3IgaGFuZGxpbmcg d2l0aCBiYWRfd3IgdHJhY2tpbmcKICAgLSBNZW1vcnkgcmVnaXN0cmF0aW9uIHN1cHBvcnQgaW50 ZWdyYXRpb24KCktleSBmZWF0dXJlczoKLSBTdXBwb3J0IGZvciAxNSsgSUJfV1JfT1BDT0RFIHR5 cGVzCi0gU3BlY2lhbGl6ZWQgaGFuZGxpbmcgZm9yIFVEL1JDL0dTSSBRUCB0eXBlcwotIEtlcm5l bC1zcGFjZSBXUiBwcm9jZXNzaW5nIHdpdGggdmlydGlvIGNvbW1hbmQgY29udmVyc2lvbgotIFZp cnRxdWV1ZSBiYXRjaGluZyBvcHRpbWl6YXRpb25zCi0gU3RyaWN0IGNvbmN1cnJlbmN5IGNvbnRy b2wgd2l0aCBRUCBsb2NrcwoKU2lnbmVkLW9mZi1ieTogWGlvbmcgV2VpbWluIDx4aW9uZ3dlaW1p bkBreWxpbm9zLmNuPgotLS0KIC4uLi9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1h X2FiaS5oICB8ICA5OSArKysrLS0KIC4uLi9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3Zy ZG1hX2liLmMgICB8IDMxMCArKysrKysrKysrKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMzcy IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpbnV4LTYuMTYu OC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hX2FiaS5oIGIvbGludXgtNi4xNi44 L2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWFfYWJpLmgKaW5kZXggN2NkYzRlNDg4 Li4wYTk0MDQwNTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQv aHcvdmlydGlvL3ZyZG1hX2FiaS5oCisrKyBiL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJh bmQvaHcvdmlydGlvL3ZyZG1hX2FiaS5oCkBAIC0yMjIsNiArMjIyLDE5IEBAIHN0cnVjdCB2cmRt YV9hdiB7CiAJX191OCByZXNlcnZlZFs2XTsJCS8qIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlIC8g YWxpZ25tZW50IHBhZGRpbmcgKi8KIH07CiAKK3N0cnVjdCB2cmRtYV9zZ2UgeworICAgIF9fdTY0 IGFkZHI7CisgICAgX191MzIgbGVuZ3RoOworICAgIF9fdTMyIGxrZXk7Cit9OworCitzdHJ1Y3Qg dnJkbWFfY21kX3Bvc3RfcmVjdiB7CisJX191MzIgcXBuOworCV9fdTMyIG51bV9zZ2U7CisJX191 NjQgd3JfaWQ7CisJc3RydWN0IGliX3NnZSAqc2dlX2xpc3Q7Cit9OworCiAvKioKICAqIHN0cnVj dCB2cmRtYV9jbWRfcG9zdF9zZW5kIC0gVXNlci1zcGFjZSBjb21tYW5kIHRvIHBvc3QgYSBTZW5k IFdRRQogICoKQEAgLTIzMiw0OCArMjQ1LDYyIEBAIHN0cnVjdCB2cmRtYV9hdiB7CiAgKiBBbGwg ZmllbGRzIHVzZSBmaXhlZC1zaXplIHR5cGVzIGZvciBBQkkgc3RhYmlsaXR5IGFjcm9zcyBhcmNo aXRlY3R1cmVzLgogICovCiBzdHJ1Y3QgdnJkbWFfY21kX3Bvc3Rfc2VuZCB7Ci0JX191MzIgbnVt X3NnZTsJCS8qIE51bWJlciBvZiBzY2F0dGVyLWdhdGhlciBlbGVtZW50cyBpbiB0aGlzIFdRRSAq LwotCi0JX191MzIgc2VuZF9mbGFnczsJLyogSUJWX1NFTkRfeHh4IGZsYWdzIChlLmcuLCBzaWdu YWxlZCwgaW5saW5lLCBmZW5jZSkgKi8KLQlfX3UzMiBvcGNvZGU7CQkvKiBPcGVyYXRpb24gY29k ZTogUkRNQV9XUklURSwgU0VORCwgQVRPTUlDLCBldGMuICovCi0JX191NjQgd3JfaWQ7CQkvKiBX b3JrIFJlcXVlc3QgSUQgcmV0dXJuZWQgaW4gQ1FFICovCi0KIAl1bmlvbiB7Ci0JCV9fYmUzMglp bW1fZGF0YTsJCS8qIEltbWVkaWF0ZSBkYXRhIGZvciBSQy9VQyBRUHMgKi8KLQkJX191MzIJaW52 YWxpZGF0ZV9ya2V5OwkvKiBya2V5IHRvIGludmFsaWRhdGUgKG9uIFNFTkRfV0lUSF9JTlYpICov Ci0JfSBleDsKLQotCXVuaW9uIHdyX2RhdGEgeworCQkvKiBMZW5ndGggb2Ygc2dfbGlzdCAqLwor CQlfX2xlMzIgbnVtX3NnZTsKKwkJLyogTGVuZ3RoIG9mIGlubGluZSBkYXRhICovCisJCV9fbGUx NiBpbmxpbmVfbGVuOworCX07CisJLyogRmxhZ3Mgb2YgdGhlIFdSIHByb3BlcnRpZXMgKi8KKwlf X3U4IHNlbmRfZmxhZ3M7CisJLyogV1Igb3Bjb2RlLCBlbnVtIHZpcnRpb19pYl93cl9vcGNvZGUg Ki8KKwlfX3UzMiBvcGNvZGU7CisJLyogVXNlciBkZWZpbmVkIFdSIElEICovCisJX19sZTY0IHdy X2lkOwkKKyNkZWZpbmUgVklSVElPX0lCX1NFTkRfRkVOQ0UgICAgICAgICgxIDw8IDApCisjZGVm aW5lIFZJUlRJT19JQl9TRU5EX1NJR05BTEVEICAgICAoMSA8PCAxKQorI2RlZmluZSBWSVJUSU9f SUJfU0VORF9TT0xJQ0lURUQgICAgKDEgPDwgMikKKyNkZWZpbmUgVklSVElPX0lCX1NFTkRfSU5M SU5FICAgICAgICgxIDw8IDMpCisJLyogSW1tZWRpYXRlIGRhdGEgKGluIG5ldHdvcmsgYnl0ZSBv cmRlcikgdG8gc2VuZCAqLworCV9fbGUzMiBpbW1fZGF0YTsKKyAgICB1bmlvbiB7CisgICAgICAg IF9fbGUzMiBpbW1fZGF0YTsKKyAgICAgICAgX191MzIgaW52YWxpZGF0ZV9ya2V5OworICAgIH0g ZXg7CQorCXVuaW9uIHsKIAkJc3RydWN0IHsKLQkJCV9fdTY0IHJlbW90ZV9hZGRyOwkvKiBUYXJn ZXQgdmlydHVhbCBhZGRyZXNzIGZvciBSRE1BIG9wICovCi0JCQlfX3UzMiBya2V5OwkJLyogUmVt b3RlIGtleSBmb3IgbWVtb3J5IGFjY2VzcyAqLworCQkJLyogU3RhcnQgYWRkcmVzcyBvZiByZW1v dGUgbWVtb3J5IGJ1ZmZlciAqLworCQkJX19sZTY0IHJlbW90ZV9hZGRyOworCQkJLyogS2V5IG9m IHRoZSByZW1vdGUgTVIgKi8KKwkJCV9fbGUzMiBya2V5OwogCQl9IHJkbWE7Ci0KLQkJc3RydWN0 IHsKLQkJCV9fdTY0IHJlbW90ZV9hZGRyOwkvKiBBZGRyZXNzIG9mIGF0b21pYyB2YXJpYWJsZSAq LwotCQkJX191NjQgY29tcGFyZV9hZGQ7CS8qIFZhbHVlIHRvIGNvbXBhcmUgKi8KLQkJCV9fdTY0 IHN3YXA7CQkvKiBWYWx1ZSB0byBzd2FwIChvciBhZGQpICovCi0JCQlfX3UzMiBya2V5OwkJLyog UmVtb3RlIG1lbW9yeSBrZXkgKi8KLQkJfSBhdG9taWM7Ci0KKyAgICAgICAgc3RydWN0IHsKKyAg ICAgICAgICAgIF9fdTY0IHJlbW90ZV9hZGRyOworICAgICAgICAgICAgX191NjQgY29tcGFyZV9h ZGQ7CisgICAgICAgICAgICBfX3U2NCBzd2FwOworICAgICAgICAgICAgX191MzIgcmtleTsKKyAg ICAgICAgfSBhdG9taWM7CQkKIAkJc3RydWN0IHsKLQkJCV9fdTMyIHJlbW90ZV9xcG47CS8qIERl c3RpbmF0aW9uIFFQIG51bWJlciAqLwotCQkJX191MzIgcmVtb3RlX3FrZXk7CS8qIFFfS2V5IGZv ciBVRCBwYWNrZXQgdmFsaWRhdGlvbiAqLwotCQkJc3RydWN0IHZyZG1hX2F2IGF2OwkvKiBBZGRy ZXNzIHZlY3RvciAoTDIvTDMgaW5mbykgKi8KKwkJCS8qIEluZGV4IG9mIHRoZSBkZXN0aW5hdGlv biBRUCAqLworCQkJX19sZTMyIHJlbW90ZV9xcG47CisJCQkvKiBRX0tleSBvZiB0aGUgZGVzdGlu YXRpb24gUVAgKi8KKwkJCV9fbGUzMiByZW1vdGVfcWtleTsKKwkJCXN0cnVjdCB2cmRtYV9hdiBh djsKIAkJfSB1ZDsKLQotCQlzdHJ1Y3QgewotCQkJX191MzIgbXJuOwkJLyogTWVtb3J5IFJlZ2lv biBOdW1iZXIgKE1SIGhhbmRsZSkgKi8KLQkJCV9fdTMyIGtleTsJCS8qIFN0YWdpbmcgcmtleSBm b3IgTVIgcmVnaXN0cmF0aW9uICovCi0JCQlfX3UzMiBhY2Nlc3M7CQkvKiBBY2Nlc3MgZmxhZ3Mg KElCX0FDQ0VTU194eHgpICovCi0JCX0gcmVnOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAg ICAgX191MzIgbXJuOworICAgICAgICAgICAgX191MzIga2V5OworICAgICAgICAgICAgaW50IGFj Y2VzczsKKyAgICAgICAgfSByZWc7CQkKKwkJLyogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSAqLworCQlf X2xlNjQgcmVzZXJ2ZWRbNF07CiAJfSB3cjsKLX07Ci0KLXN0cnVjdCB2cmRtYV9zZ2UgewotICAg IF9fdTY0IGFkZHI7Ci0gICAgX191MzIgbGVuZ3RoOwotICAgIF9fdTMyIGxrZXk7CisJLyogSW5s aW5lIGRhdGEgKi8KKwkvL19fdTggaW5saW5lX2RhdGFbNTEyXTsKKwkvKiBSZXNlcnZlZCBmb3Ig ZnV0dXJlICovCisJX19sZTMyIHJlc2VydmVkMlszXTsKKwkvKiBTY2F0dGVyL2dhdGhlciBsaXN0 ICovCisJc3RydWN0IHZyZG1hX3NnZSBzZ19saXN0W107CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdp dCBhL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hX2liLmMg Yi9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYV9pYi5jCmlu ZGV4IDcwNWQxOGI1NS4uZjliMTI5Nzc0IDEwMDY0NAotLS0gYS9saW51eC02LjE2LjgvZHJpdmVy cy9pbmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYV9pYi5jCisrKyBiL2xpbnV4LTYuMTYuOC9kcml2 ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hX2liLmMKQEAgLTIyMTUsNiArMjIxNSwzMTIg QEAgc3RhdGljIGludCB2cmRtYV9wb2xsX2NxKHN0cnVjdCBpYl9jcSAqaWJjcSwgaW50IG51bV9l bnRyaWVzLCBzdHJ1Y3QgaWJfd2MgKndjKQogCXJldHVybiBpOyAvKiBSZXR1cm4gbnVtYmVyIG9m IHBvbGxlZCBjb21wbGV0aW9ucyAqLwogfQogCisvKioKKyAqIHZyZG1hX3Bvc3RfcmVjdiAtIFBv c3QgYSBsaXN0IG9mIHJlY2VpdmUgd29yayByZXF1ZXN0cworICogQGlicXA6CVF1ZXVlIHBhaXIK KyAqIEB3cjoJCUxpc3Qgb2YgcmVjZWl2ZSB3b3JrIHJlcXVlc3RzCisgKiBAYmFkX3dyOglPdXQg cGFyYW1ldGVyIHBvaW50aW5nIHRvIGZpcnN0IGZhaWxlZCBXUiBvbiBlcnJvcgorICoKKyAqIFN1 Ym1pdHMgcmVjZWl2ZSBidWZmZXJzIHRvIHRoZSBiYWNrZW5kIHZpYSB2aXJ0cXVldWUuCisgKiBF YWNoIFdSIGlzIHNlcmlhbGl6ZWQgaW50byBhIGNvbW1hbmQgc3RydWN0dXJlIGFuZCBwYXNzZWQg dG8gdGhlIGhvc3QuCisgKgorICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0IChtYXkgYmUgY2Fs bGVkIGZyb20gYXRvbWljIGNvbnRleHQgaW4gcmFyZSBjYXNlcykuCisgKiBSZXR1cm46CisgKiAq IDAgb24gc3VjY2VzcworICogKiBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlIChlLmcuLCAtRU5P TUVNLCAtRU9QTk9UU1VQUCkKKyAqLworc3RhdGljIGludCB2cmRtYV9wb3N0X3JlY3Yoc3RydWN0 IGliX3FwICppYnFwLAorCQkJCSBjb25zdCBzdHJ1Y3QgaWJfcmVjdl93ciAqd3IsCisJCQkJIGNv bnN0IHN0cnVjdCBpYl9yZWN2X3dyICoqYmFkX3dyKQoreworCXN0cnVjdCB2cmRtYV9xcCAqdnFw ID0gdG9fdnFwKGlicXApOworCXN0cnVjdCB2cmRtYV9jbWRfcG9zdF9yZWN2ICpjbWQ7CisJdW5z aWduZWQgaW50IHNnbF9zaXplOworCWludCByYyA9IDA7CisJc3RydWN0IHNjYXR0ZXJsaXN0IGhk cjsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnc1sxXTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwor CisJLyogU01JIFFQcyBhcmUgbm90IHN1cHBvcnRlZCAqLworCWlmIChpYnFwLT5xcF90eXBlID09 IElCX1FQVF9TTUkpIHsKKwkJKmJhZF93ciA9IHdyOworCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJ fQorCisJLyoKKwkgKiBGb3IgdXNlci1zcGFjZSBRUHMsIHdlIGFzc3VtZSByZWN2IHBvc3Rpbmcg aXMgaGFuZGxlZCBkaWZmZXJlbnRseQorCSAqIChlLmcuLCB0aHJvdWdoIG1tYXAnZWQgcmluZ3Mp LiBTa2lwIGtlcm5lbC1zaWRlIHBvc3RpbmcuCisJICovCisJaWYgKHZxcC0+dHlwZSA9PSBWSVJU SU9fUkRNQV9UWVBFX1VTRVIpCisJCWdvdG8ga2lja19hbmRfcmV0dXJuOworCisJLyogU2VyaWFs aXplIGFjY2VzcyB0byBSUSAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZ2cXAtPnJxLT5sb2NrLCBm bGFncyk7CisKKwl3aGlsZSAod3IpIHsKKwkJLyogVmFsaWRhdGUgcmVxdWlyZWQgZmllbGRzICov CisJCWlmICh1bmxpa2VseSghd3ItPm51bV9zZ2UpKSB7CisJCQlyYyA9IC1FSU5WQUw7CisJCQln b3RvIG91dF9iYWRfd3I7CisJCX0KKworCQkvKiBDYWxjdWxhdGUgc2l6ZSBvZiBTR0UgYXJyYXkg dG8gY29weSAqLworCQlzZ2xfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdnJkbWFfc2dlKSAqIHdyLT5u dW1fc2dlOworCQljbWQgPSBremFsbG9jKHNpemVvZigqY21kKSArIHNnbF9zaXplLCBHRlBfQVRP TUlDKTsKKwkJaWYgKCFjbWQpIHsKKwkJCXJjID0gLUVOT01FTTsKKwkJCWdvdG8gb3V0X2JhZF93 cjsKKwkJfQorCisJCWNtZC0+c2dlX2xpc3QgPSBremFsbG9jKHNnbF9zaXplLCBHRlBfQVRPTUlD KTsKKwkJaWYgKCFjbWQtPnNnZV9saXN0KSB7CisJCQlyYyA9IC1FTk9NRU07CisJCQlnb3RvIG91 dF9iYWRfd3I7CisJCX0JCQorCisJCS8qIEZpbGwgY29tbWFuZCAqLworCQljbWQtPnFwbiA9IHZx cC0+cXBfaGFuZGxlOworCQljbWQtPndyX2lkID0gKGlicXAtPnFwX3R5cGUgPT0gSUJfUVBUX0dT SSkgPyAwIDogd3ItPndyX2lkOworCQljbWQtPm51bV9zZ2UgPSB3ci0+bnVtX3NnZTsKKworCQkv KiBDb3B5IFNHRXMgZnJvbSB1c2VyIFdSIGludG8gY29tbWFuZCBidWZmZXIgKi8KKwkJbWVtY3B5 KGNtZC0+c2dlX2xpc3QsIHdyLT5zZ19saXN0LCBzZ2xfc2l6ZSk7CisKKwkJLyogUHJlcGFyZSBz Y2F0dGVybGlzdCBmb3IgdmlydHF1ZXVlICovCisJCXNnX2luaXRfb25lKCZoZHIsIGNtZCwgc2l6 ZW9mKCpjbWQpICsgc2dsX3NpemUpOworCQlzZ3NbMF0gPSAmaGRyOworCisJCS8qIEFkZCB0byB2 aXJ0cXVldWUgKi8KKwkJcmMgPSB2aXJ0cXVldWVfYWRkX3Nncyh2cXAtPnJxLT52cSwgc2dzLCAx LCAwLCBjbWQsIEdGUF9BVE9NSUMpOworCQlpZiAocmMpIHsKKwkJCWtmcmVlKGNtZCk7CisJCQln b3RvIG91dF9iYWRfd3I7CisJCX0KKworCQl3ciA9IHdyLT5uZXh0OworCX0KKworCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnZxcC0+cnEtPmxvY2ssIGZsYWdzKTsKKwora2lja19hbmRfcmV0dXJu OgorCXZpcnRxdWV1ZV9raWNrKHZxcC0+cnEtPnZxKTsKKwlyZXR1cm4gMDsKKworb3V0X2JhZF93 cjoKKwkqYmFkX3dyID0gd3I7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdnFwLT5ycS0+bG9j aywgZmxhZ3MpOworCXZpcnRxdWV1ZV9raWNrKHZxcC0+cnEtPnZxKTsgLyogU3RpbGwga2ljayBz byBiYWNrZW5kIGtub3dzIHBhcnRpYWwgdXBkYXRlICovCisJcmV0dXJuIHJjOworfQorCisvKioK KyAqIGNvcHlfaW5saW5lX2RhdGFfdG9fd3FlIC0gQ29weSBpbmxpbmUgZGF0YSBmcm9tIFNHRXMg aW50byBXUUUgYnVmZmVyCisgKiBAd3FlOglQb2ludGVyIHRvIHRoZSB2cmRtYV9jbWRfcG9zdF9z ZW5kIGNvbW1hbmQgc3RydWN0dXJlCisgKiBAaWJ3cjoJSUIgc2VuZCB3b3JrIHJlcXVlc3QgY29u dGFpbmluZyBTR0VzIHdpdGggaW5saW5lIGRhdGEKKyAqCisgKiBDb3BpZXMgYWxsIGRhdGEgcmVm ZXJlbmNlZCBieSBTR0VzIGludG8gYSBjb250aWd1b3VzIGFyZWEgaW1tZWRpYXRlbHkKKyAqIGZv bGxvd2luZyB0aGUgV1FFIGhlYWRlciwgdHlwaWNhbGx5IHVzZWQgd2hlbiBJQl9TRU5EX0lOTElO RSBpcyBzZXQuCisgKgorICogQXNzdW1lczoKKyAqIC0gTWVtb3J5IGF0IHNnZS0+YWRkciBpcyBh Y2Nlc3NpYmxlIChrZXJuZWwgdmlydHVhbCBhZGRyZXNzKQorICogLSBUb3RhbCBzaXplIDw9IGRl dmljZSBtYXhfaW5saW5lX2RhdGEKKyAqIC0gd3FlIGhhcyBlbm91Z2ggdGFpbHJvb20gZm9yIGFs bCBkYXRhCisgKgorICogQ29udGV4dDogQ2FsbGVkIHVuZGVyIHNwaW5sb2NrLCBhdG9taWMgY29u dGV4dCAoR0ZQX0FUT01JQyBhbGxvY2F0aW9uKQorICovCitzdGF0aWMgdm9pZCB2cmRtYV9jb3B5 X2lubGluZV9kYXRhX3RvX3dxZShzdHJ1Y3QgdnJkbWFfY21kX3Bvc3Rfc2VuZCAqd3FlLAorCQkJ CSAgICBjb25zdCBzdHJ1Y3QgaWJfc2VuZF93ciAqaWJ3cikKK3sKKwljb25zdCBzdHJ1Y3QgaWJf c2dlICpzZ2U7CisJY2hhciAqZHN0ID0gKGNoYXIgKil3cWUgKyBzaXplb2YoKndxZSk7IC8qIFN0 YXJ0IGFmdGVyIGhlYWRlciAqLworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGlid3ItPm51 bV9zZ2U7IGkrKykgeworCQlzZ2UgPSAmaWJ3ci0+c2dfbGlzdFtpXTsKKworCQkvKiBTa2lwIHpl cm8tbGVuZ3RoIHNlZ21lbnRzICovCisJCWlmIChzZ2UtPmxlbmd0aCA9PSAwKQorCQkJY29udGlu dWU7CisKKwkJLyoKKwkJICogV0FSTklORzogc2dlLT5hZGRyIGlzIGEgdXNlci1zcGFjZSBvciBr ZXJuZWwgdmlydHVhbCBhZGRyZXNzLgorCQkgKiBVc2luZyAodm9pZCAqKSh1aW50cHRyX3Qpc2dl LT5hZGRyIGFzc3VtZXMgaXQncyBkaXJlY3RseSBkZXJlZmVyZW5jZWFibGUuCisJCSAqIFRoaXMg aXMgb25seSB2YWxpZCBpZjoKKwkJICogICAtIFRoZSBRUCBpcyBLRVJORUwgdHlwZSBBTkQKKwkJ ICogICAtIFRoZSBtZW1vcnkgd2FzIHJlZ2lzdGVyZWQgYW5kIHdlIHRydXN0IGl0cyBtYXBwaW5n CisJCSAqLworCisJCW1lbWNweShkc3QsICh2b2lkICopKHVpbnRwdHJfdClzZ2UtPmFkZHIsIHNn ZS0+bGVuZ3RoKTsKKwkJZHN0ICs9IHNnZS0+bGVuZ3RoOworCX0KK30KKworLyoqCisgKiB2cmRt YV9wb3N0X3NlbmQgLSBQb3N0IGEgbGlzdCBvZiBzZW5kIHdvcmsgcmVxdWVzdHMgdG8gdGhlIFNR CisgKiBAaWJxcDoJUXVldWUgcGFpcgorICogQHdyOgkJTGlzdCBvZiB3b3JrIHJlcXVlc3RzCisg KiBAYmFkX3dyOglPdXQgcGFyYW1ldGVyIHBvaW50aW5nIHRvIGZhaWxpbmcgV1Igb24gZXJyb3IK KyAqCisgKiBDb252ZXJ0cyBlYWNoIGliX3NlbmRfd3IgaW50byBhIHZyZG1hX2NtZF9wb3N0X3Nl bmQgYW5kIHN1Ym1pdHMgaXQKKyAqIHZpYSB0aGUgc2VuZCB2aXJ0cXVldWUuIFN1cHBvcnRzIGJv dGgga2VybmVsIGFuZCB1c2VyIFFQcy4KKyAqCisgKiBDb250ZXh0OiBQcm9jZXNzIGNvbnRleHQg KG1heSBob2xkIHNwaW5sb2NrLCBzbyBubyBzbGVlcCBpbiBhdG9taWMgc2VjdGlvbikKKyAqIFJl dHVybjoKKyAqICogMCBvbiBzdWNjZXNzCisgKiAqIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUg KGUuZy4sIC1FSU5WQUwsIC1FTk9NRU0pCisgKiAqIEBiYWRfd3Igc2V0IHRvIGZpcnN0IGZhaWxl ZCBXUgorICovCitzdGF0aWMgaW50IHZyZG1hX3Bvc3Rfc2VuZChzdHJ1Y3QgaWJfcXAgKmlicXAs IGNvbnN0IHN0cnVjdCBpYl9zZW5kX3dyICp3ciwKKwkJCSAgIGNvbnN0IHN0cnVjdCBpYl9zZW5k X3dyICoqYmFkX3dyKQoreworCXN0cnVjdCB2cmRtYV9xcCAqdnFwID0gdG9fdnFwKGlicXApOwor CXN0cnVjdCB2cmRtYV9jbWRfcG9zdF9zZW5kICpjbWQ7CisJdW5zaWduZWQgaW50IHNnbF9zaXpl OworCWludCByYyA9IDA7CisJc3RydWN0IHNjYXR0ZXJsaXN0IGhkcjsKKwlzdHJ1Y3Qgc2NhdHRl cmxpc3QgKnNnc1sxXTsKKworCS8qIEZhc3QgcGF0aCBmb3IgdXNlci1zcGFjZSBRUDogZGVmZXIg dG8gdXNlcnNwYWNlICovCisJaWYgKHZxcC0+dHlwZSA9PSBWSVJUSU9fUkRNQV9UWVBFX1VTRVIp IHsKKwkJdmlydHF1ZXVlX2tpY2sodnFwLT5zcS0+dnEpOworCQlyZXR1cm4gMDsKKwl9CisKKwlz cGluX2xvY2soJnZxcC0+c3EtPmxvY2spOworCisJd2hpbGUgKHdyKSB7CisJCSpiYWRfd3IgPSB3 cjsgLyogSW4gY2FzZSBvZiBlcnJvciAqLworCisJCS8qIFZhbGlkYXRlIG9wY29kZSBzdXBwb3J0 IGluIGtlcm5lbCBRUCAqLworCQlzd2l0Y2ggKHdyLT5vcGNvZGUpIHsKKwkJY2FzZSBJQl9XUl9T RU5EOgorCQljYXNlIElCX1dSX1NFTkRfV0lUSF9JTU06CisJCWNhc2UgSUJfV1JfU0VORF9XSVRI X0lOVjoKKwkJY2FzZSBJQl9XUl9SRE1BX1dSSVRFOgorCQljYXNlIElCX1dSX1JETUFfV1JJVEVf V0lUSF9JTU06CisJCWNhc2UgSUJfV1JfUkRNQV9SRUFEOgorCQljYXNlIElCX1dSX0FUT01JQ19D TVBfQU5EX1NXUDoKKwkJY2FzZSBJQl9XUl9BVE9NSUNfRkVUQ0hfQU5EX0FERDoKKwkJY2FzZSBJ Ql9XUl9MT0NBTF9JTlY6CisJCWNhc2UgSUJfV1JfUkVHX01SOgorCQkJYnJlYWs7CisJCWRlZmF1 bHQ6CisJCQlwcl93YXJuKCJ2UkRNQTogdW5zdXBwb3J0ZWQgb3Bjb2RlICVkIGZvciBrZXJuZWwg UVBcbiIsCisJCQkJd3ItPm9wY29kZSk7CisJCQlyYyA9IC1FSU5WQUw7CisJCQlnb3RvIG91dF91 bmxvY2s7CisJCX0KKworCQkvKiBBbGxvY2F0ZSBjb21tYW5kIGJ1ZmZlciBpbmNsdWRpbmcgc3Bh Y2UgZm9yIFNHRXMgKi8KKwkJc2dsX3NpemUgPSB3ci0+bnVtX3NnZSAqIHNpemVvZihzdHJ1Y3Qg dnJkbWFfc2dlKTsKKwkJY21kID0ga3phbGxvYyhzaXplb2YoKmNtZCkgKyBzZ2xfc2l6ZSwgR0ZQ X0FUT01JQyk7CisJCWlmICghY21kKSB7CisJCQlyYyA9IC1FTk9NRU07CisJCQlnb3RvIG91dF91 bmxvY2s7CisJCX0KKworCQkvKiBGaWxsIGNvbW1vbiBmaWVsZHMgKi8KKwkJY21kLT53cl9pZCA9 IHdyLT53cl9pZDsKKwkJY21kLT5udW1fc2dlID0gd3ItPm51bV9zZ2U7CisJCWNtZC0+c2VuZF9m bGFncyA9IHdyLT5zZW5kX2ZsYWdzOworCQljbWQtPm9wY29kZSA9IHdyLT5vcGNvZGU7CisKKwkJ LyogSW1tZWRpYXRlIGRhdGEgYW5kIGludmFsaWRhdGlvbiBrZXkgKi8KKwkJaWYgKHdyLT5zZW5k X2ZsYWdzICYgSUJfU0VORF9JTkxJTkUpIHsKKwkJCS8qIFRPRE86IENoZWNrIG1heF9pbmxpbmVf ZGF0YSBsaW1pdCAqLworCQkJdnJkbWFfY29weV9pbmxpbmVfZGF0YV90b193cWUoY21kLCB3cik7 CisJCX0gZWxzZSB7CisJCQltZW1jcHkoY21kLT5zZ19saXN0LCB3ci0+c2dfbGlzdCwgc2dsX3Np emUpOworCQl9CisKKwkJLyogSGFuZGxlIGltbWVkaWF0ZSBkYXRhIChTRU5EX1dJVEhfSU1NLCBX UklURV9XSVRIX0lNTSkgKi8KKwkJaWYgKHdyLT5vcGNvZGUgPT0gSUJfV1JfU0VORF9XSVRIX0lN TSB8fAorCQkgICAgd3ItPm9wY29kZSA9PSBJQl9XUl9SRE1BX1dSSVRFX1dJVEhfSU1NKQorCQkJ Y21kLT5leC5pbW1fZGF0YSA9IHdyLT5leC5pbW1fZGF0YTsKKworCQkvKiBIYW5kbGUgaW52YWxp ZGF0ZSBrZXkgKFNFTkRfV0lUSF9JTlYsIExPQ0FMX0lOVikgKi8KKwkJaWYgKHdyLT5vcGNvZGUg PT0gSUJfV1JfU0VORF9XSVRIX0lOViB8fAorCQkgICAgd3ItPm9wY29kZSA9PSBJQl9XUl9MT0NB TF9JTlYpCisJCQljbWQtPmV4LmludmFsaWRhdGVfcmtleSA9IHdyLT5leC5pbnZhbGlkYXRlX3Jr ZXk7CisKKwkJLyogUkRNQSBhbmQgQXRvbWljIHNwZWNpZmljIGZpZWxkcyAqLworCQlzd2l0Y2gg KGlicXAtPnFwX3R5cGUpIHsKKwkJY2FzZSBJQl9RUFRfUkM6CisJCQlzd2l0Y2ggKHdyLT5vcGNv ZGUpIHsKKwkJCWNhc2UgSUJfV1JfUkRNQV9SRUFEOgorCQkJY2FzZSBJQl9XUl9SRE1BX1dSSVRF OgorCQkJY2FzZSBJQl9XUl9SRE1BX1dSSVRFX1dJVEhfSU1NOgorCQkJCWNtZC0+d3IucmRtYS5y ZW1vdGVfYWRkciA9IHJkbWFfd3Iod3IpLT5yZW1vdGVfYWRkcjsKKwkJCQljbWQtPndyLnJkbWEu cmtleSA9IHJkbWFfd3Iod3IpLT5ya2V5OworCQkJCWJyZWFrOworCisJCQljYXNlIElCX1dSX0FU T01JQ19DTVBfQU5EX1NXUDoKKwkJCWNhc2UgSUJfV1JfQVRPTUlDX0ZFVENIX0FORF9BREQ6CisJ CQkJY21kLT53ci5hdG9taWMucmVtb3RlX2FkZHIgPSBhdG9taWNfd3Iod3IpLT5yZW1vdGVfYWRk cjsKKwkJCQljbWQtPndyLmF0b21pYy5ya2V5ID0gYXRvbWljX3dyKHdyKS0+cmtleTsKKwkJCQlj bWQtPndyLmF0b21pYy5jb21wYXJlX2FkZCA9IGF0b21pY193cih3ciktPmNvbXBhcmVfYWRkOwor CQkJCWlmICh3ci0+b3Bjb2RlID09IElCX1dSX0FUT01JQ19DTVBfQU5EX1NXUCkKKwkJCQkJY21k LT53ci5hdG9taWMuc3dhcCA9IGF0b21pY193cih3ciktPnN3YXA7CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UgSUJfV1JfUkVHX01SOiB7CisJCQkJY29uc3Qgc3RydWN0IGliX3JlZ193ciAqcmVnID0g cmVnX3dyKHdyKTsKKwkJCQlzdHJ1Y3QgdnJkbWFfbXIgKnZtciA9IHRvX3ZtcihyZWctPm1yKTsK KwkJCQljbWQtPndyLnJlZy5tcm4gPSB2bXItPm1yX2hhbmRsZTsKKwkJCQljbWQtPndyLnJlZy5r ZXkgPSByZWctPmtleTsKKwkJCQljbWQtPndyLnJlZy5hY2Nlc3MgPSByZWctPmFjY2VzczsKKwkJ CQlicmVhazsKKwkJCX0KKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCQl9CisJCQlicmVhazsK KworCQljYXNlIElCX1FQVF9VRDoKKwkJY2FzZSBJQl9RUFRfR1NJOiB7CisJCQlpZiAoIXVkX3dy KHdyKS0+YWgpIHsKKwkJCQlwcl93YXJuKCJ2UkRNQTogaW52YWxpZCBhZGRyZXNzIGhhbmRsZSBp biBVRCBXUlxuIik7CisJCQkJa2ZyZWUoY21kKTsKKwkJCQlyYyA9IC1FSU5WQUw7CisJCQkJZ290 byBvdXRfdW5sb2NrOworCQkJfQorCQkJY21kLT53ci51ZC5yZW1vdGVfcXBuID0gdWRfd3Iod3Ip LT5yZW1vdGVfcXBuOworCQkJY21kLT53ci51ZC5yZW1vdGVfcWtleSA9IHVkX3dyKHdyKS0+cmVt b3RlX3FrZXk7CisJCQljbWQtPndyLnVkLmF2ID0gdG9fdmFoKHVkX3dyKHdyKS0+YWgpLT5hdjsK KwkJCWJyZWFrOworCQl9CisKKwkJZGVmYXVsdDoKKwkJCXByX2VycigidlJETUE6IHVuc3VwcG9y dGVkIFFQIHR5cGUgJWRcbiIsIGlicXAtPnFwX3R5cGUpOworCQkJa2ZyZWUoY21kKTsKKwkJCXJj ID0gLUVJTlZBTDsKKwkJCWdvdG8gb3V0X3VubG9jazsKKwkJfQorCisJCS8qIFByZXBhcmUgc2Nh dHRlcmxpc3QgZm9yIHZpcnRxdWV1ZSAqLworCQlzZ19pbml0X29uZSgmaGRyLCBjbWQsIHNpemVv ZigqY21kKSArIHNnbF9zaXplKTsKKwkJc2dzWzBdID0gJmhkcjsKKworCQlyYyA9IHZpcnRxdWV1 ZV9hZGRfc2dzKHZxcC0+c3EtPnZxLCBzZ3MsIDEsIDAsIGNtZCwgR0ZQX0FUT01JQyk7CisJCWlm IChyYykgeworCQkJZGV2X2VycigmdnFwLT5zcS0+dnEtPnZkZXYtPmRldiwKKwkJCQkidlJETUE6 IGZhaWxlZCB0byBhZGQgc2VuZCBXUiB0byB2cTogJWRcbiIsIHJjKTsKKwkJCWtmcmVlKGNtZCk7 CisJCQlnb3RvIG91dF91bmxvY2s7CisJCX0KKworCQkvKiBBZHZhbmNlIHRvIG5leHQgV1IgKi8K KwkJd3IgPSB3ci0+bmV4dDsKKwl9CisKK291dF91bmxvY2s6CisJc3Bpbl91bmxvY2soJnZxcC0+ c3EtPmxvY2spOworCisJLyogT25seSBraWNrIGFmdGVyIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbihz KSwgYnV0IGFsd2F5cyB0cnkgdG8ga2ljayAqLworCXZpcnRxdWV1ZV9raWNrKHZxcC0+c3EtPnZx KTsKKwlyZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlX29wcyB2 cmRtYV9kZXZfb3BzID0gewogCS5vd25lciA9IFRISVNfTU9EVUxFLAogCS51dmVyYnNfYWJpX3Zl ciA9IFZJUlRJT19SRE1BX0FCSV9WRVJTSU9OLApAQCAtMjI0Niw3ICsyNTUyLDkgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBpYl9kZXZpY2Vfb3BzIHZyZG1hX2Rldl9vcHMgPSB7CiAJLm1tYXBfZnJl ZSA9IHZyZG1hX21tYXBfZnJlZSwKIAkubW9kaWZ5X3BvcnQgPSB2cmRtYV9tb2RpZnlfcG9ydCwK IAkubW9kaWZ5X3FwID0gdnJkbWFfbW9kaWZ5X3FwLAotCS5wb2xsX2NxID0gdnJkbWFfcG9sbF9j cSwJCQkKKwkucG9sbF9jcSA9IHZyZG1hX3BvbGxfY3EsCisJLnBvc3RfcmVjdiA9IHZyZG1hX3Bv c3RfcmVjdiwKKwkucG9zdF9zZW5kID0gdnJkbWFfcG9zdF9zZW5kLAkJCQogfTsKIAogLyoqCi0t IAoyLjQzLjAKCg==