From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH -next 02/11] drm/vmwgfx: Use the cpu blit utility for framebuffer to screen target blits Date: Thu, 22 Mar 2018 11:23:43 +0100 Message-ID: <20180322102352.2881-2-thellstrom@vmware.com> References: <20180322102352.2881-1-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0054.outbound.protection.outlook.com [104.47.40.54]) by gabe.freedesktop.org (Postfix) with ESMTPS id E3DEA6EBC4 for ; Thu, 22 Mar 2018 10:24:34 +0000 (UTC) In-Reply-To: <20180322102352.2881-1-thellstrom@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 List-Id: dri-devel@lists.freedesktop.org VGhpcyBibGl0IHdhcyBwcmV2aW91c2x5IHBlcmZvcm1lZCB1c2luZyB0d28gbGFyZ2Ugdm1hcHMs IG9uZSBvZiB3aGljaAp3YXMgdGVhcmVkIGRvd24gYW5kIHJlbWFwcGVkIG9uIGVhY2ggYmxpdC4g VXNlIHRoZSBtb3JlIHJlc291cmNlLQpjb25zZXJ2aW5nIFRUTSBjcHUgYmxpdCBpbnN0ZWFkLgoK VGhlIGJsaXQgaXMgdXNlZCBpbiBib3VuZGFyeS1ib3ggY29tcHV0aW5nIG1vZGUgd2hpY2ggbWFr ZXMgaXQgcG9zc2libGUKdG8gbWluaW1pemUgdGhlIGJvdW5kaW5nIGJveCB1c2VkIGluIGhvc3Qg b3BlcmF0aW9ucy4KClNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21A dm13YXJlLmNvbT4KUmV2aWV3ZWQtYnk6IEJyaWFuIFBhdWwgPGJyaWFucEB2bXdhcmUuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2J1ZmZlci5jIHwgIDIzICsrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaCAgICB8ICAgMSArCiBkcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYyAgICB8ICA1MCArKysrKysrKysrLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuaCAgICB8ICAgNCArLQogZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfc2Nybi5jICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X3N0ZHUuYyAgIHwgMTA1ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogNiBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCA5MSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9idWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2J1ZmZlci5jCmluZGV4IDcxNzdlZWNiOGM5Zi4u ZGRmNzFiZWY1MzU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9i dWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9idWZmZXIuYwpAQCAt MTg1LDYgKzE4NSwyMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHR0bV9wbGFjZSBldmljdGFibGVf cGxhY2VtZW50X2ZsYWdzW10gPSB7CiAJfQogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCB0dG1f cGxhY2Ugbm9uZml4ZWRfcGxhY2VtZW50X2ZsYWdzW10gPSB7CisJeworCQkuZnBmbiA9IDAsCisJ CS5scGZuID0gMCwKKwkJLmZsYWdzID0gVFRNX1BMX0ZMQUdfU1lTVEVNIHwgVFRNX1BMX0ZMQUdf Q0FDSEVECisJfSwgeworCQkuZnBmbiA9IDAsCisJCS5scGZuID0gMCwKKwkJLmZsYWdzID0gVk1X X1BMX0ZMQUdfR01SIHwgVFRNX1BMX0ZMQUdfQ0FDSEVECisJfSwgeworCQkuZnBmbiA9IDAsCisJ CS5scGZuID0gMCwKKwkJLmZsYWdzID0gVk1XX1BMX0ZMQUdfTU9CIHwgVFRNX1BMX0ZMQUdfQ0FD SEVECisJfQorfTsKKwogc3RydWN0IHR0bV9wbGFjZW1lbnQgdm13X2V2aWN0YWJsZV9wbGFjZW1l bnQgPSB7CiAJLm51bV9wbGFjZW1lbnQgPSA0LAogCS5wbGFjZW1lbnQgPSBldmljdGFibGVfcGxh Y2VtZW50X2ZsYWdzLApAQCAtMjEzLDYgKzIyOSwxMyBAQCBzdHJ1Y3QgdHRtX3BsYWNlbWVudCB2 bXdfbW9iX25lX3BsYWNlbWVudCA9IHsKIAkuYnVzeV9wbGFjZW1lbnQgPSAmbW9iX25lX3BsYWNl bWVudF9mbGFncwogfTsKIAorc3RydWN0IHR0bV9wbGFjZW1lbnQgdm13X25vbmZpeGVkX3BsYWNl bWVudCA9IHsKKwkubnVtX3BsYWNlbWVudCA9IDMsCisJLnBsYWNlbWVudCA9IG5vbmZpeGVkX3Bs YWNlbWVudF9mbGFncywKKwkubnVtX2J1c3lfcGxhY2VtZW50ID0gMSwKKwkuYnVzeV9wbGFjZW1l bnQgPSAmc3lzX3BsYWNlbWVudF9mbGFncworfTsKKwogc3RydWN0IHZtd190dG1fdHQgewogCXN0 cnVjdCB0dG1fZG1hX3R0IGRtYV90dG07CiAJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdjsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKaW5kZXggMTViMjJlNTZiOGQxLi45MzY4YmNi NDkyYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oCkBAIC03NjcsNiArNzY3LDcg QEAgZXh0ZXJuIHN0cnVjdCB0dG1fcGxhY2VtZW50IHZtd19ldmljdGFibGVfcGxhY2VtZW50Owog ZXh0ZXJuIHN0cnVjdCB0dG1fcGxhY2VtZW50IHZtd19zcmZfcGxhY2VtZW50OwogZXh0ZXJuIHN0 cnVjdCB0dG1fcGxhY2VtZW50IHZtd19tb2JfcGxhY2VtZW50OwogZXh0ZXJuIHN0cnVjdCB0dG1f cGxhY2VtZW50IHZtd19tb2JfbmVfcGxhY2VtZW50OworZXh0ZXJuIHN0cnVjdCB0dG1fcGxhY2Vt ZW50IHZtd19ub25maXhlZF9wbGFjZW1lbnQ7CiBleHRlcm4gc3RydWN0IHR0bV9ib19kcml2ZXIg dm13X2JvX2RyaXZlcjsKIGV4dGVybiBpbnQgdm13X2RtYV9xdWllc2NlbnQoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7CiBleHRlcm4gaW50IHZtd19ib19tYXBfZG1hKHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf a21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYwppbmRleCAwZjljOWNk NzhkODMuLjYzMTU5Njc0YmY5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMKQEAg LTY4Miw5ICs2ODIsNiBAQCB2bXdfZHVfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lKQogCQlyZXR1cm4gTlVMTDsKIAogCXZwcy0+cGlubmVkID0gMDsKLQotCS8q IE1hcHBpbmcgaXMgbWFuYWdlZCBieSBwcmVwYXJlX2ZiL2NsZWFudXBfZmIgKi8KLQltZW1zZXQo JnZwcy0+aG9zdF9tYXAsIDAsIHNpemVvZih2cHMtPmhvc3RfbWFwKSk7CiAJdnBzLT5jcHAgPSAw OwogCiAJLyogRWFjaCByZWYgY291bnRlZCByZXNvdXJjZSBuZWVkcyB0byBiZSBhY3F1aXJlZCBh Z2FpbiAqLwpAQCAtNzQ2LDExICs3NDMsNiBAQCB2bXdfZHVfcGxhbmVfZGVzdHJveV9zdGF0ZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAogCiAJLyogU2hvdWxkIGhhdmUgYmVlbiBmcmVlZCBi eSBjbGVhbnVwX2ZiICovCi0JaWYgKHZwcy0+aG9zdF9tYXAudmlydHVhbCkgewotCQlEUk1fRVJS T1IoIkhvc3QgbWFwcGluZyBub3QgZnJlZWRcbiIpOwotCQl0dG1fYm9fa3VubWFwKCZ2cHMtPmhv c3RfbWFwKTsKLQl9Ci0KIAlpZiAodnBzLT5zdXJmKQogCQl2bXdfc3VyZmFjZV91bnJlZmVyZW5j ZSgmdnBzLT5zdXJmKTsKIApAQCAtMTEyOSwxMiArMTEyMSwxNCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyB2bXdfZnJhbWVidWZmZXJfZG1hYnVmX2Z1bmNzID0g ewogfTsKIAogLyoqCi0gKiBQaW4gdGhlIGRtYWJ1ZmZlciB0byB0aGUgc3RhcnQgb2YgdnJhbS4K KyAqIFBpbiB0aGUgZG1hYnVmZmVyIGluIGEgbG9jYXRpb24gc3VpdGFibGUgZm9yIGFjY2VzcyBi eSB0aGUKKyAqIGRpc3BsYXkgc3lzdGVtLgogICovCiBzdGF0aWMgaW50IHZtd19mcmFtZWJ1ZmZl cl9waW4oc3RydWN0IHZtd19mcmFtZWJ1ZmZlciAqdmZiKQogewogCXN0cnVjdCB2bXdfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB2bXdfcHJpdih2ZmItPmJhc2UuZGV2KTsKIAlzdHJ1Y3Qgdm13X2RtYV9i dWZmZXIgKmJ1ZjsKKwlzdHJ1Y3QgdHRtX3BsYWNlbWVudCAqcGxhY2VtZW50OwogCWludCByZXQ7 CiAKIAlidWYgPSB2ZmItPmRtYWJ1ZiA/ICB2bXdfZnJhbWVidWZmZXJfdG9fdmZiZCgmdmZiLT5i YXNlKS0+YnVmZmVyIDoKQEAgLTExNTEsMTIgKzExNDUsMjQgQEAgc3RhdGljIGludCB2bXdfZnJh bWVidWZmZXJfcGluKHN0cnVjdCB2bXdfZnJhbWVidWZmZXIgKnZmYikKIAkJYnJlYWs7CiAJY2Fz ZSB2bXdfZHVfc2NyZWVuX29iamVjdDoKIAljYXNlIHZtd19kdV9zY3JlZW5fdGFyZ2V0OgotCQlp ZiAodmZiLT5kbWFidWYpCi0JCQlyZXR1cm4gdm13X2RtYWJ1Zl9waW5faW5fdnJhbV9vcl9nbXIo ZGV2X3ByaXYsIGJ1ZiwKLQkJCQkJCQkgICAgIGZhbHNlKTsKKwkJaWYgKHZmYi0+ZG1hYnVmKSB7 CisJCQlpZiAoZGV2X3ByaXYtPmNhcGFiaWxpdGllcyAmIFNWR0FfQ0FQXzNEKSB7CisJCQkJLyoK KwkJCQkgKiBVc2Ugc3VyZmFjZSBETUEgdG8gZ2V0IGNvbnRlbnQgdG8KKwkJCQkgKiBzcmVlbiB0 YXJnZXQgc3VyZmFjZS4KKwkJCQkgKi8KKwkJCQlwbGFjZW1lbnQgPSAmdm13X3ZyYW1fZ21yX3Bs YWNlbWVudDsKKwkJCX0gZWxzZSB7CisJCQkJLyogVXNlIENQVSBibGl0LiAqLworCQkJCXBsYWNl bWVudCA9ICZ2bXdfc3lzX3BsYWNlbWVudDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCS8qIFVzZSBz dXJmYWNlIC8gaW1hZ2UgdXBkYXRlICovCisJCQlwbGFjZW1lbnQgPSAmdm13X21vYl9wbGFjZW1l bnQ7CisJCX0KIAotCQlyZXR1cm4gdm13X2RtYWJ1Zl9waW5faW5fcGxhY2VtZW50KGRldl9wcml2 LCBidWYsCi0JCQkJCQkgICAmdm13X21vYl9wbGFjZW1lbnQsIGZhbHNlKTsKKwkJcmV0dXJuIHZt d19kbWFidWZfcGluX2luX3BsYWNlbWVudChkZXZfcHJpdiwgYnVmLCBwbGFjZW1lbnQsCisJCQkJ CQkgICBmYWxzZSk7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMjQxOSwx NCArMjQyNSwyMSBAQCBpbnQgdm13X2ttc19oZWxwZXJfZGlydHkoc3RydWN0IHZtd19wcml2YXRl ICpkZXZfcHJpdiwKIGludCB2bXdfa21zX2hlbHBlcl9idWZmZXJfcHJlcGFyZShzdHJ1Y3Qgdm13 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgc3RydWN0IHZtd19kbWFfYnVmZmVyICpidWYsCiAJ CQkJICBib29sIGludGVycnVwdGlibGUsCi0JCQkJICBib29sIHZhbGlkYXRlX2FzX21vYikKKwkJ CQkgIGJvb2wgdmFsaWRhdGVfYXNfbW9iLAorCQkJCSAgYm9vbCBmb3JfY3B1X2JsaXQpCiB7CisJ c3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsKKwkJLmludGVycnVwdGlibGUgPSBpbnRl cnJ1cHRpYmxlLAorCQkubm9fd2FpdF9ncHUgPSBmYWxzZX07CiAJc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0ICpibyA9ICZidWYtPmJhc2U7CiAJaW50IHJldDsKIAogCXR0bV9ib19yZXNlcnZlKGJv LCBmYWxzZSwgZmFsc2UsIE5VTEwpOwotCXJldCA9IHZtd192YWxpZGF0ZV9zaW5nbGVfYnVmZmVy KGRldl9wcml2LCBibywgaW50ZXJydXB0aWJsZSwKLQkJCQkJIHZhbGlkYXRlX2FzX21vYik7CisJ aWYgKGZvcl9jcHVfYmxpdCkKKwkJcmV0ID0gdHRtX2JvX3ZhbGlkYXRlKGJvLCAmdm13X25vbmZp eGVkX3BsYWNlbWVudCwgJmN0eCk7CisJZWxzZQorCQlyZXQgPSB2bXdfdmFsaWRhdGVfc2luZ2xl X2J1ZmZlcihkZXZfcHJpdiwgYm8sIGludGVycnVwdGlibGUsCisJCQkJCQkgdmFsaWRhdGVfYXNf bW9iKTsKIAlpZiAocmV0KQogCQl0dG1fYm9fdW5yZXNlcnZlKGJvKTsKIApAQCAtMjUzOCw3ICsy NTUxLDggQEAgaW50IHZtd19rbXNfaGVscGVyX3Jlc291cmNlX3ByZXBhcmUoc3RydWN0IHZtd19y ZXNvdXJjZSAqcmVzLAogCWlmIChyZXMtPmJhY2t1cCkgewogCQlyZXQgPSB2bXdfa21zX2hlbHBl cl9idWZmZXJfcHJlcGFyZShyZXMtPmRldl9wcml2LCByZXMtPmJhY2t1cCwKIAkJCQkJCSAgICBp bnRlcnJ1cHRpYmxlLAotCQkJCQkJICAgIHJlcy0+ZGV2X3ByaXYtPmhhc19tb2IpOworCQkJCQkJ ICAgIHJlcy0+ZGV2X3ByaXYtPmhhc19tb2IsCisJCQkJCQkgICAgZmFsc2UpOwogCQlpZiAocmV0 KQogCQkJZ290byBvdXRfdW5yZXNlcnZlOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21z LmgKaW5kZXggNDJiMGYxNTg5ZDNmLi40ZTg3NDlhODcxN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X2ttcy5oCkBAIC0xNzcsNyArMTc3LDYgQEAgc3RydWN0IHZtd19wbGFuZV9zdGF0ZSB7 CiAJaW50IHBpbm5lZDsKIAogCS8qIEZvciBDUFUgQmxpdCAqLwotCXN0cnVjdCB0dG1fYm9fa21h cF9vYmogaG9zdF9tYXA7CiAJdW5zaWduZWQgaW50IGNwcDsKIH07CiAKQEAgLTI4OSw3ICsyODgs OCBAQCBpbnQgdm13X2ttc19oZWxwZXJfZGlydHkoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJp diwKIGludCB2bXdfa21zX2hlbHBlcl9idWZmZXJfcHJlcGFyZShzdHJ1Y3Qgdm13X3ByaXZhdGUg KmRldl9wcml2LAogCQkJCSAgc3RydWN0IHZtd19kbWFfYnVmZmVyICpidWYsCiAJCQkJICBib29s IGludGVycnVwdGlibGUsCi0JCQkJICBib29sIHZhbGlkYXRlX2FzX21vYik7CisJCQkJICBib29s IHZhbGlkYXRlX2FzX21vYiwKKwkJCQkgIGJvb2wgZm9yX2NwdV9ibGl0KTsKIHZvaWQgdm13X2tt c19oZWxwZXJfYnVmZmVyX3JldmVydChzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJ1Zik7CiB2b2lk IHZtd19rbXNfaGVscGVyX2J1ZmZlcl9maW5pc2goc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJp diwKIAkJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc2Nybi5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfc2Nybi5jCmluZGV4IDlmNmRlY2VkNDI0NC4uM2I3YmY3Y2ExOGI5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zY3JuLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfc2Nybi5jCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBpbnQgdm13X2tt c19zb3VfZG9fZG1hYnVmX2RpcnR5KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50 IHJldDsKIAogCXJldCA9IHZtd19rbXNfaGVscGVyX2J1ZmZlcl9wcmVwYXJlKGRldl9wcml2LCBi dWYsIGludGVycnVwdGlibGUsCi0JCQkJCSAgICBmYWxzZSk7CisJCQkJCSAgICBmYWxzZSwgZmFs c2UpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTExMzAsNyArMTEzMCw4IEBAIGlu dCB2bXdfa21zX3NvdV9yZWFkYmFjayhzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCXN0 cnVjdCB2bXdfa21zX2RpcnR5IGRpcnR5OwogCWludCByZXQ7CiAKLQlyZXQgPSB2bXdfa21zX2hl bHBlcl9idWZmZXJfcHJlcGFyZShkZXZfcHJpdiwgYnVmLCB0cnVlLCBmYWxzZSk7CisJcmV0ID0g dm13X2ttc19oZWxwZXJfYnVmZmVyX3ByZXBhcmUoZGV2X3ByaXYsIGJ1ZiwgdHJ1ZSwgZmFsc2Us CisJCQkJCSAgICBmYWxzZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3RkdS5jIGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfc3RkdS5jCmluZGV4IDZkZTI4NzQ2ZjZmNy4uOGVlYzg4OTIwODUxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdGR1LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3RkdS5jCkBAIC0xMTQsNyArMTE0LDYgQEAgc3Ry dWN0IHZtd19zY3JlZW5fdGFyZ2V0X2Rpc3BsYXlfdW5pdCB7CiAJYm9vbCBkZWZpbmVkOwogCiAJ LyogRm9yIENQVSBCbGl0ICovCi0Jc3RydWN0IHR0bV9ib19rbWFwX29iaiBob3N0X21hcDsKIAl1 bnNpZ25lZCBpbnQgY3BwOwogfTsKIApAQCAtNjM5LDEwICs2MzgsOSBAQCBzdGF0aWMgdm9pZCB2 bXdfc3RkdV9kbWFidWZfY3B1X2NvbW1pdChzdHJ1Y3Qgdm13X2ttc19kaXJ0eSAqZGlydHkpCiAJ CWNvbnRhaW5lcl9vZihkaXJ0eS0+dW5pdCwgdHlwZW9mKCpzdGR1KSwgYmFzZSk7CiAJczMyIHdp ZHRoLCBoZWlnaHQ7CiAJczMyIHNyY19waXRjaCwgZHN0X3BpdGNoOwotCXU4ICpzcmMsICpkc3Q7 Ci0JYm9vbCBub3RfdXNlZDsKLQlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqIGd1ZXN0X21hcDsKLQlp bnQgcmV0OworCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqc3JjX2JvLCAqZHN0X2JvOworCXUz MiBzcmNfb2Zmc2V0LCBkc3Rfb2Zmc2V0OworCXN0cnVjdCB2bXdfZGlmZl9jcHkgZGlmZiA9IFZN V19DUFVfQkxJVF9ESUZGX0lOSVRJQUxJWkVSKHN0ZHUtPmNwcCk7CiAKIAlpZiAoIWRpcnR5LT5u dW1faGl0cykKIAkJcmV0dXJuOwpAQCAtNjUzLDU3ICs2NTEsMzggQEAgc3RhdGljIHZvaWQgdm13 X3N0ZHVfZG1hYnVmX2NwdV9jb21taXQoc3RydWN0IHZtd19rbXNfZGlydHkgKmRpcnR5KQogCWlm ICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQogCQlyZXR1cm47CiAKLQlyZXQgPSB0dG1fYm9f a21hcCgmZGRpcnR5LT5idWYtPmJhc2UsIDAsIGRkaXJ0eS0+YnVmLT5iYXNlLm51bV9wYWdlcywK LQkJCSAgJmd1ZXN0X21hcCk7Ci0JaWYgKHJldCkgewotCQlEUk1fRVJST1IoIkZhaWxlZCBtYXBw aW5nIGZyYW1lYnVmZmVyIGZvciBibGl0OiAlZFxuIiwKLQkJCSAgcmV0KTsKLQkJZ290byBvdXRf Y2xlYW51cDsKLQl9Ci0KLQkvKiBBc3N1bWUgd2UgYXJlIGJsaXR0aW5nIGZyb20gSG9zdCAoZGlz cGxheV9zcmYpIHRvIEd1ZXN0IChkbWFidWYpICovCi0Jc3JjX3BpdGNoID0gc3RkdS0+ZGlzcGxh eV9zcmYtPmJhc2Vfc2l6ZS53aWR0aCAqIHN0ZHUtPmNwcDsKLQlzcmMgPSB0dG1fa21hcF9vYmpf dmlydHVhbCgmc3RkdS0+aG9zdF9tYXAsICZub3RfdXNlZCk7Ci0Jc3JjICs9IGRkaXJ0eS0+dG9w ICogc3JjX3BpdGNoICsgZGRpcnR5LT5sZWZ0ICogc3RkdS0+Y3BwOwotCi0JZHN0X3BpdGNoID0g ZGRpcnR5LT5waXRjaDsKLQlkc3QgPSB0dG1fa21hcF9vYmpfdmlydHVhbCgmZ3Vlc3RfbWFwLCAm bm90X3VzZWQpOwotCWRzdCArPSBkZGlydHktPmZiX3RvcCAqIGRzdF9waXRjaCArIGRkaXJ0eS0+ ZmJfbGVmdCAqIHN0ZHUtPmNwcDsKKwkvKiBBc3N1bWUgd2UgYXJlIGJsaXR0aW5nIGZyb20gR3Vl c3QgKGRtYWJ1ZikgdG8gSG9zdCAoZGlzcGxheV9zcmYpICovCisJZHN0X3BpdGNoID0gc3RkdS0+ ZGlzcGxheV9zcmYtPmJhc2Vfc2l6ZS53aWR0aCAqIHN0ZHUtPmNwcDsKKwlkc3RfYm8gPSAmc3Rk dS0+ZGlzcGxheV9zcmYtPnJlcy5iYWNrdXAtPmJhc2U7CisJZHN0X29mZnNldCA9IGRkaXJ0eS0+ dG9wICogZHN0X3BpdGNoICsgZGRpcnR5LT5sZWZ0ICogc3RkdS0+Y3BwOwogCisJc3JjX3BpdGNo ID0gZGRpcnR5LT5waXRjaDsKKwlzcmNfYm8gPSAmZGRpcnR5LT5idWYtPmJhc2U7CisJc3JjX29m ZnNldCA9IGRkaXJ0eS0+ZmJfdG9wICogc3JjX3BpdGNoICsgZGRpcnR5LT5mYl9sZWZ0ICogc3Rk dS0+Y3BwOwogCi0JLyogRmlndXJlIG91dCB0aGUgcmVhbCBkaXJlY3Rpb24gKi8KLQlpZiAoZGRp cnR5LT50cmFuc2ZlciA9PSBTVkdBM0RfV1JJVEVfSE9TVF9WUkFNKSB7Ci0JCXU4ICp0bXA7Ci0J CXMzMiB0bXBfcGl0Y2g7Ci0KLQkJdG1wID0gc3JjOwotCQl0bXBfcGl0Y2ggPSBzcmNfcGl0Y2g7 Ci0KLQkJc3JjID0gZHN0OwotCQlzcmNfcGl0Y2ggPSBkc3RfcGl0Y2g7Ci0KLQkJZHN0ID0gdG1w OwotCQlkc3RfcGl0Y2ggPSB0bXBfcGl0Y2g7CisJLyogU3dhcCBzcmMgYW5kIGRzdCBpZiB0aGUg YXNzdW1wdGlvbiB3YXMgd3JvbmcuICovCisJaWYgKGRkaXJ0eS0+dHJhbnNmZXIgIT0gU1ZHQTNE X1dSSVRFX0hPU1RfVlJBTSkgeworCQlzd2FwKGRzdF9waXRjaCwgc3JjX3BpdGNoKTsKKwkJc3dh cChkc3RfYm8sIHNyY19ibyk7CisJCXN3YXAoc3JjX29mZnNldCwgZHN0X29mZnNldCk7CiAJfQog Ci0JLyogQ1BVIEJsaXQgKi8KLQl3aGlsZSAoaGVpZ2h0LS0gPiAwKSB7Ci0JCW1lbWNweShkc3Qs IHNyYywgd2lkdGggKiBzdGR1LT5jcHApOwotCQlkc3QgKz0gZHN0X3BpdGNoOwotCQlzcmMgKz0g c3JjX3BpdGNoOwotCX0KKwkodm9pZCkgdm13X2JvX2NwdV9ibGl0KGRzdF9ibywgZHN0X29mZnNl dCwgZHN0X3BpdGNoLAorCQkJICAgICAgIHNyY19ibywgc3JjX29mZnNldCwgc3JjX3BpdGNoLAor CQkJICAgICAgIHdpZHRoICogc3RkdS0+Y3BwLCBoZWlnaHQsICZkaWZmKTsKIAotCWlmIChkZGly dHktPnRyYW5zZmVyID09IFNWR0EzRF9XUklURV9IT1NUX1ZSQU0pIHsKKwlpZiAoZGRpcnR5LT50 cmFuc2ZlciA9PSBTVkdBM0RfV1JJVEVfSE9TVF9WUkFNICYmCisJICAgIGRybV9yZWN0X3Zpc2li bGUoJmRpZmYucmVjdCkpIHsKIAkJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdjsKIAkJc3Ry dWN0IHZtd19zdGR1X3VwZGF0ZSAqY21kOwogCQlzdHJ1Y3QgZHJtX2NsaXBfcmVjdCByZWdpb247 CiAJCWludCByZXQ7CiAKIAkJLyogV2UgYXJlIHVwZGF0aW5nIHRoZSBhY3R1YWwgc3VyZmFjZSwg bm90IGEgcHJveHkgKi8KLQkJcmVnaW9uLngxID0gZGRpcnR5LT5sZWZ0OwotCQlyZWdpb24ueDIg PSBkZGlydHktPnJpZ2h0OwotCQlyZWdpb24ueTEgPSBkZGlydHktPnRvcDsKLQkJcmVnaW9uLnky ID0gZGRpcnR5LT5ib3R0b207CisJCXJlZ2lvbi54MSA9IGRpZmYucmVjdC54MTsKKwkJcmVnaW9u LngyID0gZGlmZi5yZWN0LngyOworCQlyZWdpb24ueTEgPSBkaWZmLnJlY3QueTE7CisJCXJlZ2lv bi55MiA9IGRpZmYucmVjdC55MjsKIAkJcmV0ID0gdm13X2ttc191cGRhdGVfcHJveHkoCiAJCQko c3RydWN0IHZtd19yZXNvdXJjZSAqKSAmc3RkdS0+ZGlzcGxheV9zcmYtPnJlcywKIAkJCShjb25z dCBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqKSAmcmVnaW9uLCAxLCAxKTsKQEAgLTcyMCwxMyArNjk5 LDEyIEBAIHN0YXRpYyB2b2lkIHZtd19zdGR1X2RtYWJ1Zl9jcHVfY29tbWl0KHN0cnVjdCB2bXdf a21zX2RpcnR5ICpkaXJ0eSkKIAkJfQogCiAJCXZtd19zdGR1X3BvcHVsYXRlX3VwZGF0ZShjbWQs IHN0ZHUtPmJhc2UudW5pdCwKLQkJCQkJIGRkaXJ0eS0+bGVmdCwgZGRpcnR5LT5yaWdodCwKLQkJ CQkJIGRkaXJ0eS0+dG9wLCBkZGlydHktPmJvdHRvbSk7CisJCQkJCSByZWdpb24ueDEsIHJlZ2lv bi54MiwKKwkJCQkJIHJlZ2lvbi55MSwgcmVnaW9uLnkyKTsKIAogCQl2bXdfZmlmb19jb21taXQo ZGV2X3ByaXYsIHNpemVvZigqY21kKSk7CiAJfQogCi0JdHRtX2JvX2t1bm1hcCgmZ3Vlc3RfbWFw KTsKIG91dF9jbGVhbnVwOgogCWRkaXJ0eS0+bGVmdCA9IGRkaXJ0eS0+dG9wID0gZGRpcnR5LT5m Yl9sZWZ0ID0gZGRpcnR5LT5mYl90b3AgPSBTMzJfTUFYOwogCWRkaXJ0eS0+cmlnaHQgPSBkZGly dHktPmJvdHRvbSA9IFMzMl9NSU47CkBAIC03NzIsOSArNzUwLDE1IEBAIGludCB2bXdfa21zX3N0 ZHVfZG1hKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWNvbnRhaW5lcl9vZih2ZmIs IHN0cnVjdCB2bXdfZnJhbWVidWZmZXJfZG1hYnVmLCBiYXNlKS0+YnVmZmVyOwogCXN0cnVjdCB2 bXdfc3RkdV9kaXJ0eSBkZGlydHk7CiAJaW50IHJldDsKKwlib29sIGNwdV9ibGl0ID0gIShkZXZf cHJpdi0+Y2FwYWJpbGl0aWVzICYgU1ZHQV9DQVBfM0QpOwogCisJLyoKKwkgKiBWTXMgd2l0aG91 dCAzRCBzdXBwb3J0IGRvbid0IGhhdmUgdGhlIHN1cmZhY2UgRE1BIGNvbW1hbmQgYW5kCisJICog d2UnbGwgYmUgdXNpbmcgYSBDUFUgYmxpdCwgYW5kIHRoZSBmcmFtZWJ1ZmZlciBzaG91bGQgYmUg bW92ZWQgb3V0CisJICogb2YgVlJBTS4KKwkgKi8KIAlyZXQgPSB2bXdfa21zX2hlbHBlcl9idWZm ZXJfcHJlcGFyZShkZXZfcHJpdiwgYnVmLCBpbnRlcnJ1cHRpYmxlLAotCQkJCQkgICAgZmFsc2Up OworCQkJCQkgICAgZmFsc2UsIGNwdV9ibGl0KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0Owog CkBAIC03OTMsOCArNzc3LDggQEAgaW50IHZtd19rbXNfc3RkdV9kbWEoc3RydWN0IHZtd19wcml2 YXRlICpkZXZfcHJpdiwKIAlpZiAodG9fc3VyZmFjZSkKIAkJZGRpcnR5LmJhc2UuZmlmb19yZXNl cnZlX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCB2bXdfc3RkdV91cGRhdGUpOwogCi0JLyogMkQgVk1z IGNhbm5vdCB1c2UgU1ZHQV8zRF9DTURfU1VSRkFDRV9ETUEgc28gZG8gQ1BVIGJsaXQgaW5zdGVh ZCAqLwotCWlmICghKGRldl9wcml2LT5jYXBhYmlsaXRpZXMgJiBTVkdBX0NBUF8zRCkpIHsKKwor CWlmIChjcHVfYmxpdCkgewogCQlkZGlydHkuYmFzZS5maWZvX2NvbW1pdCA9IHZtd19zdGR1X2Rt YWJ1Zl9jcHVfY29tbWl0OwogCQlkZGlydHkuYmFzZS5jbGlwID0gdm13X3N0ZHVfZG1hYnVmX2Nw dV9jbGlwOwogCQlkZGlydHkuYmFzZS5maWZvX3Jlc2VydmVfc2l6ZSA9IDA7CkBAIC0xMDcxLDkg KzEwNTUsNiBAQCB2bXdfc3RkdV9wcmltYXJ5X3BsYW5lX2NsZWFudXBfZmIoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiB7CiAJc3RydWN0IHZtd19wbGFuZV9zdGF0ZSAqdnBzID0gdm13X3BsYW5l X3N0YXRlX3RvX3ZwcyhvbGRfc3RhdGUpOwogCi0JaWYgKHZwcy0+aG9zdF9tYXAudmlydHVhbCkK LQkJdHRtX2JvX2t1bm1hcCgmdnBzLT5ob3N0X21hcCk7Ci0KIAlpZiAodnBzLT5zdXJmKQogCQlX QVJOX09OKCF2cHMtPnBpbm5lZCk7CiAKQEAgLTEyMzUsMjQgKzEyMTYsMTEgQEAgdm13X3N0ZHVf cHJpbWFyeV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCSAqIHNv IGNhY2hlIHRoZXNlIG1hcHBpbmdzCiAJICovCiAJaWYgKHZwcy0+Y29udGVudF9mYl90eXBlID09 IFNFUEFSQVRFX0RNQSAmJgotCSAgICAhKGRldl9wcml2LT5jYXBhYmlsaXRpZXMgJiBTVkdBX0NB UF8zRCkpIHsKLQkJcmV0ID0gdHRtX2JvX2ttYXAoJnZwcy0+c3VyZi0+cmVzLmJhY2t1cC0+YmFz ZSwgMCwKLQkJCQkgIHZwcy0+c3VyZi0+cmVzLmJhY2t1cC0+YmFzZS5udW1fcGFnZXMsCi0JCQkJ ICAmdnBzLT5ob3N0X21hcCk7Ci0JCWlmIChyZXQpIHsKLQkJCURSTV9FUlJPUigiRmFpbGVkIHRv IG1hcCBkaXNwbGF5IGJ1ZmZlciB0byBDUFVcbiIpOwotCQkJZ290byBvdXRfc3JmX3VucGluOwot CQl9Ci0KKwkgICAgIShkZXZfcHJpdi0+Y2FwYWJpbGl0aWVzICYgU1ZHQV9DQVBfM0QpKQogCQl2 cHMtPmNwcCA9IG5ld19mYi0+cGl0Y2hlc1swXSAvIG5ld19mYi0+d2lkdGg7Ci0JfQogCiAJcmV0 dXJuIDA7CiAKLW91dF9zcmZfdW5waW46Ci0Jdm13X3Jlc291cmNlX3VucGluKCZ2cHMtPnN1cmYt PnJlcyk7Ci0JdnBzLT5waW5uZWQtLTsKLQogb3V0X3NyZl91bnJlZjoKIAl2bXdfc3VyZmFjZV91 bnJlZmVyZW5jZSgmdnBzLT5zdXJmKTsKIAlyZXR1cm4gcmV0OwpAQCAtMTI5Niw3ICsxMjY0LDYg QEAgdm13X3N0ZHVfcHJpbWFyeV9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCQlzdGR1LT5kaXNwbGF5X3NyZiA9IHZwcy0+c3VyZjsKIAkJc3RkdS0+Y29udGVu dF9mYl90eXBlID0gdnBzLT5jb250ZW50X2ZiX3R5cGU7CiAJCXN0ZHUtPmNwcCA9IHZwcy0+Y3Bw OwotCQltZW1jcHkoJnN0ZHUtPmhvc3RfbWFwLCAmdnBzLT5ob3N0X21hcCwgc2l6ZW9mKHZwcy0+ aG9zdF9tYXApKTsKIAogCQl2Y2xpcHMueCA9IGNydGMtPng7CiAJCXZjbGlwcy55ID0gY3J0Yy0+ eTsKLS0gCjIuMTQuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==