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,URIBL_BLOCKED,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 091FEC10DCE for ; Mon, 23 Mar 2020 23:09:22 +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 CAD3820409 for ; Mon, 23 Mar 2020 23:09:21 +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="PeVlvmgz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CAD3820409 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 98F4D6E3F4; Mon, 23 Mar 2020 23:09:20 +0000 (UTC) Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1CC966E3F4 for ; Mon, 23 Mar 2020 23:09:17 +0000 (UTC) Received: by mail-wr1-x443.google.com with SMTP id h15so7064457wrx.9 for ; Mon, 23 Mar 2020 16:09:17 -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=1SECVlbjtopH5exPvgwbyOoPnWgYKpfDMVhroWJzfQk=; b=PeVlvmgzTeE2AX+/SKCwCiElth5g6akSSBSw26mGrcwjvA6XZ80uyAaDS09xhp68nA V8/zS8ZrEK+yIbVKOziheQhbTLkvxFqwdJUYnAyuwknJZQ+Ofc+6wIAL3dCyeqWB2IvS i84ffa6EUSfZ+0o2F/KI1IF3S+JO7v2SaV2z+nHH+zFBhpKD2Itzk+ihPQvNkr8xtxVj WLNo08JumZYJoLhslLGuJzSxFknFIc9lZlMyAxHs46DYSm7r9toX2Ng9HXcmkmKe0aLG XbTS4pRNNgMV96sOEZqLIw+VtBzRQd2b7L5T/ty22T0E41Od4hv5VBrmq/gZr5z+kidJ 84ng== 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=1SECVlbjtopH5exPvgwbyOoPnWgYKpfDMVhroWJzfQk=; b=aQRsJIE8sZvlxUMaUaian6uwLhoxCgNj2Lm+/wWXXo0xRw26MZl9Zh79oYkODPDYzS hPK6szAZKZzW3NDqMHE1VSKAthJFa6Ejr1dgebU/4XrVpFZEyzmU+qKhirmyvPAV5dzK JmIY7DU0P4DLXstJb1INikdg6nOdk0YHWNoOBfkoH6uF6/vdpf6zOv9a0tRiIXYJbMfK pijHi12IXnv4gxj/uqAnnogGhq4ZDCCSvQUDs/qtQMvKUYWj3SnggHl4CXxnyf71jEmV X/4zmc8gAVVj0bWPBzYkXsGjfuz3WciBJpSKfZOCMIWbqGhC2OeWu3a5k6nFppvW4Spa v19A== X-Gm-Message-State: ANhLgQ1gmxGFb3ZMQR7ri//mJS9qkMnQPoJL93aK3nbDnxVkxIAQtgKR ScRKNt6k/aHWXyT+NwifUxQfuwrF X-Google-Smtp-Source: ADFU+vtOe8Z5I8n0luR36Y2fMUi3AcfI2ya5ywRglooP7K1wQypslQipeyXy9cNTNdZxZNjh3vqw/A== X-Received: by 2002:a5d:4e05:: with SMTP id p5mr32833415wrt.59.1585004954970; Mon, 23 Mar 2020 16:09:14 -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 q185sm1641937wme.10.2020.03.23.16.09.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2020 16:09:14 -0700 (PDT) From: Roland Scheidegger X-Google-Original-From: Roland Scheidegger To: dri-devel@lists.freedesktop.org, airlied@redhat.com, daniel@ffwll.ch Subject: [PATCH v2 09/17] drm/vmwgfx: Add support for UA view commands Date: Tue, 24 Mar 2020 00:08:53 +0100 Message-Id: <20200323230901.13302-10-sroland@vmware.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200323230901.13302-1-sroland@vmware.com> References: <20200323230901.13302-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 OiBUaG9tYXMgSGVsbHN0csO2bSAoVk13YXJlKSA8dGhvbWFzX29zQHNoaXBtYWlsLm9yZz4KUmV2 aWV3ZWQtYnk6IFJvbGFuZCBTY2hlaWRlZ2dlciA8c3JvbGFuZEB2bXdhcmUuY29tPgpTaWduZWQt b2ZmLWJ5OiBSb2xhbmQgU2NoZWlkZWdnZXIgPHNyb2xhbmRAdm13YXJlLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmMgfCAxMjkgKysrKysrKysrKysrKysr KysrKystCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmggfCAgMTYgKysr CiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9jb250ZXh0LmMgfCAgMjYgKysrLS0KIGRy aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2NvdGFibGUuYyB8ICAgNCArLQogZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jIHwgMTQ0ICsrKysrKysrKysrKysrKysrKysr KysrLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc28uYyAgICAgIHwgIDEyICstCiBk cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zby5oICAgICAgfCAgIDYgKwogNyBmaWxlcyBj aGFuZ2VkLCAzMTkgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYmluZGluZy5jIGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfYmluZGluZy5jCmluZGV4IDVhN2U4ZGIzZTgyNi4uZjBhNTc2Njk4MjY2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYmluZGluZy5jCkBAIC01OSw3ICs1OSw5 IEBACiAjZGVmaW5lIFZNV19CSU5ESU5HX1BTX0JJVCAgICAgMQogI2RlZmluZSBWTVdfQklORElO R19TT19CSVQgICAgIDIKICNkZWZpbmUgVk1XX0JJTkRJTkdfVkJfQklUICAgICAzCi0jZGVmaW5l IFZNV19CSU5ESU5HX05VTV9CSVRTICAgNAorI2RlZmluZSBWTVdfQklORElOR19VQVZfQklUICAg IDQKKyNkZWZpbmUgVk1XX0JJTkRJTkdfQ1NfVUFWX0JJVCA1CisjZGVmaW5lIFZNV19CSU5ESU5H X05VTV9CSVRTICAgNgogCiAjZGVmaW5lIFZNV19CSU5ESU5HX1BTX1NSX0JJVCAgMAogCkBAIC03 NSw2ICs3Nyw3IEBACiAgKiBAdmVydGV4X2J1ZmZlcnM6IFZlcnRleCBidWZmZXIgYmluZGluZ3Mu CiAgKiBAaW5kZXhfYnVmZmVyOiBJbmRleCBidWZmZXIgYmluZGluZy4KICAqIEBwZXJfc2hhZGVy OiBQZXIgc2hhZGVyLXR5cGUgYmluZGluZ3MuCisgKiBAdWFfdmlld3M6IFVBViBiaW5kaW5ncy4K ICAqIEBkaXJ0eTogQml0bWFwIHRyYWNraW5nIHBlciBiaW5kaW5nLXR5cGUgY2hhbmdlcyB0aGF0 IGhhdmUgbm90IHlldAogICogYmVlbiBlbWl0dGVkIHRvIHRoZSBkZXZpY2UuCiAgKiBAZGlydHlf dmI6IEJpdG1hcCB0cmFja2luZyBpbmRpdmlkdWFsIHZlcnRleCBidWZmZXIgYmluZGluZyBjaGFu Z2VzIHRoYXQKQEAgLTk5LDYgKzEwMiw3IEBAIHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUg ewogCXN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvX3ZiIHZlcnRleF9idWZmZXJzW1NWR0EzRF9EWF9N QVhfVkVSVEVYQlVGRkVSU107CiAJc3RydWN0IHZtd19jdHhfYmluZGluZm9faWIgaW5kZXhfYnVm ZmVyOwogCXN0cnVjdCB2bXdfZHhfc2hhZGVyX2JpbmRpbmdzIHBlcl9zaGFkZXJbU1ZHQTNEX05V TV9TSEFERVJUWVBFXTsKKwlzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mb191YXYgdWFfdmlld3NbVk1X X01BWF9VQVZfQklORF9UWVBFXTsKIAogCXVuc2lnbmVkIGxvbmcgZGlydHk7CiAJREVDTEFSRV9C SVRNQVAoZGlydHlfdmIsIFNWR0EzRF9EWF9NQVhfVkVSVEVYQlVGRkVSUyk7CkBAIC0xMjEsNiAr MTI1LDkgQEAgc3RhdGljIGludCB2bXdfYmluZGluZ19zY3J1Yl9keF9zaGFkZXIoc3RydWN0IHZt d19jdHhfYmluZGluZm8gKmJpLAogCQkJCSAgICAgICBib29sIHJlYmluZCk7CiBzdGF0aWMgaW50 IHZtd19iaW5kaW5nX3NjcnViX2liKHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvICpiaSwgYm9vbCBy ZWJpbmQpOwogc3RhdGljIGludCB2bXdfYmluZGluZ19zY3J1Yl92YihzdHJ1Y3Qgdm13X2N0eF9i aW5kaW5mbyAqYmksIGJvb2wgcmViaW5kKTsKK3N0YXRpYyBpbnQgdm13X2JpbmRpbmdfc2NydWJf dWF2KHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvICpiaSwgYm9vbCByZWJpbmQpOworc3RhdGljIGlu dCB2bXdfYmluZGluZ19zY3J1Yl9jc191YXYoc3RydWN0IHZtd19jdHhfYmluZGluZm8gKmJpLCBi b29sIHJlYmluZCk7CisKIHN0YXRpYyB2b2lkIHZtd19iaW5kaW5nX2J1aWxkX2Fzc2VydHModm9p ZCkgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwogCiB0eXBlZGVmIGludCAoKnZtd19zY3J1Yl9m dW5jKShzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mbyAqLCBib29sKTsKQEAgLTE4OSw2ICsxOTYsMTIg QEAgc3RhdGljIGNvbnN0IHNpemVfdCB2bXdfYmluZGluZ192Yl9vZmZzZXRzW10gPSB7CiBzdGF0 aWMgY29uc3Qgc2l6ZV90IHZtd19iaW5kaW5nX2liX29mZnNldHNbXSA9IHsKIAlvZmZzZXRvZihz dHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlLCBpbmRleF9idWZmZXIpLAogfTsKK3N0YXRpYyBj b25zdCBzaXplX3Qgdm13X2JpbmRpbmdfdWF2X29mZnNldHNbXSA9IHsKKwlvZmZzZXRvZihzdHJ1 Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlLCB1YV92aWV3c1swXS52aWV3cyksCit9Oworc3RhdGlj IGNvbnN0IHNpemVfdCB2bXdfYmluZGluZ19jc191YXZfb2Zmc2V0c1tdID0geworCW9mZnNldG9m KHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUsIHVhX3ZpZXdzWzFdLnZpZXdzKSwKK307CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm13X2JpbmRpbmdfaW5mbyB2bXdfYmluZGluZ19pbmZvc1td ID0gewogCVt2bXdfY3R4X2JpbmRpbmdfc2hhZGVyXSA9IHsKQEAgLTIzNSw2ICsyNDgsMTQgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCB2bXdfYmluZGluZ19pbmZvIHZtd19iaW5kaW5nX2luZm9zW10g PSB7CiAJCS5zaXplID0gc2l6ZW9mKHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvX2liKSwKIAkJLm9m ZnNldHMgPSB2bXdfYmluZGluZ19pYl9vZmZzZXRzLAogCQkuc2NydWJfZnVuYyA9IHZtd19iaW5k aW5nX3NjcnViX2lifSwKKwlbdm13X2N0eF9iaW5kaW5nX3Vhdl0gPSB7CisJCS5zaXplID0gc2l6 ZW9mKHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvX3ZpZXcpLAorCQkub2Zmc2V0cyA9IHZtd19iaW5k aW5nX3Vhdl9vZmZzZXRzLAorCQkuc2NydWJfZnVuYyA9IHZtd19iaW5kaW5nX3NjcnViX3Vhdn0s CisJW3Ztd19jdHhfYmluZGluZ19jc191YXZdID0geworCQkuc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg dm13X2N0eF9iaW5kaW5mb192aWV3KSwKKwkJLm9mZnNldHMgPSB2bXdfYmluZGluZ19jc191YXZf b2Zmc2V0cywKKwkJLnNjcnViX2Z1bmMgPSB2bXdfYmluZGluZ19zY3J1Yl9jc191YXZ9LAogfTsK IAogLyoqCkBAIC0zMjAsNiArMzQxLDE4IEBAIHZvaWQgdm13X2JpbmRpbmdfYWRkKHN0cnVjdCB2 bXdfY3R4X2JpbmRpbmdfc3RhdGUgKmNicywKIAlJTklUX0xJU1RfSEVBRCgmbG9jLT5yZXNfbGlz dCk7CiB9CiAKKy8qKgorICogdm13X2JpbmRpbmdfYWRkX3Vhdl9pbmRleCAtIEFkZCBVQVYgaW5k ZXggZm9yIHRyYWNraW5nLgorICogQGNiczogUG9pbnRlciB0byB0aGUgY29udGV4dCBiaW5kaW5n IHN0YXRlIHRyYWNrZXIuCisgKiBAc2xvdDogVUFWIHR5cGUgdG8gd2hpY2ggYmluZCB0aGlzIGlu ZGV4LgorICogQGluZGV4OiBUaGUgc3BsaWNlIGluZGV4IHRvIHRyYWNrLgorICovCit2b2lkIHZt d19iaW5kaW5nX2FkZF91YXZfaW5kZXgoc3RydWN0IHZtd19jdHhfYmluZGluZ19zdGF0ZSAqY2Jz LCB1aW50MzIgc2xvdCwKKwkJCSAgICAgICB1aW50MzIgaW5kZXgpCit7CisJY2JzLT51YV92aWV3 c1tzbG90XS5pbmRleCA9IGluZGV4OworfQorCiAvKioKICAqIHZtd19iaW5kaW5nX3RyYW5zZmVy OiBUcmFuc2ZlciBhIGNvbnRleHQgYmluZGluZyB0cmFja2luZyBlbnRyeS4KICAqCkBAIC00NTks NiArNDkyLDEwIEBAIHZvaWQgdm13X2JpbmRpbmdfc3RhdGVfY29tbWl0KHN0cnVjdCB2bXdfY3R4 X2JpbmRpbmdfc3RhdGUgKnRvLAogCQl2bXdfYmluZGluZ190cmFuc2Zlcih0bywgZnJvbSwgZW50 cnkpOwogCQl2bXdfYmluZGluZ19kcm9wKGVudHJ5KTsKIAl9CisKKwkvKiBBbHNvIHRyYW5zZmVy IHVhdiBzcGxpY2UgaW5kaWNlcyAqLworCXRvLT51YV92aWV3c1swXS5pbmRleCA9IGZyb20tPnVh X3ZpZXdzWzBdLmluZGV4OworCXRvLT51YV92aWV3c1sxXS5pbmRleCA9IGZyb20tPnVhX3ZpZXdz WzFdLmluZGV4OwogfQogCiAvKioKQEAgLTEwMTQsNiArMTA1MSw2NiBAQCBzdGF0aWMgaW50IHZt d19lbWl0X3NldF92YihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlICpjYnMpCiAJcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyBpbnQgdm13X2VtaXRfc2V0X3VhdihzdHJ1Y3Qgdm13X2N0eF9iaW5k aW5nX3N0YXRlICpjYnMpCit7CisJY29uc3Qgc3RydWN0IHZtd19jdHhfYmluZGluZm8gKmxvYyA9 ICZjYnMtPnVhX3ZpZXdzWzBdLnZpZXdzWzBdLmJpOworCXN0cnVjdCB7CisJCVNWR0EzZENtZEhl YWRlciBoZWFkZXI7CisJCVNWR0EzZENtZERYU2V0VUFWaWV3cyBib2R5OworCX0gKmNtZDsKKwlz aXplX3QgY21kX3NpemUsIHZpZXdfaWRfc2l6ZTsKKwljb25zdCBzdHJ1Y3Qgdm13X3Jlc291cmNl ICpjdHggPSB2bXdfY2JzX2NvbnRleHQoY2JzKTsKKworCXZtd19jb2xsZWN0X3ZpZXdfaWRzKGNi cywgbG9jLCBTVkdBM0RfTUFYX1VBVklFV1MpOworCXZpZXdfaWRfc2l6ZSA9IGNicy0+YmluZF9j bWRfY291bnQqc2l6ZW9mKHVpbnQzMik7CisJY21kX3NpemUgPSBzaXplb2YoKmNtZCkgKyB2aWV3 X2lkX3NpemU7CisJY21kID0gVk1XX0ZJRk9fUkVTRVJWRV9EWChjdHgtPmRldl9wcml2LCBjbWRf c2l6ZSwgY3R4LT5pZCk7CisJaWYgKCFjbWQpCisJCXJldHVybiAtRU5PTUVNOworCisJY21kLT5o ZWFkZXIuaWQgPSBTVkdBXzNEX0NNRF9EWF9TRVRfVUFfVklFV1M7CisJY21kLT5oZWFkZXIuc2l6 ZSA9IHNpemVvZihjbWQtPmJvZHkpICsgdmlld19pZF9zaXplOworCisJLyogU3BsaWNlIGluZGV4 IGlzIHNwZWNpZmllZCB1c2VyLXNwYWNlICAgKi8KKwljbWQtPmJvZHkudWF2U3BsaWNlSW5kZXgg PSBjYnMtPnVhX3ZpZXdzWzBdLmluZGV4OworCisJbWVtY3B5KCZjbWRbMV0sIGNicy0+YmluZF9j bWRfYnVmZmVyLCB2aWV3X2lkX3NpemUpOworCisJdm13X2ZpZm9fY29tbWl0KGN0eC0+ZGV2X3By aXYsIGNtZF9zaXplKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZtd19lbWl0X3Nl dF9jc191YXYoc3RydWN0IHZtd19jdHhfYmluZGluZ19zdGF0ZSAqY2JzKQoreworCWNvbnN0IHN0 cnVjdCB2bXdfY3R4X2JpbmRpbmZvICpsb2MgPSAmY2JzLT51YV92aWV3c1sxXS52aWV3c1swXS5i aTsKKwlzdHJ1Y3QgeworCQlTVkdBM2RDbWRIZWFkZXIgaGVhZGVyOworCQlTVkdBM2RDbWREWFNl dENTVUFWaWV3cyBib2R5OworCX0gKmNtZDsKKwlzaXplX3QgY21kX3NpemUsIHZpZXdfaWRfc2l6 ZTsKKwljb25zdCBzdHJ1Y3Qgdm13X3Jlc291cmNlICpjdHggPSB2bXdfY2JzX2NvbnRleHQoY2Jz KTsKKworCXZtd19jb2xsZWN0X3ZpZXdfaWRzKGNicywgbG9jLCBTVkdBM0RfTUFYX1VBVklFV1Mp OworCXZpZXdfaWRfc2l6ZSA9IGNicy0+YmluZF9jbWRfY291bnQqc2l6ZW9mKHVpbnQzMik7CisJ Y21kX3NpemUgPSBzaXplb2YoKmNtZCkgKyB2aWV3X2lkX3NpemU7CisJY21kID0gVk1XX0ZJRk9f UkVTRVJWRV9EWChjdHgtPmRldl9wcml2LCBjbWRfc2l6ZSwgY3R4LT5pZCk7CisJaWYgKCFjbWQp CisJCXJldHVybiAtRU5PTUVNOworCisJY21kLT5oZWFkZXIuaWQgPSBTVkdBXzNEX0NNRF9EWF9T RVRfQ1NfVUFfVklFV1M7CisJY21kLT5oZWFkZXIuc2l6ZSA9IHNpemVvZihjbWQtPmJvZHkpICsg dmlld19pZF9zaXplOworCisJLyogU3RhcnQgaW5kZXggaXMgc3BlY2lmaWVkIHVzZXItc3BhY2Ug Ki8KKwljbWQtPmJvZHkuc3RhcnRJbmRleCA9IGNicy0+dWFfdmlld3NbMV0uaW5kZXg7CisKKwlt ZW1jcHkoJmNtZFsxXSwgY2JzLT5iaW5kX2NtZF9idWZmZXIsIHZpZXdfaWRfc2l6ZSk7CisKKwl2 bXdfZmlmb19jb21taXQoY3R4LT5kZXZfcHJpdiwgY21kX3NpemUpOworCisJcmV0dXJuIDA7Cit9 CisKIC8qKgogICogdm13X2JpbmRpbmdfZW1pdF9kaXJ0eSAtIElzc3VlIGRlbGF5ZWQgYmluZGlu ZyBjb21tYW5kcwogICoKQEAgLTEwNDUsNiArMTE0MiwxMiBAQCBzdGF0aWMgaW50IHZtd19iaW5k aW5nX2VtaXRfZGlydHkoc3RydWN0IHZtd19jdHhfYmluZGluZ19zdGF0ZSAqY2JzKQogCQljYXNl IFZNV19CSU5ESU5HX1ZCX0JJVDoKIAkJCXJldCA9IHZtd19lbWl0X3NldF92YihjYnMpOwogCQkJ YnJlYWs7CisJCWNhc2UgVk1XX0JJTkRJTkdfVUFWX0JJVDoKKwkJCXJldCA9IHZtd19lbWl0X3Nl dF91YXYoY2JzKTsKKwkJCWJyZWFrOworCQljYXNlIFZNV19CSU5ESU5HX0NTX1VBVl9CSVQ6CisJ CQlyZXQgPSB2bXdfZW1pdF9zZXRfY3NfdWF2KGNicyk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCUJVRygpOwogCQl9CkBAIC0xMTcxLDYgKzEyNzQsMjIgQEAgc3RhdGljIGludCB2bXdfYmlu ZGluZ19zY3J1Yl9pYihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mbyAqYmksIGJvb2wgcmViaW5kKQog CXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHZtd19iaW5kaW5nX3NjcnViX3VhdihzdHJ1Y3Qg dm13X2N0eF9iaW5kaW5mbyAqYmksIGJvb2wgcmViaW5kKQoreworCXN0cnVjdCB2bXdfY3R4X2Jp bmRpbmdfc3RhdGUgKmNicyA9IHZtd19jb250ZXh0X2JpbmRpbmdfc3RhdGUoYmktPmN0eCk7CisK KwlfX3NldF9iaXQoVk1XX0JJTkRJTkdfVUFWX0JJVCwgJmNicy0+ZGlydHkpOworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IHZtd19iaW5kaW5nX3NjcnViX2NzX3VhdihzdHJ1Y3Qgdm13X2N0 eF9iaW5kaW5mbyAqYmksIGJvb2wgcmViaW5kKQoreworCXN0cnVjdCB2bXdfY3R4X2JpbmRpbmdf c3RhdGUgKmNicyA9IHZtd19jb250ZXh0X2JpbmRpbmdfc3RhdGUoYmktPmN0eCk7CisKKwlfX3Nl dF9iaXQoVk1XX0JJTkRJTkdfQ1NfVUFWX0JJVCwgJmNicy0+ZGlydHkpOworCXJldHVybiAwOwor fQorCiAvKioKICAqIHZtd19iaW5kaW5nX3N0YXRlX2FsbG9jIC0gQWxsb2NhdGUgYSBzdHJ1Y3Qg dm13X2N0eF9iaW5kaW5nX3N0YXRlIHdpdGgKICAqIG1lbW9yeSBhY2NvdW50aW5nLgpAQCAtMTI1 Nyw4ICsxMzc2LDggQEAgdm9pZCB2bXdfYmluZGluZ19zdGF0ZV9yZXNldChzdHJ1Y3Qgdm13X2N0 eF9iaW5kaW5nX3N0YXRlICpjYnMpCiAgKiBFYWNoIHRpbWUgYSByZXNvdXJjZSBpcyBwdXQgb24g dGhlIHZhbGlkYXRpb24gbGlzdCBhcyB0aGUgcmVzdWx0IG9mIGEKICAqIGNvbnRleHQgYmluZGlu ZyByZWZlcmVuY2luZyBpdCwgd2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGF0IHJlc291 cmNlCiAgKiB3aWxsIGJlIGRpcnRpZWQgKHdyaXR0ZW4gdG8gYnkgdGhlIEdQVSkgYXMgYSByZXN1 bHQgb2YgdGhlIGNvcnJlc3BvbmRpbmcKLSAqIEdQVSBvcGVyYXRpb24uIEN1cnJlbnRseSByZW5k ZXJ0YXJnZXQtLCBkZXB0aC1zdGVuY2lsLSwgYW5kCi0gKiBzdHJlYW0tb3V0cHV0LXRhcmdldCBi aW5kaW5ncyBhcmUgY2FwYWJsZSBvZiBkaXJ0eWluZyBpdHMgcmVzb3VyY2UuCisgKiBHUFUgb3Bl cmF0aW9uLiBDdXJyZW50bHkgcmVuZGVydGFyZ2V0LSwgZGVwdGgtc3RlbmNpbC0sIHN0cmVhbS1v dXRwdXQtdGFyZ2V0CisgKiBhbmQgdW5vcmRlcmVkIGFjY2VzcyB2aWV3IGJpbmRpbmdzIGFyZSBj YXBhYmxlIG9mIGRpcnR5aW5nIGl0cyByZXNvdXJjZS4KICAqCiAgKiBSZXR1cm46IFdoZXRoZXIg dGhlIGJpbmRpbmcgdHlwZSBkaXJ0aWVzIHRoZSByZXNvdXJjZSBpdHMgYmluZGluZyBwb2ludHMg dG8uCiAgKi8KQEAgLTEyNjksMTAgKzEzODgsMTIgQEAgdTMyIHZtd19iaW5kaW5nX2RpcnR5aW5n KGVudW0gdm13X2N0eF9iaW5kaW5nX3R5cGUgYmluZGluZ190eXBlKQogCQlbdm13X2N0eF9iaW5k aW5nX2R4X3J0XSA9IFZNV19SRVNfRElSVFlfU0VULAogCQlbdm13X2N0eF9iaW5kaW5nX2RzXSA9 IFZNV19SRVNfRElSVFlfU0VULAogCQlbdm13X2N0eF9iaW5kaW5nX3NvXSA9IFZNV19SRVNfRElS VFlfU0VULAorCQlbdm13X2N0eF9iaW5kaW5nX3Vhdl0gPSBWTVdfUkVTX0RJUlRZX1NFVCwKKwkJ W3Ztd19jdHhfYmluZGluZ19jc191YXZdID0gVk1XX1JFU19ESVJUWV9TRVQsCiAJfTsKIAogCS8q IFJldmlldyB0aGlzIGZ1bmN0aW9uIGFzIG5ldyBiaW5kaW5ncyBhcmUgYWRkZWQuICovCi0JQlVJ TERfQlVHX09OKHZtd19jdHhfYmluZGluZ19tYXggIT0gMTEpOworCUJVSUxEX0JVR19PTih2bXdf Y3R4X2JpbmRpbmdfbWF4ICE9IDEzKTsKIAlyZXR1cm4gaXNfYmluZGluZ19kaXJ0eWluZ1tiaW5k aW5nX3R5cGVdOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9iaW5kaW5nLmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmgKaW5k ZXggY2Q5ODA1YzA0NWNiLi5kYTY3Y2JjOWNkNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X2JpbmRpbmcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9iaW5kaW5nLmgKQEAgLTMzLDYgKzMzLDggQEAKIAogI2RlZmluZSBWTVdfTUFYX1ZJRVdf QklORElOR1MgMTI4CiAKKyNkZWZpbmUgVk1XX01BWF9VQVZfQklORF9UWVBFIDIKKwogc3RydWN0 IHZtd19wcml2YXRlOwogc3RydWN0IHZtd19jdHhfYmluZGluZ19zdGF0ZTsKIApAQCAtNTEsNiAr NTMsOCBAQCBlbnVtIHZtd19jdHhfYmluZGluZ190eXBlIHsKIAl2bXdfY3R4X2JpbmRpbmdfc28s CiAJdm13X2N0eF9iaW5kaW5nX3ZiLAogCXZtd19jdHhfYmluZGluZ19pYiwKKwl2bXdfY3R4X2Jp bmRpbmdfdWF2LAorCXZtd19jdHhfYmluZGluZ19jc191YXYsCiAJdm13X2N0eF9iaW5kaW5nX21h eAogfTsKIApAQCAtMTg5LDkgKzE5MywyMSBAQCBzdHJ1Y3Qgdm13X2R4X3NoYWRlcl9iaW5kaW5n cyB7CiAJdW5zaWduZWQgbG9uZyBkaXJ0eTsKIH07CiAKKy8qKgorICogc3RydWN0IHZtd19jdHhf YmluZGluZm9fdWF2IC0gVUFWIGNvbnRleHQgYmluZGluZyBzdGF0ZS4KKyAqIEB2aWV3czogVUFW IHZpZXcgYmluZGluZ3MuCisgKiBAc3BsaWNlX2luZGV4OiBUaGUgZGV2aWNlIHNwbGljZSBpbmRl eCBzZXQgYnkgdXNlci1zcGFjZS4KKyAqLworc3RydWN0IHZtd19jdHhfYmluZGluZm9fdWF2IHsK KwlzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mb192aWV3IHZpZXdzW1NWR0EzRF9NQVhfVUFWSUVXU107 CisJdWludDMyIGluZGV4OworfTsKKwogZXh0ZXJuIHZvaWQgdm13X2JpbmRpbmdfYWRkKHN0cnVj dCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgKmNicywKIAkJCSAgICBjb25zdCBzdHJ1Y3Qgdm13X2N0 eF9iaW5kaW5mbyAqY2ksCiAJCQkgICAgdTMyIHNoYWRlcl9zbG90LCB1MzIgc2xvdCk7CitleHRl cm4gdm9pZCB2bXdfYmluZGluZ19hZGRfdWF2X2luZGV4KHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdf c3RhdGUgKmNicywKKwkJCQkgICAgICB1aW50MzIgc2xvdCwgdWludDMyIHNwbGljZV9pbmRleCk7 CiBleHRlcm4gdm9pZAogdm13X2JpbmRpbmdfc3RhdGVfY29tbWl0KHN0cnVjdCB2bXdfY3R4X2Jp bmRpbmdfc3RhdGUgKnRvLAogCQkJIHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgKmZyb20p OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY29udGV4dC5jIGIv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY29udGV4dC5jCmluZGV4IDA0NzdkOWE3NGZl OC4uNjFjMjQ2MzM1ZTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY29udGV4dC5j CkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCB2bXdfdXNlcl9jb250ZXh0IHsKIAlzdHJ1Y3Qgdm13 X3Jlc291cmNlIHJlczsKIAlzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlICpjYnM7CiAJc3Ry dWN0IHZtd19jbWRidWZfcmVzX21hbmFnZXIgKm1hbjsKLQlzdHJ1Y3Qgdm13X3Jlc291cmNlICpj b3RhYmxlc1tTVkdBX0NPVEFCTEVfRFgxMF9NQVhdOworCXN0cnVjdCB2bXdfcmVzb3VyY2UgKmNv dGFibGVzW1NWR0FfQ09UQUJMRV9NQVhdOwogCXNwaW5sb2NrX3QgY290YWJsZV9sb2NrOwogCXN0 cnVjdCB2bXdfYnVmZmVyX29iamVjdCAqZHhfcXVlcnlfbW9iOwogfTsKQEAgLTExNiwxMiArMTE2 LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm13X3Jlc19mdW5jIHZtd19keF9jb250ZXh0X2Z1 bmMgPSB7CiAgKiBDb250ZXh0IG1hbmFnZW1lbnQ6CiAgKi8KIAotc3RhdGljIHZvaWQgdm13X2Nv bnRleHRfY290YWJsZXNfdW5yZWYoc3RydWN0IHZtd191c2VyX2NvbnRleHQgKnVjdHgpCitzdGF0 aWMgdm9pZCB2bXdfY29udGV4dF9jb3RhYmxlc191bnJlZihzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRl dl9wcml2LAorCQkJCSAgICAgICBzdHJ1Y3Qgdm13X3VzZXJfY29udGV4dCAqdWN0eCkKIHsKIAlz dHJ1Y3Qgdm13X3Jlc291cmNlICpyZXM7CiAJaW50IGk7CisJdTMyIGNvdGFibGVfbWF4ID0gaGFz X3NtNV9jb250ZXh0KGRldl9wcml2KSA/CisJCVNWR0FfQ09UQUJMRV9NQVggOiBTVkdBX0NPVEFC TEVfRFgxMF9NQVg7CiAKLQlmb3IgKGkgPSAwOyBpIDwgU1ZHQV9DT1RBQkxFX0RYMTBfTUFYOyAr K2kpIHsKKwlmb3IgKGkgPSAwOyBpIDwgY290YWJsZV9tYXg7ICsraSkgewogCQlzcGluX2xvY2so JnVjdHgtPmNvdGFibGVfbG9jayk7CiAJCXJlcyA9IHVjdHgtPmNvdGFibGVzW2ldOwogCQl1Y3R4 LT5jb3RhYmxlc1tpXSA9IE5VTEw7CkBAIC0xNTUsNyArMTU4LDcgQEAgc3RhdGljIHZvaWQgdm13 X2h3X2NvbnRleHRfZGVzdHJveShzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpCiAJCSAgICAhZGV2 X3ByaXYtPnF1ZXJ5X2NpZF92YWxpZCkKIAkJCV9fdm13X2V4ZWNidWZfcmVsZWFzZV9waW5uZWRf Ym8oZGV2X3ByaXYsIE5VTEwpOwogCQltdXRleF91bmxvY2soJmRldl9wcml2LT5jbWRidWZfbXV0 ZXgpOwotCQl2bXdfY29udGV4dF9jb3RhYmxlc191bnJlZih1Y3R4KTsKKwkJdm13X2NvbnRleHRf Y290YWJsZXNfdW5yZWYoZGV2X3ByaXYsIHVjdHgpOwogCQlyZXR1cm47CiAJfQogCkBAIC0yMDgs NyArMjExLDkgQEAgc3RhdGljIGludCB2bXdfZ2JfY29udGV4dF9pbml0KHN0cnVjdCB2bXdfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJc3Bpbl9sb2NrX2luaXQoJnVjdHgtPmNvdGFibGVfbG9jayk7CiAK IAlpZiAoZHgpIHsKLQkJZm9yIChpID0gMDsgaSA8IFNWR0FfQ09UQUJMRV9EWDEwX01BWDsgKytp KSB7CisJCXUzMiBjb3RhYmxlX21heCA9IGhhc19zbTVfY29udGV4dChkZXZfcHJpdikgPworCQkJ U1ZHQV9DT1RBQkxFX01BWCA6IFNWR0FfQ09UQUJMRV9EWDEwX01BWDsKKwkJZm9yIChpID0gMDsg aSA8IGNvdGFibGVfbWF4OyArK2kpIHsKIAkJCXVjdHgtPmNvdGFibGVzW2ldID0gdm13X2NvdGFi bGVfYWxsb2MoZGV2X3ByaXYsCiAJCQkJCQkJICAgICAgJnVjdHgtPnJlcywgaSk7CiAJCQlpZiAo SVNfRVJSKHVjdHgtPmNvdGFibGVzW2ldKSkgewpAQCAtMjIyLDcgKzIyNyw3IEBAIHN0YXRpYyBp bnQgdm13X2diX2NvbnRleHRfaW5pdChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCXJl dHVybiAwOwogCiBvdXRfY290YWJsZXM6Ci0Jdm13X2NvbnRleHRfY290YWJsZXNfdW5yZWYodWN0 eCk7CisJdm13X2NvbnRleHRfY290YWJsZXNfdW5yZWYoZGV2X3ByaXYsIHVjdHgpOwogb3V0X2Vy cjoKIAlpZiAocmVzX2ZyZWUpCiAJCXJlc19mcmVlKHJlcyk7CkBAIC01NDUsMTAgKzU1MCwxMiBA QCB2b2lkIHZtd19keF9jb250ZXh0X3NjcnViX2NvdGFibGVzKHN0cnVjdCB2bXdfcmVzb3VyY2Ug KmN0eCwKIHsKIAlzdHJ1Y3Qgdm13X3VzZXJfY29udGV4dCAqdWN0eCA9CiAJCWNvbnRhaW5lcl9v ZihjdHgsIHN0cnVjdCB2bXdfdXNlcl9jb250ZXh0LCByZXMpOworCXUzMiBjb3RhYmxlX21heCA9 IGhhc19zbTVfY29udGV4dChjdHgtPmRldl9wcml2KSA/CisJCVNWR0FfQ09UQUJMRV9NQVggOiBT VkdBX0NPVEFCTEVfRFgxMF9NQVg7CiAJaW50IGk7CiAKIAl2bXdfYmluZGluZ19zdGF0ZV9zY3J1 Yih1Y3R4LT5jYnMpOwotCWZvciAoaSA9IDA7IGkgPCBTVkdBX0NPVEFCTEVfRFgxMF9NQVg7ICsr aSkgeworCWZvciAoaSA9IDA7IGkgPCBjb3RhYmxlX21heDsgKytpKSB7CiAJCXN0cnVjdCB2bXdf cmVzb3VyY2UgKnJlczsKIAogCQkvKiBBdm9pZCByYWNpbmcgd2l0aCBvbmdvaW5nIGNvdGFibGUg ZGVzdHJ1Y3Rpb24uICovCkBAIC04MzksNyArODQ2LDEwIEBAIHN0cnVjdCB2bXdfY21kYnVmX3Jl c19tYW5hZ2VyICp2bXdfY29udGV4dF9yZXNfbWFuKHN0cnVjdCB2bXdfcmVzb3VyY2UgKmN0eCkK IHN0cnVjdCB2bXdfcmVzb3VyY2UgKnZtd19jb250ZXh0X2NvdGFibGUoc3RydWN0IHZtd19yZXNv dXJjZSAqY3R4LAogCQkJCQkgU1ZHQUNPVGFibGVUeXBlIGNvdGFibGVfdHlwZSkKIHsKLQlpZiAo Y290YWJsZV90eXBlID49IFNWR0FfQ09UQUJMRV9EWDEwX01BWCkKKwl1MzIgY290YWJsZV9tYXgg PSBoYXNfc201X2NvbnRleHQoY3R4LT5kZXZfcHJpdikgPworCQlTVkdBX0NPVEFCTEVfTUFYIDog U1ZHQV9DT1RBQkxFX0RYMTBfTUFYOworCisJaWYgKGNvdGFibGVfdHlwZSA+PSBjb3RhYmxlX21h eCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAKIAlyZXR1cm4gY29udGFpbmVyX29mKGN0 eCwgc3RydWN0IHZtd191c2VyX2NvbnRleHQsIHJlcyktPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfY290YWJsZS5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfY290YWJsZS5jCmluZGV4IDNjYTVjZjM3NWIwMS4uMDhjNWIyY2NjYTk4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9jb3RhYmxlLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY290YWJsZS5jCkBAIC04Miw3ICs4Miw4IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgdm13X2NvdGFibGVfaW5mbyBjb19pbmZvW10gPSB7CiAJezEsIHNpemVv ZihTVkdBQ09UYWJsZURYU2FtcGxlckVudHJ5KSwgTlVMTH0sCiAJezEsIHNpemVvZihTVkdBQ09U YWJsZURYU3RyZWFtT3V0cHV0RW50cnkpLCBOVUxMfSwKIAl7MSwgc2l6ZW9mKFNWR0FDT1RhYmxl RFhRdWVyeUVudHJ5KSwgTlVMTH0sCi0JezEsIHNpemVvZihTVkdBQ09UYWJsZURYU2hhZGVyRW50 cnkpLCAmdm13X2R4X3NoYWRlcl9jb3RhYmxlX2xpc3Rfc2NydWJ9CisJezEsIHNpemVvZihTVkdB Q09UYWJsZURYU2hhZGVyRW50cnkpLCAmdm13X2R4X3NoYWRlcl9jb3RhYmxlX2xpc3Rfc2NydWJ9 LAorCXsxLCBzaXplb2YoU1ZHQUNPVGFibGVEWFVBVmlld0VudHJ5KSwgJnZtd192aWV3X2NvdGFi bGVfbGlzdF9kZXN0cm95fQogfTsKIAogLyoKQEAgLTEwMiw2ICsxMDMsNyBAQCBjb25zdCBTVkdB Q09UYWJsZVR5cGUgdm13X2NvdGFibGVfc2NydWJfb3JkZXJbXSA9IHsKIAlTVkdBX0NPVEFCTEVf U0FNUExFUiwKIAlTVkdBX0NPVEFCTEVfU1RSRUFNT1VUUFVULAogCVNWR0FfQ09UQUJMRV9EWFFV RVJZLAorCVNWR0FfQ09UQUJMRV9VQVZJRVcsCiB9OwogCiBzdGF0aWMgaW50IHZtd19jb3RhYmxl X2JpbmQoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfZXhlY2J1Zi5jCmluZGV4IDRhYmVkMTM1YzAxMy4uZWQ1NmQ5OTE4YzZhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jCkBAIC00NTksMTEgKzQ1OSwxMyBAQCBzdGF0 aWMgaW50IHZtd19yZXNvdXJjZV9jb250ZXh0X3Jlc19hZGQoc3RydWN0IHZtd19wcml2YXRlICpk ZXZfcHJpdiwKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXM7CiAJdTMy IGk7CisJdTMyIGNvdGFibGVfbWF4ID0gaGFzX3NtNV9jb250ZXh0KGN0eC0+ZGV2X3ByaXYpID8K KwkJU1ZHQV9DT1RBQkxFX01BWCA6IFNWR0FfQ09UQUJMRV9EWDEwX01BWDsKIAogCS8qIEFkZCBh bGwgY290YWJsZXMgdG8gdGhlIHZhbGlkYXRpb24gbGlzdC4gKi8KIAlpZiAoaGFzX3NtNF9jb250 ZXh0KGRldl9wcml2KSAmJgogCSAgICB2bXdfcmVzX3R5cGUoY3R4KSA9PSB2bXdfcmVzX2R4X2Nv bnRleHQpIHsKLQkJZm9yIChpID0gMDsgaSA8IFNWR0FfQ09UQUJMRV9EWDEwX01BWDsgKytpKSB7 CisJCWZvciAoaSA9IDA7IGkgPCBjb3RhYmxlX21heDsgKytpKSB7CiAJCQlyZXMgPSB2bXdfY29u dGV4dF9jb3RhYmxlKGN0eCwgaSk7CiAJCQlpZiAoSVNfRVJSKHJlcykpCiAJCQkJY29udGludWU7 CkBAIC0yODE0LDYgKzI4MTYsMTI4IEBAIHN0YXRpYyBpbnQgdm13X2NtZF9pbnRyYV9zdXJmYWNl X2NvcHkoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgJmNtZC0+Ym9keS5zdXJm YWNlLnNpZCwgTlVMTCk7CiB9CiAKK3N0YXRpYyBpbnQgdm13X2NtZF9zbTVfdmlld19kZWZpbmUo c3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICBzdHJ1Y3Qgdm13X3N3X2NvbnRl eHQgKnN3X2NvbnRleHQsCisJCQkJICAgU1ZHQTNkQ21kSGVhZGVyICpoZWFkZXIpCit7CisJaWYg KCFoYXNfc201X2NvbnRleHQoZGV2X3ByaXYpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVy biB2bXdfY21kX2R4X3ZpZXdfZGVmaW5lKGRldl9wcml2LCBzd19jb250ZXh0LCBoZWFkZXIpOwor fQorCitzdGF0aWMgaW50IHZtd19jbWRfc201X3ZpZXdfcmVtb3ZlKHN0cnVjdCB2bXdfcHJpdmF0 ZSAqZGV2X3ByaXYsCisJCQkJICAgc3RydWN0IHZtd19zd19jb250ZXh0ICpzd19jb250ZXh0LAor CQkJCSAgIFNWR0EzZENtZEhlYWRlciAqaGVhZGVyKQoreworCWlmICghaGFzX3NtNV9jb250ZXh0 KGRldl9wcml2KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gdm13X2NtZF9keF92aWV3 X3JlbW92ZShkZXZfcHJpdiwgc3dfY29udGV4dCwgaGVhZGVyKTsKK30KKworc3RhdGljIGludCB2 bXdfY21kX2NsZWFyX3Vhdl91aW50KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJ ICBzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQsCisJCQkJICBTVkdBM2RDbWRIZWFk ZXIgKmhlYWRlcikKK3sKKwlzdHJ1Y3QgeworCQlTVkdBM2RDbWRIZWFkZXIgaGVhZGVyOworCQlT VkdBM2RDbWREWENsZWFyVUFWaWV3VWludCBib2R5OworCX0gKmNtZCA9IGNvbnRhaW5lcl9vZiho ZWFkZXIsIHR5cGVvZigqY21kKSwgaGVhZGVyKTsKKwlzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXQ7 CisKKwlpZiAoIWhhc19zbTVfY29udGV4dChkZXZfcHJpdikpCisJCXJldHVybiAtRUlOVkFMOwor CisJcmV0ID0gdm13X3ZpZXdfaWRfdmFsX2FkZChzd19jb250ZXh0LCB2bXdfdmlld191YSwKKwkJ CQkgIGNtZC0+Ym9keS51YVZpZXdJZCk7CisKKwlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKHJldCk7 Cit9CisKK3N0YXRpYyBpbnQgdm13X2NtZF9jbGVhcl91YXZfZmxvYXQoc3RydWN0IHZtd19wcml2 YXRlICpkZXZfcHJpdiwKKwkJCQkgICBzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQs CisJCQkJICAgU1ZHQTNkQ21kSGVhZGVyICpoZWFkZXIpCit7CisJc3RydWN0IHsKKwkJU1ZHQTNk Q21kSGVhZGVyIGhlYWRlcjsKKwkJU1ZHQTNkQ21kRFhDbGVhclVBVmlld0Zsb2F0IGJvZHk7CisJ fSAqY21kID0gY29udGFpbmVyX29mKGhlYWRlciwgdHlwZW9mKCpjbWQpLCBoZWFkZXIpOworCXN0 cnVjdCB2bXdfcmVzb3VyY2UgKnJldDsKKworCWlmICghaGFzX3NtNV9jb250ZXh0KGRldl9wcml2 KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXQgPSB2bXdfdmlld19pZF92YWxfYWRkKHN3X2Nv bnRleHQsIHZtd192aWV3X3VhLAorCQkJCSAgY21kLT5ib2R5LnVhVmlld0lkKTsKKworCXJldHVy biBQVFJfRVJSX09SX1pFUk8ocmV0KTsKK30KKworc3RhdGljIGludCB2bXdfY21kX3NldF91YXYo c3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgIHN0cnVjdCB2bXdfc3dfY29udGV4 dCAqc3dfY29udGV4dCwKKwkJCSAgIFNWR0EzZENtZEhlYWRlciAqaGVhZGVyKQoreworCXN0cnVj dCB7CisJCVNWR0EzZENtZEhlYWRlciBoZWFkZXI7CisJCVNWR0EzZENtZERYU2V0VUFWaWV3cyBi b2R5OworCX0gKmNtZCA9IGNvbnRhaW5lcl9vZihoZWFkZXIsIHR5cGVvZigqY21kKSwgaGVhZGVy KTsKKwl1MzIgbnVtX3VhdiA9IChjbWQtPmhlYWRlci5zaXplIC0gc2l6ZW9mKGNtZC0+Ym9keSkp IC8KKwkJc2l6ZW9mKFNWR0EzZFVBVmlld0lkKTsKKwlpbnQgcmV0OworCisJaWYgKCFoYXNfc201 X2NvbnRleHQoZGV2X3ByaXYpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChudW1fdWF2ID4g U1ZHQTNEX01BWF9VQVZJRVdTKSB7CisJCVZNV19ERUJVR19VU0VSKCJJbnZhbGlkIFVBViBiaW5k aW5nLlxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IHZtd192aWV3X2JpbmRp bmdzX2FkZChzd19jb250ZXh0LCB2bXdfdmlld191YSwKKwkJCQkgICAgdm13X2N0eF9iaW5kaW5n X3VhdiwgMCwgKHZvaWQgKikmY21kWzFdLAorCQkJCSAgICBudW1fdWF2LCAwKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJdm13X2JpbmRpbmdfYWRkX3Vhdl9pbmRleChzd19jb250ZXh0 LT5keF9jdHhfbm9kZS0+c3RhZ2VkLCAwLAorCQkJCQkgY21kLT5ib2R5LnVhdlNwbGljZUluZGV4 KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgdm13X2NtZF9zZXRfY3NfdWF2KHN0 cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgICBzdHJ1Y3Qgdm13X3N3X2NvbnRl eHQgKnN3X2NvbnRleHQsCisJCQkgICAgICBTVkdBM2RDbWRIZWFkZXIgKmhlYWRlcikKK3sKKwlz dHJ1Y3QgeworCQlTVkdBM2RDbWRIZWFkZXIgaGVhZGVyOworCQlTVkdBM2RDbWREWFNldENTVUFW aWV3cyBib2R5OworCX0gKmNtZCA9IGNvbnRhaW5lcl9vZihoZWFkZXIsIHR5cGVvZigqY21kKSwg aGVhZGVyKTsKKwl1MzIgbnVtX3VhdiA9IChjbWQtPmhlYWRlci5zaXplIC0gc2l6ZW9mKGNtZC0+ Ym9keSkpIC8KKwkJc2l6ZW9mKFNWR0EzZFVBVmlld0lkKTsKKwlpbnQgcmV0OworCisJaWYgKCFo YXNfc201X2NvbnRleHQoZGV2X3ByaXYpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChudW1f dWF2ID4gU1ZHQTNEX01BWF9VQVZJRVdTKSB7CisJCVZNV19ERUJVR19VU0VSKCJJbnZhbGlkIFVB ViBiaW5kaW5nLlxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IHZtd192aWV3 X2JpbmRpbmdzX2FkZChzd19jb250ZXh0LCB2bXdfdmlld191YSwKKwkJCQkgICAgdm13X2N0eF9i aW5kaW5nX2NzX3VhdiwgMCwgKHZvaWQgKikmY21kWzFdLAorCQkJCSAgICBudW1fdWF2LCAwKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJdm13X2JpbmRpbmdfYWRkX3Vhdl9pbmRleChz d19jb250ZXh0LT5keF9jdHhfbm9kZS0+c3RhZ2VkLCAxLAorCQkJCSAgY21kLT5ib2R5LnN0YXJ0 SW5kZXgpOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCB2bXdfY21kX2NoZWNrX25v dF8zZChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCXN0cnVjdCB2bXdfc3dfY29u dGV4dCAqc3dfY29udGV4dCwKIAkJCQl2b2lkICpidWYsIHVpbnQzMl90ICpzaXplKQpAQCAtMzE2 Myw2ICszMjg3LDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm13X2NtZF9lbnRyeSB2bXdfY21k X2VudHJpZXNbU1ZHQV8zRF9DTURfTUFYXSA9IHsKIAkJICAgIHRydWUsIGZhbHNlLCB0cnVlKSwK IAlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9JTlRSQV9TVVJGQUNFX0NPUFksICZ2bXdfY21kX2lu dHJhX3N1cmZhY2VfY29weSwKIAkJICAgIHRydWUsIGZhbHNlLCB0cnVlKSwKKworCS8qCisJICog U001IGNvbW1hbmRzCisJICovCisJVk1XX0NNRF9ERUYoU1ZHQV8zRF9DTURfRFhfREVGSU5FX1VB X1ZJRVcsICZ2bXdfY21kX3NtNV92aWV3X2RlZmluZSwKKwkJICAgIHRydWUsIGZhbHNlLCB0cnVl KSwKKwlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9ERVNUUk9ZX1VBX1ZJRVcsICZ2bXdfY21k X3NtNV92aWV3X3JlbW92ZSwKKwkJICAgIHRydWUsIGZhbHNlLCB0cnVlKSwKKwlWTVdfQ01EX0RF RihTVkdBXzNEX0NNRF9EWF9DTEVBUl9VQV9WSUVXX1VJTlQsICZ2bXdfY21kX2NsZWFyX3Vhdl91 aW50LAorCQkgICAgdHJ1ZSwgZmFsc2UsIHRydWUpLAorCVZNV19DTURfREVGKFNWR0FfM0RfQ01E X0RYX0NMRUFSX1VBX1ZJRVdfRkxPQVQsCisJCSAgICAmdm13X2NtZF9jbGVhcl91YXZfZmxvYXQs IHRydWUsIGZhbHNlLCB0cnVlKSwKKwlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9DT1BZX1NU UlVDVFVSRV9DT1VOVCwgJnZtd19jbWRfaW52YWxpZCwgdHJ1ZSwKKwkJICAgIGZhbHNlLCB0cnVl KSwKKwlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9TRVRfVUFfVklFV1MsICZ2bXdfY21kX3Nl dF91YXYsIHRydWUsIGZhbHNlLAorCQkgICAgdHJ1ZSksCisJVk1XX0NNRF9ERUYoU1ZHQV8zRF9D TURfRFhfU0VUX0NTX1VBX1ZJRVdTLCAmdm13X2NtZF9zZXRfY3NfdWF2LCB0cnVlLAorCQkgICAg ZmFsc2UsIHRydWUpLAogfTsKIAogYm9vbCB2bXdfY21kX2Rlc2NyaWJlKGNvbnN0IHZvaWQgKmJ1 ZiwgdTMyICpzaXplLCBjaGFyIGNvbnN0ICoqY21kKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfc28uYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Nv LmMKaW5kZXggNjM4MDczNjFlMTZmLi4zZjk3YjYxZGQ1ZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvdm13Z2Z4X3NvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfc28uYwpAQCAtMzE5LDcgKzMxOSw4IEBAIGludCB2bXdfdmlld19hZGQoc3RydWN0IHZt d19jbWRidWZfcmVzX21hbmFnZXIgKm1hbiwKIAlzdGF0aWMgY29uc3Qgc2l6ZV90IHZtd192aWV3 X2RlZmluZV9zaXplc1tdID0gewogCQlbdm13X3ZpZXdfc3JdID0gc2l6ZW9mKFNWR0EzZENtZERY RGVmaW5lU2hhZGVyUmVzb3VyY2VWaWV3KSwKIAkJW3Ztd192aWV3X3J0XSA9IHNpemVvZihTVkdB M2RDbWREWERlZmluZVJlbmRlclRhcmdldFZpZXcpLAotCQlbdm13X3ZpZXdfZHNdID0gc2l6ZW9m KFNWR0EzZENtZERYRGVmaW5lRGVwdGhTdGVuY2lsVmlldykKKwkJW3Ztd192aWV3X2RzXSA9IHNp emVvZihTVkdBM2RDbWREWERlZmluZURlcHRoU3RlbmNpbFZpZXcpLAorCQlbdm13X3ZpZXdfdWFd ID0gc2l6ZW9mKFNWR0EzZENtZERYRGVmaW5lVUFWaWV3KQogCX07CiAKIAlzdHJ1Y3Qgdm13X3By aXZhdGUgKmRldl9wcml2ID0gY3R4LT5kZXZfcHJpdjsKQEAgLTQ5OSw4ICs1MDAsOCBAQCBzdHJ1 Y3Qgdm13X3Jlc291cmNlICp2bXdfdmlld19sb29rdXAoc3RydWN0IHZtd19jbWRidWZfcmVzX21h bmFnZXIgKm1hbiwKICAqIEVhY2ggdGltZSBhIHJlc291cmNlIGlzIHB1dCBvbiB0aGUgdmFsaWRh dGlvbiBsaXN0IGFzIHRoZSByZXN1bHQgb2YgYQogICogdmlldyBwb2ludGluZyB0byBpdCwgd2Ug bmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGF0IHJlc291cmNlIHdpbGwKICAqIGJlIGRpcnRp ZWQgKHdyaXR0ZW4gdG8gYnkgdGhlIEdQVSkgYXMgYSByZXN1bHQgb2YgdGhlIGNvcnJlc3BvbmRp bmcKLSAqIEdQVSBvcGVyYXRpb24uIEN1cnJlbnRseSBvbmx5IHJlbmRlcnRhcmdldC0gYW5kIGRl cHRoLXN0ZW5jaWwgdmlld3MgYXJlCi0gKiBjYXBhYmxlIG9mIGRpcnR5aW5nIGl0cyByZXNvdXJj ZS4KKyAqIEdQVSBvcGVyYXRpb24uIEN1cnJlbnRseSBvbmx5IHJlbmRlcnRhcmdldC0sIGRlcHRo LXN0ZW5jaWwgYW5kIHVub3JkZXJlZAorICogYWNjZXNzIHZpZXdzIGFyZSBjYXBhYmxlIG9mIGRp cnR5aW5nIGl0cyByZXNvdXJjZS4KICAqCiAgKiBSZXR1cm46IFdoZXRoZXIgdGhlIHZpZXcgdHlw ZSBvZiBAcmVzIGRpcnRpZXMgdGhlIHJlc291cmNlIGl0IHBvaW50cyB0by4KICAqLwpAQCAtNTA5 LDEwICs1MTAsMTEgQEAgdTMyIHZtd192aWV3X2RpcnR5aW5nKHN0cnVjdCB2bXdfcmVzb3VyY2Ug KnJlcykKIAlzdGF0aWMgdTMyIHZpZXdfaXNfZGlydHlpbmdbdm13X3ZpZXdfbWF4XSA9IHsKIAkJ W3Ztd192aWV3X3J0XSA9IFZNV19SRVNfRElSVFlfU0VULAogCQlbdm13X3ZpZXdfZHNdID0gVk1X X1JFU19ESVJUWV9TRVQsCisJCVt2bXdfdmlld191YV0gPSBWTVdfUkVTX0RJUlRZX1NFVCwKIAl9 OwogCiAJLyogVXBkYXRlIHRoaXMgZnVuY3Rpb24gYXMgd2UgYWRkIG1vcmUgdmlldyB0eXBlcyAq LwotCUJVSUxEX0JVR19PTih2bXdfdmlld19tYXggIT0gMyk7CisJQlVJTERfQlVHX09OKHZtd192 aWV3X21heCAhPSA0KTsKIAlyZXR1cm4gdmlld19pc19kaXJ0eWluZ1t2bXdfdmlldyhyZXMpLT52 aWV3X3R5cGVdOwogfQogCkBAIC01MjAsMTIgKzUyMiwxNCBAQCBjb25zdCB1MzIgdm13X3ZpZXdf ZGVzdHJveV9jbWRzW10gPSB7CiAJW3Ztd192aWV3X3NyXSA9IFNWR0FfM0RfQ01EX0RYX0RFU1RS T1lfU0hBREVSUkVTT1VSQ0VfVklFVywKIAlbdm13X3ZpZXdfcnRdID0gU1ZHQV8zRF9DTURfRFhf REVTVFJPWV9SRU5ERVJUQVJHRVRfVklFVywKIAlbdm13X3ZpZXdfZHNdID0gU1ZHQV8zRF9DTURf RFhfREVTVFJPWV9ERVBUSFNURU5DSUxfVklFVywKKwlbdm13X3ZpZXdfdWFdID0gU1ZHQV8zRF9D TURfRFhfREVTVFJPWV9VQV9WSUVXLAogfTsKIAogY29uc3QgU1ZHQUNPVGFibGVUeXBlIHZtd192 aWV3X2NvdGFibGVzW10gPSB7CiAJW3Ztd192aWV3X3NyXSA9IFNWR0FfQ09UQUJMRV9TUlZJRVcs CiAJW3Ztd192aWV3X3J0XSA9IFNWR0FfQ09UQUJMRV9SVFZJRVcsCiAJW3Ztd192aWV3X2RzXSA9 IFNWR0FfQ09UQUJMRV9EU1ZJRVcsCisJW3Ztd192aWV3X3VhXSA9IFNWR0FfQ09UQUJMRV9VQVZJ RVcsCiB9OwogCiBjb25zdCBTVkdBQ09UYWJsZVR5cGUgdm13X3NvX2NvdGFibGVzW10gPSB7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zby5oIGIvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfc28uaAppbmRleCAxMjU2NTA0N2JjNTUuLjIyYjRmNTcyMDkw OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc28uaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zby5oCkBAIC0zMCw2ICszMCw3IEBAIGVudW0g dm13X3ZpZXdfdHlwZSB7CiAJdm13X3ZpZXdfc3IsCiAJdm13X3ZpZXdfcnQsCiAJdm13X3ZpZXdf ZHMsCisJdm13X3ZpZXdfdWEsCiAJdm13X3ZpZXdfbWF4LAogfTsKIApAQCAtNjEsNiArNjIsNyBA QCB1bmlvbiB2bXdfdmlld19kZXN0cm95IHsKIAlzdHJ1Y3QgU1ZHQTNkQ21kRFhEZXN0cm95UmVu ZGVyVGFyZ2V0VmlldyBydHY7CiAJc3RydWN0IFNWR0EzZENtZERYRGVzdHJveVNoYWRlclJlc291 cmNlVmlldyBzcnY7CiAJc3RydWN0IFNWR0EzZENtZERYRGVzdHJveURlcHRoU3RlbmNpbFZpZXcg ZHN2OworCXN0cnVjdCBTVkdBM2RDbWREWERlc3Ryb3lVQVZpZXcgdWF2OwogCXUzMiB2aWV3X2lk OwogfTsKIApAQCAtODcsNiArODksMTAgQEAgc3RhdGljIGlubGluZSBlbnVtIHZtd192aWV3X3R5 cGUgdm13X3ZpZXdfY21kX3RvX3R5cGUodTMyIGlkKQogewogCXUzMiB0bXAgPSAoaWQgLSBTVkdB XzNEX0NNRF9EWF9ERUZJTkVfU0hBREVSUkVTT1VSQ0VfVklFVykgLyAyOwogCisJaWYgKGlkID09 IFNWR0FfM0RfQ01EX0RYX0RFRklORV9VQV9WSUVXIHx8CisJICAgIGlkID09IFNWR0FfM0RfQ01E X0RYX0RFU1RST1lfVUFfVklFVykKKwkJcmV0dXJuIHZtd192aWV3X3VhOworCiAJaWYgKHRtcCA+ ICh1MzIpdm13X3ZpZXdfbWF4KQogCQlyZXR1cm4gdm13X3ZpZXdfbWF4OwogCi0tIAoyLjE3LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=