From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak Rawat Subject: [PATCH 08/18] drm/vmwgfx: Implement STDU plane update for BO backed fb Date: Thu, 27 Sep 2018 17:30:10 -0700 Message-ID: <20180928003020.1737-8-drawat@vmware.com> References: <20180928003020.1737-1-drawat@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EX13-EDG-OU-002.vmware.com (ex13-edg-ou-002.vmware.com [208.91.0.190]) by gabe.freedesktop.org (Postfix) with ESMTPS id 09EBD6E632 for ; Fri, 28 Sep 2018 00:30:56 +0000 (UTC) In-Reply-To: <20180928003020.1737-1-drawat@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-graphics-maintainer@vmware.com, thellstrom@vmware.com, syeh@vmware.com Cc: Deepak Rawat List-Id: dri-devel@lists.freedesktop.org VXNpbmcgdGhlIG5ldyBpbnRlcmZhY2UgaW1wbGVtZW50IFNURFUgcGxhbmUgdXBkYXRlIGZvciBC TyBiYWNrZWQgZmIuCgpTaWduZWQtb2ZmLWJ5OiBEZWVwYWsgUmF3YXQgPGRyYXdhdEB2bXdhcmUu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5oICB8ICAxMyArKwog ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3RkdS5jIHwgMjMzICsrKysrKysrKysrKysr KysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5oIGIvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfa21zLmgKaW5kZXggNGI0YTAzMmVhNGFjLi5lZDVhOGY2MmJiMmIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5oCkBAIC0xNTMsNiArMTUzLDE5IEBAIHN0 cnVjdCB2bXdfZHVfdXBkYXRlX3BsYW5lX3N1cmZhY2UgewogCXN0cnVjdCB2bXdfdmFsaWRhdGlv bl9jdHggKmN0eDsKIH07CiAKKy8qKgorICogc3RydWN0IHZtd19kdV91cGRhdGVfcGxhbmVfYnVm ZmVyIC0gQ2xvc3VyZSBzdHJ1Y3R1cmUgZm9yIGJ1ZmZlciBvYmplY3QKKyAqIEBiYXNlOiBCYXNl IGNsb3N1cmUgc3RydWN0dXJlLgorICogQGZiX2xlZnQ6IHgxIGZvciBmYiBkYW1hZ2UgYm91bmRp bmcgYm94LgorICogQGZiX3RvcDogeTEgZm9yIGZiIGRhbWFnZSBib3VuZGluZyBib3guCisgKiBA Y3B1X2JsaXQ6IFRydWUgaWYgbmVlZCBjcHUgYmxpdC4KKyAqLworc3RydWN0IHZtd19kdV91cGRh dGVfcGxhbmVfYnVmZmVyIHsKKwlzdHJ1Y3Qgdm13X2R1X3VwZGF0ZV9wbGFuZSBiYXNlOworCWlu dCBmYl9sZWZ0LCBmYl90b3A7CisJYm9vbCBjcHVfYmxpdDsKK307CisKIC8qKgogICogc3RydWN0 IHZtd19rbXNfZGlydHkgLSBjbG9zdXJlIHN0cnVjdHVyZSBmb3IgdGhlIHZtd19rbXNfaGVscGVy X2RpcnR5CiAgKiBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X3N0ZHUuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0ZHUuYwppbmRl eCAzOTA2N2M3YmIwODMuLjQyODYyNDRkMWMwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfc3RkdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X3N0ZHUuYwpAQCAtMTI0NCw2ICsxMjQ0LDIzOSBAQCB2bXdfc3RkdV9wcmltYXJ5X3BsYW5lX3By ZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJcmV0dXJuIHJldDsKIH0KIAorc3Rh dGljIGludCB2bXdfc3RkdV9ib19wcmVwYXJlKHN0cnVjdCB2bXdfZHVfdXBkYXRlX3BsYW5lICp1 cGRhdGUpCit7CisJc3RydWN0IHZtd19kdV91cGRhdGVfcGxhbmVfYnVmZmVyICpib191cGRhdGU7 CisJc3RydWN0IHZtd19mcmFtZWJ1ZmZlcl9ibyAqdmZiYm87CisKKwlib191cGRhdGUgPSBjb250 YWluZXJfb2YodXBkYXRlLCB0eXBlb2YoKmJvX3VwZGF0ZSksIGJhc2UpOworCXZmYmJvID0gY29u dGFpbmVyX29mKHVwZGF0ZS0+dmZiLCB0eXBlb2YoKnZmYmJvKSwgYmFzZSk7CisKKwlyZXR1cm4g dm13X2ttc19oZWxwZXJfYnVmZmVyX3ByZXBhcmUodXBkYXRlLT5kZXZfcHJpdiwgdmZiYm8tPmJ1 ZmZlciwKKwkJCQkJICAgICBmYWxzZSwgZmFsc2UsIGJvX3VwZGF0ZS0+Y3B1X2JsaXQpOworfQor CitzdGF0aWMgdWludDMyX3Qgdm13X3N0ZHVfYm9fZmlmb19zaXplKHN0cnVjdCB2bXdfZHVfdXBk YXRlX3BsYW5lICp1cGRhdGUsCisJCQkJICAgICAgdWludDMyX3QgbnVtX2hpdHMpCit7CisJcmV0 dXJuIHNpemVvZihzdHJ1Y3Qgdm13X3N0ZHVfZG1hKSArIHNpemVvZihTVkdBM2RDb3B5Qm94KSAq IG51bV9oaXRzICsKKwkJc2l6ZW9mKFNWR0EzZENtZFN1cmZhY2VETUFTdWZmaXgpICsKKwkJc2l6 ZW9mKHN0cnVjdCB2bXdfc3RkdV91cGRhdGUpOworfQorCitzdGF0aWMgdWludDMyX3Qgdm13X3N0 ZHVfYm9fZmlmb19zaXplX2NwdShzdHJ1Y3Qgdm13X2R1X3VwZGF0ZV9wbGFuZSAqdXBkYXRlLAor CQkJCQkgIHVpbnQzMl90IG51bV9oaXRzKQoreworCXJldHVybiBzaXplb2Yoc3RydWN0IHZtd19z dGR1X3VwZGF0ZV9nYl9pbWFnZSkgKworCQlzaXplb2Yoc3RydWN0IHZtd19zdGR1X3VwZGF0ZSk7 Cit9CisKK3N0YXRpYyB1aW50MzJfdCB2bXdfc3RkdV9ib19wb3B1bGF0ZV9kbWEoc3RydWN0IHZt d19kdV91cGRhdGVfcGxhbmUgICp1cGRhdGUsCisJCQkJCSB2b2lkICpjbWQsIHVpbnQzMl90IG51 bV9oaXRzKQoreworCXN0cnVjdCB2bXdfc2NyZWVuX3RhcmdldF9kaXNwbGF5X3VuaXQgKnN0ZHU7 CisJc3RydWN0IHZtd19mcmFtZWJ1ZmZlcl9ibyAqdmZiYm87CisJc3RydWN0IHZtd19zdGR1X2Rt YSAqY21kX2RtYSA9IGNtZDsKKworCXN0ZHUgPSBjb250YWluZXJfb2YodXBkYXRlLT5kdSwgdHlw ZW9mKCpzdGR1KSwgYmFzZSk7CisJdmZiYm8gPSBjb250YWluZXJfb2YodXBkYXRlLT52ZmIsIHR5 cGVvZigqdmZiYm8pLCBiYXNlKTsKKworCWNtZF9kbWEtPmhlYWRlci5pZCA9IFNWR0FfM0RfQ01E X1NVUkZBQ0VfRE1BOworCWNtZF9kbWEtPmhlYWRlci5zaXplID0gc2l6ZW9mKGNtZF9kbWEtPmJv ZHkpICsKKwkJc2l6ZW9mKHN0cnVjdCBTVkdBM2RDb3B5Qm94KSAqIG51bV9oaXRzICsKKwkJc2l6 ZW9mKFNWR0EzZENtZFN1cmZhY2VETUFTdWZmaXgpOworCXZtd19ib19nZXRfZ3Vlc3RfcHRyKCZ2 ZmJiby0+YnVmZmVyLT5iYXNlLCAmY21kX2RtYS0+Ym9keS5ndWVzdC5wdHIpOworCWNtZF9kbWEt PmJvZHkuZ3Vlc3QucGl0Y2ggPSB1cGRhdGUtPnZmYi0+YmFzZS5waXRjaGVzWzBdOworCWNtZF9k bWEtPmJvZHkuaG9zdC5zaWQgPSBzdGR1LT5kaXNwbGF5X3NyZi0+cmVzLmlkOworCWNtZF9kbWEt PmJvZHkuaG9zdC5mYWNlID0gMDsKKwljbWRfZG1hLT5ib2R5Lmhvc3QubWlwbWFwID0gMDsKKwlj bWRfZG1hLT5ib2R5LnRyYW5zZmVyID0gU1ZHQTNEX1dSSVRFX0hPU1RfVlJBTTsKKworCXJldHVy biBzaXplb2YoKmNtZF9kbWEpOworfQorCitzdGF0aWMgdWludDMyX3Qgdm13X3N0ZHVfYm9fcG9w dWxhdGVfY2xpcChzdHJ1Y3Qgdm13X2R1X3VwZGF0ZV9wbGFuZSAgKnVwZGF0ZSwKKwkJCQkJICB2 b2lkICpjbWQsIHN0cnVjdCBkcm1fcmVjdCAqY2xpcCwKKwkJCQkJICB1aW50MzJfdCBmYl94LCB1 aW50MzJfdCBmYl95KQoreworCXN0cnVjdCBTVkdBM2RDb3B5Qm94ICpib3ggPSBjbWQ7CisKKwli b3gtPnNyY3ggPSBmYl94OworCWJveC0+c3JjeSA9IGZiX3k7CisJYm94LT5zcmN6ID0gMDsKKwli b3gtPnggPSBjbGlwLT54MTsKKwlib3gtPnkgPSBjbGlwLT55MTsKKwlib3gtPnogPSAwOworCWJv eC0+dyA9IGRybV9yZWN0X3dpZHRoKGNsaXApOworCWJveC0+aCA9IGRybV9yZWN0X2hlaWdodChj bGlwKTsKKwlib3gtPmQgPSAxOworCisJcmV0dXJuIHNpemVvZigqYm94KTsKK30KKworc3RhdGlj IHVpbnQzMl90IHZtd19zdHVkX2JvX3BvcHVsYXRlX3VwZGF0ZShzdHJ1Y3Qgdm13X2R1X3VwZGF0 ZV9wbGFuZSAgKnVwZGF0ZSwKKwkJCQkJICAgIHZvaWQgKmNtZCwgc3RydWN0IGRybV9yZWN0ICpi YikKK3sKKwlzdHJ1Y3Qgdm13X3NjcmVlbl90YXJnZXRfZGlzcGxheV91bml0ICpzdGR1OworCXN0 cnVjdCB2bXdfZnJhbWVidWZmZXJfYm8gKnZmYmJvOworCVNWR0EzZENtZFN1cmZhY2VETUFTdWZm aXggKnN1ZmZpeCA9IGNtZDsKKworCXN0ZHUgPSBjb250YWluZXJfb2YodXBkYXRlLT5kdSwgdHlw ZW9mKCpzdGR1KSwgYmFzZSk7CisJdmZiYm8gPSBjb250YWluZXJfb2YodXBkYXRlLT52ZmIsIHR5 cGVvZigqdmZiYm8pLCBiYXNlKTsKKworCXN1ZmZpeC0+c3VmZml4U2l6ZSA9IHNpemVvZigqc3Vm Zml4KTsKKwlzdWZmaXgtPm1heGltdW1PZmZzZXQgPSB2ZmJiby0+YnVmZmVyLT5iYXNlLm51bV9w YWdlcyAqIFBBR0VfU0laRTsKKworCXZtd19zdGR1X3BvcHVsYXRlX3VwZGF0ZSgmc3VmZml4WzFd LCBzdGR1LT5iYXNlLnVuaXQsIGJiLT54MSwgYmItPngyLAorCQkJCSBiYi0+eTEsIGJiLT55Mik7 CisKKwlyZXR1cm4gc2l6ZW9mKCpzdWZmaXgpICsgc2l6ZW9mKHN0cnVjdCB2bXdfc3RkdV91cGRh dGUpOworfQorCitzdGF0aWMgdWludDMyX3Qgdm13X3N0ZHVfYm9fcHJlX2NsaXBfY3B1KHN0cnVj dCB2bXdfZHVfdXBkYXRlX3BsYW5lICAqdXBkYXRlLAorCQkJCQkgdm9pZCAqY21kLCB1aW50MzJf dCBudW1faGl0cykKK3sKKwlzdHJ1Y3Qgdm13X2R1X3VwZGF0ZV9wbGFuZV9idWZmZXIgKmJvX3Vw ZGF0ZSA9CisJCWNvbnRhaW5lcl9vZih1cGRhdGUsIHR5cGVvZigqYm9fdXBkYXRlKSwgYmFzZSk7 CisKKwlib191cGRhdGUtPmZiX2xlZnQgPSBJTlRfTUFYOworCWJvX3VwZGF0ZS0+ZmJfdG9wID0g SU5UX01BWDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdWludDMyX3Qgdm13X3N0ZHVfYm9f Y2xpcF9jcHUoc3RydWN0IHZtd19kdV91cGRhdGVfcGxhbmUgICp1cGRhdGUsCisJCQkJICAgICB2 b2lkICpjbWQsIHN0cnVjdCBkcm1fcmVjdCAqY2xpcCwKKwkJCQkgICAgIHVpbnQzMl90IGZiX3gs IHVpbnQzMl90IGZiX3kpCit7CisJc3RydWN0IHZtd19kdV91cGRhdGVfcGxhbmVfYnVmZmVyICpi b191cGRhdGUgPQorCQljb250YWluZXJfb2YodXBkYXRlLCB0eXBlb2YoKmJvX3VwZGF0ZSksIGJh c2UpOworCisJYm9fdXBkYXRlLT5mYl9sZWZ0ID0gbWluX3QoaW50LCBib191cGRhdGUtPmZiX2xl ZnQsIGZiX3gpOworCWJvX3VwZGF0ZS0+ZmJfdG9wID0gbWluX3QoaW50LCBib191cGRhdGUtPmZi X3RvcCwgZmJfeSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVpbnQzMl90Cit2bXdfc3R1 ZF9ib19wb3B1bGF0ZV91cGRhdGVfY3B1KHN0cnVjdCB2bXdfZHVfdXBkYXRlX3BsYW5lICAqdXBk YXRlLCB2b2lkICpjbWQsCisJCQkJc3RydWN0IGRybV9yZWN0ICpiYikKK3sKKwlzdHJ1Y3Qgdm13 X2R1X3VwZGF0ZV9wbGFuZV9idWZmZXIgKmJvX3VwZGF0ZTsKKwlzdHJ1Y3Qgdm13X3NjcmVlbl90 YXJnZXRfZGlzcGxheV91bml0ICpzdGR1OworCXN0cnVjdCB2bXdfZnJhbWVidWZmZXJfYm8gKnZm YmJvOworCXN0cnVjdCB2bXdfZGlmZl9jcHkgZGlmZiA9IFZNV19DUFVfQkxJVF9ESUZGX0lOSVRJ QUxJWkVSKDApOworCXN0cnVjdCB2bXdfc3RkdV91cGRhdGVfZ2JfaW1hZ2UgKmNtZF9pbWcgPSBj bWQ7CisJc3RydWN0IHZtd19zdGR1X3VwZGF0ZSAqY21kX3VwZGF0ZTsKKwlzdHJ1Y3QgdHRtX2J1 ZmZlcl9vYmplY3QgKnNyY19ibywgKmRzdF9ibzsKKwl1MzIgc3JjX29mZnNldCwgZHN0X29mZnNl dDsKKwlzMzIgc3JjX3BpdGNoLCBkc3RfcGl0Y2g7CisJczMyIHdpZHRoLCBoZWlnaHQ7CisKKwli b191cGRhdGUgPSBjb250YWluZXJfb2YodXBkYXRlLCB0eXBlb2YoKmJvX3VwZGF0ZSksIGJhc2Up OworCXN0ZHUgPSBjb250YWluZXJfb2YodXBkYXRlLT5kdSwgdHlwZW9mKCpzdGR1KSwgYmFzZSk7 CisJdmZiYm8gPSBjb250YWluZXJfb2YodXBkYXRlLT52ZmIsIHR5cGVvZigqdmZiYm8pLCBiYXNl KTsKKworCXdpZHRoID0gYmItPngyIC0gYmItPngxOworCWhlaWdodCA9IGJiLT55MiAtIGJiLT55 MTsKKworCWRpZmYuY3BwID0gc3RkdS0+Y3BwOworCisJZHN0X2JvID0gJnN0ZHUtPmRpc3BsYXlf c3JmLT5yZXMuYmFja3VwLT5iYXNlOworCWRzdF9waXRjaCA9IHN0ZHUtPmRpc3BsYXlfc3JmLT5i YXNlX3NpemUud2lkdGggKiBzdGR1LT5jcHA7CisJZHN0X29mZnNldCA9IGJiLT55MSAqIGRzdF9w aXRjaCArIGJiLT54MSAqIHN0ZHUtPmNwcDsKKworCXNyY19ibyA9ICZ2ZmJiby0+YnVmZmVyLT5i YXNlOworCXNyY19waXRjaCA9IHVwZGF0ZS0+dmZiLT5iYXNlLnBpdGNoZXNbMF07CisJc3JjX29m ZnNldCA9IGJvX3VwZGF0ZS0+ZmJfdG9wICogc3JjX3BpdGNoICsgYm9fdXBkYXRlLT5mYl9sZWZ0 ICoKKwkJc3RkdS0+Y3BwOworCisJKHZvaWQpIHZtd19ib19jcHVfYmxpdChkc3RfYm8sIGRzdF9v ZmZzZXQsIGRzdF9waXRjaCwgc3JjX2JvLAorCQkJICAgICAgIHNyY19vZmZzZXQsIHNyY19waXRj aCwgd2lkdGggKiBzdGR1LT5jcHAsIGhlaWdodCwKKwkJCSAgICAgICAmZGlmZik7CisKKwlpZiAo ZHJtX3JlY3RfdmlzaWJsZSgmZGlmZi5yZWN0KSkgeworCQlTVkdBM2RCb3ggKmJveCA9ICZjbWRf aW1nLT5ib2R5LmJveDsKKworCQljbWRfaW1nLT5oZWFkZXIuaWQgPSBTVkdBXzNEX0NNRF9VUERB VEVfR0JfSU1BR0U7CisJCWNtZF9pbWctPmhlYWRlci5zaXplID0gc2l6ZW9mKGNtZF9pbWctPmJv ZHkpOworCQljbWRfaW1nLT5ib2R5LmltYWdlLnNpZCA9IHN0ZHUtPmRpc3BsYXlfc3JmLT5yZXMu aWQ7CisJCWNtZF9pbWctPmJvZHkuaW1hZ2UuZmFjZSA9IDA7CisJCWNtZF9pbWctPmJvZHkuaW1h Z2UubWlwbWFwID0gMDsKKworCQlib3gtPnggPSBkaWZmLnJlY3QueDE7CisJCWJveC0+eSA9IGRp ZmYucmVjdC55MTsKKwkJYm94LT56ID0gMDsKKwkJYm94LT53ID0gZHJtX3JlY3Rfd2lkdGgoJmRp ZmYucmVjdCk7CisJCWJveC0+aCA9IGRybV9yZWN0X2hlaWdodCgmZGlmZi5yZWN0KTsKKwkJYm94 LT5kID0gMTsKKworCQljbWRfdXBkYXRlID0gKHN0cnVjdCB2bXdfc3RkdV91cGRhdGUgKikmY21k X2ltZ1sxXTsKKwkJdm13X3N0ZHVfcG9wdWxhdGVfdXBkYXRlKGNtZF91cGRhdGUsIHN0ZHUtPmJh c2UudW5pdCwKKwkJCQkJIGRpZmYucmVjdC54MSwgZGlmZi5yZWN0LngyLAorCQkJCQkgZGlmZi5y ZWN0LnkxLCBkaWZmLnJlY3QueTIpOworCisJCXJldHVybiBzaXplb2YoKmNtZF9pbWcpICsgc2l6 ZW9mKCpjbWRfdXBkYXRlKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdm13 X3N0ZHVfYm9fZmluaXNoKHN0cnVjdCB2bXdfZHVfdXBkYXRlX3BsYW5lICp1cGRhdGUpCit7CisJ c3RydWN0IHZtd19mcmFtZWJ1ZmZlcl9ibyAqdmZiYm8gPSBjb250YWluZXJfb2YodXBkYXRlLT52 ZmIsCisJCQkJCQkJdHlwZW9mKCp2ZmJibyksIGJhc2UpOworCisJdm13X2ttc19oZWxwZXJfYnVm ZmVyX2ZpbmlzaCh1cGRhdGUtPmRldl9wcml2LCBOVUxMLCB2ZmJiby0+YnVmZmVyLAorCQkJCSAg ICAgTlVMTCwgTlVMTCk7Cit9CisKKy8qKgorICogdm13X3N0ZHVfcGxhbmVfdXBkYXRlX2JvIC0g VXBkYXRlIGRpc3BsYXkgdW5pdCBmb3IgYm8gYmFja2VkIGZiLgorICogQGRldl9wcml2OiBkZXZp Y2UgcHJpdmF0ZS4KKyAqIEBwbGFuZTogcGxhbmUgc3RhdGUuCisgKiBAb2xkX3N0YXRlOiBvbGQg cGxhbmUgc3RhdGUuCisgKiBAdmZiOiBmcmFtZWJ1ZmZlciB3aGljaCBpcyBibGl0dGVkIHRvIGRp c3BsYXkgdW5pdC4KKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVy cm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGludCB2bXdfc3RkdV9wbGFuZV91cGRh dGVfYm8oc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCisJCQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSwK KwkJCQkgICAgc3RydWN0IHZtd19mcmFtZWJ1ZmZlciAqdmZiKQoreworCXN0cnVjdCB2bXdfZHVf dXBkYXRlX3BsYW5lX2J1ZmZlciBib191cGRhdGU7CisKKwltZW1zZXQoJmJvX3VwZGF0ZSwgMCwg c2l6ZW9mKHN0cnVjdCB2bXdfZHVfdXBkYXRlX3BsYW5lX2J1ZmZlcikpOworCWJvX3VwZGF0ZS5i YXNlLnBsYW5lID0gcGxhbmU7CisJYm9fdXBkYXRlLmJhc2Uub2xkX3N0YXRlID0gb2xkX3N0YXRl OworCWJvX3VwZGF0ZS5iYXNlLmRldl9wcml2ID0gZGV2X3ByaXY7CisJYm9fdXBkYXRlLmJhc2Uu ZHUgPSB2bXdfY3J0Y190b19kdShwbGFuZS0+c3RhdGUtPmNydGMpOworCWJvX3VwZGF0ZS5iYXNl LnZmYiA9IHZmYjsKKworCWJvX3VwZGF0ZS5jcHVfYmxpdCA9ICEoZGV2X3ByaXYtPmNhcGFiaWxp dGllcyAmIFNWR0FfQ0FQXzNEKTsKKworCWJvX3VwZGF0ZS5iYXNlLnByZXBhcmUgPSB2bXdfc3Rk dV9ib19wcmVwYXJlOworCisJaWYgKGJvX3VwZGF0ZS5jcHVfYmxpdCkgeworCQlib191cGRhdGUu YmFzZS5jYWxjX2ZpZm9fc2l6ZSA9IHZtd19zdGR1X2JvX2ZpZm9fc2l6ZV9jcHU7CisJCWJvX3Vw ZGF0ZS5iYXNlLnByZV9jbGlwID0gdm13X3N0ZHVfYm9fcHJlX2NsaXBfY3B1OworCQlib191cGRh dGUuYmFzZS5jbGlwID0gdm13X3N0ZHVfYm9fY2xpcF9jcHU7CisJCWJvX3VwZGF0ZS5iYXNlLnBv c3RfY2xpcCA9IHZtd19zdHVkX2JvX3BvcHVsYXRlX3VwZGF0ZV9jcHU7CisJfSBlbHNlIHsKKwkJ Ym9fdXBkYXRlLmJhc2UuY2FsY19maWZvX3NpemUgPSB2bXdfc3RkdV9ib19maWZvX3NpemU7CisJ CWJvX3VwZGF0ZS5iYXNlLnByZV9jbGlwID0gdm13X3N0ZHVfYm9fcG9wdWxhdGVfZG1hOworCQli b191cGRhdGUuYmFzZS5jbGlwID0gdm13X3N0ZHVfYm9fcG9wdWxhdGVfY2xpcDsKKwkJYm9fdXBk YXRlLmJhc2UucG9zdF9jbGlwID0gdm13X3N0dWRfYm9fcG9wdWxhdGVfdXBkYXRlOworCX0KKwor CWJvX3VwZGF0ZS5iYXNlLmZpbmlzaCA9IHZtd19zdGR1X2JvX2ZpbmlzaDsKKwkvKiBOb3RoaW5n IHNwZWNpYWwgdG8gZG8gZm9yIHJldmVydCAqLworCWJvX3VwZGF0ZS5iYXNlLnJldmVydCA9IHZt d19zdGR1X2JvX2ZpbmlzaDsKKworCXJldHVybiB2bXdfZHVfaGVscGVyX3BsYW5lX3VwZGF0ZSgm Ym9fdXBkYXRlLmJhc2UpOworfQorCiBzdGF0aWMgaW50IHZtd19zdGR1X3N1cmZhY2VfcHJlcGFy ZShzdHJ1Y3Qgdm13X2R1X3VwZGF0ZV9wbGFuZSAqdXBkYXRlKQogewogCXN0cnVjdCB2bXdfZHVf dXBkYXRlX3BsYW5lX3N1cmZhY2UgKnNyZl91cGRhdGU7Ci0tIAoyLjE3LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=