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=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,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 9D479C433E0 for ; Thu, 21 Jan 2021 11:58:26 +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 33D952395A for ; Thu, 21 Jan 2021 11:58:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 33D952395A 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 3F3A26E08A; Thu, 21 Jan 2021 11:58:25 +0000 (UTC) Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0A7246E08A for ; Thu, 21 Jan 2021 11:58:24 +0000 (UTC) Received: by mail-ed1-x536.google.com with SMTP id s11so2131175edd.5 for ; Thu, 21 Jan 2021 03:58:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=KU2FISzKj7Jc7tXes+llnWJkcpbs4P/QZb2DaFPokRU=; b=NQ5Uf0vVIPeS/OtM5v4+JUkA/WjxbC6zR4q32psu0+a/QvK1yFtcocZPbnf5L3MKj7 BO5yliM+xEcgfsCWI4Of2h6UgydeTe8e4n863BFJiGw3ejGqgDcMQ/iDHXbHZjDEJI5w rPexUI2AGoXkS8nMkYWspAEvMGxhdLpnyaVi9VNvx8ZiI/RRZ+8zXVnTbkB9ytYRwgcl TOVl68XK/s5TmUuJJLej/SFNADp9E8hAPRQ1zFsN8KBoGhpOrr93ItUlt6JtiLgL+q/D SeDlghPJi6l8gL2q0hfrkvrq2EqwwFiTTn1ij9HQjUVjKcXJOINO6LCHlOjOfwdlkTxA tUiQ== 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:mime-version :content-transfer-encoding; bh=KU2FISzKj7Jc7tXes+llnWJkcpbs4P/QZb2DaFPokRU=; b=Tdu+jo7hcCkHDhJ08F65euCwRpshBfbhQC32qsrKBcxC5P6HtX6CnZjxQNeOHhviR2 Mxh2GVe4oXw0Ko8MD4AGlBJ8BPu6jri4FoKwLjABcA9x5hFodwWBGnBvzYZ1qdte+YpU p+xRwHK84T93uoS9wDYwLNX5Vd0yxbBbD1QCfw/T6TMju5rQFiK6x18xdNMUX05NTFIr qL7IPFUHavfED1rHY5BREFVqroHX4+LhazuLHvHCY9bjvh18l8vpcwJXgPGbkD/RcBDC Mv8Nc9ScE8xCXR5EQSTFt4w/CfTe0/G1726OXhqbxj10kXU6MGet2uRkgtW8zgVm1HCS 7NDw== X-Gm-Message-State: AOAM530YYurHkbnhYlDJQK4IrPBQJ/nf7icXrgDM7Wm9rUDry23kyGpW GDpDY8PY6PH4xSjS4FyHvXkmk+F5boU= X-Google-Smtp-Source: ABdhPJzb/u9cLoOe6F75MYc232JMpXVZrIuDFxSYq35UtpJx2mPhTgCBQWiUB06eDztQGnAYsU12zA== X-Received: by 2002:a50:8757:: with SMTP id 23mr8771133edv.294.1611230300666; Thu, 21 Jan 2021 03:58:20 -0800 (PST) Received: from abel.fritz.box ([2a02:908:1252:fb60:afc:3717:d8c:7403]) by smtp.gmail.com with ESMTPSA id s22sm2122313ejd.106.2021.01.21.03.58.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Jan 2021 03:58:19 -0800 (PST) From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" X-Google-Original-From: =?UTF-8?q?Christian=20K=C3=B6nig?= To: dri-devel@lists.freedesktop.org Subject: [PATCH] drm/ttm: device naming cleanup Date: Thu, 21 Jan 2021 12:58:18 +0100 Message-Id: <20210121115818.2482-1-christian.koenig@amd.com> X-Mailer: git-send-email 2.25.1 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: ray.huang@amd.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" UmVuYW1lIHR0bV9ib19kZXZpY2UgdG8gdHRtX2RldmljZS4KUmVuYW1lIHR0bV9ib19kcml2ZXIg dG8gdHRtX2RldmljZV9mdW5jcy4KUmVuYW1lIHR0bV9ib19nbG9iYWwgdG8gdHRtX2dsb2JhbC4K Ck1vdmUgZ2xvYmFsIGFuZCBkZXZpY2UgcmVsYXRlZCBmdW5jdGlvbnMgdG8gdHRtX2RldmljZS5b Y2hdLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2 bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1LmggICAgICAgICAgIHwgICAyICstCiAuLi4vZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hbWRrZmRfZmVuY2UuYyAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9nYXJ0LmMgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3R0bS5jICAgICAgIHwgIDI2ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdHRtLmggICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5jICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fdnJh bV9oZWxwZXIuYyAgICAgICAgIHwgIDE0ICstCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X2JvLmMgICAgICAgICAgfCAgMjAgKy0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZl YXVfYm8uaCAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVh dV9kcnYuaCAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1 X3NnZG1hLmMgICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVf dHRtLmMgICAgICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90 dG0uaCAgICAgICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaCAgICAg ICAgICAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3JlbGVhc2UuYyAg ICAgICAgICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfdHRtLmMgICAgICAg ICAgICAgICAgIHwgIDE5ICstCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oICAgICAg ICAgICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5j ICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMgICAg ICAgICAgIHwgIDM4ICstCiBkcml2ZXJzL2dwdS9kcm0vdHRtL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2FncF9iYWNrZW5kLmMgICAg ICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYyAgICAgICAgICAgICAg ICAgIHwgMjU2ICsrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191dGls LmMgICAgICAgICAgICAgfCAgMjQgKy0KIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMg ICAgICAgICAgICAgICB8ICAyNCArLQogZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fZGV2aWNlLmMg ICAgICAgICAgICAgIHwgMTk1ICsrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9l eGVjYnVmX3V0aWwuYyAgICAgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3Jh bmdlX21hbmFnZXIuYyAgICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fcmVz b3VyY2UuYyAgICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV90dC5j ICAgICAgICAgICAgICAgICAgfCAgMjYgKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2JsaXQuYyAgICAgICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf Ym8uYyAgICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9k cnYuYyAgICAgICAgICAgfCAgMTYgKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Ry di5oICAgICAgICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcmVz b3VyY2UuYyAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF90dG1f YnVmZmVyLmMgICAgfCAgMTQgKy0KIGluY2x1ZGUvZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuaCAg ICAgICAgICAgICB8ICAgNiArLQogaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaCAgICAgICAg ICAgICAgICAgIHwgIDM1ICstCiBpbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oICAgICAg ICAgICAgICAgfCAzMjggKy0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2RybS90dG0vdHRtX2Rl dmljZS5oICAgICAgICAgICAgICAgICAgfCAzMTkgKysrKysrKysrKysrKysrKysKIGluY2x1ZGUv ZHJtL3R0bS90dG1fcmVzb3VyY2UuaCAgICAgICAgICAgICAgICB8ICAgNCArLQogaW5jbHVkZS9k cm0vdHRtL3R0bV90dC5oICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstCiA0MSBmaWxlcyBj aGFuZ2VkLCA3NTkgaW5zZXJ0aW9ucygrKSwgNzE1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2RldmljZS5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgaW5jbHVkZS9kcm0vdHRtL3R0bV9kZXZpY2UuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1LmgKaW5kZXggZjc3NDQzY2Q5YzE3Li5hYjRhYzNiMjY1MWUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdS5oCkBAIC0xMDUzLDcgKzEwNTMsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVj dCBkcm1fZGV2aWNlICphZGV2X3RvX2RybShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAly ZXR1cm4gJmFkZXYtPmRkZXY7CiB9CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFtZGdwdV90dG1fYWRldihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldikKK3N0YXRpYyBp bmxpbmUgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFtZGdwdV90dG1fYWRldihzdHJ1Y3QgdHRtX2Rl dmljZSAqYmRldikKIHsKIAlyZXR1cm4gY29udGFpbmVyX29mKGJkZXYsIHN0cnVjdCBhbWRncHVf ZGV2aWNlLCBtbWFuLmJkZXYpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2FtZGtmZF9mZW5jZS5jCmluZGV4IDMxMDdiOTU3NTkyOS4uNWFmNDY0OTMzOTc2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2ZlbmNl LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5j CkBAIC00MCwxMyArNDAsMTMgQEAgc3RhdGljIGF0b21pY190IGZlbmNlX3NlcSA9IEFUT01JQ19J TklUKDApOwogICogQWxsIHRoZSBCT3MgaW4gYSBwcm9jZXNzIHNoYXJlIGFuIGV2aWN0aW9uIGZl bmNlLiBXaGVuIHByb2Nlc3MgWCB3YW50cwogICogdG8gbWFwIFZSQU0gbWVtb3J5IGJ1dCBUVE0g Y2FuJ3QgZmluZCBlbm91Z2ggc3BhY2UsIFRUTSB3aWxsIGF0dGVtcHQgdG8KICAqIGV2aWN0IEJP cyBmcm9tIGl0cyBMUlUgbGlzdC4gVFRNIGNoZWNrcyBpZiB0aGUgQk8gaXMgdmFsdWFibGUgdG8g ZXZpY3QKLSAqIGJ5IGNhbGxpbmcgdHRtX2JvX2RyaXZlci0+ZXZpY3Rpb25fdmFsdWFibGUoKS4K KyAqIGJ5IGNhbGxpbmcgdHRtX2RldmljZV9mdW5jcy0+ZXZpY3Rpb25fdmFsdWFibGUoKS4KICAq Ci0gKiB0dG1fYm9fZHJpdmVyLT5ldmljdGlvbl92YWx1YWJsZSgpIC0gd2lsbCByZXR1cm4gZmFs c2UgaWYgdGhlIEJPIGJlbG9uZ3MKKyAqIHR0bV9kZXZpY2VfZnVuY3MtPmV2aWN0aW9uX3ZhbHVh YmxlKCkgLSB3aWxsIHJldHVybiBmYWxzZSBpZiB0aGUgQk8gYmVsb25ncwogICogIHRvIHByb2Nl c3MgWC4gT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiB0cnVlIHRvIGluZGljYXRlIEJPIGNhbiBi ZQogICogIGV2aWN0ZWQgYnkgVFRNLgogICoKLSAqIElmIHR0bV9ib19kcml2ZXItPmV2aWN0aW9u X3ZhbHVhYmxlIHJldHVybnMgdHJ1ZSwgdGhlbiBUVE0gd2lsbCBjb250aW51ZQorICogSWYgdHRt X2RldmljZV9mdW5jcy0+ZXZpY3Rpb25fdmFsdWFibGUgcmV0dXJucyB0cnVlLCB0aGVuIFRUTSB3 aWxsIGNvbnRpbnVlCiAgKiB0aGUgZXZjaXRpb24gcHJvY2VzcyBmb3IgdGhhdCBCTyBieSBjYWxs aW5nIHR0bV9ib19ldmljdCAtLT4gYW1kZ3B1X2JvX21vdmUKICAqIC0tPiBhbWRncHVfY29weV9i dWZmZXIoKS4gVGhpcyBzZXRzIHVwIGpvYiBpbiBHUFUgc2NoZWR1bGVyLgogICoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nYXJ0LmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2FydC5jCmluZGV4IDBkYjkzMzAyNjcyMi4uZmRlMmQ4 OTliMmM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Fy dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nYXJ0LmMKQEAgLTcx LDcgKzcxLDcgQEAKICAqLwogc3RhdGljIGludCBhbWRncHVfZ2FydF9kdW1teV9wYWdlX2luaXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7Ci0Jc3RydWN0IHBhZ2UgKmR1bW15X3BhZ2Ug PSB0dG1fYm9fZ2xvYi5kdW1teV9yZWFkX3BhZ2U7CisJc3RydWN0IHBhZ2UgKmR1bW15X3BhZ2Ug PSB0dG1fZ2xvYi5kdW1teV9yZWFkX3BhZ2U7CiAKIAlpZiAoYWRldi0+ZHVtbXlfcGFnZV9hZGRy KQogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV90dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYwppbmRl eCA5ZmQyMTU3YjEzM2EuLjI5Y2ZiMDgwOTYzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV90dG0uYwpAQCAtNjEsMTAgKzYxLDEwIEBACiAKICNkZWZpbmUgQU1ER1BVX1RUTV9W UkFNX01BWF9EV19SRUFECShzaXplX3QpMTI4CiAKLXN0YXRpYyBpbnQgYW1kZ3B1X3R0bV9iYWNr ZW5kX2JpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCitzdGF0aWMgaW50IGFtZGdwdV90 dG1fYmFja2VuZF9iaW5kKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkJCSAgIHN0cnVjdCB0 dG1fdHQgKnR0bSwKIAkJCQkgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICpib19tZW0pOwotc3RhdGlj IHZvaWQgYW1kZ3B1X3R0bV9iYWNrZW5kX3VuYmluZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRl diwKK3N0YXRpYyB2b2lkIGFtZGdwdV90dG1fYmFja2VuZF91bmJpbmQoc3RydWN0IHR0bV9kZXZp Y2UgKmJkZXYsCiAJCQkJICAgICAgc3RydWN0IHR0bV90dCAqdHRtKTsKIAogc3RhdGljIGludCBh bWRncHVfdHRtX2luaXRfb25fY2hpcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTY0 Niw3ICs2NDYsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9ib19tb3ZlKHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8sIGJvb2wgZXZpY3QsCiAgKgogICogQ2FsbGVkIGJ5IHR0bV9tZW1faW9fcmVz ZXJ2ZSgpIHVsdGltYXRlbHkgdmlhIHR0bV9ib192bV9mYXVsdCgpCiAgKi8KLXN0YXRpYyBpbnQg YW1kZ3B1X3R0bV9pb19tZW1fcmVzZXJ2ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3Ry dWN0IHR0bV9yZXNvdXJjZSAqbWVtKQorc3RhdGljIGludCBhbWRncHVfdHRtX2lvX21lbV9yZXNl cnZlKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3Jlc291cmNlICptZW0pCiB7 CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYmRldik7CiAJ c3RydWN0IGRybV9tbV9ub2RlICptbV9ub2RlID0gbWVtLT5tbV9ub2RlOwpAQCAtODkzLDcgKzg5 Myw3IEBAIHZvaWQgYW1kZ3B1X3R0bV90dF9zZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdHRtX3R0ICp0 dG0sIHN0cnVjdCBwYWdlICoqcGFnZXMpCiAgKgogICogQ2FsbGVkIGJ5IGFtZGdwdV90dG1fYmFj a2VuZF9iaW5kKCkKICAqKi8KLXN0YXRpYyBpbnQgYW1kZ3B1X3R0bV90dF9waW5fdXNlcnB0cihz dHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK3N0YXRpYyBpbnQgYW1kZ3B1X3R0bV90dF9waW5f dXNlcnB0cihzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJCQkgICAgIHN0cnVjdCB0dG1fdHQg KnR0bSkKIHsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihi ZGV2KTsKQEAgLTkzMSw3ICs5MzEsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV90dG1fdHRfcGluX3Vz ZXJwdHIoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCiAvKgogICogYW1kZ3B1X3R0bV90dF91 bnBpbl91c2VycHRyIC0gVW5waW4gYW5kIHVubWFwIHVzZXJwdHIgcGFnZXMKICAqLwotc3RhdGlj IHZvaWQgYW1kZ3B1X3R0bV90dF91bnBpbl91c2VycHRyKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpi ZGV2LAorc3RhdGljIHZvaWQgYW1kZ3B1X3R0bV90dF91bnBpbl91c2VycHRyKHN0cnVjdCB0dG1f ZGV2aWNlICpiZGV2LAogCQkJCQlzdHJ1Y3QgdHRtX3R0ICp0dG0pCiB7CiAJc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYmRldik7CkBAIC0xMDE1LDcgKzEwMTUs NyBAQCBzdGF0aWMgaW50IGFtZGdwdV90dG1fZ2FydF9iaW5kKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogICogQ2FsbGVkIGJ5IHR0bV90dF9iaW5kKCkgb24gYmVoYWxmIG9mIHR0bV9ib19o YW5kbGVfbW92ZV9tZW0oKS4KICAqIFRoaXMgaGFuZGxlcyBiaW5kaW5nIEdUVCBtZW1vcnkgdG8g dGhlIGRldmljZSBhZGRyZXNzIHNwYWNlLgogICovCi1zdGF0aWMgaW50IGFtZGdwdV90dG1fYmFj a2VuZF9iaW5kKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAorc3RhdGljIGludCBhbWRncHVf dHRtX2JhY2tlbmRfYmluZChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJCQkgICBzdHJ1Y3Qg dHRtX3R0ICp0dG0sCiAJCQkJICAgc3RydWN0IHR0bV9yZXNvdXJjZSAqYm9fbWVtKQogewpAQCAt MTE1NSw3ICsxMTU1LDcgQEAgaW50IGFtZGdwdV90dG1fcmVjb3Zlcl9nYXJ0KHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqdGJvKQogICogQ2FsbGVkIGJ5IHR0bV90dF91bmJpbmQoKSBvbiBiZWhh bGYgb2YgdHRtX2JvX21vdmVfdHRtKCkgYW5kCiAgKiB0dG1fdHRfZGVzdHJveSgpLgogICovCi1z dGF0aWMgdm9pZCBhbWRncHVfdHRtX2JhY2tlbmRfdW5iaW5kKHN0cnVjdCB0dG1fYm9fZGV2aWNl ICpiZGV2LAorc3RhdGljIHZvaWQgYW1kZ3B1X3R0bV9iYWNrZW5kX3VuYmluZChzdHJ1Y3QgdHRt X2RldmljZSAqYmRldiwKIAkJCQkgICAgICBzdHJ1Y3QgdHRtX3R0ICp0dG0pCiB7CiAJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYmRldik7CkBAIC0xMTgwLDcg KzExODAsNyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdHRtX2JhY2tlbmRfdW5iaW5kKHN0cnVjdCB0 dG1fYm9fZGV2aWNlICpiZGV2LAogCWd0dC0+Ym91bmQgPSBmYWxzZTsKIH0KIAotc3RhdGljIHZv aWQgYW1kZ3B1X3R0bV9iYWNrZW5kX2Rlc3Ryb3koc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYs CitzdGF0aWMgdm9pZCBhbWRncHVfdHRtX2JhY2tlbmRfZGVzdHJveShzdHJ1Y3QgdHRtX2Rldmlj ZSAqYmRldiwKIAkJCQkgICAgICAgc3RydWN0IHR0bV90dCAqdHRtKQogewogCXN0cnVjdCBhbWRn cHVfdHRtX3R0ICpndHQgPSAodm9pZCAqKXR0bTsKQEAgLTEyMzQsNyArMTIzNCw3IEBAIHN0YXRp YyBzdHJ1Y3QgdHRtX3R0ICphbWRncHVfdHRtX3R0X2NyZWF0ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9v YmplY3QgKmJvLAogICogTWFwIHRoZSBwYWdlcyBvZiBhIHR0bV90dCBvYmplY3QgdG8gYW4gYWRk cmVzcyBzcGFjZSB2aXNpYmxlCiAgKiB0byB0aGUgdW5kZXJseWluZyBkZXZpY2UuCiAgKi8KLXN0 YXRpYyBpbnQgYW1kZ3B1X3R0bV90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRl diwKK3N0YXRpYyBpbnQgYW1kZ3B1X3R0bV90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX2RldmljZSAq YmRldiwKIAkJCQkgIHN0cnVjdCB0dG1fdHQgKnR0bSwKIAkJCQkgIHN0cnVjdCB0dG1fb3BlcmF0 aW9uX2N0eCAqY3R4KQogewpAQCAtMTI3OCw3ICsxMjc4LDcgQEAgc3RhdGljIGludCBhbWRncHVf dHRtX3R0X3BvcHVsYXRlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAogICogVW5tYXBzIHBh Z2VzIG9mIGEgdHRtX3R0IG9iamVjdCBmcm9tIHRoZSBkZXZpY2UgYWRkcmVzcyBzcGFjZSBhbmQK ICAqIHVucG9wdWxhdGVzIHRoZSBwYWdlIGFycmF5IGJhY2tpbmcgaXQuCiAgKi8KLXN0YXRpYyB2 b2lkIGFtZGdwdV90dG1fdHRfdW5wb3B1bGF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwK K3N0YXRpYyB2b2lkIGFtZGdwdV90dG1fdHRfdW5wb3B1bGF0ZShzdHJ1Y3QgdHRtX2RldmljZSAq YmRldiwKIAkJCQkgICAgIHN0cnVjdCB0dG1fdHQgKnR0bSkKIHsKIAlzdHJ1Y3QgYW1kZ3B1X3R0 bV90dCAqZ3R0ID0gKHZvaWQgKil0dG07CkBAIC0xNjAzLDcgKzE2MDMsNyBAQCBhbWRncHVfYm9f ZGVsZXRlX21lbV9ub3RpZnkoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykKIAlhbWRncHVf Ym9fbW92ZV9ub3RpZnkoYm8sIGZhbHNlLCBOVUxMKTsKIH0KIAotc3RhdGljIHN0cnVjdCB0dG1f Ym9fZHJpdmVyIGFtZGdwdV9ib19kcml2ZXIgPSB7CitzdGF0aWMgc3RydWN0IHR0bV9kZXZpY2Vf ZnVuY3MgYW1kZ3B1X2JvX2RyaXZlciA9IHsKIAkudHRtX3R0X2NyZWF0ZSA9ICZhbWRncHVfdHRt X3R0X2NyZWF0ZSwKIAkudHRtX3R0X3BvcHVsYXRlID0gJmFtZGdwdV90dG1fdHRfcG9wdWxhdGUs CiAJLnR0bV90dF91bnBvcHVsYXRlID0gJmFtZGdwdV90dG1fdHRfdW5wb3B1bGF0ZSwKQEAgLTE3 ODUsNyArMTc4NSw3IEBAIGludCBhbWRncHVfdHRtX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJbXV0ZXhfaW5pdCgmYWRldi0+bW1hbi5ndHRfd2luZG93X2xvY2spOwogCiAJLyog Tm8gb3RoZXJzIHVzZXIgb2YgYWRkcmVzcyBzcGFjZSBzbyBzZXQgaXQgdG8gMCAqLwotCXIgPSB0 dG1fYm9fZGV2aWNlX2luaXQoJmFkZXYtPm1tYW4uYmRldiwgJmFtZGdwdV9ib19kcml2ZXIsIGFk ZXYtPmRldiwKKwlyID0gdHRtX2RldmljZV9pbml0KCZhZGV2LT5tbWFuLmJkZXYsICZhbWRncHVf Ym9fZHJpdmVyLCBhZGV2LT5kZXYsCiAJCQkgICAgICAgYWRldl90b19kcm0oYWRldiktPmFub25f aW5vZGUtPmlfbWFwcGluZywKIAkJCSAgICAgICBhZGV2X3RvX2RybShhZGV2KS0+dm1hX29mZnNl dF9tYW5hZ2VyLAogCQkJICAgICAgIGFkZXYtPm5lZWRfc3dpb3RsYiwKQEAgLTE5MjYsNyArMTky Niw3IEBAIHZvaWQgYW1kZ3B1X3R0bV9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQog CXR0bV9yYW5nZV9tYW5fZmluaSgmYWRldi0+bW1hbi5iZGV2LCBBTURHUFVfUExfR0RTKTsKIAl0 dG1fcmFuZ2VfbWFuX2ZpbmkoJmFkZXYtPm1tYW4uYmRldiwgQU1ER1BVX1BMX0dXUyk7CiAJdHRt X3JhbmdlX21hbl9maW5pKCZhZGV2LT5tbWFuLmJkZXYsIEFNREdQVV9QTF9PQSk7Ci0JdHRtX2Jv X2RldmljZV9yZWxlYXNlKCZhZGV2LT5tbWFuLmJkZXYpOworCXR0bV9kZXZpY2VfZmluaSgmYWRl di0+bW1hbi5iZGV2KTsKIAlhZGV2LT5tbWFuLmluaXRpYWxpemVkID0gZmFsc2U7CiAJRFJNX0lO Rk8oImFtZGdwdTogdHRtIGZpbmFsaXplZFxuIik7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdHRtLmgKaW5kZXggZDI5ODc1MzZkN2NkLi43MTg5ZjgzNzAxMDggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmgKQEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0 IGFtZGdwdV9ndHRfbWdyIHsKIH07CiAKIHN0cnVjdCBhbWRncHVfbW1hbiB7Ci0Jc3RydWN0IHR0 bV9ib19kZXZpY2UJCWJkZXY7CisJc3RydWN0IHR0bV9kZXZpY2UJCWJkZXY7CiAJYm9vbAkJCQlp bml0aWFsaXplZDsKIAl2b2lkIF9faW9tZW0JCQkqYXBlcl9iYXNlX2thZGRyOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCmluZGV4IGFkOTFjMGMzYzQyMy4uOWQxOTA3ODI0 NmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwpAQCAtNjM4LDE1ICs2 MzgsMTUgQEAgdm9pZCBhbWRncHVfdm1fbW92ZV90b19scnVfdGFpbChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAlzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKmJvX2Jhc2U7CiAKIAlpZiAo dm0tPmJ1bGtfbW92ZWFibGUpIHsKLQkJc3Bpbl9sb2NrKCZ0dG1fYm9fZ2xvYi5scnVfbG9jayk7 CisJCXNwaW5fbG9jaygmdHRtX2dsb2IubHJ1X2xvY2spOwogCQl0dG1fYm9fYnVsa19tb3ZlX2xy dV90YWlsKCZ2bS0+bHJ1X2J1bGtfbW92ZSk7Ci0JCXNwaW5fdW5sb2NrKCZ0dG1fYm9fZ2xvYi5s cnVfbG9jayk7CisJCXNwaW5fdW5sb2NrKCZ0dG1fZ2xvYi5scnVfbG9jayk7CiAJCXJldHVybjsK IAl9CiAKIAltZW1zZXQoJnZtLT5scnVfYnVsa19tb3ZlLCAwLCBzaXplb2Yodm0tPmxydV9idWxr X21vdmUpKTsKIAotCXNwaW5fbG9jaygmdHRtX2JvX2dsb2IubHJ1X2xvY2spOworCXNwaW5fbG9j aygmdHRtX2dsb2IubHJ1X2xvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoYm9fYmFzZSwgJnZt LT5pZGxlLCB2bV9zdGF0dXMpIHsKIAkJc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBib19iYXNlLT5i bzsKIApAQCAtNjYwLDcgKzY2MCw3IEBAIHZvaWQgYW1kZ3B1X3ZtX21vdmVfdG9fbHJ1X3RhaWwo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCQkmYm8tPnNoYWRvdy0+dGJvLm1lbSwK IAkJCQkJCSZ2bS0+bHJ1X2J1bGtfbW92ZSk7CiAJfQotCXNwaW5fdW5sb2NrKCZ0dG1fYm9fZ2xv Yi5scnVfbG9jayk7CisJc3Bpbl91bmxvY2soJnR0bV9nbG9iLmxydV9sb2NrKTsKIAogCXZtLT5i dWxrX21vdmVhYmxlID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f Z2VtX3ZyYW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5j CmluZGV4IDAyY2EyMmU5MDI5MC4uMGIxM2M4NTA3Njg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2Vt X3ZyYW1faGVscGVyLmMKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdHJ1Y3QgZHJtX2dlbV92cmFtX29i amVjdCAqZHJtX2dlbV92cmFtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVj dCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW07 CiAJc3RydWN0IGRybV92cmFtX21tICp2bW0gPSBkZXYtPnZyYW1fbW07Ci0Jc3RydWN0IHR0bV9i b19kZXZpY2UgKmJkZXY7CisJc3RydWN0IHR0bV9kZXZpY2UgKmJkZXY7CiAJaW50IHJldDsKIAlz aXplX3QgYWNjX3NpemU7CiAKQEAgLTU1MSw3ICs1NTEsNyBAQCBpbnQgZHJtX2dlbV92cmFtX2Zp bGxfY3JlYXRlX2R1bWIoc3RydWN0IGRybV9maWxlICpmaWxlLAogRVhQT1JUX1NZTUJPTChkcm1f Z2VtX3ZyYW1fZmlsbF9jcmVhdGVfZHVtYik7CiAKIC8qCi0gKiBIZWxwZXJzIGZvciBzdHJ1Y3Qg dHRtX2JvX2RyaXZlcgorICogSGVscGVycyBmb3Igc3RydWN0IHR0bV9kZXZpY2VfZnVuY3MKICAq LwogCiBzdGF0aWMgYm9vbCBkcm1faXNfZ2VtX3ZyYW0oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0 ICpibykKQEAgLTg5Myw3ICs4OTMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9nZW1fb2Jq ZWN0X2Z1bmNzIGRybV9nZW1fdnJhbV9vYmplY3RfZnVuY3MgPSB7CiAgKiBUVE0gVFQKICAqLwog Ci1zdGF0aWMgdm9pZCBib19kcml2ZXJfdHRtX3R0X2Rlc3Ryb3koc3RydWN0IHR0bV9ib19kZXZp Y2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0KQorc3RhdGljIHZvaWQgYm9fZHJpdmVyX3R0bV90 dF9kZXN0cm95KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dCkKIHsK IAl0dG1fdHRfZGVzdHJveV9jb21tb24oYmRldiwgdHQpOwogCXR0bV90dF9maW5pKHR0KTsKQEAg LTk2NSw3ICs5NjUsNyBAQCBzdGF0aWMgaW50IGJvX2RyaXZlcl9tb3ZlKHN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqYm8sCiAJcmV0dXJuIGRybV9nZW1fdnJhbV9ib19kcml2ZXJfbW92ZShnYm8s IGV2aWN0LCBjdHgsIG5ld19tZW0pOwogfQogCi1zdGF0aWMgaW50IGJvX2RyaXZlcl9pb19tZW1f cmVzZXJ2ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK3N0YXRpYyBpbnQgYm9fZHJpdmVy X2lvX21lbV9yZXNlcnZlKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkJCSAgICBzdHJ1Y3Qg dHRtX3Jlc291cmNlICptZW0pCiB7CiAJc3RydWN0IGRybV92cmFtX21tICp2bW0gPSBkcm1fdnJh bV9tbV9vZl9iZGV2KGJkZXYpOwpAQCAtOTg1LDcgKzk4NSw3IEBAIHN0YXRpYyBpbnQgYm9fZHJp dmVyX2lvX21lbV9yZXNlcnZlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAogCXJldHVybiAw OwogfQogCi1zdGF0aWMgc3RydWN0IHR0bV9ib19kcml2ZXIgYm9fZHJpdmVyID0geworc3RhdGlj IHN0cnVjdCB0dG1fZGV2aWNlX2Z1bmNzIGJvX2RyaXZlciA9IHsKIAkudHRtX3R0X2NyZWF0ZSA9 IGJvX2RyaXZlcl90dG1fdHRfY3JlYXRlLAogCS50dG1fdHRfZGVzdHJveSA9IGJvX2RyaXZlcl90 dG1fdHRfZGVzdHJveSwKIAkuZXZpY3Rpb25fdmFsdWFibGUgPSB0dG1fYm9fZXZpY3Rpb25fdmFs dWFibGUsCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBzdGF0aWMgaW50IGRybV92cmFtX21tX2luaXQo c3RydWN0IGRybV92cmFtX21tICp2bW0sIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJdm1tLT52 cmFtX2Jhc2UgPSB2cmFtX2Jhc2U7CiAJdm1tLT52cmFtX3NpemUgPSB2cmFtX3NpemU7CiAKLQly ZXQgPSB0dG1fYm9fZGV2aWNlX2luaXQoJnZtbS0+YmRldiwgJmJvX2RyaXZlciwgZGV2LT5kZXYs CisJcmV0ID0gdHRtX2RldmljZV9pbml0KCZ2bW0tPmJkZXYsICZib19kcml2ZXIsIGRldi0+ZGV2 LAogCQkJCSBkZXYtPmFub25faW5vZGUtPmlfbWFwcGluZywKIAkJCQkgZGV2LT52bWFfb2Zmc2V0 X21hbmFnZXIsCiAJCQkJIGZhbHNlLCB0cnVlKTsKQEAgLTEwNTQsNyArMTA1NCw3IEBAIHN0YXRp YyBpbnQgZHJtX3ZyYW1fbW1faW5pdChzdHJ1Y3QgZHJtX3ZyYW1fbW0gKnZtbSwgc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIHN0YXRpYyB2b2lkIGRybV92cmFtX21tX2NsZWFudXAoc3RydWN0IGRy bV92cmFtX21tICp2bW0pCiB7CiAJdHRtX3JhbmdlX21hbl9maW5pKCZ2bW0tPmJkZXYsIFRUTV9Q TF9WUkFNKTsKLQl0dG1fYm9fZGV2aWNlX3JlbGVhc2UoJnZtbS0+YmRldik7CisJdHRtX2Rldmlj ZV9maW5pKCZ2bW0tPmJkZXYpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L25vdXZlYXUvbm91dmVhdV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9i by5jCmluZGV4IDMzZGM4ODZkMWQ2ZC4uYzE3Nzk0MGQ2ZTJjIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2JvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbm91dmVhdV9iby5jCkBAIC00Myw5ICs0Myw5IEBACiAjaW5jbHVkZSA8bnZpZi9pZjUwMGIu aD4KICNpbmNsdWRlIDxudmlmL2lmOTAwYi5oPgogCi1zdGF0aWMgaW50IG5vdXZlYXVfdHRtX3R0 X2JpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSwKK3N0 YXRpYyBpbnQgbm91dmVhdV90dG1fdHRfYmluZChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgc3Ry dWN0IHR0bV90dCAqdHRtLAogCQkJICAgICAgIHN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlZyk7Ci1z dGF0aWMgdm9pZCBub3V2ZWF1X3R0bV90dF91bmJpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJk ZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSk7CitzdGF0aWMgdm9pZCBub3V2ZWF1X3R0bV90dF91bmJp bmQoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSk7CiAKIC8qCiAg KiBOVjEwLU5WNDAgdGlsaW5nIGhlbHBlcnMKQEAgLTY3NCw3ICs2NzQsNyBAQCBub3V2ZWF1X3R0 bV90dF9jcmVhdGUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgdWludDMyX3QgcGFnZV9m bGFncykKIH0KIAogc3RhdGljIGludAotbm91dmVhdV90dG1fdHRfYmluZChzdHJ1Y3QgdHRtX2Jv X2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtLAorbm91dmVhdV90dG1fdHRfYmluZChz dHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtLAogCQkgICAgc3RydWN0 IHR0bV9yZXNvdXJjZSAqcmVnKQogewogI2lmIElTX0VOQUJMRUQoQ09ORklHX0FHUCkKQEAgLTY5 MCw3ICs2OTAsNyBAQCBub3V2ZWF1X3R0bV90dF9iaW5kKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpi ZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0sCiB9CiAKIHN0YXRpYyB2b2lkCi1ub3V2ZWF1X3R0bV90 dF91bmJpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSkK K25vdXZlYXVfdHRtX3R0X3VuYmluZChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0 bV90dCAqdHRtKQogewogI2lmIElTX0VOQUJMRUQoQ09ORklHX0FHUCkKIAlzdHJ1Y3Qgbm91dmVh dV9kcm0gKmRybSA9IG5vdXZlYXVfYmRldihiZGV2KTsKQEAgLTEwNTUsNyArMTA1NSw3IEBAIG5v dXZlYXVfdHRtX2lvX21lbV9mcmVlX2xvY2tlZChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSwKIH0K IAogc3RhdGljIGludAotbm91dmVhdV90dG1faW9fbWVtX3Jlc2VydmUoc3RydWN0IHR0bV9ib19k ZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlZykKK25vdXZlYXVfdHRtX2lvX21l bV9yZXNlcnZlKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3Jlc291cmNlICpy ZWcpCiB7CiAJc3RydWN0IG5vdXZlYXVfZHJtICpkcm0gPSBub3V2ZWF1X2JkZXYoYmRldik7CiAJ c3RydWN0IG52a21fZGV2aWNlICpkZXZpY2UgPSBudnh4X2RldmljZSgmZHJtLT5jbGllbnQuZGV2 aWNlKTsKQEAgLTExNjMsNyArMTE2Myw3IEBAIG5vdXZlYXVfdHRtX2lvX21lbV9yZXNlcnZlKHN0 cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZWcpCiB9CiAK IHN0YXRpYyB2b2lkCi1ub3V2ZWF1X3R0bV9pb19tZW1fZnJlZShzdHJ1Y3QgdHRtX2JvX2Rldmlj ZSAqYmRldiwgc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVnKQorbm91dmVhdV90dG1faW9fbWVtX2Zy ZWUoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlZykKIHsK IAlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSA9IG5vdXZlYXVfYmRldihiZGV2KTsKIApAQCAtMTIy Myw3ICsxMjIzLDcgQEAgdm1fZmF1bHRfdCBub3V2ZWF1X3R0bV9mYXVsdF9yZXNlcnZlX25vdGlm eShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQogfQogCiBzdGF0aWMgaW50Ci1ub3V2ZWF1 X3R0bV90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK25vdXZlYXVfdHRt X3R0X3BvcHVsYXRlKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkJc3RydWN0IHR0bV90dCAq dHRtLCBzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCkKIHsKIAlzdHJ1Y3QgdHRtX3R0ICp0 dG1fZG1hID0gKHZvaWQgKil0dG07CkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCBub3V2ZWF1X3R0bV90 dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIH0KIAogc3RhdGljIHZvaWQK LW5vdXZlYXVfdHRtX3R0X3VucG9wdWxhdGUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCitu b3V2ZWF1X3R0bV90dF91bnBvcHVsYXRlKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkJICBz dHJ1Y3QgdHRtX3R0ICp0dG0pCiB7CiAJc3RydWN0IG5vdXZlYXVfZHJtICpkcm07CkBAIC0xMjY0 LDcgKzEyNjQsNyBAQCBub3V2ZWF1X3R0bV90dF91bnBvcHVsYXRlKHN0cnVjdCB0dG1fYm9fZGV2 aWNlICpiZGV2LAogfQogCiBzdGF0aWMgdm9pZAotbm91dmVhdV90dG1fdHRfZGVzdHJveShzdHJ1 Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK25vdXZlYXVfdHRtX3R0X2Rlc3Ryb3koc3RydWN0IHR0 bV9kZXZpY2UgKmJkZXYsCiAJCSAgICAgICBzdHJ1Y3QgdHRtX3R0ICp0dG0pCiB7CiAjaWYgSVNf RU5BQkxFRChDT05GSUdfQUdQKQpAQCAtMTI5Niw3ICsxMjk2LDcgQEAgbm91dmVhdV9ib19kZWxl dGVfbWVtX25vdGlmeShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQogCW5vdXZlYXVfYm9f bW92ZV9udGZ5KGJvLCBmYWxzZSwgTlVMTCk7CiB9CiAKLXN0cnVjdCB0dG1fYm9fZHJpdmVyIG5v dXZlYXVfYm9fZHJpdmVyID0geworc3RydWN0IHR0bV9kZXZpY2VfZnVuY3Mgbm91dmVhdV9ib19k cml2ZXIgPSB7CiAJLnR0bV90dF9jcmVhdGUgPSAmbm91dmVhdV90dG1fdHRfY3JlYXRlLAogCS50 dG1fdHRfcG9wdWxhdGUgPSAmbm91dmVhdV90dG1fdHRfcG9wdWxhdGUsCiAJLnR0bV90dF91bnBv cHVsYXRlID0gJm5vdXZlYXVfdHRtX3R0X3VucG9wdWxhdGUsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2JvLmggYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9u b3V2ZWF1X2JvLmgKaW5kZXggNjA0NWI4NWE3NjJhLi5jMmQzZjljNDhlYmEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfYm8uaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9ub3V2ZWF1X2JvLmgKQEAgLTY4LDcgKzY4LDcgQEAgbm91dmVhdV9ib19yZWYo c3RydWN0IG5vdXZlYXVfYm8gKnJlZiwgc3RydWN0IG5vdXZlYXVfYm8gKipwbnZibykKIAlyZXR1 cm4gMDsKIH0KIAotZXh0ZXJuIHN0cnVjdCB0dG1fYm9fZHJpdmVyIG5vdXZlYXVfYm9fZHJpdmVy OworZXh0ZXJuIHN0cnVjdCB0dG1fZGV2aWNlX2Z1bmNzIG5vdXZlYXVfYm9fZHJpdmVyOwogCiB2 b2lkIG5vdXZlYXVfYm9fbW92ZV9pbml0KHN0cnVjdCBub3V2ZWF1X2RybSAqKTsKIHN0cnVjdCBu b3V2ZWF1X2JvICpub3V2ZWF1X2JvX2FsbG9jKHN0cnVjdCBub3V2ZWF1X2NsaSAqLCB1NjQgKnNp emUsIGludCAqYWxpZ24sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcnYuaAppbmRleCBj ODAyZDNkMWJhMzkuLmVkZjlkMWVlOWQ1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbm91dmVhdV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1 X2Rydi5oCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RydWN0IG5vdXZlYXVfZHJtIHsKIAogCS8qIFRU TSBpbnRlcmZhY2Ugc3VwcG9ydCAqLwogCXN0cnVjdCB7Ci0JCXN0cnVjdCB0dG1fYm9fZGV2aWNl IGJkZXY7CisJCXN0cnVjdCB0dG1fZGV2aWNlIGJkZXY7CiAJCWF0b21pY190IHZhbGlkYXRlX3Nl cXVlbmNlOwogCQlpbnQgKCptb3ZlKShzdHJ1Y3Qgbm91dmVhdV9jaGFubmVsICosCiAJCQkgICAg c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICosCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bm91dmVhdS9ub3V2ZWF1X3NnZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1 X3NnZG1hLmMKaW5kZXggMWNmNTI2MzVlYTc0Li4yNTZlYzViMzU0NzMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc2dkbWEuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9ub3V2ZWF1X3NnZG1hLmMKQEAgLTE2LDcgKzE2LDcgQEAgc3RydWN0IG5vdXZl YXVfc2dkbWFfYmUgewogfTsKIAogdm9pZAotbm91dmVhdV9zZ2RtYV9kZXN0cm95KHN0cnVjdCB0 dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pCitub3V2ZWF1X3NnZG1hX2Rl c3Ryb3koc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSkKIHsKIAlz dHJ1Y3Qgbm91dmVhdV9zZ2RtYV9iZSAqbnZiZSA9IChzdHJ1Y3Qgbm91dmVhdV9zZ2RtYV9iZSAq KXR0bTsKIApAQCAtMjksNyArMjksNyBAQCBub3V2ZWF1X3NnZG1hX2Rlc3Ryb3koc3RydWN0IHR0 bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSkKIH0KIAogaW50Ci1ub3V2ZWF1 X3NnZG1hX2JpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0 bSwgc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVnKQorbm91dmVhdV9zZ2RtYV9iaW5kKHN0cnVjdCB0 dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCB0dG1fcmVzb3VyY2Ug KnJlZykKIHsKIAlzdHJ1Y3Qgbm91dmVhdV9zZ2RtYV9iZSAqbnZiZSA9IChzdHJ1Y3Qgbm91dmVh dV9zZ2RtYV9iZSAqKXR0bTsKIAlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSA9IG5vdXZlYXVfYmRl dihiZGV2KTsKQEAgLTU2LDcgKzU2LDcgQEAgbm91dmVhdV9zZ2RtYV9iaW5kKHN0cnVjdCB0dG1f Ym9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCB0dG1fcmUKIH0KIAog dm9pZAotbm91dmVhdV9zZ2RtYV91bmJpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHN0 cnVjdCB0dG1fdHQgKnR0bSkKK25vdXZlYXVfc2dkbWFfdW5iaW5kKHN0cnVjdCB0dG1fZGV2aWNl ICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pCiB7CiAJc3RydWN0IG5vdXZlYXVfc2dkbWFfYmUg Km52YmUgPSAoc3RydWN0IG5vdXZlYXVfc2dkbWFfYmUgKil0dG07CiAJaWYgKG52YmUtPm1lbSkg ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmMKaW5kZXggYTM3YmMzZDdiMzhiLi40 OTUyODgxODJjMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVf dHRtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYwpAQCAtMzI0 LDEwICszMjQsMTAgQEAgbm91dmVhdV90dG1faW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSkK IAluZWVkX3N3aW90bGIgPSAhIXN3aW90bGJfbnJfdGJsKCk7CiAjZW5kaWYKIAotCXJldCA9IHR0 bV9ib19kZXZpY2VfaW5pdCgmZHJtLT50dG0uYmRldiwgJm5vdXZlYXVfYm9fZHJpdmVyLAotCQkJ CSBkcm0tPmRldi0+ZGV2LCBkZXYtPmFub25faW5vZGUtPmlfbWFwcGluZywKLQkJCQkgZGV2LT52 bWFfb2Zmc2V0X21hbmFnZXIsIG5lZWRfc3dpb3RsYiwKLQkJCQkgZHJtLT5jbGllbnQubW11LmRt YWJpdHMgPD0gMzIpOworCXJldCA9IHR0bV9kZXZpY2VfaW5pdCgmZHJtLT50dG0uYmRldiwgJm5v dXZlYXVfYm9fZHJpdmVyLCBkcm0tPmRldi0+ZGV2LAorCQkJCSAgZGV2LT5hbm9uX2lub2RlLT5p X21hcHBpbmcsCisJCQkJICBkZXYtPnZtYV9vZmZzZXRfbWFuYWdlciwgbmVlZF9zd2lvdGxiLAor CQkJCSAgZHJtLT5jbGllbnQubW11LmRtYWJpdHMgPD0gMzIpOwogCWlmIChyZXQpIHsKIAkJTlZf RVJST1IoZHJtLCAiZXJyb3IgaW5pdGlhbGlzaW5nIGJvIGRyaXZlciwgJWRcbiIsIHJldCk7CiAJ CXJldHVybiByZXQ7CkBAIC0zNzcsNyArMzc3LDcgQEAgbm91dmVhdV90dG1fZmluaShzdHJ1Y3Qg bm91dmVhdV9kcm0gKmRybSkKIAlub3V2ZWF1X3R0bV9maW5pX3ZyYW0oZHJtKTsKIAlub3V2ZWF1 X3R0bV9maW5pX2d0dChkcm0pOwogCi0JdHRtX2JvX2RldmljZV9yZWxlYXNlKCZkcm0tPnR0bS5i ZGV2KTsKKwl0dG1fZGV2aWNlX2ZpbmkoJmRybS0+dHRtLmJkZXYpOwogCiAJYXJjaF9waHlzX3dj X2RlbChkcm0tPnR0bS5tdHJyKTsKIAlkcm0tPnR0bS5tdHJyID0gMDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmggYi9kcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9ub3V2ZWF1X3R0bS5oCmluZGV4IDY5NTUyMDQ5YmI5Ni4uZGJmNmRjMjM4ZWZkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3R0bS5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmgKQEAgLTMsNyArMyw3IEBACiAjZGVmaW5l IF9fTk9VVkVBVV9UVE1fSF9fCiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IG5vdXZlYXVfZHJtICoK LW5vdXZlYXVfYmRldihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmQpCitub3V2ZWF1X2JkZXYoc3Ry dWN0IHR0bV9kZXZpY2UgKmJkKQogewogCXJldHVybiBjb250YWluZXJfb2YoYmQsIHN0cnVjdCBu b3V2ZWF1X2RybSwgdHRtLmJkZXYpOwogfQpAQCAtMjIsNyArMjIsNyBAQCBpbnQgIG5vdXZlYXVf dHRtX21tYXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwogaW50ICBu b3V2ZWF1X3R0bV9nbG9iYWxfaW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKik7CiB2b2lkIG5vdXZl YXVfdHRtX2dsb2JhbF9yZWxlYXNlKHN0cnVjdCBub3V2ZWF1X2RybSAqKTsKIAotaW50IG5vdXZl YXVfc2dkbWFfYmluZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAq dHRtLCBzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZWcpOwotdm9pZCBub3V2ZWF1X3NnZG1hX3VuYmlu ZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKTsKLXZvaWQg bm91dmVhdV9zZ2RtYV9kZXN0cm95KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3Qg dHRtX3R0ICp0dG0pOworaW50IG5vdXZlYXVfc2dkbWFfYmluZChzdHJ1Y3QgdHRtX2RldmljZSAq YmRldiwgc3RydWN0IHR0bV90dCAqdHRtLCBzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZWcpOwordm9p ZCBub3V2ZWF1X3NnZG1hX3VuYmluZChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0 bV90dCAqdHRtKTsKK3ZvaWQgbm91dmVhdV9zZ2RtYV9kZXN0cm95KHN0cnVjdCB0dG1fZGV2aWNl ICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcXhsL3F4bF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCmlu ZGV4IDgzYjU0ZjBkYWQ2MS4uMDEzNTRiNDNjNDEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcXhsL3F4bF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaApAQCAt MTI1LDcgKzEyNSw3IEBAIHN0cnVjdCBxeGxfb3V0cHV0IHsKICNkZWZpbmUgZHJtX2VuY29kZXJf dG9fcXhsX291dHB1dCh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IHF4bF9vdXRwdXQsIGVuYykK IAogc3RydWN0IHF4bF9tbWFuIHsKLQlzdHJ1Y3QgdHRtX2JvX2RldmljZQkJYmRldjsKKwlzdHJ1 Y3QgdHRtX2RldmljZQkJYmRldjsKIH07CiAKIHN0cnVjdCBxeGxfbWVtc2xvdCB7CkBAIC0zMzUs NyArMzM1LDcgQEAgaW50IHF4bF9tb2RlX2R1bWJfbW1hcChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAs CiAvKiBxeGwgdHRtICovCiBpbnQgcXhsX3R0bV9pbml0KHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2 KTsKIHZvaWQgcXhsX3R0bV9maW5pKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2KTsKLWludCBxeGxf dHRtX2lvX21lbV9yZXNlcnZlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAoraW50IHF4bF90 dG1faW9fbWVtX3Jlc2VydmUoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsCiAJCQkgICBzdHJ1Y3Qg dHRtX3Jlc291cmNlICptZW0pOwogCiAvKiBxeGwgaW1hZ2UgKi8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9xeGwvcXhsX3JlbGVhc2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3Jl bGVhc2UuYwppbmRleCAwZmNmYzk1MmQ1ZTkuLmM1MjQxMjcyNGMyNiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfcmVsZWFzZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwv cXhsX3JlbGVhc2UuYwpAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgcXhsX3JlbGVhc2VfdW5tYXAo c3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsCiB2b2lkIHF4bF9yZWxlYXNlX2ZlbmNlX2J1ZmZlcl9v YmplY3RzKHN0cnVjdCBxeGxfcmVsZWFzZSAqcmVsZWFzZSkKIHsKIAlzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKmJvOwotCXN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2OworCXN0cnVjdCB0dG1f ZGV2aWNlICpiZGV2OwogCXN0cnVjdCB0dG1fdmFsaWRhdGVfYnVmZmVyICplbnRyeTsKIAlzdHJ1 Y3QgcXhsX2RldmljZSAqcWRldjsKIApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgcXhsX3JlbGVh c2VfZmVuY2VfYnVmZmVyX29iamVjdHMoc3RydWN0IHF4bF9yZWxlYXNlICpyZWxlYXNlKQogCQkg ICAgICAgcmVsZWFzZS0+aWQgfCAweGYwMDAwMDAwLCByZWxlYXNlLT5iYXNlLnNlcW5vKTsKIAl0 cmFjZV9kbWFfZmVuY2VfZW1pdCgmcmVsZWFzZS0+YmFzZSk7CiAKLQlzcGluX2xvY2soJnR0bV9i b19nbG9iLmxydV9sb2NrKTsKKwlzcGluX2xvY2soJnR0bV9nbG9iLmxydV9sb2NrKTsKIAogCWxp c3RfZm9yX2VhY2hfZW50cnkoZW50cnksICZyZWxlYXNlLT5ib3MsIGhlYWQpIHsKIAkJYm8gPSBl bnRyeS0+Ym87CkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBxeGxfcmVsZWFzZV9mZW5jZV9idWZm ZXJfb2JqZWN0cyhzdHJ1Y3QgcXhsX3JlbGVhc2UgKnJlbGVhc2UpCiAJCXR0bV9ib19tb3ZlX3Rv X2xydV90YWlsKGJvLCAmYm8tPm1lbSwgTlVMTCk7CiAJCWRtYV9yZXN2X3VubG9jayhiby0+YmFz ZS5yZXN2KTsKIAl9Ci0Jc3Bpbl91bmxvY2soJnR0bV9ib19nbG9iLmxydV9sb2NrKTsKKwlzcGlu X3VubG9jaygmdHRtX2dsb2IubHJ1X2xvY2spOwogCXd3X2FjcXVpcmVfZmluaSgmcmVsZWFzZS0+ dGlja2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfdHRtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF90dG0uYwppbmRleCAzM2MwOWRjOTRmOGIuLmI3Zjc3 ZWI2ODVjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfdHRtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfdHRtLmMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRl ICJxeGxfZHJ2LmgiCiAjaW5jbHVkZSAicXhsX29iamVjdC5oIgogCi1zdGF0aWMgc3RydWN0IHF4 bF9kZXZpY2UgKnF4bF9nZXRfcWRldihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldikKK3N0YXRp YyBzdHJ1Y3QgcXhsX2RldmljZSAqcXhsX2dldF9xZGV2KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2 KQogewogCXN0cnVjdCBxeGxfbW1hbiAqbW1hbjsKIAlzdHJ1Y3QgcXhsX2RldmljZSAqcWRldjsK QEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgcXhsX2V2aWN0X2ZsYWdzKHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8sCiAJKnBsYWNlbWVudCA9IHFiby0+cGxhY2VtZW50OwogfQogCi1p bnQgcXhsX3R0bV9pb19tZW1fcmVzZXJ2ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK2lu dCBxeGxfdHRtX2lvX21lbV9yZXNlcnZlKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkJICAg c3RydWN0IHR0bV9yZXNvdXJjZSAqbWVtKQogewogCXN0cnVjdCBxeGxfZGV2aWNlICpxZGV2ID0g cXhsX2dldF9xZGV2KGJkZXYpOwpAQCAtOTgsOCArOTgsNyBAQCBpbnQgcXhsX3R0bV9pb19tZW1f cmVzZXJ2ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIC8qCiAgKiBUVE0gYmFja2VuZCBm dW5jdGlvbnMuCiAgKi8KLXN0YXRpYyB2b2lkIHF4bF90dG1fYmFja2VuZF9kZXN0cm95KHN0cnVj dCB0dG1fYm9fZGV2aWNlICpiZGV2LAotCQkJCSAgICBzdHJ1Y3QgdHRtX3R0ICp0dG0pCitzdGF0 aWMgdm9pZCBxeGxfdHRtX2JhY2tlbmRfZGVzdHJveShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwg c3RydWN0IHR0bV90dCAqdHRtKQogewogCXR0bV90dF9kZXN0cm95X2NvbW1vbihiZGV2LCB0dG0p OwogCXR0bV90dF9maW5pKHR0bSk7CkBAIC0xNzAsNyArMTY5LDcgQEAgc3RhdGljIHZvaWQgcXhs X2JvX2RlbGV0ZV9tZW1fbm90aWZ5KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pCiAJcXhs X2JvX21vdmVfbm90aWZ5KGJvLCBmYWxzZSwgTlVMTCk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgdHRt X2JvX2RyaXZlciBxeGxfYm9fZHJpdmVyID0geworc3RhdGljIHN0cnVjdCB0dG1fZGV2aWNlX2Z1 bmNzIHF4bF9ib19kcml2ZXIgPSB7CiAJLnR0bV90dF9jcmVhdGUgPSAmcXhsX3R0bV90dF9jcmVh dGUsCiAJLnR0bV90dF9kZXN0cm95ID0gJnF4bF90dG1fYmFja2VuZF9kZXN0cm95LAogCS5ldmlj dGlvbl92YWx1YWJsZSA9IHR0bV9ib19ldmljdGlvbl92YWx1YWJsZSwKQEAgLTE5MywxMCArMTky LDEwIEBAIGludCBxeGxfdHRtX2luaXQoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYpCiAJaW50IG51 bV9pb19wYWdlczsgLyogIT0gcm9tLT5udW1faW9fcGFnZXMsIHdlIGluY2x1ZGUgc3VyZmFjZTAg Ki8KIAogCS8qIE5vIG90aGVycyB1c2VyIG9mIGFkZHJlc3Mgc3BhY2Ugc28gc2V0IGl0IHRvIDAg Ki8KLQlyID0gdHRtX2JvX2RldmljZV9pbml0KCZxZGV2LT5tbWFuLmJkZXYsICZxeGxfYm9fZHJp dmVyLCBOVUxMLAotCQkJICAgICAgIHFkZXYtPmRkZXYuYW5vbl9pbm9kZS0+aV9tYXBwaW5nLAot CQkJICAgICAgIHFkZXYtPmRkZXYudm1hX29mZnNldF9tYW5hZ2VyLAotCQkJICAgICAgIGZhbHNl LCBmYWxzZSk7CisJciA9IHR0bV9kZXZpY2VfaW5pdCgmcWRldi0+bW1hbi5iZGV2LCAmcXhsX2Jv X2RyaXZlciwgTlVMTCwKKwkJCSAgICBxZGV2LT5kZGV2LmFub25faW5vZGUtPmlfbWFwcGluZywK KwkJCSAgICBxZGV2LT5kZGV2LnZtYV9vZmZzZXRfbWFuYWdlciwKKwkJCSAgICBmYWxzZSwgZmFs c2UpOwogCWlmIChyKSB7CiAJCURSTV9FUlJPUigiZmFpbGVkIGluaXRpYWxpemluZyBidWZmZXIg b2JqZWN0IGRyaXZlciglZCkuXG4iLCByKTsKIAkJcmV0dXJuIHI7CkBAIC0yMjcsNyArMjI2LDcg QEAgdm9pZCBxeGxfdHRtX2Zpbmkoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYpCiB7CiAJdHRtX3Jh bmdlX21hbl9maW5pKCZxZGV2LT5tbWFuLmJkZXYsIFRUTV9QTF9WUkFNKTsKIAl0dG1fcmFuZ2Vf bWFuX2ZpbmkoJnFkZXYtPm1tYW4uYmRldiwgVFRNX1BMX1BSSVYpOwotCXR0bV9ib19kZXZpY2Vf cmVsZWFzZSgmcWRldi0+bW1hbi5iZGV2KTsKKwl0dG1fZGV2aWNlX2ZpbmkoJnFkZXYtPm1tYW4u YmRldik7CiAJRFJNX0lORk8oInF4bDogdHRtIGZpbmFsaXplZFxuIik7CiB9CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbi5oCmluZGV4IGYwOTk4OWJkY2U5OC4uNDQ5YmEwMDk1ZWQ5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uLmgKQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdHJ1Y3QgcmFkZW9uX3N1cmZhY2Vf cmVnIHsKICAqIFRUTS4KICAqLwogc3RydWN0IHJhZGVvbl9tbWFuIHsKLQlzdHJ1Y3QgdHRtX2Jv X2RldmljZQkJYmRldjsKKwlzdHJ1Y3QgdHRtX2RldmljZQkJYmRldjsKIAlib29sCQkJCWluaXRp YWxpemVkOwogCiAjaWYgZGVmaW5lZChDT05GSUdfREVCVUdfRlMpCkBAIC0yODIyLDcgKzI4MjIs NyBAQCBleHRlcm4gaW50IHJhZGVvbl90dG1fdHRfc2V0X3VzZXJwdHIoc3RydWN0IHJhZGVvbl9k ZXZpY2UgKnJkZXYsCiAJCQkJICAgICB1aW50MzJfdCBmbGFncyk7CiBleHRlcm4gYm9vbCByYWRl b25fdHRtX3R0X2hhc191c2VycHRyKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3Qg dHRtX3R0ICp0dG0pOwogZXh0ZXJuIGJvb2wgcmFkZW9uX3R0bV90dF9pc19yZWFkb25seShzdHJ1 Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHR0bV90dCAqdHRtKTsKLWJvb2wgcmFkZW9u X3R0bV90dF9pc19ib3VuZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90 dCAqdHRtKTsKK2Jvb2wgcmFkZW9uX3R0bV90dF9pc19ib3VuZChzdHJ1Y3QgdHRtX2RldmljZSAq YmRldiwgc3RydWN0IHR0bV90dCAqdHRtKTsKIGV4dGVybiB2b2lkIHJhZGVvbl92cmFtX2xvY2F0 aW9uKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX21jICptYywgdTY0 IGJhc2UpOwogZXh0ZXJuIHZvaWQgcmFkZW9uX2d0dF9sb2NhdGlvbihzdHJ1Y3QgcmFkZW9uX2Rl dmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9tYyAqbWMpOwogZXh0ZXJuIGludCByYWRlb25fcmVz dW1lX2ttcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHJlc3VtZSwgYm9vbCBmYmNvbik7 CkBAIC0yODMyLDcgKzI4MzIsNyBAQCBleHRlcm4gdm9pZCByYWRlb25fdHRtX3NldF9hY3RpdmVf dnJhbV9zaXplKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCB1NjQgc2l6ZQogZXh0ZXJuIHZv aWQgcmFkZW9uX3Byb2dyYW1fcmVnaXN0ZXJfc2VxdWVuY2Uoc3RydWN0IHJhZGVvbl9kZXZpY2Ug KnJkZXYsCiAJCQkJCSAgICAgY29uc3QgdTMyICpyZWdpc3RlcnMsCiAJCQkJCSAgICAgY29uc3Qg dTMyIGFycmF5X3NpemUpOwotc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJhZGVvbl9nZXRfcmRldihz dHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldik7CitzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmFkZW9u X2dldF9yZGV2KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2KTsKIAogLyogS01TICovCiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5jIGIvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmMKaW5kZXggOWI4MTc4Njc4MmRlLi42YTMzNjI4 NDQ2NmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5jCkBAIC0zNzIsNyAr MzcyLDcgQEAgdm9pZCByYWRlb25fYm9fdW5waW4oc3RydWN0IHJhZGVvbl9ibyAqYm8pCiAKIGlu dCByYWRlb25fYm9fZXZpY3RfdnJhbShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIHsKLQlz dHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9ICZyZGV2LT5tbWFuLmJkZXY7CisJc3RydWN0IHR0 bV9kZXZpY2UgKmJkZXYgPSAmcmRldi0+bW1hbi5iZGV2OwogCXN0cnVjdCB0dG1fcmVzb3VyY2Vf bWFuYWdlciAqbWFuOwogCiAJLyogbGF0ZSAyLjYuMzMgZml4IElHUCBoaWJlcm5hdGUgLSB3ZSBu ZWVkIHBtIG9wcyB0byBkbyB0aGlzIGNvcnJlY3QgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9yYWRlb24vcmFkZW9uX3R0bS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f dHRtLmMKaW5kZXggYzZkNTc1ZjUwYzQ4Li41ZWQ2YTQ4MjQ2ZDYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3R0bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX3R0bS5jCkBAIC01NSwxMyArNTUsMTEgQEAKIHN0YXRpYyBpbnQgcmFkZW9uX3R0 bV9kZWJ1Z2ZzX2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpOwogc3RhdGljIHZvaWQg cmFkZW9uX3R0bV9kZWJ1Z2ZzX2Zpbmkoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpOwogCi1z dGF0aWMgaW50IHJhZGVvbl90dG1fdHRfYmluZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwK LQkJCSAgICAgIHN0cnVjdCB0dG1fdHQgKnR0bSwKK3N0YXRpYyBpbnQgcmFkZW9uX3R0bV90dF9i aW5kKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0sCiAJCQkgICAg ICBzdHJ1Y3QgdHRtX3Jlc291cmNlICpib19tZW0pOwotc3RhdGljIHZvaWQgcmFkZW9uX3R0bV90 dF91bmJpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCi0JCQkJIHN0cnVjdCB0dG1fdHQg KnR0bSk7CitzdGF0aWMgdm9pZCByYWRlb25fdHRtX3R0X3VuYmluZChzdHJ1Y3QgdHRtX2Rldmlj ZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKTsKIAotc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJh ZGVvbl9nZXRfcmRldihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldikKK3N0cnVjdCByYWRlb25f ZGV2aWNlICpyYWRlb25fZ2V0X3JkZXYoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYpCiB7CiAJc3Ry dWN0IHJhZGVvbl9tbWFuICptbWFuOwogCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2OwpAQCAt MjgwLDcgKzI3OCw3IEBAIHN0YXRpYyBpbnQgcmFkZW9uX2JvX21vdmUoc3RydWN0IHR0bV9idWZm ZXJfb2JqZWN0ICpibywgYm9vbCBldmljdCwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBy YWRlb25fdHRtX2lvX21lbV9yZXNlcnZlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1 Y3QgdHRtX3Jlc291cmNlICptZW0pCitzdGF0aWMgaW50IHJhZGVvbl90dG1faW9fbWVtX3Jlc2Vy dmUoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fcmVzb3VyY2UgKm1lbSkKIHsK IAlzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiA9IHJhZGVvbl9nZXRfcmRldihiZGV2KTsKIAlz aXplX3QgYnVzX3NpemUgPSAoc2l6ZV90KW1lbS0+bnVtX3BhZ2VzIDw8IFBBR0VfU0hJRlQ7CkBA IC0zNDcsNyArMzQ1LDcgQEAgc3RydWN0IHJhZGVvbl90dG1fdHQgewogfTsKIAogLyogcHJlcGFy ZSB0aGUgc2cgdGFibGUgd2l0aCB0aGUgdXNlciBwYWdlcyAqLwotc3RhdGljIGludCByYWRlb25f dHRtX3R0X3Bpbl91c2VycHRyKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRt X3R0ICp0dG0pCitzdGF0aWMgaW50IHJhZGVvbl90dG1fdHRfcGluX3VzZXJwdHIoc3RydWN0IHR0 bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSkKIHsKIAlzdHJ1Y3QgcmFkZW9uX2Rl dmljZSAqcmRldiA9IHJhZGVvbl9nZXRfcmRldihiZGV2KTsKIAlzdHJ1Y3QgcmFkZW9uX3R0bV90 dCAqZ3R0ID0gKHZvaWQgKil0dG07CkBAIC00MDgsNyArNDA2LDcgQEAgc3RhdGljIGludCByYWRl b25fdHRtX3R0X3Bpbl91c2VycHRyKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3Qg dHRtX3R0ICoKIAlyZXR1cm4gcjsKIH0KIAotc3RhdGljIHZvaWQgcmFkZW9uX3R0bV90dF91bnBp bl91c2VycHRyKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0p CitzdGF0aWMgdm9pZCByYWRlb25fdHRtX3R0X3VucGluX3VzZXJwdHIoc3RydWN0IHR0bV9kZXZp Y2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSkKIHsKIAlzdHJ1Y3QgcmFkZW9uX2RldmljZSAq cmRldiA9IHJhZGVvbl9nZXRfcmRldihiZGV2KTsKIAlzdHJ1Y3QgcmFkZW9uX3R0bV90dCAqZ3R0 ID0gKHZvaWQgKil0dG07CkBAIC00NDQsNyArNDQyLDcgQEAgc3RhdGljIGJvb2wgcmFkZW9uX3R0 bV9iYWNrZW5kX2lzX2JvdW5kKHN0cnVjdCB0dG1fdHQgKnR0bSkKIAlyZXR1cm4gKGd0dC0+Ym91 bmQpOwogfQogCi1zdGF0aWMgaW50IHJhZGVvbl90dG1fYmFja2VuZF9iaW5kKHN0cnVjdCB0dG1f Ym9fZGV2aWNlICpiZGV2LAorc3RhdGljIGludCByYWRlb25fdHRtX2JhY2tlbmRfYmluZChzdHJ1 Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJCQkgICBzdHJ1Y3QgdHRtX3R0ICp0dG0sCiAJCQkJICAg c3RydWN0IHR0bV9yZXNvdXJjZSAqYm9fbWVtKQogewpAQCAtNDgwLDcgKzQ3OCw3IEBAIHN0YXRp YyBpbnQgcmFkZW9uX3R0bV9iYWNrZW5kX2JpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYs CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHJhZGVvbl90dG1fYmFja2VuZF91bmJpbmQo c3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSkKK3N0YXRpYyB2 b2lkIHJhZGVvbl90dG1fYmFja2VuZF91bmJpbmQoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0 cnVjdCB0dG1fdHQgKnR0bSkKIHsKIAlzdHJ1Y3QgcmFkZW9uX3R0bV90dCAqZ3R0ID0gKHZvaWQg Kil0dG07CiAJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSByYWRlb25fZ2V0X3JkZXYoYmRl dik7CkBAIC00OTUsNyArNDkzLDcgQEAgc3RhdGljIHZvaWQgcmFkZW9uX3R0bV9iYWNrZW5kX3Vu YmluZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dAogCWd0dC0+Ym91 bmQgPSBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgcmFkZW9uX3R0bV9iYWNrZW5kX2Rlc3Ryb3ko c3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSkKK3N0YXRpYyB2 b2lkIHJhZGVvbl90dG1fYmFja2VuZF9kZXN0cm95KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBz dHJ1Y3QgdHRtX3R0ICp0dG0pCiB7CiAJc3RydWN0IHJhZGVvbl90dG1fdHQgKmd0dCA9ICh2b2lk ICopdHRtOwogCkBAIC01NTQsNyArNTUyLDcgQEAgc3RhdGljIHN0cnVjdCByYWRlb25fdHRtX3R0 ICpyYWRlb25fdHRtX3R0X3RvX2d0dChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwKIAlyZXR1 cm4gY29udGFpbmVyX29mKHR0bSwgc3RydWN0IHJhZGVvbl90dG1fdHQsIHR0bSk7CiB9CiAKLXN0 YXRpYyBpbnQgcmFkZW9uX3R0bV90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRl diwKK3N0YXRpYyBpbnQgcmFkZW9uX3R0bV90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX2RldmljZSAq YmRldiwKIAkJCQkgIHN0cnVjdCB0dG1fdHQgKnR0bSwKIAkJCQkgIHN0cnVjdCB0dG1fb3BlcmF0 aW9uX2N0eCAqY3R4KQogewpAQCAtNTgwLDcgKzU3OCw3IEBAIHN0YXRpYyBpbnQgcmFkZW9uX3R0 bV90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIAlyZXR1cm4gdHRtX3Bv b2xfYWxsb2MoJnJkZXYtPm1tYW4uYmRldi5wb29sLCB0dG0sIGN0eCk7CiB9CiAKLXN0YXRpYyB2 b2lkIHJhZGVvbl90dG1fdHRfdW5wb3B1bGF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwg c3RydWN0IHR0bV90dCAqdHRtKQorc3RhdGljIHZvaWQgcmFkZW9uX3R0bV90dF91bnBvcHVsYXRl KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pCiB7CiAJc3RydWN0 IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSByYWRlb25fZ2V0X3JkZXYoYmRldik7CiAJc3RydWN0IHJh ZGVvbl90dG1fdHQgKmd0dCA9IHJhZGVvbl90dG1fdHRfdG9fZ3R0KHJkZXYsIHR0bSk7CkBAIC02 MTMsNyArNjExLDcgQEAgaW50IHJhZGVvbl90dG1fdHRfc2V0X3VzZXJwdHIoc3RydWN0IHJhZGVv bl9kZXZpY2UgKnJkZXYsCiAJcmV0dXJuIDA7CiB9CiAKLWJvb2wgcmFkZW9uX3R0bV90dF9pc19i b3VuZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK2Jvb2wgcmFkZW9uX3R0bV90dF9pc19i b3VuZChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJCSAgICBzdHJ1Y3QgdHRtX3R0ICp0dG0p CiB7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfQUdQKQpAQCAtNjI0LDcgKzYyMiw3IEBAIGJvb2wg cmFkZW9uX3R0bV90dF9pc19ib3VuZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIAlyZXR1 cm4gcmFkZW9uX3R0bV9iYWNrZW5kX2lzX2JvdW5kKHR0bSk7CiB9CiAKLXN0YXRpYyBpbnQgcmFk ZW9uX3R0bV90dF9iaW5kKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAorc3RhdGljIGludCBy YWRlb25fdHRtX3R0X2JpbmQoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsCiAJCQkgICAgICBzdHJ1 Y3QgdHRtX3R0ICp0dG0sCiAJCQkgICAgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICpib19tZW0pCiB7 CkBAIC02NDIsNyArNjQwLDcgQEAgc3RhdGljIGludCByYWRlb25fdHRtX3R0X2JpbmQoc3RydWN0 IHR0bV9ib19kZXZpY2UgKmJkZXYsCiAJcmV0dXJuIHJhZGVvbl90dG1fYmFja2VuZF9iaW5kKGJk ZXYsIHR0bSwgYm9fbWVtKTsKIH0KIAotc3RhdGljIHZvaWQgcmFkZW9uX3R0bV90dF91bmJpbmQo c3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCitzdGF0aWMgdm9pZCByYWRlb25fdHRtX3R0X3Vu YmluZChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJCQkgc3RydWN0IHR0bV90dCAqdHRtKQog ewogI2lmIElTX0VOQUJMRUQoQ09ORklHX0FHUCkKQEAgLTY1Niw3ICs2NTQsNyBAQCBzdGF0aWMg dm9pZCByYWRlb25fdHRtX3R0X3VuYmluZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIAly YWRlb25fdHRtX2JhY2tlbmRfdW5iaW5kKGJkZXYsIHR0bSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJh ZGVvbl90dG1fdHRfZGVzdHJveShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK3N0YXRpYyB2 b2lkIHJhZGVvbl90dG1fdHRfZGVzdHJveShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJCQkg IHN0cnVjdCB0dG1fdHQgKnR0bSkKIHsKICNpZiBJU19FTkFCTEVEKENPTkZJR19BR1ApCkBAIC03 MDAsNyArNjk4LDcgQEAgcmFkZW9uX2JvX2RlbGV0ZV9tZW1fbm90aWZ5KHN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqYm8pCiAJcmFkZW9uX2JvX21vdmVfbm90aWZ5KGJvLCBmYWxzZSwgTlVMTCk7 CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgdHRtX2JvX2RyaXZlciByYWRlb25fYm9fZHJpdmVyID0gewor c3RhdGljIHN0cnVjdCB0dG1fZGV2aWNlX2Z1bmNzIHJhZGVvbl9ib19kcml2ZXIgPSB7CiAJLnR0 bV90dF9jcmVhdGUgPSAmcmFkZW9uX3R0bV90dF9jcmVhdGUsCiAJLnR0bV90dF9wb3B1bGF0ZSA9 ICZyYWRlb25fdHRtX3R0X3BvcHVsYXRlLAogCS50dG1fdHRfdW5wb3B1bGF0ZSA9ICZyYWRlb25f dHRtX3R0X3VucG9wdWxhdGUsCkBAIC03MTgsNyArNzE2LDcgQEAgaW50IHJhZGVvbl90dG1faW5p dChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIAlpbnQgcjsKIAogCS8qIE5vIG90aGVycyB1 c2VyIG9mIGFkZHJlc3Mgc3BhY2Ugc28gc2V0IGl0IHRvIDAgKi8KLQlyID0gdHRtX2JvX2Rldmlj ZV9pbml0KCZyZGV2LT5tbWFuLmJkZXYsICZyYWRlb25fYm9fZHJpdmVyLCByZGV2LT5kZXYsCisJ ciA9IHR0bV9kZXZpY2VfaW5pdCgmcmRldi0+bW1hbi5iZGV2LCAmcmFkZW9uX2JvX2RyaXZlciwg cmRldi0+ZGV2LAogCQkJICAgICAgIHJkZXYtPmRkZXYtPmFub25faW5vZGUtPmlfbWFwcGluZywK IAkJCSAgICAgICByZGV2LT5kZGV2LT52bWFfb2Zmc2V0X21hbmFnZXIsCiAJCQkgICAgICAgcmRl di0+bmVlZF9zd2lvdGxiLApAQCAtNzkxLDcgKzc4OSw3IEBAIHZvaWQgcmFkZW9uX3R0bV9maW5p KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogCX0KIAl0dG1fcmFuZ2VfbWFuX2ZpbmkoJnJk ZXYtPm1tYW4uYmRldiwgVFRNX1BMX1ZSQU0pOwogCXR0bV9yYW5nZV9tYW5fZmluaSgmcmRldi0+ bW1hbi5iZGV2LCBUVE1fUExfVFQpOwotCXR0bV9ib19kZXZpY2VfcmVsZWFzZSgmcmRldi0+bW1h bi5iZGV2KTsKKwl0dG1fZGV2aWNlX2ZpbmkoJnJkZXYtPm1tYW4uYmRldik7CiAJcmFkZW9uX2dh cnRfZmluaShyZGV2KTsKIAlyZGV2LT5tbWFuLmluaXRpYWxpemVkID0gZmFsc2U7CiAJRFJNX0lO Rk8oInJhZGVvbjogdHRtIGZpbmFsaXplZFxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdHRtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3R0bS9NYWtlZmlsZQppbmRleCBiNmY1 Zjg3YjI3MGYuLjhlNjQzN2VhZGFiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS9N YWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL01ha2VmaWxlCkBAIC01LDcgKzUsNyBA QAogdHRtLXkgOj0gdHRtX21lbW9yeS5vIHR0bV90dC5vIHR0bV9iby5vIFwKIAl0dG1fYm9fdXRp bC5vIHR0bV9ib192bS5vIHR0bV9tb2R1bGUubyBcCiAJdHRtX2V4ZWNidWZfdXRpbC5vIHR0bV9y YW5nZV9tYW5hZ2VyLm8gXAotCXR0bV9yZXNvdXJjZS5vIHR0bV9wb29sLm8KKwl0dG1fcmVzb3Vy Y2UubyB0dG1fcG9vbC5vIHR0bV9kZXZpY2UubwogdHRtLSQoQ09ORklHX0FHUCkgKz0gdHRtX2Fn cF9iYWNrZW5kLm8KIAogb2JqLSQoQ09ORklHX0RSTV9UVE0pICs9IHR0bS5vCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9hZ3BfYmFja2VuZC5jIGIvZHJpdmVycy9ncHUvZHJt L3R0bS90dG1fYWdwX2JhY2tlbmQuYwppbmRleCA4ZjlmYTQxODg4OTcuLjAyMjZhZTY5ZDNhYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYWdwX2JhY2tlbmQuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9hZ3BfYmFja2VuZC5jCkBAIC00OSw3ICs0OSw3IEBAIHN0 cnVjdCB0dG1fYWdwX2JhY2tlbmQgewogaW50IHR0bV9hZ3BfYmluZChzdHJ1Y3QgdHRtX3R0ICp0 dG0sIHN0cnVjdCB0dG1fcmVzb3VyY2UgKmJvX21lbSkKIHsKIAlzdHJ1Y3QgdHRtX2FncF9iYWNr ZW5kICphZ3BfYmUgPSBjb250YWluZXJfb2YodHRtLCBzdHJ1Y3QgdHRtX2FncF9iYWNrZW5kLCB0 dG0pOwotCXN0cnVjdCBwYWdlICpkdW1teV9yZWFkX3BhZ2UgPSB0dG1fYm9fZ2xvYi5kdW1teV9y ZWFkX3BhZ2U7CisJc3RydWN0IHBhZ2UgKmR1bW15X3JlYWRfcGFnZSA9IHR0bV9nbG9iLmR1bW15 X3JlYWRfcGFnZTsKIAlzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUgPSBib19tZW0tPm1tX25vZGU7 CiAJc3RydWN0IGFncF9tZW1vcnkgKm1lbTsKIAlpbnQgcmV0LCBjYWNoZWQgPSB0dG0tPmNhY2hp bmcgPT0gdHRtX2NhY2hlZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2Jv LmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCmluZGV4IGMyODlhNmEzN2ZmOS4uMjAy NTY3OTdmM2E2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKQEAgLTQ0LDE0ICs0NCw2IEBACiAKICNpbmNs dWRlICJ0dG1fbW9kdWxlLmgiCiAKLS8qCi0gKiB0dG1fZ2xvYmFsX211dGV4IC0gcHJvdGVjdGlu ZyB0aGUgZ2xvYmFsIEJPIHN0YXRlCi0gKi8KLURFRklORV9NVVRFWCh0dG1fZ2xvYmFsX211dGV4 KTsKLXVuc2lnbmVkIHR0bV9ib19nbG9iX3VzZV9jb3VudDsKLXN0cnVjdCB0dG1fYm9fZ2xvYmFs IHR0bV9ib19nbG9iOwotRVhQT1JUX1NZTUJPTCh0dG1fYm9fZ2xvYik7Ci0KIC8qIGRlZmF1bHQg ZGVzdHJ1Y3RvciAqLwogc3RhdGljIHZvaWQgdHRtX2JvX2RlZmF1bHRfZGVzdHJveShzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKmJvKQogewpAQCAtNzksMTMgKzcxLDEzIEBAIHN0YXRpYyB2b2lk IHR0bV9ib19tZW1fc3BhY2VfZGVidWcoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAog c3RhdGljIHZvaWQgdHRtX2JvX2RlbF9mcm9tX2xydShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qg KmJvKQogewotCXN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2ID0gYm8tPmJkZXY7CisJc3RydWN0 IHR0bV9kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKIAogCWxpc3RfZGVsX2luaXQoJmJvLT5zd2Fw KTsKIAlsaXN0X2RlbF9pbml0KCZiby0+bHJ1KTsKIAotCWlmIChiZGV2LT5kcml2ZXItPmRlbF9m cm9tX2xydV9ub3RpZnkpCi0JCWJkZXYtPmRyaXZlci0+ZGVsX2Zyb21fbHJ1X25vdGlmeShibyk7 CisJaWYgKGJkZXYtPmZ1bmNzLT5kZWxfZnJvbV9scnVfbm90aWZ5KQorCQliZGV2LT5mdW5jcy0+ ZGVsX2Zyb21fbHJ1X25vdGlmeShibyk7CiB9CiAKIHN0YXRpYyB2b2lkIHR0bV9ib19idWxrX21v dmVfc2V0X3BvcyhzdHJ1Y3QgdHRtX2xydV9idWxrX21vdmVfcG9zICpwb3MsCkBAIC0xMDAsNyAr OTIsNyBAQCB2b2lkIHR0bV9ib19tb3ZlX3RvX2xydV90YWlsKHN0cnVjdCB0dG1fYnVmZmVyX29i amVjdCAqYm8sCiAJCQkgICAgIHN0cnVjdCB0dG1fcmVzb3VyY2UgKm1lbSwKIAkJCSAgICAgc3Ry dWN0IHR0bV9scnVfYnVsa19tb3ZlICpidWxrKQogewotCXN0cnVjdCB0dG1fYm9fZGV2aWNlICpi ZGV2ID0gYm8tPmJkZXY7CisJc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKIAlz dHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbjsKIAogCWRtYV9yZXN2X2Fzc2VydF9oZWxk KGJvLT5iYXNlLnJlc3YpOwpAQCAtMTE3LDEyICsxMDksMTIgQEAgdm9pZCB0dG1fYm9fbW92ZV90 b19scnVfdGFpbChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCQkJCSAgICAgVFRNX1BB R0VfRkxBR19TV0FQUEVEKSkpIHsKIAkJc3RydWN0IGxpc3RfaGVhZCAqc3dhcDsKIAotCQlzd2Fw ID0gJnR0bV9ib19nbG9iLnN3YXBfbHJ1W2JvLT5wcmlvcml0eV07CisJCXN3YXAgPSAmdHRtX2ds b2Iuc3dhcF9scnVbYm8tPnByaW9yaXR5XTsKIAkJbGlzdF9tb3ZlX3RhaWwoJmJvLT5zd2FwLCBz d2FwKTsKIAl9CiAKLQlpZiAoYmRldi0+ZHJpdmVyLT5kZWxfZnJvbV9scnVfbm90aWZ5KQotCQli ZGV2LT5kcml2ZXItPmRlbF9mcm9tX2xydV9ub3RpZnkoYm8pOworCWlmIChiZGV2LT5mdW5jcy0+ ZGVsX2Zyb21fbHJ1X25vdGlmeSkKKwkJYmRldi0+ZnVuY3MtPmRlbF9mcm9tX2xydV9ub3RpZnko Ym8pOwogCiAJaWYgKGJ1bGsgJiYgIWJvLT5waW5fY291bnQpIHsKIAkJc3dpdGNoIChiby0+bWVt Lm1lbV90eXBlKSB7CkBAIC0xODUsNyArMTc3LDcgQEAgdm9pZCB0dG1fYm9fYnVsa19tb3ZlX2xy dV90YWlsKHN0cnVjdCB0dG1fbHJ1X2J1bGtfbW92ZSAqYnVsaykKIAkJZG1hX3Jlc3ZfYXNzZXJ0 X2hlbGQocG9zLT5maXJzdC0+YmFzZS5yZXN2KTsKIAkJZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQocG9z LT5sYXN0LT5iYXNlLnJlc3YpOwogCi0JCWxydSA9ICZ0dG1fYm9fZ2xvYi5zd2FwX2xydVtpXTsK KwkJbHJ1ID0gJnR0bV9nbG9iLnN3YXBfbHJ1W2ldOwogCQlsaXN0X2J1bGtfbW92ZV90YWlsKGxy dSwgJnBvcy0+Zmlyc3QtPnN3YXAsICZwb3MtPmxhc3QtPnN3YXApOwogCX0KIH0KQEAgLTE5Niw3 ICsxODgsNyBAQCBzdGF0aWMgaW50IHR0bV9ib19oYW5kbGVfbW92ZV9tZW0oc3RydWN0IHR0bV9i dWZmZXJfb2JqZWN0ICpibywKIAkJCQkgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4LAog CQkJCSAgc3RydWN0IHR0bV9wbGFjZSAqaG9wKQogewotCXN0cnVjdCB0dG1fYm9fZGV2aWNlICpi ZGV2ID0gYm8tPmJkZXY7CisJc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKIAlz dHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm9sZF9tYW4gPSB0dG1fbWFuYWdlcl90eXBlKGJk ZXYsIGJvLT5tZW0ubWVtX3R5cGUpOwogCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbmV3 X21hbiA9IHR0bV9tYW5hZ2VyX3R5cGUoYmRldiwgbWVtLT5tZW1fdHlwZSk7CiAJaW50IHJldDsK QEAgLTIyMiw3ICsyMTQsNyBAQCBzdGF0aWMgaW50IHR0bV9ib19oYW5kbGVfbW92ZV9tZW0oc3Ry dWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkJfQogCX0KIAotCXJldCA9IGJkZXYtPmRyaXZl ci0+bW92ZShibywgZXZpY3QsIGN0eCwgbWVtLCBob3ApOworCXJldCA9IGJkZXYtPmZ1bmNzLT5t b3ZlKGJvLCBldmljdCwgY3R4LCBtZW0sIGhvcCk7CiAJaWYgKHJldCkgewogCQlpZiAocmV0ID09 IC1FTVVMVElIT1ApCiAJCQlyZXR1cm4gcmV0OwpAQCAtMjUwLDggKzI0Miw4IEBAIHN0YXRpYyBp bnQgdHRtX2JvX2hhbmRsZV9tb3ZlX21lbShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAog CiBzdGF0aWMgdm9pZCB0dG1fYm9fY2xlYW51cF9tZW10eXBlX3VzZShzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKmJvKQogewotCWlmIChiby0+YmRldi0+ZHJpdmVyLT5kZWxldGVfbWVtX25vdGlm eSkKLQkJYm8tPmJkZXYtPmRyaXZlci0+ZGVsZXRlX21lbV9ub3RpZnkoYm8pOworCWlmIChiby0+ YmRldi0+ZnVuY3MtPmRlbGV0ZV9tZW1fbm90aWZ5KQorCQliby0+YmRldi0+ZnVuY3MtPmRlbGV0 ZV9tZW1fbm90aWZ5KGJvKTsKIAogCXR0bV9ib190dF9kZXN0cm95KGJvKTsKIAl0dG1fcmVzb3Vy Y2VfZnJlZShibywgJmJvLT5tZW0pOwpAQCAtMjc2LDkgKzI2OCw5IEBAIHN0YXRpYyBpbnQgdHRt X2JvX2luZGl2aWR1YWxpemVfcmVzdihzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQogCQkg KiByZWZlcmVuY2UgaXQgYW55IG1vcmUuIFRoZSBvbmx5IHRyaWNreSBjYXNlIGlzIHRoZSB0cnls b2NrIG9uCiAJCSAqIHRoZSByZXN2IG9iamVjdCB3aGlsZSBob2xkaW5nIHRoZSBscnVfbG9jay4K IAkJICovCi0JCXNwaW5fbG9jaygmdHRtX2JvX2dsb2IubHJ1X2xvY2spOworCQlzcGluX2xvY2so JnR0bV9nbG9iLmxydV9sb2NrKTsKIAkJYm8tPmJhc2UucmVzdiA9ICZiby0+YmFzZS5fcmVzdjsK LQkJc3Bpbl91bmxvY2soJnR0bV9ib19nbG9iLmxydV9sb2NrKTsKKwkJc3Bpbl91bmxvY2soJnR0 bV9nbG9iLmxydV9sb2NrKTsKIAl9CiAKIAlyZXR1cm4gcjsKQEAgLTMzNyw3ICszMjksNyBAQCBz dGF0aWMgaW50IHR0bV9ib19jbGVhbnVwX3JlZnMoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpi bywKIAogCQlpZiAodW5sb2NrX3Jlc3YpCiAJCQlkbWFfcmVzdl91bmxvY2soYm8tPmJhc2UucmVz dik7Ci0JCXNwaW5fdW5sb2NrKCZ0dG1fYm9fZ2xvYi5scnVfbG9jayk7CisJCXNwaW5fdW5sb2Nr KCZ0dG1fZ2xvYi5scnVfbG9jayk7CiAKIAkJbHJldCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9y Y3UocmVzdiwgdHJ1ZSwgaW50ZXJydXB0aWJsZSwKIAkJCQkJCSAzMCAqIEhaKTsKQEAgLTM0Nyw3 ICszMzksNyBAQCBzdGF0aWMgaW50IHR0bV9ib19jbGVhbnVwX3JlZnMoc3RydWN0IHR0bV9idWZm ZXJfb2JqZWN0ICpibywKIAkJZWxzZSBpZiAobHJldCA9PSAwKQogCQkJcmV0dXJuIC1FQlVTWTsK IAotCQlzcGluX2xvY2soJnR0bV9ib19nbG9iLmxydV9sb2NrKTsKKwkJc3Bpbl9sb2NrKCZ0dG1f Z2xvYi5scnVfbG9jayk7CiAJCWlmICh1bmxvY2tfcmVzdiAmJiAhZG1hX3Jlc3ZfdHJ5bG9jayhi by0+YmFzZS5yZXN2KSkgewogCQkJLyoKIAkJCSAqIFdlIHJhY2VkLCBhbmQgbG9zdCwgc29tZW9u ZSBlbHNlIGhvbGRzIHRoZSByZXNlcnZhdGlvbiBub3csCkBAIC0zNTcsNyArMzQ5LDcgQEAgc3Rh dGljIGludCB0dG1fYm9fY2xlYW51cF9yZWZzKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8s CiAJCQkgKiBkZWxheWVkIGRlc3RydWN0aW9uIHdvdWxkIHN1Y2NlZWQsIHNvIGp1c3QgcmV0dXJu IHN1Y2Nlc3MKIAkJCSAqIGhlcmUuCiAJCQkgKi8KLQkJCXNwaW5fdW5sb2NrKCZ0dG1fYm9fZ2xv Yi5scnVfbG9jayk7CisJCQlzcGluX3VubG9jaygmdHRtX2dsb2IubHJ1X2xvY2spOwogCQkJcmV0 dXJuIDA7CiAJCX0KIAkJcmV0ID0gMDsKQEAgLTM2NiwxMyArMzU4LDEzIEBAIHN0YXRpYyBpbnQg dHRtX2JvX2NsZWFudXBfcmVmcyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCWlmIChy ZXQgfHwgdW5saWtlbHkobGlzdF9lbXB0eSgmYm8tPmRkZXN0cm95KSkpIHsKIAkJaWYgKHVubG9j a19yZXN2KQogCQkJZG1hX3Jlc3ZfdW5sb2NrKGJvLT5iYXNlLnJlc3YpOwotCQlzcGluX3VubG9j aygmdHRtX2JvX2dsb2IubHJ1X2xvY2spOworCQlzcGluX3VubG9jaygmdHRtX2dsb2IubHJ1X2xv Y2spOwogCQlyZXR1cm4gcmV0OwogCX0KIAogCXR0bV9ib19kZWxfZnJvbV9scnUoYm8pOwogCWxp c3RfZGVsX2luaXQoJmJvLT5kZGVzdHJveSk7Ci0Jc3Bpbl91bmxvY2soJnR0bV9ib19nbG9iLmxy dV9sb2NrKTsKKwlzcGluX3VubG9jaygmdHRtX2dsb2IubHJ1X2xvY2spOwogCXR0bV9ib19jbGVh bnVwX21lbXR5cGVfdXNlKGJvKTsKIAogCWlmICh1bmxvY2tfcmVzdikKQEAgLTM4Nyw5ICszNzks OSBAQCBzdGF0aWMgaW50IHR0bV9ib19jbGVhbnVwX3JlZnMoc3RydWN0IHR0bV9idWZmZXJfb2Jq ZWN0ICpibywKICAqIFRyYXZlcnNlIHRoZSBkZWxheWVkIGxpc3QsIGFuZCBjYWxsIHR0bV9ib19j bGVhbnVwX3JlZnMgb24gYWxsCiAgKiBlbmNvdW50ZXJlZCBidWZmZXJzLgogICovCi1zdGF0aWMg Ym9vbCB0dG1fYm9fZGVsYXllZF9kZWxldGUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIGJv b2wgcmVtb3ZlX2FsbCkKK2Jvb2wgdHRtX2JvX2RlbGF5ZWRfZGVsZXRlKHN0cnVjdCB0dG1fZGV2 aWNlICpiZGV2LCBib29sIHJlbW92ZV9hbGwpCiB7Ci0Jc3RydWN0IHR0bV9ib19nbG9iYWwgKmds b2IgPSAmdHRtX2JvX2dsb2I7CisJc3RydWN0IHR0bV9nbG9iYWwgKmdsb2IgPSAmdHRtX2dsb2I7 CiAJc3RydWN0IGxpc3RfaGVhZCByZW1vdmVkOwogCWJvb2wgZW1wdHk7CiAKQEAgLTQyOCwyMSAr NDIwLDExIEBAIHN0YXRpYyBib29sIHR0bV9ib19kZWxheWVkX2RlbGV0ZShzdHJ1Y3QgdHRtX2Jv X2RldmljZSAqYmRldiwgYm9vbCByZW1vdmVfYWxsKQogCXJldHVybiBlbXB0eTsKIH0KIAotc3Rh dGljIHZvaWQgdHRtX2JvX2RlbGF5ZWRfd29ya3F1ZXVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKLXsKLQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9Ci0JICAgIGNvbnRhaW5lcl9vZih3 b3JrLCBzdHJ1Y3QgdHRtX2JvX2RldmljZSwgd3Eud29yayk7Ci0KLQlpZiAoIXR0bV9ib19kZWxh eWVkX2RlbGV0ZShiZGV2LCBmYWxzZSkpCi0JCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYmRldi0+ d3EsCi0JCQkJICAgICAgKChIWiAvIDEwMCkgPCAxKSA/IDEgOiBIWiAvIDEwMCk7Ci19Ci0KIHN0 YXRpYyB2b2lkIHR0bV9ib19yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKQogewogCXN0cnVjdCB0 dG1fYnVmZmVyX29iamVjdCAqYm8gPQogCSAgICBjb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0LCBrcmVmKTsKLQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9IGJv LT5iZGV2OworCXN0cnVjdCB0dG1fZGV2aWNlICpiZGV2ID0gYm8tPmJkZXY7CiAJc2l6ZV90IGFj Y19zaXplID0gYm8tPmFjY19zaXplOwogCWludCByZXQ7CiAKQEAgLTQ1Niw4ICs0MzgsOCBAQCBz dGF0aWMgdm9pZCB0dG1fYm9fcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAkJCQkJCSAgMzAg KiBIWik7CiAJCX0KIAotCQlpZiAoYm8tPmJkZXYtPmRyaXZlci0+cmVsZWFzZV9ub3RpZnkpCi0J CQliby0+YmRldi0+ZHJpdmVyLT5yZWxlYXNlX25vdGlmeShibyk7CisJCWlmIChiby0+YmRldi0+ ZnVuY3MtPnJlbGVhc2Vfbm90aWZ5KQorCQkJYm8tPmJkZXYtPmZ1bmNzLT5yZWxlYXNlX25vdGlm eShibyk7CiAKIAkJZHJtX3ZtYV9vZmZzZXRfcmVtb3ZlKGJkZXYtPnZtYV9tYW5hZ2VyLCAmYm8t PmJhc2Uudm1hX25vZGUpOwogCQl0dG1fbWVtX2lvX2ZyZWUoYmRldiwgJmJvLT5tZW0pOwpAQCAt NDY5LDcgKzQ1MSw3IEBAIHN0YXRpYyB2b2lkIHR0bV9ib19yZWxlYXNlKHN0cnVjdCBrcmVmICpr cmVmKQogCQl0dG1fYm9fZmx1c2hfYWxsX2ZlbmNlcyhibyk7CiAJCWJvLT5kZWxldGVkID0gdHJ1 ZTsKIAotCQlzcGluX2xvY2soJnR0bV9ib19nbG9iLmxydV9sb2NrKTsKKwkJc3Bpbl9sb2NrKCZ0 dG1fZ2xvYi5scnVfbG9jayk7CiAKIAkJLyoKIAkJICogTWFrZSBwaW5uZWQgYm9zIGltbWVkaWF0 ZWx5IGF2YWlsYWJsZSB0bwpAQCAtNDgzLDIyICs0NjUsMjIgQEAgc3RhdGljIHZvaWQgdHRtX2Jv X3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpCiAKIAkJa3JlZl9pbml0KCZiby0+a3JlZik7CiAJ CWxpc3RfYWRkX3RhaWwoJmJvLT5kZGVzdHJveSwgJmJkZXYtPmRkZXN0cm95KTsKLQkJc3Bpbl91 bmxvY2soJnR0bV9ib19nbG9iLmxydV9sb2NrKTsKKwkJc3Bpbl91bmxvY2soJnR0bV9nbG9iLmxy dV9sb2NrKTsKIAogCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmJkZXYtPndxLAogCQkJCSAgICAg ICgoSFogLyAxMDApIDwgMSkgPyAxIDogSFogLyAxMDApOwogCQlyZXR1cm47CiAJfQogCi0Jc3Bp bl9sb2NrKCZ0dG1fYm9fZ2xvYi5scnVfbG9jayk7CisJc3Bpbl9sb2NrKCZ0dG1fZ2xvYi5scnVf bG9jayk7CiAJdHRtX2JvX2RlbF9mcm9tX2xydShibyk7CiAJbGlzdF9kZWwoJmJvLT5kZGVzdHJv eSk7Ci0Jc3Bpbl91bmxvY2soJnR0bV9ib19nbG9iLmxydV9sb2NrKTsKKwlzcGluX3VubG9jaygm dHRtX2dsb2IubHJ1X2xvY2spOwogCiAJdHRtX2JvX2NsZWFudXBfbWVtdHlwZV91c2UoYm8pOwog CWRtYV9yZXN2X3VubG9jayhiby0+YmFzZS5yZXN2KTsKIAotCWF0b21pY19kZWMoJnR0bV9ib19n bG9iLmJvX2NvdW50KTsKKwlhdG9taWNfZGVjKCZ0dG1fZ2xvYi5ib19jb3VudCk7CiAJZG1hX2Zl bmNlX3B1dChiby0+bW92aW5nKTsKIAlpZiAoIXR0bV9ib191c2VzX2VtYmVkZGVkX2dlbV9vYmpl Y3QoYm8pKQogCQlkbWFfcmVzdl9maW5pKCZiby0+YmFzZS5fcmVzdik7CkBAIC01MTIsMTMgKzQ5 NCwxMyBAQCB2b2lkIHR0bV9ib19wdXQoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykKIH0K IEVYUE9SVF9TWU1CT0wodHRtX2JvX3B1dCk7CiAKLWludCB0dG1fYm9fbG9ja19kZWxheWVkX3dv cmtxdWV1ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldikKK2ludCB0dG1fYm9fbG9ja19kZWxh eWVkX3dvcmtxdWV1ZShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldikKIHsKIAlyZXR1cm4gY2FuY2Vs X2RlbGF5ZWRfd29ya19zeW5jKCZiZGV2LT53cSk7CiB9CiBFWFBPUlRfU1lNQk9MKHR0bV9ib19s b2NrX2RlbGF5ZWRfd29ya3F1ZXVlKTsKIAotdm9pZCB0dG1fYm9fdW5sb2NrX2RlbGF5ZWRfd29y a3F1ZXVlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBpbnQgcmVzY2hlZCkKK3ZvaWQgdHRt X2JvX3VubG9ja19kZWxheWVkX3dvcmtxdWV1ZShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgaW50 IHJlc2NoZWQpCiB7CiAJaWYgKHJlc2NoZWQpCiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYmRl di0+d3EsCkBAIC01MjksNyArNTExLDcgQEAgRVhQT1JUX1NZTUJPTCh0dG1fYm9fdW5sb2NrX2Rl bGF5ZWRfd29ya3F1ZXVlKTsKIHN0YXRpYyBpbnQgdHRtX2JvX2V2aWN0KHN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqYm8sCiAJCQlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCkKIHsKLQlz dHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9IGJvLT5iZGV2OworCXN0cnVjdCB0dG1fZGV2aWNl ICpiZGV2ID0gYm8tPmJkZXY7CiAJc3RydWN0IHR0bV9yZXNvdXJjZSBldmljdF9tZW07CiAJc3Ry dWN0IHR0bV9wbGFjZW1lbnQgcGxhY2VtZW50OwogCXN0cnVjdCB0dG1fcGxhY2UgaG9wOwpAQCAt NTQxLDcgKzUyMyw3IEBAIHN0YXRpYyBpbnQgdHRtX2JvX2V2aWN0KHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8sCiAKIAlwbGFjZW1lbnQubnVtX3BsYWNlbWVudCA9IDA7CiAJcGxhY2VtZW50 Lm51bV9idXN5X3BsYWNlbWVudCA9IDA7Ci0JYmRldi0+ZHJpdmVyLT5ldmljdF9mbGFncyhibywg JnBsYWNlbWVudCk7CisJYmRldi0+ZnVuY3MtPmV2aWN0X2ZsYWdzKGJvLCAmcGxhY2VtZW50KTsK IAogCWlmICghcGxhY2VtZW50Lm51bV9wbGFjZW1lbnQgJiYgIXBsYWNlbWVudC5udW1fYnVzeV9w bGFjZW1lbnQpIHsKIAkJdHRtX2JvX3dhaXQoYm8sIGZhbHNlLCBmYWxzZSk7CkBAIC02NTcsNyAr NjM5LDcgQEAgc3RhdGljIGludCB0dG1fbWVtX2V2aWN0X3dhaXRfYnVzeShzdHJ1Y3QgdHRtX2J1 ZmZlcl9vYmplY3QgKmJ1c3lfYm8sCiAJcmV0dXJuIHIgPT0gLUVERUFETEsgPyAtRUJVU1kgOiBy OwogfQogCi1pbnQgdHRtX21lbV9ldmljdF9maXJzdChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRl diwKK2ludCB0dG1fbWVtX2V2aWN0X2ZpcnN0KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkJ c3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJCQljb25zdCBzdHJ1Y3QgdHRtX3Bs YWNlICpwbGFjZSwKIAkJCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4LApAQCAtNjY4LDcg KzY1MCw3IEBAIGludCB0dG1fbWVtX2V2aWN0X2ZpcnN0KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpi ZGV2LAogCXVuc2lnbmVkIGk7CiAJaW50IHJldDsKIAotCXNwaW5fbG9jaygmdHRtX2JvX2dsb2Iu bHJ1X2xvY2spOworCXNwaW5fbG9jaygmdHRtX2dsb2IubHJ1X2xvY2spOwogCWZvciAoaSA9IDA7 IGkgPCBUVE1fTUFYX0JPX1BSSU9SSVRZOyArK2kpIHsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShi bywgJm1hbi0+bHJ1W2ldLCBscnUpIHsKIAkJCWJvb2wgYnVzeTsKQEAgLTY4MSw3ICs2NjMsNyBA QCBpbnQgdHRtX21lbV9ldmljdF9maXJzdChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIAkJ CQljb250aW51ZTsKIAkJCX0KIAotCQkJaWYgKHBsYWNlICYmICFiZGV2LT5kcml2ZXItPmV2aWN0 aW9uX3ZhbHVhYmxlKGJvLAorCQkJaWYgKHBsYWNlICYmICFiZGV2LT5mdW5jcy0+ZXZpY3Rpb25f dmFsdWFibGUoYm8sCiAJCQkJCQkJCSAgICAgIHBsYWNlKSkgewogCQkJCWlmIChsb2NrZWQpCiAJ CQkJCWRtYV9yZXN2X3VubG9jayhiby0+YmFzZS5yZXN2KTsKQEAgLTcwNSw3ICs2ODcsNyBAQCBp bnQgdHRtX21lbV9ldmljdF9maXJzdChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIAlpZiAo IWJvKSB7CiAJCWlmIChidXN5X2JvICYmICF0dG1fYm9fZ2V0X3VubGVzc196ZXJvKGJ1c3lfYm8p KQogCQkJYnVzeV9ibyA9IE5VTEw7Ci0JCXNwaW5fdW5sb2NrKCZ0dG1fYm9fZ2xvYi5scnVfbG9j ayk7CisJCXNwaW5fdW5sb2NrKCZ0dG1fZ2xvYi5scnVfbG9jayk7CiAJCXJldCA9IHR0bV9tZW1f ZXZpY3Rfd2FpdF9idXN5KGJ1c3lfYm8sIGN0eCwgdGlja2V0KTsKIAkJaWYgKGJ1c3lfYm8pCiAJ CQl0dG1fYm9fcHV0KGJ1c3lfYm8pOwpAQCAtNzE5LDcgKzcwMSw3IEBAIGludCB0dG1fbWVtX2V2 aWN0X2ZpcnN0KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAogCQlyZXR1cm4gcmV0OwogCX0K IAotCXNwaW5fdW5sb2NrKCZ0dG1fYm9fZ2xvYi5scnVfbG9jayk7CisJc3Bpbl91bmxvY2soJnR0 bV9nbG9iLmxydV9sb2NrKTsKIAogCXJldCA9IHR0bV9ib19ldmljdChibywgY3R4KTsKIAlpZiAo bG9ja2VkKQpAQCAtNzc0LDcgKzc1Niw3IEBAIHN0YXRpYyBpbnQgdHRtX2JvX21lbV9mb3JjZV9z cGFjZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCQkJCSAgc3RydWN0IHR0bV9yZXNv dXJjZSAqbWVtLAogCQkJCSAgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgpCiB7Ci0Jc3Ry dWN0IHR0bV9ib19kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKKwlzdHJ1Y3QgdHRtX2RldmljZSAq YmRldiA9IGJvLT5iZGV2OwogCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuID0gdHRt X21hbmFnZXJfdHlwZShiZGV2LCBtZW0tPm1lbV90eXBlKTsKIAlzdHJ1Y3Qgd3dfYWNxdWlyZV9j dHggKnRpY2tldDsKIAlpbnQgcmV0OwpAQCAtODA5LDcgKzc5MSw3IEBAIHN0YXRpYyBpbnQgdHRt X2JvX21lbV9wbGFjZW1lbnQoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkJCQljb25z dCBzdHJ1Y3QgdHRtX3BsYWNlICpwbGFjZSwKIAkJCQlzdHJ1Y3QgdHRtX3Jlc291cmNlICptZW0p CiB7Ci0Jc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKKwlzdHJ1Y3QgdHRt X2RldmljZSAqYmRldiA9IGJvLT5iZGV2OwogCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAq bWFuOwogCiAJbWFuID0gdHRtX21hbmFnZXJfdHlwZShiZGV2LCBwbGFjZS0+bWVtX3R5cGUpOwpA QCAtODE5LDkgKzgwMSw5IEBAIHN0YXRpYyBpbnQgdHRtX2JvX21lbV9wbGFjZW1lbnQoc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAltZW0tPm1lbV90eXBlID0gcGxhY2UtPm1lbV90eXBl OwogCW1lbS0+cGxhY2VtZW50ID0gcGxhY2UtPmZsYWdzOwogCi0Jc3Bpbl9sb2NrKCZ0dG1fYm9f Z2xvYi5scnVfbG9jayk7CisJc3Bpbl9sb2NrKCZ0dG1fZ2xvYi5scnVfbG9jayk7CiAJdHRtX2Jv X21vdmVfdG9fbHJ1X3RhaWwoYm8sIG1lbSwgTlVMTCk7Ci0Jc3Bpbl91bmxvY2soJnR0bV9ib19n bG9iLmxydV9sb2NrKTsKKwlzcGluX3VubG9jaygmdHRtX2dsb2IubHJ1X2xvY2spOwogCiAJcmV0 dXJuIDA7CiB9CkBAIC04MzksNyArODIxLDcgQEAgaW50IHR0bV9ib19tZW1fc3BhY2Uoc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkJCXN0cnVjdCB0dG1fcmVzb3VyY2UgKm1lbSwKIAkJ CXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4KQogewotCXN0cnVjdCB0dG1fYm9fZGV2aWNl ICpiZGV2ID0gYm8tPmJkZXY7CisJc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsK IAlib29sIHR5cGVfZm91bmQgPSBmYWxzZTsKIAlpbnQgaSwgcmV0OwogCkBAIC0xMDU3LDcgKzEw MzksNyBAQCBpbnQgdHRtX2JvX3ZhbGlkYXRlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8s CiB9CiBFWFBPUlRfU1lNQk9MKHR0bV9ib192YWxpZGF0ZSk7CiAKLWludCB0dG1fYm9faW5pdF9y ZXNlcnZlZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK2ludCB0dG1fYm9faW5pdF9yZXNl cnZlZChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJCSBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmpl Y3QgKmJvLAogCQkJIHNpemVfdCBzaXplLAogCQkJIGVudW0gdHRtX2JvX3R5cGUgdHlwZSwKQEAg LTExMTcsNyArMTA5OSw3IEBAIGludCB0dG1fYm9faW5pdF9yZXNlcnZlZChzdHJ1Y3QgdHRtX2Jv X2RldmljZSAqYmRldiwKIAkJZG1hX3Jlc3ZfaW5pdCgmYm8tPmJhc2UuX3Jlc3YpOwogCQlkcm1f dm1hX25vZGVfcmVzZXQoJmJvLT5iYXNlLnZtYV9ub2RlKTsKIAl9Ci0JYXRvbWljX2luYygmdHRt X2JvX2dsb2IuYm9fY291bnQpOworCWF0b21pY19pbmMoJnR0bV9nbG9iLmJvX2NvdW50KTsKIAog CS8qCiAJICogRm9yIHR0bV9ib190eXBlX2RldmljZSBidWZmZXJzLCBhbGxvY2F0ZQpAQCAtMTE1 Myw3ICsxMTM1LDcgQEAgaW50IHR0bV9ib19pbml0X3Jlc2VydmVkKHN0cnVjdCB0dG1fYm9fZGV2 aWNlICpiZGV2LAogfQogRVhQT1JUX1NZTUJPTCh0dG1fYm9faW5pdF9yZXNlcnZlZCk7CiAKLWlu dCB0dG1fYm9faW5pdChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK2ludCB0dG1fYm9faW5p dChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpi bywKIAkJc2l6ZV90IHNpemUsCiAJCWVudW0gdHRtX2JvX3R5cGUgdHlwZSwKQEAgLTExODEsNyAr MTE2Myw3IEBAIGludCB0dG1fYm9faW5pdChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIH0K IEVYUE9SVF9TWU1CT0wodHRtX2JvX2luaXQpOwogCi1zaXplX3QgdHRtX2JvX2RtYV9hY2Nfc2l6 ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK3NpemVfdCB0dG1fYm9fZG1hX2FjY19zaXpl KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkJICAgdW5zaWduZWQgbG9uZyBib19zaXplLAog CQkJICAgdW5zaWduZWQgc3RydWN0X3NpemUpCiB7CkBAIC0xMTk1LDE0OCArMTE3NywxMyBAQCBz aXplX3QgdHRtX2JvX2RtYV9hY2Nfc2l6ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIH0K IEVYUE9SVF9TWU1CT0wodHRtX2JvX2RtYV9hY2Nfc2l6ZSk7CiAKLXN0YXRpYyB2b2lkIHR0bV9i b19nbG9iYWxfcmVsZWFzZSh2b2lkKQotewotCXN0cnVjdCB0dG1fYm9fZ2xvYmFsICpnbG9iID0g JnR0bV9ib19nbG9iOwotCi0JbXV0ZXhfbG9jaygmdHRtX2dsb2JhbF9tdXRleCk7Ci0JaWYgKC0t dHRtX2JvX2dsb2JfdXNlX2NvdW50ID4gMCkKLQkJZ290byBvdXQ7Ci0KLQlrb2JqZWN0X2RlbCgm Z2xvYi0+a29iaik7Ci0Ja29iamVjdF9wdXQoJmdsb2ItPmtvYmopOwotCXR0bV9tZW1fZ2xvYmFs X3JlbGVhc2UoJnR0bV9tZW1fZ2xvYik7Ci0JX19mcmVlX3BhZ2UoZ2xvYi0+ZHVtbXlfcmVhZF9w YWdlKTsKLQltZW1zZXQoZ2xvYiwgMCwgc2l6ZW9mKCpnbG9iKSk7Ci1vdXQ6Ci0JbXV0ZXhfdW5s b2NrKCZ0dG1fZ2xvYmFsX211dGV4KTsKLX0KLQotc3RhdGljIGludCB0dG1fYm9fZ2xvYmFsX2lu aXQodm9pZCkKLXsKLQlzdHJ1Y3QgdHRtX2JvX2dsb2JhbCAqZ2xvYiA9ICZ0dG1fYm9fZ2xvYjsK LQlpbnQgcmV0ID0gMDsKLQl1bnNpZ25lZCBpOwotCi0JbXV0ZXhfbG9jaygmdHRtX2dsb2JhbF9t dXRleCk7Ci0JaWYgKCsrdHRtX2JvX2dsb2JfdXNlX2NvdW50ID4gMSkKLQkJZ290byBvdXQ7Ci0K LQlyZXQgPSB0dG1fbWVtX2dsb2JhbF9pbml0KCZ0dG1fbWVtX2dsb2IpOwotCWlmIChyZXQpCi0J CWdvdG8gb3V0OwotCi0Jc3Bpbl9sb2NrX2luaXQoJmdsb2ItPmxydV9sb2NrKTsKLQlnbG9iLT5k dW1teV9yZWFkX3BhZ2UgPSBhbGxvY19wYWdlKF9fR0ZQX1pFUk8gfCBHRlBfRE1BMzIpOwotCi0J aWYgKHVubGlrZWx5KGdsb2ItPmR1bW15X3JlYWRfcGFnZSA9PSBOVUxMKSkgewotCQlyZXQgPSAt RU5PTUVNOwotCQlnb3RvIG91dDsKLQl9Ci0KLQlmb3IgKGkgPSAwOyBpIDwgVFRNX01BWF9CT19Q UklPUklUWTsgKytpKQotCQlJTklUX0xJU1RfSEVBRCgmZ2xvYi0+c3dhcF9scnVbaV0pOwotCUlO SVRfTElTVF9IRUFEKCZnbG9iLT5kZXZpY2VfbGlzdCk7Ci0JYXRvbWljX3NldCgmZ2xvYi0+Ym9f Y291bnQsIDApOwotCi0JZGVidWdmc19jcmVhdGVfYXRvbWljX3QoImJ1ZmZlcl9vYmplY3RzIiwg MDQ0NCwgdHRtX2RlYnVnZnNfcm9vdCwKLQkJCQkmZ2xvYi0+Ym9fY291bnQpOwotb3V0OgotCW11 dGV4X3VubG9jaygmdHRtX2dsb2JhbF9tdXRleCk7Ci0JcmV0dXJuIHJldDsKLX0KLQotaW50IHR0 bV9ib19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldikKLXsKLQlzdHJ1 Y3QgdHRtX2JvX2dsb2JhbCAqZ2xvYiA9ICZ0dG1fYm9fZ2xvYjsKLQlpbnQgcmV0ID0gMDsKLQl1 bnNpZ25lZCBpOwotCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuOwotCi0JbWFuID0g dHRtX21hbmFnZXJfdHlwZShiZGV2LCBUVE1fUExfU1lTVEVNKTsKLQl0dG1fcmVzb3VyY2VfbWFu YWdlcl9zZXRfdXNlZChtYW4sIGZhbHNlKTsKLQl0dG1fc2V0X2RyaXZlcl9tYW5hZ2VyKGJkZXYs IFRUTV9QTF9TWVNURU0sIE5VTEwpOwotCi0JbXV0ZXhfbG9jaygmdHRtX2dsb2JhbF9tdXRleCk7 Ci0JbGlzdF9kZWwoJmJkZXYtPmRldmljZV9saXN0KTsKLQltdXRleF91bmxvY2soJnR0bV9nbG9i YWxfbXV0ZXgpOwotCi0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZiZGV2LT53cSk7Ci0KLQlp ZiAodHRtX2JvX2RlbGF5ZWRfZGVsZXRlKGJkZXYsIHRydWUpKQotCQlwcl9kZWJ1ZygiRGVsYXll ZCBkZXN0cm95IGxpc3Qgd2FzIGNsZWFuXG4iKTsKLQotCXNwaW5fbG9jaygmZ2xvYi0+bHJ1X2xv Y2spOwotCWZvciAoaSA9IDA7IGkgPCBUVE1fTUFYX0JPX1BSSU9SSVRZOyArK2kpCi0JCWlmIChs aXN0X2VtcHR5KCZtYW4tPmxydVswXSkpCi0JCQlwcl9kZWJ1ZygiU3dhcCBsaXN0ICVkIHdhcyBj bGVhblxuIiwgaSk7Ci0Jc3Bpbl91bmxvY2soJmdsb2ItPmxydV9sb2NrKTsKLQotCXR0bV9wb29s X2ZpbmkoJmJkZXYtPnBvb2wpOwotCi0JaWYgKCFyZXQpCi0JCXR0bV9ib19nbG9iYWxfcmVsZWFz ZSgpOwotCi0JcmV0dXJuIHJldDsKLX0KLUVYUE9SVF9TWU1CT0wodHRtX2JvX2RldmljZV9yZWxl YXNlKTsKLQotc3RhdGljIHZvaWQgdHRtX2JvX2luaXRfc3lzbWFuKHN0cnVjdCB0dG1fYm9fZGV2 aWNlICpiZGV2KQotewotCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuID0gJmJkZXYt PnN5c21hbjsKLQotCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgc3lzdGVtIG1lbW9yeSBidWZmZXIg dHlwZS4KLQkgKiBPdGhlciB0eXBlcyBuZWVkIHRvIGJlIGRyaXZlciAvIElPQ1RMIGluaXRpYWxp emVkLgotCSAqLwotCW1hbi0+dXNlX3R0ID0gdHJ1ZTsKLQotCXR0bV9yZXNvdXJjZV9tYW5hZ2Vy X2luaXQobWFuLCAwKTsKLQl0dG1fc2V0X2RyaXZlcl9tYW5hZ2VyKGJkZXYsIFRUTV9QTF9TWVNU RU0sIG1hbik7Ci0JdHRtX3Jlc291cmNlX21hbmFnZXJfc2V0X3VzZWQobWFuLCB0cnVlKTsKLX0K LQotaW50IHR0bV9ib19kZXZpY2VfaW5pdChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKLQkJ ICAgICAgIHN0cnVjdCB0dG1fYm9fZHJpdmVyICpkcml2ZXIsCi0JCSAgICAgICBzdHJ1Y3QgZGV2 aWNlICpkZXYsCi0JCSAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKLQkJICAg ICAgIHN0cnVjdCBkcm1fdm1hX29mZnNldF9tYW5hZ2VyICp2bWFfbWFuYWdlciwKLQkJICAgICAg IGJvb2wgdXNlX2RtYV9hbGxvYywgYm9vbCB1c2VfZG1hMzIpCi17Ci0Jc3RydWN0IHR0bV9ib19n bG9iYWwgKmdsb2IgPSAmdHRtX2JvX2dsb2I7Ci0JaW50IHJldDsKLQotCWlmIChXQVJOX09OKHZt YV9tYW5hZ2VyID09IE5VTEwpKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCXJldCA9IHR0bV9ib19n bG9iYWxfaW5pdCgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQliZGV2LT5kcml2ZXIg PSBkcml2ZXI7Ci0KLQl0dG1fYm9faW5pdF9zeXNtYW4oYmRldik7Ci0JdHRtX3Bvb2xfaW5pdCgm YmRldi0+cG9vbCwgZGV2LCB1c2VfZG1hX2FsbG9jLCB1c2VfZG1hMzIpOwotCi0JYmRldi0+dm1h X21hbmFnZXIgPSB2bWFfbWFuYWdlcjsKLQlJTklUX0RFTEFZRURfV09SSygmYmRldi0+d3EsIHR0 bV9ib19kZWxheWVkX3dvcmtxdWV1ZSk7Ci0JSU5JVF9MSVNUX0hFQUQoJmJkZXYtPmRkZXN0cm95 KTsKLQliZGV2LT5kZXZfbWFwcGluZyA9IG1hcHBpbmc7Ci0JbXV0ZXhfbG9jaygmdHRtX2dsb2Jh bF9tdXRleCk7Ci0JbGlzdF9hZGRfdGFpbCgmYmRldi0+ZGV2aWNlX2xpc3QsICZnbG9iLT5kZXZp Y2VfbGlzdCk7Ci0JbXV0ZXhfdW5sb2NrKCZ0dG1fZ2xvYmFsX211dGV4KTsKLQotCXJldHVybiAw OwotfQotRVhQT1JUX1NZTUJPTCh0dG1fYm9fZGV2aWNlX2luaXQpOwotCiAvKgogICogYnVmZmVy IG9iamVjdCB2bSBmdW5jdGlvbnMuCiAgKi8KIAogdm9pZCB0dG1fYm9fdW5tYXBfdmlydHVhbChz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQogewotCXN0cnVjdCB0dG1fYm9fZGV2aWNlICpi ZGV2ID0gYm8tPmJkZXY7CisJc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKIAog CWRybV92bWFfbm9kZV91bm1hcCgmYm8tPmJhc2Uudm1hX25vZGUsIGJkZXYtPmRldl9tYXBwaW5n KTsKIAl0dG1fbWVtX2lvX2ZyZWUoYmRldiwgJmJvLT5tZW0pOwpAQCAtMTM3NCw3ICsxMjIxLDcg QEAgRVhQT1JUX1NZTUJPTCh0dG1fYm9fd2FpdCk7CiAgKi8KIGludCB0dG1fYm9fc3dhcG91dChz dHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCkKIHsKLQlzdHJ1Y3QgdHRtX2JvX2dsb2JhbCAq Z2xvYiA9ICZ0dG1fYm9fZ2xvYjsKKwlzdHJ1Y3QgdHRtX2dsb2JhbCAqZ2xvYiA9ICZ0dG1fZ2xv YjsKIAlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvOwogCWludCByZXQgPSAtRUJVU1k7CiAJ Ym9vbCBsb2NrZWQ7CkBAIC0xNDUyLDggKzEyOTksOCBAQCBpbnQgdHRtX2JvX3N3YXBvdXQoc3Ry dWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgpCiAJICogYW55b25lIHRyaWVzIHRvIGFjY2VzcyBh IHR0bSBwYWdlLgogCSAqLwogCi0JaWYgKGJvLT5iZGV2LT5kcml2ZXItPnN3YXBfbm90aWZ5KQot CQliby0+YmRldi0+ZHJpdmVyLT5zd2FwX25vdGlmeShibyk7CisJaWYgKGJvLT5iZGV2LT5mdW5j cy0+c3dhcF9ub3RpZnkpCisJCWJvLT5iZGV2LT5mdW5jcy0+c3dhcF9ub3RpZnkoYm8pOwogCiAJ cmV0ID0gdHRtX3R0X3N3YXBvdXQoYm8tPmJkZXYsIGJvLT50dG0pOwogb3V0OgpAQCAtMTQ3OCw0 ICsxMzI1LDMgQEAgdm9pZCB0dG1fYm9fdHRfZGVzdHJveShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmpl Y3QgKmJvKQogCXR0bV90dF9kZXN0cm95KGJvLT5iZGV2LCBiby0+dHRtKTsKIAliby0+dHRtID0g TlVMTDsKIH0KLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdXRpbC5j IGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdXRpbC5jCmluZGV4IDM5OGQ1MDEzZmMzOS4u ZGIwZjI2NjFkNTA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191dGls LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdXRpbC5jCkBAIC00NiwzMyArNDYs MzMgQEAgc3RydWN0IHR0bV90cmFuc2Zlcl9vYmogewogCXN0cnVjdCB0dG1fYnVmZmVyX29iamVj dCAqYm87CiB9OwogCi1pbnQgdHRtX21lbV9pb19yZXNlcnZlKHN0cnVjdCB0dG1fYm9fZGV2aWNl ICpiZGV2LAoraW50IHR0bV9tZW1faW9fcmVzZXJ2ZShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwK IAkJICAgICAgIHN0cnVjdCB0dG1fcmVzb3VyY2UgKm1lbSkKIHsKIAlpZiAobWVtLT5idXMub2Zm c2V0IHx8IG1lbS0+YnVzLmFkZHIpCiAJCXJldHVybiAwOwogCiAJbWVtLT5idXMuaXNfaW9tZW0g PSBmYWxzZTsKLQlpZiAoIWJkZXYtPmRyaXZlci0+aW9fbWVtX3Jlc2VydmUpCisJaWYgKCFiZGV2 LT5mdW5jcy0+aW9fbWVtX3Jlc2VydmUpCiAJCXJldHVybiAwOwogCi0JcmV0dXJuIGJkZXYtPmRy aXZlci0+aW9fbWVtX3Jlc2VydmUoYmRldiwgbWVtKTsKKwlyZXR1cm4gYmRldi0+ZnVuY3MtPmlv X21lbV9yZXNlcnZlKGJkZXYsIG1lbSk7CiB9CiAKLXZvaWQgdHRtX21lbV9pb19mcmVlKHN0cnVj dCB0dG1fYm9fZGV2aWNlICpiZGV2LAordm9pZCB0dG1fbWVtX2lvX2ZyZWUoc3RydWN0IHR0bV9k ZXZpY2UgKmJkZXYsCiAJCSAgICAgc3RydWN0IHR0bV9yZXNvdXJjZSAqbWVtKQogewogCWlmICgh bWVtLT5idXMub2Zmc2V0ICYmICFtZW0tPmJ1cy5hZGRyKQogCQlyZXR1cm47CiAKLQlpZiAoYmRl di0+ZHJpdmVyLT5pb19tZW1fZnJlZSkKLQkJYmRldi0+ZHJpdmVyLT5pb19tZW1fZnJlZShiZGV2 LCBtZW0pOworCWlmIChiZGV2LT5mdW5jcy0+aW9fbWVtX2ZyZWUpCisJCWJkZXYtPmZ1bmNzLT5p b19tZW1fZnJlZShiZGV2LCBtZW0pOwogCiAJbWVtLT5idXMub2Zmc2V0ID0gMDsKIAltZW0tPmJ1 cy5hZGRyID0gTlVMTDsKIH0KIAotc3RhdGljIGludCB0dG1fcmVzb3VyY2VfaW9yZW1hcChzdHJ1 Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK3N0YXRpYyBpbnQgdHRtX3Jlc291cmNlX2lvcmVtYXAo c3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsCiAJCQkgICAgICAgc3RydWN0IHR0bV9yZXNvdXJjZSAq bWVtLAogCQkJICAgICAgIHZvaWQgKip2aXJ0dWFsKQogewpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0 YXRpYyBpbnQgdHRtX3Jlc291cmNlX2lvcmVtYXAoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYs CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHR0bV9yZXNvdXJjZV9pb3VubWFwKHN0cnVj dCB0dG1fYm9fZGV2aWNlICpiZGV2LAorc3RhdGljIHZvaWQgdHRtX3Jlc291cmNlX2lvdW5tYXAo c3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsCiAJCQkJc3RydWN0IHR0bV9yZXNvdXJjZSAqbWVtLAog CQkJCXZvaWQgKnZpcnR1YWwpCiB7CkBAIC0xNzIsNyArMTcyLDcgQEAgaW50IHR0bV9ib19tb3Zl X21lbWNweShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCQkgICAgICAgc3RydWN0IHR0 bV9vcGVyYXRpb25fY3R4ICpjdHgsCiAJCSAgICAgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICpuZXdf bWVtKQogewotCXN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2ID0gYm8tPmJkZXY7CisJc3RydWN0 IHR0bV9kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKIAlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFn ZXIgKm1hbiA9IHR0bV9tYW5hZ2VyX3R5cGUoYmRldiwgbmV3X21lbS0+bWVtX3R5cGUpOwogCXN0 cnVjdCB0dG1fdHQgKnR0bSA9IGJvLT50dG07CiAJc3RydWN0IHR0bV9yZXNvdXJjZSAqb2xkX21l bSA9ICZiby0+bWVtOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyBpbnQgdHRtX2J1ZmZlcl9v YmplY3RfdHJhbnNmZXIoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkgKiBUT0RPOiBF eHBsaWNpdCBtZW1iZXIgY29weSB3b3VsZCBwcm9iYWJseSBiZSBiZXR0ZXIgaGVyZS4KIAkgKi8K IAotCWF0b21pY19pbmMoJnR0bV9ib19nbG9iLmJvX2NvdW50KTsKKwlhdG9taWNfaW5jKCZ0dG1f Z2xvYi5ib19jb3VudCk7CiAJSU5JVF9MSVNUX0hFQUQoJmZiby0+YmFzZS5kZGVzdHJveSk7CiAJ SU5JVF9MSVNUX0hFQUQoJmZiby0+YmFzZS5scnUpOwogCUlOSVRfTElTVF9IRUFEKCZmYm8tPmJh c2Uuc3dhcCk7CkBAIC02MDIsNyArNjAyLDcgQEAgc3RhdGljIGludCB0dG1fYm9fbW92ZV90b19n aG9zdChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogc3RhdGljIHZvaWQgdHRtX2JvX21v dmVfcGlwZWxpbmVfZXZpY3Qoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkJCQkgICAg ICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCiB7Ci0Jc3RydWN0IHR0bV9ib19kZXZpY2UgKmJk ZXYgPSBiby0+YmRldjsKKwlzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiA9IGJvLT5iZGV2OwogCXN0 cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqZnJvbSA9IHR0bV9tYW5hZ2VyX3R5cGUoYmRldiwg Ym8tPm1lbS5tZW1fdHlwZSk7CiAKIAkvKioKQEAgLTYyOCw3ICs2MjgsNyBAQCBpbnQgdHRtX2Jv X21vdmVfYWNjZWxfY2xlYW51cChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCQkJICAg ICAgYm9vbCBwaXBlbGluZSwKIAkJCSAgICAgIHN0cnVjdCB0dG1fcmVzb3VyY2UgKm5ld19tZW0p CiB7Ci0Jc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKKwlzdHJ1Y3QgdHRt X2RldmljZSAqYmRldiA9IGJvLT5iZGV2OwogCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAq ZnJvbSA9IHR0bV9tYW5hZ2VyX3R5cGUoYmRldiwgYm8tPm1lbS5tZW1fdHlwZSk7CiAJc3RydWN0 IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4gPSB0dG1fbWFuYWdlcl90eXBlKGJkZXYsIG5ld19t ZW0tPm1lbV90eXBlKTsKIAlpbnQgcmV0ID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS90dG0vdHRtX2JvX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jCmluZGV4 IDZkYzk2Y2Y2Njc0NC4uYjMxYjE4MDU4OTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v dHRtL3R0bV9ib192bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMKQEAg LTk1LDEwICs5NSwxMCBAQCBzdGF0aWMgdm1fZmF1bHRfdCB0dG1fYm9fdm1fZmF1bHRfaWRsZShz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogc3RhdGljIHVuc2lnbmVkIGxvbmcgdHRtX2Jv X2lvX21lbV9wZm4oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkJCQkgICAgICAgdW5z aWduZWQgbG9uZyBwYWdlX29mZnNldCkKIHsKLQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9 IGJvLT5iZGV2OworCXN0cnVjdCB0dG1fZGV2aWNlICpiZGV2ID0gYm8tPmJkZXY7CiAKLQlpZiAo YmRldi0+ZHJpdmVyLT5pb19tZW1fcGZuKQotCQlyZXR1cm4gYmRldi0+ZHJpdmVyLT5pb19tZW1f cGZuKGJvLCBwYWdlX29mZnNldCk7CisJaWYgKGJkZXYtPmZ1bmNzLT5pb19tZW1fcGZuKQorCQly ZXR1cm4gYmRldi0+ZnVuY3MtPmlvX21lbV9wZm4oYm8sIHBhZ2Vfb2Zmc2V0KTsKIAogCXJldHVy biAoYm8tPm1lbS5idXMub2Zmc2V0ID4+IFBBR0VfU0hJRlQpICsgcGFnZV9vZmZzZXQ7CiB9CkBA IC0yMTYsNyArMjE2LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2luc2VydF9odWdl KHN0cnVjdCB2bV9mYXVsdCAqdm1mLAogCQkJaWYgKHBhZ2VfdG9fcGZuKHR0bS0+cGFnZXNbcGFn ZV9vZmZzZXQgKyBpXSkgIT0gcGZuICsgaSkKIAkJCQlnb3RvIG91dF9mYWxsYmFjazsKIAkJfQot CX0gZWxzZSBpZiAoYm8tPmJkZXYtPmRyaXZlci0+aW9fbWVtX3BmbikgeworCX0gZWxzZSBpZiAo Ym8tPmJkZXYtPmZ1bmNzLT5pb19tZW1fcGZuKSB7CiAJCWZvciAoaSA9IDE7IGkgPCBmYXVsdF9w YWdlX3NpemU7ICsraSkgewogCQkJaWYgKHR0bV9ib19pb19tZW1fcGZuKGJvLCBwYWdlX29mZnNl dCArIGkpICE9IHBmbiArIGkpCiAJCQkJZ290byBvdXRfZmFsbGJhY2s7CkBAIC0yNzgsNyArMjc4 LDcgQEAgdm1fZmF1bHRfdCB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWQoc3RydWN0IHZtX2ZhdWx0 ICp2bWYsCiB7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB2bWYtPnZtYTsKIAlzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gdm1hLT52bV9wcml2YXRlX2RhdGE7Ci0Jc3RydWN0 IHR0bV9ib19kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKKwlzdHJ1Y3QgdHRtX2RldmljZSAqYmRl diA9IGJvLT5iZGV2OwogCXVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7CiAJdW5zaWduZWQgbG9u ZyBwYWdlX2xhc3Q7CiAJdW5zaWduZWQgbG9uZyBwZm47CkBAIC00ODgsOCArNDg4LDggQEAgaW50 IHR0bV9ib192bV9hY2Nlc3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxv bmcgYWRkciwKIAkJcmV0ID0gdHRtX2JvX3ZtX2FjY2Vzc19rbWFwKGJvLCBvZmZzZXQsIGJ1Ziwg bGVuLCB3cml0ZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWlmIChiby0+YmRldi0+ZHJpdmVy LT5hY2Nlc3NfbWVtb3J5KQotCQkJcmV0ID0gYm8tPmJkZXYtPmRyaXZlci0+YWNjZXNzX21lbW9y eSgKKwkJaWYgKGJvLT5iZGV2LT5mdW5jcy0+YWNjZXNzX21lbW9yeSkKKwkJCXJldCA9IGJvLT5i ZGV2LT5mdW5jcy0+YWNjZXNzX21lbW9yeSgKIAkJCQlibywgb2Zmc2V0LCBidWYsIGxlbiwgd3Jp dGUpOwogCQllbHNlCiAJCQlyZXQgPSAtRUlPOwpAQCAtNTA4LDcgKzUwOCw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgdHRtX2JvX3ZtX29wcyA9IHsKIAkuYWNj ZXNzID0gdHRtX2JvX3ZtX2FjY2VzcywKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgdHRtX2J1ZmZlcl9v YmplY3QgKnR0bV9ib192bV9sb29rdXAoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCitzdGF0 aWMgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0dG1fYm9fdm1fbG9va3VwKHN0cnVjdCB0dG1f ZGV2aWNlICpiZGV2LAogCQkJCQkJICB1bnNpZ25lZCBsb25nIG9mZnNldCwKIAkJCQkJCSAgdW5z aWduZWQgbG9uZyBwYWdlcykKIHsKQEAgLTU1NSw5ICs1NTUsOCBAQCBzdGF0aWMgdm9pZCB0dG1f Ym9fbW1hcF92bWFfc2V0dXAoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgc3RydWN0IHZt X2FyZWFfcwogfQogCiBpbnQgdHRtX2JvX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hLAotCQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldikKKwkJc3Ry dWN0IHR0bV9kZXZpY2UgKmJkZXYpCiB7Ci0Jc3RydWN0IHR0bV9ib19kcml2ZXIgKmRyaXZlcjsK IAlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvOwogCWludCByZXQ7CiAKQEAgLTU2OCwxMiAr NTY3LDExIEBAIGludCB0dG1fYm9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsCiAJaWYgKHVubGlrZWx5KCFibykpCiAJCXJldHVybiAtRUlOVkFMOwog Ci0JZHJpdmVyID0gYm8tPmJkZXYtPmRyaXZlcjsKLQlpZiAodW5saWtlbHkoIWRyaXZlci0+dmVy aWZ5X2FjY2VzcykpIHsKKwlpZiAodW5saWtlbHkoIWJvLT5iZGV2LT5mdW5jcy0+dmVyaWZ5X2Fj Y2VzcykpIHsKIAkJcmV0ID0gLUVQRVJNOwogCQlnb3RvIG91dF91bnJlZjsKIAl9Ci0JcmV0ID0g ZHJpdmVyLT52ZXJpZnlfYWNjZXNzKGJvLCBmaWxwKTsKKwlyZXQgPSBiby0+YmRldi0+ZnVuY3Mt PnZlcmlmeV9hY2Nlc3MoYm8sIGZpbHApOwogCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCiAJCWdv dG8gb3V0X3VucmVmOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9kZXZp Y2UuYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2RldmljZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWMwOTAzYzllNjBhCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fZGV2aWNlLmMKQEAgLTAsMCArMSwxOTUgQEAKKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1JVCAqLworCisvKgorICogQ29weXJp Z2h0IChjKSAyMDA2LTIwMDkgVk13YXJlLCBJbmMuLCBQYWxvIEFsdG8sIENBLiwgVVNBCisgKiBD b3B5cmlnaHQgMjAyMCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs bCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBB VVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu CisgKgorICogQXV0aG9yczogQ2hyaXN0aWFuIEvDtm5pZworICovCisKKyNkZWZpbmUgcHJfZm10 KGZtdCkgIltUVE0gREVWSUNFXSAiIGZtdAorCisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fZGV2aWNl Lmg+CisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fbWVtb3J5Lmg+CisjaW5jbHVkZSA8ZHJtL3R0bS90 dG1fcGxhY2VtZW50Lmg+CisKKyNpbmNsdWRlICJ0dG1fbW9kdWxlLmgiCisKKy8qKgorICogdHRt X2dsb2JhbF9tdXRleCAtIHByb3RlY3RpbmcgdGhlIGdsb2JhbCBzdGF0ZQorICovCitERUZJTkVf TVVURVgodHRtX2dsb2JhbF9tdXRleCk7Cit1bnNpZ25lZCB0dG1fZ2xvYl91c2VfY291bnQ7Citz dHJ1Y3QgdHRtX2dsb2JhbCB0dG1fZ2xvYjsKK0VYUE9SVF9TWU1CT0wodHRtX2dsb2IpOworCitz dGF0aWMgdm9pZCB0dG1fZ2xvYmFsX3JlbGVhc2Uodm9pZCkKK3sKKwlzdHJ1Y3QgdHRtX2dsb2Jh bCAqZ2xvYiA9ICZ0dG1fZ2xvYjsKKworCW11dGV4X2xvY2soJnR0bV9nbG9iYWxfbXV0ZXgpOwor CWlmICgtLXR0bV9nbG9iX3VzZV9jb3VudCA+IDApCisJCWdvdG8gb3V0OworCisJa29iamVjdF9k ZWwoJmdsb2ItPmtvYmopOworCWtvYmplY3RfcHV0KCZnbG9iLT5rb2JqKTsKKwl0dG1fbWVtX2ds b2JhbF9yZWxlYXNlKCZ0dG1fbWVtX2dsb2IpOworCV9fZnJlZV9wYWdlKGdsb2ItPmR1bW15X3Jl YWRfcGFnZSk7CisJbWVtc2V0KGdsb2IsIDAsIHNpemVvZigqZ2xvYikpOworb3V0OgorCW11dGV4 X3VubG9jaygmdHRtX2dsb2JhbF9tdXRleCk7Cit9CisKK3N0YXRpYyBpbnQgdHRtX2dsb2JhbF9p bml0KHZvaWQpCit7CisJc3RydWN0IHR0bV9nbG9iYWwgKmdsb2IgPSAmdHRtX2dsb2I7CisJaW50 IHJldCA9IDA7CisJdW5zaWduZWQgaTsKKworCW11dGV4X2xvY2soJnR0bV9nbG9iYWxfbXV0ZXgp OworCWlmICgrK3R0bV9nbG9iX3VzZV9jb3VudCA+IDEpCisJCWdvdG8gb3V0OworCisJcmV0ID0g dHRtX21lbV9nbG9iYWxfaW5pdCgmdHRtX21lbV9nbG9iKTsKKwlpZiAocmV0KQorCQlnb3RvIG91 dDsKKworCXNwaW5fbG9ja19pbml0KCZnbG9iLT5scnVfbG9jayk7CisJZ2xvYi0+ZHVtbXlfcmVh ZF9wYWdlID0gYWxsb2NfcGFnZShfX0dGUF9aRVJPIHwgR0ZQX0RNQTMyKTsKKworCWlmICh1bmxp a2VseShnbG9iLT5kdW1teV9yZWFkX3BhZ2UgPT0gTlVMTCkpIHsKKwkJcmV0ID0gLUVOT01FTTsK KwkJZ290byBvdXQ7CisJfQorCisJZm9yIChpID0gMDsgaSA8IFRUTV9NQVhfQk9fUFJJT1JJVFk7 ICsraSkKKwkJSU5JVF9MSVNUX0hFQUQoJmdsb2ItPnN3YXBfbHJ1W2ldKTsKKwlJTklUX0xJU1Rf SEVBRCgmZ2xvYi0+ZGV2aWNlX2xpc3QpOworCWF0b21pY19zZXQoJmdsb2ItPmJvX2NvdW50LCAw KTsKKworCWRlYnVnZnNfY3JlYXRlX2F0b21pY190KCJidWZmZXJfb2JqZWN0cyIsIDA0NDQsIHR0 bV9kZWJ1Z2ZzX3Jvb3QsCisJCQkJJmdsb2ItPmJvX2NvdW50KTsKK291dDoKKwltdXRleF91bmxv Y2soJnR0bV9nbG9iYWxfbXV0ZXgpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHR0 bV9pbml0X3N5c21hbihzdHJ1Y3QgdHRtX2RldmljZSAqYmRldikKK3sKKwlzdHJ1Y3QgdHRtX3Jl c291cmNlX21hbmFnZXIgKm1hbiA9ICZiZGV2LT5zeXNtYW47CisKKwkvKgorCSAqIEluaXRpYWxp emUgdGhlIHN5c3RlbSBtZW1vcnkgYnVmZmVyIHR5cGUuCisJICogT3RoZXIgdHlwZXMgbmVlZCB0 byBiZSBkcml2ZXIgLyBJT0NUTCBpbml0aWFsaXplZC4KKwkgKi8KKwltYW4tPnVzZV90dCA9IHRy dWU7CisKKwl0dG1fcmVzb3VyY2VfbWFuYWdlcl9pbml0KG1hbiwgMCk7CisJdHRtX3NldF9kcml2 ZXJfbWFuYWdlcihiZGV2LCBUVE1fUExfU1lTVEVNLCBtYW4pOworCXR0bV9yZXNvdXJjZV9tYW5h Z2VyX3NldF91c2VkKG1hbiwgdHJ1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIHR0bV9kZXZpY2VfZGVs YXllZF93b3JrcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCB0dG1f ZGV2aWNlICpiZGV2ID0KKwkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB0dG1fZGV2aWNlLCB3 cS53b3JrKTsKKworCWlmICghdHRtX2JvX2RlbGF5ZWRfZGVsZXRlKGJkZXYsIGZhbHNlKSkKKwkJ c2NoZWR1bGVfZGVsYXllZF93b3JrKCZiZGV2LT53cSwKKwkJCQkgICAgICAoKEhaIC8gMTAwKSA8 IDEpID8gMSA6IEhaIC8gMTAwKTsKK30KKworLyoqCisgKiB0dG1fZGV2aWNlX2luaXQKKyAqCisg KiBAYmRldjogQSBwb2ludGVyIHRvIGEgc3RydWN0IHR0bV9kZXZpY2UgdG8gaW5pdGlhbGl6ZS4K KyAqIEBmdW5jczogRnVuY3Rpb24gdGFibGUgZm9yIHRoZSBkZXZpY2UuCisgKiBAZGV2OiBUaGUg Y29yZSBrZXJuZWwgZGV2aWNlIHBvaW50ZXIgZm9yIERNQSBtYXBwaW5ncyBhbmQgYWxsb2NhdGlv bnMuCisgKiBAbWFwcGluZzogVGhlIGFkZHJlc3Mgc3BhY2UgdG8gdXNlIGZvciB0aGlzIGJvLgor ICogQHZtYV9tYW5hZ2VyOiBBIHBvaW50ZXIgdG8gYSB2bWEgbWFuYWdlci4KKyAqIEB1c2VfZG1h X2FsbG9jOiBJZiBjb2hlcmVudCBETUEgYWxsb2NhdGlvbiBBUEkgc2hvdWxkIGJlIHVzZWQuCisg KiBAdXNlX2RtYTMyOiBJZiB3ZSBzaG91bGQgdXNlIEdGUF9ETUEzMiBmb3IgZGV2aWNlIG1lbW9y eSBhbGxvY2F0aW9ucy4KKyAqCisgKiBJbml0aWFsaXplcyBhIHN0cnVjdCB0dG1fZGV2aWNlOgor ICogUmV0dXJuczoKKyAqICEwOiBGYWlsdXJlLgorICovCitpbnQgdHRtX2RldmljZV9pbml0KHN0 cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX2RldmljZV9mdW5jcyAqZnVuY3MsCisJ CSAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAor CQkgICAgc3RydWN0IGRybV92bWFfb2Zmc2V0X21hbmFnZXIgKnZtYV9tYW5hZ2VyLAorCQkgICAg Ym9vbCB1c2VfZG1hX2FsbG9jLCBib29sIHVzZV9kbWEzMikKK3sKKwlzdHJ1Y3QgdHRtX2dsb2Jh bCAqZ2xvYiA9ICZ0dG1fZ2xvYjsKKwlpbnQgcmV0OworCisJaWYgKFdBUk5fT04odm1hX21hbmFn ZXIgPT0gTlVMTCkpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gdHRtX2dsb2JhbF9pbml0 KCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWJkZXYtPmZ1bmNzID0gZnVuY3M7CisK Kwl0dG1faW5pdF9zeXNtYW4oYmRldik7CisJdHRtX3Bvb2xfaW5pdCgmYmRldi0+cG9vbCwgZGV2 LCB1c2VfZG1hX2FsbG9jLCB1c2VfZG1hMzIpOworCisJYmRldi0+dm1hX21hbmFnZXIgPSB2bWFf bWFuYWdlcjsKKwlJTklUX0RFTEFZRURfV09SSygmYmRldi0+d3EsIHR0bV9kZXZpY2VfZGVsYXll ZF93b3JrcXVldWUpOworCUlOSVRfTElTVF9IRUFEKCZiZGV2LT5kZGVzdHJveSk7CisJYmRldi0+ ZGV2X21hcHBpbmcgPSBtYXBwaW5nOworCW11dGV4X2xvY2soJnR0bV9nbG9iYWxfbXV0ZXgpOwor CWxpc3RfYWRkX3RhaWwoJmJkZXYtPmRldmljZV9saXN0LCAmZ2xvYi0+ZGV2aWNlX2xpc3QpOwor CW11dGV4X3VubG9jaygmdHRtX2dsb2JhbF9tdXRleCk7CisKKwlyZXR1cm4gMDsKK30KK0VYUE9S VF9TWU1CT0wodHRtX2RldmljZV9pbml0KTsKKwordm9pZCB0dG1fZGV2aWNlX2Zpbmkoc3RydWN0 IHR0bV9kZXZpY2UgKmJkZXYpCit7CisJc3RydWN0IHR0bV9nbG9iYWwgKmdsb2IgPSAmdHRtX2ds b2I7CisJc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW47CisJdW5zaWduZWQgaTsKKwor CW1hbiA9IHR0bV9tYW5hZ2VyX3R5cGUoYmRldiwgVFRNX1BMX1NZU1RFTSk7CisJdHRtX3Jlc291 cmNlX21hbmFnZXJfc2V0X3VzZWQobWFuLCBmYWxzZSk7CisJdHRtX3NldF9kcml2ZXJfbWFuYWdl cihiZGV2LCBUVE1fUExfU1lTVEVNLCBOVUxMKTsKKworCW11dGV4X2xvY2soJnR0bV9nbG9iYWxf bXV0ZXgpOworCWxpc3RfZGVsKCZiZGV2LT5kZXZpY2VfbGlzdCk7CisJbXV0ZXhfdW5sb2NrKCZ0 dG1fZ2xvYmFsX211dGV4KTsKKworCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYmRldi0+d3Ep OworCisJaWYgKHR0bV9ib19kZWxheWVkX2RlbGV0ZShiZGV2LCB0cnVlKSkKKwkJcHJfZGVidWco IkRlbGF5ZWQgZGVzdHJveSBsaXN0IHdhcyBjbGVhblxuIik7CisKKwlzcGluX2xvY2soJmdsb2It PmxydV9sb2NrKTsKKwlmb3IgKGkgPSAwOyBpIDwgVFRNX01BWF9CT19QUklPUklUWTsgKytpKQor CQlpZiAobGlzdF9lbXB0eSgmbWFuLT5scnVbMF0pKQorCQkJcHJfZGVidWcoIlN3YXAgbGlzdCAl ZCB3YXMgY2xlYW5cbiIsIGkpOworCXNwaW5fdW5sb2NrKCZnbG9iLT5scnVfbG9jayk7CisKKwl0 dG1fcG9vbF9maW5pKCZiZGV2LT5wb29sKTsKKwl0dG1fZ2xvYmFsX3JlbGVhc2UoKTsKK30KK0VY UE9SVF9TWU1CT0wodHRtX2RldmljZV9maW5pKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS90dG0vdHRtX2V4ZWNidWZfdXRpbC5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fZXhlY2J1 Zl91dGlsLmMKaW5kZXggOWZhMzZlZDU5NDI5Li42OTBhYjk3ZDUyYjcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS90dG0vdHRtX2V4ZWNidWZfdXRpbC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS90dG0vdHRtX2V4ZWNidWZfdXRpbC5jCkBAIC01MSwxNCArNTEsMTQgQEAgdm9pZCB0dG1fZXVf YmFja29mZl9yZXNlcnZhdGlvbihzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnRpY2tldCwKIAlpZiAo bGlzdF9lbXB0eShsaXN0KSkKIAkJcmV0dXJuOwogCi0Jc3Bpbl9sb2NrKCZ0dG1fYm9fZ2xvYi5s cnVfbG9jayk7CisJc3Bpbl9sb2NrKCZ0dG1fZ2xvYi5scnVfbG9jayk7CiAJbGlzdF9mb3JfZWFj aF9lbnRyeShlbnRyeSwgbGlzdCwgaGVhZCkgewogCQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qg KmJvID0gZW50cnktPmJvOwogCiAJCXR0bV9ib19tb3ZlX3RvX2xydV90YWlsKGJvLCAmYm8tPm1l bSwgTlVMTCk7CiAJCWRtYV9yZXN2X3VubG9jayhiby0+YmFzZS5yZXN2KTsKIAl9Ci0Jc3Bpbl91 bmxvY2soJnR0bV9ib19nbG9iLmxydV9sb2NrKTsKKwlzcGluX3VubG9jaygmdHRtX2dsb2IubHJ1 X2xvY2spOwogCiAJaWYgKHRpY2tldCkKIAkJd3dfYWNxdWlyZV9maW5pKHRpY2tldCk7CkBAIC0x NTQsNyArMTU0LDcgQEAgdm9pZCB0dG1fZXVfZmVuY2VfYnVmZmVyX29iamVjdHMoc3RydWN0IHd3 X2FjcXVpcmVfY3R4ICp0aWNrZXQsCiAJaWYgKGxpc3RfZW1wdHkobGlzdCkpCiAJCXJldHVybjsK IAotCXNwaW5fbG9jaygmdHRtX2JvX2dsb2IubHJ1X2xvY2spOworCXNwaW5fbG9jaygmdHRtX2ds b2IubHJ1X2xvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksIGxpc3QsIGhlYWQpIHsK IAkJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IGVudHJ5LT5ibzsKIApAQCAtMTY1LDcg KzE2NSw3IEBAIHZvaWQgdHRtX2V1X2ZlbmNlX2J1ZmZlcl9vYmplY3RzKHN0cnVjdCB3d19hY3F1 aXJlX2N0eCAqdGlja2V0LAogCQl0dG1fYm9fbW92ZV90b19scnVfdGFpbChibywgJmJvLT5tZW0s IE5VTEwpOwogCQlkbWFfcmVzdl91bmxvY2soYm8tPmJhc2UucmVzdik7CiAJfQotCXNwaW5fdW5s b2NrKCZ0dG1fYm9fZ2xvYi5scnVfbG9jayk7CisJc3Bpbl91bmxvY2soJnR0bV9nbG9iLmxydV9s b2NrKTsKIAlpZiAodGlja2V0KQogCQl3d19hY3F1aXJlX2ZpbmkodGlja2V0KTsKIH0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3JhbmdlX21hbmFnZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS90dG0vdHRtX3JhbmdlX21hbmFnZXIuYwppbmRleCBhMzkzMDVmNzQyZGEuLjcwN2U1 YzE1Mjg5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fcmFuZ2VfbWFuYWdl ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3JhbmdlX21hbmFnZXIuYwpAQCAtMTEx LDcgKzExMSw3IEBAIHN0YXRpYyB2b2lkIHR0bV9yYW5nZV9tYW5fZnJlZShzdHJ1Y3QgdHRtX3Jl c291cmNlX21hbmFnZXIgKm1hbiwKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB0dG1fcmVzb3VyY2Vf bWFuYWdlcl9mdW5jIHR0bV9yYW5nZV9tYW5hZ2VyX2Z1bmM7CiAKLWludCB0dG1fcmFuZ2VfbWFu X2luaXQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCitpbnQgdHRtX3JhbmdlX21hbl9pbml0 KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkgICAgICAgdW5zaWduZWQgdHlwZSwgYm9vbCB1 c2VfdHQsCiAJCSAgICAgICB1bnNpZ25lZCBsb25nIHBfc2l6ZSkKIHsKQEAgLTEzOCw3ICsxMzgs NyBAQCBpbnQgdHRtX3JhbmdlX21hbl9pbml0KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAog fQogRVhQT1JUX1NZTUJPTCh0dG1fcmFuZ2VfbWFuX2luaXQpOwogCi1pbnQgdHRtX3JhbmdlX21h bl9maW5pKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAoraW50IHR0bV9yYW5nZV9tYW5fZmlu aShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJICAgICAgIHVuc2lnbmVkIHR5cGUpCiB7CiAJ c3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4gPSB0dG1fbWFuYWdlcl90eXBlKGJkZXYs IHR5cGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fcmVzb3VyY2UuYyBi L2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3Jlc291cmNlLmMKaW5kZXggYjYwNjk5YmY0ODE2Li5l ZDE2NzJhOWYzMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3Jlc291cmNl LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fcmVzb3VyY2UuYwpAQCAtODMsNyArODMs NyBAQCBFWFBPUlRfU1lNQk9MKHR0bV9yZXNvdXJjZV9tYW5hZ2VyX2luaXQpOwogICogRXZpY3Qg YWxsIHRoZSBvYmplY3RzIG91dCBvZiBhIG1lbW9yeSBtYW5hZ2VyIHVudGlsIGl0IGlzIGVtcHR5 LgogICogUGFydCBvZiBtZW1vcnkgbWFuYWdlciBjbGVhbnVwIHNlcXVlbmNlLgogICovCi1pbnQg dHRtX3Jlc291cmNlX21hbmFnZXJfZXZpY3RfYWxsKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2 LAoraW50IHR0bV9yZXNvdXJjZV9tYW5hZ2VyX2V2aWN0X2FsbChzdHJ1Y3QgdHRtX2RldmljZSAq YmRldiwKIAkJCQkgICBzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbikKIHsKIAlzdHJ1 Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0gewpAQCAtOTEsNyArOTEsNyBAQCBpbnQgdHRtX3Jl c291cmNlX21hbmFnZXJfZXZpY3RfYWxsKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAogCQku bm9fd2FpdF9ncHUgPSBmYWxzZSwKIAkJLmZvcmNlX2FsbG9jID0gdHJ1ZQogCX07Ci0Jc3RydWN0 IHR0bV9ib19nbG9iYWwgKmdsb2IgPSAmdHRtX2JvX2dsb2I7CisJc3RydWN0IHR0bV9nbG9iYWwg Kmdsb2IgPSAmdHRtX2dsb2I7CiAJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CiAJaW50IHJldDsK IAl1bnNpZ25lZCBpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fdHQuYyBi L2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3R0LmMKaW5kZXggN2Y3NWExMzE2M2YwLi43NzgyZDUz OTNjN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3R0LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3R0bS90dG1fdHQuYwpAQCAtNDMsNyArNDMsNyBAQAogICovCiBpbnQgdHRt X3R0X2NyZWF0ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBib29sIHplcm9fYWxsb2Mp CiB7Ci0Jc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKKwlzdHJ1Y3QgdHRt X2RldmljZSAqYmRldiA9IGJvLT5iZGV2OwogCXVpbnQzMl90IHBhZ2VfZmxhZ3MgPSAwOwogCiAJ ZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQoYm8tPmJhc2UucmVzdik7CkBAIC02Niw3ICs2Niw3IEBAIGlu dCB0dG1fdHRfY3JlYXRlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIGJvb2wgemVyb19h bGxvYykKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JYm8tPnR0bSA9IGJkZXYtPmRyaXZlci0+ dHRtX3R0X2NyZWF0ZShibywgcGFnZV9mbGFncyk7CisJYm8tPnR0bSA9IGJkZXYtPmZ1bmNzLT50 dG1fdHRfY3JlYXRlKGJvLCBwYWdlX2ZsYWdzKTsKIAlpZiAodW5saWtlbHkoYm8tPnR0bSA9PSBO VUxMKSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgaW50 IHR0bV9zZ190dF9hbGxvY19wYWdlX2RpcmVjdG9yeShzdHJ1Y3QgdHRtX3R0ICp0dG0pCiAJcmV0 dXJuIDA7CiB9CiAKLXZvaWQgdHRtX3R0X2Rlc3Ryb3lfY29tbW9uKHN0cnVjdCB0dG1fYm9fZGV2 aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pCit2b2lkIHR0bV90dF9kZXN0cm95X2NvbW1v bihzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKQogewogCXR0bV90 dF91bnBvcHVsYXRlKGJkZXYsIHR0bSk7CiAKQEAgLTExOSw5ICsxMTksOSBAQCB2b2lkIHR0bV90 dF9kZXN0cm95X2NvbW1vbihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90 dCAqdHRtKQogfQogRVhQT1JUX1NZTUJPTCh0dG1fdHRfZGVzdHJveV9jb21tb24pOwogCi12b2lk IHR0bV90dF9kZXN0cm95KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0 ICp0dG0pCit2b2lkIHR0bV90dF9kZXN0cm95KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1 Y3QgdHRtX3R0ICp0dG0pCiB7Ci0JYmRldi0+ZHJpdmVyLT50dG1fdHRfZGVzdHJveShiZGV2LCB0 dG0pOworCWJkZXYtPmZ1bmNzLT50dG1fdHRfZGVzdHJveShiZGV2LCB0dG0pOwogfQogCiBzdGF0 aWMgdm9pZCB0dG1fdHRfaW5pdF9maWVsZHMoc3RydWN0IHR0bV90dCAqdHRtLApAQCAtMjIzLDcg KzIyMyw3IEBAIGludCB0dG1fdHRfc3dhcGluKHN0cnVjdCB0dG1fdHQgKnR0bSkKIAlyZXR1cm4g cmV0OwogfQogCi1pbnQgdHRtX3R0X3N3YXBvdXQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYs IHN0cnVjdCB0dG1fdHQgKnR0bSkKK2ludCB0dG1fdHRfc3dhcG91dChzdHJ1Y3QgdHRtX2Rldmlj ZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKQogewogCXN0cnVjdCBhZGRyZXNzX3NwYWNlICpz d2FwX3NwYWNlOwogCXN0cnVjdCBmaWxlICpzd2FwX3N0b3JhZ2U7CkBAIC0yNzEsNyArMjcxLDcg QEAgaW50IHR0bV90dF9zd2Fwb3V0KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3Qg dHRtX3R0ICp0dG0pCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgdHRtX3R0X2FkZF9t YXBwaW5nKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pCitz dGF0aWMgdm9pZCB0dG1fdHRfYWRkX21hcHBpbmcoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0 cnVjdCB0dG1fdHQgKnR0bSkKIHsKIAlwZ29mZl90IGk7CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBz dGF0aWMgdm9pZCB0dG1fdHRfYWRkX21hcHBpbmcoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYs IHN0cnVjdCB0dG1fdHQgKnR0bSkKIAkJdHRtLT5wYWdlc1tpXS0+bWFwcGluZyA9IGJkZXYtPmRl dl9tYXBwaW5nOwogfQogCi1pbnQgdHRtX3R0X3BvcHVsYXRlKHN0cnVjdCB0dG1fYm9fZGV2aWNl ICpiZGV2LAoraW50IHR0bV90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJ ICAgIHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgpCiB7 CiAJaW50IHJldDsKQEAgLTI5Myw4ICsyOTMsOCBAQCBpbnQgdHRtX3R0X3BvcHVsYXRlKHN0cnVj dCB0dG1fYm9fZGV2aWNlICpiZGV2LAogCWlmICh0dG1fdHRfaXNfcG9wdWxhdGVkKHR0bSkpCiAJ CXJldHVybiAwOwogCi0JaWYgKGJkZXYtPmRyaXZlci0+dHRtX3R0X3BvcHVsYXRlKQotCQlyZXQg PSBiZGV2LT5kcml2ZXItPnR0bV90dF9wb3B1bGF0ZShiZGV2LCB0dG0sIGN0eCk7CisJaWYgKGJk ZXYtPmZ1bmNzLT50dG1fdHRfcG9wdWxhdGUpCisJCXJldCA9IGJkZXYtPmZ1bmNzLT50dG1fdHRf cG9wdWxhdGUoYmRldiwgdHRtLCBjdHgpOwogCWVsc2UKIAkJcmV0ID0gdHRtX3Bvb2xfYWxsb2Mo JmJkZXYtPnBvb2wsIHR0bSwgY3R4KTsKIAlpZiAocmV0KQpAQCAtMzI4LDE1ICszMjgsMTUgQEAg c3RhdGljIHZvaWQgdHRtX3R0X2NsZWFyX21hcHBpbmcoc3RydWN0IHR0bV90dCAqdHRtKQogCX0K IH0KIAotdm9pZCB0dG1fdHRfdW5wb3B1bGF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwK K3ZvaWQgdHRtX3R0X3VucG9wdWxhdGUoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsCiAJCSAgICAg ICBzdHJ1Y3QgdHRtX3R0ICp0dG0pCiB7CiAJaWYgKCF0dG1fdHRfaXNfcG9wdWxhdGVkKHR0bSkp CiAJCXJldHVybjsKIAogCXR0bV90dF9jbGVhcl9tYXBwaW5nKHR0bSk7Ci0JaWYgKGJkZXYtPmRy aXZlci0+dHRtX3R0X3VucG9wdWxhdGUpCi0JCWJkZXYtPmRyaXZlci0+dHRtX3R0X3VucG9wdWxh dGUoYmRldiwgdHRtKTsKKwlpZiAoYmRldi0+ZnVuY3MtPnR0bV90dF91bnBvcHVsYXRlKQorCQli ZGV2LT5mdW5jcy0+dHRtX3R0X3VucG9wdWxhdGUoYmRldiwgdHRtKTsKIAllbHNlCiAJCXR0bV9w b29sX2ZyZWUoJmJkZXYtPnBvb2wsIHR0bSk7CiAJdHRtLT5wYWdlX2ZsYWdzICY9IH5UVE1fUEFH RV9GTEFHX1BSSVZfUE9QVUxBVEVEOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfYmxpdC5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYmxpdC5jCmlu ZGV4IDExOGRiMjRlYjc1Ni4uM2E0MzhhZTRkM2Y0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9ibGl0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfYmxpdC5jCkBAIC00NjYsMTMgKzQ2NiwxMyBAQCBpbnQgdm13X2JvX2NwdV9ibGl0KHN0cnVj dCB0dG1fYnVmZmVyX29iamVjdCAqZHN0LAogCQlkbWFfcmVzdl9hc3NlcnRfaGVsZChzcmMtPmJh c2UucmVzdik7CiAKIAlpZiAoIXR0bV90dF9pc19wb3B1bGF0ZWQoZHN0LT50dG0pKSB7Ci0JCXJl dCA9IGRzdC0+YmRldi0+ZHJpdmVyLT50dG1fdHRfcG9wdWxhdGUoZHN0LT5iZGV2LCBkc3QtPnR0 bSwgJmN0eCk7CisJCXJldCA9IGRzdC0+YmRldi0+ZnVuY3MtPnR0bV90dF9wb3B1bGF0ZShkc3Qt PmJkZXYsIGRzdC0+dHRtLCAmY3R4KTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQog CiAJaWYgKCF0dG1fdHRfaXNfcG9wdWxhdGVkKHNyYy0+dHRtKSkgewotCQlyZXQgPSBzcmMtPmJk ZXYtPmRyaXZlci0+dHRtX3R0X3BvcHVsYXRlKHNyYy0+YmRldiwgc3JjLT50dG0sICZjdHgpOwor CQlyZXQgPSBzcmMtPmJkZXYtPmZ1bmNzLT50dG1fdHRfcG9wdWxhdGUoc3JjLT5iZGV2LCBzcmMt PnR0bSwgJmN0eCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JvLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9iby5jCmluZGV4IGFiMDg0NGI0N2Q0ZC4uNmIzYmZkOGM2NzhhIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iby5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X2JvLmMKQEAgLTU0NSw3ICs1NDUsNyBAQCBpbnQgdm13X2JvX2lu aXQoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAkJdm9pZCAoKmJvX2ZyZWUpKHN0cnVj dCB0dG1fYnVmZmVyX29iamVjdCAqYm8pKQogewogCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBj dHggPSB7IGludGVycnVwdGlibGUsIGZhbHNlIH07Ci0Jc3RydWN0IHR0bV9ib19kZXZpY2UgKmJk ZXYgPSAmZGV2X3ByaXYtPmJkZXY7CisJc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYgPSAmZGV2X3By aXYtPmJkZXY7CiAJc2l6ZV90IGFjY19zaXplOwogCWludCByZXQ7CiAJYm9vbCB1c2VyID0gKGJv X2ZyZWUgPT0gJnZtd191c2VyX2JvX2Rlc3Ryb3kpOwpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgaW50 IHZtd191c2VyX2JvX3JlZmVyZW5jZShzdHJ1Y3QgdHRtX29iamVjdF9maWxlICp0ZmlsZSwKIHZv aWQgdm13X2JvX2ZlbmNlX3NpbmdsZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCQkJ IHN0cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZSkKIHsKLQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAq YmRldiA9IGJvLT5iZGV2OworCXN0cnVjdCB0dG1fZGV2aWNlICpiZGV2ID0gYm8tPmJkZXY7CiAK IAlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0KIAkJY29udGFpbmVyX29mKGJkZXYsIHN0 cnVjdCB2bXdfcHJpdmF0ZSwgYmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5jCmlu ZGV4IGViOTk3ZjQ2NzhkZS4uYjQ1NGQ4MGMyNzNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9kcnYuYwpAQCAtODg0LDEyICs4ODQsMTIgQEAgc3RhdGljIGludCB2bXdfZHJpdmVyX2xvYWQo c3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBjaV9pZCkKIAlkcm1fdm1hX29mZnNl dF9tYW5hZ2VyX2luaXQoJmRldl9wcml2LT52bWFfbWFuYWdlciwKIAkJCQkgICAgRFJNX0ZJTEVf UEFHRV9PRkZTRVRfU1RBUlQsCiAJCQkJICAgIERSTV9GSUxFX1BBR0VfT0ZGU0VUX1NJWkUpOwot CXJldCA9IHR0bV9ib19kZXZpY2VfaW5pdCgmZGV2X3ByaXYtPmJkZXYsICZ2bXdfYm9fZHJpdmVy LAotCQkJCSBkZXZfcHJpdi0+ZHJtLmRldiwKLQkJCQkgZGV2X3ByaXYtPmRybS5hbm9uX2lub2Rl LT5pX21hcHBpbmcsCi0JCQkJICZkZXZfcHJpdi0+dm1hX21hbmFnZXIsCi0JCQkJIGRldl9wcml2 LT5tYXBfbW9kZSA9PSB2bXdfZG1hX2FsbG9jX2NvaGVyZW50LAotCQkJCSBmYWxzZSk7CisJcmV0 ID0gdHRtX2RldmljZV9pbml0KCZkZXZfcHJpdi0+YmRldiwgJnZtd19ib19kcml2ZXIsCisJCQkg ICAgICBkZXZfcHJpdi0+ZHJtLmRldiwKKwkJCSAgICAgIGRldl9wcml2LT5kcm0uYW5vbl9pbm9k ZS0+aV9tYXBwaW5nLAorCQkJICAgICAgJmRldl9wcml2LT52bWFfbWFuYWdlciwKKwkJCSAgICAg IGRldl9wcml2LT5tYXBfbW9kZSA9PSB2bXdfZG1hX2FsbG9jX2NvaGVyZW50LAorCQkJICAgICAg ZmFsc2UpOwogCWlmICh1bmxpa2VseShyZXQgIT0gMCkpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQg aW5pdGlhbGl6aW5nIFRUTSBidWZmZXIgb2JqZWN0IGRyaXZlci5cbiIpOwogCQlnb3RvIG91dF9u b19iZGV2OwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgc3RhdGljIGludCB2bXdfZHJpdmVyX2xvYWQo c3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBjaV9pZCkKIAkJdm13X2dtcmlkX21h bl9maW5pKGRldl9wcml2LCBWTVdfUExfR01SKTsKIAl2bXdfdnJhbV9tYW5hZ2VyX2ZpbmkoZGV2 X3ByaXYpOwogb3V0X25vX3ZyYW06Ci0JKHZvaWQpdHRtX2JvX2RldmljZV9yZWxlYXNlKCZkZXZf cHJpdi0+YmRldik7CisJdHRtX2RldmljZV9maW5pKCZkZXZfcHJpdi0+YmRldik7CiBvdXRfbm9f YmRldjoKIAl2bXdfZmVuY2VfbWFuYWdlcl90YWtlZG93bihkZXZfcHJpdi0+Zm1hbik7CiBvdXRf bm9fZm1hbjoKQEAgLTEwNTMsNyArMTA1Myw3IEBAIHN0YXRpYyB2b2lkIHZtd19kcml2ZXJfdW5s b2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKGRldl9wcml2LT5oYXNfbW9iKQogCQl2 bXdfZ21yaWRfbWFuX2ZpbmkoZGV2X3ByaXYsIFZNV19QTF9NT0IpOwogCXZtd192cmFtX21hbmFn ZXJfZmluaShkZXZfcHJpdik7Ci0JKHZvaWQpIHR0bV9ib19kZXZpY2VfcmVsZWFzZSgmZGV2X3By aXYtPmJkZXYpOworCXR0bV9kZXZpY2VfZmluaSgmZGV2X3ByaXYtPmJkZXYpOwogCWRybV92bWFf b2Zmc2V0X21hbmFnZXJfZGVzdHJveSgmZGV2X3ByaXYtPnZtYV9tYW5hZ2VyKTsKIAl2bXdfcmVs ZWFzZV9kZXZpY2VfbGF0ZShkZXZfcHJpdik7CiAJdm13X2ZlbmNlX21hbmFnZXJfdGFrZWRvd24o ZGV2X3ByaXYtPmZtYW4pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAppbmRleCAzMzZm NTA4NmNhMjYuLmU2NWIwMGY4MzM2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgK QEAgLTQ4NCw3ICs0ODQsNyBAQCBlbnVtIHZtd19zbV90eXBlIHsKIAogc3RydWN0IHZtd19wcml2 YXRlIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSBkcm07Ci0Jc3RydWN0IHR0bV9ib19kZXZpY2UgYmRl djsKKwlzdHJ1Y3QgdHRtX2RldmljZSBiZGV2OwogCiAJc3RydWN0IHZtd19maWZvX3N0YXRlIGZp Zm87CiAKQEAgLTk5OSw3ICs5OTksNyBAQCBleHRlcm4gc3RydWN0IHR0bV9wbGFjZW1lbnQgdm13 X2V2aWN0YWJsZV9wbGFjZW1lbnQ7CiBleHRlcm4gc3RydWN0IHR0bV9wbGFjZW1lbnQgdm13X3Ny Zl9wbGFjZW1lbnQ7CiBleHRlcm4gc3RydWN0IHR0bV9wbGFjZW1lbnQgdm13X21vYl9wbGFjZW1l bnQ7CiBleHRlcm4gc3RydWN0IHR0bV9wbGFjZW1lbnQgdm13X25vbmZpeGVkX3BsYWNlbWVudDsK LWV4dGVybiBzdHJ1Y3QgdHRtX2JvX2RyaXZlciB2bXdfYm9fZHJpdmVyOworZXh0ZXJuIHN0cnVj dCB0dG1fZGV2aWNlX2Z1bmNzIHZtd19ib19kcml2ZXI7CiBleHRlcm4gY29uc3Qgc3RydWN0IHZt d19zZ190YWJsZSAqCiB2bXdfYm9fc2dfdGFibGUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpi byk7CiBleHRlcm4gaW50IHZtd19ib19jcmVhdGVfYW5kX3BvcHVsYXRlKHN0cnVjdCB2bXdfcHJp dmF0ZSAqZGV2X3ByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9yZXNvdXJjZS5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcmVzb3VyY2UuYwpp bmRleCBjNGRmNTFhMmE5MjYuLmMzYTcyNGUzNzEwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfcmVzb3VyY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9yZXNvdXJjZS5jCkBAIC04NTYsNyArODU2LDcgQEAgdm9pZCB2bXdfcXVlcnlfbW92 ZV9ub3RpZnkoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkJCSAgIHN0cnVjdCB0dG1f cmVzb3VyY2UgKm1lbSkKIHsKIAlzdHJ1Y3Qgdm13X2J1ZmZlcl9vYmplY3QgKmR4X3F1ZXJ5X21v YjsKLQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9IGJvLT5iZGV2OworCXN0cnVjdCB0dG1f ZGV2aWNlICpiZGV2ID0gYm8tPmJkZXY7CiAJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdjsK IAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF90dG1fYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF90dG1fYnVmZmVyLmMKaW5kZXggNmE0 NDU2N2U0YmE1Li5kMWJmYTU5NTc5ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X3R0bV9idWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF90dG1fYnVmZmVyLmMKQEAgLTQ4Myw3ICs0ODMsNyBAQCBjb25zdCBzdHJ1Y3Qgdm13X3NnX3Rh YmxlICp2bXdfYm9fc2dfdGFibGUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykKIH0KIAog Ci1zdGF0aWMgaW50IHZtd190dG1fYmluZChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK3N0 YXRpYyBpbnQgdm13X3R0bV9iaW5kKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkJc3RydWN0 IHR0bV90dCAqdHRtLCBzdHJ1Y3QgdHRtX3Jlc291cmNlICpib19tZW0pCiB7CiAJc3RydWN0IHZt d190dG1fdHQgKnZtd19iZSA9CkBAIC01MjcsNyArNTI3LDcgQEAgc3RhdGljIGludCB2bXdfdHRt X2JpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCiAJcmV0dXJuIHJldDsKIH0KIAotc3Rh dGljIHZvaWQgdm13X3R0bV91bmJpbmQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCitzdGF0 aWMgdm9pZCB2bXdfdHRtX3VuYmluZChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJCSAgIHN0 cnVjdCB0dG1fdHQgKnR0bSkKIHsKIAlzdHJ1Y3Qgdm13X3R0bV90dCAqdm13X2JlID0KQEAgLTU1 Myw3ICs1NTMsNyBAQCBzdGF0aWMgdm9pZCB2bXdfdHRtX3VuYmluZChzdHJ1Y3QgdHRtX2JvX2Rl dmljZSAqYmRldiwKIH0KIAogCi1zdGF0aWMgdm9pZCB2bXdfdHRtX2Rlc3Ryb3koc3RydWN0IHR0 bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSkKK3N0YXRpYyB2b2lkIHZtd190 dG1fZGVzdHJveShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKQog ewogCXN0cnVjdCB2bXdfdHRtX3R0ICp2bXdfYmUgPQogCQljb250YWluZXJfb2YodHRtLCBzdHJ1 Y3Qgdm13X3R0bV90dCwgZG1hX3R0bSk7CkBAIC01NzMsNyArNTczLDcgQEAgc3RhdGljIHZvaWQg dm13X3R0bV9kZXN0cm95KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0 ICp0dG0pCiB9CiAKIAotc3RhdGljIGludCB2bXdfdHRtX3BvcHVsYXRlKHN0cnVjdCB0dG1fYm9f ZGV2aWNlICpiZGV2LAorc3RhdGljIGludCB2bXdfdHRtX3BvcHVsYXRlKHN0cnVjdCB0dG1fZGV2 aWNlICpiZGV2LAogCQkJICAgIHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9vcGVyYXRp b25fY3R4ICpjdHgpCiB7CiAJLyogVE9ETzogbWF5YmUgY29tcGxldGVseSBkcm9wIHRoaXMgPyAq LwpAQCAtNTgzLDcgKzU4Myw3IEBAIHN0YXRpYyBpbnQgdm13X3R0bV9wb3B1bGF0ZShzdHJ1Y3Qg dHRtX2JvX2RldmljZSAqYmRldiwKIAlyZXR1cm4gdHRtX3Bvb2xfYWxsb2MoJmJkZXYtPnBvb2ws IHR0bSwgY3R4KTsKIH0KIAotc3RhdGljIHZvaWQgdm13X3R0bV91bnBvcHVsYXRlKHN0cnVjdCB0 dG1fYm9fZGV2aWNlICpiZGV2LAorc3RhdGljIHZvaWQgdm13X3R0bV91bnBvcHVsYXRlKHN0cnVj dCB0dG1fZGV2aWNlICpiZGV2LAogCQkJICAgICAgIHN0cnVjdCB0dG1fdHQgKnR0bSkKIHsKIAlz dHJ1Y3Qgdm13X3R0bV90dCAqdm13X3R0ID0gY29udGFpbmVyX29mKHR0bSwgc3RydWN0IHZtd190 dG1fdHQsCkBAIC02NDAsNyArNjQwLDcgQEAgc3RhdGljIGludCB2bXdfdmVyaWZ5X2FjY2Vzcyhz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAlyZXR1cm4g dm13X3VzZXJfYm9fdmVyaWZ5X2FjY2VzcyhibywgdGZpbGUpOwogfQogCi1zdGF0aWMgaW50IHZt d190dG1faW9fbWVtX3Jlc2VydmUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0 dG1fcmVzb3VyY2UgKm1lbSkKK3N0YXRpYyBpbnQgdm13X3R0bV9pb19tZW1fcmVzZXJ2ZShzdHJ1 Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV9yZXNvdXJjZSAqbWVtKQogewogCXN0cnVj dCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjb250YWluZXJfb2YoYmRldiwgc3RydWN0IHZtd19w cml2YXRlLCBiZGV2KTsKIApAQCAtNzQ0LDcgKzc0NCw3IEBAIHZtd19kZWxldGVfbWVtX25vdGlm eShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQogCXZtd19tb3ZlX25vdGlmeShibywgZmFs c2UsIE5VTEwpOwogfQogCi1zdHJ1Y3QgdHRtX2JvX2RyaXZlciB2bXdfYm9fZHJpdmVyID0gewor c3RydWN0IHR0bV9kZXZpY2VfZnVuY3Mgdm13X2JvX2RyaXZlciA9IHsKIAkudHRtX3R0X2NyZWF0 ZSA9ICZ2bXdfdHRtX3R0X2NyZWF0ZSwKIAkudHRtX3R0X3BvcHVsYXRlID0gJnZtd190dG1fcG9w dWxhdGUsCiAJLnR0bV90dF91bnBvcHVsYXRlID0gJnZtd190dG1fdW5wb3B1bGF0ZSwKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2Ry bV9nZW1fdnJhbV9oZWxwZXIuaAppbmRleCBhNGJhYzAyMjQ5YzIuLjI4ODA1NWQzOTdkOSAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oCisrKyBiL2luY2x1ZGUv ZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuaApAQCAtMTcyLDE5ICsxNzIsMTkgQEAgc3RydWN0IGRy bV92cmFtX21tIHsKIAl1aW50NjRfdCB2cmFtX2Jhc2U7CiAJc2l6ZV90IHZyYW1fc2l6ZTsKIAot CXN0cnVjdCB0dG1fYm9fZGV2aWNlIGJkZXY7CisJc3RydWN0IHR0bV9kZXZpY2UgYmRldjsKIH07 CiAKIC8qKgogICogZHJtX3ZyYW1fbW1fb2ZfYmRldigpIC0gXAotCVJldHVybnMgdGhlIGNvbnRh aW5lciBvZiB0eXBlICZzdHJ1Y3QgdHRtX2JvX2RldmljZSBmb3IgZmllbGQgYmRldi4KKwlSZXR1 cm5zIHRoZSBjb250YWluZXIgb2YgdHlwZSAmc3RydWN0IHR0bV9kZXZpY2UgZm9yIGZpZWxkIGJk ZXYuCiAgKiBAYmRldjoJdGhlIFRUTSBCTyBkZXZpY2UKICAqCiAgKiBSZXR1cm5zOgogICogVGhl IGNvbnRhaW5pbmcgaW5zdGFuY2Ugb2YgJnN0cnVjdCBkcm1fdnJhbV9tbQogICovCiBzdGF0aWMg aW5saW5lIHN0cnVjdCBkcm1fdnJhbV9tbSAqZHJtX3ZyYW1fbW1fb2ZfYmRldigKLQlzdHJ1Y3Qg dHRtX2JvX2RldmljZSAqYmRldikKKwlzdHJ1Y3QgdHRtX2RldmljZSAqYmRldikKIHsKIAlyZXR1 cm4gY29udGFpbmVyX29mKGJkZXYsIHN0cnVjdCBkcm1fdnJhbV9tbSwgYmRldik7CiB9CmRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oIGIvaW5jbHVkZS9kcm0vdHRtL3R0 bV9ib19hcGkuaAppbmRleCBlMTdiZTMyNGQ5NWYuLjYyNzM0ZGIwYjQyMSAxMDA2NDQKLS0tIGEv aW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaAorKysgYi9pbmNsdWRlL2RybS90dG0vdHRtX2Jv X2FwaS5oCkBAIC00NCw5ICs0NCw5IEBACiAKICNpbmNsdWRlICJ0dG1fcmVzb3VyY2UuaCIKIAot c3RydWN0IHR0bV9ib19nbG9iYWw7CitzdHJ1Y3QgdHRtX2dsb2JhbDsKIAotc3RydWN0IHR0bV9i b19kZXZpY2U7CitzdHJ1Y3QgdHRtX2RldmljZTsKIAogc3RydWN0IGRtYV9idWZfbWFwOwogCkBA IC0xMjIsNyArMTIyLDcgQEAgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0IHsKIAkgKiBNZW1iZXJz IGNvbnN0YW50IGF0IGluaXQuCiAJICovCiAKLQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldjsK KwlzdHJ1Y3QgdHRtX2RldmljZSAqYmRldjsKIAllbnVtIHR0bV9ib190eXBlIHR5cGU7CiAJdm9p ZCAoKmRlc3Ryb3kpIChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKik7CiAJc2l6ZV90IGFjY19z aXplOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgdHRtX2JvX3B1dChzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKmJvKTsKICAqIEBidWxrOiBvcHRpb25hbCBidWxrIG1vdmUgc3RydWN0dXJlIHRv IHJlbWVtYmVyIEJPIHBvc2l0aW9ucwogICoKICAqIE1vdmUgdGhpcyBCTyB0byB0aGUgdGFpbCBv ZiBhbGwgbHJ1IGxpc3RzIHVzZWQgdG8gbG9va3VwIGFuZCByZXNlcnZlIGFuCi0gKiBvYmplY3Qu IFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2l0aCBzdHJ1Y3QgdHRtX2JvX2dsb2JhbDo6 bHJ1X2xvY2sKKyAqIG9iamVjdC4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB3aXRoIHN0 cnVjdCB0dG1fZ2xvYmFsOjpscnVfbG9jawogICogaGVsZCwgYW5kIGlzIHVzZWQgdG8gbWFrZSBh IEJPIGxlc3MgbGlrZWx5IHRvIGJlIGNvbnNpZGVyZWQgZm9yIGV2aWN0aW9uLgogICovCiB2b2lk IHR0bV9ib19tb3ZlX3RvX2xydV90YWlsKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCkBA IC0zMjYsNyArMzI2LDcgQEAgdm9pZCB0dG1fYm9fbW92ZV90b19scnVfdGFpbChzdHJ1Y3QgdHRt X2J1ZmZlcl9vYmplY3QgKmJvLAogICogQGJ1bGs6IGJ1bGsgbW92ZSBzdHJ1Y3R1cmUKICAqCiAg KiBCdWxrIG1vdmUgQk9zIHRvIHRoZSBMUlUgdGFpbCwgb25seSB2YWxpZCB0byB1c2Ugd2hlbiBk cml2ZXIgbWFrZXMgc3VyZSB0aGF0Ci0gKiBCTyBvcmRlciBuZXZlciBjaGFuZ2VzLiBTaG91bGQg YmUgY2FsbGVkIHdpdGggdHRtX2JvX2dsb2JhbDo6bHJ1X2xvY2sgaGVsZC4KKyAqIEJPIG9yZGVy IG5ldmVyIGNoYW5nZXMuIFNob3VsZCBiZSBjYWxsZWQgd2l0aCB0dG1fZ2xvYmFsOjpscnVfbG9j ayBoZWxkLgogICovCiB2b2lkIHR0bV9ib19idWxrX21vdmVfbHJ1X3RhaWwoc3RydWN0IHR0bV9s cnVfYnVsa19tb3ZlICpidWxrKTsKIApAQCAtMzM3LDE0ICszMzcsMTQgQEAgdm9pZCB0dG1fYm9f YnVsa19tb3ZlX2xydV90YWlsKHN0cnVjdCB0dG1fbHJ1X2J1bGtfbW92ZSAqYnVsayk7CiAgKiBS ZXR1cm5zCiAgKiBUcnVlIGlmIHRoZSB3b3JrcXVldWUgd2FzIHF1ZXVlZCBhdCB0aGUgdGltZQog ICovCi1pbnQgdHRtX2JvX2xvY2tfZGVsYXllZF93b3JrcXVldWUoc3RydWN0IHR0bV9ib19kZXZp Y2UgKmJkZXYpOworaW50IHR0bV9ib19sb2NrX2RlbGF5ZWRfd29ya3F1ZXVlKHN0cnVjdCB0dG1f ZGV2aWNlICpiZGV2KTsKIAogLyoqCiAgKiB0dG1fYm9fdW5sb2NrX2RlbGF5ZWRfd29ya3F1ZXVl CiAgKgogICogQWxsb3dzIHRoZSBkZWxheWVkIHdvcmtxdWV1ZSB0byBydW4uCiAgKi8KLXZvaWQg dHRtX2JvX3VubG9ja19kZWxheWVkX3dvcmtxdWV1ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRl diwgaW50IHJlc2NoZWQpOwordm9pZCB0dG1fYm9fdW5sb2NrX2RlbGF5ZWRfd29ya3F1ZXVlKHN0 cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBpbnQgcmVzY2hlZCk7CiAKIC8qKgogICogdHRtX2JvX2V2 aWN0aW9uX3ZhbHVhYmxlCkBAIC0zNTcsMTQgKzM1NywxNCBAQCB2b2lkIHR0bV9ib191bmxvY2tf ZGVsYXllZF93b3JrcXVldWUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIGludCByZXNjaGVk KTsKIGJvb2wgdHRtX2JvX2V2aWN0aW9uX3ZhbHVhYmxlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVj dCAqYm8sCiAJCQkgICAgICBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlICpwbGFjZSk7CiAKLXNpemVf dCB0dG1fYm9fZG1hX2FjY19zaXplKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAorc2l6ZV90 IHR0bV9ib19kbWFfYWNjX3NpemUoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsCiAJCQkgICB1bnNp Z25lZCBsb25nIGJvX3NpemUsCiAJCQkgICB1bnNpZ25lZCBzdHJ1Y3Rfc2l6ZSk7CiAKIC8qKgog ICogdHRtX2JvX2luaXRfcmVzZXJ2ZWQKICAqCi0gKiBAYmRldjogUG9pbnRlciB0byBhIHR0bV9i b19kZXZpY2Ugc3RydWN0LgorICogQGJkZXY6IFBvaW50ZXIgdG8gYSB0dG1fZGV2aWNlIHN0cnVj dC4KICAqIEBibzogUG9pbnRlciB0byBhIHR0bV9idWZmZXJfb2JqZWN0IHRvIGJlIGluaXRpYWxp emVkLgogICogQHNpemU6IFJlcXVlc3RlZCBzaXplIG9mIGJ1ZmZlciBvYmplY3QuCiAgKiBAdHlw ZTogUmVxdWVzdGVkIHR5cGUgb2YgYnVmZmVyIG9iamVjdC4KQEAgLTM5Niw3ICszOTYsNyBAQCBz aXplX3QgdHRtX2JvX2RtYV9hY2Nfc2l6ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKICAq IC1FUkVTVEFSVFNZUzogSW50ZXJydXB0ZWQgYnkgc2lnbmFsIHdoaWxlIHNsZWVwaW5nIHdhaXRp bmcgZm9yIHJlc291cmNlcy4KICAqLwogCi1pbnQgdHRtX2JvX2luaXRfcmVzZXJ2ZWQoc3RydWN0 IHR0bV9ib19kZXZpY2UgKmJkZXYsCitpbnQgdHRtX2JvX2luaXRfcmVzZXJ2ZWQoc3RydWN0IHR0 bV9kZXZpY2UgKmJkZXYsCiAJCQkgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkJCSBz aXplX3Qgc2l6ZSwgZW51bSB0dG1fYm9fdHlwZSB0eXBlLAogCQkJIHN0cnVjdCB0dG1fcGxhY2Vt ZW50ICpwbGFjZW1lbnQsCkBAIC00MDksNyArNDA5LDcgQEAgaW50IHR0bV9ib19pbml0X3Jlc2Vy dmVkKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAogLyoqCiAgKiB0dG1fYm9faW5pdAogICoK LSAqIEBiZGV2OiBQb2ludGVyIHRvIGEgdHRtX2JvX2RldmljZSBzdHJ1Y3QuCisgKiBAYmRldjog UG9pbnRlciB0byBhIHR0bV9kZXZpY2Ugc3RydWN0LgogICogQGJvOiBQb2ludGVyIHRvIGEgdHRt X2J1ZmZlcl9vYmplY3QgdG8gYmUgaW5pdGlhbGl6ZWQuCiAgKiBAc2l6ZTogUmVxdWVzdGVkIHNp emUgb2YgYnVmZmVyIG9iamVjdC4KICAqIEB0eXBlOiBSZXF1ZXN0ZWQgdHlwZSBvZiBidWZmZXIg b2JqZWN0LgpAQCAtNDQzLDcgKzQ0Myw3IEBAIGludCB0dG1fYm9faW5pdF9yZXNlcnZlZChzdHJ1 Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKICAqIC1FSU5WQUw6IEludmFsaWQgcGxhY2VtZW50IGZs YWdzLgogICogLUVSRVNUQVJUU1lTOiBJbnRlcnJ1cHRlZCBieSBzaWduYWwgd2hpbGUgc2xlZXBp bmcgd2FpdGluZyBmb3IgcmVzb3VyY2VzLgogICovCi1pbnQgdHRtX2JvX2luaXQoc3RydWN0IHR0 bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCitpbnQgdHRt X2JvX2luaXQoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fYnVmZmVyX29iamVj dCAqYm8sCiAJCXNpemVfdCBzaXplLCBlbnVtIHR0bV9ib190eXBlIHR5cGUsCiAJCXN0cnVjdCB0 dG1fcGxhY2VtZW50ICpwbGFjZW1lbnQsCiAJCXVpbnQzMl90IHBhZ2VfYWxpZ25tZW50LCBib29s IGludGVycnVidGlibGUsIHNpemVfdCBhY2Nfc2l6ZSwKQEAgLTUzNywxOCArNTM3LDE4IEBAIGlu dCB0dG1fYm9fbW1hcF9vYmooc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8pOwogICoKICAqIEBmaWxwOiAgICAgIGZpbHAgYXMgaW5wdXQgZnJv bSB0aGUgbW1hcCBtZXRob2QuCiAgKiBAdm1hOiAgICAgICB2bWEgYXMgaW5wdXQgZnJvbSB0aGUg bW1hcCBtZXRob2QuCi0gKiBAYmRldjogICAgICBQb2ludGVyIHRvIHRoZSB0dG1fYm9fZGV2aWNl IHdpdGggdGhlIGFkZHJlc3Mgc3BhY2UgbWFuYWdlci4KKyAqIEBiZGV2OiAgICAgIFBvaW50ZXIg dG8gdGhlIHR0bV9kZXZpY2Ugd2l0aCB0aGUgYWRkcmVzcyBzcGFjZSBtYW5hZ2VyLgogICoKICAq IFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IHRoZSBkZXZpY2UgbW1h cCBtZXRob2QuCiAgKiBpZiB0aGUgZGV2aWNlIGFkZHJlc3Mgc3BhY2UgaXMgdG8gYmUgYmFja2Vk IGJ5IHRoZSBibyBtYW5hZ2VyLgogICovCiBpbnQgdHRtX2JvX21tYXAoc3RydWN0IGZpbGUgKmZp bHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAotCQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAq YmRldik7CisJCXN0cnVjdCB0dG1fZGV2aWNlICpiZGV2KTsKIAogLyoqCiAgKiB0dG1fYm9faW8K ICAqCi0gKiBAYmRldjogICAgICBQb2ludGVyIHRvIHRoZSBzdHJ1Y3QgdHRtX2JvX2RldmljZS4K KyAqIEBiZGV2OiAgICAgIFBvaW50ZXIgdG8gdGhlIHN0cnVjdCB0dG1fZGV2aWNlLgogICogQGZp bHA6ICAgICAgUG9pbnRlciB0byB0aGUgc3RydWN0IGZpbGUgYXR0ZW1wdGluZyB0byByZWFkIC8g d3JpdGUuCiAgKiBAd2J1ZjogICAgICBVc2VyLXNwYWNlIHBvaW50ZXIgdG8gYWRkcmVzcyBvZiBi dWZmZXIgdG8gd3JpdGUuIE5VTEwgb24gcmVhZC4KICAqIEByYnVmOiAgICAgIFVzZXItc3BhY2Ug cG9pbnRlciB0byBhZGRyZXNzIG9mIGJ1ZmZlciB0byByZWFkIGludG8uCkBAIC01NjUsNyArNTY1 LDcgQEAgaW50IHR0bV9ib19tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSwKICAqIHRoZSBmdW5jdGlvbiBtYXkgcmV0dXJuIC1FUkVTVEFSVFNZUyBpZgog ICogaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCiAgKi8KLXNzaXplX3QgdHRtX2JvX2lvKHN0cnVj dCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgZmlsZSAqZmlscCwKK3NzaXplX3QgdHRtX2Jv X2lvKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgZmlsZSAqZmlscCwKIAkJICBjb25z dCBjaGFyIF9fdXNlciAqd2J1ZiwgY2hhciBfX3VzZXIgKnJidWYsCiAJCSAgc2l6ZV90IGNvdW50 LCBsb2ZmX3QgKmZfcG9zLCBib29sIHdyaXRlKTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCB0dG1fYm9fdW5waW4oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykK IAktLWJvLT5waW5fY291bnQ7CiB9CiAKLWludCB0dG1fbWVtX2V2aWN0X2ZpcnN0KHN0cnVjdCB0 dG1fYm9fZGV2aWNlICpiZGV2LAoraW50IHR0bV9tZW1fZXZpY3RfZmlyc3Qoc3RydWN0IHR0bV9k ZXZpY2UgKmJkZXYsCiAJCQlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAkJCWNv bnN0IHN0cnVjdCB0dG1fcGxhY2UgKnBsYWNlLAogCQkJc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4 ICpjdHgsCkBAIC02NDIsNSArNjQyLDYgQEAgdm9pZCB0dG1fYm9fdm1fY2xvc2Uoc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEpOwogCiBpbnQgdHRtX2JvX3ZtX2FjY2VzcyhzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQkgICAgIHZvaWQgKmJ1ZiwgaW50 IGxlbiwgaW50IHdyaXRlKTsKK2Jvb2wgdHRtX2JvX2RlbGF5ZWRfZGVsZXRlKHN0cnVjdCB0dG1f ZGV2aWNlICpiZGV2LCBib29sIHJlbW92ZV9hbGwpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmggYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2Ry aXZlci5oCmluZGV4IDQyMzM0ODQxNGM1OS4uMWM5YmY5OTNlMjUyIDEwMDY0NAotLS0gYS9pbmNs dWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oCisrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9f ZHJpdmVyLmgKQEAgLTM3LDMwMSArMzcsMTQgQEAKICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5o PgogI2luY2x1ZGUgPGxpbnV4L2RtYS1yZXN2Lmg+CiAKKyNpbmNsdWRlIDxkcm0vdHRtL3R0bV9k ZXZpY2UuaD4KKwogI2luY2x1ZGUgInR0bV9ib19hcGkuaCIKICNpbmNsdWRlICJ0dG1fbWVtb3J5 LmgiCiAjaW5jbHVkZSAidHRtX3BsYWNlbWVudC5oIgogI2luY2x1ZGUgInR0bV90dC5oIgogI2lu Y2x1ZGUgInR0bV9wb29sLmgiCiAKLS8qKgotICogc3RydWN0IHR0bV9ib19kcml2ZXIKLSAqCi0g KiBAY3JlYXRlX3R0bV9iYWNrZW5kX2VudHJ5OiBDYWxsYmFjayB0byBjcmVhdGUgYSBzdHJ1Y3Qg dHRtX2JhY2tlbmQuCi0gKiBAZXZpY3RfZmxhZ3M6IENhbGxiYWNrIHRvIG9idGFpbiBwbGFjZW1l bnQgZmxhZ3Mgd2hlbiBhIGJ1ZmZlciBpcyBldmljdGVkLgotICogQG1vdmU6IENhbGxiYWNrIGZv ciBhIGRyaXZlciB0byBob29rIGluIGFjY2VsZXJhdGVkIGZ1bmN0aW9ucyB0bwotICogbW92ZSBh IGJ1ZmZlci4KLSAqIElmIHNldCB0byBOVUxMLCBhIHBvdGVudGlhbGx5IHNsb3cgbWVtY3B5KCkg bW92ZSBpcyB1c2VkLgotICovCi0KLXN0cnVjdCB0dG1fYm9fZHJpdmVyIHsKLQkvKioKLQkgKiB0 dG1fdHRfY3JlYXRlCi0JICoKLQkgKiBAYm86IFRoZSBidWZmZXIgb2JqZWN0IHRvIGNyZWF0ZSB0 aGUgdHRtIGZvci4KLQkgKiBAcGFnZV9mbGFnczogUGFnZSBmbGFncyBhcyBpZGVudGlmaWVkIGJ5 IFRUTV9QQUdFX0ZMQUdfWFggZmxhZ3MuCi0JICoKLQkgKiBDcmVhdGUgYSBzdHJ1Y3QgdHRtX3R0 IHRvIGJhY2sgZGF0YSB3aXRoIHN5c3RlbSBtZW1vcnkgcGFnZXMuCi0JICogTm8gcGFnZXMgYXJl IGFjdHVhbGx5IGFsbG9jYXRlZC4KLQkgKiBSZXR1cm5zOgotCSAqIE5VTEw6IE91dCBvZiBtZW1v cnkuCi0JICovCi0Jc3RydWN0IHR0bV90dCAqKCp0dG1fdHRfY3JlYXRlKShzdHJ1Y3QgdHRtX2J1 ZmZlcl9vYmplY3QgKmJvLAotCQkJCQl1aW50MzJfdCBwYWdlX2ZsYWdzKTsKLQotCS8qKgotCSAq IHR0bV90dF9wb3B1bGF0ZQotCSAqCi0JICogQHR0bTogVGhlIHN0cnVjdCB0dG1fdHQgdG8gY29u dGFpbiB0aGUgYmFja2luZyBwYWdlcy4KLQkgKgotCSAqIEFsbG9jYXRlIGFsbCBiYWNraW5nIHBh Z2VzCi0JICogUmV0dXJuczoKLQkgKiAtRU5PTUVNOiBPdXQgb2YgbWVtb3J5LgotCSAqLwotCWlu dCAoKnR0bV90dF9wb3B1bGF0ZSkoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCi0JCQkgICAg ICAgc3RydWN0IHR0bV90dCAqdHRtLAotCQkJICAgICAgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0 eCAqY3R4KTsKLQotCS8qKgotCSAqIHR0bV90dF91bnBvcHVsYXRlCi0JICoKLQkgKiBAdHRtOiBU aGUgc3RydWN0IHR0bV90dCB0byBjb250YWluIHRoZSBiYWNraW5nIHBhZ2VzLgotCSAqCi0JICog RnJlZSBhbGwgYmFja2luZyBwYWdlCi0JICovCi0Jdm9pZCAoKnR0bV90dF91bnBvcHVsYXRlKShz dHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKTsKLQotCS8qKgot CSAqIHR0bV90dF9kZXN0cm95Ci0JICoKLQkgKiBAYmRldjogUG9pbnRlciB0byBhIHR0bSBkZXZp Y2UKLQkgKiBAdHRtOiBQb2ludGVyIHRvIGEgc3RydWN0IHR0bV90dC4KLQkgKgotCSAqIERlc3Ry b3kgdGhlIGJhY2tlbmQuIFRoaXMgd2lsbCBiZSBjYWxsIGJhY2sgZnJvbSB0dG1fdHRfZGVzdHJv eSBzbwotCSAqIGRvbid0IGNhbGwgdHRtX3R0X2Rlc3Ryb3kgZnJvbSB0aGUgY2FsbGJhY2sgb3Ig aW5maW5pdGUgbG9vcC4KLQkgKi8KLQl2b2lkICgqdHRtX3R0X2Rlc3Ryb3kpKHN0cnVjdCB0dG1f Ym9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pOwotCi0JLyoqCi0JICogc3RydWN0 IHR0bV9ib19kcml2ZXIgbWVtYmVyIGV2aWN0aW9uX3ZhbHVhYmxlCi0JICoKLQkgKiBAYm86IHRo ZSBidWZmZXIgb2JqZWN0IHRvIGJlIGV2aWN0ZWQKLQkgKiBAcGxhY2U6IHBsYWNlbWVudCB3ZSBu ZWVkIHJvb20gZm9yCi0JICoKLQkgKiBDaGVjayB3aXRoIHRoZSBkcml2ZXIgaWYgaXQgaXMgdmFs dWFibGUgdG8gZXZpY3QgYSBCTyB0byBtYWtlIHJvb20KLQkgKiBmb3IgYSBjZXJ0YWluIHBsYWNl bWVudC4KLQkgKi8KLQlib29sICgqZXZpY3Rpb25fdmFsdWFibGUpKHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8sCi0JCQkJICBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlICpwbGFjZSk7Ci0JLyoq Ci0JICogc3RydWN0IHR0bV9ib19kcml2ZXIgbWVtYmVyIGV2aWN0X2ZsYWdzOgotCSAqCi0JICog QGJvOiB0aGUgYnVmZmVyIG9iamVjdCB0byBiZSBldmljdGVkCi0JICoKLQkgKiBSZXR1cm4gdGhl IGJvIGZsYWdzIGZvciBhIGJ1ZmZlciB3aGljaCBpcyBub3QgbWFwcGVkIHRvIHRoZSBoYXJkd2Fy ZS4KLQkgKiBUaGVzZSB3aWxsIGJlIHBsYWNlZCBpbiBwcm9wb3NlZF9mbGFncyBzbyB0aGF0IHdo ZW4gdGhlIG1vdmUgaXMKLQkgKiBmaW5pc2hlZCwgdGhleSdsbCBlbmQgdXAgaW4gYm8tPm1lbS5m bGFncwotCSAqIFRoaXMgc2hvdWxkIG5vdCBjYXVzZSBtdWx0aWhvcCBldmljdGlvbnMsIGFuZCB0 aGUgY29yZSB3aWxsIHdhcm4KLQkgKiBpZiBvbmUgaXMgcHJvcG9zZWQuCi0JICovCi0KLQl2b2lk ICgqZXZpY3RfZmxhZ3MpKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCi0JCQkgICAgc3Ry dWN0IHR0bV9wbGFjZW1lbnQgKnBsYWNlbWVudCk7Ci0KLQkvKioKLQkgKiBzdHJ1Y3QgdHRtX2Jv X2RyaXZlciBtZW1iZXIgbW92ZToKLQkgKgotCSAqIEBibzogdGhlIGJ1ZmZlciB0byBtb3ZlCi0J ICogQGV2aWN0OiB3aGV0aGVyIHRoaXMgbW90aW9uIGlzIGV2aWN0aW5nIHRoZSBidWZmZXIgZnJv bQotCSAqIHRoZSBncmFwaGljcyBhZGRyZXNzIHNwYWNlCi0JICogQGN0eDogY29udGV4dCBmb3Ig dGhpcyBtb3ZlIHdpdGggcGFyYW1ldGVycwotCSAqIEBuZXdfbWVtOiB0aGUgbmV3IG1lbW9yeSBy ZWdpb24gcmVjZWl2aW5nIHRoZSBidWZmZXIKLQkgQCBAaG9wOiBwbGFjZW1lbnQgZm9yIGRyaXZl ciBkaXJlY3RlZCBpbnRlcm1lZGlhdGUgaG9wCi0JICoKLQkgKiBNb3ZlIGEgYnVmZmVyIGJldHdl ZW4gdHdvIG1lbW9yeSByZWdpb25zLgotCSAqIFJldHVybnMgZXJybm8gLUVNVUxUSUhPUCBpZiBk cml2ZXIgcmVxdWVzdHMgYSBob3AKLQkgKi8KLQlpbnQgKCptb3ZlKShzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKmJvLCBib29sIGV2aWN0LAotCQkgICAgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4 ICpjdHgsCi0JCSAgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICpuZXdfbWVtLAotCQkgICAgc3RydWN0 IHR0bV9wbGFjZSAqaG9wKTsKLQotCS8qKgotCSAqIHN0cnVjdCB0dG1fYm9fZHJpdmVyX21lbWJl ciB2ZXJpZnlfYWNjZXNzCi0JICoKLQkgKiBAYm86IFBvaW50ZXIgdG8gYSBidWZmZXIgb2JqZWN0 LgotCSAqIEBmaWxwOiBQb2ludGVyIHRvIGEgc3RydWN0IGZpbGUgdHJ5aW5nIHRvIGFjY2VzcyB0 aGUgb2JqZWN0LgotCSAqCi0JICogQ2FsbGVkIGZyb20gdGhlIG1hcCAvIHdyaXRlIC8gcmVhZCBt ZXRob2RzIHRvIHZlcmlmeSB0aGF0IHRoZQotCSAqIGNhbGxlciBpcyBwZXJtaXR0ZWQgdG8gYWNj ZXNzIHRoZSBidWZmZXIgb2JqZWN0LgotCSAqIFRoaXMgbWVtYmVyIG1heSBiZSBzZXQgdG8gTlVM TCwgd2hpY2ggd2lsbCByZWZ1c2UgdGhpcyBraW5kIG9mCi0JICogYWNjZXNzIGZvciBhbGwgYnVm ZmVyIG9iamVjdHMuCi0JICogVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDAgaWYgYWNjZXNz IGlzIGdyYW50ZWQsIC1FUEVSTSBvdGhlcndpc2UuCi0JICovCi0JaW50ICgqdmVyaWZ5X2FjY2Vz cykoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKLQkJCSAgICAgc3RydWN0IGZpbGUgKmZp bHApOwotCi0JLyoqCi0JICogSG9vayB0byBub3RpZnkgZHJpdmVyIGFib3V0IGEgcmVzb3VyY2Ug ZGVsZXRlLgotCSAqLwotCXZvaWQgKCpkZWxldGVfbWVtX25vdGlmeSkoc3RydWN0IHR0bV9idWZm ZXJfb2JqZWN0ICpibyk7Ci0KLQkvKioKLQkgKiBub3RpZnkgdGhlIGRyaXZlciB0aGF0IHdlJ3Jl IGFib3V0IHRvIHN3YXAgb3V0IHRoaXMgYm8KLQkgKi8KLQl2b2lkICgqc3dhcF9ub3RpZnkpKHN0 cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pOwotCi0JLyoqCi0JICogRHJpdmVyIGNhbGxiYWNr IG9uIHdoZW4gbWFwcGluZyBpbyBtZW1vcnkgKGZvciBib19tb3ZlX21lbWNweQotCSAqIGZvciBp bnN0YW5jZSkuIFRUTSB3aWxsIHRha2UgY2FyZSB0byBjYWxsIGlvX21lbV9mcmVlIHdoZW5ldmVy Ci0JICogdGhlIG1hcHBpbmcgaXMgbm90IHVzZSBhbnltb3JlLiBpb19tZW1fcmVzZXJ2ZSAmIGlv X21lbV9mcmVlCi0JICogYXJlIGJhbGFuY2VkLgotCSAqLwotCWludCAoKmlvX21lbV9yZXNlcnZl KShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKLQkJCSAgICAgIHN0cnVjdCB0dG1fcmVzb3Vy Y2UgKm1lbSk7Ci0Jdm9pZCAoKmlvX21lbV9mcmVlKShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRl diwKLQkJCSAgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICptZW0pOwotCi0JLyoqCi0JICogUmV0dXJu IHRoZSBwZm4gZm9yIGEgZ2l2ZW4gcGFnZV9vZmZzZXQgaW5zaWRlIHRoZSBCTy4KLQkgKgotCSAq IEBibzogdGhlIEJPIHRvIGxvb2sgdXAgdGhlIHBmbiBmb3IKLQkgKiBAcGFnZV9vZmZzZXQ6IHRo ZSBvZmZzZXQgdG8gbG9vayB1cAotCSAqLwotCXVuc2lnbmVkIGxvbmcgKCppb19tZW1fcGZuKShz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAotCQkJCSAgICB1bnNpZ25lZCBsb25nIHBhZ2Vf b2Zmc2V0KTsKLQotCS8qKgotCSAqIFJlYWQvd3JpdGUgbWVtb3J5IGJ1ZmZlcnMgZm9yIHB0cmFj ZSBhY2Nlc3MKLQkgKgotCSAqIEBibzogdGhlIEJPIHRvIGFjY2VzcwotCSAqIEBvZmZzZXQ6IHRo ZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIEJPCi0JICogQGJ1ZjogcG9pbnRlciB0byBz b3VyY2UvZGVzdGluYXRpb24gYnVmZmVyCi0JICogQGxlbjogbnVtYmVyIG9mIGJ5dGVzIHRvIGNv cHkKLQkgKiBAd3JpdGU6IHdoZXRoZXIgdG8gcmVhZCAoMCkgZnJvbSBvciB3cml0ZSAobm9uLTAp IHRvIEJPCi0JICoKLQkgKiBJZiBzdWNjZXNzZnVsLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1 cm4gdGhlIG51bWJlciBvZgotCSAqIGJ5dGVzIGNvcGllZCwgLUVJTyBvdGhlcndpc2UuIElmIHRo ZSBudW1iZXIgb2YgYnl0ZXMKLQkgKiByZXR1cm5lZCBpcyA8IGxlbiwgdGhlIGZ1bmN0aW9uIG1h eSBiZSBjYWxsZWQgYWdhaW4gd2l0aAotCSAqIHRoZSByZW1haW5kZXIgb2YgdGhlIGJ1ZmZlciB0 byBjb3B5LgotCSAqLwotCWludCAoKmFjY2Vzc19tZW1vcnkpKHN0cnVjdCB0dG1fYnVmZmVyX29i amVjdCAqYm8sIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAotCQkJICAgICB2b2lkICpidWYsIGludCBs ZW4sIGludCB3cml0ZSk7Ci0KLQkvKioKLQkgKiBzdHJ1Y3QgdHRtX2JvX2RyaXZlciBtZW1iZXIg ZGVsX2Zyb21fbHJ1X25vdGlmeQotCSAqCi0JICogQGJvOiB0aGUgYnVmZmVyIG9iamVjdCBkZWxl dGVkIGZyb20gbHJ1Ci0JICoKLQkgKiBub3RpZnkgZHJpdmVyIHRoYXQgYSBCTyB3YXMgZGVsZXRl ZCBmcm9tIExSVS4KLQkgKi8KLQl2b2lkICgqZGVsX2Zyb21fbHJ1X25vdGlmeSkoc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0ICpibyk7Ci0KLQkvKioKLQkgKiBOb3RpZnkgdGhlIGRyaXZlciB0aGF0 IHdlJ3JlIGFib3V0IHRvIHJlbGVhc2UgYSBCTwotCSAqCi0JICogQGJvOiBCTyB0aGF0IGlzIGFi b3V0IHRvIGJlIHJlbGVhc2VkCi0JICoKLQkgKiBHaXZlcyB0aGUgZHJpdmVyIGEgY2hhbmNlIHRv IGRvIGFueSBjbGVhbnVwLCBpbmNsdWRpbmcKLQkgKiBhZGRpbmcgZmVuY2VzIHRoYXQgbWF5IGZv cmNlIGEgZGVsYXllZCBkZWxldGUKLQkgKi8KLQl2b2lkICgqcmVsZWFzZV9ub3RpZnkpKHN0cnVj dCB0dG1fYnVmZmVyX29iamVjdCAqYm8pOwotfTsKLQotLyoqCi0gKiBzdHJ1Y3QgdHRtX2JvX2ds b2JhbCAtIEJ1ZmZlciBvYmplY3QgZHJpdmVyIGdsb2JhbCBkYXRhLgotICoKLSAqIEBkdW1teV9y ZWFkX3BhZ2U6IFBvaW50ZXIgdG8gYSBkdW1teSBwYWdlIHVzZWQgZm9yIG1hcHBpbmcgcmVxdWVz dHMKLSAqIG9mIHVucG9wdWxhdGVkIHBhZ2VzLgotICogQHNocmluazogQSBzaHJpbmsgY2FsbGJh Y2sgb2JqZWN0IHVzZWQgZm9yIGJ1ZmZlciBvYmplY3Qgc3dhcC4KLSAqIEBkZXZpY2VfbGlzdF9t dXRleDogTXV0ZXggcHJvdGVjdGluZyB0aGUgZGV2aWNlIGxpc3QuCi0gKiBUaGlzIG11dGV4IGlz IGhlbGQgd2hpbGUgdHJhdmVyc2luZyB0aGUgZGV2aWNlIGxpc3QgZm9yIHBtIG9wdGlvbnMuCi0g KiBAbHJ1X2xvY2s6IFNwaW5sb2NrIHByb3RlY3RpbmcgdGhlIGJvIHN1YnN5c3RlbSBscnUgbGlz dHMuCi0gKiBAZGV2aWNlX2xpc3Q6IExpc3Qgb2YgYnVmZmVyIG9iamVjdCBkZXZpY2VzLgotICog QHN3YXBfbHJ1OiBMcnUgbGlzdCBvZiBidWZmZXIgb2JqZWN0cyB1c2VkIGZvciBzd2FwcGluZy4K LSAqLwotCi1leHRlcm4gc3RydWN0IHR0bV9ib19nbG9iYWwgewotCi0JLyoqCi0JICogQ29uc3Rh bnQgYWZ0ZXIgaW5pdC4KLQkgKi8KLQotCXN0cnVjdCBrb2JqZWN0IGtvYmo7Ci0Jc3RydWN0IHBh Z2UgKmR1bW15X3JlYWRfcGFnZTsKLQlzcGlubG9ja190IGxydV9sb2NrOwotCi0JLyoqCi0JICog UHJvdGVjdGVkIGJ5IHR0bV9nbG9iYWxfbXV0ZXguCi0JICovCi0Jc3RydWN0IGxpc3RfaGVhZCBk ZXZpY2VfbGlzdDsKLQotCS8qKgotCSAqIFByb3RlY3RlZCBieSB0aGUgbHJ1X2xvY2suCi0JICov Ci0Jc3RydWN0IGxpc3RfaGVhZCBzd2FwX2xydVtUVE1fTUFYX0JPX1BSSU9SSVRZXTsKLQotCS8q KgotCSAqIEludGVybmFsIHByb3RlY3Rpb24uCi0JICovCi0JYXRvbWljX3QgYm9fY291bnQ7Ci19 IHR0bV9ib19nbG9iOwotCi0KLSNkZWZpbmUgVFRNX05VTV9NRU1fVFlQRVMgOAotCi0vKioKLSAq IHN0cnVjdCB0dG1fYm9fZGV2aWNlIC0gQnVmZmVyIG9iamVjdCBkcml2ZXIgZGV2aWNlLXNwZWNp ZmljIGRhdGEuCi0gKgotICogQGRyaXZlcjogUG9pbnRlciB0byBhIHN0cnVjdCB0dG1fYm9fZHJp dmVyIHN0cnVjdCBzZXR1cCBieSB0aGUgZHJpdmVyLgotICogQG1hbjogQW4gYXJyYXkgb2YgcmVz b3VyY2VfbWFuYWdlcnMuCi0gKiBAdm1hX21hbmFnZXI6IEFkZHJlc3Mgc3BhY2UgbWFuYWdlciAo cG9pbnRlcikKLSAqIGxydV9sb2NrOiBTcGlubG9jayB0aGF0IHByb3RlY3RzIHRoZSBidWZmZXIr ZGV2aWNlIGxydSBsaXN0cyBhbmQKLSAqIGRkZXN0cm95IGxpc3RzLgotICogQGRldl9tYXBwaW5n OiBBIHBvaW50ZXIgdG8gdGhlIHN0cnVjdCBhZGRyZXNzX3NwYWNlIHJlcHJlc2VudGluZyB0aGUK LSAqIGRldmljZSBhZGRyZXNzIHNwYWNlLgotICogQHdxOiBXb3JrIHF1ZXVlIHN0cnVjdHVyZSBm b3IgdGhlIGRlbGF5ZWQgZGVsZXRlIHdvcmtxdWV1ZS4KLSAqCi0gKi8KLQotc3RydWN0IHR0bV9i b19kZXZpY2UgewotCi0JLyoKLQkgKiBDb25zdGFudCBhZnRlciBibyBkZXZpY2UgaW5pdCAvIGF0 b21pYy4KLQkgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIGRldmljZV9saXN0OwotCXN0cnVjdCB0dG1f Ym9fZHJpdmVyICpkcml2ZXI7Ci0JLyoKLQkgKiBhY2Nlc3MgdmlhIHR0bV9tYW5hZ2VyX3R5cGUu Ci0JICovCi0Jc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyIHN5c21hbjsKLQlzdHJ1Y3QgdHRt X3Jlc291cmNlX21hbmFnZXIgKm1hbl9kcnZbVFRNX05VTV9NRU1fVFlQRVNdOwotCS8qCi0JICog UHJvdGVjdGVkIGJ5IGludGVybmFsIGxvY2tzLgotCSAqLwotCXN0cnVjdCBkcm1fdm1hX29mZnNl dF9tYW5hZ2VyICp2bWFfbWFuYWdlcjsKLQlzdHJ1Y3QgdHRtX3Bvb2wgcG9vbDsKLQotCS8qCi0J ICogUHJvdGVjdGVkIGJ5IHRoZSBnbG9iYWw6bHJ1IGxvY2suCi0JICovCi0Jc3RydWN0IGxpc3Rf aGVhZCBkZGVzdHJveTsKLQotCS8qCi0JICogUHJvdGVjdGVkIGJ5IGxvYWQgLyBmaXJzdG9wZW4g LyBsYXN0Y2xvc2UgL3VubG9hZCBzeW5jLgotCSAqLwotCi0Jc3RydWN0IGFkZHJlc3Nfc3BhY2Ug KmRldl9tYXBwaW5nOwotCi0JLyoKLQkgKiBJbnRlcm5hbCBwcm90ZWN0aW9uLgotCSAqLwotCi0J c3RydWN0IGRlbGF5ZWRfd29yayB3cTsKLX07Ci0KLXN0YXRpYyBpbmxpbmUgc3RydWN0IHR0bV9y ZXNvdXJjZV9tYW5hZ2VyICp0dG1fbWFuYWdlcl90eXBlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpi ZGV2LAotCQkJCQkJCSAgICBpbnQgbWVtX3R5cGUpCi17Ci0JcmV0dXJuIGJkZXYtPm1hbl9kcnZb bWVtX3R5cGVdOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgdHRtX3NldF9kcml2ZXJfbWFuYWdl cihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKLQkJCQkJICBpbnQgdHlwZSwKLQkJCQkJICBz dHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbmFnZXIpCi17Ci0JYmRldi0+bWFuX2Rydlt0 eXBlXSA9IG1hbmFnZXI7Ci19Ci0KIC8qKgogICogc3RydWN0IHR0bV9scnVfYnVsa19tb3ZlX3Bv cwogICoKQEAgLTM4OCwzMSArMTAxLDYgQEAgaW50IHR0bV9ib19tZW1fc3BhY2Uoc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0ICpibywKIAkJICAgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICptZW0sCiAJ CSAgICAgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgpOwogCi1pbnQgdHRtX2JvX2Rldmlj ZV9yZWxlYXNlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2KTsKLQotLyoqCi0gKiB0dG1fYm9f ZGV2aWNlX2luaXQKLSAqCi0gKiBAYmRldjogQSBwb2ludGVyIHRvIGEgc3RydWN0IHR0bV9ib19k ZXZpY2UgdG8gaW5pdGlhbGl6ZS4KLSAqIEBnbG9iOiBBIHBvaW50ZXIgdG8gYW4gaW5pdGlhbGl6 ZWQgc3RydWN0IHR0bV9ib19nbG9iYWwuCi0gKiBAZHJpdmVyOiBBIHBvaW50ZXIgdG8gYSBzdHJ1 Y3QgdHRtX2JvX2RyaXZlciBzZXQgdXAgYnkgdGhlIGNhbGxlci4KLSAqIEBkZXY6IFRoZSBjb3Jl IGtlcm5lbCBkZXZpY2UgcG9pbnRlciBmb3IgRE1BIG1hcHBpbmdzIGFuZCBhbGxvY2F0aW9ucy4K LSAqIEBtYXBwaW5nOiBUaGUgYWRkcmVzcyBzcGFjZSB0byB1c2UgZm9yIHRoaXMgYm8uCi0gKiBA dm1hX21hbmFnZXI6IEEgcG9pbnRlciB0byBhIHZtYSBtYW5hZ2VyLgotICogQHVzZV9kbWFfYWxs b2M6IElmIGNvaGVyZW50IERNQSBhbGxvY2F0aW9uIEFQSSBzaG91bGQgYmUgdXNlZC4KLSAqIEB1 c2VfZG1hMzI6IElmIHdlIHNob3VsZCB1c2UgR0ZQX0RNQTMyIGZvciBkZXZpY2UgbWVtb3J5IGFs bG9jYXRpb25zLgotICoKLSAqIEluaXRpYWxpemVzIGEgc3RydWN0IHR0bV9ib19kZXZpY2U6Ci0g KiBSZXR1cm5zOgotICogITA6IEZhaWx1cmUuCi0gKi8KLWludCB0dG1fYm9fZGV2aWNlX2luaXQo c3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCi0JCSAgICAgICBzdHJ1Y3QgdHRtX2JvX2RyaXZl ciAqZHJpdmVyLAotCQkgICAgICAgc3RydWN0IGRldmljZSAqZGV2LAotCQkgICAgICAgc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCi0JCSAgICAgICBzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRf bWFuYWdlciAqdm1hX21hbmFnZXIsCi0JCSAgICAgICBib29sIHVzZV9kbWFfYWxsb2MsIGJvb2wg dXNlX2RtYTMyKTsKLQogLyoqCiAgKiB0dG1fYm9fdW5tYXBfdmlydHVhbAogICoKQEAgLTQ5NCw5 ICsxODIsOSBAQCBzdGF0aWMgaW5saW5lIGludCB0dG1fYm9fcmVzZXJ2ZV9zbG93cGF0aChzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogc3RhdGljIGlubGluZSB2b2lkCiB0dG1fYm9fbW92 ZV90b19scnVfdGFpbF91bmxvY2tlZChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQogewot CXNwaW5fbG9jaygmdHRtX2JvX2dsb2IubHJ1X2xvY2spOworCXNwaW5fbG9jaygmdHRtX2dsb2Iu bHJ1X2xvY2spOwogCXR0bV9ib19tb3ZlX3RvX2xydV90YWlsKGJvLCAmYm8tPm1lbSwgTlVMTCk7 Ci0Jc3Bpbl91bmxvY2soJnR0bV9ib19nbG9iLmxydV9sb2NrKTsKKwlzcGluX3VubG9jaygmdHRt X2dsb2IubHJ1X2xvY2spOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdHRtX2JvX2Fzc2lnbl9t ZW0oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKQEAgLTUzOCw5ICsyMjYsOSBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgdHRtX2JvX3VucmVzZXJ2ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qg KmJvKQogLyoKICAqIHR0bV9ib191dGlsLmMKICAqLwotaW50IHR0bV9tZW1faW9fcmVzZXJ2ZShz dHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKK2ludCB0dG1fbWVtX2lvX3Jlc2VydmUoc3RydWN0 IHR0bV9kZXZpY2UgKmJkZXYsCiAJCSAgICAgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICptZW0pOwot dm9pZCB0dG1fbWVtX2lvX2ZyZWUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCit2b2lkIHR0 bV9tZW1faW9fZnJlZShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJICAgICBzdHJ1Y3QgdHRt X3Jlc291cmNlICptZW0pOwogCiAvKioKQEAgLTYzMSw3ICszMTksNyBAQCB2b2lkIHR0bV9ib190 dF9kZXN0cm95KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pOwogICogSW5pdGlhbGlzZSBh IGdlbmVyaWMgcmFuZ2UgbWFuYWdlciBmb3IgdGhlIHNlbGVjdGVkIG1lbW9yeSB0eXBlLgogICog VGhlIHJhbmdlIG1hbmFnZXIgaXMgaW5zdGFsbGVkIGZvciB0aGlzIGRldmljZSBpbiB0aGUgdHlw ZSBzbG90LgogICovCi1pbnQgdHRtX3JhbmdlX21hbl9pbml0KHN0cnVjdCB0dG1fYm9fZGV2aWNl ICpiZGV2LAoraW50IHR0bV9yYW5nZV9tYW5faW5pdChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwK IAkJICAgICAgIHVuc2lnbmVkIHR5cGUsIGJvb2wgdXNlX3R0LAogCQkgICAgICAgdW5zaWduZWQg bG9uZyBwX3NpemUpOwogCkBAIC02NDMsNyArMzMxLDcgQEAgaW50IHR0bV9yYW5nZV9tYW5faW5p dChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKICAqCiAgKiBSZW1vdmUgdGhlIGdlbmVyaWMg cmFuZ2UgbWFuYWdlciBmcm9tIGEgc2xvdCBhbmQgdGVhciBpdCBkb3duLgogICovCi1pbnQgdHRt X3JhbmdlX21hbl9maW5pKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAoraW50IHR0bV9yYW5n ZV9tYW5fZmluaShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJICAgICAgIHVuc2lnbmVkIHR5 cGUpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1fZGV2aWNlLmgg Yi9pbmNsdWRlL2RybS90dG0vdHRtX2RldmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uN2JjOGJiNzk3MTYxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9k cm0vdHRtL3R0bV9kZXZpY2UuaApAQCAtMCwwICsxLDMxOSBAQAorLyoKKyAqIENvcHlyaWdodCAy MDIwIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1 ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBB UklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBB dXRob3JzOiBDaHJpc3RpYW4gS8O2bmlnCisgKi8KKworI2lmbmRlZiBfVFRNX0RFVklDRV9IXwor I2RlZmluZSBfVFRNX0RFVklDRV9IXworCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNs dWRlIDxsaW51eC93b3JrcXVldWUuaD4KKyNpbmNsdWRlIDxkcm0vdHRtL3R0bV9yZXNvdXJjZS5o PgorI2luY2x1ZGUgPGRybS90dG0vdHRtX3Bvb2wuaD4KKworI2RlZmluZSBUVE1fTlVNX01FTV9U WVBFUyA4CisKK3N0cnVjdCB0dG1fZGV2aWNlOworc3RydWN0IHR0bV9wbGFjZW1lbnQ7CitzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3Q7CitzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHg7CisKKy8qKgor ICogc3RydWN0IHR0bV9nbG9iYWwgLSBCdWZmZXIgb2JqZWN0IGRyaXZlciBnbG9iYWwgZGF0YS4K KyAqCisgKiBAZHVtbXlfcmVhZF9wYWdlOiBQb2ludGVyIHRvIGEgZHVtbXkgcGFnZSB1c2VkIGZv ciBtYXBwaW5nIHJlcXVlc3RzCisgKiBvZiB1bnBvcHVsYXRlZCBwYWdlcy4KKyAqIEBzaHJpbms6 IEEgc2hyaW5rIGNhbGxiYWNrIG9iamVjdCB1c2VkIGZvciBidWZmZXIgb2JqZWN0IHN3YXAuCisg KiBAZGV2aWNlX2xpc3RfbXV0ZXg6IE11dGV4IHByb3RlY3RpbmcgdGhlIGRldmljZSBsaXN0Lgor ICogVGhpcyBtdXRleCBpcyBoZWxkIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGRldmljZSBsaXN0IGZv ciBwbSBvcHRpb25zLgorICogQGxydV9sb2NrOiBTcGlubG9jayBwcm90ZWN0aW5nIHRoZSBibyBz dWJzeXN0ZW0gbHJ1IGxpc3RzLgorICogQGRldmljZV9saXN0OiBMaXN0IG9mIGJ1ZmZlciBvYmpl Y3QgZGV2aWNlcy4KKyAqIEBzd2FwX2xydTogTHJ1IGxpc3Qgb2YgYnVmZmVyIG9iamVjdHMgdXNl ZCBmb3Igc3dhcHBpbmcuCisgKi8KK2V4dGVybiBzdHJ1Y3QgdHRtX2dsb2JhbCB7CisKKwkvKioK KwkgKiBDb25zdGFudCBhZnRlciBpbml0LgorCSAqLworCisJc3RydWN0IGtvYmplY3Qga29iajsK KwlzdHJ1Y3QgcGFnZSAqZHVtbXlfcmVhZF9wYWdlOworCXNwaW5sb2NrX3QgbHJ1X2xvY2s7CisK KwkvKioKKwkgKiBQcm90ZWN0ZWQgYnkgdHRtX2dsb2JhbF9tdXRleC4KKwkgKi8KKwlzdHJ1Y3Qg bGlzdF9oZWFkIGRldmljZV9saXN0OworCisJLyoqCisJICogUHJvdGVjdGVkIGJ5IHRoZSBscnVf bG9jay4KKwkgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIHN3YXBfbHJ1W1RUTV9NQVhfQk9fUFJJT1JJ VFldOworCisJLyoqCisJICogSW50ZXJuYWwgcHJvdGVjdGlvbi4KKwkgKi8KKwlhdG9taWNfdCBi b19jb3VudDsKK30gdHRtX2dsb2I7CisKK3N0cnVjdCB0dG1fZGV2aWNlX2Z1bmNzIHsKKwkvKioK KwkgKiB0dG1fdHRfY3JlYXRlCisJICoKKwkgKiBAYm86IFRoZSBidWZmZXIgb2JqZWN0IHRvIGNy ZWF0ZSB0aGUgdHRtIGZvci4KKwkgKiBAcGFnZV9mbGFnczogUGFnZSBmbGFncyBhcyBpZGVudGlm aWVkIGJ5IFRUTV9QQUdFX0ZMQUdfWFggZmxhZ3MuCisJICoKKwkgKiBDcmVhdGUgYSBzdHJ1Y3Qg dHRtX3R0IHRvIGJhY2sgZGF0YSB3aXRoIHN5c3RlbSBtZW1vcnkgcGFnZXMuCisJICogTm8gcGFn ZXMgYXJlIGFjdHVhbGx5IGFsbG9jYXRlZC4KKwkgKiBSZXR1cm5zOgorCSAqIE5VTEw6IE91dCBv ZiBtZW1vcnkuCisJICovCisJc3RydWN0IHR0bV90dCAqKCp0dG1fdHRfY3JlYXRlKShzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKmJvLAorCQkJCQl1aW50MzJfdCBwYWdlX2ZsYWdzKTsKKworCS8q KgorCSAqIHR0bV90dF9wb3B1bGF0ZQorCSAqCisJICogQHR0bTogVGhlIHN0cnVjdCB0dG1fdHQg dG8gY29udGFpbiB0aGUgYmFja2luZyBwYWdlcy4KKwkgKgorCSAqIEFsbG9jYXRlIGFsbCBiYWNr aW5nIHBhZ2VzCisJICogUmV0dXJuczoKKwkgKiAtRU5PTUVNOiBPdXQgb2YgbWVtb3J5LgorCSAq LworCWludCAoKnR0bV90dF9wb3B1bGF0ZSkoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsCisJCQkg ICAgICAgc3RydWN0IHR0bV90dCAqdHRtLAorCQkJICAgICAgIHN0cnVjdCB0dG1fb3BlcmF0aW9u X2N0eCAqY3R4KTsKKworCS8qKgorCSAqIHR0bV90dF91bnBvcHVsYXRlCisJICoKKwkgKiBAdHRt OiBUaGUgc3RydWN0IHR0bV90dCB0byBjb250YWluIHRoZSBiYWNraW5nIHBhZ2VzLgorCSAqCisJ ICogRnJlZSBhbGwgYmFja2luZyBwYWdlCisJICovCisJdm9pZCAoKnR0bV90dF91bnBvcHVsYXRl KShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKKwkJCQkgIHN0cnVjdCB0dG1fdHQgKnR0bSk7CisK KwkvKioKKwkgKiB0dG1fdHRfZGVzdHJveQorCSAqCisJICogQGJkZXY6IFBvaW50ZXIgdG8gYSB0 dG0gZGV2aWNlCisJICogQHR0bTogUG9pbnRlciB0byBhIHN0cnVjdCB0dG1fdHQuCisJICoKKwkg KiBEZXN0cm95IHRoZSBiYWNrZW5kLiBUaGlzIHdpbGwgYmUgY2FsbCBiYWNrIGZyb20gdHRtX3R0 X2Rlc3Ryb3kgc28KKwkgKiBkb24ndCBjYWxsIHR0bV90dF9kZXN0cm95IGZyb20gdGhlIGNhbGxi YWNrIG9yIGluZmluaXRlIGxvb3AuCisJICovCisJdm9pZCAoKnR0bV90dF9kZXN0cm95KShzdHJ1 Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKTsKKworCS8qKgorCSAqIHN0 cnVjdCB0dG1fYm9fZHJpdmVyIG1lbWJlciBldmljdGlvbl92YWx1YWJsZQorCSAqCisJICogQGJv OiB0aGUgYnVmZmVyIG9iamVjdCB0byBiZSBldmljdGVkCisJICogQHBsYWNlOiBwbGFjZW1lbnQg d2UgbmVlZCByb29tIGZvcgorCSAqCisJICogQ2hlY2sgd2l0aCB0aGUgZHJpdmVyIGlmIGl0IGlz IHZhbHVhYmxlIHRvIGV2aWN0IGEgQk8gdG8gbWFrZSByb29tCisJICogZm9yIGEgY2VydGFpbiBw bGFjZW1lbnQuCisJICovCisJYm9vbCAoKmV2aWN0aW9uX3ZhbHVhYmxlKShzdHJ1Y3QgdHRtX2J1 ZmZlcl9vYmplY3QgKmJvLAorCQkJCSAgY29uc3Qgc3RydWN0IHR0bV9wbGFjZSAqcGxhY2UpOwor CS8qKgorCSAqIHN0cnVjdCB0dG1fYm9fZHJpdmVyIG1lbWJlciBldmljdF9mbGFnczoKKwkgKgor CSAqIEBibzogdGhlIGJ1ZmZlciBvYmplY3QgdG8gYmUgZXZpY3RlZAorCSAqCisJICogUmV0dXJu IHRoZSBibyBmbGFncyBmb3IgYSBidWZmZXIgd2hpY2ggaXMgbm90IG1hcHBlZCB0byB0aGUgaGFy ZHdhcmUuCisJICogVGhlc2Ugd2lsbCBiZSBwbGFjZWQgaW4gcHJvcG9zZWRfZmxhZ3Mgc28gdGhh dCB3aGVuIHRoZSBtb3ZlIGlzCisJICogZmluaXNoZWQsIHRoZXknbGwgZW5kIHVwIGluIGJvLT5t ZW0uZmxhZ3MKKwkgKiBUaGlzIHNob3VsZCBub3QgY2F1c2UgbXVsdGlob3AgZXZpY3Rpb25zLCBh bmQgdGhlIGNvcmUgd2lsbCB3YXJuCisJICogaWYgb25lIGlzIHByb3Bvc2VkLgorCSAqLworCisJ dm9pZCAoKmV2aWN0X2ZsYWdzKShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAorCQkJICAg IHN0cnVjdCB0dG1fcGxhY2VtZW50ICpwbGFjZW1lbnQpOworCisJLyoqCisJICogc3RydWN0IHR0 bV9ib19kcml2ZXIgbWVtYmVyIG1vdmU6CisJICoKKwkgKiBAYm86IHRoZSBidWZmZXIgdG8gbW92 ZQorCSAqIEBldmljdDogd2hldGhlciB0aGlzIG1vdGlvbiBpcyBldmljdGluZyB0aGUgYnVmZmVy IGZyb20KKwkgKiB0aGUgZ3JhcGhpY3MgYWRkcmVzcyBzcGFjZQorCSAqIEBjdHg6IGNvbnRleHQg Zm9yIHRoaXMgbW92ZSB3aXRoIHBhcmFtZXRlcnMKKwkgKiBAbmV3X21lbTogdGhlIG5ldyBtZW1v cnkgcmVnaW9uIHJlY2VpdmluZyB0aGUgYnVmZmVyCisJIEAgQGhvcDogcGxhY2VtZW50IGZvciBk cml2ZXIgZGlyZWN0ZWQgaW50ZXJtZWRpYXRlIGhvcAorCSAqCisJICogTW92ZSBhIGJ1ZmZlciBi ZXR3ZWVuIHR3byBtZW1vcnkgcmVnaW9ucy4KKwkgKiBSZXR1cm5zIGVycm5vIC1FTVVMVElIT1Ag aWYgZHJpdmVyIHJlcXVlc3RzIGEgaG9wCisJICovCisJaW50ICgqbW92ZSkoc3RydWN0IHR0bV9i dWZmZXJfb2JqZWN0ICpibywgYm9vbCBldmljdCwKKwkJICAgIHN0cnVjdCB0dG1fb3BlcmF0aW9u X2N0eCAqY3R4LAorCQkgICAgc3RydWN0IHR0bV9yZXNvdXJjZSAqbmV3X21lbSwKKwkJICAgIHN0 cnVjdCB0dG1fcGxhY2UgKmhvcCk7CisKKwkvKioKKwkgKiBzdHJ1Y3QgdHRtX2JvX2RyaXZlcl9t ZW1iZXIgdmVyaWZ5X2FjY2VzcworCSAqCisJICogQGJvOiBQb2ludGVyIHRvIGEgYnVmZmVyIG9i amVjdC4KKwkgKiBAZmlscDogUG9pbnRlciB0byBhIHN0cnVjdCBmaWxlIHRyeWluZyB0byBhY2Nl c3MgdGhlIG9iamVjdC4KKwkgKgorCSAqIENhbGxlZCBmcm9tIHRoZSBtYXAgLyB3cml0ZSAvIHJl YWQgbWV0aG9kcyB0byB2ZXJpZnkgdGhhdCB0aGUKKwkgKiBjYWxsZXIgaXMgcGVybWl0dGVkIHRv IGFjY2VzcyB0aGUgYnVmZmVyIG9iamVjdC4KKwkgKiBUaGlzIG1lbWJlciBtYXkgYmUgc2V0IHRv IE5VTEwsIHdoaWNoIHdpbGwgcmVmdXNlIHRoaXMga2luZCBvZgorCSAqIGFjY2VzcyBmb3IgYWxs IGJ1ZmZlciBvYmplY3RzLgorCSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAwIGlmIGFj Y2VzcyBpcyBncmFudGVkLCAtRVBFUk0gb3RoZXJ3aXNlLgorCSAqLworCWludCAoKnZlcmlmeV9h Y2Nlc3MpKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCisJCQkgICAgIHN0cnVjdCBmaWxl ICpmaWxwKTsKKworCS8qKgorCSAqIEhvb2sgdG8gbm90aWZ5IGRyaXZlciBhYm91dCBhIHJlc291 cmNlIGRlbGV0ZS4KKwkgKi8KKwl2b2lkICgqZGVsZXRlX21lbV9ub3RpZnkpKHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8pOworCisJLyoqCisJICogbm90aWZ5IHRoZSBkcml2ZXIgdGhhdCB3 ZSdyZSBhYm91dCB0byBzd2FwIG91dCB0aGlzIGJvCisJICovCisJdm9pZCAoKnN3YXBfbm90aWZ5 KShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKTsKKworCS8qKgorCSAqIERyaXZlciBjYWxs YmFjayBvbiB3aGVuIG1hcHBpbmcgaW8gbWVtb3J5IChmb3IgYm9fbW92ZV9tZW1jcHkKKwkgKiBm b3IgaW5zdGFuY2UpLiBUVE0gd2lsbCB0YWtlIGNhcmUgdG8gY2FsbCBpb19tZW1fZnJlZSB3aGVu ZXZlcgorCSAqIHRoZSBtYXBwaW5nIGlzIG5vdCB1c2UgYW55bW9yZS4gaW9fbWVtX3Jlc2VydmUg JiBpb19tZW1fZnJlZQorCSAqIGFyZSBiYWxhbmNlZC4KKwkgKi8KKwlpbnQgKCppb19tZW1fcmVz ZXJ2ZSkoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsCisJCQkgICAgICBzdHJ1Y3QgdHRtX3Jlc291 cmNlICptZW0pOworCXZvaWQgKCppb19tZW1fZnJlZSkoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYs CisJCQkgICAgc3RydWN0IHR0bV9yZXNvdXJjZSAqbWVtKTsKKworCS8qKgorCSAqIFJldHVybiB0 aGUgcGZuIGZvciBhIGdpdmVuIHBhZ2Vfb2Zmc2V0IGluc2lkZSB0aGUgQk8uCisJICoKKwkgKiBA Ym86IHRoZSBCTyB0byBsb29rIHVwIHRoZSBwZm4gZm9yCisJICogQHBhZ2Vfb2Zmc2V0OiB0aGUg b2Zmc2V0IHRvIGxvb2sgdXAKKwkgKi8KKwl1bnNpZ25lZCBsb25nICgqaW9fbWVtX3Bmbikoc3Ry dWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKKwkJCQkgICAgdW5zaWduZWQgbG9uZyBwYWdlX29m ZnNldCk7CisKKwkvKioKKwkgKiBSZWFkL3dyaXRlIG1lbW9yeSBidWZmZXJzIGZvciBwdHJhY2Ug YWNjZXNzCisJICoKKwkgKiBAYm86IHRoZSBCTyB0byBhY2Nlc3MKKwkgKiBAb2Zmc2V0OiB0aGUg b2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBCTworCSAqIEBidWY6IHBvaW50ZXIgdG8gc291 cmNlL2Rlc3RpbmF0aW9uIGJ1ZmZlcgorCSAqIEBsZW46IG51bWJlciBvZiBieXRlcyB0byBjb3B5 CisJICogQHdyaXRlOiB3aGV0aGVyIHRvIHJlYWQgKDApIGZyb20gb3Igd3JpdGUgKG5vbi0wKSB0 byBCTworCSAqCisJICogSWYgc3VjY2Vzc2Z1bCwgdGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJu IHRoZSBudW1iZXIgb2YKKwkgKiBieXRlcyBjb3BpZWQsIC1FSU8gb3RoZXJ3aXNlLiBJZiB0aGUg bnVtYmVyIG9mIGJ5dGVzCisJICogcmV0dXJuZWQgaXMgPCBsZW4sIHRoZSBmdW5jdGlvbiBtYXkg YmUgY2FsbGVkIGFnYWluIHdpdGgKKwkgKiB0aGUgcmVtYWluZGVyIG9mIHRoZSBidWZmZXIgdG8g Y29weS4KKwkgKi8KKwlpbnQgKCphY2Nlc3NfbWVtb3J5KShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmpl Y3QgKmJvLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKKwkJCSAgICAgdm9pZCAqYnVmLCBpbnQgbGVu LCBpbnQgd3JpdGUpOworCisJLyoqCisJICogc3RydWN0IHR0bV9ib19kcml2ZXIgbWVtYmVyIGRl bF9mcm9tX2xydV9ub3RpZnkKKwkgKgorCSAqIEBibzogdGhlIGJ1ZmZlciBvYmplY3QgZGVsZXRl ZCBmcm9tIGxydQorCSAqCisJICogbm90aWZ5IGRyaXZlciB0aGF0IGEgQk8gd2FzIGRlbGV0ZWQg ZnJvbSBMUlUuCisJICovCisJdm9pZCAoKmRlbF9mcm9tX2xydV9ub3RpZnkpKHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8pOworCisJLyoqCisJICogTm90aWZ5IHRoZSBkcml2ZXIgdGhhdCB3 ZSdyZSBhYm91dCB0byByZWxlYXNlIGEgQk8KKwkgKgorCSAqIEBibzogQk8gdGhhdCBpcyBhYm91 dCB0byBiZSByZWxlYXNlZAorCSAqCisJICogR2l2ZXMgdGhlIGRyaXZlciBhIGNoYW5jZSB0byBk byBhbnkgY2xlYW51cCwgaW5jbHVkaW5nCisJICogYWRkaW5nIGZlbmNlcyB0aGF0IG1heSBmb3Jj ZSBhIGRlbGF5ZWQgZGVsZXRlCisJICovCisJdm9pZCAoKnJlbGVhc2Vfbm90aWZ5KShzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKmJvKTsKK307CisKKy8qKgorICogc3RydWN0IHR0bV9kZXZpY2Ug LSBCdWZmZXIgb2JqZWN0IGRyaXZlciBkZXZpY2Utc3BlY2lmaWMgZGF0YS4KKyAqCisgKiBAZGV2 aWNlX2xpc3Q6IE91ciBlbnRyeSBpbiB0aGUgZ2xvYmFsIGRldmljZSBsaXN0LgorICogQGZ1bmNz OiBGdW5jdGlvbiB0YWJsZSBmb3IgdGhlIGRldmljZS4KKyAqIEBzeXNtYW46IFJlc291cmNlIG1h bmFnZXIgZm9yIHRoZSBzeXN0ZW0gZG9tYWluLgorICogQG1hbl9kcnY6IEFuIGFycmF5IG9mIHJl c291cmNlX21hbmFnZXJzLgorICogQHZtYV9tYW5hZ2VyOiBBZGRyZXNzIHNwYWNlIG1hbmFnZXIu CisgKiBAcG9vbDogcGFnZSBwb29sIGZvciB0aGUgZGV2aWNlLgorICogQGRldl9tYXBwaW5nOiBB IHBvaW50ZXIgdG8gdGhlIHN0cnVjdCBhZGRyZXNzX3NwYWNlIHJlcHJlc2VudGluZyB0aGUKKyAq IGRldmljZSBhZGRyZXNzIHNwYWNlLgorICogQHdxOiBXb3JrIHF1ZXVlIHN0cnVjdHVyZSBmb3Ig dGhlIGRlbGF5ZWQgZGVsZXRlIHdvcmtxdWV1ZS4KKyAqLworc3RydWN0IHR0bV9kZXZpY2Ugewor CS8qCisJICogQ29uc3RhbnQgYWZ0ZXIgYm8gZGV2aWNlIGluaXQKKwkgKi8KKwlzdHJ1Y3QgbGlz dF9oZWFkIGRldmljZV9saXN0OworCXN0cnVjdCB0dG1fZGV2aWNlX2Z1bmNzICpmdW5jczsKKwor CS8qCisJICogQWNjZXNzIHZpYSB0dG1fbWFuYWdlcl90eXBlLgorCSAqLworCXN0cnVjdCB0dG1f cmVzb3VyY2VfbWFuYWdlciBzeXNtYW47CisJc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICpt YW5fZHJ2W1RUTV9OVU1fTUVNX1RZUEVTXTsKKworCS8qCisJICogUHJvdGVjdGVkIGJ5IGludGVy bmFsIGxvY2tzLgorCSAqLworCXN0cnVjdCBkcm1fdm1hX29mZnNldF9tYW5hZ2VyICp2bWFfbWFu YWdlcjsKKwlzdHJ1Y3QgdHRtX3Bvb2wgcG9vbDsKKworCS8qCisJICogUHJvdGVjdGVkIGJ5IHRo ZSBnbG9iYWw6bHJ1IGxvY2suCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBkZGVzdHJveTsKKwor CS8qCisJICogUHJvdGVjdGVkIGJ5IGxvYWQgLyBmaXJzdG9wZW4gLyBsYXN0Y2xvc2UgL3VubG9h ZCBzeW5jLgorCSAqLworCXN0cnVjdCBhZGRyZXNzX3NwYWNlICpkZXZfbWFwcGluZzsKKworCS8q CisJICogSW50ZXJuYWwgcHJvdGVjdGlvbi4KKwkgKi8KKwlzdHJ1Y3QgZGVsYXllZF93b3JrIHdx OworfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKgordHRt X21hbmFnZXJfdHlwZShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgaW50IG1lbV90eXBlKQorewor CXJldHVybiBiZGV2LT5tYW5fZHJ2W21lbV90eXBlXTsKK30KKworc3RhdGljIGlubGluZSB2b2lk IHR0bV9zZXRfZHJpdmVyX21hbmFnZXIoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIGludCB0eXBl LAorCQkJCQkgIHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuYWdlcikKK3sKKwliZGV2 LT5tYW5fZHJ2W3R5cGVdID0gbWFuYWdlcjsKK30KKworaW50IHR0bV9kZXZpY2VfaW5pdChzdHJ1 Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV9kZXZpY2VfZnVuY3MgKmZ1bmNzLAorCQkg ICAgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKKwkJ ICAgIHN0cnVjdCBkcm1fdm1hX29mZnNldF9tYW5hZ2VyICp2bWFfbWFuYWdlciwKKwkJICAgIGJv b2wgdXNlX2RtYV9hbGxvYywgYm9vbCB1c2VfZG1hMzIpOwordm9pZCB0dG1fZGV2aWNlX2Zpbmko c3RydWN0IHR0bV9kZXZpY2UgKmJkZXYpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL3R0bS90dG1fcmVzb3VyY2UuaCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fcmVzb3VyY2UuaApp bmRleCBkYTBlZDdlOGM5MTUuLjYxNjRjY2Y0ZjMwOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0v dHRtL3R0bV9yZXNvdXJjZS5oCisrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fcmVzb3VyY2UuaApA QCAtMzMsNyArMzMsNyBAQAogCiAjZGVmaW5lIFRUTV9NQVhfQk9fUFJJT1JJVFkJNFUKIAotc3Ry dWN0IHR0bV9ib19kZXZpY2U7CitzdHJ1Y3QgdHRtX2RldmljZTsKIHN0cnVjdCB0dG1fcmVzb3Vy Y2VfbWFuYWdlcjsKIHN0cnVjdCB0dG1fcmVzb3VyY2U7CiBzdHJ1Y3QgdHRtX3BsYWNlOwpAQCAt MjMzLDcgKzIzMyw3IEBAIHZvaWQgdHRtX3Jlc291cmNlX2ZyZWUoc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0ICpibywgc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzKTsKIHZvaWQgdHRtX3Jlc291cmNl X21hbmFnZXJfaW5pdChzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAkJCSAgICAg ICB1bnNpZ25lZCBsb25nIHBfc2l6ZSk7CiAKLWludCB0dG1fcmVzb3VyY2VfbWFuYWdlcl9ldmlj dF9hbGwoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCitpbnQgdHRtX3Jlc291cmNlX21hbmFn ZXJfZXZpY3RfYWxsKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCQkJCSAgIHN0cnVjdCB0dG1f cmVzb3VyY2VfbWFuYWdlciAqbWFuKTsKIAogdm9pZCB0dG1fcmVzb3VyY2VfbWFuYWdlcl9kZWJ1 ZyhzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL3R0bS90dG1fdHQuaCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fdHQuaAppbmRleCA2YzhlYjlh NGRlODEuLjAwMjBhMDU4ODk4NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vdHRtL3R0bV90dC5o CisrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fdHQuaApAQCAtMTE4LDE0ICsxMTgsMTQgQEAgdm9p ZCB0dG1fdHRfZmluaShzdHJ1Y3QgdHRtX3R0ICp0dG0pOwogICoKICAqIFVuYmluZCwgdW5wb3B1 bGF0ZSBhbmQgZGVzdHJveSBjb21tb24gc3RydWN0IHR0bV90dC4KICAqLwotdm9pZCB0dG1fdHRf ZGVzdHJveShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKTsK K3ZvaWQgdHRtX3R0X2Rlc3Ryb3koc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1f dHQgKnR0bSk7CiAKIC8qKgogICogdHRtX3R0X2Rlc3Ryb3lfY29tbW9uOgogICoKICAqIENhbGxl ZCBmcm9tIGRyaXZlciB0byBkZXN0cm95IGNvbW1vbiBwYXRoLgogICovCi12b2lkIHR0bV90dF9k ZXN0cm95X2NvbW1vbihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAq dHRtKTsKK3ZvaWQgdHRtX3R0X2Rlc3Ryb3lfY29tbW9uKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2 LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pOwogCiAvKioKICAqIHR0bV90dF9zd2FwaW46CkBAIC0xMzUs NyArMTM1LDcgQEAgdm9pZCB0dG1fdHRfZGVzdHJveV9jb21tb24oc3RydWN0IHR0bV9ib19kZXZp Y2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSk7CiAgKiBTd2FwIGluIGEgcHJldmlvdXNseSBz d2FwIG91dCB0dG1fdHQuCiAgKi8KIGludCB0dG1fdHRfc3dhcGluKHN0cnVjdCB0dG1fdHQgKnR0 bSk7Ci1pbnQgdHRtX3R0X3N3YXBvdXQoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVj dCB0dG1fdHQgKnR0bSk7CitpbnQgdHRtX3R0X3N3YXBvdXQoc3RydWN0IHR0bV9kZXZpY2UgKmJk ZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSk7CiAKIC8qKgogICogdHRtX3R0X3BvcHVsYXRlIC0gYWxs b2NhdGUgcGFnZXMgZm9yIGEgdHRtCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IHR0bV90dF9zd2Fw b3V0KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pOwogICoK ICAqIENhbGxzIHRoZSBkcml2ZXIgbWV0aG9kIHRvIGFsbG9jYXRlIHBhZ2VzIGZvciBhIHR0bQog ICovCi1pbnQgdHRtX3R0X3BvcHVsYXRlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1 Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4KTsKK2ludCB0dG1f dHRfcG9wdWxhdGUoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSwg c3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgpOwogCiAvKioKICAqIHR0bV90dF91bnBvcHVs YXRlIC0gZnJlZSBwYWdlcyBmcm9tIGEgdHRtCkBAIC0xNTMsNyArMTUzLDcgQEAgaW50IHR0bV90 dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRt LCBzdHJ1Y3QgdHRtX28KICAqCiAgKiBDYWxscyB0aGUgZHJpdmVyIG1ldGhvZCB0byBmcmVlIGFs bCBwYWdlcyBmcm9tIGEgdHRtCiAgKi8KLXZvaWQgdHRtX3R0X3VucG9wdWxhdGUoc3RydWN0IHR0 bV9ib19kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSk7Cit2b2lkIHR0bV90dF91bnBv cHVsYXRlKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pOwogCiAj aWYgSVNfRU5BQkxFRChDT05GSUdfQUdQKQogI2luY2x1ZGUgPGxpbnV4L2FncF9iYWNrZW5kLmg+ Ci0tIAoyLjI1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=