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 7335BC54FD0 for ; Mon, 23 Mar 2020 23:09:25 +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 49A1920409 for ; Mon, 23 Mar 2020 23:09:25 +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="GJdYadhG" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 49A1920409 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 9971A6E3FE; Mon, 23 Mar 2020 23:09:21 +0000 (UTC) Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by gabe.freedesktop.org (Postfix) with ESMTPS id 02B906E3F4 for ; Mon, 23 Mar 2020 23:09:19 +0000 (UTC) Received: by mail-wm1-x343.google.com with SMTP id b12so1329962wmj.3 for ; Mon, 23 Mar 2020 16:09:19 -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=dSFdlORAbrFzyXKzX0ZfK80VipNvB2LwaD7KwcHNhA0=; b=GJdYadhGV06RRKEyEkd5v3tReLI56VbuEr6H4+fgnyPSm3HPhgqJgxl++5jcZXtKO5 sASVvLfLM1xgb6k3Qc6cnVPvf/oJuc0TTq9sLPjbA4myTlvTQrzjkmtSDryUImiptmZA wz2vrPFy1ef9bEh4wuxSh8KyHPIKlWOFw0U3FDkf+yYjmlBnjrhb3noDNvNlosVA3SS/ NeemxslqhEi3oELVOi9vDc5x+mEP1kyMXT1NCU1VooswVgTke/InYfwEvsnPrzaN1R6Z 2ivvK8bpGxghfE6ryMeKhBNaQfNt93sGfS1RiLf2f1QeUabhLAlo04zqVsGE6SecOa/W 995A== 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=dSFdlORAbrFzyXKzX0ZfK80VipNvB2LwaD7KwcHNhA0=; b=BPaAkMuhn6i3ll6NL43mvkcu0LeOr0XDGeumNN7RzhQmfACyIez7PvE7OG/GLelLBN B0EyIzUXCtjA6rkWZ5oBzM2ahgmJ4n9Z41dnBx32t9YKFsLY0ToMjgJ1P0lLPo+Zqg5f WkQpW1212foxanh6uJhOKi751+ojQrD+81P8ucsVzZHD0DiTktPc/aHP4d91qVOdcQgT XRazNzkFWlfkWB3QPjLIRU/0a0Csaw/MqDJgjBLVFAanu8spX7PzFyVPyINVpgL+aVp4 97UNBrqR0Hk0vwjuWQRwigPOwjCeE9IhdXbl/5IyiqECFRrRNzkvlWz14pyXwRqDCB7D D1nQ== X-Gm-Message-State: ANhLgQ00Nrro8IzTBBhu7RjCOg7NO0FvJQsB5UAnr68I9FQeRWt0XY43 nKf9HAci4L/dtnkoRVG2KDZn5Yrj X-Google-Smtp-Source: ADFU+vsx/S/PFog7AxAV49CCo0/oNgz4P9aJo2Ws/+a3kvFH5LSGAYVplhlJoRcSClwCakFkWfledw== X-Received: by 2002:a1c:f401:: with SMTP id z1mr1823227wma.18.1585004957672; Mon, 23 Mar 2020 16:09:17 -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.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2020 16:09:17 -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 12/17] drm/vmwgfx: Add support for streamoutput with mob commands Date: Tue, 24 Mar 2020 00:08:56 +0100 Message-Id: <20200323230901.13302-13-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" RnJvbTogRGVlcGFrIFJhd2F0IDxkcmF3YXQuZmxvc3NAZ21haWwuY29tPgoKV2l0aCBTTTUgY2Fw YWJpbGl0eSBhIG5ldyB2ZXJzaW9uIG9mIHN0cmVhbW91dHB1dCBpcyBzdXBwb3J0ZWQgYnkgZGV2 aWNlCndoaWNoIG5lZWQgYmFja2luZyBtb2IgYW5kIGEgbmV3IGZpZWxkLiBXaXRoIHRoaXMgY2hh bmdlIHRoZSBuZXcgY29tbWFuZAppcyBzdXBwb3J0ZWQgaW4gY29tbWFuZCBidWZmZXIuCgp2Mjog QWxzbyB0cmFjayBzdHJlYW1vdXRwdXQgY29udGV4dCBiaW5kaW5nIGluIGJpbmRpbmcgbWFuYWdl ci4KCnYzOiBUcmFjayBvbmx5IG9uZSBzdHJlYW1vdXRwdXQgYXMgb25seSBvbmUgY2FuIGJlIHNl dCB0byBjb250ZXh0Lgp2NDogRml4IGNvbW1lbnQgdHlwb3MKClNpZ25lZC1vZmYtYnk6IERlZXBh ayBSYXdhdCA8ZHJhd2F0LmZsb3NzQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogTmVoYSBCaGVu ZGUgPGJoZW5kZW5Adm13YXJlLmNvbT4KUmV2aWV3ZWQtYnk6IFRob21hcyBIZWxsc3Ryw7ZtIChW TXdhcmUpIDx0aG9tYXNfb3NAc2hpcG1haWwub3JnPgpSZXZpZXdlZC1ieTogUm9sYW5kIFNjaGVp ZGVnZ2VyIDxzcm9sYW5kQHZtd2FyZS5jb20+ClNpZ25lZC1vZmYtYnk6IFJvbGFuZCBTY2hlaWRl Z2dlciA8c3JvbGFuZEB2bXdhcmUuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvTWFr ZWZpbGUgICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9iaW5kaW5nLmMgICAgICB8ICAzOSArLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf YmluZGluZy5oICAgICAgfCAgMTEgKwogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY290 YWJsZS5jICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5o ICAgICAgICAgIHwgIDIyICstCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVm LmMgICAgICB8IDE3MyArKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Nv LmggICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0cmVh bW91dHB1dC5jIHwgMzg3ICsrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNjMw IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3RyZWFtb3V0cHV0LmMKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtl ZmlsZQppbmRleCBjODc3YTIxYTA3MzkuLjVjMzUxNWU4Y2NlMSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L01h a2VmaWxlCkBAIC04LDcgKzgsNyBAQCB2bXdnZngteSA6PSB2bXdnZnhfZXhlY2J1Zi5vIHZtd2dm eF9nbXIubyB2bXdnZnhfa21zLm8gdm13Z2Z4X2Rydi5vIFwKIAkgICAgdm13Z2Z4X2NtZGJ1Zl9y ZXMubyB2bXdnZnhfY21kYnVmLm8gdm13Z2Z4X3N0ZHUubyBcCiAJICAgIHZtd2dmeF9jb3RhYmxl Lm8gdm13Z2Z4X3NvLm8gdm13Z2Z4X2JpbmRpbmcubyB2bXdnZnhfbXNnLm8gXAogCSAgICB2bXdn Znhfc2ltcGxlX3Jlc291cmNlLm8gdm13Z2Z4X3ZhLm8gdm13Z2Z4X2JsaXQubyBcCi0JICAgIHZt d2dmeF92YWxpZGF0aW9uLm8gdm13Z2Z4X3BhZ2VfZGlydHkubyBcCisJICAgIHZtd2dmeF92YWxp ZGF0aW9uLm8gdm13Z2Z4X3BhZ2VfZGlydHkubyB2bXdnZnhfc3RyZWFtb3V0cHV0Lm8gXAogCSAg ICB0dG1fb2JqZWN0Lm8gdHRtX2xvY2subwogCiBvYmotJChDT05GSUdfRFJNX1ZNV0dGWCkgOj0g dm13Z2Z4Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JpbmRp bmcuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JpbmRpbmcuYwppbmRleCBmOTIz YjNjN2MxNTIuLmY0MTU1MDc5Nzk3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfYmluZGluZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Jp bmRpbmcuYwpAQCAtNzgsNiArNzgsNyBAQAogICogQGluZGV4X2J1ZmZlcjogSW5kZXggYnVmZmVy IGJpbmRpbmcuCiAgKiBAcGVyX3NoYWRlcjogUGVyIHNoYWRlci10eXBlIGJpbmRpbmdzLgogICog QHVhX3ZpZXdzOiBVQVYgYmluZGluZ3MuCisgKiBAc29fc3RhdGU6IFN0cmVhbU91dHB1dCBiaW5k aW5ncy4KICAqIEBkaXJ0eTogQml0bWFwIHRyYWNraW5nIHBlciBiaW5kaW5nLXR5cGUgY2hhbmdl cyB0aGF0IGhhdmUgbm90IHlldAogICogYmVlbiBlbWl0dGVkIHRvIHRoZSBkZXZpY2UuCiAgKiBA ZGlydHlfdmI6IEJpdG1hcCB0cmFja2luZyBpbmRpdmlkdWFsIHZlcnRleCBidWZmZXIgYmluZGlu ZyBjaGFuZ2VzIHRoYXQKQEAgLTEwMyw2ICsxMDQsNyBAQCBzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5n X3N0YXRlIHsKIAlzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mb19pYiBpbmRleF9idWZmZXI7CiAJc3Ry dWN0IHZtd19keF9zaGFkZXJfYmluZGluZ3MgcGVyX3NoYWRlcltTVkdBM0RfTlVNX1NIQURFUlRZ UEVdOwogCXN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvX3VhdiB1YV92aWV3c1tWTVdfTUFYX1VBVl9C SU5EX1RZUEVdOworCXN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvX3NvIHNvX3N0YXRlOwogCiAJdW5z aWduZWQgbG9uZyBkaXJ0eTsKIAlERUNMQVJFX0JJVE1BUChkaXJ0eV92YiwgU1ZHQTNEX0RYX01B WF9WRVJURVhCVUZGRVJTKTsKQEAgLTEyNyw2ICsxMjksNyBAQCBzdGF0aWMgaW50IHZtd19iaW5k aW5nX3NjcnViX2liKHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvICpiaSwgYm9vbCByZWJpbmQpOwog c3RhdGljIGludCB2bXdfYmluZGluZ19zY3J1Yl92YihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mbyAq YmksIGJvb2wgcmViaW5kKTsKIHN0YXRpYyBpbnQgdm13X2JpbmRpbmdfc2NydWJfdWF2KHN0cnVj dCB2bXdfY3R4X2JpbmRpbmZvICpiaSwgYm9vbCByZWJpbmQpOwogc3RhdGljIGludCB2bXdfYmlu ZGluZ19zY3J1Yl9jc191YXYoc3RydWN0IHZtd19jdHhfYmluZGluZm8gKmJpLCBib29sIHJlYmlu ZCk7CitzdGF0aWMgaW50IHZtd19iaW5kaW5nX3NjcnViX3NvKHN0cnVjdCB2bXdfY3R4X2JpbmRp bmZvICpiaSwgYm9vbCByZWJpbmQpOwogCiBzdGF0aWMgdm9pZCB2bXdfYmluZGluZ19idWlsZF9h c3NlcnRzKHZvaWQpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKIApAQCAtMjAyLDYgKzIwNSw5 IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qgdm13X2JpbmRpbmdfdWF2X29mZnNldHNbXSA9IHsKIHN0 YXRpYyBjb25zdCBzaXplX3Qgdm13X2JpbmRpbmdfY3NfdWF2X29mZnNldHNbXSA9IHsKIAlvZmZz ZXRvZihzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlLCB1YV92aWV3c1sxXS52aWV3cyksCiB9 Oworc3RhdGljIGNvbnN0IHNpemVfdCB2bXdfYmluZGluZ19zb19vZmZzZXRzW10gPSB7CisJb2Zm c2V0b2Yoc3RydWN0IHZtd19jdHhfYmluZGluZ19zdGF0ZSwgc29fc3RhdGUpLAorfTsKIAogc3Rh dGljIGNvbnN0IHN0cnVjdCB2bXdfYmluZGluZ19pbmZvIHZtd19iaW5kaW5nX2luZm9zW10gPSB7 CiAJW3Ztd19jdHhfYmluZGluZ19zaGFkZXJdID0gewpAQCAtMjU2LDYgKzI2MiwxMCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHZtd19iaW5kaW5nX2luZm8gdm13X2JpbmRpbmdfaW5mb3NbXSA9IHsK IAkJLnNpemUgPSBzaXplb2Yoc3RydWN0IHZtd19jdHhfYmluZGluZm9fdmlldyksCiAJCS5vZmZz ZXRzID0gdm13X2JpbmRpbmdfY3NfdWF2X29mZnNldHMsCiAJCS5zY3J1Yl9mdW5jID0gdm13X2Jp bmRpbmdfc2NydWJfY3NfdWF2fSwKKwlbdm13X2N0eF9iaW5kaW5nX3NvXSA9IHsKKwkJLnNpemUg PSBzaXplb2Yoc3RydWN0IHZtd19jdHhfYmluZGluZm9fc28pLAorCQkub2Zmc2V0cyA9IHZtd19i aW5kaW5nX3NvX29mZnNldHMsCisJCS5zY3J1Yl9mdW5jID0gdm13X2JpbmRpbmdfc2NydWJfc299 LAogfTsKIAogLyoqCkBAIC0xMjkwLDYgKzEzMDAsMzMgQEAgc3RhdGljIGludCB2bXdfYmluZGlu Z19zY3J1Yl9jc191YXYoc3RydWN0IHZtd19jdHhfYmluZGluZm8gKmJpLCBib29sIHJlYmluZCkK IAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiB2bXdfYmluZGluZ19zY3J1Yl9zbyAtIFNjcnViIGEg c3RyZWFtb3V0cHV0IGJpbmRpbmcgZnJvbSBjb250ZXh0LgorICogQGJpOiBTaW5nbGUgYmluZGlu ZyBpbmZvcm1hdGlvbi4KKyAqIEByZWJpbmQ6IFdoZXRoZXIgdG8gaXNzdWUgYSBiaW5kIGluc3Rl YWQgb2Ygc2NydWIgY29tbWFuZC4KKyAqLworc3RhdGljIGludCB2bXdfYmluZGluZ19zY3J1Yl9z byhzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mbyAqYmksIGJvb2wgcmViaW5kKQoreworCXN0cnVjdCB2 bXdfY3R4X2JpbmRpbmZvX3NvICpiaW5kaW5nID0KKwkJY29udGFpbmVyX29mKGJpLCB0eXBlb2Yo KmJpbmRpbmcpLCBiaSk7CisJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiA9IGJpLT5jdHgt PmRldl9wcml2OworCXN0cnVjdCB7CisJCVNWR0EzZENtZEhlYWRlciBoZWFkZXI7CisJCVNWR0Ez ZENtZERYU2V0U3RyZWFtT3V0cHV0IGJvZHk7CisJfSAqY21kOworCisJY21kID0gVk1XX0ZJRk9f UkVTRVJWRV9EWChkZXZfcHJpdiwgc2l6ZW9mKCpjbWQpLCBiaS0+Y3R4LT5pZCk7CisJaWYgKCFj bWQpCisJCXJldHVybiAtRU5PTUVNOworCisJY21kLT5oZWFkZXIuaWQgPSBTVkdBXzNEX0NNRF9E WF9TRVRfU1RSRUFNT1VUUFVUOworCWNtZC0+aGVhZGVyLnNpemUgPSBzaXplb2YoY21kLT5ib2R5 KTsKKwljbWQtPmJvZHkuc29pZCA9IHJlYmluZCA/IGJpLT5yZXMtPmlkIDogU1ZHQTNEX0lOVkFM SURfSUQ7CisJdm13X2ZpZm9fY29tbWl0KGRldl9wcml2LCBzaXplb2YoKmNtZCkpOworCisJcmV0 dXJuIDA7Cit9CisKIC8qKgogICogdm13X2JpbmRpbmdfc3RhdGVfYWxsb2MgLSBBbGxvY2F0ZSBh IHN0cnVjdCB2bXdfY3R4X2JpbmRpbmdfc3RhdGUgd2l0aAogICogbWVtb3J5IGFjY291bnRpbmcu CkBAIC0xMzkzLDcgKzE0MzAsNyBAQCB1MzIgdm13X2JpbmRpbmdfZGlydHlpbmcoZW51bSB2bXdf Y3R4X2JpbmRpbmdfdHlwZSBiaW5kaW5nX3R5cGUpCiAJfTsKIAogCS8qIFJldmlldyB0aGlzIGZ1 bmN0aW9uIGFzIG5ldyBiaW5kaW5ncyBhcmUgYWRkZWQuICovCi0JQlVJTERfQlVHX09OKHZtd19j dHhfYmluZGluZ19tYXggIT0gMTMpOworCUJVSUxEX0JVR19PTih2bXdfY3R4X2JpbmRpbmdfbWF4 ICE9IDE0KTsKIAlyZXR1cm4gaXNfYmluZGluZ19kaXJ0eWluZ1tiaW5kaW5nX3R5cGVdOwogfQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmggYi9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmgKaW5kZXggOGQ1Zjg3YWFkNDkw Li5kY2I3MWZkMGJiM2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2JpbmRpbmcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iaW5kaW5nLmgK QEAgLTU1LDYgKzU1LDcgQEAgZW51bSB2bXdfY3R4X2JpbmRpbmdfdHlwZSB7CiAJdm13X2N0eF9i aW5kaW5nX2liLAogCXZtd19jdHhfYmluZGluZ191YXYsCiAJdm13X2N0eF9iaW5kaW5nX2NzX3Vh diwKKwl2bXdfY3R4X2JpbmRpbmdfc28sCiAJdm13X2N0eF9iaW5kaW5nX21heAogfTsKIApAQCAt MjAzLDYgKzIwNCwxNiBAQCBzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mb191YXYgewogCXVpbnQzMiBp bmRleDsKIH07CiAKKy8qKgorICogc3RydWN0IHZtd19jdHhfYmluZGluZm9fc28gLSBTdHJlYW0g b3V0cHV0IGJpbmRpbmcgbWV0YWRhdGEuCisgKiBAYmk6IHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZv IHdlIGRlcml2ZSBmcm9tLgorICogQHNsb3Q6IERldmljZSBkYXRhIHVzZWQgdG8gcmVjb25zdHJ1 Y3QgYmluZGluZyBjb21tYW5kLgorICovCitzdHJ1Y3Qgdm13X2N0eF9iaW5kaW5mb19zbyB7CisJ c3RydWN0IHZtd19jdHhfYmluZGluZm8gYmk7CisJdWludDMyIHNsb3Q7Cit9OworCiBleHRlcm4g dm9pZCB2bXdfYmluZGluZ19hZGQoc3RydWN0IHZtd19jdHhfYmluZGluZ19zdGF0ZSAqY2JzLAog CQkJICAgIGNvbnN0IHN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvICpjaSwKIAkJCSAgICB1MzIgc2hh ZGVyX3Nsb3QsIHUzMiBzbG90KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X2NvdGFibGUuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2NvdGFibGUu YwppbmRleCAwOGM1YjJjY2NhOTguLjY1ZThlN2E5NzcyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfY290YWJsZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X2NvdGFibGUuYwpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IHZtd19jb3RhYmxlX2luZm8gY29faW5mb1tdID0gewogCXsxLCBzaXplb2YoU1ZHQUNPVGFibGVE WERlcHRoU3RlbmNpbEVudHJ5KSwgTlVMTH0sCiAJezEsIHNpemVvZihTVkdBQ09UYWJsZURYUmFz dGVyaXplclN0YXRlRW50cnkpLCBOVUxMfSwKIAl7MSwgc2l6ZW9mKFNWR0FDT1RhYmxlRFhTYW1w bGVyRW50cnkpLCBOVUxMfSwKLQl7MSwgc2l6ZW9mKFNWR0FDT1RhYmxlRFhTdHJlYW1PdXRwdXRF bnRyeSksIE5VTEx9LAorCXsxLCBzaXplb2YoU1ZHQUNPVGFibGVEWFN0cmVhbU91dHB1dEVudHJ5 KSwgJnZtd19keF9zdHJlYW1vdXRwdXRfY290YWJsZV9saXN0X3NjcnVifSwKIAl7MSwgc2l6ZW9m KFNWR0FDT1RhYmxlRFhRdWVyeUVudHJ5KSwgTlVMTH0sCiAJezEsIHNpemVvZihTVkdBQ09UYWJs ZURYU2hhZGVyRW50cnkpLCAmdm13X2R4X3NoYWRlcl9jb3RhYmxlX2xpc3Rfc2NydWJ9LAogCXsx LCBzaXplb2YoU1ZHQUNPVGFibGVEWFVBVmlld0VudHJ5KSwgJnZtd192aWV3X2NvdGFibGVfbGlz dF9kZXN0cm95fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAppbmRleCAyNjJlNTc2MjNk ZjQuLmNmZDhlYWY3OTczZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKQEAgLTIw Miw2ICsyMDIsNyBAQCBlbnVtIHZtd19yZXNfdHlwZSB7CiAJdm13X3Jlc19keF9jb250ZXh0LAog CXZtd19yZXNfY290YWJsZSwKIAl2bXdfcmVzX3ZpZXcsCisJdm13X3Jlc19zdHJlYW1vdXRwdXQs CiAJdm13X3Jlc19tYXgKIH07CiAKQEAgLTIxMCw3ICsyMTEsOCBAQCBlbnVtIHZtd19yZXNfdHlw ZSB7CiAgKi8KIGVudW0gdm13X2NtZGJ1Zl9yZXNfdHlwZSB7CiAJdm13X2NtZGJ1Zl9yZXNfc2hh ZGVyLAotCXZtd19jbWRidWZfcmVzX3ZpZXcKKwl2bXdfY21kYnVmX3Jlc192aWV3LAorCXZtd19j bWRidWZfcmVzX3N0cmVhbW91dHB1dAogfTsKIAogc3RydWN0IHZtd19jbWRidWZfcmVzX21hbmFn ZXI7CkBAIC0xMzA3LDYgKzEzMDksMjQgQEAgZXh0ZXJuIHN0cnVjdCB2bXdfcmVzb3VyY2UgKgog dm13X3NoYWRlcl9sb29rdXAoc3RydWN0IHZtd19jbWRidWZfcmVzX21hbmFnZXIgKm1hbiwKIAkJ ICB1MzIgdXNlcl9rZXksIFNWR0EzZFNoYWRlclR5cGUgc2hhZGVyX3R5cGUpOwogCisvKgorICog U3RyZWFtb3V0cHV0IG1hbmFnZW1lbnQKKyAqLworc3RydWN0IHZtd19yZXNvdXJjZSAqCit2bXdf ZHhfc3RyZWFtb3V0cHV0X2xvb2t1cChzdHJ1Y3Qgdm13X2NtZGJ1Zl9yZXNfbWFuYWdlciAqbWFu LAorCQkJICAgdTMyIHVzZXJfa2V5KTsKK2ludCB2bXdfZHhfc3RyZWFtb3V0cHV0X2FkZChzdHJ1 Y3Qgdm13X2NtZGJ1Zl9yZXNfbWFuYWdlciAqbWFuLAorCQkJICAgIHN0cnVjdCB2bXdfcmVzb3Vy Y2UgKmN0eCwKKwkJCSAgICBTVkdBM2RTdHJlYW1PdXRwdXRJZCB1c2VyX2tleSwKKwkJCSAgICBz dHJ1Y3QgbGlzdF9oZWFkICpsaXN0KTsKK3ZvaWQgdm13X2R4X3N0cmVhbW91dHB1dF9zZXRfc2l6 ZShzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMsIHUzMiBzaXplKTsKK2ludCB2bXdfZHhfc3RyZWFt b3V0cHV0X3JlbW92ZShzdHJ1Y3Qgdm13X2NtZGJ1Zl9yZXNfbWFuYWdlciAqbWFuLAorCQkJICAg ICAgIFNWR0EzZFN0cmVhbU91dHB1dElkIHVzZXJfa2V5LAorCQkJICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgKmxpc3QpOwordm9pZCB2bXdfZHhfc3RyZWFtb3V0cHV0X2NvdGFibGVfbGlzdF9zY3J1 YihzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQkgICAgc3RydWN0IGxpc3RfaGVh ZCAqbGlzdCwKKwkJCQkJICAgIGJvb2wgcmVhZGJhY2spOworCiAvKgogICogQ29tbWFuZCBidWZm ZXIgbWFuYWdlZCByZXNvdXJjZXMgLSB2bXdnZnhfY21kYnVmX3Jlcy5jCiAgKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNidWYuYyBiL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNidWYuYwppbmRleCBkNDkxNjljNjhmYmEuLjM2N2Q1Yjg3 ZWU2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNidWYuYwpAQCAtMjk0OCw2 ICsyOTQ4LDE2OSBAQCBzdGF0aWMgaW50IHZtd19jbWRfc2V0X2NzX3VhdihzdHJ1Y3Qgdm13X3By aXZhdGUgKmRldl9wcml2LAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgdm13X2NtZF9k eF9kZWZpbmVfc3RyZWFtb3V0cHV0KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJ CSAgc3RydWN0IHZtd19zd19jb250ZXh0ICpzd19jb250ZXh0LAorCQkJCQkgIFNWR0EzZENtZEhl YWRlciAqaGVhZGVyKQoreworCXN0cnVjdCB2bXdfY3R4X3ZhbGlkYXRpb25faW5mbyAqY3R4X25v ZGUgPSBzd19jb250ZXh0LT5keF9jdHhfbm9kZTsKKwlzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXM7 CisJc3RydWN0IHsKKwkJU1ZHQTNkQ21kSGVhZGVyIGhlYWRlcjsKKwkJU1ZHQTNkQ21kRFhEZWZp bmVTdHJlYW1PdXRwdXRXaXRoTW9iIGJvZHk7CisJfSAqY21kID0gY29udGFpbmVyX29mKGhlYWRl ciwgdHlwZW9mKCpjbWQpLCBoZWFkZXIpOworCWludCByZXQ7CisKKwlpZiAoIWhhc19zbTVfY29u dGV4dChkZXZfcHJpdikpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFjdHhfbm9kZSkgewor CQlEUk1fRVJST1IoIkRYIENvbnRleHQgbm90IHNldC5cbiIpOworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKKwlyZXMgPSB2bXdfY29udGV4dF9jb3RhYmxlKGN0eF9ub2RlLT5jdHgsIFNWR0FfQ09U QUJMRV9TVFJFQU1PVVRQVVQpOworCXJldCA9IHZtd19jb3RhYmxlX25vdGlmeShyZXMsIGNtZC0+ Ym9keS5zb2lkKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIHZtd19keF9z dHJlYW1vdXRwdXRfYWRkKHN3X2NvbnRleHQtPm1hbiwgY3R4X25vZGUtPmN0eCwKKwkJCQkgICAg ICAgY21kLT5ib2R5LnNvaWQsCisJCQkJICAgICAgICZzd19jb250ZXh0LT5zdGFnZWRfY21kX3Jl cyk7Cit9CisKK3N0YXRpYyBpbnQgdm13X2NtZF9keF9kZXN0cm95X3N0cmVhbW91dHB1dChzdHJ1 Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQkgICBzdHJ1Y3Qgdm13X3N3X2NvbnRleHQg KnN3X2NvbnRleHQsCisJCQkJCSAgIFNWR0EzZENtZEhlYWRlciAqaGVhZGVyKQoreworCXN0cnVj dCB2bXdfY3R4X3ZhbGlkYXRpb25faW5mbyAqY3R4X25vZGUgPSBzd19jb250ZXh0LT5keF9jdHhf bm9kZTsKKwlzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXM7CisJc3RydWN0IHsKKwkJU1ZHQTNkQ21k SGVhZGVyIGhlYWRlcjsKKwkJU1ZHQTNkQ21kRFhEZXN0cm95U3RyZWFtT3V0cHV0IGJvZHk7CisJ fSAqY21kID0gY29udGFpbmVyX29mKGhlYWRlciwgdHlwZW9mKCpjbWQpLCBoZWFkZXIpOworCisJ aWYgKCFjdHhfbm9kZSkgeworCQlEUk1fRVJST1IoIkRYIENvbnRleHQgbm90IHNldC5cbiIpOwor CQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKgorCSAqIFdoZW4gZGV2aWNlIGRvZXMgbm90IHN1 cHBvcnQgU001IHRoZW4gc3RyZWFtb3V0cHV0IHdpdGggbW9iIGNvbW1hbmQgaXMKKwkgKiBub3Qg YXZhaWxhYmxlIHRvIHVzZXItc3BhY2UuIFNpbXBseSByZXR1cm4gaW4gdGhpcyBjYXNlLgorCSAq LworCWlmICghaGFzX3NtNV9jb250ZXh0KGRldl9wcml2KSkKKwkJcmV0dXJuIDA7CisKKwkvKgor CSAqIFdpdGggU001IGNhcGFibGUgZGV2aWNlIGlmIGxvb2t1cCBmYWlscyB0aGVuIHVzZXItc3Bh Y2UgcHJvYmFibHkgdXNlZAorCSAqIG9sZCBzdHJlYW1vdXRwdXQgZGVmaW5lIGNvbW1hbmQuIFJl dHVybiB3aXRob3V0IGFuIGVycm9yLgorCSAqLworCXJlcyA9IHZtd19keF9zdHJlYW1vdXRwdXRf bG9va3VwKHZtd19jb250ZXh0X3Jlc19tYW4oY3R4X25vZGUtPmN0eCksCisJCQkJCSBjbWQtPmJv ZHkuc29pZCk7CisJaWYgKElTX0VSUihyZXMpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiB2bXdf ZHhfc3RyZWFtb3V0cHV0X3JlbW92ZShzd19jb250ZXh0LT5tYW4sIGNtZC0+Ym9keS5zb2lkLAor CQkJCQkgICZzd19jb250ZXh0LT5zdGFnZWRfY21kX3Jlcyk7Cit9CisKK3N0YXRpYyBpbnQgdm13 X2NtZF9keF9iaW5kX3N0cmVhbW91dHB1dChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAor CQkJCQlzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQsCisJCQkJCVNWR0EzZENtZEhl YWRlciAqaGVhZGVyKQoreworCXN0cnVjdCB2bXdfY3R4X3ZhbGlkYXRpb25faW5mbyAqY3R4X25v ZGUgPSBzd19jb250ZXh0LT5keF9jdHhfbm9kZTsKKwlzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXM7 CisJc3RydWN0IHsKKwkJU1ZHQTNkQ21kSGVhZGVyIGhlYWRlcjsKKwkJU1ZHQTNkQ21kRFhCaW5k U3RyZWFtT3V0cHV0IGJvZHk7CisJfSAqY21kID0gY29udGFpbmVyX29mKGhlYWRlciwgdHlwZW9m KCpjbWQpLCBoZWFkZXIpOworCWludCByZXQ7CisKKwlpZiAoIWhhc19zbTVfY29udGV4dChkZXZf cHJpdikpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFjdHhfbm9kZSkgeworCQlEUk1fRVJS T1IoIkRYIENvbnRleHQgbm90IHNldC5cbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwly ZXMgPSB2bXdfZHhfc3RyZWFtb3V0cHV0X2xvb2t1cCh2bXdfY29udGV4dF9yZXNfbWFuKGN0eF9u b2RlLT5jdHgpLAorCQkJCQkgY21kLT5ib2R5LnNvaWQpOworCWlmIChJU19FUlIocmVzKSkgewor CQlEUk1fRVJST1IoIkNvdW5kIG5vdCBmaW5kIHN0cmVhbW91dHB1dCB0byBiaW5kLlxuIik7CisJ CXJldHVybiBQVFJfRVJSKHJlcyk7CisJfQorCisJdm13X2R4X3N0cmVhbW91dHB1dF9zZXRfc2l6 ZShyZXMsIGNtZC0+Ym9keS5zaXplSW5CeXRlcyk7CisKKwlyZXQgPSB2bXdfZXhlY2J1Zl9yZXNf bm9jdHhfdmFsX2FkZChzd19jb250ZXh0LCByZXMsCisJCQkJCSAgICBWTVdfUkVTX0RJUlRZX05P TkUpOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJFcnJvciBjcmVhdGluZyByZXNvdXJjZSB2 YWxpZGF0aW9uIG5vZGUuXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gdm13X2Nt ZF9yZXNfc3dpdGNoX2JhY2t1cChkZXZfcHJpdiwgc3dfY29udGV4dCwgcmVzLAorCQkJCQkgJmNt ZC0+Ym9keS5tb2JpZCwKKwkJCQkJIGNtZC0+Ym9keS5vZmZzZXRJbkJ5dGVzKTsKK30KKworc3Rh dGljIGludCB2bXdfY21kX2R4X3NldF9zdHJlYW1vdXRwdXQoc3RydWN0IHZtd19wcml2YXRlICpk ZXZfcHJpdiwKKwkJCQkgICAgICAgc3RydWN0IHZtd19zd19jb250ZXh0ICpzd19jb250ZXh0LAor CQkJCSAgICAgICBTVkdBM2RDbWRIZWFkZXIgKmhlYWRlcikKK3sKKwlzdHJ1Y3Qgdm13X2N0eF92 YWxpZGF0aW9uX2luZm8gKmN0eF9ub2RlID0gc3dfY29udGV4dC0+ZHhfY3R4X25vZGU7CisJc3Ry dWN0IHZtd19yZXNvdXJjZSAqcmVzOworCXN0cnVjdCB2bXdfY3R4X2JpbmRpbmZvX3NvIGJpbmRp bmc7CisJc3RydWN0IHsKKwkJU1ZHQTNkQ21kSGVhZGVyIGhlYWRlcjsKKwkJU1ZHQTNkQ21kRFhT ZXRTdHJlYW1PdXRwdXQgYm9keTsKKwl9ICpjbWQgPSBjb250YWluZXJfb2YoaGVhZGVyLCB0eXBl b2YoKmNtZCksIGhlYWRlcik7CisJaW50IHJldDsKKworCWlmICghY3R4X25vZGUpIHsKKwkJRFJN X0VSUk9SKCJEWCBDb250ZXh0IG5vdCBzZXQuXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor CisJaWYgKGNtZC0+Ym9keS5zb2lkID09IFNWR0EzRF9JTlZBTElEX0lEKQorCQlyZXR1cm4gMDsK KworCS8qCisJICogV2hlbiBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBTTTUgdGhlbiBzdHJlYW1v dXRwdXQgd2l0aCBtb2IgY29tbWFuZCBpcworCSAqIG5vdCBhdmFpbGFibGUgdG8gdXNlci1zcGFj ZS4gU2ltcGx5IHJldHVybiBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKCFoYXNfc201X2NvbnRl eHQoZGV2X3ByaXYpKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogV2l0aCBTTTUgY2FwYWJsZSBk ZXZpY2UgaWYgbG9va3VwIGZhaWxzIHRoZW4gdXNlci1zcGFjZSBwcm9iYWJseSB1c2VkCisJICog b2xkIHN0cmVhbW91dHB1dCBkZWZpbmUgY29tbWFuZC4gUmV0dXJuIHdpdGhvdXQgYW4gZXJyb3Iu CisJICovCisJcmVzID0gdm13X2R4X3N0cmVhbW91dHB1dF9sb29rdXAodm13X2NvbnRleHRfcmVz X21hbihjdHhfbm9kZS0+Y3R4KSwKKwkJCQkJIGNtZC0+Ym9keS5zb2lkKTsKKwlpZiAoSVNfRVJS KHJlcykpIHsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0ID0gdm13X2V4ZWNidWZfcmVzX25vY3R4 X3ZhbF9hZGQoc3dfY29udGV4dCwgcmVzLAorCQkJCQkgICAgVk1XX1JFU19ESVJUWV9OT05FKTsK KwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiRXJyb3IgY3JlYXRpbmcgcmVzb3VyY2UgdmFsaWRh dGlvbiBub2RlLlxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJYmluZGluZy5iaS5jdHggPSBj dHhfbm9kZS0+Y3R4OworCWJpbmRpbmcuYmkucmVzID0gcmVzOworCWJpbmRpbmcuYmkuYnQgPSB2 bXdfY3R4X2JpbmRpbmdfc287CisJYmluZGluZy5zbG90ID0gMDsgLyogT25seSBvbmUgU08gc2V0 IHRvIGNvbnRleHQgYXQgYSB0aW1lLiAqLworCisJdm13X2JpbmRpbmdfYWRkKHN3X2NvbnRleHQt PmR4X2N0eF9ub2RlLT5zdGFnZWQsICZiaW5kaW5nLmJpLCAwLAorCQkJYmluZGluZy5zbG90KTsK KworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBpbnQgdm13X2NtZF9pbmRleGVkX2luc3RhbmNl ZF9pbmRpcmVjdChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQkgICAgICBzdHJ1 Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQsCiAJCQkJCSAgICAgIFNWR0EzZENtZEhlYWRl ciAqaGVhZGVyKQpAQCAtMzMzMCw5ICszNDkzLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2bXdf Y21kX2VudHJ5IHZtd19jbWRfZW50cmllc1tTVkdBXzNEX0NNRF9NQVhdID0gewogCVZNV19DTURf REVGKFNWR0FfM0RfQ01EX0RYX0RFRklORV9TVFJFQU1PVVRQVVQsCiAJCSAgICAmdm13X2NtZF9k eF9zb19kZWZpbmUsIHRydWUsIGZhbHNlLCB0cnVlKSwKIAlWTVdfQ01EX0RFRihTVkdBXzNEX0NN RF9EWF9ERVNUUk9ZX1NUUkVBTU9VVFBVVCwKLQkJICAgICZ2bXdfY21kX2R4X2NpZF9jaGVjaywg dHJ1ZSwgZmFsc2UsIHRydWUpLAotCVZNV19DTURfREVGKFNWR0FfM0RfQ01EX0RYX1NFVF9TVFJF QU1PVVRQVVQsICZ2bXdfY21kX2R4X2NpZF9jaGVjaywKLQkJICAgIHRydWUsIGZhbHNlLCB0cnVl KSwKKwkJICAgICZ2bXdfY21kX2R4X2Rlc3Ryb3lfc3RyZWFtb3V0cHV0LCB0cnVlLCBmYWxzZSwg dHJ1ZSksCisJVk1XX0NNRF9ERUYoU1ZHQV8zRF9DTURfRFhfU0VUX1NUUkVBTU9VVFBVVCwKKwkJ ICAgICZ2bXdfY21kX2R4X3NldF9zdHJlYW1vdXRwdXQsIHRydWUsIGZhbHNlLCB0cnVlKSwKIAlW TVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9TRVRfU09UQVJHRVRTLAogCQkgICAgJnZtd19jbWRf ZHhfc2V0X3NvX3RhcmdldHMsIHRydWUsIGZhbHNlLCB0cnVlKSwKIAlWTVdfQ01EX0RFRihTVkdB XzNEX0NNRF9EWF9TRVRfSU5QVVRfTEFZT1VULApAQCAtMzM3NSw2ICszNTM4LDEwIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgdm13X2NtZF9lbnRyeSB2bXdfY21kX2VudHJpZXNbU1ZHQV8zRF9DTURf TUFYXSA9IHsKIAkJICAgIGZhbHNlLCB0cnVlKSwKIAlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9E WF9ERUZJTkVfREVQVEhTVEVOQ0lMX1ZJRVdfVjIsCiAJCSAgICAmdm13X2NtZF9zbTVfdmlld19k ZWZpbmUsIHRydWUsIGZhbHNlLCB0cnVlKSwKKwlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9E RUZJTkVfU1RSRUFNT1VUUFVUX1dJVEhfTU9CLAorCQkgICAgJnZtd19jbWRfZHhfZGVmaW5lX3N0 cmVhbW91dHB1dCwgdHJ1ZSwgZmFsc2UsIHRydWUpLAorCVZNV19DTURfREVGKFNWR0FfM0RfQ01E X0RYX0JJTkRfU1RSRUFNT1VUUFVULAorCQkgICAgJnZtd19jbWRfZHhfYmluZF9zdHJlYW1vdXRw dXQsIHRydWUsIGZhbHNlLCB0cnVlKSwKIH07CiAKIGJvb2wgdm13X2NtZF9kZXNjcmliZShjb25z dCB2b2lkICpidWYsIHUzMiAqc2l6ZSwgY2hhciBjb25zdCAqKmNtZCkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3NvLmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9zby5oCmluZGV4IDIyYjRmNTcyMDkwOC4uZjQ4Yjg0YmZlZWFjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zby5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X3NvLmgKQEAgLTEyOSw2ICsxMjksNyBAQCBzdGF0aWMgaW5saW5lIGVu dW0gdm13X3NvX3R5cGUgdm13X3NvX2NtZF90b190eXBlKHUzMiBpZCkKIAljYXNlIFNWR0FfM0Rf Q01EX0RYX0RFU1RST1lfU0FNUExFUl9TVEFURToKIAkJcmV0dXJuIHZtd19zb19zczsKIAljYXNl IFNWR0FfM0RfQ01EX0RYX0RFRklORV9TVFJFQU1PVVRQVVQ6CisJY2FzZSBTVkdBXzNEX0NNRF9E WF9ERUZJTkVfU1RSRUFNT1VUUFVUX1dJVEhfTU9COgogCWNhc2UgU1ZHQV8zRF9DTURfRFhfREVT VFJPWV9TVFJFQU1PVVRQVVQ6CiAJCXJldHVybiB2bXdfc29fc287CiAJZGVmYXVsdDoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0cmVhbW91dHB1dC5jIGIvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3RyZWFtb3V0cHV0LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xOTMxOTI0NTY2NjMKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdHJlYW1vdXRwdXQuYwpAQCAtMCwwICsx LDM4NyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAxOC0yMDE5IFZNd2FyZSwgSW5j LiwgUGFsbyBBbHRvLCBDQS4sIFVTQQorICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0 aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICog ZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdh cmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5P IEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUlMsIEFVVEhPUlMgQU5EL09SIElU UyBTVVBQTElFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgKiBEQU1BR0VTIE9SIE9USEVS IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKKyAq IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUKKyAqIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdB UkUuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fcGxh Y2VtZW50Lmg+CisKKyNpbmNsdWRlICJ2bXdnZnhfZHJ2LmgiCisjaW5jbHVkZSAidm13Z2Z4X3Jl c291cmNlX3ByaXYuaCIKKyNpbmNsdWRlICJ2bXdnZnhfYmluZGluZy5oIgorCisvKioKKyAqIHN0 cnVjdCB2bXdfZHhfc3RyZWFtb3V0cHV0IC0gU3RyZWFtb3V0cHV0IHJlc291cmNlIG1ldGFkYXRh LgorICogQHJlczogQmFzZSByZXNvdXJjZSBzdHJ1Y3QuCisgKiBAY3R4OiBOb24tcmVmY291bnRl ZCBjb250ZXh0IHRvIHdoaWNoIEByZXMgYmVsb25nLgorICogQGNvdGFibGU6IFJlZmNvdW50ZWQg Y290YWJsZSBob2xkaW5nIHRoaXMgU3RyZWFtb3V0cHV0LgorICogQGNvdGFibGVfaGVhZDogTGlz dCBoZWFkIGZvciBjb3RhYmxlLXNvX3JlcyBsaXN0LgorICogQGlkOiBVc2VyLXNwYWNlIHByb3Zp ZGVkIGlkZW50aWZpZXIuCisgKiBAc2l6ZTogVXNlci1zcGFjZSBwcm92aWRlZCBtb2Igc2l6ZS4K KyAqIEBjb21taXR0ZWQ6IFdoZXRoZXIgc3RyZWFtb3V0cHV0IGlzIGFjdHVhbGx5IGNyZWF0ZWQg b3IgcGVuZGluZyBjcmVhdGlvbi4KKyAqLworc3RydWN0IHZtd19keF9zdHJlYW1vdXRwdXQgewor CXN0cnVjdCB2bXdfcmVzb3VyY2UgcmVzOworCXN0cnVjdCB2bXdfcmVzb3VyY2UgKmN0eDsKKwlz dHJ1Y3Qgdm13X3Jlc291cmNlICpjb3RhYmxlOworCXN0cnVjdCBsaXN0X2hlYWQgY290YWJsZV9o ZWFkOworCXUzMiBpZDsKKwl1MzIgc2l6ZTsKKwlib29sIGNvbW1pdHRlZDsKK307CisKK3N0YXRp YyBpbnQgdm13X2R4X3N0cmVhbW91dHB1dF9jcmVhdGUoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVz KTsKK3N0YXRpYyBpbnQgdm13X2R4X3N0cmVhbW91dHB1dF9iaW5kKHN0cnVjdCB2bXdfcmVzb3Vy Y2UgKnJlcywKKwkJCQkgICAgc3RydWN0IHR0bV92YWxpZGF0ZV9idWZmZXIgKnZhbF9idWYpOwor c3RhdGljIGludCB2bXdfZHhfc3RyZWFtb3V0cHV0X3VuYmluZChzdHJ1Y3Qgdm13X3Jlc291cmNl ICpyZXMsIGJvb2wgcmVhZGJhY2ssCisJCQkJICAgICAgc3RydWN0IHR0bV92YWxpZGF0ZV9idWZm ZXIgKnZhbF9idWYpOworc3RhdGljIHZvaWQgdm13X2R4X3N0cmVhbW91dHB1dF9jb21taXRfbm90 aWZ5KHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywKKwkJCQkJICAgICAgZW51bSB2bXdfY21kYnVm X3Jlc19zdGF0ZSBzdGF0ZSk7CisKK3N0YXRpYyBzaXplX3Qgdm13X3N0cmVhbW91dHB1dF9zaXpl OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHZtd19yZXNfZnVuYyB2bXdfZHhfc3RyZWFtb3V0cHV0 X2Z1bmMgPSB7CisJLnJlc190eXBlID0gdm13X3Jlc19zdHJlYW1vdXRwdXQsCisJLm5lZWRzX2Jh Y2t1cCA9IHRydWUsCisJLm1heV9ldmljdCA9IGZhbHNlLAorCS50eXBlX25hbWUgPSAiRFggc3Ry ZWFtb3V0cHV0IiwKKwkuYmFja3VwX3BsYWNlbWVudCA9ICZ2bXdfbW9iX3BsYWNlbWVudCwKKwku Y3JlYXRlID0gdm13X2R4X3N0cmVhbW91dHB1dF9jcmVhdGUsCisJLmRlc3Ryb3kgPSBOVUxMLCAv KiBDb21tYW5kIGJ1ZmZlciBtYW5hZ2VkIHJlc291cmNlLiAqLworCS5iaW5kID0gdm13X2R4X3N0 cmVhbW91dHB1dF9iaW5kLAorCS51bmJpbmQgPSB2bXdfZHhfc3RyZWFtb3V0cHV0X3VuYmluZCwK KwkuY29tbWl0X25vdGlmeSA9IHZtd19keF9zdHJlYW1vdXRwdXRfY29tbWl0X25vdGlmeSwKK307 CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHZtd19keF9zdHJlYW1vdXRwdXQgKgordm13X3Jlc190 b19keF9zdHJlYW1vdXRwdXQoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKQoreworCXJldHVybiBj b250YWluZXJfb2YocmVzLCBzdHJ1Y3Qgdm13X2R4X3N0cmVhbW91dHB1dCwgcmVzKTsKK30KKwor LyoqCisgKiB2bXdfZHhfc3RyZWFtb3V0cHV0X3Vuc2NydWIgLSBSZWF0dGFjaCB0aGUgTU9CIHRv IHN0cmVhbW91dHB1dC4KKyAqIEByZXM6IFRoZSBzdHJlYW1vdXRwdXQgcmVzb3VyY2UuCisgKgor ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4K KyAqLworc3RhdGljIGludCB2bXdfZHhfc3RyZWFtb3V0cHV0X3Vuc2NydWIoc3RydWN0IHZtd19y ZXNvdXJjZSAqcmVzKQoreworCXN0cnVjdCB2bXdfZHhfc3RyZWFtb3V0cHV0ICpzbyA9IHZtd19y ZXNfdG9fZHhfc3RyZWFtb3V0cHV0KHJlcyk7CisJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJp diA9IHJlcy0+ZGV2X3ByaXY7CisJc3RydWN0IHsKKwkJU1ZHQTNkQ21kSGVhZGVyIGhlYWRlcjsK KwkJU1ZHQTNkQ21kRFhCaW5kU3RyZWFtT3V0cHV0IGJvZHk7CisJfSAqY21kOworCisJaWYgKCFs aXN0X2VtcHR5KCZzby0+Y290YWJsZV9oZWFkKSB8fCAhc28tPmNvbW1pdHRlZCApCisJCXJldHVy biAwOworCisJY21kID0gVk1XX0ZJRk9fUkVTRVJWRV9EWChkZXZfcHJpdiwgc2l6ZW9mKCpjbWQp LCBzby0+Y3R4LT5pZCk7CisJaWYgKCFjbWQpCisJCXJldHVybiAtRU5PTUVNOworCisJY21kLT5o ZWFkZXIuaWQgPSBTVkdBXzNEX0NNRF9EWF9CSU5EX1NUUkVBTU9VVFBVVDsKKwljbWQtPmhlYWRl ci5zaXplID0gc2l6ZW9mKGNtZC0+Ym9keSk7CisJY21kLT5ib2R5LnNvaWQgPSBzby0+aWQ7CisJ Y21kLT5ib2R5Lm1vYmlkID0gcmVzLT5iYWNrdXAtPmJhc2UubWVtLnN0YXJ0OworCWNtZC0+Ym9k eS5vZmZzZXRJbkJ5dGVzID0gcmVzLT5iYWNrdXBfb2Zmc2V0OworCWNtZC0+Ym9keS5zaXplSW5C eXRlcyA9IHNvLT5zaXplOworCXZtd19maWZvX2NvbW1pdChkZXZfcHJpdiwgc2l6ZW9mKCpjbWQp KTsKKworCXZtd19jb3RhYmxlX2FkZF9yZXNvdXJjZShzby0+Y290YWJsZSwgJnNvLT5jb3RhYmxl X2hlYWQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdm13X2R4X3N0cmVhbW91dHB1 dF9jcmVhdGUoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKQoreworCXN0cnVjdCB2bXdfcHJpdmF0 ZSAqZGV2X3ByaXYgPSByZXMtPmRldl9wcml2OworCXN0cnVjdCB2bXdfZHhfc3RyZWFtb3V0cHV0 ICpzbyA9IHZtd19yZXNfdG9fZHhfc3RyZWFtb3V0cHV0KHJlcyk7CisJaW50IHJldCA9IDA7CisK KwlXQVJOX09OX09OQ0UoIXNvLT5jb21taXR0ZWQpOworCisJaWYgKHZtd19yZXNvdXJjZV9tb2Jf YXR0YWNoZWQocmVzKSkgeworCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+YmluZGluZ19tdXRleCk7 CisJCXJldCA9IHZtd19keF9zdHJlYW1vdXRwdXRfdW5zY3J1YihyZXMpOworCQltdXRleF91bmxv Y2soJmRldl9wcml2LT5iaW5kaW5nX211dGV4KTsKKwl9CisKKwlyZXMtPmlkID0gc28tPmlkOwor CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB2bXdfZHhfc3RyZWFtb3V0cHV0X2JpbmQo c3RydWN0IHZtd19yZXNvdXJjZSAqcmVzLAorCQkJCSAgICBzdHJ1Y3QgdHRtX3ZhbGlkYXRlX2J1 ZmZlciAqdmFsX2J1ZikKK3sKKwlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0gcmVzLT5k ZXZfcHJpdjsKKwlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gdmFsX2J1Zi0+Ym87CisJ aW50IHJldDsKKworCWlmIChXQVJOX09OKGJvLT5tZW0ubWVtX3R5cGUgIT0gVk1XX1BMX01PQikp CisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmJpbmRpbmdfbXV0 ZXgpOworCXJldCA9IHZtd19keF9zdHJlYW1vdXRwdXRfdW5zY3J1YihyZXMpOworCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPmJpbmRpbmdfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworLyoq CisgKiB2bXdfZHhfc3RyZWFtb3V0cHV0X3NjcnViIC0gVW5iaW5kIHRoZSBNT0IgZnJvbSBzdHJl YW1vdXRwdXQuCisgKiBAcmVzOiBUaGUgc3RyZWFtb3V0cHV0IHJlc291cmNlLgorICoKKyAqIFJl dHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8K K3N0YXRpYyBpbnQgdm13X2R4X3N0cmVhbW91dHB1dF9zY3J1YihzdHJ1Y3Qgdm13X3Jlc291cmNl ICpyZXMpCit7CisJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiA9IHJlcy0+ZGV2X3ByaXY7 CisJc3RydWN0IHZtd19keF9zdHJlYW1vdXRwdXQgKnNvID0gdm13X3Jlc190b19keF9zdHJlYW1v dXRwdXQocmVzKTsKKwlzdHJ1Y3QgeworCQlTVkdBM2RDbWRIZWFkZXIgaGVhZGVyOworCQlTVkdB M2RDbWREWEJpbmRTdHJlYW1PdXRwdXQgYm9keTsKKwl9ICpjbWQ7CisKKwlpZiAobGlzdF9lbXB0 eSgmc28tPmNvdGFibGVfaGVhZCkpCisJCXJldHVybiAwOworCisJV0FSTl9PTl9PTkNFKCFzby0+ Y29tbWl0dGVkKTsKKworCWNtZCA9IFZNV19GSUZPX1JFU0VSVkVfRFgoZGV2X3ByaXYsIHNpemVv ZigqY21kKSwgc28tPmN0eC0+aWQpOworCWlmICghY21kKQorCQlyZXR1cm4gLUVOT01FTTsKKwor CWNtZC0+aGVhZGVyLmlkID0gU1ZHQV8zRF9DTURfRFhfQklORF9TVFJFQU1PVVRQVVQ7CisJY21k LT5oZWFkZXIuc2l6ZSA9IHNpemVvZihjbWQtPmJvZHkpOworCWNtZC0+Ym9keS5zb2lkID0gcmVz LT5pZDsKKwljbWQtPmJvZHkubW9iaWQgPSBTVkdBM0RfSU5WQUxJRF9JRDsKKwljbWQtPmJvZHku b2Zmc2V0SW5CeXRlcyA9IDA7CisJY21kLT5ib2R5LnNpemVJbkJ5dGVzID0gc28tPnNpemU7CisJ dm13X2ZpZm9fY29tbWl0KGRldl9wcml2LCBzaXplb2YoKmNtZCkpOworCisJcmVzLT5pZCA9IC0x OworCWxpc3RfZGVsX2luaXQoJnNvLT5jb3RhYmxlX2hlYWQpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgdm13X2R4X3N0cmVhbW91dHB1dF91bmJpbmQoc3RydWN0IHZtd19yZXNvdXJj ZSAqcmVzLCBib29sIHJlYWRiYWNrLAorCQkJCSAgICAgIHN0cnVjdCB0dG1fdmFsaWRhdGVfYnVm ZmVyICp2YWxfYnVmKQoreworCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXMtPmRl dl9wcml2OworCXN0cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZTsKKwlpbnQgcmV0OworCisJaWYg KFdBUk5fT04ocmVzLT5iYWNrdXAtPmJhc2UubWVtLm1lbV90eXBlICE9IFZNV19QTF9NT0IpKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5iaW5kaW5nX211dGV4 KTsKKwlyZXQgPSB2bXdfZHhfc3RyZWFtb3V0cHV0X3NjcnViKHJlcyk7CisJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+YmluZGluZ19tdXRleCk7CisKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJKHZvaWQpIHZtd19leGVjYnVmX2ZlbmNlX2NvbW1hbmRzKE5VTEwsIGRldl9wcml2LCAmZmVu Y2UsIE5VTEwpOworCXZtd19ib19mZW5jZV9zaW5nbGUodmFsX2J1Zi0+Ym8sIGZlbmNlKTsKKwor CWlmIChmZW5jZSAhPSBOVUxMKQorCQl2bXdfZmVuY2Vfb2JqX3VucmVmZXJlbmNlKCZmZW5jZSk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdm13X2R4X3N0cmVhbW91dHB1dF9jb21t aXRfbm90aWZ5KHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywKKwkJCQkJICAgZW51bSB2bXdfY21k YnVmX3Jlc19zdGF0ZSBzdGF0ZSkKK3sKKwlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0g cmVzLT5kZXZfcHJpdjsKKwlzdHJ1Y3Qgdm13X2R4X3N0cmVhbW91dHB1dCAqc28gPSB2bXdfcmVz X3RvX2R4X3N0cmVhbW91dHB1dChyZXMpOworCisJaWYgKHN0YXRlID09IFZNV19DTURCVUZfUkVT X0FERCkgeworCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+YmluZGluZ19tdXRleCk7CisJCXZtd19j b3RhYmxlX2FkZF9yZXNvdXJjZShzby0+Y290YWJsZSwgJnNvLT5jb3RhYmxlX2hlYWQpOworCQlz by0+Y29tbWl0dGVkID0gdHJ1ZTsKKwkJcmVzLT5pZCA9IHNvLT5pZDsKKwkJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+YmluZGluZ19tdXRleCk7CisJfSBlbHNlIHsKKwkJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPmJpbmRpbmdfbXV0ZXgpOworCQlsaXN0X2RlbF9pbml0KCZzby0+Y290YWJsZV9oZWFk KTsKKwkJc28tPmNvbW1pdHRlZCA9IGZhbHNlOworCQlyZXMtPmlkID0gLTE7CisJCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPmJpbmRpbmdfbXV0ZXgpOworCX0KK30KKworLyoqCisgKiB2bXdfZHhf c3RyZWFtb3V0cHV0X2xvb2t1cCAtIERvIGEgc3RyZWFtb3V0cHV0IHJlc291cmNlIGxvb2t1cCBi eSB1c2VyIGtleS4KKyAqIEBtYW46IENvbW1hbmQgYnVmZmVyIG1hbmFnZWQgcmVzb3VyY2UgbWFu YWdlciBmb3IgY3VycmVudCBjb250ZXh0LgorICogQHVzZXJfa2V5OiBVc2VyLXNwYWNlIGlkZW50 aWZpZXIgZm9yIGxvb2t1cC4KKyAqCisgKiBSZXR1cm46IFZhbGlkIHJlZmNvdW50ZWQgdm13X3Jl c291cmNlIG9uIHN1Y2Nlc3MsIGVycm9yIHBvaW50ZXIgb24gZmFpbHVyZS4KKyAqLworc3RydWN0 IHZtd19yZXNvdXJjZSAqCit2bXdfZHhfc3RyZWFtb3V0cHV0X2xvb2t1cChzdHJ1Y3Qgdm13X2Nt ZGJ1Zl9yZXNfbWFuYWdlciAqbWFuLAorCQkJICAgdTMyIHVzZXJfa2V5KQoreworCXJldHVybiB2 bXdfY21kYnVmX3Jlc19sb29rdXAobWFuLCB2bXdfY21kYnVmX3Jlc19zdHJlYW1vdXRwdXQsCisJ CQkJICAgICB1c2VyX2tleSk7Cit9CisKK3N0YXRpYyB2b2lkIHZtd19keF9zdHJlYW1vdXRwdXRf cmVzX2ZyZWUoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKQoreworCXN0cnVjdCB2bXdfcHJpdmF0 ZSAqZGV2X3ByaXYgPSByZXMtPmRldl9wcml2OworCXN0cnVjdCB2bXdfZHhfc3RyZWFtb3V0cHV0 ICpzbyA9IHZtd19yZXNfdG9fZHhfc3RyZWFtb3V0cHV0KHJlcyk7CisKKwl2bXdfcmVzb3VyY2Vf dW5yZWZlcmVuY2UoJnNvLT5jb3RhYmxlKTsKKwlrZnJlZShzbyk7CisJdHRtX21lbV9nbG9iYWxf ZnJlZSh2bXdfbWVtX2dsb2IoZGV2X3ByaXYpLCB2bXdfc3RyZWFtb3V0cHV0X3NpemUpOworfQor CitzdGF0aWMgdm9pZCB2bXdfZHhfc3RyZWFtb3V0cHV0X2h3X2Rlc3Ryb3koc3RydWN0IHZtd19y ZXNvdXJjZSAqcmVzKQoreworCS8qIERlc3Ryb3llZCBieSB1c2VyLXNwYWNlIGNtZCBidWYgb3Ig YXMgcGFydCBvZiBjb250ZXh0IHRha2Vkb3duLiAqLworCXJlcy0+aWQgPSAtMTsKK30KKworLyoq CisgKiB2bXdfZHhfc3RyZWFtb3V0cHV0X2FkZCAtIEFkZCBhIHN0cmVhbW91dHB1dCBhcyBhIGNt ZCBidWYgbWFuYWdlZCByZXNvdXJjZS4KKyAqIEBtYW46IENvbW1hbmQgYnVmZmVyIG1hbmFnZWQg cmVzb3VyY2UgbWFuYWdlciBmb3IgY3VycmVudCBjb250ZXh0LgorICogQGN0eDogUG9pbnRlciB0 byBjb250ZXh0IHJlc291cmNlLgorICogQHVzZXJfa2V5OiBUaGUgaWRlbnRpZmllciBmb3IgdGhp cyBzdHJlYW1vdXRwdXQuCisgKiBAbGlzdDogVGhlIGxpc3Qgb2Ygc3RhZ2VkIGNvbW1hbmQgYnVm ZmVyIG1hbmFnZWQgcmVzb3VyY2VzLgorICoKKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdh dGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCB2bXdfZHhfc3RyZWFtb3V0cHV0 X2FkZChzdHJ1Y3Qgdm13X2NtZGJ1Zl9yZXNfbWFuYWdlciAqbWFuLAorCQkJICAgIHN0cnVjdCB2 bXdfcmVzb3VyY2UgKmN0eCwgdTMyIHVzZXJfa2V5LAorCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQg Kmxpc3QpCit7CisJc3RydWN0IHZtd19keF9zdHJlYW1vdXRwdXQgKnNvOworCXN0cnVjdCB2bXdf cmVzb3VyY2UgKnJlczsKKwlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0gY3R4LT5kZXZf cHJpdjsKKwlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggdHRtX29wdF9jdHggPSB7CisJCS5pbnRl cnJ1cHRpYmxlID0gdHJ1ZSwKKwkJLm5vX3dhaXRfZ3B1ID0gZmFsc2UKKwl9OworCWludCByZXQ7 CisKKwlpZiAoIXZtd19zdHJlYW1vdXRwdXRfc2l6ZSkKKwkJdm13X3N0cmVhbW91dHB1dF9zaXpl ID0gdHRtX3JvdW5kX3BvdChzaXplb2YoKnNvKSk7CisKKwlyZXQgPSB0dG1fbWVtX2dsb2JhbF9h bGxvYyh2bXdfbWVtX2dsb2IoZGV2X3ByaXYpLAorCQkJCSAgIHZtd19zdHJlYW1vdXRwdXRfc2l6 ZSwgJnR0bV9vcHRfY3R4KTsKKwlpZiAocmV0KSB7CisJCWlmIChyZXQgIT0gLUVSRVNUQVJUU1lT KQorCQkJRFJNX0VSUk9SKCJPdXQgb2YgZ3JhcGhpY3MgbWVtb3J5IGZvciBzdHJlYW1vdXQuXG4i KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlzbyA9IGttYWxsb2Moc2l6ZW9mKCpzbyksIEdGUF9L RVJORUwpOworCWlmICghc28pIHsKKwkJdHRtX21lbV9nbG9iYWxfZnJlZSh2bXdfbWVtX2dsb2Io ZGV2X3ByaXYpLAorCQkJCSAgICB2bXdfc3RyZWFtb3V0cHV0X3NpemUpOworCQlyZXR1cm4gLUVO T01FTTsKKwl9CisKKwlyZXMgPSAmc28tPnJlczsKKwlzby0+Y3R4ID0gY3R4OworCXNvLT5jb3Rh YmxlID0gdm13X3Jlc291cmNlX3JlZmVyZW5jZQorCQkodm13X2NvbnRleHRfY290YWJsZShjdHgs IFNWR0FfQ09UQUJMRV9TVFJFQU1PVVRQVVQpKTsKKwlzby0+aWQgPSB1c2VyX2tleTsKKwlzby0+ Y29tbWl0dGVkID0gZmFsc2U7CisJSU5JVF9MSVNUX0hFQUQoJnNvLT5jb3RhYmxlX2hlYWQpOwor CXJldCA9IHZtd19yZXNvdXJjZV9pbml0KGRldl9wcml2LCByZXMsIHRydWUsCisJCQkJdm13X2R4 X3N0cmVhbW91dHB1dF9yZXNfZnJlZSwKKwkJCQkmdm13X2R4X3N0cmVhbW91dHB1dF9mdW5jKTsK KwlpZiAocmV0KQorCQlnb3RvIG91dF9yZXNvdXJjZV9pbml0OworCisJcmV0ID0gdm13X2NtZGJ1 Zl9yZXNfYWRkKG1hbiwgdm13X2NtZGJ1Zl9yZXNfc3RyZWFtb3V0cHV0LCB1c2VyX2tleSwKKwkJ CQkgcmVzLCBsaXN0KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9yZXNvdXJjZV9pbml0OworCisJ cmVzLT5pZCA9IHNvLT5pZDsKKwlyZXMtPmh3X2Rlc3Ryb3kgPSB2bXdfZHhfc3RyZWFtb3V0cHV0 X2h3X2Rlc3Ryb3k7CisKK291dF9yZXNvdXJjZV9pbml0OgorCXZtd19yZXNvdXJjZV91bnJlZmVy ZW5jZSgmcmVzKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogdm13X2R4X3N0cmVhbW91 dHB1dF9zZXRfc2l6ZSAtIFNldHMgc3RyZWFtb3V0cHV0IG1vYiBzaXplIGluIHJlcyBzdHJ1Y3Qu CisgKiBAcmVzOiBUaGUgc3RyZWFtb3V0cHV0IHJlcyBmb3Igd2hpY2ggbmVlZCB0byBzZXQgc2l6 ZS4KKyAqIEBzaXplOiBUaGUgc2l6ZSBwcm92aWRlZCBieSB1c2VyLXNwYWNlIHRvIHNldC4KKyAq Lwordm9pZCB2bXdfZHhfc3RyZWFtb3V0cHV0X3NldF9zaXplKHN0cnVjdCB2bXdfcmVzb3VyY2Ug KnJlcywgdTMyIHNpemUpCit7CisJc3RydWN0IHZtd19keF9zdHJlYW1vdXRwdXQgKnNvID0gdm13 X3Jlc190b19keF9zdHJlYW1vdXRwdXQocmVzKTsKKworCXNvLT5zaXplID0gc2l6ZTsKK30KKwor LyoqCisgKiB2bXdfZHhfc3RyZWFtb3V0cHV0X3JlbW92ZSAtIFN0YWdlIHN0cmVhbW91dHB1dCBm b3IgcmVtb3ZhbC4KKyAqIEBtYW46IENvbW1hbmQgYnVmZmVyIG1hbmFnZWQgcmVzb3VyY2UgbWFu YWdlciBmb3IgY3VycmVudCBjb250ZXh0LgorICogQHVzZXJfa2V5OiBUaGUgaWRlbnRpZmllciBm b3IgdGhpcyBzdHJlYW1vdXRwdXQuCisgKiBAbGlzdDogVGhlIGxpc3Qgb2Ygc3RhZ2VkIGNvbW1h bmQgYnVmZmVyIG1hbmFnZWQgcmVzb3VyY2VzLgorICoKKyAqIFJldHVybjogMCBvbiBzdWNjZXNz LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCB2bXdfZHhfc3RyZWFt b3V0cHV0X3JlbW92ZShzdHJ1Y3Qgdm13X2NtZGJ1Zl9yZXNfbWFuYWdlciAqbWFuLAorCQkJICAg ICAgIHUzMiB1c2VyX2tleSwKKwkJCSAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQorewor CXN0cnVjdCB2bXdfcmVzb3VyY2UgKnI7CisKKwlyZXR1cm4gdm13X2NtZGJ1Zl9yZXNfcmVtb3Zl KG1hbiwgdm13X2NtZGJ1Zl9yZXNfc3RyZWFtb3V0cHV0LAorCQkJCSAgICAgKHUzMil1c2VyX2tl eSwgbGlzdCwgJnIpOworfQorCisvKioKKyAqIHZtd19keF9zdHJlYW1vdXRwdXRfY290YWJsZV9s aXN0X3NjcnViIC0gY290YWJsZSB1bmJpbmRfZnVuYyBjYWxsYmFjay4KKyAqIEBkZXZfcHJpdjog RGV2aWNlIHByaXZhdGUuCisgKiBAbGlzdDogVGhlIGxpc3Qgb2YgY290YWJsZSByZXNvdXJjZXMu CisgKiBAcmVhZGJhY2s6IFdoZXRoZXIgdGhlIGNhbGwgd2FzIHBhcnQgb2YgYSByZWFkYmFjayB1 bmJpbmQuCisgKi8KK3ZvaWQgdm13X2R4X3N0cmVhbW91dHB1dF9jb3RhYmxlX2xpc3Rfc2NydWIo c3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQg Kmxpc3QsCisJCQkJCSAgICBib29sIHJlYWRiYWNrKQoreworCXN0cnVjdCB2bXdfZHhfc3RyZWFt b3V0cHV0ICplbnRyeSwgKm5leHQ7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkX29uY2UoJmRldl9w cml2LT5iaW5kaW5nX211dGV4KTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnRyeSwg bmV4dCwgbGlzdCwgY290YWJsZV9oZWFkKSB7CisJCVdBUk5fT04odm13X2R4X3N0cmVhbW91dHB1 dF9zY3J1YigmZW50cnktPnJlcykpOworCQlpZiAoIXJlYWRiYWNrKQorCQkJZW50cnktPmNvbW1p dHRlZCA9ZmFsc2U7CisJfQorfQotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK