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 2C403F46C45 for ; Mon, 6 Apr 2026 14:25:58 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8AFE910E25A; Mon, 6 Apr 2026 14:25:57 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="fOLXcQAn"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) by gabe.freedesktop.org (Postfix) with ESMTPS id 66C8910E254; Mon, 6 Apr 2026 14:25:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1775485556; x=1807021556; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qq/mXRjlaro7Uel08Y4Ujof1/CW6L4+KpXDYy+xLe5I=; b=fOLXcQAnkGipCl/q5qxN/rsXFoDfWp+lOIWS59xnojdXEzXqQ1GYiYF7 eEHpVgMtHJUK+RUpODfxBnU6rM0XTx/M335SLCutPF3Ok4QcE2gO+/LFE hLwWgaYxGPa8jlhDrO94eqa2cdNx1ae1hBZHaSnztp3tXBOUkfcUbZBcd I6VSGW5lDl6qTEP8mWgfOUak8KyzxfmH9y8L/0Btx3w000PP+1EdSTEjp rwTbvGKNt8Qr8pKUnTeUa1Wn0C39vI+00G6xADJpVIaLxgE2fkPbS3Ma7 PNzGwM9+SJdQitokKbrzc89ppvCu9XJsBoCJGIbD0mBAD5EsJs5TkL8pd A==; X-CSE-ConnectionGUID: A602YCV8SnyMP6IrzLCqrA== X-CSE-MsgGUID: Ezk3qb96Rjax6lW4+Fp/eg== X-IronPort-AV: E=McAfee;i="6800,10657,11750"; a="75603900" X-IronPort-AV: E=Sophos;i="6.23,163,1770624000"; d="scan'208";a="75603900" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Apr 2026 07:25:56 -0700 X-CSE-ConnectionGUID: wofYJ4CxSQqXxBcnfpEs0w== X-CSE-MsgGUID: 7YwM7NkeTNWDVBJiws5MVA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,163,1770624000"; d="scan'208";a="221309240" Received: from jraag-z790m-itx-wifi.iind.intel.com ([10.190.239.23]) by fmviesa009.fm.intel.com with ESMTP; 06 Apr 2026 07:25:52 -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, 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 v3 1/4] Introduce Xe Uncorrectable Error Handling Date: Mon, 6 Apr 2026 19:53:27 +0530 Message-ID: <20260406142325.157035-7-mallesh.koujalagi@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260406142325.157035-6-mallesh.koujalagi@intel.com> References: <20260406142325.157035-6-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+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL3hlL01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAy ICsKIGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYyAgICAgICAgICAgICAgICB8ICAxMCAr CiBkcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmggICAgICAgICAgICAgICAgfCAgMTUgKwog ZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oICAgICAgICAgIHwgICA2ICsKIGRy aXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jICAgICAgICAgICAgICAgICAgICB8ICAxNCArLQogZHJp dmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYyAgICAgICAgICAgIHwgICA5ICstCiBkcml2 ZXJzL2dwdS9kcm0veGUveGVfcGNpLmMgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogZHJpdmVy cy9ncHUvZHJtL3hlL3hlX3BjaV9lcnJvci5jICAgICAgICAgICAgIHwgMTE4ICsrKysrKysKIGRy aXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYyAgICAgICAgICAgICAgICAgICB8IDMxOCArKysrKysr KysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuaCAgICAgICAgICAgICAgICAg ICB8ICAxNiArCiBkcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzX3R5cGVzLmggICAgICAgICAgICAg fCAyMDMgKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9zdXJ2aXZhYmlsaXR5X21v ZGUuYyAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N5c2N0cmxfbWFpbGJveF90 eXBlcy5oIHwgIDEzICsKIDEzIGZpbGVzIGNoYW5nZWQsIDczMSBpbnNlcnRpb25zKCspLCA4IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wY2lf ZXJyb3IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXNfdHlwZXMuaAoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmls ZQppbmRleCAxMTBmZWY1MTFmZTIuLjJjMDAxN2U0NzY0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3hlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQpAQCAt MTAwLDYgKzEwMCw3IEBAIHhlLXkgKz0geGVfYmIubyBcCiAJeGVfcGFnZV9yZWNsYWltLm8gXAog CXhlX3BhdC5vIFwKIAl4ZV9wY2kubyBcCisJeGVfcGNpX2Vycm9yLm8gXAogCXhlX3BjaV9yZWJh ci5vIFwKIAl4ZV9wY29kZS5vIFwKIAl4ZV9wbS5vIFwKQEAgLTExMSw2ICsxMTIsNyBAQCB4ZS15 ICs9IHhlX2JiLm8gXAogCXhlX3B4cF9kZWJ1Z2ZzLm8gXAogCXhlX3B4cF9zdWJtaXQubyBcCiAJ eGVfcXVlcnkubyBcCisJeGVfcmFzLm8gXAogCXhlX3JhbmdlX2ZlbmNlLm8gXAogCXhlX3JlZ19z ci5vIFwKIAl4ZV9yZWdfd2hpdGVsaXN0Lm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3hlL3hlX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jCmluZGV4IGNi Y2UxZDBmZmU0OC4uMzI4OTJhMWE3Mzc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jCkBAIC02MCw2 ICs2MCw3IEBACiAjaW5jbHVkZSAieGVfcHNtaS5oIgogI2luY2x1ZGUgInhlX3B4cC5oIgogI2lu Y2x1ZGUgInhlX3F1ZXJ5LmgiCisjaW5jbHVkZSAieGVfcmFzLmgiCiAjaW5jbHVkZSAieGVfc2hy aW5rZXIuaCIKICNpbmNsdWRlICJ4ZV9zb2NfcmVtYXBwZXIuaCIKICNpbmNsdWRlICJ4ZV9zdXJ2 aXZhYmlsaXR5X21vZGUuaCIKQEAgLTQ0MCw2ICs0NDEsNyBAQCBzdHJ1Y3QgeGVfZGV2aWNlICp4 ZV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCQkJCSAgIGNvbnN0IHN0cnVj dCBwY2lfZGV2aWNlX2lkICplbnQpCiB7CiAJc3RydWN0IHhlX2RldmljZSAqeGU7CisJdm9pZCAq ZGV2cmVzX2lkOwogCWludCBlcnI7CiAKIAl4ZV9kaXNwbGF5X2RyaXZlcl9zZXRfaG9va3MoJmRy aXZlcik7CkBAIC00NDgsMTAgKzQ1MCwxNiBAQCBzdHJ1Y3QgeGVfZGV2aWNlICp4ZV9kZXZpY2Vf Y3JlYXRlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCWlmIChlcnIpCiAJCXJldHVybiBFUlJfUFRS KGVycik7CiAKKwlkZXZyZXNfaWQgPSBkZXZyZXNfb3Blbl9ncm91cCgmcGRldi0+ZGV2LCBOVUxM LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRldnJlc19pZCkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7CisKIAl4ZSA9IGRldm1fZHJtX2Rldl9hbGxvYygmcGRldi0+ZGV2LCAmZHJpdmVyLCBzdHJ1 Y3QgeGVfZGV2aWNlLCBkcm0pOwogCWlmIChJU19FUlIoeGUpKQogCQlyZXR1cm4geGU7CiAKKwl4 ZS0+ZGV2cmVzX2dyb3VwX2lkID0gZGV2cmVzX2lkOworCiAJZXJyID0gdHRtX2RldmljZV9pbml0 KCZ4ZS0+dHRtLCAmeGVfdHRtX2Z1bmNzLCB4ZS0+ZHJtLmRldiwKIAkJCSAgICAgIHhlLT5kcm0u YW5vbl9pbm9kZS0+aV9tYXBwaW5nLAogCQkJICAgICAgeGUtPmRybS52bWFfb2Zmc2V0X21hbmFn ZXIsIDApOwpAQCAtMTAxNiw2ICsxMDI0LDggQEAgaW50IHhlX2RldmljZV9wcm9iZShzdHJ1Y3Qg eGVfZGV2aWNlICp4ZSkKIAogCXhlX3ZzZWNfaW5pdCh4ZSk7CiAKKwl4ZV9yYXNfaW5pdCh4ZSk7 CisKIAllcnIgPSB4ZV9zcmlvdl9pbml0X2xhdGUoeGUpOwogCWlmIChlcnIpCiAJCWdvdG8gZXJy X3VucmVnaXN0ZXJfZGlzcGxheTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9k ZXZpY2UuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuaAppbmRleCBlNGI5ZGU4ZDhl OTUuLjYwZGIyNDkyY2I5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2Rldmlj ZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuaApAQCAtNDMsNiArNDMsMjEg QEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgeGVfZGV2aWNlICp0dG1fdG9feGVfZGV2aWNlKHN0cnVj dCB0dG1fZGV2aWNlICp0dG0pCiAJcmV0dXJuIGNvbnRhaW5lcl9vZih0dG0sIHN0cnVjdCB4ZV9k ZXZpY2UsIHR0bSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCB4ZV9kZXZpY2VfaXNfaW5fcmVj b3Zlcnkoc3RydWN0IHhlX2RldmljZSAqeGUpCit7CisJcmV0dXJuIGF0b21pY19yZWFkKCZ4ZS0+ aW5fcmVjb3ZlcnkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgeGVfZGV2aWNlX3NldF9pbl9y ZWNvdmVyeShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKK3sKKwlhdG9taWNfc2V0KCZ4ZS0+aW5fcmVj b3ZlcnksIDEpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgeGVfZGV2aWNlX2NsZWFyX2luX3Jl Y292ZXJ5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKQoreworCSBhdG9taWNfc2V0KCZ4ZS0+aW5fcmVj b3ZlcnksIDApOworfQorCiBzdHJ1Y3QgeGVfZGV2aWNlICp4ZV9kZXZpY2VfY3JlYXRlKHN0cnVj dCBwY2lfZGV2ICpwZGV2LAogCQkJCSAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQp OwogaW50IHhlX2RldmljZV9wcm9iZV9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmggYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgKaW5kZXggMTUwYzc2YjJhY2FmLi5jODllMmQzMTU4 M2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgKQEAgLTQ5NCw2ICs0OTQsMTIg QEAgc3RydWN0IHhlX2RldmljZSB7CiAJCWJvb2wgaW5jb25zaXN0ZW50X3Jlc2V0OwogCX0gd2Vk Z2VkOwogCisJLyoqIEBpbl9yZWNvdmVyeTogSW5kaWNhdGVzIGlmIGRldmljZSBpcyBpbiByZWNv dmVyeSAqLworCWF0b21pY190IGluX3JlY292ZXJ5OworCisJLyoqIEBkZXZyZXNfZ3JvdXBfaWQ6 IGlkIGZvciBkZXZyZXMgZ3JvdXAgKi8KKwl2b2lkICpkZXZyZXNfZ3JvdXBfaWQ7CisKIAkvKiog QGJvX2RldmljZTogU3RydWN0IHRvIGNvbnRyb2wgYXN5bmMgZnJlZSBvZiBCT3MgKi8KIAlzdHJ1 Y3QgeGVfYm9fZGV2IHsKIAkJLyoqIEBib19kZXZpY2UuYXN5bmNfZnJlZTogRnJlZSB3b3JrZXIg Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jIGIvZHJpdmVycy9ncHUv ZHJtL3hlL3hlX2d0LmMKaW5kZXggOGEzMWM5NjNjMzcyLi41ZWE1NTI0ZDgzYWYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94 ZV9ndC5jCkBAIC05MTcsNiArOTE3LDkgQEAgc3RhdGljIHZvaWQgZ3RfcmVzZXRfd29ya2VyKHN0 cnVjdCB3b3JrX3N0cnVjdCAqdykKIAlpZiAoeGVfZGV2aWNlX3dlZGdlZChndF90b194ZShndCkp KQogCQlnb3RvIGVycl9wbV9wdXQ7CiAKKwlpZiAoeGVfZGV2aWNlX2lzX2luX3JlY292ZXJ5KGd0 X3RvX3hlKGd0KSkpCisJCWdvdG8gZXJyX3BtX3B1dDsKKwogCS8qIFdlIG9ubHkgc3VwcG9ydCBH VCByZXNldHMgd2l0aCBHdUMgc3VibWlzc2lvbiAqLwogCWlmICgheGVfZGV2aWNlX3VjX2VuYWJs ZWQoZ3RfdG9feGUoZ3QpKSkKIAkJZ290byBlcnJfcG1fcHV0OwpAQCAtOTc3LDE4ICs5ODAsMjMg QEAgc3RhdGljIHZvaWQgZ3RfcmVzZXRfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqdykKIAog dm9pZCB4ZV9ndF9yZXNldF9hc3luYyhzdHJ1Y3QgeGVfZ3QgKmd0KQogewotCXhlX2d0X2luZm8o Z3QsICJ0cnlpbmcgcmVzZXQgZnJvbSAlcHNcbiIsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygw KSk7CisJc3RydWN0IHhlX2RldmljZSAqeGUgPSBndF90b194ZShndCk7CisKKwlpZiAoeGVfZGV2 aWNlX2lzX2luX3JlY292ZXJ5KHhlKSkKKwkJcmV0dXJuOwogCiAJLyogRG9uJ3QgZG8gYSByZXNl dCB3aGlsZSBvbmUgaXMgYWxyZWFkeSBpbiBmbGlnaHQgKi8KIAlpZiAoIXhlX2ZhdWx0X2luamVj dF9ndF9yZXNldCgpICYmIHhlX3VjX3Jlc2V0X3ByZXBhcmUoJmd0LT51YykpCiAJCXJldHVybjsK IAorCXhlX2d0X2luZm8oZ3QsICJ0cnlpbmcgcmVzZXQgZnJvbSAlcHNcbiIsIF9fYnVpbHRpbl9y ZXR1cm5fYWRkcmVzcygwKSk7CisKIAl4ZV9ndF9pbmZvKGd0LCAicmVzZXQgcXVldWVkXG4iKTsK IAogCS8qIFBhaXIgd2l0aCBwdXQgaW4gZ3RfcmVzZXRfd29ya2VyKCkgaWYgd29yayBpcyBlbnF1 ZXVlZCAqLwotCXhlX3BtX3J1bnRpbWVfZ2V0X25vcmVzdW1lKGd0X3RvX3hlKGd0KSk7CisJeGVf cG1fcnVudGltZV9nZXRfbm9yZXN1bWUoeGUpOwogCWlmICghcXVldWVfd29yayhndC0+b3JkZXJl ZF93cSwgJmd0LT5yZXNldC53b3JrZXIpKQotCQl4ZV9wbV9ydW50aW1lX3B1dChndF90b194ZShn dCkpOworCQl4ZV9wbV9ydW50aW1lX3B1dCh4ZSk7CiB9CiAKIHZvaWQgeGVfZ3Rfc3VzcGVuZF9w cmVwYXJlKHN0cnVjdCB4ZV9ndCAqZ3QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfZ3VjX3N1Ym1pdC5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYwppbmRl eCAxMDU1NjE1NmVhYWQuLjFmMzJmYjE0YTVjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3hlL3hlX2d1Y19zdWJtaXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1p dC5jCkBAIC0xNTIyLDcgKzE1MjIsNyBAQCBndWNfZXhlY19xdWV1ZV90aW1lZG91dF9qb2Ioc3Ry dWN0IGRybV9zY2hlZF9qb2IgKmRybV9qb2IpCiAJICogSWYgZGV2Y29yZWR1bXAgbm90IGNhcHR1 cmVkIGFuZCBHdUMgY2FwdHVyZSBmb3IgdGhlIGpvYiBpcyBub3QgcmVhZHkKIAkgKiBkbyBtYW51 YWwgY2FwdHVyZSBmaXJzdCBhbmQgZGVjaWRlIGxhdGVyIGlmIHdlIG5lZWQgdG8gdXNlIGl0CiAJ ICovCi0JaWYgKCFleGVjX3F1ZXVlX2tpbGxlZChxKSAmJiAheGUtPmRldmNvcmVkdW1wLmNhcHR1 cmVkICYmCisJaWYgKCF4ZV9kZXZpY2VfaXNfaW5fcmVjb3ZlcnkoeGUpICYmICFleGVjX3F1ZXVl X2tpbGxlZChxKSAmJiAheGUtPmRldmNvcmVkdW1wLmNhcHR1cmVkICYmCiAJICAgICF4ZV9ndWNf Y2FwdHVyZV9nZXRfbWF0Y2hpbmdfYW5kX2xvY2socSkpIHsKIAkJLyogdGFrZSBmb3JjZSB3YWtl IGJlZm9yZSBlbmdpbmUgcmVnaXN0ZXIgbWFudWFsIGNhcHR1cmUgKi8KIAkJQ0xBU1MoeGVfZm9y Y2Vfd2FrZSwgZndfcmVmKShndF90b19mdyhxLT5ndCksIFhFX0ZPUkNFV0FLRV9BTEwpOwpAQCAt MTU0NCw4ICsxNTQ0LDggQEAgZ3VjX2V4ZWNfcXVldWVfdGltZWRvdXRfam9iKHN0cnVjdCBkcm1f c2NoZWRfam9iICpkcm1fam9iKQogCXNldF9leGVjX3F1ZXVlX2Jhbm5lZChxKTsKIAogCS8qIEtp Y2sgam9iIC8gcXVldWUgb2ZmIGhhcmR3YXJlICovCi0JaWYgKCF3ZWRnZWQgJiYgKGV4ZWNfcXVl dWVfZW5hYmxlZChwcmltYXJ5KSB8fAotCQkJZXhlY19xdWV1ZV9wZW5kaW5nX2Rpc2FibGUocHJp bWFyeSkpKSB7CisJaWYgKCF4ZV9kZXZpY2VfaXNfaW5fcmVjb3ZlcnkoeGUpICYmICF3ZWRnZWQg JiYKKwkgICAgKGV4ZWNfcXVldWVfZW5hYmxlZChwcmltYXJ5KSB8fCBleGVjX3F1ZXVlX3BlbmRp bmdfZGlzYWJsZShwcmltYXJ5KSkpIHsKIAkJaW50IHJldDsKIAogCQlpZiAoZXhlY19xdWV1ZV9y ZXNldChwcmltYXJ5KSkKQEAgLTE2MTMsNyArMTYxMyw4IEBAIGd1Y19leGVjX3F1ZXVlX3RpbWVk b3V0X2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqZHJtX2pvYikKIAogCXRyYWNlX3hlX3NjaGVk X2pvYl90aW1lZG91dChqb2IpOwogCi0JaWYgKCFleGVjX3F1ZXVlX2tpbGxlZChxKSkKKwkvKiBE byBub3QgYWNjZXNzIGRldmljZSBpZiBpbiByZWNvdmVyeSAqLworCWlmICgheGVfZGV2aWNlX2lz X2luX3JlY292ZXJ5KHhlKSAmJiAhZXhlY19xdWV1ZV9raWxsZWQocSkpCiAJCXhlX2RldmNvcmVk dW1wKHEsIGpvYiwKIAkJCSAgICAgICAiVGltZWRvdXQgam9iIC0gc2Vxbm89JXUsIGxyY19zZXFu bz0ldSwgZ3VjX2lkPSVkLCBmbGFncz0weCVseCIsCiAJCQkgICAgICAgeGVfc2NoZWRfam9iX3Nl cW5vKGpvYiksIHhlX3NjaGVkX2pvYl9scmNfc2Vxbm8oam9iKSwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9wY2kuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9wY2kuYwppbmRl eCAxZGYzZjA4ZTJlMWMuLjMwZDcxNzk1ZGQyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3hlL3hlX3BjaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9wY2kuYwpAQCAtMTMyMyw2 ICsxMzIzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHhlX3BtX29wcyA9IHsK IH07CiAjZW5kaWYKIAorZXh0ZXJuIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgeGVf cGNpX2Vycm9yX2hhbmRsZXJzOworCiBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgeGVfcGNpX2Ry aXZlciA9IHsKIAkubmFtZSA9IERSSVZFUl9OQU1FLAogCS5pZF90YWJsZSA9IHBjaWlkbGlzdCwK QEAgLTEzMzAsNiArMTMzMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB4ZV9wY2lfZHJp dmVyID0gewogCS5yZW1vdmUgPSB4ZV9wY2lfcmVtb3ZlLAogCS5zaHV0ZG93biA9IHhlX3BjaV9z aHV0ZG93biwKIAkuc3Jpb3ZfY29uZmlndXJlID0geGVfcGNpX3NyaW92X2NvbmZpZ3VyZSwKKwku ZXJyX2hhbmRsZXIgPSAmeGVfcGNpX2Vycm9yX2hhbmRsZXJzLAogI2lmZGVmIENPTkZJR19QTV9T TEVFUAogCS5kcml2ZXIucG0gPSAmeGVfcG1fb3BzLAogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0veGUveGVfcGNpX2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcGNp X2Vycm9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MWI2MTUy YzE1OTMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcGNpX2Vycm9y LmMKQEAgLTAsMCArMSwxMTggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8q CisgKiBDb3B5cmlnaHQgwqkgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisjaW5jbHVkZSA8 bGludXgvcGNpLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgorCisjaW5jbHVkZSAieGVf ZGV2aWNlLmgiCisjaW5jbHVkZSAieGVfZ3QuaCIKKyNpbmNsdWRlICJ4ZV9wY2kuaCIKKyNpbmNs dWRlICJ4ZV9yYXMuaCIKKyNpbmNsdWRlICJ4ZV9zdXJ2aXZhYmlsaXR5X21vZGUuaCIKKyNpbmNs dWRlICJ4ZV91Yy5oIgorCitzdGF0aWMgdm9pZCB4ZV9wY2lfZXJyb3JfaGFuZGxpbmcoc3RydWN0 IHBjaV9kZXYgKnBkZXYpCit7CisJc3RydWN0IHhlX2RldmljZSAqeGUgPSBwZGV2X3RvX3hlX2Rl dmljZShwZGV2KTsKKwlzdHJ1Y3QgeGVfZ3QgKmd0OworCXU4IGlkOworCisJLyogUmV0dXJuIGlm IGRldmljZSBpcyB3ZWRnZWQgb3IgaW4gc3Vydml2YWJpbGl0eSBtb2RlICovCisJaWYgKHhlX3N1 cnZpdmFiaWxpdHlfbW9kZV9pc19ib290X2VuYWJsZWQoeGUpIHx8IHhlX2RldmljZV93ZWRnZWQo eGUpKQorCQlyZXR1cm47CisKKwkvKiBXZWRnZSB0aGUgZGV2aWNlIHRvIHByZXZlbnQgdXNlcnNw YWNlIGFjY2VzcyBidXQgZG9uJ3Qgc2VuZCB0aGUgZXZlbnQgeWV0ICovCisJYXRvbWljX3NldCgm eGUtPndlZGdlZC5mbGFnLCAxKTsKKworCWZvcl9lYWNoX2d0KGd0LCB4ZSwgaWQpCisJCXhlX2d0 X2RlY2xhcmVfd2VkZ2VkKGd0KTsKKworCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKK30KKwor LyogTWFwcGluZyBvZiBSQVMgcmVjb3ZlcnkgYWN0aW9uIHRvIFBDSSBlcnJvciByZXN1bHQgKi8K K3N0YXRpYyBjb25zdCBwY2lfZXJzX3Jlc3VsdF90IHJhc19yZWNvdmVyeV9hY3Rpb25fdG9fcGNp X3Jlc3VsdFtdID0geworCVtYRV9SQVNfUkVDT1ZFUllfQUNUSU9OX1JFQ09WRVJFRF0gPSBQQ0lf RVJTX1JFU1VMVF9SRUNPVkVSRUQsCisJW1hFX1JBU19SRUNPVkVSWV9BQ1RJT05fUkVTRVRdID0g UENJX0VSU19SRVNVTFRfTkVFRF9SRVNFVCwKKwlbWEVfUkFTX1JFQ09WRVJZX0FDVElPTl9ESVND T05ORUNUXSA9IFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1QsCit9OworCitzdGF0aWMgcGNpX2Vy c19yZXN1bHRfdCB4ZV9wY2lfZXJyb3JfZGV0ZWN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBj aV9jaGFubmVsX3N0YXRlX3Qgc3RhdGUpCit7CisJc3RydWN0IHhlX2RldmljZSAqeGUgPSBwZGV2 X3RvX3hlX2RldmljZShwZGV2KTsKKworCWRldl9lcnIoJnBkZXYtPmRldiwgIlhlIFBjaSBlcnJv ciByZWNvdmVyeTogZXJyb3IgZGV0ZWN0ZWQgc3RhdGUgJWRcbiIsIHN0YXRlKTsKKworCWlmIChz dGF0ZSA9PSBwY2lfY2hhbm5lbF9pb19wZXJtX2ZhaWx1cmUpCisJCXJldHVybiBQQ0lfRVJTX1JF U1VMVF9ESVNDT05ORUNUOworCisJeGVfZGV2aWNlX3NldF9pbl9yZWNvdmVyeSh4ZSk7CisKKwlz d2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBwY2lfY2hhbm5lbF9pb19ub3JtYWw6CisJCXJldHVybiBQ Q0lfRVJTX1JFU1VMVF9DQU5fUkVDT1ZFUjsKKwljYXNlIHBjaV9jaGFubmVsX2lvX2Zyb3plbjoK KwkJeGVfcGNpX2Vycm9yX2hhbmRsaW5nKHBkZXYpOworCQlyZXR1cm4gUENJX0VSU19SRVNVTFRf TkVFRF9SRVNFVDsKKwlkZWZhdWx0OgorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJVbmtub3duIHN0 YXRlICVkXG4iLCBzdGF0ZSk7CisJCXJldHVybiBQQ0lfRVJTX1JFU1VMVF9ORUVEX1JFU0VUOwor CX0KK30KKworc3RhdGljIHBjaV9lcnNfcmVzdWx0X3QgeGVfcGNpX2Vycm9yX21taW9fZW5hYmxl ZChzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKwlzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9IHBkZXZf dG9feGVfZGV2aWNlKHBkZXYpOworCWVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiBhY3Rpb247 CisKKwlkZXZfZXJyKCZwZGV2LT5kZXYsICJYZSBQY2kgZXJyb3IgcmVjb3Zlcnk6IE1NSU8gZW5h YmxlZFxuIik7CisJYWN0aW9uID0geGVfcmFzX3Byb2Nlc3NfZXJyb3JzKHhlKTsKKworCXJldHVy biByYXNfcmVjb3ZlcnlfYWN0aW9uX3RvX3BjaV9yZXN1bHRbYWN0aW9uXTsKK30KKworc3RhdGlj IHBjaV9lcnNfcmVzdWx0X3QgeGVfcGNpX2Vycm9yX3Nsb3RfcmVzZXQoc3RydWN0IHBjaV9kZXYg KnBkZXYpCit7CisJY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCA9IHBjaV9tYXRjaF9p ZChwZGV2LT5kcml2ZXItPmlkX3RhYmxlLCBwZGV2KTsKKwlzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9 IHBkZXZfdG9feGVfZGV2aWNlKHBkZXYpOworCisJZGV2X2VycigmcGRldi0+ZGV2LCAiWGUgUGNp IGVycm9yIHJlY292ZXJ5OiBTbG90IHJlc2V0XG4iKTsKKworCXBjaV9yZXN0b3JlX3N0YXRlKHBk ZXYpOworCisJaWYgKHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpKSB7CisJCWRldl9lcnIoJnBkZXYt PmRldiwKKwkJCSJDYW5ub3QgcmUtZW5hYmxlIFBDSSBkZXZpY2UgYWZ0ZXIgcmVzZXRcbiIpOwor CQlyZXR1cm4gUENJX0VSU19SRVNVTFRfRElTQ09OTkVDVDsKKwl9CisKKwkvKgorCSAqIFNlY29u ZGFyeSBCdXMgUmVzZXQgd2lwZXMgb3V0IGFsbCBkZXZpY2UgbWVtb3J5CisJICogcmVxdWlyaW5n IFhFIEtNRCB0byBwZXJmb3JtIGEgZGV2aWNlIHJlbW92YWwgYW5kIHJlcHJvYmUuCisJICovCisJ cGRldi0+ZHJpdmVyLT5yZW1vdmUocGRldik7CisJZGV2cmVzX3JlbGVhc2VfZ3JvdXAoJnBkZXYt PmRldiwgeGUtPmRldnJlc19ncm91cF9pZCk7CisKKwlpZiAoIXBkZXYtPmRyaXZlci0+cHJvYmUo cGRldiwgZW50KSkKKwkJcmV0dXJuIFBDSV9FUlNfUkVTVUxUX1JFQ09WRVJFRDsKKworCXJldHVy biBQQ0lfRVJTX1JFU1VMVF9ESVNDT05ORUNUOworfQorCitzdGF0aWMgdm9pZCB4ZV9wY2lfZXJy b3JfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQoreworCXN0cnVjdCB4ZV9kZXZpY2UgKnhl ID0gcGRldl90b194ZV9kZXZpY2UocGRldik7CisKKwlkZXZfaW5mbygmcGRldi0+ZGV2LCAiWGUg UGNpIGVycm9yIHJlY292ZXJ5OiBSZWNvdmVyZWRcbiIpOworCisJeGVfZGV2aWNlX2NsZWFyX2lu X3JlY292ZXJ5KHhlKTsKK30KKworY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB4ZV9w Y2lfZXJyb3JfaGFuZGxlcnMgPSB7CisJLmVycm9yX2RldGVjdGVkCT0geGVfcGNpX2Vycm9yX2Rl dGVjdGVkLAorCS5tbWlvX2VuYWJsZWQJPSB4ZV9wY2lfZXJyb3JfbW1pb19lbmFibGVkLAorCS5z bG90X3Jlc2V0CT0geGVfcGNpX2Vycm9yX3Nsb3RfcmVzZXQsCisJLnJlc3VtZQkJPSB4ZV9wY2lf ZXJyb3JfcmVzdW1lLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMu YyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yYXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjQzNzgxMTg0NWMwMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9yYXMuYwpAQCAtMCwwICsxLDMxOCBAQAorLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDI2IEludGVsIENvcnBvcmF0aW9u CisgKi8KKworI2luY2x1ZGUgInhlX2Fzc2VydC5oIgorI2luY2x1ZGUgInhlX2RldmljZV90eXBl cy5oIgorI2luY2x1ZGUgInhlX3ByaW50ay5oIgorI2luY2x1ZGUgInhlX3Jhcy5oIgorI2luY2x1 ZGUgInhlX3Jhc190eXBlcy5oIgorI2luY2x1ZGUgInhlX3N1cnZpdmFiaWxpdHlfbW9kZS5oIgor I2luY2x1ZGUgInhlX3N5c2N0cmxfbWFpbGJveC5oIgorI2luY2x1ZGUgInhlX3N5c2N0cmxfbWFp bGJveF90eXBlcy5oIgorCisjZGVmaW5lIENPTVBVVEVfRVJST1JfU0VWRVJJVFlfTUFTSwkJR0VO TUFTSygyNiwgMjUpCisjZGVmaW5lIEdMT0JBTF9VTkNPUlJfRVJST1IJCQkyCisvKiBNb2RpZnkg YXMgbmVlZGVkICovCisjZGVmaW5lIFhFX1NZU0NUUkxfRVJST1JfRkxPT0QJCQkxNgorCisvKiBT ZXZlcml0eSBjbGFzc2lmaWNhdGlvbiBvZiBkZXRlY3RlZCBlcnJvcnMgKi8KK2VudW0geGVfcmFz X3NldmVyaXR5IHsKKwlYRV9SQVNfU0VWRVJJVFlfTk9UX1NVUFBPUlRFRCA9IDAsCisJWEVfUkFT X1NFVkVSSVRZX0NPUlJFQ1RBQkxFLAorCVhFX1JBU19TRVZFUklUWV9VTkNPUlJFQ1RBQkxFLAor CVhFX1JBU19TRVZFUklUWV9JTkZPUk1BVElPTkFMLAorCVhFX1JBU19TRVZFUklUWV9NQVgKK307 CisKKy8qIG1ham9yIElQIGJsb2NrcyB3aGVyZSBlcnJvcnMgY2FuIG9yaWdpbmF0ZSAqLworZW51 bSB4ZV9yYXNfY29tcG9uZW50IHsKKwlYRV9SQVNfQ09NUE9ORU5UX05PVF9TVVBQT1JURUQgPSAw LAorCVhFX1JBU19DT01QT05FTlRfREVWSUNFX01FTU9SWSwKKwlYRV9SQVNfQ09NUE9ORU5UX0NP UkVfQ09NUFVURSwKKwlYRV9SQVNfQ09NUE9ORU5UX1JFU0VSVkVELAorCVhFX1JBU19DT01QT05F TlRfUENJRSwKKwlYRV9SQVNfQ09NUE9ORU5UX0ZBQlJJQywKKwlYRV9SQVNfQ09NUE9ORU5UX1NP Q19JTlRFUk5BTCwKKwlYRV9SQVNfQ09NUE9ORU5UX01BWAorfTsKKworc3RhdGljIGNvbnN0IGNo YXIgKiBjb25zdCB4ZV9yYXNfc2V2ZXJpdGllc1tdID0geworCVtYRV9SQVNfU0VWRVJJVFlfTk9U X1NVUFBPUlRFRF0JCT0gIk5vdCBTdXBwb3J0ZWQiLAorCVtYRV9SQVNfU0VWRVJJVFlfQ09SUkVD VEFCTEVdCQk9ICJDb3JyZWN0YWJsZSIsCisJW1hFX1JBU19TRVZFUklUWV9VTkNPUlJFQ1RBQkxF XQkJPSAiVW5jb3JyZWN0YWJsZSIsCisJW1hFX1JBU19TRVZFUklUWV9JTkZPUk1BVElPTkFMXQkJ PSAiSW5mb3JtYXRpb25hbCIsCit9OworCitzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUoeGVfcmFz X3NldmVyaXRpZXMpID09IFhFX1JBU19TRVZFUklUWV9NQVgpOworCitzdGF0aWMgY29uc3QgY2hh ciAqIGNvbnN0IHhlX3Jhc19jb21wb25lbnRzW10gPSB7CisJW1hFX1JBU19DT01QT05FTlRfTk9U X1NVUFBPUlRFRF0JPSAiTm90IFN1cHBvcnRlZCIsCisJW1hFX1JBU19DT01QT05FTlRfREVWSUNF X01FTU9SWV0JPSAiRGV2aWNlIE1lbW9yeSIsCisJW1hFX1JBU19DT01QT05FTlRfQ09SRV9DT01Q VVRFXQkJPSAiQ29yZSBDb21wdXRlIiwKKwlbWEVfUkFTX0NPTVBPTkVOVF9SRVNFUlZFRF0JCT0g IlJlc2VydmVkIiwKKwlbWEVfUkFTX0NPTVBPTkVOVF9QQ0lFXQkJCT0gIlBDSWUiLAorCVtYRV9S QVNfQ09NUE9ORU5UX0ZBQlJJQ10JCT0gIkZhYnJpYyIsCisJW1hFX1JBU19DT01QT05FTlRfU09D X0lOVEVSTkFMXQkJPSAiU29DIEludGVybmFsIiwKK307CisKK3N0YXRpY19hc3NlcnQoQVJSQVlf U0laRSh4ZV9yYXNfY29tcG9uZW50cykgPT0gWEVfUkFTX0NPTVBPTkVOVF9NQVgpOworCitzdGF0 aWMgaW5saW5lIGNvbnN0IGNoYXIgKnNldmVyaXR5X3RvX3N0cihzdHJ1Y3QgeGVfZGV2aWNlICp4 ZSwgdTMyIHNldmVyaXR5KQoreworCXhlX2Fzc2VydCh4ZSwgc2V2ZXJpdHkgPCBYRV9SQVNfU0VW RVJJVFlfTUFYKTsKKworCXJldHVybiBzZXZlcml0eSA8IFhFX1JBU19TRVZFUklUWV9NQVggPyB4 ZV9yYXNfc2V2ZXJpdGllc1tzZXZlcml0eV0gOiAiVW5rbm93biI7Cit9CisKK3N0YXRpYyBpbmxp bmUgY29uc3QgY2hhciAqY29tcF90b19zdHIoc3RydWN0IHhlX2RldmljZSAqeGUsIHUzMiBjb21w KQoreworCXhlX2Fzc2VydCh4ZSwgY29tcCA8IFhFX1JBU19DT01QT05FTlRfTUFYKTsKKworCXJl dHVybiBjb21wIDwgWEVfUkFTX0NPTVBPTkVOVF9NQVggPyB4ZV9yYXNfY29tcG9uZW50c1tjb21w XSA6ICJVbmtub3duIjsKK30KKworc3RhdGljIGVudW0geGVfcmFzX3JlY292ZXJ5X2FjdGlvbiBo YW5kbGVfY29tcHV0ZV9lcnJvcnMoc3RydWN0IHhlX2RldmljZSAqeGUsCisJCQkJCQkJIHN0cnVj dCB4ZV9yYXNfZXJyb3JfYXJyYXkgKmFycikKK3sKKwlzdHJ1Y3QgeGVfcmFzX2NvbXB1dGVfZXJy b3IgKmVycm9yX2luZm8gPSAoc3RydWN0IHhlX3Jhc19jb21wdXRlX2Vycm9yICopYXJyLT5lcnJv cl9kZXRhaWxzOworCXN0cnVjdCB4ZV9yYXNfZXJyb3JfY29tbW9uIGNvbW1vbiA9IGFyci0+ZXJy b3JfY2xhc3MuY29tbW9uOworCXU4IHVuY29ycl90eXBlOworCisJdW5jb3JyX3R5cGUgPSBGSUVM RF9HRVQoQ09NUFVURV9FUlJPUl9TRVZFUklUWV9NQVNLLCBlcnJvcl9pbmZvLT5lcnJvcl9sb2df aGVhZGVyKTsKKworCXhlX2Vycih4ZSwgIltSQVNdOiAlcyAlcyBFcnJvciBkZXRlY3RlZCIsIHNl dmVyaXR5X3RvX3N0cih4ZSwgY29tbW9uLnNldmVyaXR5KSwKKwkgICAgICAgY29tcF90b19zdHIo eGUsIGNvbW1vbi5jb21wb25lbnQpKTsKKworCS8qIFJlcXVlc3QgYSBSRVNFVCBpZiBlcnJvciBp cyBnbG9iYWwgKi8KKwlpZiAodW5jb3JyX3R5cGUgPT0gR0xPQkFMX1VOQ09SUl9FUlJPUikKKwkJ cmV0dXJuIFhFX1JBU19SRUNPVkVSWV9BQ1RJT05fUkVTRVQ7CisKKwkvKiBMb2NhbCBlcnJvcnMg YXJlIHJlY292ZXJlZCB1c2luZyBhIGVuZ2luZSByZXNldCBieSBHdUMgKi8KKwlyZXR1cm4gWEVf UkFTX1JFQ09WRVJZX0FDVElPTl9SRUNPVkVSRUQ7Cit9CisKK3N0YXRpYyBlbnVtIHhlX3Jhc19y ZWNvdmVyeV9hY3Rpb24gaGFuZGxlX3NvY19pbnRlcm5hbF9lcnJvcnMoc3RydWN0IHhlX2Rldmlj ZSAqeGUsCisJCQkJCQkJICAgICAgc3RydWN0IHhlX3Jhc19lcnJvcl9hcnJheSAqYXJyKQorewor CXN0cnVjdCB4ZV9yYXNfc29jX2Vycm9yICplcnJvcl9pbmZvID0KKwkJKHN0cnVjdCB4ZV9yYXNf c29jX2Vycm9yICopYXJyLT5lcnJvcl9kZXRhaWxzOworCXN0cnVjdCB4ZV9yYXNfc29jX2Vycm9y X3NvdXJjZSBzb3VyY2UgPSBlcnJvcl9pbmZvLT5lcnJvcl9zb3VyY2U7CisJc3RydWN0IHhlX3Jh c19lcnJvcl9jb21tb24gY29tbW9uID0gYXJyLT5lcnJvcl9jbGFzcy5jb21tb247CisKKwl4ZV9l cnIoeGUsICJbUkFTXTogJXMgJXMgRXJyb3IgZGV0ZWN0ZWQiLCBzZXZlcml0eV90b19zdHIoeGUs IGNvbW1vbi5zZXZlcml0eSksCisJICAgICAgIGNvbXBfdG9fc3RyKHhlLCBjb21tb24uY29tcG9u ZW50KSk7CisKKwlpZiAoc291cmNlLmNzYykgeworCQlzdHJ1Y3QgeGVfcmFzX2NzY19lcnJvciAq Y3NjX2Vycm9yID0KKwkJCShzdHJ1Y3QgeGVfcmFzX2NzY19lcnJvciAqKWVycm9yX2luZm8tPmFk ZGl0aW9uYWxfZGV0YWlsczsKKworCQkvKgorCQkgKiBDU0MgdW5jb3JyZWN0YWJsZSBlcnJvcnMg YXJlIGNsYXNzaWZpZWQgYXMgaGFyZHdhcmUgZXJyb3JzIGFuZCBmaXJtd2FyZSBlcnJvcnMuCisJ CSAqIENTQyBmaXJtd2FyZSBlcnJvcnMgYXJlIGNyaXRpY2FsIGVycm9ycyB0aGF0IGNhbiBiZSBy ZWNvdmVyZWQgb25seSBieSBmaXJtd2FyZQorCQkgKiB1cGRhdGUgdmlhIFNQSSBkcml2ZXIuIFBD T0RFIGVuYWJsZXMgRkRPIG1vZGUgYW5kIHNldHMgdGhlIGJpdCBpbiB0aGUgY2FwYWJpbGl0eQor CQkgKiByZWdpc3Rlci4gT24gcmVjZWl2aW5nIHRoaXMgZXJyb3IsIHRoZSBkcml2ZXIgZW5hYmxl cyBydW50aW1lIHN1cnZpdmFiaWxpdHkgbW9kZQorCQkgKiB3aGljaCBub3RpZmllcyB1c2Vyc3Bh Y2UgdGhhdCBhIGZpcm13YXJlIHVwZGF0ZSBpcyByZXF1aXJlZC4KKwkJICovCisJCWlmIChjc2Nf ZXJyb3ItPmhlY191bmNvcnJfZndfZXJyX2R3MCkgeworCQkJeGVfZXJyKHhlLCAiW1JBU106IENT QyAlcyBlcnJvciBkZXRlY3RlZDogMHgleFxuIiwKKwkJCSAgICAgICBzZXZlcml0eV90b19zdHIo eGUsIGNvbW1vbi5zZXZlcml0eSksCisJCQkgICAgICAgY3NjX2Vycm9yLT5oZWNfdW5jb3JyX2Z3 X2Vycl9kdzApOworCQkJeGVfc3Vydml2YWJpbGl0eV9tb2RlX3J1bnRpbWVfZW5hYmxlKHhlKTsK KwkJCXJldHVybiBYRV9SQVNfUkVDT1ZFUllfQUNUSU9OX0RJU0NPTk5FQ1Q7CisJCX0KKwl9CisK KwlpZiAoc291cmNlLnNvYykgeworCQlzdHJ1Y3QgeGVfcmFzX2llaF9lcnJvciAqaWVoX2Vycm9y ID0KKwkJCShzdHJ1Y3QgeGVfcmFzX2llaF9lcnJvciAqKWVycm9yX2luZm8tPmFkZGl0aW9uYWxf ZGV0YWlsczsKKworCQlpZiAoaWVoX2Vycm9yLT5nbG9iYWxfZXJyb3Jfc3RhdHVzICYgWEVfUkFT X0lFSF9QVU5JVF9FUlJPUikgeworCQkJeGVfZXJyKHhlLCAiW1JBU106IFBVTklUICVzIGVycm9y IGRldGVjdGVkOiAweCV4XG4iLAorCQkJICAgICAgIHNldmVyaXR5X3RvX3N0cih4ZSwgY29tbW9u LnNldmVyaXR5KSwKKwkJCSAgICAgICBpZWhfZXJyb3ItPmdsb2JhbF9lcnJvcl9zdGF0dXMpOwor CQkJLyoqIFRPRE86IEFkZCBQVU5JVCBlcnJvciBoYW5kbGluZyAqLworCQkJcmV0dXJuIFhFX1JB U19SRUNPVkVSWV9BQ1RJT05fRElTQ09OTkVDVDsKKwkJfQorCX0KKworCS8qIEZvciBvdGhlciBT T0MgaW50ZXJuYWwgZXJyb3JzLCByZXF1ZXN0IGEgcmVzZXQgYXMgcmVjb3ZlcnkgbWVjaGFuaXNt ICovCisJcmV0dXJuIFhFX1JBU19SRUNPVkVSWV9BQ1RJT05fUkVTRVQ7Cit9CisKK3N0YXRpYyB2 b2lkIHByZXBhcmVfc3lzY3RybF9jb21tYW5kKHN0cnVjdCB4ZV9zeXNjdHJsX21haWxib3hfY29t bWFuZCAqY29tbWFuZCwKKwkJCQkgICAgdTMyIGNtZF9tYXNrLCB2b2lkICpyZXF1ZXN0LCBzaXpl X3QgcmVxdWVzdF9sZW4sCisJCQkJICAgIHZvaWQgKnJlc3BvbnNlLCBzaXplX3QgcmVzcG9uc2Vf bGVuKQoreworCXN0cnVjdCB4ZV9zeXNjdHJsX2FwcF9tc2dfaGRyIGhkciA9IHswfTsKKwl1MzIg cmVxX2hkcjsKKworCXJlcV9oZHIgPSBGSUVMRF9QUkVQKEFQUF9IRFJfR1JPVVBfSURfTUFTSywg WEVfU1lTQ1RSTF9HUk9VUF9HRlNQKSB8CisJCSAgRklFTERfUFJFUChBUFBfSERSX0NPTU1BTkRf TUFTSywgY21kX21hc2spOworCisJaGRyLmRhdGEgPSByZXFfaGRyOworCWNvbW1hbmQtPmhlYWRl ciA9IGhkcjsKKwljb21tYW5kLT5kYXRhX2luID0gcmVxdWVzdDsKKwljb21tYW5kLT5kYXRhX2lu X2xlbiA9IHJlcXVlc3RfbGVuOworCWNvbW1hbmQtPmRhdGFfb3V0ID0gcmVzcG9uc2U7CisJY29t bWFuZC0+ZGF0YV9vdXRfbGVuID0gcmVzcG9uc2VfbGVuOworfQorCisvKioKKyAqIHhlX3Jhc19w cm9jZXNzX2Vycm9ycyAtIFByb2Nlc3MgYW5kIGNvbnRhaW4gaGFyZHdhcmUgZXJyb3JzCisgKiBA eGU6IHhlIGRldmljZSBpbnN0YW5jZQorICoKKyAqIEdldCBlcnJvciBkZXRhaWxzIGZyb20gc3lz dGVtIGNvbnRyb2xsZXIgYW5kIHJldHVybiByZWNvdmVyeQorICogbWV0aG9kLiBDYWxsZWQgb25s eSBmcm9tIFBDSSBlcnJvciBoYW5kbGluZy4KKyAqCisgKiBSZXR1cm5zOiByZWNvdmVyeSBhY3Rp b24gdG8gYmUgdGFrZW4KKyAqLworZW51bSB4ZV9yYXNfcmVjb3ZlcnlfYWN0aW9uIHhlX3Jhc19w cm9jZXNzX2Vycm9ycyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKK3sKKwlzdHJ1Y3QgeGVfc3lzY3Ry bF9tYWlsYm94X2NvbW1hbmQgY29tbWFuZCA9IHswfTsKKwlzdHJ1Y3QgeGVfcmFzX2dldF9lcnJv cl9yZXNwb25zZSByZXNwb25zZTsKKwllbnVtIHhlX3Jhc19yZWNvdmVyeV9hY3Rpb24gZmluYWxf YWN0aW9uOworCXUzMiBjb3VudCA9IDA7CisJc2l6ZV90IHJsZW47CisJaW50IHJldDsKKworCS8q IERlZmF1bHQgYWN0aW9uICovCisJZmluYWxfYWN0aW9uID0gWEVfUkFTX1JFQ09WRVJZX0FDVElP Tl9SRUNPVkVSRUQ7CisKKwlpZiAoIXhlLT5pbmZvLmhhc19zeXNjdHJsKQorCQlyZXR1cm4gWEVf UkFTX1JFQ09WRVJZX0FDVElPTl9SRVNFVDsKKworCXByZXBhcmVfc3lzY3RybF9jb21tYW5kKCZj b21tYW5kLCBYRV9TWVNDVFJMX0NNRF9HRVRfU09DX0VSUk9SLCBOVUxMLCAwLAorCQkJCSZyZXNw b25zZSwgc2l6ZW9mKHJlc3BvbnNlKSk7CisKKwlkbyB7CisJCW1lbXNldCgmcmVzcG9uc2UsIDAs IHNpemVvZihyZXNwb25zZSkpOworCQlybGVuID0gMDsKKworCQlyZXQgPSB4ZV9zeXNjdHJsX3Nl bmRfY29tbWFuZCgmeGUtPnNjLCAmY29tbWFuZCwgJnJsZW4pOworCQlpZiAocmV0KSB7CisJCQl4 ZV9lcnIoeGUsICJbUkFTXTogU3lzY3RybCBlcnJvciByZXQgJWRcbiIsIHJldCk7CisJCQlnb3Rv IGVycjsKKwkJfQorCisJCWlmIChybGVuICE9IHNpemVvZihyZXNwb25zZSkpIHsKKwkJCXhlX2Vy cih4ZSwgIltSQVNdOiBTeXNjdHJsIHJlc3BvbnNlIHNpemUgbWlzbWF0Y2guIEV4cGVjdGVkICV6 dSwgZ290ICV6dVxuIiwKKwkJCSAgICAgICBzaXplb2YocmVzcG9uc2UpLCBybGVuKTsKKwkJCWdv dG8gZXJyOworCQl9CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByZXNwb25zZS5udW1fZXJyb3Jz ICYmICBpIDwgWEVfUkFTX05VTV9FUlJPUl9BUlI7IGkrKykgeworCQkJc3RydWN0IHhlX3Jhc19l cnJvcl9hcnJheSBhcnIgPSByZXNwb25zZS5lcnJvcl9hcnJbaV07CisJCQllbnVtIHhlX3Jhc19y ZWNvdmVyeV9hY3Rpb24gYWN0aW9uOworCQkJc3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyBlcnJv cl9jbGFzczsKKwkJCXU4IGNvbXBvbmVudDsKKworCQkJZXJyb3JfY2xhc3MgPSBhcnIuZXJyb3Jf Y2xhc3M7CisJCQljb21wb25lbnQgPSBlcnJvcl9jbGFzcy5jb21tb24uY29tcG9uZW50OworCisJ CQlzd2l0Y2ggKGNvbXBvbmVudCkgeworCQkJY2FzZSBYRV9SQVNfQ09NUE9ORU5UX0NPUkVfQ09N UFVURToKKwkJCQlhY3Rpb24gPSBoYW5kbGVfY29tcHV0ZV9lcnJvcnMoeGUsICZhcnIpOworCQkJ CWJyZWFrOworCQkJY2FzZSBYRV9SQVNfQ09NUE9ORU5UX1NPQ19JTlRFUk5BTDoKKwkJCQlhY3Rp b24gPSBoYW5kbGVfc29jX2ludGVybmFsX2Vycm9ycyh4ZSwgJmFycik7CisJCQkJYnJlYWs7CisJ CQlkZWZhdWx0OgorCQkJCXhlX2Vycih4ZSwgIltSQVNdOiBVbmtub3duIGVycm9yIGNvbXBvbmVu dCAldVxuIiwgY29tcG9uZW50KTsKKwkJCQlhY3Rpb24gPSBYRV9SQVNfUkVDT1ZFUllfQUNUSU9O X1JFU0VUOworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogUmV0YWluIHRoZSBoaWdo ZXN0IHNldmVyaXR5IGFjdGlvbi4gUHJvY2VzcyBhbmQgbG9nIGFsbCBlcnJvcnMKKwkJCSAqIGFu ZCB0aGVuIHRha2UgYXBwcm9wcmlhdGUgcmVjb3ZlcnkgYWN0aW9uLgorCQkJICovCisJCQlpZiAo YWN0aW9uID4gZmluYWxfYWN0aW9uKQorCQkJCWZpbmFsX2FjdGlvbiA9IGFjdGlvbjsKKwkJfQor CisJCS8qIEJyZWFrIGlmIHN5c3RlbSBjb250cm9sbGVyIGZsb29kcyByZXNwb25zZXMgKi8KKwkJ aWYgKCsrY291bnQgPiBYRV9TWVNDVFJMX0VSUk9SX0ZMT09EKSB7CisJCQl4ZV9lcnIoeGUsICJb UkFTXTogU3lzY3RybCByZXNwb25zZSBmbG9vZGluZ1xuIik7CisJCQlicmVhazsKKwkJfQorCisJ fSB3aGlsZSAocmVzcG9uc2UuYWRkaXRpb25hbF9lcnJvcnMpOworCisJcmV0dXJuIGZpbmFsX2Fj dGlvbjsKKworZXJyOgorCXJldHVybiBYRV9SQVNfUkVDT1ZFUllfQUNUSU9OX1JFU0VUOworfQor CisjaWZkZWYgQ09ORklHX1BDSUVBRVIKK3N0YXRpYyB2b2lkIGFlcl91bm1hc2tfYW5kX2Rvd25n cmFkZV9pbnRlcm5hbF9lcnJvcihzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKK3sKKwlzdHJ1Y3QgcGNp X2RldiAqcGRldiA9IHRvX3BjaV9kZXYoeGUtPmRybS5kZXYpOworCXN0cnVjdCBwY2lfZGV2ICp2 c3AsICp1c3A7CisJdTMyIGFlcl91bmNvcnJfbWFzaywgYWVyX3VuY29ycl9zZXYsIGFlcl91bmNv cnJfc3RhdHVzOworCXUxNiBhZXJfY2FwOworCisJIC8qIEdmeCBEZXZpY2UgSGllcmFyY2h5OiBV U1AtLT5WU1AtLT5TR3VuaXQgKi8KKwl2c3AgPSBwY2lfdXBzdHJlYW1fYnJpZGdlKHBkZXYpOwor CWlmICghdnNwKQorCQlyZXR1cm47CisKKwl1c3AgPSBwY2lfdXBzdHJlYW1fYnJpZGdlKHZzcCk7 CisJaWYgKCF1c3ApCisJCXJldHVybjsKKworCWFlcl9jYXAgPSB1c3AtPmFlcl9jYXA7CisKKwlp ZiAoIWFlcl9jYXApCisJCXJldHVybjsKKworCS8qCisJICogQ2xlYXIgYW55IHN0YWxlIFVuY29y cmVjdGFibGUgSW50ZXJuYWwgRXJyb3IgU3RhdHVzIGV2ZW50IGluIFVuY29ycmVjdGFibGUgRXJy b3IKKwkgKiBTdGF0dXMgUmVnaXN0ZXIuCisJICovCisJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHVz cCwgYWVyX2NhcCArIFBDSV9FUlJfVU5DT1JfU1RBVFVTLCAmYWVyX3VuY29ycl9zdGF0dXMpOwor CWlmIChhZXJfdW5jb3JyX3N0YXR1cyAmIFBDSV9FUlJfVU5DX0lOVE4pCisJCXBjaV93cml0ZV9j b25maWdfZHdvcmQodXNwLCBhZXJfY2FwICsgUENJX0VSUl9VTkNPUl9TVEFUVVMsIFBDSV9FUlJf VU5DX0lOVE4pOworCisJLyoKKwkgKiBBbGwgZXJyb3JzIGFyZSBzdGVlcmVkIHRvIFVTUCB3aGlj aCBpcyBhIFBDSWUgQUVSIENvbXBsaWFudCBkZXZpY2UuCisJICogRG93bmdyYWRlIGFsbCB0aGUg ZXJyb3JzIHRvIG5vbi1mYXRhbCB0byBwcmV2ZW50IFBDSWUgYnVzIGRyaXZlcgorCSAqIGZyb20g dHJpZ2dlcmluZyBhIFNlY29uZGFyeSBCdXMgUmVzZXQgKFNCUikuIFRoaXMgYWxsb3dzIGVycm9y CisJICogZGV0ZWN0aW9uLCBjb250YWlubWVudCBhbmQgcmVjb3ZlcnkgaW4gdGhlIGRyaXZlci4K KwkgKgorCSAqIFRoZSBVbmNvcnJlY3RhYmxlIEVycm9yIFNldmVyaXR5IFJlZ2lzdGVyIGhhcyB0 aGUgJ1VuY29ycmVjdGFibGUKKwkgKiBJbnRlcm5hbCBFcnJvciBTZXZlcml0eScgc2V0IHRvIGZh dGFsIGJ5IGRlZmF1bHQuIFNldCB0aGlzIHRvCisJICogbm9uLWZhdGFsIGFuZCB1bm1hc2sgdGhl IGVycm9yLgorCSAqLworCisJLyogSW5pdGlhbGl6ZSBVbmNvcnJlY3RhYmxlIEVycm9yIFNldmVy aXR5IFJlZ2lzdGVyICovCisJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHVzcCwgYWVyX2NhcCArIFBD SV9FUlJfVU5DT1JfU0VWRVIsICZhZXJfdW5jb3JyX3Nldik7CisJYWVyX3VuY29ycl9zZXYgJj0g flBDSV9FUlJfVU5DX0lOVE47CisJcGNpX3dyaXRlX2NvbmZpZ19kd29yZCh1c3AsIGFlcl9jYXAg KyBQQ0lfRVJSX1VOQ09SX1NFVkVSLCBhZXJfdW5jb3JyX3Nldik7CisKKwkvKiBJbml0aWFsaXpl IFVuY29ycmVjdGFibGUgRXJyb3IgTWFzayBSZWdpc3RlciAqLworCXBjaV9yZWFkX2NvbmZpZ19k d29yZCh1c3AsIGFlcl9jYXAgKyBQQ0lfRVJSX1VOQ09SX01BU0ssICZhZXJfdW5jb3JyX21hc2sp OworCWFlcl91bmNvcnJfbWFzayAmPSB+UENJX0VSUl9VTkNfSU5UTjsKKwlwY2lfd3JpdGVfY29u ZmlnX2R3b3JkKHVzcCwgYWVyX2NhcCArIFBDSV9FUlJfVU5DT1JfTUFTSywgYWVyX3VuY29ycl9t YXNrKTsKKworCXBjaV9zYXZlX3N0YXRlKHVzcCk7Cit9CisjZW5kaWYKKworLyoqCisgKiB4ZV9y YXNfaW5pdCAtIEluaXRpYWxpemUgWGUgUkFTCisgKiBAeGU6IHhlIGRldmljZSBpbnN0YW5jZQor ICoKKyAqIEluaXRpYWxpemUgWGUgUkFTCisgKi8KK3ZvaWQgeGVfcmFzX2luaXQoc3RydWN0IHhl X2RldmljZSAqeGUpCit7CisJaWYgKCF4ZS0+aW5mby5oYXNfc3lzY3RybCkKKwkJcmV0dXJuOwor CisjaWZkZWYgQ09ORklHX1BDSUVBRVIKKwlhZXJfdW5tYXNrX2FuZF9kb3duZ3JhZGVfaW50ZXJu YWxfZXJyb3IoeGUpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfcmFzLmggYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMTkxYWI4MDA4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0veGUveGVfcmFzLmgKQEAgLTAsMCArMSwxNiBAQAorLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IE1JVCAqLworLyoKKyAqIENvcHlyaWdodCDCqSAyMDI2IEludGVsIENv cnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBfWEVfUkFTX0hfCisjZGVmaW5lIF9YRV9SQVNfSF8K KworI2luY2x1ZGUgInhlX3Jhc190eXBlcy5oIgorCitzdHJ1Y3QgeGVfZGV2aWNlOworCit2b2lk IHhlX3Jhc19pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTsKK2VudW0geGVfcmFzX3JlY292ZXJ5 X2FjdGlvbiAgeGVfcmFzX3Byb2Nlc3NfZXJyb3JzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTsKKwor I2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmFzX3R5cGVzLmggYi9k cml2ZXJzL2dwdS9kcm0veGUveGVfcmFzX3R5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi42NTE1OGJmNzE2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfcmFzX3R5cGVzLmgKQEAgLTAsMCArMSwyMDMgQEAKKy8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyNiBJbnRlbCBD b3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX1hFX1JBU19UWVBFU19IXworI2RlZmluZSBfWEVf UkFTX1RZUEVTX0hfCisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisjZGVmaW5lIFhFX1JB U19OVU1fRVJST1JfQVJSCQkzCisjZGVmaW5lIFhFX1JBU19NQVhfRVJST1JfREVUQUlMUwkxNgor I2RlZmluZSBYRV9SQVNfSUVIX1BVTklUX0VSUk9SCQlCSVQoMSkKKworLyoqCisgKiBlbnVtIHhl X3Jhc19yZWNvdmVyeV9hY3Rpb24gLSBSQVMgcmVjb3ZlcnkgYWN0aW9ucworICoKKyAqIEBYRV9S QVNfUkVDT1ZFUllfQUNUSU9OX1JFQ09WRVJFRDogRXJyb3IgcmVjb3ZlcmVkCisgKiBAWEVfUkFT X1JFQ09WRVJZX0FDVElPTl9SRVNFVDogUmVxdWlyZXMgcmVzZXQKKyAqIEBYRV9SQVNfUkVDT1ZF UllfQUNUSU9OX0RJU0NPTk5FQ1Q6IFJlcXVpcmVzIGRpc2Nvbm5lY3QKKyAqIEBYRV9SQVNfUkVD T1ZFUllfQUNUSU9OX01BWDogTWF4IGFjdGlvbiB2YWx1ZQorICoKKyAqIFRoaXMgZW51bSBkZWZp bmVzIHRoZSBwb3NzaWJsZSByZWNvdmVyeSBhY3Rpb25zIHRoYXQgY2FuIGJlIHRha2VuIGluIHJl c3BvbnNlCisgKiB0byBSQVMgZXJyb3JzLgorICovCitlbnVtIHhlX3Jhc19yZWNvdmVyeV9hY3Rp b24geworCVhFX1JBU19SRUNPVkVSWV9BQ1RJT05fUkVDT1ZFUkVEID0gMCwKKwlYRV9SQVNfUkVD T1ZFUllfQUNUSU9OX1JFU0VULAorCVhFX1JBU19SRUNPVkVSWV9BQ1RJT05fRElTQ09OTkVDVCwK KwlYRV9SQVNfUkVDT1ZFUllfQUNUSU9OX01BWAorfTsKKworLyoqCisgKiBzdHJ1Y3QgeGVfcmFz X2Vycm9yX2NvbW1vbiAtIENvbW1vbiBSQVMgZXJyb3IgY2xhc3MKKyAqCisgKiBUaGlzIHN0cnVj dHVyZSBjb250YWlucyBlcnJvciBzZXZlcml0eSBhbmQgY29tcG9uZW50IGluZm9ybWF0aW9uCisg KiBhY3Jvc3MgYWxsIHByb2R1Y3RzCisgKi8KK3N0cnVjdCB4ZV9yYXNfZXJyb3JfY29tbW9uIHsK KwkvKiogQHNldmVyaXR5OiBFcnJvciBTZXZlcml0eSAqLworCXU4IHNldmVyaXR5OworCS8qKiBA Y29tcG9uZW50OiBJUCB3aGVyZSB0aGUgZXJyb3Igb3JpZ2luYXRlZCAqLworCXU4IGNvbXBvbmVu dDsKK30gX19wYWNrZWQ7CisKKy8qKgorICogc3RydWN0IHhlX3Jhc19lcnJvcl91bml0IC0gRXJy b3IgdW5pdCBpbmZvcm1hdGlvbgorICovCitzdHJ1Y3QgeGVfcmFzX2Vycm9yX3VuaXQgeworCS8q KiBAdGlsZTogVGlsZSBpZGVudGlmaWVyICovCisJdTggdGlsZTsKKwkvKiogQGluc3RhbmNlOiBJ bnN0YW5jZSBpZGVudGlmaWVyIHdpdGhpbiBhIGNvbXBvbmVudCAqLworCXUzMiBpbnN0YW5jZTsK K30gX19wYWNrZWQ7CisKKy8qKgorICogc3RydWN0IHhlX3Jhc19lcnJvcl9jYXVzZSAtIEVycm9y IGNhdXNlIGluZm9ybWF0aW9uCisgKi8KK3N0cnVjdCB4ZV9yYXNfZXJyb3JfY2F1c2UgeworCS8q KiBAY2F1c2U6IENhdXNlICovCisJdTMyIGNhdXNlOworCS8qKiBAcmVzZXJ2ZWQ6IEZvciBmdXR1 cmUgdXNlICovCisJdTggcmVzZXJ2ZWQ7Cit9IF9fcGFja2VkOworCisvKioKKyAqIHN0cnVjdCB4 ZV9yYXNfZXJyb3JfcHJvZHVjdCAtIEVycm9yIGZpZWxkcyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0 aGUgcHJvZHVjdAorICovCitzdHJ1Y3QgeGVfcmFzX2Vycm9yX3Byb2R1Y3QgeworCS8qKiBAdW5p dDogVW5pdCB3aXRoaW4gSVAgYmxvY2sgKi8KKwlzdHJ1Y3QgeGVfcmFzX2Vycm9yX3VuaXQgdW5p dDsKKwkvKiogQGVycm9yX2NhdXNlOiBDYXVzZS9jaGVja2VyICovCisJc3RydWN0IHhlX3Jhc19l cnJvcl9jYXVzZSBlcnJvcl9jYXVzZTsKK30gX19wYWNrZWQ7CisKKy8qKgorICogc3RydWN0IHhl X3Jhc19lcnJvcl9jbGFzcyAtIENvbXBsZXRlIFJBUyBFcnJvciBDbGFzcworICoKKyAqIFRoaXMg c3RydWN0dXJlIHByb3ZpZGVzIHRoZSBjb21wbGV0ZSBlcnJvciBjbGFzc2lmaWNhdGlvbiBieSBj b21iaW5pbmcKKyAqIHRoZSBjb21tb24gZXJyb3IgY2xhc3Mgd2l0aCB0aGUgcHJvZHVjdC1zcGVj aWZpYyBlcnJvciBjbGFzcy4KKyAqLworc3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyB7CisJLyoq IEBjb21tb246IENvbW1vbiBlcnJvciBzZXZlcml0eSBhbmQgY29tcG9uZW50ICovCisJc3RydWN0 IHhlX3Jhc19lcnJvcl9jb21tb24gY29tbW9uOworCS8qKiBAcHJvZHVjdDogUHJvZHVjdC1zcGVj aWZpYyB1bml0IGFuZCBjYXVzZSAqLworCXN0cnVjdCB4ZV9yYXNfZXJyb3JfcHJvZHVjdCBwcm9k dWN0OworfSBfX3BhY2tlZDsKKworLyoqCisgKiBzdHJ1Y3QgeGVfcmFzX2Vycm9yX2FycmF5IC0g RGV0YWlscyBvZiB0aGUgZXJyb3IgdHlwZXMKKyAqLworc3RydWN0IHhlX3Jhc19lcnJvcl9hcnJh eSB7CisJLyoqIEBjb3VudGVyX3ZhbHVlOiBDb3VudGVyIHZhbHVlIG9mIHRoZSByZXR1cm5lZCBl cnJvciAqLworCXUzMiBjb3VudGVyX3ZhbHVlOworCS8qKiBAZXJyb3JfY2xhc3M6IEVycm9yIGNs YXNzICovCisJc3RydWN0IHhlX3Jhc19lcnJvcl9jbGFzcyBlcnJvcl9jbGFzczsKKwkvKiogQHRp bWVzdGFtcDogVGltZXN0YW1wICovCisJdTY0IHRpbWVzdGFtcDsKKwkvKiogQGVycm9yX2RldGFp bHM6IEVycm9yIGRldGFpbHMgc3BlY2lmaWMgdG8gdGhlIGNsYXNzICovCisJdTMyIGVycm9yX2Rl dGFpbHNbWEVfUkFTX01BWF9FUlJPUl9ERVRBSUxTXTsKK30gX19wYWNrZWQ7CisKKy8qKgorICog c3RydWN0IHhlX3Jhc19nZXRfZXJyb3JfcmVzcG9uc2UgLSBSZXNwb25zZSBmb3IgWEVfU1lTQ1RS TF9HRVRfU09DX0VSUk9SCisgKi8KK3N0cnVjdCB4ZV9yYXNfZ2V0X2Vycm9yX3Jlc3BvbnNlIHsK KwkvKiogQG51bV9lcnJvcnM6IE51bWJlciBvZiBlcnJvcnMgcmVwb3J0ZWQgaW4gdGhpcyByZXNw b25zZSAqLworCXU4IG51bV9lcnJvcnM7CisJLyoqIEBhZGRpdGlvbmFsX2Vycm9yczogSW5kaWNh dGVzIGlmIHRoZSBlcnJvcnMgYXJlIHBlbmRpbmcgKi8KKwl1OCBhZGRpdGlvbmFsX2Vycm9yczsK KwkvKiogQGVycm9yX2FycjogQXJyYXkgb2YgdXAgdG8gMyBlcnJvcnMgKi8KKwlzdHJ1Y3QgeGVf cmFzX2Vycm9yX2FycmF5IGVycm9yX2FycltYRV9SQVNfTlVNX0VSUk9SX0FSUl07Cit9IF9fcGFj a2VkOworCisvKioKKyAqIHN0cnVjdCB4ZV9yYXNfY29tcHV0ZV9lcnJvciAtIEVycm9yIGRldGFp bHMgb2YgQ29yZSBDb21wdXRlIGVycm9yCisgKi8KK3N0cnVjdCB4ZV9yYXNfY29tcHV0ZV9lcnJv ciB7CisJLyoqIEBlcnJvcl9sb2dfaGVhZGVyOiBFcnJvciBTb3VyY2UgYW5kIHR5cGUgKi8KKwl1 MzIgZXJyb3JfbG9nX2hlYWRlcjsKKwkvKiogQGludGVybmFsX2Vycm9yX2xvZzogSW50ZXJuYWwg RXJyb3IgbG9nICovCisJdTMyIGludGVybmFsX2Vycm9yX2xvZzsKKwkvKiogQGZhYnJpY19sb2c6 IEZhYnJpYyBFcnJvciBsb2cgKi8KKwl1MzIgZmFicmljX2xvZzsKKwkvKiogQGludGVybmFsX2Vy cm9yX2FkZHJfbG9nMDogSW50ZXJuYWwgRXJyb3IgYWRkciBsb2cgKi8KKwl1MzIgaW50ZXJuYWxf ZXJyb3JfYWRkcl9sb2cwOworCS8qKiBAaW50ZXJuYWxfZXJyb3JfYWRkcl9sb2cxOiBJbnRlcm5h bCBFcnJvciBhZGRyIGxvZyAqLworCXUzMiBpbnRlcm5hbF9lcnJvcl9hZGRyX2xvZzE7CisJLyoq IEBwYWNrZXRfbG9nMDogUGFja2V0IGxvZyAqLworCXUzMiBwYWNrZXRfbG9nMDsKKwkvKiogQHBh Y2tldF9sb2cxOiBQYWNrZXQgbG9nICovCisJdTMyIHBhY2tldF9sb2cxOworCS8qKiBAcGFja2V0 X2xvZzI6IFBhY2tldCBsb2cgKi8KKwl1MzIgcGFja2V0X2xvZzI7CisJLyoqIEBwYWNrZXRfbG9n MzogUGFja2V0IGxvZyAqLworCXUzMiBwYWNrZXRfbG9nMzsKKwkvKiogQHBhY2tldF9sb2c0OiBQ YWNrZXQgbG9nICovCisJdTMyIHBhY2tldF9sb2c0OworCS8qKiBAbWlzY19sb2cwOiBNaXNjIGxv ZyAqLworCXUzMiBtaXNjX2xvZzA7CisJLyoqIEBtaXNjX2xvZzE6IE1pc2MgbG9nICovCisJdTMy IG1pc2NfbG9nMTsKKwkvKiogQHNwYXJlX2xvZzA6IFNwYXJlIGxvZyAqLworCXUzMiBzcGFyZV9s b2cwOworCS8qKiBAc3BhcmVfbG9nMTogU3BhcmUgbG9nICovCisJdTMyIHNwYXJlX2xvZzE7CisJ LyoqIEBzcGFyZV9sb2cyOiBTcGFyZSBsb2cgKi8KKwl1MzIgc3BhcmVfbG9nMjsKKwkvKiogQHNw YXJlX2xvZzM6IFNwYXJlIGxvZyAqLworCXUzMiBzcGFyZV9sb2czOworfSBfX3BhY2tlZDsKKwor LyoqCisgKiBzdHJ1Y3QgeGVfcmFzX3NvY19lcnJvcl9zb3VyY2UgLSBTb3VyY2Ugb2YgU09DIGVy cm9yCisgKi8KK3N0cnVjdCB4ZV9yYXNfc29jX2Vycm9yX3NvdXJjZSB7CisJLyoqIEBjc2M6IENT QyBlcnJvciAqLworCXUzMiBjc2M6MTsKKwkvKiogQHNvYzogU09DIGVycm9yICovCisJdTMyIHNv YzoxOworCS8qKiBAcmVzZXJ2ZWQ6IFJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisJdTMyIHJl c2VydmVkOjMwOworfSBfX3BhY2tlZDsKKworLyoqCisgKiBzdHJ1Y3QgeGVfcmFzX3NvY19lcnJv ciAtIFNPQyBlcnJvciBkZXRhaWxzCisgKi8KK3N0cnVjdCB4ZV9yYXNfc29jX2Vycm9yIHsKKwkv KiogQGVycm9yX3NvdXJjZTogRXJyb3IgU291cmNlICovCisJc3RydWN0IHhlX3Jhc19zb2NfZXJy b3Jfc291cmNlIGVycm9yX3NvdXJjZTsKKwkvKiogQGFkZGl0aW9uYWxfZGV0YWlsczogQWRkaXRp b25hbCBkZXRhaWxzICovCisJdTMyIGFkZGl0aW9uYWxfZGV0YWlsc1sxNV07Cit9IF9fcGFja2Vk OworCisvKioKKyAqIHN0cnVjdCB4ZV9yYXNfY3NjX2Vycm9yIC0gQ1NDIGVycm9yIGRldGFpbHMK KyAqLworc3RydWN0IHhlX3Jhc19jc2NfZXJyb3IgeworCS8qKiBAaGVjX3VuY29ycl9lcnJfc3Rh dHVzOiBDU0MgZXJyb3IgKi8KKwl1MzIgaGVjX3VuY29ycl9lcnJfc3RhdHVzOworCS8qKiBAaGVj X3VuY29ycl9md19lcnJfZHcwOiBDU0MgZi93IGVycm9yICovCisJdTMyIGhlY191bmNvcnJfZndf ZXJyX2R3MDsKK30gX19wYWNrZWQ7CisKKy8qKgorICogc3RydWN0IHhlX3Jhc19pZWhfZXJyb3Ig LSBTb0MgSUVIIChJbnRlZ3JhdGVkIEVycm9yIEhhbmRsZXIpIGRldGFpbHMKKyAqLworc3RydWN0 IHhlX3Jhc19pZWhfZXJyb3IgeworCS8qKiBAaWVoX2luc3RhbmNlOiBJRUggaW5zdGFuY2UgKi8K Kwl1MzIgaWVoX2luc3RhbmNlOjI7CisJLyoqIEByZXNlcnZlZDogUmVzZXJ2ZWQgZm9yIGZ1dHVy ZSB1c2UgKi8KKwl1MzIgcmVzZXJ2ZWQ6MzA7CisJLyoqIEBnbG9iYWxfZXJyb3Jfc3RhdHVzOiBH bG9iYWwgZXJyb3Igc3RhdHVzICovCisJdTMyIGdsb2JhbF9lcnJvcl9zdGF0dXM7CisJLyoqIEBs b2NhbF9lcnJvcl9zdGF0dXM6IExvY2FsIGVycm9yIHN0YXR1cyAqLworCXUzMiBsb2NhbF9lcnJv cl9zdGF0dXM7CisJLyoqIEBnZXJyX21hc2s6IEdsb2JhbCBlcnJvciBtYXNrICovCisJdTMyIGdl cnJfbWFzazsKKwkvKiogQGFkZGl0aW9uYWxfaW5mbzogQWRkaXRpb25hbCBpbmZvcm1hdGlvbiAq LworCXUzMiBhZGRpdGlvbmFsX2luZm9bMTBdOworfSBfX3BhY2tlZDsKKworI2VuZGlmCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3Vydml2YWJpbGl0eV9tb2RlLmMgYi9kcml2 ZXJzL2dwdS9kcm0veGUveGVfc3Vydml2YWJpbGl0eV9tb2RlLmMKaW5kZXggZGI2NGNhYzM5Yzk0 Li5hZDUxYTU4ODMxYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9zdXJ2aXZh YmlsaXR5X21vZGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3Vydml2YWJpbGl0eV9t b2RlLmMKQEAgLTk4LDYgKzk4LDE1IEBACiAgKgkjIGNhdCAvc3lzL2J1cy9wY2kvZGV2aWNlcy88 ZGV2aWNlPi9zdXJ2aXZhYmlsaXR5X21vZGUKICAqCSAgUnVudGltZQogICoKKyAqIE9uIHNvbWUg Q1NDIGZpcm13YXJlIGVycm9ycywgUENPREUgc2V0cyBGRE8gbW9kZSBhbmQgdGhlIG9ubHkgcmVj b3ZlcnkgcG9zc2libGUgaXMgdGhyb3VnaAorICogZmlybXdhcmUgZmxhc2ggdXNpbmcgU1BJIGRy aXZlci4gVXNlcnNwYWNlIGNhbiBjaGVjayBpZiBGRE8gbW9kZSBpcyBzZXQgYnkgY2hlY2tpbmcg dGhlIGJlbG93CisgKiBzeXNmcyBlbnRyeS4KKyAqCisgKiAuLiBjb2RlLWJsb2NrOjogc2hlbGwK KyAqCisgKgkjIGNhdCAvc3lzL2J1cy9wY2kvZGV2aWNlcy88ZGV2aWNlPi9zdXJ2aXZhYmlsaXR5 X2luZm8vZmRvX21vZGUKKyAqICAgICAgIGVuYWJsZWQKKyAqCiAgKiBXaGVuIHN1Y2ggZXJyb3Jz IG9jY3VyLCB1c2Vyc3BhY2UgaXMgbm90aWZpZWQgd2l0aCB0aGUgZHJtIGRldmljZSB3ZWRnZWQg dWV2ZW50IGFuZCBydW50aW1lCiAgKiBzdXJ2aXZhYmlsaXR5IG1vZGUuIFVzZXIgY2FuIHRoZW4g aW5pdGlhdGUgYSBmaXJtd2FyZSBmbGFzaCB1c2luZyB1c2Vyc3BhY2UgdG9vbHMgbGlrZSBmd3Vw ZAogICogdG8gcmVzdG9yZSBkZXZpY2UgdG8gbm9ybWFsIG9wZXJhdGlvbi4KQEAgLTI5Niw3ICsz MDUsOCBAQCBzdGF0aWMgaW50IGNyZWF0ZV9zdXJ2aXZhYmlsaXR5X3N5c2ZzKHN0cnVjdCBwY2lf ZGV2ICpwZGV2KQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpZiAoY2hlY2tfYm9vdF9m YWlsdXJlKHhlKSkgeworCS8qIFN1cnZpdmFiaWxpdHkgaW5mbyBpcyBub3QgcmVxdWlyZWQgaWYg ZW5hYmxlZCB2aWEgY29uZmlnZnMgKi8KKwlpZiAoIXhlX2NvbmZpZ2ZzX2dldF9zdXJ2aXZhYmls aXR5X21vZGUocGRldikpIHsKIAkJcmV0ID0gZGV2bV9kZXZpY2VfYWRkX2dyb3VwKGRldiwgJnN1 cnZpdmFiaWxpdHlfaW5mb19ncm91cCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N5c2N0cmxfbWFpbGJveF90eXBlcy5oIGIv ZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N5c2N0cmxfbWFpbGJveF90eXBlcy5oCmluZGV4IDg5NDU2 YWVjNjA5Ny4uYTQyNjA5MjBkZmI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVf c3lzY3RybF9tYWlsYm94X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N5c2N0 cmxfbWFpbGJveF90eXBlcy5oCkBAIC0xMCw2ICsxMCwxOSBAQAogCiAjaW5jbHVkZSAiYWJpL3hl X3N5c2N0cmxfYWJpLmgiCiAKKy8qKgorICogZW51bSB4ZV9zeXNjdHJsX21haWxib3hfY29tbWFu ZF9pZCAtIFJBUyBDb21tYW5kIElEJ3MgZm9yIEdGU1AgZ3JvdXAKKyAqCisgKiBAWEVfU1lTQ1RS TF9DTURfR0VUX1NPQ19FUlJPUjogR2V0IGJhc2ljIGVycm9yIGluZm9ybWF0aW9uCisgKi8KK2Vu dW0geGVfc3lzY3RybF9tYWlsYm94X2NvbW1hbmRfaWQgeworCVhFX1NZU0NUUkxfQ01EX0dFVF9T T0NfRVJST1IgPSAxCit9OworCitlbnVtIHhlX3N5c2N0cmxfZ3JvdXAgeworCVhFX1NZU0NUUkxf R1JPVVBfR0ZTUCA9IDEKK307CisKIC8qKgogICogc3RydWN0IHhlX3N5c2N0cmxfbWFpbGJveF9j b21tYW5kIC0gU3lzdGVtIENvbnRyb2xsZXIgbWFpbGJveCBjb21tYW5kCiAgKi8KLS0gCjIuMzQu MQoK