From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0268C4332D for ; Thu, 19 Mar 2020 20:25:15 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B4CAE20663 for ; Thu, 19 Mar 2020 20:25:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CsVBaCyd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B4CAE20663 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A0A2C6EA73; Thu, 19 Mar 2020 20:25:13 +0000 (UTC) Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by gabe.freedesktop.org (Postfix) with ESMTPS id E3C046EA6C for ; Thu, 19 Mar 2020 20:25:01 +0000 (UTC) Received: by mail-lf1-x142.google.com with SMTP id j17so2762679lfe.7 for ; Thu, 19 Mar 2020 13:25:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ENkYtetnORB+3HYCxDWoR3IJiVQs2tXqzU9fJZlFTvE=; b=CsVBaCyd1rwgMm51Q3QEszZkGt8qabSNKGnHRBI5pQ+NLrrosGWeHfISS5Ntsnh/vt fnNyRzAMYdhMifGox1ptrgYiK155/zA5UeEdyIIiUELQjw9UMm1QVM2Q9kZHTwfLakpe 5DtSygrmlBZ66QiVdbkmRXg1K4VsasxETntJuWMfis8xx0R44RBo69OPx9nXqthlUqik t6gH0WS+fEx9MUXH5qwbT9AQVw4pGcW7u34d4ocqmra3kLnRRKA1GDStSUQdCWTD3EWI AeQrXcUsGlW646QVVjGZHj7jopGlFLvbxdPP98XYDG6wN1vx/l3V5cP7RUosOTiOgaQ3 lFpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ENkYtetnORB+3HYCxDWoR3IJiVQs2tXqzU9fJZlFTvE=; b=Gm2CKpH3rftHeVFw0IVYpzrQEdAk5mTKsOhl0nI3JcypD99UQyshc2Tp6o8kTRWIke xrsRDtrqeOkD57ARb5w5cY5H5QiouXfVjrmOawtRAt8Je35ZHUA8IJNXvf7FjgcFlP9d 0biqN/SG2nWmLNNVXm3QaLeOK633FY17f0n2dz5rbzccp88sB/CKQDvsBQWKmi/MctV/ 6Gqc/0r5Q3UOXsgtuT8wnbv61QBpKLg3vVKtr8jAlPsDKNWN0bUXY1q1Z6dhAJhzsMlc UdXcUNcqDZwzNCbqaGmT1CcNDhktpXz7BViZ8+duB9nmQ3k+qdOENg3reIDYVeWpjZVk VgZw== X-Gm-Message-State: ANhLgQ2Ynsc/dL5imWUPibtkBdKQvNYCsFrrX2tVxIuqARXQqGlsONZ2 10pmsqWKk/S2CfsrCNZ5okK1rt8JBK0= X-Google-Smtp-Source: ADFU+vuPcBiT3y14vbD6cRLsRA5fRHx8pnEoQdUaYqGfIvNJOUzB+UsTtNkgNMM7haNhqh2TgpYVIA== X-Received: by 2002:ac2:538e:: with SMTP id g14mr3194919lfh.208.1584649499469; Thu, 19 Mar 2020 13:24:59 -0700 (PDT) Received: from sroland-t5810.vmware.com (46-126-183-173.dynamic.hispeed.ch. [46.126.183.173]) by smtp.gmail.com with ESMTPSA id v3sm2074372lfp.8.2020.03.19.13.24.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2020 13:24:58 -0700 (PDT) From: rscheidegger.oss@gmail.com X-Google-Original-From: sroland@vmware.com To: dri-devel@lists.freedesktop.org Subject: [PATCH 09/17] drm/vmwgfx: Add support for UA view commands Date: Thu, 19 Mar 2020 21:24:06 +0100 Message-Id: <20200319202414.9296-10-sroland@vmware.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200319202414.9296-1-sroland@vmware.com> References: <20200319202414.9296-1-sroland@vmware.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-graphics-maintainer@vmware.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogRGVlcGFrIFJhd2F0IDxkcmF3YXQuZmxvc3NAZ21haWwuY29tPgoKVmlydHVhbCBkZXZp Y2Ugbm93IHN1cHBvcnQgbmV3IGNvbW1hbmRzIHRvIG1hbmFnZSB1bm9yZGVyZWQgYWNjZXNzCnZp ZXdzLiBBbGxvdyB0aGVtIGFzIHBhcnQgb2YgdXNlci1zcGFjZSBjb21tYW5kIGJ1ZmZlci4gVGhp cyBpbnZvbHZlcwphZGRpbmcgVUEgdmlldyBjb3RhYmxlLCBiaW5kaW5nIHRyYWNrZXIgaW5mbywg bmV3IHZpZXcgdHlwZSBhbmQgY29tbWFuZAp2ZXJpZmllciBmdW5jdGlvbnMuCgp2MjogZml4IGNv bW1lbnQgdHlwbwp2Mzogc3R5bGUgZml4ZXMgKGRvbid0IHVzZSBkZXByZWNhdGVkIFBUUl9SRVQp CgpTaWduZWQtb2ZmLWJ5OiBEZWVwYWsgUmF3YXQgPGRyYXdhdC5mbG9zc0BnbWFpbC5jb20+ClNp Z25lZC1vZmYtYnk6IE5laGEgQmhlbmRlIDxiaGVuZGVuQHZtd2FyZS5jb20+ClJldmlld2VkLWJ5 OiBUaG9tYXMgSGVsbHN0csO2bSAoVk13YXJlKSA8dGhvbWFzX29zQHNoaXBtYWlsLm9yZz4KU2ln bmVkLW9mZi1ieTogUm9sYW5kIFNjaGVpZGVnZ2VyIChWTXdhcmUpIDxyc2NoZWlkZWdnZXIub3Nz QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmMg fCAxMjkgKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9iaW5kaW5nLmggfCAgMTYgKysrCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9jb250 ZXh0LmMgfCAgMjYgKysrLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2NvdGFibGUu YyB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jIHwgMTQ0 ICsrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf c28uYyAgICAgIHwgIDEyICstCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zby5oICAg ICAgfCAgIDYgKwogNyBmaWxlcyBjaGFuZ2VkLCAzMTkgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYmluZGlu Zy5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYmluZGluZy5jCmluZGV4IDVhN2U4 ZGIzZTgyNi4uZjBhNTc2Njk4MjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9iaW5kaW5nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYmlu ZGluZy5jCkBAIC01OSw3ICs1OSw5IEBACiAjZGVmaW5lIFZNV19CSU5ESU5HX1BTX0JJVCAgICAg MQogI2RlZmluZSBWTVdfQklORElOR19TT19CSVQgICAgIDIKICNkZWZpbmUgVk1XX0JJTkRJTkdf VkJfQklUICAgICAzCi0jZGVmaW5lIFZNV19CSU5ESU5HX05VTV9CSVRTICAgNAorI2RlZmluZSBW TVdfQklORElOR19VQVZfQklUICAgIDQKKyNkZWZpbmUgVk1XX0JJTkRJTkdfQ1NfVUFWX0JJVCA1 CisjZGVmaW5lIFZNV19CSU5ESU5HX05VTV9CSVRTICAgNgogCiAjZGVmaW5lIFZNV19CSU5ESU5H X1BTX1NSX0JJVCAgMAogCkBAIC03NSw2ICs3Nyw3IEBACiAgKiBAdmVydGV4X2J1ZmZlcnM6IFZl cnRleCBidWZmZXIgYmluZGluZ3MuCiAgKiBAaW5kZXhfYnVmZmVyOiBJbmRleCBidWZmZXIgYmlu ZGluZy4KICAqIEBwZXJfc2hhZGVyOiBQZXIgc2hhZGVyLXR5cGUgYmluZGluZ3MuCisgKiBAdWFf dmlld3M6IFVBViBiaW5kaW5ncy4KICAqIEBkaXJ0eTogQml0bWFwIHRyYWNraW5nIHBlciBiaW5k aW5nLXR5cGUgY2hhbmdlcyB0aGF0IGhhdmUgbm90IHlldAogICogYmVlbiBlbWl0dGVkIHRvIHRo ZSBkZXZpY2UuCiAgKiBAZGlydHlfdmI6IEJpdG1hcCB0cmFja2luZyBpbmRpdmlkdWFsIHZlcnRl eCBidWZmZXIgYmluZGluZyBjaGFuZ2VzIHRoYXQKQEAgLTk5LDYgKzEwMiw3IEBAIHN0cnVjdCB2 bXdfY3R4X2JpbmRpbmdfc3RhdGUgewogCXN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvX3ZiIHZlcnRl eF9idWZmZXJzW1NWR0EzRF9EWF9NQVhfVkVSVEVYQlVGRkVSU107CiAJc3RydWN0IHZtd19jdHhf YmluZGluZm9faWIgaW5kZXhfYnVmZmVyOwogCXN0cnVjdCB2bXdfZHhfc2hhZGVyX2JpbmRpbmdz IHBlcl9zaGFkZXJbU1ZHQTNEX05VTV9TSEFERVJUWVBFXTsKKwlzdHJ1Y3Qgdm13X2N0eF9iaW5k aW5mb191YXYgdWFfdmlld3NbVk1XX01BWF9VQVZfQklORF9UWVBFXTsKIAogCXVuc2lnbmVkIGxv bmcgZGlydHk7CiAJREVDTEFSRV9CSVRNQVAoZGlydHlfdmIsIFNWR0EzRF9EWF9NQVhfVkVSVEVY QlVGRkVSUyk7CkBAIC0xMjEsNiArMTI1LDkgQEAgc3RhdGljIGludCB2bXdfYmluZGluZ19zY3J1 Yl9keF9zaGFkZXIoc3RydWN0IHZtd19jdHhfYmluZGluZm8gKmJpLAogCQkJCSAgICAgICBib29s IHJlYmluZCk7CiBzdGF0aWMgaW50IHZtd19iaW5kaW5nX3NjcnViX2liKHN0cnVjdCB2bXdfY3R4 X2JpbmRpbmZvICpiaSwgYm9vbCByZWJpbmQpOwogc3RhdGljIGludCB2bXdfYmluZGluZ19zY3J1 Yl92YihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mbyAqYmksIGJvb2wgcmViaW5kKTsKK3N0YXRpYyBp bnQgdm13X2JpbmRpbmdfc2NydWJfdWF2KHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvICpiaSwgYm9v bCByZWJpbmQpOworc3RhdGljIGludCB2bXdfYmluZGluZ19zY3J1Yl9jc191YXYoc3RydWN0IHZt d19jdHhfYmluZGluZm8gKmJpLCBib29sIHJlYmluZCk7CisKIHN0YXRpYyB2b2lkIHZtd19iaW5k aW5nX2J1aWxkX2Fzc2VydHModm9pZCkgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwogCiB0eXBl ZGVmIGludCAoKnZtd19zY3J1Yl9mdW5jKShzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mbyAqLCBib29s KTsKQEAgLTE4OSw2ICsxOTYsMTIgQEAgc3RhdGljIGNvbnN0IHNpemVfdCB2bXdfYmluZGluZ192 Yl9vZmZzZXRzW10gPSB7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IHZtd19iaW5kaW5nX2liX29mZnNl dHNbXSA9IHsKIAlvZmZzZXRvZihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlLCBpbmRleF9i dWZmZXIpLAogfTsKK3N0YXRpYyBjb25zdCBzaXplX3Qgdm13X2JpbmRpbmdfdWF2X29mZnNldHNb XSA9IHsKKwlvZmZzZXRvZihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlLCB1YV92aWV3c1sw XS52aWV3cyksCit9Oworc3RhdGljIGNvbnN0IHNpemVfdCB2bXdfYmluZGluZ19jc191YXZfb2Zm c2V0c1tdID0geworCW9mZnNldG9mKHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUsIHVhX3Zp ZXdzWzFdLnZpZXdzKSwKK307CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm13X2JpbmRpbmdfaW5m byB2bXdfYmluZGluZ19pbmZvc1tdID0gewogCVt2bXdfY3R4X2JpbmRpbmdfc2hhZGVyXSA9IHsK QEAgLTIzNSw2ICsyNDgsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2bXdfYmluZGluZ19pbmZv IHZtd19iaW5kaW5nX2luZm9zW10gPSB7CiAJCS5zaXplID0gc2l6ZW9mKHN0cnVjdCB2bXdfY3R4 X2JpbmRpbmZvX2liKSwKIAkJLm9mZnNldHMgPSB2bXdfYmluZGluZ19pYl9vZmZzZXRzLAogCQku c2NydWJfZnVuYyA9IHZtd19iaW5kaW5nX3NjcnViX2lifSwKKwlbdm13X2N0eF9iaW5kaW5nX3Vh dl0gPSB7CisJCS5zaXplID0gc2l6ZW9mKHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvX3ZpZXcpLAor CQkub2Zmc2V0cyA9IHZtd19iaW5kaW5nX3Vhdl9vZmZzZXRzLAorCQkuc2NydWJfZnVuYyA9IHZt d19iaW5kaW5nX3NjcnViX3Vhdn0sCisJW3Ztd19jdHhfYmluZGluZ19jc191YXZdID0geworCQku c2l6ZSA9IHNpemVvZihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mb192aWV3KSwKKwkJLm9mZnNldHMg PSB2bXdfYmluZGluZ19jc191YXZfb2Zmc2V0cywKKwkJLnNjcnViX2Z1bmMgPSB2bXdfYmluZGlu Z19zY3J1Yl9jc191YXZ9LAogfTsKIAogLyoqCkBAIC0zMjAsNiArMzQxLDE4IEBAIHZvaWQgdm13 X2JpbmRpbmdfYWRkKHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgKmNicywKIAlJTklUX0xJ U1RfSEVBRCgmbG9jLT5yZXNfbGlzdCk7CiB9CiAKKy8qKgorICogdm13X2JpbmRpbmdfYWRkX3Vh dl9pbmRleCAtIEFkZCBVQVYgaW5kZXggZm9yIHRyYWNraW5nLgorICogQGNiczogUG9pbnRlciB0 byB0aGUgY29udGV4dCBiaW5kaW5nIHN0YXRlIHRyYWNrZXIuCisgKiBAc2xvdDogVUFWIHR5cGUg dG8gd2hpY2ggYmluZCB0aGlzIGluZGV4LgorICogQGluZGV4OiBUaGUgc3BsaWNlIGluZGV4IHRv IHRyYWNrLgorICovCit2b2lkIHZtd19iaW5kaW5nX2FkZF91YXZfaW5kZXgoc3RydWN0IHZtd19j dHhfYmluZGluZ19zdGF0ZSAqY2JzLCB1aW50MzIgc2xvdCwKKwkJCSAgICAgICB1aW50MzIgaW5k ZXgpCit7CisJY2JzLT51YV92aWV3c1tzbG90XS5pbmRleCA9IGluZGV4OworfQorCiAvKioKICAq IHZtd19iaW5kaW5nX3RyYW5zZmVyOiBUcmFuc2ZlciBhIGNvbnRleHQgYmluZGluZyB0cmFja2lu ZyBlbnRyeS4KICAqCkBAIC00NTksNiArNDkyLDEwIEBAIHZvaWQgdm13X2JpbmRpbmdfc3RhdGVf Y29tbWl0KHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgKnRvLAogCQl2bXdfYmluZGluZ190 cmFuc2Zlcih0bywgZnJvbSwgZW50cnkpOwogCQl2bXdfYmluZGluZ19kcm9wKGVudHJ5KTsKIAl9 CisKKwkvKiBBbHNvIHRyYW5zZmVyIHVhdiBzcGxpY2UgaW5kaWNlcyAqLworCXRvLT51YV92aWV3 c1swXS5pbmRleCA9IGZyb20tPnVhX3ZpZXdzWzBdLmluZGV4OworCXRvLT51YV92aWV3c1sxXS5p bmRleCA9IGZyb20tPnVhX3ZpZXdzWzFdLmluZGV4OwogfQogCiAvKioKQEAgLTEwMTQsNiArMTA1 MSw2NiBAQCBzdGF0aWMgaW50IHZtd19lbWl0X3NldF92YihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5n X3N0YXRlICpjYnMpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgdm13X2VtaXRfc2V0X3Vh dihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlICpjYnMpCit7CisJY29uc3Qgc3RydWN0IHZt d19jdHhfYmluZGluZm8gKmxvYyA9ICZjYnMtPnVhX3ZpZXdzWzBdLnZpZXdzWzBdLmJpOworCXN0 cnVjdCB7CisJCVNWR0EzZENtZEhlYWRlciBoZWFkZXI7CisJCVNWR0EzZENtZERYU2V0VUFWaWV3 cyBib2R5OworCX0gKmNtZDsKKwlzaXplX3QgY21kX3NpemUsIHZpZXdfaWRfc2l6ZTsKKwljb25z dCBzdHJ1Y3Qgdm13X3Jlc291cmNlICpjdHggPSB2bXdfY2JzX2NvbnRleHQoY2JzKTsKKworCXZt d19jb2xsZWN0X3ZpZXdfaWRzKGNicywgbG9jLCBTVkdBM0RfTUFYX1VBVklFV1MpOworCXZpZXdf aWRfc2l6ZSA9IGNicy0+YmluZF9jbWRfY291bnQqc2l6ZW9mKHVpbnQzMik7CisJY21kX3NpemUg PSBzaXplb2YoKmNtZCkgKyB2aWV3X2lkX3NpemU7CisJY21kID0gVk1XX0ZJRk9fUkVTRVJWRV9E WChjdHgtPmRldl9wcml2LCBjbWRfc2l6ZSwgY3R4LT5pZCk7CisJaWYgKCFjbWQpCisJCXJldHVy biAtRU5PTUVNOworCisJY21kLT5oZWFkZXIuaWQgPSBTVkdBXzNEX0NNRF9EWF9TRVRfVUFfVklF V1M7CisJY21kLT5oZWFkZXIuc2l6ZSA9IHNpemVvZihjbWQtPmJvZHkpICsgdmlld19pZF9zaXpl OworCisJLyogU3BsaWNlIGluZGV4IGlzIHNwZWNpZmllZCB1c2VyLXNwYWNlICAgKi8KKwljbWQt PmJvZHkudWF2U3BsaWNlSW5kZXggPSBjYnMtPnVhX3ZpZXdzWzBdLmluZGV4OworCisJbWVtY3B5 KCZjbWRbMV0sIGNicy0+YmluZF9jbWRfYnVmZmVyLCB2aWV3X2lkX3NpemUpOworCisJdm13X2Zp Zm9fY29tbWl0KGN0eC0+ZGV2X3ByaXYsIGNtZF9zaXplKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IHZtd19lbWl0X3NldF9jc191YXYoc3RydWN0IHZtd19jdHhfYmluZGluZ19zdGF0 ZSAqY2JzKQoreworCWNvbnN0IHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvICpsb2MgPSAmY2JzLT51 YV92aWV3c1sxXS52aWV3c1swXS5iaTsKKwlzdHJ1Y3QgeworCQlTVkdBM2RDbWRIZWFkZXIgaGVh ZGVyOworCQlTVkdBM2RDbWREWFNldENTVUFWaWV3cyBib2R5OworCX0gKmNtZDsKKwlzaXplX3Qg Y21kX3NpemUsIHZpZXdfaWRfc2l6ZTsKKwljb25zdCBzdHJ1Y3Qgdm13X3Jlc291cmNlICpjdHgg PSB2bXdfY2JzX2NvbnRleHQoY2JzKTsKKworCXZtd19jb2xsZWN0X3ZpZXdfaWRzKGNicywgbG9j LCBTVkdBM0RfTUFYX1VBVklFV1MpOworCXZpZXdfaWRfc2l6ZSA9IGNicy0+YmluZF9jbWRfY291 bnQqc2l6ZW9mKHVpbnQzMik7CisJY21kX3NpemUgPSBzaXplb2YoKmNtZCkgKyB2aWV3X2lkX3Np emU7CisJY21kID0gVk1XX0ZJRk9fUkVTRVJWRV9EWChjdHgtPmRldl9wcml2LCBjbWRfc2l6ZSwg Y3R4LT5pZCk7CisJaWYgKCFjbWQpCisJCXJldHVybiAtRU5PTUVNOworCisJY21kLT5oZWFkZXIu aWQgPSBTVkdBXzNEX0NNRF9EWF9TRVRfQ1NfVUFfVklFV1M7CisJY21kLT5oZWFkZXIuc2l6ZSA9 IHNpemVvZihjbWQtPmJvZHkpICsgdmlld19pZF9zaXplOworCisJLyogU3RhcnQgaW5kZXggaXMg c3BlY2lmaWVkIHVzZXItc3BhY2UgKi8KKwljbWQtPmJvZHkuc3RhcnRJbmRleCA9IGNicy0+dWFf dmlld3NbMV0uaW5kZXg7CisKKwltZW1jcHkoJmNtZFsxXSwgY2JzLT5iaW5kX2NtZF9idWZmZXIs IHZpZXdfaWRfc2l6ZSk7CisKKwl2bXdfZmlmb19jb21taXQoY3R4LT5kZXZfcHJpdiwgY21kX3Np emUpOworCisJcmV0dXJuIDA7Cit9CisKIC8qKgogICogdm13X2JpbmRpbmdfZW1pdF9kaXJ0eSAt IElzc3VlIGRlbGF5ZWQgYmluZGluZyBjb21tYW5kcwogICoKQEAgLTEwNDUsNiArMTE0MiwxMiBA QCBzdGF0aWMgaW50IHZtd19iaW5kaW5nX2VtaXRfZGlydHkoc3RydWN0IHZtd19jdHhfYmluZGlu Z19zdGF0ZSAqY2JzKQogCQljYXNlIFZNV19CSU5ESU5HX1ZCX0JJVDoKIAkJCXJldCA9IHZtd19l bWl0X3NldF92YihjYnMpOwogCQkJYnJlYWs7CisJCWNhc2UgVk1XX0JJTkRJTkdfVUFWX0JJVDoK KwkJCXJldCA9IHZtd19lbWl0X3NldF91YXYoY2JzKTsKKwkJCWJyZWFrOworCQljYXNlIFZNV19C SU5ESU5HX0NTX1VBVl9CSVQ6CisJCQlyZXQgPSB2bXdfZW1pdF9zZXRfY3NfdWF2KGNicyk7CisJ CQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCUJVRygpOwogCQl9CkBAIC0xMTcxLDYgKzEyNzQsMjIg QEAgc3RhdGljIGludCB2bXdfYmluZGluZ19zY3J1Yl9pYihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5m byAqYmksIGJvb2wgcmViaW5kKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHZtd19iaW5k aW5nX3NjcnViX3VhdihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mbyAqYmksIGJvb2wgcmViaW5kKQor eworCXN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgKmNicyA9IHZtd19jb250ZXh0X2JpbmRp bmdfc3RhdGUoYmktPmN0eCk7CisKKwlfX3NldF9iaXQoVk1XX0JJTkRJTkdfVUFWX0JJVCwgJmNi cy0+ZGlydHkpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZtd19iaW5kaW5nX3NjcnVi X2NzX3VhdihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mbyAqYmksIGJvb2wgcmViaW5kKQoreworCXN0 cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgKmNicyA9IHZtd19jb250ZXh0X2JpbmRpbmdfc3Rh dGUoYmktPmN0eCk7CisKKwlfX3NldF9iaXQoVk1XX0JJTkRJTkdfQ1NfVUFWX0JJVCwgJmNicy0+ ZGlydHkpOworCXJldHVybiAwOworfQorCiAvKioKICAqIHZtd19iaW5kaW5nX3N0YXRlX2FsbG9j IC0gQWxsb2NhdGUgYSBzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlIHdpdGgKICAqIG1lbW9y eSBhY2NvdW50aW5nLgpAQCAtMTI1Nyw4ICsxMzc2LDggQEAgdm9pZCB2bXdfYmluZGluZ19zdGF0 ZV9yZXNldChzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlICpjYnMpCiAgKiBFYWNoIHRpbWUg YSByZXNvdXJjZSBpcyBwdXQgb24gdGhlIHZhbGlkYXRpb24gbGlzdCBhcyB0aGUgcmVzdWx0IG9m IGEKICAqIGNvbnRleHQgYmluZGluZyByZWZlcmVuY2luZyBpdCwgd2UgbmVlZCB0byBkZXRlcm1p bmUgd2hldGhlciB0aGF0IHJlc291cmNlCiAgKiB3aWxsIGJlIGRpcnRpZWQgKHdyaXR0ZW4gdG8g YnkgdGhlIEdQVSkgYXMgYSByZXN1bHQgb2YgdGhlIGNvcnJlc3BvbmRpbmcKLSAqIEdQVSBvcGVy YXRpb24uIEN1cnJlbnRseSByZW5kZXJ0YXJnZXQtLCBkZXB0aC1zdGVuY2lsLSwgYW5kCi0gKiBz dHJlYW0tb3V0cHV0LXRhcmdldCBiaW5kaW5ncyBhcmUgY2FwYWJsZSBvZiBkaXJ0eWluZyBpdHMg cmVzb3VyY2UuCisgKiBHUFUgb3BlcmF0aW9uLiBDdXJyZW50bHkgcmVuZGVydGFyZ2V0LSwgZGVw dGgtc3RlbmNpbC0sIHN0cmVhbS1vdXRwdXQtdGFyZ2V0CisgKiBhbmQgdW5vcmRlcmVkIGFjY2Vz cyB2aWV3IGJpbmRpbmdzIGFyZSBjYXBhYmxlIG9mIGRpcnR5aW5nIGl0cyByZXNvdXJjZS4KICAq CiAgKiBSZXR1cm46IFdoZXRoZXIgdGhlIGJpbmRpbmcgdHlwZSBkaXJ0aWVzIHRoZSByZXNvdXJj ZSBpdHMgYmluZGluZyBwb2ludHMgdG8uCiAgKi8KQEAgLTEyNjksMTAgKzEzODgsMTIgQEAgdTMy IHZtd19iaW5kaW5nX2RpcnR5aW5nKGVudW0gdm13X2N0eF9iaW5kaW5nX3R5cGUgYmluZGluZ190 eXBlKQogCQlbdm13X2N0eF9iaW5kaW5nX2R4X3J0XSA9IFZNV19SRVNfRElSVFlfU0VULAogCQlb dm13X2N0eF9iaW5kaW5nX2RzXSA9IFZNV19SRVNfRElSVFlfU0VULAogCQlbdm13X2N0eF9iaW5k aW5nX3NvXSA9IFZNV19SRVNfRElSVFlfU0VULAorCQlbdm13X2N0eF9iaW5kaW5nX3Vhdl0gPSBW TVdfUkVTX0RJUlRZX1NFVCwKKwkJW3Ztd19jdHhfYmluZGluZ19jc191YXZdID0gVk1XX1JFU19E SVJUWV9TRVQsCiAJfTsKIAogCS8qIFJldmlldyB0aGlzIGZ1bmN0aW9uIGFzIG5ldyBiaW5kaW5n cyBhcmUgYWRkZWQuICovCi0JQlVJTERfQlVHX09OKHZtd19jdHhfYmluZGluZ19tYXggIT0gMTEp OworCUJVSUxEX0JVR19PTih2bXdfY3R4X2JpbmRpbmdfbWF4ICE9IDEzKTsKIAlyZXR1cm4gaXNf YmluZGluZ19kaXJ0eWluZ1tiaW5kaW5nX3R5cGVdOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9iaW5kaW5nLmgKaW5kZXggY2Q5ODA1YzA0NWNiLi5kYTY3Y2JjOWNkNzMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JpbmRpbmcuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmgKQEAgLTMzLDYgKzMzLDggQEAKIAog I2RlZmluZSBWTVdfTUFYX1ZJRVdfQklORElOR1MgMTI4CiAKKyNkZWZpbmUgVk1XX01BWF9VQVZf QklORF9UWVBFIDIKKwogc3RydWN0IHZtd19wcml2YXRlOwogc3RydWN0IHZtd19jdHhfYmluZGlu Z19zdGF0ZTsKIApAQCAtNTEsNiArNTMsOCBAQCBlbnVtIHZtd19jdHhfYmluZGluZ190eXBlIHsK IAl2bXdfY3R4X2JpbmRpbmdfc28sCiAJdm13X2N0eF9iaW5kaW5nX3ZiLAogCXZtd19jdHhfYmlu ZGluZ19pYiwKKwl2bXdfY3R4X2JpbmRpbmdfdWF2LAorCXZtd19jdHhfYmluZGluZ19jc191YXYs CiAJdm13X2N0eF9iaW5kaW5nX21heAogfTsKIApAQCAtMTg5LDkgKzE5MywyMSBAQCBzdHJ1Y3Qg dm13X2R4X3NoYWRlcl9iaW5kaW5ncyB7CiAJdW5zaWduZWQgbG9uZyBkaXJ0eTsKIH07CiAKKy8q KgorICogc3RydWN0IHZtd19jdHhfYmluZGluZm9fdWF2IC0gVUFWIGNvbnRleHQgYmluZGluZyBz dGF0ZS4KKyAqIEB2aWV3czogVUFWIHZpZXcgYmluZGluZ3MuCisgKiBAc3BsaWNlX2luZGV4OiBU aGUgZGV2aWNlIHNwbGljZSBpbmRleCBzZXQgYnkgdXNlci1zcGFjZS4KKyAqLworc3RydWN0IHZt d19jdHhfYmluZGluZm9fdWF2IHsKKwlzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mb192aWV3IHZpZXdz W1NWR0EzRF9NQVhfVUFWSUVXU107CisJdWludDMyIGluZGV4OworfTsKKwogZXh0ZXJuIHZvaWQg dm13X2JpbmRpbmdfYWRkKHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgKmNicywKIAkJCSAg ICBjb25zdCBzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mbyAqY2ksCiAJCQkgICAgdTMyIHNoYWRlcl9z bG90LCB1MzIgc2xvdCk7CitleHRlcm4gdm9pZCB2bXdfYmluZGluZ19hZGRfdWF2X2luZGV4KHN0 cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgKmNicywKKwkJCQkgICAgICB1aW50MzIgc2xvdCwg dWludDMyIHNwbGljZV9pbmRleCk7CiBleHRlcm4gdm9pZAogdm13X2JpbmRpbmdfc3RhdGVfY29t bWl0KHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgKnRvLAogCQkJIHN0cnVjdCB2bXdfY3R4 X2JpbmRpbmdfc3RhdGUgKmZyb20pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY29udGV4 dC5jCmluZGV4IDA0NzdkOWE3NGZlOC4uNjFjMjQ2MzM1ZTY2IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfY29udGV4dC5jCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCB2bXdfdXNlcl9j b250ZXh0IHsKIAlzdHJ1Y3Qgdm13X3Jlc291cmNlIHJlczsKIAlzdHJ1Y3Qgdm13X2N0eF9iaW5k aW5nX3N0YXRlICpjYnM7CiAJc3RydWN0IHZtd19jbWRidWZfcmVzX21hbmFnZXIgKm1hbjsKLQlz dHJ1Y3Qgdm13X3Jlc291cmNlICpjb3RhYmxlc1tTVkdBX0NPVEFCTEVfRFgxMF9NQVhdOworCXN0 cnVjdCB2bXdfcmVzb3VyY2UgKmNvdGFibGVzW1NWR0FfQ09UQUJMRV9NQVhdOwogCXNwaW5sb2Nr X3QgY290YWJsZV9sb2NrOwogCXN0cnVjdCB2bXdfYnVmZmVyX29iamVjdCAqZHhfcXVlcnlfbW9i OwogfTsKQEAgLTExNiwxMiArMTE2LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm13X3Jlc19m dW5jIHZtd19keF9jb250ZXh0X2Z1bmMgPSB7CiAgKiBDb250ZXh0IG1hbmFnZW1lbnQ6CiAgKi8K IAotc3RhdGljIHZvaWQgdm13X2NvbnRleHRfY290YWJsZXNfdW5yZWYoc3RydWN0IHZtd191c2Vy X2NvbnRleHQgKnVjdHgpCitzdGF0aWMgdm9pZCB2bXdfY29udGV4dF9jb3RhYmxlc191bnJlZihz dHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgICAgICBzdHJ1Y3Qgdm13X3VzZXJf Y29udGV4dCAqdWN0eCkKIHsKIAlzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXM7CiAJaW50IGk7CisJ dTMyIGNvdGFibGVfbWF4ID0gaGFzX3NtNV9jb250ZXh0KGRldl9wcml2KSA/CisJCVNWR0FfQ09U QUJMRV9NQVggOiBTVkdBX0NPVEFCTEVfRFgxMF9NQVg7CiAKLQlmb3IgKGkgPSAwOyBpIDwgU1ZH QV9DT1RBQkxFX0RYMTBfTUFYOyArK2kpIHsKKwlmb3IgKGkgPSAwOyBpIDwgY290YWJsZV9tYXg7 ICsraSkgewogCQlzcGluX2xvY2soJnVjdHgtPmNvdGFibGVfbG9jayk7CiAJCXJlcyA9IHVjdHgt PmNvdGFibGVzW2ldOwogCQl1Y3R4LT5jb3RhYmxlc1tpXSA9IE5VTEw7CkBAIC0xNTUsNyArMTU4 LDcgQEAgc3RhdGljIHZvaWQgdm13X2h3X2NvbnRleHRfZGVzdHJveShzdHJ1Y3Qgdm13X3Jlc291 cmNlICpyZXMpCiAJCSAgICAhZGV2X3ByaXYtPnF1ZXJ5X2NpZF92YWxpZCkKIAkJCV9fdm13X2V4 ZWNidWZfcmVsZWFzZV9waW5uZWRfYm8oZGV2X3ByaXYsIE5VTEwpOwogCQltdXRleF91bmxvY2so JmRldl9wcml2LT5jbWRidWZfbXV0ZXgpOwotCQl2bXdfY29udGV4dF9jb3RhYmxlc191bnJlZih1 Y3R4KTsKKwkJdm13X2NvbnRleHRfY290YWJsZXNfdW5yZWYoZGV2X3ByaXYsIHVjdHgpOwogCQly ZXR1cm47CiAJfQogCkBAIC0yMDgsNyArMjExLDkgQEAgc3RhdGljIGludCB2bXdfZ2JfY29udGV4 dF9pbml0KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc3Bpbl9sb2NrX2luaXQoJnVj dHgtPmNvdGFibGVfbG9jayk7CiAKIAlpZiAoZHgpIHsKLQkJZm9yIChpID0gMDsgaSA8IFNWR0Ff Q09UQUJMRV9EWDEwX01BWDsgKytpKSB7CisJCXUzMiBjb3RhYmxlX21heCA9IGhhc19zbTVfY29u dGV4dChkZXZfcHJpdikgPworCQkJU1ZHQV9DT1RBQkxFX01BWCA6IFNWR0FfQ09UQUJMRV9EWDEw X01BWDsKKwkJZm9yIChpID0gMDsgaSA8IGNvdGFibGVfbWF4OyArK2kpIHsKIAkJCXVjdHgtPmNv dGFibGVzW2ldID0gdm13X2NvdGFibGVfYWxsb2MoZGV2X3ByaXYsCiAJCQkJCQkJICAgICAgJnVj dHgtPnJlcywgaSk7CiAJCQlpZiAoSVNfRVJSKHVjdHgtPmNvdGFibGVzW2ldKSkgewpAQCAtMjIy LDcgKzIyNyw3IEBAIHN0YXRpYyBpbnQgdm13X2diX2NvbnRleHRfaW5pdChzdHJ1Y3Qgdm13X3By aXZhdGUgKmRldl9wcml2LAogCXJldHVybiAwOwogCiBvdXRfY290YWJsZXM6Ci0Jdm13X2NvbnRl eHRfY290YWJsZXNfdW5yZWYodWN0eCk7CisJdm13X2NvbnRleHRfY290YWJsZXNfdW5yZWYoZGV2 X3ByaXYsIHVjdHgpOwogb3V0X2VycjoKIAlpZiAocmVzX2ZyZWUpCiAJCXJlc19mcmVlKHJlcyk7 CkBAIC01NDUsMTAgKzU1MCwxMiBAQCB2b2lkIHZtd19keF9jb250ZXh0X3NjcnViX2NvdGFibGVz KHN0cnVjdCB2bXdfcmVzb3VyY2UgKmN0eCwKIHsKIAlzdHJ1Y3Qgdm13X3VzZXJfY29udGV4dCAq dWN0eCA9CiAJCWNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCB2bXdfdXNlcl9jb250ZXh0LCByZXMp OworCXUzMiBjb3RhYmxlX21heCA9IGhhc19zbTVfY29udGV4dChjdHgtPmRldl9wcml2KSA/CisJ CVNWR0FfQ09UQUJMRV9NQVggOiBTVkdBX0NPVEFCTEVfRFgxMF9NQVg7CiAJaW50IGk7CiAKIAl2 bXdfYmluZGluZ19zdGF0ZV9zY3J1Yih1Y3R4LT5jYnMpOwotCWZvciAoaSA9IDA7IGkgPCBTVkdB X0NPVEFCTEVfRFgxMF9NQVg7ICsraSkgeworCWZvciAoaSA9IDA7IGkgPCBjb3RhYmxlX21heDsg KytpKSB7CiAJCXN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlczsKIAogCQkvKiBBdm9pZCByYWNpbmcg d2l0aCBvbmdvaW5nIGNvdGFibGUgZGVzdHJ1Y3Rpb24uICovCkBAIC04MzksNyArODQ2LDEwIEBA IHN0cnVjdCB2bXdfY21kYnVmX3Jlc19tYW5hZ2VyICp2bXdfY29udGV4dF9yZXNfbWFuKHN0cnVj dCB2bXdfcmVzb3VyY2UgKmN0eCkKIHN0cnVjdCB2bXdfcmVzb3VyY2UgKnZtd19jb250ZXh0X2Nv dGFibGUoc3RydWN0IHZtd19yZXNvdXJjZSAqY3R4LAogCQkJCQkgU1ZHQUNPVGFibGVUeXBlIGNv dGFibGVfdHlwZSkKIHsKLQlpZiAoY290YWJsZV90eXBlID49IFNWR0FfQ09UQUJMRV9EWDEwX01B WCkKKwl1MzIgY290YWJsZV9tYXggPSBoYXNfc201X2NvbnRleHQoY3R4LT5kZXZfcHJpdikgPwor CQlTVkdBX0NPVEFCTEVfTUFYIDogU1ZHQV9DT1RBQkxFX0RYMTBfTUFYOworCisJaWYgKGNvdGFi bGVfdHlwZSA+PSBjb3RhYmxlX21heCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAKIAly ZXR1cm4gY29udGFpbmVyX29mKGN0eCwgc3RydWN0IHZtd191c2VyX2NvbnRleHQsIHJlcyktPgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY290YWJsZS5jIGIvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY290YWJsZS5jCmluZGV4IDNjYTVjZjM3NWIwMS4u MDhjNWIyY2NjYTk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9j b3RhYmxlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY290YWJsZS5jCkBA IC04Miw3ICs4Miw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm13X2NvdGFibGVfaW5mbyBjb19p bmZvW10gPSB7CiAJezEsIHNpemVvZihTVkdBQ09UYWJsZURYU2FtcGxlckVudHJ5KSwgTlVMTH0s CiAJezEsIHNpemVvZihTVkdBQ09UYWJsZURYU3RyZWFtT3V0cHV0RW50cnkpLCBOVUxMfSwKIAl7 MSwgc2l6ZW9mKFNWR0FDT1RhYmxlRFhRdWVyeUVudHJ5KSwgTlVMTH0sCi0JezEsIHNpemVvZihT VkdBQ09UYWJsZURYU2hhZGVyRW50cnkpLCAmdm13X2R4X3NoYWRlcl9jb3RhYmxlX2xpc3Rfc2Ny dWJ9CisJezEsIHNpemVvZihTVkdBQ09UYWJsZURYU2hhZGVyRW50cnkpLCAmdm13X2R4X3NoYWRl cl9jb3RhYmxlX2xpc3Rfc2NydWJ9LAorCXsxLCBzaXplb2YoU1ZHQUNPVGFibGVEWFVBVmlld0Vu dHJ5KSwgJnZtd192aWV3X2NvdGFibGVfbGlzdF9kZXN0cm95fQogfTsKIAogLyoKQEAgLTEwMiw2 ICsxMDMsNyBAQCBjb25zdCBTVkdBQ09UYWJsZVR5cGUgdm13X2NvdGFibGVfc2NydWJfb3JkZXJb XSA9IHsKIAlTVkdBX0NPVEFCTEVfU0FNUExFUiwKIAlTVkdBX0NPVEFCTEVfU1RSRUFNT1VUUFVU LAogCVNWR0FfQ09UQUJMRV9EWFFVRVJZLAorCVNWR0FfQ09UQUJMRV9VQVZJRVcsCiB9OwogCiBz dGF0aWMgaW50IHZtd19jb3RhYmxlX2JpbmQoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzLApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jIGIvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jCmluZGV4IDRhYmVkMTM1YzAxMy4uZWQ1 NmQ5OTE4YzZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVj YnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jCkBAIC00 NTksMTEgKzQ1OSwxMyBAQCBzdGF0aWMgaW50IHZtd19yZXNvdXJjZV9jb250ZXh0X3Jlc19hZGQo c3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgdm13 X3Jlc291cmNlICpyZXM7CiAJdTMyIGk7CisJdTMyIGNvdGFibGVfbWF4ID0gaGFzX3NtNV9jb250 ZXh0KGN0eC0+ZGV2X3ByaXYpID8KKwkJU1ZHQV9DT1RBQkxFX01BWCA6IFNWR0FfQ09UQUJMRV9E WDEwX01BWDsKIAogCS8qIEFkZCBhbGwgY290YWJsZXMgdG8gdGhlIHZhbGlkYXRpb24gbGlzdC4g Ki8KIAlpZiAoaGFzX3NtNF9jb250ZXh0KGRldl9wcml2KSAmJgogCSAgICB2bXdfcmVzX3R5cGUo Y3R4KSA9PSB2bXdfcmVzX2R4X2NvbnRleHQpIHsKLQkJZm9yIChpID0gMDsgaSA8IFNWR0FfQ09U QUJMRV9EWDEwX01BWDsgKytpKSB7CisJCWZvciAoaSA9IDA7IGkgPCBjb3RhYmxlX21heDsgKytp KSB7CiAJCQlyZXMgPSB2bXdfY29udGV4dF9jb3RhYmxlKGN0eCwgaSk7CiAJCQlpZiAoSVNfRVJS KHJlcykpCiAJCQkJY29udGludWU7CkBAIC0yODE0LDYgKzI4MTYsMTI4IEBAIHN0YXRpYyBpbnQg dm13X2NtZF9pbnRyYV9zdXJmYWNlX2NvcHkoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwK IAkJCQkgJmNtZC0+Ym9keS5zdXJmYWNlLnNpZCwgTlVMTCk7CiB9CiAKK3N0YXRpYyBpbnQgdm13 X2NtZF9zbTVfdmlld19kZWZpbmUoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkg ICBzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQsCisJCQkJICAgU1ZHQTNkQ21kSGVh ZGVyICpoZWFkZXIpCit7CisJaWYgKCFoYXNfc201X2NvbnRleHQoZGV2X3ByaXYpKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCXJldHVybiB2bXdfY21kX2R4X3ZpZXdfZGVmaW5lKGRldl9wcml2LCBz d19jb250ZXh0LCBoZWFkZXIpOworfQorCitzdGF0aWMgaW50IHZtd19jbWRfc201X3ZpZXdfcmVt b3ZlKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgc3RydWN0IHZtd19zd19j b250ZXh0ICpzd19jb250ZXh0LAorCQkJCSAgIFNWR0EzZENtZEhlYWRlciAqaGVhZGVyKQorewor CWlmICghaGFzX3NtNV9jb250ZXh0KGRldl9wcml2KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwly ZXR1cm4gdm13X2NtZF9keF92aWV3X3JlbW92ZShkZXZfcHJpdiwgc3dfY29udGV4dCwgaGVhZGVy KTsKK30KKworc3RhdGljIGludCB2bXdfY21kX2NsZWFyX3Vhdl91aW50KHN0cnVjdCB2bXdfcHJp dmF0ZSAqZGV2X3ByaXYsCisJCQkJICBzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQs CisJCQkJICBTVkdBM2RDbWRIZWFkZXIgKmhlYWRlcikKK3sKKwlzdHJ1Y3QgeworCQlTVkdBM2RD bWRIZWFkZXIgaGVhZGVyOworCQlTVkdBM2RDbWREWENsZWFyVUFWaWV3VWludCBib2R5OworCX0g KmNtZCA9IGNvbnRhaW5lcl9vZihoZWFkZXIsIHR5cGVvZigqY21kKSwgaGVhZGVyKTsKKwlzdHJ1 Y3Qgdm13X3Jlc291cmNlICpyZXQ7CisKKwlpZiAoIWhhc19zbTVfY29udGV4dChkZXZfcHJpdikp CisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gdm13X3ZpZXdfaWRfdmFsX2FkZChzd19jb250 ZXh0LCB2bXdfdmlld191YSwKKwkJCQkgIGNtZC0+Ym9keS51YVZpZXdJZCk7CisKKwlyZXR1cm4g UFRSX0VSUl9PUl9aRVJPKHJldCk7Cit9CisKK3N0YXRpYyBpbnQgdm13X2NtZF9jbGVhcl91YXZf ZmxvYXQoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICBzdHJ1Y3Qgdm13X3N3 X2NvbnRleHQgKnN3X2NvbnRleHQsCisJCQkJICAgU1ZHQTNkQ21kSGVhZGVyICpoZWFkZXIpCit7 CisJc3RydWN0IHsKKwkJU1ZHQTNkQ21kSGVhZGVyIGhlYWRlcjsKKwkJU1ZHQTNkQ21kRFhDbGVh clVBVmlld0Zsb2F0IGJvZHk7CisJfSAqY21kID0gY29udGFpbmVyX29mKGhlYWRlciwgdHlwZW9m KCpjbWQpLCBoZWFkZXIpOworCXN0cnVjdCB2bXdfcmVzb3VyY2UgKnJldDsKKworCWlmICghaGFz X3NtNV9jb250ZXh0KGRldl9wcml2KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXQgPSB2bXdf dmlld19pZF92YWxfYWRkKHN3X2NvbnRleHQsIHZtd192aWV3X3VhLAorCQkJCSAgY21kLT5ib2R5 LnVhVmlld0lkKTsKKworCXJldHVybiBQVFJfRVJSX09SX1pFUk8ocmV0KTsKK30KKworc3RhdGlj IGludCB2bXdfY21kX3NldF91YXYoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAg IHN0cnVjdCB2bXdfc3dfY29udGV4dCAqc3dfY29udGV4dCwKKwkJCSAgIFNWR0EzZENtZEhlYWRl ciAqaGVhZGVyKQoreworCXN0cnVjdCB7CisJCVNWR0EzZENtZEhlYWRlciBoZWFkZXI7CisJCVNW R0EzZENtZERYU2V0VUFWaWV3cyBib2R5OworCX0gKmNtZCA9IGNvbnRhaW5lcl9vZihoZWFkZXIs IHR5cGVvZigqY21kKSwgaGVhZGVyKTsKKwl1MzIgbnVtX3VhdiA9IChjbWQtPmhlYWRlci5zaXpl IC0gc2l6ZW9mKGNtZC0+Ym9keSkpIC8KKwkJc2l6ZW9mKFNWR0EzZFVBVmlld0lkKTsKKwlpbnQg cmV0OworCisJaWYgKCFoYXNfc201X2NvbnRleHQoZGV2X3ByaXYpKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCWlmIChudW1fdWF2ID4gU1ZHQTNEX01BWF9VQVZJRVdTKSB7CisJCVZNV19ERUJVR19V U0VSKCJJbnZhbGlkIFVBViBiaW5kaW5nLlxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwor CXJldCA9IHZtd192aWV3X2JpbmRpbmdzX2FkZChzd19jb250ZXh0LCB2bXdfdmlld191YSwKKwkJ CQkgICAgdm13X2N0eF9iaW5kaW5nX3VhdiwgMCwgKHZvaWQgKikmY21kWzFdLAorCQkJCSAgICBu dW1fdWF2LCAwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJdm13X2JpbmRpbmdfYWRk X3Vhdl9pbmRleChzd19jb250ZXh0LT5keF9jdHhfbm9kZS0+c3RhZ2VkLCAwLAorCQkJCQkgY21k LT5ib2R5LnVhdlNwbGljZUluZGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQg dm13X2NtZF9zZXRfY3NfdWF2KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAg ICBzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQsCisJCQkgICAgICBTVkdBM2RDbWRI ZWFkZXIgKmhlYWRlcikKK3sKKwlzdHJ1Y3QgeworCQlTVkdBM2RDbWRIZWFkZXIgaGVhZGVyOwor CQlTVkdBM2RDbWREWFNldENTVUFWaWV3cyBib2R5OworCX0gKmNtZCA9IGNvbnRhaW5lcl9vZiho ZWFkZXIsIHR5cGVvZigqY21kKSwgaGVhZGVyKTsKKwl1MzIgbnVtX3VhdiA9IChjbWQtPmhlYWRl ci5zaXplIC0gc2l6ZW9mKGNtZC0+Ym9keSkpIC8KKwkJc2l6ZW9mKFNWR0EzZFVBVmlld0lkKTsK KwlpbnQgcmV0OworCisJaWYgKCFoYXNfc201X2NvbnRleHQoZGV2X3ByaXYpKQorCQlyZXR1cm4g LUVJTlZBTDsKKworCWlmIChudW1fdWF2ID4gU1ZHQTNEX01BWF9VQVZJRVdTKSB7CisJCVZNV19E RUJVR19VU0VSKCJJbnZhbGlkIFVBViBiaW5kaW5nLlxuIik7CisJCXJldHVybiAtRUlOVkFMOwor CX0KKworCXJldCA9IHZtd192aWV3X2JpbmRpbmdzX2FkZChzd19jb250ZXh0LCB2bXdfdmlld191 YSwKKwkJCQkgICAgdm13X2N0eF9iaW5kaW5nX2NzX3VhdiwgMCwgKHZvaWQgKikmY21kWzFdLAor CQkJCSAgICBudW1fdWF2LCAwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJdm13X2Jp bmRpbmdfYWRkX3Vhdl9pbmRleChzd19jb250ZXh0LT5keF9jdHhfbm9kZS0+c3RhZ2VkLCAxLAor CQkJCSAgY21kLT5ib2R5LnN0YXJ0SW5kZXgpOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGlj IGludCB2bXdfY21kX2NoZWNrX25vdF8zZChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAog CQkJCXN0cnVjdCB2bXdfc3dfY29udGV4dCAqc3dfY29udGV4dCwKIAkJCQl2b2lkICpidWYsIHVp bnQzMl90ICpzaXplKQpAQCAtMzE2Myw2ICszMjg3LDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dm13X2NtZF9lbnRyeSB2bXdfY21kX2VudHJpZXNbU1ZHQV8zRF9DTURfTUFYXSA9IHsKIAkJICAg IHRydWUsIGZhbHNlLCB0cnVlKSwKIAlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9JTlRSQV9TVVJG QUNFX0NPUFksICZ2bXdfY21kX2ludHJhX3N1cmZhY2VfY29weSwKIAkJICAgIHRydWUsIGZhbHNl LCB0cnVlKSwKKworCS8qCisJICogU001IGNvbW1hbmRzCisJICovCisJVk1XX0NNRF9ERUYoU1ZH QV8zRF9DTURfRFhfREVGSU5FX1VBX1ZJRVcsICZ2bXdfY21kX3NtNV92aWV3X2RlZmluZSwKKwkJ ICAgIHRydWUsIGZhbHNlLCB0cnVlKSwKKwlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9ERVNU Uk9ZX1VBX1ZJRVcsICZ2bXdfY21kX3NtNV92aWV3X3JlbW92ZSwKKwkJICAgIHRydWUsIGZhbHNl LCB0cnVlKSwKKwlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9DTEVBUl9VQV9WSUVXX1VJTlQs ICZ2bXdfY21kX2NsZWFyX3Vhdl91aW50LAorCQkgICAgdHJ1ZSwgZmFsc2UsIHRydWUpLAorCVZN V19DTURfREVGKFNWR0FfM0RfQ01EX0RYX0NMRUFSX1VBX1ZJRVdfRkxPQVQsCisJCSAgICAmdm13 X2NtZF9jbGVhcl91YXZfZmxvYXQsIHRydWUsIGZhbHNlLCB0cnVlKSwKKwlWTVdfQ01EX0RFRihT VkdBXzNEX0NNRF9EWF9DT1BZX1NUUlVDVFVSRV9DT1VOVCwgJnZtd19jbWRfaW52YWxpZCwgdHJ1 ZSwKKwkJICAgIGZhbHNlLCB0cnVlKSwKKwlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9TRVRf VUFfVklFV1MsICZ2bXdfY21kX3NldF91YXYsIHRydWUsIGZhbHNlLAorCQkgICAgdHJ1ZSksCisJ Vk1XX0NNRF9ERUYoU1ZHQV8zRF9DTURfRFhfU0VUX0NTX1VBX1ZJRVdTLCAmdm13X2NtZF9zZXRf Y3NfdWF2LCB0cnVlLAorCQkgICAgZmFsc2UsIHRydWUpLAogfTsKIAogYm9vbCB2bXdfY21kX2Rl c2NyaWJlKGNvbnN0IHZvaWQgKmJ1ZiwgdTMyICpzaXplLCBjaGFyIGNvbnN0ICoqY21kKQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc28uYyBiL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X3NvLmMKaW5kZXggNjM4MDczNjFlMTZmLi4zZjk3YjYxZGQ1ZDgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3NvLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc28uYwpAQCAtMzE5LDcgKzMxOSw4IEBAIGludCB2 bXdfdmlld19hZGQoc3RydWN0IHZtd19jbWRidWZfcmVzX21hbmFnZXIgKm1hbiwKIAlzdGF0aWMg Y29uc3Qgc2l6ZV90IHZtd192aWV3X2RlZmluZV9zaXplc1tdID0gewogCQlbdm13X3ZpZXdfc3Jd ID0gc2l6ZW9mKFNWR0EzZENtZERYRGVmaW5lU2hhZGVyUmVzb3VyY2VWaWV3KSwKIAkJW3Ztd192 aWV3X3J0XSA9IHNpemVvZihTVkdBM2RDbWREWERlZmluZVJlbmRlclRhcmdldFZpZXcpLAotCQlb dm13X3ZpZXdfZHNdID0gc2l6ZW9mKFNWR0EzZENtZERYRGVmaW5lRGVwdGhTdGVuY2lsVmlldykK KwkJW3Ztd192aWV3X2RzXSA9IHNpemVvZihTVkdBM2RDbWREWERlZmluZURlcHRoU3RlbmNpbFZp ZXcpLAorCQlbdm13X3ZpZXdfdWFdID0gc2l6ZW9mKFNWR0EzZENtZERYRGVmaW5lVUFWaWV3KQog CX07CiAKIAlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0gY3R4LT5kZXZfcHJpdjsKQEAg LTQ5OSw4ICs1MDAsOCBAQCBzdHJ1Y3Qgdm13X3Jlc291cmNlICp2bXdfdmlld19sb29rdXAoc3Ry dWN0IHZtd19jbWRidWZfcmVzX21hbmFnZXIgKm1hbiwKICAqIEVhY2ggdGltZSBhIHJlc291cmNl IGlzIHB1dCBvbiB0aGUgdmFsaWRhdGlvbiBsaXN0IGFzIHRoZSByZXN1bHQgb2YgYQogICogdmll dyBwb2ludGluZyB0byBpdCwgd2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGF0IHJlc291 cmNlIHdpbGwKICAqIGJlIGRpcnRpZWQgKHdyaXR0ZW4gdG8gYnkgdGhlIEdQVSkgYXMgYSByZXN1 bHQgb2YgdGhlIGNvcnJlc3BvbmRpbmcKLSAqIEdQVSBvcGVyYXRpb24uIEN1cnJlbnRseSBvbmx5 IHJlbmRlcnRhcmdldC0gYW5kIGRlcHRoLXN0ZW5jaWwgdmlld3MgYXJlCi0gKiBjYXBhYmxlIG9m IGRpcnR5aW5nIGl0cyByZXNvdXJjZS4KKyAqIEdQVSBvcGVyYXRpb24uIEN1cnJlbnRseSBvbmx5 IHJlbmRlcnRhcmdldC0sIGRlcHRoLXN0ZW5jaWwgYW5kIHVub3JkZXJlZAorICogYWNjZXNzIHZp ZXdzIGFyZSBjYXBhYmxlIG9mIGRpcnR5aW5nIGl0cyByZXNvdXJjZS4KICAqCiAgKiBSZXR1cm46 IFdoZXRoZXIgdGhlIHZpZXcgdHlwZSBvZiBAcmVzIGRpcnRpZXMgdGhlIHJlc291cmNlIGl0IHBv aW50cyB0by4KICAqLwpAQCAtNTA5LDEwICs1MTAsMTEgQEAgdTMyIHZtd192aWV3X2RpcnR5aW5n KHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcykKIAlzdGF0aWMgdTMyIHZpZXdfaXNfZGlydHlpbmdb dm13X3ZpZXdfbWF4XSA9IHsKIAkJW3Ztd192aWV3X3J0XSA9IFZNV19SRVNfRElSVFlfU0VULAog CQlbdm13X3ZpZXdfZHNdID0gVk1XX1JFU19ESVJUWV9TRVQsCisJCVt2bXdfdmlld191YV0gPSBW TVdfUkVTX0RJUlRZX1NFVCwKIAl9OwogCiAJLyogVXBkYXRlIHRoaXMgZnVuY3Rpb24gYXMgd2Ug YWRkIG1vcmUgdmlldyB0eXBlcyAqLwotCUJVSUxEX0JVR19PTih2bXdfdmlld19tYXggIT0gMyk7 CisJQlVJTERfQlVHX09OKHZtd192aWV3X21heCAhPSA0KTsKIAlyZXR1cm4gdmlld19pc19kaXJ0 eWluZ1t2bXdfdmlldyhyZXMpLT52aWV3X3R5cGVdOwogfQogCkBAIC01MjAsMTIgKzUyMiwxNCBA QCBjb25zdCB1MzIgdm13X3ZpZXdfZGVzdHJveV9jbWRzW10gPSB7CiAJW3Ztd192aWV3X3NyXSA9 IFNWR0FfM0RfQ01EX0RYX0RFU1RST1lfU0hBREVSUkVTT1VSQ0VfVklFVywKIAlbdm13X3ZpZXdf cnRdID0gU1ZHQV8zRF9DTURfRFhfREVTVFJPWV9SRU5ERVJUQVJHRVRfVklFVywKIAlbdm13X3Zp ZXdfZHNdID0gU1ZHQV8zRF9DTURfRFhfREVTVFJPWV9ERVBUSFNURU5DSUxfVklFVywKKwlbdm13 X3ZpZXdfdWFdID0gU1ZHQV8zRF9DTURfRFhfREVTVFJPWV9VQV9WSUVXLAogfTsKIAogY29uc3Qg U1ZHQUNPVGFibGVUeXBlIHZtd192aWV3X2NvdGFibGVzW10gPSB7CiAJW3Ztd192aWV3X3NyXSA9 IFNWR0FfQ09UQUJMRV9TUlZJRVcsCiAJW3Ztd192aWV3X3J0XSA9IFNWR0FfQ09UQUJMRV9SVFZJ RVcsCiAJW3Ztd192aWV3X2RzXSA9IFNWR0FfQ09UQUJMRV9EU1ZJRVcsCisJW3Ztd192aWV3X3Vh XSA9IFNWR0FfQ09UQUJMRV9VQVZJRVcsCiB9OwogCiBjb25zdCBTVkdBQ09UYWJsZVR5cGUgdm13 X3NvX2NvdGFibGVzW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9zby5oIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc28uaAppbmRleCAxMjU2 NTA0N2JjNTUuLjIyYjRmNTcyMDkwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfc28uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zby5oCkBA IC0zMCw2ICszMCw3IEBAIGVudW0gdm13X3ZpZXdfdHlwZSB7CiAJdm13X3ZpZXdfc3IsCiAJdm13 X3ZpZXdfcnQsCiAJdm13X3ZpZXdfZHMsCisJdm13X3ZpZXdfdWEsCiAJdm13X3ZpZXdfbWF4LAog fTsKIApAQCAtNjEsNiArNjIsNyBAQCB1bmlvbiB2bXdfdmlld19kZXN0cm95IHsKIAlzdHJ1Y3Qg U1ZHQTNkQ21kRFhEZXN0cm95UmVuZGVyVGFyZ2V0VmlldyBydHY7CiAJc3RydWN0IFNWR0EzZENt ZERYRGVzdHJveVNoYWRlclJlc291cmNlVmlldyBzcnY7CiAJc3RydWN0IFNWR0EzZENtZERYRGVz dHJveURlcHRoU3RlbmNpbFZpZXcgZHN2OworCXN0cnVjdCBTVkdBM2RDbWREWERlc3Ryb3lVQVZp ZXcgdWF2OwogCXUzMiB2aWV3X2lkOwogfTsKIApAQCAtODcsNiArODksMTAgQEAgc3RhdGljIGlu bGluZSBlbnVtIHZtd192aWV3X3R5cGUgdm13X3ZpZXdfY21kX3RvX3R5cGUodTMyIGlkKQogewog CXUzMiB0bXAgPSAoaWQgLSBTVkdBXzNEX0NNRF9EWF9ERUZJTkVfU0hBREVSUkVTT1VSQ0VfVklF VykgLyAyOwogCisJaWYgKGlkID09IFNWR0FfM0RfQ01EX0RYX0RFRklORV9VQV9WSUVXIHx8CisJ ICAgIGlkID09IFNWR0FfM0RfQ01EX0RYX0RFU1RST1lfVUFfVklFVykKKwkJcmV0dXJuIHZtd192 aWV3X3VhOworCiAJaWYgKHRtcCA+ICh1MzIpdm13X3ZpZXdfbWF4KQogCQlyZXR1cm4gdm13X3Zp ZXdfbWF4OwogCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=