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 A5A19EDEC1B for ; Wed, 4 Mar 2026 07:13:13 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 120D810E239; Wed, 4 Mar 2026 07:13:13 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="benLCUBj"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id 946FE10E0D8; Wed, 4 Mar 2026 07:13:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1772608391; x=1804144391; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jOMh4xjqADLDqb9Z1RSPT3Geb7JMLebf2QhRw/432KQ=; b=benLCUBj1OCDXHNzVLdDh5E1ig3hbTAnbaQdBZg8AHRnfkL73ALS0dE+ K3o8sAZkand2MJP+Z6RggupcH8loDmvuImdm8pRByPA1x3kVIlg7ffoBt z9NZNQzT4u646XRkr4Nfj/OA8X3HA3qPFZcH/VzR0NFPGiJwgN+n2l+hU NyWTqYLCJzQGHEqx6NXdOQ6VO2FmPAvxB7VuC6V3snJ8p1IUS8lffk3we gEyrC91L9YsacjwzYV44lRDEy7506VgAeynqrCpff0aRg+tOT93keqKue zalLLDs8kuZMv4LusC1HhK0mfEyryhqHxKyTHLXPFC6kA7hXOt/9IPEl/ g==; X-CSE-ConnectionGUID: ztt73wdITQaG61DZNTpjpg== X-CSE-MsgGUID: JmP+/Br5S2+qc/MhN2JNsg== X-IronPort-AV: E=McAfee;i="6800,10657,11718"; a="61236947" X-IronPort-AV: E=Sophos;i="6.21,323,1763452800"; d="scan'208";a="61236947" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2026 23:13:10 -0800 X-CSE-ConnectionGUID: QA6YJ09UQr+ypO6UZRl0pw== X-CSE-MsgGUID: BUd3wLHeS0qNAHj7in/bHw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,323,1763452800"; d="scan'208";a="256141137" Received: from rtauro-desk.iind.intel.com ([10.190.238.50]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2026 23:13:04 -0800 From: Riana Tauro To: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: aravind.iddamsetty@linux.intel.com, anshuman.gupta@intel.com, rodrigo.vivi@intel.com, joonas.lahtinen@linux.intel.com, simona.vetter@ffwll.ch, airlied@gmail.com, pratik.bari@intel.com, joshua.santosh.ranjan@intel.com, ashwin.kumar.kulkarni@intel.com, shubham.kumar@intel.com, ravi.kishore.koppuravuri@intel.com, raag.jadav@intel.com, anvesh.bakwad@intel.com, Zack McKevitt , Lijo Lazar , Hawking Zhang , Jakub Kicinski , "David S. Miller" , Paolo Abeni , Eric Dumazet , netdev@vger.kernel.org, Riana Tauro Subject: [PATCH v10 1/5] drm/ras: Introduce the DRM RAS infrastructure over generic netlink Date: Wed, 4 Mar 2026 13:14:08 +0530 Message-ID: <20260304074412.464435-8-riana.tauro@intel.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260304074412.464435-7-riana.tauro@intel.com> References: <20260304074412.464435-7-riana.tauro@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" RnJvbTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgoKSW50cm9kdWNlcyB0 aGUgRFJNIFJBUyBpbmZyYXN0cnVjdHVyZSBvdmVyIGdlbmVyaWMgbmV0bGluay4KClRoZSBuZXcg aW50ZXJmYWNlIGFsbG93cyBkcml2ZXJzIHRvIGV4cG9zZSBSQVMgbm9kZXMgYW5kIHRoZWlyCmFz c29jaWF0ZWQgZXJyb3IgY291bnRlcnMgdG8gdXNlcnNwYWNlIGluIGEgc3RydWN0dXJlZCBhbmQg ZXh0ZW5zaWJsZQp3YXkuIEVhY2ggZHJtX3JhcyBub2RlIGNhbiByZWdpc3RlciBpdHMgb3duIHNl dCBvZiBlcnJvciBjb3VudGVycywgd2hpY2gKYXJlIHRoZW4gZGlzY292ZXJhYmxlIGFuZCBxdWVy eWFibGUgdGhyb3VnaCBuZXRsaW5rIG9wZXJhdGlvbnMuIFRoaXMKbGF5cyB0aGUgZ3JvdW5kd29y ayBmb3IgcmVwb3J0aW5nIGFuZCBtYW5hZ2luZyBoYXJkd2FyZSBlcnJvciBzdGF0ZXMKaW4gYSB1 bmlmaWVkIG1hbm5lciBhY3Jvc3MgZGlmZmVyZW50IERSTSBkcml2ZXJzLgoKQ3VycmVudGx5IGl0 IG9ubHkgc3VwcG9ydHMgZXJyb3ItY291bnRlciBub2Rlcy4gQnV0IGl0IGNhbiBiZQpleHRlbmRl ZCBsYXRlci4KClRoZSByZWdpc3RyYXRpb24gaXMgYWxzbyBub3QgdGllZCB0byBhbnkgZHJtIG5v ZGUsIHNvIGl0IGNhbiBiZQp1c2VkIGJ5IGFjY2VsIGRldmljZXMgYXMgd2VsbC4KCkl0IHVzZXMg dGhlIG5ldyBhbmQgbWFuZGF0b3J5IFlBTUwgZGVzY3JpcHRpb24gZm9ybWF0IHN0b3JlZCBpbgpE b2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvLiBUaGlzIGZvcmNlcyBhIHNpbmdsZSBnZW5lcmlj IG5ldGxpbmsKZmFtaWx5IG5hbWVzcGFjZSBmb3IgdGhlIGVudGlyZSBkcm06ICJkcm0tcmFzIi4K QnV0IG11bHRpcGxlLWVuZHBvaW50cyBhcmUgc3VwcG9ydGVkIHdpdGhpbiB0aGUgc2luZ2xlIGZh bWlseS4KCkFueSBtb2RpZmljYXRpb24gdG8gdGhpcyBBUEkgbmVlZHMgdG8gYmUgYXBwbGllZCB0 bwpEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIGJlZm9yZSByZWdlbmVy YXRpbmcgdGhlCmNvZGU6CgokIHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IC0tc3Bl YyBcCiBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIC0tbW9kZSB1YXBp IC0taGVhZGVyIFwKIC1vIGluY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oCgokIHRvb2xzL25ldC95 bmwvcHl5bmwveW5sX2dlbl9jLnB5IC0tc3BlYyBcCiAgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3Nw ZWNzL2RybV9yYXMueWFtbCAtLW1vZGUga2VybmVsIFwKICAtLWhlYWRlciAtbyBkcml2ZXJzL2dw dS9kcm0vZHJtX3Jhc19ubC5oCgokIHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IC0t c3BlYyBcCiAgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbCBcCiAgLS1t b2RlIGtlcm5lbCAtLXNvdXJjZSAtbyBkcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jCgpDYzog WmFjayBNY0tldml0dCA8emFjaGFyeS5tY2tldml0dEBvc3MucXVhbGNvbW0uY29tPgpDYzogTGlq byBMYXphciA8bGlqby5sYXphckBhbWQuY29tPgpDYzogSGF3a2luZyBaaGFuZyA8SGF3a2luZy5a aGFuZ0BhbWQuY29tPgpDYzogSmFrdWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9yZz4KQ2M6IERh dmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KQ2M6IFBhb2xvIEFiZW5pIDxwYWJl bmlAcmVkaGF0LmNvbT4KQ2M6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQ2M6 IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKQ28tZGV2ZWxvcGVkLWJ5OiBBcmF2aW5kIElkZGFtc2V0 dHkgPGFyYXZpbmQuaWRkYW1zZXR0eUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFy YXZpbmQgSWRkYW1zZXR0eSA8YXJhdmluZC5pZGRhbXNldHR5QGxpbnV4LmludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBSaWFuYSBUYXVybyA8cmlhbmEudGF1cm9AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTog WmFjayBNY0tldml0dCA8emFjaGFyeS5tY2tldml0dEBvc3MucXVhbGNvbW0uY29tPgpBY2tlZC1i eTogSmFrdWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9yZz4KLS0tCnYyOiBmaXggZG9jIGFuZCBt ZW1vcnkgbGVhawogICAgdXNlIHhlX2Zvcl9lYWNoX3N0YXJ0CiAgICB1c2Ugc3RhbmRhcmQgZ2Vu bG1zZ19pcHV0IChKYWt1YiBLaWNpbnNraSkKCnYzOiBhZGQgZG9jdW1lbnRhdGlvbiB0byBpbmRl eAogICAgbW9kaWZ5IGRvY3VtZW50YXRpb24gdG8gbWVudGlvbiB1QVBJIHJlcXVpcmVtZW50cyAo Um9kcmlnbykKCnY0OiBmaXggdHlwbyAoWmFjaykKCnY1OiBmaXgga2VybmVsLXJvYm90IHJlcG9y dGVkIGh0bWxkb2NzIGVycm9yCiAgICBmaXgga2VybmVsLXJvYm90IHJlcG9ydGVkIGJ1aWxkIGVy cm9yIG9uIGNza3kgYXJjaAoKdjY6IHJlZ2VuZXJhdGUgZmlsZXMKICAgIGZpeCB5YW1sbGludCB3 YXJuaW5ncwogICAgdXNlIGdldC1lcnJvci1jb3VudGVyIGZvciBib3RoIGRvL2R1bXAgZnVuY3Rp b24gY2FsbHMKICAgIGZpeCBrZXJuZWwtZG9jIChKYWt1YikKCnY3OiBGaXggeW5sLXJlZ2VuLnNo IHJlcG9ydGVkIGlzc3VlCiAgICBtb3ZlIGRybV9yYXNfbmwuaCBmcm9tIGluY2x1ZGUvIHRvIGRy bS8KICAgIHVzZSAtbyB0byBnZW5lcmF0ZSBmaWxlcyBhbmQgZml4IGNvbW1pdCBtZXNzYWdlIChK YWt1YikKCnY4OiB1c2UgR0VOTF9SRVFfQVRUUl9DSEVDSyAoSmFrdWIpIAotLS0KIERvY3VtZW50 YXRpb24vZ3B1L2RybS1yYXMucnN0ICAgICAgICAgICAgfCAxMDMgKysrKysrKwogRG9jdW1lbnRh dGlvbi9ncHUvaW5kZXgucnN0ICAgICAgICAgICAgICB8ICAgMSArCiBEb2N1bWVudGF0aW9uL25l dGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sIHwgMTE1ICsrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0v S2NvbmZpZyAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyAgICAg ICAgICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jICAgICAgICAgICAg ICAgIHwgMzU0ICsrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Jh c19nZW5sX2ZhbWlseS5jICAgIHwgIDQyICsrKwogZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwu YyAgICAgICAgICAgICB8ICA1NiArKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oICAg ICAgICAgICAgIHwgIDI0ICsrCiBpbmNsdWRlL2RybS9kcm1fcmFzLmggICAgICAgICAgICAgICAg ICAgIHwgIDc1ICsrKysrCiBpbmNsdWRlL2RybS9kcm1fcmFzX2dlbmxfZmFtaWx5LmggICAgICAg IHwgIDE3ICsrCiBpbmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaCAgICAgICAgICAgICAgIHwgIDQ5 ICsrKysKIDEzIGZpbGVzIGNoYW5nZWQsIDg1MyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBE b2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9kcm1fcmFzX2dlbmxfZmFtaWx5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vZHJtX3Jhc19ubC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2RybV9yYXNfbmwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV9yYXMuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV9yYXNfZ2VubF9mYW1pbHkuaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oCgpkaWZmIC0tZ2l0IGEv RG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFz LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcwYjI0NmE3OGZj OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0CkBAIC0w LDAgKzEsMTAzIEBACisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorRFJNIFJBUyBvdmVyIEdlbmVyaWMgTmV0bGluawor PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgRFJNIFJBUyAoUmVsaWFiaWxpdHks IEF2YWlsYWJpbGl0eSwgU2VydmljZWFiaWxpdHkpIGludGVyZmFjZSBwcm92aWRlcyBhCitzdGFu ZGFyZGl6ZWQgd2F5IGZvciBHUFUvYWNjZWxlcmF0b3IgZHJpdmVycyB0byBleHBvc2UgZXJyb3Ig Y291bnRlcnMgYW5kCitvdGhlciByZWxpYWJpbGl0eSBub2RlcyB0byB1c2VyIHNwYWNlIHZpYSBH ZW5lcmljIE5ldGxpbmsuIFRoaXMgYWxsb3dzCitkaWFnbm9zdGljIHRvb2xzLCBtb25pdG9yaW5n IGRhZW1vbnMsIG9yIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcXVlcnkgaGFyZHdhcmUKK2hlYWx0 aCBpbiBhIHVuaWZvcm0gd2F5IGFjcm9zcyBkaWZmZXJlbnQgRFJNIGRyaXZlcnMuCisKK0tleSBH b2FsczoKKworKiBQcm92aWRlIGEgc3RhbmRhcmRpemVkIFJBUyBzb2x1dGlvbiBmb3IgR1BVIGFu ZCBhY2NlbGVyYXRvciBkcml2ZXJzLCBlbmFibGluZworICBkYXRhIGNlbnRlciBtb25pdG9yaW5n IGFuZCByZWxpYWJpbGl0eSBvcGVyYXRpb25zLgorKiBJbXBsZW1lbnQgYSBzaW5nbGUgZHJtLXJh cyBHZW5lcmljIE5ldGxpbmsgZmFtaWx5IHRvIG1lZXQgbW9kZXJuIE5ldGxpbmsgWUFNTAorICBz cGVjaWZpY2F0aW9ucyBhbmQgY2VudHJhbGl6ZSBhbGwgUkFTLXJlbGF0ZWQgY29tbXVuaWNhdGlv biBpbiBvbmUgbmFtZXNwYWNlLgorKiBTdXBwb3J0IGEgYmFzaWMgZXJyb3IgY291bnRlciBpbnRl cmZhY2UsIGFkZHJlc3NpbmcgdGhlIGltbWVkaWF0ZSwgZXNzZW50aWFsCisgIG1vbml0b3Jpbmcg bmVlZHMuCisqIE9mZmVyIGEgZmxleGlibGUsIGZ1dHVyZS1wcm9vZiBpbnRlcmZhY2UgdGhhdCBj YW4gYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydAorICBhZGRpdGlvbmFsIHR5cGVzIG9mIFJBUyBkYXRh IGluIHRoZSBmdXR1cmUuCisqIEFsbG93IG11bHRpcGxlIG5vZGVzIHBlciBkcml2ZXIsIGVuYWJs aW5nIGRyaXZlcnMgdG8gcmVnaXN0ZXIgc2VwYXJhdGUKKyAgbm9kZXMgZm9yIGRpZmZlcmVudCBJ UCBibG9ja3MsIHN1Yi1ibG9ja3MsIG9yIG90aGVyIGxvZ2ljYWwgc3ViZGl2aXNpb25zCisgIGFz IGFwcGxpY2FibGUuCisKK05vZGVzCis9PT09PQorCitOb2RlcyBhcmUgbG9naWNhbCBhYnN0cmFj dGlvbnMgcmVwcmVzZW50aW5nIGFuIGVycm9yIHR5cGUgb3IgZXJyb3Igc291cmNlIHdpdGhpbgor dGhlIGRldmljZS4gQ3VycmVudGx5LCBvbmx5IGVycm9yIGNvdW50ZXIgbm9kZXMgaXMgc3VwcG9y dGVkLgorCitEcml2ZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgYW5kIHVucmVn aXN0ZXJpbmcgbm9kZXMgdmlhIHRoZQorYGRybV9yYXNfbm9kZV9yZWdpc3RlcigpYCBhbmQgYGRy bV9yYXNfbm9kZV91bnJlZ2lzdGVyKClgIEFQSXMuCisKK05vZGUgTWFuYWdlbWVudAorLS0tLS0t LS0tLS0tLS0tLS0tLQorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9yYXMu YworICAgOmRvYzogRFJNIFJBUyBOb2RlIE1hbmFnZW1lbnQKKy4uIGtlcm5lbC1kb2M6OiBkcml2 ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jCisgICA6aW50ZXJuYWw6CisKK0dlbmVyaWMgTmV0bGluayBV c2FnZQorPT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBpbnRlcmZhY2UgaXMgaW1wbGVtZW50 ZWQgYXMgYSBHZW5lcmljIE5ldGxpbmsgZmFtaWx5IG5hbWVkIGBgZHJtLXJhc2BgLgorVXNlciBz cGFjZSB0b29scyBjYW46CisKKyogTGlzdCByZWdpc3RlcmVkIG5vZGVzIHdpdGggdGhlIGBgbGlz dC1ub2Rlc2BgIGNvbW1hbmQuCisqIExpc3QgYWxsIGVycm9yIGNvdW50ZXJzIGluIGFuIG5vZGUg d2l0aCB0aGUgYGBnZXQtZXJyb3ItY291bnRlcmBgIGNvbW1hbmQgd2l0aCBgYG5vZGUtaWRgYAor ICBhcyBhIHBhcmFtZXRlci4KKyogUXVlcnkgc3BlY2lmaWMgZXJyb3IgY291bnRlciB2YWx1ZXMg d2l0aCB0aGUgYGBnZXQtZXJyb3ItY291bnRlcmBgIGNvbW1hbmQsIHVzaW5nIGJvdGgKKyAgYGBu b2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRgYCBhcyBwYXJhbWV0ZXJzLgorCitZQU1MLWJhc2VkIElu dGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGludGVyZmFjZSBpcyBkZXNjcmli ZWQgaW4gYSBZQU1MIHNwZWNpZmljYXRpb24gYGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3Mv ZHJtX3Jhcy55YW1sYGAKKworVGhpcyBZQU1MIGlzIHVzZWQgdG8gYXV0by1nZW5lcmF0ZSB1c2Vy IHNwYWNlIGJpbmRpbmdzIHZpYQorYGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWBg LCBhbmQgZHJpdmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbmV0bGluaworYXR0cmlidXRlcyBhbmQgb3Bl cmF0aW9ucy4KKworVXNhZ2UgTm90ZXMKKy0tLS0tLS0tLS0tCisKKyogVXNlciBzcGFjZSBtdXN0 IGZpcnN0IGVudW1lcmF0ZSBub2RlcyB0byBvYnRhaW4gdGhlaXIgSURzLgorKiBOb2RlIElEcyBv ciBOb2RlIG5hbWVzIGNhbiBiZSB1c2VkIGZvciBhbGwgZnVydGhlciBxdWVyaWVzLCBzdWNoIGFz IGVycm9yIGNvdW50ZXJzLgorKiBFcnJvciBjb3VudGVycyBjYW4gYmUgcXVlcmllZCBieSBlaXRo ZXIgdGhlIEVycm9yIElEIG9yIEVycm9yIG5hbWUuCisqIFF1ZXJ5IFBhcmFtZXRlcnMgc2hvdWxk IGJlIGRlZmluZWQgYXMgcGFydCBvZiB0aGUgdUFQSSB0byBlbnN1cmUgdXNlciBpbnRlcmZhY2Ug c3RhYmlsaXR5LgorKiBUaGUgaW50ZXJmYWNlIHN1cHBvcnRzIGZ1dHVyZSBleHRlbnNpb24gYnkg YWRkaW5nIG5ldyBub2RlIHR5cGVzIGFuZAorICBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMuCisKK0V4 YW1wbGU6IExpc3Qgbm9kZXMgdXNpbmcgeW5sCisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAg ICBzdWRvIHlubCAtLWZhbWlseSBkcm1fcmFzIC0tZHVtcCBsaXN0LW5vZGVzCisgICAgW3snZGV2 aWNlLW5hbWUnOiAnMDAwMDowMzowMC4wJywKKyAgICAnbm9kZS1pZCc6IDAsCisgICAgJ25vZGUt bmFtZSc6ICdjb3JyZWN0YWJsZS1lcnJvcnMnLAorICAgICdub2RlLXR5cGUnOiAnZXJyb3ItY291 bnRlcid9LAorICAgIHsnZGV2aWNlLW5hbWUnOiAnMDAwMDowMzowMC4wJywKKyAgICAgJ25vZGUt aWQnOiAxLAorICAgICAnbm9kZS1uYW1lJzogJ3VuY29ycmVjdGFibGUtZXJyb3JzJywKKyAgICAg J25vZGUtdHlwZSc6ICdlcnJvci1jb3VudGVyJ31dCisKK0V4YW1wbGU6IExpc3QgYWxsIGVycm9y IGNvdW50ZXJzIHVzaW5nIHlubAorCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICAgc3VkbyB5 bmwgLS1mYW1pbHkgZHJtX3JhcyAtLWR1bXAgZ2V0LWVycm9yLWNvdW50ZXIgLS1qc29uICd7Im5v ZGUtaWQiOjB9JworICAgIFt7J2Vycm9yLWlkJzogMSwgJ2Vycm9yLW5hbWUnOiAnZXJyb3JfbmFt ZTEnLCAnZXJyb3ItdmFsdWUnOiAwfSwKKyAgICB7J2Vycm9yLWlkJzogMiwgJ2Vycm9yLW5hbWUn OiAnZXJyb3JfbmFtZTInLCAnZXJyb3ItdmFsdWUnOiAwfV0KKworRXhhbXBsZTogUXVlcnkgYW4g ZXJyb3IgY291bnRlciBmb3IgYSBnaXZlbiBub2RlCisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisK KyAgICBzdWRvIHlubCAtLWZhbWlseSBkcm1fcmFzIC0tZG8gZ2V0LWVycm9yLWNvdW50ZXIgLS1q c29uICd7Im5vZGUtaWQiOjAsICJlcnJvci1pZCI6MX0nCisgICAgeydlcnJvci1pZCc6IDEsICdl cnJvci1uYW1lJzogJ2Vycm9yX25hbWUxJywgJ2Vycm9yLXZhbHVlJzogMH0KKwpkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9ncHUvaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvaW5kZXgu cnN0CmluZGV4IDJmYWZhMWYzNWVmMy4uNWQ3MDhhMTA2YjNmIDEwMDY0NAotLS0gYS9Eb2N1bWVu dGF0aW9uL2dwdS9pbmRleC5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvaW5kZXgucnN0CkBA IC05LDYgKzksNyBAQCBHUFUgRHJpdmVyIERldmVsb3BlcidzIEd1aWRlCiAgICBkcm0tbW0KICAg IGRybS1rbXMKICAgIGRybS1rbXMtaGVscGVycworICAgZHJtLXJhcwogICAgZHJtLXVhcGkKICAg IGRybS11c2FnZS1zdGF0cwogICAgZHJpdmVyLXVhcGkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vbmV0bGluay9zcGVjcy9kcm1fcmFzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3Bl Y3MvZHJtX3Jhcy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u NzlhZjI1ZGFjM2M1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3Nw ZWNzL2RybV9yYXMueWFtbApAQCAtMCwwICsxLDExNSBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogKChHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlKSBPUiBCU0QtMy1DbGF1c2Up CistLS0KK25hbWU6IGRybS1yYXMKK3Byb3RvY29sOiBnZW5ldGxpbmsKK3VhcGktaGVhZGVyOiBk cm0vZHJtX3Jhcy5oCisKK2RvYzogPi0KKyAgRFJNIFJBUyAoUmVsaWFiaWxpdHksIEF2YWlsYWJp bGl0eSwgU2VydmljZWFiaWxpdHkpIG92ZXIgR2VuZXJpYyBOZXRsaW5rLgorICBQcm92aWRlcyBh IHN0YW5kYXJkaXplZCBtZWNoYW5pc20gZm9yIERSTSBkcml2ZXJzIHRvIHJlZ2lzdGVyICJub2Rl cyIKKyAgcmVwcmVzZW50aW5nIGhhcmR3YXJlL3NvZnR3YXJlIGNvbXBvbmVudHMgY2FwYWJsZSBv ZiByZXBvcnRpbmcgZXJyb3IgY291bnRlcnMuCisgIFVzZXJzcGFjZSB0b29scyBjYW4gcXVlcnkg dGhlIGxpc3Qgb2Ygbm9kZXMgb3IgaW5kaXZpZHVhbCBlcnJvciBjb3VudGVycworICB2aWEgdGhl IEdlbmVyaWMgTmV0bGluayBpbnRlcmZhY2UuCisKK2RlZmluaXRpb25zOgorICAtCisgICAgdHlw ZTogZW51bQorICAgIG5hbWU6IG5vZGUtdHlwZQorICAgIHZhbHVlLXN0YXJ0OiAxCisgICAgZW50 cmllczogW2Vycm9yLWNvdW50ZXJdCisgICAgZG9jOiA+LQorICAgICAgICAgVHlwZSBvZiB0aGUg bm9kZS4gQ3VycmVudGx5LCBvbmx5IGVycm9yLWNvdW50ZXIgbm9kZXMgYXJlCisgICAgICAgICBz dXBwb3J0ZWQsIHdoaWNoIGV4cG9zZSByZWxpYWJpbGl0eSBjb3VudGVycyBmb3IgYSBoYXJkd2Fy ZS9zb2Z0d2FyZQorICAgICAgICAgY29tcG9uZW50LgorCithdHRyaWJ1dGUtc2V0czoKKyAgLQor ICAgIG5hbWU6IG5vZGUtYXR0cnMKKyAgICBhdHRyaWJ1dGVzOgorICAgICAgLQorICAgICAgICBu YW1lOiBub2RlLWlkCisgICAgICAgIHR5cGU6IHUzMgorICAgICAgICBkb2M6ID4tCisgICAgICAg ICAgICAgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBub2RlLgorICAgICAgICAgICAgIEFzc2ln bmVkIGR5bmFtaWNhbGx5IGJ5IHRoZSBEUk0gUkFTIGNvcmUgdXBvbiByZWdpc3RyYXRpb24uCisg ICAgICAtCisgICAgICAgIG5hbWU6IGRldmljZS1uYW1lCisgICAgICAgIHR5cGU6IHN0cmluZwor ICAgICAgICBkb2M6ID4tCisgICAgICAgICAgICAgRGV2aWNlIG5hbWUgY2hvc2VuIGJ5IHRoZSBk cml2ZXIgYXQgcmVnaXN0cmF0aW9uLgorICAgICAgICAgICAgIENhbiBiZSBhIFBDSSBCREYsIFVV SUQsIG9yIG1vZHVsZSBuYW1lIGlmIHVuaXF1ZS4KKyAgICAgIC0KKyAgICAgICAgbmFtZTogbm9k ZS1uYW1lCisgICAgICAgIHR5cGU6IHN0cmluZworICAgICAgICBkb2M6ID4tCisgICAgICAgICAg ICAgTm9kZSBuYW1lIGNob3NlbiBieSB0aGUgZHJpdmVyIGF0IHJlZ2lzdHJhdGlvbi4KKyAgICAg ICAgICAgICBDYW4gYmUgYW4gSVAgYmxvY2sgbmFtZSwgb3IgYW55IG5hbWUgdGhhdCBpZGVudGlm aWVzIHRoZQorICAgICAgICAgICAgIFJBUyBub2RlIGluc2lkZSB0aGUgZGV2aWNlLgorICAgICAg LQorICAgICAgICBuYW1lOiBub2RlLXR5cGUKKyAgICAgICAgdHlwZTogdTMyCisgICAgICAgIGRv YzogVHlwZSBvZiB0aGlzIG5vZGUsIGlkZW50aWZ5aW5nIGl0cyBmdW5jdGlvbi4KKyAgICAgICAg ZW51bTogbm9kZS10eXBlCisgIC0KKyAgICBuYW1lOiBlcnJvci1jb3VudGVyLWF0dHJzCisgICAg YXR0cmlidXRlczoKKyAgICAgIC0KKyAgICAgICAgbmFtZTogbm9kZS1pZAorICAgICAgICB0eXBl OiB1MzIKKyAgICAgICAgZG9jOiBOb2RlIElEIHRhcmdldGVkIGJ5IHRoaXMgZXJyb3IgY291bnRl ciBvcGVyYXRpb24uCisgICAgICAtCisgICAgICAgIG5hbWU6IGVycm9yLWlkCisgICAgICAgIHR5 cGU6IHUzMgorICAgICAgICBkb2M6IFVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIHNwZWNpZmljIGVy cm9yIGNvdW50ZXIgd2l0aGluIGFuIG5vZGUuCisgICAgICAtCisgICAgICAgIG5hbWU6IGVycm9y LW5hbWUKKyAgICAgICAgdHlwZTogc3RyaW5nCisgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJy b3IuCisgICAgICAtCisgICAgICAgIG5hbWU6IGVycm9yLXZhbHVlCisgICAgICAgIHR5cGU6IHUz MgorICAgICAgICBkb2M6IEN1cnJlbnQgdmFsdWUgb2YgdGhlIHJlcXVlc3RlZCBlcnJvciBjb3Vu dGVyLgorCitvcGVyYXRpb25zOgorICBsaXN0OgorICAgIC0KKyAgICAgIG5hbWU6IGxpc3Qtbm9k ZXMKKyAgICAgIGRvYzogPi0KKyAgICAgICAgICAgUmV0cmlldmUgdGhlIGZ1bGwgbGlzdCBvZiBj dXJyZW50bHkgcmVnaXN0ZXJlZCBEUk0gUkFTIG5vZGVzLgorICAgICAgICAgICBFYWNoIG5vZGUg aW5jbHVkZXMgaXRzIGR5bmFtaWNhbGx5IGFzc2lnbmVkIElELCBuYW1lLCBhbmQgdHlwZS4KKyAg ICAgICAgICAgKipJbXBvcnRhbnQ6KiogVXNlciBzcGFjZSBtdXN0IGNhbGwgdGhpcyBvcGVyYXRp b24gZmlyc3QgdG8gb2J0YWluCisgICAgICAgICAgIHRoZSBub2RlIElEcy4gVGhlc2UgSURzIGFy ZSByZXF1aXJlZCBmb3IgYWxsIHN1YnNlcXVlbnQKKyAgICAgICAgICAgb3BlcmF0aW9ucyBvbiBu b2Rlcywgc3VjaCBhcyBxdWVyeWluZyBlcnJvciBjb3VudGVycy4KKyAgICAgIGF0dHJpYnV0ZS1z ZXQ6IG5vZGUtYXR0cnMKKyAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV0KKyAgICAgIGR1bXA6Cisg ICAgICAgIHJlcGx5OgorICAgICAgICAgIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICAtIG5vZGUt aWQKKyAgICAgICAgICAgIC0gZGV2aWNlLW5hbWUKKyAgICAgICAgICAgIC0gbm9kZS1uYW1lCisg ICAgICAgICAgICAtIG5vZGUtdHlwZQorICAgIC0KKyAgICAgIG5hbWU6IGdldC1lcnJvci1jb3Vu dGVyCisgICAgICBkb2M6ID4tCisgICAgICAgICAgIFJldHJpZXZlIGVycm9yIGNvdW50ZXIgZm9y IGEgZ2l2ZW4gbm9kZS4KKyAgICAgICAgICAgVGhlIHJlc3BvbnNlIGluY2x1ZGVzIHRoZSBpZCwg dGhlIG5hbWUsIGFuZCBldmVuIHRoZSBjdXJyZW50CisgICAgICAgICAgIHZhbHVlIG9mIGVhY2gg Y291bnRlci4KKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGVycm9yLWNvdW50ZXItYXR0cnMKKyAgICAg IGZsYWdzOiBbYWRtaW4tcGVybV0KKyAgICAgIGRvOgorICAgICAgICByZXF1ZXN0OgorICAgICAg ICAgIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICAtIG5vZGUtaWQKKyAgICAgICAgICAgIC0gZXJy b3ItaWQKKyAgICAgICAgcmVwbHk6CisgICAgICAgICAgYXR0cmlidXRlczogJmVycm9yaW5mbwor ICAgICAgICAgICAgLSBlcnJvci1pZAorICAgICAgICAgICAgLSBlcnJvci1uYW1lCisgICAgICAg ICAgICAtIGVycm9yLXZhbHVlCisgICAgICBkdW1wOgorICAgICAgICByZXF1ZXN0OgorICAgICAg ICAgIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICAtIG5vZGUtaWQKKyAgICAgICAgcmVwbHk6Cisg ICAgICAgICAgYXR0cmlidXRlczogKmVycm9yaW5mbwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwppbmRleCAwZDA2NTdkZDFiNDEu LjUzODYyNDhlNzViNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIv ZHJpdmVycy9ncHUvZHJtL0tjb25maWcKQEAgLTEzMCw2ICsxMzAsMTYgQEAgY29uZmlnIERSTV9Q QU5JQ19TQ1JFRU5fUVJfVkVSU0lPTgogCSAgU21hbGxlciBRUiBjb2RlIGFyZSBlYXNpZXIgdG8g cmVhZCwgYnV0IHdpbGwgY29udGFpbiBsZXNzIGRlYnVnZ2luZwogCSAgZGF0YS4gRGVmYXVsdCBp cyA0MC4KIAorY29uZmlnIERSTV9SQVMKKwlib29sICJEUk0gUkFTIHN1cHBvcnQiCisJZGVwZW5k cyBvbiBEUk0KKwlkZXBlbmRzIG9uIE5FVAorCWhlbHAKKwkgIEVuYWJsZXMgdGhlIERSTSBSQVMg KFJlbGlhYmlsaXR5LCBBdmFpbGFiaWxpdHkgYW5kIFNlcnZpY2VhYmlsaXR5KQorCSAgc3VwcG9y dCBmb3IgRFJNIGRyaXZlcnMuIFRoaXMgcHJvdmlkZXMgYSBHZW5lcmljIE5ldGxpbmsgaW50ZXJm YWNlCisJICBmb3IgZXJyb3IgcmVwb3J0aW5nIGFuZCBxdWVyaWVzLgorCSAgSWYgaW4gZG91YnQs IHNheSAiTiIuCisKIGNvbmZpZyBEUk1fREVCVUdfRFBfTVNUX1RPUE9MT0dZX1JFRlMKICAgICAg ICAgYm9vbCAiRW5hYmxlIHJlZmNvdW50IGJhY2t0cmFjZSBoaXN0b3J5IGluIHRoZSBEUCBNU1Qg aGVscGVycyIKIAlkZXBlbmRzIG9uIFNUQUNLVFJBQ0VfU1VQUE9SVApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IGFi YTRiZjU0MmEzNS4uZTk3ZmFhYmNkNzgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC05Myw2ICs5Myw3IEBAIGRy bS0kKENPTkZJR19EUk1fQUNDRUwpICs9IC4uLy4uL2FjY2VsL2RybV9hY2NlbC5vCiBkcm0tJChD T05GSUdfRFJNX1BBTklDKSArPSBkcm1fcGFuaWMubwogZHJtLSQoQ09ORklHX0RSTV9EUkFXKSAr PSBkcm1fZHJhdy5vCiBkcm0tJChDT05GSUdfRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFKSArPSBk cm1fcGFuaWNfcXIubworZHJtLSQoQ09ORklHX0RSTV9SQVMpICs9IGRybV9yYXMubyBkcm1fcmFz X25sLm8gZHJtX3Jhc19nZW5sX2ZhbWlseS5vCiBvYmotJChDT05GSUdfRFJNKQkrPSBkcm0ubwog CiBvYmotJChDT05GSUdfRFJNX1BBTkVMX09SSUVOVEFUSU9OX1FVSVJLUykgKz0gZHJtX3BhbmVs X29yaWVudGF0aW9uX3F1aXJrcy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ry di5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwppbmRleCAyOTE1MTE4NDM2Y2UuLjZiOTY1 YzNkMzMwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8ZHJtL2Ry bV9wYW5pYy5oPgogI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KICNpbmNsdWRlIDxkcm0vZHJt X3ByaXZhY3lfc2NyZWVuX21hY2hpbmUuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3Jhc19nZW5sX2Zh bWlseS5oPgogCiAjaW5jbHVkZSAiZHJtX2NydGNfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJkcm1f aW50ZXJuYWwuaCIKQEAgLTEyMjMsNiArMTIyNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zIGRybV9zdHViX2ZvcHMgPSB7CiAKIHN0YXRpYyB2b2lkIGRybV9jb3JlX2V4 aXQodm9pZCkKIHsKKwlkcm1fcmFzX2dlbmxfZmFtaWx5X3VucmVnaXN0ZXIoKTsKIAlkcm1fcHJp dmFjeV9zY3JlZW5fbG9va3VwX2V4aXQoKTsKIAlkcm1fcGFuaWNfZXhpdCgpOwogCWFjY2VsX2Nv cmVfZXhpdCgpOwpAQCAtMTI2MSw2ICsxMjYzLDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IGRybV9j b3JlX2luaXQodm9pZCkKIAogCWRybV9wcml2YWN5X3NjcmVlbl9sb29rdXBfaW5pdCgpOwogCisJ cmV0ID0gZHJtX3Jhc19nZW5sX2ZhbWlseV9yZWdpc3RlcigpOworCWlmIChyZXQgPCAwKQorCQln b3RvIGVycm9yOworCiAJZHJtX2NvcmVfaW5pdF9jb21wbGV0ZSA9IHRydWU7CiAKIAlEUk1fREVC VUcoIkluaXRpYWxpemVkXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFz LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uYjJmYTVhYjg2ZDg3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9yYXMuYwpAQCAtMCwwICsxLDM1NCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDI2IEludGVsIENvcnBvcmF0aW9uCisg Ki8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgorI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3hhcnJheS5o PgorI2luY2x1ZGUgPG5ldC9nZW5ldGxpbmsuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fcmFzLmg+ CisKKyNpbmNsdWRlICJkcm1fcmFzX25sLmgiCisKKy8qKgorICogRE9DOiBEUk0gUkFTIE5vZGUg TWFuYWdlbWVudAorICoKKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBpbmZyYXN0cnVjdHVy ZSB0byBtYW5hZ2UgUkFTIChSZWxpYWJpbGl0eSwKKyAqIEF2YWlsYWJpbGl0eSwgYW5kIFNlcnZp Y2VhYmlsaXR5KSBub2RlcyBmb3IgRFJNIGRyaXZlcnMuIEVhY2gKKyAqIERSTSBkcml2ZXIgbWF5 IHJlZ2lzdGVyIG9uZSBvciBtb3JlIFJBUyBub2Rlcywgd2hpY2ggcmVwcmVzZW50CisgKiBsb2dp Y2FsIGNvbXBvbmVudHMgY2FwYWJsZSBvZiByZXBvcnRpbmcgZXJyb3IgY291bnRlcnMgYW5kIG90 aGVyCisgKiByZWxpYWJpbGl0eSBtZXRyaWNzLgorICoKKyAqIFRoZSBub2RlcyBhcmUgc3RvcmVk IGluIGEgZ2xvYmFsIHhhcnJheSBgZHJtX3Jhc194YWAgdG8gYWxsb3cKKyAqIGVmZmljaWVudCBs b29rdXAgYnkgSUQuIE5vZGVzIGNhbiBiZSByZWdpc3RlcmVkIG9yIHVucmVnaXN0ZXJlZAorICog ZHluYW1pY2FsbHkgYXQgcnVudGltZS4KKyAqCisgKiBBIEdlbmVyaWMgTmV0bGluayBmYW1pbHkg YGRybV9yYXNgIGV4cG9zZXMgdHdvIG1haW4gb3BlcmF0aW9ucyB0bworICogdXNlcnNwYWNlOgor ICoKKyAqIDEuIExJU1RfTk9ERVM6IER1bXAgYWxsIGN1cnJlbnRseSByZWdpc3RlcmVkIFJBUyBu b2Rlcy4KKyAqICAgIFRoZSB1c2VyIHJlY2VpdmVzIGFuIGFycmF5IG9mIG5vZGUgSURzLCBuYW1l cywgYW5kIHR5cGVzLgorICoKKyAqIDIuIEdFVF9FUlJPUl9DT1VOVEVSOiBHZXQgZXJyb3IgY291 bnRlcnMgb2YgYSBnaXZlbiBub2RlLgorICogICAgVXNlcnNwYWNlIG11c3QgcHJvdmlkZSBOb2Rl IElELCBFcnJvciBJRCAoT3B0aW9uYWwgZm9yIHNwZWNpZmljIGNvdW50ZXIpLgorICogICAgUmV0 dXJucyBhbGwgY291bnRlcnMgb2YgYSBub2RlIGlmIG9ubHkgTm9kZSBJRCBpcyBwcm92aWRlZCBv ciBzcGVjaWZpYworICogICAgZXJyb3IgY291bnRlcnMuCisgKgorICogTm9kZSByZWdpc3RyYXRp b246CisgKgorICogLSBkcm1fcmFzX25vZGVfcmVnaXN0ZXIoKTogUmVnaXN0ZXJzIGEgbmV3IG5v ZGUgYW5kIGFzc2lnbnMKKyAqICAgaXQgYSB1bmlxdWUgSUQgaW4gdGhlIHhhcnJheS4KKyAqIC0g ZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIoKTogUmVtb3ZlcyBhIHByZXZpb3VzbHkgcmVnaXN0ZXJl ZAorICogICBub2RlIGZyb20gdGhlIHhhcnJheS4KKyAqCisgKiBOb2RlIHR5cGU6CisgKgorICog LSBFUlJPUl9DT1VOVEVSOgorICogICAgICsgQ3VycmVudGx5LCBvbmx5IGVycm9yIGNvdW50ZXJz IGFyZSBzdXBwb3J0ZWQuCisgKiAgICAgKyBUaGUgZHJpdmVyIG11c3QgaW1wbGVtZW50IHRoZSBx dWVyeV9lcnJvcl9jb3VudGVyKCkgY2FsbGJhY2sgdG8gcHJvdmlkZQorICogICAgICAgdGhlIG5h bWUgYW5kIHRoZSB2YWx1ZSBvZiB0aGUgZXJyb3IgY291bnRlci4KKyAqICAgICArIFRoZSBkcml2 ZXIgbXVzdCBwcm92aWRlIGEgZXJyb3JfY291bnRlcl9yYW5nZS5sYXN0IHZhbHVlIGluZm9ybWlu ZyB0aGUKKyAqICAgICAgIGxhc3QgdmFsaWQgZXJyb3IgSUQuCisgKiAgICAgKyBUaGUgZHJpdmVy IGNhbiBwcm92aWRlIGEgZXJyb3JfY291bnRlcl9yYW5nZS5maXJzdCB2YWx1ZSBpbmZvcm1pbmcg dGhlCisgKiAgICAgICBmaXJzdCB2YWxpZCBlcnJvciBJRC4KKyAqICAgICArIFRoZSBlcnJvciBj b3VudGVycyBpbiB0aGUgZHJpdmVyIGRvZXNuJ3QgbmVlZCB0byBiZSBjb250aWd1b3VzLCBidXQg dGhlCisgKiAgICAgICBkcml2ZXIgbXVzdCByZXR1cm4gLUVOT0VOVCB0byB0aGUgcXVlcnlfZXJy b3JfY291bnRlciBhcyBhbiBpbmRpY2F0aW9uCisgKiAgICAgICB0aGF0IHRoZSBJRCBzaG91bGQg YmUgc2tpcHBlZCBhbmQgbm90IGxpc3RlZCBpbiB0aGUgbmV0bGluayBBUEkuCisgKgorICogTmV0 bGluayBoYW5kbGVyczoKKyAqCisgKiAtIGRybV9yYXNfbmxfbGlzdF9ub2Rlc19kdW1waXQoKTog SW1wbGVtZW50cyB0aGUgTElTVF9OT0RFUworICogICBvcGVyYXRpb24sIGl0ZXJhdGluZyBvdmVy IHRoZSB4YXJyYXkuCisgKiAtIGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KCk6 IEltcGxlbWVudHMgdGhlIEdFVF9FUlJPUl9DT1VOVEVSIGR1bXBpdAorICogICBvcGVyYXRpb24s IGZldGNoaW5nIGFsbCBjb3VudGVycyBmcm9tIGEgc3BlY2lmaWMgbm9kZS4KKyAqIC0gZHJtX3Jh c19ubF9nZXRfZXJyb3JfY291bnRlcl9kb2l0KCk6IEltcGxlbWVudHMgdGhlIEdFVF9FUlJPUl9D T1VOVEVSIGRvaXQKKyAqICAgb3BlcmF0aW9uLCBmZXRjaGluZyBhIGNvdW50ZXIgdmFsdWUgZnJv bSBhIHNwZWNpZmljIG5vZGUuCisgKi8KKworc3RhdGljIERFRklORV9YQVJSQVlfQUxMT0MoZHJt X3Jhc194YSk7CisKKy8qCisgKiBUaGUgbmV0bGluayBjYWxsYmFjayBjb250ZXh0IGNhcnJpZXMg ZHVtcCBzdGF0ZSBhY3Jvc3MgbXVsdGlwbGUgZHVtcGl0IGNhbGxzCisgKi8KK3N0cnVjdCBkcm1f cmFzX2N0eCB7CisJLyogV2hpY2ggeGFycmF5IGlkIHRvIHJlc3RhcnQgdGhlIGR1bXAgZnJvbSAq LworCXVuc2lnbmVkIGxvbmcgcmVzdGFydDsKK307CisKKy8qKgorICogZHJtX3Jhc19ubF9saXN0 X25vZGVzX2R1bXBpdCgpIC0gRHVtcCBhbGwgcmVnaXN0ZXJlZCBSQVMgbm9kZXMKKyAqIEBza2I6 IE5ldGxpbmsgbWVzc2FnZSBidWZmZXIKKyAqIEBjYjogQ2FsbGJhY2sgY29udGV4dCBmb3IgbXVs dGktcGFydCBkdW1wcworICoKKyAqIEl0ZXJhdGVzIG92ZXIgYWxsIHJlZ2lzdGVyZWQgUkFTIG5v ZGVzIGluIHRoZSBnbG9iYWwgeGFycmF5IGFuZCBhcHBlbmRzCisgKiB0aGVpciBhdHRyaWJ1dGVz IChJRCwgbmFtZSwgdHlwZSkgdG8gdGhlIGdpdmVuIG5ldGxpbmsgbWVzc2FnZSBidWZmZXIuCisg KiBVc2VzIEBjYi0+Y3R4IHRvIHRyYWNrIHByb2dyZXNzIGluIGNhc2UgdGhlIG1lc3NhZ2UgYnVm ZmVyIGZpbGxzIHVwLCBhbGxvd2luZworICogbXVsdGktcGFydCBkdW1wIHN1cHBvcnQuIE9uIGJ1 ZmZlciBvdmVyZmxvdywgdXBkYXRlcyB0aGUgY29udGV4dCB0byByZXN1bWUKKyAqIGZyb20gdGhl IGxhc3Qgbm9kZSBvbiB0aGUgbmV4dCBpbnZvY2F0aW9uLgorICoKKyAqIFJldHVybjogMCBpZiBh bGwgbm9kZXMgZml0IGluIEBza2IsIG51bWJlciBvZiBieXRlcyBhZGRlZCB0byBAc2tiIGlmCisg KiAgICAgICAgICB0aGUgYnVmZmVyIGZpbGxlZCB1cCAocmVxdWlyZXMgbXVsdGktcGFydCBjb250 aW51YXRpb24pLCBvcgorICogICAgICAgICAgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1 cmUuCisgKi8KK2ludCBkcm1fcmFzX25sX2xpc3Rfbm9kZXNfZHVtcGl0KHN0cnVjdCBza19idWZm ICpza2IsCisJCQkJIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYikKK3sKKwljb25zdCBzdHJ1 Y3QgZ2VubF9pbmZvICppbmZvID0gZ2VubF9pbmZvX2R1bXAoY2IpOworCXN0cnVjdCBkcm1fcmFz X2N0eCAqY3R4ID0gKHZvaWQgKiljYi0+Y3R4OworCXN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGU7 CisJc3RydWN0IG5sYXR0ciAqaGRyOworCXVuc2lnbmVkIGxvbmcgaWQ7CisJaW50IHJldDsKKwor CXhhX2Zvcl9lYWNoX3N0YXJ0KCZkcm1fcmFzX3hhLCBpZCwgbm9kZSwgY3R4LT5yZXN0YXJ0KSB7 CisJCWhkciA9IGdlbmxtc2dfaXB1dChza2IsIGluZm8pOworCQlpZiAoIWhkcikgeworCQkJcmV0 ID0gLUVNU0dTSVpFOworCQkJYnJlYWs7CisJCX0KKworCQlyZXQgPSBubGFfcHV0X3UzMihza2Is IERSTV9SQVNfQV9OT0RFX0FUVFJTX05PREVfSUQsIG5vZGUtPmlkKTsKKwkJaWYgKHJldCkgewor CQkJZ2VubG1zZ19jYW5jZWwoc2tiLCBoZHIpOworCQkJYnJlYWs7CisJCX0KKworCQlyZXQgPSBu bGFfcHV0X3N0cmluZyhza2IsIERSTV9SQVNfQV9OT0RFX0FUVFJTX0RFVklDRV9OQU1FLAorCQkJ CSAgICAgbm9kZS0+ZGV2aWNlX25hbWUpOworCQlpZiAocmV0KSB7CisJCQlnZW5sbXNnX2NhbmNl bChza2IsIGhkcik7CisJCQlicmVhazsKKwkJfQorCisJCXJldCA9IG5sYV9wdXRfc3RyaW5nKHNr YiwgRFJNX1JBU19BX05PREVfQVRUUlNfTk9ERV9OQU1FLAorCQkJCSAgICAgbm9kZS0+bm9kZV9u YW1lKTsKKwkJaWYgKHJldCkgeworCQkJZ2VubG1zZ19jYW5jZWwoc2tiLCBoZHIpOworCQkJYnJl YWs7CisJCX0KKworCQlyZXQgPSBubGFfcHV0X3UzMihza2IsIERSTV9SQVNfQV9OT0RFX0FUVFJT X05PREVfVFlQRSwKKwkJCQkgIG5vZGUtPnR5cGUpOworCQlpZiAocmV0KSB7CisJCQlnZW5sbXNn X2NhbmNlbChza2IsIGhkcik7CisJCQlicmVhazsKKwkJfQorCisJCWdlbmxtc2dfZW5kKHNrYiwg aGRyKTsKKwl9CisKKwlpZiAocmV0ID09IC1FTVNHU0laRSkKKwkJY3R4LT5yZXN0YXJ0ID0gaWQ7 CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGdldF9ub2RlX2Vycm9yX2NvdW50ZXIo dTMyIG5vZGVfaWQsIHUzMiBlcnJvcl9pZCwKKwkJCQkgIGNvbnN0IGNoYXIgKipuYW1lLCB1MzIg KnZhbHVlKQoreworCXN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGU7CisKKwlub2RlID0geGFfbG9h ZCgmZHJtX3Jhc194YSwgbm9kZV9pZCk7CisJaWYgKCFub2RlIHx8ICFub2RlLT5xdWVyeV9lcnJv cl9jb3VudGVyKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCWlmIChlcnJvcl9pZCA8IG5vZGUtPmVy cm9yX2NvdW50ZXJfcmFuZ2UuZmlyc3QgfHwKKwkgICAgZXJyb3JfaWQgPiBub2RlLT5lcnJvcl9j b3VudGVyX3JhbmdlLmxhc3QpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIG5vZGUtPnF1 ZXJ5X2Vycm9yX2NvdW50ZXIobm9kZSwgZXJyb3JfaWQsIG5hbWUsIHZhbHVlKTsKK30KKworc3Rh dGljIGludCBtc2dfcmVwbHlfdmFsdWUoc3RydWN0IHNrX2J1ZmYgKm1zZywgdTMyIGVycm9yX2lk LAorCQkJICAgY29uc3QgY2hhciAqZXJyb3JfbmFtZSwgdTMyIHZhbHVlKQoreworCWludCByZXQ7 CisKKwlyZXQgPSBubGFfcHV0X3UzMihtc2csIERSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJT X0VSUk9SX0lELCBlcnJvcl9pZCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9 IG5sYV9wdXRfc3RyaW5nKG1zZywgRFJNX1JBU19BX0VSUk9SX0NPVU5URVJfQVRUUlNfRVJST1Jf TkFNRSwKKwkJCSAgICAgZXJyb3JfbmFtZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CXJldHVybiBubGFfcHV0X3UzMihtc2csIERSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX0VS Uk9SX1ZBTFVFLAorCQkJICAgdmFsdWUpOworfQorCitzdGF0aWMgaW50IGRvaXRfcmVwbHlfdmFs dWUoc3RydWN0IGdlbmxfaW5mbyAqaW5mbywgdTMyIG5vZGVfaWQsCisJCQkgICAgdTMyIGVycm9y X2lkKQoreworCXN0cnVjdCBza19idWZmICptc2c7CisJc3RydWN0IG5sYXR0ciAqaGRyOworCWNv bnN0IGNoYXIgKmVycm9yX25hbWU7CisJdTMyIHZhbHVlOworCWludCByZXQ7CisKKwltc2cgPSBn ZW5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtc2cpCisJCXJl dHVybiAtRU5PTUVNOworCisJaGRyID0gZ2VubG1zZ19pcHV0KG1zZywgaW5mbyk7CisJaWYgKCFo ZHIpIHsKKwkJbmxtc2dfZnJlZShtc2cpOworCQlyZXR1cm4gLUVNU0dTSVpFOworCX0KKworCXJl dCA9IGdldF9ub2RlX2Vycm9yX2NvdW50ZXIobm9kZV9pZCwgZXJyb3JfaWQsCisJCQkJICAgICAm ZXJyb3JfbmFtZSwgJnZhbHVlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0g bXNnX3JlcGx5X3ZhbHVlKG1zZywgZXJyb3JfaWQsIGVycm9yX25hbWUsIHZhbHVlKTsKKwlpZiAo cmV0KSB7CisJCWdlbmxtc2dfY2FuY2VsKG1zZywgaGRyKTsKKwkJbmxtc2dfZnJlZShtc2cpOwor CQlyZXR1cm4gcmV0OworCX0KKworCWdlbmxtc2dfZW5kKG1zZywgaGRyKTsKKworCXJldHVybiBn ZW5sbXNnX3JlcGx5KG1zZywgaW5mbyk7Cit9CisKKy8qKgorICogZHJtX3Jhc19ubF9nZXRfZXJy b3JfY291bnRlcl9kdW1waXQoKSAtIER1bXAgYWxsIEVycm9yIENvdW50ZXJzCisgKiBAc2tiOiBO ZXRsaW5rIG1lc3NhZ2UgYnVmZmVyCisgKiBAY2I6IENhbGxiYWNrIGNvbnRleHQgZm9yIG11bHRp LXBhcnQgZHVtcHMKKyAqCisgKiBJdGVyYXRlcyBvdmVyIGFsbCBlcnJvciBjb3VudGVycyBpbiBh IGdpdmVuIE5vZGUgYW5kIGFwcGVuZHMKKyAqIHRoZWlyIGF0dHJpYnV0ZXMgKElELCBuYW1lLCB2 YWx1ZSkgdG8gdGhlIGdpdmVuIG5ldGxpbmsgbWVzc2FnZSBidWZmZXIuCisgKiBVc2VzIEBjYi0+ Y3R4IHRvIHRyYWNrIHByb2dyZXNzIGluIGNhc2UgdGhlIG1lc3NhZ2UgYnVmZmVyIGZpbGxzIHVw LCBhbGxvd2luZworICogbXVsdGktcGFydCBkdW1wIHN1cHBvcnQuIE9uIGJ1ZmZlciBvdmVyZmxv dywgdXBkYXRlcyB0aGUgY29udGV4dCB0byByZXN1bWUKKyAqIGZyb20gdGhlIGxhc3Qgbm9kZSBv biB0aGUgbmV4dCBpbnZvY2F0aW9uLgorICoKKyAqIFJldHVybjogMCBpZiBhbGwgZXJyb3JzIGZp dCBpbiBAc2tiLCBudW1iZXIgb2YgYnl0ZXMgYWRkZWQgdG8gQHNrYiBpZgorICogICAgICAgICAg dGhlIGJ1ZmZlciBmaWxsZWQgdXAgKHJlcXVpcmVzIG11bHRpLXBhcnQgY29udGludWF0aW9uKSwg b3IKKyAqICAgICAgICAgIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitp bnQgZHJtX3Jhc19ubF9nZXRfZXJyb3JfY291bnRlcl9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNr YiwKKwkJCQkJc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKQoreworCWNvbnN0IHN0cnVjdCBn ZW5sX2luZm8gKmluZm8gPSBnZW5sX2luZm9fZHVtcChjYik7CisJc3RydWN0IGRybV9yYXNfY3R4 ICpjdHggPSAodm9pZCAqKWNiLT5jdHg7CisJc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZTsKKwlz dHJ1Y3QgbmxhdHRyICpoZHI7CisJY29uc3QgY2hhciAqZXJyb3JfbmFtZTsKKwl1MzIgbm9kZV9p ZCwgZXJyb3JfaWQsIHZhbHVlOworCWludCByZXQ7CisKKwlpZiAoIWluZm8tPmF0dHJzIHx8IEdF TkxfUkVRX0FUVFJfQ0hFQ0soaW5mbywgRFJNX1JBU19BX0VSUk9SX0NPVU5URVJfQVRUUlNfTk9E RV9JRCkpCisJCXJldHVybiAtRUlOVkFMOworCisJbm9kZV9pZCA9IG5sYV9nZXRfdTMyKGluZm8t PmF0dHJzW0RSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX05PREVfSURdKTsKKworCW5vZGUg PSB4YV9sb2FkKCZkcm1fcmFzX3hhLCBub2RlX2lkKTsKKwlpZiAoIW5vZGUpCisJCXJldHVybiAt RU5PRU5UOworCisJZm9yIChlcnJvcl9pZCA9IG1heChub2RlLT5lcnJvcl9jb3VudGVyX3Jhbmdl LmZpcnN0LCBjdHgtPnJlc3RhcnQpOworCSAgICAgZXJyb3JfaWQgPD0gbm9kZS0+ZXJyb3JfY291 bnRlcl9yYW5nZS5sYXN0OworCSAgICAgZXJyb3JfaWQrKykgeworCQlyZXQgPSBnZXRfbm9kZV9l cnJvcl9jb3VudGVyKG5vZGVfaWQsIGVycm9yX2lkLAorCQkJCQkgICAgICZlcnJvcl9uYW1lLCAm dmFsdWUpOworCQkvKgorCQkgKiBGb3Igbm9uLWNvbnRpZ3VvdXMgcmFuZ2UsIGRyaXZlciByZXR1 cm4gLUVOT0VOVCBhcyBpbmRpY2F0aW9uCisJCSAqIHRvIHNraXAgdGhpcyBJRCB3aGVuIGxpc3Rp bmcgYWxsIGVycm9ycy4KKwkJICovCisJCWlmIChyZXQgPT0gLUVOT0VOVCkKKwkJCWNvbnRpbnVl OworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQloZHIgPSBnZW5sbXNnX2lwdXQoc2ti LCBpbmZvKTsKKworCQlpZiAoIWhkcikgeworCQkJcmV0ID0gLUVNU0dTSVpFOworCQkJYnJlYWs7 CisJCX0KKworCQlyZXQgPSBtc2dfcmVwbHlfdmFsdWUoc2tiLCBlcnJvcl9pZCwgZXJyb3JfbmFt ZSwgdmFsdWUpOworCQlpZiAocmV0KSB7CisJCQlnZW5sbXNnX2NhbmNlbChza2IsIGhkcik7CisJ CQlicmVhazsKKwkJfQorCisJCWdlbmxtc2dfZW5kKHNrYiwgaGRyKTsKKwl9CisKKwlpZiAocmV0 ID09IC1FTVNHU0laRSkKKwkJY3R4LT5yZXN0YXJ0ID0gZXJyb3JfaWQ7CisKKwlyZXR1cm4gcmV0 OworfQorCisvKioKKyAqIGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZG9pdCgpIC0gUXVl cnkgYW4gZXJyb3IgY291bnRlciBvZiBhbiBub2RlCisgKiBAc2tiOiBOZXRsaW5rIG1lc3NhZ2Ug YnVmZmVyCisgKiBAaW5mbzogR2VuZXJpYyBOZXRsaW5rIGluZm8gY29udGFpbmluZyBhdHRyaWJ1 dGVzIG9mIHRoZSByZXF1ZXN0CisgKgorICogRXh0cmFjdHMgdGhlIG5vZGUgSUQgYW5kIGVycm9y IElEIGZyb20gdGhlIG5ldGxpbmsgYXR0cmlidXRlcyBhbmQKKyAqIHJldHJpZXZlcyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBlcnJvciBjb3VudGVyLiBTZW5kcyB0aGUK KyAqIHJlc3VsdCBiYWNrIHRvIHRoZSByZXF1ZXN0aW5nIHVzZXIgdmlhIHRoZSBzdGFuZGFyZCBH ZW5sIHJlcGx5LgorICoKKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJu byBvbiBmYWlsdXJlLgorICovCitpbnQgZHJtX3Jhc19ubF9nZXRfZXJyb3JfY291bnRlcl9kb2l0 KHN0cnVjdCBza19idWZmICpza2IsCisJCQkJICAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykK K3sKKwl1MzIgbm9kZV9pZCwgZXJyb3JfaWQ7CisKKwlpZiAoIWluZm8tPmF0dHJzIHx8CisJICAg IEdFTkxfUkVRX0FUVFJfQ0hFQ0soaW5mbywgRFJNX1JBU19BX0VSUk9SX0NPVU5URVJfQVRUUlNf Tk9ERV9JRCkgfHwKKwkgICAgR0VOTF9SRVFfQVRUUl9DSEVDSyhpbmZvLCBEUk1fUkFTX0FfRVJS T1JfQ09VTlRFUl9BVFRSU19FUlJPUl9JRCkpCisJCXJldHVybiAtRUlOVkFMOworCisJbm9kZV9p ZCA9IG5sYV9nZXRfdTMyKGluZm8tPmF0dHJzW0RSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJT X05PREVfSURdKTsKKwllcnJvcl9pZCA9IG5sYV9nZXRfdTMyKGluZm8tPmF0dHJzW0RSTV9SQVNf QV9FUlJPUl9DT1VOVEVSX0FUVFJTX0VSUk9SX0lEXSk7CisKKwlyZXR1cm4gZG9pdF9yZXBseV92 YWx1ZShpbmZvLCBub2RlX2lkLCBlcnJvcl9pZCk7Cit9CisKKy8qKgorICogZHJtX3Jhc19ub2Rl X3JlZ2lzdGVyKCkgLSBSZWdpc3RlciBhIG5ldyBSQVMgbm9kZQorICogQG5vZGU6IE5vZGUgc3Ry dWN0dXJlIHRvIHJlZ2lzdGVyCisgKgorICogQWRkcyB0aGUgZ2l2ZW4gUkFTIG5vZGUgdG8gdGhl IGdsb2JhbCBub2RlIHhhcnJheSBhbmQgYXNzaWducyBpdAorICogYSB1bmlxdWUgSUQuIEJvdGgg QG5vZGUtPm5hbWUgYW5kIEBub2RlLT50eXBlIG11c3QgYmUgdmFsaWQuCisgKgorICogUmV0dXJu OiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmU6CisgKi8KK2ludCBk cm1fcmFzX25vZGVfcmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkKK3sKKwlpZiAo IW5vZGUtPmRldmljZV9uYW1lIHx8ICFub2RlLT5ub2RlX25hbWUpCisJCXJldHVybiAtRUlOVkFM OworCisJLyogQ3VycmVudGx5LCBvbmx5IEVycm9yIENvdW50ZXIgRW5kcG9pbnRzIGFyZSBzdXBw b3J0ZWQgKi8KKwlpZiAobm9kZS0+dHlwZSAhPSBEUk1fUkFTX05PREVfVFlQRV9FUlJPUl9DT1VO VEVSKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIE1hbmRhdG9yeSBlbnRyaWVzIGZvciBFcnJv ciBDb3VudGVyIE5vZGUgKi8KKwlpZiAobm9kZS0+dHlwZSA9PSBEUk1fUkFTX05PREVfVFlQRV9F UlJPUl9DT1VOVEVSICYmCisJICAgICghbm9kZS0+ZXJyb3JfY291bnRlcl9yYW5nZS5sYXN0IHx8 ICFub2RlLT5xdWVyeV9lcnJvcl9jb3VudGVyKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1 cm4geGFfYWxsb2MoJmRybV9yYXNfeGEsICZub2RlLT5pZCwgbm9kZSwgeGFfbGltaXRfMzJiLCBH RlBfS0VSTkVMKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKTsKKwor LyoqCisgKiBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcigpIC0gVW5yZWdpc3RlciBhIHByZXZpb3Vz bHkgcmVnaXN0ZXJlZCBub2RlCisgKiBAbm9kZTogTm9kZSBzdHJ1Y3R1cmUgdG8gdW5yZWdpc3Rl cgorICoKKyAqIFJlbW92ZXMgdGhlIGdpdmVuIG5vZGUgZnJvbSB0aGUgZ2xvYmFsIG5vZGUgeGFy cmF5IHVzaW5nIGl0cyBJRC4KKyAqLwordm9pZCBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcihzdHJ1 Y3QgZHJtX3Jhc19ub2RlICpub2RlKQoreworCXhhX2VyYXNlKCZkcm1fcmFzX3hhLCBub2RlLT5p ZCk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9yYXNfbm9kZV91bnJlZ2lzdGVyKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX2dlbmxfZmFtaWx5LmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX3Jhc19nZW5sX2ZhbWlseS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNmY0MDZkM2Q0OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9yYXNfZ2VubF9mYW1pbHkuYwpAQCAtMCwwICsxLDQyIEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjYgSW50ZWwgQ29ycG9yYXRp b24KKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybV9yYXNfZ2VubF9mYW1pbHkuaD4KKyNpbmNsdWRl ICJkcm1fcmFzX25sLmgiCisKKy8qIFRyYWNrIGZhbWlseSByZWdpc3RyYXRpb24gc28gdGhlIGRy bV9leGl0IGNhbiBiZSBjYWxsZWQgYXQgYW55IHRpbWUgKi8KK3N0YXRpYyBib29sIHJlZ2lzdGVy ZWQ7CisKKy8qKgorICogZHJtX3Jhc19nZW5sX2ZhbWlseV9yZWdpc3RlcigpIC0gUmVnaXN0ZXIg ZHJtLXJhcyBnZW5sIGZhbWlseQorICoKKyAqIE9ubHkgdG8gYmUgY2FsbGVkIG9uZSBhdCBkcm1f ZHJ2X2luaXQoKQorICovCitpbnQgZHJtX3Jhc19nZW5sX2ZhbWlseV9yZWdpc3Rlcih2b2lkKQor eworCWludCByZXQ7CisKKwlyZWdpc3RlcmVkID0gZmFsc2U7CisKKwlyZXQgPSBnZW5sX3JlZ2lz dGVyX2ZhbWlseSgmZHJtX3Jhc19ubF9mYW1pbHkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CisKKwlyZWdpc3RlcmVkID0gdHJ1ZTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBkcm1fcmFz X2dlbmxfZmFtaWx5X3VucmVnaXN0ZXIoKSAtIFVucmVnaXN0ZXIgZHJtLXJhcyBnZW5sIGZhbWls eQorICoKKyAqIFRvIGJlIGNhbGxlZCBvbmUgYXQgZHJtX2Rydl9leGl0KCkgYXQgYW55IG1vbWVu dCwgYnV0IG9ubHkgb25jZS4KKyAqLwordm9pZCBkcm1fcmFzX2dlbmxfZmFtaWx5X3VucmVnaXN0 ZXIodm9pZCkKK3sKKwlpZiAocmVnaXN0ZXJlZCkgeworCQlnZW5sX3VucmVnaXN0ZXJfZmFtaWx5 KCZkcm1fcmFzX25sX2ZhbWlseSk7CisJCXJlZ2lzdGVyZWQgPSBmYWxzZTsKKwl9Cit9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9yYXNfbmwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE2ODAz ZDBjNGE0NAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmMK QEAgLTAsMCArMSw1NiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6ICgoR1BMLTIuMCBX SVRIIExpbnV4LXN5c2NhbGwtbm90ZSkgT1IgQlNELTMtQ2xhdXNlKQorLyogRG8gbm90IGVkaXQg ZGlyZWN0bHksIGF1dG8tZ2VuZXJhdGVkIGZyb206ICovCisvKglEb2N1bWVudGF0aW9uL25ldGxp bmsvc3BlY3MvZHJtX3Jhcy55YW1sICovCisvKiBZTkwtR0VOIGtlcm5lbCBzb3VyY2UgKi8KKy8q IFRvIHJlZ2VuZXJhdGUgcnVuOiB0b29scy9uZXQveW5sL3lubC1yZWdlbi5zaCAqLworCisjaW5j bHVkZSA8bmV0L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxuZXQvZ2VuZXRsaW5rLmg+CisKKyNpbmNs dWRlICJkcm1fcmFzX25sLmgiCisKKyNpbmNsdWRlIDx1YXBpL2RybS9kcm1fcmFzLmg+CisKKy8q IERSTV9SQVNfQ01EX0dFVF9FUlJPUl9DT1VOVEVSIC0gZG8gKi8KK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgbmxhX3BvbGljeSBkcm1fcmFzX2dldF9lcnJvcl9jb3VudGVyX2RvX25sX3BvbGljeVtEUk1f UkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19FUlJPUl9JRCArIDFdID0geworCVtEUk1fUkFTX0Ff RVJST1JfQ09VTlRFUl9BVFRSU19OT0RFX0lEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAorCVtE Uk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19FUlJPUl9JRF0gPSB7IC50eXBlID0gTkxBX1Uz MiwgfSwKK307CisKKy8qIERSTV9SQVNfQ01EX0dFVF9FUlJPUl9DT1VOVEVSIC0gZHVtcCAqLwor c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRybV9yYXNfZ2V0X2Vycm9yX2NvdW50ZXJf ZHVtcF9ubF9wb2xpY3lbRFJNX1JBU19BX0VSUk9SX0NPVU5URVJfQVRUUlNfTk9ERV9JRCArIDFd ID0geworCVtEUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19OT0RFX0lEXSA9IHsgLnR5cGUg PSBOTEFfVTMyLCB9LAorfTsKKworLyogT3BzIHRhYmxlIGZvciBkcm1fcmFzICovCitzdGF0aWMg Y29uc3Qgc3RydWN0IGdlbmxfc3BsaXRfb3BzIGRybV9yYXNfbmxfb3BzW10gPSB7CisJeworCQku Y21kCT0gRFJNX1JBU19DTURfTElTVF9OT0RFUywKKwkJLmR1bXBpdAk9IGRybV9yYXNfbmxfbGlz dF9ub2Rlc19kdW1waXQsCisJCS5mbGFncwk9IEdFTkxfQURNSU5fUEVSTSB8IEdFTkxfQ01EX0NB UF9EVU1QLAorCX0sCisJeworCQkuY21kCQk9IERSTV9SQVNfQ01EX0dFVF9FUlJPUl9DT1VOVEVS LAorCQkuZG9pdAkJPSBkcm1fcmFzX25sX2dldF9lcnJvcl9jb3VudGVyX2RvaXQsCisJCS5wb2xp Y3kJCT0gZHJtX3Jhc19nZXRfZXJyb3JfY291bnRlcl9kb19ubF9wb2xpY3ksCisJCS5tYXhhdHRy CT0gRFJNX1JBU19BX0VSUk9SX0NPVU5URVJfQVRUUlNfRVJST1JfSUQsCisJCS5mbGFncwkJPSBH RU5MX0FETUlOX1BFUk0gfCBHRU5MX0NNRF9DQVBfRE8sCisJfSwKKwl7CisJCS5jbWQJCT0gRFJN X1JBU19DTURfR0VUX0VSUk9SX0NPVU5URVIsCisJCS5kdW1waXQJCT0gZHJtX3Jhc19ubF9nZXRf ZXJyb3JfY291bnRlcl9kdW1waXQsCisJCS5wb2xpY3kJCT0gZHJtX3Jhc19nZXRfZXJyb3JfY291 bnRlcl9kdW1wX25sX3BvbGljeSwKKwkJLm1heGF0dHIJPSBEUk1fUkFTX0FfRVJST1JfQ09VTlRF Ul9BVFRSU19OT0RFX0lELAorCQkuZmxhZ3MJCT0gR0VOTF9BRE1JTl9QRVJNIHwgR0VOTF9DTURf Q0FQX0RVTVAsCisJfSwKK307CisKK3N0cnVjdCBnZW5sX2ZhbWlseSBkcm1fcmFzX25sX2ZhbWls eSBfX3JvX2FmdGVyX2luaXQgPSB7CisJLm5hbWUJCT0gRFJNX1JBU19GQU1JTFlfTkFNRSwKKwku dmVyc2lvbgk9IERSTV9SQVNfRkFNSUxZX1ZFUlNJT04sCisJLm5ldG5zb2sJPSB0cnVlLAorCS5w YXJhbGxlbF9vcHMJPSB0cnVlLAorCS5tb2R1bGUJCT0gVEhJU19NT0RVTEUsCisJLnNwbGl0X29w cwk9IGRybV9yYXNfbmxfb3BzLAorCS5uX3NwbGl0X29wcwk9IEFSUkFZX1NJWkUoZHJtX3Jhc19u bF9vcHMpLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmggYi9k cml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMDZjY2Q5MzQyNzczCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9yYXNfbmwuaApAQCAtMCwwICsxLDI0IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogKChHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlKSBPUiBCU0QtMy1DbGF1c2Up ICovCisvKiBEbyBub3QgZWRpdCBkaXJlY3RseSwgYXV0by1nZW5lcmF0ZWQgZnJvbTogKi8KKy8q CURvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kcm1fcmFzLnlhbWwgKi8KKy8qIFlOTC1HRU4g a2VybmVsIGhlYWRlciAqLworLyogVG8gcmVnZW5lcmF0ZSBydW46IHRvb2xzL25ldC95bmwveW5s LXJlZ2VuLnNoICovCisKKyNpZm5kZWYgX0xJTlVYX0RSTV9SQVNfR0VOX0gKKyNkZWZpbmUgX0xJ TlVYX0RSTV9SQVNfR0VOX0gKKworI2luY2x1ZGUgPG5ldC9uZXRsaW5rLmg+CisjaW5jbHVkZSA8 bmV0L2dlbmV0bGluay5oPgorCisjaW5jbHVkZSA8dWFwaS9kcm0vZHJtX3Jhcy5oPgorCitpbnQg ZHJtX3Jhc19ubF9saXN0X25vZGVzX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJCSBz dHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpOworaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2Nv dW50ZXJfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJCSAgICAgIHN0cnVjdCBnZW5sX2lu Zm8gKmluZm8pOworaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KHN0cnVj dCBza19idWZmICpza2IsCisJCQkJCXN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7CisKK2V4 dGVybiBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHk7CisKKyNlbmRpZiAvKiBf TElOVVhfRFJNX1JBU19HRU5fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3Jhcy5o IGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNWQ1MDIwOWU1MWRiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0vZHJt X3Jhcy5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQg Ki8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNp Zm5kZWYgX19EUk1fUkFTX0hfXworI2RlZmluZSBfX0RSTV9SQVNfSF9fCisKKyNpbmNsdWRlIDx1 YXBpL2RybS9kcm1fcmFzLmg+CisKKy8qKgorICogc3RydWN0IGRybV9yYXNfbm9kZSAtIEEgRFJN IFJBUyBOb2RlCisgKi8KK3N0cnVjdCBkcm1fcmFzX25vZGUgeworCS8qKiBAaWQ6IFVuaXF1ZSBp ZGVudGlmaWVyIGZvciB0aGUgbm9kZS4gRHluYW1pY2FsbHkgYXNzaWduZWQuICovCisJdTMyIGlk OworCS8qKgorCSAqIEBkZXZpY2VfbmFtZTogSHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGUgZGV2 aWNlLiBHaXZlbiBieSB0aGUgZHJpdmVyLgorCSAqLworCWNvbnN0IGNoYXIgKmRldmljZV9uYW1l OworCS8qKiBAbm9kZV9uYW1lOiBIdW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoZSBub2RlLiBHaXZl biBieSB0aGUgZHJpdmVyLiAqLworCWNvbnN0IGNoYXIgKm5vZGVfbmFtZTsKKwkvKiogQHR5cGU6 IFR5cGUgb2YgdGhlIG5vZGUgKGVudW0gZHJtX3Jhc19ub2RlX3R5cGUpLiAqLworCWVudW0gZHJt X3Jhc19ub2RlX3R5cGUgdHlwZTsKKworCS8qIEVycm9yLUNvdW50ZXIgUmVsYXRlZCBDYWxsYmFj ayBhbmQgVmFyaWFibGVzICovCisKKwkvKiogQGVycm9yX2NvdW50ZXJfcmFuZ2U6IFJhbmdlIG9m IHZhbGlkIEVycm9yIElEcyBmb3IgdGhpcyBub2RlLiAqLworCXN0cnVjdCB7CisJCS8qKiBAZmly c3Q6IEZpcnN0IHZhbGlkIEVycm9yIElELiAqLworCQl1MzIgZmlyc3Q7CisJCS8qKiBAbGFzdDog TGFzdCB2YWxpZCBFcnJvciBJRC4gTWFuZGF0b3J5IGVudHJ5LiAqLworCQl1MzIgbGFzdDsKKwl9 IGVycm9yX2NvdW50ZXJfcmFuZ2U7CisKKwkvKioKKwkgKiBAcXVlcnlfZXJyb3JfY291bnRlcjoK KwkgKgorCSAqIFRoaXMgY2FsbGJhY2sgaXMgdXNlZCBieSBkcm0tcmFzIHRvIHF1ZXJ5IGEgc3Bl Y2lmaWMgZXJyb3IgY291bnRlci4KKwkgKiBVc2VkIGZvciBpbnB1dCBjaGVjayBhbmQgdG8gaXRl cmF0ZSBhbGwgZXJyb3IgY291bnRlcnMgaW4gYSBub2RlLgorCSAqCisJICogRHJpdmVyIHNob3Vs ZCBleHBlY3QgcXVlcnlfZXJyb3JfY291bnRlcigpIHRvIGJlIGNhbGxlZCB3aXRoCisJICogZXJy b3JfaWQgZnJvbSBgZXJyb3JfY291bnRlcl9yYW5nZS5maXJzdGAgdG8KKwkgKiBgZXJyb3JfY291 bnRlcl9yYW5nZS5sYXN0YC4KKwkgKgorCSAqIFRoZSBAcXVlcnlfZXJyb3JfY291bnRlciBpcyBh IG1hbmRhdG9yeSBjYWxsYmFjayBmb3IKKwkgKiBlcnJvcl9jb3VudGVyX25vZGUuCisJICoKKwkg KiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsCisJICogICAgICAgICAgLUVOT0VOVCB3aGVuIGVycm9y X2lkIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYW4gaW5kaWNhdGlvbiB0aGF0CisJICogICAgICAgICAg ICAgICAgICBkcm1fcmFzIHNob3VsZCBzaWxlbnRseSBza2lwIHRoaXMgZW50cnkuIFVzZWQgZm9y CisJICogICAgICAgICAgICAgICAgICBzdXBwb3J0aW5nIG5vbi1jb250aWd1b3VzIGVycm9yIHJh bmdlcy4KKwkgKiAgICAgICAgICAgICAgICAgIERyaXZlciBpcyByZXNwb25zaWJsZSBmb3IgbWFp bnRhaW5pbmcgdGhlIGxpc3Qgb2YKKwkgKiAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBlcnJv ciBJRHMgaW4gdGhlIHJhbmdlIG9mIGZpcnN0IHRvIGxhc3QuCisJICogICAgICAgICAgT3RoZXIg bmVnYXRpdmUgdmFsdWVzIG9uIGVycm9ycyB0aGF0IHNob3VsZCB0ZXJtaW5hdGUgdGhlCisJICog ICAgICAgICAgbmV0bGluayBxdWVyeS4KKwkgKi8KKwlpbnQgKCpxdWVyeV9lcnJvcl9jb3VudGVy KShzdHJ1Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsCisJCQkJICAgY29uc3Qg Y2hhciAqKm5hbWUsIHUzMiAqdmFsKTsKKworCS8qKiBAcHJpdjogRHJpdmVyIHByaXZhdGUgZGF0 YSAqLworCXZvaWQgKnByaXY7Cit9OworCitzdHJ1Y3QgZHJtX2RldmljZTsKKworI2lmIElTX0VO QUJMRUQoQ09ORklHX0RSTV9SQVMpCitpbnQgZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKHN0cnVjdCBk cm1fcmFzX25vZGUgKm5vZGUpOwordm9pZCBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcihzdHJ1Y3Qg ZHJtX3Jhc19ub2RlICpub2RlKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCBkcm1fcmFzX25v ZGVfcmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyByZXR1cm4gMDsgfQorc3Rh dGljIGlubGluZSB2b2lkIGRybV9yYXNfbm9kZV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25v ZGUgKm5vZGUpIHsgfQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX3Jhc19nZW5sX2ZhbWlseS5oIGIvaW5jbHVkZS9kcm0vZHJtX3Jhc19nZW5sX2ZhbWlseS5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTEwZmIzOTQzYTc1Ci0t LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0vZHJtX3Jhc19nZW5sX2ZhbWlseS5oCkBAIC0w LDAgKzEsMTcgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBD b3B5cmlnaHQgwqkgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX19EUk1f UkFTX0dFTkxfRkFNSUxZX0hfXworI2RlZmluZSBfX0RSTV9SQVNfR0VOTF9GQU1JTFlfSF9fCisK KyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fUkFTKQoraW50IGRybV9yYXNfZ2VubF9mYW1pbHlf cmVnaXN0ZXIodm9pZCk7Cit2b2lkIGRybV9yYXNfZ2VubF9mYW1pbHlfdW5yZWdpc3Rlcih2b2lk KTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCBkcm1fcmFzX2dlbmxfZmFtaWx5X3JlZ2lzdGVy KHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1fcmFzX2dlbmxfZmFt aWx5X3VucmVnaXN0ZXIodm9pZCkgeyB9CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9p bmNsdWRlL3VhcGkvZHJtL2RybV9yYXMuaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWY0MGZhNWI4NjlkCi0tLSAv ZGV2L251bGwKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmgKQEAgLTAsMCArMSw0OSBA QAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6ICgoR1BMLTIuMCBXSVRIIExpbnV4LXN5c2Nh bGwtbm90ZSkgT1IgQlNELTMtQ2xhdXNlKSAqLworLyogRG8gbm90IGVkaXQgZGlyZWN0bHksIGF1 dG8tZ2VuZXJhdGVkIGZyb206ICovCisvKglEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJt X3Jhcy55YW1sICovCisvKiBZTkwtR0VOIHVhcGkgaGVhZGVyICovCisvKiBUbyByZWdlbmVyYXRl IHJ1bjogdG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8KKworI2lmbmRlZiBfVUFQSV9MSU5V WF9EUk1fUkFTX0gKKyNkZWZpbmUgX1VBUElfTElOVVhfRFJNX1JBU19ICisKKyNkZWZpbmUgRFJN X1JBU19GQU1JTFlfTkFNRQkiZHJtLXJhcyIKKyNkZWZpbmUgRFJNX1JBU19GQU1JTFlfVkVSU0lP TgkxCisKKy8qCisgKiBUeXBlIG9mIHRoZSBub2RlLiBDdXJyZW50bHksIG9ubHkgZXJyb3ItY291 bnRlciBub2RlcyBhcmUgc3VwcG9ydGVkLCB3aGljaAorICogZXhwb3NlIHJlbGlhYmlsaXR5IGNv dW50ZXJzIGZvciBhIGhhcmR3YXJlL3NvZnR3YXJlIGNvbXBvbmVudC4KKyAqLworZW51bSBkcm1f cmFzX25vZGVfdHlwZSB7CisJRFJNX1JBU19OT0RFX1RZUEVfRVJST1JfQ09VTlRFUiA9IDEsCit9 OworCitlbnVtIHsKKwlEUk1fUkFTX0FfTk9ERV9BVFRSU19OT0RFX0lEID0gMSwKKwlEUk1fUkFT X0FfTk9ERV9BVFRSU19ERVZJQ0VfTkFNRSwKKwlEUk1fUkFTX0FfTk9ERV9BVFRSU19OT0RFX05B TUUsCisJRFJNX1JBU19BX05PREVfQVRUUlNfTk9ERV9UWVBFLAorCisJX19EUk1fUkFTX0FfTk9E RV9BVFRSU19NQVgsCisJRFJNX1JBU19BX05PREVfQVRUUlNfTUFYID0gKF9fRFJNX1JBU19BX05P REVfQVRUUlNfTUFYIC0gMSkKK307CisKK2VudW0geworCURSTV9SQVNfQV9FUlJPUl9DT1VOVEVS X0FUVFJTX05PREVfSUQgPSAxLAorCURSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX0VSUk9S X0lELAorCURSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX0VSUk9SX05BTUUsCisJRFJNX1JB U19BX0VSUk9SX0NPVU5URVJfQVRUUlNfRVJST1JfVkFMVUUsCisKKwlfX0RSTV9SQVNfQV9FUlJP Ul9DT1VOVEVSX0FUVFJTX01BWCwKKwlEUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVgg PSAoX19EUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggLSAxKQorfTsKKworZW51bSB7 CisJRFJNX1JBU19DTURfTElTVF9OT0RFUyA9IDEsCisJRFJNX1JBU19DTURfR0VUX0VSUk9SX0NP VU5URVIsCisKKwlfX0RSTV9SQVNfQ01EX01BWCwKKwlEUk1fUkFTX0NNRF9NQVggPSAoX19EUk1f UkFTX0NNRF9NQVggLSAxKQorfTsKKworI2VuZGlmIC8qIF9VQVBJX0xJTlVYX0RSTV9SQVNfSCAq LwotLSAKMi40Ny4xCgo=