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 907C6C43333 for ; Thu, 19 Mar 2020 20:25: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 6530C20663 for ; Thu, 19 Mar 2020 20:25:22 +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="NAv9k3JF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6530C20663 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 4BC2C6EA78; Thu, 19 Mar 2020 20:25:21 +0000 (UTC) Received: from mail-lj1-x244.google.com (mail-lj1-x244.google.com [IPv6:2a00:1450:4864:20::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC5F96EA72 for ; Thu, 19 Mar 2020 20:25:07 +0000 (UTC) Received: by mail-lj1-x244.google.com with SMTP id a2so4050477ljk.6 for ; Thu, 19 Mar 2020 13:25:07 -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=+Vw0N77CpSf3Wx9dsiX3Nre6AL6qqb2BKDz3o0xgqKQ=; b=NAv9k3JFx24uY00DP8qypd5E2BZSNWXrZWP8aWjtSXk0+oMXBIugGYa+ieChjvbsxF GiE7nb8PMIPPuTOee5atnJuCbavJHNJ6BLaWq/Ka6g4s5k/JAVVaWxD4MzWMW7vDKo+Y oJdqn6cxMkhPm2PAcBpayDuKqDnUVejKhRpCF8orBsmovp2Avq52kb4iU3JNQiya2TqE QHx34sUmpyW343e1KfMinRkmlA7feBxOHuL5cpYrurNWFSl/cSrxvGCIx/U8gaXBQHQ6 DwnTpw8XhvecCVPkWURCZQKa9MzMgyVwhUkJWNkUu4yS4WN3uDPHfsrDrvt9FRw5/QJ1 CaHA== 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=+Vw0N77CpSf3Wx9dsiX3Nre6AL6qqb2BKDz3o0xgqKQ=; b=gG80mAyp7UnXbRYfJzCFsmO1qkIgYAWEMYYfm/PyGRHxf5WVIcQKhRwSCWAgqjIf55 Udh/vtj2RU/taVkyyePJTkQHfLSG+LORoirJNIi+Q09tEslu6EJle+1NN46QkrxZhWSi bXJj3L6vdsjtGxSh1HiEMeE9BZvmfP52r8PpP6qeHYIIEVXOHjigTQWdECVP7fUt0pkS IhAhp1Hf7tON5gTgDWjW/eZbKaUTWwQg97Z7JC2aTSMhNvhZaloygAaiAbXY+tlKO+44 U7jwXsBj6EWBYpR25Ltz+J4/Ikung+/cjclKCOc9VAYMBF9R7AsC322XiPmqa4qgmNiq UDng== X-Gm-Message-State: ANhLgQ2GNgOf2/NVJiLW7aBTwu6XLZydSHcyuNLj1uqjb9/PaMEF+Egt FDBEA10eVe4muh0bbl9HiS1hU977/Ks= X-Google-Smtp-Source: ADFU+vvtoy+J17hqh8Pt0NUnFnKfkSt45BvJJ3/SM/SizdhcLMJqSh3ULCNcoy0O2Kpr4P8agbq9sw== X-Received: by 2002:a2e:94d5:: with SMTP id r21mr3067761ljh.81.1584649504899; Thu, 19 Mar 2020 13:25:04 -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.25.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2020 13:25:04 -0700 (PDT) From: rscheidegger.oss@gmail.com X-Google-Original-From: sroland@vmware.com To: dri-devel@lists.freedesktop.org Subject: [PATCH 14/17] drm/vmwgfx: Refactor surface_define to use vmw_surface_metadata Date: Thu, 19 Mar 2020 21:24:11 +0100 Message-Id: <20200319202414.9296-15-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" RnJvbTogRGVlcGFrIFJhd2F0IDxkcmF3YXQuZmxvc3NAZ21haWwuY29tPgoKTWFrZXMgc3VyZmFj ZV9kZWZpbmUgY2xlYW5lciBieSBzZW5kaW5nIHZtd19zdXJmYWNlX21ldGFkYXRhIGluc3RlYWQg b2YKYWxsIHRoZSBhcmd1bWVudHMgaW5kaXZpZHVhbGx5LgoKdjI6IGZpeCB1bmluaXRpYWxpemVk IHJldHVybiB2YWx1ZSwgZXJyb3IgbWVzc2FnZQoKU2lnbmVkLW9mZi1ieTogRGVlcGFrIFJhd2F0 IDxkcmF3YXQuZmxvc3NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQnJpYW4gUGF1bCA8YnJpYW5w QHZtd2FyZS5jb20+ClJldmlld2VkLWJ5OiBUaG9tYXMgSGVsbHN0csO2bSAoVk13YXJlKSA8dGhv bWFzX29zQHNoaXBtYWlsLm9yZz4KU2lnbmVkLW9mZi1ieTogUm9sYW5kIFNjaGVpZGVnZ2VyIChW TXdhcmUpIDxyc2NoZWlkZWdnZXIub3NzQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v dm13Z2Z4L3Ztd2dmeF9kcnYuaCAgICAgfCAgMTcgKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X2ttcy5jICAgICB8ICAyNyArLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf c3RkdS5jICAgIHwgIDUxICstLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N1cmZh Y2UuYyB8IDM3OCArKysrKysrKysrKystLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMjE1 IGluc2VydGlvbnMoKyksIDI1OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2Rydi5oCmluZGV4IGI2OWFkNGYzZGE3YS4uMjEyYjY2ZGEyZDRjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9kcnYuaApAQCAtMTMxOCwxOCArMTMxOCw2IEBAIGV4dGVybiBpbnQgdm13X3N1 cmZhY2VfY2hlY2soc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgdWludDMy X3QgaGFuZGxlLCBpbnQgKmlkKTsKIGV4dGVybiBpbnQgdm13X3N1cmZhY2VfdmFsaWRhdGUoc3Ry dWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAkJCQlzdHJ1Y3Qgdm13X3N1cmZhY2UgKnNyZik7 Ci1pbnQgdm13X3N1cmZhY2VfZ2JfcHJpdl9kZWZpbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK LQkJCSAgICAgICB1aW50MzJfdCB1c2VyX2FjY291bnRpbmdfc2l6ZSwKLQkJCSAgICAgICBTVkdB M2RTdXJmYWNlQWxsRmxhZ3Mgc3ZnYTNkX2ZsYWdzLAotCQkJICAgICAgIFNWR0EzZFN1cmZhY2VG b3JtYXQgZm9ybWF0LAotCQkJICAgICAgIGJvb2wgZm9yX3NjYW5vdXQsCi0JCQkgICAgICAgdWlu dDMyX3QgbnVtX21pcF9sZXZlbHMsCi0JCQkgICAgICAgdWludDMyX3QgbXVsdGlzYW1wbGVfY291 bnQsCi0JCQkgICAgICAgdWludDMyX3QgYXJyYXlfc2l6ZSwKLQkJCSAgICAgICBzdHJ1Y3QgZHJt X3Ztd19zaXplIHNpemUsCi0JCQkgICAgICAgU1ZHQTNkTVNQYXR0ZXJuIG11bHRpc2FtcGxlX3Bh dHRlcm4sCi0JCQkgICAgICAgU1ZHQTNkTVNRdWFsaXR5TGV2ZWwgcXVhbGl0eV9sZXZlbCwKLQkJ CSAgICAgICBzdHJ1Y3Qgdm13X3N1cmZhY2UgKipzcmZfb3V0KTsKIGV4dGVybiBpbnQgdm13X2di X3N1cmZhY2VfZGVmaW5lX2V4dF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkg ICB2b2lkICpkYXRhLAogCQkJCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CkBAIC0x MzM3LDYgKzEzMjUsMTEgQEAgZXh0ZXJuIGludCB2bXdfZ2Jfc3VyZmFjZV9yZWZlcmVuY2VfZXh0 X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSAgICAgIHZvaWQgKmRhdGEsCiAJ CQkJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIAoraW50IHZtd19nYl9zdXJm YWNlX2RlZmluZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICB1aW50MzJfdCB1 c2VyX2FjY291bnRpbmdfc2l6ZSwKKwkJCSAgY29uc3Qgc3RydWN0IHZtd19zdXJmYWNlX21ldGFk YXRhICpyZXEsCisJCQkgIHN0cnVjdCB2bXdfc3VyZmFjZSAqKnNyZl9vdXQpOworCiAvKgogICog U2hhZGVyIG1hbmFnZW1lbnQgLSB2bXdnZnhfc2hhZGVyLmMKICAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9rbXMuYwppbmRleCBhOWU0OWY4OTc0NzYuLjgxM2MyYWU3OTEzNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMKQEAgLTExNDQsOCArMTE0NCw4IEBAIHN0YXRpYyBpbnQg dm13X2NyZWF0ZV9ib19wcm94eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICAgICAgIHN0 cnVjdCB2bXdfYnVmZmVyX29iamVjdCAqYm9fbW9iLAogCQkJICAgICAgIHN0cnVjdCB2bXdfc3Vy ZmFjZSAqKnNyZl9vdXQpCiB7CisJc3RydWN0IHZtd19zdXJmYWNlX21ldGFkYXRhIG1ldGFkYXRh ID0gezB9OwogCXVpbnQzMl90IGZvcm1hdDsKLQlzdHJ1Y3QgZHJtX3Ztd19zaXplIGNvbnRlbnRf YmFzZV9zaXplID0gezB9OwogCXN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlczsKIAl1bnNpZ25lZCBp bnQgYnl0ZXNfcHA7CiAJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7CkBA IC0xMTc1LDIyICsxMTc1LDE1IEBAIHN0YXRpYyBpbnQgdm13X2NyZWF0ZV9ib19wcm94eShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQljb250ZW50X2Jh c2Vfc2l6ZS53aWR0aCAgPSBtb2RlX2NtZC0+cGl0Y2hlc1swXSAvIGJ5dGVzX3BwOwotCWNvbnRl bnRfYmFzZV9zaXplLmhlaWdodCA9IG1vZGVfY21kLT5oZWlnaHQ7Ci0JY29udGVudF9iYXNlX3Np emUuZGVwdGggID0gMTsKLQotCXJldCA9IHZtd19zdXJmYWNlX2diX3ByaXZfZGVmaW5lKGRldiwK LQkJCQkJIDAsIC8qIGtlcm5lbCB2aXNpYmxlIG9ubHkgKi8KLQkJCQkJIDAsIC8qIGZsYWdzICov Ci0JCQkJCSBmb3JtYXQsCi0JCQkJCSB0cnVlLCAvKiBjYW4gYmUgYSBzY2Fub3V0IGJ1ZmZlciAq LwotCQkJCQkgMSwgLyogbnVtIG9mIG1pcCBsZXZlbHMgKi8KLQkJCQkJIDAsCi0JCQkJCSAwLAot CQkJCQkgY29udGVudF9iYXNlX3NpemUsCi0JCQkJCSBTVkdBM0RfTVNfUEFUVEVSTl9OT05FLAot CQkJCQkgU1ZHQTNEX01TX1FVQUxJVFlfTk9ORSwKLQkJCQkJIHNyZl9vdXQpOworCW1ldGFkYXRh LmZvcm1hdCA9IGZvcm1hdDsKKwltZXRhZGF0YS5taXBfbGV2ZWxzWzBdID0gMTsKKwltZXRhZGF0 YS5udW1fc2l6ZXMgPSAxOworCW1ldGFkYXRhLmJhc2Vfc2l6ZS53aWR0aCA9IG1vZGVfY21kLT5w aXRjaGVzWzBdIC8gYnl0ZXNfcHA7CisJbWV0YWRhdGEuYmFzZV9zaXplLmhlaWdodCA9ICBtb2Rl X2NtZC0+aGVpZ2h0OworCW1ldGFkYXRhLmJhc2Vfc2l6ZS5kZXB0aCA9IDE7CisJbWV0YWRhdGEu c2Nhbm91dCA9IHRydWU7CisKKwlyZXQgPSB2bXdfZ2Jfc3VyZmFjZV9kZWZpbmUodm13X3ByaXYo ZGV2KSwgMCwgJm1ldGFkYXRhLCBzcmZfb3V0KTsKIAlpZiAocmV0KSB7CiAJCURSTV9FUlJPUigi RmFpbGVkIHRvIGFsbG9jYXRlIHByb3h5IGNvbnRlbnQgYnVmZmVyXG4iKTsKIAkJcmV0dXJuIHJl dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0ZHUuYyBiL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0ZHUuYwppbmRleCBmMzE1N2RlYTk2ZGMuLmQ5 YjBlYTFmYjczMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3Rk dS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0ZHUuYwpAQCAtMTAzOCw3 ICsxMDM4LDYgQEAgdm13X3N0ZHVfcHJpbWFyeV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAogCXN0cnVjdCB2bXdfcGxhbmVfc3RhdGUgKnZwcyA9IHZtd19wbGFuZV9z dGF0ZV90b192cHMobmV3X3N0YXRlKTsKIAllbnVtIHN0ZHVfY29udGVudF90eXBlIG5ld19jb250 ZW50X3R5cGU7CiAJc3RydWN0IHZtd19mcmFtZWJ1ZmZlcl9zdXJmYWNlICpuZXdfdmZiczsKLQlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBuZXdfc3RhdGUtPmNydGM7CiAJdWludDMyX3QgaGRpc3Bs YXkgPSBuZXdfc3RhdGUtPmNydGNfdywgdmRpc3BsYXkgPSBuZXdfc3RhdGUtPmNydGNfaDsKIAlp bnQgcmV0OwogCkBAIC0xMDY1LDEyICsxMDY0LDExIEBAIHZtd19zdGR1X3ByaW1hcnlfcGxhbmVf cHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJbmV3X2NvbnRlbnRfdHlwZSA9 IFNFUEFSQVRFX1NVUkZBQ0U7CiAKIAlpZiAobmV3X2NvbnRlbnRfdHlwZSAhPSBTQU1FX0FTX0RJ U1BMQVkpIHsKLQkJc3RydWN0IHZtd19zdXJmYWNlIGNvbnRlbnRfc3JmOwotCQlzdHJ1Y3QgZHJt X3Ztd19zaXplIGRpc3BsYXlfYmFzZV9zaXplID0gezB9OworCQlzdHJ1Y3Qgdm13X3N1cmZhY2Vf bWV0YWRhdGEgbWV0YWRhdGEgPSB7MH07CiAKLQkJZGlzcGxheV9iYXNlX3NpemUud2lkdGggID0g aGRpc3BsYXk7Ci0JCWRpc3BsYXlfYmFzZV9zaXplLmhlaWdodCA9IHZkaXNwbGF5OwotCQlkaXNw bGF5X2Jhc2Vfc2l6ZS5kZXB0aCAgPSAxOworCQltZXRhZGF0YS5iYXNlX3NpemUud2lkdGggPSBo ZGlzcGxheTsKKwkJbWV0YWRhdGEuYmFzZV9zaXplLmhlaWdodCA9IHZkaXNwbGF5OworCQltZXRh ZGF0YS5iYXNlX3NpemUuZGVwdGggPSAxOwogCiAJCS8qCiAJCSAqIElmIGNvbnRlbnQgYnVmZmVy IGlzIGEgYnVmZmVyIG9iamVjdCwgdGhlbiB3ZSBoYXZlIHRvCkBAIC0xMDgwLDE1ICsxMDc4LDE1 IEBAIHZtd19zdGR1X3ByaW1hcnlfcGxhbmVfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKIAogCQkJc3dpdGNoIChuZXdfZmItPmZvcm1hdC0+Y3BwWzBdKjgpIHsKIAkJCWNhc2Ug MzI6Ci0JCQkJY29udGVudF9zcmYubWV0YWRhdGEuZm9ybWF0ID0gU1ZHQTNEX1g4UjhHOEI4Owor CQkJCW1ldGFkYXRhLmZvcm1hdCA9IFNWR0EzRF9YOFI4RzhCODsKIAkJCQlicmVhazsKIAogCQkJ Y2FzZSAxNjoKLQkJCQljb250ZW50X3NyZi5tZXRhZGF0YS5mb3JtYXQgPSBTVkdBM0RfUjVHNkI1 OworCQkJCW1ldGFkYXRhLmZvcm1hdCA9IFNWR0EzRF9SNUc2QjU7CiAJCQkJYnJlYWs7CiAKIAkJ CWNhc2UgODoKLQkJCQljb250ZW50X3NyZi5tZXRhZGF0YS5mb3JtYXQgPSBTVkdBM0RfUDg7CisJ CQkJbWV0YWRhdGEuZm9ybWF0ID0gU1ZHQTNEX1A4OwogCQkJCWJyZWFrOwogCiAJCQlkZWZhdWx0 OgpAQCAtMTA5NiwyNSArMTA5NCwyMCBAQCB2bXdfc3RkdV9wcmltYXJ5X3BsYW5lX3ByZXBhcmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9CiAK LQkJCWNvbnRlbnRfc3JmLm1ldGFkYXRhLmZsYWdzID0gMDsKLQkJCWNvbnRlbnRfc3JmLm1ldGFk YXRhLm1pcF9sZXZlbHNbMF0gPSAxOwotCQkJY29udGVudF9zcmYubWV0YWRhdGEubXVsdGlzYW1w bGVfY291bnQgPSAwOwotCQkJY29udGVudF9zcmYubWV0YWRhdGEubXVsdGlzYW1wbGVfcGF0dGVy biA9Ci0JCQkJU1ZHQTNEX01TX1BBVFRFUk5fTk9ORTsKLQkJCWNvbnRlbnRfc3JmLm1ldGFkYXRh LnF1YWxpdHlfbGV2ZWwgPQotCQkJCVNWR0EzRF9NU19RVUFMSVRZX05PTkU7CisJCQltZXRhZGF0 YS5taXBfbGV2ZWxzWzBdID0gMTsKKwkJCW1ldGFkYXRhLm51bV9zaXplcyA9IDE7CisJCQltZXRh ZGF0YS5zY2Fub3V0ID0gdHJ1ZTsKIAkJfSBlbHNlIHsKLQkJCWNvbnRlbnRfc3JmID0gKm5ld192 ZmJzLT5zdXJmYWNlOworCQkJbWV0YWRhdGEgPSBuZXdfdmZicy0+c3VyZmFjZS0+bWV0YWRhdGE7 CiAJCX0KIAogCQlpZiAodnBzLT5zdXJmKSB7CiAJCQlzdHJ1Y3QgZHJtX3Ztd19zaXplIGN1cl9i YXNlX3NpemUgPQogCQkJCXZwcy0+c3VyZi0+bWV0YWRhdGEuYmFzZV9zaXplOwogCi0JCQlpZiAo Y3VyX2Jhc2Vfc2l6ZS53aWR0aCAhPSBkaXNwbGF5X2Jhc2Vfc2l6ZS53aWR0aCB8fAotCQkJICAg IGN1cl9iYXNlX3NpemUuaGVpZ2h0ICE9IGRpc3BsYXlfYmFzZV9zaXplLmhlaWdodCB8fAotCQkJ ICAgIHZwcy0+c3VyZi0+bWV0YWRhdGEuZm9ybWF0ICE9Ci0JCQkgICAgY29udGVudF9zcmYubWV0 YWRhdGEuZm9ybWF0KSB7CisJCQlpZiAoY3VyX2Jhc2Vfc2l6ZS53aWR0aCAhPSBtZXRhZGF0YS5i YXNlX3NpemUud2lkdGggfHwKKwkJCSAgICBjdXJfYmFzZV9zaXplLmhlaWdodCAhPSBtZXRhZGF0 YS5iYXNlX3NpemUuaGVpZ2h0IHx8CisJCQkgICAgdnBzLT5zdXJmLT5tZXRhZGF0YS5mb3JtYXQg IT0gbWV0YWRhdGEuZm9ybWF0KSB7CiAJCQkJV0FSTl9PTih2cHMtPnBpbm5lZCAhPSAwKTsKIAkJ CQl2bXdfc3VyZmFjZV91bnJlZmVyZW5jZSgmdnBzLT5zdXJmKTsKIAkJCX0KQEAgLTExMjIsMjAg KzExMTUsOCBAQCB2bXdfc3RkdV9wcmltYXJ5X3BsYW5lX3ByZXBhcmVfZmIoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJCX0KIAogCQlpZiAoIXZwcy0+c3VyZikgewotCQkJcmV0ID0gdm13X3N1 cmZhY2VfZ2JfcHJpdl9kZWZpbmUKLQkJCQkoY3J0Yy0+ZGV2LAotCQkJCSAvKiBLZXJuZWwgdmlz aWJsZSBvbmx5ICovCi0JCQkJIDAsCi0JCQkJIGNvbnRlbnRfc3JmLm1ldGFkYXRhLmZsYWdzLAot CQkJCSBjb250ZW50X3NyZi5tZXRhZGF0YS5mb3JtYXQsCi0JCQkJIHRydWUsICAvKiBhIHNjYW5v dXQgYnVmZmVyICovCi0JCQkJIGNvbnRlbnRfc3JmLm1ldGFkYXRhLm1pcF9sZXZlbHNbMF0sCi0J CQkJIGNvbnRlbnRfc3JmLm1ldGFkYXRhLm11bHRpc2FtcGxlX2NvdW50LAotCQkJCSAwLAotCQkJ CSBkaXNwbGF5X2Jhc2Vfc2l6ZSwKLQkJCQkgY29udGVudF9zcmYubWV0YWRhdGEubXVsdGlzYW1w bGVfcGF0dGVybiwKLQkJCQkgY29udGVudF9zcmYubWV0YWRhdGEucXVhbGl0eV9sZXZlbCwKLQkJ CQkgJnZwcy0+c3VyZik7CisJCQlyZXQgPSB2bXdfZ2Jfc3VyZmFjZV9kZWZpbmUoZGV2X3ByaXYs IDAsICZtZXRhZGF0YSwKKwkJCQkJCSAgICAmdnBzLT5zdXJmKTsKIAkJCWlmIChyZXQgIT0gMCkg ewogCQkJCURSTV9FUlJPUigiQ291bGRuJ3QgYWxsb2NhdGUgU1REVSBzdXJmYWNlLlxuIik7CiAJ CQkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X3N1cmZhY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N1cmZhY2UuYwppbmRl eCBlYmYxMmY5Yjg3Y2EuLjBlNzFhM2VhMjgxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfc3VyZmFjZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X3N1cmZhY2UuYwpAQCAtMTMyMCw3ICsxMzIwLDYgQEAgc3RhdGljIGludCB2bXdfZ2Jfc3Vy ZmFjZV9kZXN0cm95KHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcykKIAlyZXR1cm4gMDsKIH0KIAot CiAvKioKICAqIHZtd19nYl9zdXJmYWNlX2RlZmluZV9pb2N0bCAtIElvY3RsIGZ1bmN0aW9uIGlt cGxlbWVudGluZwogICogdGhlIHVzZXIgc3VyZmFjZSBkZWZpbmUgZnVuY3Rpb25hbGl0eS4KQEAg LTEzNzYsMTczICsxMzc1LDYgQEAgaW50IHZtd19nYl9zdXJmYWNlX3JlZmVyZW5jZV9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiByZXQ7CiB9CiAKLS8q KgotICogdm13X3N1cmZhY2VfZ2JfcHJpdl9kZWZpbmUgLSBEZWZpbmUgYSBwcml2YXRlIEdCIHN1 cmZhY2UKLSAqCi0gKiBAZGV2OiAgUG9pbnRlciB0byBhIHN0cnVjdCBkcm1fZGV2aWNlCi0gKiBA dXNlcl9hY2NvdW50aW5nX3NpemU6ICBVc2VkIHRvIHRyYWNrIHVzZXItc3BhY2UgbWVtb3J5IHVz YWdlLCBzZXQKLSAqICAgICAgICAgICAgICAgICAgICAgICAgIHRvIDAgZm9yIGtlcm5lbCBtb2Rl IG9ubHkgbWVtb3J5Ci0gKiBAc3ZnYTNkX2ZsYWdzOiBTVkdBM2Qgc3VyZmFjZSBmbGFncyBmb3Ig dGhlIGRldmljZQotICogQGZvcm1hdDogcmVxdWVzdGVkIHN1cmZhY2UgZm9ybWF0Ci0gKiBAZm9y X3NjYW5vdXQ6IHRydWUgaWYgaW50ZWRlZCB0byBiZSB1c2VkIGZvciBzY2Fub3V0IGJ1ZmZlcgot ICogQG51bV9taXBfbGV2ZWxzOiAgbnVtYmVyIG9mIE1JUCBsZXZlbHMKLSAqIEBtdWx0aXNhbXBs ZV9jb3VudDoKLSAqIEBhcnJheV9zaXplOiBTdXJmYWNlIGFycmF5IHNpemUuCi0gKiBAc2l6ZTog d2lkdGgsIGhlaWdoLCBkZXB0aCBvZiB0aGUgc3VyZmFjZSByZXF1ZXN0ZWQKLSAqIEBtdWx0aXNh bXBsZV9wYXR0ZXJuOiBNdWx0aXNhbXBsaW5nIHBhdHRlcm4gd2hlbiBtc2FhIGlzIHN1cHBvcnRl ZAotICogQHF1YWxpdHlfbGV2ZWw6IFByZWNpc2lvbiBzZXR0aW5ncwotICogQHVzZXJfc3JmX291 dDogYWxsb2NhdGVkIHVzZXJfc3JmLiAgU2V0IHRvIE5VTEwgb24gZmFpbHVyZS4KLSAqCi0gKiBH QiBzdXJmYWNlcyBhbGxvY2F0ZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBoYXZlIGEgdXNl ciBtb2RlIGhhbmRsZSwgYW5kCi0gKiB0aHVzIHdpbGwgb25seSBiZSB2aXNpYmxlIHRvIHZtd2dm eC4gIEZvciBvcHRpbWl6YXRpb24gcmVhc29ucyB0aGUKLSAqIHN1cmZhY2UgbWF5IGxhdGVyIGJl IGdpdmVuIGEgdXNlciBtb2RlIGhhbmRsZSBieSBhbm90aGVyIGZ1bmN0aW9uIHRvIG1ha2UKLSAq IGl0IGF2YWlsYWJsZSB0byB1c2VyIG1vZGUgZHJpdmVycy4KLSAqLwotaW50IHZtd19zdXJmYWNl X2diX3ByaXZfZGVmaW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkgICAgICAgdWludDMy X3QgdXNlcl9hY2NvdW50aW5nX3NpemUsCi0JCQkgICAgICAgU1ZHQTNkU3VyZmFjZUFsbEZsYWdz IHN2Z2EzZF9mbGFncywKLQkJCSAgICAgICBTVkdBM2RTdXJmYWNlRm9ybWF0IGZvcm1hdCwKLQkJ CSAgICAgICBib29sIGZvcl9zY2Fub3V0LAotCQkJICAgICAgIHVpbnQzMl90IG51bV9taXBfbGV2 ZWxzLAotCQkJICAgICAgIHVpbnQzMl90IG11bHRpc2FtcGxlX2NvdW50LAotCQkJICAgICAgIHVp bnQzMl90IGFycmF5X3NpemUsCi0JCQkgICAgICAgc3RydWN0IGRybV92bXdfc2l6ZSBzaXplLAot CQkJICAgICAgIFNWR0EzZE1TUGF0dGVybiBtdWx0aXNhbXBsZV9wYXR0ZXJuLAotCQkJICAgICAg IFNWR0EzZE1TUXVhbGl0eUxldmVsIHF1YWxpdHlfbGV2ZWwsCi0JCQkgICAgICAgc3RydWN0IHZt d19zdXJmYWNlICoqc3JmX291dCkKLXsKLQlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0g dm13X3ByaXYoZGV2KTsKLQlzdHJ1Y3Qgdm13X3VzZXJfc3VyZmFjZSAqdXNlcl9zcmY7Ci0Jc3Ry dWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsKLQkJLmludGVycnVwdGlibGUgPSB0cnVlLAot CQkubm9fd2FpdF9ncHUgPSBmYWxzZQotCX07Ci0Jc3RydWN0IHZtd19zdXJmYWNlICpzcmY7Ci0J c3RydWN0IHZtd19zdXJmYWNlX21ldGFkYXRhICptZXRhZGF0YTsKLQlpbnQgcmV0OwotCXUzMiBu dW1fbGF5ZXJzID0gMTsKLQl1MzIgc2FtcGxlX2NvdW50ID0gMTsKLQotCSpzcmZfb3V0ID0gTlVM TDsKLQotCWlmIChmb3Jfc2Nhbm91dCkgewotCQlpZiAoIXN2Z2EzZHN1cmZhY2VfaXNfc2NyZWVu X3RhcmdldF9mb3JtYXQoZm9ybWF0KSkgewotCQkJVk1XX0RFQlVHX1VTRVIoIkludmFsaWQgU2Ny ZWVuIFRhcmdldCBzdXJmYWNlIGZvcm1hdC4iKTsKLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0K LQkJaWYgKHNpemUud2lkdGggPiBkZXZfcHJpdi0+dGV4dHVyZV9tYXhfd2lkdGggfHwKLQkJICAg IHNpemUuaGVpZ2h0ID4gZGV2X3ByaXYtPnRleHR1cmVfbWF4X2hlaWdodCkgewotCQkJVk1XX0RF QlVHX1VTRVIoIiV1eCV1XG4sIGV4Y2VlZHMgbWF4IHN1cmZhY2Ugc2l6ZSAldXgldSIsCi0JCQkJ ICAgICAgIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LAotCQkJCSAgICAgICBkZXZfcHJpdi0+dGV4 dHVyZV9tYXhfd2lkdGgsCi0JCQkJICAgICAgIGRldl9wcml2LT50ZXh0dXJlX21heF9oZWlnaHQp OwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQl9IGVsc2UgewotCQljb25zdCBzdHJ1Y3Qgc3Zn YTNkX3N1cmZhY2VfZGVzYyAqZGVzYzsKLQotCQlkZXNjID0gc3ZnYTNkc3VyZmFjZV9nZXRfZGVz Yyhmb3JtYXQpOwotCQlpZiAodW5saWtlbHkoZGVzYy0+YmxvY2tfZGVzYyA9PSBTVkdBM0RCTE9D S0RFU0NfTk9ORSkpIHsKLQkJCVZNV19ERUJVR19VU0VSKCJJbnZhbGlkIHN1cmZhY2UgZm9ybWF0 LlxuIik7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCX0KLQotCS8qIGFycmF5X3NpemUgbXVz dCBiZSBudWxsIGZvciBub24tR0wzIGhvc3QuICovCi0JaWYgKGFycmF5X3NpemUgPiAwICYmICFo YXNfc200X2NvbnRleHQoZGV2X3ByaXYpKSB7Ci0JCVZNV19ERUJVR19VU0VSKCJUcmllZCB0byBj cmVhdGUgRFggc3VyZmFjZSBvbiBub24tRFggaG9zdC5cbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsK LQl9Ci0KLQlyZXQgPSB0dG1fcmVhZF9sb2NrKCZkZXZfcHJpdi0+cmVzZXJ2YXRpb25fc2VtLCB0 cnVlKTsKLQlpZiAodW5saWtlbHkocmV0ICE9IDApKQotCQlyZXR1cm4gcmV0OwotCi0JcmV0ID0g dHRtX21lbV9nbG9iYWxfYWxsb2Modm13X21lbV9nbG9iKGRldl9wcml2KSwKLQkJCQkgICB1c2Vy X2FjY291bnRpbmdfc2l6ZSwgJmN0eCk7Ci0JaWYgKHVubGlrZWx5KHJldCAhPSAwKSkgewotCQlp ZiAocmV0ICE9IC1FUkVTVEFSVFNZUykKLQkJCURSTV9FUlJPUigiT3V0IG9mIGdyYXBoaWNzIG1l bW9yeSBmb3Igc3VyZmFjZSIKLQkJCQkgICIgY3JlYXRpb24uXG4iKTsKLQkJZ290byBvdXRfdW5s b2NrOwotCX0KLQotCXVzZXJfc3JmID0ga3phbGxvYyhzaXplb2YoKnVzZXJfc3JmKSwgR0ZQX0tF Uk5FTCk7Ci0JaWYgKHVubGlrZWx5KCF1c2VyX3NyZikpIHsKLQkJcmV0ID0gLUVOT01FTTsKLQkJ Z290byBvdXRfbm9fdXNlcl9zcmY7Ci0JfQotCi0JKnNyZl9vdXQgID0gJnVzZXJfc3JmLT5zcmY7 Ci0JdXNlcl9zcmYtPnNpemUgPSB1c2VyX2FjY291bnRpbmdfc2l6ZTsKLQl1c2VyX3NyZi0+cHJp bWUuYmFzZS5zaGFyZWFibGUgPSBmYWxzZTsKLQl1c2VyX3NyZi0+cHJpbWUuYmFzZS50ZmlsZSAg ICAgPSBOVUxMOwotCi0Jc3JmID0gJnVzZXJfc3JmLT5zcmY7Ci0JbWV0YWRhdGEgPSAmc3JmLT5t ZXRhZGF0YTsKLQltZXRhZGF0YS0+ZmxhZ3MgPSBzdmdhM2RfZmxhZ3M7Ci0JbWV0YWRhdGEtPmZv cm1hdCA9IGZvcm1hdDsKLQltZXRhZGF0YS0+c2Nhbm91dCA9IGZvcl9zY2Fub3V0OwotCW1ldGFk YXRhLT5taXBfbGV2ZWxzWzBdID0gbnVtX21pcF9sZXZlbHM7Ci0JbWV0YWRhdGEtPm51bV9zaXpl cyA9IDE7Ci0JbWV0YWRhdGEtPnNpemVzID0gTlVMTDsKLQlzcmYtPm9mZnNldHMgPSBOVUxMOwot CW1ldGFkYXRhLT5iYXNlX3NpemUgPSBzaXplOwotCW1ldGFkYXRhLT5hdXRvZ2VuX2ZpbHRlciA9 IFNWR0EzRF9URVhfRklMVEVSX05PTkU7Ci0JbWV0YWRhdGEtPmFycmF5X3NpemUgPSBhcnJheV9z aXplOwotCW1ldGFkYXRhLT5tdWx0aXNhbXBsZV9jb3VudCA9IG11bHRpc2FtcGxlX2NvdW50Owot CW1ldGFkYXRhLT5tdWx0aXNhbXBsZV9wYXR0ZXJuID0gbXVsdGlzYW1wbGVfcGF0dGVybjsKLQlt ZXRhZGF0YS0+cXVhbGl0eV9sZXZlbCA9IHF1YWxpdHlfbGV2ZWw7Ci0KLQlpZiAoYXJyYXlfc2l6 ZSkKLQkJbnVtX2xheWVycyA9IGFycmF5X3NpemU7Ci0JZWxzZSBpZiAoc3ZnYTNkX2ZsYWdzICYg U1ZHQTNEX1NVUkZBQ0VfQ1VCRU1BUCkKLQkJbnVtX2xheWVycyA9IFNWR0EzRF9NQVhfU1VSRkFD RV9GQUNFUzsKLQotCWlmIChtZXRhZGF0YS0+ZmxhZ3MgJiBTVkdBM0RfU1VSRkFDRV9NVUxUSVNB TVBMRSkKLQkJc2FtcGxlX2NvdW50ID0gbWV0YWRhdGEtPm11bHRpc2FtcGxlX2NvdW50OwotCi0J c3JmLT5yZXMuYmFja3VwX3NpemUgPQotCQlzdmdhM2RzdXJmYWNlX2dldF9zZXJpYWxpemVkX3Np emVfZXh0ZW5kZWQobWV0YWRhdGEtPmZvcm1hdCwKLQkJCQkJCQkgICBtZXRhZGF0YS0+YmFzZV9z aXplLAotCQkJCQkJCSAgIG1ldGFkYXRhLT5taXBfbGV2ZWxzWzBdLAotCQkJCQkJCSAgIG51bV9s YXllcnMsCi0JCQkJCQkJICAgc2FtcGxlX2NvdW50KTsKLQotCWlmIChtZXRhZGF0YS0+ZmxhZ3Mg JiBTVkdBM0RfU1VSRkFDRV9CSU5EX1NUUkVBTV9PVVRQVVQpCi0JCXNyZi0+cmVzLmJhY2t1cF9z aXplICs9IHNpemVvZihTVkdBM2REWFNPU3RhdGUpOwotCi0JLyoKLQkgKiBEb24ndCBzZXQgU1ZH QTNEX1NVUkZBQ0VfU0NSRUVOVEFSR0VUIGZsYWcgZm9yIGEgc2Nhbm91dCBzdXJmYWNlIHdpdGgK LQkgKiBzaXplIGdyZWF0ZXIgdGhhbiBTVERVIG1heCB3aWR0aC9oZWlnaHQuIFRoaXMgaXMgcmVh bGx5IGEgd29ya2Fyb3VuZAotCSAqIHRvIHN1cHBvcnQgY3JlYXRpb24gb2YgYmlnIGZyYW1lYnVm ZmVyIHJlcXVlc3RlZCBieSBzb21lIHVzZXItc3BhY2UKLQkgKiBmb3Igd2hvbGUgdG9wb2xvZ3ku IFRoYXQgYmlnIGZyYW1lYnVmZmVyIHdvbid0IHJlYWxseSBiZSB1c2VkIGZvcgotCSAqIGJpbmRp bmcgd2l0aCBzY3JlZW4gdGFyZ2V0IGFzIGR1cmluZyBwcmVwYXJlX2ZiIGEgc2VwYXJhdGUgc3Vy ZmFjZSBpcwotCSAqIGNyZWF0ZWQgc28gaXQncyBzYWZlIHRvIGlnbm9yZSBTVkdBM0RfU1VSRkFD RV9TQ1JFRU5UQVJHRVQgZmxhZy4KLQkgKi8KLQlpZiAoZGV2X3ByaXYtPmFjdGl2ZV9kaXNwbGF5 X3VuaXQgPT0gdm13X2R1X3NjcmVlbl90YXJnZXQgJiYKLQkgICAgZm9yX3NjYW5vdXQgJiYgc2l6 ZS53aWR0aCA8PSBkZXZfcHJpdi0+c3RkdV9tYXhfd2lkdGggJiYKLQkgICAgc2l6ZS5oZWlnaHQg PD0gZGV2X3ByaXYtPnN0ZHVfbWF4X2hlaWdodCkKLQkJbWV0YWRhdGEtPmZsYWdzIHw9IFNWR0Ez RF9TVVJGQUNFX1NDUkVFTlRBUkdFVDsKLQotCS8qCi0JICogRnJvbSB0aGlzIHBvaW50LCB0aGUg Z2VuZXJpYyByZXNvdXJjZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucwotCSAqIGRlc3Ryb3kgdGhlIG9i amVjdCBvbiBmYWlsdXJlLgotCSAqLwotCXJldCA9IHZtd19zdXJmYWNlX2luaXQoZGV2X3ByaXYs IHNyZiwgdm13X3VzZXJfc3VyZmFjZV9mcmVlKTsKLQotCXR0bV9yZWFkX3VubG9jaygmZGV2X3By aXYtPnJlc2VydmF0aW9uX3NlbSk7Ci0JcmV0dXJuIHJldDsKLQotb3V0X25vX3VzZXJfc3JmOgot CXR0bV9tZW1fZ2xvYmFsX2ZyZWUodm13X21lbV9nbG9iKGRldl9wcml2KSwgdXNlcl9hY2NvdW50 aW5nX3NpemUpOwotCi1vdXRfdW5sb2NrOgotCXR0bV9yZWFkX3VubG9jaygmZGV2X3ByaXYtPnJl c2VydmF0aW9uX3NlbSk7Ci0JcmV0dXJuIHJldDsKLX0KLQogLyoqCiAgKiB2bXdfZ2Jfc3VyZmFj ZV9kZWZpbmVfZXh0X2lvY3RsIC0gSW9jdGwgZnVuY3Rpb24gaW1wbGVtZW50aW5nCiAgKiB0aGUg dXNlciBzdXJmYWNlIGRlZmluZSBmdW5jdGlvbmFsaXR5LgpAQCAtMTU5Niw0MyArMTQyOCw1NSBA QCB2bXdfZ2Jfc3VyZmFjZV9kZWZpbmVfaW50ZXJuYWwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAkJCSAgICAgICBzdHJ1Y3QgZHJtX3Ztd19nYl9zdXJmYWNlX2NyZWF0ZV9yZXAgKnJlcCwKIAkJ CSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKIHsKKwlzdHJ1Y3QgdHRtX29iamVj dF9maWxlICp0ZmlsZSA9IHZtd19mcHJpdihmaWxlX3ByaXYpLT50ZmlsZTsKIAlzdHJ1Y3Qgdm13 X3ByaXZhdGUgKmRldl9wcml2ID0gdm13X3ByaXYoZGV2KTsKIAlzdHJ1Y3Qgdm13X3VzZXJfc3Vy ZmFjZSAqdXNlcl9zcmY7CisJc3RydWN0IHZtd19zdXJmYWNlX21ldGFkYXRhIG1ldGFkYXRhID0g ezB9OwogCXN0cnVjdCB2bXdfc3VyZmFjZSAqc3JmOwogCXN0cnVjdCB2bXdfcmVzb3VyY2UgKnJl czsKIAlzdHJ1Y3Qgdm13X3Jlc291cmNlICp0bXA7Ci0Jc3RydWN0IHR0bV9vYmplY3RfZmlsZSAq dGZpbGUgPSB2bXdfZnByaXYoZmlsZV9wcml2KS0+dGZpbGU7Ci0JaW50IHJldDsKKwlpbnQgcmV0 ID0gMDsKIAl1aW50MzJfdCBzaXplOwogCXVpbnQzMl90IGJhY2t1cF9oYW5kbGUgPSAwOwogCVNW R0EzZFN1cmZhY2VBbGxGbGFncyBzdmdhM2RfZmxhZ3NfNjQgPQogCQlTVkdBM0RfRkxBR1NfNjQo cmVxLT5zdmdhM2RfZmxhZ3NfdXBwZXJfMzJfYml0cywKIAkJCQlyZXEtPmJhc2Uuc3ZnYTNkX2Zs YWdzKTsKIAorCS8qIGFycmF5X3NpemUgbXVzdCBiZSBudWxsIGZvciBub24tR0wzIGhvc3QuICov CisJaWYgKHJlcS0+YmFzZS5hcnJheV9zaXplID4gMCAmJiAhaGFzX3NtNF9jb250ZXh0KGRldl9w cml2KSkgeworCQlWTVdfREVCVUdfVVNFUigiU000IHN1cmZhY2Ugbm90IHN1cHBvcnRlZC5cbiIp OworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKIAlpZiAoIWhhc19zbTRfMV9jb250ZXh0KGRldl9w cml2KSkgewotCQkvKgotCQkgKiBJZiBTTTRfMSBpcyBub3Qgc3VwcG9ydCB0aGVuIGNhbm5vdCBz ZW5kIDY0LWJpdCBmbGFnIHRvCi0JCSAqIGRldmljZS4KLQkJICovCiAJCWlmIChyZXEtPnN2Z2Ez ZF9mbGFnc191cHBlcl8zMl9iaXRzICE9IDApCi0JCQlyZXR1cm4gLUVJTlZBTDsKKwkJCXJldCA9 IC1FSU5WQUw7CiAKIAkJaWYgKHJlcS0+YmFzZS5tdWx0aXNhbXBsZV9jb3VudCAhPSAwKQotCQkJ cmV0dXJuIC1FSU5WQUw7CisJCQlyZXQgPSAtRUlOVkFMOwogCiAJCWlmIChyZXEtPm11bHRpc2Ft cGxlX3BhdHRlcm4gIT0gU1ZHQTNEX01TX1BBVFRFUk5fTk9ORSkKLQkJCXJldHVybiAtRUlOVkFM OworCQkJcmV0ID0gLUVJTlZBTDsKIAogCQlpZiAocmVxLT5xdWFsaXR5X2xldmVsICE9IFNWR0Ez RF9NU19RVUFMSVRZX05PTkUpCi0JCQlyZXR1cm4gLUVJTlZBTDsKKwkJCXJldCA9IC1FSU5WQUw7 CisKKwkJaWYgKHJldCkgeworCQkJVk1XX0RFQlVHX1VTRVIoIlNNNC4xIHN1cmZhY2Ugbm90IHN1 cHBvcnRlZC5cbiIpOworCQkJcmV0dXJuIHJldDsKKwkJfQogCX0KIAogCWlmICgoc3ZnYTNkX2Zs YWdzXzY0ICYgU1ZHQTNEX1NVUkZBQ0VfTVVMVElTQU1QTEUpICYmCi0JICAgIHJlcS0+YmFzZS5t dWx0aXNhbXBsZV9jb3VudCA9PSAwKQorCSAgICByZXEtPmJhc2UubXVsdGlzYW1wbGVfY291bnQg PT0gMCkgeworCQlWTVdfREVCVUdfVVNFUigiSW52YWxpZCBzYW1wbGUgY291bnQuXG4iKTsKIAkJ cmV0dXJuIC1FSU5WQUw7CisJfQogCi0JaWYgKHJlcS0+YmFzZS5taXBfbGV2ZWxzID4gRFJNX1ZN V19NQVhfTUlQX0xFVkVMUykKKwlpZiAocmVxLT5iYXNlLm1pcF9sZXZlbHMgPiBEUk1fVk1XX01B WF9NSVBfTEVWRUxTKSB7CisJCVZNV19ERUJVR19VU0VSKCJJbnZhbGlkIG1pcCBsZXZlbC5cbiIp OwogCQlyZXR1cm4gLUVJTlZBTDsKKwl9CiAKIAlpZiAodW5saWtlbHkodm13X3VzZXJfc3VyZmFj ZV9zaXplID09IDApKQogCQl2bXdfdXNlcl9zdXJmYWNlX3NpemUgPSB0dG1fcm91bmRfcG90KHNp emVvZigqdXNlcl9zcmYpKSArCkBAIC0xNjQwLDIyICsxNDg0LDI0IEBAIHZtd19nYl9zdXJmYWNl X2RlZmluZV9pbnRlcm5hbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJc2l6ZSA9IHZtd191 c2VyX3N1cmZhY2Vfc2l6ZTsKIAorCW1ldGFkYXRhLmZsYWdzID0gc3ZnYTNkX2ZsYWdzXzY0Owor CW1ldGFkYXRhLmZvcm1hdCA9IHJlcS0+YmFzZS5mb3JtYXQ7CisJbWV0YWRhdGEubWlwX2xldmVs c1swXSA9IHJlcS0+YmFzZS5taXBfbGV2ZWxzOworCW1ldGFkYXRhLm11bHRpc2FtcGxlX2NvdW50 ID0gcmVxLT5iYXNlLm11bHRpc2FtcGxlX2NvdW50OworCW1ldGFkYXRhLm11bHRpc2FtcGxlX3Bh dHRlcm4gPSByZXEtPm11bHRpc2FtcGxlX3BhdHRlcm47CisJbWV0YWRhdGEucXVhbGl0eV9sZXZl bCA9IHJlcS0+cXVhbGl0eV9sZXZlbDsKKwltZXRhZGF0YS5hcnJheV9zaXplID0gcmVxLT5iYXNl LmFycmF5X3NpemU7CisJbWV0YWRhdGEubnVtX3NpemVzID0gMTsKKwltZXRhZGF0YS5iYXNlX3Np emUgPSByZXEtPmJhc2UuYmFzZV9zaXplOworCW1ldGFkYXRhLnNjYW5vdXQgPSByZXEtPmJhc2Uu ZHJtX3N1cmZhY2VfZmxhZ3MgJgorCQlkcm1fdm13X3N1cmZhY2VfZmxhZ19zY2Fub3V0OworCiAJ LyogRGVmaW5lIGEgc3VyZmFjZSBiYXNlZCBvbiB0aGUgcGFyYW1ldGVycy4gKi8KLQlyZXQgPSB2 bXdfc3VyZmFjZV9nYl9wcml2X2RlZmluZShkZXYsCi0JCQkJCSBzaXplLAotCQkJCQkgc3ZnYTNk X2ZsYWdzXzY0LAotCQkJCQkgcmVxLT5iYXNlLmZvcm1hdCwKLQkJCQkJIHJlcS0+YmFzZS5kcm1f c3VyZmFjZV9mbGFncyAmCi0JCQkJCSBkcm1fdm13X3N1cmZhY2VfZmxhZ19zY2Fub3V0LAotCQkJ CQkgcmVxLT5iYXNlLm1pcF9sZXZlbHMsCi0JCQkJCSByZXEtPmJhc2UubXVsdGlzYW1wbGVfY291 bnQsCi0JCQkJCSByZXEtPmJhc2UuYXJyYXlfc2l6ZSwKLQkJCQkJIHJlcS0+YmFzZS5iYXNlX3Np emUsCi0JCQkJCSByZXEtPm11bHRpc2FtcGxlX3BhdHRlcm4sCi0JCQkJCSByZXEtPnF1YWxpdHlf bGV2ZWwsCi0JCQkJCSAmc3JmKTsKLQlpZiAodW5saWtlbHkocmV0ICE9IDApKQorCXJldCA9IHZt d19nYl9zdXJmYWNlX2RlZmluZShkZXZfcHJpdiwgc2l6ZSwgJm1ldGFkYXRhLCAmc3JmKTsKKwlp ZiAocmV0ICE9IDApIHsKKwkJVk1XX0RFQlVHX1VTRVIoIkZhaWxlZCB0byBkZWZpbmUgc3VyZmFj ZS5cbiIpOwogCQlyZXR1cm4gcmV0OworCX0KIAogCXVzZXJfc3JmID0gY29udGFpbmVyX29mKHNy Ziwgc3RydWN0IHZtd191c2VyX3N1cmZhY2UsIHNyZik7CiAJaWYgKGRybV9pc19wcmltYXJ5X2Ns aWVudChmaWxlX3ByaXYpKQpAQCAtMjE2NSwzICsyMDExLDE0NyBAQCBzdGF0aWMgaW50IHZtd19z dXJmYWNlX2NsZWFuKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcykKIAogCXJldHVybiAwOwogfQor CisvKgorICogdm13X2diX3N1cmZhY2VfZGVmaW5lIC0gRGVmaW5lIGEgcHJpdmF0ZSBHQiBzdXJm YWNlCisgKgorICogQGRldl9wcml2OiBQb2ludGVyIHRvIGEgZGV2aWNlIHByaXZhdGUuCisgKiBA dXNlcl9hY2NvdW50aW5nX3NpemU6ICBVc2VkIHRvIHRyYWNrIHVzZXItc3BhY2UgbWVtb3J5IHVz YWdlLCBzZXQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIHRvIDAgZm9yIGtlcm5lbCBtb2Rl IG9ubHkgbWVtb3J5CisgKiBAbWV0YWRhdGE6IE1ldGFkYXRhIHJlcHJlc2VudGluZyB0aGUgc3Vy ZmFjZSB0byBjcmVhdGUuCisgKiBAdXNlcl9zcmZfb3V0OiBhbGxvY2F0ZWQgdXNlcl9zcmYuIFNl dCB0byBOVUxMIG9uIGZhaWx1cmUuCisgKgorICogR0Igc3VyZmFjZXMgYWxsb2NhdGVkIGJ5IHRo aXMgZnVuY3Rpb24gd2lsbCBub3QgaGF2ZSBhIHVzZXIgbW9kZSBoYW5kbGUsIGFuZAorICogdGh1 cyB3aWxsIG9ubHkgYmUgdmlzaWJsZSB0byB2bXdnZnguICBGb3Igb3B0aW1pemF0aW9uIHJlYXNv bnMgdGhlCisgKiBzdXJmYWNlIG1heSBsYXRlciBiZSBnaXZlbiBhIHVzZXIgbW9kZSBoYW5kbGUg YnkgYW5vdGhlciBmdW5jdGlvbiB0byBtYWtlCisgKiBpdCBhdmFpbGFibGUgdG8gdXNlciBtb2Rl IGRyaXZlcnMuCisgKi8KK2ludCB2bXdfZ2Jfc3VyZmFjZV9kZWZpbmUoc3RydWN0IHZtd19wcml2 YXRlICpkZXZfcHJpdiwKKwkJCSAgdWludDMyX3QgdXNlcl9hY2NvdW50aW5nX3NpemUsCisJCQkg IGNvbnN0IHN0cnVjdCB2bXdfc3VyZmFjZV9tZXRhZGF0YSAqcmVxLAorCQkJICBzdHJ1Y3Qgdm13 X3N1cmZhY2UgKipzcmZfb3V0KQoreworCXN0cnVjdCB2bXdfc3VyZmFjZV9tZXRhZGF0YSAqbWV0 YWRhdGE7CisJc3RydWN0IHZtd191c2VyX3N1cmZhY2UgKnVzZXJfc3JmOworCXN0cnVjdCB2bXdf c3VyZmFjZSAqc3JmOworCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7CisJCS5pbnRl cnJ1cHRpYmxlID0gdHJ1ZSwKKwkJLm5vX3dhaXRfZ3B1ID0gZmFsc2UKKwl9OworCXUzMiBzYW1w bGVfY291bnQgPSAxOworCXUzMiBudW1fbGF5ZXJzID0gMTsKKwlpbnQgcmV0OworCisJKnNyZl9v dXQgPSBOVUxMOworCisJaWYgKHJlcS0+c2Nhbm91dCkgeworCQlpZiAoIXN2Z2EzZHN1cmZhY2Vf aXNfc2NyZWVuX3RhcmdldF9mb3JtYXQocmVxLT5mb3JtYXQpKSB7CisJCQlWTVdfREVCVUdfVVNF UigiSW52YWxpZCBTY3JlZW4gVGFyZ2V0IHN1cmZhY2UgZm9ybWF0LiIpOworCQkJcmV0dXJuIC1F SU5WQUw7CisJCX0KKworCQlpZiAocmVxLT5iYXNlX3NpemUud2lkdGggPiBkZXZfcHJpdi0+dGV4 dHVyZV9tYXhfd2lkdGggfHwKKwkJICAgIHJlcS0+YmFzZV9zaXplLmhlaWdodCA+IGRldl9wcml2 LT50ZXh0dXJlX21heF9oZWlnaHQpIHsKKwkJCVZNV19ERUJVR19VU0VSKCIldXgldVxuLCBleGNl ZWQgbWF4IHN1cmZhY2Ugc2l6ZSAldXgldSIsCisJCQkJICAgICAgIHJlcS0+YmFzZV9zaXplLndp ZHRoLAorCQkJCSAgICAgICByZXEtPmJhc2Vfc2l6ZS5oZWlnaHQsCisJCQkJICAgICAgIGRldl9w cml2LT50ZXh0dXJlX21heF93aWR0aCwKKwkJCQkgICAgICAgZGV2X3ByaXYtPnRleHR1cmVfbWF4 X2hlaWdodCk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0gZWxzZSB7CisJCWNvbnN0IHN0 cnVjdCBzdmdhM2Rfc3VyZmFjZV9kZXNjICpkZXNjID0KKwkJCXN2Z2EzZHN1cmZhY2VfZ2V0X2Rl c2MocmVxLT5mb3JtYXQpOworCisJCWlmIChkZXNjLT5ibG9ja19kZXNjID09IFNWR0EzREJMT0NL REVTQ19OT05FKSB7CisJCQlWTVdfREVCVUdfVVNFUigiSW52YWxpZCBzdXJmYWNlIGZvcm1hdC5c biIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwl9CisKKwlpZiAocmVxLT5hdXRvZ2VuX2Zp bHRlciAhPSBTVkdBM0RfVEVYX0ZJTFRFUl9OT05FKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlm IChyZXEtPm51bV9zaXplcyAhPSAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChyZXEtPnNp emVzICE9IE5VTEwpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gdHRtX3JlYWRfbG9jaygm ZGV2X3ByaXYtPnJlc2VydmF0aW9uX3NlbSwgdHJ1ZSk7CisJaWYgKHVubGlrZWx5KHJldCAhPSAw KSkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHR0bV9tZW1fZ2xvYmFsX2FsbG9jKHZtd19tZW1f Z2xvYihkZXZfcHJpdiksCisJCQkJICAgdXNlcl9hY2NvdW50aW5nX3NpemUsICZjdHgpOworCWlm IChyZXQgIT0gMCkgeworCQlpZiAocmV0ICE9IC1FUkVTVEFSVFNZUykKKwkJCURSTV9FUlJPUigi T3V0IG9mIGdyYXBoaWNzIG1lbW9yeSBmb3Igc3VyZmFjZS5cbiIpOworCQlnb3RvIG91dF91bmxv Y2s7CisJfQorCisJdXNlcl9zcmYgPSBremFsbG9jKHNpemVvZigqdXNlcl9zcmYpLCBHRlBfS0VS TkVMKTsKKwlpZiAodW5saWtlbHkoIXVzZXJfc3JmKSkgeworCQlyZXQgPSAtRU5PTUVNOworCQln b3RvIG91dF9ub191c2VyX3NyZjsKKwl9CisKKwkqc3JmX291dCAgPSAmdXNlcl9zcmYtPnNyZjsK Kwl1c2VyX3NyZi0+c2l6ZSA9IHVzZXJfYWNjb3VudGluZ19zaXplOworCXVzZXJfc3JmLT5wcmlt ZS5iYXNlLnNoYXJlYWJsZSA9IGZhbHNlOworCXVzZXJfc3JmLT5wcmltZS5iYXNlLnRmaWxlID0g TlVMTDsKKworCXNyZiA9ICZ1c2VyX3NyZi0+c3JmOworCXNyZi0+bWV0YWRhdGEgPSAqcmVxOwor CXNyZi0+b2Zmc2V0cyA9IE5VTEw7CisKKwltZXRhZGF0YSA9ICZzcmYtPm1ldGFkYXRhOworCisJ aWYgKG1ldGFkYXRhLT5hcnJheV9zaXplKQorCQludW1fbGF5ZXJzID0gcmVxLT5hcnJheV9zaXpl OworCWVsc2UgaWYgKG1ldGFkYXRhLT5mbGFncyAmIFNWR0EzRF9TVVJGQUNFX0NVQkVNQVApCisJ CW51bV9sYXllcnMgPSBTVkdBM0RfTUFYX1NVUkZBQ0VfRkFDRVM7CisKKwlpZiAobWV0YWRhdGEt PmZsYWdzICYgU1ZHQTNEX1NVUkZBQ0VfTVVMVElTQU1QTEUpCisJCXNhbXBsZV9jb3VudCA9IG1l dGFkYXRhLT5tdWx0aXNhbXBsZV9jb3VudDsKKworCXNyZi0+cmVzLmJhY2t1cF9zaXplID0KKwkJ c3ZnYTNkc3VyZmFjZV9nZXRfc2VyaWFsaXplZF9zaXplX2V4dGVuZGVkKG1ldGFkYXRhLT5mb3Jt YXQsCisJCQkJCQkJICAgbWV0YWRhdGEtPmJhc2Vfc2l6ZSwKKwkJCQkJCQkgICBtZXRhZGF0YS0+ bWlwX2xldmVsc1swXSwKKwkJCQkJCQkgICBudW1fbGF5ZXJzLAorCQkJCQkJCSAgIHNhbXBsZV9j b3VudCk7CisKKwlpZiAobWV0YWRhdGEtPmZsYWdzICYgU1ZHQTNEX1NVUkZBQ0VfQklORF9TVFJF QU1fT1VUUFVUKQorCQlzcmYtPnJlcy5iYWNrdXBfc2l6ZSArPSBzaXplb2YoU1ZHQTNkRFhTT1N0 YXRlKTsKKworCS8qCisJICogRG9uJ3Qgc2V0IFNWR0EzRF9TVVJGQUNFX1NDUkVFTlRBUkdFVCBm bGFnIGZvciBhIHNjYW5vdXQgc3VyZmFjZSB3aXRoCisJICogc2l6ZSBncmVhdGVyIHRoYW4gU1RE VSBtYXggd2lkdGgvaGVpZ2h0LiBUaGlzIGlzIHJlYWxseSBhIHdvcmthcm91bmQKKwkgKiB0byBz dXBwb3J0IGNyZWF0aW9uIG9mIGJpZyBmcmFtZWJ1ZmZlciByZXF1ZXN0ZWQgYnkgc29tZSB1c2Vy LXNwYWNlCisJICogZm9yIHdob2xlIHRvcG9sb2d5LiBUaGF0IGJpZyBmcmFtZWJ1ZmZlciB3b24n dCByZWFsbHkgYmUgdXNlZCBmb3IKKwkgKiBiaW5kaW5nIHdpdGggc2NyZWVuIHRhcmdldCBhcyBk dXJpbmcgcHJlcGFyZV9mYiBhIHNlcGFyYXRlIHN1cmZhY2UgaXMKKwkgKiBjcmVhdGVkIHNvIGl0 J3Mgc2FmZSB0byBpZ25vcmUgU1ZHQTNEX1NVUkZBQ0VfU0NSRUVOVEFSR0VUIGZsYWcuCisJICov CisJaWYgKGRldl9wcml2LT5hY3RpdmVfZGlzcGxheV91bml0ID09IHZtd19kdV9zY3JlZW5fdGFy Z2V0ICYmCisJICAgIG1ldGFkYXRhLT5zY2Fub3V0ICYmCisJICAgIG1ldGFkYXRhLT5iYXNlX3Np emUud2lkdGggPD0gZGV2X3ByaXYtPnN0ZHVfbWF4X3dpZHRoICYmCisJICAgIG1ldGFkYXRhLT5i YXNlX3NpemUuaGVpZ2h0IDw9IGRldl9wcml2LT5zdGR1X21heF9oZWlnaHQpCisJCW1ldGFkYXRh LT5mbGFncyB8PSBTVkdBM0RfU1VSRkFDRV9TQ1JFRU5UQVJHRVQ7CisKKwkvKgorCSAqIEZyb20g dGhpcyBwb2ludCwgdGhlIGdlbmVyaWMgcmVzb3VyY2UgbWFuYWdlbWVudCBmdW5jdGlvbnMKKwkg KiBkZXN0cm95IHRoZSBvYmplY3Qgb24gZmFpbHVyZS4KKwkgKi8KKwlyZXQgPSB2bXdfc3VyZmFj ZV9pbml0KGRldl9wcml2LCBzcmYsIHZtd191c2VyX3N1cmZhY2VfZnJlZSk7CisKKwl0dG1fcmVh ZF91bmxvY2soJmRldl9wcml2LT5yZXNlcnZhdGlvbl9zZW0pOworCXJldHVybiByZXQ7CisKK291 dF9ub191c2VyX3NyZjoKKwl0dG1fbWVtX2dsb2JhbF9mcmVlKHZtd19tZW1fZ2xvYihkZXZfcHJp diksIHVzZXJfYWNjb3VudGluZ19zaXplKTsKKworb3V0X3VubG9jazoKKwl0dG1fcmVhZF91bmxv Y2soJmRldl9wcml2LT5yZXNlcnZhdGlvbl9zZW0pOworCXJldHVybiByZXQ7Cit9Ci0tIAoyLjE3 LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=