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=-14.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,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 A6DB9C43603 for ; Fri, 6 Dec 2019 08:18:28 +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 8753B2467A for ; Fri, 6 Dec 2019 08:18:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8753B2467A 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 BE7DD6F987; Fri, 6 Dec 2019 08:17:40 +0000 (UTC) Received: from mail-pj1-x1044.google.com (mail-pj1-x1044.google.com [IPv6:2607:f8b0:4864:20::1044]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7697A6EA21 for ; Fri, 6 Dec 2019 07:46:12 +0000 (UTC) Received: by mail-pj1-x1044.google.com with SMTP id o11so2388351pjp.9 for ; Thu, 05 Dec 2019 23:46:12 -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; bh=rFcNN77nLDaE7mPcrOF+qBbMMDJjTFiy2iEDowiCNHU=; b=IIOhktCakeOzgokcICv/iCndnlazHzOd2VqBKxgUb0kGshJx0M6bFav1mBAVtcSbMW hKV6UazyGdRTzg1mgFFSwX/uWU3I4xE4a052kfyD7e1DsdXzzmnHUU3eXRArQc2iEmu2 BsaLC7mFxcwRZxDkJpnctgB6F3MlGoplKeR58rWcjdis1G+eCP+Y3SgCEvj920xVLQgQ gqMQoHkmJJd/jm0GBYZI3xjWiNDb737+CdaVKjNQfZXwpP64tLn+xfMYP/6ixGC7pCc2 LhFK8Ut2Sw3nXy55RGzqcWYNRYVsTflaKrs/Hy3rzcY65TipMhK5xz7dyGWNKRdqaC9p i1yw== X-Gm-Message-State: APjAAAVibVVY13Sf7K7ayqMx73x+W8mZA5rp2DtCZznWUkwZy8bLQ9yj n/nXvQTS4vmwtuLUrxti30FiQSnkfO8= X-Google-Smtp-Source: APXvYqzViCtAvCK10BpI4qElZSEpPKm/a+k0YJNcJ9dM7GkJxj1TD9lsRfTXPKRTjZOGH+lFfq2YZw== X-Received: by 2002:a17:90a:db0b:: with SMTP id g11mr13715423pjv.140.1575618371090; Thu, 05 Dec 2019 23:46:11 -0800 (PST) Received: from super-sugar.huaqin.com ([101.78.151.194]) by smtp.gmail.com with ESMTPSA id u4sm2065226pjb.31.2019.12.05.23.46.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Dec 2019 23:46:10 -0800 (PST) From: Jerry Han To: dri-devel@lists.freedesktop.org Subject: [PATCH] drm/panel: Add Boe Himax8279d MIPI-DSI LCD panel Date: Fri, 6 Dec 2019 15:45:57 +0800 Message-Id: <20191206074557.19221-1-jerry.han.hq@gmail.com> X-Mailer: git-send-email 2.17.1 X-Mailman-Approved-At: Fri, 06 Dec 2019 08:17:34 +0000 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; bh=rFcNN77nLDaE7mPcrOF+qBbMMDJjTFiy2iEDowiCNHU=; b=jNRomOYNvVESxehhp9uQhU0NJZB+PK5PEjpOQYTcPecTG4+kiHel9aG2USMgdysj9N +JU1dOhyclmbq6smK1lYGB9YgU0rUdBpahxcukeSf67MuhnQXvXjudMU+hTSOxcdIbHd PPiuNndCTqPSvAUDbr6JTkAzw72DhUxdVYS3Y153HQuPwYDpumP/D5Oju4Ry7EHi8/ro 8VrI6Lui+jaS2jAaWzVwmExWmC3ZKJL3eHgpss9fUgZ2AQbn9janFlD/uAr3GvNXK7dq vT41xBbfyM7Wjs3ln0qBwVsnCJGVFbeHYzoaK+MC25FRjGXswXPkgaN0Wb+far6WCJom ibVQ== 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: Jerry Han , Jitao Shi , Rock wang MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" U3VwcG9ydCBCb2UgSGltYXg4Mjc5ZCA4LjAiIDEyMDB4MTkyMCBURlQgTENEIHBhbmVsLCBpdCBp cyBhIE1JUEkgRFNJCnBhbmVsLgoKVjk6Ci0gQWRqdXN0IGluaXQgY29kZSwgbWFrZSB0aGUgZm9y bWF0IG1vcmUgY29uY2lzZQotIGtpbGwgb2ZmIGRlZmF1bHRfb2ZmX2NtZHMgKEVtaWwpCi0gdXNl IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV97b24sb2ZmfSBpbiB0aGVpciBlbmFibGUvZGlzYWJs ZQogICAgY2FsbGJhY2tzLiAoRW1pbCkKLSBBZGp1c3RpbmcgdGhlIGRlbGF5IGZ1bmN0aW9uIChF bWlsKQoKVjg6Ci0gbW9kaWZ5IFBBUkVOVEhFU0lTX0FMSUdOTUVOVCBmb3JtYXQgKFNhbSkKLSB1 c2UgZ3Bpb3MgYXJlIHJlcXVpcmVkIEFQSSByZXBsYWNlIG9wdGlvbmFsIGdwaW8gQVBJIChFbWls KQoKVjc6Ci0gTW9kaWZ5IGNvbW11bmljYXRpb24gYWRkcmVzcwoKVjY6Ci0gQWRkIHRoZSBpbmZv cm1hdGlvbiBvZiB0aGUgcmV2aWV3ZXIKLSBSZW1vdmUgdW5uZWNlc3NhcnkgZGVsYXlzLCBUaGUg dWRlbGF5X3JhbmdlIGNvZGUgZ3JhY2VmdWxseSByZXR1cm5zCiAgICB3aXRob3V0IGhpdHRpbmcg dGhlIHNjaGVkdWxlciBvbiBhIGRlbGF5IG9mIDAuIChEZXJlaykKLSBNZXJnZSB0aGUgc2FtZSBk YXRhIHN0cnVjdHVyZXMsIGxpa2UgZGlzcGxheV9tb2RlIGFuZCBvZmZfY21kcyAoRGVyZWspCi0g T3B0aW1pemUgdGhlIHByb2Nlc3Npbmcgb2YgcmVzdWx0cyByZXR1cm5lZCBieQogICAgZGV2bV9n cGlvZF9nZXRfb3B0aW9uYWwgKERlcmVrKQoKVjU6Ci0gQWRkIHRoZSBpbmZvcm1hdGlvbiBvZiB0 aGUgcmV2aWV3ZXIgKFNhbSkKLSBEZWxldGUgdW5uZWNlc3NhcnkgaGVhZGVyIGZpbGVzICNpbmNs dWRlIDxsaW51eC9mYi5oPiAoU2FtKQotIFRoZSBjb25maWcgRFJNX1BBTkVMX0JPRV9ISU1BWDgy NzlEIGFwcGVhcnMgdHdpY2UuIERyb3Agb25lIG9mIHRoZW0gKFNhbSkKLSBBREQgc3RhdGljLCBz ZXRfZ3Bpb3MgZnVuY3Rpb24gaXMgbm90IHVzZWQgb3V0c2lkZSB0aGlzIG1vZHVsZSAoU2FtKQoK VjQ6Ci0gRnJlZml4IGFsbCBmdW5jdGlvbiBtYWVzIHdpdGggYm9lXyAoU2FtKQotIEZzZWQgImVu YWJsZV9ncGlvIiByZXBsYWNlICJyZXNldF9ncGlvIiwgTWFrZSBpdCBsb29rIGNsZWFyZXIgKFNh bSkKLSBTb3J0IGluY2x1ZGUgbGluZXMgYWxwaGFiZXRpY2FsbHkgKFNhbSkKLSBGaXhlZCBlbnRy aWVzIGluIHRoZSBtYWtlZmlsZSBtdXN0IGJlIHNvcnRlZCBhbHBoYWJldGljYWxseSAoU2FtKQot IEFkZCBzZW5kX21pcGlfY21kcyBmdW5jdGlvbiB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgY29k ZSAoU2FtKQotIEFkZCB0aGUgbmVjZXNzYXJ5IGRlbGF5KHJlc2V0X2RlbGF5X3Q1KSBiZXR3ZWVu IHJlc2V0IGFuZCBzZW5kaW5nCiAgICB0aGUgaW5pdGlhbGl6YXRpb24gY29tbWFuZCAoUm9jayB3 YW5nKQoKVjM6Ci0gUmVtb3ZlIHVubmVjZXNzYXJ5IGRlbGF5cyBpbiBzZW5kaW5nIGluaXRpYWxp emF0aW9uIGNvbW1hbmRzIChKaXRhbyBTaGkpCgpWMjoKLSBVc2UgU1BEWCBpZGVudGlmaWVyIChT YW0pCi0gVXNlIG5lY2Vzc2FyeSBoZWFkZXIgZmlsZXMgcmVwbGFjZSBkcm1QLmggKFNhbSkKLSBE ZWxldGUgdW5uZWNlc3NhcnkgaGVhZGVyIGZpbGVzICNpbmNsdWRlIDxsaW51eC9lcnIuaD4gKFNh bSkKLSBTcGVjaWZpZXMgYSBHUElPcyBhcnJheSB0byBjb250cm9sIHRoZSByZXNldCB0aW1pbmcs CiAgICBpbnN0ZWFkIG9mIHJlYWRpbmcgImRzaS1yZXNldC1zZXF1ZW5jZSIgZGF0YSBmcm9tIERU UyAoU2FtKQotIERlbGV0ZSBiYWNrbGlnaHRfZGlzYWJsZSgpIGZ1bmN0aW9uIHdoZW4gYWxyZWFk eSBkaXNhYmxlZCAoU2FtKQotIFVzZSBkZXZtX29mX2ZpbmRfYmFja2xpZ2h0KCkgcmVwbGFjZSBv Zl9maW5kX2JhY2tsaWdodF9ieV9ub2RlKCkgKFNhbSkKLSBNb3ZlIHRoZSBuZWNlc3NhcnkgZGF0 YSBpbiB0aGUgRFRTIHRvIHRoZSBjdXJyZW50IGZpbGUsCiAgICBsaWtlIHBvcmNoLCBkaXNwbGF5 X21vZGUgYW5kIEluaXQgY29kZSBldGMuIChTYW0pCi0gQWRkIGNvbXBhdGlibGUgZGV2aWNlICJi b2UsaGltYXg4Mjc5ZDEwcCIgKFNhbSkKClYxOgotIFN1cHBvcnQgQm9lIEhpbWF4ODI3OWQgOC4w IiAxMjAweDE5MjAgVEZUIExDRCBwYW5lbCwgaXQgaXMgYSBNSVBJIERTSQogICAgcGFuZWwuCgpT aWduZWQtb2ZmLWJ5OiBKZXJyeSBIYW4gPGplcnJ5Lmhhbi5ocUBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBTYW0gUmF2bmJvcmcgPHNhbUByYXZuYm9yZy5vcmc+ClJldmlld2VkLWJ5OiBEZXJlayBC YXNlaG9yZSA8ZGJhc2Vob3JlQGNocm9taXVtLm9yZz4KUmV2aWV3ZWQtYnk6IEVtaWwgVmVsaWtv diA8ZW1pbC5sLnZlbGlrb3ZAZ21haWwuY29tPgpDYzogSml0YW8gU2hpIDxqaXRhby5zaGlAbWVk aWF0ZWsuY29tPgpDYzogUm9jayB3YW5nIDxyb2NrX3dhbmdAaGltYXguY29tLmNuPgotLS0KIE1B SU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGRyaXZl cnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgICAgIHwgIDExICsKIGRyaXZlcnMv Z3B1L2RybS9wYW5lbC9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1 L2RybS9wYW5lbC9wYW5lbC1ib2UtaGltYXg4Mjc5ZC5jIHwgOTg5ICsrKysrKysrKysrKysrKysr KysKIDQgZmlsZXMgY2hhbmdlZCwgMTAwNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWJvZS1oaW1heDgyNzlkLmMKCmRpZmYgLS1n aXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGMyYjg5NDUzODA1Zi4uMjk1Y2Iy MTQ4MzRjIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtNTEz NSw2ICs1MTM1LDEyIEBAIFQ6CWdpdCBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9kcm0v ZHJtLW1pc2MKIFM6CU1haW50YWluZWQKIEY6CWRyaXZlcnMvZ3B1L2RybS9ib2Nocy8KIAorRFJN IERSSVZFUiBGT1IgQk9FIEhJTUFYODI3OUQgUEFORUxTCitNOglKZXJyeSBIYW4gPGhhbnh1NUBo dWFxaW4uY29ycC1wYXJ0bmVyLmdvb2dsZS5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJz L2dwdS9kcm0vcGFuZWwvcGFuZWwtYm9lLWhpbWF4ODI3OWQuYworRjoJRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvYm9lLGhpbWF4ODI3OWQudHh0CisKIERS TSBEUklWRVIgRk9SIEZBUkFEQVkgVFZFMjAwIFRWIEVOQ09ERVIKIE06CUxpbnVzIFdhbGxlaWog PGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KIFQ6CWdpdCBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNr dG9wLm9yZy9kcm0vZHJtLW1pc2MKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9L Y29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKaW5kZXggZjE1MmJjNGVlYjUz Li42ODNmZjc3YTM3MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmln CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCkBAIC0xOCw2ICsxOCwxNyBAQCBj b25maWcgRFJNX1BBTkVMX0FSTV9WRVJTQVRJTEUKIAkgIHJlZmVyZW5jZSBkZXNpZ25zLiBUaGUg cGFuZWwgaXMgZGV0ZWN0ZWQgdXNpbmcgc3BlY2lhbCByZWdpc3RlcnMKIAkgIGluIHRoZSBWZXJz YXRpbGUgZmFtaWx5IHN5c2NvbiByZWdpc3RlcnMuCiAKK2NvbmZpZyBEUk1fUEFORUxfQk9FX0hJ TUFYODI3OUQKKwl0cmlzdGF0ZSAiQm9lIEhpbWF4ODI3OWQgcGFuZWwiCisJZGVwZW5kcyBvbiBP RgorCWRlcGVuZHMgb24gRFJNX01JUElfRFNJCisJZGVwZW5kcyBvbiBCQUNLTElHSFRfQ0xBU1Nf REVWSUNFCisJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9y dCBmb3IgQm9lIEhpbWF4ODI3OWQKKwkgIFRGVC1MQ0QgbW9kdWxlcy4gVGhlIHBhbmVsIGhhcyBh IDEyMDB4MTkyMCByZXNvbHV0aW9uIGFuZCB1c2VzCisJICAyNCBiaXQgUkdCIHBlciBwaXhlbC4g SXQgcHJvdmlkZXMgYSBNSVBJIERTSSBpbnRlcmZhY2UgdG8KKwkgIHRoZSBob3N0IGFuZCBoYXMg YSBidWlsdC1pbiBMRUQgYmFja2xpZ2h0LgorCiBjb25maWcgRFJNX1BBTkVMX0xWRFMKIAl0cmlz dGF0ZSAiR2VuZXJpYyBMVkRTIHBhbmVsIGRyaXZlciIKIAlkZXBlbmRzIG9uIE9GCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUKaW5kZXggYjZjZDM5ZmUwZjIwLi44NzgzNDc2MTEwYTMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUKQEAgLTEsNSArMSw2IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0FSTV9WRVJTQVRJTEUpICs9IHBhbmVsLWFy bS12ZXJzYXRpbGUubworb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9CT0VfSElNQVg4Mjc5RCkgKz0g cGFuZWwtYm9lLWhpbWF4ODI3OWQubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9MVkRTKSArPSBw YW5lbC1sdmRzLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0lNUExFKSArPSBwYW5lbC1zaW1w bGUubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9GRUlZQU5HX0ZZMDcwMjRESTI2QTMwRCkgKz0g cGFuZWwtZmVpeWFuZy1meTA3MDI0ZGkyNmEzMGQubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL3BhbmVsLWJvZS1oaW1heDgyNzlkLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtYm9lLWhpbWF4ODI3OWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjVmY2Y2OWIxODU2MwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9w YW5lbC9wYW5lbC1ib2UtaGltYXg4Mjc5ZC5jCkBAIC0wLDAgKzEsOTg5IEBACisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgSHVh cWluIFRlbGVjb20gVGVjaG5vbG9neSBDby4sIEx0ZAorICoKKyAqIEF1dGhvcjogSmVycnkgSGFu IDxqZXJyeS5oYW4uaHFAZ21haWwuY29tPgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvYmFj a2xpZ2h0Lmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJu ZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgor I2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgorCisjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25z dW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgorCisjaW5jbHVk ZSA8ZHJtL2RybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX3ByaW50Lmg+CisKKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4K Kworc3RydWN0IHBhbmVsX2NtZCB7CisJY2hhciBjbWQ7CisJY2hhciBkYXRhOworfQorCitzdHJ1 Y3QgcGFuZWxfZGVzYyB7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRpc3BsYXlf bW9kZTsKKwl1bnNpZ25lZCBpbnQgYnBjOworCXVuc2lnbmVkIGludCB3aWR0aF9tbTsKKwl1bnNp Z25lZCBpbnQgaGVpZ2h0X21tOworCisJdW5zaWduZWQgbG9uZyBtb2RlX2ZsYWdzOworCWVudW0g bWlwaV9kc2lfcGl4ZWxfZm9ybWF0IGZvcm1hdDsKKwl1bnNpZ25lZCBpbnQgbGFuZXM7CisJY29u c3Qgc3RydWN0IHBhbmVsX2NtZCAqb25fY21kczsKKwl1bnNpZ25lZCBpbnQgb25fY21kc19udW07 Cit9OworCitzdHJ1Y3QgcGFuZWxfaW5mbyB7CisJc3RydWN0IGRybV9wYW5lbCBiYXNlOworCXN0 cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmxpbms7CisJY29uc3Qgc3RydWN0IHBhbmVsX2Rlc2MgKmRl c2M7CisKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0OworCXN0cnVjdCBncGlv X2Rlc2MgKmVuYWJsZV9ncGlvOworCXN0cnVjdCBncGlvX2Rlc2MgKnBwMzNfZ3BpbzsKKwlzdHJ1 Y3QgZ3Bpb19kZXNjICpwcDE4X2dwaW87CisKKwlib29sIHByZXBhcmVkOworCWJvb2wgZW5hYmxl ZDsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHBhbmVsX2luZm8gKnRvX3BhbmVsX2luZm8o c3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihwYW5lbCwg c3RydWN0IHBhbmVsX2luZm8sIGJhc2UpOworfQorCitzdGF0aWMgdm9pZCBkaXNhYmxlX2dwaW9z KHN0cnVjdCBwYW5lbF9pbmZvICpwaW5mbykKK3sKKwlncGlvZF9zZXRfdmFsdWUocGluZm8tPmVu YWJsZV9ncGlvLCAwKTsKKwlncGlvZF9zZXRfdmFsdWUocGluZm8tPnBwMzNfZ3BpbywgMCk7CisJ Z3Bpb2Rfc2V0X3ZhbHVlKHBpbmZvLT5wcDE4X2dwaW8sIDApOworfQorCitzdGF0aWMgaW50IHNl bmRfbWlwaV9jbWRzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLCBjb25zdCBzdHJ1Y3QgcGFuZWxf Y21kICpjbWRzKQoreworCXN0cnVjdCBwYW5lbF9pbmZvICpwaW5mbyA9IHRvX3BhbmVsX2luZm8o cGFuZWwpOworCXVuc2lnbmVkIGludCBpID0gMDsKKwlpbnQgZXJyOworCisJZm9yIChpID0gMDsg aSA8IHBpbmZvLT5kZXNjLT5vbl9jbWRzX251bTsgaSsrKSB7CisJCWVyciA9IG1pcGlfZHNpX2Rj c193cml0ZV9idWZmZXIocGluZm8tPmxpbmssICZjbWRzW2ldLAorCQkJCQkJc2l6ZW9mKHN0cnVj dCBwYW5lbF9jbWQpKTsKKworCQlpZiAoZXJyIDwgMCkKKwkJCXJldHVybiBlcnI7CisJfQorCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYm9lX3BhbmVsX2Rpc2FibGUoc3RydWN0IGRybV9w YW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHBhbmVsX2luZm8gKnBpbmZvID0gdG9fcGFuZWxfaW5m byhwYW5lbCk7CisJaW50IGVycjsKKworCWlmICghcGluZm8tPmVuYWJsZWQpCisJCXJldHVybiAw OworCisJYmFja2xpZ2h0X2Rpc2FibGUocGluZm8tPmJhY2tsaWdodCk7CisKKwllcnIgPSBtaXBp X2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2ZmKHBpbmZvLT5saW5rKTsKKwlpZiAoZXJyIDwgMCkgewor CQlEUk1fREVWX0VSUk9SKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gc2V0IGRpc3BsYXkgb2ZmOiAl ZFxuIiwKKwkJCSAgICAgIGVycik7CisJCXJldHVybiBlcnI7CisJfQorCisJcGluZm8tPmVuYWJs ZWQgPSBmYWxzZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGJvZV9wYW5lbF91bnBy ZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHBhbmVsX2luZm8gKnBp bmZvID0gdG9fcGFuZWxfaW5mbyhwYW5lbCk7CisJaW50IGVycjsKKworCWlmICghcGluZm8tPnBy ZXBhcmVkKQorCQlyZXR1cm4gMDsKKworCWVyciA9IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9v ZmYocGluZm8tPmxpbmspOworCWlmIChlcnIgPCAwKQorCQlEUk1fREVWX0VSUk9SKHBhbmVsLT5k ZXYsICJmYWlsZWQgdG8gc2V0IGRpc3BsYXkgb2ZmOiAlZFxuIiwKKwkJCSAgICAgIGVycik7CisK KwllcnIgPSBtaXBpX2RzaV9kY3NfZW50ZXJfc2xlZXBfbW9kZShwaW5mby0+bGluayk7CisJaWYg KGVyciA8IDApCisJCURSTV9ERVZfRVJST1IocGFuZWwtPmRldiwgImZhaWxlZCB0byBlbnRlciBz bGVlcCBtb2RlOiAlZFxuIiwKKwkJCSAgICAgIGVycik7CisKKwkvKiBzbGVlcF9tb2RlX2RlbGF5 OiAxbXMgLSAybXMgKi8KKwl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7CisKKwlkaXNhYmxlX2dw aW9zKHBpbmZvKTsKKworCXBpbmZvLT5wcmVwYXJlZCA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgYm9lX3BhbmVsX3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwp Cit7CisJc3RydWN0IHBhbmVsX2luZm8gKnBpbmZvID0gdG9fcGFuZWxfaW5mbyhwYW5lbCk7CisJ aW50IGVycjsKKworCWlmIChwaW5mby0+cHJlcGFyZWQpCisJCXJldHVybiAwOworCisJZ3Bpb2Rf c2V0X3ZhbHVlKHBpbmZvLT5wcDE4X2dwaW8sIDEpOworCS8qIFQxOiA1bXMgLSA2bXMgKi8KKwl1 c2xlZXBfcmFuZ2UoNTAwMCwgNjAwMCk7CisJZ3Bpb2Rfc2V0X3ZhbHVlKHBpbmZvLT5wcDMzX2dw aW8sIDEpOworCisJLyogcmVzZXQgc2VxdWVuY2UgKi8KKwkvKiBUMjogMTRtcyAtIDE1bXMgKi8K Kwl1c2xlZXBfcmFuZ2UoMTQwMDAsIDE1MDAwKTsKKwlncGlvZF9zZXRfdmFsdWUocGluZm8tPmVu YWJsZV9ncGlvLCAxKTsKKworCS8qIFQzOiAxbXMgLSAybXMgKi8KKwl1c2xlZXBfcmFuZ2UoMTAw MCwgMjAwMCk7CisJZ3Bpb2Rfc2V0X3ZhbHVlKHBpbmZvLT5lbmFibGVfZ3BpbywgMCk7CisKKwkv KiBUNDogMW1zIC0gMm1zICovCisJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOworCWdwaW9kX3Nl dF92YWx1ZShwaW5mby0+ZW5hYmxlX2dwaW8sIDEpOworCisJLyogVDU6IDVtcyAtIDZtcyAqLwor CXVzbGVlcF9yYW5nZSg1MDAwLCA2MDAwKTsKKworCS8qIHNlbmQgaW5pdCBjb2RlICovCisJZXJy ID0gc2VuZF9taXBpX2NtZHMocGFuZWwsIHBpbmZvLT5kZXNjLT5vbl9jbWRzKTsKKwlpZiAoZXJy IDwgMCkgeworCQlEUk1fREVWX0VSUk9SKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gc2VuZCBEQ1Mg SW5pdCBDb2RlOiAlZFxuIiwKKwkJCSAgICAgIGVycik7CisJCWdvdG8gcG93ZXJvZmY7CisJfQor CisJZXJyID0gbWlwaV9kc2lfZGNzX2V4aXRfc2xlZXBfbW9kZShwaW5mby0+bGluayk7CisJaWYg KGVyciA8IDApIHsKKwkJRFJNX0RFVl9FUlJPUihwYW5lbC0+ZGV2LCAiZmFpbGVkIHRvIGV4aXQg c2xlZXAgbW9kZTogJWRcbiIsCisJCQkgICAgICBlcnIpOworCQlnb3RvIHBvd2Vyb2ZmOworCX0K KworCS8qIFQ2OiAxMjBtcyAtIDEyMW1zICovCisJdXNsZWVwX3JhbmdlKDEyMDAwMCwgMTIxMDAw KTsKKworCWVyciA9IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vbihwaW5mby0+bGluayk7CisJ aWYgKGVyciA8IDApIHsKKwkJRFJNX0RFVl9FUlJPUihwYW5lbC0+ZGV2LCAiZmFpbGVkIHRvIHNl dCBkaXNwbGF5IG9uOiAlZFxuIiwKKwkJCSAgICAgIGVycik7CisJCWdvdG8gcG93ZXJvZmY7CisJ fQorCisJLyogVDc6IDIwbXMgLSAyMW1zICovCisJdXNsZWVwX3JhbmdlKDIwMDAwLCAyMTAwMCk7 CisKKwlwaW5mby0+cHJlcGFyZWQgPSB0cnVlOworCisJcmV0dXJuIDA7CisKK3Bvd2Vyb2ZmOgor CWRpc2FibGVfZ3Bpb3MocGluZm8pOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgYm9l X3BhbmVsX2VuYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgcGFuZWxf aW5mbyAqcGluZm8gPSB0b19wYW5lbF9pbmZvKHBhbmVsKTsKKwlpbnQgcmV0OworCisJaWYgKHBp bmZvLT5lbmFibGVkKQorCQlyZXR1cm4gMDsKKworCXVzbGVlcF9yYW5nZSgxMjAwMDAsIDEyMTAw MCk7CisKKwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb24ocGluZm8tPmxpbmspOwor CWlmIChyZXQgPCAwKSB7CisJCURSTV9ERVZfRVJST1IocGFuZWwtPmRldiwgImZhaWxlZCB0byBz ZXQgZGlzcGxheSBvbjogJWRcbiIsCisJCQkgICAgICByZXQpOworCQlyZXR1cm4gcmV0OworCX0K KworCXJldCA9IGJhY2tsaWdodF9lbmFibGUocGluZm8tPmJhY2tsaWdodCk7CisJaWYgKHJldCkg eworCQlEUk1fREVWX0VSUk9SKHBhbmVsLT5kcm0tPmRldiwKKwkJCSAgICAgICJGYWlsZWQgdG8g ZW5hYmxlIGJhY2tsaWdodCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlwaW5m by0+ZW5hYmxlZCA9IHRydWU7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBib2VfcGFu ZWxfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBwYW5lbF9p bmZvICpwaW5mbyA9IHRvX3BhbmVsX2luZm8ocGFuZWwpOworCWNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptID0gcGluZm8tPmRlc2MtPmRpc3BsYXlfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kZTsKKworCW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUocGFuZWwtPmRy bSwgbSk7CisJaWYgKCFtb2RlKSB7CisJCURSTV9ERVZfRVJST1IocGFuZWwtPmRybS0+ZGV2LCAi ZmFpbGVkIHRvIGFkZCBtb2RlICV1eCV1QCV1XG4iLAorCQkJICAgICAgbS0+aGRpc3BsYXksIG0t PnZkaXNwbGF5LCBtLT52cmVmcmVzaCk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWRybV9t b2RlX3NldF9uYW1lKG1vZGUpOworCisJZHJtX21vZGVfcHJvYmVkX2FkZChwYW5lbC0+Y29ubmVj dG9yLCBtb2RlKTsKKworCXBhbmVsLT5jb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9 IHBpbmZvLT5kZXNjLT53aWR0aF9tbTsKKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8u aGVpZ2h0X21tID0gcGluZm8tPmRlc2MtPmhlaWdodF9tbTsKKwlwYW5lbC0+Y29ubmVjdG9yLT5k aXNwbGF5X2luZm8uYnBjID0gcGluZm8tPmRlc2MtPmJwYzsKKworCXJldHVybiAxOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyBwYW5lbF9mdW5jcyA9IHsKKwkuZGlz YWJsZSA9IGJvZV9wYW5lbF9kaXNhYmxlLAorCS51bnByZXBhcmUgPSBib2VfcGFuZWxfdW5wcmVw YXJlLAorCS5wcmVwYXJlID0gYm9lX3BhbmVsX3ByZXBhcmUsCisJLmVuYWJsZSA9IGJvZV9wYW5l bF9lbmFibGUsCisJLmdldF9tb2RlcyA9IGJvZV9wYW5lbF9nZXRfbW9kZXMsCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgZGVmYXVsdF9kaXNwbGF5X21vZGUgPSB7 CisJLmNsb2NrID0gMTU5NDIwLAorCS5oZGlzcGxheSA9IDEyMDAsCisJLmhzeW5jX3N0YXJ0ID0g MTIwMCArIDgwLAorCS5oc3luY19lbmQgPSAxMjAwICsgODAgKyA2MCwKKwkuaHRvdGFsID0gMTIw MCArIDgwICsgNjAgKyAyNCwKKwkudmRpc3BsYXkgPSAxOTIwLAorCS52c3luY19zdGFydCA9IDE5 MjAgKyAxMCwKKwkudnN5bmNfZW5kID0gMTkyMCArIDEwICsgMTQsCisJLnZ0b3RhbCA9IDE5MjAg KyAxMCArIDE0ICsgNCwKKwkudnJlZnJlc2ggPSA2MCwKK307CisKKy8qIDggaW5jaCAqLworc3Rh dGljIGNvbnN0IHN0cnVjdCBwYW5lbF9jbWQgYm9lX2hpbWF4ODI3OWQ4cF9vbl9jbWRzW10gPSB7 CisJeyAweEIwLCAweDA1IH0sCisJeyAweEIxLCAweEU1IH0sCisJeyAweEIzLCAweDUyIH0sCisJ eyAweEMwLCAweDAwIH0sCisJeyAweEMyLCAweDU3IH0sCisJeyAweEQ5LCAweDg1IH0sCisJeyAw eEIwLCAweDAxIH0sCisJeyAweEM4LCAweDAwIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweEND LCAweDI2IH0sCisJeyAweENELCAweDI2IH0sCisJeyAweERDLCAweDAwIH0sCisJeyAweERELCAw eDAwIH0sCisJeyAweEUwLCAweDI2IH0sCisJeyAweEUxLCAweDI2IH0sCisJeyAweEIwLCAweDAz IH0sCisJeyAweEMzLCAweDJBIH0sCisJeyAweEU3LCAweDJBIH0sCisJeyAweEM1LCAweDJBIH0s CisJeyAweERFLCAweDJBIH0sCisJeyAweEJDLCAweDAyIH0sCisJeyAweENCLCAweDAyIH0sCisJ eyAweEIwLCAweDAwIH0sCisJeyAweEI2LCAweDAzIH0sCisJeyAweEJBLCAweDhCIH0sCisJeyAw eEJGLCAweDE1IH0sCisJeyAweEMwLCAweDE4IH0sCisJeyAweEMyLCAweDE0IH0sCisJeyAweEMz LCAweDAyIH0sCisJeyAweEM0LCAweDE0IH0sCisJeyAweEM1LCAweDAyIH0sCisJeyAweENDLCAw eDBBIH0sCisJeyAweEIwLCAweDA2IH0sCisJeyAweEMwLCAweEE1IH0sCisJeyAweEQ1LCAweDIw IH0sCisJeyAweEMwLCAweDAwIH0sCisJeyAweEIwLCAweDAyIH0sCisJeyAweEMwLCAweDAwIH0s CisJeyAweEMxLCAweDAyIH0sCisJeyAweEMyLCAweDA2IH0sCisJeyAweEMzLCAweDE2IH0sCisJ eyAweEM0LCAweDBFIH0sCisJeyAweEM1LCAweDE4IH0sCisJeyAweEM2LCAweDI2IH0sCisJeyAw eEM3LCAweDMyIH0sCisJeyAweEM4LCAweDNGIH0sCisJeyAweEM5LCAweDNGIH0sCisJeyAweENB LCAweDNGIH0sCisJeyAweENCLCAweDNGIH0sCisJeyAweENDLCAweDNEIH0sCisJeyAweENELCAw eDJGIH0sCisJeyAweENFLCAweDJGIH0sCisJeyAweENGLCAweDJGIH0sCisJeyAweEQwLCAweDA3 IH0sCisJeyAweEQyLCAweDAwIH0sCisJeyAweEQzLCAweDAyIH0sCisJeyAweEQ0LCAweDA2IH0s CisJeyAweEQ1LCAweDEyIH0sCisJeyAweEQ2LCAweDBBIH0sCisJeyAweEQ3LCAweDE0IH0sCisJ eyAweEQ4LCAweDIyIH0sCisJeyAweEQ5LCAweDJFIH0sCisJeyAweERBLCAweDNEIH0sCisJeyAw eERCLCAweDNGIH0sCisJeyAweERDLCAweDNGIH0sCisJeyAweERELCAweDNGIH0sCisJeyAweERF LCAweDNEIH0sCisJeyAweERGLCAweDJGIH0sCisJeyAweEUwLCAweDJGIH0sCisJeyAweEUxLCAw eDJGIH0sCisJeyAweEUyLCAweDA3IH0sCisJeyAweEIwLCAweDA3IH0sCisJeyAweEIxLCAweDE4 IH0sCisJeyAweEIyLCAweDE5IH0sCisJeyAweEIzLCAweDJFIH0sCisJeyAweEI0LCAweDUyIH0s CisJeyAweEI1LCAweDcyIH0sCisJeyAweEI2LCAweDhDIH0sCisJeyAweEI3LCAweEJEIH0sCisJ eyAweEI4LCAweEVCIH0sCisJeyAweEI5LCAweDQ3IH0sCisJeyAweEJBLCAweDk2IH0sCisJeyAw eEJCLCAweDFFIH0sCisJeyAweEJDLCAweDkwIH0sCisJeyAweEJELCAweDkzIH0sCisJeyAweEJF LCAweEZBIH0sCisJeyAweEJGLCAweDU2IH0sCisJeyAweEMwLCAweDhDIH0sCisJeyAweEMxLCAw eEI3IH0sCisJeyAweEMyLCAweENDIH0sCisJeyAweEMzLCAweERGIH0sCisJeyAweEM0LCAweEU4 IH0sCisJeyAweEM1LCAweEYwIH0sCisJeyAweEM2LCAweEY4IH0sCisJeyAweEM3LCAweEZBIH0s CisJeyAweEM4LCAweEZDIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJ eyAweENCLCAweDVBIH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAw eENFLCAweEZGIH0sCisJeyAweEIwLCAweDA4IH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIy LCAweDE1IH0sCisJeyAweEIzLCAweDJEIH0sCisJeyAweEI0LCAweDUxIH0sCisJeyAweEI1LCAw eDcyIH0sCisJeyAweEI2LCAweDhEIH0sCisJeyAweEI3LCAweEJFIH0sCisJeyAweEI4LCAweEVE IH0sCisJeyAweEI5LCAweDRBIH0sCisJeyAweEJBLCAweDlBIH0sCisJeyAweEJCLCAweDIzIH0s CisJeyAweEJDLCAweDk1IH0sCisJeyAweEJELCAweDk4IH0sCisJeyAweEJFLCAweEZGIH0sCisJ eyAweEJGLCAweDU5IH0sCisJeyAweEMwLCAweDhFIH0sCisJeyAweEMxLCAweEI5IH0sCisJeyAw eEMyLCAweENEIH0sCisJeyAweEMzLCAweERGIH0sCisJeyAweEM0LCAweEU4IH0sCisJeyAweEM1 LCAweEYwIH0sCisJeyAweEM2LCAweEY4IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4LCAw eEZDIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDVB IH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0s CisJeyAweEIwLCAweDA5IH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIyLCAweDJDIH0sCisJ eyAweEIzLCAweDM2IH0sCisJeyAweEI0LCAweDUzIH0sCisJeyAweEI1LCAweDczIH0sCisJeyAw eEI2LCAweDhFIH0sCisJeyAweEI3LCAweEMwIH0sCisJeyAweEI4LCAweEVGIH0sCisJeyAweEI5 LCAweDRDIH0sCisJeyAweEJBLCAweDlEIH0sCisJeyAweEJCLCAweDI1IH0sCisJeyAweEJDLCAw eDk2IH0sCisJeyAweEJELCAweDlBIH0sCisJeyAweEJFLCAweDAxIH0sCisJeyAweEJGLCAweDU5 IH0sCisJeyAweEMwLCAweDhFIH0sCisJeyAweEMxLCAweEI5IH0sCisJeyAweEMyLCAweENEIH0s CisJeyAweEMzLCAweERGIH0sCisJeyAweEM0LCAweEU4IH0sCisJeyAweEM1LCAweEYwIH0sCisJ eyAweEM2LCAweEY4IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4LCAweEZDIH0sCisJeyAw eEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDVBIH0sCisJeyAweEND LCAweEJGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAw eDBBIH0sCisJeyAweEIxLCAweDE4IH0sCisJeyAweEIyLCAweDE5IH0sCisJeyAweEIzLCAweDJF IH0sCisJeyAweEI0LCAweDUyIH0sCisJeyAweEI1LCAweDcyIH0sCisJeyAweEI2LCAweDhDIH0s CisJeyAweEI3LCAweEJEIH0sCisJeyAweEI4LCAweEVCIH0sCisJeyAweEI5LCAweDQ3IH0sCisJ eyAweEJBLCAweDk2IH0sCisJeyAweEJCLCAweDFFIH0sCisJeyAweEJDLCAweDkwIH0sCisJeyAw eEJELCAweDkzIH0sCisJeyAweEJFLCAweEZBIH0sCisJeyAweEJGLCAweDU2IH0sCisJeyAweEMw LCAweDhDIH0sCisJeyAweEMxLCAweEI3IH0sCisJeyAweEMyLCAweENDIH0sCisJeyAweEMzLCAw eERGIH0sCisJeyAweEM0LCAweEU4IH0sCisJeyAweEM1LCAweEYwIH0sCisJeyAweEM2LCAweEY4 IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4LCAweEZDIH0sCisJeyAweEM5LCAweDAwIH0s CisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDVBIH0sCisJeyAweENDLCAweEFGIH0sCisJ eyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAweDBCIH0sCisJeyAw eEIxLCAweDA0IH0sCisJeyAweEIyLCAweDE1IH0sCisJeyAweEIzLCAweDJEIH0sCisJeyAweEI0 LCAweDUxIH0sCisJeyAweEI1LCAweDcyIH0sCisJeyAweEI2LCAweDhEIH0sCisJeyAweEI3LCAw eEJFIH0sCisJeyAweEI4LCAweEVEIH0sCisJeyAweEI5LCAweDRBIH0sCisJeyAweEJBLCAweDlB IH0sCisJeyAweEJCLCAweDIzIH0sCisJeyAweEJDLCAweDk1IH0sCisJeyAweEJELCAweDk4IH0s CisJeyAweEJFLCAweEZGIH0sCisJeyAweEJGLCAweDU5IH0sCisJeyAweEMwLCAweDhFIH0sCisJ eyAweEMxLCAweEI5IH0sCisJeyAweEMyLCAweENEIH0sCisJeyAweEMzLCAweERGIH0sCisJeyAw eEM0LCAweEU4IH0sCisJeyAweEM1LCAweEYwIH0sCisJeyAweEM2LCAweEY4IH0sCisJeyAweEM3 LCAweEZBIH0sCisJeyAweEM4LCAweEZDIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAw eDAwIH0sCisJeyAweENCLCAweDVBIH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZG IH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAweDBDIH0sCisJeyAweEIxLCAweDA0IH0s CisJeyAweEIyLCAweDJDIH0sCisJeyAweEIzLCAweDM2IH0sCisJeyAweEI0LCAweDUzIH0sCisJ eyAweEI1LCAweDczIH0sCisJeyAweEI2LCAweDhFIH0sCisJeyAweEI3LCAweEMwIH0sCisJeyAw eEI4LCAweEVGIH0sCisJeyAweEI5LCAweDRDIH0sCisJeyAweEJBLCAweDlEIH0sCisJeyAweEJC LCAweDI1IH0sCisJeyAweEJDLCAweDk2IH0sCisJeyAweEJELCAweDlBIH0sCisJeyAweEJFLCAw eDAxIH0sCisJeyAweEJGLCAweDU5IH0sCisJeyAweEMwLCAweDhFIH0sCisJeyAweEMxLCAweEI5 IH0sCisJeyAweEMyLCAweENEIH0sCisJeyAweEMzLCAweERGIH0sCisJeyAweEM0LCAweEU4IH0s CisJeyAweEM1LCAweEYwIH0sCisJeyAweEM2LCAweEY4IH0sCisJeyAweEM3LCAweEZBIH0sCisJ eyAweEM4LCAweEZDIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAw eENCLCAweDVBIH0sCisJeyAweENDLCAweEJGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENF LCAweEZGIH0sCisJeyAweEIwLCAweDA0IH0sCisJeyAweEI1LCAweDAyIH0sCisJeyAweEI2LCAw eDAxIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHBhbmVsX2Rlc2MgYm9lX2hpbWF4ODI3 OWQ4cF9wYW5lbF9kZXNjID0geworCS5kaXNwbGF5X21vZGUgPSAmZGVmYXVsdF9kaXNwbGF5X21v ZGUsCisJLmJwYyA9IDgsCisJLndpZHRoX21tID0gMTA3LAorCS5oZWlnaHRfbW0gPSAxNzIsCisJ Lm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX1ZJREVPIHwgTUlQSV9EU0lfTU9ERV9WSURFT19T WU5DX1BVTFNFIHwKKwkJCU1JUElfRFNJX0NMT0NLX05PTl9DT05USU5VT1VTIHwgTUlQSV9EU0lf TU9ERV9MUE0sCisJLmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODgsCisJLmxhbmVzID0gNCwK Kwkub25fY21kcyA9IGJvZV9oaW1heDgyNzlkOHBfb25fY21kcywKKwkub25fY21kc19udW0gPSAy NjAsCit9OworCisvKiAxMCBpbmNoICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHBhbmVsX2NtZCBi b2VfaGltYXg4Mjc5ZDEwcF9vbl9jbWRzW10gPSB7CisJeyAweEIwLCAweDA1IH0sCisJeyAweEIx LCAweEU1IH0sCisJeyAweEIzLCAweDUyIH0sCisJeyAweEIwLCAweDAwIH0sCisJeyAweEI2LCAw eDAzIH0sCisJeyAweEJBLCAweDhCIH0sCisJeyAweEJGLCAweDFBIH0sCisJeyAweEMwLCAweDBG IH0sCisJeyAweEMyLCAweDBDIH0sCisJeyAweEMzLCAweDAyIH0sCisJeyAweEM0LCAweDBDIH0s CisJeyAweEM1LCAweDAyIH0sCisJeyAweEIwLCAweDAxIH0sCisJeyAweEUwLCAweDI2IH0sCisJ eyAweEUxLCAweDI2IH0sCisJeyAweERDLCAweDAwIH0sCisJeyAweERELCAweDAwIH0sCisJeyAw eENDLCAweDI2IH0sCisJeyAweENELCAweDI2IH0sCisJeyAweEM4LCAweDAwIH0sCisJeyAweEM5 LCAweDAwIH0sCisJeyAweEQyLCAweDAzIH0sCisJeyAweEQzLCAweDAzIH0sCisJeyAweEU2LCAw eDA0IH0sCisJeyAweEU3LCAweDA0IH0sCisJeyAweEM0LCAweDA5IH0sCisJeyAweEM1LCAweDA5 IH0sCisJeyAweEQ4LCAweDBBIH0sCisJeyAweEQ5LCAweDBBIH0sCisJeyAweEMyLCAweDBCIH0s CisJeyAweEMzLCAweDBCIH0sCisJeyAweEQ2LCAweDBDIH0sCisJeyAweEQ3LCAweDBDIH0sCisJ eyAweEMwLCAweDA1IH0sCisJeyAweEMxLCAweDA1IH0sCisJeyAweEQ0LCAweDA2IH0sCisJeyAw eEQ1LCAweDA2IH0sCisJeyAweENBLCAweDA3IH0sCisJeyAweENCLCAweDA3IH0sCisJeyAweERF LCAweDA4IH0sCisJeyAweERGLCAweDA4IH0sCisJeyAweEIwLCAweDAyIH0sCisJeyAweEMwLCAw eDAwIH0sCisJeyAweEMxLCAweDBEIH0sCisJeyAweEMyLCAweDE3IH0sCisJeyAweEMzLCAweDI2 IH0sCisJeyAweEM0LCAweDMxIH0sCisJeyAweEM1LCAweDFDIH0sCisJeyAweEM2LCAweDJDIH0s CisJeyAweEM3LCAweDMzIH0sCisJeyAweEM4LCAweDMxIH0sCisJeyAweEM5LCAweDM3IH0sCisJ eyAweENBLCAweDM3IH0sCisJeyAweENCLCAweDM3IH0sCisJeyAweENDLCAweDM5IH0sCisJeyAw eENELCAweDJFIH0sCisJeyAweENFLCAweDJGIH0sCisJeyAweENGLCAweDJGIH0sCisJeyAweEQw LCAweDA3IH0sCisJeyAweEQyLCAweDAwIH0sCisJeyAweEQzLCAweDBEIH0sCisJeyAweEQ0LCAw eDE3IH0sCisJeyAweEQ1LCAweDI2IH0sCisJeyAweEQ2LCAweDMxIH0sCisJeyAweEQ3LCAweDNG IH0sCisJeyAweEQ4LCAweDNGIH0sCisJeyAweEQ5LCAweDNGIH0sCisJeyAweERBLCAweDNGIH0s CisJeyAweERCLCAweDM3IH0sCisJeyAweERDLCAweDM3IH0sCisJeyAweERELCAweDM3IH0sCisJ eyAweERFLCAweDM5IH0sCisJeyAweERGLCAweDJFIH0sCisJeyAweEUwLCAweDJGIH0sCisJeyAw eEUxLCAweDJGIH0sCisJeyAweEUyLCAweDA3IH0sCisJeyAweEIwLCAweDAzIH0sCisJeyAweEM4 LCAweDBCIH0sCisJeyAweEM5LCAweDA3IH0sCisJeyAweEMzLCAweDAwIH0sCisJeyAweEU3LCAw eDAwIH0sCisJeyAweEM1LCAweDJBIH0sCisJeyAweERFLCAweDJBIH0sCisJeyAweENBLCAweDQz IH0sCisJeyAweEM5LCAweDA3IH0sCisJeyAweEU0LCAweEMwIH0sCisJeyAweEU1LCAweDBEIH0s CisJeyAweENCLCAweDAxIH0sCisJeyAweEJDLCAweDAxIH0sCisJeyAweEIwLCAweDA2IH0sCisJ eyAweEI4LCAweEE1IH0sCisJeyAweEMwLCAweEE1IH0sCisJeyAweEM3LCAweDBGIH0sCisJeyAw eEQ1LCAweDMyIH0sCisJeyAweEI4LCAweDAwIH0sCisJeyAweEMwLCAweDAwIH0sCisJeyAweEJD LCAweDAwIH0sCisJeyAweEIwLCAweDA3IH0sCisJeyAweEIxLCAweDAwIH0sCisJeyAweEIyLCAw eDA1IH0sCisJeyAweEIzLCAweDEwIH0sCisJeyAweEI0LCAweDIyIH0sCisJeyAweEI1LCAweDM2 IH0sCisJeyAweEI2LCAweDRBIH0sCisJeyAweEI3LCAweDZDIH0sCisJeyAweEI4LCAweDlBIH0s CisJeyAweEI5LCAweEQ3IH0sCisJeyAweEJBLCAweDE3IH0sCisJeyAweEJCLCAweDkyIH0sCisJ eyAweEJDLCAweDE1IH0sCisJeyAweEJELCAweDE4IH0sCisJeyAweEJFLCAweDhDIH0sCisJeyAw eEJGLCAweDAwIH0sCisJeyAweEMwLCAweDNBIH0sCisJeyAweEMxLCAweDcyIH0sCisJeyAweEMy LCAweDhDIH0sCisJeyAweEMzLCAweEE1IH0sCisJeyAweEM0LCAweEIxIH0sCisJeyAweEM1LCAw eEJFIH0sCisJeyAweEM2LCAweENBIH0sCisJeyAweEM3LCAweEQxIH0sCisJeyAweEM4LCAweEQ0 IH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDE2IH0s CisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJ eyAweEIwLCAweDA4IH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIyLCAweDA1IH0sCisJeyAw eEIzLCAweDExIH0sCisJeyAweEI0LCAweDI0IH0sCisJeyAweEI1LCAweDM5IH0sCisJeyAweEI2 LCAweDRFIH0sCisJeyAweEI3LCAweDcyIH0sCisJeyAweEI4LCAweEEzIH0sCisJeyAweEI5LCAw eEUxIH0sCisJeyAweEJBLCAweDI1IH0sCisJeyAweEJCLCAweEE4IH0sCisJeyAweEJDLCAweDJF IH0sCisJeyAweEJELCAweDMyIH0sCisJeyAweEJFLCAweEFEIH0sCisJeyAweEJGLCAweDI4IH0s CisJeyAweEMwLCAweDYzIH0sCisJeyAweEMxLCAweDlCIH0sCisJeyAweEMyLCAweEI1IH0sCisJ eyAweEMzLCAweENGIH0sCisJeyAweEM0LCAweERCIH0sCisJeyAweEM1LCAweEU4IH0sCisJeyAw eEM2LCAweEY1IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4LCAweEZDIH0sCisJeyAweEM5 LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDE2IH0sCisJeyAweENDLCAw eEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAweDA5 IH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIyLCAweDA0IH0sCisJeyAweEIzLCAweDBGIH0s CisJeyAweEI0LCAweDIyIH0sCisJeyAweEI1LCAweDM3IH0sCisJeyAweEI2LCAweDREIH0sCisJ eyAweEI3LCAweDcxIH0sCisJeyAweEI4LCAweEEyIH0sCisJeyAweEI5LCAweEUxIH0sCisJeyAw eEJBLCAweDI2IH0sCisJeyAweEJCLCAweEE5IH0sCisJeyAweEJDLCAweDJGIH0sCisJeyAweEJE LCAweDMzIH0sCisJeyAweEJFLCAweEFDIH0sCisJeyAweEJGLCAweDI0IH0sCisJeyAweEMwLCAw eDVEIH0sCisJeyAweEMxLCAweDk0IH0sCisJeyAweEMyLCAweEFDIH0sCisJeyAweEMzLCAweEM1 IH0sCisJeyAweEM0LCAweEQxIH0sCisJeyAweEM1LCAweERDIH0sCisJeyAweEM2LCAweEU4IH0s CisJeyAweEM3LCAweEVEIH0sCisJeyAweEM4LCAweEYwIH0sCisJeyAweEM5LCAweDAwIH0sCisJ eyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDE2IH0sCisJeyAweENDLCAweEFGIH0sCisJeyAw eENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAweDBBIH0sCisJeyAweEIx LCAweDAwIH0sCisJeyAweEIyLCAweDA1IH0sCisJeyAweEIzLCAweDEwIH0sCisJeyAweEI0LCAw eDIyIH0sCisJeyAweEI1LCAweDM2IH0sCisJeyAweEI2LCAweDRBIH0sCisJeyAweEI3LCAweDZD IH0sCisJeyAweEI4LCAweDlBIH0sCisJeyAweEI5LCAweEQ3IH0sCisJeyAweEJBLCAweDE3IH0s CisJeyAweEJCLCAweDkyIH0sCisJeyAweEJDLCAweDE1IH0sCisJeyAweEJELCAweDE4IH0sCisJ eyAweEJFLCAweDhDIH0sCisJeyAweEJGLCAweDAwIH0sCisJeyAweEMwLCAweDNBIH0sCisJeyAw eEMxLCAweDcyIH0sCisJeyAweEMyLCAweDhDIH0sCisJeyAweEMzLCAweEE1IH0sCisJeyAweEM0 LCAweEIxIH0sCisJeyAweEM1LCAweEJFIH0sCisJeyAweEM2LCAweENBIH0sCisJeyAweEM3LCAw eEQxIH0sCisJeyAweEM4LCAweEQ0IH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAw IH0sCisJeyAweENCLCAweDE2IH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0s CisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAweDBCIH0sCisJeyAweEIxLCAweDA0IH0sCisJ eyAweEIyLCAweDA1IH0sCisJeyAweEIzLCAweDExIH0sCisJeyAweEI0LCAweDI0IH0sCisJeyAw eEI1LCAweDM5IH0sCisJeyAweEI2LCAweDRFIH0sCisJeyAweEI3LCAweDcyIH0sCisJeyAweEI4 LCAweEEzIH0sCisJeyAweEI5LCAweEUxIH0sCisJeyAweEJBLCAweDI1IH0sCisJeyAweEJCLCAw eEE4IH0sCisJeyAweEJDLCAweDJFIH0sCisJeyAweEJELCAweDMyIH0sCisJeyAweEJFLCAweEFE IH0sCisJeyAweEJGLCAweDI4IH0sCisJeyAweEMwLCAweDYzIH0sCisJeyAweEMxLCAweDlCIH0s CisJeyAweEMyLCAweEI1IH0sCisJeyAweEMzLCAweENGIH0sCisJeyAweEM0LCAweERCIH0sCisJ eyAweEM1LCAweEU4IH0sCisJeyAweEM2LCAweEY1IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAw eEM4LCAweEZDIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENC LCAweDE2IH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAw eEZGIH0sCisJeyAweEIwLCAweDBDIH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIyLCAweDA0 IH0sCisJeyAweEIzLCAweDBGIH0sCisJeyAweEI0LCAweDIyIH0sCisJeyAweEI1LCAweDM3IH0s CisJeyAweEI2LCAweDREIH0sCisJeyAweEI3LCAweDcxIH0sCisJeyAweEI4LCAweEEyIH0sCisJ eyAweEI5LCAweEUxIH0sCisJeyAweEJBLCAweDI2IH0sCisJeyAweEJCLCAweEE5IH0sCisJeyAw eEJDLCAweDJGIH0sCisJeyAweEJELCAweDMzIH0sCisJeyAweEJFLCAweEFDIH0sCisJeyAweEJG LCAweDI0IH0sCisJeyAweEMwLCAweDVEIH0sCisJeyAweEMxLCAweDk0IH0sCisJeyAweEMyLCAw eEFDIH0sCisJeyAweEMzLCAweEM1IH0sCisJeyAweEM0LCAweEQxIH0sCisJeyAweEM1LCAweERD IH0sCisJeyAweEM2LCAweEU4IH0sCisJeyAweEM3LCAweEVEIH0sCisJeyAweEM4LCAweEYwIH0s CisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDE2IH0sCisJ eyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IHBhbmVsX2Rlc2MgYm9lX2hpbWF4ODI3OWQxMHBfcGFuZWxf ZGVzYyA9IHsKKwkuZGlzcGxheV9tb2RlID0gJmRlZmF1bHRfZGlzcGxheV9tb2RlLAorCS5icGMg PSA4LAorCS53aWR0aF9tbSA9IDEzNSwKKwkuaGVpZ2h0X21tID0gMjE2LAorCS5tb2RlX2ZsYWdz ID0gTUlQSV9EU0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRSB8 CisJCQlNSVBJX0RTSV9DTE9DS19OT05fQ09OVElOVU9VUyB8IE1JUElfRFNJX01PREVfTFBNLAor CS5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4LAorCS5sYW5lcyA9IDQsCisJLm9uX2NtZHMg PSBib2VfaGltYXg4Mjc5ZDEwcF9vbl9jbWRzLAorCS5vbl9jbWRzX251bSA9IDI4MywKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHBhbmVsX29mX21hdGNoW10gPSB7CisJ eworCQkuY29tcGF0aWJsZSA9ICJib2UsaGltYXg4Mjc5ZDhwIiwKKwkJLmRhdGEgPSAmYm9lX2hp bWF4ODI3OWQ4cF9wYW5lbF9kZXNjLAorCX0sCisJeworCQkuY29tcGF0aWJsZSA9ICJib2UsaGlt YXg4Mjc5ZDEwcCIsCisJCS5kYXRhID0gJmJvZV9oaW1heDgyNzlkMTBwX3BhbmVsX2Rlc2MsCisJ fSwKKwl7CisJCS8qIHNlbnRpbmVsICovCisJfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IHBhbmVsX29mX21hdGNoKTsKKworc3RhdGljIGludCBwYW5lbF9hZGQoc3RydWN0IHBhbmVsX2lu Zm8gKnBpbmZvKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwaW5mby0+bGluay0+ZGV2Owor CWludCByZXQ7CisKKwlwaW5mby0+cHAxOF9ncGlvID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAicHAx OCIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKHBpbmZvLT5wcDE4X2dwaW8pKSB7CisJ CXJldCA9IFBUUl9FUlIocGluZm8tPnBwMThfZ3Bpbyk7CisJCWlmIChyZXQgIT0gLUVQUk9CRV9E RUZFUikKKwkJCURSTV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRvIGdldCBwcDE4IGdwaW86ICVk XG4iLAorCQkJCSAgICAgIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcGluZm8tPnBwMzNf Z3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInBwMzMiLCBHUElPRF9PVVRfSElHSCk7CisJaWYg KElTX0VSUihwaW5mby0+cHAzM19ncGlvKSkgeworCQlyZXQgPSBQVFJfRVJSKHBpbmZvLT5wcDMz X2dwaW8pOworCQlpZiAocmV0ICE9IC1FUFJPQkVfREVGRVIpCisJCQlEUk1fREVWX0VSUk9SKGRl diwgImZhaWxlZCB0byBnZXQgcHAzMyBncGlvOiAlZFxuIiwKKwkJCQkgICAgICByZXQpOworCQly ZXR1cm4gcmV0OworCX0KKworCXBpbmZvLT5lbmFibGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRl diwgImVuYWJsZSIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKHBpbmZvLT5lbmFibGVf Z3BpbykpIHsKKwkJcmV0ID0gUFRSX0VSUihwaW5mby0+ZW5hYmxlX2dwaW8pOworCQlpZiAocmV0 ICE9IC1FUFJPQkVfREVGRVIpCisJCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byBnZXQg ZW5hYmxlIGdwaW86ICVkXG4iLAorCQkJCSAgICAgIHJldCk7CisJCXJldHVybiByZXQ7CisJfQor CisJcGluZm8tPmJhY2tsaWdodCA9IGRldm1fb2ZfZmluZF9iYWNrbGlnaHQoZGV2KTsKKwlpZiAo SVNfRVJSKHBpbmZvLT5iYWNrbGlnaHQpKQorCQlyZXR1cm4gUFRSX0VSUihwaW5mby0+YmFja2xp Z2h0KTsKKworCWRybV9wYW5lbF9pbml0KCZwaW5mby0+YmFzZSk7CisJcGluZm8tPmJhc2UuZnVu Y3MgPSAmcGFuZWxfZnVuY3M7CisJcGluZm8tPmJhc2UuZGV2ID0gJnBpbmZvLT5saW5rLT5kZXY7 CisKKwlyZXR1cm4gZHJtX3BhbmVsX2FkZCgmcGluZm8tPmJhc2UpOworfQorCitzdGF0aWMgaW50 IHBhbmVsX3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3QgcGFu ZWxfaW5mbyAqcGluZm87CisJY29uc3Qgc3RydWN0IHBhbmVsX2Rlc2MgKmRlc2M7CisJaW50IGVy cjsKKworCXBpbmZvID0gZGV2bV9remFsbG9jKCZkc2ktPmRldiwgc2l6ZW9mKCpwaW5mbyksIEdG UF9LRVJORUwpOworCWlmICghcGluZm8pCisJCXJldHVybiAtRU5PTUVNOworCisJZGVzYyA9IG9m X2RldmljZV9nZXRfbWF0Y2hfZGF0YSgmZHNpLT5kZXYpOworCWRzaS0+bW9kZV9mbGFncyA9IGRl c2MtPm1vZGVfZmxhZ3M7CisJZHNpLT5mb3JtYXQgPSBkZXNjLT5mb3JtYXQ7CisJZHNpLT5sYW5l cyA9IGRlc2MtPmxhbmVzOworCXBpbmZvLT5kZXNjID0gZGVzYzsKKworCXBpbmZvLT5saW5rID0g ZHNpOworCW1pcGlfZHNpX3NldF9kcnZkYXRhKGRzaSwgcGluZm8pOworCisJZXJyID0gcGFuZWxf YWRkKHBpbmZvKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IG1pcGlf ZHNpX2F0dGFjaChkc2kpOworCWlmIChlcnIgPCAwKQorCQlkcm1fcGFuZWxfcmVtb3ZlKCZwaW5m by0+YmFzZSk7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHBhbmVsX3JlbW92ZShz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0IHBhbmVsX2luZm8gKnBpbmZv ID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEoZHNpKTsKKwlpbnQgZXJyOworCisJZXJyID0gYm9lX3Bh bmVsX2Rpc2FibGUoJnBpbmZvLT5iYXNlKTsKKwlpZiAoZXJyIDwgMCkKKwkJRFJNX0RFVl9FUlJP UigmZHNpLT5kZXYsICJmYWlsZWQgdG8gZGlzYWJsZSBwYW5lbDogJWRcbiIsCisJCQkgICAgICBl cnIpOworCisJZXJyID0gYm9lX3BhbmVsX3VucHJlcGFyZSgmcGluZm8tPmJhc2UpOworCWlmIChl cnIgPCAwKQorCQlEUk1fREVWX0VSUk9SKCZkc2ktPmRldiwgImZhaWxlZCB0byB1bnByZXBhcmUg cGFuZWw6ICVkXG4iLAorCQkJICAgICAgZXJyKTsKKworCWVyciA9IG1pcGlfZHNpX2RldGFjaChk c2kpOworCWlmIChlcnIgPCAwKQorCQlEUk1fREVWX0VSUk9SKCZkc2ktPmRldiwgImZhaWxlZCB0 byBkZXRhY2ggZnJvbSBEU0kgaG9zdDogJWRcbiIsCisJCQkgICAgICBlcnIpOworCisJZHJtX3Bh bmVsX3JlbW92ZSgmcGluZm8tPmJhc2UpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IHBhbmVsX3NodXRkb3duKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3Qg cGFuZWxfaW5mbyAqcGluZm8gPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOworCisJYm9lX3Bh bmVsX2Rpc2FibGUoJnBpbmZvLT5iYXNlKTsKKwlib2VfcGFuZWxfdW5wcmVwYXJlKCZwaW5mby0+ YmFzZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbWlwaV9kc2lfZHJpdmVyIHBhbmVsX2RyaXZlciA9 IHsKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJwYW5lbC1ib2UtaGltYXg4Mjc5ZCIsCisJCS5v Zl9tYXRjaF90YWJsZSA9IHBhbmVsX29mX21hdGNoLAorCX0sCisJLnByb2JlID0gcGFuZWxfcHJv YmUsCisJLnJlbW92ZSA9IHBhbmVsX3JlbW92ZSwKKwkuc2h1dGRvd24gPSBwYW5lbF9zaHV0ZG93 biwKK307Cittb2R1bGVfbWlwaV9kc2lfZHJpdmVyKHBhbmVsX2RyaXZlcik7CisKK01PRFVMRV9B VVRIT1IoIkplcnJ5IEhhbiA8amVycnkuaGFuLmhxQGdtYWlsLmNvbT4iKTsKK01PRFVMRV9ERVND UklQVElPTigiQm9lIEhpbWF4ODI3OWQgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYy Iik7Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbA==