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 91E6DCD4851 for ; Fri, 15 May 2026 13:04:14 +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=GdXki4CQH+8Jzz9IO9WY5oV5/8RdsMFZp4LOO+RM0/8=; b=c8Al5Ig+WatlSN 0Qh5KKGkr3WRS+eEQvoO2qc4q10MKXuk/nVe6K0woMCOJu0L2hF6SK2AJpnnfcwwJ2M7+8B21ZJBd bOsHu+iTJ9JpjTmd/eWrrY6BPX3WhcEVZSfi0NYOlXnBNW2/5nTmd8vuibNvXYUgQJdFPo/mPS5T/ xmycig2IGYs9PBcwGuMdA3z5mft9kr7Uo/5mw6voeN39qcD3i9PhiOjLD+Yr0nggkIf7yc5c/x11p i29fshnzt8VJUR97kULoktYyd/5E/T5JJAjzxFLFE+JHf+TWPRxcpQTdCrffGzlMPv3lQ39y49HYT eKILL5buTPfOi352pQ+A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wNsD6-00000008Ons-0VXN; Fri, 15 May 2026 13:04:12 +0000 Received: from mail-oa1-x35.google.com ([2001:4860:4864:20::35]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wNsD2-00000008OnF-0dBS for linux-rockchip@lists.infradead.org; Fri, 15 May 2026 13:04:11 +0000 Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-439f000476eso1470065fac.0 for ; Fri, 15 May 2026 06:04:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778850247; x=1779455047; 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=V3sRvlMFxJopUWxvRPucM1fPeBOxWlVQn7zlqRJK8HM=; b=fwyToZkEkC8mj9yiPWKIUH8Nn2DhtTuuHyV8f1pvklrfpI+dmxoiNJMa1E/4uoEWZo jlMppmwFxLHLk1j7oxrxI5LOUp9+bcYQrFXT5n7+e8OrLt8QqGVQwu5w1LDw+AQwFzY4 fKESKIPU1i+ldn084HJ/4D5rwF64oDyTkTn6XjeOgoi1mI9hgFmMIW0ueIxtSKv6PpIi AWK0TmFBJ857JU4+Y1dxIHhe66w0CrKHyPuJlAum1bEh2hFySsVxNVDR9/7St682u/mf 7FffxSXuGNMx/3Ux1UcRsG0FgdgBKa/5JHJ5bGGrkJiGhOm4iEaTHiMBv67vTVvqu5qy sgqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778850247; x=1779455047; 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=V3sRvlMFxJopUWxvRPucM1fPeBOxWlVQn7zlqRJK8HM=; b=bC2OUEzSByuc3/3T5VlyP81zqe/GvhIklEVYoSN7bpP72B+O7Gswuk2uxUs/HLienS lznkrqftIbHO8MzYUM/Ldix4nA7cNWTqTSnvyWfXGlcuwgI4p0VMtEta/X+2JjU9hUlY MByz+j47PD9gQR9ggnSjrhfteannE/OV5/yBqzWzk1dz/fHsRJ865K9ozeLp5VcVCC6X UkiT1NM1arLclvWQcOuBeve9VsO8dt2nKtVtFjMZkGiHCcxKdr9MutYZfw4QLvegBM8G 0Y/ne6KrTBrucOsTavgzaPtilIVr2roLWBXaCcNO8R0m6N0FyMkU8mdjDQV3fiaomzqi qWLw== X-Forwarded-Encrypted: i=1; AFNElJ/XGf1d52as8T/y7+An955OCI/77Y221UeB6wlmupO4hDOn74wPVsZ+2IazqVxYAJssWF/d3w5DP3uj95Ffcw==@lists.infradead.org X-Gm-Message-State: AOJu0YwPxoIR0slbXAA4nIEvNhsNsIXVFTkRfjuAhkRn1TT0RfEuYOFK Cpxr+xFu0Iwir81FldH3fRR8kc/I6L2+6/vHwF0jSBdoKuMbJl9LdmEw X-Gm-Gg: Acq92OFlpiA6UcR9RvE0OqSSIkTdKS1bebBhwVclmU5Mlv1h1aDMnaEgagi+bnddRcx wr2BOvhx+uGODPYTyvmjzgIkpxVZY7otVGYeJ3oQ0g/NgDJUZYD+ftaTwPSG43wDWxH828nQZ7K YOrk+IaoBK2SHyJ7lpqhbtzwPOeK6ESA4rNCvKUbqBtgH4SEaqf9NMMTXmtcHGRPPLuyLQhlIMS g/hpOh8Z5GoYfMc7+H6jWL7kdQ3JlLYta+CkLsp0Di6ltpLCvCzF0v5rlIOQwQHJqlrbH8zHuS3 bCEaYerQoupKrtxnQs0gMyYveqYU6IGYPl6knuSSOwVfqAQUltxQt8rt1gr3lQG+k6XRmE9NHA3 Am8NcPlwz/g8Fatv1heEQzx6HmZWwcZDQsnypCWc64WE3/5Gj/b3tLRsUgcyI06bUO77qww4N15 z17y7zWw2V0o+sLQRJfRuxWLZPYOZz4h3btdkvYgcRaw== X-Received: by 2002:a05:6871:b0d:b0:439:a524:a29b with SMTP id 586e51a60fabf-43a2dcc9486mr2330253fac.7.1778850169537; Fri, 15 May 2026 06:02:49 -0700 (PDT) Received: from localhost.localdomain ([2600:1700:fb0:1bc0:8c2e:6a8e:445a:9169]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-439fc53f2acsm4155822fac.14.2026.05.15.06.02.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 May 2026 06:02:49 -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 V7 09/11] iio: imu: inv_icm42607: Add Wake on Movement to icm42607 Date: Fri, 15 May 2026 08:00:14 -0500 Message-ID: <20260515130018.237378-10-macroalpha82@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260515130018.237378-1-macroalpha82@gmail.com> References: <20260515130018.237378-1-macroalpha82@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260515_060410_072804_F0EE635E X-CRM114-Status: GOOD ( 23.88 ) 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 IGZvciB3YWtlIG9uIG1vdmVtZW50IGZvciB0aGUgaWNtNDI2MDcgZHJpdmVyLgoKU2lnbmVkLW9m Zi1ieTogQ2hyaXMgTW9yZ2FuIDxtYWNyb21vcmdhbkBob3RtYWlsLmNvbT4KLS0tCiBkcml2ZXJz L2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwNy5oICAgfCAgMzMgKysKIC4uLi9paW8v aW11L2ludl9pY200MjYwNy9pbnZfaWNtNDI2MDdfYWNjZWwuYyB8IDMwNCArKysrKysrKysrKysr KysrKysKIC4uLi9paW8vaW11L2ludl9pY200MjYwNy9pbnZfaWNtNDI2MDdfY29yZS5jICB8IDI2 NyArKysrKysrKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgNTk0IGluc2VydGlvbnMoKyksIDEw IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDcv aW52X2ljbTQyNjA3LmggYi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYw Ny5oCmluZGV4IDA5NWY0YTQ5NWUzZi4uMTZmNzkyOWQzZDBlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwNy5oCisrKyBiL2RyaXZlcnMvaWlvL2lt dS9pbnZfaWNtNDI2MDcvaW52X2ljbTQyNjA3LmgKQEAgLTExOSw2ICsxMTksMTQgQEAgc3RydWN0 IGludl9pY200MjYwN19zdXNwZW5kZWQgewogCWJvb2wgdGVtcDsKIH07CiAKK3N0cnVjdCBpbnZf aWNtNDI2MDdfYXBleCB7CisJdW5zaWduZWQgaW50IG9uOworCXN0cnVjdCB7CisJCXU2NCB2YWx1 ZTsKKwkJYm9vbCBlbmFibGU7CisJfSB3b207Cit9OworCiAvKioKICAqICBzdHJ1Y3QgaW52X2lj bTQyNjA3X3N0YXRlIC0gZHJpdmVyIHN0YXRlIHZhcmlhYmxlcwogICogIEBsb2NrOgkJbG9jayBm b3Igc2VyaWFsaXppbmcgbXVsdGlwbGUgcmVnaXN0ZXJzIGFjY2Vzcy4KQEAgLTEzMyw2ICsxNDEs NyBAQCBzdHJ1Y3QgaW52X2ljbTQyNjA3X3N1c3BlbmRlZCB7CiAgKiAgQGluZGlvX2d5cm86CWd5 cm9zY29wZSBJSU8gZGV2aWNlLgogICogIEBpbmRpb19hY2NlbDoJYWNjZWxlcm9tZXRlciBJSU8g ZGV2aWNlLgogICogIEB0aW1lc3RhbXA6ICAgICAgICAgaW50ZXJydXB0IHRpbWVzdGFtcHMuCisg KiAgQGFwZXg6CQlBUEVYIChBZHZhbmNlZCBQZWRvbWV0ZXIgYW5kIEV2ZW50IGRldGVjdGlvbikg bWFuYWdlbWVudAogICogIEBmaWZvOgkJRklGTyBtYW5hZ2VtZW50IHN0cnVjdHVyZS4KICAqICBA YnVmZmVyOgkJZGF0YSB0cmFuc2ZlciBidWZmZXIgYWxpZ25lZCBmb3IgRE1BLgogICovCkBAIC0x NTEsNiArMTYwLDcgQEAgc3RydWN0IGludl9pY200MjYwN19zdGF0ZSB7CiAJc3RydWN0IHsKIAkJ czY0IGFjY2VsOwogCX0gdGltZXN0YW1wOworCXN0cnVjdCBpbnZfaWNtNDI2MDdfYXBleCBhcGV4 OwogCXN0cnVjdCBpbnZfaWNtNDI2MDdfZmlmbyBmaWZvOwogCV9fYmUxNiBidWZmZXJbM10gX19h bGlnbmVkKElJT19ETUFfTUlOQUxJR04pOwogfTsKQEAgLTM3Niw2ICszODYsMTggQEAgc3RydWN0 IGludl9pY200MjYwN19zZW5zb3Jfc3RhdGUgewogI2RlZmluZSBJTlZfSUNNNDI2MDdQX1dIT0FN SQkJCQkweDYwCiAjZGVmaW5lIElOVl9JQ000MjYwN19XSE9BTUkJCQkJMHg2NwogCisvKiBCYW5r IDIvMyByZWdpc3RlciBhY2Nlc3MgKi8KKyNkZWZpbmUgSU5WX0lDTTQyNjA3X0JMS19TRUxfVwkJ CQkweDc5CisjZGVmaW5lIElOVl9JQ000MjYwN19NQUREUl9XCQkJCTB4N0EKKyNkZWZpbmUgSU5W X0lDTTQyNjA3X01fVwkJCQkweDdCCisjZGVmaW5lIElOVl9JQ000MjYwN19CTEtfU0VMX1IJCQkJ MHg3QworI2RlZmluZSBJTlZfSUNNNDI2MDdfTUFERFJfUgkJCQkweDdECisjZGVmaW5lIElOVl9J Q000MjYwN19NX1IJCQkJMHg3RQorCisjZGVmaW5lIElOVl9JQ000MjYwN19NUkVHXzEJCQkJMHgw MAorI2RlZmluZSBJTlZfSUNNNDI2MDdfTVJFR18yCQkJCTB4MjgKKyNkZWZpbmUgSU5WX0lDTTQy NjA3X01SRUdfMwkJCQkweDUwCisKIC8qIFNsZWVwIHRpbWVzIHJlcXVpcmVkIGJ5IHRoZSBkcml2 ZXIgKi8KICNkZWZpbmUgSU5WX0lDTTQyNjA3X1BPV0VSX1VQX1RJTUVfVVMJCQkxMDAwMDAKICNk ZWZpbmUgSU5WX0lDTTQyNjA3X1JFU0VUX1RJTUVfTVMJCQkxCkBAIC0zODQsNiArNDA2LDcgQEAg c3RydWN0IGludl9pY200MjYwN19zZW5zb3Jfc3RhdGUgewogI2RlZmluZSBJTlZfSUNNNDI2MDdf R1lST19TVE9QX1RJTUVfTVMJCQkxNTAKICNkZWZpbmUgSU5WX0lDTTQyNjA3X1RFTVBfU1RBUlRV UF9USU1FX01TCQkxNAogI2RlZmluZSBJTlZfSUNNNDI2MDdfU1VTUEVORF9ERUxBWV9NUwkJCTIw MDAKKyNkZWZpbmUgSU5WX0lDTTQyNjA3X01SRUdfREVMQVlfVVMJCQkxMAogCiB0eXBlZGVmIGlu dCAoKmludl9pY200MjYwN19idXNfc2V0dXApKHN0cnVjdCBpbnZfaWNtNDI2MDdfc3RhdGUgKik7 CiAKQEAgLTM5Miw2ICs0MTUsOSBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGludl9pY200MjYwN19o dyBpbnZfaWNtNDI2MDdfaHdfZGF0YTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW52X2ljbTQyNjA3 X2h3IGludl9pY200MjYwN3BfaHdfZGF0YTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgZGV2X3BtX29w cyBpbnZfaWNtNDI2MDdfcG1fb3BzOwogCitpbnQgaW52X2ljbTQyNjA3X21yZWdfd3JpdGUoc3Ry dWN0IHJlZ21hcCAqbWFwLCB1bnNpZ25lZCBpbnQgYmFuaywKKwkJCSAgICB1OCByZWcsIHU4IGRh dGEpOworCiBjb25zdCBzdHJ1Y3QgaWlvX21vdW50X21hdHJpeCAqCiBpbnZfaWNtNDI2MDdfZ2V0 X21vdW50X21hdHJpeChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAogCQkJICAgICAgY29uc3Qg c3RydWN0IGlpb19jaGFuX3NwZWMgKmNoYW4pOwpAQCAtNDA1LDYgKzQzMSw5IEBAIGludCBpbnZf aWNtNDI2MDdfc2V0X2FjY2VsX2NvbmYoc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAqc3QsCiBp bnQgaW52X2ljbTQyNjA3X3NldF90ZW1wX2NvbmYoc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAq c3QsIGJvb2wgZW5hYmxlLAogCQkJICAgICAgIHVuc2lnbmVkIGludCAqc2xlZXBfbXMpOwogCitp bnQgaW52X2ljbTQyNjA3X2VuYWJsZV93b20oc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAqc3Qp OworaW50IGludl9pY200MjYwN19kaXNhYmxlX3dvbShzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0YXRl ICpzdCk7CisKIGludCBpbnZfaWNtNDI2MDdfY29yZV9wcm9iZShzdHJ1Y3QgcmVnbWFwICpyZWdt YXAsIGNvbnN0IHN0cnVjdCBpbnZfaWNtNDI2MDdfaHcgKmh3LAogCQkJICAgIGludl9pY200MjYw N19idXNfc2V0dXAgYnVzX3NldHVwKTsKIApAQCAtNDEyLDQgKzQ0MSw4IEBAIHN0cnVjdCBpaW9f ZGV2ICppbnZfaWNtNDI2MDdfYWNjZWxfaW5pdChzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0YXRlICpz dCk7CiAKIGludCBpbnZfaWNtNDI2MDdfYWNjZWxfcGFyc2VfZmlmbyhzdHJ1Y3QgaWlvX2RldiAq aW5kaW9fZGV2KTsKIAordm9pZCBpbnZfaWNtNDI2MDdfYWNjZWxfaGFuZGxlX2V2ZW50cyhzdHJ1 Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAorCQkJCSAgICAgIHVuc2lnbmVkIGludCBzdGF0dXMyLCB1 bnNpZ25lZCBpbnQgc3RhdHVzMywKKwkJCQkgICAgICBzNjQgdGltZXN0YW1wKTsKKwogI2VuZGlm CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwN19h Y2NlbC5jIGIvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwNy9pbnZfaWNtNDI2MDdfYWNjZWwu YwppbmRleCBiMzU0YTg0ZmQyZWQuLjUwNDI0NWIwMjgyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9p aW8vaW11L2ludl9pY200MjYwNy9pbnZfaWNtNDI2MDdfYWNjZWwuYworKysgYi9kcml2ZXJzL2lp by9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwN19hY2NlbC5jCkBAIC02OSw2ICs2OSwxNiBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWNfZXh0X2luZm8gaW52X2ljbTQyNjA3 X2FjY2VsX2V4dF9pbmZvc1tdID0gewogCXsgfQogfTsKIAorLyogV29NIGV2ZW50OiByaXNpbmcg Uk9DICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19ldmVudF9zcGVjIGludl9pY200MjYwN193 b21fZXZlbnRzW10gPSB7CisJeworCQkudHlwZSA9IElJT19FVl9UWVBFX1JPQywKKwkJLmRpciA9 IElJT19FVl9ESVJfUklTSU5HLAorCQkubWFza19zZXBhcmF0ZSA9IEJJVChJSU9fRVZfSU5GT19F TkFCTEUpIHwKKwkJCQkgQklUKElJT19FVl9JTkZPX1ZBTFVFKSwKKwl9LAorfTsKKwogc3RhdGlj IGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGludl9pY200MjYwN19hY2NlbF9jaGFubmVsc1td ID0gewogCUlOVl9JQ000MjYwN19BQ0NFTF9DSEFOKElJT19NT0RfWCwgSU5WX0lDTTQyNjA3X0FD Q0VMX1NDQU5fWCwKIAkJCQlpbnZfaWNtNDI2MDdfYWNjZWxfZXh0X2luZm9zKSwKQEAgLTc4LDYg Kzg4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGludl9pY200MjYwN19h Y2NlbF9jaGFubmVsc1tdID0gewogCQkJCWludl9pY200MjYwN19hY2NlbF9leHRfaW5mb3MpLAog CUlOVl9JQ000MjYwN19URU1QX0NIQU4oSU5WX0lDTTQyNjA3X0FDQ0VMX1NDQU5fVEVNUCksCiAJ SUlPX0NIQU5fU09GVF9USU1FU1RBTVAoSU5WX0lDTTQyNjA3X0FDQ0VMX1NDQU5fVElNRVNUQU1Q KSwKKwlJTlZfSUNNNDI2MDdfQUNDRUxfRVZFTlRfQ0hBTihJSU9fTU9EX1hfT1JfWV9PUl9aLCBp bnZfaWNtNDI2MDdfd29tX2V2ZW50cywKKwkJCQkgICAgICBBUlJBWV9TSVpFKGludl9pY200MjYw N193b21fZXZlbnRzKSksCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19ldmVudF9zcGVj IGludl9pY200MjYwN19tb3Rpb25fZXZlbnRzW10gPSB7CkBAIC0yMDksNiArMjIxLDE4MSBAQCBz dGF0aWMgaW50IGludl9pY200MjYwN19hY2NlbF9yZWFkX3NlbnNvcihzdHJ1Y3QgaWlvX2RldiAq aW5kaW9fZGV2LAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdW5zaWduZWQgaW50IGludl9pY200 MjYwN19hY2NlbF9jb252ZXJ0X3JvY190b193b20odTY0IHJvYywKKwkJCQkJCQkgIGludCBhY2Nl bF9oeiwgaW50IGFjY2VsX3VoeikKK3sKKwkvKiAxMDAwLzI1Nm1nIHBlciBMU0IgY29udmVydGVk IGluIMK1bS9zwrIgKi8KKwljb25zdCB1bnNpZ25lZCBpbnQgY29udmVydCA9ICg5ODA3VSAqIChN SUNSTyAvIE1JTExJKSkgLyAyNTZVOworCXU2NCB2YWx1ZTsKKwl1NjQgZnJlcV91aHo7CisKKwkv KiByZXR1cm4gMCBvbmx5IGlmIHJvYyBpcyAwICovCisJaWYgKHJvYyA9PSAwKQorCQlyZXR1cm4g MDsKKworCWZyZXFfdWh6ID0gKHU2NClhY2NlbF9oeiAqIE1JQ1JPICsgKHU2NClhY2NlbF91aHo7 CisJdmFsdWUgPSBkaXY2NF91NjQocm9jLCAoZnJlcV91aHogKiAodTY0KWNvbnZlcnQpIC8gTUlD Uk8pOworCisJLyogbGltaXQgdmFsdWUgdG8gOCBiaXRzIGFuZCBwcmV2ZW50IDAgKi8KKwlyZXR1 cm4gY2xhbXAodmFsdWUsIDEsIDI1NSk7Cit9CisKK3N0YXRpYyB1NjQgaW52X2ljbTQyNjA3X2Fj Y2VsX2NvbnZlcnRfd29tX3RvX3JvYyh1bnNpZ25lZCBpbnQgdGhyZXNob2xkLAorCQkJCQkJIGlu dCBhY2NlbF9oeiwgaW50IGFjY2VsX3VoeikKK3sKKwkvKiAxMDAwLzI1Nm1nIHBlciBMU0IgY29u dmVydGVkIGluIMK1bS9zwrIgKi8KKwljb25zdCB1bnNpZ25lZCBpbnQgY29udmVydCA9ICg5ODA3 VSAqIChNSUNSTyAvIE1JTExJKSkgLyAyNTZVOworCXU2NCB2YWx1ZTsKKwl1NjQgZnJlcV91aHo7 CisKKwl2YWx1ZSA9IHRocmVzaG9sZCAqIGNvbnZlcnQ7CisJZnJlcV91aHogPSAodTY0KWFjY2Vs X2h6ICogTUlDUk8gKyAodTY0KWFjY2VsX3VoejsKKworCS8qIGNvbXB1dGUgdGhlIGRpZmZlcmVu dGlhbCBieSBtdWx0aXBseWluZyBieSB0aGUgZnJlcXVlbmN5ICovCisJcmV0dXJuIGRpdl91NjQo dmFsdWUgKiBmcmVxX3VoeiwgTUlDUk8pOworfQorCitzdGF0aWMgaW50IGludl9pY200MjYwN19h Y2NlbF9zZXRfd29tX3RocmVzaG9sZChzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0YXRlICpzdCwKKwkJ CQkJCXU2NCB2YWx1ZSwKKwkJCQkJCWludCBhY2NlbF9oeiwgaW50IGFjY2VsX3VoeikKK3sKKwl1 bnNpZ25lZCBpbnQgdGhyZXNob2xkOworCWludCBpLCByZXQ7CisKKwkvKiBjb252ZXJ0IHJvYyB0 byB3b20gdGhyZXNob2xkIGFuZCBjb252ZXJ0IGJhY2sgdG8gaGFuZGxlIGNsaXBwaW5nICovCisJ dGhyZXNob2xkID0gaW52X2ljbTQyNjA3X2FjY2VsX2NvbnZlcnRfcm9jX3RvX3dvbSh2YWx1ZSwg YWNjZWxfaHosIGFjY2VsX3Voeik7CisJdmFsdWUgPSBpbnZfaWNtNDI2MDdfYWNjZWxfY29udmVy dF93b21fdG9fcm9jKHRocmVzaG9sZCwgYWNjZWxfaHosIGFjY2VsX3Voeik7CisKKwlkZXZfZGJn KHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5tYXApLCAid29tX3RocmVzaG9sZDogMHgleFxuIiwgdGhy ZXNob2xkKTsKKworCXN0LT5hcGV4LndvbS52YWx1ZSA9IHZhbHVlOworCisJLyogNDI2MDdQIGNh bm5vdCBzZXQgV29NIHRocmVzaG9sZC4gKi8KKwlpZiAoc3QtPmh3LT53aG9hbWkgPT0gSU5WX0lD TTQyNjA3UF9XSE9BTUkpCisJCXJldHVybiAwOworCisJLyogc2V0IGFjY2VsIFdvTSB0aHJlc2hv bGQgZm9yIHRoZSAzIGF4ZXMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CisJCXJldCA9 IGludl9pY200MjYwN19tcmVnX3dyaXRlKHN0LT5tYXAsIElOVl9JQ000MjYwN19NUkVHXzIsCisJ CQkJCSAgICAgIElOVl9JQ000MjYwN19SRUdfQUNDRUxfV09NX1hfVEhSICsgaSwKKwkJCQkJICAg ICAgdGhyZXNob2xkKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgX2ludl9pY200MjYwN19hY2NlbF9lbmFibGVfd29tKHN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYpCit7CisJc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAqc3Qg PSBpaW9fZGV2aWNlX2dldF9kcnZkYXRhKGluZGlvX2Rldik7CisJc3RydWN0IGludl9pY200MjYw N19zZW5zb3Jfc3RhdGUgKmFjY2VsX3N0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKKwlzdHJ1Y3Qg aW52X2ljbTQyNjA3X3NlbnNvcl9jb25mIGNvbmYgPSBJTlZfSUNNNDI2MDdfU0VOU09SX0NPTkZf SU5JVDsKKwl1bnNpZ25lZCBpbnQgc2xlZXBfbXMgPSAwOworCWludCByZXQ7CisKKwlzY29wZWRf Z3VhcmQobXV0ZXgsICZzdC0+bG9jaykgeworCQkvKiB0dXJuIG9uIGFjY2VsIHNlbnNvciAqLwor CQljb25mLm1vZGUgPSBhY2NlbF9zdC0+cG93ZXJfbW9kZTsKKwkJY29uZi5maWx0ZXIgPSBhY2Nl bF9zdC0+ZmlsdGVyOworCQlyZXQgPSBpbnZfaWNtNDI2MDdfc2V0X2FjY2VsX2NvbmYoc3QsICZj b25mLCAmc2xlZXBfbXMpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlpZiAo c2xlZXBfbXMpCisJCW1zbGVlcChzbGVlcF9tcyk7CisKKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZz dC0+bG9jaykgeworCQlyZXQgPSBpbnZfaWNtNDI2MDdfZW5hYmxlX3dvbShzdCk7CisJCWlmIChy ZXQpCisJCQlyZXR1cm4gcmV0OworCQlzdC0+YXBleC5vbisrOworCQlzdC0+YXBleC53b20uZW5h YmxlID0gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpbnZfaWNtNDI2 MDdfYWNjZWxfZW5hYmxlX3dvbShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQoreworCXN0cnVj dCBpbnZfaWNtNDI2MDdfc3RhdGUgKnN0ID0gaWlvX2RldmljZV9nZXRfZHJ2ZGF0YShpbmRpb19k ZXYpOworCXN0cnVjdCBkZXZpY2UgKnBkZXYgPSByZWdtYXBfZ2V0X2RldmljZShzdC0+bWFwKTsK KwlpbnQgcmV0OworCisJcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChwZGV2KTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gX2ludl9pY200MjYwN19hY2NlbF9lbmFi bGVfd29tKGluZGlvX2Rldik7CisJaWYgKHJldCkgeworCQlwbV9ydW50aW1lX3B1dF9hdXRvc3Vz cGVuZChwZGV2KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBfaW52X2ljbTQyNjA3X2FjY2VsX2Rpc2FibGVfd29tKHN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYpCit7CisJc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAqc3QgPSBpaW9fZGV2aWNlX2dl dF9kcnZkYXRhKGluZGlvX2Rldik7CisJc3RydWN0IGludl9pY200MjYwN19zZW5zb3JfY29uZiBj b25mID0gSU5WX0lDTTQyNjA3X1NFTlNPUl9DT05GX0lOSVQ7CisJdW5zaWduZWQgaW50IHNsZWVw X21zID0gMDsKKwlpbnQgcmV0OworCisJc2NvcGVkX2d1YXJkKG11dGV4LCAmc3QtPmxvY2spIHsK KwkJLyoKKwkJICogQ29uc2lkZXIgdGhhdCB0dXJuaW5nIG9mZiBXb00gaXMgYWx3YXlzIHdvcmtp bmcgdG8gYXZvaWQKKwkJICogYmxvY2tpbmcgdGhlIGNoaXAgaW4gb24gbW9kZSBhbmQgcHJldmVu dCBnb2luZyBiYWNrIHRvIHNsZWVwLgorCQkgKiBJZiB0aGVyZSBpcyBhbiBlcnJvciwgdGhlIGNo aXAgd2lsbCBhbnl3YXkgZ28gYmFjayB0byBzbGVlcAorCQkgKiBhbmQgdGhlIGZlYXR1cmUgd2ls bCBub3Qgd29yayBhbnltb3JlLgorCQkgKi8KKwkJc3QtPmFwZXgud29tLmVuYWJsZSA9IGZhbHNl OworCQlzdC0+YXBleC5vbi0tOworCQlpbnZfaWNtNDI2MDdfZGlzYWJsZV93b20oc3QpOworCQkv KiB0dXJuIG9mZiBhY2NlbCBzZW5zb3IgaWYgbm90IHVzZWQgKi8KKwkJaWYgKCFzdC0+YXBleC5v biAmJiAhaWlvX2J1ZmZlcl9lbmFibGVkKGluZGlvX2RldikpIHsKKwkJCWNvbmYubW9kZSA9IElO Vl9JQ000MjYwN19TRU5TT1JfTU9ERV9PRkY7CisJCQlyZXQgPSBpbnZfaWNtNDI2MDdfc2V0X2Fj Y2VsX2NvbmYoc3QsICZjb25mLCAmc2xlZXBfbXMpOworCQkJaWYgKHJldCkKKwkJCQlyZXR1cm4g cmV0OworCQl9CisJfQorCisJaWYgKHNsZWVwX21zKQorCQltc2xlZXAoc2xlZXBfbXMpOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaW52X2ljbTQyNjA3X2FjY2VsX2Rpc2FibGVfd29t KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpCit7CisJc3RydWN0IGludl9pY200MjYwN19zdGF0 ZSAqc3QgPSBpaW9fZGV2aWNlX2dldF9kcnZkYXRhKGluZGlvX2Rldik7CisJc3RydWN0IGRldmlj ZSAqcGRldiA9IHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5tYXApOworCWludCByZXQ7CisKKwlyZXQg PSBfaW52X2ljbTQyNjA3X2FjY2VsX2Rpc2FibGVfd29tKGluZGlvX2Rldik7CisKKwlwbV9ydW50 aW1lX3B1dF9hdXRvc3VzcGVuZChwZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgaW52 X2ljbTQyNjA3X2FjY2VsX2hhbmRsZV9ldmVudHMoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwK KwkJCQkgICAgICB1bnNpZ25lZCBpbnQgc3RhdHVzMiwgdW5zaWduZWQgaW50IHN0YXR1czMsCisJ CQkJICAgICAgczY0IHRpbWVzdGFtcCkKK3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0YXRlICpz dCA9IGlpb19kZXZpY2VfZ2V0X2RydmRhdGEoaW5kaW9fZGV2KTsKKwl1NjQgZXZfY29kZTsKKwor CS8qIGhhbmRsZSBXb00gZXZlbnQgKi8KKwlpZiAoc3QtPmFwZXgud29tLmVuYWJsZSAmJiAoc3Rh dHVzMiAmIElOVl9JQ000MjYwN19JTlRfU1RBVFVTMl9XT01fSU5UKSkgeworCQlldl9jb2RlID0g SUlPX01PRF9FVkVOVF9DT0RFKElJT19BQ0NFTCwgMCwgSUlPX01PRF9YX09SX1lfT1JfWiwKKwkJ CQkJICAgICBJSU9fRVZfVFlQRV9ST0MsIElJT19FVl9ESVJfUklTSU5HKTsKKwkJaWlvX3B1c2hf ZXZlbnQoaW5kaW9fZGV2LCBldl9jb2RlLCB0aW1lc3RhbXApOworCX0KK30KKwogc3RhdGljIGNv bnN0IGludCBpbnZfaWNtNDI2MDdfYWNjZWxfc2NhbGVfbmFub1tdWzJdID0gewogCVtJTlZfSUNN NDI2MDdfQUNDRUxfRlNfMTZHXSA9IHsgMCwgNDc4ODQwMyB9LAogCVtJTlZfSUNNNDI2MDdfQUND RUxfRlNfOEddID0geyAwLCAyMzk0MjAyIH0sCkBAIC0zMjksNiArNTE2LDEwIEBAIHN0YXRpYyBp bnQgaW52X2ljbTQyNjA3X2FjY2VsX3dyaXRlX29kcihzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwlyZXQgPSBpbnZfaWNtNDI2MDdfYWNjZWxf c2V0X3dvbV90aHJlc2hvbGQoc3QsIHN0LT5hcGV4LndvbS52YWx1ZSwgdmFsLCB2YWwyKTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gcmV0OworCiAJaW52X2ljbTQyNjA3X2J1ZmZlcl91cGRhdGVfZmlm b19wZXJpb2Qoc3QpOwogCWludl9pY200MjYwN19idWZmZXJfdXBkYXRlX3dhdGVybWFyayhzdCk7 CiAKQEAgLTQ3NSw2ICs2NjYsMTE1IEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjA3X2FjY2VsX2h3 Zmlmb19mbHVzaChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAogCXJldHVybiBzdC0+Zmlmby5u Yi5hY2NlbDsKIH0KIAorc3RhdGljIGludCBpbnZfaWNtNDI2MDdfYWNjZWxfcmVhZF9ldmVudF9j b25maWcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKKwkJCQkJCWNvbnN0IHN0cnVjdCBpaW9f Y2hhbl9zcGVjICpjaGFuLAorCQkJCQkJZW51bSBpaW9fZXZlbnRfdHlwZSB0eXBlLAorCQkJCQkJ ZW51bSBpaW9fZXZlbnRfZGlyZWN0aW9uIGRpcikKK3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0 YXRlICpzdCA9IGlpb19kZXZpY2VfZ2V0X2RydmRhdGEoaW5kaW9fZGV2KTsKKworCS8qIGhhbmRs ZSBvbmx5IFdvTSAocm9jIHJpc2luZykgZXZlbnQgKi8KKwlpZiAodHlwZSAhPSBJSU9fRVZfVFlQ RV9ST0MgfHwgZGlyICE9IElJT19FVl9ESVJfUklTSU5HKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CWd1YXJkKG11dGV4KSgmc3QtPmxvY2spOworCisJcmV0dXJuIHN0LT5hcGV4LndvbS5lbmFibGUg PyAxIDogMDsKK30KKworc3RhdGljIGludCBpbnZfaWNtNDI2MDdfYWNjZWxfd3JpdGVfZXZlbnRf Y29uZmlnKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCisJCQkJCQkgY29uc3Qgc3RydWN0IGlp b19jaGFuX3NwZWMgKmNoYW4sCisJCQkJCQkgZW51bSBpaW9fZXZlbnRfdHlwZSB0eXBlLAorCQkJ CQkJIGVudW0gaWlvX2V2ZW50X2RpcmVjdGlvbiBkaXIsCisJCQkJCQkgYm9vbCBzdGF0ZSkKK3sK KwlzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0YXRlICpzdCA9IGlpb19kZXZpY2VfZ2V0X2RydmRhdGEo aW5kaW9fZGV2KTsKKworCS8qIGhhbmRsZSBvbmx5IFdvTSAocm9jIHJpc2luZykgZXZlbnQgKi8K KwlpZiAodHlwZSAhPSBJSU9fRVZfVFlQRV9ST0MgfHwgZGlyICE9IElJT19FVl9ESVJfUklTSU5H KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXNjb3BlZF9ndWFyZChtdXRleCwgJnN0LT5sb2NrKSB7 CisJCWlmIChzdC0+YXBleC53b20uZW5hYmxlID09IHN0YXRlKQorCQkJcmV0dXJuIDA7CisJfQor CisJaWYgKHN0YXRlKQorCQlyZXR1cm4gaW52X2ljbTQyNjA3X2FjY2VsX2VuYWJsZV93b20oaW5k aW9fZGV2KTsKKworCXJldHVybiBpbnZfaWNtNDI2MDdfYWNjZWxfZGlzYWJsZV93b20oaW5kaW9f ZGV2KTsKK30KKworc3RhdGljIGludCBpbnZfaWNtNDI2MDdfYWNjZWxfcmVhZF9ldmVudF92YWx1 ZShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LAorCQkJCQkgICAgICAgY29uc3Qgc3RydWN0IGlp b19jaGFuX3NwZWMgKmNoYW4sCisJCQkJCSAgICAgICBlbnVtIGlpb19ldmVudF90eXBlIHR5cGUs CisJCQkJCSAgICAgICBlbnVtIGlpb19ldmVudF9kaXJlY3Rpb24gZGlyLAorCQkJCQkgICAgICAg ZW51bSBpaW9fZXZlbnRfaW5mbyBpbmZvLAorCQkJCQkgICAgICAgaW50ICp2YWwsIGludCAqdmFs MikKK3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0YXRlICpzdCA9IGlpb19kZXZpY2VfZ2V0X2Ry dmRhdGEoaW5kaW9fZGV2KTsKKwl1MzIgcmVtOworCisJLyogaGFuZGxlIG9ubHkgV29NIChyb2Mg cmlzaW5nKSBldmVudCB2YWx1ZSAqLworCWlmICh0eXBlICE9IElJT19FVl9UWVBFX1JPQyB8fCBk aXIgIT0gSUlPX0VWX0RJUl9SSVNJTkcpCisJCXJldHVybiAtRUlOVkFMOworCisJZ3VhcmQobXV0 ZXgpKCZzdC0+bG9jayk7CisKKwkvKiByZXR1cm4gdmFsdWUgaW4gbWljcm8gKi8KKwkqdmFsID0g ZGl2X3U2NF9yZW0oc3QtPmFwZXgud29tLnZhbHVlLCBNSUNSTywgJnJlbSk7CisJKnZhbDIgPSBy ZW07CisJcmV0dXJuIElJT19WQUxfSU5UX1BMVVNfTUlDUk87Cit9CisKK3N0YXRpYyBpbnQgX2lu dl9pY200MjYwN19hY2NlbF93b21fdmFsdWUoc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAqc3Qs CisJCQkJCSBpbnQgdmFsLCBpbnQgdmFsMikKK3sKKwl1NjQgdmFsdWU7CisJaW50IGFjY2VsX2h6 LCBhY2NlbF91aHo7CisJaW50IHJldDsKKworCWd1YXJkKG11dGV4KSgmc3QtPmxvY2spOworCisJ cmV0ID0gaW52X2ljbTQyNjA3X2FjY2VsX3JlYWRfb2RyKHN0LCAmYWNjZWxfaHosICZhY2NlbF91 aHopOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJdmFsdWUgPSAodTY0KXZhbCAq IE1JQ1JPICsgKHU2NCl2YWwyOworCisJcmV0dXJuIGludl9pY200MjYwN19hY2NlbF9zZXRfd29t X3RocmVzaG9sZChzdCwgdmFsdWUsCisJCQkJCQkgICAgYWNjZWxfaHosIGFjY2VsX3Voeik7Cit9 CisKK3N0YXRpYyBpbnQgaW52X2ljbTQyNjA3X2FjY2VsX3dyaXRlX2V2ZW50X3ZhbHVlKHN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYsCisJCQkJCQljb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyAq Y2hhbiwKKwkJCQkJCWVudW0gaWlvX2V2ZW50X3R5cGUgdHlwZSwKKwkJCQkJCWVudW0gaWlvX2V2 ZW50X2RpcmVjdGlvbiBkaXIsCisJCQkJCQllbnVtIGlpb19ldmVudF9pbmZvIGluZm8sCisJCQkJ CQlpbnQgdmFsLCBpbnQgdmFsMikKK3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0YXRlICpzdCA9 IGlpb19kZXZpY2VfZ2V0X2RydmRhdGEoaW5kaW9fZGV2KTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYg PSByZWdtYXBfZ2V0X2RldmljZShzdC0+bWFwKTsKKwlpbnQgcmV0OworCisJLyogaGFuZGxlIG9u bHkgV29NIChyb2MgcmlzaW5nKSBldmVudCB2YWx1ZSAqLworCWlmICh0eXBlICE9IElJT19FVl9U WVBFX1JPQyB8fCBkaXIgIT0gSUlPX0VWX0RJUl9SSVNJTkcpCisJCXJldHVybiAtRUlOVkFMOwor CisJaWYgKHZhbCA8IDAgfHwgdmFsMiA8IDApCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0g cG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CisKKwlyZXQgPSBfaW52X2ljbTQyNjA3X2FjY2VsX3dvbV92YWx1ZShzdCwgdmFsLCB2YWwyKTsK KworCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGRldik7CisKKwlyZXR1cm4gcmV0OworfQor CiBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19pbmZvIGludl9pY200MjYwN19hY2NlbF9pbmZvID0g ewogCS5yZWFkX3JhdyA9IGludl9pY200MjYwN19hY2NlbF9yZWFkX3JhdywKIAkucmVhZF9hdmFp bCA9IGludl9pY200MjYwN19hY2NlbF9yZWFkX2F2YWlsLApAQCAtNDgzLDYgKzc4MywxMCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGlpb19pbmZvIGludl9pY200MjYwN19hY2NlbF9pbmZvID0gewog CS51cGRhdGVfc2Nhbl9tb2RlID0gaW52X2ljbTQyNjA3X2FjY2VsX3VwZGF0ZV9zY2FuX21vZGUs CiAJLmh3Zmlmb19zZXRfd2F0ZXJtYXJrID0gaW52X2ljbTQyNjA3X2FjY2VsX2h3Zmlmb19zZXRf d2F0ZXJtYXJrLAogCS5od2ZpZm9fZmx1c2hfdG9fYnVmZmVyID0gaW52X2ljbTQyNjA3X2FjY2Vs X2h3Zmlmb19mbHVzaCwKKwkucmVhZF9ldmVudF9jb25maWcgPSBpbnZfaWNtNDI2MDdfYWNjZWxf cmVhZF9ldmVudF9jb25maWcsCisJLndyaXRlX2V2ZW50X2NvbmZpZyA9IGludl9pY200MjYwN19h Y2NlbF93cml0ZV9ldmVudF9jb25maWcsCisJLnJlYWRfZXZlbnRfdmFsdWUgPSBpbnZfaWNtNDI2 MDdfYWNjZWxfcmVhZF9ldmVudF92YWx1ZSwKKwkud3JpdGVfZXZlbnRfdmFsdWUgPSBpbnZfaWNt NDI2MDdfYWNjZWxfd3JpdGVfZXZlbnRfdmFsdWUsCiB9OwogCiBzdHJ1Y3QgaWlvX2RldiAqaW52 X2ljbTQyNjA3X2FjY2VsX2luaXQoc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAqc3QpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwN19jb3JlLmMg Yi9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjA3L2ludl9pY200MjYwN19jb3JlLmMKaW5kZXgg MWU2ODU0NTFmNzg1Li44YWI4YjVmNzM5ZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2ltdS9p bnZfaWNtNDI2MDcvaW52X2ljbTQyNjA3X2NvcmUuYworKysgYi9kcml2ZXJzL2lpby9pbXUvaW52 X2ljbTQyNjA3L2ludl9pY200MjYwN19jb3JlLmMKQEAgLTE3LDYgKzE3LDU3IEBACiAjaW5jbHVk ZSAiaW52X2ljbTQyNjA3LmgiCiAjaW5jbHVkZSAiaW52X2ljbTQyNjA3X2J1ZmZlci5oIgogCisv KioKKyAqICBpbnZfaWNtNDI2MDdfbXJlZ193cml0ZSgpIC0gV3JpdGUgdmFsdWUgdG8gdXNlciBi YW5rCisgKiAgQG1hcDoJZGV2aWNlIHJlZ21hcAorICogIEBiYW5rOgltcmVnIHJlZ2lzdGVyIGJh bmsKKyAqICBAcmVnOglyZWdpc3RlciBpbiB0aGUgbXJlZyBiYW5rIHRvIHdyaXRlIHRvCisgKiAg QGRhdGE6CWRhdGEgdG8gd3JpdGUgdG8gcmVnaXN0ZXIKKyAqCisgKiAgV3JpdGUgYSBieXRlIG9m IGRhdGEgdG8gYmFuayAyIG9yIDMgYXMgZGVmaW5lZCBpbiB0aGUgZGF0YXNoZWV0LgorICogIFdy aXRlcyBhcmUgcGVyZm9ybWVkIGJ5IGZpcnN0IHdyaXRpbmcgd2hpY2ggYmFuayB0byB3cml0ZSB0 byB0aGUKKyAqICBiYW5rIHdyaXRlIHJlZ2lzdGVyLCB0aGVuIHdyaXRpbmcgdGhlIHJlZ2lzdGVy IGFkZHJlc3MsIHRoZW4KKyAqICB3cml0aW5nIHRoZSBkYXRhLgorICogIFJldHVybiAwIG9uIHN1 Y2Nlc3Mgb3IgZXJyb3Igb24gZXJyb3IuCisgKi8KK2ludCBpbnZfaWNtNDI2MDdfbXJlZ193cml0 ZShzdHJ1Y3QgcmVnbWFwICptYXAsIHVuc2lnbmVkIGludCBiYW5rLAorCQkJICAgIHU4IHJlZywg dTggZGF0YSkKK3sKKwljb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYgPSByZWdtYXBfZ2V0X2Rldmlj ZShtYXApOworCXN0cnVjdCBpbnZfaWNtNDI2MDdfc3RhdGUgKnN0ID0gZGV2X2dldF9kcnZkYXRh KGRldik7CisJdTggYnVmZmVyWzNdOworCWludCByZXQ7CisKKwkvKiBUaGUgSUNNNDI2MDdQIGRv ZXMgbm90IGhhdmUgYWRkaXRpb25hbCBiYW5rcyBmb3IgcmVnaXN0ZXJzLiAqLworCWlmIChzdC0+ aHctPndob2FtaSA9PSBJTlZfSUNNNDI2MDdQX1dIT0FNSSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwkvKiBCYW5rIHZhbHVlIGNhbiBvbmx5IGJlIGJhbmsyIG9yIGJhbmszLiAqLworCWlmIChiYW5r ICE9IElOVl9JQ000MjYwN19NUkVHXzIgJiYgYmFuayAhPSBJTlZfSUNNNDI2MDdfTVJFR18zKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWJ1ZmZlclswXSA9IGJhbms7CisJYnVmZmVyWzFdID0gcmVn OworCWJ1ZmZlclsyXSA9IGRhdGE7CisKKwkvKgorCSAqIFdyaXRlIGJhbmssIHJlZ2lzdGVyLCBh bmQgdmFsdWUgaW4gb25lIGJ1bGsgd3JpdGUuIFRoZW4gcGF1c2UKKwkgKiB0aGUgcmVxdWlyZWQg dGltZSBhY2NvcmRpbmcgdG8gZGF0YXNoZWV0LgorCSAqLworCXJldCA9IHJlZ21hcF9idWxrX3dy aXRlKG1hcCwgSU5WX0lDTTQyNjA3X0JMS19TRUxfVywgYnVmZmVyLCAzKTsKKwlmc2xlZXAoSU5W X0lDTTQyNjA3X01SRUdfREVMQVlfVVMpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkv KiBTd2l0Y2ggYmFjayB0byBiYW5rMSBhbmQgcGF1c2UgdGhlIHJlcXVpcmVkIGFtb3VudCBvZiB0 aW1lLiAqLworCXJldCA9IHJlZ21hcF93cml0ZShtYXAsIElOVl9JQ000MjYwN19CTEtfU0VMX1cs IElOVl9JQ000MjYwN19NUkVHXzEpOworCWZzbGVlcChJTlZfSUNNNDI2MDdfTVJFR19ERUxBWV9V Uyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMg Ym9vbCBpbnZfaWNtNDI2MDdfaXNfdm9sYXRpbGVfcmVnKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHJlZykKIHsKIAlzd2l0Y2ggKHJlZykgewpAQCAtMjgsNiArNzksNyBAQCBzdGF0 aWMgYm9vbCBpbnZfaWNtNDI2MDdfaXNfdm9sYXRpbGVfcmVnKHN0cnVjdCBkZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IHJlZykKIAljYXNlIElOVl9JQ000MjYwN19SRUdfRklGT19MT1NUX1BLVDAg Li4uIElOVl9JQ000MjYwN19SRUdfQVBFWF9EQVRBMzoKIAljYXNlIElOVl9JQ000MjYwN19SRUdf SU5UX1NUQVRVU19EUkRZOgogCWNhc2UgSU5WX0lDTTQyNjA3X1JFR19JTlRfU1RBVFVTIC4uLiBJ TlZfSUNNNDI2MDdfUkVHX0ZJRk9fREFUQToKKwljYXNlIElOVl9JQ000MjYwN19CTEtfU0VMX1cg Li4uIElOVl9JQ000MjYwN19NX1I6CiAJCXJldHVybiB0cnVlOwogCX0KIApAQCAtMjM4LDYgKzI5 MCwzOCBAQCBpbnQgaW52X2ljbTQyNjA3X3NldF90ZW1wX2NvbmYoc3RydWN0IGludl9pY200MjYw N19zdGF0ZSAqc3QsIGJvb2wgZW5hYmxlLAogCQkJCQkgIHNsZWVwX21zKTsKIH0KIAoraW50IGlu dl9pY200MjYwN19lbmFibGVfd29tKHN0cnVjdCBpbnZfaWNtNDI2MDdfc3RhdGUgKnN0KQorewor CWludCByZXQ7CisKKwkvKiBlbmFibGUgV29NIGhhcmR3YXJlICovCisJcmV0ID0gcmVnbWFwX3dy aXRlKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdfV09NX0NPTkZJRywKKwkJCSAgIEZJRUxEX1BS RVAoSU5WX0lDTTQyNjA3X1dPTV9DT05GSUdfSU5UX0RVUl9NQVNLLCAxKSB8CisJCQkgICBJTlZf SUNNNDI2MDdfV09NX0NPTkZJR19NT0RFIHwKKwkJCSAgIElOVl9JQ000MjYwN19XT01fQ09ORklH X0VOKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogZW5hYmxlIFdvTSBpbnRlcnJ1 cHQgKi8KKwlyZXR1cm4gcmVnbWFwX3NldF9iaXRzKHN0LT5tYXAsIElOVl9JQ000MjYwN19SRUdf SU5UX1NPVVJDRTEsCisJCQkgICAgICAgSU5WX0lDTTQyNjA3X0lOVF9TT1VSQ0UxX1dPTV9JTlQx X0VOKTsKK30KKworaW50IGludl9pY200MjYwN19kaXNhYmxlX3dvbShzdHJ1Y3QgaW52X2ljbTQy NjA3X3N0YXRlICpzdCkKK3sKKwlpbnQgcmV0OworCisJLyogZGlzYWJsZSBXb00gaW50ZXJydXB0 ICovCisJcmV0ID0gcmVnbWFwX2NsZWFyX2JpdHMoc3QtPm1hcCwgSU5WX0lDTTQyNjA3X1JFR19J TlRfU09VUkNFMSwKKwkJCQlJTlZfSUNNNDI2MDdfSU5UX1NPVVJDRTFfV09NX0lOVDFfRU4pOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBkaXNhYmxlIFdvTSBoYXJkd2FyZSAqLwor CXJldHVybiByZWdtYXBfY2xlYXJfYml0cyhzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVHX1dPTV9D T05GSUcsCisJCQkJIElOVl9JQ000MjYwN19XT01fQ09ORklHX0VOKTsKK30KKwogc3RhdGljIGlu dCBpbnZfaWNtNDI2MDdfc2V0X2NvbmYoc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAqc3QsCiAJ CQkJIGNvbnN0IHN0cnVjdCBpbnZfaWNtNDI2MDdfY29uZiAqY29uZikKIHsKQEAgLTM2MCw2ICs0 NDQsMTE0IEBAIHN0YXRpYyBpbnQgaW52X2ljbTQyNjA3X3NldHVwKHN0cnVjdCBpbnZfaWNtNDI2 MDdfc3RhdGUgKnN0LAogCXJldHVybiBpbnZfaWNtNDI2MDdfc2V0X2NvbmYoc3QsIHN0LT5ody0+ Y29uZik7CiB9CiAKK3N0YXRpYyBpcnFyZXR1cm5fdCBpbnZfaWNtNDI2MDdfaXJxX3RpbWVzdGFt cChpbnQgaXJxLCB2b2lkICpfZGF0YSkKK3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0YXRlICpz dCA9IF9kYXRhOworCisJc3QtPnRpbWVzdGFtcC5hY2NlbCA9IGlpb19nZXRfdGltZV9ucyhzdC0+ aW5kaW9fYWNjZWwpOworCisJcmV0dXJuIElSUV9XQUtFX1RIUkVBRDsKK30KKworc3RhdGljIGly cXJldHVybl90IGludl9pY200MjYwN19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpfZGF0YSkK K3sKKwlzdHJ1Y3QgaW52X2ljbTQyNjA3X3N0YXRlICpzdCA9IF9kYXRhOworCXN0cnVjdCBkZXZp Y2UgKmRldiA9IHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5tYXApOworCXVuc2lnbmVkIGludCBzdGF0 dXM7CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJnN0LT5sb2NrKTsKKworCWlmIChzdC0+YXBl eC5vbikgeworCQl1OCBidWZmZXJbMl07CisKKwkJLyogcmVhZCBJTlRfU1RBVFVTMiBhbmQgSU5U X1NUQVRVUzMgaW4gMSBvcGVyYXRpb24gKi8KKwkJcmV0ID0gcmVnbWFwX2J1bGtfcmVhZChzdC0+ bWFwLCBJTlZfSUNNNDI2MDdfUkVHX0lOVF9TVEFUVVMyLCBidWZmZXIsIDIpOworCQlpZiAocmV0 KSB7CisJCQlkZXZfZXJyKGRldiwgIkludGVycnVwdCBzdGF0dXMgcmVhZCBlcnJvciAlZFxuIiwg cmV0KTsKKwkJCWdvdG8gb3V0X3VubG9jazsKKwkJfQorCisJCWludl9pY200MjYwN19hY2NlbF9o YW5kbGVfZXZlbnRzKHN0LT5pbmRpb19hY2NlbCwgYnVmZmVyWzBdLCBidWZmZXJbMV0sCisJCQkJ CQkgc3QtPnRpbWVzdGFtcC5hY2NlbCk7CisJfQorCisJcmV0ID0gcmVnbWFwX3JlYWQoc3QtPm1h cCwgSU5WX0lDTTQyNjA3X1JFR19JTlRfU1RBVFVTLCAmc3RhdHVzKTsKKwlpZiAocmV0KSB7CisJ CWRldl9lcnIoZGV2LCAiSW50ZXJydXQgc3RhdHVzIHJlYWQgZXJyb3IgJWRcbiIsIHJldCk7CisJ CWdvdG8gb3V0X3VubG9jazsKKwl9CisKKwlpZiAoc3RhdHVzICYgSU5WX0lDTTQyNjA3X0lOVF9T VEFUVVNfRklGT19GVUxMKQorCQlkZXZfd2FybihkZXYsICJGSUZPIGZ1bGwgZGF0YSBsb3N0IVxu Iik7CisKKwlpZiAoc3RhdHVzICYgSU5WX0lDTTQyNjA3X0lOVF9TVEFUVVNfRklGT19USFMpIHsK KwkJbXV0ZXhfdW5sb2NrKCZzdC0+bG9jayk7CisJCXJldCA9IGludl9pY200MjYwN19idWZmZXJf Zmlmb19yZWFkKHN0LCAwKTsKKwkJaWYgKHJldCkgeworCQkJZGV2X2VycihkZXYsICJGSUZPIHJl YWQgZXJyb3IgJWRcbiIsIHJldCk7CisJCQlnb3RvIG91dF91bmxvY2s7CisJCX0KKworCQltdXRl eF9sb2NrKCZzdC0+bG9jayk7CisJCXJldCA9IGludl9pY200MjYwN19idWZmZXJfZmlmb19wYXJz ZShzdCk7CisJCWlmIChyZXQpCisJCQlkZXZfZXJyKGRldiwgIkZJRk8gcGFyc2luZyBlcnJvciAl ZFxuIiwgcmV0KTsKKwl9CisKK291dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZzdC0+bG9jayk7 CisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCisvKioKKyAqIGludl9pY200MjYwN19pcnFfaW5p dCgpIC0gaW5pdGlhbGl6ZSBpbnQgcGluIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcgorICogQHN0OgkJ ZHJpdmVyIGludGVybmFsIHN0YXRlCisgKiBAaXJxOglpcnEgbnVtYmVyCisgKiBAaXJxX3R5cGU6 CWlycSB0cmlnZ2VyIHR5cGUKKyAqIEBvcGVuX2RyYWluOgl0cnVlIGlmIGlycSBpcyBvcGVuIGRy YWluLCBmYWxzZSBmb3IgcHVzaC1wdWxsCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGEg bmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBpbnQgaW52X2ljbTQy NjA3X2lycV9pbml0KHN0cnVjdCBpbnZfaWNtNDI2MDdfc3RhdGUgKnN0LCBpbnQgaXJxLAorCQkJ CWludCBpcnFfdHlwZSwgYm9vbCBvcGVuX2RyYWluKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9 IHJlZ21hcF9nZXRfZGV2aWNlKHN0LT5tYXApOworCXVuc2lnbmVkIGludCB2YWwgPSAwOworCWlu dCByZXQ7CisKKwlzd2l0Y2ggKGlycV90eXBlKSB7CisJY2FzZSBJUlFGX1RSSUdHRVJfUklTSU5H OgorCWNhc2UgSVJRRl9UUklHR0VSX0hJR0g6CisJCXZhbCA9IElOVl9JQ000MjYwN19JTlRfQ09O RklHX0lOVDFfQUNUSVZFX0hJR0g7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXZhbCA9IElOVl9J Q000MjYwN19JTlRfQ09ORklHX0lOVDFfQUNUSVZFX0xPVzsKKwkJYnJlYWs7CisJfQorCisJc3dp dGNoIChpcnFfdHlwZSkgeworCWNhc2UgSVJRRl9UUklHR0VSX0xPVzoKKwljYXNlIElSUUZfVFJJ R0dFUl9ISUdIOgorCQl2YWwgfD0gSU5WX0lDTTQyNjA3X0lOVF9DT05GSUdfSU5UMV9MQVRDSEVE OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwlpZiAoIW9wZW5fZHJhaW4p CisJCXZhbCB8PSBJTlZfSUNNNDI2MDdfSU5UX0NPTkZJR19JTlQxX1BVU0hfUFVMTDsKKworCXJl dCA9IHJlZ21hcF93cml0ZShzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVHX0lOVF9DT05GSUcsIHZh bCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlycV90eXBlIHw9IElSUUZfT05FU0hP VDsKKwlyZXR1cm4gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShkZXYsIGlycSwgaW52X2ljbTQy NjA3X2lycV90aW1lc3RhbXAsCisJCQkJCSBpbnZfaWNtNDI2MDdfaXJxX2hhbmRsZXIsIGlycV90 eXBlLAorCQkJCQkgc3QtPmh3LT5uYW1lLCBzdCk7Cit9CisKIHN0YXRpYyBpbnQgaW52X2ljbTQy NjA3X2VuYWJsZV92ZGRpb19yZWcoc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAqc3QpCiB7CiAJ aW50IHJldDsKQEAgLTM5MywxMyArNTg1LDE4IEBAIGludCBpbnZfaWNtNDI2MDdfY29yZV9wcm9i ZShzdHJ1Y3QgcmVnbWFwICpyZWdtYXAsIGNvbnN0IHN0cnVjdCBpbnZfaWNtNDI2MDdfaHcKIAlz dHJ1Y3QgZGV2aWNlICpkZXYgPSByZWdtYXBfZ2V0X2RldmljZShyZWdtYXApOwogCXN0cnVjdCBm d25vZGVfaGFuZGxlICpmd25vZGUgPSBkZXZfZndub2RlKGRldik7CiAJc3RydWN0IGludl9pY200 MjYwN19zdGF0ZSAqc3Q7Ci0JaW50IGlycTsKKwlpbnQgaXJxLCBpcnFfdHlwZTsKKwlib29sIG9w ZW5fZHJhaW47CiAJaW50IHJldDsKIAogCWlycSA9IGZ3bm9kZV9pcnFfZ2V0X2J5bmFtZShmd25v ZGUsICJJTlQxIik7CiAJaWYgKCEoaXJxID4gMCkpCiAJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRl diwgLUVJTlZBTCwgIlVuYWJsZSB0byBnZXQgSU5UMSBpbnRlcnJ1cHRcbiIpOwogCisJaXJxX3R5 cGUgPSBpcnFfZ2V0X3RyaWdnZXJfdHlwZShpcnEpOworCisJb3Blbl9kcmFpbiA9IGRldmljZV9w cm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAiZHJpdmUtb3Blbi1kcmFpbiIpOworCiAJc3QgPSBkZXZt X2t6YWxsb2MoZGV2LCBzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFzdCkKIAkJcmV0 dXJuIC1FTk9NRU07CkBAIC00NTksNiArNjU2LDExIEBAIGludCBpbnZfaWNtNDI2MDdfY29yZV9w cm9iZShzdHJ1Y3QgcmVnbWFwICpyZWdtYXAsIGNvbnN0IHN0cnVjdCBpbnZfaWNtNDI2MDdfaHcK IAlpZiAoSVNfRVJSKHN0LT5pbmRpb19hY2NlbCkpCiAJCXJldHVybiBQVFJfRVJSKHN0LT5pbmRp b19hY2NlbCk7CiAKKwkvKiBJbml0aWFsaXplIGludGVycnVwdCBoYW5kbGluZyAqLworCXJldCA9 IGludl9pY200MjYwN19pcnFfaW5pdChzdCwgaXJxLCBpcnFfdHlwZSwgb3Blbl9kcmFpbik7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTF9O U19HUEwoaW52X2ljbTQyNjA3X2NvcmVfcHJvYmUsICJJSU9fSUNNNDI2MDciKTsKQEAgLTQ2Niw2 ICs2NjgsOSBAQCBFWFBPUlRfU1lNQk9MX05TX0dQTChpbnZfaWNtNDI2MDdfY29yZV9wcm9iZSwg IklJT19JQ000MjYwNyIpOwogc3RhdGljIGludCBpbnZfaWNtNDI2MDdfc3VzcGVuZChzdHJ1Y3Qg ZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGludl9pY200MjYwN19zdGF0ZSAqc3QgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgZGV2aWNlICphY2NlbF9kZXY7CisJYm9vbCB3YWtldXA7 CisJaW50IGFjY2VsX2NvbmY7CiAJaW50IHJldDsKIAogCWd1YXJkKG11dGV4KSgmc3QtPmxvY2sp OwpAQCAtNDgyLDEyICs2ODcsMzYgQEAgc3RhdGljIGludCBpbnZfaWNtNDI2MDdfc3VzcGVuZChz dHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCXJldCA9IGludl9pY200 MjYwN19zZXRfcHdyX21nbXQwKHN0LCBJTlZfSUNNNDI2MDdfU0VOU09SX01PREVfT0ZGLAotCQkJ CQkgSU5WX0lDTTQyNjA3X1NFTlNPUl9NT0RFX09GRiwKLQkJCQkJIGZhbHNlLCBOVUxMKTsKLQlp ZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCWludl9pY200MjYwN19kaXNhYmxlX3ZkZGlvX3JlZyhz dCk7CisJLyoga2VlcCBjaGlwIG9uIGFuZCB3YWtlLXVwIGNhcGFibGUgaWYgQVBFWCBhbmQgd2Fr ZXVwIG9uICovCisJYWNjZWxfZGV2ID0gJnN0LT5pbmRpb19hY2NlbC0+ZGV2OworCXdha2V1cCA9 IHN0LT5hcGV4Lm9uICYmIGRldmljZV9tYXlfd2FrZXVwKGFjY2VsX2Rldik7CisJaWYgKHdha2V1 cCkgeworCQkvKiBrZWVwIGFjY2VsIG9uIGFuZCBzZXR1cCBpcnEgZm9yIHdha2V1cCAqLworCQlh Y2NlbF9jb25mID0gc3QtPmNvbmYuYWNjZWwubW9kZTsKKwkJZW5hYmxlX2lycV93YWtlKHN0LT5p cnEpOworCQlkaXNhYmxlX2lycV9ub3N5bmMoc3QtPmlycSk7CisJCXJldCA9IGludl9pY200MjYw N19zZXRfcHdyX21nbXQwKHN0LCBJTlZfSUNNNDI2MDdfU0VOU09SX01PREVfT0ZGLAorCQkJCQkJ IGFjY2VsX2NvbmYsIGZhbHNlLCBOVUxMKTsKKwkJaWYgKHJldCkgeworCQkJZW5hYmxlX2lycShz dC0+aXJxKTsKKwkJCWRpc2FibGVfaXJxX3dha2Uoc3QtPmlycSk7CisJCQlyZXR1cm4gcmV0Owor CQl9CisJfSBlbHNlIHsKKwkJLyogZGlzYWJsZSBBUEVYIGZlYXR1cmVzIGFuZCBhY2NlbCBpZiB3 YWtldXAgZGlzYWJsZWQgKi8KKwkJaWYgKHN0LT5hcGV4LndvbS5lbmFibGUpIHsKKwkJCXJldCA9 IGludl9pY200MjYwN19kaXNhYmxlX3dvbShzdCk7CisJCQlpZiAocmV0KQorCQkJCXJldHVybiBy ZXQ7CisJCX0KKwkJYWNjZWxfY29uZiA9IElOVl9JQ000MjYwN19TRU5TT1JfTU9ERV9PRkY7CisJ CXJldCA9IGludl9pY200MjYwN19zZXRfcHdyX21nbXQwKHN0LCBJTlZfSUNNNDI2MDdfU0VOU09S X01PREVfT0ZGLAorCQkJCQkJIElOVl9JQ000MjYwN19TRU5TT1JfTU9ERV9PRkYsCisJCQkJCQkg ZmFsc2UsIE5VTEwpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwkJaW52X2ljbTQyNjA3 X2Rpc2FibGVfdmRkaW9fcmVnKHN0KTsKKwl9CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTQ5Niw2ICs3 MjUsOCBAQCBzdGF0aWMgaW50IGludl9pY200MjYwN19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2 KQogewogCXN0cnVjdCBpbnZfaWNtNDI2MDdfc3RhdGUgKnN0ID0gZGV2X2dldF9kcnZkYXRhKGRl dik7CiAJc3RydWN0IGludl9pY200MjYwN19zZW5zb3Jfc3RhdGUgKmFjY2VsX3N0ID0gaWlvX3By aXYoc3QtPmluZGlvX2FjY2VsKTsKKwlzdHJ1Y3QgZGV2aWNlICphY2NlbF9kZXY7CisJYm9vbCB3 YWtldXA7CiAJaW50IHJldDsKIAogCWd1YXJkKG11dGV4KSgmc3QtPmxvY2spOwpAQCAtNTAzLDkg KzczNCwxOCBAQCBzdGF0aWMgaW50IGludl9pY200MjYwN19yZXN1bWUoc3RydWN0IGRldmljZSAq ZGV2KQogCWlmIChwbV9ydW50aW1lX3N1c3BlbmRlZChkZXYpKQogCQlyZXR1cm4gMDsKIAotCXJl dCA9IGludl9pY200MjYwN19lbmFibGVfdmRkaW9fcmVnKHN0KTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OworCS8qIGNoZWNrIHdha2V1cCBjYXBhYmlsaXR5ICovCisJYWNjZWxfZGV2ID0gJnN0 LT5pbmRpb19hY2NlbC0+ZGV2OworCXdha2V1cCA9IHN0LT5hcGV4Lm9uICYmIGRldmljZV9tYXlf d2FrZXVwKGFjY2VsX2Rldik7CisJLyogcmVzdG9yZSBpcnEgc3RhdGUgKi8KKwlpZiAod2FrZXVw KSB7CisJCWVuYWJsZV9pcnEoc3QtPmlycSk7CisJCWRpc2FibGVfaXJxX3dha2Uoc3QtPmlycSk7 CisJfSBlbHNlIHsKKwkJcmV0ID0gaW52X2ljbTQyNjA3X2VuYWJsZV92ZGRpb19yZWcoc3QpOwor CQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CiAKIAkvKiByZXN0b3JlIHNlbnNvcnMgc3Rh dGUsIG5vdGluZyBneXJvIHN0aWxsIG5vdCB5ZXQgc3VwcG9ydGVkLiAgKi8KIAlyZXQgPSBpbnZf aWNtNDI2MDdfc2V0X3B3cl9tZ210MChzdCwgSU5WX0lDTTQyNjA3X1NFTlNPUl9NT0RFX09GRiwK QEAgLTUxNCw2ICs3NTQsMTMgQEAgc3RhdGljIGludCBpbnZfaWNtNDI2MDdfcmVzdW1lKHN0cnVj dCBkZXZpY2UgKmRldikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJLyogcmVzdG9yZSBB UEVYIGZlYXR1cmVzIGlmIGRpc2FibGVkICovCisJaWYgKCF3YWtldXAgJiYgc3QtPmFwZXgud29t LmVuYWJsZSkgeworCQlyZXQgPSBpbnZfaWNtNDI2MDdfZW5hYmxlX3dvbShzdCk7CisJCWlmIChy ZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKwogCWlmIChzdC0+Zmlmby5vbikgewogCQlpbnZfc2Vu c29yc190aW1lc3RhbXBfcmVzZXQoJmFjY2VsX3N0LT50cyk7CiAJCXJldCA9IHJlZ21hcF93cml0 ZShzdC0+bWFwLCBJTlZfSUNNNDI2MDdfUkVHX0ZJRk9fQ09ORklHMSwKLS0gCjIuNDMuMAoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tj aGlwIG1haWxpbmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK