From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85D13C04E30 for ; Mon, 9 Dec 2019 13:03:47 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 66BB92077B for ; Mon, 9 Dec 2019 13:03:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 66BB92077B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 31DBA6E445; Mon, 9 Dec 2019 13:03:45 +0000 (UTC) Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8148A6E445 for ; Mon, 9 Dec 2019 13:03:43 +0000 (UTC) Received: by mail-wr1-x443.google.com with SMTP id w15so16168574wru.4 for ; Mon, 09 Dec 2019 05:03:43 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dHT6PYKG71EJ5XCptxqHpEoDdt3rwIzyUZOjEwT1+qw=; b=HsjH3Xrn6x6d9TIpYZY3ishrlcLTdBOKx4xEc+bmzfgDspF4AhcOWCOAfHY+PVYNWK d6r7kHq7aqHHOw9C+IDNMW0V53ZmhHl38Vq2qG1fbU8Sl1fcuFc0XY6SVa/Aty1WDX2b nYARpuxTNRaRvi5vmBNPllx2m2BjBPowacZytuhnMKYmuuyMm40+THmq6UqHAlvvsyvn R2KEn9weZkN2+kZmgeTiJKmnBEsmDU90XL+Hxp6RIAAtQKKqbIBNdSGWl3xTqxIMxW0M 64vyKdXsUyKQIAIMMInAqJZYgCAs0Uf8wmcQ5C8qxQ+r3JNAJk7XyBZUrkycHqRzIv3F eH9A== X-Gm-Message-State: APjAAAW19JAQD5Yd4fCu5PYSWYp0lU68nhqC3/pFJcnHBange+NoI0De rFM3fbNjXgr+L6L+w1QelfE= X-Google-Smtp-Source: APXvYqzLTK4YpvKeINeKLatkNFDwg1M0Xn3SBDnku7PvJ4P8nJEA3hKLzSZqFecoVQQxgMwWbNNBNw== X-Received: by 2002:a5d:4c85:: with SMTP id z5mr2057732wrs.42.1575896621568; Mon, 09 Dec 2019 05:03:41 -0800 (PST) Received: from localhost (pD9E518ED.dip0.t-ipconnect.de. [217.229.24.237]) by smtp.gmail.com with ESMTPSA id w13sm28510948wru.38.2019.12.09.05.03.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Dec 2019 05:03:40 -0800 (PST) From: Thierry Reding To: Thierry Reding Subject: [PATCH v2 2/2] drm/tegra: Do not implement runtime PM Date: Mon, 9 Dec 2019 14:03:36 +0100 Message-Id: <20191209130336.2257506-2-thierry.reding@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191209130336.2257506-1-thierry.reding@gmail.com> References: <20191209130336.2257506-1-thierry.reding@gmail.com> MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dHT6PYKG71EJ5XCptxqHpEoDdt3rwIzyUZOjEwT1+qw=; b=sjmvHOcJfLKbmzwpmK2YqNhh9ASLRgNc8mWpFwST2e/QDTRMsgRyAM+UC9KddB9oBq nGwUOpCz8QlYxqx9mKJLZIU8KvbzGS7Ob81J5nBE3Xuzxr/z4Ys0lRjWRSm7H5yYM1Fq z8++wmuNyb6KkpAlqbtx7nwtMh1J8eBWq3k9Ln279kSOOoRkQsC92knqCO65QDkoXhtK IRu66wkZQZ+K4sokHUsCrd34zW3xzQ9G/kaJDGGVpcnn9p/64Rv4LA4NWehmZzAi4XsW N7DHnz4oUrL0nJWns2BhawxciiqXe1BdK1WjE9BORNEdheZWSciqk+W9XqQ/griloh2H c//w== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-pm@vger.kernel.org, "Rafael J. Wysocki" , dri-devel@lists.freedesktop.org, Mikko Perttunen , linux-tegra@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClRoZSBUZWdyYSBEUk0g ZHJpdmVyIGhlYXZpbHkgcmVsaWVzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbnMgZm9yIHJ1bnRpbWUK c3VzcGVuZC9yZXN1bWUgdG8gYmUgY2FsbGVkIGF0IHNwZWNpZmljIHRpbWVzLiBVbmZvcnR1bmF0 ZWx5LCB0aGVyZSBhcmUKc29tZSBjYXNlcyB3aGVyZSB0aGF0IGRvZXNuJ3Qgd29yay4gT25lIGV4 YW1wbGUgaXMgaWYgdGhlIHVzZXIgZGlzYWJsZXMKcnVudGltZSBQTSBmb3IgYSBnaXZlbiBzdWJk ZXZpY2UuIEFub3RoZXIgZXhhbXBsZSBpcyB0aGF0IHRoZSBQTSBjb3JlCmFjcXVpcmVzIGEgcmVm ZXJlbmNlIHRvIHJ1bnRpbWUgUE0gZHVyaW5nIHN5c3RlbSBzbGVlcCwgZWZmZWN0aXZlbHkKcHJl dmVudGluZyBkZXZpY2VzIGZyb20gZ29pbmcgaW50byBsb3cgcG93ZXIgbW9kZXMuIFRoaXMgaXMg aW50ZW50aW9uYWwKdG8gYXZvaWQgbmFzdHkgcmFjZSBjb25kaXRpb25zLCBidXQgaXQgYWxzbyBj YXVzZXMgc3lzdGVtIHNsZWVwIHRvIG5vdApmdW5jdGlvbiBwcm9wZXJseSBvbiBhbGwgVGVncmEg c3lzdGVtcy4KCkZpeCB0aGlzIGJ5IG5vdCBpbXBsZW1lbnRpbmcgcnVudGltZSBQTSBhdCBhbGwu IEluc3RlYWQsIGEgbWluaW1hbCwKcmVmZXJlbmNlLWNvdW50ZWQgc3VzcGVuZC9yZXN1bWUgaW5m cmFzdHJ1Y3R1cmUgaXMgYWRkZWQgdG8gdGhlIGhvc3QxeApidXMuIFRoaXMgaGFzIHRoZSBiZW5l Zml0IHRoYXQgaXQgY2FuIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtCnBvd2VyIHN0 YXRlIChvciBhbnkgdHJhbnNpdGlvbnMgd2UgbWlnaHQgYmUgaW4pLCBvciB3aGV0aGVyIG9yIG5v dCB0aGUKdXNlciBhbGxvd3MgcnVudGltZSBQTS4KCkF0b21pYyBtb2Rlc2V0dGluZyBndWFyYW50 ZWVzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIHdpbGwgZW5kIHVwIGJlaW5nCmNhbGxlZCBhdCB0aGUg cmlnaHQgcG9pbnQgaW4gdGltZSwgc28gdGhlIHBpdGZhbGxzIGZvciB0aGUgbW9yZSBnZW5lcmlj CnJ1bnRpbWUgUE0gZG8gbm90IGFwcGx5IGhlcmUuCgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJl ZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgotLS0KQ2hhbmdlcyBpbiB2MjoKLSBrZWVwIHJ1bnRp bWUgUE0gZm9yIFZJQwoKIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jICAgIHwgMTQxICsrKysr KysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMgfCAgIDIg Ky0KIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uaCAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2Ry bS90ZWdyYS9kc2kuYyAgIHwgMTc1ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL3RlZ3JhL2hkbWkuYyAgfCAxMTYgKysrKysrKysrKystLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS90ZWdyYS9odWIuYyAgIHwgMTk0ICsrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9odWIuaCAgIHwgICAyICstCiBkcml2 ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMgICB8IDE1NCArKysrKysrKysrKysrKystLS0tLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2hvc3QxeC9idXMuYyAgICAgIHwgIDc1ICsrKysrKysrKysrKysKIGlu Y2x1ZGUvbGludXgvaG9zdDF4LmggICAgICAgIHwgIDExICsrCiAxMCBmaWxlcyBjaGFuZ2VkLCA1 NDEgaW5zZXJ0aW9ucygrKSwgMzMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS90ZWdyYS9kYy5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMKaW5kZXggMjk4 M2ViMzNmMmJlLi44NzEwNDZmM2Y0NjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdy YS9kYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jCkBAIC0xNzM3LDYgKzE3Mzcs NyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIHsKIAlzdHJ1Y3QgdGVncmFfZGMgKmRjID0gdG9fdGVncmFfZGMoY3J0Yyk7CiAJ dTMyIHZhbHVlOworCWludCBlcnI7CiAKIAlpZiAoIXRlZ3JhX2RjX2lkbGUoZGMpKSB7CiAJCXRl Z3JhX2RjX3N0b3AoZGMpOwpAQCAtMTc4Myw3ICsxNzg0LDkgQEAgc3RhdGljIHZvaWQgdGVncmFf Y3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlzcGluX3VubG9j a19pcnEoJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7CiAKLQlwbV9ydW50aW1lX3B1dF9zeW5jKGRj LT5kZXYpOworCWVyciA9IGhvc3QxeF9jbGllbnRfc3VzcGVuZCgmZGMtPmNsaWVudCk7CisJaWYg KGVyciA8IDApCisJCWRldl9lcnIoZGMtPmRldiwgImZhaWxlZCB0byBzdXNwZW5kOiAlZFxuIiwg ZXJyKTsKIH0KIAogc3RhdGljIHZvaWQgdGVncmFfY3J0Y19hdG9taWNfZW5hYmxlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKQEAgLTE3OTMsOCArMTc5NiwxMyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9j cnRjX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCB0ZWdyYV9k Y19zdGF0ZSAqc3RhdGUgPSB0b19kY19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0IHRlZ3Jh X2RjICpkYyA9IHRvX3RlZ3JhX2RjKGNydGMpOwogCXUzMiB2YWx1ZTsKKwlpbnQgZXJyOwogCi0J cG1fcnVudGltZV9nZXRfc3luYyhkYy0+ZGV2KTsKKwllcnIgPSBob3N0MXhfY2xpZW50X3Jlc3Vt ZSgmZGMtPmNsaWVudCk7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycihkYy0+ZGV2LCAiZmFp bGVkIHRvIHJlc3VtZTogJWRcbiIsIGVycik7CisJCXJldHVybjsKKwl9CiAKIAkvKiBpbml0aWFs aXplIGRpc3BsYXkgY29udHJvbGxlciAqLwogCWlmIChkYy0+c3luY3B0KSB7CkBAIC0yMDIyLDYg KzIwMzAsMTUgQEAgc3RhdGljIGludCB0ZWdyYV9kY19pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50 ICpjbGllbnQpCiAJaWYgKCF0ZWdyYV9kY19oYXNfd2luZG93X2dyb3VwcyhkYykpCiAJCXJldHVy biAwOwogCisJLyoKKwkgKiBTZXQgdGhlIGRpc3BsYXkgaHViIGFzIHRoZSBob3N0MXggY2xpZW50 IHBhcmVudCBmb3IgdGhlIGRpc3BsYXkKKwkgKiBjb250cm9sbGVyLiBUaGlzIGlzIG5lZWRlZCBm b3IgdGhlIHJ1bnRpbWUgcmVmZXJlbmNlIGNvdW50aW5nIHRoYXQKKwkgKiBlbnN1cmVzIHRoZSBk aXNwbGF5IGh1YiBpcyBhbHdheXMgcG93ZXJlZCB3aGVuIGFueSBvZiB0aGUgZGlzcGxheQorCSAq IGNvbnRyb2xsZXJzIGFyZS4KKwkgKi8KKwlpZiAoZGMtPnNvYy0+aGFzX252ZGlzcGxheSkKKwkJ Y2xpZW50LT5wYXJlbnQgPSAmdGVncmEtPmh1Yi0+Y2xpZW50OworCiAJZGMtPnN5bmNwdCA9IGhv c3QxeF9zeW5jcHRfcmVxdWVzdChjbGllbnQsIGZsYWdzKTsKIAlpZiAoIWRjLT5zeW5jcHQpCiAJ CWRldl93YXJuKGRjLT5kZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgc3luY3BvaW50XG4iKTsKQEAg LTIxMzEsOSArMjE0OCw3NCBAQCBzdGF0aWMgaW50IHRlZ3JhX2RjX2V4aXQoc3RydWN0IGhvc3Qx eF9jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCB0ZWdyYV9kY19y dW50aW1lX3N1c3BlbmQoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3Qg dGVncmFfZGMgKmRjID0gaG9zdDF4X2NsaWVudF90b19kYyhjbGllbnQpOworCXN0cnVjdCBkZXZp Y2UgKmRldiA9IGNsaWVudC0+ZGV2OworCWludCBlcnI7CisKKwllcnIgPSByZXNldF9jb250cm9s X2Fzc2VydChkYy0+cnN0KTsKKwlpZiAoZXJyIDwgMCkgeworCQlkZXZfZXJyKGRldiwgImZhaWxl ZCB0byBhc3NlcnQgcmVzZXQ6ICVkXG4iLCBlcnIpOworCQlyZXR1cm4gZXJyOworCX0KKworCWlm IChkYy0+c29jLT5oYXNfcG93ZXJnYXRlKQorCQl0ZWdyYV9wb3dlcmdhdGVfcG93ZXJfb2ZmKGRj LT5wb3dlcmdhdGUpOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRjLT5jbGspOworCXBtX3J1 bnRpbWVfcHV0X3N5bmMoZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHRlZ3Jh X2RjX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCit7CisJc3Ry dWN0IHRlZ3JhX2RjICpkYyA9IGhvc3QxeF9jbGllbnRfdG9fZGMoY2xpZW50KTsKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSBjbGllbnQtPmRldjsKKwlpbnQgZXJyOworCisJZXJyID0gcG1fcnVudGlt ZV9nZXRfc3luYyhkZXYpOworCWlmIChlcnIgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIGdldCBydW50aW1lIFBNOiAlZFxuIiwgZXJyKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlp ZiAoZGMtPnNvYy0+aGFzX3Bvd2VyZ2F0ZSkgeworCQllcnIgPSB0ZWdyYV9wb3dlcmdhdGVfc2Vx dWVuY2VfcG93ZXJfdXAoZGMtPnBvd2VyZ2F0ZSwgZGMtPmNsaywKKwkJCQkJCQlkYy0+cnN0KTsK KwkJaWYgKGVyciA8IDApIHsKKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHBvd2VyIHBhcnRp dGlvbjogJWRcbiIsIGVycik7CisJCQlnb3RvIHB1dF9ycG07CisJCX0KKwl9IGVsc2UgeworCQll cnIgPSBjbGtfcHJlcGFyZV9lbmFibGUoZGMtPmNsayk7CisJCWlmIChlcnIgPCAwKSB7CisJCQlk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgY2xvY2s6ICVkXG4iLCBlcnIpOworCQkJZ290 byBwdXRfcnBtOworCQl9CisKKwkJZXJyID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChkYy0+cnN0 KTsKKwkJaWYgKGVyciA8IDApIHsKKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGRlYXNzZXJ0 IHJlc2V0OiAlZFxuIiwgZXJyKTsKKwkJCWdvdG8gZGlzYWJsZV9jbGs7CisJCX0KKwl9CisKKwly ZXR1cm4gMDsKKworZGlzYWJsZV9jbGs6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRjLT5jbGsp OworcHV0X3JwbToKKwlwbV9ydW50aW1lX3B1dF9zeW5jKGRldik7CisJcmV0dXJuIGVycjsKK30K Kwogc3RhdGljIGNvbnN0IHN0cnVjdCBob3N0MXhfY2xpZW50X29wcyBkY19jbGllbnRfb3BzID0g ewogCS5pbml0ID0gdGVncmFfZGNfaW5pdCwKIAkuZXhpdCA9IHRlZ3JhX2RjX2V4aXQsCisJLnN1 c3BlbmQgPSB0ZWdyYV9kY19ydW50aW1lX3N1c3BlbmQsCisJLnJlc3VtZSA9IHRlZ3JhX2RjX3J1 bnRpbWVfcmVzdW1lLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB0ZWdyYV9kY19zb2NfaW5m byB0ZWdyYTIwX2RjX3NvY19pbmZvID0gewpAQCAtMjU0NSw2NSArMjYyNywxMCBAQCBzdGF0aWMg aW50IHRlZ3JhX2RjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJldHVy biAwOwogfQogCi0jaWZkZWYgQ09ORklHX1BNCi1zdGF0aWMgaW50IHRlZ3JhX2RjX3N1c3BlbmQo c3RydWN0IGRldmljZSAqZGV2KQotewotCXN0cnVjdCB0ZWdyYV9kYyAqZGMgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKLQlpbnQgZXJyOwotCi0JZXJyID0gcmVzZXRfY29udHJvbF9hc3NlcnQoZGMt PnJzdCk7Ci0JaWYgKGVyciA8IDApIHsKLQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYXNzZXJ0 IHJlc2V0OiAlZFxuIiwgZXJyKTsKLQkJcmV0dXJuIGVycjsKLQl9Ci0KLQlpZiAoZGMtPnNvYy0+ aGFzX3Bvd2VyZ2F0ZSkKLQkJdGVncmFfcG93ZXJnYXRlX3Bvd2VyX29mZihkYy0+cG93ZXJnYXRl KTsKLQotCWNsa19kaXNhYmxlX3VucHJlcGFyZShkYy0+Y2xrKTsKLQotCXJldHVybiAwOwotfQot Ci1zdGF0aWMgaW50IHRlZ3JhX2RjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCi17Ci0Jc3Ry dWN0IHRlZ3JhX2RjICpkYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwotCWludCBlcnI7Ci0KLQlp ZiAoZGMtPnNvYy0+aGFzX3Bvd2VyZ2F0ZSkgewotCQllcnIgPSB0ZWdyYV9wb3dlcmdhdGVfc2Vx dWVuY2VfcG93ZXJfdXAoZGMtPnBvd2VyZ2F0ZSwgZGMtPmNsaywKLQkJCQkJCQlkYy0+cnN0KTsK LQkJaWYgKGVyciA8IDApIHsKLQkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHBvd2VyIHBhcnRp dGlvbjogJWRcbiIsIGVycik7Ci0JCQlyZXR1cm4gZXJyOwotCQl9Ci0JfSBlbHNlIHsKLQkJZXJy ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRjLT5jbGspOwotCQlpZiAoZXJyIDwgMCkgewotCQkJZGV2 X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIGNsb2NrOiAlZFxuIiwgZXJyKTsKLQkJCXJldHVy biBlcnI7Ci0JCX0KLQotCQllcnIgPSByZXNldF9jb250cm9sX2RlYXNzZXJ0KGRjLT5yc3QpOwot CQlpZiAoZXJyIDwgMCkgewotCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZGVhc3NlcnQgcmVz ZXQ6ICVkXG4iLCBlcnIpOwotCQkJcmV0dXJuIGVycjsKLQkJfQotCX0KLQotCXJldHVybiAwOwot fQotI2VuZGlmCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB0ZWdyYV9kY19wbV9v cHMgPSB7Ci0JU0VUX1JVTlRJTUVfUE1fT1BTKHRlZ3JhX2RjX3N1c3BlbmQsIHRlZ3JhX2RjX3Jl c3VtZSwgTlVMTCkKLX07Ci0KIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdGVncmFfZGNfZHJpdmVy ID0gewogCS5kcml2ZXIgPSB7CiAJCS5uYW1lID0gInRlZ3JhLWRjIiwKIAkJLm9mX21hdGNoX3Rh YmxlID0gdGVncmFfZGNfb2ZfbWF0Y2gsCi0JCS5wbSA9ICZ0ZWdyYV9kY19wbV9vcHMsCiAJfSwK IAkucHJvYmUgPSB0ZWdyYV9kY19wcm9iZSwKIAkucmVtb3ZlID0gdGVncmFfZGNfcmVtb3ZlLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMgYi9kcml2ZXJzL2dwdS9k cm0vdGVncmEvZHBhdXguYwppbmRleCA2MjJjZGYxYWQyNDYuLjdkZmI1MGY2NTA2NyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3RlZ3JhL2RwYXV4LmMKQEAgLTU4OCw3ICs1ODgsNyBAQCBzdGF0aWMgaW50IHRlZ3JhX2RwYXV4 X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCS8qIG1ha2Ugc3VyZSBwYWRz IGFyZSBwb3dlcmVkIGRvd24gd2hlbiBub3QgaW4gdXNlICovCiAJdGVncmFfZHBhdXhfcGFkX3Bv d2VyX2Rvd24oZHBhdXgpOwogCi0JcG1fcnVudGltZV9wdXQoJnBkZXYtPmRldik7CisJcG1fcnVu dGltZV9wdXRfc3luYygmcGRldi0+ZGV2KTsKIAlwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRl dik7CiAKIAlkcm1fZHBfYXV4X3VucmVnaXN0ZXIoJmRwYXV4LT5hdXgpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5oIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5o CmluZGV4IGQ5NDE1NTNmN2EzZC4uZWQ5OWI2N2RlYjI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vdGVncmEvZHJtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5oCkBAIC0x NDQsNiArMTQ0LDggQEAgaW50IHRlZ3JhX291dHB1dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk cm0sIHN0cnVjdCB0ZWdyYV9vdXRwdXQgKm91dHB1dCk7CiB2b2lkIHRlZ3JhX291dHB1dF9leGl0 KHN0cnVjdCB0ZWdyYV9vdXRwdXQgKm91dHB1dCk7CiB2b2lkIHRlZ3JhX291dHB1dF9maW5kX3Bv c3NpYmxlX2NydGNzKHN0cnVjdCB0ZWdyYV9vdXRwdXQgKm91dHB1dCwKIAkJCQkgICAgICBzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtKTsKK2ludCB0ZWdyYV9vdXRwdXRfc3VzcGVuZChzdHJ1Y3QgdGVn cmFfb3V0cHV0ICpvdXRwdXQpOworaW50IHRlZ3JhX291dHB1dF9yZXN1bWUoc3RydWN0IHRlZ3Jh X291dHB1dCAqb3V0cHV0KTsKIAogaW50IHRlZ3JhX291dHB1dF9jb25uZWN0b3JfZ2V0X21vZGVz KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwogZW51bSBkcm1fY29ubmVjdG9yX3N0 YXR1cwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RzaS5jIGIvZHJpdmVycy9n cHUvZHJtL3RlZ3JhL2RzaS5jCmluZGV4IGVjNDc1ZDAyMmZhMC4uODhiOWQ2NGM3N2JmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3RlZ3JhL2RzaS5jCkBAIC04NDAsNyArODQwLDkgQEAgc3RhdGljIHZvaWQgdGVncmFfZHNpX3Vu cHJlcGFyZShzdHJ1Y3QgdGVncmFfZHNpICpkc2kpCiAJCWRldl9lcnIoZHNpLT5kZXYsICJmYWls ZWQgdG8gZGlzYWJsZSBNSVBJIGNhbGlicmF0aW9uOiAlZFxuIiwKIAkJCWVycik7CiAKLQlwbV9y dW50aW1lX3B1dChkc2ktPmRldik7CisJZXJyID0gaG9zdDF4X2NsaWVudF9zdXNwZW5kKCZkc2kt PmNsaWVudCk7CisJaWYgKGVyciA8IDApCisJCWRldl9lcnIoZHNpLT5kZXYsICJmYWlsZWQgdG8g c3VzcGVuZDogJWRcbiIsIGVycik7CiB9CiAKIHN0YXRpYyB2b2lkIHRlZ3JhX2RzaV9lbmNvZGVy X2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQpAQCAtODgyLDExICs4ODQsMTUg QEAgc3RhdGljIHZvaWQgdGVncmFfZHNpX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCiAJdGVncmFfZHNpX3VucHJlcGFyZShkc2kpOwogfQogCi1zdGF0aWMgdm9p ZCB0ZWdyYV9kc2lfcHJlcGFyZShzdHJ1Y3QgdGVncmFfZHNpICpkc2kpCitzdGF0aWMgaW50IHRl Z3JhX2RzaV9wcmVwYXJlKHN0cnVjdCB0ZWdyYV9kc2kgKmRzaSkKIHsKIAlpbnQgZXJyOwogCi0J cG1fcnVudGltZV9nZXRfc3luYyhkc2ktPmRldik7CisJZXJyID0gaG9zdDF4X2NsaWVudF9yZXN1 bWUoJmRzaS0+Y2xpZW50KTsKKwlpZiAoZXJyIDwgMCkgeworCQlkZXZfZXJyKGRzaS0+ZGV2LCAi ZmFpbGVkIHRvIHJlc3VtZTogJWRcbiIsIGVycik7CisJCXJldHVybiBlcnI7CisJfQogCiAJZXJy ID0gdGVncmFfbWlwaV9lbmFibGUoZHNpLT5taXBpKTsKIAlpZiAoZXJyIDwgMCkKQEAgLTg5OSw2 ICs5MDUsOCBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9kc2lfcHJlcGFyZShzdHJ1Y3QgdGVncmFfZHNp ICpkc2kpCiAKIAlpZiAoZHNpLT5zbGF2ZSkKIAkJdGVncmFfZHNpX3ByZXBhcmUoZHNpLT5zbGF2 ZSk7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgdGVncmFfZHNpX2VuY29kZXJfZW5h YmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKQEAgLTkwOSw4ICs5MTcsMTMgQEAgc3Rh dGljIHZvaWQgdGVncmFfZHNpX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcikKIAlzdHJ1Y3QgdGVncmFfZHNpICpkc2kgPSB0b19kc2kob3V0cHV0KTsKIAlzdHJ1Y3Qg dGVncmFfZHNpX3N0YXRlICpzdGF0ZTsKIAl1MzIgdmFsdWU7CisJaW50IGVycjsKIAotCXRlZ3Jh X2RzaV9wcmVwYXJlKGRzaSk7CisJZXJyID0gdGVncmFfZHNpX3ByZXBhcmUoZHNpKTsKKwlpZiAo ZXJyIDwgMCkgeworCQlkZXZfZXJyKGRzaS0+ZGV2LCAiZmFpbGVkIHRvIHByZXBhcmU6ICVkXG4i LCBlcnIpOworCQlyZXR1cm47CisJfQogCiAJc3RhdGUgPSB0ZWdyYV9kc2lfZ2V0X3N0YXRlKGRz aSk7CiAKQEAgLTEwNzUsOSArMTA4OCw4OSBAQCBzdGF0aWMgaW50IHRlZ3JhX2RzaV9leGl0KHN0 cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQg dGVncmFfZHNpX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQor eworCXN0cnVjdCB0ZWdyYV9kc2kgKmRzaSA9IGhvc3QxeF9jbGllbnRfdG9fZHNpKGNsaWVudCk7 CisJc3RydWN0IGRldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisJaW50IGVycjsKKworCWlmIChk c2ktPnJzdCkgeworCQllcnIgPSByZXNldF9jb250cm9sX2Fzc2VydChkc2ktPnJzdCk7CisJCWlm IChlcnIgPCAwKSB7CisJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBhc3NlcnQgcmVzZXQ6ICVk XG4iLCBlcnIpOworCQkJcmV0dXJuIGVycjsKKwkJfQorCX0KKworCXVzbGVlcF9yYW5nZSgxMDAw LCAyMDAwKTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFyZShkc2ktPmNsa19scCk7CisJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKGRzaS0+Y2xrKTsKKworCXJlZ3VsYXRvcl9kaXNhYmxlKGRzaS0+dmRk KTsKKwlwbV9ydW50aW1lX3B1dF9zeW5jKGRldik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCB0ZWdyYV9kc2lfcnVudGltZV9yZXN1bWUoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVu dCkKK3sKKwlzdHJ1Y3QgdGVncmFfZHNpICpkc2kgPSBob3N0MXhfY2xpZW50X3RvX2RzaShjbGll bnQpOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OworCWludCBlcnI7CisKKwll cnIgPSBwbV9ydW50aW1lX2dldF9zeW5jKGRldik7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2Vy cihkZXYsICJmYWlsZWQgdG8gZ2V0IHJ1bnRpbWUgUE06ICVkXG4iLCBlcnIpOworCQlyZXR1cm4g ZXJyOworCX0KKworCWVyciA9IHJlZ3VsYXRvcl9lbmFibGUoZHNpLT52ZGQpOworCWlmIChlcnIg PCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBWREQgc3VwcGx5OiAlZFxu IiwgZXJyKTsKKwkJZ290byBwdXRfcnBtOworCX0KKworCWVyciA9IGNsa19wcmVwYXJlX2VuYWJs ZShkc2ktPmNsayk7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZW5h YmxlIERTSSBjbG9jazogJWRcbiIsIGVycik7CisJCWdvdG8gZGlzYWJsZV92ZGQ7CisJfQorCisJ ZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+Y2xrX2xwKTsKKwlpZiAoZXJyIDwgMCkgewor CQlkZXZfZXJyKGRldiwgImNhbm5vdCBlbmFibGUgbG93LXBvd2VyIGNsb2NrOiAlZFxuIiwgZXJy KTsKKwkJZ290byBkaXNhYmxlX2NsazsKKwl9CisKKwl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7 CisKKwlpZiAoZHNpLT5yc3QpIHsKKwkJZXJyID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChkc2kt PnJzdCk7CisJCWlmIChlcnIgPCAwKSB7CisJCQlkZXZfZXJyKGRldiwgImNhbm5vdCBhc3NlcnQg cmVzZXQ6ICVkXG4iLCBlcnIpOworCQkJZ290byBkaXNhYmxlX2Nsa19scDsKKwkJfQorCX0KKwor CXJldHVybiAwOworCitkaXNhYmxlX2Nsa19scDoKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNp LT5jbGtfbHApOworZGlzYWJsZV9jbGs6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+Y2xr KTsKK2Rpc2FibGVfdmRkOgorCXJlZ3VsYXRvcl9kaXNhYmxlKGRzaS0+dmRkKTsKK3B1dF9ycG06 CisJcG1fcnVudGltZV9wdXRfc3luYyhkZXYpOworCXJldHVybiBlcnI7Cit9CisKIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaG9zdDF4X2NsaWVudF9vcHMgZHNpX2NsaWVudF9vcHMgPSB7CiAJLmluaXQg PSB0ZWdyYV9kc2lfaW5pdCwKIAkuZXhpdCA9IHRlZ3JhX2RzaV9leGl0LAorCS5zdXNwZW5kID0g dGVncmFfZHNpX3J1bnRpbWVfc3VzcGVuZCwKKwkucmVzdW1lID0gdGVncmFfZHNpX3J1bnRpbWVf cmVzdW1lLAogfTsKIAogc3RhdGljIGludCB0ZWdyYV9kc2lfc2V0dXBfY2xvY2tzKHN0cnVjdCB0 ZWdyYV9kc2kgKmRzaSkKQEAgLTE1OTYsNzkgKzE2ODksNiBAQCBzdGF0aWMgaW50IHRlZ3JhX2Rz aV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlyZXR1cm4gMDsKIH0KIAot I2lmZGVmIENPTkZJR19QTQotc3RhdGljIGludCB0ZWdyYV9kc2lfc3VzcGVuZChzdHJ1Y3QgZGV2 aWNlICpkZXYpCi17Ci0Jc3RydWN0IHRlZ3JhX2RzaSAqZHNpID0gZGV2X2dldF9kcnZkYXRhKGRl dik7Ci0JaW50IGVycjsKLQotCWlmIChkc2ktPnJzdCkgewotCQllcnIgPSByZXNldF9jb250cm9s X2Fzc2VydChkc2ktPnJzdCk7Ci0JCWlmIChlcnIgPCAwKSB7Ci0JCQlkZXZfZXJyKGRldiwgImZh aWxlZCB0byBhc3NlcnQgcmVzZXQ6ICVkXG4iLCBlcnIpOwotCQkJcmV0dXJuIGVycjsKLQkJfQot CX0KLQotCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKLQotCWNsa19kaXNhYmxlX3VucHJlcGFy ZShkc2ktPmNsa19scCk7Ci0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+Y2xrKTsKLQotCXJl Z3VsYXRvcl9kaXNhYmxlKGRzaS0+dmRkKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50 IHRlZ3JhX2RzaV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQotewotCXN0cnVjdCB0ZWdyYV9k c2kgKmRzaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwotCWludCBlcnI7Ci0KLQllcnIgPSByZWd1 bGF0b3JfZW5hYmxlKGRzaS0+dmRkKTsKLQlpZiAoZXJyIDwgMCkgewotCQlkZXZfZXJyKGRzaS0+ ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBWREQgc3VwcGx5OiAlZFxuIiwgZXJyKTsKLQkJcmV0dXJu IGVycjsKLQl9Ci0KLQllcnIgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHNpLT5jbGspOwotCWlmIChl cnIgPCAwKSB7Ci0JCWRldl9lcnIoZGV2LCAiY2Fubm90IGVuYWJsZSBEU0kgY2xvY2s6ICVkXG4i LCBlcnIpOwotCQlnb3RvIGRpc2FibGVfdmRkOwotCX0KLQotCWVyciA9IGNsa19wcmVwYXJlX2Vu YWJsZShkc2ktPmNsa19scCk7Ci0JaWYgKGVyciA8IDApIHsKLQkJZGV2X2VycihkZXYsICJjYW5u b3QgZW5hYmxlIGxvdy1wb3dlciBjbG9jazogJWRcbiIsIGVycik7Ci0JCWdvdG8gZGlzYWJsZV9j bGs7Ci0JfQotCi0JdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOwotCi0JaWYgKGRzaS0+cnN0KSB7 Ci0JCWVyciA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoZHNpLT5yc3QpOwotCQlpZiAoZXJyIDwg MCkgewotCQkJZGV2X2VycihkZXYsICJjYW5ub3QgYXNzZXJ0IHJlc2V0OiAlZFxuIiwgZXJyKTsK LQkJCWdvdG8gZGlzYWJsZV9jbGtfbHA7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gMDsKLQotZGlzYWJs ZV9jbGtfbHA6Ci0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+Y2xrX2xwKTsKLWRpc2FibGVf Y2xrOgotCWNsa19kaXNhYmxlX3VucHJlcGFyZShkc2ktPmNsayk7Ci1kaXNhYmxlX3ZkZDoKLQly ZWd1bGF0b3JfZGlzYWJsZShkc2ktPnZkZCk7Ci0JcmV0dXJuIGVycjsKLX0KLSNlbmRpZgotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgdGVncmFfZHNpX3BtX29wcyA9IHsKLQlTRVRf UlVOVElNRV9QTV9PUFModGVncmFfZHNpX3N1c3BlbmQsIHRlZ3JhX2RzaV9yZXN1bWUsIE5VTEwp Ci19OwotCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZWdyYV9kc2lfb2ZfbWF0 Y2hbXSA9IHsKIAl7IC5jb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIxMC1kc2kiLCB9LAogCXsg LmNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMTMyLWRzaSIsIH0sCkBAIC0xNjgyLDcgKzE3MDIs NiBAQCBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRlZ3JhX2RzaV9kcml2ZXIgPSB7CiAJLmRyaXZl ciA9IHsKIAkJLm5hbWUgPSAidGVncmEtZHNpIiwKIAkJLm9mX21hdGNoX3RhYmxlID0gdGVncmFf ZHNpX29mX21hdGNoLAotCQkucG0gPSAmdGVncmFfZHNpX3BtX29wcywKIAl9LAogCS5wcm9iZSA9 IHRlZ3JhX2RzaV9wcm9iZSwKIAkucmVtb3ZlID0gdGVncmFfZHNpX3JlbW92ZSwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEv aGRtaS5jCmluZGV4IDM4YmYxZDE2MDk1Zi4uY2I1MDRlYzhmMjg0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdGVncmEvaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9oZG1p LmMKQEAgLTExNDYsNiArMTE0Niw3IEBAIHN0YXRpYyB2b2lkIHRlZ3JhX2hkbWlfZW5jb2Rlcl9k aXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlzdHJ1Y3QgdGVncmFfZGMgKmRj ID0gdG9fdGVncmFfZGMoZW5jb2Rlci0+Y3J0Yyk7CiAJc3RydWN0IHRlZ3JhX2hkbWkgKmhkbWkg PSB0b19oZG1pKG91dHB1dCk7CiAJdTMyIHZhbHVlOworCWludCBlcnI7CiAKIAkvKgogCSAqIFRo ZSBmb2xsb3dpbmcgYWNjZXNzZXMgcmVnaXN0ZXJzIG9mIHRoZSBkaXNwbGF5IGNvbnRyb2xsZXIs IHNvIG1ha2UKQEAgLTExNzEsNyArMTE3Miw5IEBAIHN0YXRpYyB2b2lkIHRlZ3JhX2hkbWlfZW5j b2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAl0ZWdyYV9oZG1pX3dy aXRlbChoZG1pLCAwLCBIRE1JX05WX1BESVNQX0lOVF9FTkFCTEUpOwogCXRlZ3JhX2hkbWlfd3Jp dGVsKGhkbWksIDAsIEhETUlfTlZfUERJU1BfSU5UX01BU0spOwogCi0JcG1fcnVudGltZV9wdXQo aGRtaS0+ZGV2KTsKKwllcnIgPSBob3N0MXhfY2xpZW50X3N1c3BlbmQoJmhkbWktPmNsaWVudCk7 CisJaWYgKGVyciA8IDApCisJCWRldl9lcnIoaGRtaS0+ZGV2LCAiZmFpbGVkIHRvIHN1c3BlbmQ6 ICVkXG4iLCBlcnIpOwogfQogCiBzdGF0aWMgdm9pZCB0ZWdyYV9oZG1pX2VuY29kZXJfZW5hYmxl KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKQEAgLTExODYsNyArMTE4OSwxMSBAQCBzdGF0 aWMgdm9pZCB0ZWdyYV9oZG1pX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcikKIAl1MzIgdmFsdWU7CiAJaW50IGVycjsKIAotCXBtX3J1bnRpbWVfZ2V0X3N5bmMoaGRt aS0+ZGV2KTsKKwllcnIgPSBob3N0MXhfY2xpZW50X3Jlc3VtZSgmaGRtaS0+Y2xpZW50KTsKKwlp ZiAoZXJyIDwgMCkgeworCQlkZXZfZXJyKGhkbWktPmRldiwgImZhaWxlZCB0byByZXN1bWU6ICVk XG4iLCBlcnIpOworCQlyZXR1cm47CisJfQogCiAJLyoKIAkgKiBFbmFibGUgYW5kIHVubWFzayB0 aGUgSERBIGNvZGVjIFNDUkFUQ0gwIHJlZ2lzdGVyIGludGVycnVwdC4gVGhpcwpAQCAtMTQ4OSw5 ICsxNDk2LDY2IEBAIHN0YXRpYyBpbnQgdGVncmFfaGRtaV9leGl0KHN0cnVjdCBob3N0MXhfY2xp ZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgdGVncmFfaGRtaV9ydW50 aW1lX3N1c3BlbmQoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgdGVn cmFfaGRtaSAqaGRtaSA9IGhvc3QxeF9jbGllbnRfdG9faGRtaShjbGllbnQpOworCXN0cnVjdCBk ZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OworCWludCBlcnI7CisKKwllcnIgPSByZXNldF9jb250 cm9sX2Fzc2VydChoZG1pLT5yc3QpOworCWlmIChlcnIgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAi ZmFpbGVkIHRvIGFzc2VydCByZXNldDogJWRcbiIsIGVycik7CisJCXJldHVybiBlcnI7CisJfQor CisJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhk bWktPmNsayk7CisJcG1fcnVudGltZV9wdXRfc3luYyhkZXYpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgdGVncmFfaGRtaV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgaG9zdDF4X2NsaWVu dCAqY2xpZW50KQoreworCXN0cnVjdCB0ZWdyYV9oZG1pICpoZG1pID0gaG9zdDF4X2NsaWVudF90 b19oZG1pKGNsaWVudCk7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisJaW50 IGVycjsKKworCWVyciA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsKKwlpZiAoZXJyIDwgMCkg eworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgcnVudGltZSBQTTogJWRcbiIsIGVycik7 CisJCXJldHVybiBlcnI7CisJfQorCisJZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxlKGhkbWktPmNs ayk7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIGNs b2NrOiAlZFxuIiwgZXJyKTsKKwkJZ290byBwdXRfcnBtOworCX0KKworCXVzbGVlcF9yYW5nZSgx MDAwLCAyMDAwKTsKKworCWVyciA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoaGRtaS0+cnN0KTsK KwlpZiAoZXJyIDwgMCkgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBkZWFzc2VydCByZXNl dDogJWRcbiIsIGVycik7CisJCWdvdG8gZGlzYWJsZV9jbGs7CisJfQorCisJcmV0dXJuIDA7CisK K2Rpc2FibGVfY2xrOgorCWNsa19kaXNhYmxlX3VucHJlcGFyZShoZG1pLT5jbGspOworcHV0X3Jw bToKKwlwbV9ydW50aW1lX3B1dF9zeW5jKGRldik7CisJcmV0dXJuIGVycjsKK30KKwogc3RhdGlj IGNvbnN0IHN0cnVjdCBob3N0MXhfY2xpZW50X29wcyBoZG1pX2NsaWVudF9vcHMgPSB7CiAJLmlu aXQgPSB0ZWdyYV9oZG1pX2luaXQsCiAJLmV4aXQgPSB0ZWdyYV9oZG1pX2V4aXQsCisJLnN1c3Bl bmQgPSB0ZWdyYV9oZG1pX3J1bnRpbWVfc3VzcGVuZCwKKwkucmVzdW1lID0gdGVncmFfaGRtaV9y dW50aW1lX3Jlc3VtZSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVncmFfaGRtaV9jb25m aWcgdGVncmEyMF9oZG1pX2NvbmZpZyA9IHsKQEAgLTE2OTksNTggKzE3NjMsMTAgQEAgc3RhdGlj IGludCB0ZWdyYV9oZG1pX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJl dHVybiAwOwogfQogCi0jaWZkZWYgQ09ORklHX1BNCi1zdGF0aWMgaW50IHRlZ3JhX2hkbWlfc3Vz cGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCi17Ci0Jc3RydWN0IHRlZ3JhX2hkbWkgKmhkbWkgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKLQlpbnQgZXJyOwotCi0JZXJyID0gcmVzZXRfY29udHJvbF9h c3NlcnQoaGRtaS0+cnN0KTsKLQlpZiAoZXJyIDwgMCkgewotCQlkZXZfZXJyKGRldiwgImZhaWxl ZCB0byBhc3NlcnQgcmVzZXQ6ICVkXG4iLCBlcnIpOwotCQlyZXR1cm4gZXJyOwotCX0KLQotCXVz bGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKLQotCWNsa19kaXNhYmxlX3VucHJlcGFyZShoZG1pLT5j bGspOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgdGVncmFfaGRtaV9yZXN1bWUoc3Ry dWN0IGRldmljZSAqZGV2KQotewotCXN0cnVjdCB0ZWdyYV9oZG1pICpoZG1pID0gZGV2X2dldF9k cnZkYXRhKGRldik7Ci0JaW50IGVycjsKLQotCWVyciA9IGNsa19wcmVwYXJlX2VuYWJsZShoZG1p LT5jbGspOwotCWlmIChlcnIgPCAwKSB7Ci0JCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJs ZSBjbG9jazogJWRcbiIsIGVycik7Ci0JCXJldHVybiBlcnI7Ci0JfQotCi0JdXNsZWVwX3Jhbmdl KDEwMDAsIDIwMDApOwotCi0JZXJyID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChoZG1pLT5yc3Qp OwotCWlmIChlcnIgPCAwKSB7Ci0JCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGRlYXNzZXJ0IHJl c2V0OiAlZFxuIiwgZXJyKTsKLQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhkbWktPmNsayk7Ci0J CXJldHVybiBlcnI7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBkZXZfcG1fb3BzIHRlZ3JhX2hkbWlfcG1fb3BzID0gewotCVNFVF9SVU5USU1FX1BN X09QUyh0ZWdyYV9oZG1pX3N1c3BlbmQsIHRlZ3JhX2hkbWlfcmVzdW1lLCBOVUxMKQotfTsKLQog c3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZWdyYV9oZG1pX2RyaXZlciA9IHsKIAkuZHJpdmVyID0g ewogCQkubmFtZSA9ICJ0ZWdyYS1oZG1pIiwKIAkJLm9mX21hdGNoX3RhYmxlID0gdGVncmFfaGRt aV9vZl9tYXRjaCwKLQkJLnBtID0gJnRlZ3JhX2hkbWlfcG1fb3BzLAogCX0sCiAJLnByb2JlID0g dGVncmFfaGRtaV9wcm9iZSwKIAkucmVtb3ZlID0gdGVncmFfaGRtaV9yZW1vdmUsCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvaHViLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEv aHViLmMKaW5kZXggNWM3NTQ1ZWU1YTViLi43M2U2ZmU5YjgzM2QgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS90ZWdyYS9odWIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvaHViLmMK QEAgLTEwNSwxNyArMTA1LDI1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0ZWdyYV9wbGFuZV93cml0 ZWwoc3RydWN0IHRlZ3JhX3BsYW5lICpwbGFuZSwgdTMyIHZhbHVlLAogCiBzdGF0aWMgaW50IHRl Z3JhX3dpbmRvd2dyb3VwX2VuYWJsZShzdHJ1Y3QgdGVncmFfd2luZG93Z3JvdXAgKndncnApCiB7 CisJaW50IGVyciA9IDA7CisKIAltdXRleF9sb2NrKCZ3Z3JwLT5sb2NrKTsKIAogCWlmICh3Z3Jw LT51c2Vjb3VudCA9PSAwKSB7Ci0JCXBtX3J1bnRpbWVfZ2V0X3N5bmMod2dycC0+cGFyZW50KTsK KwkJZXJyID0gaG9zdDF4X2NsaWVudF9yZXN1bWUod2dycC0+cGFyZW50KTsKKwkJaWYgKGVyciA8 IDApIHsKKwkJCWRldl9lcnIod2dycC0+cGFyZW50LT5kZXYsICJmYWlsZWQgdG8gcmVzdW1lOiAl ZFxuIiwgZXJyKTsKKwkJCWdvdG8gdW5sb2NrOworCQl9CisKIAkJcmVzZXRfY29udHJvbF9kZWFz c2VydCh3Z3JwLT5yc3QpOwogCX0KIAogCXdncnAtPnVzZWNvdW50Kys7Ci0JbXV0ZXhfdW5sb2Nr KCZ3Z3JwLT5sb2NrKTsKIAotCXJldHVybiAwOwordW5sb2NrOgorCW11dGV4X3VubG9jaygmd2dy cC0+bG9jayk7CisJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIHZvaWQgdGVncmFfd2luZG93Z3Jv dXBfZGlzYWJsZShzdHJ1Y3QgdGVncmFfd2luZG93Z3JvdXAgKndncnApCkBAIC0xMzEsNyArMTM5 LDcgQEAgc3RhdGljIHZvaWQgdGVncmFfd2luZG93Z3JvdXBfZGlzYWJsZShzdHJ1Y3QgdGVncmFf d2luZG93Z3JvdXAgKndncnApCiAJCQkgICAgICAgd2dycC0+aW5kZXgpOwogCQl9CiAKLQkJcG1f cnVudGltZV9wdXQod2dycC0+cGFyZW50KTsKKwkJaG9zdDF4X2NsaWVudF9zdXNwZW5kKHdncnAt PnBhcmVudCk7CiAJfQogCiAJd2dycC0+dXNlY291bnQtLTsKQEAgLTM4OSw2ICszOTcsNyBAQCBz dGF0aWMgdm9pZCB0ZWdyYV9zaGFyZWRfcGxhbmVfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJc3RydWN0IHRlZ3JhX3BsYW5lICpwID0gdG9fdGVncmFfcGxhbmUocGxh bmUpOwogCXN0cnVjdCB0ZWdyYV9kYyAqZGM7CiAJdTMyIHZhbHVlOworCWludCBlcnI7CiAKIAkv KiByaWVuIG5lIHZhIHBsdXMgKi8KIAlpZiAoIW9sZF9zdGF0ZSB8fCAhb2xkX3N0YXRlLT5jcnRj KQpAQCAtMzk2LDYgKzQwNSwxMiBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9zaGFyZWRfcGxhbmVfYXRv bWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAKIAlkYyA9IHRvX3RlZ3JhX2Rj KG9sZF9zdGF0ZS0+Y3J0Yyk7CiAKKwllcnIgPSBob3N0MXhfY2xpZW50X3Jlc3VtZSgmZGMtPmNs aWVudCk7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycihkYy0+ZGV2LCAiZmFpbGVkIHRvIHJl c3VtZTogJWRcbiIsIGVycik7CisJCXJldHVybjsKKwl9CisKIAkvKgogCSAqIFhYWCBMZWdhY3kg aGVscGVycyBzZWVtIHRvIHNvbWV0aW1lcyBjYWxsIC0+YXRvbWljX2Rpc2FibGUoKSBldmVuCiAJ ICogb24gcGxhbmVzIHRoYXQgYXJlIGFscmVhZHkgZGlzYWJsZWQuIE1ha2Ugc3VyZSB3ZSBmYWxs YmFjayB0byB0aGUKQEAgLTQwNCwxNSArNDE5LDEzIEBAIHN0YXRpYyB2b2lkIHRlZ3JhX3NoYXJl ZF9wbGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlpZiAoV0FS Tl9PTihwLT5kYyA9PSBOVUxMKSkKIAkJcC0+ZGMgPSBkYzsKIAotCXBtX3J1bnRpbWVfZ2V0X3N5 bmMoZGMtPmRldik7Ci0KIAl2YWx1ZSA9IHRlZ3JhX3BsYW5lX3JlYWRsKHAsIERDX1dJTl9XSU5f T1BUSU9OUyk7CiAJdmFsdWUgJj0gfldJTl9FTkFCTEU7CiAJdGVncmFfcGxhbmVfd3JpdGVsKHAs IHZhbHVlLCBEQ19XSU5fV0lOX09QVElPTlMpOwogCiAJdGVncmFfZGNfcmVtb3ZlX3NoYXJlZF9w bGFuZShkYywgcCk7CiAKLQlwbV9ydW50aW1lX3B1dChkYy0+ZGV2KTsKKwlob3N0MXhfY2xpZW50 X3N1c3BlbmQoJmRjLT5jbGllbnQpOwogfQogCiBzdGF0aWMgdm9pZCB0ZWdyYV9zaGFyZWRfcGxh bmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKQEAgLTQyNSw2ICs0Mzgs NyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9zaGFyZWRfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgdGVncmFfcGxhbmUgKnAgPSB0b190ZWdyYV9wbGFu ZShwbGFuZSk7CiAJZG1hX2FkZHJfdCBiYXNlOwogCXUzMiB2YWx1ZTsKKwlpbnQgZXJyOwogCiAJ LyogcmllbiBuZSB2YSBwbHVzICovCiAJaWYgKCFwbGFuZS0+c3RhdGUtPmNydGMgfHwgIXBsYW5l LT5zdGF0ZS0+ZmIpCkBAIC00MzUsNyArNDQ5LDExIEBAIHN0YXRpYyB2b2lkIHRlZ3JhX3NoYXJl ZF9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlyZXR1cm47 CiAJfQogCi0JcG1fcnVudGltZV9nZXRfc3luYyhkYy0+ZGV2KTsKKwllcnIgPSBob3N0MXhfY2xp ZW50X3Jlc3VtZSgmZGMtPmNsaWVudCk7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycihkYy0+ ZGV2LCAiZmFpbGVkIHRvIHJlc3VtZTogJWRcbiIsIGVycik7CisJCXJldHVybjsKKwl9CiAKIAl0 ZWdyYV9kY19hc3NpZ25fc2hhcmVkX3BsYW5lKGRjLCBwKTsKIApAQCAtNTI1LDcgKzU0Myw3IEBA IHN0YXRpYyB2b2lkIHRlZ3JhX3NoYXJlZF9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAogCXZhbHVlICY9IH5DT05UUk9MX0NTQ19FTkFCTEU7CiAJdGVncmFfcGxh bmVfd3JpdGVsKHAsIHZhbHVlLCBEQ19XSU5fV0lORE9XX1NFVF9DT05UUk9MKTsKIAotCXBtX3J1 bnRpbWVfcHV0KGRjLT5kZXYpOworCWhvc3QxeF9jbGllbnRfc3VzcGVuZCgmZGMtPmNsaWVudCk7 CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyB0ZWdyYV9z aGFyZWRfcGxhbmVfaGVscGVyX2Z1bmNzID0gewpAQCAtNTYxLDcgKzU3OSw3IEBAIHN0cnVjdCBk cm1fcGxhbmUgKnRlZ3JhX3NoYXJlZF9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRy bSwKIAlwbGFuZS0+YmFzZS5pbmRleCA9IGluZGV4OwogCiAJcGxhbmUtPndncnAgPSAmaHViLT53 Z3Jwc1t3Z3JwXTsKLQlwbGFuZS0+d2dycC0+cGFyZW50ID0gZGMtPmRldjsKKwlwbGFuZS0+d2dy cC0+cGFyZW50ID0gJmRjLT5jbGllbnQ7CiAKIAlwID0gJnBsYW5lLT5iYXNlLmJhc2U7CiAKQEAg LTY2Niw4ICs2ODQsMTMgQEAgaW50IHRlZ3JhX2Rpc3BsYXlfaHViX2F0b21pY19jaGVjayhzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtLAogc3RhdGljIHZvaWQgdGVncmFfZGlzcGxheV9odWJfdXBkYXRl KHN0cnVjdCB0ZWdyYV9kYyAqZGMpCiB7CiAJdTMyIHZhbHVlOworCWludCBlcnI7CiAKLQlwbV9y dW50aW1lX2dldF9zeW5jKGRjLT5kZXYpOworCWVyciA9IGhvc3QxeF9jbGllbnRfcmVzdW1lKCZk Yy0+Y2xpZW50KTsKKwlpZiAoZXJyIDwgMCkgeworCQlkZXZfZXJyKGRjLT5kZXYsICJmYWlsZWQg dG8gcmVzdW1lOiAlZFxuIiwgZXJyKTsKKwkJcmV0dXJuOworCX0KIAogCXZhbHVlID0gdGVncmFf ZGNfcmVhZGwoZGMsIERDX0NNRF9JSFVCX0NPTU1PTl9NSVNDX0NUTCk7CiAJdmFsdWUgJj0gfkxB VEVOQ1lfRVZFTlQ7CkBAIC02ODIsNyArNzA1LDcgQEAgc3RhdGljIHZvaWQgdGVncmFfZGlzcGxh eV9odWJfdXBkYXRlKHN0cnVjdCB0ZWdyYV9kYyAqZGMpCiAJdGVncmFfZGNfd3JpdGVsKGRjLCBD T01NT05fQUNUUkVRLCBEQ19DTURfU1RBVEVfQ09OVFJPTCk7CiAJdGVncmFfZGNfcmVhZGwoZGMs IERDX0NNRF9TVEFURV9DT05UUk9MKTsKIAotCXBtX3J1bnRpbWVfcHV0KGRjLT5kZXYpOworCWhv c3QxeF9jbGllbnRfc3VzcGVuZCgmZGMtPmNsaWVudCk7CiB9CiAKIHZvaWQgdGVncmFfZGlzcGxh eV9odWJfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLApAQCAtNzQyLDkgKzc2 NSw4NSBAQCBzdGF0aWMgaW50IHRlZ3JhX2Rpc3BsYXlfaHViX2V4aXQoc3RydWN0IGhvc3QxeF9j bGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCB0ZWdyYV9kaXNwbGF5 X2h1Yl9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkKK3sKKwlz dHJ1Y3QgdGVncmFfZGlzcGxheV9odWIgKmh1YiA9IHRvX3RlZ3JhX2Rpc3BsYXlfaHViKGNsaWVu dCk7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisJdW5zaWduZWQgaW50IGkg PSBodWItPm51bV9oZWFkczsKKwlpbnQgZXJyOworCisJZXJyID0gcmVzZXRfY29udHJvbF9hc3Nl cnQoaHViLT5yc3QpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJd2hpbGUgKGkt LSkKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGh1Yi0+Y2xrX2hlYWRzW2ldKTsKKworCWNsa19k aXNhYmxlX3VucHJlcGFyZShodWItPmNsa19odWIpOworCWNsa19kaXNhYmxlX3VucHJlcGFyZSho dWItPmNsa19kc2MpOworCWNsa19kaXNhYmxlX3VucHJlcGFyZShodWItPmNsa19kaXNwKTsKKwor CXBtX3J1bnRpbWVfcHV0X3N5bmMoZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHRlZ3JhX2Rpc3BsYXlfaHViX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBob3N0MXhfY2xpZW50ICpj bGllbnQpCit7CisJc3RydWN0IHRlZ3JhX2Rpc3BsYXlfaHViICpodWIgPSB0b190ZWdyYV9kaXNw bGF5X2h1YihjbGllbnQpOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OworCXVu c2lnbmVkIGludCBpOworCWludCBlcnI7CisKKwllcnIgPSBwbV9ydW50aW1lX2dldF9zeW5jKGRl dik7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHJ1bnRp bWUgUE06ICVkXG4iLCBlcnIpOworCQlyZXR1cm4gZXJyOworCX0KKworCWVyciA9IGNsa19wcmVw YXJlX2VuYWJsZShodWItPmNsa19kaXNwKTsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byBwdXRfcnBt OworCisJZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxlKGh1Yi0+Y2xrX2RzYyk7CisJaWYgKGVyciA8 IDApCisJCWdvdG8gZGlzYWJsZV9kaXNwOworCisJZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxlKGh1 Yi0+Y2xrX2h1Yik7CisJaWYgKGVyciA8IDApCisJCWdvdG8gZGlzYWJsZV9kc2M7CisKKwlmb3Ig KGkgPSAwOyBpIDwgaHViLT5udW1faGVhZHM7IGkrKykgeworCQllcnIgPSBjbGtfcHJlcGFyZV9l bmFibGUoaHViLT5jbGtfaGVhZHNbaV0pOworCQlpZiAoZXJyIDwgMCkKKwkJCWdvdG8gZGlzYWJs ZV9oZWFkczsKKwl9CisKKwllcnIgPSByZXNldF9jb250cm9sX2RlYXNzZXJ0KGh1Yi0+cnN0KTsK KwlpZiAoZXJyIDwgMCkKKwkJZ290byBkaXNhYmxlX2hlYWRzOworCisJcmV0dXJuIDA7CisKK2Rp c2FibGVfaGVhZHM6CisJd2hpbGUgKGktLSkKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGh1Yi0+ Y2xrX2hlYWRzW2ldKTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFyZShodWItPmNsa19odWIpOwor ZGlzYWJsZV9kc2M6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGh1Yi0+Y2xrX2RzYyk7CitkaXNh YmxlX2Rpc3A6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGh1Yi0+Y2xrX2Rpc3ApOworcHV0X3Jw bToKKwlwbV9ydW50aW1lX3B1dF9zeW5jKGRldik7CisJcmV0dXJuIGVycjsKK30KKwogc3RhdGlj IGNvbnN0IHN0cnVjdCBob3N0MXhfY2xpZW50X29wcyB0ZWdyYV9kaXNwbGF5X2h1Yl9vcHMgPSB7 CiAJLmluaXQgPSB0ZWdyYV9kaXNwbGF5X2h1Yl9pbml0LAogCS5leGl0ID0gdGVncmFfZGlzcGxh eV9odWJfZXhpdCwKKwkuc3VzcGVuZCA9IHRlZ3JhX2Rpc3BsYXlfaHViX3J1bnRpbWVfc3VzcGVu ZCwKKwkucmVzdW1lID0gdGVncmFfZGlzcGxheV9odWJfcnVudGltZV9yZXN1bWUsCiB9OwogCiBz dGF0aWMgaW50IHRlZ3JhX2Rpc3BsYXlfaHViX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCkBAIC04NjEsNiArOTYwLDcgQEAgc3RhdGljIGludCB0ZWdyYV9kaXNwbGF5X2h1Yl9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogc3RhdGljIGludCB0ZWdyYV9kaXNw bGF5X2h1Yl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3Qg dGVncmFfZGlzcGxheV9odWIgKmh1YiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCXVu c2lnbmVkIGludCBpOwogCWludCBlcnI7CiAKIAllcnIgPSBob3N0MXhfY2xpZW50X3VucmVnaXN0 ZXIoJmh1Yi0+Y2xpZW50KTsKQEAgLTg2OSw3OCArOTY5LDE3IEBAIHN0YXRpYyBpbnQgdGVncmFf ZGlzcGxheV9odWJfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQllcnIp OwogCX0KIAotCXBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsKLQotCXJldHVybiBlcnI7 Ci19Ci0KLXN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgdGVncmFfZGlzcGxheV9odWJfc3VzcGVu ZChzdHJ1Y3QgZGV2aWNlICpkZXYpCi17Ci0Jc3RydWN0IHRlZ3JhX2Rpc3BsYXlfaHViICpodWIg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKLQl1bnNpZ25lZCBpbnQgaSA9IGh1Yi0+bnVtX2hlYWRz OwotCWludCBlcnI7Ci0KLQllcnIgPSByZXNldF9jb250cm9sX2Fzc2VydChodWItPnJzdCk7Ci0J aWYgKGVyciA8IDApCi0JCXJldHVybiBlcnI7Ci0KLQl3aGlsZSAoaS0tKQotCQljbGtfZGlzYWJs ZV91bnByZXBhcmUoaHViLT5jbGtfaGVhZHNbaV0pOwotCi0JY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGh1Yi0+Y2xrX2h1Yik7Ci0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGh1Yi0+Y2xrX2RzYyk7Ci0J Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGh1Yi0+Y2xrX2Rpc3ApOwotCi0JcmV0dXJuIDA7Ci19Ci0K LXN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgdGVncmFfZGlzcGxheV9odWJfcmVzdW1lKHN0cnVj dCBkZXZpY2UgKmRldikKLXsKLQlzdHJ1Y3QgdGVncmFfZGlzcGxheV9odWIgKmh1YiA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOwotCXVuc2lnbmVkIGludCBpOwotCWludCBlcnI7Ci0KLQllcnIgPSBj bGtfcHJlcGFyZV9lbmFibGUoaHViLT5jbGtfZGlzcCk7Ci0JaWYgKGVyciA8IDApCi0JCXJldHVy biBlcnI7Ci0KLQllcnIgPSBjbGtfcHJlcGFyZV9lbmFibGUoaHViLT5jbGtfZHNjKTsKLQlpZiAo ZXJyIDwgMCkKLQkJZ290byBkaXNhYmxlX2Rpc3A7Ci0KLQllcnIgPSBjbGtfcHJlcGFyZV9lbmFi bGUoaHViLT5jbGtfaHViKTsKLQlpZiAoZXJyIDwgMCkKLQkJZ290byBkaXNhYmxlX2RzYzsKKwlm b3IgKGkgPSAwOyBpIDwgaHViLT5zb2MtPm51bV93Z3JwczsgaSsrKSB7CisJCXN0cnVjdCB0ZWdy YV93aW5kb3dncm91cCAqd2dycCA9ICZodWItPndncnBzW2ldOwogCi0JZm9yIChpID0gMDsgaSA8 IGh1Yi0+bnVtX2hlYWRzOyBpKyspIHsKLQkJZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxlKGh1Yi0+ Y2xrX2hlYWRzW2ldKTsKLQkJaWYgKGVyciA8IDApCi0JCQlnb3RvIGRpc2FibGVfaGVhZHM7CisJ CW11dGV4X2Rlc3Ryb3koJndncnAtPmxvY2spOwogCX0KIAotCWVyciA9IHJlc2V0X2NvbnRyb2xf ZGVhc3NlcnQoaHViLT5yc3QpOwotCWlmIChlcnIgPCAwKQotCQlnb3RvIGRpc2FibGVfaGVhZHM7 Ci0KLQlyZXR1cm4gMDsKLQotZGlzYWJsZV9oZWFkczoKLQl3aGlsZSAoaS0tKQotCQljbGtfZGlz YWJsZV91bnByZXBhcmUoaHViLT5jbGtfaGVhZHNbaV0pOworCXBtX3J1bnRpbWVfZGlzYWJsZSgm cGRldi0+ZGV2KTsKIAotCWNsa19kaXNhYmxlX3VucHJlcGFyZShodWItPmNsa19odWIpOwotZGlz YWJsZV9kc2M6Ci0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGh1Yi0+Y2xrX2RzYyk7Ci1kaXNhYmxl X2Rpc3A6Ci0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGh1Yi0+Y2xrX2Rpc3ApOwogCXJldHVybiBl cnI7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB0ZWdyYV9kaXNwbGF5X2h1 Yl9wbV9vcHMgPSB7Ci0JU0VUX1JVTlRJTUVfUE1fT1BTKHRlZ3JhX2Rpc3BsYXlfaHViX3N1c3Bl bmQsCi0JCQkgICB0ZWdyYV9kaXNwbGF5X2h1Yl9yZXN1bWUsIE5VTEwpCi19OwotCiBzdGF0aWMg Y29uc3Qgc3RydWN0IHRlZ3JhX2Rpc3BsYXlfaHViX3NvYyB0ZWdyYTE4Nl9kaXNwbGF5X2h1YiA9 IHsKIAkubnVtX3dncnBzID0gNiwKIAkuc3VwcG9ydHNfZHNjID0gdHJ1ZSwKQEAgLTk2OCw3ICsx MDA3LDYgQEAgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZWdyYV9kaXNwbGF5X2h1Yl9kcml2ZXIg PSB7CiAJLmRyaXZlciA9IHsKIAkJLm5hbWUgPSAidGVncmEtZGlzcGxheS1odWIiLAogCQkub2Zf bWF0Y2hfdGFibGUgPSB0ZWdyYV9kaXNwbGF5X2h1Yl9vZl9tYXRjaCwKLQkJLnBtID0gJnRlZ3Jh X2Rpc3BsYXlfaHViX3BtX29wcywKIAl9LAogCS5wcm9iZSA9IHRlZ3JhX2Rpc3BsYXlfaHViX3By b2JlLAogCS5yZW1vdmUgPSB0ZWdyYV9kaXNwbGF5X2h1Yl9yZW1vdmUsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdGVncmEvaHViLmggYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvaHViLmgK aW5kZXggNzY3YTYwZDkzMTNjLi4zZWZhMWJlMDdmZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS90ZWdyYS9odWIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvaHViLmgKQEAgLTE3 LDcgKzE3LDcgQEAgc3RydWN0IHRlZ3JhX3dpbmRvd2dyb3VwIHsKIAlzdHJ1Y3QgbXV0ZXggbG9j azsKIAogCXVuc2lnbmVkIGludCBpbmRleDsKLQlzdHJ1Y3QgZGV2aWNlICpwYXJlbnQ7CisJc3Ry dWN0IGhvc3QxeF9jbGllbnQgKnBhcmVudDsKIAlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcnN0Owog fTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jIGIvZHJpdmVycy9n cHUvZHJtL3RlZ3JhL3Nvci5jCmluZGV4IDk1NmJmNWQ2ODBhZC4uMjAwZDk5ZTE3YWZlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3RlZ3JhL3Nvci5jCkBAIC0yMjU1LDcgKzIyNTUsNyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9zb3Jf aGRtaV9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlpZiAoZXJyIDwgMCkK IAkJZGV2X2Vycihzb3ItPmRldiwgImZhaWxlZCB0byBwb3dlciBvZmYgSS9PIHBhZDogJWRcbiIs IGVycik7CiAKLQlwbV9ydW50aW1lX3B1dChzb3ItPmRldik7CisJaG9zdDF4X2NsaWVudF9zdXNw ZW5kKCZzb3ItPmNsaWVudCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlZ3JhX3Nvcl9oZG1pX2VuYWJs ZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCkBAIC0yMjc2LDcgKzIyNzYsMTEgQEAgc3Rh dGljIHZvaWQgdGVncmFfc29yX2hkbWlfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cikKIAltb2RlID0gJmVuY29kZXItPmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlOwogCXBjbGsg PSBtb2RlLT5jbG9jayAqIDEwMDA7CiAKLQlwbV9ydW50aW1lX2dldF9zeW5jKHNvci0+ZGV2KTsK KwllcnIgPSBob3N0MXhfY2xpZW50X3Jlc3VtZSgmc29yLT5jbGllbnQpOworCWlmIChlcnIgPCAw KSB7CisJCWRldl9lcnIoc29yLT5kZXYsICJmYWlsZWQgdG8gcmVzdW1lOiAlZFxuIiwgZXJyKTsK KwkJcmV0dXJuOworCX0KIAogCS8qIHN3aXRjaCB0byBzYWZlIHBhcmVudCBjbG9jayAqLwogCWVy ciA9IHRlZ3JhX3Nvcl9zZXRfcGFyZW50X2Nsb2NrKHNvciwgc29yLT5jbGtfc2FmZSk7CkBAIC0y NzIyLDcgKzI3MjYsNyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9zb3JfZHBfZGlzYWJsZShzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJaWYgKG91dHB1dC0+cGFuZWwpCiAJCWRybV9wYW5lbF91 bnByZXBhcmUob3V0cHV0LT5wYW5lbCk7CiAKLQlwbV9ydW50aW1lX3B1dChzb3ItPmRldik7CisJ aG9zdDF4X2NsaWVudF9zdXNwZW5kKCZzb3ItPmNsaWVudCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRl Z3JhX3Nvcl9kcF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQpAQCAtMjc0Miw3 ICsyNzQ2LDExIEBAIHN0YXRpYyB2b2lkIHRlZ3JhX3Nvcl9kcF9lbmFibGUoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQogCW1vZGUgPSAmZW5jb2Rlci0+Y3J0Yy0+c3RhdGUtPmFkanVzdGVk X21vZGU7CiAJaW5mbyA9ICZvdXRwdXQtPmNvbm5lY3Rvci5kaXNwbGF5X2luZm87CiAKLQlwbV9y dW50aW1lX2dldF9zeW5jKHNvci0+ZGV2KTsKKwllcnIgPSBob3N0MXhfY2xpZW50X3Jlc3VtZSgm c29yLT5jbGllbnQpOworCWlmIChlcnIgPCAwKSB7CisJCWRldl9lcnIoc29yLT5kZXYsICJmYWls ZWQgdG8gcmVzdW1lOiAlZFxuIiwgZXJyKTsKKwkJcmV0dXJuOworCX0KIAogCS8qIHN3aXRjaCB0 byBzYWZlIHBhcmVudCBjbG9jayAqLwogCWVyciA9IHRlZ3JhX3Nvcl9zZXRfcGFyZW50X2Nsb2Nr KHNvciwgc29yLT5jbGtfc2FmZSk7CkBAIC0zMTg5LDkgKzMxOTcsODAgQEAgc3RhdGljIGludCB0 ZWdyYV9zb3JfZXhpdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQogCXJldHVybiAwOwog fQogCitzdGF0aWMgaW50IHRlZ3JhX3Nvcl9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGhvc3QxeF9j bGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgdGVncmFfc29yICpzb3IgPSBob3N0MXhfY2xpZW50 X3RvX3NvcihjbGllbnQpOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OworCWlu dCBlcnI7CisKKwlpZiAoc29yLT5yc3QpIHsKKwkJZXJyID0gcmVzZXRfY29udHJvbF9hc3NlcnQo c29yLT5yc3QpOworCQlpZiAoZXJyIDwgMCkgeworCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8g YXNzZXJ0IHJlc2V0OiAlZFxuIiwgZXJyKTsKKwkJCXJldHVybiBlcnI7CisJCX0KKworCQlyZXNl dF9jb250cm9sX3JlbGVhc2Uoc29yLT5yc3QpOworCX0KKworCXVzbGVlcF9yYW5nZSgxMDAwLCAy MDAwKTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFyZShzb3ItPmNsayk7CisJcG1fcnVudGltZV9w dXRfc3luYyhkZXYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdGVncmFfc29yX3J1 bnRpbWVfcmVzdW1lKHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCit7CisJc3RydWN0IHRl Z3JhX3NvciAqc29yID0gaG9zdDF4X2NsaWVudF90b19zb3IoY2xpZW50KTsKKwlzdHJ1Y3QgZGV2 aWNlICpkZXYgPSBjbGllbnQtPmRldjsKKwlpbnQgZXJyOworCisJZXJyID0gcG1fcnVudGltZV9n ZXRfc3luYyhkZXYpOworCWlmIChlcnIgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRv IGdldCBydW50aW1lIFBNOiAlZFxuIiwgZXJyKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwllcnIg PSBjbGtfcHJlcGFyZV9lbmFibGUoc29yLT5jbGspOworCWlmIChlcnIgPCAwKSB7CisJCWRldl9l cnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBjbG9jazogJWRcbiIsIGVycik7CisJCWdvdG8gcHV0 X3JwbTsKKwl9CisKKwl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7CisKKwlpZiAoc29yLT5yc3Qp IHsKKwkJZXJyID0gcmVzZXRfY29udHJvbF9hY3F1aXJlKHNvci0+cnN0KTsKKwkJaWYgKGVyciA8 IDApIHsKKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGFjcXVpcmUgcmVzZXQ6ICVkXG4iLCBl cnIpOworCQkJZ290byBkaXNhYmxlX2NsazsKKwkJfQorCisJCWVyciA9IHJlc2V0X2NvbnRyb2xf ZGVhc3NlcnQoc29yLT5yc3QpOworCQlpZiAoZXJyIDwgMCkgeworCQkJZGV2X2VycihkZXYsICJm YWlsZWQgdG8gZGVhc3NlcnQgcmVzZXQ6ICVkXG4iLCBlcnIpOworCQkJZ290byByZWxlYXNlX3Jl c2V0OworCQl9CisJfQorCisJcmV0dXJuIDA7CisKK3JlbGVhc2VfcmVzZXQ6CisJcmVzZXRfY29u dHJvbF9yZWxlYXNlKHNvci0+cnN0KTsKK2Rpc2FibGVfY2xrOgorCWNsa19kaXNhYmxlX3VucHJl cGFyZShzb3ItPmNsayk7CitwdXRfcnBtOgorCXBtX3J1bnRpbWVfcHV0X3N5bmMoZGV2KTsKKwly ZXR1cm4gZXJyOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGhvc3QxeF9jbGllbnRfb3BzIHNv cl9jbGllbnRfb3BzID0gewogCS5pbml0ID0gdGVncmFfc29yX2luaXQsCiAJLmV4aXQgPSB0ZWdy YV9zb3JfZXhpdCwKKwkuc3VzcGVuZCA9IHRlZ3JhX3Nvcl9ydW50aW1lX3N1c3BlbmQsCisJLnJl c3VtZSA9IHRlZ3JhX3Nvcl9ydW50aW1lX3Jlc3VtZSwKIH07CiAKIHN0YXRpYyBjb25zdCB1OCB0 ZWdyYTEyNF9zb3JfeGJhcl9jZmdbNV0gPSB7CkBAIC0zODQyLDEwICszOTIxLDkgQEAgc3RhdGlj IGludCB0ZWdyYV9zb3JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAo IXNvci0+Y2xrX3BhZCkgewogCQljaGFyICpuYW1lOwogCi0JCWVyciA9IHBtX3J1bnRpbWVfZ2V0 X3N5bmMoJnBkZXYtPmRldik7CisJCWVyciA9IGhvc3QxeF9jbGllbnRfcmVzdW1lKCZzb3ItPmNs aWVudCk7CiAJCWlmIChlcnIgPCAwKSB7Ci0JCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQg dG8gZ2V0IHJ1bnRpbWUgUE06ICVkXG4iLAotCQkJCWVycik7CisJCQlkZXZfZXJyKHNvci0+ZGV2 LCAiZmFpbGVkIHRvIHJlc3VtZTogJWRcbiIsIGVycik7CiAJCQlnb3RvIHJlbW92ZTsKIAkJfQog CkBAIC0zODU2LDcgKzM5MzQsNyBAQCBzdGF0aWMgaW50IHRlZ3JhX3Nvcl9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQl9CiAKIAkJc29yLT5jbGtfcGFkID0gdGVncmFfY2xr X3Nvcl9wYWRfcmVnaXN0ZXIoc29yLCBuYW1lKTsKLQkJcG1fcnVudGltZV9wdXQoJnBkZXYtPmRl dik7CisJCWhvc3QxeF9jbGllbnRfc3VzcGVuZCgmc29yLT5jbGllbnQpOwogCX0KIAogCWlmIChJ U19FUlIoc29yLT5jbGtfcGFkKSkgewpAQCAtMzkxMiw2MSArMzk5MCw2IEBAIHN0YXRpYyBpbnQg dGVncmFfc29yX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJldHVybiAw OwogfQogCi1zdGF0aWMgaW50IHRlZ3JhX3Nvcl9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmlj ZSAqZGV2KQotewotCXN0cnVjdCB0ZWdyYV9zb3IgKnNvciA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp OwotCWludCBlcnI7Ci0KLQlpZiAoc29yLT5yc3QpIHsKLQkJZXJyID0gcmVzZXRfY29udHJvbF9h c3NlcnQoc29yLT5yc3QpOwotCQlpZiAoZXJyIDwgMCkgewotCQkJZGV2X2VycihkZXYsICJmYWls ZWQgdG8gYXNzZXJ0IHJlc2V0OiAlZFxuIiwgZXJyKTsKLQkJCXJldHVybiBlcnI7Ci0JCX0KLQot CQlyZXNldF9jb250cm9sX3JlbGVhc2Uoc29yLT5yc3QpOwotCX0KLQotCXVzbGVlcF9yYW5nZSgx MDAwLCAyMDAwKTsKLQotCWNsa19kaXNhYmxlX3VucHJlcGFyZShzb3ItPmNsayk7Ci0KLQlyZXR1 cm4gMDsKLX0KLQotc3RhdGljIGludCB0ZWdyYV9zb3JfcnVudGltZV9yZXN1bWUoc3RydWN0IGRl dmljZSAqZGV2KQotewotCXN0cnVjdCB0ZWdyYV9zb3IgKnNvciA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOwotCWludCBlcnI7Ci0KLQllcnIgPSBjbGtfcHJlcGFyZV9lbmFibGUoc29yLT5jbGspOwot CWlmIChlcnIgPCAwKSB7Ci0JCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBjbG9jazog JWRcbiIsIGVycik7Ci0JCXJldHVybiBlcnI7Ci0JfQotCi0JdXNsZWVwX3JhbmdlKDEwMDAsIDIw MDApOwotCi0JaWYgKHNvci0+cnN0KSB7Ci0JCWVyciA9IHJlc2V0X2NvbnRyb2xfYWNxdWlyZShz b3ItPnJzdCk7Ci0JCWlmIChlcnIgPCAwKSB7Ci0JCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBh Y3F1aXJlIHJlc2V0OiAlZFxuIiwgZXJyKTsKLQkJCWNsa19kaXNhYmxlX3VucHJlcGFyZShzb3It PmNsayk7Ci0JCQlyZXR1cm4gZXJyOwotCQl9Ci0KLQkJZXJyID0gcmVzZXRfY29udHJvbF9kZWFz c2VydChzb3ItPnJzdCk7Ci0JCWlmIChlcnIgPCAwKSB7Ci0JCQlkZXZfZXJyKGRldiwgImZhaWxl ZCB0byBkZWFzc2VydCByZXNldDogJWRcbiIsIGVycik7Ci0JCQlyZXNldF9jb250cm9sX3JlbGVh c2Uoc29yLT5yc3QpOwotCQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHNvci0+Y2xrKTsKLQkJCXJl dHVybiBlcnI7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCB0ZWdyYV9z b3Jfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IHRlZ3JhX3NvciAqc29y ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CkBAIC0zOTc0LDggKzM5OTcsOSBAQCBzdGF0aWMgaW50 IHRlZ3JhX3Nvcl9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCWlmIChzb3ItPmhkbWlf c3VwcGx5KSB7CiAJCWVyciA9IHJlZ3VsYXRvcl9kaXNhYmxlKHNvci0+aGRtaV9zdXBwbHkpOwot CQlpZiAoZXJyIDwgMCkKKwkJaWYgKGVyciA8IDApIHsKIAkJCXJldHVybiBlcnI7CisJCX0KIAl9 CiAKIAlyZXR1cm4gMDsKQEAgLTM5OTYsOCArNDAyMCw2IEBAIHN0YXRpYyBpbnQgdGVncmFfc29y X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2 X3BtX29wcyB0ZWdyYV9zb3JfcG1fb3BzID0gewotCVNFVF9SVU5USU1FX1BNX09QUyh0ZWdyYV9z b3JfcnVudGltZV9zdXNwZW5kLCB0ZWdyYV9zb3JfcnVudGltZV9yZXN1bWUsCi0JCQkgICBOVUxM KQogCVNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKHRlZ3JhX3Nvcl9zdXNwZW5kLCB0ZWdyYV9zb3Jf cmVzdW1lKQogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvaG9zdDF4L2J1cy5jIGIvZHJp dmVycy9ncHUvaG9zdDF4L2J1cy5jCmluZGV4IDUwZDUwMDM0NWQwNC4uNmE5OTVkYjUxZDZkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9ob3N0MXgvYnVzLmMKKysrIGIvZHJpdmVycy9ncHUvaG9z dDF4L2J1cy5jCkBAIC03MTAsNiArNzEwLDEwIEBAIGludCBob3N0MXhfY2xpZW50X3JlZ2lzdGVy KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCiAJc3RydWN0IGhvc3QxeCAqaG9zdDF4Owog CWludCBlcnI7CiAKKwlJTklUX0xJU1RfSEVBRCgmY2xpZW50LT5saXN0KTsKKwltdXRleF9pbml0 KCZjbGllbnQtPmxvY2spOworCWNsaWVudC0+dXNlY291bnQgPSAwOworCiAJbXV0ZXhfbG9jaygm ZGV2aWNlc19sb2NrKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoaG9zdDF4LCAmZGV2aWNlcywg bGlzdCkgewpAQCAtNzY4LDMgKzc3Miw3NCBAQCBpbnQgaG9zdDF4X2NsaWVudF91bnJlZ2lzdGVy KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lN Qk9MKGhvc3QxeF9jbGllbnRfdW5yZWdpc3Rlcik7CisKK2ludCBob3N0MXhfY2xpZW50X3N1c3Bl bmQoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkKK3sKKwlpbnQgZXJyID0gMDsKKworCW11 dGV4X2xvY2soJmNsaWVudC0+bG9jayk7CisKKwlpZiAoY2xpZW50LT51c2Vjb3VudCA9PSAxKSB7 CisJCWlmIChjbGllbnQtPm9wcyAmJiBjbGllbnQtPm9wcy0+c3VzcGVuZCkgeworCQkJZXJyID0g Y2xpZW50LT5vcHMtPnN1c3BlbmQoY2xpZW50KTsKKwkJCWlmIChlcnIgPCAwKQorCQkJCWdvdG8g dW5sb2NrOworCQl9CisJfQorCisJY2xpZW50LT51c2Vjb3VudC0tOworCWRldl9kYmcoY2xpZW50 LT5kZXYsICJ1c2UgY291bnQ6ICV1XG4iLCBjbGllbnQtPnVzZWNvdW50KTsKKworCWlmIChjbGll bnQtPnBhcmVudCkgeworCQllcnIgPSBob3N0MXhfY2xpZW50X3N1c3BlbmQoY2xpZW50LT5wYXJl bnQpOworCQlpZiAoZXJyIDwgMCkKKwkJCWdvdG8gcmVzdW1lOworCX0KKworCWdvdG8gdW5sb2Nr OworCityZXN1bWU6CisJaWYgKGNsaWVudC0+dXNlY291bnQgPT0gMCkKKwkJaWYgKGNsaWVudC0+ b3BzICYmIGNsaWVudC0+b3BzLT5yZXN1bWUpCisJCQljbGllbnQtPm9wcy0+cmVzdW1lKGNsaWVu dCk7CisKKwljbGllbnQtPnVzZWNvdW50Kys7Cit1bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZjbGll bnQtPmxvY2spOworCXJldHVybiBlcnI7Cit9CitFWFBPUlRfU1lNQk9MKGhvc3QxeF9jbGllbnRf c3VzcGVuZCk7CisKK2ludCBob3N0MXhfY2xpZW50X3Jlc3VtZShzdHJ1Y3QgaG9zdDF4X2NsaWVu dCAqY2xpZW50KQoreworCWludCBlcnIgPSAwOworCisJbXV0ZXhfbG9jaygmY2xpZW50LT5sb2Nr KTsKKworCWlmIChjbGllbnQtPnBhcmVudCkgeworCQllcnIgPSBob3N0MXhfY2xpZW50X3Jlc3Vt ZShjbGllbnQtPnBhcmVudCk7CisJCWlmIChlcnIgPCAwKQorCQkJZ290byB1bmxvY2s7CisJfQor CisJaWYgKGNsaWVudC0+dXNlY291bnQgPT0gMCkgeworCQlpZiAoY2xpZW50LT5vcHMgJiYgY2xp ZW50LT5vcHMtPnJlc3VtZSkgeworCQkJZXJyID0gY2xpZW50LT5vcHMtPnJlc3VtZShjbGllbnQp OworCQkJaWYgKGVyciA8IDApCisJCQkJZ290byBzdXNwZW5kOworCQl9CisJfQorCisJY2xpZW50 LT51c2Vjb3VudCsrOworCWRldl9kYmcoY2xpZW50LT5kZXYsICJ1c2UgY291bnQ6ICV1XG4iLCBj bGllbnQtPnVzZWNvdW50KTsKKworCWdvdG8gdW5sb2NrOworCitzdXNwZW5kOgorCWlmIChjbGll bnQtPnBhcmVudCkKKwkJaG9zdDF4X2NsaWVudF9zdXNwZW5kKGNsaWVudC0+cGFyZW50KTsKK3Vu bG9jazoKKwltdXRleF91bmxvY2soJmNsaWVudC0+bG9jayk7CisJcmV0dXJuIGVycjsKK30KK0VY UE9SVF9TWU1CT0woaG9zdDF4X2NsaWVudF9yZXN1bWUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9ob3N0MXguaCBiL2luY2x1ZGUvbGludXgvaG9zdDF4LmgKaW5kZXggNDcwYTE5M2E5ZmVk Li4wMjU0ZWJjZGMwYTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaG9zdDF4LmgKKysrIGIv aW5jbHVkZS9saW51eC9ob3N0MXguaApAQCAtMjQsMTAgKzI0LDE0IEBAIHN0cnVjdCBpb21tdV9n cm91cDsKICAqIHN0cnVjdCBob3N0MXhfY2xpZW50X29wcyAtIGhvc3QxeCBjbGllbnQgb3BlcmF0 aW9ucwogICogQGluaXQ6IGhvc3QxeCBjbGllbnQgaW5pdGlhbGl6YXRpb24gY29kZQogICogQGV4 aXQ6IGhvc3QxeCBjbGllbnQgdGVhciBkb3duIGNvZGUKKyAqIEBzdXNwZW5kOiBob3N0MXggY2xp ZW50IHN1c3BlbmQgY29kZQorICogQHJlc3VtZTogaG9zdDF4IGNsaWVudCByZXN1bWUgY29kZQog ICovCiBzdHJ1Y3QgaG9zdDF4X2NsaWVudF9vcHMgewogCWludCAoKmluaXQpKHN0cnVjdCBob3N0 MXhfY2xpZW50ICpjbGllbnQpOwogCWludCAoKmV4aXQpKHN0cnVjdCBob3N0MXhfY2xpZW50ICpj bGllbnQpOworCWludCAoKnN1c3BlbmQpKHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpOwor CWludCAoKnJlc3VtZSkoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCk7CiB9OwogCiAvKioK QEAgLTU1LDYgKzU5LDEwIEBAIHN0cnVjdCBob3N0MXhfY2xpZW50IHsKIAogCXN0cnVjdCBob3N0 MXhfc3luY3B0ICoqc3luY3B0czsKIAl1bnNpZ25lZCBpbnQgbnVtX3N5bmNwdHM7CisKKwlzdHJ1 Y3QgaG9zdDF4X2NsaWVudCAqcGFyZW50OworCXVuc2lnbmVkIGludCB1c2Vjb3VudDsKKwlzdHJ1 Y3QgbXV0ZXggbG9jazsKIH07CiAKIC8qCkBAIC0zMDksNiArMzE3LDkgQEAgaW50IGhvc3QxeF9k ZXZpY2VfZXhpdChzdHJ1Y3QgaG9zdDF4X2RldmljZSAqZGV2aWNlKTsKIGludCBob3N0MXhfY2xp ZW50X3JlZ2lzdGVyKHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpOwogaW50IGhvc3QxeF9j bGllbnRfdW5yZWdpc3RlcihzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KTsKIAoraW50IGhv c3QxeF9jbGllbnRfc3VzcGVuZChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KTsKK2ludCBo b3N0MXhfY2xpZW50X3Jlc3VtZShzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KTsKKwogc3Ry dWN0IHRlZ3JhX21pcGlfZGV2aWNlOwogCiBzdHJ1Y3QgdGVncmFfbWlwaV9kZXZpY2UgKnRlZ3Jh X21pcGlfcmVxdWVzdChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpOwotLSAKMi4yMy4wCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=