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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 8E57ECD4851 for ; Tue, 12 May 2026 13:29:34 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EFFAD10EAB2; Tue, 12 May 2026 13:29:33 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="TcXEz1Pe"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) by gabe.freedesktop.org (Postfix) with ESMTPS id BC3CB10EAB2; Tue, 12 May 2026 13:29:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1778592573; x=1810128573; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Pu/TXljOm+o4I2vjAktpa6Aj1HPfTW90n/tj2bw5wSQ=; b=TcXEz1Pejl/KNJCLjOEbhob8flIm9MfsrHheIugvcI9uNJV/uzMm/AUA LLbiyBPpIi/uwytPFSp0We48wUN9WMmrmby5HZgdmKogO3cWDCnltLO9H 34yeWT7FEdp4GvJGxlauoqRufeLwnmq9G6Q8Leigw8kTF6lcv3B25k0pS qkbP0ElpYBlR9/NvVYLzjo5iziM+QYvpLxSWjmJN15t1eWN9zOOCnk5e/ w4QpPXDuRvTfUXO35GrxcRlJ4m4LJEiNWkjDGkTz7LR1cqg3cnsQWFwBD xRzji+O/paDAxgztM9tRDsZW9hFsnyoPDH3VKE67eNB6wlkBwRwmUODkq A==; X-CSE-ConnectionGUID: CmwwRTNIRsSz6vGiLqV8jw== X-CSE-MsgGUID: FUT7y31dRQGgHIHUHDWYNw== X-IronPort-AV: E=McAfee;i="6800,10657,11783"; a="102164659" X-IronPort-AV: E=Sophos;i="6.23,231,1770624000"; d="scan'208";a="102164659" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2026 06:29:32 -0700 X-CSE-ConnectionGUID: K+WaQQpnTT6DmWWQp+5IMw== X-CSE-MsgGUID: TqH3A84sRXK6rPbQF39LPg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,231,1770624000"; d="scan'208";a="237855866" Received: from jraag-z790m-itx-wifi.iind.intel.com ([10.190.239.23]) by orviesa009.jf.intel.com with ESMTP; 12 May 2026 06:29:28 -0700 From: Mallesh Koujalagi To: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, rodrigo.vivi@intel.com Cc: andrealmeid@igalia.com, christian.koenig@amd.com, airlied@gmail.com, simona.vetter@ffwll.ch, mripard@kernel.org, maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, anshuman.gupta@intel.com, badal.nilawar@intel.com, riana.tauro@intel.com, karthik.poosa@intel.com, sk.anirban@intel.com, raag.jadav@intel.com, Mallesh Koujalagi Subject: [PATCH v5 1/5] Introduce Xe Uncorrectable Error Handling Date: Tue, 12 May 2026 18:56:16 +0530 Message-ID: <20260512132614.1793083-8-mallesh.koujalagi@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260512132614.1793083-7-mallesh.koujalagi@intel.com> References: <20260512132614.1793083-7-mallesh.koujalagi@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogUmlhbmEgVGF1cm8gPHJpYW5hLnRhdXJvQGludGVsLmNvbT4KCkRPIE5PVCBSRVZJRVcu IENPTVBJTEFUSU9OIE9OTFkKVGhpcyBwYXRjaCBpcyBmcm9tIGh0dHBzOi8vcGF0Y2h3b3JrLmZy ZWVkZXNrdG9wLm9yZy9zZXJpZXMvMTYwNDgyLwpBZGRlZCBvbmx5IGZvciBDb21waWxhdGlvbi4K ClNpZ25lZC1vZmYtYnk6IFJpYW5hIFRhdXJvIDxyaWFuYS50YXVyb0BpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IE1hbGxlc2ggS291amFsYWdpIDxtYWxsZXNoLmtvdWphbGFnaUBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL3hlL01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYyAgICAgICAgICAgICAgICB8ICAxOSAr LQogZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5oICAgICAgICAgICAgICAgIHwgIDE1ICsK IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaCAgICAgICAgICB8ICAgNiArCiBk cml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYyAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIGRy aXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMgICAgICAgICAgICB8ICAgOSArLQogZHJp dmVycy9ncHUvZHJtL3hlL3hlX3BjaS5jICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRyaXZl cnMvZ3B1L2RybS94ZS94ZV9wY2lfZXJyb3IuYyAgICAgICAgICAgICB8IDEzOCArKysrKwogZHJp dmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5jICAgICAgICAgICAgICAgICAgIHwgNDkzICsrKysrKysr KysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5oICAgICAgICAgICAgICAgICAg IHwgICA1ICstCiBkcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzX3R5cGVzLmggICAgICAgICAgICAg fCAyMTUgKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9zdXJ2aXZhYmlsaXR5X21vZGUu YyAgICB8ICAxMyArLQogZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N5c2N0cmxfZXZlbnQuYyAgICAg ICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0veGUveGVfc3lzY3RybF9ldmVudF90eXBlcy5o ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9zeXNjdHJsX21haWxib3hfdHlwZXMu aCB8ICAxMSArCiAxNSBmaWxlcyBjaGFuZ2VkLCA5MzMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BjaV9lcnJv ci5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL3hlL01ha2VmaWxlCmluZGV4IDA5NjYxZjA3OWQwMy4uMDkxODcyNzcxZTk4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJt L3hlL01ha2VmaWxlCkBAIC0xMDEsNiArMTAxLDcgQEAgeGUteSArPSB4ZV9iYi5vIFwKIAl4ZV9w YWdlX3JlY2xhaW0ubyBcCiAJeGVfcGF0Lm8gXAogCXhlX3BjaS5vIFwKKwl4ZV9wY2lfZXJyb3Iu byBcCiAJeGVfcGNpX3JlYmFyLm8gXAogCXhlX3Bjb2RlLm8gXAogCXhlX3BtLm8gXApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL3hl L3hlX2RldmljZS5jCmluZGV4IDRiNDViNjE3YTAzOS4uMDQxYWY3ZmZjOGJiIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hl L3hlX2RldmljZS5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAieGVfcHNtaS5oIgogI2lu Y2x1ZGUgInhlX3B4cC5oIgogI2luY2x1ZGUgInhlX3F1ZXJ5LmgiCisjaW5jbHVkZSAieGVfcmFz LmgiCiAjaW5jbHVkZSAieGVfc2hyaW5rZXIuaCIKICNpbmNsdWRlICJ4ZV9zb2NfcmVtYXBwZXIu aCIKICNpbmNsdWRlICJ4ZV9zdXJ2aXZhYmlsaXR5X21vZGUuaCIKQEAgLTk2Miw2ICs5NjMsMTYg QEAgaW50IHhlX2RldmljZV9wcm9iZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKIAlpZiAoZXJyKQog CQlyZXR1cm4gZXJyOwogCisJZXJyID0geGVfc29jX3JlbWFwcGVyX2luaXQoeGUpOworCWlmIChl cnIpCisJCXJldHVybiBlcnI7CisKKwllcnIgPSB4ZV9zeXNjdHJsX2luaXQoeGUpOworCWlmIChl cnIpCisJCXJldHVybiBlcnI7CisKKwl4ZV9yYXNfaW5pdCh4ZSk7CisKIAkvKgogCSAqIE5vdyB0 aGF0IEdUIGlzIGluaXRpYWxpemVkIChUVE0gaW4gcGFydGljdWxhciksCiAJICogd2UgY2FuIHRy eSB0byBpbml0IGRpc3BsYXksIGFuZCBpbmhlcml0IHRoZSBpbml0aWFsIGZiLgpAQCAtMTAwMiwx MCArMTAxMyw2IEBAIGludCB4ZV9kZXZpY2VfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpCiAK IAl4ZV9udm1faW5pdCh4ZSk7CiAKLQllcnIgPSB4ZV9zb2NfcmVtYXBwZXJfaW5pdCh4ZSk7Ci0J aWYgKGVycikKLQkJcmV0dXJuIGVycjsKLQogCWVyciA9IHhlX2hlY2lfZ3NjX2luaXQoeGUpOwog CWlmIChlcnIpCiAJCXJldHVybiBlcnI7CkBAIC0xMDQ0LDEwICsxMDUxLDYgQEAgaW50IHhlX2Rl dmljZV9wcm9iZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKIAlpZiAoZXJyKQogCQlnb3RvIGVycl91 bnJlZ2lzdGVyX2Rpc3BsYXk7CiAKLQllcnIgPSB4ZV9zeXNjdHJsX2luaXQoeGUpOwotCWlmIChl cnIpCi0JCWdvdG8gZXJyX3VucmVnaXN0ZXJfZGlzcGxheTsKLQogCWVyciA9IHhlX2RldmljZV9z eXNmc19pbml0KHhlKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycl91bnJlZ2lzdGVyX2Rpc3BsYXk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmggYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfZGV2aWNlLmgKaW5kZXggMzU1ZDY5ZGM4ZjU0Li43NjVlOTBmNDIyMGYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfZGV2aWNlLmgKQEAgLTE4MSw2ICsxODEsMjEgQEAgc3RhdGljIGlubGluZSBi b29sIHhlX2RldmljZV9oYXNfbWVydChjb25zdCBzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKIAlyZXR1 cm4geGUtPmluZm8uaGFzX21lcnQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCB4ZV9kZXZpY2Vf aXNfaW5fcmVzZXQoc3RydWN0IHhlX2RldmljZSAqeGUpCit7CisJcmV0dXJuIGF0b21pY19yZWFk KCZ4ZS0+aW5fcmVzZXQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgeGVfZGV2aWNlX3NldF9p bl9yZXNldChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKK3sKKwlhdG9taWNfc2V0KCZ4ZS0+aW5fcmVz ZXQsIDEpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgeGVfZGV2aWNlX2NsZWFyX2luX3Jlc2V0 KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKQoreworCWF0b21pY19zZXQoJnhlLT5pbl9yZXNldCwgMCk7 Cit9CisKIHUzMiB4ZV9kZXZpY2VfY2NzX2J5dGVzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1NjQg c2l6ZSk7CiAKIHZvaWQgeGVfZGV2aWNlX3NuYXBzaG90X3ByaW50KHN0cnVjdCB4ZV9kZXZpY2Ug KnhlLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3hlL3hlX2RldmljZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBl cy5oCmluZGV4IDMyZGQyZmZiYzc5Ni4uZjY0ZTFhMTQ5Y2VlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hl X2RldmljZV90eXBlcy5oCkBAIC00ODMsNiArNDgzLDkgQEAgc3RydWN0IHhlX2RldmljZSB7CiAJ LyoqIEBuZWVkc19mbHJfb25fZmluaTogcmVxdWVzdHMgZnVuY3Rpb24tcmVzZXQgb24gZmluaSAq LwogCWJvb2wgbmVlZHNfZmxyX29uX2Zpbmk7CiAKKwkvKiogQGluX3Jlc2V0OiBJbmRpY2F0ZXMg aWYgZGV2aWNlIGlzIGluIHJlc2V0ICovCisJYXRvbWljX3QgaW5fcmVzZXQ7CisKIAkvKiogQHdl ZGdlZDogU3RydWN0IHRvIGNvbnRyb2wgV2VkZ2VkIFN0YXRlcyBhbmQgbW9kZSAqLwogCXN0cnVj dCB7CiAJCS8qKiBAd2VkZ2VkLmZsYWc6IFhlIGRldmljZSBmYWNlZCBhIGNyaXRpY2FsIGVycm9y IGFuZCBpcyBub3cgYmxvY2tlZC4gKi8KQEAgLTQ5NSw2ICs0OTgsOSBAQCBzdHJ1Y3QgeGVfZGV2 aWNlIHsKIAkJYm9vbCBpbmNvbnNpc3RlbnRfcmVzZXQ7CiAJfSB3ZWRnZWQ7CiAKKwkvKiogQGRl dnJlc19ncm91cF9pZDogaWQgZm9yIGRldnJlcyBncm91cCAqLworCXZvaWQgKmRldnJlc19ncm91 cF9pZDsKKwogCS8qKiBAYm9fZGV2aWNlOiBTdHJ1Y3QgdG8gY29udHJvbCBhc3luYyBmcmVlIG9m IEJPcyAqLwogCXN0cnVjdCB4ZV9ib19kZXYgewogCQkvKiogQGJvX2RldmljZS5hc3luY19mcmVl OiBGcmVlIHdvcmtlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmMg Yi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYwppbmRleCBjZGM2NzhkMWFlMWYuLjdiNTQ3Y2Y3 ZGU1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3hlL3hlX2d0LmMKQEAgLTkxNyw2ICs5MTcsOSBAQCBzdGF0aWMgdm9pZCBndF9y ZXNldF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3KQogCWlmICh4ZV9kZXZpY2Vfd2VkZ2Vk KGd0X3RvX3hlKGd0KSkpCiAJCWdvdG8gZXJyX3BtX3B1dDsKIAorCWlmICh4ZV9kZXZpY2VfaXNf aW5fcmVzZXQoZ3RfdG9feGUoZ3QpKSkKKwkJZ290byBlcnJfcG1fcHV0OworCiAJLyogV2Ugb25s eSBzdXBwb3J0IEdUIHJlc2V0cyB3aXRoIEd1QyBzdWJtaXNzaW9uICovCiAJaWYgKCF4ZV9kZXZp Y2VfdWNfZW5hYmxlZChndF90b194ZShndCkpKQogCQlnb3RvIGVycl9wbV9wdXQ7CkBAIC05Nzcs MTggKzk4MCwyMyBAQCBzdGF0aWMgdm9pZCBndF9yZXNldF93b3JrZXIoc3RydWN0IHdvcmtfc3Ry dWN0ICp3KQogCiB2b2lkIHhlX2d0X3Jlc2V0X2FzeW5jKHN0cnVjdCB4ZV9ndCAqZ3QpCiB7Ci0J eGVfZ3RfaW5mbyhndCwgInRyeWluZyByZXNldCBmcm9tICVwc1xuIiwgX19idWlsdGluX3JldHVy bl9hZGRyZXNzKDApKTsKKwlzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9IGd0X3RvX3hlKGd0KTsKKwor CWlmICh4ZV9kZXZpY2VfaXNfaW5fcmVzZXQoeGUpKQorCQlyZXR1cm47CiAKIAkvKiBEb24ndCBk byBhIHJlc2V0IHdoaWxlIG9uZSBpcyBhbHJlYWR5IGluIGZsaWdodCAqLwogCWlmICgheGVfZmF1 bHRfaW5qZWN0X2d0X3Jlc2V0KCkgJiYgeGVfdWNfcmVzZXRfcHJlcGFyZSgmZ3QtPnVjKSkKIAkJ cmV0dXJuOwogCisJeGVfZ3RfaW5mbyhndCwgInRyeWluZyByZXNldCBmcm9tICVwc1xuIiwgX19i dWlsdGluX3JldHVybl9hZGRyZXNzKDApKTsKKwogCXhlX2d0X2luZm8oZ3QsICJyZXNldCBxdWV1 ZWRcbiIpOwogCiAJLyogUGFpciB3aXRoIHB1dCBpbiBndF9yZXNldF93b3JrZXIoKSBpZiB3b3Jr IGlzIGVucXVldWVkICovCi0JeGVfcG1fcnVudGltZV9nZXRfbm9yZXN1bWUoZ3RfdG9feGUoZ3Qp KTsKKwl4ZV9wbV9ydW50aW1lX2dldF9ub3Jlc3VtZSh4ZSk7CiAJaWYgKCFxdWV1ZV93b3JrKGd0 LT5vcmRlcmVkX3dxLCAmZ3QtPnJlc2V0LndvcmtlcikpCi0JCXhlX3BtX3J1bnRpbWVfcHV0KGd0 X3RvX3hlKGd0KSk7CisJCXhlX3BtX3J1bnRpbWVfcHV0KHhlKTsKIH0KIAogdm9pZCB4ZV9ndF9z dXNwZW5kX3ByZXBhcmUoc3RydWN0IHhlX2d0ICpndCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS94ZS94ZV9ndWNfc3VibWl0LmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1p dC5jCmluZGV4IDQxNzFlZmY0ZThhZC4uNWU2ZDc3ZTQ0Y2Q0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9n dWNfc3VibWl0LmMKQEAgLTE1MTQsNyArMTUxNCw3IEBAIGd1Y19leGVjX3F1ZXVlX3RpbWVkb3V0 X2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqZHJtX2pvYikKIAkgKiBJZiBkZXZjb3JlZHVtcCBu b3QgY2FwdHVyZWQgYW5kIEd1QyBjYXB0dXJlIGZvciB0aGUgam9iIGlzIG5vdCByZWFkeQogCSAq IGRvIG1hbnVhbCBjYXB0dXJlIGZpcnN0IGFuZCBkZWNpZGUgbGF0ZXIgaWYgd2UgbmVlZCB0byB1 c2UgaXQKIAkgKi8KLQlpZiAoIWV4ZWNfcXVldWVfa2lsbGVkKHEpICYmICF4ZS0+ZGV2Y29yZWR1 bXAuY2FwdHVyZWQgJiYKKwlpZiAoIXhlX2RldmljZV9pc19pbl9yZXNldCh4ZSkgJiYgIWV4ZWNf cXVldWVfa2lsbGVkKHEpICYmICF4ZS0+ZGV2Y29yZWR1bXAuY2FwdHVyZWQgJiYKIAkgICAgIXhl X2d1Y19jYXB0dXJlX2dldF9tYXRjaGluZ19hbmRfbG9jayhxKSkgewogCQkvKiB0YWtlIGZvcmNl IHdha2UgYmVmb3JlIGVuZ2luZSByZWdpc3RlciBtYW51YWwgY2FwdHVyZSAqLwogCQlDTEFTUyh4 ZV9mb3JjZV93YWtlLCBmd19yZWYpKGd0X3RvX2Z3KHEtPmd0KSwgWEVfRk9SQ0VXQUtFX0FMTCk7 CkBAIC0xNTM2LDggKzE1MzYsOCBAQCBndWNfZXhlY19xdWV1ZV90aW1lZG91dF9qb2Ioc3RydWN0 IGRybV9zY2hlZF9qb2IgKmRybV9qb2IpCiAJc2V0X2V4ZWNfcXVldWVfYmFubmVkKHEpOwogCiAJ LyogS2ljayBqb2IgLyBxdWV1ZSBvZmYgaGFyZHdhcmUgKi8KLQlpZiAoIXdlZGdlZCAmJiAoZXhl Y19xdWV1ZV9lbmFibGVkKHByaW1hcnkpIHx8Ci0JCQlleGVjX3F1ZXVlX3BlbmRpbmdfZGlzYWJs ZShwcmltYXJ5KSkpIHsKKwlpZiAoIXhlX2RldmljZV9pc19pbl9yZXNldCh4ZSkgJiYgIXdlZGdl ZCAmJgorCSAgICAoZXhlY19xdWV1ZV9lbmFibGVkKHByaW1hcnkpIHx8IGV4ZWNfcXVldWVfcGVu ZGluZ19kaXNhYmxlKHByaW1hcnkpKSkgewogCQlpbnQgcmV0OwogCiAJCWlmIChleGVjX3F1ZXVl X3Jlc2V0KHByaW1hcnkpKQpAQCAtMTYwNSw3ICsxNjA1LDggQEAgZ3VjX2V4ZWNfcXVldWVfdGlt ZWRvdXRfam9iKHN0cnVjdCBkcm1fc2NoZWRfam9iICpkcm1fam9iKQogCiAJdHJhY2VfeGVfc2No ZWRfam9iX3RpbWVkb3V0KGpvYik7CiAKLQlpZiAoIWV4ZWNfcXVldWVfa2lsbGVkKHEpKQorCS8q IERvIG5vdCBhY2Nlc3MgZGV2aWNlIGlmIGluIHJlc2V0ICovCisJaWYgKCF4ZV9kZXZpY2VfaXNf aW5fcmVzZXQoeGUpICYmICFleGVjX3F1ZXVlX2tpbGxlZChxKSkKIAkJeGVfZGV2Y29yZWR1bXAo cSwgam9iLAogCQkJICAgICAgICJUaW1lZG91dCBqb2IgLSBzZXFubz0ldSwgbHJjX3NlcW5vPSV1 LCBndWNfaWQ9JWQsIGZsYWdzPTB4JWx4IiwKIAkJCSAgICAgICB4ZV9zY2hlZF9qb2Jfc2Vxbm8o am9iKSwgeGVfc2NoZWRfam9iX2xyY19zZXFubyhqb2IpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3hlL3hlX3BjaS5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BjaS5jCmluZGV4IDJh YjZkMmY0ODNmYi4uMjMyYTE1NmU2NTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfcGNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BjaS5jCkBAIC0xMDYxLDYgKzEw NjEsNyBAQCBzdGF0aWMgaW50IHhlX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29u c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIAljb25zdCBzdHJ1Y3QgeGVfZGV2aWNlX2Rl c2MgKmRlc2MgPSAoY29uc3Qgdm9pZCAqKWVudC0+ZHJpdmVyX2RhdGE7CiAJY29uc3Qgc3RydWN0 IHhlX3N1YnBsYXRmb3JtX2Rlc2MgKnN1YnBsYXRmb3JtX2Rlc2M7CiAJc3RydWN0IHhlX2Rldmlj ZSAqeGU7CisJdm9pZCAqZGV2cmVzX2lkOwogCWludCBlcnI7CiAKIAl4ZV9jb25maWdmc19jaGVj a19kZXZpY2UocGRldik7CkBAIC0xMDg2LDYgKzEwODcsMTAgQEAgc3RhdGljIGludCB4ZV9wY2lf cHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpl bnQpCiAJaWYgKHhlX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX2RlZmVyKHBkZXYpKQogCQlyZXR1cm4g LUVQUk9CRV9ERUZFUjsKIAorCWRldnJlc19pZCA9IGRldnJlc19vcGVuX2dyb3VwKCZwZGV2LT5k ZXYsIE5VTEwsIEdGUF9LRVJORUwpOworCWlmICghZGV2cmVzX2lkKQorCQlyZXR1cm4gLUVOT01F TTsKKwogCWVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTsKIAlpZiAoZXJyKQogCQlyZXR1 cm4gZXJyOwpAQCAtMTA5NCw2ICsxMDk5LDggQEAgc3RhdGljIGludCB4ZV9wY2lfcHJvYmUoc3Ry dWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAJaWYg KElTX0VSUih4ZSkpCiAJCXJldHVybiBQVFJfRVJSKHhlKTsKIAorCXhlLT5kZXZyZXNfZ3JvdXBf aWQgPSBkZXZyZXNfaWQ7CisKIAlwY2lfc2V0X2RydmRhdGEocGRldiwgJnhlLT5kcm0pOwogCiAJ eGVfcG1fYXNzZXJ0X3VuYm91bmRlZF9icmlkZ2UoeGUpOwpAQCAtMTMyOSw2ICsxMzM2LDggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHhlX3BtX29wcyA9IHsKIH07CiAjZW5kaWYK IAorZXh0ZXJuIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgeGVfcGNpX2Vycm9yX2hh bmRsZXJzOworCiBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgeGVfcGNpX2RyaXZlciA9IHsKIAku bmFtZSA9IERSSVZFUl9OQU1FLAogCS5pZF90YWJsZSA9IHBjaWlkbGlzdCwKQEAgLTEzMzYsNiAr MTM0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB4ZV9wY2lfZHJpdmVyID0gewogCS5y ZW1vdmUgPSB4ZV9wY2lfcmVtb3ZlLAogCS5zaHV0ZG93biA9IHhlX3BjaV9zaHV0ZG93biwKIAku c3Jpb3ZfY29uZmlndXJlID0geGVfcGNpX3NyaW92X2NvbmZpZ3VyZSwKKwkuZXJyX2hhbmRsZXIg PSAmeGVfcGNpX2Vycm9yX2hhbmRsZXJzLAogI2lmZGVmIENPTkZJR19QTV9TTEVFUAogCS5kcml2 ZXIucG0gPSAmeGVfcG1fb3BzLAogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v eGUveGVfcGNpX2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcGNpX2Vycm9yLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZDYyYmNiY2JiYjYKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcGNpX2Vycm9yLmMKQEAgLTAsMCAr MSwxMzggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmln aHQgwqkgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisjaW5jbHVkZSA8bGludXgvcGNpLmg+ CisKKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgorCisjaW5jbHVkZSAieGVfZGV2aWNlLmgiCisj aW5jbHVkZSAieGVfZ3QuaCIKKyNpbmNsdWRlICJ4ZV9wY2kuaCIKKyNpbmNsdWRlICJ4ZV9yYXMu aCIKKyNpbmNsdWRlICJ4ZV9zdXJ2aXZhYmlsaXR5X21vZGUuaCIKKyNpbmNsdWRlICJ4ZV91Yy5o IgorCitzdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCByYXNfYWN0aW9uX3RvX3BjaV9yZXN1bHQoZW51 bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIGFjdGlvbikKK3sKKwlzd2l0Y2ggKGFjdGlvbikgewor CWNhc2UgWEVfUkFTX1JFQ09WRVJZX0FDVElPTl9SRUNPVkVSRUQ6CisJCXJldHVybiBQQ0lfRVJT X1JFU1VMVF9SRUNPVkVSRUQ7CisJY2FzZSBYRV9SQVNfUkVDT1ZFUllfQUNUSU9OX1JFU0VUOgor CQlyZXR1cm4gUENJX0VSU19SRVNVTFRfTkVFRF9SRVNFVDsKKwljYXNlIFhFX1JBU19SRUNPVkVS WV9BQ1RJT05fRElTQ09OTkVDVDoKKwkJcmV0dXJuIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1Q7 CisJZGVmYXVsdDoKKwkJcmV0dXJuIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1Q7CisJfQorfQor CitzdGF0aWMgdm9pZCB4ZV9wY2lfZXJyb3JfaGFuZGxpbmcoc3RydWN0IHBjaV9kZXYgKnBkZXYp Cit7CisJc3RydWN0IHhlX2RldmljZSAqeGUgPSBwZGV2X3RvX3hlX2RldmljZShwZGV2KTsKKwlz dHJ1Y3QgeGVfZ3QgKmd0OworCXU4IGlkOworCisJLyoKKwkgKiBXZWRnZSB0aGUgZGV2aWNlIHRv IHByZXZlbnQgdXNlcnNwYWNlIGFjY2VzcyBidXQgZG9uJ3Qgc2VuZCB0aGUgZXZlbnQgeWV0Lgor CSAqIFJ1bnRpbWUgUE0gcmVmIGlzIHRha2VuIGJ5IFBDSSBjb3JlIGZvciB0aGUgZHVyYXRpb24g b2YgZXJyb3IgaGFuZGxpbmcuCisJICovCisJeGVfZGV2aWNlX3NldF9pbl9yZXNldCh4ZSk7CisJ YXRvbWljX3NldCgmeGUtPndlZGdlZC5mbGFnLCAxKTsKKworCWZvcl9lYWNoX2d0KGd0LCB4ZSwg aWQpCisJCXhlX2d0X2RlY2xhcmVfd2VkZ2VkKGd0KTsKKworCXBjaV9kaXNhYmxlX2RldmljZShw ZGV2KTsKK30KKworc3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgeGVfcGNpX2Vycm9yX2RldGVjdGVk KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBwY2lfY2hhbm5lbF9zdGF0ZV90IHN0YXRlKQoreworCXN0 cnVjdCB4ZV9kZXZpY2UgKnhlID0gcGRldl90b194ZV9kZXZpY2UocGRldik7CisKKwlkZXZfZXJy KCZwZGV2LT5kZXYsICJYZSBQY2kgZXJyb3IgcmVjb3Zlcnk6IGVycm9yIGRldGVjdGVkIHN0YXRl ICVkXG4iLCBzdGF0ZSk7CisKKwlpZiAoc3RhdGUgPT0gcGNpX2NoYW5uZWxfaW9fcGVybV9mYWls dXJlKQorCQlyZXR1cm4gUENJX0VSU19SRVNVTFRfRElTQ09OTkVDVDsKKworCS8qIElmIHRoZSBk ZXZpY2UgaXMgYWxyZWFkeSB3ZWRnZWQgb3IgaW4gc3Vydml2YWJpbGl0eSBtb2RlLCBkbyBub3Qg YXR0ZW1wdCByZWNvdmVyeSAqLworCWlmICh4ZV9zdXJ2aXZhYmlsaXR5X21vZGVfaXNfYm9vdF9l bmFibGVkKHhlKSB8fCB4ZV9kZXZpY2Vfd2VkZ2VkKHhlKSkKKwkJcmV0dXJuIFBDSV9FUlNfUkVT VUxUX0RJU0NPTk5FQ1Q7CisKKwlzd2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBwY2lfY2hhbm5lbF9p b19ub3JtYWw6CisJCXJldHVybiBQQ0lfRVJTX1JFU1VMVF9DQU5fUkVDT1ZFUjsKKwljYXNlIHBj aV9jaGFubmVsX2lvX2Zyb3plbjoKKwkJeGVfcGNpX2Vycm9yX2hhbmRsaW5nKHBkZXYpOworCQly ZXR1cm4gUENJX0VSU19SRVNVTFRfTkVFRF9SRVNFVDsKKwlkZWZhdWx0OgorCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJVbmtub3duIHN0YXRlICVkXG4iLCBzdGF0ZSk7CisJCXJldHVybiBQQ0lfRVJT X1JFU1VMVF9ORUVEX1JFU0VUOworCX0KK30KKworc3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgeGVf cGNpX2Vycm9yX21taW9fZW5hYmxlZChzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKwlzdHJ1Y3Qg eGVfZGV2aWNlICp4ZSA9IHBkZXZfdG9feGVfZGV2aWNlKHBkZXYpOworCWVudW0geGVfcmFzX3Jl Y292ZXJ5X2FjdGlvbiBhY3Rpb247CisKKwlkZXZfZXJyKCZwZGV2LT5kZXYsICJYZSBQY2kgZXJy b3IgcmVjb3Zlcnk6IE1NSU8gZW5hYmxlZFxuIik7CisKKwlhY3Rpb24gPSB4ZV9yYXNfcHJvY2Vz c19lcnJvcnMoeGUpOworCisJcmV0dXJuIHJhc19hY3Rpb25fdG9fcGNpX3Jlc3VsdChhY3Rpb24p OworfQorCitzdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCB4ZV9wY2lfZXJyb3Jfc2xvdF9yZXNldChz dHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKwljb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50 ID0gcGNpX21hdGNoX2lkKHBkZXYtPmRyaXZlci0+aWRfdGFibGUsIHBkZXYpOworCXN0cnVjdCB4 ZV9kZXZpY2UgKnhlID0gcGRldl90b194ZV9kZXZpY2UocGRldik7CisKKwlkZXZfZXJyKCZwZGV2 LT5kZXYsICJYZSBQY2kgZXJyb3IgcmVjb3Zlcnk6IFNsb3QgcmVzZXRcbiIpOworCisJcGNpX3Jl c3RvcmVfc3RhdGUocGRldik7CisKKwlpZiAocGNpX2VuYWJsZV9kZXZpY2UocGRldikpIHsKKwkJ ZGV2X2VycigmcGRldi0+ZGV2LAorCQkJIkNhbm5vdCByZS1lbmFibGUgUENJIGRldmljZSBhZnRl ciByZXNldFxuIik7CisJCXJldHVybiBQQ0lfRVJTX1JFU1VMVF9ESVNDT05ORUNUOworCX0KKwor CS8qCisJICogU2Vjb25kYXJ5IEJ1cyBSZXNldCBjYXVzZXMgYWxsIFZSQU0gc3RhdGUgdG8gYmUg bG9zdCBhbG9uZyB3aXRoCisJICogaGFyZHdhcmUgc3RhdGUuIEFzIGFuIGluaXRpYWwgc3RlcCwg cmUtcHJvYmUgdGhlIGRldmljZSB0bworCSAqIHJlLWluaXRpYWxpemUgdGhlIGRyaXZlciBhbmQg aGFyZHdhcmUuCisJICogVE9ETzogb3B0aW1pemUgYnkgcmUtaW5pdGlhbGl6aW5nIG9ubHkgdGhl IGhhcmR3YXJlIHN0YXRlIGFuZCByZS1jcmVhdGluZworCSAqIGtlcm5lbCBCT3MuCisJICovCisJ eGVfZGV2aWNlX2NsZWFyX2luX3Jlc2V0KHhlKTsKKwlwZGV2LT5kcml2ZXItPnJlbW92ZShwZGV2 KTsKKwlkZXZyZXNfcmVsZWFzZV9ncm91cCgmcGRldi0+ZGV2LCB4ZS0+ZGV2cmVzX2dyb3VwX2lk KTsKKworCWlmIChwZGV2LT5kcml2ZXItPnByb2JlKHBkZXYsIGVudCkpCisJCXJldHVybiBQQ0lf RVJTX1JFU1VMVF9ESVNDT05ORUNUOworCisJeGUgPSBwZGV2X3RvX3hlX2RldmljZShwZGV2KTsK KworCS8qIFdlZGdlIHRoZSBkZXZpY2UgdG8gcHJldmVudCBJL08gb3BlcmF0aW9ucyB0aWxsIHRo ZSByZXN1bWUgY2FsbGJhY2sgKi8KKwlhdG9taWNfc2V0KCZ4ZS0+d2VkZ2VkLmZsYWcsIDEpOwor CisJcmV0dXJuIFBDSV9FUlNfUkVTVUxUX1JFQ09WRVJFRDsKK30KKworc3RhdGljIHZvaWQgeGVf cGNpX2Vycm9yX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKwlzdHJ1Y3QgeGVfZGV2 aWNlICp4ZSA9IHBkZXZfdG9feGVfZGV2aWNlKHBkZXYpOworCisJZGV2X2luZm8oJnBkZXYtPmRl diwgIlhlIFBjaSBlcnJvciByZWNvdmVyeTogUmVjb3ZlcmVkXG4iKTsKKworCS8qIFJlc3VtZSBJ L08gb3BlcmF0aW9ucyAqLworCWF0b21pY19zZXQoJnhlLT53ZWRnZWQuZmxhZywgMCk7Cit9CisK K2NvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgeGVfcGNpX2Vycm9yX2hhbmRsZXJzID0g eworCS5lcnJvcl9kZXRlY3RlZAk9IHhlX3BjaV9lcnJvcl9kZXRlY3RlZCwKKwkubW1pb19lbmFi bGVkCT0geGVfcGNpX2Vycm9yX21taW9fZW5hYmxlZCwKKwkuc2xvdF9yZXNldAk9IHhlX3BjaV9l cnJvcl9zbG90X3Jlc2V0LAorCS5yZXN1bWUJCT0geGVfcGNpX2Vycm9yX3Jlc3VtZSwKK307CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0v eGUveGVfcmFzLmMKaW5kZXggNGNiMTZiNDE5YjBjLi5kNzlmOGE2NTg5YWMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVf cmFzLmMKQEAgLTMsMTIgKzMsMTggQEAKICAqIENvcHlyaWdodCDCqSAyMDI2IEludGVsIENvcnBv cmF0aW9uCiAgKi8KIAorI2luY2x1ZGUgInhlX2JvLmgiCiAjaW5jbHVkZSAieGVfZGV2aWNlLmgi CiAjaW5jbHVkZSAieGVfcHJpbnRrLmgiCiAjaW5jbHVkZSAieGVfcmFzLmgiCiAjaW5jbHVkZSAi eGVfcmFzX3R5cGVzLmgiCiAjaW5jbHVkZSAieGVfc3lzY3RybC5oIgogI2luY2x1ZGUgInhlX3N5 c2N0cmxfZXZlbnRfdHlwZXMuaCIKKyNpbmNsdWRlICJ4ZV9zeXNjdHJsX21haWxib3guaCIKKyNp bmNsdWRlICJ4ZV9zeXNjdHJsX21haWxib3hfdHlwZXMuaCIKKworI2RlZmluZSBDT1JFX0NPTVBV VEVfVU5DT1JSX1RZUEUJR0VOTUFTSygyNiwgMjUpCisjZGVmaW5lICBHTE9CQUxfVU5DT1JSX0VS Uk9SCQkyCiAKIC8qIFNldmVyaXR5IG9mIGRldGVjdGVkIGVycm9ycyAgKi8KIGVudW0geGVfcmFz X3NldmVyaXR5IHsKQEAgLTMxLDEyICszNywyNSBAQCBlbnVtIHhlX3Jhc19jb21wb25lbnQgewog CVhFX1JBU19DT01QX01BWAogfTsKIAorc3RhdGljIGNvbnN0IGludCByYXNfc3RhdHVzX3RvX2Vy cm5vX21hcFtdID0geworCVtYRV9SQVNfU1RBVFVTX1NVQ0NFU1NdCQkJPSAwLAorCVtYRV9SQVNf U1RBVFVTX0lOVkFMSURfUEFSQU1dCQk9IC1FSU5WQUwsCisJW1hFX1JBU19TVEFUVVNfT1BfTk9U X1NVUFBPUlRFRF0JPSAtRU9QTk9UU1VQUCwKKwlbWEVfUkFTX1NUQVRVU19USU1FT1VUXQkJCT0g LUVUSU1FRE9VVCwKKwlbWEVfUkFTX1NUQVRVU19IQVJEV0FSRV9GQUlMVVJFXQk9IC1FSU8sCisJ W1hFX1JBU19TVEFUVVNfSU5TVUZGSUNJRU5UX1JFU09VUkNFU10JPSAtRU5BVkFJTCwKKwlbWEVf UkFTX1NUQVRVU19VTktOT1dOX0VSUk9SXQkJPSAtRU5PREFUQQorfTsKKworc3RhdGljX2Fzc2Vy dChBUlJBWV9TSVpFKHJhc19zdGF0dXNfdG9fZXJybm9fbWFwKSA9PSBYRV9SQVNfU1RBVFVTX1VO S05PV05fRVJST1IgKyAxKTsKKwogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHhlX3Jhc19zZXZl cml0aWVzW10gPSB7CiAJW1hFX1JBU19TRVZfTk9UX1NVUFBPUlRFRF0JCT0gIk5vdCBTdXBwb3J0 ZWQiLAogCVtYRV9SQVNfU0VWX0NPUlJFQ1RBQkxFXQkJPSAiQ29ycmVjdGFibGUgRXJyb3IiLAog CVtYRV9SQVNfU0VWX1VOQ09SUkVDVEFCTEVdCQk9ICJVbmNvcnJlY3RhYmxlIEVycm9yIiwKIAlb WEVfUkFTX1NFVl9JTkZPUk1BVElPTkFMXQkJPSAiSW5mb3JtYXRpb25hbCBFcnJvciIsCiB9Owor CiBzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoeGVfcmFzX3NldmVyaXRpZXMpID09IFhFX1JBU19T RVZfTUFYKTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHhlX3Jhc19jb21wb25lbnRzW10g PSB7CkBAIC00OCw2ICs2Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB4ZV9yYXNfY29t cG9uZW50c1tdID0gewogCVtYRV9SQVNfQ09NUF9GQUJSSUNdCQkJPSAiRmFicmljIiwKIAlbWEVf UkFTX0NPTVBfU09DX0lOVEVSTkFMXQkJPSAiU29DIEludGVybmFsIiwKIH07CisKIHN0YXRpY19h c3NlcnQoQVJSQVlfU0laRSh4ZV9yYXNfY29tcG9uZW50cykgPT0gWEVfUkFTX0NPTVBfTUFYKTsK IAogc3RhdGljIGlubGluZSBjb25zdCBjaGFyICpzZXZfdG9fc3RyKHU4IHNldmVyaXR5KQpAQCAt NjYsNiArODYsMjk2IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqY29tcF90b19zdHIodTgg Y29tcG9uZW50KQogCXJldHVybiB4ZV9yYXNfY29tcG9uZW50c1tjb21wb25lbnRdOwogfQogCitz dGF0aWMgaW50IHJhc19zdGF0dXNfdG9fZXJybm8oZW51bSB4ZV9yYXNfcmVzcG9uc2Vfc3RhdHVz IHN0YXR1cykKK3sKKwlpZiAoc3RhdHVzID4gWEVfUkFTX1NUQVRVU19VTktOT1dOX0VSUk9SKQor CQlzdGF0dXMgPSBYRV9SQVNfU1RBVFVTX1VOS05PV05fRVJST1I7CisKKwlyZXR1cm4gcmFzX3N0 YXR1c190b19lcnJub19tYXBbc3RhdHVzXTsKK30KKworc3RhdGljIHZvaWQgcHJlcGFyZV9yYXNf Y29tbWFuZChzdHJ1Y3QgeGVfc3lzY3RybF9tYWlsYm94X2NvbW1hbmQgKmNvbW1hbmQsCisJCQkJ dTMyIGNtZF9tYXNrLCB2b2lkICpyZXF1ZXN0LCBzaXplX3QgcmVxdWVzdF9sZW4sCisJCQkJdm9p ZCAqcmVzcG9uc2UsIHNpemVfdCByZXNwb25zZV9sZW4pCit7CisJc3RydWN0IHhlX3N5c2N0cmxf YXBwX21zZ19oZHIgaGRyID0gezB9OworCisJaGRyLmRhdGEgPSBGSUVMRF9QUkVQKEFQUF9IRFJf R1JPVVBfSURfTUFTSywgWEVfU1lTQ1RSTF9HUk9VUF9HRlNQKSB8CisJCSAgIEZJRUxEX1BSRVAo QVBQX0hEUl9DT01NQU5EX01BU0ssIGNtZF9tYXNrKTsKKworCWNvbW1hbmQtPmhlYWRlciA9IGhk cjsKKwljb21tYW5kLT5kYXRhX2luID0gcmVxdWVzdDsKKwljb21tYW5kLT5kYXRhX2luX2xlbiA9 IHJlcXVlc3RfbGVuOworCWNvbW1hbmQtPmRhdGFfb3V0ID0gcmVzcG9uc2U7CisJY29tbWFuZC0+ ZGF0YV9vdXRfbGVuID0gcmVzcG9uc2VfbGVuOworfQorCitzdGF0aWMgaW50IHNlbmRfcGFnZV9v ZmZsaW5lKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCBlbnVtIHhlX3Jhc19wYWdlX2FjdGlvbiBhY3Rp b24sIHU2NCBwYWdlX2FkZHJlc3MpCit7CisJc3RydWN0IHhlX3N5c2N0cmxfbWFpbGJveF9jb21t YW5kIGNvbW1hbmQgPSB7MH07CisJc3RydWN0IHhlX3Jhc19wYWdlX29mZmxpbmVfcmVxdWVzdCBy ZXF1ZXN0ID0gezB9OworCXN0cnVjdCB4ZV9yYXNfcGFnZV9vZmZsaW5lX3Jlc3BvbnNlIHJlc3Bv bnNlID0gezB9OworCXNpemVfdCBybGVuOworCWludCByZXQ7CisKKwlpZiAoIXhlLT5pbmZvLmhh c19zeXNjdHJsKQorCQlyZXR1cm4gMDsKKworCWlmIChhY3Rpb24gPj0gWEVfUkFTX1BBR0VfQUNU SU9OX01BWCkgeworCQl4ZV9lcnIoeGUsICJbUkFTXTogSW52YWxpZCBwYWdlIG9mZmxpbmUgYWN0 aW9uICVkXG4iLCBhY3Rpb24pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXF1ZXN0LnBh Z2VfYWRkcmVzcyA9IHBhZ2VfYWRkcmVzczsKKwlyZXF1ZXN0LmFjdGlvbiA9IGFjdGlvbjsKKwor CXByZXBhcmVfcmFzX2NvbW1hbmQoJmNvbW1hbmQsIFhFX1NZU0NUUkxfQ01EX1BBR0VfT0ZGTElO RSwgJnJlcXVlc3QsCisJCQkgICAgc2l6ZW9mKHJlcXVlc3QpLCAmcmVzcG9uc2UsIHNpemVvZihy ZXNwb25zZSkpOworCisJcmV0ID0geGVfc3lzY3RybF9zZW5kX2NvbW1hbmQoJnhlLT5zYywgJmNv bW1hbmQsICZybGVuKTsKKwlpZiAocmV0KSB7CisJCXhlX2Vycih4ZSwgInN5c2N0cmw6IGZhaWxl ZCB0byBzZW5kIHBhZ2Ugb2ZmbGluZSBjb21tYW5kICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0 OworCX0KKworCWlmIChybGVuICE9IHNpemVvZihyZXNwb25zZSkpIHsKKwkJeGVfZXJyKHhlLCAi c3lzY3RybDogdW5leHBlY3RlZCBwYWdlIG9mZmxpbmUgcmVzcG9uc2UgbGVuZ3RoICV6dSAoZXhw ZWN0ZWQgJXp1KVxuIiwKKwkJICAgICAgIHJsZW4sIHNpemVvZihyZXNwb25zZSkpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSByYXNfc3RhdHVzX3RvX2Vycm5vKHJlc3BvbnNlLnN0 YXR1cyk7CisJaWYgKHJldCkKKwkJeGVfZXJyKHhlLCAic3lzY3RybDogcGFnZSBvZmZsaW5lIGNv bW1hbmQgZmFpbGVkIHdpdGggc3RhdHVzICVkXG4iLAorCQkgICAgICAgcmVzcG9uc2Uuc3RhdHVz KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgaGFuZGxlX3BhZ2Vfb2ZmbGluZShz dHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTY0IHBhZ2VfYWRkcmVzcywgYm9vbCBzZW5kX29mZmxpbmVf Y21kKQoreworCWVudW0geGVfcmFzX3BhZ2VfYWN0aW9uIGFjdGlvbjsKKwlpbnQgcmV0OworCisJ aWYgKCFJU19BTElHTkVEKHBhZ2VfYWRkcmVzcywgWEVfUEFHRV9TSVpFKSkgeworCQl4ZV9lcnIo eGUsICJzeXNjdHJsOiBVbmFsaWduZWQgcGFnZSBhZGRyZXNzOiAweCVsbHhcbiIsIHBhZ2VfYWRk cmVzcyk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qCisJICogVE9ETzogQ2FsbCBmdW5j dGlvbiB0byBoYW5kbGUgYWRkcmVzcyBmYXVsdAorCSAqIHJldCA9IHhlX3R0bV92cmFtX2hhbmRs ZV9hZGRyX2ZhdWx0KHhlLCBwYWdlX2FkZHJlc3MpOworCSAqLworCisJLyoKKwkgKiBIYW5kbGUg cmV0dXJuIGNvZGUgZnJvbSBhZGRyZXNzIGZhdWx0IGhhbmRsaW5nIGZ1bmN0aW9uOgorCSAqICAw OiBBZGRyZXNzIGlzIHZhbGlkIGFuZCBjYW4gYmUgb2ZmbGluZWQKKwkgKiAtRUlPOiBBZGRyZXNz IGJlbG9uZ3MgdG8gYSBjcml0aWNhbCBCTyB0aGF0IGNhbm5vdCBiZSBvZmZsaW5lZAorCSAqIC1F TlhJTzogSW52YWxpZCBhZGRyZXNzCisJICogLUVPUE5PVFNVUFA6IEFkZHJlc3MgaXMgdmFsaWQg YW5kIGNhbiBiZSBvZmZsaW5lZCBidXQgdXNlciBwb2xpY3kgaXMgbm90IHRvIG9mZmxpbmUKKwkg KgorCSAqIEZvciBhbnkgb3RoZXIgbm9uLXplcm8gZXJyb3IgY29kZSwgc2tpcCBvZmZsaW5pbmcu CisJICovCisKKwlzd2l0Y2ggKHJldCkgeworCWNhc2UgMDoKKwkJYWN0aW9uID0gWEVfUkFTX1BB R0VfQUNUSU9OX09GRkxJTkU7CisJCWJyZWFrOworCS8qIFVzZXIgcG9saWN5IHNldCB0byBkZWNs aW5lIHBhZ2Ugb2ZmbGluaW5nICovCisJY2FzZSAtRU9QTk9UU1VQUDoKKwkJYWN0aW9uID0gWEVf UkFTX1BBR0VfQUNUSU9OX0RFQ0xJTkU7CisJCWJyZWFrOworCWNhc2UgLUVJTzoKKwkJeGVfZXJy KHhlLCAiW1JBU106IFBhZ2UgYWRkcmVzcyBiZWxvbmdzIHRvIGNyaXRpY2FsIEJPOiAweCVsbHhc biIsCisJCSAgICAgICBwYWdlX2FkZHJlc3MpOworCQlyZXR1cm4gcmV0OworCWRlZmF1bHQ6CisJ CXhlX2Vycih4ZSwgIltSQVNdOiBGYWlsZWQgdG8gaGFuZGxlIGFkZHJlc3MgZmF1bHQgMHglbGx4 OiAlZFxuIiwKKwkJICAgICAgIHBhZ2VfYWRkcmVzcywgcmV0KTsKKwkJcmV0dXJuIDA7CisJfQor CisJaWYgKHNlbmRfb2ZmbGluZV9jbWQpIHsKKwkJcmV0ID0gc2VuZF9wYWdlX29mZmxpbmUoeGUs IGFjdGlvbiwgcGFnZV9hZGRyZXNzKTsKKwkJaWYgKHJldCkKKwkJCXhlX2Vycih4ZSwgInN5c2N0 cmw6IEZhaWxlZCB0byBvZmZsaW5lIHBhZ2UgZm9yIGFkZHJlc3MgMHglbGx4OiAlZFxuIiwKKwkJ CSAgICAgICBwYWdlX2FkZHJlc3MsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBlbnVtIHhlX3Jhc19yZWNvdmVyeV9hY3Rpb24gaGFuZGxlX2NvcmVf Y29tcHV0ZV9lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUsCisJCQkJCQkJICAgICAgc3RydWN0 IHhlX3Jhc19lcnJvcl9hcnJheSAqYXJyKQoreworCXN0cnVjdCB4ZV9yYXNfY29tcHV0ZV9lcnJv ciAqZXJyb3JfaW5mbyA9IChzdHJ1Y3QgeGVfcmFzX2NvbXB1dGVfZXJyb3IgKilhcnItPmVycm9y X2RldGFpbHM7CisJdTggdW5jb3JyX3R5cGU7CisKKwl1bmNvcnJfdHlwZSA9IEZJRUxEX0dFVChD T1JFX0NPTVBVVEVfVU5DT1JSX1RZUEUsIGVycm9yX2luZm8tPmVycm9yX2xvZ19oZWFkZXIpOwor CisJLyogUmVxdWVzdCBhIHJlc2V0IGlmIGVycm9yIGlzIGdsb2JhbCAqLworCWlmICh1bmNvcnJf dHlwZSA9PSBHTE9CQUxfVU5DT1JSX0VSUk9SKQorCQlyZXR1cm4gWEVfUkFTX1JFQ09WRVJZX0FD VElPTl9SRVNFVDsKKworCS8qIExvY2FsIGVycm9ycyBhcmUgcmVjb3ZlcmVkIHVzaW5nIGFuIGVu Z2luZSByZXNldCBieSBHdUMgKi8KKwlyZXR1cm4gWEVfUkFTX1JFQ09WRVJZX0FDVElPTl9SRUNP VkVSRUQ7Cit9CisKK3N0YXRpYyBlbnVtIHhlX3Jhc19yZWNvdmVyeV9hY3Rpb24gaGFuZGxlX3Nv Y19pbnRlcm5hbF9lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUsCisJCQkJCQkJICAgICAgc3Ry dWN0IHhlX3Jhc19lcnJvcl9hcnJheSAqYXJyKQoreworCXN0cnVjdCB4ZV9yYXNfc29jX2Vycm9y ICplcnJvcl9pbmZvID0gKHN0cnVjdCB4ZV9yYXNfc29jX2Vycm9yICopYXJyLT5lcnJvcl9kZXRh aWxzOworCXN0cnVjdCB4ZV9yYXNfc29jX2Vycm9yX3NvdXJjZSAqc291cmNlID0gJmVycm9yX2lu Zm8tPmVycm9yX3NvdXJjZTsKKwlzdHJ1Y3QgeGVfcmFzX2Vycm9yX2NsYXNzICplcnJvcl9jbGFz cyA9ICZhcnItPmVycm9yX2NsYXNzOworCXU4IHRpbGVfaWQgPSBlcnJvcl9jbGFzcy0+cHJvZHVj dC51bml0LnRpbGU7CisJc3RydWN0IHhlX3RpbGUgKnRpbGU7CisKKwlpZiAodGlsZV9pZCA+PSB4 ZS0+aW5mby50aWxlX2NvdW50KSB7CisJCXhlX2Vycih4ZSwgInN5c2N0cmw6IFNPQyBpbnRlcm5h bCBlcnJvciByZXBvcnRlZCBmcm9tIGludmFsaWQgdGlsZSAldVxuIiwgdGlsZV9pZCk7CisJCXJl dHVybiBYRV9SQVNfUkVDT1ZFUllfQUNUSU9OX1JFU0VUOworCX0KKworCXRpbGUgPSAmeGUtPnRp bGVzW3RpbGVfaWRdOworCisJaWYgKHNvdXJjZS0+Y3NjKSB7CisJCXN0cnVjdCB4ZV9yYXNfY3Nj X2Vycm9yICpjc2NfZXJyb3IgPQorCQkJKHN0cnVjdCB4ZV9yYXNfY3NjX2Vycm9yICopZXJyb3Jf aW5mby0+YWRkaXRpb25hbF9kZXRhaWxzOworCisJCS8qCisJCSAqIENTQyB1bmNvcnJlY3RhYmxl IGVycm9ycyBhcmUgY2xhc3NpZmllZCBhcyBoYXJkd2FyZSBlcnJvcnMgYW5kIGZpcm13YXJlIGVy cm9ycy4KKwkJICogQ1NDIGZpcm13YXJlIGVycm9ycyBhcmUgY3JpdGljYWwgZXJyb3JzIHRoYXQg Y2FuIGJlIHJlY292ZXJlZCBvbmx5IGJ5IGZpcm13YXJlCisJCSAqIHVwZGF0ZSB2aWEgU1BJIGRy aXZlci4gT24gYSBDU0MgZmlybXdhcmUgZXJyb3IsIFBDT0RFIGVuYWJsZXMgRkRPIG1vZGUgYW5k IHNldHMKKwkJICogdGhlIGJpdCBpbiB0aGUgY2FwYWJpbGl0eSByZWdpc3Rlci4gT24gcmVjZWl2 aW5nIHRoaXMgZXJyb3IsIHRoZSBkcml2ZXIgZW5hYmxlcworCQkgKiBydW50aW1lIHN1cnZpdmFi aWxpdHkgbW9kZSB3aGljaCBub3RpZmllcyB1c2Vyc3BhY2UgdGhhdCBhIGZpcm13YXJlIHVwZGF0 ZQorCQkgKiBpcyByZXF1aXJlZC4KKwkJICovCisJCWlmIChjc2NfZXJyb3ItPmhlY191bmNvcnJf ZndfZXJyX2R3MCkgeworCQkJeGVfZXJyKHhlLCAiW1JBU106IENTQyAlcyBkZXRlY3RlZDogMHgl eFxuIiwKKwkJCSAgICAgICBzZXZfdG9fc3RyKGVycm9yX2NsYXNzLT5jb21tb24uc2V2ZXJpdHkp LAorCQkJICAgICAgIGNzY19lcnJvci0+aGVjX3VuY29ycl9md19lcnJfZHcwKTsKKwkJCXNjaGVk dWxlX3dvcmsoJnRpbGUtPmNzY19od19lcnJvcl93b3JrKTsKKwkJCXJldHVybiBYRV9SQVNfUkVD T1ZFUllfQUNUSU9OX0RJU0NPTk5FQ1Q7CisJCX0KKwl9IGVsc2UgaWYgKHNvdXJjZS0+aWVoKSB7 CisJCXN0cnVjdCB4ZV9yYXNfaWVoX2Vycm9yICppZWhfZXJyb3IgPQorCQkJKHN0cnVjdCB4ZV9y YXNfaWVoX2Vycm9yICopZXJyb3JfaW5mby0+YWRkaXRpb25hbF9kZXRhaWxzOworCisJCWlmIChp ZWhfZXJyb3ItPmdsb2JhbF9lcnJvcl9zdGF0dXMgJiBYRV9SQVNfU09DX0lFSF9QVU5JVCkgewor CQkJeGVfZXJyKHhlLCAiW1JBU106IFBVTklUICVzIGRldGVjdGVkOiAweCV4XG4iLAorCQkJICAg ICAgIHNldl90b19zdHIoZXJyb3JfY2xhc3MtPmNvbW1vbi5zZXZlcml0eSksCisJCQkgICAgICAg aWVoX2Vycm9yLT5nbG9iYWxfZXJyb3Jfc3RhdHVzKTsKKwkJCS8qIFRPRE86IEFkZCBQVU5JVCBl cnJvciBoYW5kbGluZyAqLworCQkJcmV0dXJuIFhFX1JBU19SRUNPVkVSWV9BQ1RJT05fRElTQ09O TkVDVDsKKwkJfQorCX0KKworCS8qIEZvciBvdGhlciBTT0MgaW50ZXJuYWwgZXJyb3JzLCByZXF1 ZXN0IGEgcmVzZXQgYXMgcmVjb3ZlcnkgbWVjaGFuaXNtICovCisJcmV0dXJuIFhFX1JBU19SRUNP VkVSWV9BQ1RJT05fUkVTRVQ7Cit9CisKK3N0YXRpYyBlbnVtIHhlX3Jhc19yZWNvdmVyeV9hY3Rp b24gaGFuZGxlX2RldmljZV9tZW1vcnlfZXJyb3JzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLAorCQkJ CQkJCSAgICAgICBzdHJ1Y3QgeGVfcmFzX2Vycm9yX2FycmF5ICphcnIpCit7CisJc3RydWN0IHhl X3Jhc19tZW1vcnlfZXJyb3IgKmVycm9yX2luZm8gPSAoc3RydWN0IHhlX3Jhc19tZW1vcnlfZXJy b3IgKilhcnItPmVycm9yX2RldGFpbHM7CisJaW50IHJldDsKKworCWlmIChlcnJvcl9pbmZvLT5j YXRlZ29yeSAmIFhFX1JBU19NRU1PUllfRUNDKSB7CisJCXhlX2Vycih4ZSwgIltSQVNdOiBkb3Vi bGUtYml0IEVDQyBlcnJvciBkZXRlY3RlZCBhdCBzdyBhZGRyZXNzIDB4JWxseFxuIiwKKwkJICAg ICAgIGVycm9yX2luZm8tPnN3X2FkZHJlc3MpOworCQlyZXQgPSBoYW5kbGVfcGFnZV9vZmZsaW5l KHhlLCBlcnJvcl9pbmZvLT5zd19hZGRyZXNzLCB0cnVlKTsKKwkJaWYgKCFyZXQpCisJCQlyZXR1 cm4gWEVfUkFTX1JFQ09WRVJZX0FDVElPTl9SRUNPVkVSRUQ7CisJfQorCisJLyogUmVxdWVzdCBh IHJlc2V0IGZvciBvdGhlciBkZXZpY2UgbWVtb3J5IGVycm9ycyBhbmQgaWYgcGFnZSBvZmZsaW5p bmcgZmFpbGVkICovCisJcmV0dXJuIFhFX1JBU19SRUNPVkVSWV9BQ1RJT05fUkVTRVQ7Cit9CisK K3N0YXRpYyB2b2lkIGdldF9xdWV1ZWRfcGFnZXMoc3RydWN0IHhlX2RldmljZSAqeGUpCit7CisJ c3RydWN0IHhlX3N5c2N0cmxfbWFpbGJveF9jb21tYW5kIGNvbW1hbmQgPSB7MH07CisJc3RydWN0 IHhlX3Jhc19wYWdlX29mZmxpbmVfcXVldWUgcmVzcG9uc2UgPSB7MH07CisJdTMyIGNvdW50ID0g MDsKKwlzaXplX3QgcmxlbjsKKwlpbnQgcmV0LCBpOworCisJLyogU3VwcG9ydGVkIG9ubHkgb24g cGxhdGZvcm1zIHdpdGggc3lzdGVtIGNvbnRyb2xsZXIgKi8KKwlpZiAoIXhlLT5pbmZvLmhhc19z eXNjdHJsKQorCQlyZXR1cm47CisKKwlwcmVwYXJlX3Jhc19jb21tYW5kKCZjb21tYW5kLCBYRV9T WVNDVFJMX0NNRF9HRVRfT0ZGTElORV9RVUVVRSwgTlVMTCwgMCwKKwkJCSAgICAmcmVzcG9uc2Us IHNpemVvZihyZXNwb25zZSkpOworCisJZG8geworCQltZW1zZXQoJnJlc3BvbnNlLCAwLCBzaXpl b2YocmVzcG9uc2UpKTsKKworCQlyZXQgPSB4ZV9zeXNjdHJsX3NlbmRfY29tbWFuZCgmeGUtPnNj LCAmY29tbWFuZCwgJnJsZW4pOworCQlpZiAocmV0KSB7CisJCQl4ZV9lcnIoeGUsICJzeXNjdHJs OiBmYWlsZWQgdG8gZ2V0IHBhZ2Ugb2ZmbGluZSBxdWV1ZSAlZFxuIiwgcmV0KTsKKwkJCXJldHVy bjsKKwkJfQorCisJCWlmIChybGVuICE9IHNpemVvZihyZXNwb25zZSkpIHsKKwkJCXhlX2Vycih4 ZSwgInN5c2N0cmw6IHVuZXhwZWN0ZWQgcGFnZSBvZmZsaW5lIHF1ZXVlIHJlc3BvbnNlIGxlbmd0 aCAlenUgKGV4cGVjdGVkICV6dSlcbiIsCisJCQkgICAgICAgcmxlbiwgc2l6ZW9mKHJlc3BvbnNl KSk7CisJCQlyZXR1cm47CisJCX0KKworCQlmb3IgKGkgPSAwOyBpIDwgcmVzcG9uc2UucGFnZXNf cmV0dXJuZWQgJiYgaSA8IFhFX1JBU19OVU1fUEFHRVM7IGkrKykKKwkJCWhhbmRsZV9wYWdlX29m ZmxpbmUoeGUsIHJlc3BvbnNlLnBhZ2VfYWRkcmVzc2VzW2ldLCB0cnVlKTsKKworCQljb3VudCAr PSByZXNwb25zZS5wYWdlc19yZXR1cm5lZDsKKwkJaWYgKGNvdW50ID4gcmVzcG9uc2UudG90YWxf cGFnZXMpIHsKKwkJCXhlX2Vycih4ZSwgInN5c2N0cmw6IFBhZ2VzIHJldHVybmVkIGZyb20gcXVl dWUgZXhjZWVkIHRvdGFsIHBhZ2VzICV1LCByZXR1cm5lZCAldVxuIiwKKwkJCSAgICAgICByZXNw b25zZS50b3RhbF9wYWdlcywgY291bnQpOworCQkJcmV0dXJuOworCQl9CisJfSB3aGlsZSAocmVz cG9uc2UuYWRkaXRpb25hbF9kYXRhKTsKK30KKworc3RhdGljIHZvaWQgZ2V0X29mZmxpbmVkX2xp c3Qoc3RydWN0IHhlX2RldmljZSAqeGUpCit7CisJc3RydWN0IHhlX3N5c2N0cmxfbWFpbGJveF9j b21tYW5kIGNvbW1hbmQgPSB7MH07CisJc3RydWN0IHhlX3Jhc19wYWdlX29mZmxpbmVfbGlzdCBy ZXNwb25zZSA9IHswfTsKKwl1MzIgY291bnQgPSAwOworCXNpemVfdCBybGVuOworCWludCByZXQs IGk7CisKKwkvKiBTdXBwb3J0ZWQgb25seSBvbiBwbGF0Zm9ybXMgd2l0aCBzeXN0ZW0gY29udHJv bGxlciAqLworCWlmICgheGUtPmluZm8uaGFzX3N5c2N0cmwpCisJCXJldHVybjsKKworCXByZXBh cmVfcmFzX2NvbW1hbmQoJmNvbW1hbmQsIFhFX1NZU0NUUkxfQ01EX0dFVF9PRkZMSU5FX0xJU1Qs IE5VTEwsIDAsCisJCQkgICAgJnJlc3BvbnNlLCBzaXplb2YocmVzcG9uc2UpKTsKKworCWRvIHsK KwkJbWVtc2V0KCZyZXNwb25zZSwgMCwgc2l6ZW9mKHJlc3BvbnNlKSk7CisKKwkJcmV0ID0geGVf c3lzY3RybF9zZW5kX2NvbW1hbmQoJnhlLT5zYywgJmNvbW1hbmQsICZybGVuKTsKKwkJaWYgKHJl dCkgeworCQkJeGVfZXJyKHhlLCAic3lzY3RybDogZmFpbGVkIHRvIGdldCBwYWdlIG9mZmxpbmUg bGlzdCAlZFxuIiwgcmV0KTsKKwkJCXJldHVybjsKKwkJfQorCisJCWlmIChybGVuICE9IHNpemVv ZihyZXNwb25zZSkpIHsKKwkJCXhlX2Vycih4ZSwgInN5c2N0cmw6IHVuZXhwZWN0ZWQgcGFnZSBv ZmZsaW5lIGxpc3QgcmVzcG9uc2UgbGVuZ3RoICV6dSAoZXhwZWN0ZWQgJXp1KVxuIiwKKwkJCSAg ICAgICBybGVuLCBzaXplb2YocmVzcG9uc2UpKTsKKwkJCXJldHVybjsKKwkJfQorCisJCWZvciAo aSA9IDA7IGkgPCByZXNwb25zZS5wYWdlc19yZXR1cm5lZCAmJiBpIDwgWEVfUkFTX05VTV9QQUdF UzsgaSsrKQorCQkJaGFuZGxlX3BhZ2Vfb2ZmbGluZSh4ZSwgcmVzcG9uc2UucGFnZV9hZGRyZXNz ZXNbaV0sIGZhbHNlKTsKKworCQljb3VudCArPSByZXNwb25zZS5wYWdlc19yZXR1cm5lZDsKKwkJ aWYgKGNvdW50ID4gcmVzcG9uc2UudG90YWxfcGFnZXMpIHsKKwkJCXhlX2Vycih4ZSwgInN5c2N0 cmw6IFBhZ2VzIHJldHVybmVkIGZyb20gbGlzdCBleGNlZWQgdG90YWwgcGFnZXMgJXUsIHJldHVy bmVkICV1XG4iLAorCQkJICAgICAgIHJlc3BvbnNlLnRvdGFsX3BhZ2VzLCBjb3VudCk7CisJCQly ZXR1cm47CisJCX0KKwl9IHdoaWxlIChyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEpOworfQorCiB2 b2lkIHhlX3Jhc19jb3VudGVyX3RocmVzaG9sZF9jcm9zc2VkKHN0cnVjdCB4ZV9kZXZpY2UgKnhl LAogCQkJCSAgICAgIHN0cnVjdCB4ZV9zeXNjdHJsX2V2ZW50X3Jlc3BvbnNlICpyZXNwb25zZSkK IHsKQEAgLTkxLDMgKzQwMSwxODYgQEAgdm9pZCB4ZV9yYXNfY291bnRlcl90aHJlc2hvbGRfY3Jv c3NlZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwKIAkJCWNvbXBfdG9fc3RyKGNvbXBvbmVudCksIHNl dl90b19zdHIoc2V2ZXJpdHkpKTsKIAl9CiB9CisKKy8qKgorICogeGVfcmFzX3Byb2Nlc3NfZXJy b3JzKCkgLSBQcm9jZXNzIGFuZCBjb250YWluIGhhcmR3YXJlIGVycm9ycworICogQHhlOiB4ZSBk ZXZpY2UgaW5zdGFuY2UKKyAqCisgKiBHZXQgZXJyb3IgZGV0YWlscyBmcm9tIHN5c3RlbSBjb250 cm9sbGVyIGFuZCByZXR1cm4gcmVjb3ZlcnkKKyAqIG1ldGhvZC4gQ2FsbGVkIG9ubHkgZnJvbSBQ Q0kgZXJyb3IgaGFuZGxpbmcuCisgKgorICogUmV0dXJuczogcmVjb3ZlcnkgYWN0aW9uIHRvIGJl IHRha2VuCisgKi8KK2VudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB4ZV9yYXNfcHJvY2Vzc19l cnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpCit7CisJc3RydWN0IHhlX3N5c2N0cmxfbWFpbGJv eF9jb21tYW5kIGNvbW1hbmQgPSB7MH07CisJc3RydWN0IHhlX3Jhc19nZXRfc29jX2Vycm9yIHJl c3BvbnNlOworCWVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiBmaW5hbF9hY3Rpb247CisJdTMy IGNvdW50ID0gWEVfU1lTQ1RSTF9GTE9PRDsKKwlzaXplX3QgcmxlbjsKKwlpbnQgcmV0OworCisJ aWYgKCF4ZS0+aW5mby5oYXNfc3lzY3RybCkKKwkJcmV0dXJuIFhFX1JBU19SRUNPVkVSWV9BQ1RJ T05fUkVTRVQ7CisKKwkvKiBEZWZhdWx0IGFjdGlvbiAqLworCWZpbmFsX2FjdGlvbiA9IFhFX1JB U19SRUNPVkVSWV9BQ1RJT05fUkVDT1ZFUkVEOworCisJcHJlcGFyZV9yYXNfY29tbWFuZCgmY29t bWFuZCwgWEVfU1lTQ1RSTF9DTURfR0VUX1NPQ19FUlJPUiwgTlVMTCwgMCwKKwkJCSAgICAmcmVz cG9uc2UsIHNpemVvZihyZXNwb25zZSkpOworCisJZG8geworCQltZW1zZXQoJnJlc3BvbnNlLCAw LCBzaXplb2YocmVzcG9uc2UpKTsKKworCQlyZXQgPSB4ZV9zeXNjdHJsX3NlbmRfY29tbWFuZCgm eGUtPnNjLCAmY29tbWFuZCwgJnJsZW4pOworCQlpZiAocmV0KSB7CisJCQl4ZV9lcnIoeGUsICJz eXNjdHJsOiBmYWlsZWQgdG8gZ2V0IHNvYyBlcnJvciAlZFxuIiwgcmV0KTsKKwkJCWdvdG8gZXJy OworCQl9CisKKwkJaWYgKHJsZW4gIT0gc2l6ZW9mKHJlc3BvbnNlKSkgeworCQkJeGVfZXJyKHhl LCAic3lzY3RybDogdW5leHBlY3RlZCBnZXQgc29jIGVycm9yIHJlc3BvbnNlIGxlbmd0aCAlenUg KGV4cGVjdGVkICV6dSlcbiIsCisJCQkgICAgICAgcmxlbiwgc2l6ZW9mKHJlc3BvbnNlKSk7CisJ CQlnb3RvIGVycjsKKwkJfQorCisJCS8qIFJlcG9ydCBpZiBudW1iZXIgb2YgZXJyb3JzIGV4Y2Vl ZHMgdGhlIG1heGltdW0gZXJyb3JzIHN1cHBvcnRlZCAqLworCQlpZiAocmVzcG9uc2UubnVtX2Vy cm9ycyA+IFhFX1JBU19OVU1fRVJST1JfQVJSKQorCQkJeGVfZXJyKHhlLCAic3lzY3RybDogbnVt YmVyIG9mIGVycm9ycyByZWNlaXZlZCAlZCBvdXQgb2YgYm91bmQgKCVkKVxuIiwKKwkJCSAgICAg ICByZXNwb25zZS5udW1fZXJyb3JzLCBYRV9SQVNfTlVNX0VSUk9SX0FSUik7CisKKwkJZm9yIChp bnQgaSA9IDA7IGkgPCByZXNwb25zZS5udW1fZXJyb3JzICYmIGkgPCBYRV9SQVNfTlVNX0VSUk9S X0FSUjsgaSsrKSB7CisJCQlzdHJ1Y3QgeGVfcmFzX2Vycm9yX2FycmF5ICphcnIgPSAmcmVzcG9u c2UuZXJyb3JfYXJyW2ldOworCQkJZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIGFjdGlvbjsK KwkJCXN0cnVjdCB4ZV9yYXNfZXJyb3JfY2xhc3MgZXJyb3JfY2xhc3M7CisJCQl1OCBjb21wb25l bnQsIHNldmVyaXR5OworCisJCQllcnJvcl9jbGFzcyA9IGFyci0+ZXJyb3JfY2xhc3M7CisJCQlj b21wb25lbnQgPSBlcnJvcl9jbGFzcy5jb21tb24uY29tcG9uZW50OworCQkJc2V2ZXJpdHkgPSBl cnJvcl9jbGFzcy5jb21tb24uc2V2ZXJpdHk7CisKKwkJCXhlX2Vycih4ZSwgIltSQVNdOiAlcyAl cyBkZXRlY3RlZFxuIiwgY29tcF90b19zdHIoY29tcG9uZW50KSwKKwkJCSAgICAgICBzZXZfdG9f c3RyKHNldmVyaXR5KSk7CisKKwkJCXN3aXRjaCAoY29tcG9uZW50KSB7CisJCQljYXNlIFhFX1JB U19DT01QX0NPUkVfQ09NUFVURToKKwkJCQlhY3Rpb24gPSBoYW5kbGVfY29yZV9jb21wdXRlX2Vy cm9ycyh4ZSwgYXJyKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgWEVfUkFTX0NPTVBfU09DX0lOVEVS TkFMOgorCQkJCWFjdGlvbiA9IGhhbmRsZV9zb2NfaW50ZXJuYWxfZXJyb3JzKHhlLCBhcnIpOwor CQkJCWJyZWFrOworCQkJY2FzZSBYRV9SQVNfQ09NUF9ERVZJQ0VfTUVNT1JZOgorCQkJCWFjdGlv biA9IGhhbmRsZV9kZXZpY2VfbWVtb3J5X2Vycm9ycyh4ZSwgYXJyKTsKKwkJCQlicmVhazsKKwkJ CWRlZmF1bHQ6CisJCQkJLyogRm9yIGFueSBvdGhlciBjb21wb25lbnQsIHJlc2V0ICovCisJCQkJ YWN0aW9uID0gWEVfUkFTX1JFQ09WRVJZX0FDVElPTl9SRVNFVDsKKwkJCQlicmVhazsKKwkJCX0K KworCQkJLyogUHJvY2VzcyBhbmQgbG9nIGFsbCBlcnJvcnMgYW5kIHRoZW4gdHJpZ2dlciBoaWdo ZXN0IHJlY292ZXJ5IGFjdGlvbiAqLworCQkJaWYgKGFjdGlvbiA+IGZpbmFsX2FjdGlvbikKKwkJ CQlmaW5hbF9hY3Rpb24gPSBhY3Rpb247CisJCX0KKworCQkvKiBUcmVhdCBmbG9vZGluZyBhcyBh biBzeXN0ZW0gY29udHJvbGxlciBlcnJvciAqLworCQlpZiAoIS0tY291bnQpIHsKKwkJCXhlX2Vy cih4ZSwgIltSQVNdOiBzeXNjdHJsOiBnZXQgc29jIGVycm9yIHJlc3BvbnNlIGZsb29kaW5nXG4i KTsKKwkJCXJldHVybiBYRV9SQVNfUkVDT1ZFUllfQUNUSU9OX1JFU0VUOworCQl9CisKKwl9IHdo aWxlIChyZXNwb25zZS5hZGRpdGlvbmFsX2Vycm9ycyk7CisKKwlyZXR1cm4gZmluYWxfYWN0aW9u OworCitlcnI6CisJcmV0dXJuIFhFX1JBU19SRUNPVkVSWV9BQ1RJT05fUkVTRVQ7Cit9CisKKyNp ZmRlZiBDT05GSUdfUENJRUFFUgorc3RhdGljIHZvaWQgYWVyX3VubWFza19hbmRfZG93bmdyYWRl X2ludGVybmFsX2Vycm9yKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKQoreworCXN0cnVjdCBwY2lfZGV2 ICpwZGV2ID0gdG9fcGNpX2Rldih4ZS0+ZHJtLmRldik7CisJc3RydWN0IHBjaV9kZXYgKnZzcCwg KnVzcDsKKwl1MzIgYWVyX3VuY29ycl9tYXNrLCBhZXJfdW5jb3JyX3NldiwgYWVyX3VuY29ycl9z dGF0dXM7CisJdTE2IGFlcl9jYXA7CisKKwkvKgorCSAqIERldmljZSBIaWVyYXJjaHk6CisJICoK KwkgKiBVcHN0cmVhbSBTd2l0Y2ggUG9ydCAoVVNQKS0tPiBWaXJ0dWFsIFN3aXRjaCBQb3J0IChW U1ApLS0+IFNHdW5pdCAoR1BVIGVuZHBvaW50KQorCSAqLworCXZzcCA9IHBjaV91cHN0cmVhbV9i cmlkZ2UocGRldik7CisJaWYgKCF2c3ApCisJCXJldHVybjsKKworCXVzcCA9IHBjaV91cHN0cmVh bV9icmlkZ2UodnNwKTsKKwlpZiAoIXVzcCkKKwkJcmV0dXJuOworCisJYWVyX2NhcCA9IHVzcC0+ YWVyX2NhcDsKKworCWlmICghYWVyX2NhcCkgeworCQlkZXZfaW5mbygmdXNwLT5kZXYsICJVU1Ag ZG9lc24ndCBzdXBwb3J0IEFFUiBjYXBhYmlsaXR5XG4iKTsKKwkJcmV0dXJuOworCX0KKworCS8q CisJICogQ2xlYXIgYW55IHN0YWxlIFVuY29ycmVjdGFibGUgSW50ZXJuYWwgRXJyb3IgU3RhdHVz IGV2ZW50IGluIFVuY29ycmVjdGFibGUgRXJyb3IKKwkgKiBTdGF0dXMgUmVnaXN0ZXIuCisJICov CisJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHVzcCwgYWVyX2NhcCArIFBDSV9FUlJfVU5DT1JfU1RB VFVTLCAmYWVyX3VuY29ycl9zdGF0dXMpOworCWlmIChhZXJfdW5jb3JyX3N0YXR1cyAmIFBDSV9F UlJfVU5DX0lOVE4pCisJCXBjaV93cml0ZV9jb25maWdfZHdvcmQodXNwLCBhZXJfY2FwICsgUENJ X0VSUl9VTkNPUl9TVEFUVVMsIFBDSV9FUlJfVU5DX0lOVE4pOworCisJLyoKKwkgKiBBbGwgZXJy b3JzIGFyZSBzdGVlcmVkIHRvIFVTUCB3aGljaCBpcyBhIFBDSWUgQUVSIENvbXBsaWFudCBkZXZp Y2UuCisJICogRG93bmdyYWRlIGFsbCB0aGUgZXJyb3JzIHRvIG5vbi1mYXRhbCB0byBwcmV2ZW50 IFBDSWUgYnVzIGRyaXZlcgorCSAqIGZyb20gdHJpZ2dlcmluZyBhIFNlY29uZGFyeSBCdXMgUmVz ZXQgKFNCUikuIFRoaXMgYWxsb3dzIGVycm9yCisJICogZGV0ZWN0aW9uLCBjb250YWlubWVudCBh bmQgcmVjb3ZlcnkgaW4gdGhlIGRyaXZlci4KKwkgKgorCSAqIFRoZSBVbmNvcnJlY3RhYmxlIEVy cm9yIFNldmVyaXR5IFJlZ2lzdGVyIGhhcyB0aGUgJ1VuY29ycmVjdGFibGUKKwkgKiBJbnRlcm5h bCBFcnJvciBTZXZlcml0eScgc2V0IHRvIGZhdGFsIGJ5IGRlZmF1bHQuIFNldCB0aGlzIHRvCisJ ICogbm9uLWZhdGFsIGFuZCB1bm1hc2sgdGhlIGVycm9yLgorCSAqLworCisJLyogSW5pdGlhbGl6 ZSBVbmNvcnJlY3RhYmxlIEVycm9yIFNldmVyaXR5IFJlZ2lzdGVyICovCisJcGNpX3JlYWRfY29u ZmlnX2R3b3JkKHVzcCwgYWVyX2NhcCArIFBDSV9FUlJfVU5DT1JfU0VWRVIsICZhZXJfdW5jb3Jy X3Nldik7CisJYWVyX3VuY29ycl9zZXYgJj0gflBDSV9FUlJfVU5DX0lOVE47CisJcGNpX3dyaXRl X2NvbmZpZ19kd29yZCh1c3AsIGFlcl9jYXAgKyBQQ0lfRVJSX1VOQ09SX1NFVkVSLCBhZXJfdW5j b3JyX3Nldik7CisKKwkvKiBJbml0aWFsaXplIFVuY29ycmVjdGFibGUgRXJyb3IgTWFzayBSZWdp c3RlciAqLworCXBjaV9yZWFkX2NvbmZpZ19kd29yZCh1c3AsIGFlcl9jYXAgKyBQQ0lfRVJSX1VO Q09SX01BU0ssICZhZXJfdW5jb3JyX21hc2spOworCWFlcl91bmNvcnJfbWFzayAmPSB+UENJX0VS Ul9VTkNfSU5UTjsKKwlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKHVzcCwgYWVyX2NhcCArIFBDSV9F UlJfVU5DT1JfTUFTSywgYWVyX3VuY29ycl9tYXNrKTsKKworCXBjaV9zYXZlX3N0YXRlKHVzcCk7 CisJZGV2X2RiZygmdXNwLT5kZXYsICJVbmNvcnJlY3RhYmxlIEludGVybmFsIEVycm9ycyBkb3du Z3JhZGVkIGFuZCB1bm1hc2tlZFxuIik7Cit9CisjZW5kaWYKKworLyoqCisgKiB4ZV9yYXNfaW5p dCAtIEluaXRpYWxpemUgWGUgUkFTCisgKiBAeGU6IHhlIGRldmljZSBpbnN0YW5jZQorICoKKyAq IEluaXRpYWxpemUgWGUgUkFTCisgKi8KK3ZvaWQgeGVfcmFzX2luaXQoc3RydWN0IHhlX2Rldmlj ZSAqeGUpCit7CisJaWYgKCF4ZS0+aW5mby5oYXNfc3lzY3RybCB8fCBJU19TUklPVl9WRih4ZSkp CisJCXJldHVybjsKKworI2lmZGVmIENPTkZJR19QQ0lFQUVSCisJYWVyX3VubWFza19hbmRfZG93 bmdyYWRlX2ludGVybmFsX2Vycm9yKHhlKTsKKyNlbmRpZgorCisJZ2V0X3F1ZXVlZF9wYWdlcyh4 ZSk7CisJZ2V0X29mZmxpbmVkX2xpc3QoeGUpOworCisJLyoKKwkgKiBPbiBpbml0LCBwcm9jZXNz IGFuZCBsb2cgYW55IGVycm9ycyBkZXRlY3RlZCBieSBmaXJtd2FyZSBiZWZvcmUgZHJpdmVyIGxv YWQuCisJICogQ3JpdGljYWwgZXJyb3JzIHN1Y2ggYXMgUHVuaXQsIENTQyBhcmUgcmVwb3J0ZWQg dGhyb3VnaCBQQ29kZSBpbml0IGZhaWx1cmUsCisJICogY2F1c2luZyB0aGUgZHJpdmVyIHRvIGVu dGVyIHN1cnZpdmFiaWxpdHkgbW9kZS4KKwkgKi8KKwl4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoeGUp OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jhcy5oIGIvZHJpdmVycy9n cHUvZHJtL3hlL3hlX3Jhcy5oCmluZGV4IGVhOTA1OTNiNjJkYy4uY2RhYWQzMTE0ZGFlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L3hlL3hlX3Jhcy5oCkBAIC02LDEwICs2LDEzIEBACiAjaWZuZGVmIF9YRV9SQVNfSF8KICNkZWZp bmUgX1hFX1JBU19IXwogCisjaW5jbHVkZSAieGVfcmFzX3R5cGVzLmgiCisKIHN0cnVjdCB4ZV9k ZXZpY2U7CiBzdHJ1Y3QgeGVfc3lzY3RybF9ldmVudF9yZXNwb25zZTsKIAogdm9pZCB4ZV9yYXNf Y291bnRlcl90aHJlc2hvbGRfY3Jvc3NlZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwKIAkJCQkgICAg ICBzdHJ1Y3QgeGVfc3lzY3RybF9ldmVudF9yZXNwb25zZSAqcmVzcG9uc2UpOwotCit2b2lkIHhl X3Jhc19pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTsKK2VudW0geGVfcmFzX3JlY292ZXJ5X2Fj dGlvbiB4ZV9yYXNfcHJvY2Vzc19lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUpOwogI2VuZGlm CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzX3R5cGVzLmggYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfcmFzX3R5cGVzLmgKaW5kZXggNGU2M2M2N2Y4MDZhLi4zZWM2NGI0ZjVh MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXNfdHlwZXMuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0veGUveGVfcmFzX3R5cGVzLmgKQEAgLTgsNyArOCw2MyBAQAogCiAjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KIAorI2RlZmluZSBYRV9SQVNfTlVNX0VSUk9SX0FSUgkJCTMK ICNkZWZpbmUgWEVfUkFTX05VTV9DT1VOVEVSUwkJCTE2CisjZGVmaW5lIFhFX1JBU19TT0NfSUVI X1BVTklUCQkJQklUKDEpCisjZGVmaW5lIFhFX1JBU19NRU1PUllfRUNDCQkJQklUKDEpCisjZGVm aW5lIFhFX1JBU19OVU1fUEFHRVMJCQkyNQorCisvKioKKyAqIGVudW0geGVfcmFzX3JlY292ZXJ5 X2FjdGlvbiAtIFJBUyByZWNvdmVyeSBhY3Rpb25zCisgKgorICogQFhFX1JBU19SRUNPVkVSWV9B Q1RJT05fUkVDT1ZFUkVEOiBFcnJvciByZWNvdmVyZWQKKyAqIEBYRV9SQVNfUkVDT1ZFUllfQUNU SU9OX1JFU0VUOiBSZXF1aXJlcyByZXNldAorICogQFhFX1JBU19SRUNPVkVSWV9BQ1RJT05fRElT Q09OTkVDVDogUmVxdWlyZXMgZGlzY29ubmVjdAorICogQFhFX1JBU19SRUNPVkVSWV9BQ1RJT05f TUFYOiBNYXggYWN0aW9uIHZhbHVlCisgKgorICogVGhpcyBlbnVtIGRlZmluZXMgdGhlIHBvc3Np YmxlIHJlY292ZXJ5IGFjdGlvbnMgdGhhdCBjYW4gYmUgdGFrZW4gaW4gcmVzcG9uc2UKKyAqIHRv IFJBUyBlcnJvcnMuCisgKi8KK2VudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiB7CisJWEVfUkFT X1JFQ09WRVJZX0FDVElPTl9SRUNPVkVSRUQgPSAwLAorCVhFX1JBU19SRUNPVkVSWV9BQ1RJT05f UkVTRVQsCisJWEVfUkFTX1JFQ09WRVJZX0FDVElPTl9ESVNDT05ORUNULAorCVhFX1JBU19SRUNP VkVSWV9BQ1RJT05fTUFYCit9OworCisvKioKKyAqIGVudW0geGVfcmFzX3BhZ2VfYWN0aW9uIC0g UGFnZSBvZmZsaW5lIGFjdGlvbnMgZm9yIHBhZ2Ugb2ZmbGluZSByZXF1ZXN0CisgKgorICogQFhF X1JBU19QQUdFX0FDVElPTl9PRkZMSU5FOiBJbnN0cnVjdCBmaXJtd2FyZSB0byByZW1vdmUgcGFn ZSBmcm9tIHF1ZXVlCisgKiBAWEVfUkFTX1BBR0VfQUNUSU9OX0RFQ0xJTkU6IEluc3RydWN0IGZp cm13YXJlIHRvIG1hcmsgcGFnZSBhcyBub3Qgb2ZmbGluZQorICogQFhFX1JBU19QQUdFX0FDVElP Tl9NQVg6IE1heCB2YWx1ZSBmb3IgdmFsaWRhdGlvbgorICovCitlbnVtIHhlX3Jhc19wYWdlX2Fj dGlvbiB7CisJWEVfUkFTX1BBR0VfQUNUSU9OX09GRkxJTkUsCisJWEVfUkFTX1BBR0VfQUNUSU9O X0RFQ0xJTkUsCisJWEVfUkFTX1BBR0VfQUNUSU9OX01BWAorfTsKKworLyoqCisgKiBlbnVtIHhl X3Jhc19yZXNwb25zZV9zdGF0dXMgLSBSQVMgcmVzcG9uc2Ugc3RhdHVzIGNvZGVzCisgKgorICog QFhFX1JBU19TVEFUVVNfU1VDQ0VTUzogT3BlcmF0aW9uIHN1Y2Nlc3NmdWwKKyAqIEBYRV9SQVNf U1RBVFVTX0lOVkFMSURfUEFSQU06IEludmFsaWQgcGFyYW1ldGVyCisgKiBAWEVfUkFTX1NUQVRV U19PUF9OT1RfU1VQUE9SVEVEOiBPcGVyYXRpb24gbm90IHN1cHBvcnRlZAorICogQFhFX1JBU19T VEFUVVNfVElNRU9VVDogT3BlcmF0aW9uIHRpbWVkIG91dAorICogQFhFX1JBU19TVEFUVVNfSEFS RFdBUkVfRkFJTFVSRTogSGFyZHdhcmUgZmFpbHVyZQorICogQFhFX1JBU19TVEFUVVNfSU5TVUZG SUNJRU5UX1JFU09VUkNFUzogSW5zdWZmaWNpZW50IHJlc291cmNlcworICogQFhFX1JBU19TVEFU VVNfVU5LTk9XTl9FUlJPUjogVW5rbm93biBlcnJvcgorICovCitlbnVtIHhlX3Jhc19yZXNwb25z ZV9zdGF0dXMgeworCVhFX1JBU19TVEFUVVNfU1VDQ0VTUyA9IDAsCisJWEVfUkFTX1NUQVRVU19J TlZBTElEX1BBUkFNLAorCVhFX1JBU19TVEFUVVNfT1BfTk9UX1NVUFBPUlRFRCwKKwlYRV9SQVNf U1RBVFVTX1RJTUVPVVQsCisJWEVfUkFTX1NUQVRVU19IQVJEV0FSRV9GQUlMVVJFLAorCVhFX1JB U19TVEFUVVNfSU5TVUZGSUNJRU5UX1JFU09VUkNFUywKKwlYRV9SQVNfU1RBVFVTX1VOS05PV05f RVJST1IKK307CiAKIC8qKgogICogc3RydWN0IHhlX3Jhc19lcnJvcl9jb21tb24gLSBFcnJvciBm aWVsZHMgdGhhdCBhcmUgY29tbW9uIGFjcm9zcyBhbGwgcHJvZHVjdHMKQEAgLTcwLDQgKzEyNiwx NjMgQEAgc3RydWN0IHhlX3Jhc190aHJlc2hvbGRfY3Jvc3NlZCB7CiAJc3RydWN0IHhlX3Jhc19l cnJvcl9jbGFzcyBjb3VudGVyc1tYRV9SQVNfTlVNX0NPVU5URVJTXTsKIH0gX19wYWNrZWQ7CiAK Ky8qKgorICogc3RydWN0IHhlX3Jhc19lcnJvcl9hcnJheSAtIERldGFpbHMgb2YgdGhlIGVycm9y IHR5cGVzCisgKi8KK3N0cnVjdCB4ZV9yYXNfZXJyb3JfYXJyYXkgeworCS8qKiBAY291bnRlcl92 YWx1ZTogQ291bnRlciB2YWx1ZSBvZiB0aGUgcmV0dXJuZWQgZXJyb3IgKi8KKwl1MzIgY291bnRl cl92YWx1ZTsKKwkvKiogQGVycm9yX2NsYXNzOiBFcnJvciBjbGFzcyAqLworCXN0cnVjdCB4ZV9y YXNfZXJyb3JfY2xhc3MgZXJyb3JfY2xhc3M7CisJLyoqIEB0aW1lc3RhbXA6IFRpbWVzdGFtcCAq LworCXU2NCB0aW1lc3RhbXA7CisJLyoqIEBlcnJvcl9kZXRhaWxzOiBFcnJvciBkZXRhaWxzIHNw ZWNpZmljIHRvIHRoZSBjbGFzcyAqLworCXUzMiBlcnJvcl9kZXRhaWxzW1hFX1JBU19OVU1fQ09V TlRFUlNdOworfSBfX3BhY2tlZDsKKworLyoqCisgKiBzdHJ1Y3QgeGVfcmFzX2dldF9zb2NfZXJy b3IgLSBSZXNwb25zZSBmcm9tIGdldCBzb2MgZXJyb3IgY29tbWFuZAorICovCitzdHJ1Y3QgeGVf cmFzX2dldF9zb2NfZXJyb3IgeworCS8qKiBAbnVtX2Vycm9yczogTnVtYmVyIG9mIGVycm9ycyBy ZXBvcnRlZCBpbiB0aGlzIHJlc3BvbnNlICovCisJdTggbnVtX2Vycm9yczsKKwkvKiogQGFkZGl0 aW9uYWxfZXJyb3JzOiBJbmRpY2F0ZXMgaWYgdGhlIGVycm9ycyBhcmUgcGVuZGluZyAqLworCXU4 IGFkZGl0aW9uYWxfZXJyb3JzOworCS8qKiBAZXJyb3JfYXJyOiBBcnJheSBvZiB1cCB0byAzIGVy cm9ycyAqLworCXN0cnVjdCB4ZV9yYXNfZXJyb3JfYXJyYXkgZXJyb3JfYXJyW1hFX1JBU19OVU1f RVJST1JfQVJSXTsKK30gX19wYWNrZWQ7CisKKy8qKgorICogc3RydWN0IHhlX3Jhc19jb21wdXRl X2Vycm9yIC0gRXJyb3IgZGV0YWlscyBvZiBDb3JlIENvbXB1dGUgZXJyb3IKKyAqLworc3RydWN0 IHhlX3Jhc19jb21wdXRlX2Vycm9yIHsKKwkvKiogQGVycm9yX2xvZ19oZWFkZXI6IEVycm9yIFNv dXJjZSBhbmQgdHlwZSAqLworCXUzMiBlcnJvcl9sb2dfaGVhZGVyOworCS8qKiBAcmVzZXJ2ZWQ6 IFJlc2VydmVkICovCisJdTMyIHJlc2VydmVkWzE1XTsKK30gX19wYWNrZWQ7CisKKy8qKgorICog c3RydWN0IHhlX3Jhc19zb2NfZXJyb3Jfc291cmNlIC0gU291cmNlIG9mIFNvQyBlcnJvcgorICov CitzdHJ1Y3QgeGVfcmFzX3NvY19lcnJvcl9zb3VyY2UgeworCS8qKiBAY3NjOiBDU0MgKi8KKwl1 MzIgY3NjOjE7CisJLyoqIEBpZWg6IElFSCAoSW50ZWdyYXRlZCBFcnJvciBIYW5kbGVyKSAqLwor CXUzMiBpZWg6MTsKKwkvKiogQHJlc2VydmVkOiBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLwor CXUzMiByZXNlcnZlZDozMDsKK30gX19wYWNrZWQ7CisKKy8qKgorICogc3RydWN0IHhlX3Jhc19z b2NfZXJyb3IgLSBFcnJvciBkZXRhaWxzIG9mIFNvQyBpbnRlcm5hbCBlcnJvcgorICovCitzdHJ1 Y3QgeGVfcmFzX3NvY19lcnJvciB7CisJLyoqIEBlcnJvcl9zb3VyY2U6IEVycm9yIHNvdXJjZSAq LworCXN0cnVjdCB4ZV9yYXNfc29jX2Vycm9yX3NvdXJjZSBlcnJvcl9zb3VyY2U7CisJLyoqIEBh ZGRpdGlvbmFsX2RldGFpbHM6IEFkZGl0aW9uYWwgZGV0YWlscyAqLworCXUzMiBhZGRpdGlvbmFs X2RldGFpbHNbMTVdOworfSBfX3BhY2tlZDsKKworLyoqCisgKiBzdHJ1Y3QgeGVfcmFzX2NzY19l cnJvciAtIENTQyBlcnJvciBkZXRhaWxzCisgKi8KK3N0cnVjdCB4ZV9yYXNfY3NjX2Vycm9yIHsK KwkvKiogQGhlY191bmNvcnJfZXJyX3N0YXR1czogQ1NDIGhhcmR3YXJlIGVycm9yIHN0YXR1cyAq LworCXUzMiBoZWNfdW5jb3JyX2Vycl9zdGF0dXM7CisJLyoqIEBoZWNfdW5jb3JyX2Z3X2Vycl9k dzA6IENTQyBmaXJtd2FyZSBlcnJvciAqLworCXUzMiBoZWNfdW5jb3JyX2Z3X2Vycl9kdzA7Cit9 IF9fcGFja2VkOworCisvKioKKyAqIHN0cnVjdCB4ZV9yYXNfaWVoX2Vycm9yIC0gU29DIElFSCAo SW50ZWdyYXRlZCBFcnJvciBIYW5kbGVyKSBlcnJvciBkZXRhaWxzCisgKi8KK3N0cnVjdCB4ZV9y YXNfaWVoX2Vycm9yIHsKKwkvKiogQGllaF9pbnN0YW5jZTogSUVIIGluc3RhbmNlICovCisJdTMy IGllaF9pbnN0YW5jZToyOworCS8qKiBAcmVzZXJ2ZWQ6IFJlc2VydmVkIGZvciBmdXR1cmUgdXNl ICovCisJdTMyIHJlc2VydmVkOjMwOworCS8qKiBAZ2xvYmFsX2Vycm9yX3N0YXR1czogR2xvYmFs IGVycm9yIHN0YXR1cyAqLworCXUzMiBnbG9iYWxfZXJyb3Jfc3RhdHVzOworCS8qKiBAbG9jYWxf ZXJyb3Jfc3RhdHVzOiBMb2NhbCBlcnJvciBzdGF0dXMgKi8KKwl1MzIgbG9jYWxfZXJyb3Jfc3Rh dHVzOworCS8qKiBAZ2Vycl9tYXNrOiBHbG9iYWwgZXJyb3IgbWFzayAqLworCXUzMiBnZXJyX21h c2s7CisJLyoqIEBhZGRpdGlvbmFsX2luZm86IEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gKi8KKwl1 MzIgYWRkaXRpb25hbF9pbmZvWzEwXTsKK30gX19wYWNrZWQ7CisKKy8qKgorICogc3RydWN0IHhl X3Jhc19tZW1vcnlfZXJyb3IgLSBEZXZpY2UgbWVtb3J5IGVycm9yIGRldGFpbHMKKyAqLworc3Ry dWN0IHhlX3Jhc19tZW1vcnlfZXJyb3IgeworCS8qKiBAY2F0ZWdvcnk6IERldmljZSBtZW1vcnkg ZXJyb3IgY2F0ZWdvcnkgKi8KKwl1OCBjYXRlZ29yeTsKKwkvKiogQHJlc2VydmVkOiBSZXNlcnZl ZCBmb3IgZnV0dXJlIHVzZSAqLworCXU4IHJlc2VydmVkWzddOworCS8qKiBAaGFyZHdhcmVfYWRk cmVzczogSGFyZHdhcmUgcGh5c2ljYWwgYWRkcmVzcyBkZXRhaWxzICovCisJdTY0IGhhcmR3YXJl X2FkZHJlc3M7CisJLyoqIEBzd19hZGRyZXNzOiBTb2Z0d2FyZSBhZGRyZXNzIHdoZXJlIGVycm9y IG9jY3VycmVkICovCisJdTY0IHN3X2FkZHJlc3M7CisJLyoqIEByZXNlcnZlZDI6IFJlc2VydmVk IGZvciBmdXR1cmUgdXNlICovCisJdTMyIHJlc2VydmVkMlsxMF07Cit9IF9fcGFja2VkOworCisv KioKKyAqIHN0cnVjdCB4ZV9yYXNfcGFnZV9vZmZsaW5lX2xpc3QgLSBSZXNwb25zZSBmcm9tIGdl dCBvZmZsaW5lIGxpc3QgY29tbWFuZAorICovCitzdHJ1Y3QgeGVfcmFzX3BhZ2Vfb2ZmbGluZV9s aXN0IHsKKwkvKiogQG1heF9lbnRyaWVzOiBUb3RhbCBubyBvZiBwYWdlcyB0aGF0IGNhbiBiZSBz dG9yZWQgaW4gZmxhc2ggKi8KKwl1MzIgbWF4X2VudHJpZXM7CisJLyoqIEB0b3RhbF9wYWdlczog VG90YWwgbnVtYmVyIG9mIHBlcm1hbmVudGx5IG9mZmxpbmVkIHBhZ2VzICovCisJdTMyIHRvdGFs X3BhZ2VzOworCS8qKiBAcGFnZXNfcmV0dXJuZWQ6IE51bWJlciBvZiBwYWdlcyByZXR1cm5lZCBp biB0aGlzIHJlc3BvbnNlICovCisJdTMyIHBhZ2VzX3JldHVybmVkOworCS8qKiBAcGFnZV9hZGRy ZXNzZXM6IEFycmF5IG9mIHBlcm1hbmVudGx5IG9mZmxpbmVkIHBhZ2UgYWRkcmVzc2VzICg0S0Ig YWxpZ25lZCkgKi8KKwl1NjQgcGFnZV9hZGRyZXNzZXNbWEVfUkFTX05VTV9QQUdFU107CisJLyoq IEBhZGRpdGlvbmFsX2RhdGE6IEluZGljYXRlcyBpZiBtb3JlIGRhdGEgaXMgYXZhaWxhYmxlICov CisJdTggYWRkaXRpb25hbF9kYXRhOworCS8qKiBAcmVzZXJ2ZWQ6IFJlc2VydmVkIGZvciBmdXR1 cmUgdXNlICovCisJdTggcmVzZXJ2ZWRbM107Cit9IF9fcGFja2VkOworCisvKioKKyAqIHN0cnVj dCB4ZV9yYXNfcGFnZV9vZmZsaW5lX3F1ZXVlIC0gUmVzcG9uc2UgZnJvbSBnZXQgb2ZmbGluZSBx dWV1ZSBjb21tYW5kCisgKi8KK3N0cnVjdCB4ZV9yYXNfcGFnZV9vZmZsaW5lX3F1ZXVlIHsKKwkv KiogQHRvdGFsX3BhZ2VzOiBUb3RhbCBudW1iZXIgb2YgcXVldWVkIHBhZ2VzICovCisJdTMyIHRv dGFsX3BhZ2VzOworCS8qKiBAcGFnZXNfcmV0dXJuZWQ6IE51bWJlciBvZiBwYWdlcyByZXR1cm5l ZCBpbiB0aGlzIHJlc3BvbnNlICovCisJdTMyIHBhZ2VzX3JldHVybmVkOworCS8qKiBAcGFnZV9h ZGRyZXNzZXM6IEFycmF5IG9mIHBhZ2UgYWRkcmVzc2VzICg0S0IgYWxpZ25lZCkgKi8KKwl1NjQg cGFnZV9hZGRyZXNzZXNbWEVfUkFTX05VTV9QQUdFU107CisJLyoqIEBhZGRpdGlvbmFsX2RhdGE6 IEluZGljYXRlcyBpZiBtb3JlIGRhdGEgaXMgYXZhaWxhYmxlICovCisJdTggYWRkaXRpb25hbF9k YXRhOworCS8qKiBAcmVzZXJ2ZWQ6IFJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisJdTggcmVz ZXJ2ZWRbM107Cit9IF9fcGFja2VkOworCisvKioKKyAqIHN0cnVjdCB4ZV9yYXNfcGFnZV9vZmZs aW5lX3JlcXVlc3QgLSBSZXF1ZXN0IGZvciBwYWdlIG9mZmxpbmUgY29tbWFuZAorICoKKyAqIFRo aXMgc3RydWN0dXJlIHByb3ZpZGVzIHRoZSByZXF1ZXN0IGZvcm1hdCB0byBvZmZsaW5lL2RlY2xp bmUgYSBwYWdlCisgKi8KK3N0cnVjdCB4ZV9yYXNfcGFnZV9vZmZsaW5lX3JlcXVlc3QgeworCS8q KiBAcGFnZV9hZGRyZXNzOiBQYWdlIGFkZHJlc3MgKDRLQiBhbGlnbmVkKSAqLworCXU2NCBwYWdl X2FkZHJlc3M7CisJLyoqIEBhY3Rpb246IEFjdGlvbiB0byBiZSBwZXJmb3JtZWQsIHNlZSAmZW51 bSB4ZV9yYXNfcGFnZV9hY3Rpb24gKi8KKwl1MzIgYWN0aW9uOworCS8qKiBAcmVzZXJ2ZWQ6IFJl c2VydmVkIGZvciBmdXR1cmUgdXNlICovCisJdTMyIHJlc2VydmVkOworfSBfX3BhY2tlZDsKKwor LyoqCisgKiBzdHJ1Y3QgeGVfcmFzX3BhZ2Vfb2ZmbGluZV9yZXNwb25zZSAtIFJlc3BvbnNlIGZy b20gcGFnZSBvZmZsaW5lIGNvbW1hbmQKKyAqLworc3RydWN0IHhlX3Jhc19wYWdlX29mZmxpbmVf cmVzcG9uc2UgeworCS8qKiBAc3RhdHVzOiBTdGF0dXMgb2YgdGhlIHBhZ2Ugb2ZmbGluZSByZXF1 ZXN0LCBzZWUgJmVudW0geGVfcmFzX3Jlc3BvbnNlX3N0YXR1cyAqLworCXUzMiBzdGF0dXM7CisJ LyoqIEByZXNlcnZlZDogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKwl1MzIgcmVzZXJ2ZWQ7 Cit9IF9fcGFja2VkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVf c3Vydml2YWJpbGl0eV9tb2RlLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3Vydml2YWJpbGl0 eV9tb2RlLmMKaW5kZXggNDI3YWZkMTQ0ZjNhLi40YzUwNjAyN2ZhOTQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS94ZS94ZV9zdXJ2aXZhYmlsaXR5X21vZGUuYworKysgYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfc3Vydml2YWJpbGl0eV9tb2RlLmMKQEAgLTU0LDcgKzU0LDYgQEAKICAqCSMg Y2F0IC9zeXMvYnVzL3BjaS9kZXZpY2VzLzxkZXZpY2U+L3N1cnZpdmFiaWxpdHlfbW9kZQogICoJ ICBCb290CiAgKgotICoKICAqIEFueSBhZGRpdGlvbmFsIGRlYnVnIGluZm9ybWF0aW9uIGlmIHBy ZXNlbnQgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoZSBkaXJlY3RvcnkKICAqIGBgc3Vydml2YWJp bGl0eV9pbmZvYGA6OgogICoKQEAgLTk4LDYgKzk3LDE1IEBACiAgKgkjIGNhdCAvc3lzL2J1cy9w Y2kvZGV2aWNlcy88ZGV2aWNlPi9zdXJ2aXZhYmlsaXR5X21vZGUKICAqCSAgUnVudGltZQogICoK KyAqIE9uIHNvbWUgQ1NDIGZpcm13YXJlIGVycm9ycywgUENPREUgc2V0cyBGRE8gbW9kZSBhbmQg dGhlIG9ubHkgcmVjb3ZlcnkgcG9zc2libGUgaXMgdGhyb3VnaAorICogZmlybXdhcmUgZmxhc2gg dXNpbmcgU1BJIGRyaXZlci4gVXNlcnNwYWNlIGNhbiBjaGVjayBpZiBGRE8gbW9kZSBpcyBzZXQg YnkgY2hlY2tpbmcgdGhlIGJlbG93CisgKiBzeXNmcyBlbnRyeS4KKyAqCisgKiAuLiBjb2RlLWJs b2NrOjogc2hlbGwKKyAqCisgKgkjIGNhdCAvc3lzL2J1cy9wY2kvZGV2aWNlcy88ZGV2aWNlPi9z dXJ2aXZhYmlsaXR5X2luZm8vZmRvX21vZGUKKyAqCSAgZW5hYmxlZAorICoKICAqIFdoZW4gc3Vj aCBlcnJvcnMgb2NjdXIsIHVzZXJzcGFjZSBpcyBub3RpZmllZCB3aXRoIHRoZSBkcm0gZGV2aWNl IHdlZGdlZCB1ZXZlbnQgYW5kIHJ1bnRpbWUKICAqIHN1cnZpdmFiaWxpdHkgbW9kZS4gVXNlciBj YW4gdGhlbiBpbml0aWF0ZSBhIGZpcm13YXJlIGZsYXNoIHVzaW5nIHVzZXJzcGFjZSB0b29scyBs aWtlIGZ3dXBkCiAgKiB0byByZXN0b3JlIGRldmljZSB0byBub3JtYWwgb3BlcmF0aW9uLgpAQCAt Mjk2LDcgKzMwNCw4IEBAIHN0YXRpYyBpbnQgY3JlYXRlX3N1cnZpdmFiaWxpdHlfc3lzZnMoc3Ry dWN0IHBjaV9kZXYgKnBkZXYpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmIChjaGVj a19ib290X2ZhaWx1cmUoeGUpKSB7CisJLyogU3Vydml2YWJpbGl0eSBpbmZvIGlzIG5vdCByZXF1 aXJlZCBpZiBlbmFibGVkIHZpYSBjb25maWdmcyAqLworCWlmICgheGVfY29uZmlnZnNfZ2V0X3N1 cnZpdmFiaWxpdHlfbW9kZShwZGV2KSkgewogCQlyZXQgPSBkZXZtX2RldmljZV9hZGRfZ3JvdXAo ZGV2LCAmc3Vydml2YWJpbGl0eV9pbmZvX2dyb3VwKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiBy ZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3lzY3RybF9ldmVudC5jIGIv ZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N5c2N0cmxfZXZlbnQuYwppbmRleCBiNGQxNzMyOWFmNmMu LmZhZjZiYTg5Y2U5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N5c2N0cmxf ZXZlbnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3lzY3RybF9ldmVudC5jCkBAIC0x Niw3ICsxNiw3IEBAIHN0YXRpYyB2b2lkIGdldF9wZW5kaW5nX2V2ZW50KHN0cnVjdCB4ZV9zeXNj dHJsICpzYywgc3RydWN0IHhlX3N5c2N0cmxfbWFpbGJveF9jCiB7CiAJc3RydWN0IHhlX3N5c2N0 cmxfZXZlbnRfcmVzcG9uc2UgKnJlc3BvbnNlID0gY29tbWFuZC0+ZGF0YV9vdXQ7CiAJc3RydWN0 IHhlX2RldmljZSAqeGUgPSBzY190b194ZShzYyk7Ci0JdTMyIGNvdW50ID0gWEVfU1lTQ1RSTF9F VkVOVF9GTE9PRDsKKwl1MzIgY291bnQgPSBYRV9TWVNDVFJMX0ZMT09EOwogCXNpemVfdCBsZW47 CiAJaW50IHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N5c2N0cmxf ZXZlbnRfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9zeXNjdHJsX2V2ZW50X3R5cGVz LmgKaW5kZXggYzE2YzY2YjlmYTdmLi5kMjM2ZTIyZmU5ZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9zeXNjdHJsX2V2ZW50X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L3hlL3hlX3N5c2N0cmxfZXZlbnRfdHlwZXMuaApAQCAtMTEsNyArMTEsNyBAQAogI2RlZmluZSBY RV9TWVNDVFJMX0VWRU5UX0RBVEFfTEVOCQk1OQogCiAvKiBNb2RpZnkgYXMgbmVlZGVkICovCi0j ZGVmaW5lIFhFX1NZU0NUUkxfRVZFTlRfRkxPT0QJCQkxNgorI2RlZmluZSBYRV9TWVNDVFJMX0ZM T09ECQkJMTYKIAogLyoqCiAgKiBlbnVtIHhlX3N5c2N0cmxfZXZlbnQgLSBFdmVudHMgcmVwb3J0 ZWQgYnkgU3lzdGVtIENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94 ZV9zeXNjdHJsX21haWxib3hfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9zeXNjdHJs X21haWxib3hfdHlwZXMuaAppbmRleCA4NGQ3YzY0N2U3NDMuLjEyZmZkMDExZWU4ZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N5c2N0cmxfbWFpbGJveF90eXBlcy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9zeXNjdHJsX21haWxib3hfdHlwZXMuaApAQCAtMjIsMTAg KzIyLDE4IEBAIGVudW0geGVfc3lzY3RybF9ncm91cCB7CiAvKioKICAqIGVudW0geGVfc3lzY3Ry bF9nZnNwX2NtZCAtIENvbW1hbmRzIHN1cHBvcnRlZCBieSBHRlNQIGdyb3VwCiAgKgorICogQFhF X1NZU0NUUkxfQ01EX0dFVF9TT0NfRVJST1I6IFJldHJpZXZlIGJhc2ljIGVycm9yIGluZm9ybWF0 aW9uCiAgKiBAWEVfU1lTQ1RSTF9DTURfR0VUX1BFTkRJTkdfRVZFTlQ6IFJldHJpZXZlIHBlbmRp bmcgZXZlbnQKKyAqIEBYRV9TWVNDVFJMX0NNRF9QQUdFX09GRkxJTkU6IEluc3RydWN0IGZpcm13 YXJlIHRvIG9mZmxpbmUvZGVjbGluZSBhIHBhZ2UKKyAqIEBYRV9TWVNDVFJMX0NNRF9HRVRfT0ZG TElORV9MSVNUOiBSZXRyaWV2ZSBsaXN0IG9mIGFsbCBvZmZsaW5lZCBwYWdlcyBmcm9tIGZsYXNo CisgKiBAWEVfU1lTQ1RSTF9DTURfR0VUX09GRkxJTkVfUVVFVUU6IFJldHJpZXZlIGxpc3Qgb2Yg b2ZmbGluZWQgcXVldWVkIHBhZ2VzIGZyb20gZmlybXdhcmUKICAqLwogZW51bSB4ZV9zeXNjdHJs X2dmc3BfY21kIHsKKwlYRV9TWVNDVFJMX0NNRF9HRVRfU09DX0VSUk9SCQk9IDB4MDEsCiAJWEVf U1lTQ1RSTF9DTURfR0VUX1BFTkRJTkdfRVZFTlQJPSAweDA3LAorCVhFX1NZU0NUUkxfQ01EX1BB R0VfT0ZGTElORQkJPSAweDA4LAorCVhFX1NZU0NUUkxfQ01EX0dFVF9PRkZMSU5FX0xJU1QJCT0g MHgwOSwKKwlYRV9TWVNDVFJMX0NNRF9HRVRfT0ZGTElORV9RVUVVRQk9IDB4MEEsCiB9OwogCiAv KioKQEAgLTQ4LDYgKzU2LDkgQEAgc3RydWN0IHhlX3N5c2N0cmxfbWFpbGJveF9jb21tYW5kIHsK IAlzaXplX3QgZGF0YV9vdXRfbGVuOwogfTsKIAorLyogTW9kaWZ5IGFzIG5lZWRlZCAqLworI2Rl ZmluZSBYRV9TWVNDVFJMX0ZMT09ECQkJMTYKKwogI2RlZmluZSBYRV9TWVNDVFJMX01CX0ZSQU1F X1NJWkUJMTYKICNkZWZpbmUgWEVfU1lTQ1RSTF9NQl9NQVhfRlJBTUVTCTY0CiAjZGVmaW5lIFhF X1NZU0NUUkxfTUJfTUFYX01FU1NBR0VfU0laRQlcCi0tIAoyLjM0LjEKCg==