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 DBC38FEE4CC for ; Sat, 28 Feb 2026 07:37:41 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4530310E21F; Sat, 28 Feb 2026 07:37:41 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Cpj7eftY"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 09CC610E1DD; Sat, 28 Feb 2026 07:37:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1772264260; x=1803800260; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nlKlJIV6c8UF49Q7WoBIm6g1G7LIw2iMkm8gvy/anME=; b=Cpj7eftYislGnQ9OJEFHMITeSQNp5Rsmohk2VfX0QJ5gIs4uGyhmiju3 dtEUTUtOb3S0/hikqNEsIiS7iHPrG7tU4uOBrWpQr2zruunbfN8RR0yo/ G4NK3GYLTc0mUlAtbjL0KK25IkxtiO81fgmEtBF8hWUOJHJ9Vk1PTPn4Y yEw8gjVe+RRaBeiu/6ck1xtol0daklDGCfpi5727v/UTmOA4sK//FLzXf 3DQMNvN0SJz4RcGPAOZlvQpMHW8bOPpOnoK7BhNNGX9sqfaUDSYqKcWEt fH/bRth6FXo1WNbabbT/OUxlDvRXOkuWAOvbsFwFJiy885Zrjp81LY0sA A==; X-CSE-ConnectionGUID: TGK+voykROeJDsRDsj88JA== X-CSE-MsgGUID: m6nWUO6IRMCkgAcdwKsuUA== X-IronPort-AV: E=McAfee;i="6800,10657,11714"; a="73048407" X-IronPort-AV: E=Sophos;i="6.21,315,1763452800"; d="scan'208";a="73048407" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa112.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Feb 2026 23:37:39 -0800 X-CSE-ConnectionGUID: SanxvoINSdG9TEWcmkBiYg== X-CSE-MsgGUID: V6KAPx6ZRiWhxLTEcTFyhg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,315,1763452800"; d="scan'208";a="214465967" Received: from rtauro-desk.iind.intel.com ([10.190.238.50]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Feb 2026 23:37:33 -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 v9 1/5] drm/ras: Introduce the DRM RAS infrastructure over generic netlink Date: Sat, 28 Feb 2026 13:38:25 +0530 Message-ID: <20260228080858.3063532-8-riana.tauro@intel.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260228080858.3063532-7-riana.tauro@intel.com> References: <20260228080858.3063532-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 WmFjayBNY0tldml0dCA8emFjaGFyeS5tY2tldml0dEBvc3MucXVhbGNvbW0uY29tPgotLS0KdjI6 IGZpeCBkb2MgYW5kIG1lbW9yeSBsZWFrCiAgICB1c2UgeGVfZm9yX2VhY2hfc3RhcnQKICAgIHVz ZSBzdGFuZGFyZCBnZW5sbXNnX2lwdXQgKEpha3ViIEtpY2luc2tpKQoKdjM6IGFkZCBkb2N1bWVu dGF0aW9uIHRvIGluZGV4CiAgICBtb2RpZnkgZG9jdW1lbnRhdGlvbiB0byBtZW50aW9uIHVBUEkg cmVxdWlyZW1lbnRzIChSb2RyaWdvKQoKdjQ6IGZpeCB0eXBvIChaYWNrKQoKdjU6IGZpeCBrZXJu ZWwtcm9ib3QgcmVwb3J0ZWQgaHRtbGRvY3MgZXJyb3IKICAgIGZpeCBrZXJuZWwtcm9ib3QgcmVw b3J0ZWQgYnVpbGQgZXJyb3Igb24gY3NreSBhcmNoCgp2NjogcmVnZW5lcmF0ZSBmaWxlcwogICAg Zml4IHlhbWxsaW50IHdhcm5pbmdzCiAgICB1c2UgZ2V0LWVycm9yLWNvdW50ZXIgZm9yIGJvdGgg ZG8vZHVtcCBmdW5jdGlvbiBjYWxscwogICAgZml4IGtlcm5lbC1kb2MgKEpha3ViKQoKdjc6IEZp eCB5bmwtcmVnZW4uc2ggcmVwb3J0ZWQgaXNzdWUKICAgIG1vdmUgZHJtX3Jhc19ubC5oIGZyb20g aW5jbHVkZS8gdG8gZHJtLwogICAgdXNlIC1vIHRvIGdlbmVyYXRlIGZpbGVzIGFuZCBmaXggY29t bWl0IG1lc3NhZ2UgKEpha3ViKQotLS0KIERvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0ICAg ICAgICAgICAgfCAxMDMgKysrKysrKwogRG9jdW1lbnRhdGlvbi9ncHUvaW5kZXgucnN0ICAgICAg ICAgICAgICB8ICAgMSArCiBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1s IHwgMTE1ICsrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAgICAgICAg IHwgIDEwICsKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEg KwogZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyAgICAgICAgICAgICAgICB8ICAgNiArCiBkcml2 ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jICAgICAgICAgICAgICAgIHwgMzU0ICsrKysrKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19nZW5sX2ZhbWlseS5jICAgIHwgIDQy ICsrKwogZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuYyAgICAgICAgICAgICB8ICA1NiArKysr CiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5oICAgICAgICAgICAgIHwgIDI0ICsrCiBpbmNs dWRlL2RybS9kcm1fcmFzLmggICAgICAgICAgICAgICAgICAgIHwgIDc1ICsrKysrCiBpbmNsdWRl L2RybS9kcm1fcmFzX2dlbmxfZmFtaWx5LmggICAgICAgIHwgIDE3ICsrCiBpbmNsdWRlL3VhcGkv ZHJtL2RybV9yYXMuaCAgICAgICAgICAgICAgIHwgIDQ5ICsrKysKIDEzIGZpbGVzIGNoYW5nZWQs IDg1MyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUv ZHJtLXJhcy5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3Bl Y3MvZHJtX3Jhcy55YW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9y YXMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX2dlbmxfZmFt aWx5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9yYXNfbmwuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV9yYXMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1 ZGUvZHJtL2RybV9yYXNfZ2VubF9mYW1pbHkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv dWFwaS9kcm0vZHJtX3Jhcy5oCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJh cy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjcwYjI0NmE3OGZjOAotLS0gL2Rldi9udWxsCisrKyBiL0Rv Y3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0CkBAIC0wLDAgKzEsMTAzIEBACisuLiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorRFJNIFJBUyBvdmVyIEdlbmVyaWMgTmV0bGluaworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCitUaGUgRFJNIFJBUyAoUmVsaWFiaWxpdHksIEF2YWlsYWJpbGl0eSwgU2VydmljZWFi aWxpdHkpIGludGVyZmFjZSBwcm92aWRlcyBhCitzdGFuZGFyZGl6ZWQgd2F5IGZvciBHUFUvYWNj ZWxlcmF0b3IgZHJpdmVycyB0byBleHBvc2UgZXJyb3IgY291bnRlcnMgYW5kCitvdGhlciByZWxp YWJpbGl0eSBub2RlcyB0byB1c2VyIHNwYWNlIHZpYSBHZW5lcmljIE5ldGxpbmsuIFRoaXMgYWxs b3dzCitkaWFnbm9zdGljIHRvb2xzLCBtb25pdG9yaW5nIGRhZW1vbnMsIG9yIHRlc3QgaW5mcmFz dHJ1Y3R1cmUgdG8gcXVlcnkgaGFyZHdhcmUKK2hlYWx0aCBpbiBhIHVuaWZvcm0gd2F5IGFjcm9z cyBkaWZmZXJlbnQgRFJNIGRyaXZlcnMuCisKK0tleSBHb2FsczoKKworKiBQcm92aWRlIGEgc3Rh bmRhcmRpemVkIFJBUyBzb2x1dGlvbiBmb3IgR1BVIGFuZCBhY2NlbGVyYXRvciBkcml2ZXJzLCBl bmFibGluZworICBkYXRhIGNlbnRlciBtb25pdG9yaW5nIGFuZCByZWxpYWJpbGl0eSBvcGVyYXRp b25zLgorKiBJbXBsZW1lbnQgYSBzaW5nbGUgZHJtLXJhcyBHZW5lcmljIE5ldGxpbmsgZmFtaWx5 IHRvIG1lZXQgbW9kZXJuIE5ldGxpbmsgWUFNTAorICBzcGVjaWZpY2F0aW9ucyBhbmQgY2VudHJh bGl6ZSBhbGwgUkFTLXJlbGF0ZWQgY29tbXVuaWNhdGlvbiBpbiBvbmUgbmFtZXNwYWNlLgorKiBT dXBwb3J0IGEgYmFzaWMgZXJyb3IgY291bnRlciBpbnRlcmZhY2UsIGFkZHJlc3NpbmcgdGhlIGlt bWVkaWF0ZSwgZXNzZW50aWFsCisgIG1vbml0b3JpbmcgbmVlZHMuCisqIE9mZmVyIGEgZmxleGli bGUsIGZ1dHVyZS1wcm9vZiBpbnRlcmZhY2UgdGhhdCBjYW4gYmUgZXh0ZW5kZWQgdG8gc3VwcG9y dAorICBhZGRpdGlvbmFsIHR5cGVzIG9mIFJBUyBkYXRhIGluIHRoZSBmdXR1cmUuCisqIEFsbG93 IG11bHRpcGxlIG5vZGVzIHBlciBkcml2ZXIsIGVuYWJsaW5nIGRyaXZlcnMgdG8gcmVnaXN0ZXIg c2VwYXJhdGUKKyAgbm9kZXMgZm9yIGRpZmZlcmVudCBJUCBibG9ja3MsIHN1Yi1ibG9ja3MsIG9y IG90aGVyIGxvZ2ljYWwgc3ViZGl2aXNpb25zCisgIGFzIGFwcGxpY2FibGUuCisKK05vZGVzCis9 PT09PQorCitOb2RlcyBhcmUgbG9naWNhbCBhYnN0cmFjdGlvbnMgcmVwcmVzZW50aW5nIGFuIGVy cm9yIHR5cGUgb3IgZXJyb3Igc291cmNlIHdpdGhpbgordGhlIGRldmljZS4gQ3VycmVudGx5LCBv bmx5IGVycm9yIGNvdW50ZXIgbm9kZXMgaXMgc3VwcG9ydGVkLgorCitEcml2ZXJzIGFyZSByZXNw b25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgYW5kIHVucmVnaXN0ZXJpbmcgbm9kZXMgdmlhIHRoZQor YGRybV9yYXNfbm9kZV9yZWdpc3RlcigpYCBhbmQgYGRybV9yYXNfbm9kZV91bnJlZ2lzdGVyKClg IEFQSXMuCisKK05vZGUgTWFuYWdlbWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBrZXJu ZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuYworICAgOmRvYzogRFJNIFJBUyBOb2Rl IE1hbmFnZW1lbnQKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Jhcy5jCisg ICA6aW50ZXJuYWw6CisKK0dlbmVyaWMgTmV0bGluayBVc2FnZQorPT09PT09PT09PT09PT09PT09 PT09CisKK1RoZSBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQgYXMgYSBHZW5lcmljIE5ldGxpbmsg ZmFtaWx5IG5hbWVkIGBgZHJtLXJhc2BgLgorVXNlciBzcGFjZSB0b29scyBjYW46CisKKyogTGlz dCByZWdpc3RlcmVkIG5vZGVzIHdpdGggdGhlIGBgbGlzdC1ub2Rlc2BgIGNvbW1hbmQuCisqIExp c3QgYWxsIGVycm9yIGNvdW50ZXJzIGluIGFuIG5vZGUgd2l0aCB0aGUgYGBnZXQtZXJyb3ItY291 bnRlcmBgIGNvbW1hbmQgd2l0aCBgYG5vZGUtaWRgYAorICBhcyBhIHBhcmFtZXRlci4KKyogUXVl cnkgc3BlY2lmaWMgZXJyb3IgY291bnRlciB2YWx1ZXMgd2l0aCB0aGUgYGBnZXQtZXJyb3ItY291 bnRlcmBgIGNvbW1hbmQsIHVzaW5nIGJvdGgKKyAgYGBub2RlLWlkYGAgYW5kIGBgZXJyb3ItaWRg YCBhcyBwYXJhbWV0ZXJzLgorCitZQU1MLWJhc2VkIEludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0t LS0tLS0KKworVGhlIGludGVyZmFjZSBpcyBkZXNjcmliZWQgaW4gYSBZQU1MIHNwZWNpZmljYXRp b24gYGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sYGAKKworVGhpcyBZ QU1MIGlzIHVzZWQgdG8gYXV0by1nZW5lcmF0ZSB1c2VyIHNwYWNlIGJpbmRpbmdzIHZpYQorYGB0 b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWBgLCBhbmQgZHJpdmVzIHRoZSBzdHJ1Y3R1 cmUgb2YgbmV0bGluaworYXR0cmlidXRlcyBhbmQgb3BlcmF0aW9ucy4KKworVXNhZ2UgTm90ZXMK Ky0tLS0tLS0tLS0tCisKKyogVXNlciBzcGFjZSBtdXN0IGZpcnN0IGVudW1lcmF0ZSBub2RlcyB0 byBvYnRhaW4gdGhlaXIgSURzLgorKiBOb2RlIElEcyBvciBOb2RlIG5hbWVzIGNhbiBiZSB1c2Vk IGZvciBhbGwgZnVydGhlciBxdWVyaWVzLCBzdWNoIGFzIGVycm9yIGNvdW50ZXJzLgorKiBFcnJv ciBjb3VudGVycyBjYW4gYmUgcXVlcmllZCBieSBlaXRoZXIgdGhlIEVycm9yIElEIG9yIEVycm9y IG5hbWUuCisqIFF1ZXJ5IFBhcmFtZXRlcnMgc2hvdWxkIGJlIGRlZmluZWQgYXMgcGFydCBvZiB0 aGUgdUFQSSB0byBlbnN1cmUgdXNlciBpbnRlcmZhY2Ugc3RhYmlsaXR5LgorKiBUaGUgaW50ZXJm YWNlIHN1cHBvcnRzIGZ1dHVyZSBleHRlbnNpb24gYnkgYWRkaW5nIG5ldyBub2RlIHR5cGVzIGFu ZAorICBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMuCisKK0V4YW1wbGU6IExpc3Qgbm9kZXMgdXNpbmcg eW5sCisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICBzdWRvIHlubCAtLWZhbWlseSBkcm1f cmFzIC0tZHVtcCBsaXN0LW5vZGVzCisgICAgW3snZGV2aWNlLW5hbWUnOiAnMDAwMDowMzowMC4w JywKKyAgICAnbm9kZS1pZCc6IDAsCisgICAgJ25vZGUtbmFtZSc6ICdjb3JyZWN0YWJsZS1lcnJv cnMnLAorICAgICdub2RlLXR5cGUnOiAnZXJyb3ItY291bnRlcid9LAorICAgIHsnZGV2aWNlLW5h bWUnOiAnMDAwMDowMzowMC4wJywKKyAgICAgJ25vZGUtaWQnOiAxLAorICAgICAnbm9kZS1uYW1l JzogJ3VuY29ycmVjdGFibGUtZXJyb3JzJywKKyAgICAgJ25vZGUtdHlwZSc6ICdlcnJvci1jb3Vu dGVyJ31dCisKK0V4YW1wbGU6IExpc3QgYWxsIGVycm9yIGNvdW50ZXJzIHVzaW5nIHlubAorCisu LiBjb2RlLWJsb2NrOjogYmFzaAorCisgICAgc3VkbyB5bmwgLS1mYW1pbHkgZHJtX3JhcyAtLWR1 bXAgZ2V0LWVycm9yLWNvdW50ZXIgLS1qc29uICd7Im5vZGUtaWQiOjB9JworICAgIFt7J2Vycm9y LWlkJzogMSwgJ2Vycm9yLW5hbWUnOiAnZXJyb3JfbmFtZTEnLCAnZXJyb3ItdmFsdWUnOiAwfSwK KyAgICB7J2Vycm9yLWlkJzogMiwgJ2Vycm9yLW5hbWUnOiAnZXJyb3JfbmFtZTInLCAnZXJyb3It dmFsdWUnOiAwfV0KKworRXhhbXBsZTogUXVlcnkgYW4gZXJyb3IgY291bnRlciBmb3IgYSBnaXZl biBub2RlCisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICBzdWRvIHlubCAtLWZhbWlseSBk cm1fcmFzIC0tZG8gZ2V0LWVycm9yLWNvdW50ZXIgLS1qc29uICd7Im5vZGUtaWQiOjAsICJlcnJv ci1pZCI6MX0nCisgICAgeydlcnJvci1pZCc6IDEsICdlcnJvci1uYW1lJzogJ2Vycm9yX25hbWUx JywgJ2Vycm9yLXZhbHVlJzogMH0KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvaW5k ZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvaW5kZXgucnN0CmluZGV4IDJmYWZhMWYzNWVmMy4u NWQ3MDhhMTA2YjNmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QKKysr IGIvRG9jdW1lbnRhdGlvbi9ncHUvaW5kZXgucnN0CkBAIC05LDYgKzksNyBAQCBHUFUgRHJpdmVy IERldmVsb3BlcidzIEd1aWRlCiAgICBkcm0tbW0KICAgIGRybS1rbXMKICAgIGRybS1rbXMtaGVs cGVycworICAgZHJtLXJhcwogICAgZHJtLXVhcGkKICAgIGRybS11c2FnZS1zdGF0cwogICAgZHJp dmVyLXVhcGkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kcm1fcmFz LnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55YW1sCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzlhZjI1ZGFjM2M1Ci0tLSAvZGV2L251 bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RybV9yYXMueWFtbApAQCAtMCww ICsxLDExNSBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKChHUEwtMi4wIFdJVEggTGlu dXgtc3lzY2FsbC1ub3RlKSBPUiBCU0QtMy1DbGF1c2UpCistLS0KK25hbWU6IGRybS1yYXMKK3By b3RvY29sOiBnZW5ldGxpbmsKK3VhcGktaGVhZGVyOiBkcm0vZHJtX3Jhcy5oCisKK2RvYzogPi0K KyAgRFJNIFJBUyAoUmVsaWFiaWxpdHksIEF2YWlsYWJpbGl0eSwgU2VydmljZWFiaWxpdHkpIG92 ZXIgR2VuZXJpYyBOZXRsaW5rLgorICBQcm92aWRlcyBhIHN0YW5kYXJkaXplZCBtZWNoYW5pc20g Zm9yIERSTSBkcml2ZXJzIHRvIHJlZ2lzdGVyICJub2RlcyIKKyAgcmVwcmVzZW50aW5nIGhhcmR3 YXJlL3NvZnR3YXJlIGNvbXBvbmVudHMgY2FwYWJsZSBvZiByZXBvcnRpbmcgZXJyb3IgY291bnRl cnMuCisgIFVzZXJzcGFjZSB0b29scyBjYW4gcXVlcnkgdGhlIGxpc3Qgb2Ygbm9kZXMgb3IgaW5k aXZpZHVhbCBlcnJvciBjb3VudGVycworICB2aWEgdGhlIEdlbmVyaWMgTmV0bGluayBpbnRlcmZh Y2UuCisKK2RlZmluaXRpb25zOgorICAtCisgICAgdHlwZTogZW51bQorICAgIG5hbWU6IG5vZGUt dHlwZQorICAgIHZhbHVlLXN0YXJ0OiAxCisgICAgZW50cmllczogW2Vycm9yLWNvdW50ZXJdCisg ICAgZG9jOiA+LQorICAgICAgICAgVHlwZSBvZiB0aGUgbm9kZS4gQ3VycmVudGx5LCBvbmx5IGVy cm9yLWNvdW50ZXIgbm9kZXMgYXJlCisgICAgICAgICBzdXBwb3J0ZWQsIHdoaWNoIGV4cG9zZSBy ZWxpYWJpbGl0eSBjb3VudGVycyBmb3IgYSBoYXJkd2FyZS9zb2Z0d2FyZQorICAgICAgICAgY29t cG9uZW50LgorCithdHRyaWJ1dGUtc2V0czoKKyAgLQorICAgIG5hbWU6IG5vZGUtYXR0cnMKKyAg ICBhdHRyaWJ1dGVzOgorICAgICAgLQorICAgICAgICBuYW1lOiBub2RlLWlkCisgICAgICAgIHR5 cGU6IHUzMgorICAgICAgICBkb2M6ID4tCisgICAgICAgICAgICAgVW5pcXVlIGlkZW50aWZpZXIg Zm9yIHRoZSBub2RlLgorICAgICAgICAgICAgIEFzc2lnbmVkIGR5bmFtaWNhbGx5IGJ5IHRoZSBE Uk0gUkFTIGNvcmUgdXBvbiByZWdpc3RyYXRpb24uCisgICAgICAtCisgICAgICAgIG5hbWU6IGRl dmljZS1uYW1lCisgICAgICAgIHR5cGU6IHN0cmluZworICAgICAgICBkb2M6ID4tCisgICAgICAg ICAgICAgRGV2aWNlIG5hbWUgY2hvc2VuIGJ5IHRoZSBkcml2ZXIgYXQgcmVnaXN0cmF0aW9uLgor ICAgICAgICAgICAgIENhbiBiZSBhIFBDSSBCREYsIFVVSUQsIG9yIG1vZHVsZSBuYW1lIGlmIHVu aXF1ZS4KKyAgICAgIC0KKyAgICAgICAgbmFtZTogbm9kZS1uYW1lCisgICAgICAgIHR5cGU6IHN0 cmluZworICAgICAgICBkb2M6ID4tCisgICAgICAgICAgICAgTm9kZSBuYW1lIGNob3NlbiBieSB0 aGUgZHJpdmVyIGF0IHJlZ2lzdHJhdGlvbi4KKyAgICAgICAgICAgICBDYW4gYmUgYW4gSVAgYmxv Y2sgbmFtZSwgb3IgYW55IG5hbWUgdGhhdCBpZGVudGlmaWVzIHRoZQorICAgICAgICAgICAgIFJB UyBub2RlIGluc2lkZSB0aGUgZGV2aWNlLgorICAgICAgLQorICAgICAgICBuYW1lOiBub2RlLXR5 cGUKKyAgICAgICAgdHlwZTogdTMyCisgICAgICAgIGRvYzogVHlwZSBvZiB0aGlzIG5vZGUsIGlk ZW50aWZ5aW5nIGl0cyBmdW5jdGlvbi4KKyAgICAgICAgZW51bTogbm9kZS10eXBlCisgIC0KKyAg ICBuYW1lOiBlcnJvci1jb3VudGVyLWF0dHJzCisgICAgYXR0cmlidXRlczoKKyAgICAgIC0KKyAg ICAgICAgbmFtZTogbm9kZS1pZAorICAgICAgICB0eXBlOiB1MzIKKyAgICAgICAgZG9jOiBOb2Rl IElEIHRhcmdldGVkIGJ5IHRoaXMgZXJyb3IgY291bnRlciBvcGVyYXRpb24uCisgICAgICAtCisg ICAgICAgIG5hbWU6IGVycm9yLWlkCisgICAgICAgIHR5cGU6IHUzMgorICAgICAgICBkb2M6IFVu aXF1ZSBpZGVudGlmaWVyIGZvciBhIHNwZWNpZmljIGVycm9yIGNvdW50ZXIgd2l0aGluIGFuIG5v ZGUuCisgICAgICAtCisgICAgICAgIG5hbWU6IGVycm9yLW5hbWUKKyAgICAgICAgdHlwZTogc3Ry aW5nCisgICAgICAgIGRvYzogTmFtZSBvZiB0aGUgZXJyb3IuCisgICAgICAtCisgICAgICAgIG5h bWU6IGVycm9yLXZhbHVlCisgICAgICAgIHR5cGU6IHUzMgorICAgICAgICBkb2M6IEN1cnJlbnQg dmFsdWUgb2YgdGhlIHJlcXVlc3RlZCBlcnJvciBjb3VudGVyLgorCitvcGVyYXRpb25zOgorICBs aXN0OgorICAgIC0KKyAgICAgIG5hbWU6IGxpc3Qtbm9kZXMKKyAgICAgIGRvYzogPi0KKyAgICAg ICAgICAgUmV0cmlldmUgdGhlIGZ1bGwgbGlzdCBvZiBjdXJyZW50bHkgcmVnaXN0ZXJlZCBEUk0g UkFTIG5vZGVzLgorICAgICAgICAgICBFYWNoIG5vZGUgaW5jbHVkZXMgaXRzIGR5bmFtaWNhbGx5 IGFzc2lnbmVkIElELCBuYW1lLCBhbmQgdHlwZS4KKyAgICAgICAgICAgKipJbXBvcnRhbnQ6Kiog VXNlciBzcGFjZSBtdXN0IGNhbGwgdGhpcyBvcGVyYXRpb24gZmlyc3QgdG8gb2J0YWluCisgICAg ICAgICAgIHRoZSBub2RlIElEcy4gVGhlc2UgSURzIGFyZSByZXF1aXJlZCBmb3IgYWxsIHN1YnNl cXVlbnQKKyAgICAgICAgICAgb3BlcmF0aW9ucyBvbiBub2Rlcywgc3VjaCBhcyBxdWVyeWluZyBl cnJvciBjb3VudGVycy4KKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IG5vZGUtYXR0cnMKKyAgICAgIGZs YWdzOiBbYWRtaW4tcGVybV0KKyAgICAgIGR1bXA6CisgICAgICAgIHJlcGx5OgorICAgICAgICAg IGF0dHJpYnV0ZXM6CisgICAgICAgICAgICAtIG5vZGUtaWQKKyAgICAgICAgICAgIC0gZGV2aWNl LW5hbWUKKyAgICAgICAgICAgIC0gbm9kZS1uYW1lCisgICAgICAgICAgICAtIG5vZGUtdHlwZQor ICAgIC0KKyAgICAgIG5hbWU6IGdldC1lcnJvci1jb3VudGVyCisgICAgICBkb2M6ID4tCisgICAg ICAgICAgIFJldHJpZXZlIGVycm9yIGNvdW50ZXIgZm9yIGEgZ2l2ZW4gbm9kZS4KKyAgICAgICAg ICAgVGhlIHJlc3BvbnNlIGluY2x1ZGVzIHRoZSBpZCwgdGhlIG5hbWUsIGFuZCBldmVuIHRoZSBj dXJyZW50CisgICAgICAgICAgIHZhbHVlIG9mIGVhY2ggY291bnRlci4KKyAgICAgIGF0dHJpYnV0 ZS1zZXQ6IGVycm9yLWNvdW50ZXItYXR0cnMKKyAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV0KKyAg ICAgIGRvOgorICAgICAgICByZXF1ZXN0OgorICAgICAgICAgIGF0dHJpYnV0ZXM6CisgICAgICAg ICAgICAtIG5vZGUtaWQKKyAgICAgICAgICAgIC0gZXJyb3ItaWQKKyAgICAgICAgcmVwbHk6Cisg ICAgICAgICAgYXR0cmlidXRlczogJmVycm9yaW5mbworICAgICAgICAgICAgLSBlcnJvci1pZAor ICAgICAgICAgICAgLSBlcnJvci1uYW1lCisgICAgICAgICAgICAtIGVycm9yLXZhbHVlCisgICAg ICBkdW1wOgorICAgICAgICByZXF1ZXN0OgorICAgICAgICAgIGF0dHJpYnV0ZXM6CisgICAgICAg ICAgICAtIG5vZGUtaWQKKyAgICAgICAgcmVwbHk6CisgICAgICAgICAgYXR0cmlidXRlczogKmVy cm9yaW5mbwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dw dS9kcm0vS2NvbmZpZwppbmRleCAwZDA2NTdkZDFiNDEuLjUzODYyNDhlNzViNiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcK QEAgLTEzMCw2ICsxMzAsMTYgQEAgY29uZmlnIERSTV9QQU5JQ19TQ1JFRU5fUVJfVkVSU0lPTgog CSAgU21hbGxlciBRUiBjb2RlIGFyZSBlYXNpZXIgdG8gcmVhZCwgYnV0IHdpbGwgY29udGFpbiBs ZXNzIGRlYnVnZ2luZwogCSAgZGF0YS4gRGVmYXVsdCBpcyA0MC4KIAorY29uZmlnIERSTV9SQVMK Kwlib29sICJEUk0gUkFTIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBEUk0KKwlkZXBlbmRzIG9uIE5F VAorCWhlbHAKKwkgIEVuYWJsZXMgdGhlIERSTSBSQVMgKFJlbGlhYmlsaXR5LCBBdmFpbGFiaWxp dHkgYW5kIFNlcnZpY2VhYmlsaXR5KQorCSAgc3VwcG9ydCBmb3IgRFJNIGRyaXZlcnMuIFRoaXMg cHJvdmlkZXMgYSBHZW5lcmljIE5ldGxpbmsgaW50ZXJmYWNlCisJICBmb3IgZXJyb3IgcmVwb3J0 aW5nIGFuZCBxdWVyaWVzLgorCSAgSWYgaW4gZG91YnQsIHNheSAiTiIuCisKIGNvbmZpZyBEUk1f REVCVUdfRFBfTVNUX1RPUE9MT0dZX1JFRlMKICAgICAgICAgYm9vbCAiRW5hYmxlIHJlZmNvdW50 IGJhY2t0cmFjZSBoaXN0b3J5IGluIHRoZSBEUCBNU1QgaGVscGVycyIKIAlkZXBlbmRzIG9uIFNU QUNLVFJBQ0VfU1VQUE9SVApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IGFiYTRiZjU0MmEzNS4uZTk3ZmFhYmNkNzgz IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUv ZHJtL01ha2VmaWxlCkBAIC05Myw2ICs5Myw3IEBAIGRybS0kKENPTkZJR19EUk1fQUNDRUwpICs9 IC4uLy4uL2FjY2VsL2RybV9hY2NlbC5vCiBkcm0tJChDT05GSUdfRFJNX1BBTklDKSArPSBkcm1f cGFuaWMubwogZHJtLSQoQ09ORklHX0RSTV9EUkFXKSArPSBkcm1fZHJhdy5vCiBkcm0tJChDT05G SUdfRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFKSArPSBkcm1fcGFuaWNfcXIubworZHJtLSQoQ09O RklHX0RSTV9SQVMpICs9IGRybV9yYXMubyBkcm1fcmFzX25sLm8gZHJtX3Jhc19nZW5sX2ZhbWls eS5vCiBvYmotJChDT05GSUdfRFJNKQkrPSBkcm0ubwogCiBvYmotJChDT05GSUdfRFJNX1BBTkVM X09SSUVOVEFUSU9OX1FVSVJLUykgKz0gZHJtX3BhbmVsX29yaWVudGF0aW9uX3F1aXJrcy5vCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9kcnYuYwppbmRleCAyOTE1MTE4NDM2Y2UuLjZiOTY1YzNkMzMwNyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCkBA IC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9wYW5pYy5oPgogI2luY2x1ZGUgPGRy bS9kcm1fcHJpbnQuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3ByaXZhY3lfc2NyZWVuX21hY2hpbmUu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX3Jhc19nZW5sX2ZhbWlseS5oPgogCiAjaW5jbHVkZSAiZHJt X2NydGNfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKQEAgLTEyMjMsNiAr MTIyNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRybV9zdHViX2Zv cHMgPSB7CiAKIHN0YXRpYyB2b2lkIGRybV9jb3JlX2V4aXQodm9pZCkKIHsKKwlkcm1fcmFzX2dl bmxfZmFtaWx5X3VucmVnaXN0ZXIoKTsKIAlkcm1fcHJpdmFjeV9zY3JlZW5fbG9va3VwX2V4aXQo KTsKIAlkcm1fcGFuaWNfZXhpdCgpOwogCWFjY2VsX2NvcmVfZXhpdCgpOwpAQCAtMTI2MSw2ICsx MjYzLDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IGRybV9jb3JlX2luaXQodm9pZCkKIAogCWRybV9w cml2YWN5X3NjcmVlbl9sb29rdXBfaW5pdCgpOwogCisJcmV0ID0gZHJtX3Jhc19nZW5sX2ZhbWls eV9yZWdpc3RlcigpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycm9yOworCiAJZHJtX2NvcmVf aW5pdF9jb21wbGV0ZSA9IHRydWU7CiAKIAlEUk1fREVCVUcoIkluaXRpYWxpemVkXG4iKTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X3Jhcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjNkMmM4MTU5 ZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXMuYwpAQCAtMCww ICsxLDM1NCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHly aWdodCDCqSAyMDI2IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L25ldGRl dmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3hhcnJheS5oPgorI2luY2x1ZGUgPG5ldC9nZW5ldGxp bmsuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fcmFzLmg+CisKKyNpbmNsdWRlICJkcm1fcmFzX25s LmgiCisKKy8qKgorICogRE9DOiBEUk0gUkFTIE5vZGUgTWFuYWdlbWVudAorICoKKyAqIFRoaXMg bW9kdWxlIHByb3ZpZGVzIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBtYW5hZ2UgUkFTIChSZWxpYWJp bGl0eSwKKyAqIEF2YWlsYWJpbGl0eSwgYW5kIFNlcnZpY2VhYmlsaXR5KSBub2RlcyBmb3IgRFJN IGRyaXZlcnMuIEVhY2gKKyAqIERSTSBkcml2ZXIgbWF5IHJlZ2lzdGVyIG9uZSBvciBtb3JlIFJB UyBub2Rlcywgd2hpY2ggcmVwcmVzZW50CisgKiBsb2dpY2FsIGNvbXBvbmVudHMgY2FwYWJsZSBv ZiByZXBvcnRpbmcgZXJyb3IgY291bnRlcnMgYW5kIG90aGVyCisgKiByZWxpYWJpbGl0eSBtZXRy aWNzLgorICoKKyAqIFRoZSBub2RlcyBhcmUgc3RvcmVkIGluIGEgZ2xvYmFsIHhhcnJheSBgZHJt X3Jhc194YWAgdG8gYWxsb3cKKyAqIGVmZmljaWVudCBsb29rdXAgYnkgSUQuIE5vZGVzIGNhbiBi ZSByZWdpc3RlcmVkIG9yIHVucmVnaXN0ZXJlZAorICogZHluYW1pY2FsbHkgYXQgcnVudGltZS4K KyAqCisgKiBBIEdlbmVyaWMgTmV0bGluayBmYW1pbHkgYGRybV9yYXNgIGV4cG9zZXMgdHdvIG1h aW4gb3BlcmF0aW9ucyB0bworICogdXNlcnNwYWNlOgorICoKKyAqIDEuIExJU1RfTk9ERVM6IER1 bXAgYWxsIGN1cnJlbnRseSByZWdpc3RlcmVkIFJBUyBub2Rlcy4KKyAqICAgIFRoZSB1c2VyIHJl Y2VpdmVzIGFuIGFycmF5IG9mIG5vZGUgSURzLCBuYW1lcywgYW5kIHR5cGVzLgorICoKKyAqIDIu IEdFVF9FUlJPUl9DT1VOVEVSOiBHZXQgZXJyb3IgY291bnRlcnMgb2YgYSBnaXZlbiBub2RlLgor ICogICAgVXNlcnNwYWNlIG11c3QgcHJvdmlkZSBOb2RlIElELCBFcnJvciBJRCAoT3B0aW9uYWwg Zm9yIHNwZWNpZmljIGNvdW50ZXIpLgorICogICAgUmV0dXJucyBhbGwgY291bnRlcnMgb2YgYSBu b2RlIGlmIG9ubHkgTm9kZSBJRCBpcyBwcm92aWRlZCBvciBzcGVjaWZpYworICogICAgZXJyb3Ig Y291bnRlcnMuCisgKgorICogTm9kZSByZWdpc3RyYXRpb246CisgKgorICogLSBkcm1fcmFzX25v ZGVfcmVnaXN0ZXIoKTogUmVnaXN0ZXJzIGEgbmV3IG5vZGUgYW5kIGFzc2lnbnMKKyAqICAgaXQg YSB1bmlxdWUgSUQgaW4gdGhlIHhhcnJheS4KKyAqIC0gZHJtX3Jhc19ub2RlX3VucmVnaXN0ZXIo KTogUmVtb3ZlcyBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZAorICogICBub2RlIGZyb20gdGhlIHhh cnJheS4KKyAqCisgKiBOb2RlIHR5cGU6CisgKgorICogLSBFUlJPUl9DT1VOVEVSOgorICogICAg ICsgQ3VycmVudGx5LCBvbmx5IGVycm9yIGNvdW50ZXJzIGFyZSBzdXBwb3J0ZWQuCisgKiAgICAg KyBUaGUgZHJpdmVyIG11c3QgaW1wbGVtZW50IHRoZSBxdWVyeV9lcnJvcl9jb3VudGVyKCkgY2Fs bGJhY2sgdG8gcHJvdmlkZQorICogICAgICAgdGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSBvZiB0aGUg ZXJyb3IgY291bnRlci4KKyAqICAgICArIFRoZSBkcml2ZXIgbXVzdCBwcm92aWRlIGEgZXJyb3Jf Y291bnRlcl9yYW5nZS5sYXN0IHZhbHVlIGluZm9ybWluZyB0aGUKKyAqICAgICAgIGxhc3QgdmFs aWQgZXJyb3IgSUQuCisgKiAgICAgKyBUaGUgZHJpdmVyIGNhbiBwcm92aWRlIGEgZXJyb3JfY291 bnRlcl9yYW5nZS5maXJzdCB2YWx1ZSBpbmZvcm1pbmcgdGhlCisgKiAgICAgICBmaXJzdCB2YWxp ZCBlcnJvciBJRC4KKyAqICAgICArIFRoZSBlcnJvciBjb3VudGVycyBpbiB0aGUgZHJpdmVyIGRv ZXNuJ3QgbmVlZCB0byBiZSBjb250aWd1b3VzLCBidXQgdGhlCisgKiAgICAgICBkcml2ZXIgbXVz dCByZXR1cm4gLUVOT0VOVCB0byB0aGUgcXVlcnlfZXJyb3JfY291bnRlciBhcyBhbiBpbmRpY2F0 aW9uCisgKiAgICAgICB0aGF0IHRoZSBJRCBzaG91bGQgYmUgc2tpcHBlZCBhbmQgbm90IGxpc3Rl ZCBpbiB0aGUgbmV0bGluayBBUEkuCisgKgorICogTmV0bGluayBoYW5kbGVyczoKKyAqCisgKiAt IGRybV9yYXNfbmxfbGlzdF9ub2Rlc19kdW1waXQoKTogSW1wbGVtZW50cyB0aGUgTElTVF9OT0RF UworICogICBvcGVyYXRpb24sIGl0ZXJhdGluZyBvdmVyIHRoZSB4YXJyYXkuCisgKiAtIGRybV9y YXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KCk6IEltcGxlbWVudHMgdGhlIEdFVF9FUlJP Ul9DT1VOVEVSIGR1bXBpdAorICogICBvcGVyYXRpb24sIGZldGNoaW5nIGFsbCBjb3VudGVycyBm cm9tIGEgc3BlY2lmaWMgbm9kZS4KKyAqIC0gZHJtX3Jhc19ubF9nZXRfZXJyb3JfY291bnRlcl9k b2l0KCk6IEltcGxlbWVudHMgdGhlIEdFVF9FUlJPUl9DT1VOVEVSIGRvaXQKKyAqICAgb3BlcmF0 aW9uLCBmZXRjaGluZyBhIGNvdW50ZXIgdmFsdWUgZnJvbSBhIHNwZWNpZmljIG5vZGUuCisgKi8K Kworc3RhdGljIERFRklORV9YQVJSQVlfQUxMT0MoZHJtX3Jhc194YSk7CisKKy8qCisgKiBUaGUg bmV0bGluayBjYWxsYmFjayBjb250ZXh0IGNhcnJpZXMgZHVtcCBzdGF0ZSBhY3Jvc3MgbXVsdGlw bGUgZHVtcGl0IGNhbGxzCisgKi8KK3N0cnVjdCBkcm1fcmFzX2N0eCB7CisJLyogV2hpY2ggeGFy cmF5IGlkIHRvIHJlc3RhcnQgdGhlIGR1bXAgZnJvbSAqLworCXVuc2lnbmVkIGxvbmcgcmVzdGFy dDsKK307CisKKy8qKgorICogZHJtX3Jhc19ubF9saXN0X25vZGVzX2R1bXBpdCgpIC0gRHVtcCBh bGwgcmVnaXN0ZXJlZCBSQVMgbm9kZXMKKyAqIEBza2I6IE5ldGxpbmsgbWVzc2FnZSBidWZmZXIK KyAqIEBjYjogQ2FsbGJhY2sgY29udGV4dCBmb3IgbXVsdGktcGFydCBkdW1wcworICoKKyAqIEl0 ZXJhdGVzIG92ZXIgYWxsIHJlZ2lzdGVyZWQgUkFTIG5vZGVzIGluIHRoZSBnbG9iYWwgeGFycmF5 IGFuZCBhcHBlbmRzCisgKiB0aGVpciBhdHRyaWJ1dGVzIChJRCwgbmFtZSwgdHlwZSkgdG8gdGhl IGdpdmVuIG5ldGxpbmsgbWVzc2FnZSBidWZmZXIuCisgKiBVc2VzIEBjYi0+Y3R4IHRvIHRyYWNr IHByb2dyZXNzIGluIGNhc2UgdGhlIG1lc3NhZ2UgYnVmZmVyIGZpbGxzIHVwLCBhbGxvd2luZwor ICogbXVsdGktcGFydCBkdW1wIHN1cHBvcnQuIE9uIGJ1ZmZlciBvdmVyZmxvdywgdXBkYXRlcyB0 aGUgY29udGV4dCB0byByZXN1bWUKKyAqIGZyb20gdGhlIGxhc3Qgbm9kZSBvbiB0aGUgbmV4dCBp bnZvY2F0aW9uLgorICoKKyAqIFJldHVybjogMCBpZiBhbGwgbm9kZXMgZml0IGluIEBza2IsIG51 bWJlciBvZiBieXRlcyBhZGRlZCB0byBAc2tiIGlmCisgKiAgICAgICAgICB0aGUgYnVmZmVyIGZp bGxlZCB1cCAocmVxdWlyZXMgbXVsdGktcGFydCBjb250aW51YXRpb24pLCBvcgorICogICAgICAg ICAgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fcmFzX25s X2xpc3Rfbm9kZXNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsCisJCQkJIHN0cnVjdCBuZXRs aW5rX2NhbGxiYWNrICpjYikKK3sKKwljb25zdCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvID0gZ2Vu bF9pbmZvX2R1bXAoY2IpOworCXN0cnVjdCBkcm1fcmFzX2N0eCAqY3R4ID0gKHZvaWQgKiljYi0+ Y3R4OworCXN0cnVjdCBkcm1fcmFzX25vZGUgKm5vZGU7CisJc3RydWN0IG5sYXR0ciAqaGRyOwor CXVuc2lnbmVkIGxvbmcgaWQ7CisJaW50IHJldDsKKworCXhhX2Zvcl9lYWNoX3N0YXJ0KCZkcm1f cmFzX3hhLCBpZCwgbm9kZSwgY3R4LT5yZXN0YXJ0KSB7CisJCWhkciA9IGdlbmxtc2dfaXB1dChz a2IsIGluZm8pOworCQlpZiAoIWhkcikgeworCQkJcmV0ID0gLUVNU0dTSVpFOworCQkJYnJlYWs7 CisJCX0KKworCQlyZXQgPSBubGFfcHV0X3UzMihza2IsIERSTV9SQVNfQV9OT0RFX0FUVFJTX05P REVfSUQsIG5vZGUtPmlkKTsKKwkJaWYgKHJldCkgeworCQkJZ2VubG1zZ19jYW5jZWwoc2tiLCBo ZHIpOworCQkJYnJlYWs7CisJCX0KKworCQlyZXQgPSBubGFfcHV0X3N0cmluZyhza2IsIERSTV9S QVNfQV9OT0RFX0FUVFJTX0RFVklDRV9OQU1FLAorCQkJCSAgICAgbm9kZS0+ZGV2aWNlX25hbWUp OworCQlpZiAocmV0KSB7CisJCQlnZW5sbXNnX2NhbmNlbChza2IsIGhkcik7CisJCQlicmVhazsK KwkJfQorCisJCXJldCA9IG5sYV9wdXRfc3RyaW5nKHNrYiwgRFJNX1JBU19BX05PREVfQVRUUlNf Tk9ERV9OQU1FLAorCQkJCSAgICAgbm9kZS0+bm9kZV9uYW1lKTsKKwkJaWYgKHJldCkgeworCQkJ Z2VubG1zZ19jYW5jZWwoc2tiLCBoZHIpOworCQkJYnJlYWs7CisJCX0KKworCQlyZXQgPSBubGFf cHV0X3UzMihza2IsIERSTV9SQVNfQV9OT0RFX0FUVFJTX05PREVfVFlQRSwKKwkJCQkgIG5vZGUt PnR5cGUpOworCQlpZiAocmV0KSB7CisJCQlnZW5sbXNnX2NhbmNlbChza2IsIGhkcik7CisJCQli cmVhazsKKwkJfQorCisJCWdlbmxtc2dfZW5kKHNrYiwgaGRyKTsKKwl9CisKKwlpZiAocmV0ID09 IC1FTVNHU0laRSkKKwkJY3R4LT5yZXN0YXJ0ID0gaWQ7CisKKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgaW50IGdldF9ub2RlX2Vycm9yX2NvdW50ZXIodTMyIG5vZGVfaWQsIHUzMiBlcnJvcl9p ZCwKKwkJCQkgIGNvbnN0IGNoYXIgKipuYW1lLCB1MzIgKnZhbHVlKQoreworCXN0cnVjdCBkcm1f cmFzX25vZGUgKm5vZGU7CisKKwlub2RlID0geGFfbG9hZCgmZHJtX3Jhc194YSwgbm9kZV9pZCk7 CisJaWYgKCFub2RlIHx8ICFub2RlLT5xdWVyeV9lcnJvcl9jb3VudGVyKQorCQlyZXR1cm4gLUVO T0VOVDsKKworCWlmIChlcnJvcl9pZCA8IG5vZGUtPmVycm9yX2NvdW50ZXJfcmFuZ2UuZmlyc3Qg fHwKKwkgICAgZXJyb3JfaWQgPiBub2RlLT5lcnJvcl9jb3VudGVyX3JhbmdlLmxhc3QpCisJCXJl dHVybiAtRUlOVkFMOworCisJcmV0dXJuIG5vZGUtPnF1ZXJ5X2Vycm9yX2NvdW50ZXIobm9kZSwg ZXJyb3JfaWQsIG5hbWUsIHZhbHVlKTsKK30KKworc3RhdGljIGludCBtc2dfcmVwbHlfdmFsdWUo c3RydWN0IHNrX2J1ZmYgKm1zZywgdTMyIGVycm9yX2lkLAorCQkJICAgY29uc3QgY2hhciAqZXJy b3JfbmFtZSwgdTMyIHZhbHVlKQoreworCWludCByZXQ7CisKKwlyZXQgPSBubGFfcHV0X3UzMiht c2csIERSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX0VSUk9SX0lELCBlcnJvcl9pZCk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IG5sYV9wdXRfc3RyaW5nKG1zZywgRFJN X1JBU19BX0VSUk9SX0NPVU5URVJfQVRUUlNfRVJST1JfTkFNRSwKKwkJCSAgICAgZXJyb3JfbmFt ZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiBubGFfcHV0X3UzMihtc2cs IERSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX0VSUk9SX1ZBTFVFLAorCQkJICAgdmFsdWUp OworfQorCitzdGF0aWMgaW50IGRvaXRfcmVwbHlfdmFsdWUoc3RydWN0IGdlbmxfaW5mbyAqaW5m bywgdTMyIG5vZGVfaWQsCisJCQkgICAgdTMyIGVycm9yX2lkKQoreworCXN0cnVjdCBza19idWZm ICptc2c7CisJc3RydWN0IG5sYXR0ciAqaGRyOworCWNvbnN0IGNoYXIgKmVycm9yX25hbWU7CisJ dTMyIHZhbHVlOworCWludCByZXQ7CisKKwltc2cgPSBnZW5sbXNnX25ldyhOTE1TR19HT09EU0la RSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtc2cpCisJCXJldHVybiAtRU5PTUVNOworCisJaGRyID0g Z2VubG1zZ19pcHV0KG1zZywgaW5mbyk7CisJaWYgKCFoZHIpIHsKKwkJbmxtc2dfZnJlZShtc2cp OworCQlyZXR1cm4gLUVNU0dTSVpFOworCX0KKworCXJldCA9IGdldF9ub2RlX2Vycm9yX2NvdW50 ZXIobm9kZV9pZCwgZXJyb3JfaWQsCisJCQkJICAgICAmZXJyb3JfbmFtZSwgJnZhbHVlKTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gbXNnX3JlcGx5X3ZhbHVlKG1zZywgZXJy b3JfaWQsIGVycm9yX25hbWUsIHZhbHVlKTsKKwlpZiAocmV0KSB7CisJCWdlbmxtc2dfY2FuY2Vs KG1zZywgaGRyKTsKKwkJbmxtc2dfZnJlZShtc2cpOworCQlyZXR1cm4gcmV0OworCX0KKworCWdl bmxtc2dfZW5kKG1zZywgaGRyKTsKKworCXJldHVybiBnZW5sbXNnX3JlcGx5KG1zZywgaW5mbyk7 Cit9CisKKy8qKgorICogZHJtX3Jhc19ubF9nZXRfZXJyb3JfY291bnRlcl9kdW1waXQoKSAtIER1 bXAgYWxsIEVycm9yIENvdW50ZXJzCisgKiBAc2tiOiBOZXRsaW5rIG1lc3NhZ2UgYnVmZmVyCisg KiBAY2I6IENhbGxiYWNrIGNvbnRleHQgZm9yIG11bHRpLXBhcnQgZHVtcHMKKyAqCisgKiBJdGVy YXRlcyBvdmVyIGFsbCBlcnJvciBjb3VudGVycyBpbiBhIGdpdmVuIE5vZGUgYW5kIGFwcGVuZHMK KyAqIHRoZWlyIGF0dHJpYnV0ZXMgKElELCBuYW1lLCB2YWx1ZSkgdG8gdGhlIGdpdmVuIG5ldGxp bmsgbWVzc2FnZSBidWZmZXIuCisgKiBVc2VzIEBjYi0+Y3R4IHRvIHRyYWNrIHByb2dyZXNzIGlu IGNhc2UgdGhlIG1lc3NhZ2UgYnVmZmVyIGZpbGxzIHVwLCBhbGxvd2luZworICogbXVsdGktcGFy dCBkdW1wIHN1cHBvcnQuIE9uIGJ1ZmZlciBvdmVyZmxvdywgdXBkYXRlcyB0aGUgY29udGV4dCB0 byByZXN1bWUKKyAqIGZyb20gdGhlIGxhc3Qgbm9kZSBvbiB0aGUgbmV4dCBpbnZvY2F0aW9uLgor ICoKKyAqIFJldHVybjogMCBpZiBhbGwgZXJyb3JzIGZpdCBpbiBAc2tiLCBudW1iZXIgb2YgYnl0 ZXMgYWRkZWQgdG8gQHNrYiBpZgorICogICAgICAgICAgdGhlIGJ1ZmZlciBmaWxsZWQgdXAgKHJl cXVpcmVzIG11bHRpLXBhcnQgY29udGludWF0aW9uKSwgb3IKKyAqICAgICAgICAgIGEgbmVnYXRp dmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitpbnQgZHJtX3Jhc19ubF9nZXRfZXJyb3Jf Y291bnRlcl9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCQkJc3RydWN0IG5ldGxpbmtf Y2FsbGJhY2sgKmNiKQoreworCWNvbnN0IHN0cnVjdCBnZW5sX2luZm8gKmluZm8gPSBnZW5sX2lu Zm9fZHVtcChjYik7CisJc3RydWN0IGRybV9yYXNfY3R4ICpjdHggPSAodm9pZCAqKWNiLT5jdHg7 CisJc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZTsKKwlzdHJ1Y3QgbmxhdHRyICpoZHI7CisJY29u c3QgY2hhciAqZXJyb3JfbmFtZTsKKwl1MzIgbm9kZV9pZCwgZXJyb3JfaWQsIHZhbHVlOworCWlu dCByZXQ7CisKKwlpZiAoIWluZm8tPmF0dHJzIHx8ICFpbmZvLT5hdHRyc1tEUk1fUkFTX0FfRVJS T1JfQ09VTlRFUl9BVFRSU19OT0RFX0lEXSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlub2RlX2lk ID0gbmxhX2dldF91MzIoaW5mby0+YXR0cnNbRFJNX1JBU19BX0VSUk9SX0NPVU5URVJfQVRUUlNf Tk9ERV9JRF0pOworCisJbm9kZSA9IHhhX2xvYWQoJmRybV9yYXNfeGEsIG5vZGVfaWQpOworCWlm ICghbm9kZSkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlmb3IgKGVycm9yX2lkID0gbWF4KG5vZGUt PmVycm9yX2NvdW50ZXJfcmFuZ2UuZmlyc3QsIGN0eC0+cmVzdGFydCk7CisJICAgICBlcnJvcl9p ZCA8PSBub2RlLT5lcnJvcl9jb3VudGVyX3JhbmdlLmxhc3Q7CisJICAgICBlcnJvcl9pZCsrKSB7 CisJCXJldCA9IGdldF9ub2RlX2Vycm9yX2NvdW50ZXIobm9kZV9pZCwgZXJyb3JfaWQsCisJCQkJ CSAgICAgJmVycm9yX25hbWUsICZ2YWx1ZSk7CisJCS8qCisJCSAqIEZvciBub24tY29udGlndW91 cyByYW5nZSwgZHJpdmVyIHJldHVybiAtRU5PRU5UIGFzIGluZGljYXRpb24KKwkJICogdG8gc2tp cCB0aGlzIElEIHdoZW4gbGlzdGluZyBhbGwgZXJyb3JzLgorCQkgKi8KKwkJaWYgKHJldCA9PSAt RU5PRU5UKQorCQkJY29udGludWU7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCWhk ciA9IGdlbmxtc2dfaXB1dChza2IsIGluZm8pOworCisJCWlmICghaGRyKSB7CisJCQlyZXQgPSAt RU1TR1NJWkU7CisJCQlicmVhazsKKwkJfQorCisJCXJldCA9IG1zZ19yZXBseV92YWx1ZShza2Is IGVycm9yX2lkLCBlcnJvcl9uYW1lLCB2YWx1ZSk7CisJCWlmIChyZXQpIHsKKwkJCWdlbmxtc2df Y2FuY2VsKHNrYiwgaGRyKTsKKwkJCWJyZWFrOworCQl9CisKKwkJZ2VubG1zZ19lbmQoc2tiLCBo ZHIpOworCX0KKworCWlmIChyZXQgPT0gLUVNU0dTSVpFKQorCQljdHgtPnJlc3RhcnQgPSBlcnJv cl9pZDsKKworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogZHJtX3Jhc19ubF9nZXRfZXJyb3Jf Y291bnRlcl9kb2l0KCkgLSBRdWVyeSBhbiBlcnJvciBjb3VudGVyIG9mIGFuIG5vZGUKKyAqIEBz a2I6IE5ldGxpbmsgbWVzc2FnZSBidWZmZXIKKyAqIEBpbmZvOiBHZW5lcmljIE5ldGxpbmsgaW5m byBjb250YWluaW5nIGF0dHJpYnV0ZXMgb2YgdGhlIHJlcXVlc3QKKyAqCisgKiBFeHRyYWN0cyB0 aGUgbm9kZSBJRCBhbmQgZXJyb3IgSUQgZnJvbSB0aGUgbmV0bGluayBhdHRyaWJ1dGVzIGFuZAor ICogcmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVycm9y IGNvdW50ZXIuIFNlbmRzIHRoZQorICogcmVzdWx0IGJhY2sgdG8gdGhlIHJlcXVlc3RpbmcgdXNl ciB2aWEgdGhlIHN0YW5kYXJkIEdlbmwgcmVwbHkuCisgKgorICogUmV0dXJuOiAwIG9uIHN1Y2Nl c3MsIG9yIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fcmFzX25sX2dl dF9lcnJvcl9jb3VudGVyX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCQkgICAgICBzdHJ1 Y3QgZ2VubF9pbmZvICppbmZvKQoreworCXUzMiBub2RlX2lkLCBlcnJvcl9pZDsKKworCWlmICgh aW5mby0+YXR0cnMgfHwKKwkgICAgIWluZm8tPmF0dHJzW0RSTV9SQVNfQV9FUlJPUl9DT1VOVEVS X0FUVFJTX05PREVfSURdIHx8CisJICAgICFpbmZvLT5hdHRyc1tEUk1fUkFTX0FfRVJST1JfQ09V TlRFUl9BVFRSU19FUlJPUl9JRF0pCisJCXJldHVybiAtRUlOVkFMOworCisJbm9kZV9pZCA9IG5s YV9nZXRfdTMyKGluZm8tPmF0dHJzW0RSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX05PREVf SURdKTsKKwllcnJvcl9pZCA9IG5sYV9nZXRfdTMyKGluZm8tPmF0dHJzW0RSTV9SQVNfQV9FUlJP Ul9DT1VOVEVSX0FUVFJTX0VSUk9SX0lEXSk7CisKKwlyZXR1cm4gZG9pdF9yZXBseV92YWx1ZShp bmZvLCBub2RlX2lkLCBlcnJvcl9pZCk7Cit9CisKKy8qKgorICogZHJtX3Jhc19ub2RlX3JlZ2lz dGVyKCkgLSBSZWdpc3RlciBhIG5ldyBSQVMgbm9kZQorICogQG5vZGU6IE5vZGUgc3RydWN0dXJl IHRvIHJlZ2lzdGVyCisgKgorICogQWRkcyB0aGUgZ2l2ZW4gUkFTIG5vZGUgdG8gdGhlIGdsb2Jh bCBub2RlIHhhcnJheSBhbmQgYXNzaWducyBpdAorICogYSB1bmlxdWUgSUQuIEJvdGggQG5vZGUt Pm5hbWUgYW5kIEBub2RlLT50eXBlIG11c3QgYmUgdmFsaWQuCisgKgorICogUmV0dXJuOiAwIG9u IHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmU6CisgKi8KK2ludCBkcm1fcmFz X25vZGVfcmVnaXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkKK3sKKwlpZiAoIW5vZGUt PmRldmljZV9uYW1lIHx8ICFub2RlLT5ub2RlX25hbWUpCisJCXJldHVybiAtRUlOVkFMOworCisJ LyogQ3VycmVudGx5LCBvbmx5IEVycm9yIENvdW50ZXIgRW5kcG9pbnRzIGFyZSBzdXBwb3J0ZWQg Ki8KKwlpZiAobm9kZS0+dHlwZSAhPSBEUk1fUkFTX05PREVfVFlQRV9FUlJPUl9DT1VOVEVSKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIE1hbmRhdG9yeSBlbnRyaWVzIGZvciBFcnJvciBDb3Vu dGVyIE5vZGUgKi8KKwlpZiAobm9kZS0+dHlwZSA9PSBEUk1fUkFTX05PREVfVFlQRV9FUlJPUl9D T1VOVEVSICYmCisJICAgICghbm9kZS0+ZXJyb3JfY291bnRlcl9yYW5nZS5sYXN0IHx8ICFub2Rl LT5xdWVyeV9lcnJvcl9jb3VudGVyKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4geGFf YWxsb2MoJmRybV9yYXNfeGEsICZub2RlLT5pZCwgbm9kZSwgeGFfbGltaXRfMzJiLCBHRlBfS0VS TkVMKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKTsKKworLyoqCisg KiBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcigpIC0gVW5yZWdpc3RlciBhIHByZXZpb3VzbHkgcmVn aXN0ZXJlZCBub2RlCisgKiBAbm9kZTogTm9kZSBzdHJ1Y3R1cmUgdG8gdW5yZWdpc3RlcgorICoK KyAqIFJlbW92ZXMgdGhlIGdpdmVuIG5vZGUgZnJvbSB0aGUgZ2xvYmFsIG5vZGUgeGFycmF5IHVz aW5nIGl0cyBJRC4KKyAqLwordm9pZCBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJt X3Jhc19ub2RlICpub2RlKQoreworCXhhX2VyYXNlKCZkcm1fcmFzX3hhLCBub2RlLT5pZCk7Cit9 CitFWFBPUlRfU1lNQk9MKGRybV9yYXNfbm9kZV91bnJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fcmFzX2dlbmxfZmFtaWx5LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X3Jhc19nZW5sX2ZhbWlseS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uNmY0MDZkM2Q0OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9y YXNfZ2VubF9mYW1pbHkuYwpAQCAtMCwwICsxLDQyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjYgSW50ZWwgQ29ycG9yYXRpb24KKyAq LworCisjaW5jbHVkZSA8ZHJtL2RybV9yYXNfZ2VubF9mYW1pbHkuaD4KKyNpbmNsdWRlICJkcm1f cmFzX25sLmgiCisKKy8qIFRyYWNrIGZhbWlseSByZWdpc3RyYXRpb24gc28gdGhlIGRybV9leGl0 IGNhbiBiZSBjYWxsZWQgYXQgYW55IHRpbWUgKi8KK3N0YXRpYyBib29sIHJlZ2lzdGVyZWQ7CisK Ky8qKgorICogZHJtX3Jhc19nZW5sX2ZhbWlseV9yZWdpc3RlcigpIC0gUmVnaXN0ZXIgZHJtLXJh cyBnZW5sIGZhbWlseQorICoKKyAqIE9ubHkgdG8gYmUgY2FsbGVkIG9uZSBhdCBkcm1fZHJ2X2lu aXQoKQorICovCitpbnQgZHJtX3Jhc19nZW5sX2ZhbWlseV9yZWdpc3Rlcih2b2lkKQoreworCWlu dCByZXQ7CisKKwlyZWdpc3RlcmVkID0gZmFsc2U7CisKKwlyZXQgPSBnZW5sX3JlZ2lzdGVyX2Zh bWlseSgmZHJtX3Jhc19ubF9mYW1pbHkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwly ZWdpc3RlcmVkID0gdHJ1ZTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBkcm1fcmFzX2dlbmxf ZmFtaWx5X3VucmVnaXN0ZXIoKSAtIFVucmVnaXN0ZXIgZHJtLXJhcyBnZW5sIGZhbWlseQorICoK KyAqIFRvIGJlIGNhbGxlZCBvbmUgYXQgZHJtX2Rydl9leGl0KCkgYXQgYW55IG1vbWVudCwgYnV0 IG9ubHkgb25jZS4KKyAqLwordm9pZCBkcm1fcmFzX2dlbmxfZmFtaWx5X3VucmVnaXN0ZXIodm9p ZCkKK3sKKwlpZiAocmVnaXN0ZXJlZCkgeworCQlnZW5sX3VucmVnaXN0ZXJfZmFtaWx5KCZkcm1f cmFzX25sX2ZhbWlseSk7CisJCXJlZ2lzdGVyZWQgPSBmYWxzZTsKKwl9Cit9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Jhc19ubC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yYXNf bmwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE2ODAzZDBjNGE0 NAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmMKQEAgLTAs MCArMSw1NiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6ICgoR1BMLTIuMCBXSVRIIExp bnV4LXN5c2NhbGwtbm90ZSkgT1IgQlNELTMtQ2xhdXNlKQorLyogRG8gbm90IGVkaXQgZGlyZWN0 bHksIGF1dG8tZ2VuZXJhdGVkIGZyb206ICovCisvKglEb2N1bWVudGF0aW9uL25ldGxpbmsvc3Bl Y3MvZHJtX3Jhcy55YW1sICovCisvKiBZTkwtR0VOIGtlcm5lbCBzb3VyY2UgKi8KKy8qIFRvIHJl Z2VuZXJhdGUgcnVuOiB0b29scy9uZXQveW5sL3lubC1yZWdlbi5zaCAqLworCisjaW5jbHVkZSA8 bmV0L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxuZXQvZ2VuZXRsaW5rLmg+CisKKyNpbmNsdWRlICJk cm1fcmFzX25sLmgiCisKKyNpbmNsdWRlIDx1YXBpL2RybS9kcm1fcmFzLmg+CisKKy8qIERSTV9S QVNfQ01EX0dFVF9FUlJPUl9DT1VOVEVSIC0gZG8gKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgbmxh X3BvbGljeSBkcm1fcmFzX2dldF9lcnJvcl9jb3VudGVyX2RvX25sX3BvbGljeVtEUk1fUkFTX0Ff RVJST1JfQ09VTlRFUl9BVFRSU19FUlJPUl9JRCArIDFdID0geworCVtEUk1fUkFTX0FfRVJST1Jf Q09VTlRFUl9BVFRSU19OT0RFX0lEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAorCVtEUk1fUkFT X0FfRVJST1JfQ09VTlRFUl9BVFRSU19FUlJPUl9JRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSwK K307CisKKy8qIERSTV9SQVNfQ01EX0dFVF9FUlJPUl9DT1VOVEVSIC0gZHVtcCAqLworc3RhdGlj IGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRybV9yYXNfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcF9u bF9wb2xpY3lbRFJNX1JBU19BX0VSUk9SX0NPVU5URVJfQVRUUlNfTk9ERV9JRCArIDFdID0gewor CVtEUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19OT0RFX0lEXSA9IHsgLnR5cGUgPSBOTEFf VTMyLCB9LAorfTsKKworLyogT3BzIHRhYmxlIGZvciBkcm1fcmFzICovCitzdGF0aWMgY29uc3Qg c3RydWN0IGdlbmxfc3BsaXRfb3BzIGRybV9yYXNfbmxfb3BzW10gPSB7CisJeworCQkuY21kCT0g RFJNX1JBU19DTURfTElTVF9OT0RFUywKKwkJLmR1bXBpdAk9IGRybV9yYXNfbmxfbGlzdF9ub2Rl c19kdW1waXQsCisJCS5mbGFncwk9IEdFTkxfQURNSU5fUEVSTSB8IEdFTkxfQ01EX0NBUF9EVU1Q LAorCX0sCisJeworCQkuY21kCQk9IERSTV9SQVNfQ01EX0dFVF9FUlJPUl9DT1VOVEVSLAorCQku ZG9pdAkJPSBkcm1fcmFzX25sX2dldF9lcnJvcl9jb3VudGVyX2RvaXQsCisJCS5wb2xpY3kJCT0g ZHJtX3Jhc19nZXRfZXJyb3JfY291bnRlcl9kb19ubF9wb2xpY3ksCisJCS5tYXhhdHRyCT0gRFJN X1JBU19BX0VSUk9SX0NPVU5URVJfQVRUUlNfRVJST1JfSUQsCisJCS5mbGFncwkJPSBHRU5MX0FE TUlOX1BFUk0gfCBHRU5MX0NNRF9DQVBfRE8sCisJfSwKKwl7CisJCS5jbWQJCT0gRFJNX1JBU19D TURfR0VUX0VSUk9SX0NPVU5URVIsCisJCS5kdW1waXQJCT0gZHJtX3Jhc19ubF9nZXRfZXJyb3Jf Y291bnRlcl9kdW1waXQsCisJCS5wb2xpY3kJCT0gZHJtX3Jhc19nZXRfZXJyb3JfY291bnRlcl9k dW1wX25sX3BvbGljeSwKKwkJLm1heGF0dHIJPSBEUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRS U19OT0RFX0lELAorCQkuZmxhZ3MJCT0gR0VOTF9BRE1JTl9QRVJNIHwgR0VOTF9DTURfQ0FQX0RV TVAsCisJfSwKK307CisKK3N0cnVjdCBnZW5sX2ZhbWlseSBkcm1fcmFzX25sX2ZhbWlseSBfX3Jv X2FmdGVyX2luaXQgPSB7CisJLm5hbWUJCT0gRFJNX1JBU19GQU1JTFlfTkFNRSwKKwkudmVyc2lv bgk9IERSTV9SQVNfRkFNSUxZX1ZFUlNJT04sCisJLm5ldG5zb2sJPSB0cnVlLAorCS5wYXJhbGxl bF9vcHMJPSB0cnVlLAorCS5tb2R1bGUJCT0gVEhJU19NT0RVTEUsCisJLnNwbGl0X29wcwk9IGRy bV9yYXNfbmxfb3BzLAorCS5uX3NwbGl0X29wcwk9IEFSUkFZX1NJWkUoZHJtX3Jhc19ubF9vcHMp LAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmFzX25sLmggYi9kcml2ZXJz L2dwdS9kcm0vZHJtX3Jhc19ubC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMDZjY2Q5MzQyNzczCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9yYXNfbmwuaApAQCAtMCwwICsxLDI0IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog KChHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlKSBPUiBCU0QtMy1DbGF1c2UpICovCisv KiBEbyBub3QgZWRpdCBkaXJlY3RseSwgYXV0by1nZW5lcmF0ZWQgZnJvbTogKi8KKy8qCURvY3Vt ZW50YXRpb24vbmV0bGluay9zcGVjcy9kcm1fcmFzLnlhbWwgKi8KKy8qIFlOTC1HRU4ga2VybmVs IGhlYWRlciAqLworLyogVG8gcmVnZW5lcmF0ZSBydW46IHRvb2xzL25ldC95bmwveW5sLXJlZ2Vu LnNoICovCisKKyNpZm5kZWYgX0xJTlVYX0RSTV9SQVNfR0VOX0gKKyNkZWZpbmUgX0xJTlVYX0RS TV9SQVNfR0VOX0gKKworI2luY2x1ZGUgPG5ldC9uZXRsaW5rLmg+CisjaW5jbHVkZSA8bmV0L2dl bmV0bGluay5oPgorCisjaW5jbHVkZSA8dWFwaS9kcm0vZHJtX3Jhcy5oPgorCitpbnQgZHJtX3Jh c19ubF9saXN0X25vZGVzX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJCSBzdHJ1Y3Qg bmV0bGlua19jYWxsYmFjayAqY2IpOworaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJf ZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJCSAgICAgIHN0cnVjdCBnZW5sX2luZm8gKmlu Zm8pOworaW50IGRybV9yYXNfbmxfZ2V0X2Vycm9yX2NvdW50ZXJfZHVtcGl0KHN0cnVjdCBza19i dWZmICpza2IsCisJCQkJCXN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7CisKK2V4dGVybiBz dHJ1Y3QgZ2VubF9mYW1pbHkgZHJtX3Jhc19ubF9mYW1pbHk7CisKKyNlbmRpZiAvKiBfTElOVVhf RFJNX1JBU19HRU5fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3Jhcy5oIGIvaW5j bHVkZS9kcm0vZHJtX3Jhcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uNWQ1MDIwOWU1MWRiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0vZHJtX3Jhcy5o CkBAIC0wLDAgKzEsNzUgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8q CisgKiBDb3B5cmlnaHQgwqkgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYg X19EUk1fUkFTX0hfXworI2RlZmluZSBfX0RSTV9SQVNfSF9fCisKKyNpbmNsdWRlIDx1YXBpL2Ry bS9kcm1fcmFzLmg+CisKKy8qKgorICogc3RydWN0IGRybV9yYXNfbm9kZSAtIEEgRFJNIFJBUyBO b2RlCisgKi8KK3N0cnVjdCBkcm1fcmFzX25vZGUgeworCS8qKiBAaWQ6IFVuaXF1ZSBpZGVudGlm aWVyIGZvciB0aGUgbm9kZS4gRHluYW1pY2FsbHkgYXNzaWduZWQuICovCisJdTMyIGlkOworCS8q KgorCSAqIEBkZXZpY2VfbmFtZTogSHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGUgZGV2aWNlLiBH aXZlbiBieSB0aGUgZHJpdmVyLgorCSAqLworCWNvbnN0IGNoYXIgKmRldmljZV9uYW1lOworCS8q KiBAbm9kZV9uYW1lOiBIdW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoZSBub2RlLiBHaXZlbiBieSB0 aGUgZHJpdmVyLiAqLworCWNvbnN0IGNoYXIgKm5vZGVfbmFtZTsKKwkvKiogQHR5cGU6IFR5cGUg b2YgdGhlIG5vZGUgKGVudW0gZHJtX3Jhc19ub2RlX3R5cGUpLiAqLworCWVudW0gZHJtX3Jhc19u b2RlX3R5cGUgdHlwZTsKKworCS8qIEVycm9yLUNvdW50ZXIgUmVsYXRlZCBDYWxsYmFjayBhbmQg VmFyaWFibGVzICovCisKKwkvKiogQGVycm9yX2NvdW50ZXJfcmFuZ2U6IFJhbmdlIG9mIHZhbGlk IEVycm9yIElEcyBmb3IgdGhpcyBub2RlLiAqLworCXN0cnVjdCB7CisJCS8qKiBAZmlyc3Q6IEZp cnN0IHZhbGlkIEVycm9yIElELiAqLworCQl1MzIgZmlyc3Q7CisJCS8qKiBAbGFzdDogTGFzdCB2 YWxpZCBFcnJvciBJRC4gTWFuZGF0b3J5IGVudHJ5LiAqLworCQl1MzIgbGFzdDsKKwl9IGVycm9y X2NvdW50ZXJfcmFuZ2U7CisKKwkvKioKKwkgKiBAcXVlcnlfZXJyb3JfY291bnRlcjoKKwkgKgor CSAqIFRoaXMgY2FsbGJhY2sgaXMgdXNlZCBieSBkcm0tcmFzIHRvIHF1ZXJ5IGEgc3BlY2lmaWMg ZXJyb3IgY291bnRlci4KKwkgKiBVc2VkIGZvciBpbnB1dCBjaGVjayBhbmQgdG8gaXRlcmF0ZSBh bGwgZXJyb3IgY291bnRlcnMgaW4gYSBub2RlLgorCSAqCisJICogRHJpdmVyIHNob3VsZCBleHBl Y3QgcXVlcnlfZXJyb3JfY291bnRlcigpIHRvIGJlIGNhbGxlZCB3aXRoCisJICogZXJyb3JfaWQg ZnJvbSBgZXJyb3JfY291bnRlcl9yYW5nZS5maXJzdGAgdG8KKwkgKiBgZXJyb3JfY291bnRlcl9y YW5nZS5sYXN0YC4KKwkgKgorCSAqIFRoZSBAcXVlcnlfZXJyb3JfY291bnRlciBpcyBhIG1hbmRh dG9yeSBjYWxsYmFjayBmb3IKKwkgKiBlcnJvcl9jb3VudGVyX25vZGUuCisJICoKKwkgKiBSZXR1 cm5zOiAwIG9uIHN1Y2Nlc3MsCisJICogICAgICAgICAgLUVOT0VOVCB3aGVuIGVycm9yX2lkIGlz IG5vdCBzdXBwb3J0ZWQgYXMgYW4gaW5kaWNhdGlvbiB0aGF0CisJICogICAgICAgICAgICAgICAg ICBkcm1fcmFzIHNob3VsZCBzaWxlbnRseSBza2lwIHRoaXMgZW50cnkuIFVzZWQgZm9yCisJICog ICAgICAgICAgICAgICAgICBzdXBwb3J0aW5nIG5vbi1jb250aWd1b3VzIGVycm9yIHJhbmdlcy4K KwkgKiAgICAgICAgICAgICAgICAgIERyaXZlciBpcyByZXNwb25zaWJsZSBmb3IgbWFpbnRhaW5p bmcgdGhlIGxpc3Qgb2YKKwkgKiAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBlcnJvciBJRHMg aW4gdGhlIHJhbmdlIG9mIGZpcnN0IHRvIGxhc3QuCisJICogICAgICAgICAgT3RoZXIgbmVnYXRp dmUgdmFsdWVzIG9uIGVycm9ycyB0aGF0IHNob3VsZCB0ZXJtaW5hdGUgdGhlCisJICogICAgICAg ICAgbmV0bGluayBxdWVyeS4KKwkgKi8KKwlpbnQgKCpxdWVyeV9lcnJvcl9jb3VudGVyKShzdHJ1 Y3QgZHJtX3Jhc19ub2RlICpub2RlLCB1MzIgZXJyb3JfaWQsCisJCQkJICAgY29uc3QgY2hhciAq Km5hbWUsIHUzMiAqdmFsKTsKKworCS8qKiBAcHJpdjogRHJpdmVyIHByaXZhdGUgZGF0YSAqLwor CXZvaWQgKnByaXY7Cit9OworCitzdHJ1Y3QgZHJtX2RldmljZTsKKworI2lmIElTX0VOQUJMRUQo Q09ORklHX0RSTV9SQVMpCitpbnQgZHJtX3Jhc19ub2RlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fcmFz X25vZGUgKm5vZGUpOwordm9pZCBkcm1fcmFzX25vZGVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX3Jh c19ub2RlICpub2RlKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCBkcm1fcmFzX25vZGVfcmVn aXN0ZXIoc3RydWN0IGRybV9yYXNfbm9kZSAqbm9kZSkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlu bGluZSB2b2lkIGRybV9yYXNfbm9kZV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fcmFzX25vZGUgKm5v ZGUpIHsgfQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3Jh c19nZW5sX2ZhbWlseS5oIGIvaW5jbHVkZS9kcm0vZHJtX3Jhc19nZW5sX2ZhbWlseS5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTEwZmIzOTQzYTc1Ci0tLSAvZGV2 L251bGwKKysrIGIvaW5jbHVkZS9kcm0vZHJtX3Jhc19nZW5sX2ZhbWlseS5oCkBAIC0wLDAgKzEs MTcgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmln aHQgwqkgMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX19EUk1fUkFTX0dF TkxfRkFNSUxZX0hfXworI2RlZmluZSBfX0RSTV9SQVNfR0VOTF9GQU1JTFlfSF9fCisKKyNpZiBJ U19FTkFCTEVEKENPTkZJR19EUk1fUkFTKQoraW50IGRybV9yYXNfZ2VubF9mYW1pbHlfcmVnaXN0 ZXIodm9pZCk7Cit2b2lkIGRybV9yYXNfZ2VubF9mYW1pbHlfdW5yZWdpc3Rlcih2b2lkKTsKKyNl bHNlCitzdGF0aWMgaW5saW5lIGludCBkcm1fcmFzX2dlbmxfZmFtaWx5X3JlZ2lzdGVyKHZvaWQp IHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1fcmFzX2dlbmxfZmFtaWx5X3Vu cmVnaXN0ZXIodm9pZCkgeyB9CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRl L3VhcGkvZHJtL2RybV9yYXMuaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX3Jhcy5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWY0MGZhNWI4NjlkCi0tLSAvZGV2L251 bGwKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fcmFzLmgKQEAgLTAsMCArMSw0OSBAQAorLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6ICgoR1BMLTIuMCBXSVRIIExpbnV4LXN5c2NhbGwtbm90 ZSkgT1IgQlNELTMtQ2xhdXNlKSAqLworLyogRG8gbm90IGVkaXQgZGlyZWN0bHksIGF1dG8tZ2Vu ZXJhdGVkIGZyb206ICovCisvKglEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZHJtX3Jhcy55 YW1sICovCisvKiBZTkwtR0VOIHVhcGkgaGVhZGVyICovCisvKiBUbyByZWdlbmVyYXRlIHJ1bjog dG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8KKworI2lmbmRlZiBfVUFQSV9MSU5VWF9EUk1f UkFTX0gKKyNkZWZpbmUgX1VBUElfTElOVVhfRFJNX1JBU19ICisKKyNkZWZpbmUgRFJNX1JBU19G QU1JTFlfTkFNRQkiZHJtLXJhcyIKKyNkZWZpbmUgRFJNX1JBU19GQU1JTFlfVkVSU0lPTgkxCisK Ky8qCisgKiBUeXBlIG9mIHRoZSBub2RlLiBDdXJyZW50bHksIG9ubHkgZXJyb3ItY291bnRlciBu b2RlcyBhcmUgc3VwcG9ydGVkLCB3aGljaAorICogZXhwb3NlIHJlbGlhYmlsaXR5IGNvdW50ZXJz IGZvciBhIGhhcmR3YXJlL3NvZnR3YXJlIGNvbXBvbmVudC4KKyAqLworZW51bSBkcm1fcmFzX25v ZGVfdHlwZSB7CisJRFJNX1JBU19OT0RFX1RZUEVfRVJST1JfQ09VTlRFUiA9IDEsCit9OworCitl bnVtIHsKKwlEUk1fUkFTX0FfTk9ERV9BVFRSU19OT0RFX0lEID0gMSwKKwlEUk1fUkFTX0FfTk9E RV9BVFRSU19ERVZJQ0VfTkFNRSwKKwlEUk1fUkFTX0FfTk9ERV9BVFRSU19OT0RFX05BTUUsCisJ RFJNX1JBU19BX05PREVfQVRUUlNfTk9ERV9UWVBFLAorCisJX19EUk1fUkFTX0FfTk9ERV9BVFRS U19NQVgsCisJRFJNX1JBU19BX05PREVfQVRUUlNfTUFYID0gKF9fRFJNX1JBU19BX05PREVfQVRU UlNfTUFYIC0gMSkKK307CisKK2VudW0geworCURSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJT X05PREVfSUQgPSAxLAorCURSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX0VSUk9SX0lELAor CURSTV9SQVNfQV9FUlJPUl9DT1VOVEVSX0FUVFJTX0VSUk9SX05BTUUsCisJRFJNX1JBU19BX0VS Uk9SX0NPVU5URVJfQVRUUlNfRVJST1JfVkFMVUUsCisKKwlfX0RSTV9SQVNfQV9FUlJPUl9DT1VO VEVSX0FUVFJTX01BWCwKKwlEUk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggPSAoX19E Uk1fUkFTX0FfRVJST1JfQ09VTlRFUl9BVFRSU19NQVggLSAxKQorfTsKKworZW51bSB7CisJRFJN X1JBU19DTURfTElTVF9OT0RFUyA9IDEsCisJRFJNX1JBU19DTURfR0VUX0VSUk9SX0NPVU5URVIs CisKKwlfX0RSTV9SQVNfQ01EX01BWCwKKwlEUk1fUkFTX0NNRF9NQVggPSAoX19EUk1fUkFTX0NN RF9NQVggLSAxKQorfTsKKworI2VuZGlmIC8qIF9VQVBJX0xJTlVYX0RSTV9SQVNfSCAqLwotLSAK Mi40Ny4xCgo=