From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak Rawat Subject: [PATCH v3 08/18] drm/vmwgfx: Implement STDU plane update for BO backed fb Date: Wed, 10 Oct 2018 17:16:47 -0700 Message-ID: <20181011001657.1715-8-drawat@vmware.com> References: <20181011001657.1715-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 B60CF6E375 for ; Thu, 11 Oct 2018 00:17:18 +0000 (UTC) In-Reply-To: <20181011001657.1715-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 TyBiYWNrZWQgZmIuCgp2MjogUmViYXNlIHRvIG5ldyByZXNvdXJjZSB2YWxpZGF0aW9uLgoKU2ln bmVkLW9mZi1ieTogRGVlcGFrIFJhd2F0IDxkcmF3YXRAdm13YXJlLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuaCAgfCAgMTEgKysKIGRyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X3N0ZHUuYyB8IDIxMiArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIg ZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2ttcy5oCmluZGV4IGYyZjU3ZTU4ZGQ4OC4uNzNmYzUxZjQzNDAwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9rbXMuaApAQCAtMTI5LDYgKzEyOSwxNyBAQCBzdHJ1Y3Qgdm13X2R1X3VwZGF0 ZV9wbGFuZSB7CiAJYm9vbCBpbnRyOwogfTsKIAorLyoqCisgKiBzdHJ1Y3Qgdm13X2R1X3VwZGF0 ZV9wbGFuZV9idWZmZXIgLSBDbG9zdXJlIHN0cnVjdHVyZSBmb3IgYnVmZmVyIG9iamVjdAorICog QGJhc2U6IEJhc2UgY2xvc3VyZSBzdHJ1Y3R1cmUuCisgKiBAZmJfbGVmdDogeDEgZm9yIGZiIGRh bWFnZSBib3VuZGluZyBib3guCisgKiBAZmJfdG9wOiB5MSBmb3IgZmIgZGFtYWdlIGJvdW5kaW5n IGJveC4KKyAqLworc3RydWN0IHZtd19kdV91cGRhdGVfcGxhbmVfYnVmZmVyIHsKKwlzdHJ1Y3Qg dm13X2R1X3VwZGF0ZV9wbGFuZSBiYXNlOworCWludCBmYl9sZWZ0LCBmYl90b3A7Cit9OworCiAv KioKICAqIHN0cnVjdCB2bXdfa21zX2RpcnR5IC0gY2xvc3VyZSBzdHJ1Y3R1cmUgZm9yIHRoZSB2 bXdfa21zX2hlbHBlcl9kaXJ0eQogICogZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdGR1LmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9zdGR1LmMKaW5kZXggN2Q1ZTA4MGY4ZTI5Li5hMDg0YTBmNTMzZDggMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0ZHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v dm13Z2Z4L3Ztd2dmeF9zdGR1LmMKQEAgLTEyNjEsNiArMTI2MSwyMTggQEAgdm13X3N0ZHVfcHJp bWFyeV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXJldHVybiBy ZXQ7CiB9CiAKK3N0YXRpYyB1aW50MzJfdCB2bXdfc3RkdV9ib19maWZvX3NpemUoc3RydWN0IHZt d19kdV91cGRhdGVfcGxhbmUgKnVwZGF0ZSwKKwkJCQkgICAgICB1aW50MzJfdCBudW1faGl0cykK K3sKKwlyZXR1cm4gc2l6ZW9mKHN0cnVjdCB2bXdfc3RkdV9kbWEpICsgc2l6ZW9mKFNWR0EzZENv cHlCb3gpICogbnVtX2hpdHMgKworCQlzaXplb2YoU1ZHQTNkQ21kU3VyZmFjZURNQVN1ZmZpeCkg KworCQlzaXplb2Yoc3RydWN0IHZtd19zdGR1X3VwZGF0ZSk7Cit9CisKK3N0YXRpYyB1aW50MzJf dCB2bXdfc3RkdV9ib19maWZvX3NpemVfY3B1KHN0cnVjdCB2bXdfZHVfdXBkYXRlX3BsYW5lICp1 cGRhdGUsCisJCQkJCSAgdWludDMyX3QgbnVtX2hpdHMpCit7CisJcmV0dXJuIHNpemVvZihzdHJ1 Y3Qgdm13X3N0ZHVfdXBkYXRlX2diX2ltYWdlKSArCisJCXNpemVvZihzdHJ1Y3Qgdm13X3N0ZHVf dXBkYXRlKTsKK30KKworc3RhdGljIHVpbnQzMl90IHZtd19zdGR1X2JvX3BvcHVsYXRlX2RtYShz dHJ1Y3Qgdm13X2R1X3VwZGF0ZV9wbGFuZSAgKnVwZGF0ZSwKKwkJCQkJIHZvaWQgKmNtZCwgdWlu dDMyX3QgbnVtX2hpdHMpCit7CisJc3RydWN0IHZtd19zY3JlZW5fdGFyZ2V0X2Rpc3BsYXlfdW5p dCAqc3RkdTsKKwlzdHJ1Y3Qgdm13X2ZyYW1lYnVmZmVyX2JvICp2ZmJibzsKKwlzdHJ1Y3Qgdm13 X3N0ZHVfZG1hICpjbWRfZG1hID0gY21kOworCisJc3RkdSA9IGNvbnRhaW5lcl9vZih1cGRhdGUt PmR1LCB0eXBlb2YoKnN0ZHUpLCBiYXNlKTsKKwl2ZmJibyA9IGNvbnRhaW5lcl9vZih1cGRhdGUt PnZmYiwgdHlwZW9mKCp2ZmJibyksIGJhc2UpOworCisJY21kX2RtYS0+aGVhZGVyLmlkID0gU1ZH QV8zRF9DTURfU1VSRkFDRV9ETUE7CisJY21kX2RtYS0+aGVhZGVyLnNpemUgPSBzaXplb2YoY21k X2RtYS0+Ym9keSkgKworCQlzaXplb2Yoc3RydWN0IFNWR0EzZENvcHlCb3gpICogbnVtX2hpdHMg KworCQlzaXplb2YoU1ZHQTNkQ21kU3VyZmFjZURNQVN1ZmZpeCk7CisJdm13X2JvX2dldF9ndWVz dF9wdHIoJnZmYmJvLT5idWZmZXItPmJhc2UsICZjbWRfZG1hLT5ib2R5Lmd1ZXN0LnB0cik7CisJ Y21kX2RtYS0+Ym9keS5ndWVzdC5waXRjaCA9IHVwZGF0ZS0+dmZiLT5iYXNlLnBpdGNoZXNbMF07 CisJY21kX2RtYS0+Ym9keS5ob3N0LnNpZCA9IHN0ZHUtPmRpc3BsYXlfc3JmLT5yZXMuaWQ7CisJ Y21kX2RtYS0+Ym9keS5ob3N0LmZhY2UgPSAwOworCWNtZF9kbWEtPmJvZHkuaG9zdC5taXBtYXAg PSAwOworCWNtZF9kbWEtPmJvZHkudHJhbnNmZXIgPSBTVkdBM0RfV1JJVEVfSE9TVF9WUkFNOwor CisJcmV0dXJuIHNpemVvZigqY21kX2RtYSk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCB2bXdfc3Rk dV9ib19wb3B1bGF0ZV9jbGlwKHN0cnVjdCB2bXdfZHVfdXBkYXRlX3BsYW5lICAqdXBkYXRlLAor CQkJCQkgIHZvaWQgKmNtZCwgc3RydWN0IGRybV9yZWN0ICpjbGlwLAorCQkJCQkgIHVpbnQzMl90 IGZiX3gsIHVpbnQzMl90IGZiX3kpCit7CisJc3RydWN0IFNWR0EzZENvcHlCb3ggKmJveCA9IGNt ZDsKKworCWJveC0+c3JjeCA9IGZiX3g7CisJYm94LT5zcmN5ID0gZmJfeTsKKwlib3gtPnNyY3og PSAwOworCWJveC0+eCA9IGNsaXAtPngxOworCWJveC0+eSA9IGNsaXAtPnkxOworCWJveC0+eiA9 IDA7CisJYm94LT53ID0gZHJtX3JlY3Rfd2lkdGgoY2xpcCk7CisJYm94LT5oID0gZHJtX3JlY3Rf aGVpZ2h0KGNsaXApOworCWJveC0+ZCA9IDE7CisKKwlyZXR1cm4gc2l6ZW9mKCpib3gpOworfQor CitzdGF0aWMgdWludDMyX3Qgdm13X3N0dWRfYm9fcG9wdWxhdGVfdXBkYXRlKHN0cnVjdCB2bXdf ZHVfdXBkYXRlX3BsYW5lICAqdXBkYXRlLAorCQkJCQkgICAgdm9pZCAqY21kLCBzdHJ1Y3QgZHJt X3JlY3QgKmJiKQoreworCXN0cnVjdCB2bXdfc2NyZWVuX3RhcmdldF9kaXNwbGF5X3VuaXQgKnN0 ZHU7CisJc3RydWN0IHZtd19mcmFtZWJ1ZmZlcl9ibyAqdmZiYm87CisJU1ZHQTNkQ21kU3VyZmFj ZURNQVN1ZmZpeCAqc3VmZml4ID0gY21kOworCisJc3RkdSA9IGNvbnRhaW5lcl9vZih1cGRhdGUt PmR1LCB0eXBlb2YoKnN0ZHUpLCBiYXNlKTsKKwl2ZmJibyA9IGNvbnRhaW5lcl9vZih1cGRhdGUt PnZmYiwgdHlwZW9mKCp2ZmJibyksIGJhc2UpOworCisJc3VmZml4LT5zdWZmaXhTaXplID0gc2l6 ZW9mKCpzdWZmaXgpOworCXN1ZmZpeC0+bWF4aW11bU9mZnNldCA9IHZmYmJvLT5idWZmZXItPmJh c2UubnVtX3BhZ2VzICogUEFHRV9TSVpFOworCisJdm13X3N0ZHVfcG9wdWxhdGVfdXBkYXRlKCZz dWZmaXhbMV0sIHN0ZHUtPmJhc2UudW5pdCwgYmItPngxLCBiYi0+eDIsCisJCQkJIGJiLT55MSwg YmItPnkyKTsKKworCXJldHVybiBzaXplb2YoKnN1ZmZpeCkgKyBzaXplb2Yoc3RydWN0IHZtd19z dGR1X3VwZGF0ZSk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCB2bXdfc3RkdV9ib19wcmVfY2xpcF9j cHUoc3RydWN0IHZtd19kdV91cGRhdGVfcGxhbmUgICp1cGRhdGUsCisJCQkJCSB2b2lkICpjbWQs IHVpbnQzMl90IG51bV9oaXRzKQoreworCXN0cnVjdCB2bXdfZHVfdXBkYXRlX3BsYW5lX2J1ZmZl ciAqYm9fdXBkYXRlID0KKwkJY29udGFpbmVyX29mKHVwZGF0ZSwgdHlwZW9mKCpib191cGRhdGUp LCBiYXNlKTsKKworCWJvX3VwZGF0ZS0+ZmJfbGVmdCA9IElOVF9NQVg7CisJYm9fdXBkYXRlLT5m Yl90b3AgPSBJTlRfTUFYOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MzJfdCB2bXdf c3RkdV9ib19jbGlwX2NwdShzdHJ1Y3Qgdm13X2R1X3VwZGF0ZV9wbGFuZSAgKnVwZGF0ZSwKKwkJ CQkgICAgIHZvaWQgKmNtZCwgc3RydWN0IGRybV9yZWN0ICpjbGlwLAorCQkJCSAgICAgdWludDMy X3QgZmJfeCwgdWludDMyX3QgZmJfeSkKK3sKKwlzdHJ1Y3Qgdm13X2R1X3VwZGF0ZV9wbGFuZV9i dWZmZXIgKmJvX3VwZGF0ZSA9CisJCWNvbnRhaW5lcl9vZih1cGRhdGUsIHR5cGVvZigqYm9fdXBk YXRlKSwgYmFzZSk7CisKKwlib191cGRhdGUtPmZiX2xlZnQgPSBtaW5fdChpbnQsIGJvX3VwZGF0 ZS0+ZmJfbGVmdCwgZmJfeCk7CisJYm9fdXBkYXRlLT5mYl90b3AgPSBtaW5fdChpbnQsIGJvX3Vw ZGF0ZS0+ZmJfdG9wLCBmYl95KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdWludDMyX3QK K3Ztd19zdHVkX2JvX3BvcHVsYXRlX3VwZGF0ZV9jcHUoc3RydWN0IHZtd19kdV91cGRhdGVfcGxh bmUgICp1cGRhdGUsIHZvaWQgKmNtZCwKKwkJCQlzdHJ1Y3QgZHJtX3JlY3QgKmJiKQoreworCXN0 cnVjdCB2bXdfZHVfdXBkYXRlX3BsYW5lX2J1ZmZlciAqYm9fdXBkYXRlOworCXN0cnVjdCB2bXdf c2NyZWVuX3RhcmdldF9kaXNwbGF5X3VuaXQgKnN0ZHU7CisJc3RydWN0IHZtd19mcmFtZWJ1ZmZl cl9ibyAqdmZiYm87CisJc3RydWN0IHZtd19kaWZmX2NweSBkaWZmID0gVk1XX0NQVV9CTElUX0RJ RkZfSU5JVElBTElaRVIoMCk7CisJc3RydWN0IHZtd19zdGR1X3VwZGF0ZV9nYl9pbWFnZSAqY21k X2ltZyA9IGNtZDsKKwlzdHJ1Y3Qgdm13X3N0ZHVfdXBkYXRlICpjbWRfdXBkYXRlOworCXN0cnVj dCB0dG1fYnVmZmVyX29iamVjdCAqc3JjX2JvLCAqZHN0X2JvOworCXUzMiBzcmNfb2Zmc2V0LCBk c3Rfb2Zmc2V0OworCXMzMiBzcmNfcGl0Y2gsIGRzdF9waXRjaDsKKwlzMzIgd2lkdGgsIGhlaWdo dDsKKworCWJvX3VwZGF0ZSA9IGNvbnRhaW5lcl9vZih1cGRhdGUsIHR5cGVvZigqYm9fdXBkYXRl KSwgYmFzZSk7CisJc3RkdSA9IGNvbnRhaW5lcl9vZih1cGRhdGUtPmR1LCB0eXBlb2YoKnN0ZHUp LCBiYXNlKTsKKwl2ZmJibyA9IGNvbnRhaW5lcl9vZih1cGRhdGUtPnZmYiwgdHlwZW9mKCp2ZmJi byksIGJhc2UpOworCisJd2lkdGggPSBiYi0+eDIgLSBiYi0+eDE7CisJaGVpZ2h0ID0gYmItPnky IC0gYmItPnkxOworCisJZGlmZi5jcHAgPSBzdGR1LT5jcHA7CisKKwlkc3RfYm8gPSAmc3RkdS0+ ZGlzcGxheV9zcmYtPnJlcy5iYWNrdXAtPmJhc2U7CisJZHN0X3BpdGNoID0gc3RkdS0+ZGlzcGxh eV9zcmYtPmJhc2Vfc2l6ZS53aWR0aCAqIHN0ZHUtPmNwcDsKKwlkc3Rfb2Zmc2V0ID0gYmItPnkx ICogZHN0X3BpdGNoICsgYmItPngxICogc3RkdS0+Y3BwOworCisJc3JjX2JvID0gJnZmYmJvLT5i dWZmZXItPmJhc2U7CisJc3JjX3BpdGNoID0gdXBkYXRlLT52ZmItPmJhc2UucGl0Y2hlc1swXTsK KwlzcmNfb2Zmc2V0ID0gYm9fdXBkYXRlLT5mYl90b3AgKiBzcmNfcGl0Y2ggKyBib191cGRhdGUt PmZiX2xlZnQgKgorCQlzdGR1LT5jcHA7CisKKwkodm9pZCkgdm13X2JvX2NwdV9ibGl0KGRzdF9i bywgZHN0X29mZnNldCwgZHN0X3BpdGNoLCBzcmNfYm8sCisJCQkgICAgICAgc3JjX29mZnNldCwg c3JjX3BpdGNoLCB3aWR0aCAqIHN0ZHUtPmNwcCwgaGVpZ2h0LAorCQkJICAgICAgICZkaWZmKTsK KworCWlmIChkcm1fcmVjdF92aXNpYmxlKCZkaWZmLnJlY3QpKSB7CisJCVNWR0EzZEJveCAqYm94 ID0gJmNtZF9pbWctPmJvZHkuYm94OworCisJCWNtZF9pbWctPmhlYWRlci5pZCA9IFNWR0FfM0Rf Q01EX1VQREFURV9HQl9JTUFHRTsKKwkJY21kX2ltZy0+aGVhZGVyLnNpemUgPSBzaXplb2YoY21k X2ltZy0+Ym9keSk7CisJCWNtZF9pbWctPmJvZHkuaW1hZ2Uuc2lkID0gc3RkdS0+ZGlzcGxheV9z cmYtPnJlcy5pZDsKKwkJY21kX2ltZy0+Ym9keS5pbWFnZS5mYWNlID0gMDsKKwkJY21kX2ltZy0+ Ym9keS5pbWFnZS5taXBtYXAgPSAwOworCisJCWJveC0+eCA9IGRpZmYucmVjdC54MTsKKwkJYm94 LT55ID0gZGlmZi5yZWN0LnkxOworCQlib3gtPnogPSAwOworCQlib3gtPncgPSBkcm1fcmVjdF93 aWR0aCgmZGlmZi5yZWN0KTsKKwkJYm94LT5oID0gZHJtX3JlY3RfaGVpZ2h0KCZkaWZmLnJlY3Qp OworCQlib3gtPmQgPSAxOworCisJCWNtZF91cGRhdGUgPSAoc3RydWN0IHZtd19zdGR1X3VwZGF0 ZSAqKSZjbWRfaW1nWzFdOworCQl2bXdfc3RkdV9wb3B1bGF0ZV91cGRhdGUoY21kX3VwZGF0ZSwg c3RkdS0+YmFzZS51bml0LAorCQkJCQkgZGlmZi5yZWN0LngxLCBkaWZmLnJlY3QueDIsCisJCQkJ CSBkaWZmLnJlY3QueTEsIGRpZmYucmVjdC55Mik7CisKKwkJcmV0dXJuIHNpemVvZigqY21kX2lt ZykgKyBzaXplb2YoKmNtZF91cGRhdGUpOworCX0KKworCXJldHVybiAwOworfQorCisvKioKKyAq IHZtd19zdGR1X3BsYW5lX3VwZGF0ZV9ibyAtIFVwZGF0ZSBkaXNwbGF5IHVuaXQgZm9yIGJvIGJh Y2tlZCBmYi4KKyAqIEBkZXZfcHJpdjogZGV2aWNlIHByaXZhdGUuCisgKiBAcGxhbmU6IHBsYW5l IHN0YXRlLgorICogQG9sZF9zdGF0ZTogb2xkIHBsYW5lIHN0YXRlLgorICogQHZmYjogZnJhbWVi dWZmZXIgd2hpY2ggaXMgYmxpdHRlZCB0byBkaXNwbGF5IHVuaXQuCisgKiBAb3V0X2ZlbmNlOiBJ ZiBub24tTlVMTCwgd2lsbCByZXR1cm4gYSByZWYtY291bnRlZCBwb2ludGVyIHRvIHZtd19mZW5j ZV9vYmouCisgKiAgICAgICAgICAgICBUaGUgcmV0dXJuZWQgZmVuY2UgcG9pbnRlciBtYXkgYmUg TlVMTCBpbiB3aGljaCBjYXNlIHRoZSBkZXZpY2UKKyAqICAgICAgICAgICAgIGhhcyBhbHJlYWR5 IHN5bmNocm9uaXplZC4KKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZl IGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGludCB2bXdfc3RkdV9wbGFuZV91 cGRhdGVfYm8oc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCisJCQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0 ZSwKKwkJCQkgICAgc3RydWN0IHZtd19mcmFtZWJ1ZmZlciAqdmZiLAorCQkJCSAgICBzdHJ1Y3Qg dm13X2ZlbmNlX29iaiAqKm91dF9mZW5jZSkKK3sKKwlzdHJ1Y3Qgdm13X2R1X3VwZGF0ZV9wbGFu ZV9idWZmZXIgYm9fdXBkYXRlOworCisJbWVtc2V0KCZib191cGRhdGUsIDAsIHNpemVvZihzdHJ1 Y3Qgdm13X2R1X3VwZGF0ZV9wbGFuZV9idWZmZXIpKTsKKwlib191cGRhdGUuYmFzZS5wbGFuZSA9 IHBsYW5lOworCWJvX3VwZGF0ZS5iYXNlLm9sZF9zdGF0ZSA9IG9sZF9zdGF0ZTsKKwlib191cGRh dGUuYmFzZS5kZXZfcHJpdiA9IGRldl9wcml2OworCWJvX3VwZGF0ZS5iYXNlLmR1ID0gdm13X2Ny dGNfdG9fZHUocGxhbmUtPnN0YXRlLT5jcnRjKTsKKwlib191cGRhdGUuYmFzZS52ZmIgPSB2ZmI7 CisJYm9fdXBkYXRlLmJhc2Uub3V0X2ZlbmNlID0gb3V0X2ZlbmNlOworCWJvX3VwZGF0ZS5iYXNl Lm11dGV4ID0gTlVMTDsKKwlib191cGRhdGUuYmFzZS5jcHVfYmxpdCA9ICEoZGV2X3ByaXYtPmNh cGFiaWxpdGllcyAmIFNWR0FfQ0FQXzNEKTsKKwlib191cGRhdGUuYmFzZS5pbnRyID0gZmFsc2U7 CisKKwlpZiAoYm9fdXBkYXRlLmJhc2UuY3B1X2JsaXQpIHsKKwkJYm9fdXBkYXRlLmJhc2UuY2Fs Y19maWZvX3NpemUgPSB2bXdfc3RkdV9ib19maWZvX3NpemVfY3B1OworCQlib191cGRhdGUuYmFz ZS5wcmVfY2xpcCA9IHZtd19zdGR1X2JvX3ByZV9jbGlwX2NwdTsKKwkJYm9fdXBkYXRlLmJhc2Uu Y2xpcCA9IHZtd19zdGR1X2JvX2NsaXBfY3B1OworCQlib191cGRhdGUuYmFzZS5wb3N0X2NsaXAg PSB2bXdfc3R1ZF9ib19wb3B1bGF0ZV91cGRhdGVfY3B1OworCX0gZWxzZSB7CisJCWJvX3VwZGF0 ZS5iYXNlLmNhbGNfZmlmb19zaXplID0gdm13X3N0ZHVfYm9fZmlmb19zaXplOworCQlib191cGRh dGUuYmFzZS5wcmVfY2xpcCA9IHZtd19zdGR1X2JvX3BvcHVsYXRlX2RtYTsKKwkJYm9fdXBkYXRl LmJhc2UuY2xpcCA9IHZtd19zdGR1X2JvX3BvcHVsYXRlX2NsaXA7CisJCWJvX3VwZGF0ZS5iYXNl LnBvc3RfY2xpcCA9IHZtd19zdHVkX2JvX3BvcHVsYXRlX3VwZGF0ZTsKKwl9CisKKwlyZXR1cm4g dm13X2R1X2hlbHBlcl9wbGFuZV91cGRhdGUoJmJvX3VwZGF0ZS5iYXNlKTsKK30KKwogc3RhdGlj IHVpbnQzMl90CiB2bXdfc3RkdV9zdXJmYWNlX2ZpZm9fc2l6ZV9zYW1lX2Rpc3BsYXkoc3RydWN0 IHZtd19kdV91cGRhdGVfcGxhbmUgKnVwZGF0ZSwKIAkJCQkJdWludDMyX3QgbnVtX2hpdHMpCi0t IAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=