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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5732C1091904 for ; Thu, 19 Mar 2026 18:32:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=QtghDgHaFU6+0JFL+rfWgwpOkrmNou/YtGGGs9SCY18=; b=VInv+OhDO2Znrb VslbyCHm9AQatfIE7u89xzVowZ+LpAfgmtD1mKaZPpMmBQBTpQnNvlNwf4rLvKyX/P5dExD7iEQiX fgamAxUGAll9ICvFx6GyH6YXlD5+b4Ujy/PVas8QvuVTVSObzX+oCQXP0PBAaVwA3H4jM/JbMBFVm le8+POu38TnBICkdpL+tJUpboticAaHzPVE+gwW8dcGt3w2EZgs//bIcaYAWXyArwW4AnsXpjNHhx kygYwhfKlJ1955dSSG1ZL0OtjMiKW96XGZIsCLP4BtN4sPc9NlFPc+sVihzQtrYOgq3tmLz257ATV YbHQrz4HqjBSW6aP353A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1w3IAe-0000000BMIO-3det; Thu, 19 Mar 2026 18:32:36 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1w3IAd-0000000BMGv-1NHu for linux-rockchip@bombadil.infradead.org; Thu, 19 Mar 2026 18:32:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Sender:Reply-To:Content-ID:Content-Description; bh=4h9IPWy9h6c3Rryt+rMRgrO9ZXsOTBW6jWrj6chYR0Y=; b=hoX6zi+CleZpLjp2RSn//2ajq2 zJ94BZH4TQJUOKWAKPYqjaRXCna9uPkfnRU3WZFXnze6LAuXllplcVk0Oky7qBmrlbunBt0EIQh47 0QpD58BUOfCtVv3H+wCnrjn11vkreffazcbVuFfqjqqu9wx1GlD5Ge5nFAf2A7Y+6LUNhi/oCbpDc Vl9UOFwnshgt1vZv8EWKuSs0hnw6aqF8+YykQ/hCXYzVUKNfkl6+PmrB6tKG4pzAK6ZoikxvxtGVz S3ZCCqyG3b6sx7gg4P4gHNhi9YYUZqiGuUvN/1GbKWn8nwNjQURqeHL8EXQPfHW2wGxEIuU57a+mw dxha2tiQ==; Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]) by desiato.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1w3IAZ-0000000EGBy-2yG5 for linux-rockchip@lists.infradead.org; Thu, 19 Mar 2026 18:32:34 +0000 Received: by mail-ot1-x32e.google.com with SMTP id 46e09a7af769-7d7d096607bso571659a34.1 for ; Thu, 19 Mar 2026 11:32:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773945149; x=1774549949; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4h9IPWy9h6c3Rryt+rMRgrO9ZXsOTBW6jWrj6chYR0Y=; b=nM0UMJHs3Elq1Juj8+rO+2MqACw3aJt8006R/XoGHefIwgJU74U2kHMZ2uVNJActAS XDbohu9G/OwWWvuSAwNWIP+UlC4MvlxR8UQ+2CbvvYE9YbYj0kp9+5UKf4GLmFCqApBx st5SYqRhKMESxhZcTAfNF3hKWAxVyw/R/7eCtr4qElkvQmE51SWEUCxpIFgnB4XOytVM 7wrblH8iuB+blKQ/EWoVcjBItMIaWcALA8N/yXkwQTWqvdInDRVF1POLsX7OjssmtrIX zqq4k+rzkLjoKV5P5W1/o8QTCS9Gp3bdzWhZUiz5/bVzn4RhNMe85EX9OQLNDjj8xY1/ En9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773945149; x=1774549949; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=4h9IPWy9h6c3Rryt+rMRgrO9ZXsOTBW6jWrj6chYR0Y=; b=bwjXTLiTfc3YGsnpw3b00D9OyoNbJ2pfHq9DLWGJX1SalR0TarNAKSGp9Pmk7///yb fZnEHIPSIPVF6NgXjFdbG6FFPRIUTgWXF1TuorOGuufFOxFnlOxkXiiXQyZiGnZvmNYK QVabL9Bx0hM6Oc3S8mxm9C8ZYQzu8Jys3Bhn30qoDkk6Oil+opTKVA52UdyW8itjVoUh f24+NBkziZIKpdgLyzSzCyZZ/v57LpIXNouom8i/pO/xdd0JXEfPTQ1p8A8QwgNjJxdG QiHdGr6AjecPZdXqgPCPe2AVtNv5o/VdUj2VR3s3I7/rwroXqlYfA5anB61etNQZKAxf SfDA== X-Forwarded-Encrypted: i=1; AJvYcCXsVa+bdHoFLYHDw2vkOxshpIYGQ1DWn7lD6NuLTCI1svrazwmbkRPzfkIXmBBnt+QbWVfc+J2igtUpPWFFZQ==@lists.infradead.org X-Gm-Message-State: AOJu0YwWSSEMOjrizBx2W0K3DpjhfCOB3ntgxz33/WyT2vjc7olVSf2D 7xiLWAPVxI3CRWc33JrDDkUKf8RLIpghjXoWw63Or3LBFI4cQ20khIQR X-Gm-Gg: ATEYQzxjZ8KMEt3LLi2dlKRH6lxvqBUNInLii9wwf8DRD5vwhYQKMj1P/ujRt+BbVsM plJlnUDJD+srW3h6020YwQTfVuRI2ZeYAe9elFi5p+Pt8Yr2dYgALlA6GtDZhpPg1e9OaLO7ENL cwBr6+SYGAK9rR5USdb8IWOLmnq5BoPww4i8El8aOc2MmKNE9ln0dAawbxJMABmdhv8q2ebaVsn yTzToWHIzRc5smb+e3qR/0QiTskL8cTtpDbTZDEUxYNm/0HEekObrJMiuRRwfe74jvdOFDH3y6q yaWkf5uymnB74MWWKtPy2k6Yk/uHwTOy6Iu+7g65qtZbin5ocwfYkbmcCtEjmDJOb+Fw5HvusnO 4eNhpjwEWkS8pz8d2pNSE//AvaKFZ61DeV3iSAnNaY2NGl+3Uvbp5m8xOMfSZhcST5vw4FzGqxC TWrRl7aBJHruWANGZV3q62 X-Received: by 2002:a05:6830:67c7:b0:7d7:d4ee:c02d with SMTP id 46e09a7af769-7d7eb0290fbmr142807a34.21.1773945148249; Thu, 19 Mar 2026 11:32:28 -0700 (PDT) Received: from localhost.localdomain ([2600:1700:fb0:1bc0::54]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7d7eadcb11csm172193a34.13.2026.03.19.11.32.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 11:32:27 -0700 (PDT) From: Chris Morgan To: linux-iio@vger.kernel.org Cc: andy@kernel.org, nuno.sa@analog.com, dlechner@baylibre.com, jic23@kernel.org, jean-baptiste.maneyrol@tdk.com, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, heiko@sntech.de, conor+dt@kernel.org, krzk+dt@kernel.org, robh@kernel.org, andriy.shevchenko@intel.com, Chris Morgan Subject: [PATCH V2 4/5] iio: imu: inv_icm42600: Add support for icm42607 Date: Thu, 19 Mar 2026 13:29:40 -0500 Message-ID: <20260319182956.146976-5-macroalpha82@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260319182956.146976-1-macroalpha82@gmail.com> References: <20260319182956.146976-1-macroalpha82@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260319_183232_120590_FBF81FBB X-CRM114-Status: GOOD ( 21.32 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org RnJvbTogQ2hyaXMgTW9yZ2FuIDxtYWNyb21vcmdhbkBob3RtYWlsLmNvbT4KCkFkZCBzdXBwb3J0 IGZvciB0aGUgaWNtNDI2MDcgYW5kIGljbTQyNjA3cCBvdmVyIGJvdGggSTJDIGFuZCBTUEkuCk5v dGUgdGhhdCBhdCB0aGlzIHRpbWUgb25seSB0aGUgaWNtNDI2MDcgb3ZlciBpMmMgaGFzIGJlZW4g dGVzdGVkLgoKVGhpcyBkcml2ZXIgd2FzIHVwZGF0ZWQgYmFzZWQgb24gdGhlIGV4aXN0aW5nIGlj bTQyNjAwIGFsb25nIHdpdGgKdGhlIGRhdGFzaGVldCBmcm9tIEludmVuc2Vuc2UgYW5kIG91dC1v Zi10cmVlIHNvdXJjZXMgaW5jbHVkZWQKaW4gdGhlIExpbmVhZ2VPUyBrZXJuZWxzIFsxXSBhbmQg Um9ja2NoaXAga2VybmVscyBbMl0sIGJvdGggZGVyaXZlZApmcm9tIHNvdXJjZXMgcHJvdmlkZWQg YnkgSW52ZW5zZW5zZS4KClsxXSBodHRwczovL2dpdGh1Yi5jb20vTGluZWFnZU9TL2FuZHJvaWRf a2VybmVsX252aWRpYV9rZXJuZWwtbngvdHJlZS9saW5lYWdlLTIzLjAvZHJpdmVycy9paW8vaW11 L2ludl9pY200MjYwN3gKWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9yb2NrY2hpcC1saW51eC9rZXJu ZWwvdHJlZS9kZXZlbG9wLTYuNi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjcwCgpTaWduZWQt b2ZmLWJ5OiBDaHJpcyBNb3JnYW4gPG1hY3JvbW9yZ2FuQGhvdG1haWwuY29tPgotLS0KIGRyaXZl cnMvaWlvL2ltdS9pbnZfaWNtNDI2MDAvaW52X2ljbTQyNjAwLmggICB8ICAyNSArLQogLi4uL2lp by9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9hY2NlbC5jIHwgNDgyICsrKysrKysrKysr KysrKy0KIC4uLi9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9idWZmZXIuYyAgICB8IDI0 MCArKysrKysrLQogLi4uL2ltdS9pbnZfaWNtNDI2MDAvaW52X2ljbTQyNjAwX2J1ZmZlci5oICAg IHwgICA1ICsKIC4uLi9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfY29yZS5jICB8 IDU0NCArKysrKysrKysrKysrKysrKy0KIC4uLi9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNt NDI2MDBfZ3lyby5jICB8IDM2NiArKysrKysrKysrKy0KIC4uLi9paW8vaW11L2ludl9pY200MjYw MC9pbnZfaWNtNDI2MDBfaTJjLmMgICB8ICA1MyArLQogLi4uL2lpby9pbXUvaW52X2ljbTQyNjAw L2ludl9pY200MjYwMF9zcGkuYyAgIHwgIDU5ICstCiAuLi4vaWlvL2ltdS9pbnZfaWNtNDI2MDAv aW52X2ljbTQyNjAwX3RlbXAuYyAgfCAgNjQgKysrCiAuLi4vaWlvL2ltdS9pbnZfaWNtNDI2MDAv aW52X2ljbTQyNjAwX3RlbXAuaCAgfCAgIDQgKwogMTAgZmlsZXMgY2hhbmdlZCwgMTc5OSBpbnNl cnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9pbXUv aW52X2ljbTQyNjAwL2ludl9pY200MjYwMC5oIGIvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYw MC9pbnZfaWNtNDI2MDAuaAppbmRleCBhYjM2MTZjNWVlMWEuLjlmMjU2MzJmMTkxNSAxMDA2NDQK LS0tIGEvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDAuaAorKysgYi9k cml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMC5oCkBAIC0yNjIsNyArMjYy LDcgQEAgc3RydWN0IGludl9pY200MjYwMF9zZW5zb3Jfc3RhdGUgewogCWNvbnN0IGludCAqc2Nh bGVzOwogCXNpemVfdCBzY2FsZXNfbGVuOwogCWVudW0gaW52X2ljbTQyNjAwX3NlbnNvcl9tb2Rl IHBvd2VyX21vZGU7Ci0JZW51bSBpbnZfaWNtNDI2MDBfZmlsdGVyIGZpbHRlcjsKKwlpbnQgZmls dGVyOyAvKiBlaXRoZXIgaW52X2ljbTQyNjAwX2ZpbHRlciBvciBpbnZfaWNtNDI2MDdfZmlsdGVy ICovCiAJc3RydWN0IGludl9zZW5zb3JzX3RpbWVzdGFtcCB0czsKIH07CiAKQEAgLTc0OCw2ICs3 NDgsNyBAQCBGSUVMRF9QUkVQKElOVl9JQ000MjYwN19JTlRGX0NPTkZJRzFfQ0xLU0VMX01BU0ss IDEpCiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBpbnZfaWNtNDI2MDBfcmVn bWFwX2NvbmZpZzsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBpbnZfaWNtNDI2 MDBfc3BpX3JlZ21hcF9jb25maWc7CitleHRlcm4gY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcg aW52X2ljbTQyNjA3X3JlZ21hcF9jb25maWc7CiBleHRlcm4gY29uc3Qgc3RydWN0IGRldl9wbV9v cHMgaW52X2ljbTQyNjAwX3BtX29wczsKIAogY29uc3Qgc3RydWN0IGlpb19tb3VudF9tYXRyaXgg KgpAQCAtNzU1LDIwICs3NTYsMzIgQEAgaW52X2ljbTQyNjAwX2dldF9tb3VudF9tYXRyaXgoY29u c3Qgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpaW9f Y2hhbl9zcGVjICpjaGFuKTsKIAogdTMyIGludl9pY200MjYwMF9vZHJfdG9fcGVyaW9kKGVudW0g aW52X2ljbTQyNjAwX29kciBvZHIpOwordTMyIGludl9pY200MjYwN19vZHJfdG9fcGVyaW9kKGVu dW0gaW52X2ljbTQyNjA3X29kciBvZHIpOwogCiBpbnQgaW52X2ljbTQyNjAwX3NldF9hY2NlbF9j b25mKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0LAogCQkJCXN0cnVjdCBpbnZfaWNtNDI2 MDBfc2Vuc29yX2NvbmYgKmNvbmYsCiAJCQkJdW5zaWduZWQgaW50ICpzbGVlcF9tcyk7CitpbnQg aW52X2ljbTQyNjA3X3NldF9hY2NlbF9jb25mKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0 LAorCQkJCXN0cnVjdCBpbnZfaWNtNDI2MDBfc2Vuc29yX2NvbmYgKmNvbmYsCisJCQkJdW5zaWdu ZWQgaW50ICpzbGVlcF9tcyk7CiAKIGludCBpbnZfaWNtNDI2MDBfc2V0X2d5cm9fY29uZihzdHJ1 Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKIAkJCSAgICAgICBzdHJ1Y3QgaW52X2ljbTQyNjAw X3NlbnNvcl9jb25mICpjb25mLAogCQkJICAgICAgIHVuc2lnbmVkIGludCAqc2xlZXBfbXMpOwor aW50IGludl9pY200MjYwN19zZXRfZ3lyb19jb25mKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUg KnN0LAorCQkJICAgICAgIHN0cnVjdCBpbnZfaWNtNDI2MDBfc2Vuc29yX2NvbmYgKmNvbmYsCisJ CQkgICAgICAgdW5zaWduZWQgaW50ICpzbGVlcF9tcyk7CiAKIGludCBpbnZfaWNtNDI2MDBfc2V0 X3RlbXBfY29uZihzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwgYm9vbCBlbmFibGUsCiAJ CQkgICAgICAgdW5zaWduZWQgaW50ICpzbGVlcF9tcyk7CitpbnQgaW52X2ljbTQyNjA3X3NldF90 ZW1wX2NvbmYoc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QsIGJvb2wgZW5hYmxlLAorCQkJ ICAgICAgIHVuc2lnbmVkIGludCAqc2xlZXBfbXMpOwogCiBpbnQgaW52X2ljbTQyNjAwX2VuYWJs ZV93b20oc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QpOworaW50IGludl9pY200MjYwN19l bmFibGVfd29tKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0KTsKKwogaW50IGludl9pY200 MjYwMF9kaXNhYmxlX3dvbShzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCk7CitpbnQgaW52 X2ljbTQyNjA3X2Rpc2FibGVfd29tKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0KTsKIAog aW50IGludl9pY200MjYwMF9kZWJ1Z2ZzX3JlZyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LCB1 bnNpZ25lZCBpbnQgcmVnLAogCQkJICAgICB1bnNpZ25lZCBpbnQgd3JpdGV2YWwsIHVuc2lnbmVk IGludCAqcmVhZHZhbCk7CkBAIC03NzYsMTEgKzc4OSwxNyBAQCBpbnQgaW52X2ljbTQyNjAwX2Rl YnVnZnNfcmVnKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsIHVuc2lnbmVkIGludCByZWcsCiBp bnQgaW52X2ljbTQyNjAwX2NvcmVfcHJvYmUoc3RydWN0IHJlZ21hcCAqcmVnbWFwLCBpbnQgY2hp cCwKIAkJCSAgICBpbnZfaWNtNDI2MDBfYnVzX3NldHVwIGJ1c19zZXR1cCk7CiAKLWludCBpbnZf aWNtNDI2MDBfZ3lyb19pbml0KHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0LCBzdHJ1Y3Qg aWlvX2RldiAqaW5kaW9fZGV2KTsKK2ludCBpbnZfaWNtNDI2MDBfZ3lyb19pbml0KHN0cnVjdCBp bnZfaWNtNDI2MDBfc3RhdGUgKnN0LAorCQkJICAgc3RydWN0IGlpb19kZXYgKmluZGlvX2Rldik7 CitpbnQgaW52X2ljbTQyNjA3X2d5cm9faW5pdChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpz dCwKKwkJCSAgIHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpOwogCiBpbnQgaW52X2ljbTQyNjAw X2d5cm9fcGFyc2VfZmlmbyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KTsKIAotaW50IGludl9p Y200MjYwMF9hY2NlbF9pbml0KHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0LCBzdHJ1Y3Qg aWlvX2RldiAqaW5kaW9fZGV2KTsKK2ludCBpbnZfaWNtNDI2MDBfYWNjZWxfaW5pdChzdHJ1Y3Qg aW52X2ljbTQyNjAwX3N0YXRlICpzdCwKKwkJCSAgICBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 KTsKK2ludCBpbnZfaWNtNDI2MDdfYWNjZWxfaW5pdChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRl ICpzdCwKKwkJCSAgICBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KTsKIAogaW50IGludl9pY200 MjYwMF9hY2NlbF9wYXJzZV9maWZvKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9hY2NlbC5j IGIvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfYWNjZWwuYwppbmRl eCBjYmIyN2M0ZTZiODIuLjI3MDY2NjM1ZDVmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9paW8vaW11 L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfYWNjZWwuYworKysgYi9kcml2ZXJzL2lpby9pbXUv aW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9hY2NlbC5jCkBAIC01MCw2ICs1MCwzMSBAQAogCQku ZXh0X2luZm8gPSBfZXh0X2luZm8sCQkJCQlcCiAJfQogCisjZGVmaW5lIElOVl9JQ000MjYwN19B Q0NFTF9DSEFOKF9tb2RpZmllciwgX2luZGV4LCBfZXh0X2luZm8pCQlcCisJewkJCQkJCQkJXAor CQkudHlwZSA9IElJT19BQ0NFTCwJCQkJCVwKKwkJLm1vZGlmaWVkID0gMSwJCQkJCQlcCisJCS5j aGFubmVsMiA9IF9tb2RpZmllciwJCQkJCVwKKwkJLmluZm9fbWFza19zZXBhcmF0ZSA9CQkJCQlc CisJCQlCSVQoSUlPX0NIQU5fSU5GT19SQVcpLAkJCQlcCisJCS5pbmZvX21hc2tfc2hhcmVkX2J5 X3R5cGUgPQkJCQlcCisJCQlCSVQoSUlPX0NIQU5fSU5GT19TQ0FMRSksCQkJXAorCQkuaW5mb19t YXNrX3NoYXJlZF9ieV90eXBlX2F2YWlsYWJsZSA9CQkJXAorCQkJQklUKElJT19DSEFOX0lORk9f U0NBTEUpLAkJCVwKKwkJLmluZm9fbWFza19zaGFyZWRfYnlfYWxsID0JCQkJXAorCQkJQklUKElJ T19DSEFOX0lORk9fU0FNUF9GUkVRKSwJCQlcCisJCS5pbmZvX21hc2tfc2hhcmVkX2J5X2FsbF9h dmFpbGFibGUgPQkJCVwKKwkJCUJJVChJSU9fQ0hBTl9JTkZPX1NBTVBfRlJFUSksCQkJXAorCQku c2Nhbl9pbmRleCA9IF9pbmRleCwJCQkJCVwKKwkJLnNjYW5fdHlwZSA9IHsJCQkJCQlcCisJCQku c2lnbiA9ICdzJywJCQkJCVwKKwkJCS5yZWFsYml0cyA9IDE2LAkJCQkJXAorCQkJLnN0b3JhZ2Vi aXRzID0gMTYsCQkJCVwKKwkJCS5lbmRpYW5uZXNzID0gSUlPX0JFLAkJCQlcCisJCX0sCQkJCQkJ CVwKKwkJLmV4dF9pbmZvID0gX2V4dF9pbmZvLAkJCQkJXAorCX0KKwogI2RlZmluZSBJTlZfSUNN NDI2MDBfQUNDRUxfRVZFTlRfQ0hBTihfbW9kaWZpZXIsIF9ldmVudHMsIF9ldmVudHNfbmIpCVwK IAl7CQkJCQkJCQlcCiAJCS50eXBlID0gSUlPX0FDQ0VMLAkJCQkJXApAQCAtODAsNiArMTA1LDEw IEBAIHN0YXRpYyBjb25zdCBpbnQgaW52X2ljbTQyNjAwX2FjY2VsX2ZpbHRlcl92YWx1ZXNbXSA9 IHsKIAlJTlZfSUNNNDI2MDBfRklMVEVSX0JXX09EUl9ESVZfMiwKIAlJTlZfSUNNNDI2MDBfRklM VEVSX0FWR18xNlgsCiB9Oworc3RhdGljIGNvbnN0IGludCBpbnZfaWNtNDI2MDdfYWNjZWxfZmls dGVyX3ZhbHVlc1tdID0geworCUlOVl9JQ000MjYwN19GSUxURVJfQldfMjVIWiwKKwlJTlZfSUNN NDI2MDdfRklMVEVSX0FWR18xNlgsCit9OwogCiBzdGF0aWMgaW50IGludl9pY200MjYwMF9hY2Nl bF9wb3dlcl9tb2RlX3NldChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAogCQkJCQkgICAgIGNv bnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjICpjaGFuLApAQCAtMTk3LDYgKzIyNiwxOSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgaW52X2ljbTQyNjAwX2FjY2VsX2NoYW5uZWxz W10gPSB7CiAJCQkJICAgICAgQVJSQVlfU0laRShpbnZfaWNtNDI2MDBfd29tX2V2ZW50cykpLAog fTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGludl9pY200MjYwN19hY2Nl bF9jaGFubmVsc1tdID0geworCUlOVl9JQ000MjYwN19BQ0NFTF9DSEFOKElJT19NT0RfWCwgSU5W X0lDTTQyNjAwX0FDQ0VMX1NDQU5fWCwKKwkJCQlpbnZfaWNtNDI2MDBfYWNjZWxfZXh0X2luZm9z KSwKKwlJTlZfSUNNNDI2MDdfQUNDRUxfQ0hBTihJSU9fTU9EX1ksIElOVl9JQ000MjYwMF9BQ0NF TF9TQ0FOX1ksCisJCQkJaW52X2ljbTQyNjAwX2FjY2VsX2V4dF9pbmZvcyksCisJSU5WX0lDTTQy NjA3X0FDQ0VMX0NIQU4oSUlPX01PRF9aLCBJTlZfSUNNNDI2MDBfQUNDRUxfU0NBTl9aLAorCQkJ CWludl9pY200MjYwMF9hY2NlbF9leHRfaW5mb3MpLAorCUlOVl9JQ000MjYwMF9URU1QX0NIQU4o SU5WX0lDTTQyNjAwX0FDQ0VMX1NDQU5fVEVNUCksCisJSUlPX0NIQU5fU09GVF9USU1FU1RBTVAo SU5WX0lDTTQyNjAwX0FDQ0VMX1NDQU5fVElNRVNUQU1QKSwKKwlJTlZfSUNNNDI2MDBfQUNDRUxf RVZFTlRfQ0hBTihJSU9fTU9EX1hfT1JfWV9PUl9aLCBpbnZfaWNtNDI2MDBfd29tX2V2ZW50cywK KwkJCQkgICAgICBBUlJBWV9TSVpFKGludl9pY200MjYwMF93b21fZXZlbnRzKSksCit9OworCiAv KgogICogSUlPIGJ1ZmZlciBkYXRhOiBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIGFuZCB0aW1l c3RhbXAgYWxpZ25lZAogICogMTYgYnl0ZXM6IDYgYnl0ZXMgYWNjZWxlcmF0aW9uLCAyIGJ5dGVz IHRlbXBlcmF0dXJlLCA4IGJ5dGVzIHRpbWVzdGFtcApAQCAtMjY1LDYgKzMwNyw0OSBAQCBzdGF0 aWMgaW50IGludl9pY200MjYwMF9hY2NlbF91cGRhdGVfc2Nhbl9tb2RlKHN0cnVjdCBpaW9fZGV2 ICppbmRpb19kZXYsCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBpbnZfaWNtNDI2MDdf YWNjZWxfdXBkYXRlX3NjYW5fbW9kZShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAorCQkJCQkg ICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqc2Nhbl9tYXNrKQoreworCXN0cnVjdCBpbnZfaWNt NDI2MDBfc3RhdGUgKnN0ID0gaWlvX2RldmljZV9nZXRfZHJ2ZGF0YShpbmRpb19kZXYpOworCXN0 cnVjdCBpbnZfaWNtNDI2MDBfc2Vuc29yX3N0YXRlICphY2NlbF9zdCA9IGlpb19wcml2KGluZGlv X2Rldik7CisJc3RydWN0IGludl9pY200MjYwMF9zZW5zb3JfY29uZiBjb25mID0gSU5WX0lDTTQy NjAwX1NFTlNPUl9DT05GX0lOSVQ7CisJdW5zaWduZWQgaW50IGZpZm9fZW4gPSAwOworCXVuc2ln bmVkIGludCBzbGVlcF90ZW1wID0gMDsKKwl1bnNpZ25lZCBpbnQgc2xlZXBfYWNjZWwgPSAwOwor CXVuc2lnbmVkIGludCBzbGVlcDsKKwlpbnQgcmV0OworCisJZ3VhcmQobXV0ZXgpKCZzdC0+bG9j ayk7CisKKwlpZiAoKnNjYW5fbWFzayAmIElOVl9JQ000MjYwMF9TQ0FOX01BU0tfVEVNUCkgewor CQkvKiBlbmFibGUgdGVtcCBzZW5zb3IgKi8KKwkJcmV0ID0gaW52X2ljbTQyNjA3X3NldF90ZW1w X2NvbmYoc3QsIHRydWUsICZzbGVlcF90ZW1wKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gb3V0X3Vu bG9jazsKKwkJZmlmb19lbiB8PSBJTlZfSUNNNDI2MDBfU0VOU09SX1RFTVA7CisJfQorCisJaWYg KCpzY2FuX21hc2sgJiBJTlZfSUNNNDI2MDBfU0NBTl9NQVNLX0FDQ0VMXzNBWElTKSB7CisJCS8q IGVuYWJsZSBhY2NlbCBzZW5zb3IgKi8KKwkJY29uZi5tb2RlID0gYWNjZWxfc3QtPnBvd2VyX21v ZGU7CisJCWNvbmYuZmlsdGVyID0gYWNjZWxfc3QtPmZpbHRlcjsKKwkJcmV0ID0gaW52X2ljbTQy NjA3X3NldF9hY2NlbF9jb25mKHN0LCAmY29uZiwgJnNsZWVwX2FjY2VsKTsKKwkJaWYgKHJldCkK KwkJCWdvdG8gb3V0X3VubG9jazsKKwkJZmlmb19lbiB8PSBJTlZfSUNNNDI2MDBfU0VOU09SX0FD Q0VMOworCX0KKworCS8qIHVwZGF0ZSBkYXRhIEZJRk8gd3JpdGUgKi8KKwlyZXQgPSBpbnZfaWNt NDI2MDdfYnVmZmVyX3NldF9maWZvX2VuKHN0LCBmaWZvX2VuIHwgc3QtPmZpZm8uZW4pOworCitv dXRfdW5sb2NrOgorCS8qIHNsZWVwIG1heGltdW0gcmVxdWlyZWQgdGltZSAqLworCXNsZWVwID0g bWF4KHNsZWVwX2FjY2VsLCBzbGVlcF90ZW1wKTsKKwlpZiAoc2xlZXApCisJCW1zbGVlcChzbGVl cCk7CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBpbnZfaWNtNDI2MDBfYWNjZWxfcmVh ZF9zZW5zb3Ioc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKIAkJCQkJICBzdHJ1Y3QgaWlvX2No YW5fc3BlYyBjb25zdCAqY2hhbiwKIAkJCQkJICBzMTYgKnZhbCkKQEAgLTMxOSw2ICs0MDQsNjEg QEAgc3RhdGljIGludCBpbnZfaWNtNDI2MDBfYWNjZWxfcmVhZF9zZW5zb3Ioc3RydWN0IGlpb19k ZXYgKmluZGlvX2RldiwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGludl9pY200MjYw N19hY2NlbF9yZWFkX3NlbnNvcihzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAorCQkJCQkgIHN0 cnVjdCBpaW9fY2hhbl9zcGVjIGNvbnN0ICpjaGFuLAorCQkJCQkgIHMxNiAqdmFsKQoreworCXN0 cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0ID0gaWlvX2RldmljZV9nZXRfZHJ2ZGF0YShpbmRp b19kZXYpOworCXN0cnVjdCBpbnZfaWNtNDI2MDBfc2Vuc29yX3N0YXRlICphY2NlbF9zdCA9IGlp b19wcml2KGluZGlvX2Rldik7CisJc3RydWN0IGRldmljZSAqZGV2ID0gcmVnbWFwX2dldF9kZXZp Y2Uoc3QtPm1hcCk7CisJc3RydWN0IGludl9pY200MjYwMF9zZW5zb3JfY29uZiBjb25mID0gSU5W X0lDTTQyNjAwX1NFTlNPUl9DT05GX0lOSVQ7CisJdW5zaWduZWQgaW50IHJlZzsKKwlfX2JlMTYg KmRhdGE7CisJaW50IHJldDsKKworCWlmIChjaGFuLT50eXBlICE9IElJT19BQ0NFTCkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlzd2l0Y2ggKGNoYW4tPmNoYW5uZWwyKSB7CisJY2FzZSBJSU9fTU9E X1g6CisJCXJlZyA9IElOVl9JQ000MjYwN19SRUdfQUNDRUxfREFUQV9YMTsKKwkJYnJlYWs7CisJ Y2FzZSBJSU9fTU9EX1k6CisJCXJlZyA9IElOVl9JQ000MjYwN19SRUdfQUNDRUxfREFUQV9ZMTsK KwkJYnJlYWs7CisJY2FzZSBJSU9fTU9EX1o6CisJCXJlZyA9IElOVl9JQ000MjYwN19SRUdfQUND RUxfREFUQV9aMTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor CisJUE1fUlVOVElNRV9BQ1FVSVJFX0FVVE9TVVNQRU5EKGRldiwgcG0pOworCWlmIChQTV9SVU5U SU1FX0FDUVVJUkVfRVJSKCZwbSkpCisJCXJldHVybiAtRU5YSU87CisKKwlndWFyZChtdXRleCko JnN0LT5sb2NrKTsKKworCS8qIGVuYWJsZSBhY2NlbCBzZW5zb3IgKi8KKwljb25mLm1vZGUgPSBh Y2NlbF9zdC0+cG93ZXJfbW9kZTsKKwljb25mLmZpbHRlciA9IGFjY2VsX3N0LT5maWx0ZXI7CisJ cmV0ID0gaW52X2ljbTQyNjA3X3NldF9hY2NlbF9jb25mKHN0LCAmY29uZiwgTlVMTCk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIHJlYWQgYWNjZWwgcmVnaXN0ZXIgZGF0YSAqLwor CWRhdGEgPSAoX19iZTE2ICopJnN0LT5idWZmZXJbMF07CisJcmV0ID0gcmVnbWFwX2J1bGtfcmVh ZChzdC0+bWFwLCByZWcsIGRhdGEsIHNpemVvZigqZGF0YSkpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CisKKwkqdmFsID0gKGludDE2X3QpYmUxNl90b19jcHVwKGRhdGEpOworCWlmICgqdmFs ID09IElOVl9JQ000MjYwMF9EQVRBX0lOVkFMSUQpCisJCXJldCA9IC1FSU5WQUw7CisKKwlyZXR1 cm4gcmV0OworfQorCiBzdGF0aWMgdW5zaWduZWQgaW50IGludl9pY200MjYwMF9hY2NlbF9jb252 ZXJ0X3JvY190b193b20odTY0IHJvYywKIAkJCQkJCQkgIGludCBhY2NlbF9oeiwgaW50IGFjY2Vs X3VoeikKIHsKQEAgLTM1OSw2ICs0OTksNyBAQCBzdGF0aWMgaW50IGludl9pY200MjYwMF9hY2Nl bF9zZXRfd29tX3RocmVzaG9sZChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKIHsKIAl1 bnNpZ25lZCBpbnQgdGhyZXNob2xkOwogCWludCByZXQ7CisJdTMyIHdvbV90aHJlc2hfcmVnOwog CiAJLyogY29udmVydCByb2MgdG8gd29tIHRocmVzaG9sZCBhbmQgY29udmVydCBiYWNrIHRvIGhh bmRsZSBjbGlwcGluZyAqLwogCXRocmVzaG9sZCA9IGludl9pY200MjYwMF9hY2NlbF9jb252ZXJ0 X3JvY190b193b20odmFsdWUsIGFjY2VsX2h6LCBhY2NlbF91aHopOwpAQCAtMzY2LDExICs1MDcs MjAgQEAgc3RhdGljIGludCBpbnZfaWNtNDI2MDBfYWNjZWxfc2V0X3dvbV90aHJlc2hvbGQoc3Ry dWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QsCiAKIAlkZXZfZGJnKHJlZ21hcF9nZXRfZGV2aWNl KHN0LT5tYXApLCAid29tX3RocmVzaG9sZDogMHgleFxuIiwgdGhyZXNob2xkKTsKIAorCXN3aXRj aCAoc3QtPmNoaXApIHsKKwljYXNlIElOVl9DSElQX0lDTTQyNjA3OgorCWNhc2UgSU5WX0NISVBf SUNNNDI2MDdQOgorCQl3b21fdGhyZXNoX3JlZyA9IElOVl9JQ000MjYwN19SRUdfQUNDRUxfV09N X1hfVEhSOworCQlicmVhazsKKwlkZWZhdWx0OgorCQl3b21fdGhyZXNoX3JlZyA9IElOVl9JQ000 MjYwMF9SRUdfQUNDRUxfV09NX1hfVEhSOworCQlicmVhazsKKwl9CiAJLyogc2V0IGFjY2VsIFdv TSB0aHJlc2hvbGQgZm9yIHRoZSAzIGF4ZXMgKi8KIAlzdC0+YnVmZmVyWzBdID0gdGhyZXNob2xk OwogCXN0LT5idWZmZXJbMV0gPSB0aHJlc2hvbGQ7CiAJc3QtPmJ1ZmZlclsyXSA9IHRocmVzaG9s ZDsKLQlyZXQgPSByZWdtYXBfYnVsa193cml0ZShzdC0+bWFwLCBJTlZfSUNNNDI2MDBfUkVHX0FD Q0VMX1dPTV9YX1RIUiwgc3QtPmJ1ZmZlciwgMyk7CisJcmV0ID0gcmVnbWFwX2J1bGtfd3JpdGUo c3QtPm1hcCwgd29tX3RocmVzaF9yZWcsIHN0LT5idWZmZXIsIDMpOwogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAKQEAgLTQxMCw2ICs1NjAsMzcgQEAgc3RhdGljIGludCBfaW52X2ljbTQyNjAw X2FjY2VsX2VuYWJsZV93b20oc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikKIAlyZXR1cm4gMDsK IH0KIAorc3RhdGljIGludCBfaW52X2ljbTQyNjA3X2FjY2VsX2VuYWJsZV93b20oc3RydWN0IGlp b19kZXYgKmluZGlvX2RldikKK3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCA9IGlp b19kZXZpY2VfZ2V0X2RydmRhdGEoaW5kaW9fZGV2KTsKKwlzdHJ1Y3QgaW52X2ljbTQyNjAwX3Nl bnNvcl9zdGF0ZSAqYWNjZWxfc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOworCXN0cnVjdCBpbnZf aWNtNDI2MDBfc2Vuc29yX2NvbmYgY29uZiA9IElOVl9JQ000MjYwMF9TRU5TT1JfQ09ORl9JTklU OworCXVuc2lnbmVkIGludCBzbGVlcF9tcyA9IDA7CisJaW50IHJldDsKKworCXNjb3BlZF9ndWFy ZChtdXRleCwgJnN0LT5sb2NrKSB7CisJCS8qIHR1cm4gb24gYWNjZWwgc2Vuc29yICovCisJCWNv bmYubW9kZSA9IGFjY2VsX3N0LT5wb3dlcl9tb2RlOworCQljb25mLmZpbHRlciA9IGFjY2VsX3N0 LT5maWx0ZXI7CisJCXJldCA9IGludl9pY200MjYwN19zZXRfYWNjZWxfY29uZihzdCwgJmNvbmYs ICZzbGVlcF9tcyk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKworCWlmIChzbGVl cF9tcykKKwkJbXNsZWVwKHNsZWVwX21zKTsKKworCXNjb3BlZF9ndWFyZChtdXRleCwgJnN0LT5s b2NrKSB7CisJCXJldCA9IGludl9pY200MjYwN19lbmFibGVfd29tKHN0KTsKKwkJaWYgKHJldCkK KwkJCXJldHVybiByZXQ7CisJCXN0LT5hcGV4Lm9uKys7CisJCXN0LT5hcGV4LndvbS5lbmFibGUg PSB0cnVlOworCX0KKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGludl9pY200MjYwMF9h Y2NlbF9lbmFibGVfd29tKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpCiB7CiAJc3RydWN0IGlu dl9pY200MjYwMF9zdGF0ZSAqc3QgPSBpaW9fZGV2aWNlX2dldF9kcnZkYXRhKGluZGlvX2Rldik7 CkBAIC00MjAsNyArNjAxLDE1IEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2FjY2VsX2VuYWJs ZV93b20oc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwogCi0JcmV0ID0gX2ludl9pY200MjYwMF9hY2NlbF9lbmFibGVfd29tKGluZGlvX2Rldik7CisJ c3dpdGNoIChzdC0+Y2hpcCkgeworCWNhc2UgSU5WX0NISVBfSUNNNDI2MDc6CisJY2FzZSBJTlZf Q0hJUF9JQ000MjYwN1A6CisJCXJldCA9IF9pbnZfaWNtNDI2MDdfYWNjZWxfZW5hYmxlX3dvbShp bmRpb19kZXYpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXQgPSBfaW52X2ljbTQyNjAwX2Fj Y2VsX2VuYWJsZV93b20oaW5kaW9fZGV2KTsKKwkJYnJlYWs7CisJfQogCWlmIChyZXQpIHsKIAkJ cG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShwZGV2KTsKIAkJcG1fcnVudGltZV9wdXRfYXV0b3N1 c3BlbmQocGRldik7CkBAIC00NjQsMTMgKzY1Myw0OSBAQCBzdGF0aWMgaW50IF9pbnZfaWNtNDI2 MDBfYWNjZWxfZGlzYWJsZV93b20oc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikKIAlyZXR1cm4g MDsKIH0KIAorc3RhdGljIGludCBfaW52X2ljbTQyNjA3X2FjY2VsX2Rpc2FibGVfd29tKHN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYpCit7CisJc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3Qg PSBpaW9fZGV2aWNlX2dldF9kcnZkYXRhKGluZGlvX2Rldik7CisJc3RydWN0IGludl9pY200MjYw MF9zZW5zb3JfY29uZiBjb25mID0gSU5WX0lDTTQyNjAwX1NFTlNPUl9DT05GX0lOSVQ7CisJdW5z aWduZWQgaW50IHNsZWVwX21zID0gMDsKKwlpbnQgcmV0OworCisJc2NvcGVkX2d1YXJkKG11dGV4 LCAmc3QtPmxvY2spIHsKKwkJc3QtPmFwZXgud29tLmVuYWJsZSA9IGZhbHNlOworCQlzdC0+YXBl eC5vbi0tOworCQlyZXQgPSBpbnZfaWNtNDI2MDdfZGlzYWJsZV93b20oc3QpOworCQlpZiAocmV0 KQorCQkJcmV0dXJuIHJldDsKKwkJLyogdHVybiBvZmYgYWNjZWwgc2Vuc29yIGlmIG5vdCB1c2Vk ICovCisJCWlmICghc3QtPmFwZXgub24gJiYgIWlpb19idWZmZXJfZW5hYmxlZChpbmRpb19kZXYp KSB7CisJCQljb25mLm1vZGUgPSBJTlZfSUNNNDI2MDBfU0VOU09SX01PREVfT0ZGOworCQkJcmV0 ID0gaW52X2ljbTQyNjA3X3NldF9hY2NlbF9jb25mKHN0LCAmY29uZiwgJnNsZWVwX21zKTsKKwkJ CWlmIChyZXQpCisJCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKworCWlmIChzbGVlcF9tcykKKwkJ bXNsZWVwKHNsZWVwX21zKTsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGludl9pY200 MjYwMF9hY2NlbF9kaXNhYmxlX3dvbShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQogewogCXN0 cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0ID0gaWlvX2RldmljZV9nZXRfZHJ2ZGF0YShpbmRp b19kZXYpOwogCXN0cnVjdCBkZXZpY2UgKnBkZXYgPSByZWdtYXBfZ2V0X2RldmljZShzdC0+bWFw KTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gX2ludl9pY200MjYwMF9hY2NlbF9kaXNhYmxlX3dvbShp bmRpb19kZXYpOworCXN3aXRjaCAoc3QtPmNoaXApIHsKKwljYXNlIElOVl9DSElQX0lDTTQyNjA3 OgorCWNhc2UgSU5WX0NISVBfSUNNNDI2MDdQOgorCQlyZXQgPSBfaW52X2ljbTQyNjA3X2FjY2Vs X2Rpc2FibGVfd29tKGluZGlvX2Rldik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldCA9IF9p bnZfaWNtNDI2MDBfYWNjZWxfZGlzYWJsZV93b20oaW5kaW9fZGV2KTsKKwkJYnJlYWs7CisJfQog CiAJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShwZGV2KTsKIAlwbV9ydW50aW1lX3B1dF9hdXRv c3VzcGVuZChwZGV2KTsKQEAgLTU2MCwxMiArNzg1LDIxIEBAIHN0YXRpYyBpbnQgaW52X2ljbTQy NjAwX2FjY2VsX3dyaXRlX3NjYWxlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCiAKIAljb25m LmZzID0gaWR4IC8gMjsKIAotCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsKLQotCXNjb3BlZF9n dWFyZChtdXRleCwgJnN0LT5sb2NrKQotCQlyZXQgPSBpbnZfaWNtNDI2MDBfc2V0X2FjY2VsX2Nv bmYoc3QsICZjb25mLCBOVUxMKTsKKwlQTV9SVU5USU1FX0FDUVVJUkVfQVVUT1NVU1BFTkQoZGV2 LCBwbSk7CisJaWYgKFBNX1JVTlRJTUVfQUNRVUlSRV9FUlIoJnBtKSkKKwkJcmV0dXJuIC1FTlhJ TzsKIAotCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGRldik7CisJc3dpdGNoIChzdC0+Y2hp cCkgeworCWNhc2UgSU5WX0NISVBfSUNNNDI2MDc6CisJY2FzZSBJTlZfQ0hJUF9JQ000MjYwN1A6 CisJCXNjb3BlZF9ndWFyZChtdXRleCwgJnN0LT5sb2NrKQorCQkJcmV0ID0gaW52X2ljbTQyNjAw X3NldF9hY2NlbF9jb25mKHN0LCAmY29uZiwgTlVMTCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CXNjb3BlZF9ndWFyZChtdXRleCwgJnN0LT5sb2NrKQorCQkJcmV0ID0gaW52X2ljbTQyNjAwX3Nl dF9hY2NlbF9jb25mKHN0LCAmY29uZiwgTlVMTCk7CisJCWJyZWFrOworCX0KIAogCXJldHVybiBy ZXQ7CiB9CkBAIC01OTYsNiArODMwLDIwIEBAIHN0YXRpYyBjb25zdCBpbnQgaW52X2ljbTQyNjAw X2FjY2VsX29kcltdID0gewogCTQwMDAsIDAsCiB9OwogCitzdGF0aWMgY29uc3QgaW50IGludl9p Y200MjYwN19hY2NlbF9vZHJbXSA9IHsKKwkxLCA1NjI1MDAsIC8qIDEuNTYyNUh6ICovCisJMywg MTI1MDAwLCAvKiAzLjEyNUh6ICovCisJNiwgMjUwMDAwLCAvKiA2LjI1SHogKi8KKwkxMiwgNTAw MDAwLCAvKiAxMi41SHogKi8KKwkyNSwgMCwgLyogMjVIeiAqLworCTUwLCAwLCAvKiA1MEh6ICov CisJMTAwLCAwLCAvKiAxMDBIeiAqLworCTIwMCwgMCwgLyogMjAwSHogKi8KKwk0MDAsIDAsIC8q IDQwMEh6ICovCisJODAwLCAwLCAvKiA4MDBIeiAqLworCTE2MDAsIDAsIC8qIDE2MDBIeiAqLwor fTsKKwogc3RhdGljIGNvbnN0IGludCBpbnZfaWNtNDI2MDBfYWNjZWxfb2RyX2NvbnZbXSA9IHsK IAlJTlZfSUNNNDI2MDBfT0RSXzFfNTYyNUhaX0xQLAogCUlOVl9JQ000MjYwMF9PRFJfM18xMjVI Wl9MUCwKQEAgLTYxMCw2ICs4NTgsMjAgQEAgc3RhdGljIGNvbnN0IGludCBpbnZfaWNtNDI2MDBf YWNjZWxfb2RyX2NvbnZbXSA9IHsKIAlJTlZfSUNNNDI2MDBfT0RSXzRLSFpfTE4sCiB9OwogCitz dGF0aWMgY29uc3QgaW50IGludl9pY200MjYwN19hY2NlbF9vZHJfY29udltdID0geworCUlOVl9J Q000MjYwN19PRFJfMV81NjI1SFpfTFAsCisJSU5WX0lDTTQyNjA3X09EUl8zXzEyNUhaX0xQLAor CUlOVl9JQ000MjYwN19PRFJfNl8yNUhaX0xQLAorCUlOVl9JQ000MjYwN19PRFJfMTJfNUhaLAor CUlOVl9JQ000MjYwN19PRFJfMjVIWiwKKwlJTlZfSUNNNDI2MDdfT0RSXzUwSFosCisJSU5WX0lD TTQyNjA3X09EUl8xMDBIWiwKKwlJTlZfSUNNNDI2MDdfT0RSXzIwMEhaLAorCUlOVl9JQ000MjYw N19PRFJfNDAwSFosCisJSU5WX0lDTTQyNjA3X09EUl84MDBIWiwKKwlJTlZfSUNNNDI2MDdfT0RS XzE2MDBIWiwKK307CisKIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2FjY2VsX3JlYWRfb2RyKHN0 cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0LAogCQkJCSAgICAgICBpbnQgKnZhbCwgaW50ICp2 YWwyKQogewpAQCAtNjMxLDYgKzg5MywyNyBAQCBzdGF0aWMgaW50IGludl9pY200MjYwMF9hY2Nl bF9yZWFkX29kcihzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKIAlyZXR1cm4gSUlPX1ZB TF9JTlRfUExVU19NSUNSTzsKIH0KIAorc3RhdGljIGludCBpbnZfaWNtNDI2MDdfYWNjZWxfcmVh ZF9vZHIoc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QsCisJCQkJICAgICAgIGludCAqdmFs LCBpbnQgKnZhbDIpCit7CisJdW5zaWduZWQgaW50IG9kcjsKKwl1bnNpZ25lZCBpbnQgaTsKKwor CW9kciA9IHN0LT5jb25mLmFjY2VsLm9kcjsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGludl9pY200MjYwN19hY2NlbF9vZHJfY29udik7ICsraSkgeworCQlpZiAoaW52X2ljbTQyNjA3 X2FjY2VsX29kcl9jb252W2ldID09IG9kcikKKwkJCWJyZWFrOworCX0KKwlpZiAoaSA+PSBBUlJB WV9TSVpFKGludl9pY200MjYwN19hY2NlbF9vZHJfY29udikpCisJCXJldHVybiAtRUlOVkFMOwor CisJKnZhbCA9IGludl9pY200MjYwN19hY2NlbF9vZHJbMiAqIGldOworCSp2YWwyID0gaW52X2lj bTQyNjA3X2FjY2VsX29kclsyICogaSArIDFdOworCisJcmV0dXJuIElJT19WQUxfSU5UX1BMVVNf TUlDUk87Cit9CisKIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2FjY2VsX3dyaXRlX29kcihzdHJ1 Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAogCQkJCQlpbnQgdmFsLCBpbnQgdmFsMikKIHsKQEAgLTY3 OSw2ICs5NjIsNTAgQEAgc3RhdGljIGludCBpbnZfaWNtNDI2MDBfYWNjZWxfd3JpdGVfb2RyKHN0 cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBp bnZfaWNtNDI2MDdfYWNjZWxfd3JpdGVfb2RyKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCisJ CQkJCWludCB2YWwsIGludCB2YWwyKQoreworCXN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0 ID0gaWlvX2RldmljZV9nZXRfZHJ2ZGF0YShpbmRpb19kZXYpOworCXN0cnVjdCBpbnZfaWNtNDI2 MDBfc2Vuc29yX3N0YXRlICphY2NlbF9zdCA9IGlpb19wcml2KGluZGlvX2Rldik7CisJc3RydWN0 IGludl9zZW5zb3JzX3RpbWVzdGFtcCAqdHMgPSAmYWNjZWxfc3QtPnRzOworCXN0cnVjdCBkZXZp Y2UgKmRldiA9IHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5tYXApOworCXVuc2lnbmVkIGludCBpZHg7 CisJc3RydWN0IGludl9pY200MjYwMF9zZW5zb3JfY29uZiBjb25mID0gSU5WX0lDTTQyNjAwX1NF TlNPUl9DT05GX0lOSVQ7CisJaW50IHJldDsKKworCWZvciAoaWR4ID0gMDsgaWR4IDwgQVJSQVlf U0laRShpbnZfaWNtNDI2MDdfYWNjZWxfb2RyKTsgaWR4ICs9IDIpIHsKKwkJaWYgKHZhbCA9PSBp bnZfaWNtNDI2MDdfYWNjZWxfb2RyW2lkeF0gJiYKKwkJCXZhbDIgPT0gaW52X2ljbTQyNjA3X2Fj Y2VsX29kcltpZHggKyAxXSkKKwkJCWJyZWFrOworCX0KKwlpZiAoaWR4ID49IEFSUkFZX1NJWkUo aW52X2ljbTQyNjA3X2FjY2VsX29kcikpCisJCXJldHVybiAtRUlOVkFMOworCisJY29uZi5vZHIg PSBpbnZfaWNtNDI2MDdfYWNjZWxfb2RyX2NvbnZbaWR4IC8gMl07CisKKwlQTV9SVU5USU1FX0FD UVVJUkVfQVVUT1NVU1BFTkQoZGV2LCBwbSk7CisJaWYgKFBNX1JVTlRJTUVfQUNRVUlSRV9FUlIo JnBtKSkKKwkJcmV0dXJuIC1FTlhJTzsKKworCWd1YXJkKG11dGV4KSgmc3QtPmxvY2spOworCisJ cmV0ID0gaW52X3NlbnNvcnNfdGltZXN0YW1wX3VwZGF0ZV9vZHIodHMsIGludl9pY200MjYwN19v ZHJfdG9fcGVyaW9kKGNvbmYub2RyKSwKKwkJCQkJICAgICAgIGlpb19idWZmZXJfZW5hYmxlZChp bmRpb19kZXYpKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gaW52X2ljbTQy NjA3X3NldF9hY2NlbF9jb25mKHN0LCAmY29uZiwgTlVMTCk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKwlyZXQgPSBpbnZfaWNtNDI2MDBfYWNjZWxfc2V0X3dvbV90aHJlc2hvbGQoc3QsIHN0 LT5hcGV4LndvbS52YWx1ZSwgdmFsLCB2YWwyKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CWludl9pY200MjYwN19idWZmZXJfdXBkYXRlX2ZpZm9fcGVyaW9kKHN0KTsKKwlpbnZfaWNtNDI2 MDBfYnVmZmVyX3VwZGF0ZV93YXRlcm1hcmsoc3QpOworCisJcmV0dXJuIDA7Cit9CisKIC8qCiAg KiBDYWxpYnJhdGlvbiBiaWFzIHZhbHVlcywgSUlPIHJhbmdlIGZvcm1hdCBpbnQgKyBtaWNyby4K ICAqIFZhbHVlIGlzIGxpbWl0ZWQgdG8gKy8tMWcgY29kZWQgb24gMTIgYml0cyBzaWduZWQuIFN0 ZXAgaXMgMC41bWcuCkBAIC05MDQsNiArMTIzMSw0MiBAQCBzdGF0aWMgaW50IGludl9pY200MjYw MF9hY2NlbF9yZWFkX3JhdyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAogCX0KIH0KIAorc3Rh dGljIGludCBpbnZfaWNtNDI2MDdfYWNjZWxfcmVhZF9yYXcoc3RydWN0IGlpb19kZXYgKmluZGlv X2RldiwKKwkJCQkgICAgICAgc3RydWN0IGlpb19jaGFuX3NwZWMgY29uc3QgKmNoYW4sCisJCQkJ ICAgICAgIGludCAqdmFsLCBpbnQgKnZhbDIsIGxvbmcgbWFzaykKK3sKKwlzdHJ1Y3QgaW52X2lj bTQyNjAwX3N0YXRlICpzdCA9IGlpb19kZXZpY2VfZ2V0X2RydmRhdGEoaW5kaW9fZGV2KTsKKwlz MTYgZGF0YTsKKwlpbnQgcmV0OworCisJc3dpdGNoIChjaGFuLT50eXBlKSB7CisJY2FzZSBJSU9f QUNDRUw6CisJCWJyZWFrOworCWNhc2UgSUlPX1RFTVA6CisJCXJldHVybiBpbnZfaWNtNDI2MDdf dGVtcF9yZWFkX3JhdyhpbmRpb19kZXYsIGNoYW4sIHZhbCwgdmFsMiwgbWFzayk7CisJZGVmYXVs dDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJc3dpdGNoIChtYXNrKSB7CisJY2FzZSBJSU9f Q0hBTl9JTkZPX1JBVzoKKwkJaWYgKCFpaW9fZGV2aWNlX2NsYWltX2RpcmVjdChpbmRpb19kZXYp KQorCQkJcmV0dXJuIC1FQlVTWTsKKwkJcmV0ID0gaW52X2ljbTQyNjA3X2FjY2VsX3JlYWRfc2Vu c29yKGluZGlvX2RldiwgY2hhbiwgJmRhdGEpOworCQlpaW9fZGV2aWNlX3JlbGVhc2VfZGlyZWN0 KGluZGlvX2Rldik7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCQkqdmFsID0gZGF0YTsK KwkJcmV0dXJuIElJT19WQUxfSU5UOworCWNhc2UgSUlPX0NIQU5fSU5GT19TQ0FMRToKKwkJcmV0 dXJuIGludl9pY200MjYwMF9hY2NlbF9yZWFkX3NjYWxlKGluZGlvX2RldiwgdmFsLCB2YWwyKTsK KwljYXNlIElJT19DSEFOX0lORk9fU0FNUF9GUkVROgorCQlyZXR1cm4gaW52X2ljbTQyNjA3X2Fj Y2VsX3JlYWRfb2RyKHN0LCB2YWwsIHZhbDIpOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFM OworCX0KK30KKwogc3RhdGljIGludCBpbnZfaWNtNDI2MDBfYWNjZWxfcmVhZF9hdmFpbChzdHJ1 Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAogCQkJCQkgc3RydWN0IGlpb19jaGFuX3NwZWMgY29uc3Qg KmNoYW4sCiAJCQkJCSBjb25zdCBpbnQgKip2YWxzLApAQCAtOTY0LDYgKzEzMjcsMjkgQEAgc3Rh dGljIGludCBpbnZfaWNtNDI2MDBfYWNjZWxfd3JpdGVfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYsCiAJfQogfQogCitzdGF0aWMgaW50IGludl9pY200MjYwN19hY2NlbF93cml0ZV9yYXco c3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKKwkJCQkJc3RydWN0IGlpb19jaGFuX3NwZWMgY29u c3QgKmNoYW4sCisJCQkJCWludCB2YWwsIGludCB2YWwyLCBsb25nIG1hc2spCit7CisJaW50IHJl dDsKKworCWlmIChjaGFuLT50eXBlICE9IElJT19BQ0NFTCkKKwkJcmV0dXJuIC1FSU5WQUw7CisK Kwlzd2l0Y2ggKG1hc2spIHsKKwljYXNlIElJT19DSEFOX0lORk9fU0NBTEU6CisJCWlmICghaWlv X2RldmljZV9jbGFpbV9kaXJlY3QoaW5kaW9fZGV2KSkKKwkJCXJldHVybiAtRUJVU1k7CisJCXJl dCA9IGludl9pY200MjYwMF9hY2NlbF93cml0ZV9zY2FsZShpbmRpb19kZXYsIHZhbCwgdmFsMik7 CisJCWlpb19kZXZpY2VfcmVsZWFzZV9kaXJlY3QoaW5kaW9fZGV2KTsKKwkJcmV0dXJuIHJldDsK KwljYXNlIElJT19DSEFOX0lORk9fU0FNUF9GUkVROgorCQlyZXR1cm4gaW52X2ljbTQyNjA3X2Fj Y2VsX3dyaXRlX29kcihpbmRpb19kZXYsIHZhbCwgdmFsMik7CisJZGVmYXVsdDoKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorfQorCiBzdGF0aWMgaW50IGludl9pY200MjYwMF9hY2NlbF93cml0ZV9y YXdfZ2V0X2ZtdChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAogCQkJCQkJc3RydWN0IGlpb19j aGFuX3NwZWMgY29uc3QgKmNoYW4sCiAJCQkJCQlsb25nIG1hc2spCkBAIC0xMDgyLDcgKzE0Njgs MTUgQEAgc3RhdGljIGludCBfaW52X2ljbTQyNjAwX2FjY2VsX3dvbV92YWx1ZShzdHJ1Y3QgaW52 X2ljbTQyNjAwX3N0YXRlICpzdCwKIAogCWd1YXJkKG11dGV4KSgmc3QtPmxvY2spOwogCi0JcmV0 ID0gaW52X2ljbTQyNjAwX2FjY2VsX3JlYWRfb2RyKHN0LCAmYWNjZWxfaHosICZhY2NlbF91aHop OworCXN3aXRjaCAoc3QtPmNoaXApIHsKKwljYXNlIElOVl9DSElQX0lDTTQyNjA3OgorCWNhc2Ug SU5WX0NISVBfSUNNNDI2MDdQOgorCQlyZXQgPSBpbnZfaWNtNDI2MDdfYWNjZWxfcmVhZF9vZHIo c3QsICZhY2NlbF9oeiwgJmFjY2VsX3Voeik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldCA9 IGludl9pY200MjYwMF9hY2NlbF9yZWFkX29kcihzdCwgJmFjY2VsX2h6LCAmYWNjZWxfdWh6KTsK KwkJYnJlYWs7CisJfQogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCkBAIC0xMTM3LDYg KzE1MzEsMjAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9faW5mbyBpbnZfaWNtNDI2MDBfYWNj ZWxfaW5mbyA9IHsKIAkud3JpdGVfZXZlbnRfdmFsdWUgPSBpbnZfaWNtNDI2MDBfYWNjZWxfd3Jp dGVfZXZlbnRfdmFsdWUsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19pbmZvIGludl9p Y200MjYwN19hY2NlbF9pbmZvID0geworCS5yZWFkX3JhdyA9IGludl9pY200MjYwN19hY2NlbF9y ZWFkX3JhdywKKwkud3JpdGVfcmF3ID0gaW52X2ljbTQyNjA3X2FjY2VsX3dyaXRlX3JhdywKKwku d3JpdGVfcmF3X2dldF9mbXQgPSBpbnZfaWNtNDI2MDBfYWNjZWxfd3JpdGVfcmF3X2dldF9mbXQs CisJLmRlYnVnZnNfcmVnX2FjY2VzcyA9IGludl9pY200MjYwMF9kZWJ1Z2ZzX3JlZywKKwkudXBk YXRlX3NjYW5fbW9kZSA9IGludl9pY200MjYwN19hY2NlbF91cGRhdGVfc2Nhbl9tb2RlLAorCS5o d2ZpZm9fc2V0X3dhdGVybWFyayA9IGludl9pY200MjYwMF9hY2NlbF9od2ZpZm9fc2V0X3dhdGVy bWFyaywKKwkuaHdmaWZvX2ZsdXNoX3RvX2J1ZmZlciA9IGludl9pY200MjYwMF9hY2NlbF9od2Zp Zm9fZmx1c2gsCisJLnJlYWRfZXZlbnRfY29uZmlnID0gaW52X2ljbTQyNjAwX2FjY2VsX3JlYWRf ZXZlbnRfY29uZmlnLAorCS53cml0ZV9ldmVudF9jb25maWcgPSBpbnZfaWNtNDI2MDBfYWNjZWxf d3JpdGVfZXZlbnRfY29uZmlnLAorCS5yZWFkX2V2ZW50X3ZhbHVlID0gaW52X2ljbTQyNjAwX2Fj Y2VsX3JlYWRfZXZlbnRfdmFsdWUsCisJLndyaXRlX2V2ZW50X3ZhbHVlID0gaW52X2ljbTQyNjAw X2FjY2VsX3dyaXRlX2V2ZW50X3ZhbHVlLAorfTsKKwogaW50IGludl9pY200MjYwMF9hY2NlbF9p bml0KHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0LCBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2KQogewogCXN0cnVjdCBkZXZpY2UgKmRldiA9IHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5tYXAp OwpAQCAtMTIwMiw2ICsxNjEwLDYyIEBAIGludCBpbnZfaWNtNDI2MDBfYWNjZWxfaW5pdChzdHJ1 Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwgc3RydWN0IGlpb19kZXYgKmluZGlvCiAJcmV0dXJu IDA7CiB9CiAKK2ludCBpbnZfaWNtNDI2MDdfYWNjZWxfaW5pdChzdHJ1Y3QgaW52X2ljbTQyNjAw X3N0YXRlICpzdCwgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikKK3sKKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSByZWdtYXBfZ2V0X2RldmljZShzdC0+bWFwKTsKKwljb25zdCBjaGFyICpuYW1lOwor CXN0cnVjdCBpbnZfaWNtNDI2MDBfc2Vuc29yX3N0YXRlICphY2NlbF9zdDsKKwlzdHJ1Y3QgaW52 X3NlbnNvcnNfdGltZXN0YW1wX2NoaXAgdHNfY2hpcDsKKwlpbnQgcmV0OworCisJbmFtZSA9IGRl dm1fa2FzcHJpbnRmKGRldiwgR0ZQX0tFUk5FTCwgIiVzLWFjY2VsIiwgc3QtPm5hbWUpOworCWlm ICghbmFtZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpbmRpb19kZXYgPSBkZXZtX2lpb19kZXZp Y2VfYWxsb2MoZGV2LCBzaXplb2YoKmFjY2VsX3N0KSk7CisJaWYgKCFpbmRpb19kZXYpCisJCXJl dHVybiAtRU5PTUVNOworCWFjY2VsX3N0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKKworCWFjY2Vs X3N0LT5zY2FsZXMgPSBpbnZfaWNtNDI2MDBfYWNjZWxfc2NhbGU7CisJYWNjZWxfc3QtPnNjYWxl c19sZW4gPSBBUlJBWV9TSVpFKGludl9pY200MjYwMF9hY2NlbF9zY2FsZSk7CisJYWNjZWxfc3Qt PnBvd2VyX21vZGUgPSBJTlZfSUNNNDI2MDBfU0VOU09SX01PREVfTE9XX1BPV0VSOworCWFjY2Vs X3N0LT5maWx0ZXIgPSBJTlZfSUNNNDI2MDdfRklMVEVSX0FWR18xNlg7CisKKwkvKgorCSAqIGNs b2NrIHBlcmlvZCBpcyAzMmtIeiAoMzEyNTBucykKKwkgKiBqaXR0ZXIgaXMgKy8tIDIlICgyMCBw ZXIgbWlsbGUpCisJICovCisJdHNfY2hpcC5jbG9ja19wZXJpb2QgPSAzMTI1MDsKKwl0c19jaGlw LmppdHRlciA9IDIwOworCXRzX2NoaXAuaW5pdF9wZXJpb2QgPSBpbnZfaWNtNDI2MDdfb2RyX3Rv X3BlcmlvZChzdC0+Y29uZi5hY2NlbC5vZHIpOworCWludl9zZW5zb3JzX3RpbWVzdGFtcF9pbml0 KCZhY2NlbF9zdC0+dHMsICZ0c19jaGlwKTsKKworCWlpb19kZXZpY2Vfc2V0X2RydmRhdGEoaW5k aW9fZGV2LCBzdCk7CisJaW5kaW9fZGV2LT5uYW1lID0gbmFtZTsKKwlpbmRpb19kZXYtPmluZm8g PSAmaW52X2ljbTQyNjA3X2FjY2VsX2luZm87CisJaW5kaW9fZGV2LT5tb2RlcyA9IElORElPX0RJ UkVDVF9NT0RFOworCWluZGlvX2Rldi0+Y2hhbm5lbHMgPSBpbnZfaWNtNDI2MDdfYWNjZWxfY2hh bm5lbHM7CisJaW5kaW9fZGV2LT5udW1fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGludl9pY200MjYw N19hY2NlbF9jaGFubmVscyk7CisJaW5kaW9fZGV2LT5hdmFpbGFibGVfc2Nhbl9tYXNrcyA9IGlu dl9pY200MjYwMF9hY2NlbF9zY2FuX21hc2tzOworCisJcmV0ID0gZGV2bV9paW9fa2ZpZm9fYnVm ZmVyX3NldHVwKGRldiwgaW5kaW9fZGV2LAorCQkJCQkgICZpbnZfaWNtNDI2MDdfYnVmZmVyX29w cyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGRldm1faWlvX2RldmljZV9y ZWdpc3RlcihkZXYsIGluZGlvX2Rldik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8q IGFjY2VsIGV2ZW50cyBhcmUgd2FrZXVwIGNhcGFibGUgKi8KKwlyZXQgPSBkZXZtX2RldmljZV9p bml0X3dha2V1cCgmaW5kaW9fZGV2LT5kZXYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlyZXR1cm4gMDsKK30KKwogaW50IGludl9pY200MjYwMF9hY2NlbF9wYXJzZV9maWZvKHN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYpCiB7CiAJc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3Qg PSBpaW9fZGV2aWNlX2dldF9kcnZkYXRhKGluZGlvX2Rldik7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9idWZmZXIuYyBiL2RyaXZlcnMvaWlv L2ltdS9pbnZfaWNtNDI2MDAvaW52X2ljbTQyNjAwX2J1ZmZlci5jCmluZGV4IDY4YTM5NTc1ODAz MS4uZDliMTBiZjRjOWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAw L2ludl9pY200MjYwMF9idWZmZXIuYworKysgYi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAw L2ludl9pY200MjYwMF9idWZmZXIuYwpAQCAtMTE2LDYgKzExNiwyMyBAQCB2b2lkIGludl9pY200 MjYwMF9idWZmZXJfdXBkYXRlX2ZpZm9fcGVyaW9kKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUg KnN0KQogCXN0LT5maWZvLnBlcmlvZCA9IG1pbihwZXJpb2RfZ3lybywgcGVyaW9kX2FjY2VsKTsK IH0KIAordm9pZCBpbnZfaWNtNDI2MDdfYnVmZmVyX3VwZGF0ZV9maWZvX3BlcmlvZChzdHJ1Y3Qg aW52X2ljbTQyNjAwX3N0YXRlICpzdCkKK3sKKwl1MzIgcGVyaW9kX2d5cm8sIHBlcmlvZF9hY2Nl bDsKKworCWlmIChzdC0+Zmlmby5lbiAmIElOVl9JQ000MjYwMF9TRU5TT1JfR1lSTykKKwkJcGVy aW9kX2d5cm8gPSBpbnZfaWNtNDI2MDdfb2RyX3RvX3BlcmlvZChzdC0+Y29uZi5neXJvLm9kcik7 CisJZWxzZQorCQlwZXJpb2RfZ3lybyA9IFUzMl9NQVg7CisKKwlpZiAoc3QtPmZpZm8uZW4gJiBJ TlZfSUNNNDI2MDBfU0VOU09SX0FDQ0VMKQorCQlwZXJpb2RfYWNjZWwgPSBpbnZfaWNtNDI2MDdf b2RyX3RvX3BlcmlvZChzdC0+Y29uZi5hY2NlbC5vZHIpOworCWVsc2UKKwkJcGVyaW9kX2FjY2Vs ID0gVTMyX01BWDsKKworCXN0LT5maWZvLnBlcmlvZCA9IG1pbihwZXJpb2RfZ3lybywgcGVyaW9k X2FjY2VsKTsKK30KKwogaW50IGludl9pY200MjYwMF9idWZmZXJfc2V0X2ZpZm9fZW4oc3RydWN0 IGludl9pY200MjYwMF9zdGF0ZSAqc3QsCiAJCQkJICAgIHVuc2lnbmVkIGludCBmaWZvX2VuKQog ewpAQCAtMTQ2LDYgKzE2MywzMSBAQCBpbnQgaW52X2ljbTQyNjAwX2J1ZmZlcl9zZXRfZmlmb19l bihzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKIAlyZXR1cm4gMDsKIH0KIAoraW50IGlu dl9pY200MjYwN19idWZmZXJfc2V0X2ZpZm9fZW4oc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAq c3QsCisJCQkJICAgIHVuc2lnbmVkIGludCBmaWZvX2VuKQoreworCXVuc2lnbmVkIGludCB2YWw7 CisJaW50IHJldDsKKworCS8qIHVwZGF0ZSBGSUZPIEVOIGJpdHMgZm9yIGFjY2VsIGFuZCBneXJv ICovCisJdmFsID0gMDsKKwlpZiAoZmlmb19lbiAmIElOVl9JQ000MjYwMF9TRU5TT1JfR1lSTykK KwkJdmFsIHw9IElOVl9JQ000MjYwN19GSUZPX0NPTkZJRzFfTU9ERTsKKwlpZiAoZmlmb19lbiAm IElOVl9JQ000MjYwMF9TRU5TT1JfQUNDRUwpCisJCXZhbCB8PSBJTlZfSUNNNDI2MDdfRklGT19D T05GSUcxX01PREU7CisJaWYgKGZpZm9fZW4gJiBJTlZfSUNNNDI2MDBfU0VOU09SX1RFTVApCisJ CXZhbCB8PSBJTlZfSUNNNDI2MDdfRklGT19DT05GSUcxX01PREU7CisKKwlyZXQgPSByZWdtYXBf d3JpdGUoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19GSUZPX0NPTkZJRzEsIHZhbCk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCXN0LT5maWZvLmVuID0gZmlmb19lbjsKKwlpbnZfaWNt NDI2MDdfYnVmZmVyX3VwZGF0ZV9maWZvX3BlcmlvZChzdCk7CisKKwlyZXR1cm4gMDsKK30KKwog c3RhdGljIHNpemVfdCBpbnZfaWNtNDI2MDBfZ2V0X3BhY2tldF9zaXplKHVuc2lnbmVkIGludCBm aWZvX2VuKQogewogCXNpemVfdCBwYWNrZXRfc2l6ZTsKQEAgLTIwMiw2ICsyNDQsNyBAQCBpbnQg aW52X2ljbTQyNjAwX2J1ZmZlcl91cGRhdGVfd2F0ZXJtYXJrKHN0cnVjdCBpbnZfaWNtNDI2MDBf c3RhdGUgKnN0KQogCXVuc2lnbmVkIGludCB3bV9neXJvLCB3bV9hY2NlbCwgd2F0ZXJtYXJrOwog CXUzMiBwZXJpb2RfZ3lybywgcGVyaW9kX2FjY2VsOwogCXUzMiBsYXRlbmN5X2d5cm8sIGxhdGVu Y3lfYWNjZWwsIGxhdGVuY3k7CisJdTMyIGZpZm9fcmVnLCBpbnRfcmVnOwogCWJvb2wgcmVzdG9y ZTsKIAlfX2xlMTYgcmF3X3dtOwogCWludCByZXQ7CkBAIC0yNDksOCArMjkyLDE5IEBAIGludCBp bnZfaWNtNDI2MDBfYnVmZmVyX3VwZGF0ZV93YXRlcm1hcmsoc3RydWN0IGludl9pY200MjYwMF9z dGF0ZSAqc3QpCiAJLyogY29tcHV0ZSB3YXRlcm1hcmsgdmFsdWUgaW4gYnl0ZXMgKi8KIAl3bV9z aXplID0gd2F0ZXJtYXJrICogcGFja2V0X3NpemU7CiAKKwlzd2l0Y2ggKHN0LT5jaGlwKSB7CisJ Y2FzZSBJTlZfQ0hJUF9JQ000MjYwNzoKKwljYXNlIElOVl9DSElQX0lDTTQyNjA3UDoKKwkJZmlm b19yZWcgPSBJTlZfSUNNNDI2MDdfUkVHX0ZJRk9fQ09ORklHMjsKKwkJaW50X3JlZyA9IElOVl9J Q000MjYwN19SRUdfSU5UX1NPVVJDRTA7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWZpZm9fcmVn ID0gSU5WX0lDTTQyNjAwX1JFR19GSUZPX1dBVEVSTUFSSzsKKwkJaW50X3JlZyA9IElOVl9JQ000 MjYwMF9SRUdfSU5UX1NPVVJDRTA7CisJCWJyZWFrOworCX0KIAkvKiBjaGFuZ2luZyBGSUZPIHdh dGVybWFyayByZXF1aXJlcyB0byB0dXJuIG9mZiB3YXRlcm1hcmsgaW50ZXJydXB0ICovCi0JcmV0 ID0gcmVnbWFwX3VwZGF0ZV9iaXRzX2NoZWNrKHN0LT5tYXAsIElOVl9JQ000MjYwMF9SRUdfSU5U X1NPVVJDRTAsCisJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzX2NoZWNrKHN0LT5tYXAsIGludF9y ZWcsCiAJCQkJICAgICAgIElOVl9JQ000MjYwMF9JTlRfU09VUkNFMF9GSUZPX1RIU19JTlQxX0VO LAogCQkJCSAgICAgICAwLCAmcmVzdG9yZSk7CiAJaWYgKHJldCkKQEAgLTI1OCwxNCArMzEyLDE0 IEBAIGludCBpbnZfaWNtNDI2MDBfYnVmZmVyX3VwZGF0ZV93YXRlcm1hcmsoc3RydWN0IGludl9p Y200MjYwMF9zdGF0ZSAqc3QpCiAKIAlyYXdfd20gPSBJTlZfSUNNNDI2MDBfRklGT19XQVRFUk1B UktfVkFMKHdtX3NpemUpOwogCW1lbWNweShzdC0+YnVmZmVyLCAmcmF3X3dtLCBzaXplb2YocmF3 X3dtKSk7Ci0JcmV0ID0gcmVnbWFwX2J1bGtfd3JpdGUoc3QtPm1hcCwgSU5WX0lDTTQyNjAwX1JF R19GSUZPX1dBVEVSTUFSSywKKwlyZXQgPSByZWdtYXBfYnVsa193cml0ZShzdC0+bWFwLCBmaWZv X3JlZywKIAkJCQlzdC0+YnVmZmVyLCBzaXplb2YocmF3X3dtKSk7CiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAogCS8qIHJlc3RvcmUgd2F0ZXJtYXJrIGludGVycnVwdCAqLwogCWlmIChyZXN0 b3JlKSB7Ci0JCXJldCA9IHJlZ21hcF9zZXRfYml0cyhzdC0+bWFwLCBJTlZfSUNNNDI2MDBfUkVH X0lOVF9TT1VSQ0UwLAorCQlyZXQgPSByZWdtYXBfc2V0X2JpdHMoc3QtPm1hcCwgaW50X3JlZywK IAkJCQkgICAgICBJTlZfSUNNNDI2MDBfSU5UX1NPVVJDRTBfRklGT19USFNfSU5UMV9FTik7CiAJ CWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwpAQCAtMzMzLDYgKzM4Nyw0NyBAQCBzdGF0aWMgaW50 IGludl9pY200MjYwMF9idWZmZXJfcG9zdGVuYWJsZShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGludl9pY200MjYwN19idWZmZXJfcG9zdGVu YWJsZShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQoreworCXN0cnVjdCBpbnZfaWNtNDI2MDBf c3RhdGUgKnN0ID0gaWlvX2RldmljZV9nZXRfZHJ2ZGF0YShpbmRpb19kZXYpOworCWludCByZXQ7 CisKKwlndWFyZChtdXRleCkoJnN0LT5sb2NrKTsKKworCS8qIGV4aXQgaWYgRklGTyBpcyBhbHJl YWR5IG9uICovCisJaWYgKHN0LT5maWZvLm9uKSB7CisJCXN0LT5maWZvLm9uKys7CisJCXJldHVy biAwOworCX0KKworCS8qIHNldCBGSUZPIHRocmVzaG9sZCBpbnRlcnJ1cHQgKi8KKwlyZXQgPSBy ZWdtYXBfc2V0X2JpdHMoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19JTlRfU09VUkNFMCwKKwkJ CSAgICAgIElOVl9JQ000MjYwN19JTlRfU09VUkNFMF9GSUZPX1RIU19JTlQxX0VOKTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogZmx1c2ggRklGTyBkYXRhICovCisJcmV0ID0gcmVn bWFwX3dyaXRlKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfU0lHTkFMX1BBVEhfUkVTRVQsCisJ CQkgICBJTlZfSUNNNDI2MDdfU0lHTkFMX1BBVEhfUkVTRVRfRklGT19GTFVTSCk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKworCS8qIHNldCBGSUZPIGluIHN0cmVhbWluZyBtb2RlICovCisJ cmV0ID0gcmVnbWFwX3dyaXRlKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfRklGT19DT05GSUcx LAorCQkJICAgSU5WX0lDTTQyNjA3X0ZJRk9fQ09ORklHMV9NT0RFKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCisJLyogd29ya2Fyb3VuZDogZmlyc3QgcmVhZCBvZiBGSUZPIGNvdW50IGFm dGVyIHJlc2V0IGlzIGFsd2F5cyAwICovCisJcmV0ID0gcmVnbWFwX2J1bGtfcmVhZChzdC0+bWFw LCBJTlZfSUNNNDI2MDdfUkVHX0ZJRk9fQ09VTlRILCBzdC0+YnVmZmVyLCAyKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJc3QtPmZpZm8ub24rKzsKKworCXJldHVybiAwOworfQorCiBz dGF0aWMgaW50IGludl9pY200MjYwMF9idWZmZXJfcHJlZGlzYWJsZShzdHJ1Y3QgaWlvX2RldiAq aW5kaW9fZGV2KQogewogCXN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0ID0gaWlvX2Rldmlj ZV9nZXRfZHJ2ZGF0YShpbmRpb19kZXYpOwpAQCAtMzY4LDYgKzQ2Myw0MSBAQCBzdGF0aWMgaW50 IGludl9pY200MjYwMF9idWZmZXJfcHJlZGlzYWJsZShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGludl9pY200MjYwN19idWZmZXJfcHJlZGlz YWJsZShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQoreworCXN0cnVjdCBpbnZfaWNtNDI2MDBf c3RhdGUgKnN0ID0gaWlvX2RldmljZV9nZXRfZHJ2ZGF0YShpbmRpb19kZXYpOworCWludCByZXQ7 CisKKwlndWFyZChtdXRleCkoJnN0LT5sb2NrKTsKKworCWlmIChzdC0+Zmlmby5vbiA+IDEpIHsK KwkJc3QtPmZpZm8ub24tLTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogc2V0IEZJRk8gaW4gYnlw YXNzIG1vZGUgKi8KKwlyZXQgPSByZWdtYXBfd3JpdGUoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JF R19GSUZPX0NPTkZJRzEsCisJCQkgICBJTlZfSUNNNDI2MDdfRklGT19DT05GSUcxX0JZUEFTUyk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIGZsdXNoIEZJRk8gZGF0YSAqLworCXJl dCA9IHJlZ21hcF93cml0ZShzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVHX1NJR05BTF9QQVRIX1JF U0VULAorCQkJICAgSU5WX0lDTTQyNjA3X1NJR05BTF9QQVRIX1JFU0VUX0ZJRk9fRkxVU0gpOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBkaXNhYmxlIEZJRk8gdGhyZXNob2xkIGlu dGVycnVwdCAqLworCXJldCA9IHJlZ21hcF9jbGVhcl9iaXRzKHN0LT5tYXAsIElOVl9JQ000MjYw N19SRUdfSU5UX1NPVVJDRTAsCisJCQkJSU5WX0lDTTQyNjA3X0lOVF9TT1VSQ0UwX0ZJRk9fVEhT X0lOVDFfRU4pOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlzdC0+Zmlmby5vbi0tOwor CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2J1ZmZlcl9wb3N0ZGlz YWJsZShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQogewogCXN0cnVjdCBpbnZfaWNtNDI2MDBf c3RhdGUgKnN0ID0gaWlvX2RldmljZV9nZXRfZHJ2ZGF0YShpbmRpb19kZXYpOwpAQCAtNDMwLDYg KzU2MCw2NiBAQCBzdGF0aWMgaW50IGludl9pY200MjYwMF9idWZmZXJfcG9zdGRpc2FibGUoc3Ry dWN0IGlpb19kZXYgKmluZGlvX2RldikKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGlu dl9pY200MjYwN19idWZmZXJfcG9zdGRpc2FibGUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikK K3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCA9IGlpb19kZXZpY2VfZ2V0X2RydmRh dGEoaW5kaW9fZGV2KTsKKwlzdHJ1Y3QgaW52X2ljbTQyNjAwX3NlbnNvcl9zdGF0ZSAqc2Vuc29y X3N0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKKwlzdHJ1Y3QgaW52X3NlbnNvcnNfdGltZXN0YW1w ICp0cyA9ICZzZW5zb3Jfc3QtPnRzOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHJlZ21hcF9nZXRf ZGV2aWNlKHN0LT5tYXApOworCXVuc2lnbmVkIGludCBzZW5zb3I7CisJdW5zaWduZWQgaW50ICp3 YXRlcm1hcms7CisJc3RydWN0IGludl9pY200MjYwMF9zZW5zb3JfY29uZiBjb25mID0gSU5WX0lD TTQyNjAwX1NFTlNPUl9DT05GX0lOSVQ7CisJdW5zaWduZWQgaW50IHNsZWVwX3RlbXAgPSAwOwor CXVuc2lnbmVkIGludCBzbGVlcF9zZW5zb3IgPSAwOworCXVuc2lnbmVkIGludCBzbGVlcDsKKwlp bnQgcmV0OworCisJaWYgKGluZGlvX2RldiA9PSBzdC0+aW5kaW9fZ3lybykgeworCQlzZW5zb3Ig PSBJTlZfSUNNNDI2MDBfU0VOU09SX0dZUk87CisJCXdhdGVybWFyayA9ICZzdC0+Zmlmby53YXRl cm1hcmsuZ3lybzsKKwl9IGVsc2UgaWYgKGluZGlvX2RldiA9PSBzdC0+aW5kaW9fYWNjZWwpIHsK KwkJc2Vuc29yID0gSU5WX0lDTTQyNjAwX1NFTlNPUl9BQ0NFTDsKKwkJd2F0ZXJtYXJrID0gJnN0 LT5maWZvLndhdGVybWFyay5hY2NlbDsKKwl9IGVsc2UgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisKKwlndWFyZChtdXRleCkoJnN0LT5sb2NrKTsKKworCWludl9zZW5zb3JzX3RpbWVzdGFtcF9h cHBseV9vZHIodHMsIDAsIDAsIDApOworCisJcmV0ID0gaW52X2ljbTQyNjA3X2J1ZmZlcl9zZXRf Zmlmb19lbihzdCwgc3QtPmZpZm8uZW4gJiB+c2Vuc29yKTsKKwlpZiAocmV0KQorCQlnb3RvIG91 dF91bmxvY2s7CisKKwkqd2F0ZXJtYXJrID0gMDsKKwlyZXQgPSBpbnZfaWNtNDI2MDBfYnVmZmVy X3VwZGF0ZV93YXRlcm1hcmsoc3QpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X3VubG9jazsKKwor CWNvbmYubW9kZSA9IElOVl9JQ000MjYwMF9TRU5TT1JfTU9ERV9PRkY7CisJaWYgKHNlbnNvciA9 PSBJTlZfSUNNNDI2MDBfU0VOU09SX0dZUk8pCisJCXJldCA9IGludl9pY200MjYwN19zZXRfZ3ly b19jb25mKHN0LCAmY29uZiwgJnNsZWVwX3NlbnNvcik7CisJZWxzZSBpZiAoIXN0LT5hcGV4Lm9u KQorCQlyZXQgPSBpbnZfaWNtNDI2MDdfc2V0X2FjY2VsX2NvbmYoc3QsICZjb25mLCAmc2xlZXBf c2Vuc29yKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF91bmxvY2s7CisKKwkvKiBpZiBGSUZPIGlz IG9mZiwgdHVybiB0ZW1wZXJhdHVyZSBvZmYgKi8KKwlpZiAoIXN0LT5maWZvLm9uKQorCQlyZXQg PSBpbnZfaWNtNDI2MDdfc2V0X3RlbXBfY29uZihzdCwgZmFsc2UsICZzbGVlcF90ZW1wKTsKKwor b3V0X3VubG9jazoKKwkvKiBzbGVlcCBtYXhpbXVtIHJlcXVpcmVkIHRpbWUgKi8KKwlzbGVlcCA9 IG1heChzbGVlcF9zZW5zb3IsIHNsZWVwX3RlbXApOworCWlmIChzbGVlcCkKKwkJbXNsZWVwKHNs ZWVwKTsKKworCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGRldik7CisKKwlyZXR1cm4gcmV0 OworfQorCiBjb25zdCBzdHJ1Y3QgaWlvX2J1ZmZlcl9zZXR1cF9vcHMgaW52X2ljbTQyNjAwX2J1 ZmZlcl9vcHMgPSB7CiAJLnByZWVuYWJsZSA9IGludl9pY200MjYwMF9idWZmZXJfcHJlZW5hYmxl LAogCS5wb3N0ZW5hYmxlID0gaW52X2ljbTQyNjAwX2J1ZmZlcl9wb3N0ZW5hYmxlLApAQCAtNDM3 LDYgKzYyNywxMyBAQCBjb25zdCBzdHJ1Y3QgaWlvX2J1ZmZlcl9zZXR1cF9vcHMgaW52X2ljbTQy NjAwX2J1ZmZlcl9vcHMgPSB7CiAJLnBvc3RkaXNhYmxlID0gaW52X2ljbTQyNjAwX2J1ZmZlcl9w b3N0ZGlzYWJsZSwKIH07CiAKK2NvbnN0IHN0cnVjdCBpaW9fYnVmZmVyX3NldHVwX29wcyBpbnZf aWNtNDI2MDdfYnVmZmVyX29wcyA9IHsKKwkucHJlZW5hYmxlID0gaW52X2ljbTQyNjAwX2J1ZmZl cl9wcmVlbmFibGUsCisJLnBvc3RlbmFibGUgPSBpbnZfaWNtNDI2MDdfYnVmZmVyX3Bvc3RlbmFi bGUsCisJLnByZWRpc2FibGUgPSBpbnZfaWNtNDI2MDdfYnVmZmVyX3ByZWRpc2FibGUsCisJLnBv c3RkaXNhYmxlID0gaW52X2ljbTQyNjA3X2J1ZmZlcl9wb3N0ZGlzYWJsZSwKK307CisKIGludCBp bnZfaWNtNDI2MDBfYnVmZmVyX2ZpZm9fcmVhZChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpz dCwKIAkJCQkgIHVuc2lnbmVkIGludCBtYXgpCiB7CkBAIC00NDcsNiArNjQ0LDcgQEAgaW50IGlu dl9pY200MjYwMF9idWZmZXJfZmlmb19yZWFkKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0 LAogCWNvbnN0IHM4ICp0ZW1wOwogCXVuc2lnbmVkIGludCBvZHI7CiAJaW50IHJldDsKKwl1MzIg Zmlmb19jbnRfcmVnLCBmaWZvX2RhdGFfcmVnOwogCiAJLyogcmVzZXQgYWxsIHNhbXBsZXMgY291 bnRlcnMgKi8KIAlzdC0+Zmlmby5jb3VudCA9IDA7CkBAIC00NjAsOSArNjU4LDIxIEBAIGludCBp bnZfaWNtNDI2MDBfYnVmZmVyX2ZpZm9fcmVhZChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpz dCwKIAllbHNlCiAJCW1heF9jb3VudCA9IG1heCAqIGludl9pY200MjYwMF9nZXRfcGFja2V0X3Np emUoc3QtPmZpZm8uZW4pOwogCisKKwlzd2l0Y2ggKHN0LT5jaGlwKSB7CisJY2FzZSBJTlZfQ0hJ UF9JQ000MjYwNzoKKwljYXNlIElOVl9DSElQX0lDTTQyNjA3UDoKKwkJZmlmb19jbnRfcmVnID0g SU5WX0lDTTQyNjA3X1JFR19GSUZPX0NPVU5USDsKKwkJZmlmb19kYXRhX3JlZyA9IElOVl9JQ000 MjYwN19SRUdfRklGT19EQVRBOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlmaWZvX2NudF9yZWcg PSBJTlZfSUNNNDI2MDBfUkVHX0ZJRk9fQ09VTlQ7CisJCWZpZm9fZGF0YV9yZWcgPSBJTlZfSUNN NDI2MDBfUkVHX0ZJRk9fREFUQTsKKwkJYnJlYWs7CisJfQogCS8qIHJlYWQgRklGTyBjb3VudCB2 YWx1ZSAqLwogCXJhd19maWZvX2NvdW50ID0gKF9fYmUxNiAqKXN0LT5idWZmZXI7Ci0JcmV0ID0g cmVnbWFwX2J1bGtfcmVhZChzdC0+bWFwLCBJTlZfSUNNNDI2MDBfUkVHX0ZJRk9fQ09VTlQsCisJ cmV0ID0gcmVnbWFwX2J1bGtfcmVhZChzdC0+bWFwLCBmaWZvX2NudF9yZWcsCiAJCQkgICAgICAg cmF3X2ZpZm9fY291bnQsIHNpemVvZigqcmF3X2ZpZm9fY291bnQpKTsKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwpAQCAtNDc1LDcgKzY4NSw3IEBAIGludCBpbnZfaWNtNDI2MDBfYnVmZmVyX2Zp Zm9fcmVhZChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKIAkJc3QtPmZpZm8uY291bnQg PSBtYXhfY291bnQ7CiAKIAkvKiByZWFkIGFsbCBGSUZPIGRhdGEgaW4gaW50ZXJuYWwgYnVmZmVy ICovCi0JcmV0ID0gcmVnbWFwX25vaW5jX3JlYWQoc3QtPm1hcCwgSU5WX0lDTTQyNjAwX1JFR19G SUZPX0RBVEEsCisJcmV0ID0gcmVnbWFwX25vaW5jX3JlYWQoc3QtPm1hcCwgZmlmb19kYXRhX3Jl ZywKIAkJCQlzdC0+Zmlmby5kYXRhLCBzdC0+Zmlmby5jb3VudCk7CiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKQEAgLTU5NiwzICs4MDYsMjMgQEAgaW50IGludl9pY200MjYwMF9idWZmZXJfaW5p dChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCkKIAlyZXR1cm4gcmVnbWFwX3VwZGF0ZV9i aXRzKHN0LT5tYXAsIElOVl9JQ000MjYwMF9SRUdfRklGT19DT05GSUcxLAogCQkJCSAgR0VOTUFT Syg2LCA1KSB8IEdFTk1BU0soMywgMCksIHZhbCk7CiB9CisKK2ludCBpbnZfaWNtNDI2MDdfYnVm ZmVyX2luaXQoc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QpCit7CisJdW5zaWduZWQgaW50 IHZhbDsKKwlpbnQgcmV0OworCisJc3QtPmZpZm8ud2F0ZXJtYXJrLmVmZl9neXJvID0gMTsKKwlz dC0+Zmlmby53YXRlcm1hcmsuZWZmX2FjY2VsID0gMTsKKworCS8qIENvbmZpZ3VyZSBGSUZPX0NP VU5UIGZvcm1hdCBpbiBieXRlcyBhbmQgYmlnIGVuZGlhbiAqLworCXZhbCA9IElOVl9JQ000MjYw N19JTlRGX0NPTkZJRzBfRklGT19DT1VOVF9FTkRJQU47CisJcmV0ID0gcmVnbWFwX3VwZGF0ZV9i aXRzKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfSU5URl9DT05GSUcwLAorCQkJCSB2YWwsIHZh bCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIEluaXRpYWxpemUgRklGTyBpbiBi eXBhc3MgbW9kZSAqLworCXJldHVybiByZWdtYXBfd3JpdGUoc3QtPm1hcCwgSU5WX0lDTTQyNjA3 X1JFR19GSUZPX0NPTkZJRzEsCisJCQkgICAgSU5WX0lDTTQyNjA3X0ZJRk9fQ09ORklHMV9CWVBB U1MpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNt NDI2MDBfYnVmZmVyLmggYi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYw MF9idWZmZXIuaAppbmRleCBmZmNhNGRhMWUyNDkuLjkwMGVlMTJmZGI5ZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfYnVmZmVyLmgKKysrIGIv ZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfYnVmZmVyLmgKQEAgLTc5 LDEzICs3OSwxOCBAQCBzc2l6ZV90IGludl9pY200MjYwMF9maWZvX2RlY29kZV9wYWNrZXQoY29u c3Qgdm9pZCAqcGFja2V0LCBjb25zdCB2b2lkICoqYWNjZWwsCiAJCQkJCWNvbnN0IHZvaWQgKip0 aW1lc3RhbXAsIHVuc2lnbmVkIGludCAqb2RyKTsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBpaW9f YnVmZmVyX3NldHVwX29wcyBpbnZfaWNtNDI2MDBfYnVmZmVyX29wczsKK2V4dGVybiBjb25zdCBz dHJ1Y3QgaWlvX2J1ZmZlcl9zZXR1cF9vcHMgaW52X2ljbTQyNjA3X2J1ZmZlcl9vcHM7CiAKIGlu dCBpbnZfaWNtNDI2MDBfYnVmZmVyX2luaXQoc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3Qp OworaW50IGludl9pY200MjYwN19idWZmZXJfaW5pdChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRl ICpzdCk7CiAKIHZvaWQgaW52X2ljbTQyNjAwX2J1ZmZlcl91cGRhdGVfZmlmb19wZXJpb2Qoc3Ry dWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QpOwordm9pZCBpbnZfaWNtNDI2MDdfYnVmZmVyX3Vw ZGF0ZV9maWZvX3BlcmlvZChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCk7CiAKIGludCBp bnZfaWNtNDI2MDBfYnVmZmVyX3NldF9maWZvX2VuKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUg KnN0LAogCQkJCSAgICB1bnNpZ25lZCBpbnQgZmlmb19lbik7CitpbnQgaW52X2ljbTQyNjA3X2J1 ZmZlcl9zZXRfZmlmb19lbihzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKKwkJCQkgICAg dW5zaWduZWQgaW50IGZpZm9fZW4pOwogCiBpbnQgaW52X2ljbTQyNjAwX2J1ZmZlcl91cGRhdGVf d2F0ZXJtYXJrKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0KTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfY29yZS5jIGIvZHJpdmVy cy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfY29yZS5jCmluZGV4IDI5YzhjMTg3 MWUwNi4uOTQ5ZGJmOWMyY2QzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQy NjAwL2ludl9pY200MjYwMF9jb3JlLmMKKysrIGIvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYw MC9pbnZfaWNtNDI2MDBfY29yZS5jCkBAIC0xMDIsNiArMTAyLDI2IEBAIGNvbnN0IHN0cnVjdCBy ZWdtYXBfY29uZmlnIGludl9pY200MjYwMF9zcGlfcmVnbWFwX2NvbmZpZyA9IHsKIH07CiBFWFBP UlRfU1lNQk9MX05TX0dQTChpbnZfaWNtNDI2MDBfc3BpX3JlZ21hcF9jb25maWcsICJJSU9fSUNN NDI2MDAiKTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfcmFuZ2VfY2ZnIGludl9pY200 MjYwN19yZWdtYXBfcmFuZ2VzW10gPSB7CisJeworCQkubmFtZSA9ICJ1c2VyIGJhbmsiLAorCQku cmFuZ2VfbWluID0gMHgwMDAwLAorCQkucmFuZ2VfbWF4ID0gMHgwMEZGLAorCQkud2luZG93X3N0 YXJ0ID0gMCwKKwkJLndpbmRvd19sZW4gPSAweDAxMDAsCisJfSwKK307CisKK2NvbnN0IHN0cnVj dCByZWdtYXBfY29uZmlnIGludl9pY200MjYwN19yZWdtYXBfY29uZmlnID0geworCS5yZWdfYml0 cyA9IDgsCisJLnZhbF9iaXRzID0gOCwKKwkubWF4X3JlZ2lzdGVyID0gMHgwMEZGLAorCS5yYW5n ZXMgPSBpbnZfaWNtNDI2MDdfcmVnbWFwX3JhbmdlcywKKwkubnVtX3JhbmdlcyA9IEFSUkFZX1NJ WkUoaW52X2ljbTQyNjA3X3JlZ21hcF9yYW5nZXMpLAorCS5jYWNoZV90eXBlID0gUkVHQ0FDSEVf Tk9ORSwKK307CitFWFBPUlRfU1lNQk9MX05TX0dQTChpbnZfaWNtNDI2MDdfcmVnbWFwX2NvbmZp ZywgIklJT19JQ000MjYwMCIpOworCiBzdHJ1Y3QgaW52X2ljbTQyNjAwX2h3IHsKIAl1OCB3aG9h bWk7CiAJY29uc3QgY2hhciAqbmFtZTsKQEAgLTEyNSw2ICsxNDUsMjIgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBpbnZfaWNtNDI2MDBfY29uZiBpbnZfaWNtNDI2MDBfZGVmYXVsdF9jb25mID0gewog CS50ZW1wX2VuID0gZmFsc2UsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGludl9pY200MjYw MF9jb25mIGludl9pY200MjYwN19kZWZhdWx0X2NvbmYgPSB7CisJLmd5cm8gPSB7CisJCS5tb2Rl ID0gSU5WX0lDTTQyNjAwX1NFTlNPUl9NT0RFX09GRiwKKwkJLmZzID0gSU5WX0lDTTQyNjAwX0dZ Uk9fRlNfMTAwMERQUywKKwkJLm9kciA9IElOVl9JQ000MjYwN19PRFJfMTAwSFosCisJCS5maWx0 ZXIgPSBJTlZfSUNNNDI2MDdfRklMVEVSX0JXXzI1SFosCisJfSwKKwkuYWNjZWwgPSB7CisJCS5t b2RlID0gSU5WX0lDTTQyNjAwX1NFTlNPUl9NT0RFX09GRiwKKwkJLmZzID0gSU5WX0lDTTQyNjAw X0FDQ0VMX0ZTXzRHLAorCQkub2RyID0gSU5WX0lDTTQyNjA3X09EUl8xMDBIWiwKKwkJLmZpbHRl ciA9IElOVl9JQ000MjYwN19GSUxURVJfQldfMjVIWiwKKwl9LAorCS50ZW1wX2VuID0gZmFsc2Us Cit9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IGludl9pY200MjYwMF9jb25mIGludl9pY200MjY4 Nl9kZWZhdWx0X2NvbmYgPSB7CiAJLmd5cm8gPSB7CiAJCS5tb2RlID0gSU5WX0lDTTQyNjAwX1NF TlNPUl9NT0RFX09GRiwKQEAgLTE1Nyw2ICsxOTMsMTYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBp bnZfaWNtNDI2MDBfaHcgaW52X2ljbTQyNjAwX2h3W0lOVl9DSElQX05CXSA9IHsKIAkJLm5hbWUg PSAiaWNtNDI2MDUiLAogCQkuY29uZiA9ICZpbnZfaWNtNDI2MDBfZGVmYXVsdF9jb25mLAogCX0s CisJW0lOVl9DSElQX0lDTTQyNjA3XSA9IHsKKwkJLndob2FtaSA9IElOVl9JQ000MjYwN19XSE9B TUksCisJCS5uYW1lID0gImljbTQyNjA3IiwKKwkJLmNvbmYgPSAmaW52X2ljbTQyNjA3X2RlZmF1 bHRfY29uZiwKKwl9LAorCVtJTlZfQ0hJUF9JQ000MjYwN1BdID0geworCQkud2hvYW1pID0gSU5W X0lDTTQyNjA3UF9XSE9BTUksCisJCS5uYW1lID0gImljbTQyNjA3cCIsCisJCS5jb25mID0gJmlu dl9pY200MjYwN19kZWZhdWx0X2NvbmYsCisJfSwKIAlbSU5WX0NISVBfSUNNNDI2ODZdID0gewog CQkud2hvYW1pID0gSU5WX0lDTTQyNjAwX1dIT0FNSV9JQ000MjY4NiwKIAkJLm5hbWUgPSAiaWNt NDI2ODYiLApAQCAtMjI0LDYgKzI3MCwyNiBAQCB1MzIgaW52X2ljbTQyNjAwX29kcl90b19wZXJp b2QoZW51bSBpbnZfaWNtNDI2MDBfb2RyIG9kcikKIAlyZXR1cm4gb2RyX3BlcmlvZHNbb2RyXTsK IH0KIAordTMyIGludl9pY200MjYwN19vZHJfdG9fcGVyaW9kKGVudW0gaW52X2ljbTQyNjA3X29k ciBvZHIpCit7CisJc3RhdGljIHUzMiBvZHJfcGVyaW9kc1tJTlZfSUNNNDI2MDdfT0RSX05CXSA9 IHsKKwkJMCwgMCwgMCwgMCwgMCwgLyogUmVzZXJ2ZWQgdmFsdWVzICovCisJCTYyNTAwMCwgLyog MTYwMEh6ICovCisJCTEyNTAwMDAsIC8qIDgwMEh6ICovCisJCTI1MDAwMDAsIC8qIDQwMEh6ICov CisJCTUwMDAwMDAsIC8qIDIwMEh6ICovCisJCTEwMDAwMDAwLCAvKiAxMDAgSHogKi8KKwkJMjAw MDAwMDAsIC8qIDUwSHogKi8KKwkJNDAwMDAwMDAsIC8qIDI1SHogKi8KKwkJODAwMDAwMDAsIC8q IDEyLjVIeiAqLworCQkxNjAwMDAwMDAsIC8qIDYuMjVIeiAqLworCQkzMjAwMDAwMDAsIC8qIDMu MTI1SHogKi8KKwkJNjQwMDAwMDAwLCAvKiAxLjU2MjVIeiAqLworCX07CisKKwlyZXR1cm4gb2Ry X3BlcmlvZHNbb2RyXTsKK30KKwogc3RhdGljIGludCBpbnZfaWNtNDI2MDBfc2V0X3B3cl9tZ210 MChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKIAkJCQkgICAgICBlbnVtIGludl9pY200 MjYwMF9zZW5zb3JfbW9kZSBneXJvLAogCQkJCSAgICAgIGVudW0gaW52X2ljbTQyNjAwX3NlbnNv cl9tb2RlIGFjY2VsLApAQCAtMjg5LDYgKzM1NSw2MiBAQCBzdGF0aWMgaW50IGludl9pY200MjYw MF9zZXRfcHdyX21nbXQwKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0LAogCXJldHVybiAw OwogfQogCitzdGF0aWMgaW50IGludl9pY200MjYwN19zZXRfcHdyX21nbXQwKHN0cnVjdCBpbnZf aWNtNDI2MDBfc3RhdGUgKnN0LAorCQkJCSAgICAgIGVudW0gaW52X2ljbTQyNjAwX3NlbnNvcl9t b2RlIGd5cm8sCisJCQkJICAgICAgZW51bSBpbnZfaWNtNDI2MDBfc2Vuc29yX21vZGUgYWNjZWws CisJCQkJICAgICAgYm9vbCB0ZW1wLCB1bnNpZ25lZCBpbnQgKnNsZWVwX21zKQoreworCWVudW0g aW52X2ljbTQyNjAwX3NlbnNvcl9tb2RlIG9sZGd5cm8gPSBzdC0+Y29uZi5neXJvLm1vZGU7CisJ ZW51bSBpbnZfaWNtNDI2MDBfc2Vuc29yX21vZGUgb2xkYWNjZWwgPSBzdC0+Y29uZi5hY2NlbC5t b2RlOworCWJvb2wgb2xkdGVtcCA9IHN0LT5jb25mLnRlbXBfZW47CisJdW5zaWduZWQgaW50IHNs ZWVwdmFsOworCXVuc2lnbmVkIGludCB2YWw7CisJaW50IHJldDsKKworCWlmIChneXJvID09IG9s ZGd5cm8gJiYgYWNjZWwgPT0gb2xkYWNjZWwgJiYgdGVtcCA9PSBvbGR0ZW1wKQorCQlyZXR1cm4g MDsKKworCXZhbCA9IElOVl9JQ000MjYwN19QV1JfTUdNVDBfR1lSTyhneXJvKSB8CisJSU5WX0lD TTQyNjA3X1BXUl9NR01UMF9BQ0NFTChhY2NlbCk7CisJaWYgKCF0ZW1wKQorCQl2YWwgfD0gSU5W X0lDTTQyNjA3X1BXUl9NR01UMF9BQ0NFTF9MUF9DTEtfU0VMOworCXJldCA9IHJlZ21hcF93cml0 ZShzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVHX1BXUl9NR01UMCwgdmFsKTsKKwlpZiAocmV0KQor CQlyZXR1cm4gcmV0OworCisJc3QtPmNvbmYuZ3lyby5tb2RlID0gZ3lybzsKKwlzdC0+Y29uZi5h Y2NlbC5tb2RlID0gYWNjZWw7CisJc3QtPmNvbmYudGVtcF9lbiA9IHRlbXA7CisKKwlzbGVlcHZh bCA9IDA7CisJaWYgKHRlbXAgJiYgIW9sZHRlbXApIHsKKwkJaWYgKHNsZWVwdmFsIDwgSU5WX0lD TTQyNjAwX1RFTVBfU1RBUlRVUF9USU1FX01TKQorCQkJc2xlZXB2YWwgPSBJTlZfSUNNNDI2MDBf VEVNUF9TVEFSVFVQX1RJTUVfTVM7CisJfQorCWlmIChhY2NlbCAhPSBvbGRhY2NlbCAmJiBvbGRh Y2NlbCA9PSBJTlZfSUNNNDI2MDBfU0VOU09SX01PREVfT0ZGKSB7CisJCXVzbGVlcF9yYW5nZSgy MDAsIDMwMCk7CisJCWlmIChzbGVlcHZhbCA8IElOVl9JQ000MjYwMF9BQ0NFTF9TVEFSVFVQX1RJ TUVfTVMpCisJCQlzbGVlcHZhbCA9IElOVl9JQ000MjYwMF9BQ0NFTF9TVEFSVFVQX1RJTUVfTVM7 CisJfQorCWlmIChneXJvICE9IG9sZGd5cm8pIHsKKwkJaWYgKG9sZGd5cm8gPT0gSU5WX0lDTTQy NjAwX1NFTlNPUl9NT0RFX09GRikgeworCQkJdXNsZWVwX3JhbmdlKDIwMCwgMzAwKTsKKwkJCWlm IChzbGVlcHZhbCA8IElOVl9JQ000MjYwMF9HWVJPX1NUQVJUVVBfVElNRV9NUykKKwkJCQlzbGVl cHZhbCA9IElOVl9JQ000MjYwMF9HWVJPX1NUQVJUVVBfVElNRV9NUzsKKwkJfSBlbHNlIGlmIChn eXJvID09IElOVl9JQ000MjYwMF9TRU5TT1JfTU9ERV9PRkYpIHsKKwkJCWlmIChzbGVlcHZhbCA8 IElOVl9JQ000MjYwMF9HWVJPX1NUT1BfVElNRV9NUykKKwkJCQlzbGVlcHZhbCA9IElOVl9JQ000 MjYwMF9HWVJPX1NUT1BfVElNRV9NUzsKKwkJfQorCX0KKworCWlmIChzbGVlcF9tcykKKwkJKnNs ZWVwX21zID0gc2xlZXB2YWw7CisJZWxzZSBpZiAoc2xlZXB2YWwpCisJCW1zbGVlcChzbGVlcHZh bCk7CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGludl9pY200MjYwMF9zZXRfYWNjZWxfY29uZihz dHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKIAkJCQlzdHJ1Y3QgaW52X2ljbTQyNjAwX3Nl bnNvcl9jb25mICpjb25mLAogCQkJCXVuc2lnbmVkIGludCAqc2xlZXBfbXMpCkBAIC0zNTAsNiAr NDcyLDUyIEBAIGludCBpbnZfaWNtNDI2MDBfc2V0X2FjY2VsX2NvbmYoc3RydWN0IGludl9pY200 MjYwMF9zdGF0ZSAqc3QsCiAJCQkJCSAgc3QtPmNvbmYudGVtcF9lbiwgc2xlZXBfbXMpOwogfQog CitpbnQgaW52X2ljbTQyNjA3X3NldF9hY2NlbF9jb25mKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3Rh dGUgKnN0LAorCQkJCXN0cnVjdCBpbnZfaWNtNDI2MDBfc2Vuc29yX2NvbmYgKmNvbmYsCisJCQkJ dW5zaWduZWQgaW50ICpzbGVlcF9tcykKK3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjAwX3NlbnNvcl9j b25mICpvbGRjb25mID0gJnN0LT5jb25mLmFjY2VsOworCXVuc2lnbmVkIGludCB2YWw7CisJaW50 IHJldDsKKworCWlmIChjb25mLT5tb2RlIDwgMCkKKwkJY29uZi0+bW9kZSA9IG9sZGNvbmYtPm1v ZGU7CisJaWYgKGNvbmYtPmZzIDwgMCkKKwkJY29uZi0+ZnMgPSBvbGRjb25mLT5mczsKKwlpZiAo Y29uZi0+b2RyIDwgMCkKKwkJY29uZi0+b2RyID0gb2xkY29uZi0+b2RyOworCWlmIChjb25mLT5m aWx0ZXIgPCAwKQorCQljb25mLT5maWx0ZXIgPSBvbGRjb25mLT5maWx0ZXI7CisKKwlpZiAoY29u Zi0+ZnMgIT0gb2xkY29uZi0+ZnMgfHwgY29uZi0+b2RyICE9IG9sZGNvbmYtPm9kcikgeworCQl2 YWwgPSBJTlZfSUNNNDI2MDdfQUNDRUxfQ09ORklHMF9GU19TRUwoY29uZi0+ZnMpIHwKKwkJSU5W X0lDTTQyNjA3X0FDQ0VMX0NPTkZJRzBfT0RSKGNvbmYtPm9kcik7CisJCXJldCA9IHJlZ21hcF93 cml0ZShzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVHX0FDQ0VMX0NPTkZJRzAsIHZhbCk7CisJCWlm IChyZXQpCisJCQlyZXR1cm4gcmV0OworCQlvbGRjb25mLT5mcyA9IGNvbmYtPmZzOworCQlvbGRj b25mLT5vZHIgPSBjb25mLT5vZHI7CisJfQorCisJaWYgKGNvbmYtPmZpbHRlciAhPSBvbGRjb25m LT5maWx0ZXIpIHsKKwkJaWYgKGNvbmYtPm1vZGUgPT0gSU5WX0lDTTQyNjAwX1NFTlNPUl9NT0RF X0xPV19QT1dFUikgeworCQkJdmFsID0gSU5WX0lDTTQyNjA3X0FDQ0VMX0NPTkZJRzFfQVZHKGNv bmYtPmZpbHRlcik7CisJCQlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoc3QtPm1hcCwgSU5WX0lD TTQyNjA3X1JFR19BQ0NFTF9DT05GSUcxLAorCQkJCQkJIElOVl9JQ000MjYwN19BQ0NFTF9DT05G SUcxX0FWR19NQVNLLCB2YWwpOworCQl9IGVsc2UgeworCQkJdmFsID0gSU5WX0lDTTQyNjA3X0FD Q0VMX0NPTkZJRzFfRklMVEVSKGNvbmYtPmZpbHRlcik7CisJCQlyZXQgPSByZWdtYXBfdXBkYXRl X2JpdHMoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19BQ0NFTF9DT05GSUcxLAorCQkJCQkJIElO Vl9JQ000MjYwN19BQ0NFTF9DT05GSUcxX0ZJTFRFUl9NQVNLLCB2YWwpOworCQl9CisJCWlmIChy ZXQpCisJCQlyZXR1cm4gcmV0OworCQlvbGRjb25mLT5maWx0ZXIgPSBjb25mLT5maWx0ZXI7CisJ fQorCisJcmV0dXJuIGludl9pY200MjYwN19zZXRfcHdyX21nbXQwKHN0LCBzdC0+Y29uZi5neXJv Lm1vZGUsIGNvbmYtPm1vZGUsCisJCQkJCSAgc3QtPmNvbmYudGVtcF9lbiwgc2xlZXBfbXMpOwor fQorCiBpbnQgaW52X2ljbTQyNjAwX3NldF9neXJvX2NvbmYoc3RydWN0IGludl9pY200MjYwMF9z dGF0ZSAqc3QsCiAJCQkgICAgICAgc3RydWN0IGludl9pY200MjYwMF9zZW5zb3JfY29uZiAqY29u ZiwKIAkJCSAgICAgICB1bnNpZ25lZCBpbnQgKnNsZWVwX21zKQpAQCAtMzk2LDYgKzU2NCw0NiBA QCBpbnQgaW52X2ljbTQyNjAwX3NldF9neXJvX2NvbmYoc3RydWN0IGludl9pY200MjYwMF9zdGF0 ZSAqc3QsCiAJcmV0dXJuIDA7CiB9CiAKK2ludCBpbnZfaWNtNDI2MDdfc2V0X2d5cm9fY29uZihz dHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKKwkJCSAgICAgICBzdHJ1Y3QgaW52X2ljbTQy NjAwX3NlbnNvcl9jb25mICpjb25mLAorCQkJICAgICAgIHVuc2lnbmVkIGludCAqc2xlZXBfbXMp Cit7CisJc3RydWN0IGludl9pY200MjYwMF9zZW5zb3JfY29uZiAqb2xkY29uZiA9ICZzdC0+Y29u Zi5neXJvOworCXVuc2lnbmVkIGludCB2YWw7CisJaW50IHJldDsKKworCWlmIChjb25mLT5tb2Rl IDwgMCkKKwkJY29uZi0+bW9kZSA9IG9sZGNvbmYtPm1vZGU7CisJaWYgKGNvbmYtPmZzIDwgMCkK KwkJY29uZi0+ZnMgPSBvbGRjb25mLT5mczsKKwlpZiAoY29uZi0+b2RyIDwgMCkKKwkJY29uZi0+ b2RyID0gb2xkY29uZi0+b2RyOworCWlmIChjb25mLT5maWx0ZXIgPCAwKQorCQljb25mLT5maWx0 ZXIgPSBvbGRjb25mLT5maWx0ZXI7CisKKwlpZiAoY29uZi0+ZnMgIT0gb2xkY29uZi0+ZnMgfHwg Y29uZi0+b2RyICE9IG9sZGNvbmYtPm9kcikgeworCQl2YWwgPSBJTlZfSUNNNDI2MDdfR1lST19D T05GSUcwX0ZTX1NFTChjb25mLT5mcykgfAorCQkgICAgICBJTlZfSUNNNDI2MDdfR1lST19DT05G SUcwX09EUihjb25mLT5vZHIpOworCQlyZXQgPSByZWdtYXBfd3JpdGUoc3QtPm1hcCwgSU5WX0lD TTQyNjA3X1JFR19HWVJPX0NPTkZJRzAsIHZhbCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0 OworCQlvbGRjb25mLT5mcyA9IGNvbmYtPmZzOworCQlvbGRjb25mLT5vZHIgPSBjb25mLT5vZHI7 CisJfQorCisJaWYgKGNvbmYtPmZpbHRlciAhPSBvbGRjb25mLT5maWx0ZXIpIHsKKwkJdmFsID0g SU5WX0lDTTQyNjA3X0dZUk9fQ09ORklHMV9GSUxURVIoY29uZi0+ZmlsdGVyKTsKKwkJcmV0ID0g cmVnbWFwX3VwZGF0ZV9iaXRzKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfR1lST19DT05GSUcx LAorCQkJCQkgSU5WX0lDTTQyNjA3X0dZUk9fQ09ORklHMV9GSUxURVJfTUFTSywgdmFsKTsKKwkJ aWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJCW9sZGNvbmYtPmZpbHRlciA9IGNvbmYtPmZpbHRl cjsKKwl9CisKKwlyZXR1cm4gaW52X2ljbTQyNjA3X3NldF9wd3JfbWdtdDAoc3QsIGNvbmYtPm1v ZGUsIHN0LT5jb25mLmFjY2VsLm1vZGUsCisJCQkJCSAgc3QtPmNvbmYudGVtcF9lbiwgc2xlZXBf bXMpOworfQorCiBpbnQgaW52X2ljbTQyNjAwX3NldF90ZW1wX2NvbmYoc3RydWN0IGludl9pY200 MjYwMF9zdGF0ZSAqc3QsIGJvb2wgZW5hYmxlLAogCQkJICAgICAgIHVuc2lnbmVkIGludCAqc2xl ZXBfbXMpCiB7CkBAIC00MDQsNiArNjEyLDIzIEBAIGludCBpbnZfaWNtNDI2MDBfc2V0X3RlbXBf Y29uZihzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwgYm9vbCBlbmFibGUsCiAJCQkJCSAg c2xlZXBfbXMpOwogfQogCitpbnQgaW52X2ljbTQyNjA3X3NldF90ZW1wX2NvbmYoc3RydWN0IGlu dl9pY200MjYwMF9zdGF0ZSAqc3QsIGJvb2wgZW5hYmxlLAorCQkJICAgICAgIHVuc2lnbmVkIGlu dCAqc2xlZXBfbXMpCit7CisJdW5zaWduZWQgaW50IHZhbDsKKwlpbnQgcmV0OworCisJdmFsID0g SU5WX0lDTTQyNjA3X1RFTVBfQ09ORklHMF9GSUxURVIoSU5WX0lDTTQyNjA3X0ZJTFRFUl9CV18z NEhaKTsKKwlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JF R19URU1QX0NPTkZJRzAsCisJCQkJIElOVl9JQ000MjYwN19URU1QX0NPTkZJRzBfRklMVEVSX01B U0ssIHZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiBpbnZfaWNtNDI2 MDdfc2V0X3B3cl9tZ210MChzdCwgc3QtPmNvbmYuZ3lyby5tb2RlLAorCQkJCQkgIHN0LT5jb25m LmFjY2VsLm1vZGUsIGVuYWJsZSwKKwkJCQkJICBzbGVlcF9tcyk7Cit9CisKIGludCBpbnZfaWNt NDI2MDBfZW5hYmxlX3dvbShzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCkKIHsKIAlpbnQg cmV0OwpAQCAtNDIwLDYgKzY0NSwyMyBAQCBpbnQgaW52X2ljbTQyNjAwX2VuYWJsZV93b20oc3Ry dWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QpCiAJCQkgICAgICBJTlZfSUNNNDI2MDBfSU5UX1NP VVJDRTFfV09NX0lOVDFfRU4pOwogfQogCitpbnQgaW52X2ljbTQyNjA3X2VuYWJsZV93b20oc3Ry dWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QpCit7CisJaW50IHJldDsKKworCS8qIGVuYWJsZSBX b00gaGFyZHdhcmUgKi8KKwlyZXQgPSByZWdtYXBfd3JpdGUoc3QtPm1hcCwgSU5WX0lDTTQyNjA3 X1JFR19XT01fQ09ORklHLAorCQkJICAgSU5WX0lDTTQyNjA3X1dPTV9DT05GSUdfSU5UX0RVUigx KSB8CisJCQkgICBJTlZfSUNNNDI2MDdfV09NX0NPTkZJR19NT0RFIHwKKwkJCSAgIElOVl9JQ000 MjYwN19XT01fQ09ORklHX0VOKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogZW5h YmxlIFdvTSBpbnRlcnJ1cHQgKi8KKwlyZXR1cm4gcmVnbWFwX3NldF9iaXRzKHN0LT5tYXAsIElO Vl9JQ000MjYwN19SRUdfSU5UX1NPVVJDRTEsCisJCQkgICAgICAgSU5WX0lDTTQyNjA3X0lOVF9T T1VSQ0UxX1dPTV9JTlQxX0VOKTsKK30KKwogaW50IGludl9pY200MjYwMF9kaXNhYmxlX3dvbShz dHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCkKIHsKIAlpbnQgcmV0OwpAQCAtNDM1LDYgKzY3 NywyMSBAQCBpbnQgaW52X2ljbTQyNjAwX2Rpc2FibGVfd29tKHN0cnVjdCBpbnZfaWNtNDI2MDBf c3RhdGUgKnN0KQogCQkJICAgIElOVl9JQ000MjYwMF9TTURfQ09ORklHX1NNRF9NT0RFX09GRik7 CiB9CiAKK2ludCBpbnZfaWNtNDI2MDdfZGlzYWJsZV93b20oc3RydWN0IGludl9pY200MjYwMF9z dGF0ZSAqc3QpCit7CisJaW50IHJldDsKKworCS8qIGRpc2FibGUgV29NIGludGVycnVwdCAqLwor CXJldCA9IHJlZ21hcF9jbGVhcl9iaXRzKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfSU5UX1NP VVJDRTEsCisJCQkJSU5WX0lDTTQyNjA3X0lOVF9TT1VSQ0UxX1dPTV9JTlQxX0VOKTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogZGlzYWJsZSBXb00gaGFyZHdhcmUgKi8KKwlyZXR1 cm4gcmVnbWFwX2NsZWFyX2JpdHMoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19XT01fQ09ORklH LAorCQkJCSBJTlZfSUNNNDI2MDdfV09NX0NPTkZJR19FTik7Cit9CisKIGludCBpbnZfaWNtNDI2 MDBfZGVidWdmc19yZWcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwgdW5zaWduZWQgaW50IHJl ZywKIAkJCSAgICAgdW5zaWduZWQgaW50IHdyaXRldmFsLCB1bnNpZ25lZCBpbnQgKnJlYWR2YWwp CiB7CkBAIC00OTAsNiArNzQ3LDUzIEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX3NldF9jb25m KHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0LAogCXJldHVybiAwOwogfQogCitzdGF0aWMg aW50IGludl9pY200MjYwN19zZXRfY29uZihzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwK KwkJCQkgY29uc3Qgc3RydWN0IGludl9pY200MjYwMF9jb25mICpjb25mKQoreworCXVuc2lnbmVk IGludCB2YWw7CisJaW50IHJldDsKKworCXZhbCA9IElOVl9JQ000MjYwN19QV1JfTUdNVDBfR1lS Tyhjb25mLT5neXJvLm1vZGUpIHwKKwlJTlZfSUNNNDI2MDdfUFdSX01HTVQwX0FDQ0VMKGNvbmYt PmFjY2VsLm1vZGUpOworCS8qCisJICogTm8gdGVtcGVyYXR1cmUgZW5hYmxlIHJlZyBpbiBkYXRh c2hlZXQsIGJ1dCBCU1AgZHJpdmVyCisJICogc2VsZWN0ZWQgUkMgb3NjaWxsYXRvciBjbG9jayBp biBMUCBtb2RlIHdoZW4gdGVtcGVyYXR1cmUKKwkgKiB3YXMgZGlzYWJsZWQuCisJICovCisJaWYg KCFjb25mLT50ZW1wX2VuKQorCQl2YWwgfD0gSU5WX0lDTTQyNjA3X1BXUl9NR01UMF9BQ0NFTF9M UF9DTEtfU0VMOworCXJldCA9IHJlZ21hcF93cml0ZShzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVH X1BXUl9NR01UMCwgdmFsKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJdmFsID0gSU5W X0lDTTQyNjA3X0dZUk9fQ09ORklHMF9GU19TRUwoY29uZi0+Z3lyby5mcykgfAorCUlOVl9JQ000 MjYwN19HWVJPX0NPTkZJRzBfT0RSKGNvbmYtPmd5cm8ub2RyKTsKKwlyZXQgPSByZWdtYXBfd3Jp dGUoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19HWVJPX0NPTkZJRzAsIHZhbCk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKworCXZhbCA9IElOVl9JQ000MjYwN19BQ0NFTF9DT05GSUcwX0ZT X1NFTChjb25mLT5hY2NlbC5mcykgfAorCUlOVl9JQ000MjYwN19BQ0NFTF9DT05GSUcwX09EUihj b25mLT5hY2NlbC5vZHIpOworCXJldCA9IHJlZ21hcF93cml0ZShzdC0+bWFwLCBJTlZfSUNNNDI2 MDdfUkVHX0FDQ0VMX0NPTkZJRzAsIHZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CXZhbCA9IElOVl9JQ000MjYwN19HWVJPX0NPTkZJRzFfRklMVEVSKGNvbmYtPmd5cm8uZmlsdGVy KTsKKwlyZXQgPSByZWdtYXBfd3JpdGUoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19HWVJPX0NP TkZJRzEsIHZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXZhbCA9IElOVl9JQ000 MjYwN19BQ0NFTF9DT05GSUcxX0ZJTFRFUihjb25mLT5hY2NlbC5maWx0ZXIpOworCXJldCA9IHJl Z21hcF93cml0ZShzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVHX0FDQ0VMX0NPTkZJRzEsIHZhbCk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIHVwZGF0ZSBpbnRlcm5hbCBjb25mICov CisJc3QtPmNvbmYgPSAqY29uZjsKKworCXJldHVybiAwOworfQorCiAvKioKICAqICBpbnZfaWNt NDI2MDBfc2V0dXAoKSAtIGNoZWNrIGFuZCBzZXR1cCBjaGlwCiAgKiAgQHN0Oglkcml2ZXIgaW50 ZXJuYWwgc3RhdGUKQEAgLTU1NSw2ICs4NTksNjQgQEAgc3RhdGljIGludCBpbnZfaWNtNDI2MDBf c2V0dXAoc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QsCiAJcmV0dXJuIGludl9pY200MjYw MF9zZXRfY29uZihzdCwgaHctPmNvbmYpOwogfQogCisvKioKKyAqICBpbnZfaWNtNDI2MDdfc2V0 dXAoKSAtIGNoZWNrIGFuZCBzZXR1cCBjaGlwCisgKiAgQHN0Oglkcml2ZXIgaW50ZXJuYWwgc3Rh dGUKKyAqICBAYnVzX3NldHVwOgljYWxsYmFjayBmb3Igc2V0dGluZyB1cCBidXMgc3BlY2lmaWMg cmVnaXN0ZXJzCisgKgorICogIFJldHVybnMgMCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm9y IGNvZGUgb3RoZXJ3aXNlLgorICovCitzdGF0aWMgaW50IGludl9pY200MjYwN19zZXR1cChzdHJ1 Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwKKwkJCSAgICAgIGludl9pY200MjYwMF9idXNfc2V0 dXAgYnVzX3NldHVwKQoreworCWNvbnN0IHN0cnVjdCBpbnZfaWNtNDI2MDBfaHcgKmh3ID0gJmlu dl9pY200MjYwMF9od1tzdC0+Y2hpcF07CisJY29uc3Qgc3RydWN0IGRldmljZSAqZGV2ID0gcmVn bWFwX2dldF9kZXZpY2Uoc3QtPm1hcCk7CisJdW5zaWduZWQgaW50IHZhbDsKKwlpbnQgcmV0Owor CisJcmV0ID0gcmVnbWFwX3JlYWQoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19XSE9BTUksICZ2 YWwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlpZiAodmFsICE9IGh3LT53aG9hbWkp CisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVOT0RFViwKKwkJCQkgICAgICJpbnZhbGlk IHdob2FtaSAlIzAyeCBleHBlY3RlZCAlIzAyeCAoJXMpXG4iLAorCQkJCSAgICAgdmFsLCBody0+ d2hvYW1pLCBody0+bmFtZSk7CisKKwlzdC0+bmFtZSA9IGh3LT5uYW1lOworCisJcmV0ID0gcmVn bWFwX3dyaXRlKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfU0lHTkFMX1BBVEhfUkVTRVQsCisJ CQkgICBJTlZfSUNNNDI2MDdfU0lHTkFMX1BBVEhfUkVTRVRfU09GVF9SRVNFVCk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKwltc2xlZXAoSU5WX0lDTTQyNjAwX1JFU0VUX1RJTUVfTVMpOwor CisJcmV0ID0gcmVnbWFwX3JlYWQoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19JTlRfU1RBVFVT LCAmdmFsKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCWlmICghKHZhbCAmIElOVl9JQ000 MjYwN19JTlRfU1RBVFVTX1JFU0VUX0RPTkUpKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYs IC1FTk9ERVYsCisJCQkJICAgICAicmVzZXQgZXJyb3IsIHJlc2V0IGRvbmUgYml0IG5vdCBzZXRc biIpOworCisJcmV0ID0gYnVzX3NldHVwKHN0KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfSU5U Rl9DT05GSUcwLAorCQkJCSBJTlZfSUNNNDI2MDdfSU5URl9DT05GSUcwX1NFTlNPUl9EQVRBX0VO RElBTiwKKwkJCQkgSU5WX0lDTTQyNjA3X0lOVEZfQ09ORklHMF9TRU5TT1JfREFUQV9FTkRJQU4p OworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMo c3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19JTlRGX0NPTkZJRzEsCisJCQkJIElOVl9JQ000MjYw N19JTlRGX0NPTkZJRzFfQ0xLU0VMX01BU0ssCisJCQkJIElOVl9JQ000MjYwN19JTlRGX0NPTkZJ RzFfQ0xLU0VMX1BMTCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiBpbnZf aWNtNDI2MDdfc2V0X2NvbmYoc3QsIGh3LT5jb25mKTsKK30KKwogc3RhdGljIGlycXJldHVybl90 IGludl9pY200MjYwMF9pcnFfdGltZXN0YW1wKGludCBpcnEsIHZvaWQgKl9kYXRhKQogewogCXN0 cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0ID0gX2RhdGE7CkBAIC01NzEsNiArOTMzLDE5IEBA IHN0YXRpYyBpcnFyZXR1cm5fdCBpbnZfaWNtNDI2MDBfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqX2RhdGEpCiAJc3RydWN0IGRldmljZSAqZGV2ID0gcmVnbWFwX2dldF9kZXZpY2Uoc3QtPm1h cCk7CiAJdW5zaWduZWQgaW50IHN0YXR1czsKIAlpbnQgcmV0OworCXUzMiBpbnRfc3RzX3JlZywg aW50X3N0czJfcmVnOworCisJc3dpdGNoIChzdC0+Y2hpcCkgeworCWNhc2UgSU5WX0NISVBfSUNN NDI2MDc6CisJY2FzZSBJTlZfQ0hJUF9JQ000MjYwN1A6CisJCWludF9zdHNfcmVnID0gSU5WX0lD TTQyNjA3X1JFR19JTlRfU1RBVFVTOworCQlpbnRfc3RzMl9yZWcgPSBJTlZfSUNNNDI2MDdfUkVH X0lOVF9TVEFUVVMyOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpbnRfc3RzX3JlZyA9IElOVl9J Q000MjYwMF9SRUdfSU5UX1NUQVRVUzsKKwkJaW50X3N0czJfcmVnID0gSU5WX0lDTTQyNjAwX1JF R19JTlRfU1RBVFVTMjsKKwkJYnJlYWs7CisJfQogCiAJbXV0ZXhfbG9jaygmc3QtPmxvY2spOwog CkBAIC01NzgsNyArOTUzLDcgQEAgc3RhdGljIGlycXJldHVybl90IGludl9pY200MjYwMF9pcnFf aGFuZGxlcihpbnQgaXJxLCB2b2lkICpfZGF0YSkKIAkJdW5zaWduZWQgaW50IHN0YXR1czIsIHN0 YXR1czM7CiAKIAkJLyogcmVhZCBJTlRfU1RBVFVTMiBhbmQgSU5UX1NUQVRVUzMgaW4gMSBvcGVy YXRpb24gKi8KLQkJcmV0ID0gcmVnbWFwX2J1bGtfcmVhZChzdC0+bWFwLCBJTlZfSUNNNDI2MDBf UkVHX0lOVF9TVEFUVVMyLCBzdC0+YnVmZmVyLCAyKTsKKwkJcmV0ID0gcmVnbWFwX2J1bGtfcmVh ZChzdC0+bWFwLCBpbnRfc3RzMl9yZWcsIHN0LT5idWZmZXIsIDIpOwogCQlpZiAocmV0KQogCQkJ Z290byBvdXRfdW5sb2NrOwogCQlzdGF0dXMyID0gc3QtPmJ1ZmZlclswXTsKQEAgLTU4Nyw3ICs5 NjIsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaW52X2ljbTQyNjAwX2lycV9oYW5kbGVyKGludCBp cnEsIHZvaWQgKl9kYXRhKQogCQkJCQkJIHN0LT50aW1lc3RhbXAuYWNjZWwpOwogCX0KIAotCXJl dCA9IHJlZ21hcF9yZWFkKHN0LT5tYXAsIElOVl9JQ000MjYwMF9SRUdfSU5UX1NUQVRVUywgJnN0 YXR1cyk7CisJcmV0ID0gcmVnbWFwX3JlYWQoc3QtPm1hcCwgaW50X3N0c19yZWcsICZzdGF0dXMp OwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3VubG9jazsKIApAQCAtNjUxLDEzICsxMDI2LDE5IEBA IHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2lycV9pbml0KHN0cnVjdCBpbnZfaWNtNDI2MDBfc3Rh dGUgKnN0LCBpbnQgaXJxLAogCWlmICghb3Blbl9kcmFpbikKIAkJdmFsIHw9IElOVl9JQ000MjYw MF9JTlRfQ09ORklHX0lOVDFfUFVTSF9QVUxMOwogCi0JcmV0ID0gcmVnbWFwX3dyaXRlKHN0LT5t YXAsIElOVl9JQ000MjYwMF9SRUdfSU5UX0NPTkZJRywgdmFsKTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OwotCi0JLyogRGVhc3NlcnQgYXN5bmMgcmVzZXQgZm9yIHByb3BlciBJTlQgcGluIG9w ZXJhdGlvbiAoY2YgZGF0YXNoZWV0KSAqLwotCXJldCA9IHJlZ21hcF9jbGVhcl9iaXRzKHN0LT5t YXAsIElOVl9JQ000MjYwMF9SRUdfSU5UX0NPTkZJRzEsCi0JCQkJSU5WX0lDTTQyNjAwX0lOVF9D T05GSUcxX0FTWU5DX1JFU0VUKTsKKwlzd2l0Y2ggKHN0LT5jaGlwKSB7CisJY2FzZSBJTlZfQ0hJ UF9JQ000MjYwNzoKKwljYXNlIElOVl9DSElQX0lDTTQyNjA3UDoKKwkJcmV0ID0gcmVnbWFwX3dy aXRlKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfSU5UX0NPTkZJRywgdmFsKTsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJcmV0ID0gcmVnbWFwX3dyaXRlKHN0LT5tYXAsIElOVl9JQ000MjYwMF9S RUdfSU5UX0NPTkZJRywgdmFsKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJCS8qIERl YXNzZXJ0IGFzeW5jIHJlc2V0IGZvciBwcm9wZXIgSU5UIHBpbiBvcGVyYXRpb24gKGNmIGRhdGFz aGVldCkgKi8KKwkJcmV0ID0gcmVnbWFwX2NsZWFyX2JpdHMoc3QtPm1hcCwgSU5WX0lDTTQyNjAw X1JFR19JTlRfQ09ORklHMSwKKwkJCQkJSU5WX0lDTTQyNjAwX0lOVF9DT05GSUcxX0FTWU5DX1JF U0VUKTsKKwl9CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtNzYxLDYgKzExNDIsNTkg QEAgc3RhdGljIGludCBpbnZfaWNtNDI2MDBfaHdfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYp CiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgaW52X2ljbTQyNjA3X2h3X3N1c3BlbmQoc3Ry dWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0ID0gZGV2 X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRldmljZSAqYWNjZWxfZGV2OworCWJvb2wgd2Fr ZXVwOworCWludCBhY2NlbF9jb25mOworCWludCByZXQgPSAwOworCisJZ3VhcmQobXV0ZXgpKCZz dC0+bG9jayk7CisKKwlzdC0+c3VzcGVuZGVkLmd5cm8gPSBzdC0+Y29uZi5neXJvLm1vZGU7CisJ c3QtPnN1c3BlbmRlZC5hY2NlbCA9IHN0LT5jb25mLmFjY2VsLm1vZGU7CisJc3QtPnN1c3BlbmRl ZC50ZW1wID0gc3QtPmNvbmYudGVtcF9lbjsKKwlpZiAocG1fcnVudGltZV9zdXNwZW5kZWQoZGV2 KSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoc3QtPmZpZm8ub24pIHsKKwkJcmV0ID0gcmVnbWFwX3dy aXRlKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfRklGT19DT05GSUcxLAorCQkJCSAgIElOVl9J Q000MjYwN19GSUZPX0NPTkZJRzFfQllQQVNTKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7 CisJfQorCisJLyoga2VlcCBjaGlwIG9uIGFuZCB3YWtlLXVwIGNhcGFibGUgaWYgQVBFWCBhbmQg d2FrZXVwIG9uICovCisJYWNjZWxfZGV2ID0gJnN0LT5pbmRpb19hY2NlbC0+ZGV2OworCXdha2V1 cCA9IHN0LT5hcGV4Lm9uICYmIGRldmljZV9tYXlfd2FrZXVwKGFjY2VsX2Rldik7CisJaWYgKHdh a2V1cCkgeworCQkvKiBrZWVwIGFjY2VsIG9uIGFuZCBzZXR1cCBpcnEgZm9yIHdha2V1cCAqLwor CQlhY2NlbF9jb25mID0gc3QtPmNvbmYuYWNjZWwubW9kZTsKKwkJZW5hYmxlX2lycV93YWtlKHN0 LT5pcnEpOworCQlkaXNhYmxlX2lycShzdC0+aXJxKTsKKwl9IGVsc2UgeworCQkvKiBkaXNhYmxl IEFQRVggZmVhdHVyZXMgYW5kIGFjY2VsIGlmIHdha2V1cCBkaXNhYmxlZCAqLworCQlpZiAoc3Qt PmFwZXgud29tLmVuYWJsZSkgeworCQkJcmV0ID0gaW52X2ljbTQyNjA3X2Rpc2FibGVfd29tKHN0 KTsKKwkJCWlmIChyZXQpCisJCQkJcmV0dXJuIHJldDsKKwkJfQorCQlhY2NlbF9jb25mID0gSU5W X0lDTTQyNjAwX1NFTlNPUl9NT0RFX09GRjsKKwl9CisKKwlyZXQgPSBpbnZfaWNtNDI2MDdfc2V0 X3B3cl9tZ210MChzdCwgSU5WX0lDTTQyNjAwX1NFTlNPUl9NT0RFX09GRiwKKwkJCQkJIElOVl9J Q000MjYwMF9TRU5TT1JfTU9ERV9PRkYsIGZhbHNlLAorCQkJCQkgTlVMTCk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCWlmICghd2FrZXVwKQorCQlyZWd1bGF0b3JfZGlzYWJsZShzdC0+ dmRkaW9fc3VwcGx5KTsKKworCXJldHVybiAwOworfQorCiAvKgogICogU3lzdGVtIHJlc3VtZSBn ZXRzIHRoZSBzeXN0ZW0gYmFjayBvbiBhbmQgcmVzdG9yZXMgdGhlIHNlbnNvcnMgc3RhdGUuCiAg KiBNYW51YWxseSBwdXQgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IGluIHN5c3RlbSBhY3RpdmUg c3RhdGUuCkBAIC04MTcsNiArMTI1MSw1OSBAQCBzdGF0aWMgaW50IGludl9pY200MjYwMF9od19y ZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGlu dl9pY200MjYwN19od19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBpbnZf aWNtNDI2MDBfc3RhdGUgKnN0ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGludl9p Y200MjYwMF9zZW5zb3Jfc3RhdGUgKmd5cm9fc3QgPSBpaW9fcHJpdihzdC0+aW5kaW9fZ3lybyk7 CisJc3RydWN0IGludl9pY200MjYwMF9zZW5zb3Jfc3RhdGUgKmFjY2VsX3N0ID0gaWlvX3ByaXYo c3QtPmluZGlvX2FjY2VsKTsKKwlzdHJ1Y3QgZGV2aWNlICphY2NlbF9kZXY7CisJYm9vbCB3YWtl dXA7CisJaW50IHJldDsKKworCWd1YXJkKG11dGV4KSgmc3QtPmxvY2spOworCisJaWYgKHBtX3J1 bnRpbWVfc3VzcGVuZGVkKGRldikpCisJCXJldHVybiAwOworCisJLyogY2hlY2sgd2FrZXVwIGNh cGFiaWxpdHkgKi8KKwlhY2NlbF9kZXYgPSAmc3QtPmluZGlvX2FjY2VsLT5kZXY7CisJd2FrZXVw ID0gc3QtPmFwZXgub24gJiYgZGV2aWNlX21heV93YWtldXAoYWNjZWxfZGV2KTsKKwkvKiByZXN0 b3JlIGlycSBzdGF0ZSBvciB2ZGRpbyBpZiBjdXQgb2ZmICovCisJaWYgKHdha2V1cCkgeworCQll bmFibGVfaXJxKHN0LT5pcnEpOworCQlkaXNhYmxlX2lycV93YWtlKHN0LT5pcnEpOworCX0gZWxz ZSB7CisJCXJldCA9IGludl9pY200MjYwMF9lbmFibGVfcmVndWxhdG9yX3ZkZGlvKHN0KTsKKwkJ aWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJLyogcmVzdG9yZSBzZW5zb3JzIHN0YXRl ICovCisJcmV0ID0gaW52X2ljbTQyNjA3X3NldF9wd3JfbWdtdDAoc3QsIHN0LT5zdXNwZW5kZWQu Z3lybywKKwkJCQkJIHN0LT5zdXNwZW5kZWQuYWNjZWwsCisJCQkJCSBzdC0+c3VzcGVuZGVkLnRl bXAsIE5VTEwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiByZXN0b3JlIEFQRVgg ZmVhdHVyZXMgaWYgZGlzYWJsZWQgKi8KKwlpZiAoIXdha2V1cCAmJiBzdC0+YXBleC53b20uZW5h YmxlKSB7CisJCXJldCA9IGludl9pY200MjYwN19lbmFibGVfd29tKHN0KTsKKwkJaWYgKHJldCkK KwkJCXJldHVybiByZXQ7CisJfQorCisJaWYgKHN0LT5maWZvLm9uKSB7CisJCWludl9zZW5zb3Jz X3RpbWVzdGFtcF9yZXNldCgmZ3lyb19zdC0+dHMpOworCQlpbnZfc2Vuc29yc190aW1lc3RhbXBf cmVzZXQoJmFjY2VsX3N0LT50cyk7CisJCXJldCA9IHJlZ21hcF93cml0ZShzdC0+bWFwLCBJTlZf SUNNNDI2MDdfUkVHX0ZJRk9fQ09ORklHMSwKKwkJCQkgICBJTlZfSUNNNDI2MDdfRklGT19DT05G SUcxX01PREUpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsK K30KKwogLyogUnVudGltZSBzdXNwZW5kIHdpbGwgdHVybiBvZmYgc2Vuc29ycyB0aGF0IGFyZSBl bmFibGVkIGJ5IGlpbyBkZXZpY2VzLiAqLwogc3RhdGljIGludCBpbnZfaWNtNDI2MDBfaHdfcnVu dGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKQEAgLTgzNyw2ICsxMzI0LDI0IEBA IHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2h3X3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNl ICpkZXYpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgaW52X2ljbTQyNjA3X2h3X3J1bnRp bWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGludl9pY200MjYwMF9z dGF0ZSAqc3QgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgcmV0OworCisJZ3VhcmQobXV0 ZXgpKCZzdC0+bG9jayk7CisKKwlyZXQgPSBpbnZfaWNtNDI2MDdfc2V0X3B3cl9tZ210MChzdCwg SU5WX0lDTTQyNjAwX1NFTlNPUl9NT0RFX09GRiwKKwkJCQkJIElOVl9JQ000MjYwMF9TRU5TT1Jf TU9ERV9PRkYsIGZhbHNlLAorCQkJCQkgTlVMTCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KworCXJlZ3VsYXRvcl9kaXNhYmxlKHN0LT52ZGRpb19zdXBwbHkpOworCisJcmV0dXJuIDA7Cit9 CisKIC8qIFNlbnNvcnMgYXJlIGVuYWJsZWQgYnkgaWlvIGRldmljZXMsIG5vIG5lZWQgdG8gdHVy biB0aGVtIGJhY2sgb24gaGVyZS4gKi8KIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2h3X3J1bnRp bWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKQEAgLTg1OSw2ICsxMzY0LDE3IEBAIHN0 YXRpYyBzdHJ1Y3QgaW52X2ljbTQyNjAwX2Z1bmNzIGludl9pY200MjYwMF9od19mdW5jcyA9IHsK IAkucnVudGltZV9yZXN1bWUgPSAmaW52X2ljbTQyNjAwX2h3X3J1bnRpbWVfcmVzdW1lLAogfTsK IAorc3RhdGljIHN0cnVjdCBpbnZfaWNtNDI2MDBfZnVuY3MgaW52X2ljbTQyNjA3X2h3X2Z1bmNz ID0geworCS5zZXR1cCA9ICZpbnZfaWNtNDI2MDdfc2V0dXAsCisJLmJ1ZmZlcl9pbml0ID0gJmlu dl9pY200MjYwN19idWZmZXJfaW5pdCwKKwkuZ3lyb19pbml0ID0gJmludl9pY200MjYwN19neXJv X2luaXQsCisJLmFjY2VsX2luaXQgPSAmaW52X2ljbTQyNjA3X2FjY2VsX2luaXQsCisJLnN1c3Bl bmQgPSAmaW52X2ljbTQyNjA3X2h3X3N1c3BlbmQsCisJLnJlc3VtZSA9ICZpbnZfaWNtNDI2MDdf aHdfcmVzdW1lLAorCS5ydW50aW1lX3N1c3BlbmQgPSAmaW52X2ljbTQyNjA3X2h3X3J1bnRpbWVf c3VzcGVuZCwKKwkucnVudGltZV9yZXN1bWUgPSAmaW52X2ljbTQyNjAwX2h3X3J1bnRpbWVfcmVz dW1lLAorfTsKKwogaW50IGludl9pY200MjYwMF9jb3JlX3Byb2JlKHN0cnVjdCByZWdtYXAgKnJl Z21hcCwgaW50IGNoaXAsCiAJCQkgICAgaW52X2ljbTQyNjAwX2J1c19zZXR1cCBidXNfc2V0dXAp CiB7CkBAIC05MjUsNyArMTQ0MSwxNSBAQCBpbnQgaW52X2ljbTQyNjAwX2NvcmVfcHJvYmUoc3Ry dWN0IHJlZ21hcCAqcmVnbWFwLCBpbnQgY2hpcCwKIAkJcmV0dXJuIHJldDsKIAogCS8qIHNldHVw IGNoaXAgcmVnaXN0ZXJzIGJhc2VkIG9uIGhhcmR3YXJlICovCi0Jc3QtPmh3X2Z1bmNzID0gJmlu dl9pY200MjYwMF9od19mdW5jczsKKwlzd2l0Y2ggKGNoaXApIHsKKwljYXNlIElOVl9DSElQX0lD TTQyNjA3OgorCWNhc2UgSU5WX0NISVBfSUNNNDI2MDdQOgorCQlzdC0+aHdfZnVuY3MgPSAmaW52 X2ljbTQyNjA3X2h3X2Z1bmNzOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlzdC0+aHdfZnVuY3Mg PSAmaW52X2ljbTQyNjAwX2h3X2Z1bmNzOworCQlicmVhazsKKwl9CiAKIAlyZXQgPSBzdC0+aHdf ZnVuY3MtPnNldHVwKHN0LCBidXNfc2V0dXApOwogCWlmIChyZXQpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9neXJvLmMgYi9kcml2ZXJzL2lp by9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9neXJvLmMKaW5kZXggMzJhYTJlNTJkZjJl Li5lYjU5MGViNGYzOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDAv aW52X2ljbTQyNjAwX2d5cm8uYworKysgYi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2lu dl9pY200MjYwMF9neXJvLmMKQEAgLTQ3LDYgKzQ3LDMxIEBACiAJCS5leHRfaW5mbyA9IF9leHRf aW5mbywJCQkJCVwKIAl9CiAKKyNkZWZpbmUgSU5WX0lDTTQyNjA3X0dZUk9fQ0hBTihfbW9kaWZp ZXIsIF9pbmRleCwgX2V4dF9pbmZvKQkJXAorCXsJCQkJCQkJCVwKKwkJLnR5cGUgPSBJSU9fQU5H TF9WRUwsCQkJCQlcCisJCS5tb2RpZmllZCA9IDEsCQkJCQkJXAorCQkuY2hhbm5lbDIgPSBfbW9k aWZpZXIsCQkJCQlcCisJCS5pbmZvX21hc2tfc2VwYXJhdGUgPQkJCQkJXAorCQkJQklUKElJT19D SEFOX0lORk9fUkFXKSwJCQkJXAorCQkuaW5mb19tYXNrX3NoYXJlZF9ieV90eXBlID0JCQkJXAor CQkJQklUKElJT19DSEFOX0lORk9fU0NBTEUpLAkJCVwKKwkJLmluZm9fbWFza19zaGFyZWRfYnlf dHlwZV9hdmFpbGFibGUgPQkJCVwKKwkJCUJJVChJSU9fQ0hBTl9JTkZPX1NDQUxFKSwJCQlcCisJ CS5pbmZvX21hc2tfc2hhcmVkX2J5X2FsbCA9CQkJCVwKKwkJCUJJVChJSU9fQ0hBTl9JTkZPX1NB TVBfRlJFUSksCQkJXAorCQkuaW5mb19tYXNrX3NoYXJlZF9ieV9hbGxfYXZhaWxhYmxlID0JCQlc CisJCQlCSVQoSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVEpLAkJCVwKKwkJLnNjYW5faW5kZXggPSBf aW5kZXgsCQkJCQlcCisJCS5zY2FuX3R5cGUgPSB7CQkJCQkJXAorCQkJLnNpZ24gPSAncycsCQkJ CQlcCisJCQkucmVhbGJpdHMgPSAxNiwJCQkJCVwKKwkJCS5zdG9yYWdlYml0cyA9IDE2LAkJCQlc CisJCQkuZW5kaWFubmVzcyA9IElJT19CRSwJCQkJXAorCQl9LAkJCQkJCQlcCisJCS5leHRfaW5m byA9IF9leHRfaW5mbywJCQkJCVwKKwl9CisKIGVudW0gaW52X2ljbTQyNjAwX2d5cm9fc2NhbiB7 CiAJSU5WX0lDTTQyNjAwX0dZUk9fU0NBTl9YLAogCUlOVl9JQ000MjYwMF9HWVJPX1NDQU5fWSwK QEAgLTcxLDYgKzk2LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBpbnZf aWNtNDI2MDBfZ3lyb19jaGFubmVsc1tdID0gewogCUlJT19DSEFOX1NPRlRfVElNRVNUQU1QKElO Vl9JQ000MjYwMF9HWVJPX1NDQU5fVElNRVNUQU1QKSwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaWlvX2NoYW5fc3BlYyBpbnZfaWNtNDI2MDdfZ3lyb19jaGFubmVsc1tdID0geworCUlOVl9J Q000MjYwN19HWVJPX0NIQU4oSUlPX01PRF9YLCBJTlZfSUNNNDI2MDBfR1lST19TQ0FOX1gsCisJ CQkgICAgICAgaW52X2ljbTQyNjAwX2d5cm9fZXh0X2luZm9zKSwKKwlJTlZfSUNNNDI2MDdfR1lS T19DSEFOKElJT19NT0RfWSwgSU5WX0lDTTQyNjAwX0dZUk9fU0NBTl9ZLAorCQkJICAgICAgIGlu dl9pY200MjYwMF9neXJvX2V4dF9pbmZvcyksCisJSU5WX0lDTTQyNjA3X0dZUk9fQ0hBTihJSU9f TU9EX1osIElOVl9JQ000MjYwMF9HWVJPX1NDQU5fWiwKKwkJCSAgICAgICBpbnZfaWNtNDI2MDBf Z3lyb19leHRfaW5mb3MpLAorCUlOVl9JQ000MjYwMF9URU1QX0NIQU4oSU5WX0lDTTQyNjAwX0dZ Uk9fU0NBTl9URU1QKSwKKwlJSU9fQ0hBTl9TT0ZUX1RJTUVTVEFNUChJTlZfSUNNNDI2MDBfR1lS T19TQ0FOX1RJTUVTVEFNUCksCit9OworCiAvKgogICogSUlPIGJ1ZmZlciBkYXRhOiBzaXplIG11 c3QgYmUgYSBwb3dlciBvZiAyIGFuZCB0aW1lc3RhbXAgYWxpZ25lZAogICogMTYgYnl0ZXM6IDYg Ynl0ZXMgYW5ndWxhciB2ZWxvY2l0eSwgMiBieXRlcyB0ZW1wZXJhdHVyZSwgOCBieXRlcyB0aW1l c3RhbXAKQEAgLTEzNyw2ICsxNzMsNDcgQEAgc3RhdGljIGludCBpbnZfaWNtNDI2MDBfZ3lyb191 cGRhdGVfc2Nhbl9tb2RlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCiAJcmV0dXJuIHJldDsK IH0KIAorc3RhdGljIGludCBpbnZfaWNtNDI2MDdfZ3lyb191cGRhdGVfc2Nhbl9tb2RlKHN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYsCisJCQkJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNj YW5fbWFzaykKK3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCA9IGlpb19kZXZpY2Vf Z2V0X2RydmRhdGEoaW5kaW9fZGV2KTsKKwlzdHJ1Y3QgaW52X2ljbTQyNjAwX3NlbnNvcl9jb25m IGNvbmYgPSBJTlZfSUNNNDI2MDBfU0VOU09SX0NPTkZfSU5JVDsKKwl1bnNpZ25lZCBpbnQgZmlm b19lbiA9IDA7CisJdW5zaWduZWQgaW50IHNsZWVwX2d5cm8gPSAwOworCXVuc2lnbmVkIGludCBz bGVlcF90ZW1wID0gMDsKKwl1bnNpZ25lZCBpbnQgc2xlZXA7CisJaW50IHJldDsKKworCWd1YXJk KG11dGV4KSgmc3QtPmxvY2spOworCisJaWYgKCpzY2FuX21hc2sgJiBJTlZfSUNNNDI2MDBfU0NB Tl9NQVNLX1RFTVApIHsKKwkJLyogZW5hYmxlIHRlbXAgc2Vuc29yICovCisJCXJldCA9IGludl9p Y200MjYwN19zZXRfdGVtcF9jb25mKHN0LCB0cnVlLCAmc2xlZXBfdGVtcCk7CisJCWlmIChyZXQp CisJCQlnb3RvIG91dF91bmxvY2s7CisJCWZpZm9fZW4gfD0gSU5WX0lDTTQyNjAwX1NFTlNPUl9U RU1QOworCX0KKworCWlmICgqc2Nhbl9tYXNrICYgSU5WX0lDTTQyNjAwX1NDQU5fTUFTS19HWVJP XzNBWElTKSB7CisJCS8qIGVuYWJsZSBneXJvIHNlbnNvciAqLworCQljb25mLm1vZGUgPSBJTlZf SUNNNDI2MDBfU0VOU09SX01PREVfTE9XX05PSVNFOworCQlyZXQgPSBpbnZfaWNtNDI2MDdfc2V0 X2d5cm9fY29uZihzdCwgJmNvbmYsICZzbGVlcF9neXJvKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8g b3V0X3VubG9jazsKKwkJZmlmb19lbiB8PSBJTlZfSUNNNDI2MDBfU0VOU09SX0dZUk87CisJfQor CisJLyogdXBkYXRlIGRhdGEgRklGTyB3cml0ZSAqLworCXJldCA9IGludl9pY200MjYwN19idWZm ZXJfc2V0X2ZpZm9fZW4oc3QsIGZpZm9fZW4gfCBzdC0+Zmlmby5lbik7CisKK291dF91bmxvY2s6 CisJLyogc2xlZXAgbWF4aW11bSByZXF1aXJlZCB0aW1lICovCisJc2xlZXAgPSBtYXgoc2xlZXBf Z3lybywgc2xlZXBfdGVtcCk7CisJaWYgKHNsZWVwKQorCQltc2xlZXAoc2xlZXApOworCXJldHVy biByZXQ7Cit9CisKIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2d5cm9fcmVhZF9zZW5zb3Ioc3Ry dWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QsCiAJCQkJCSBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBj b25zdCAqY2hhbiwKIAkJCQkJIHMxNiAqdmFsKQpAQCAtMTg4LDYgKzI2NSw1OCBAQCBzdGF0aWMg aW50IGludl9pY200MjYwMF9neXJvX3JlYWRfc2Vuc29yKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3Rh dGUgKnN0LAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgaW52X2ljbTQyNjA3X2d5cm9f cmVhZF9zZW5zb3Ioc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QsCisJCQkJCSBzdHJ1Y3Qg aWlvX2NoYW5fc3BlYyBjb25zdCAqY2hhbiwKKwkJCQkJIHMxNiAqdmFsKQoreworCXN0cnVjdCBk ZXZpY2UgKmRldiA9IHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5tYXApOworCXN0cnVjdCBpbnZfaWNt NDI2MDBfc2Vuc29yX2NvbmYgY29uZiA9IElOVl9JQ000MjYwMF9TRU5TT1JfQ09ORl9JTklUOwor CXVuc2lnbmVkIGludCByZWc7CisJX19iZTE2ICpkYXRhOworCWludCByZXQ7CisKKwlpZiAoY2hh bi0+dHlwZSAhPSBJSU9fQU5HTF9WRUwpCisJCXJldHVybiAtRUlOVkFMOworCisJc3dpdGNoIChj aGFuLT5jaGFubmVsMikgeworCWNhc2UgSUlPX01PRF9YOgorCQlyZWcgPSBJTlZfSUNNNDI2MDdf UkVHX0dZUk9fREFUQV9YMTsKKwkJYnJlYWs7CisJY2FzZSBJSU9fTU9EX1k6CisJCXJlZyA9IElO Vl9JQ000MjYwN19SRUdfR1lST19EQVRBX1kxOworCQlicmVhazsKKwljYXNlIElJT19NT0RfWjoK KwkJcmVnID0gSU5WX0lDTTQyNjA3X1JFR19HWVJPX0RBVEFfWjE7CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCVBNX1JVTlRJTUVfQUNRVUlSRV9BVVRPU1VT UEVORChkZXYsIHBtKTsKKwlpZiAoUE1fUlVOVElNRV9BQ1FVSVJFX0VSUigmcG0pKQorCQlyZXR1 cm4gLUVOWElPOworCisJZ3VhcmQobXV0ZXgpKCZzdC0+bG9jayk7CisKKwkvKiBlbmFibGUgZ3ly byBzZW5zb3IgKi8KKwljb25mLm1vZGUgPSBJTlZfSUNNNDI2MDBfU0VOU09SX01PREVfTE9XX05P SVNFOworCXJldCA9IGludl9pY200MjYwN19zZXRfZ3lyb19jb25mKHN0LCAmY29uZiwgTlVMTCk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIHJlYWQgZ3lybyByZWdpc3RlciBkYXRh ICovCisJZGF0YSA9IChfX2JlMTYgKikmc3QtPmJ1ZmZlclswXTsKKwlyZXQgPSByZWdtYXBfYnVs a19yZWFkKHN0LT5tYXAsIHJlZywgZGF0YSwgc2l6ZW9mKCpkYXRhKSk7CisJaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCSp2YWwgPSAoczE2KWJlMTZfdG9fY3B1cChkYXRhKTsKKwlpZiAoKnZh bCA9PSBJTlZfSUNNNDI2MDdfREFUQV9JTlZBTElEKQorCQlyZXQgPSAtRUlOVkFMOworCisJcmV0 dXJuIHJldDsKK30KKwogLyogSUlPIGZvcm1hdCBpbnQgKyBuYW5vICovCiBzdGF0aWMgY29uc3Qg aW50IGludl9pY200MjYwMF9neXJvX3NjYWxlW10gPSB7CiAJLyogKy8tIDIwMDBkcHMgPT4gMC4w MDEwNjUyNjQgcmFkL3MgKi8KQEAgLTI0MSw2ICszNzAsMjAgQEAgc3RhdGljIGNvbnN0IGludCBp bnZfaWNtNDI2ODZfZ3lyb19zY2FsZVtdID0gewogCVsyICogSU5WX0lDTTQyNjg2X0dZUk9fRlNf MzFfMjVEUFNdID0gMCwKIAlbMiAqIElOVl9JQ000MjY4Nl9HWVJPX0ZTXzMxXzI1RFBTICsgMV0g PSAxNjY0NSwKIH07CitzdGF0aWMgY29uc3QgaW50IGludl9pY200MjYwN19neXJvX3NjYWxlW10g PSB7CisJLyogKy8tIDIwMDBkcHMgPT4gMC4wMDEwNjUyNjQgcmFkL3MgKi8KKwlbMiAqIElOVl9J Q000MjYwN19HWVJPX0ZTXzIwMDBEUFNdID0gMCwKKwlbMiAqIElOVl9JQ000MjYwN19HWVJPX0ZT XzIwMDBEUFMgKyAxXSA9IDEwNjUyNjQsCisJLyogKy8tIDEwMDBkcHMgPT4gMC4wMDA1MzI2MzIg cmFkL3MgKi8KKwlbMiAqIElOVl9JQ000MjYwN19HWVJPX0ZTXzEwMDBEUFNdID0gMCwKKwlbMiAq IElOVl9JQ000MjYwN19HWVJPX0ZTXzEwMDBEUFMgKyAxXSA9IDUzMjYzMiwKKwkvKiArLy0gNTAw ZHBzID0+IDAuMDAwMjY2MzE2IHJhZC9zICovCisJWzIgKiBJTlZfSUNNNDI2MDdfR1lST19GU181 MDBEUFNdID0gMCwKKwlbMiAqIElOVl9JQ000MjYwN19HWVJPX0ZTXzUwMERQUyArIDFdID0gMjY2 MzE2LAorCS8qICsvLSAyNTBkcHMgPT4gMC4wMDAxMzMxNTggcmFkL3MgKi8KKwlbMiAqIElOVl9J Q000MjYwN19HWVJPX0ZTXzI1MERQU10gPSAwLAorCVsyICogSU5WX0lDTTQyNjA3X0dZUk9fRlNf MjUwRFBTICsgMV0gPSAxMzMxNTgsCit9OwogCiBzdGF0aWMgaW50IGludl9pY200MjYwMF9neXJv X3JlYWRfc2NhbGUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKIAkJCQkJaW50ICp2YWwsIGlu dCAqdmFsMikKQEAgLTI3NiwxMiArNDE5LDIxIEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2d5 cm9fd3JpdGVfc2NhbGUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKIAogCWNvbmYuZnMgPSBp ZHggLyAyOwogCi0JcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOwotCi0Jc2NvcGVkX2d1YXJkKG11 dGV4LCAmc3QtPmxvY2spCi0JCXJldCA9IGludl9pY200MjYwMF9zZXRfZ3lyb19jb25mKHN0LCAm Y29uZiwgTlVMTCk7CisJUE1fUlVOVElNRV9BQ1FVSVJFX0FVVE9TVVNQRU5EKGRldiwgcG0pOwor CWlmIChQTV9SVU5USU1FX0FDUVVJUkVfRVJSKCZwbSkpCisJCXJldHVybiAtRU5YSU87CiAKLQlw bV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChkZXYpOworCXN3aXRjaCAoc3QtPmNoaXApIHsKKwlj YXNlIElOVl9DSElQX0lDTTQyNjA3OgorCWNhc2UgSU5WX0NISVBfSUNNNDI2MDdQOgorCQlzY29w ZWRfZ3VhcmQobXV0ZXgsICZzdC0+bG9jaykKKwkJCXJldCA9IGludl9pY200MjYwN19zZXRfZ3ly b19jb25mKHN0LCAmY29uZiwgTlVMTCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXNjb3BlZF9n dWFyZChtdXRleCwgJnN0LT5sb2NrKQorCQkJcmV0ID0gaW52X2ljbTQyNjAwX3NldF9neXJvX2Nv bmYoc3QsICZjb25mLCBOVUxMKTsKKwkJYnJlYWs7CisJfQogCiAJcmV0dXJuIHJldDsKIH0KQEAg LTMwNiw2ICs0NTgsMTcgQEAgc3RhdGljIGNvbnN0IGludCBpbnZfaWNtNDI2MDBfZ3lyb19vZHJb XSA9IHsKIAk0MDAwLCAwLAogfTsKIAorc3RhdGljIGNvbnN0IGludCBpbnZfaWNtNDI2MDdfZ3ly b19vZHJbXSA9IHsKKwkxMiwgNTAwMDAwLCAvKiAxMi41SHogKi8KKwkyNSwgMCwgLyogMjVIeiAq LworCTUwLCAwLCAvKiA1MEh6ICovCisJMTAwLCAwLCAvKiAxMDBIeiAqLworCTIwMCwgMCwgLyog MjAwSHogKi8KKwk0MDAsIDAsIC8qIDQwMEh6ICovCisJODAwLCAwLCAvKiA4MDBIeiAqLworCTE2 MDAsIDAsIC8qIDE2MDBIeiAqLworfTsKKwogc3RhdGljIGNvbnN0IGludCBpbnZfaWNtNDI2MDBf Z3lyb19vZHJfY29udltdID0gewogCUlOVl9JQ000MjYwMF9PRFJfMTJfNUhaLAogCUlOVl9JQ000 MjYwMF9PRFJfMjVIWiwKQEAgLTMxNyw2ICs0ODAsMTcgQEAgc3RhdGljIGNvbnN0IGludCBpbnZf aWNtNDI2MDBfZ3lyb19vZHJfY29udltdID0gewogCUlOVl9JQ000MjYwMF9PRFJfNEtIWl9MTiwK IH07CiAKK3N0YXRpYyBjb25zdCBpbnQgaW52X2ljbTQyNjA3X2d5cm9fb2RyX2NvbnZbXSA9IHsK KwlJTlZfSUNNNDI2MDdfT0RSXzEyXzVIWiwKKwlJTlZfSUNNNDI2MDdfT0RSXzI1SFosCisJSU5W X0lDTTQyNjA3X09EUl81MEhaLAorCUlOVl9JQ000MjYwN19PRFJfMTAwSFosCisJSU5WX0lDTTQy NjA3X09EUl8yMDBIWiwKKwlJTlZfSUNNNDI2MDdfT0RSXzQwMEhaLAorCUlOVl9JQ000MjYwN19P RFJfODAwSFosCisJSU5WX0lDTTQyNjA3X09EUl8xNjAwSFosCit9OworCiBzdGF0aWMgaW50IGlu dl9pY200MjYwMF9neXJvX3JlYWRfb2RyKHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0LAog CQkJCSAgICAgIGludCAqdmFsLCBpbnQgKnZhbDIpCiB7CkBAIC0zMzgsNiArNTEyLDI3IEBAIHN0 YXRpYyBpbnQgaW52X2ljbTQyNjAwX2d5cm9fcmVhZF9vZHIoc3RydWN0IGludl9pY200MjYwMF9z dGF0ZSAqc3QsCiAJcmV0dXJuIElJT19WQUxfSU5UX1BMVVNfTUlDUk87CiB9CiAKK3N0YXRpYyBp bnQgaW52X2ljbTQyNjA3X2d5cm9fcmVhZF9vZHIoc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAq c3QsCisJCQkJICAgICAgaW50ICp2YWwsIGludCAqdmFsMikKK3sKKwl1bnNpZ25lZCBpbnQgb2Ry OworCXVuc2lnbmVkIGludCBpOworCisJb2RyID0gc3QtPmNvbmYuZ3lyby5vZHI7CisKKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnZfaWNtNDI2MDdfZ3lyb19vZHJfY29udik7ICsraSkg eworCQlpZiAoaW52X2ljbTQyNjA3X2d5cm9fb2RyX2NvbnZbaV0gPT0gb2RyKQorCQkJYnJlYWs7 CisJfQorCWlmIChpID49IEFSUkFZX1NJWkUoaW52X2ljbTQyNjA3X2d5cm9fb2RyX2NvbnYpKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCSp2YWwgPSBpbnZfaWNtNDI2MDdfZ3lyb19vZHJbMiAqIGld OworCSp2YWwyID0gaW52X2ljbTQyNjA3X2d5cm9fb2RyWzIgKiBpICsgMV07CisKKwlyZXR1cm4g SUlPX1ZBTF9JTlRfUExVU19NSUNSTzsKK30KKwogc3RhdGljIGludCBpbnZfaWNtNDI2MDBfZ3ly b193cml0ZV9vZHIoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKIAkJCQkgICAgICAgaW50IHZh bCwgaW50IHZhbDIpCiB7CkBAIC0zODIsNiArNTc3LDQ4IEBAIHN0YXRpYyBpbnQgaW52X2ljbTQy NjAwX2d5cm9fd3JpdGVfb2RyKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCiAJcmV0dXJuIHJl dDsKIH0KIAorc3RhdGljIGludCBpbnZfaWNtNDI2MDdfZ3lyb193cml0ZV9vZHIoc3RydWN0IGlp b19kZXYgKmluZGlvX2RldiwKKwkJCQkgICAgICAgaW50IHZhbCwgaW50IHZhbDIpCit7CisJc3Ry dWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QgPSBpaW9fZGV2aWNlX2dldF9kcnZkYXRhKGluZGlv X2Rldik7CisJc3RydWN0IGludl9pY200MjYwMF9zZW5zb3Jfc3RhdGUgKmd5cm9fc3QgPSBpaW9f cHJpdihpbmRpb19kZXYpOworCXN0cnVjdCBpbnZfc2Vuc29yc190aW1lc3RhbXAgKnRzID0gJmd5 cm9fc3QtPnRzOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5t YXApOworCXVuc2lnbmVkIGludCBpZHg7CisJc3RydWN0IGludl9pY200MjYwMF9zZW5zb3JfY29u ZiBjb25mID0gSU5WX0lDTTQyNjAwX1NFTlNPUl9DT05GX0lOSVQ7CisJaW50IHJldDsKKworCWZv ciAoaWR4ID0gMDsgaWR4IDwgQVJSQVlfU0laRShpbnZfaWNtNDI2MDdfZ3lyb19vZHIpOyBpZHgg Kz0gMikgeworCQlpZiAodmFsID09IGludl9pY200MjYwN19neXJvX29kcltpZHhdICYmCisJCSAg ICB2YWwyID09IGludl9pY200MjYwN19neXJvX29kcltpZHggKyAxXSkKKwkJCWJyZWFrOworCX0K KwlpZiAoaWR4ID49IEFSUkFZX1NJWkUoaW52X2ljbTQyNjA3X2d5cm9fb2RyKSkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwljb25mLm9kciA9IGludl9pY200MjYwN19neXJvX29kcl9jb252W2lkeCAv IDJdOworCWlmIChjb25mLm9kciA9PSBzdC0+Y29uZi5neXJvLm9kcikKKwkJcmV0dXJuIDA7CisK KwlQTV9SVU5USU1FX0FDUVVJUkVfQVVUT1NVU1BFTkQoZGV2LCBwbSk7CisJaWYgKFBNX1JVTlRJ TUVfQUNRVUlSRV9FUlIoJnBtKSkKKwkJcmV0dXJuIC1FTlhJTzsKKwlndWFyZChtdXRleCkoJnN0 LT5sb2NrKTsKKworCXJldCA9IGludl9zZW5zb3JzX3RpbWVzdGFtcF91cGRhdGVfb2RyKHRzLCBp bnZfaWNtNDI2MDdfb2RyX3RvX3BlcmlvZChjb25mLm9kciksCisJCQkJCSAgICAgICBpaW9fYnVm ZmVyX2VuYWJsZWQoaW5kaW9fZGV2KSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJl dCA9IGludl9pY200MjYwN19zZXRfZ3lyb19jb25mKHN0LCAmY29uZiwgTlVMTCk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKwlpbnZfaWNtNDI2MDdfYnVmZmVyX3VwZGF0ZV9maWZvX3Blcmlv ZChzdCk7CisJaW52X2ljbTQyNjAwX2J1ZmZlcl91cGRhdGVfd2F0ZXJtYXJrKHN0KTsKKworCXJl dHVybiAwOworfQorCiAvKgogICogQ2FsaWJyYXRpb24gYmlhcyB2YWx1ZXMsIElJTyByYW5nZSBm b3JtYXQgaW50ICsgbmFuby4KICAqIFZhbHVlIGlzIGxpbWl0ZWQgdG8gKy8tNjRkcHMgY29kZWQg b24gMTIgYml0cyBzaWduZWQuIFN0ZXAgaXMgMS8zMiBkcHMuCkBAIC02MDYsNiArODQzLDQyIEBA IHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2d5cm9fcmVhZF9yYXcoc3RydWN0IGlpb19kZXYgKmlu ZGlvX2RldiwKIAl9CiB9CiAKK3N0YXRpYyBpbnQgaW52X2ljbTQyNjA3X2d5cm9fcmVhZF9yYXco c3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKKwkJCQkgICAgICBzdHJ1Y3QgaWlvX2NoYW5fc3Bl YyBjb25zdCAqY2hhbiwKKwkJCQkgICAgICBpbnQgKnZhbCwgaW50ICp2YWwyLCBsb25nIG1hc2sp Cit7CisJc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QgPSBpaW9fZGV2aWNlX2dldF9kcnZk YXRhKGluZGlvX2Rldik7CisJczE2IGRhdGE7CisJaW50IHJldDsKKworCXN3aXRjaCAoY2hhbi0+ dHlwZSkgeworCWNhc2UgSUlPX0FOR0xfVkVMOgorCQlicmVhazsKKwljYXNlIElJT19URU1QOgor CQlyZXR1cm4gaW52X2ljbTQyNjA3X3RlbXBfcmVhZF9yYXcoaW5kaW9fZGV2LCBjaGFuLCB2YWws IHZhbDIsIG1hc2spOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXN3aXRj aCAobWFzaykgeworCWNhc2UgSUlPX0NIQU5fSU5GT19SQVc6CisJCWlmICghaWlvX2RldmljZV9j bGFpbV9kaXJlY3QoaW5kaW9fZGV2KSkKKwkJCXJldHVybiAtRUJVU1k7CisJCXJldCA9IGludl9p Y200MjYwN19neXJvX3JlYWRfc2Vuc29yKHN0LCBjaGFuLCAmZGF0YSk7CisJCWlpb19kZXZpY2Vf cmVsZWFzZV9kaXJlY3QoaW5kaW9fZGV2KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJ CSp2YWwgPSBkYXRhOworCQlyZXR1cm4gSUlPX1ZBTF9JTlQ7CisJY2FzZSBJSU9fQ0hBTl9JTkZP X1NDQUxFOgorCQlyZXR1cm4gaW52X2ljbTQyNjAwX2d5cm9fcmVhZF9zY2FsZShpbmRpb19kZXYs IHZhbCwgdmFsMik7CisJY2FzZSBJSU9fQ0hBTl9JTkZPX1NBTVBfRlJFUToKKwkJcmV0dXJuIGlu dl9pY200MjYwN19neXJvX3JlYWRfb2RyKHN0LCB2YWwsIHZhbDIpOworCWRlZmF1bHQ6CisJCXJl dHVybiAtRUlOVkFMOworCX0KK30KKwogc3RhdGljIGludCBpbnZfaWNtNDI2MDBfZ3lyb19yZWFk X2F2YWlsKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCiAJCQkJCXN0cnVjdCBpaW9fY2hhbl9z cGVjIGNvbnN0ICpjaGFuLAogCQkJCQljb25zdCBpbnQgKip2YWxzLApAQCAtNjY2LDYgKzkzOSwy OSBAQCBzdGF0aWMgaW50IGludl9pY200MjYwMF9neXJvX3dyaXRlX3JhdyhzdHJ1Y3QgaWlvX2Rl diAqaW5kaW9fZGV2LAogCX0KIH0KIAorc3RhdGljIGludCBpbnZfaWNtNDI2MDdfZ3lyb193cml0 ZV9yYXcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKKwkJCQkgICAgICAgc3RydWN0IGlpb19j aGFuX3NwZWMgY29uc3QgKmNoYW4sCisJCQkJICAgICAgIGludCB2YWwsIGludCB2YWwyLCBsb25n IG1hc2spCit7CisJaW50IHJldDsKKworCWlmIChjaGFuLT50eXBlICE9IElJT19BTkdMX1ZFTCkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzd2l0Y2ggKG1hc2spIHsKKwljYXNlIElJT19DSEFOX0lO Rk9fU0NBTEU6CisJCWlmICghaWlvX2RldmljZV9jbGFpbV9kaXJlY3QoaW5kaW9fZGV2KSkKKwkJ CXJldHVybiAtRUJVU1k7CisJCXJldCA9IGludl9pY200MjYwMF9neXJvX3dyaXRlX3NjYWxlKGlu ZGlvX2RldiwgdmFsLCB2YWwyKTsKKwkJaWlvX2RldmljZV9yZWxlYXNlX2RpcmVjdChpbmRpb19k ZXYpOworCQlyZXR1cm4gcmV0OworCWNhc2UgSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVE6CisJCXJl dHVybiBpbnZfaWNtNDI2MDdfZ3lyb193cml0ZV9vZHIoaW5kaW9fZGV2LCB2YWwsIHZhbDIpOwor CWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KK30KKwogc3RhdGljIGludCBpbnZfaWNt NDI2MDBfZ3lyb193cml0ZV9yYXdfZ2V0X2ZtdChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAog CQkJCQkgICAgICAgc3RydWN0IGlpb19jaGFuX3NwZWMgY29uc3QgKmNoYW4sCiAJCQkJCSAgICAg ICBsb25nIG1hc2spCkBAIC03MjUsNiArMTAyMSwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlp b19pbmZvIGludl9pY200MjYwMF9neXJvX2luZm8gPSB7CiAJLmh3Zmlmb19mbHVzaF90b19idWZm ZXIgPSBpbnZfaWNtNDI2MDBfZ3lyb19od2ZpZm9fZmx1c2gsCiB9OwogCitzdGF0aWMgY29uc3Qg c3RydWN0IGlpb19pbmZvIGludl9pY200MjYwN19neXJvX2luZm8gPSB7CisJLnJlYWRfcmF3ID0g aW52X2ljbTQyNjA3X2d5cm9fcmVhZF9yYXcsCisJLndyaXRlX3JhdyA9IGludl9pY200MjYwN19n eXJvX3dyaXRlX3JhdywKKwkud3JpdGVfcmF3X2dldF9mbXQgPSBpbnZfaWNtNDI2MDBfZ3lyb193 cml0ZV9yYXdfZ2V0X2ZtdCwKKwkuZGVidWdmc19yZWdfYWNjZXNzID0gaW52X2ljbTQyNjAwX2Rl YnVnZnNfcmVnLAorCS51cGRhdGVfc2Nhbl9tb2RlID0gaW52X2ljbTQyNjA3X2d5cm9fdXBkYXRl X3NjYW5fbW9kZSwKKwkuaHdmaWZvX3NldF93YXRlcm1hcmsgPSBpbnZfaWNtNDI2MDBfZ3lyb19o d2ZpZm9fc2V0X3dhdGVybWFyaywKKwkuaHdmaWZvX2ZsdXNoX3RvX2J1ZmZlciA9IGludl9pY200 MjYwMF9neXJvX2h3Zmlmb19mbHVzaCwKK307CisKIGludCBpbnZfaWNtNDI2MDBfZ3lyb19pbml0 KHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0LCBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 KQogewogCXN0cnVjdCBkZXZpY2UgKmRldiA9IHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5tYXApOwpA QCAtNzgzLDYgKzEwODksNTYgQEAgaW50IGludl9pY200MjYwMF9neXJvX2luaXQoc3RydWN0IGlu dl9pY200MjYwMF9zdGF0ZSAqc3QsIHN0cnVjdCBpaW9fZGV2ICppbmRpb18KIAlyZXR1cm4gMDsK IH0KIAoraW50IGludl9pY200MjYwN19neXJvX2luaXQoc3RydWN0IGludl9pY200MjYwMF9zdGF0 ZSAqc3QsIHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2 ID0gcmVnbWFwX2dldF9kZXZpY2Uoc3QtPm1hcCk7CisJY29uc3QgY2hhciAqbmFtZTsKKwlzdHJ1 Y3QgaW52X2ljbTQyNjAwX3NlbnNvcl9zdGF0ZSAqZ3lyb19zdDsKKwlzdHJ1Y3QgaW52X3NlbnNv cnNfdGltZXN0YW1wX2NoaXAgdHNfY2hpcDsKKwlpbnQgcmV0OworCisJbmFtZSA9IGRldm1fa2Fz cHJpbnRmKGRldiwgR0ZQX0tFUk5FTCwgIiVzLWd5cm8iLCBzdC0+bmFtZSk7CisJaWYgKCFuYW1l KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWluZGlvX2RldiA9IGRldm1faWlvX2RldmljZV9hbGxv YyhkZXYsIHNpemVvZigqZ3lyb19zdCkpOworCWlmICghaW5kaW9fZGV2KQorCQlyZXR1cm4gLUVO T01FTTsKKwlneXJvX3N0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKKworCWd5cm9fc3QtPnNjYWxl cyA9IGludl9pY200MjYwN19neXJvX3NjYWxlOworCWd5cm9fc3QtPnNjYWxlc19sZW4gPSBBUlJB WV9TSVpFKGludl9pY200MjYwN19neXJvX3NjYWxlKTsKKworCS8qCisJICogY2xvY2sgcGVyaW9k IGlzIDMya0h6ICgzMTI1MG5zKQorCSAqIGppdHRlciBpcyArLy0gMiUgKDIwIHBlciBtaWxsZSkK KwkgKi8KKwl0c19jaGlwLmNsb2NrX3BlcmlvZCA9IDMxMjUwOworCXRzX2NoaXAuaml0dGVyID0g MjA7CisJdHNfY2hpcC5pbml0X3BlcmlvZCA9IGludl9pY200MjYwN19vZHJfdG9fcGVyaW9kKHN0 LT5jb25mLmFjY2VsLm9kcik7CisJaW52X3NlbnNvcnNfdGltZXN0YW1wX2luaXQoJmd5cm9fc3Qt PnRzLCAmdHNfY2hpcCk7CisKKwlpaW9fZGV2aWNlX3NldF9kcnZkYXRhKGluZGlvX2Rldiwgc3Qp OworCWluZGlvX2Rldi0+bmFtZSA9IG5hbWU7CisJaW5kaW9fZGV2LT5pbmZvID0gJmludl9pY200 MjYwN19neXJvX2luZm87CisJaW5kaW9fZGV2LT5tb2RlcyA9IElORElPX0RJUkVDVF9NT0RFOwor CWluZGlvX2Rldi0+Y2hhbm5lbHMgPSBpbnZfaWNtNDI2MDdfZ3lyb19jaGFubmVsczsKKwlpbmRp b19kZXYtPm51bV9jaGFubmVscyA9IEFSUkFZX1NJWkUoaW52X2ljbTQyNjA3X2d5cm9fY2hhbm5l bHMpOworCWluZGlvX2Rldi0+YXZhaWxhYmxlX3NjYW5fbWFza3MgPSBpbnZfaWNtNDI2MDBfZ3ly b19zY2FuX21hc2tzOworCWluZGlvX2Rldi0+c2V0dXBfb3BzID0gJmludl9pY200MjYwN19idWZm ZXJfb3BzOworCisJcmV0ID0gZGV2bV9paW9fa2ZpZm9fYnVmZmVyX3NldHVwKGRldiwgaW5kaW9f ZGV2LAorCQkJCQkgICZpbnZfaWNtNDI2MDdfYnVmZmVyX29wcyk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCXJldCA9IGRldm1faWlvX2RldmljZV9yZWdpc3RlcihkZXYsIGluZGlvX2Rl dik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorCiBpbnQgaW52 X2ljbTQyNjAwX2d5cm9fcGFyc2VfZmlmbyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQogewog CXN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0ID0gaWlvX2RldmljZV9nZXRfZHJ2ZGF0YShp bmRpb19kZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZf aWNtNDI2MDBfaTJjLmMgYi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYw MF9pMmMuYwppbmRleCA3ZTRkM2VhNjg3MjEuLmNkMjA3MTk2OWI5YSAxMDA2NDQKLS0tIGEvZHJp dmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfaTJjLmMKKysrIGIvZHJpdmVy cy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfaTJjLmMKQEAgLTQ5LDYgKzQ5LDI5 IEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX2kyY19idXNfc2V0dXAoc3RydWN0IGludl9pY200 MjYwMF9zdGF0ZSAqc3QpCiAJCQkJICBJTlZfSUNNNDI2MDBfSU5URl9DT05GSUcwX1VJX1NJRlNf Q0ZHX1NQSV9ESVMpOwogfQogCitzdGF0aWMgaW50IGludl9pY200MjYwN19pMmNfYnVzX3NldHVw KHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0KQoreworCXVuc2lnbmVkIGludCBtYXNrLCB2 YWw7CisJaW50IHJldDsKKworCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+bWFwLCBJTlZf SUNNNDI2MDdfUkVHX0lOVEZfQ09ORklHMSwKKwkJCQkgSU5WX0lDTTQyNjA3X0lOVEZfQ09ORklH MV9JM0NfRERSX0VOIHwKKwkJCQkgSU5WX0lDTTQyNjA3X0lOVEZfQ09ORklHMV9JM0NfU0RSX0VO LCAwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJbWFzayA9IElOVl9JQ000MjYwN19E UklWRV9DT05GSUcyX0kyQ19NQVNLOworCXZhbCA9IElOVl9JQ000MjYwN19EUklWRV9DT05GSUcy X0kyQyhJTlZfSUNNNDI2MDBfU0xFV19SQVRFXzEyXzM2TlMpOworCXJldCA9IHJlZ21hcF91cGRh dGVfYml0cyhzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVHX0RSSVZFX0NPTkZJRzIsCisJCQkJIG1h c2ssIHZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiByZWdtYXBfdXBk YXRlX2JpdHMoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19JTlRGX0NPTkZJRzAsCisJCQkJICBJ TlZfSUNNNDI2MDdfSU5URl9DT05GSUcwX1VJX1NJRlNfQ0ZHX01BU0ssCisJCQkJICBJTlZfSUNN NDI2MDdfSU5URl9DT05GSUcwX1VJX1NJRlNfQ0ZHX1NQSV9ESVMpOworfQorCiBzdGF0aWMgaW50 IGludl9pY200MjYwMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewogCWNvbnN0 IHZvaWQgKm1hdGNoOwpAQCAtNjMsMTEgKzg2LDIzIEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAw X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJCXJldHVybiAtRUlOVkFMOwogCWNo aXAgPSAodWludHB0cl90KW1hdGNoOwogCi0JcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMo Y2xpZW50LCAmaW52X2ljbTQyNjAwX3JlZ21hcF9jb25maWcpOwotCWlmIChJU19FUlIocmVnbWFw KSkKLQkJcmV0dXJuIFBUUl9FUlIocmVnbWFwKTsKLQotCXJldHVybiBpbnZfaWNtNDI2MDBfY29y ZV9wcm9iZShyZWdtYXAsIGNoaXAsIGludl9pY200MjYwMF9pMmNfYnVzX3NldHVwKTsKKwlzd2l0 Y2ggKGNoaXApIHsKKwljYXNlIElOVl9DSElQX0lDTTQyNjA3OgorCWNhc2UgSU5WX0NISVBfSUNN NDI2MDdQOgorCQlyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhjbGllbnQsCisJCQkJCSAg ICAgICZpbnZfaWNtNDI2MDdfcmVnbWFwX2NvbmZpZyk7CisJCWlmIChJU19FUlIocmVnbWFwKSkK KwkJCXJldHVybiBQVFJfRVJSKHJlZ21hcCk7CisJCXJldHVybiBpbnZfaWNtNDI2MDBfY29yZV9w cm9iZShyZWdtYXAsIGNoaXAsCisJCQkJCSAgICAgICBpbnZfaWNtNDI2MDdfaTJjX2J1c19zZXR1 cCk7CisJZGVmYXVsdDoKKwkJcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LAor CQkJCQkgICAgICAmaW52X2ljbTQyNjAwX3JlZ21hcF9jb25maWcpOworCQlpZiAoSVNfRVJSKHJl Z21hcCkpCisJCQlyZXR1cm4gUFRSX0VSUihyZWdtYXApOworCQlyZXR1cm4gaW52X2ljbTQyNjAw X2NvcmVfcHJvYmUocmVnbWFwLCBjaGlwLAorCQkJCQkgICAgICAgaW52X2ljbTQyNjAwX2kyY19i dXNfc2V0dXApOworCX0KIH0KIAogLyoKQEAgLTc4LDYgKzExMyw4IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaTJjX2RldmljZV9pZCBpbnZfaWNtNDI2MDBfaWRbXSA9IHsKIAl7ICJpY200MjYwMCIs IElOVl9DSElQX0lDTTQyNjAwIH0sCiAJeyAiaWNtNDI2MDIiLCBJTlZfQ0hJUF9JQ000MjYwMiB9 LAogCXsgImljbTQyNjA1IiwgSU5WX0NISVBfSUNNNDI2MDUgfSwKKwl7ICJpY200MjYwNyIsIElO Vl9DSElQX0lDTTQyNjA3IH0sCisJeyAiaWNtNDI2MDdwIiwgSU5WX0NISVBfSUNNNDI2MDdQIH0s CiAJeyAiaWNtNDI2ODYiLCBJTlZfQ0hJUF9JQ000MjY4NiB9LAogCXsgImljbTQyNjIyIiwgSU5W X0NISVBfSUNNNDI2MjIgfSwKIAl7ICJpY200MjY4OCIsIElOVl9DSElQX0lDTTQyNjg4IH0sCkBA IC05Niw2ICsxMzMsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW52X2lj bTQyNjAwX29mX21hdGNoZXNbXSA9IHsKIAl9LCB7CiAJCS5jb21wYXRpYmxlID0gImludmVuc2Vu c2UsaWNtNDI2MDUiLAogCQkuZGF0YSA9ICh2b2lkICopSU5WX0NISVBfSUNNNDI2MDUsCisJfSwg eworCQkuY29tcGF0aWJsZSA9ICJpbnZlbnNlbnNlLGljbTQyNjA3IiwKKwkJLmRhdGEgPSAodm9p ZCAqKUlOVl9DSElQX0lDTTQyNjA3LAorCX0sIHsKKwkJLmNvbXBhdGlibGUgPSAiaW52ZW5zZW5z ZSxpY200MjYwN3AiLAorCQkuZGF0YSA9ICh2b2lkICopSU5WX0NISVBfSUNNNDI2MDdQLAogCX0s IHsKIAkJLmNvbXBhdGlibGUgPSAiaW52ZW5zZW5zZSxpY200MjY4NiIsCiAJCS5kYXRhID0gKHZv aWQgKilJTlZfQ0hJUF9JQ000MjY4NiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2ltdS9pbnZf aWNtNDI2MDAvaW52X2ljbTQyNjAwX3NwaS5jIGIvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYw MC9pbnZfaWNtNDI2MDBfc3BpLmMKaW5kZXggMTNlMmU3ZDM4NjM4Li42YmZkNTU5OGIyNjIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDAvaW52X2ljbTQyNjAwX3NwaS5j CisrKyBiL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDAvaW52X2ljbTQyNjAwX3NwaS5jCkBA IC00OCw2ICs0OCwzNSBAQCBzdGF0aWMgaW50IGludl9pY200MjYwMF9zcGlfYnVzX3NldHVwKHN0 cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0KQogCQkJCSAgSU5WX0lDTTQyNjAwX0lOVEZfQ09O RklHMF9VSV9TSUZTX0NGR19JMkNfRElTKTsKIH0KIAorc3RhdGljIGludCBpbnZfaWNtNDI2MDdf c3BpX2J1c19zZXR1cChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCkKK3sKKwl1bnNpZ25l ZCBpbnQgbWFzaywgdmFsOworCWludCByZXQ7CisKKwlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMo c3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19ERVZJQ0VfQ09ORklHLAorCQkJCSBJTlZfSUNNNDI2 MDdfREVWSUNFX0NPTkZJR19TUElfQVBfNFdJUkUsCisJCQkJIElOVl9JQ000MjYwN19ERVZJQ0Vf Q09ORklHX1NQSV9BUF80V0lSRSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9 IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVHX0lOVEZfQ09ORklH MSwKKwkJCQkgSU5WX0lDTTQyNjA3X0lOVEZfQ09ORklHMV9JM0NfRERSX0VOIHwKKwkJCQkgSU5W X0lDTTQyNjA3X0lOVEZfQ09ORklHMV9JM0NfU0RSX0VOLCAwKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJbWFzayA9IElOVl9JQ000MjYwN19EUklWRV9DT05GSUczX1NQSV9NQVNLOwor CXZhbCA9IElOVl9JQ000MjYwN19EUklWRV9DT05GSUczX1NQSShJTlZfSUNNNDI2MDBfU0xFV19S QVRFX0lORl8yTlMpOworCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+bWFwLCBJTlZfSUNN NDI2MDdfUkVHX0RSSVZFX0NPTkZJRzMsCisJCQkJIG1hc2ssIHZhbCk7CisJaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCXJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMoc3QtPm1hcCwgSU5WX0lD TTQyNjA3X1JFR19JTlRGX0NPTkZJRzAsCisJCQkJICBJTlZfSUNNNDI2MDdfSU5URl9DT05GSUcw X1VJX1NJRlNfQ0ZHX01BU0ssCisJCQkJICBJTlZfSUNNNDI2MDdfSU5URl9DT05GSUcwX1VJX1NJ RlNfQ0ZHX0kyQ19ESVMpOworfQorCiBzdGF0aWMgaW50IGludl9pY200MjYwMF9wcm9iZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCWNvbnN0IHZvaWQgKm1hdGNoOwpAQCAtNTksMTIgKzg4 LDIyIEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiAJCXJldHVybiAtRUlOVkFMOwogCWNoaXAgPSAodWludHB0cl90KW1hdGNoOwogCi0JLyog dXNlIFNQSSBzcGVjaWZpYyByZWdtYXAgKi8KLQlyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X3Nw aShzcGksICZpbnZfaWNtNDI2MDBfc3BpX3JlZ21hcF9jb25maWcpOwotCWlmIChJU19FUlIocmVn bWFwKSkKLQkJcmV0dXJuIFBUUl9FUlIocmVnbWFwKTsKLQotCXJldHVybiBpbnZfaWNtNDI2MDBf Y29yZV9wcm9iZShyZWdtYXAsIGNoaXAsIGludl9pY200MjYwMF9zcGlfYnVzX3NldHVwKTsKKwlz d2l0Y2ggKGNoaXApIHsKKwljYXNlIElOVl9DSElQX0lDTTQyNjA3OgorCWNhc2UgSU5WX0NISVBf SUNNNDI2MDdQOgorCQlyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X3NwaShzcGksICZpbnZfaWNt NDI2MDdfcmVnbWFwX2NvbmZpZyk7CisJCWlmIChJU19FUlIocmVnbWFwKSkKKwkJCXJldHVybiBQ VFJfRVJSKHJlZ21hcCk7CisJCXJldHVybiBpbnZfaWNtNDI2MDBfY29yZV9wcm9iZShyZWdtYXAs IGNoaXAsCisJCQkJCSAgICAgICBpbnZfaWNtNDI2MDdfc3BpX2J1c19zZXR1cCk7CisJZGVmYXVs dDoKKwkJLyogdXNlIFNQSSBzcGVjaWZpYyByZWdtYXAgKi8KKwkJcmVnbWFwID0gZGV2bV9yZWdt YXBfaW5pdF9zcGkoc3BpLCAmaW52X2ljbTQyNjAwX3NwaV9yZWdtYXBfY29uZmlnKTsKKwkJaWYg KElTX0VSUihyZWdtYXApKQorCQkJcmV0dXJuIFBUUl9FUlIocmVnbWFwKTsKKwkJcmV0dXJuIGlu dl9pY200MjYwMF9jb3JlX3Byb2JlKHJlZ21hcCwgY2hpcCwKKwkJCQkJICAgICAgIGludl9pY200 MjYwMF9zcGlfYnVzX3NldHVwKTsKKwl9CiB9CiAKIC8qCkBAIC03NSw2ICsxMTQsOCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgaW52X2ljbTQyNjAwX2lkW10gPSB7CiAJeyAi aWNtNDI2MDAiLCBJTlZfQ0hJUF9JQ000MjYwMCB9LAogCXsgImljbTQyNjAyIiwgSU5WX0NISVBf SUNNNDI2MDIgfSwKIAl7ICJpY200MjYwNSIsIElOVl9DSElQX0lDTTQyNjA1IH0sCisJeyAiaWNt NDI2MDciLCBJTlZfQ0hJUF9JQ000MjYwNyB9LAorCXsgImljbTQyNjA3cCIsIElOVl9DSElQX0lD TTQyNjA3UCB9LAogCXsgImljbTQyNjg2IiwgSU5WX0NISVBfSUNNNDI2ODYgfSwKIAl7ICJpY200 MjYyMiIsIElOVl9DSElQX0lDTTQyNjIyIH0sCiAJeyAiaWNtNDI2ODgiLCBJTlZfQ0hJUF9JQ000 MjY4OCB9LApAQCAtOTMsNiArMTM0LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIGludl9pY200MjYwMF9vZl9tYXRjaGVzW10gPSB7CiAJfSwgewogCQkuY29tcGF0aWJsZSA9 ICJpbnZlbnNlbnNlLGljbTQyNjA1IiwKIAkJLmRhdGEgPSAodm9pZCAqKUlOVl9DSElQX0lDTTQy NjA1LAorCX0sIHsKKwkJLmNvbXBhdGlibGUgPSAiaW52ZW5zZW5zZSxpY200MjYwNyIsCisJCS5k YXRhID0gKHZvaWQgKilJTlZfQ0hJUF9JQ000MjYwNywKKwl9LCB7CisJCS5jb21wYXRpYmxlID0g ImludmVuc2Vuc2UsaWNtNDI2MDdwIiwKKwkJLmRhdGEgPSAodm9pZCAqKUlOVl9DSElQX0lDTTQy NjA3UCwKIAl9LCB7CiAJCS5jb21wYXRpYmxlID0gImludmVuc2Vuc2UsaWNtNDI2ODYiLAogCQku ZGF0YSA9ICh2b2lkICopSU5WX0NISVBfSUNNNDI2ODYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lp by9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF90ZW1wLmMgYi9kcml2ZXJzL2lpby9pbXUv aW52X2ljbTQyNjAwL2ludl9pY200MjYwMF90ZW1wLmMKaW5kZXggNzI3YjAzZDU0MWE1Li5mZGRh NTU1ZGJkMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDAvaW52X2lj bTQyNjAwX3RlbXAuYworKysgYi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200 MjYwMF90ZW1wLmMKQEAgLTQ2LDYgKzQ2LDM0IEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjAwX3Rl bXBfcmVhZChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCwgczE2ICp0ZW1wKQogCXJldHVy biByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgaW52X2ljbTQyNjA3X3RlbXBfcmVhZChzdHJ1Y3QgaW52 X2ljbTQyNjAwX3N0YXRlICpzdCwgczE2ICp0ZW1wKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9 IHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5tYXApOworCV9fYmUxNiAqcmF3OworCWludCByZXQ7CisK KwlQTV9SVU5USU1FX0FDUVVJUkVfQVVUT1NVU1BFTkQoZGV2LCBwbSk7CisJaWYgKFBNX1JVTlRJ TUVfQUNRVUlSRV9FUlIoJnBtKSkKKwkJcmV0dXJuIC1FTlhJTzsKKworCWd1YXJkKG11dGV4KSgm c3QtPmxvY2spOworCisJcmV0ID0gaW52X2ljbTQyNjA3X3NldF90ZW1wX2NvbmYoc3QsIHRydWUs IE5VTEwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyYXcgPSAoX19iZTE2ICopJnN0 LT5idWZmZXJbMF07CisJcmV0ID0gcmVnbWFwX2J1bGtfcmVhZChzdC0+bWFwLCBJTlZfSUNNNDI2 MDdfUkVHX1RFTVBfREFUQTEsIHJhdywgc2l6ZW9mKCpyYXcpKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJKnRlbXAgPSAoczE2KWJlMTZfdG9fY3B1cChyYXcpOworCWlmICgqdGVtcCA9 PSBJTlZfSUNNNDI2MDBfREFUQV9JTlZBTElEKQorCQlyZXQgPSAtRUlOVkFMOworCisJcmV0dXJu IDA7Cit9CisKIGludCBpbnZfaWNtNDI2MDBfdGVtcF9yZWFkX3JhdyhzdHJ1Y3QgaWlvX2RldiAq aW5kaW9fZGV2LAogCQkJICAgICAgIHN0cnVjdCBpaW9fY2hhbl9zcGVjIGNvbnN0ICpjaGFuLAog CQkJICAgICAgIGludCAqdmFsLCBpbnQgKnZhbDIsIGxvbmcgbWFzaykKQEAgLTgzLDMgKzExMSwz OSBAQCBpbnQgaW52X2ljbTQyNjAwX3RlbXBfcmVhZF9yYXcoc3RydWN0IGlpb19kZXYgKmluZGlv X2RldiwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogfQorCitpbnQgaW52X2ljbTQyNjA3X3RlbXBf cmVhZF9yYXcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKKwkJCQlzdHJ1Y3QgaWlvX2NoYW5f c3BlYyBjb25zdCAqY2hhbiwKKwkJCQlpbnQgKnZhbCwgaW50ICp2YWwyLCBsb25nIG1hc2spCit7 CisJc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QgPSBpaW9fZGV2aWNlX2dldF9kcnZkYXRh KGluZGlvX2Rldik7CisJczE2IHRlbXA7CisJaW50IHJldDsKKworCWlmIChjaGFuLT50eXBlICE9 IElJT19URU1QKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXN3aXRjaCAobWFzaykgeworCWNhc2Ug SUlPX0NIQU5fSU5GT19SQVc6CisJCXJldCA9IGludl9pY200MjYwN190ZW1wX3JlYWQoc3QsICZ0 ZW1wKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJCSp2YWwgPSB0ZW1wOworCQlyZXR1 cm4gSUlPX1ZBTF9JTlQ7CisJLyoKKwkgKiBUwrBDID0gKHRlbXAgLyAxMjgpICsgMjUKKwkgKiBU bcKwQyA9IDEwMDAgKiAoKHRlbXAgKiAxMDAgLyAxMjgwMCkgKyAyNSkKKwkgKiBzY2FsZTogMTAw MDAwIC8gMTI4MDAgfj0gNy44MTI1CisJICogb2Zmc2V0OiAyNTAwMAorCSAqLworCWNhc2UgSUlP X0NIQU5fSU5GT19TQ0FMRToKKwkJKnZhbCA9IDc7CisJCSp2YWwyID0gODEyNTAwOworCQlyZXR1 cm4gSUlPX1ZBTF9JTlRfUExVU19NSUNSTzsKKwljYXNlIElJT19DSEFOX0lORk9fT0ZGU0VUOgor CQkqdmFsID0gMjUwMDA7CisJCXJldHVybiBJSU9fVkFMX0lOVDsKKwlkZWZhdWx0OgorCQlyZXR1 cm4gLUVJTlZBTDsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQy NjAwL2ludl9pY200MjYwMF90ZW1wLmggYi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2lu dl9pY200MjYwMF90ZW1wLmgKaW5kZXggMzk0MTE4NjUxMmZiLi5iNWI5ZTRmZTNkMGUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDAvaW52X2ljbTQyNjAwX3RlbXAuaAor KysgYi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF90ZW1wLmgKQEAg LTI3LDQgKzI3LDggQEAgaW50IGludl9pY200MjYwMF90ZW1wX3JlYWRfcmF3KHN0cnVjdCBpaW9f ZGV2ICppbmRpb19kZXYsCiAJCQkgICAgICAgc3RydWN0IGlpb19jaGFuX3NwZWMgY29uc3QgKmNo YW4sCiAJCQkgICAgICAgaW50ICp2YWwsIGludCAqdmFsMiwgbG9uZyBtYXNrKTsKIAoraW50IGlu dl9pY200MjYwN190ZW1wX3JlYWRfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCisJCQkg ICAgICAgc3RydWN0IGlpb19jaGFuX3NwZWMgY29uc3QgKmNoYW4sCisJCQkgICAgICAgaW50ICp2 YWwsIGludCAqdmFsMiwgbG9uZyBtYXNrKTsKKwogI2VuZGlmCi0tIAoyLjQzLjAKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBt YWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==