From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaolin Zhang Subject: [PATCH v8 3/9] drm/i915: vgpu pv command buffer support Date: Tue, 23 Jul 2019 19:31:58 +0800 Message-ID: <1563881524-147440-4-git-send-email-xiaolin.zhang@intel.com> References: <1563881524-147440-1-git-send-email-xiaolin.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1563881524-147440-1-git-send-email-xiaolin.zhang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gvt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: zhenyu.z.wang@intel.com, hang.yuan@intel.com, zhiyuan.lv@intel.com List-Id: intel-gfx@lists.freedesktop.org YmFzZWQgb24gdGhlIHNoYXJlZCBtZW1vcnkgc2V0dXAgYmV0d2VlbiBndWVzdCBhbmQgR1ZULCB0 aGUgc2ltcGxlCnB2IGNvbW1hbmQgYnVmZmVyIHJpbmcgd2FzIGludHJvZHVjZWQgYnkgdGhpcyBw YXRjaCB1c2VkIHRvIHBlcmZvcm0KZ3Vlc3QtMi1ndnQgc2luZ2xlIGRpcmVjdGlvbiBjb21tdW5p Y2F0aW9uLgoKdjE6IGluaXRpYWwgc3VwcG9ydCwgYWRkZWQgdG8gYWRkcmVzcyBpOTE1IFBWIHY2 IHBhdGNoIHNldCBjb21tZW50LgoKU2lnbmVkLW9mZi1ieTogWGlhb2xpbiBaaGFuZyA8eGlhb2xp bi56aGFuZ0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wdmluZm8u aCB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYyAgIHwgMTkzICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdmdwdS5oICAgfCAgNjYgKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyNjAgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHZpbmZv LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3B2aW5mby5oCmluZGV4IDNjNjM2MDMuLmRi OWVlYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHZpbmZvLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wdmluZm8uaApAQCAtNDksNiArNDksNyBAQCBl bnVtIHZndF9nMnZfdHlwZSB7CiAJVkdUX0cyVl9FWEVDTElTVF9DT05URVhUX0NSRUFURSwKIAlW R1RfRzJWX0VYRUNMSVNUX0NPTlRFWFRfREVTVFJPWSwKIAlWR1RfRzJWX1NIQVJFRF9QQUdFX1NF VFVQLAorCVZHVF9HMlZfUFZfU0VORF9UUklHR0VSLAogCVZHVF9HMlZfTUFYLAogfTsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZncHUuYwppbmRleCA5OThjZjZhLi4xMjRhMDcwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3ZncHUuYwpAQCAtMzEzLDYgKzMxMywxODcgQEAgaW50IGludGVsX3ZndF9iYWxsb29u KHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCiAgKiBpOTE1IHZncHUgUFYgc3VwcG9ydCBmb3IgTGlu dXgKICAqLwogCisvKioKKyAqIHdhaXRfZm9yX2Rlc2NfdXBkYXRlIC0gV2FpdCBmb3IgdGhlIGNv bW1hbmQgYnVmZmVyIGRlc2NyaXB0b3IgdXBkYXRlLgorICogQGRlc2M6CWJ1ZmZlciBkZXNjcmlw dG9yCisgKiBAZmVuY2U6CXJlc3BvbnNlIGZlbmNlCisgKiBAc3RhdHVzOglwbGFjZWhvbGRlciBm b3Igc3RhdHVzCisgKgorICogR1ZUIHdpbGwgdXBkYXRlIGNvbW1hbmQgYnVmZmVyIGRlc2NyaXB0 b3Igd2l0aCBuZXcgZmVuY2UgYW5kIHN0YXR1cworICogYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgY29t bWFuZCBpZGVudGlmaWVkIGJ5IHRoZSBmZW5jZS4gV2FpdCBmb3IKKyAqIHNwZWNpZmllZCBmZW5j ZSBhbmQgdGhlbiByZWFkIGZyb20gdGhlIGRlc2NyaXB0b3Igc3RhdHVzIG9mIHRoZQorICogY29t bWFuZC4KKyAqCisgKiBSZXR1cm46CisgKiAqCTAgcmVzcG9uc2UgcmVjZWl2ZWQgKHN0YXR1cyBp cyB2YWxpZCkKKyAqICoJLUVUSU1FRE9VVCBubyByZXNwb25zZSB3aXRoaW4gaGFyZGNvZGVkIHRp bWVvdXQKKyAqICoJLUVQUk9UTyBubyByZXNwb25zZSwgQ1QgYnVmZmVyIGlzIGluIGVycm9yCisg Ki8KK3N0YXRpYyBpbnQgd2FpdF9mb3JfZGVzY191cGRhdGUoc3RydWN0IHZncHVfcHZfY3RfYnVm ZmVyX2Rlc2MgKmRlc2MsCisJCXUzMiBmZW5jZSwgdTMyICpzdGF0dXMpCit7CisJaW50IGVycjsK KworI2RlZmluZSBkb25lIChSRUFEX09OQ0UoZGVzYy0+ZmVuY2UpID09IGZlbmNlKQorCWVyciA9 IHdhaXRfZm9yX3VzKGRvbmUsIDUpOworCWlmIChlcnIpCisJCWVyciA9IHdhaXRfZm9yKGRvbmUs IDEwKTsKKyN1bmRlZiBkb25lCisKKwlpZiAodW5saWtlbHkoZXJyKSkgeworCQlEUk1fRVJST1Io IkNUOiBmZW5jZSAldSBmYWlsZWQ7IHJlcG9ydGVkIGZlbmNlPSV1XG4iLAorCQkJCWZlbmNlLCBk ZXNjLT5mZW5jZSk7CisJfQorCisJKnN0YXR1cyA9IGRlc2MtPnN0YXR1czsKKwlyZXR1cm4gZXJy OworfQorCisvKioKKyAqIERPQzogQ1RCIEd1ZXN0IHRvIEdWVCByZXF1ZXN0CisgKgorICogRm9y bWF0IG9mIHRoZSBDVEIgR3Vlc3QgdG8gR1ZUIHJlcXVlc3QgbWVzc2FnZSBpcyBhcyBmb2xsb3dz OjoKKyAqCisgKiAgICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKworICogICAgICB8ICAgbXNnWzBdICAgfCAgIFsxXSAgIHwgICBbMl0gICB8 ICAgLi4uICAgfCAgW24tMV0gIHwKKyAqICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rCisgKiAgICAgIHwgICBNRVNTQUdFICB8ICAgICAg IE1FU1NBR0UgUEFZTE9BRCAgICAgICAgICAgICAgICAgfAorICogICAgICArICAgSEVBREVSICAg Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKKyAqICAgICAgfCAgICAg ICAgICAgIHwgICAgMCAgICB8ICAgIDEgICAgfCAgIC4uLiAgIHwgICAgbiAgICB8CisgKiAgICAg ICs9PT09PT09PT09PT0rPT09PT09PT09Kz09PT09PT09PSs9PT09PT09PT0rPT09PT09PT09Kwor ICogICAgICB8ICBsZW4gPj0gMSAgfCAgRkVOQ0UgIHwgICAgIHJlcXVlc3Qgc3BlY2lmaWMgZGF0 YSAgIHwKKyAqICAgICAgKy0tLS0tLSstLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rCisgKgorICogICAgICAgICAgICAgICAgICAgXi0tLS0tLS0tLS0tLS0tLS0t bGVuLS0tLS0tLS0tLS0tLS0tLS0tLV4KKyAqLworc3RhdGljIGludCBwdl9jb21tYW5kX2J1ZmZl cl93cml0ZShzdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdV9wdiAqcHYsCisJCWNvbnN0IHUzMiAqYWN0 aW9uLCB1MzIgbGVuIC8qIGluIGR3b3JkcyAqLywgdTMyIGZlbmNlKQoreworCXN0cnVjdCB2Z3B1 X3B2X2N0X2J1ZmZlcl9kZXNjICpkZXNjID0gcHYtPmN0Yi5kZXNjOworCXUzMiBoZWFkID0gZGVz Yy0+aGVhZCAvIDQ7CS8qIGluIGR3b3JkcyAqLworCXUzMiB0YWlsID0gZGVzYy0+dGFpbCAvIDQ7 CS8qIGluIGR3b3JkcyAqLworCXUzMiBzaXplID0gZGVzYy0+c2l6ZSAvIDQ7CS8qIGluIGR3b3Jk cyAqLworCXUzMiB1c2VkOwkJCS8qIGluIGR3b3JkcyAqLworCXUzMiBoZWFkZXI7CisJdTMyICpj bWRzID0gcHYtPmN0Yi5jbWRzOworCXVuc2lnbmVkIGludCBpOworCisJR0VNX0JVR19PTihkZXNj LT5zaXplICUgNCk7CisJR0VNX0JVR19PTihkZXNjLT5oZWFkICUgNCk7CisJR0VNX0JVR19PTihk ZXNjLT50YWlsICUgNCk7CisJR0VNX0JVR19PTih0YWlsID49IHNpemUpOworCisJLyoKKwkgKiB0 YWlsID09IGhlYWQgY29uZGl0aW9uIGluZGljYXRlcyBlbXB0eS4KKwkgKi8KKwlpZiAodGFpbCA8 IGhlYWQpCisJCXVzZWQgPSAoc2l6ZSAtIGhlYWQpICsgdGFpbDsKKwllbHNlCisJCXVzZWQgPSB0 YWlsIC0gaGVhZDsKKworCS8qIG1ha2Ugc3VyZSB0aGVyZSBpcyBhIHNwYWNlIGluY2x1ZGluZyBl eHRyYSBkdyBmb3IgdGhlIGZlbmNlICovCisJaWYgKHVubGlrZWx5KHVzZWQgKyBsZW4gKyAxID49 IHNpemUpKQorCQlyZXR1cm4gLUVOT1NQQzsKKworCS8qCisJICogV3JpdGUgdGhlIG1lc3NhZ2Uu IFRoZSBmb3JtYXQgaXMgdGhlIGZvbGxvd2luZzoKKwkgKiBEVzA6IGhlYWRlciAoaW5jbHVkaW5n IGFjdGlvbiBjb2RlKQorCSAqIERXMTogZmVuY2UKKwkgKiBEVzIrOiBhY3Rpb24gZGF0YQorCSAq LworCWhlYWRlciA9IChsZW4gPDwgUFZfQ1RfTVNHX0xFTl9TSElGVCkgfAorCQkgKFBWX0NUX01T R19XUklURV9GRU5DRV9UT19ERVNDKSB8CisJCSAoYWN0aW9uWzBdIDw8IFBWX0NUX01TR19BQ1RJ T05fU0hJRlQpOworCisJY21kc1t0YWlsXSA9IGhlYWRlcjsKKwl0YWlsID0gKHRhaWwgKyAxKSAl IHNpemU7CisKKwljbWRzW3RhaWxdID0gZmVuY2U7CisJdGFpbCA9ICh0YWlsICsgMSkgJSBzaXpl OworCisJZm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKSB7CisJCWNtZHNbdGFpbF0gPSBhY3Rpb25b aV07CisJCXRhaWwgPSAodGFpbCArIDEpICUgc2l6ZTsKKwl9CisKKwkvKiBub3cgdXBkYXRlIGRl c2MgdGFpbCAoYmFjayBpbiBieXRlcykgKi8KKwlkZXNjLT50YWlsID0gdGFpbCAqIDQ7CisJR0VN X0JVR19PTihkZXNjLT50YWlsID4gZGVzYy0+c2l6ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHUzMiBwdl9nZXRfbmV4dF9mZW5jZShzdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdV9wdiAqcHYp Cit7CisJLyogRm9yIG5vdyBpdCdzIHRyaXZpYWwgKi8KKwlyZXR1cm4gKytwdi0+bmV4dF9mZW5j ZTsKK30KKworc3RhdGljIGludCBwdl9zZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKKwkJY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sIHUzMiAqc3RhdHVzKQoreworCXN0 cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1ICp2Z3B1ID0gJmRldl9wcml2LT52Z3B1OworCXN0cnVjdCBp OTE1X3ZpcnR1YWxfZ3B1X3B2ICpwdiA9IHZncHUtPnB2OworCisJc3RydWN0IHZncHVfcHZfY3Rf YnVmZmVyX2Rlc2MgKmRlc2MgPSBwdi0+Y3RiLmRlc2M7CisKKwl1MzIgZmVuY2U7CisJaW50IGVy cjsKKworCUdFTV9CVUdfT04oIXB2LT5lbmFibGVkKTsKKwlHRU1fQlVHX09OKCFsZW4pOworCUdF TV9CVUdfT04obGVuICYgflBWX0NUX01TR19MRU5fTUFTSyk7CisKKwlmZW5jZSA9IHB2X2dldF9u ZXh0X2ZlbmNlKHB2KTsKKwllcnIgPSBwdl9jb21tYW5kX2J1ZmZlcl93cml0ZShwdiwgYWN0aW9u LCBsZW4sIGZlbmNlKTsKKwlpZiAodW5saWtlbHkoZXJyKSkKKwkJZ290byB1bmxpbms7CisKKwlp bnRlbF92Z3B1X3B2X25vdGlmeShkZXZfcHJpdik7CisKKwllcnIgPSB3YWl0X2Zvcl9kZXNjX3Vw ZGF0ZShkZXNjLCBmZW5jZSwgc3RhdHVzKTsKKwlpZiAodW5saWtlbHkoZXJyKSkKKwkJZ290byB1 bmxpbms7CisKKwlpZiAoKCpzdGF0dXMpKSB7CisJCWVyciA9IC1FSU87CisJCWdvdG8gdW5saW5r OworCX0KKworCWVyciA9ICgqc3RhdHVzKTsKK3VubGluazoKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgaW50IGludGVsX3ZncHVfcHZfc2VuZF9jb21tYW5kX2J1ZmZlcigKKwkJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQl1MzIgKmFjdGlvbiwgdTMyIGxlbikKK3sKKwlz dHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdSAqdmdwdSA9ICZkZXZfcHJpdi0+dmdwdTsKKworCXUzMiBz dGF0dXMgPSB+MDsgLyogdW5kZWZpbmVkICovCisJaW50IHJldDsKKworCW11dGV4X2xvY2soJnZn cHUtPnB2LT5zZW5kX211dGV4KTsKKworCXJldCA9IHB2X3NlbmQoZGV2X3ByaXYsIGFjdGlvbiwg bGVuLCAmc3RhdHVzKTsKKwlpZiAodW5saWtlbHkocmV0IDwgMCkpIHsKKwkJRFJNX0VSUk9SKCJQ Vjogc2VuZCBhY3Rpb24gJSNYIGZhaWxlZDsgZXJyPSVkIHN0YXR1cz0lI1hcbiIsCisJCQkgIGFj dGlvblswXSwgcmV0LCBzdGF0dXMpOworCX0gZWxzZSBpZiAodW5saWtlbHkocmV0KSkgeworCQlE Uk1fRVJST1IoIlBWOiBzZW5kIGFjdGlvbiAlI3ggcmV0dXJuZWQgJWQgKCUjeClcbiIsCisJCQkJ YWN0aW9uWzBdLCByZXQsIHJldCk7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZ2Z3B1LT5wdi0+c2Vu ZF9tdXRleCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfdmdwdV9wdl9u b3RpZnlfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJSTkxNV9X UklURSh2Z3RpZl9yZWcoZzJ2X25vdGlmeSksIFZHVF9HMlZfUFZfU0VORF9UUklHR0VSKTsKK30K KwogLyoKICAqIHNoYXJlZF9wYWdlIHNldHVwIGZvciBWR1BVIFBWIGZlYXR1cmVzCiAgKi8KQEAg LTM4NSw2ICs1NjYsMTggQEAgc3RhdGljIGludCBpbnRlbF92Z3B1X3NldHVwX3NoYXJlZF9wYWdl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlwdi0+c2hhcmVkX3BhZ2UgPSBi YXNlOwogCXB2LT5lbmFibGVkID0gdHJ1ZTsKIAorCS8qIHNldHVwIFBWIGNvbW1hbmQgYnVmZmVy IHB0ciAqLworCXB2LT5jdGIuZGVzYyA9ICh2b2lkICopYmFzZSArIFBWX0RFU0NfT0ZGOworCXB2 LT5jdGIuY21kcyA9ICh2b2lkICopYmFzZSArIFBWX0NNRF9PRkY7CisKKwlwdi0+Y3RiLmRlc2Mt PnNpemUgPSBQQUdFX1NJWkUvMjsKKwlwdi0+Y3RiLmRlc2MtPmFkZHIgPSBQVl9DTURfT0ZGOwor CisJLyogc2V0dXAgUFYgY29tbWFuZCBidWZmZXIgY2FsbGJhY2sgKi8KKwlwdi0+c2VuZCA9IGlu dGVsX3ZncHVfcHZfc2VuZF9jb21tYW5kX2J1ZmZlcjsKKwlwdi0+bm90aWZ5ID0gaW50ZWxfdmdw dV9wdl9ub3RpZnlfbW1pbzsKKwltdXRleF9pbml0KCZwdi0+c2VuZF9tdXRleCk7CisKIAlyZXR1 cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAppbmRleCA5YjZhOGQxLi4yNGM0OWI3 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaApAQCAtMjksNiArMjksOCBAQAogCiAjZGVmaW5l IFBWX01BSk9SCQkxCiAjZGVmaW5lIFBWX01JTk9SCQkwCisjZGVmaW5lIFBWX0RFU0NfT0ZGCQko UEFHRV9TSVpFLzQpCisjZGVmaW5lIFBWX0NNRF9PRkYJCShQQUdFX1NJWkUvMikKIAogLyoKICAq IEEgc2hhcmVkIHBhZ2UoNEtCKSBiZXR3ZWVuIGd2dCBhbmQgVk0sIGNvdWxkIGJlIGFsbG9jYXRl ZCBieSBndWVzdCBkcml2ZXIKQEAgLTM5LDkgKzQxLDYwIEBAIHN0cnVjdCBndnRfc2hhcmVkX3Bh Z2UgewogCXUxNiB2ZXJfbWlub3I7CiB9OwogCisvKgorICogRGVmaW5pdGlvbiBvZiB0aGUgY29t bWFuZCB0cmFuc3BvcnQgbWVzc2FnZSBoZWFkZXIgKERXMCkKKyAqCisgKiBiaXRbNC4uMF0JbWVz c2FnZSBsZW4gKGluIGR3b3JkcykKKyAqIGJpdFs3Li41XQlyZXNlcnZlZAorICogYml0WzhdCQl3 cml0ZSBmZW5jZSB0byBkZXNjCisgKiBiaXRbOS4uMTFdCXJlc2VydmVkCisgKiBiaXRbMzEuLjE2 XQlhY3Rpb24gY29kZQorICovCisjZGVmaW5lIFBWX0NUX01TR19MRU5fU0hJRlQJCQkJMAorI2Rl ZmluZSBQVl9DVF9NU0dfTEVOX01BU0sJCQkJMHgxRgorI2RlZmluZSBQVl9DVF9NU0dfV1JJVEVf RkVOQ0VfVE9fREVTQwkoMSA8PCA4KQorI2RlZmluZSBQVl9DVF9NU0dfQUNUSU9OX1NISUZUCQkJ MTYKKyNkZWZpbmUgUFZfQ1RfTVNHX0FDVElPTl9NQVNLCQkJMHhGRkZGCisKKy8qIFBWIGNvbW1h bmQgdHJhbnNwb3J0IGJ1ZmZlciBkZXNjcmlwdG9yICovCitzdHJ1Y3QgdmdwdV9wdl9jdF9idWZm ZXJfZGVzYyB7CisJdTMyIGFkZHI7CQkvKiBnZnggYWRkcmVzcyAqLworCXUzMiBzaXplOwkJLyog c2l6ZSBpbiBieXRlcyAqLworCXUzMiBoZWFkOwkJLyogb2Zmc2V0IHVwZGF0ZWQgYnkgR1ZUICov CisJdTMyIHRhaWw7CQkvKiBvZmZzZXQgdXBkYXRlZCBieSBvd25lciAqLworCisJdTMyIGZlbmNl OwkJLyogZmVuY2UgdXBkYXRlZCBieSBHVlQgKi8KKwl1MzIgc3RhdHVzOwkJLyogc3RhdHVzIHVw ZGF0ZWQgYnkgR1ZUICovCit9IF9fcGFja2VkOworCisvKiogUFYgc2luZ2xlIGNvbW1hbmQgdHJh bnNwb3J0IGJ1ZmZlci4KKyAqCisgKiBBIHNpbmdsZSBjb21tYW5kIHRyYW5zcG9ydCBidWZmZXIg Y29uc2lzdHMgb2YgdHdvIHBhcnRzLCB0aGUgaGVhZGVyCisgKiByZWNvcmQgKGNvbW1hbmQgdHJh bnNwb3J0IGJ1ZmZlciBkZXNjcmlwdG9yKSBhbmQgdGhlIGFjdHVhbCBidWZmZXIgd2hpY2gKKyAq IGhvbGRzIHRoZSBjb21tYW5kcy4KKyAqCisgKiBAZGVzYzogcG9pbnRlciB0byB0aGUgYnVmZmVy IGRlc2NyaXB0b3IKKyAqIEBjbWRzOiBwb2ludGVyIHRvIHRoZSBjb21tYW5kcyBidWZmZXIKKyAq Lworc3RydWN0IHZncHVfcHZfY3RfYnVmZmVyIHsKKwlzdHJ1Y3QgdmdwdV9wdl9jdF9idWZmZXJf ZGVzYyAqZGVzYzsKKwl1MzIgKmNtZHM7Cit9OworCiBzdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdV9w diB7CiAJc3RydWN0IGd2dF9zaGFyZWRfcGFnZSAqc2hhcmVkX3BhZ2U7CiAJYm9vbCBlbmFibGVk OworCisJLyogUFYgY29tbWFuZCBidWZmZXIgc3VwcG9ydCAqLworCXN0cnVjdCB2Z3B1X3B2X2N0 X2J1ZmZlciBjdGI7CisJdTMyIG5leHRfZmVuY2U7CisKKwkvKiBUbyBzZXJpYWxpemUgdGhlIHZn cHUgUFYgc2VuZCBhY3Rpb25zICovCisJc3RydWN0IG11dGV4IHNlbmRfbXV0ZXg7CisKKwkvKiBW R1BVJ3MgUFYgc3BlY2lmaWMgc2VuZCBmdW5jdGlvbiAqLworCWludCAoKnNlbmQpKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyICpkYXRhLCB1MzIgbGVuKTsKKwl2b2lkICgq bm90aWZ5KShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogfTsKIAogdm9pZCBp OTE1X2RldGVjdF92Z3B1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CkBAIC02 Niw2ICsxMTksMTkgQEAgc3RydWN0IGk5MTVfdmlydHVhbF9ncHVfcHYgewogCXJldHVybiBkZXZf cHJpdi0+dmdwdS5jYXBzICYgVkdUX0NBUFNfUFY7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZAor aW50ZWxfdmdwdV9wdl9ub3RpZnkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQor eworCWRldl9wcml2LT52Z3B1LnB2LT5ub3RpZnkoZGV2X3ByaXYpOworfQorCitzdGF0aWMgaW5s aW5lIGludAoraW50ZWxfdmdwdV9wdl9zZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKKwkJdTMyICphY3Rpb24sIHUzMiBsZW4pCit7CisJcmV0dXJuIGRldl9wcml2LT52Z3B1 LnB2LT5zZW5kKGRldl9wcml2LCBhY3Rpb24sIGxlbik7Cit9CisKIGludCBpbnRlbF92Z3RfYmFs bG9vbihzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KTsKIHZvaWQgaW50ZWxfdmd0X2RlYmFsbG9vbihz dHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KTsKIAotLSAKMS44LjMuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4