From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from m16.mail.163.com (m16.mail.163.com [117.135.210.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D685C32C956; Thu, 18 Dec 2025 09:11:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=117.135.210.5 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766049109; cv=none; b=HkKSK7rg/FCzjss57p+PmZJ1q92ef+rGll3B5ii1xqdSL+bJ7a6BG+CDNvs5ajUgCPtucRYYwkOmH+wUfNEUSO53Z1aGHRCZl6ElPXV6Tz0uB6N5EQH3ug1PpcKLITpseek6EXMxQpXO+v0nRGCVsMeaz9nd1dJNkkLrHQu7GjQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766049109; c=relaxed/simple; bh=wW4AnS3CQBxRudKtCJN8mBlAmqEq5umtXRFQED7nZY0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h3vta7vkQhUZwa3GA3oxT3+fI+0CGZo5Js64Liyx9JKa+Z6CfABhDCwJG2VqDb9mNQtS26PwlLTwApdFotHbFF9hcVabPXSMS7wPIPcNHJ16RS0UU/hyNYrHdrcRiY9JgSS537+6RWLQjCVu9T/XyYwBRb0h8RDh/3S4GXNIQyA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=SZDsxzGe; arc=none smtp.client-ip=117.135.210.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="SZDsxzGe" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=wW 4AnS3CQBxRudKtCJN8mBlAmqEq5umtXRFQED7nZY0=; b=SZDsxzGerrJPGb/TU8 17RSapTysKe480wyZdJ3SB/+Iuocd2FNFkrwEK8gAfI3IRrB00n5f/PYsRACNoS6 A2gskXZGas0C+6lHS1DLZGmiJu5xlTfTcDUVBnuORCHIMYtrhxt3dhfHf3f3FhS1 PX44nLN15RdUWPfg4T82vlHc8= Received: from xwm-TianYi510Pro-14IMB.. (unknown []) by gzga-smtp-mtada-g0-4 (Coremail) with SMTP id _____wC3U84cxUNpI7dcBA--.210S3; Thu, 18 Dec 2025 17:10:55 +0800 (CST) From: Xiong Weimin <15927021679@163.com> To: "Michael S . Tsirkin" , David Hildenbrand , Jason Wang , Stefano Garzarella , Thomas Monjalon , David Marchand , Luca Boccassi , Kevin Traynor , Christian Ehrhardt , Xuan Zhuo , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Xueming Li , Maxime Coquelin , Chenbo Xia , Bruce Richardson Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, xiongweimin Subject: [PATCH 01/10] drivers/infiniband/hw/virtio: Initial driver for virtio RDMA devices Date: Thu, 18 Dec 2025 17:09:41 +0800 Message-ID: <20251218091050.55047-2-15927021679@163.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251218091050.55047-1-15927021679@163.com> References: <20251218091050.55047-1-15927021679@163.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: base64 X-CM-TRANSID:_____wC3U84cxUNpI7dcBA--.210S3 X-Coremail-Antispam: 1Uf129KBjvAXoWDCry8XF13Zw4UCFW8AFW3Awb_yoW7JrWkGo Zaq3sxXr4rJr97ArZ3KrZ7Jay3Zr9Fv3Z5Ar4Fv3s8tFZrXF1UAa47tw45Xr15KF1YyF1r Cry3JryfKr4vgFWfn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUxGYLDUUUU X-CM-SenderInfo: jprvmjixqsilmxzbiqqrwthudrp/xtbC0QCkLWlDxSAAewAA3s RnJvbTogeGlvbmd3ZWltaW4gPHhpb25nd2VpbWluQGt5bGlub3MuY24+CgpUaGlzIGNvbW1pdCBp bnRyb2R1Y2VzIGEgbmV3IGRyaXZlciBmb3IgUkRNQSBvdmVyIHZpcnRpbywgZW5hYmxpbmcKUkRN QSBjYXBhYmlsaXRpZXMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgZHJpdmVyIGNv bnNpc3RzCm9mIHRoZSBmb2xsb3dpbmcgbWFpbiBjb21wb25lbnRzOgoKMS4gRHJpdmVyIHJlZ2lz dHJhdGlvbiB3aXRoIHRoZSB2aXJ0aW8gc3Vic3lzdGVtIGFuZCBkZXZpY2UgZGlzY292ZXJ5Lgoy LiBEZXZpY2UgcHJvYmUgYW5kIHJlbW92ZSBoYW5kbGVycyBmb3IgbWFuYWdpbmcgdGhlIGRldmlj ZSBsaWZlY3ljbGUuCjMuIEluaXRpYWxpemF0aW9uIG9mIHRoZSBJbmZpbmlCYW5kIGRldmljZSBh dHRyaWJ1dGVzIGJ5IHJlYWRpbmcgdGhlCiAgIHZpcnRpbyBjb25maWd1cmF0aW9uIHNwYWNlLCBp bmNsdWRpbmcgY29udmVyc2lvbiBmcm9tIGxpdHRsZS1lbmRpYW4KICAgdG8gQ1BVIGJ5dGUgb3Jk ZXIgYW5kIGNhcGFiaWxpdHkgbWFwcGluZy4KNC4gU2V0dXAgb2YgdmlydHF1ZXVlcyBmb3I6CiAg IC0gQ29udHJvbCBjb21tYW5kcyAobm8gY2FsbGJhY2spCiAgIC0gQ29tcGxldGlvbiBxdWV1ZXMg KHdpdGggY2FsbGJhY2sgZm9yIENRIGV2ZW50cykKICAgLSBTZW5kIGFuZCByZWNlaXZlIHF1ZXVl cyBmb3IgcXVldWUgcGFpcnMgKG5vIGNhbGxiYWNrcykKNS4gSW50ZWdyYXRpb24gd2l0aCB0aGUg bmV0d29yayBkZXZpY2UgbGF5ZXIgZm9yIFJvQ0Ugc3VwcG9ydC4KNi4gUmVnaXN0cmF0aW9uIHdp dGggdGhlIEluZmluaUJhbmQgY29yZSBzdWJzeXN0ZW0uCjcuIENvbXByZWhlbnNpdmUgZXJyb3Ig aGFuZGxpbmcgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCBhIHN5bW1ldHJpYwogICB0ZWFyZG93 biBwcm9jZXNzLgoKS2V5IGZlYXR1cmVzOgotIFN1cHBvcnQgZm9yIG11bHRpcGxlIHZpcnRxdWV1 ZXMgYmFzZWQgb24gZGV2aWNlIGNhcGFiaWxpdGllcyAobWF4X2NxLCBtYXhfcXApCi0gRmFzdCBk b29yYmVsbCBvcHRpbWl6YXRpb24gd2hlbiBub3RpZnlfb2Zmc2V0X211bHRpcGxpZXIgZXF1YWxz IFBBR0VfU0laRQotIFNhZmUgcmVzb3VyY2UgbWFuYWdlbWVudCB3aXRoIHJvbGxiYWNrIG9uIGZh aWx1cmUKClNpZ25lZC1vZmYtYnk6IFhpb25nIFdlaW1pbiA8eGlvbmd3ZWltaW5Aa3lsaW5vcy5j bj4KLS0tCiBsaW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWcgICAgICAgfCAg IDEgKwogbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9ody9NYWtlZmlsZSAgIHwgICAx ICsKIC4uLi9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL0tjb25maWcgICAgICB8ICAgNiAr CiAuLi4vZHJpdmVycy9pbmZpbmliYW5kL2h3L3ZpcnRpby9NYWtlZmlsZSAgICAgfCAgIDUgKwog Li4uL2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWEuaCAgICAgIHwgIDgyICsrKysr KwogLi4uL2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWFfZGV2LmMgIHwgMjcyICsr KysrKysrKysrKysrKysrKwogLi4uL2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWFf ZGV2LmggIHwgIDE2ICsrCiAuLi4vaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWFfZGV2X2FwaS5o ICAgICAgfCAxMTYgKysrKysrKysKIC4uLi9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3Zy ZG1hX2liLmMgICB8IDE3MiArKysrKysrKysrKwogLi4uL2RyaXZlcnMvaW5maW5pYmFuZC9ody92 aXJ0aW8vdnJkbWFfaWIuaCAgIHwgIDgxICsrKysrKwogLi4uL2RyaXZlcnMvaW5maW5pYmFuZC9o dy92aXJ0aW8vdnJkbWFfbWFpbi5jIHwgMTU5ICsrKysrKysrKysKIC4uLi9pbmZpbmliYW5kL2h3 L3ZpcnRpby92cmRtYV9uZXRkZXYuYyAgICAgICB8IDEwNSArKysrKysrCiAuLi4vaW5maW5pYmFu ZC9ody92aXJ0aW8vdnJkbWFfbmV0ZGV2LmggICAgICAgfCAgMTQgKwogLi4uL2luZmluaWJhbmQv aHcvdmlydGlvL3ZyZG1hX3F1ZXVlLmMgICAgICAgIHwgIDIxICsrCiAuLi4vaW5maW5pYmFuZC9o dy92aXJ0aW8vdnJkbWFfcXVldWUuaCAgICAgICAgfCAgMTQgKwogbGludXgtNi4xNi44L2luY2x1 ZGUvcmRtYS92cmRtYV9hYmkuaCAgICAgICAgIHwgIDYyICsrKysKIGxpbnV4LTYuMTYuOC9pbmNs dWRlL3VhcGkvbGludXgvdmlydGlvX2lkcy5oICB8ICAgMSArCiAuLi4vaW5jbHVkZS91YXBpL3Jk bWEvaWJfdXNlcl9pb2N0bF92ZXJicy5oICAgfCAgIDEgKwogMTggZmlsZXMgY2hhbmdlZCwgMTEy OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGludXgtNi4xNi44L2RyaXZlcnMv aW5maW5pYmFuZC9ody92aXJ0aW8vS2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpbnV4LTYu MTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAx MDA2NDQgbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWEuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmly dGlvL3ZyZG1hX2Rldi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGludXgtNi4xNi44L2RyaXZlcnMv aW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWFfZGV2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaW51 eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYV9kZXZfYXBpLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3ZpcnRp by92cmRtYV9pYi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGludXgtNi4xNi44L2RyaXZlcnMvaW5m aW5pYmFuZC9ody92aXJ0aW8vdnJkbWFfaWIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpbnV4LTYu MTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hX21haW4uYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1h X25ldGRldi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5p YmFuZC9ody92aXJ0aW8vdnJkbWFfbmV0ZGV2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaW51eC02 LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYV9xdWV1ZS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJk bWFfcXVldWUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpbnV4LTYuMTYuOC9pbmNsdWRlL3JkbWEv dnJkbWFfYWJpLmgKCmRpZmYgLS1naXQgYS9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5k L0tjb25maWcgYi9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWcKaW5kZXgg YTU4MjdkMTFlLi45YmE1ZjU2MjggMTAwNjQ0Ci0tLSBhL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2lu ZmluaWJhbmQvS2NvbmZpZworKysgYi9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL0tj b25maWcKQEAgLTk0LDYgKzk0LDcgQEAgc291cmNlICJkcml2ZXJzL2luZmluaWJhbmQvaHcvb2Ny ZG1hL0tjb25maWciCiBzb3VyY2UgImRyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL0tjb25maWci CiBzb3VyY2UgImRyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvS2NvbmZpZyIKIHNvdXJjZSAiZHJp dmVycy9pbmZpbmliYW5kL2h3L3VzbmljL0tjb25maWciCitzb3VyY2UgImRyaXZlcnMvaW5maW5p YmFuZC9ody92aXJ0aW8vS2NvbmZpZyIKIHNvdXJjZSAiZHJpdmVycy9pbmZpbmliYW5kL2h3L3Zt d19wdnJkbWEvS2NvbmZpZyIKIHNvdXJjZSAiZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9L Y29uZmlnIgogZW5kaWYgIyAhVU1MCmRpZmYgLS1naXQgYS9saW51eC02LjE2LjgvZHJpdmVycy9p bmZpbmliYW5kL2h3L01ha2VmaWxlIGIvbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9o dy9NYWtlZmlsZQppbmRleCBhYmE5NmNhOWIuLjYzMjUzYTA2NiAxMDA2NDQKLS0tIGEvbGludXgt Ni4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9ody9NYWtlZmlsZQorKysgYi9saW51eC02LjE2Ljgv ZHJpdmVycy9pbmZpbmliYW5kL2h3L01ha2VmaWxlCkBAIC0xNCw0ICsxNCw1IEBAIG9iai0kKENP TkZJR19JTkZJTklCQU5EX0hGSTEpCQkrPSBoZmkxLwogb2JqLSQoQ09ORklHX0lORklOSUJBTkRf SE5TX0hJUDA4KQkrPSBobnMvCiBvYmotJChDT05GSUdfSU5GSU5JQkFORF9RRURSKQkJKz0gcWVk ci8KIG9iai0kKENPTkZJR19JTkZJTklCQU5EX0JOWFRfUkUpCSs9IGJueHRfcmUvCitvYmotJChD T05GSUdfSU5GSU5JQkFORF9WSVJUSU9fUkRNQSkJKz0gdmlydGlvLwogb2JqLSQoQ09ORklHX0lO RklOSUJBTkRfRVJETUEpCQkrPSBlcmRtYS8KZGlmZiAtLWdpdCBhL2xpbnV4LTYuMTYuOC9kcml2 ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL0tjb25maWcgYi9saW51eC02LjE2LjgvZHJpdmVycy9p bmZpbmliYW5kL2h3L3ZpcnRpby9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uYTU2MjRmOThmCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgtNi4xNi44L2RyaXZl cnMvaW5maW5pYmFuZC9ody92aXJ0aW8vS2NvbmZpZwpAQCAtMCwwICsxLDYgQEAKK2NvbmZpZyBJ TkZJTklCQU5EX1ZJUlRJT19SRE1BCisJdHJpc3RhdGUgIlZpcnRJTyBQYXJhdmlydHVhbGl6ZWQg UkRNQSBEcml2ZXIiCisJZGVwZW5kcyBvbiBORVRERVZJQ0VTICYmIEVUSEVSTkVUICYmIFBDSSAm JiBJTkVUICYmIFZJUlRJTworCWhlbHAKKwkgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGxvdy1sZXZl bCBzdXBwb3J0IGZvciBWaXJ0SU8gUGFyYXZpcnR1YWwKKwkgIFJETUEgYWRhcHRlci4KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9saW51eC02LjE2LjgvZHJpdmVycy9p bmZpbmliYW5kL2h3L3ZpcnRpby9NYWtlZmlsZSBiL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmlu aWJhbmQvaHcvdmlydGlvL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uZGJlZDY0NzFlCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgtNi4xNi44L2RyaXZlcnMv aW5maW5pYmFuZC9ody92aXJ0aW8vTWFrZWZpbGUKQEAgLTAsMCArMSw1IEBACisjb2JqLSQoQ09O RklHX0lORklOSUJBTkRfVklSVElPX1JETUEpIDo9IHZpcnRpb19yZG1hLm8KK29iai1tICs9IHZy ZG1hLm8KKwordnJkbWEteSA6PSB2cmRtYV9tYWluLm8gdnJkbWFfZGV2Lm8gdnJkbWFfaWIubyBc CisJCSB2cmRtYV9uZXRkZXYubyB2cmRtYV9kZXYubyB2cmRtYV9xdWV1ZS5vICAKZGlmZiAtLWdp dCBhL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hLmggYi9s aW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYmM3MmQ5YzVlCi0tLSAvZGV2L251bGwKKysr IGIvbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWEuaApAQCAt MCwwICsxLDgyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBvciBCU0Qt My1DbGF1c2UKKworLyogQXV0aG9yczogWGlvbmcgV2VpbWluIDx4aW9uZ3dlaW1pbkBreWxpbm9z LmNuPiAqLworLyogQ29weXJpZ2h0IDIwMjAua3lsaW5vcy5jbi5BbGwgUmlnaHRzIFJlc2VydmVk LiovCisKKyNpZm5kZWYgX19WSVJUSU9fUkRNQV9IX18KKyNkZWZpbmUgX19WSVJUSU9fUkRNQV9I X18KKworI2luY2x1ZGUgPGxpbnV4L3ZpcnRpby5oPgorI2luY2x1ZGUgPGxpbnV4L3ZpcnRpb19j b25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC92aXJ0aW9faWRzLmg+CisjaW5jbHVkZSA8bGludXgv bmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8cmRtYS9pYl92ZXJicy5oPgorI2luY2x1ZGUgPGxpbnV4 L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+CisjaW5jbHVkZSA8bGludXgv bXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisKKy8qKgorICogc3RydWN0IHZyZG1h X2RldiAtIFZpcnR1YWwgUkRNQSBkZXZpY2Ugc3RydWN0dXJlCisgKiBAaWJfZGV2OgkJSW5maW5p QmFuZCBkZXZpY2UgKG11c3QgYmUgZmlyc3QgZm9yIGNvbnRhaW5lcl9vZikKKyAqIEBhdHRyOgkJ Q2FjaGVkIGRldmljZSBhdHRyaWJ1dGVzCisgKiBAbmV0ZGV2OgkJQXNzb2NpYXRlZCBuZXR3b3Jr IGRldmljZSAoZm9yIG9mZmxvYWQsIGV0Yy4pCisgKiBAdmRldjoJCVZpcnRpbyBkZXZpY2UgYmFj a2luZyB0aGlzIFJETUEgZGV2aWNlCisgKiBAY3RybF92cToJCUNvbnRyb2wgdmlydHF1ZXVlIGZv ciBjb25maWd1cmF0aW9uIGFuZCBtYW5hZ2VtZW50CisgKiBAY3RybF9sb2NrOgkJU3BpbmxvY2sg cHJvdGVjdGluZyBjb250cm9sIG9wZXJhdGlvbnMKKyAqIEBjcV92cXM6CQlBcnJheSBvZiBDUSAo Q29tcGxldGlvbiBRdWV1ZSkgdmlydHVhbCBxdWV1ZXMKKyAqIEBjcXM6CQlQb2ludGVyIGFycmF5 IHRvIGFjdGl2ZSBjb21wbGV0aW9uIHF1ZXVlcworICogQHFwX3ZxczoJCUFycmF5IG9mIFFQIChR dWV1ZSBQYWlyKSB2aXJ0dWFsIHF1ZXVlcworICogQG51bV9xcDoJCUNvdW50ZXIgZm9yIGFjdGl2 ZSBxdWV1ZSBwYWlycworICogQG51bV9jcToJCUNvdW50ZXIgZm9yIGFjdGl2ZSBjb21wbGV0aW9u IHF1ZXVlcworICogQG51bV9haDoJCUNvdW50ZXIgZm9yIGFjdGl2ZSBhZGRyZXNzIGhhbmRsZXMK KyAqIEBwZW5kaW5nX21tYXBzOglMaXN0IG9mIHBlbmRpbmcgbWVtb3J5IG1hcHBpbmdzIGZvciBt bWFwIGhhbmRsaW5nCisgKiBAcGVuZGluZ19tbWFwc19sb2NrOiBMb2NrIHByb3RlY3RpbmcgcGVu ZGluZ19tbWFwcyBsaXN0CisgKiBAcG9ydF9tdXRleDoJCU11dGV4IGZvciBwb3J0IHN0YXRlIGNo YW5nZXMKKyAqIEBwb3J0X2NhcF9tYXNrOglQb3J0IGNhcGFiaWxpdGllcyBiaXRtYXNrCisgKiBA aWJfYWN0aXZlOgkJRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgSUIgcG9ydCBpcyBhY3RpdmUKKyAq IEBmYXN0X2Rvb3JiZWxsOglFbmFibGUgZmFzdCBkb29yYmVsbCBtZWNoYW5pc20gKGlmIHN1cHBv cnRlZCkKKyAqLworc3RydWN0IHZyZG1hX2RldiB7CisJLyogTXVzdCBjb21lIGZpcnN0IGZvciBw cm9wZXIgY29udGFpbmVyX29mIHVzYWdlIGluIElCIGxheWVyICovCisJc3RydWN0IGliX2Rldmlj ZSBpYl9kZXY7CisKKwkvKiBEZXZpY2UgYXR0cmlidXRlcyBjYWNoZSAqLworCXN0cnVjdCBpYl9k ZXZpY2VfYXR0ciBhdHRyOworCisJLyogT3B0aW9uYWwgYXNzb2NpYXRlZCBuZXQgZGV2aWNlIChl LmcuLCBmb3IgSVBvSUIgb3Igb2ZmbG9hZCkgKi8KKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2 OworCisJLyogQmFja2VuZCB2aXJ0aW8gZGV2aWNlIGFuZCBjb250cm9sIHZxICovCisJc3RydWN0 IHZpcnRpb19kZXZpY2UgKnZkZXY7CisJc3RydWN0IHZpcnRxdWV1ZSAqY3RybF92cTsKKworCS8q IExvY2sgZm9yIGNvbnRyb2xsaW5nIGFjY2VzcyB0byBjdHJsX3ZxICovCisJc3BpbmxvY2tfdCBj dHJsX2xvY2s7CisKKwkvKiBDb21wbGV0aW9uIFF1ZXVlIChDUSkgcmVsYXRlZCAqLworCXN0cnVj dCB2cmRtYV92cSAqY3FfdnFzOwkvKiBBcnJheSBvZiBDUSBWUXMgKi8KKwlzdHJ1Y3QgdnJkbWFf Y3EgKipjcXM7CQkvKiBBcnJheSBvZiBwb2ludGVycyB0byBDUXMgKi8KKworCS8qIFF1ZXVlIFBh aXIgKFFQKSByZWxhdGVkICovCisJc3RydWN0IHZyZG1hX3ZxICpxcF92cXM7CS8qIEFycmF5IG9m IFFQIFZRcyAqLworCisJLyogUmVzb3VyY2UgY291bnRlcnMgKi8KKwlhdG9taWNfdCBudW1fcXA7 CisJYXRvbWljX3QgbnVtX2NxOworCWF0b21pY190IG51bV9haDsKKworCS8qIFBlbmRpbmcgbW1h cHMgZnJvbSB1c2Vyc3BhY2UgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbW1hcHM7CisJ c3BpbmxvY2tfdCBwZW5kaW5nX21tYXBzX2xvY2s7CisKKwkvKiBQb3J0IG1hbmFnZW1lbnQgKi8K KwlzdHJ1Y3QgbXV0ZXggcG9ydF9tdXRleDsKKwl1MzIgcG9ydF9jYXBfbWFzazsKKworCS8qIFJ1 bnRpbWUgc3RhdGUgZmxhZ3MgKi8KKwlib29sIGliX2FjdGl2ZTsKKwlib29sIGZhc3RfZG9vcmJl bGw7Cit9OworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYV9kZXYuYyBi L2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hX2Rldi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMGEwOWIzYmQ0Ci0tLSAvZGV2L251 bGwKKysrIGIvbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWFf ZGV2LmMKQEAgLTAsMCArMSwyNzIgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wIG9yIEJTRC0zLUNsYXVzZQorCisvKiBBdXRob3JzOiBYaW9uZyBXZWltaW4gPHhpb25nd2Vp bWluQGt5bGlub3MuY24+ICovCisvKiBDb3B5cmlnaHQgMjAyMC5reWxpbm9zLmNuLkFsbCBSaWdo dHMgUmVzZXJ2ZWQuKi8KKworI2luY2x1ZGUgPGxpbnV4L3ZpcnRpb19jb25maWcuaD4KKworI2lu Y2x1ZGUgInZyZG1hLmgiCisjaW5jbHVkZSAidnJkbWFfZGV2X2FwaS5oIgorI2luY2x1ZGUgInZy ZG1hX3F1ZXVlLmgiCisKKy8qKgorICogaW5pdF9kZXZpY2VfYXR0ciAtIEluaXRpYWxpemUgSUIg ZGV2aWNlIGF0dHJpYnV0ZXMgZnJvbSB2aXJ0aW8gY29uZmlnIHNwYWNlCisgKiBAcmRldjogVmly dGlvIFJETUEgZGV2aWNlCisgKgorICogUmVhZHMgdGhlIGRldmljZSBjb25maWd1cmF0aW9uIGZp ZWxkcyBhbmQgcG9wdWxhdGVzIHRoZSBJbmZpbmlCYW5kIGRldmljZQorICogYXR0cmlidXRlcyAo JnJkZXYtPmliX2Rldi5hdHRycykuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZHVyaW5n IGRldmljZQorICogcHJvYmUgYWZ0ZXIgdGhlIHZpcnRxdWV1ZSBpcyByZWFkeSBidXQgYmVmb3Jl IHJlZ2lzdGVyaW5nIHRoZSBJQiBkZXZpY2UuCisgKi8KK3N0YXRpYyB2b2lkIGluaXRfZGV2aWNl X2F0dHIoc3RydWN0IHZyZG1hX2RldiAqcmRldikKK3sKKwlzdHJ1Y3QgaWJfZGV2aWNlX2F0dHIg KmF0dHIgPSAmcmRldi0+YXR0cjsKKwlzdHJ1Y3QgdnJkbWFfY29uZmlnIGNmZzsKKworCS8qIFpl cm8gb3V0IGF0dHJpYnV0ZSBzdHJ1Y3R1cmUgKi8KKwltZW1zZXQoYXR0ciwgMCwgc2l6ZW9mKCph dHRyKSk7CisKKwkvKiBSZWFkIGVudGlyZSBjb25maWcgYXQgb25jZSBmb3IgZWZmaWNpZW5jeSBh bmQgYXRvbWljaXR5ICovCisJdmlydGlvX2NyZWFkKHJkZXYtPnZkZXYsIHN0cnVjdCB2cmRtYV9j b25maWcsIHBoeXNfcG9ydF9jbnQsICZjZmcucGh5c19wb3J0X2NudCk7CisJdmlydGlvX2NyZWFk KHJkZXYtPnZkZXYsIHN0cnVjdCB2cmRtYV9jb25maWcsIHN5c19pbWFnZV9ndWlkLCAmY2ZnLnN5 c19pbWFnZV9ndWlkKTsKKwl2aXJ0aW9fY3JlYWQocmRldi0+dmRldiwgc3RydWN0IHZyZG1hX2Nv bmZpZywgdmVuZG9yX2lkLCAmY2ZnLnZlbmRvcl9pZCk7CisJdmlydGlvX2NyZWFkKHJkZXYtPnZk ZXYsIHN0cnVjdCB2cmRtYV9jb25maWcsIHZlbmRvcl9wYXJ0X2lkLCAmY2ZnLnZlbmRvcl9wYXJ0 X2lkKTsKKwl2aXJ0aW9fY3JlYWQocmRldi0+dmRldiwgc3RydWN0IHZyZG1hX2NvbmZpZywgaHdf dmVyLCAmY2ZnLmh3X3Zlcik7CisJdmlydGlvX2NyZWFkKHJkZXYtPnZkZXYsIHN0cnVjdCB2cmRt YV9jb25maWcsIG1heF9tcl9zaXplLCAmY2ZnLm1heF9tcl9zaXplKTsKKwl2aXJ0aW9fY3JlYWQo cmRldi0+dmRldiwgc3RydWN0IHZyZG1hX2NvbmZpZywgcGFnZV9zaXplX2NhcCwgJmNmZy5wYWdl X3NpemVfY2FwKTsKKwl2aXJ0aW9fY3JlYWQocmRldi0+dmRldiwgc3RydWN0IHZyZG1hX2NvbmZp ZywgbWF4X3FwLCAmY2ZnLm1heF9xcCk7CisJdmlydGlvX2NyZWFkKHJkZXYtPnZkZXYsIHN0cnVj dCB2cmRtYV9jb25maWcsIG1heF9xcF93ciwgJmNmZy5tYXhfcXBfd3IpOworCXZpcnRpb19jcmVh ZChyZGV2LT52ZGV2LCBzdHJ1Y3QgdnJkbWFfY29uZmlnLCBkZXZpY2VfY2FwX2ZsYWdzLCAmY2Zn LmRldmljZV9jYXBfZmxhZ3MpOworCXZpcnRpb19jcmVhZChyZGV2LT52ZGV2LCBzdHJ1Y3QgdnJk bWFfY29uZmlnLCBtYXhfc2VuZF9zZ2UsICZjZmcubWF4X3NlbmRfc2dlKTsKKwl2aXJ0aW9fY3Jl YWQocmRldi0+dmRldiwgc3RydWN0IHZyZG1hX2NvbmZpZywgbWF4X3JlY3Zfc2dlLCAmY2ZnLm1h eF9yZWN2X3NnZSk7CisJdmlydGlvX2NyZWFkKHJkZXYtPnZkZXYsIHN0cnVjdCB2cmRtYV9jb25m aWcsIG1heF9zZ2VfcmQsICZjZmcubWF4X3NnZV9yZCk7CisJdmlydGlvX2NyZWFkKHJkZXYtPnZk ZXYsIHN0cnVjdCB2cmRtYV9jb25maWcsIG1heF9jcSwgJmNmZy5tYXhfY3EpOworCXZpcnRpb19j cmVhZChyZGV2LT52ZGV2LCBzdHJ1Y3QgdnJkbWFfY29uZmlnLCBtYXhfY3FlLCAmY2ZnLm1heF9j cWUpOworCXZpcnRpb19jcmVhZChyZGV2LT52ZGV2LCBzdHJ1Y3QgdnJkbWFfY29uZmlnLCBtYXhf bXIsICZjZmcubWF4X21yKTsKKwl2aXJ0aW9fY3JlYWQocmRldi0+dmRldiwgc3RydWN0IHZyZG1h X2NvbmZpZywgbWF4X3BkLCAmY2ZnLm1heF9wZCk7CisJdmlydGlvX2NyZWFkKHJkZXYtPnZkZXYs IHN0cnVjdCB2cmRtYV9jb25maWcsIG1heF9xcF9yZF9hdG9tLCAmY2ZnLm1heF9xcF9yZF9hdG9t KTsKKwl2aXJ0aW9fY3JlYWQocmRldi0+dmRldiwgc3RydWN0IHZyZG1hX2NvbmZpZywgbWF4X3Jl c19yZF9hdG9tLCAmY2ZnLm1heF9yZXNfcmRfYXRvbSk7CisJdmlydGlvX2NyZWFkKHJkZXYtPnZk ZXYsIHN0cnVjdCB2cmRtYV9jb25maWcsIG1heF9xcF9pbml0X3JkX2F0b20sICZjZmcubWF4X3Fw X2luaXRfcmRfYXRvbSk7CisJdmlydGlvX2NyZWFkKHJkZXYtPnZkZXYsIHN0cnVjdCB2cmRtYV9j b25maWcsIGF0b21pY19jYXAsICZjZmcuYXRvbWljX2NhcCk7CisJdmlydGlvX2NyZWFkKHJkZXYt PnZkZXYsIHN0cnVjdCB2cmRtYV9jb25maWcsIG1heF9tdywgJmNmZy5tYXhfbXcpOworCXZpcnRp b19jcmVhZChyZGV2LT52ZGV2LCBzdHJ1Y3QgdnJkbWFfY29uZmlnLCBtYXhfbWNhc3RfZ3JwLCAm Y2ZnLm1heF9tY2FzdF9ncnApOworCXZpcnRpb19jcmVhZChyZGV2LT52ZGV2LCBzdHJ1Y3QgdnJk bWFfY29uZmlnLCBtYXhfbWNhc3RfcXBfYXR0YWNoLCAmY2ZnLm1heF9tY2FzdF9xcF9hdHRhY2gp OworCXZpcnRpb19jcmVhZChyZGV2LT52ZGV2LCBzdHJ1Y3QgdnJkbWFfY29uZmlnLCBtYXhfdG90 YWxfbWNhc3RfcXBfYXR0YWNoLCAmY2ZnLm1heF90b3RhbF9tY2FzdF9xcF9hdHRhY2gpOworCXZp cnRpb19jcmVhZChyZGV2LT52ZGV2LCBzdHJ1Y3QgdnJkbWFfY29uZmlnLCBtYXhfYWgsICZjZmcu bWF4X2FoKTsKKwl2aXJ0aW9fY3JlYWQocmRldi0+dmRldiwgc3RydWN0IHZyZG1hX2NvbmZpZywg bWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW4sICZjZmcubWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9s ZW4pOworCXZpcnRpb19jcmVhZChyZGV2LT52ZGV2LCBzdHJ1Y3QgdnJkbWFfY29uZmlnLCBtYXhf cGlfZmFzdF9yZWdfcGFnZV9saXN0X2xlbiwgJmNmZy5tYXhfcGlfZmFzdF9yZWdfcGFnZV9saXN0 X2xlbik7CisJdmlydGlvX2NyZWFkKHJkZXYtPnZkZXYsIHN0cnVjdCB2cmRtYV9jb25maWcsIG1h eF9wa2V5cywgJmNmZy5tYXhfcGtleXMpOworCXZpcnRpb19jcmVhZChyZGV2LT52ZGV2LCBzdHJ1 Y3QgdnJkbWFfY29uZmlnLCBsb2NhbF9jYV9hY2tfZGVsYXksICZjZmcubG9jYWxfY2FfYWNrX2Rl bGF5KTsKKworCS8qIENvcHkgdmFsdWVzIGludG8gaWJfZGV2aWNlX2F0dHIgd2l0aCBwcm9wZXIg dHlwZSBjb252ZXJzaW9uICovCisJcmRldi0+aWJfZGV2LnBoeXNfcG9ydF9jbnQgPSBsZTMyX3Rv X2NwdShjZmcucGh5c19wb3J0X2NudCk7CisKKwlhdHRyLT5zeXNfaW1hZ2VfZ3VpZCA9IGxlNjRf dG9fY3B1KGNmZy5zeXNfaW1hZ2VfZ3VpZCk7CisJYXR0ci0+dmVuZG9yX2lkID0gbGUzMl90b19j cHUoY2ZnLnZlbmRvcl9pZCk7CisJYXR0ci0+dmVuZG9yX3BhcnRfaWQgPSBsZTMyX3RvX2NwdShj ZmcudmVuZG9yX3BhcnRfaWQpOworCWF0dHItPmh3X3ZlciA9IGxlMzJfdG9fY3B1KGNmZy5od192 ZXIpOworCWF0dHItPm1heF9tcl9zaXplID0gbGU2NF90b19jcHUoY2ZnLm1heF9tcl9zaXplKTsK KwlhdHRyLT5wYWdlX3NpemVfY2FwID0gbGU2NF90b19jcHUoY2ZnLnBhZ2Vfc2l6ZV9jYXApOwor CWF0dHItPm1heF9xcCA9IGxlMzJfdG9fY3B1KGNmZy5tYXhfcXApOworCWF0dHItPm1heF9xcF93 ciA9IGxlMzJfdG9fY3B1KGNmZy5tYXhfcXBfd3IpOworCWF0dHItPmRldmljZV9jYXBfZmxhZ3Mg PSBsZTY0X3RvX2NwdShjZmcuZGV2aWNlX2NhcF9mbGFncyk7CisJYXR0ci0+bWF4X3NlbmRfc2dl ID0gbGUzMl90b19jcHUoY2ZnLm1heF9zZW5kX3NnZSk7CisJYXR0ci0+bWF4X3JlY3Zfc2dlID0g bGUzMl90b19jcHUoY2ZnLm1heF9yZWN2X3NnZSk7CisJYXR0ci0+bWF4X3NycV9zZ2UgPSBhdHRy LT5tYXhfc2VuZF9zZ2U7IC8qIHVubGVzcyBTUlEgc3VwcG9ydGVkICovCisJYXR0ci0+bWF4X3Nn ZV9yZCA9IGxlMzJfdG9fY3B1KGNmZy5tYXhfc2dlX3JkKTsKKwlhdHRyLT5tYXhfY3EgPSBsZTMy X3RvX2NwdShjZmcubWF4X2NxKTsKKwlhdHRyLT5tYXhfY3FlID0gbGUzMl90b19jcHUoY2ZnLm1h eF9jcWUpOworCWF0dHItPm1heF9tciA9IGxlMzJfdG9fY3B1KGNmZy5tYXhfbXIpOworCWF0dHIt Pm1heF9wZCA9IGxlMzJfdG9fY3B1KGNmZy5tYXhfcGQpOworCWF0dHItPm1heF9xcF9yZF9hdG9t ID0gbGUzMl90b19jcHUoY2ZnLm1heF9xcF9yZF9hdG9tKTsKKwlhdHRyLT5tYXhfcmVzX3JkX2F0 b20gPSBsZTMyX3RvX2NwdShjZmcubWF4X3Jlc19yZF9hdG9tKTsKKwlhdHRyLT5tYXhfcXBfaW5p dF9yZF9hdG9tID0gbGUzMl90b19jcHUoY2ZnLm1heF9xcF9pbml0X3JkX2F0b20pOworCWF0dHIt PmF0b21pY19jYXAgPSB2cmRtYV9hdG9taWNfY2FwX3RvX2liKGxlMzJfdG9fY3B1KGNmZy5hdG9t aWNfY2FwKSk7CisJYXR0ci0+bWF4X213ID0gbGUzMl90b19jcHUoY2ZnLm1heF9tdyk7CisJYXR0 ci0+bWF4X21jYXN0X2dycCA9IGxlMzJfdG9fY3B1KGNmZy5tYXhfbWNhc3RfZ3JwKTsKKwlhdHRy LT5tYXhfbWNhc3RfcXBfYXR0YWNoID0gbGUzMl90b19jcHUoY2ZnLm1heF9tY2FzdF9xcF9hdHRh Y2gpOworCWF0dHItPm1heF90b3RhbF9tY2FzdF9xcF9hdHRhY2ggPSBsZTMyX3RvX2NwdShjZmcu bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaCk7CisJYXR0ci0+bWF4X2FoID0gbGUzMl90b19jcHUo Y2ZnLm1heF9haCk7CisJYXR0ci0+bWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW4gPSBsZTMyX3Rv X2NwdShjZmcubWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW4pOworCWF0dHItPm1heF9waV9mYXN0 X3JlZ19wYWdlX2xpc3RfbGVuID0gbGUzMl90b19jcHUoY2ZnLm1heF9waV9mYXN0X3JlZ19wYWdl X2xpc3RfbGVuKTsKKwlhdHRyLT5tYXhfcGtleXMgPSBsZTE2X3RvX2NwdShjZmcubWF4X3BrZXlz KTsKKwlhdHRyLT5sb2NhbF9jYV9hY2tfZGVsYXkgPSBjZmcubG9jYWxfY2FfYWNrX2RlbGF5Owor fQorCisvKioKKyAqIHZyZG1hX2luaXRfZGV2aWNlIC0gSW5pdGlhbGl6ZSB2aXJ0cXVldWVzIGZv ciBhIHZSRE1BIGRldmljZQorICogQGRldjogVGhlIHZSRE1BIGRldmljZSB0byBpbml0aWFsaXpl CisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1 cmUuCisgKi8KK2ludCB2cmRtYV9pbml0X2RldmljZShzdHJ1Y3QgdnJkbWFfZGV2ICpkZXYpCit7 CisJaW50IHJjOworCXN0cnVjdCB2aXJ0cXVldWUgKip2cXM7CisJc3RydWN0IHZpcnRxdWV1ZV9p bmZvICp2cXNfaW5mbzsKKwl1bnNpZ25lZCBpbnQgaSwgY3VyX3ZxOworCXVuc2lnbmVkIGludCB0 b3RhbF92cXM7CisJdWludDMyX3QgbWF4X2NxLCBtYXhfcXA7CisKKwkvKiBJbml0aWFsaXplIGRl dmljZSBhdHRyaWJ1dGVzICovCisJaW5pdF9kZXZpY2VfYXR0cihkZXYpOworCW1heF9jcSA9IGRl di0+YXR0ci5tYXhfY3E7CisJbWF4X3FwID0gZGV2LT5hdHRyLm1heF9xcDsgLyogU1JRIG5vdCBz dXBwb3J0ZWQsIHNvIGlnbm9yZWQgKi8KKworCS8qCisJICogVG90YWwgdmlydHF1ZXVlczoKKwkg KiAgIDEgY29udHJvbCBxdWV1ZSAoZm9yIHZlcmJzIGNvbW1hbmRzKQorCSAqICAgbWF4X2NxIGNv bXBsZXRpb24gcXVldWVzIChDUSkKKwkgKiAgIG1heF9xcCAqIDIgZGF0YSBxdWV1ZXMgKHNlbmQg JiByZWN2IHF1ZXVlIHBhaXJzIHBlciBRUCkKKwkgKi8KKwl0b3RhbF92cXMgPSAxICsgbWF4X2Nx ICsgMiAqIG1heF9xcDsKKworCS8qIEFsbG9jYXRlIHN0b3JhZ2UgaW4gZGV2ICovCisJZGV2LT5j cV92cXMgPSBrY2FsbG9jKG1heF9jcSwgc2l6ZW9mKCpkZXYtPmNxX3ZxcyksIEdGUF9BVE9NSUMp OworCWlmICghZGV2LT5jcV92cXMpCisJCXJldHVybiAtRU5PTUVNOworCisJZGV2LT5jcXMgPSBr Y2FsbG9jKG1heF9jcSwgc2l6ZW9mKCpkZXYtPmNxcyksIEdGUF9BVE9NSUMpOworCWlmICghZGV2 LT5jcXMpIHsKKwkJcmMgPSAtRU5PTUVNOworCQlnb3RvIGVycl9mcmVlX2NxX3ZxczsKKwl9CisK KwlkZXYtPnFwX3ZxcyA9IGtjYWxsb2MoMiAqIG1heF9xcCwgc2l6ZW9mKCpkZXYtPnFwX3Zxcyks IEdGUF9BVE9NSUMpOworCWlmICghZGV2LT5xcF92cXMpIHsKKwkJcmMgPSAtRU5PTUVNOworCQln b3RvIGVycl9mcmVlX2NxczsKKwl9CisKKworCXZxc19pbmZvID0ga2NhbGxvYyh0b3RhbF92cXMs IHNpemVvZigqdnFzX2luZm8pLCBHRlBfS0VSTkVMKTsKKwkvKiBUZW1wb3JhcnkgYXJyYXlzIGZv ciB2aXJ0aW9fZmluZF92cXMgKi8KKwl2cXMgPSBrY2FsbG9jKHRvdGFsX3Zxcywgc2l6ZW9mKCp2 cXMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXZxc19pbmZvIHx8ICF2cXMpIHsKKwkJcmMgPSAtRU5P TUVNOworCQlnb3RvIGVycl9mcmVlX3ZxczsKKwl9CisKKwkvKiBTZXR1cCBxdWV1ZSBuYW1lcyBh bmQgY2FsbGJhY2tzICovCisJY3VyX3ZxID0gMDsKKworCS8qIENvbnRyb2wgdmlydHF1ZXVlIChu byBjYWxsYmFjaykgKi8KKwl2cXNfaW5mb1tjdXJfdnFdLm5hbWUgPSAidnJkbWEtY3RybCI7CisJ dnFzX2luZm9bY3VyX3ZxXS5jYWxsYmFjayA9IE5VTEw7CisJY3VyX3ZxKys7CisKKwkvKiBDb21w bGV0aW9uIFF1ZXVlIHZpcnRxdWV1ZXMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2NxOyBpKysp IHsKKwkJc25wcmludGYoZGV2LT5jcV92cXNbaV0ubmFtZSwgc2l6ZW9mKGRldi0+Y3FfdnFzW2ld Lm5hbWUpLAorCQkJCSAiY3EuJXUiLCBpKTsKKwkJdnFzX2luZm9bY3VyX3ZxXS5uYW1lID0gZGV2 LT5jcV92cXNbaV0ubmFtZTsKKwkJdnFzX2luZm9bY3VyX3ZxXS5jYWxsYmFjayA9IHZyZG1hX2Nx X2FjazsKKwkJY3VyX3ZxKys7CisJfQorCisJLyogU2VuZC9SZWNlaXZlIFF1ZXVlIFBhaXJzIGZv ciBlYWNoIFFQICovCisJZm9yIChpID0gMDsgaSA8IG1heF9xcDsgaSsrKSB7CisJCXNucHJpbnRm KGRldi0+cXBfdnFzWzIgKiBpXS5uYW1lLCBzaXplb2YoZGV2LT5xcF92cXNbMiAqIGldLm5hbWUp LAorCQkJCSAic3FwLiV1IiwgaSk7CisJCXNucHJpbnRmKGRldi0+cXBfdnFzWzIgKiBpICsgMV0u bmFtZSwgc2l6ZW9mKGRldi0+cXBfdnFzWzIgKiBpICsgMV0ubmFtZSksCisJCQkJICJycXAuJXUi LCBpKTsKKworCQl2cXNfaW5mb1tjdXJfdnFdLm5hbWUgPSBkZXYtPnFwX3Zxc1syICogaV0ubmFt ZTsKKwkJdnFzX2luZm9bY3VyX3ZxICsgMV0ubmFtZSAgPSBkZXYtPnFwX3Zxc1syICogaSArIDFd Lm5hbWU7CisKKwkJdnFzX2luZm9bY3VyX3ZxXS5jYWxsYmFjawkgPSBOVUxMOyAvKiBObyBUWCBj YWxsYmFjayAqLworCQl2cXNfaW5mb1tjdXJfdnEgKyAxXS5jYWxsYmFjayA9IE5VTEw7IC8qIE5v IFJYIGNhbGxiYWNrICovCisKKwkJY3VyX3ZxICs9IDI7CisJfQorCisJLyogTm93IGFzayBWaXJ0 SU8gbGF5ZXIgdG8gc2V0IHVwIHRoZSB2aXJ0cXVldWVzICovCisJcmMgPSB2aXJ0aW9fZmluZF92 cXMoZGV2LT52ZGV2LCB0b3RhbF92cXMsIHZxcywgdnFzX2luZm8sIE5VTEwpOworCWlmIChyYykg eworCQlwcl9lcnIoIkZhaWxlZCB0byBmaW5kICV1IHZpcnRxdWV1ZXM6ICVkXG4iLCB0b3RhbF92 cXMsIHJjKTsKKwkJZ290byBlcnJfZnJlZV92cXM7CisJfQorCisJLyogQXNzaWduIGZvdW5kIHZp cnRxdWV1ZXMgdG8gZGV2aWNlIHN0cnVjdHVyZXMgKi8KKwljdXJfdnEgPSAwOworCWRldi0+Y3Ry bF92cSA9IHZxc1tjdXJfdnErK107CisKKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2NxOyBpKyspIHsK KwkJZGV2LT5jcV92cXNbaV0udnEgPSB2cXNbY3VyX3ZxKytdOworCQlkZXYtPmNxX3Zxc1tpXS5p ZHggPSBpOworCQlzcGluX2xvY2tfaW5pdCgmZGV2LT5jcV92cXNbaV0ubG9jayk7CisJfQorCisJ Zm9yIChpID0gMDsgaSA8IG1heF9xcDsgaSsrKSB7CisJCXN0cnVjdCB2cmRtYV92cSAqc3EgPSAm ZGV2LT5xcF92cXNbMiAqIGldOworCQlzdHJ1Y3QgdnJkbWFfdnEgKnJxID0gJmRldi0+cXBfdnFz WzIgKiBpICsgMV07CisKKwkJc3EtPnZxID0gdnFzW2N1cl92cSsrXTsKKwkJcnEtPnZxID0gdnFz W2N1cl92cSsrXTsKKworCQlzcS0+aWR4ID0gaTsKKwkJcnEtPmlkeCA9IGk7CisKKwkJc3Bpbl9s b2NrX2luaXQoJnNxLT5sb2NrKTsKKwkJc3Bpbl9sb2NrX2luaXQoJnJxLT5sb2NrKTsKKwl9CisK KwkvKiBGaW5hbCBzZXR1cCAqLworCW11dGV4X2luaXQoJmRldi0+cG9ydF9tdXRleCk7CisJZGV2 LT5pYl9hY3RpdmUgPSB0cnVlOworCisJLyogQ2xlYW51cCB0ZW1wb3JhcnkgYXJyYXlzICovCisJ a2ZyZWUodnFzKTsKKworCXJldHVybiAwOworCitlcnJfZnJlZV92cXM6CisJa2ZyZWUodnFzX2lu Zm8pOworCWtmcmVlKHZxcyk7CitlcnJfZnJlZV9jcXM6CisJa2ZyZWUoZGV2LT5jcXMpOworCWRl di0+Y3FzID0gTlVMTDsKK2Vycl9mcmVlX2NxX3ZxczoKKwlrZnJlZShkZXYtPmNxX3Zxcyk7CisJ ZGV2LT5jcV92cXMgPSBOVUxMOworCisJcmV0dXJuIHJjOworfQorCit2b2lkIHZyZG1hX2Zpbmlz aF9kZXZpY2Uoc3RydWN0IHZyZG1hX2RldiAqZGV2KQoreworCWlmICghZGV2KSB7CisJCXByX2Vy cigiJXM6IGludmFsaWQgZGV2aWNlIHBvaW50ZXJcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuOwor CX0KKworCWlmICghZGV2LT52ZGV2IHx8ICFkZXYtPnZkZXYtPmNvbmZpZykgeworCQlwcl93YXJu KCIlczogZGV2aWNlIG9yIGNvbmZpZyBpcyBOVUxMLCBza2lwcGluZyB0ZWFyZG93blxuIiwgX19m dW5jX18pOworCQlyZXR1cm47CisJfQorCisJLyogU3RlcCAxOiBNYXJrIGRldmljZSBhcyBpbmFj dGl2ZSB0byBwcmV2ZW50IG5ldyBvcGVyYXRpb25zICovCisJZGV2LT5pYl9hY3RpdmUgPSBmYWxz ZTsKKworCS8qIFN0ZXAgMjogU3luY2hyb25pemUgYW5kIHN0b3AgYW55IHBlbmRpbmcgd29yayAo ZS5nLiwgQ1EgcHJvY2Vzc2luZykgKi8KKwltdXRleF9sb2NrKCZkZXYtPnBvcnRfbXV0ZXgpOwor CS8qIElmIHRoZXJlIGFyZSB3b3JrcXVldWVzIG9yIHRpbWVycywgZmx1c2ggdGhlbSBoZXJlICov CisJLy8gZmx1c2hfd29yaygmZGV2LT5jcV90YXNrKTsJIC8vIGV4YW1wbGUKKwkvLyBkZWxfdGlt ZXJfc3luYygmZGV2LT5wb2xsX3RpbWVyKTsgLy8gZXhhbXBsZQorCW11dGV4X3VubG9jaygmZGV2 LT5wb3J0X211dGV4KTsKKworCS8qIFN0ZXAgMzogQnJpbmcgdGhlIGRldmljZSBpbnRvIHJlc2V0 IHN0YXRlICovCisJZGV2LT52ZGV2LT5jb25maWctPnJlc2V0KGRldi0+dmRldik7CisKKwkvKiBT dGVwIDQ6IERlbGV0ZSBhbGwgdmlydHF1ZXVlcyAodGhpcyBhbHNvIHN5bmNocm9uaXplcyB3aXRo IGNhbGxiYWNrcykgKi8KKwlkZXYtPnZkZXYtPmNvbmZpZy0+ZGVsX3ZxcyhkZXYtPnZkZXYpOwor CisJLyogU3RlcCA1OiBGcmVlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJheXMgKi8KKwlrZnJl ZShkZXYtPmNxX3Zxcyk7CSAvKiBGcmVlIENRIHF1ZXVlIG1ldGFkYXRhICovCisJZGV2LT5jcV92 cXMgPSBOVUxMOworCisJa2ZyZWUoZGV2LT5jcXMpOwkJLyogRnJlZSBDUSBjb250ZXh0IGFycmF5 ICovCisJZGV2LT5jcXMgPSBOVUxMOworCisJa2ZyZWUoZGV2LT5xcF92cXMpOwkgLyogRnJlZSBR UCBzZW5kL3JlY2VpdmUgcXVldWUgbWV0YWRhdGEgKi8KKwlkZXYtPnFwX3ZxcyA9IE5VTEw7Cit9 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgtNi4xNi44L2Ry aXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWFfZGV2LmggYi9saW51eC02LjE2LjgvZHJp dmVycy9pbmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYV9kZXYuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAuLjc4ZTI0M2ZhZgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LTYu MTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hX2Rldi5oCkBAIC0wLDAgKzEs MTYgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIG9yIEJTRC0zLUNsYXVz ZQorCisvKiBBdXRob3JzOiBYaW9uZyBXZWltaW4gPHhpb25nd2VpbWluQGt5bGlub3MuY24+ICov CisvKiBDb3B5cmlnaHQgMjAyMC5reWxpbm9zLmNuLkFsbCBSaWdodHMgUmVzZXJ2ZWQuKi8KKyNp Zm5kZWYgX19WUkRNQV9ERVZJQ0VfSF9fCisjZGVmaW5lIF9fVlJETUFfREVWSUNFX0hfXworCisj ZGVmaW5lIFZJUlRJT19SRE1BX0JPQVJEX0lECTEKKyNkZWZpbmUgVklSVElPX1JETUFfSFdfTkFN RQkidmlydGlvLXJkbWEiCisjZGVmaW5lIFZJUlRJT19SRE1BX0hXX1JFVgkxCisjZGVmaW5lIFZJ UlRJT19SRE1BX0RSSVZFUl9WRVIJIjEuMCIKKworaW50ICB2cmRtYV9pbml0X2RldmljZShzdHJ1 Y3QgdnJkbWFfZGV2ICpkZXYpOwordm9pZCB2cmRtYV9maW5pc2hfZGV2aWNlKHN0cnVjdCB2cmRt YV9kZXYgKmRldik7CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hX2Rl dl9hcGkuaCBiL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1h X2Rldl9hcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjQwM2Q1ZTgy MAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcv dmlydGlvL3ZyZG1hX2Rldl9hcGkuaApAQCAtMCwwICsxLDExNiBAQAorLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAgb3IgQlNELTMtQ2xhdXNlCisKKy8qIEF1dGhvcnM6IFhpb25n IFdlaW1pbiA8eGlvbmd3ZWltaW5Aa3lsaW5vcy5jbj4gKi8KKy8qIENvcHlyaWdodCAyMDIwLmt5 bGlub3MuY24uQWxsIFJpZ2h0cyBSZXNlcnZlZC4qLworCisjaWZuZGVmIF9fVlJETUFfREVWX0FQ SV9IX18KKyNkZWZpbmUgX19WUkRNQV9ERVZfQVBJX0hfXworCisjaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxyZG1hL2liX3ZlcmJz Lmg+CisKKyNpbmNsdWRlIDxyZG1hL3ZyZG1hX2FiaS5oPgorCisvKioKKyAqIHN0cnVjdCB2cmRt YV9jb25maWcgLSBWaXJ0aW8gUkRNQSBkZXZpY2UgY29uZmlndXJhdGlvbgorICoKKyAqIFRoaXMg c3RydWN0dXJlIGlzIG1hcHBlZCBmcm9tIHRoZSB2aXJ0aW8gZGV2aWNlJ3MgY29uZmlndXJhdGlv biBzcGFjZSBhbmQKKyAqIGRlc2NyaWJlcyB0aGUgY2FwYWJpbGl0aWVzIGFuZCBhdHRyaWJ1dGVz IG9mIHRoZSBob3N0IFJETUEgZGV2aWNlLgorICogQWxsIGZpZWxkcyBhcmUgaW4gbGl0dGxlLWVu ZGlhbiBieXRlIG9yZGVyIChfX2xlKiB0eXBlcykuCisgKi8KK3N0cnVjdCB2cmRtYV9jb25maWcg eworCV9fbGUzMgkJcGh5c19wb3J0X2NudDsJCQkvKiBOdW1iZXIgb2YgcGh5c2ljYWwgcG9ydHMg Ki8KKworCV9fbGU2NAkJc3lzX2ltYWdlX2d1aWQ7CQkJLyogU3lzdGVtIGltYWdlIEdVSUQgKi8K KwlfX2xlMzIJCXZlbmRvcl9pZDsJCQkJLyogVmVuZG9yIElEIChQQ0ktc3R5bGUpICovCisJX19s ZTMyCQl2ZW5kb3JfcGFydF9pZDsJCQkvKiBWZW5kb3IgcGFydC9kZXZpY2UgSUQgKi8KKwlfX2xl MzIJCWh3X3ZlcjsJCQkJCS8qIEhhcmR3YXJlIHZlcnNpb24gKi8KKwlfX2xlNjQJCW1heF9tcl9z aXplOwkJCS8qIE1heGltdW0gbWVtb3J5IHJlZ2lvbiBzaXplICovCisJX19sZTY0CQlwYWdlX3Np emVfY2FwOwkJCS8qIFN1cHBvcnRlZCBwYWdlIHNpemVzIGJpdG1hc2sgKi8KKwlfX2xlMzIJCW1h eF9xcDsJCQkJCS8qIE1heCBudW1iZXIgb2YgcXVldWUgcGFpcnMgKi8KKwlfX2xlMzIJCW1heF9x cF93cjsJCQkJLyogTWF4IG91dHN0YW5kaW5nIFdScyBwZXIgUVAgKi8KKwlfX2xlNjQJCWRldmlj ZV9jYXBfZmxhZ3M7CQkvKiBEZXZpY2UgY2FwYWJpbGl0eSBmbGFncyAoJmVudW0gaWJfZGV2aWNl X2NhcF9mbGFncykgKi8KKwlfX2xlMzIJCW1heF9zZW5kX3NnZTsJCQkvKiBNYXggU0dFcyBpbiBh IFNFTkQgV1IgKi8KKwlfX2xlMzIJCW1heF9yZWN2X3NnZTsJCQkvKiBNYXggU0dFcyBpbiBhIFJF Q1YgV1IgKi8KKwlfX2xlMzIJCW1heF9zZ2VfcmQ7CQkJCS8qIE1heCBTR0VzIGluIGFuIFJETUEg UkVBRC9BVE9NSUMgV1IgKi8KKwlfX2xlMzIJCW1heF9jcTsJCQkJCS8qIE1heCBudW1iZXIgb2Yg Y29tcGxldGlvbiBxdWV1ZXMgKi8KKwlfX2xlMzIJCW1heF9jcWU7CQkJCS8qIE1heCBlbnRyaWVz IHBlciBDUSAqLworCV9fbGUzMgkJbWF4X21yOwkJCQkJLyogTWF4IG51bWJlciBvZiBtZW1vcnkg cmVnaW9ucyAqLworCV9fbGUzMgkJbWF4X3BkOwkJCQkJLyogTWF4IG51bWJlciBvZiBwcm90ZWN0 aW9uIGRvbWFpbnMgKi8KKwlfX2xlMzIJCW1heF9xcF9yZF9hdG9tOwkJCS8qIE1heCBSRE1BIHJl YWQgYXRvbXMgcGVyIFFQICovCisJX19sZTMyCQltYXhfcmVzX3JkX2F0b207CQkvKiBUb3RhbCBS RE1BIHJlYWQgYXRvbXMgc3lzdGVtLXdpZGUgKi8KKwlfX2xlMzIJCW1heF9xcF9pbml0X3JkX2F0 b207CS8qIE1heCBpbml0IFJEIGF0b21zIHBlciBRUCAqLworCV9fbGUzMgkJYXRvbWljX2NhcDsJ CQkJLyogQXRvbWljIG9wZXJhdGlvbnMgc3VwcG9ydCBsZXZlbCAqLworCV9fbGUzMgkJbWF4X213 OwkJCQkJLyogTWF4IG51bWJlciBvZiBtZW1vcnkgd2luZG93cyAqLworCV9fbGUzMgkJbWF4X21j YXN0X2dycDsJCQkvKiBNYXggbXVsdGljYXN0IGdyb3VwcyAqLworCV9fbGUzMgkJbWF4X21jYXN0 X3FwX2F0dGFjaDsJLyogTWF4IFFQcyB0aGF0IGNhbiBhdHRhY2ggdG8gb25lIG1jYXN0IGdyb3Vw ICovCisJX19sZTMyCQltYXhfdG90YWxfbWNhc3RfcXBfYXR0YWNoOy8qIFRvdGFsIG1jYXN0IGF0 dGFjaG1lbnRzIGFsbG93ZWQgKi8KKwlfX2xlMzIJCW1heF9haDsJCQkJCS8qIE1heCBhZGRyZXNz IGhhbmRsZXMgKi8KKwlfX2xlMzIJCW1heF9mYXN0X3JlZ19wYWdlX2xpc3RfbGVuOy8qIE1heCBw YWdlcyBpbiBhIGZhc3QgcmVnaXN0cmF0aW9uIHJlcXVlc3QgKi8KKwlfX2xlMzIJCW1heF9waV9m YXN0X3JlZ19wYWdlX2xpc3RfbGVuOy8qIE1heCBQSSAocHJvdGVjdGlvbiBpbmZvKSBwYWdlcyAq LworCV9fbGUxNgkJbWF4X3BrZXlzOwkJCQkvKiBNYXggUF9LZXkgdGFibGUgZW50cmllcyAqLwor CV9fdTgJCWxvY2FsX2NhX2Fja19kZWxheTsJCS8qIExvY2FsIENBIEFDSyBkZWxheSAodXNlYywg ZW5jb2RlZCBhcyBsb2cgc2NhbGUpICovCisJX191OAkJcmVzZXJ2ZWRbNV07CQkJLyogUGFkIHRv IDgtYnl0ZSBhbGlnbm1lbnQgYmVmb3JlIHZhcmlhYmxlIGFyZWEgKi8KKworCS8qCisJICogRnV0 dXJlIGV4dGVuc2lvbjogcGxhY2UgYWRkaXRpb25hbCBmaWVsZHMgaGVyZSBiZWZvcmUgcmVzZXJ2 ZWRfdGFpbCwKKwkgKiBvciB1c2UgYSBUTFYgKHR5cGUtbGVuZ3RoLXZhbHVlKSBtZWNoYW5pc20g Zm9yIGV4dGVuc2liaWxpdHkuCisJICovCisJX191OAkJcmVzZXJ2ZWRfdGFpbFs2NF07CQkvKiBS ZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAobXVzdCBiZSB6ZXJvKSAqLworfTsKKworLyoqCisgKiBl bnVtIHZyZG1hX2N0cmxfY21kIC0gVmlydGlvIFJETUEgdmVyYnMgY29udHJvbCBjb21tYW5kcwor ICoKKyAqIFRoZXNlIGNvbW1hbmRzIGFyZSBzZW50IGZyb20gdGhlIGd1ZXN0IGRyaXZlciB0byB0 aGUgaG9zdCBvdmVyIGEgY29udHJvbCB2aXJ0cXVldWUKKyAqIChjdnEpIHRvIG1hbmFnZSBSRE1B IHJlc291cmNlcyBzdWNoIGFzIENRcywgUVBzLCBNUnMsIGV0Yy4KKyAqCisgKiBAVklSVElPX1JE TUFfQ01EX0lMTEVHQUw6IEludmFsaWQgb3IgdW5pbml0aWFsaXplZCBjb21tYW5kIChtdXN0IGJl IDApCisgKiBAVklSVElPX1JETUFfQ01EX1FVRVJZX1BPUlQ6IFF1ZXJ5IHBvcnQgYXR0cmlidXRl cyAoZS5nLiwgc3RhdGUsIE1UVSwgR0lEIGNhcHMpCisgKiBAVklSVElPX1JETUFfQ01EX0NSRUFU RV9DUTogQ3JlYXRlIGEgQ29tcGxldGlvbiBRdWV1ZSAoQ1EpCisgKiBAVklSVElPX1JETUFfQ01E X0RFU1RST1lfQ1E6IERlc3Ryb3kgYW4gZXhpc3RpbmcgQ1EKKyAqIEBWSVJUSU9fUkRNQV9DTURf Q1JFQVRFX1BEOiBDcmVhdGUgYSBQcm90ZWN0aW9uIERvbWFpbiAoUEQpCisgKiBAVklSVElPX1JE TUFfQ01EX0RFU1RST1lfUEQ6IERlc3Ryb3kgYSBQRAorICogQFZJUlRJT19SRE1BX0NNRF9HRVRf RE1BX01SOiBHZXQgYSBETUEgbWVtb3J5IHJlZ2lvbiAodW5jYWNoZWQsIHNpbmdsZS1yZWdpb24g TVIpCisgKiBAVklSVElPX1JETUFfQ01EX0NSRUFURV9NUjogQ3JlYXRlIGEgTWVtb3J5IFJlZ2lv biAoTVIpIHdpdGggYWNjZXNzIGZsYWdzCisgKiBAVklSVElPX1JETUFfQ01EX01BUF9NUl9TRzog TWFwIHNjYXR0ZXItZ2F0aGVyIGxpc3QgaW50byBhbiBNUiAoZm9yIGZhc3QgcmVnaXN0cmF0aW9u KQorICogQFZJUlRJT19SRE1BX0NNRF9SRUdfVVNFUl9NUjogUmVnaXN0ZXIgdXNlci1zcGFjZSBt ZW1vcnkgd2l0aCBJT1ZBCisgKiBAVklSVElPX1JETUFfQ01EX0RFUkVHX01SOiBEZXJlZ2lzdGVy IGFuZCBkZXN0cm95IGFuIE1SCisgKiBAVklSVElPX1JETUFfQ01EX0NSRUFURV9RUDogQ3JlYXRl IGEgUXVldWUgUGFpciAoUVApCisgKiBAVklSVElPX1JETUFfQ01EX01PRElGWV9RUDogTW9kaWZ5 IFFQIHN0YXRlIChlLmcuLCBSRVNFVCAtPiBJTklUIC0+IFJUUiAtPiBSVFMpCisgKiBAVklSVElP X1JETUFfQ01EX1FVRVJZX1FQOiBSZXRyaWV2ZSBjdXJyZW50IFFQIGF0dHJpYnV0ZXMKKyAqIEBW SVJUSU9fUkRNQV9DTURfREVTVFJPWV9RUDogRGVzdHJveSBhIFFQCisgKiBAVklSVElPX1JETUFf Q01EX1FVRVJZX1BLRVk6IEZldGNoIFBfS2V5IHRhYmxlIGVudHJ5IGF0IGdpdmVuIGluZGV4Cisg KiBAVklSVElPX1JETUFfQ01EX0FERF9HSUQ6IEFkZCBhIEdJRCAoR2xvYmFsIElkZW50aWZpZXIp IHRvIHRoZSBwb3J0CisgKiBAVklSVElPX1JETUFfQ01EX0RFTF9HSUQ6IFJlbW92ZSBhIEdJRCBm cm9tIHRoZSBwb3J0CisgKiBAVklSVElPX1JETUFfQ01EX1JFUV9OT1RJRllfQ1E6IFJlcXVlc3Qg aW50ZXJydXB0IG9uIENRIGV2ZW50IChlcXVpdmFsZW50IHRvIHJlcV9ub3RpZnlfY3EoKSkKKyAq CisgKiBBbGwgY29tbWFuZHMgYXJlIGlzc3VlZCB2aWEgdGhlIGNvbnRyb2wgdmlydHF1ZXVlIChj dnEpLCBhbmQgcmVzcG9uc2VzIHVzZQorICogdGhlIHNhbWUgY29tbWFuZCBudW1iZXIgd2l0aCBh IHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCisgKi8KK2VudW0gdnJkbWFfdmVyYnNfY21kIHsKKwlW SVJUSU9fUkRNQV9DTURfSUxMRUdBTCA9IDAsCisKKwlWSVJUSU9fUkRNQV9DTURfUVVFUllfUE9S VCwKKwlWSVJUSU9fUkRNQV9DTURfQ1JFQVRFX0NRLAorCVZJUlRJT19SRE1BX0NNRF9ERVNUUk9Z X0NRLAorCVZJUlRJT19SRE1BX0NNRF9DUkVBVEVfUEQsCisJVklSVElPX1JETUFfQ01EX0RFU1RS T1lfUEQsCisJVklSVElPX1JETUFfQ01EX0dFVF9ETUFfTVIsCisJVklSVElPX1JETUFfQ01EX0NS RUFURV9NUiwKKwlWSVJUSU9fUkRNQV9DTURfTUFQX01SX1NHLAorCVZJUlRJT19SRE1BX0NNRF9S RUdfVVNFUl9NUiwKKwlWSVJUSU9fUkRNQV9DTURfREVSRUdfTVIsCisJVklSVElPX1JETUFfQ01E X0NSRUFURV9RUCwKKwlWSVJUSU9fUkRNQV9DTURfTU9ESUZZX1FQLAorCVZJUlRJT19SRE1BX0NN RF9RVUVSWV9RUCwKKwlWSVJUSU9fUkRNQV9DTURfREVTVFJPWV9RUCwKKwlWSVJUSU9fUkRNQV9D TURfUVVFUllfUEtFWSwKKwlWSVJUSU9fUkRNQV9DTURfQUREX0dJRCwKKwlWSVJUSU9fUkRNQV9D TURfREVMX0dJRCwKKwlWSVJUSU9fUkRNQV9DTURfUkVRX05PVElGWV9DUSwKK307CisKKworI2Vu ZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgtNi4xNi44 L2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWFfaWIuYyBiL2xpbnV4LTYuMTYuOC9k cml2ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hX2liLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi4zNzliZDIzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC02 LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYV9pYi5jCkBAIC0wLDAgKzEs MTcyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBvciBCU0QtMy1DbGF1 c2UKKworLyogQXV0aG9yczogWGlvbmcgV2VpbWluIDx4aW9uZ3dlaW1pbkBreWxpbm9zLmNuPiAq LworLyogQ29weXJpZ2h0IDIwMjAua3lsaW5vcy5jbi5BbGwgUmlnaHRzIFJlc2VydmVkLiovCisK KyNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L3ZpcnRpby5o PgorI2luY2x1ZGUgPGxpbnV4L3ZpcnRpb19jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC92aXJ0 aW9fcmluZy5oPgorI2luY2x1ZGUgPHJkbWEvaWJfbWFkLmg+CisjaW5jbHVkZSA8cmRtYS91dmVy YnNfaW9jdGwuaD4KKyNpbmNsdWRlIDxyZG1hL2liX3VtZW0uaD4KKyNpbmNsdWRlIDxyZG1hL2li X3ZlcmJzLmg+CisjaW5jbHVkZSA8cmRtYS9pYl9hZGRyLmg+CisKKyNpbmNsdWRlICJ2cmRtYS5o IgorI2luY2x1ZGUgInZyZG1hX2Rldi5oIgorI2luY2x1ZGUgInZyZG1hX2Rldl9hcGkuaCIKKyNp bmNsdWRlICJ2cmRtYV9pYi5oIgorCisvKioKKyAqIGNtZF9zdHIgLSBTdHJpbmcgcmVwcmVzZW50 YXRpb24gb2YgdmlydGlvIFJETUEgY29udHJvbCBjb21tYW5kcworICoKKyAqIFRoaXMgYXJyYXkg bWFwcyBlYWNoICZlbnVtIHZpcnRpb19yZG1hX2N0cmxfY21kIHZhbHVlIHRvIGl0cyBodW1hbi1y ZWFkYWJsZQorICogc3RyaW5nIGZvciBsb2dnaW5nIGFuZCBkZWJ1Z2dpbmcgcHVycG9zZXMuIEl0 IGlzIGluZGV4ZWQgZGlyZWN0bHkgYnkgY29tbWFuZCBJRC4KKyAqCisgKiBFeGFtcGxlIHVzYWdl OgorICoJZGV2X2RiZyhkZXYsICJSZWNlaXZlZCBjdHJsIGNtZDogJXNcbiIsIGNtZF9zdHJbY21k XSk7CisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY21kX3N0cltdID0geworCVtWSVJU SU9fUkRNQV9DTURfSUxMRUdBTF0JCT0gIklMTEVHQUwiLAorCVtWSVJUSU9fUkRNQV9DTURfUVVF UllfUE9SVF0JPSAiUVVFUllfUE9SVCIsCisJW1ZJUlRJT19SRE1BX0NNRF9DUkVBVEVfQ1FdCQk9 ICJDUkVBVEVfQ1EiLAorCVtWSVJUSU9fUkRNQV9DTURfREVTVFJPWV9DUV0JPSAiREVTVFJPWV9D USIsCisJW1ZJUlRJT19SRE1BX0NNRF9DUkVBVEVfUERdCQk9ICJDUkVBVEVfUEQiLAorCVtWSVJU SU9fUkRNQV9DTURfREVTVFJPWV9QRF0JPSAiREVTVFJPWV9QRCIsCisJW1ZJUlRJT19SRE1BX0NN RF9HRVRfRE1BX01SXQk9ICJHRVRfRE1BX01SIiwKKwlbVklSVElPX1JETUFfQ01EX0NSRUFURV9N Ul0JCT0gIkNSRUFURV9NUiIsCisJW1ZJUlRJT19SRE1BX0NNRF9NQVBfTVJfU0ddCQk9ICJNQVBf TVJfU0ciLAorCVtWSVJUSU9fUkRNQV9DTURfUkVHX1VTRVJfTVJdCT0gIlJFR19VU0VSX01SIiwK KwlbVklSVElPX1JETUFfQ01EX0RFUkVHX01SXQkJPSAiREVSRUdfTVIiLAorCVtWSVJUSU9fUkRN QV9DTURfQ1JFQVRFX1FQXQkJPSAiQ1JFQVRFX1FQIiwKKwlbVklSVElPX1JETUFfQ01EX01PRElG WV9RUF0JCT0gIk1PRElGWV9RUCIsCisJW1ZJUlRJT19SRE1BX0NNRF9RVUVSWV9RUF0JCT0gIlFV RVJZX1FQIiwKKwlbVklSVElPX1JETUFfQ01EX0RFU1RST1lfUVBdCT0gIkRFU1RST1lfUVAiLAor CVtWSVJUSU9fUkRNQV9DTURfUVVFUllfUEtFWV0JPSAiUVVFUllfUEtFWSIsCisJW1ZJUlRJT19S RE1BX0NNRF9BRERfR0lEXQkJPSAiQUREX0dJRCIsCisJW1ZJUlRJT19SRE1BX0NNRF9ERUxfR0lE XQkJPSAiREVMX0dJRCIsCisJW1ZJUlRJT19SRE1BX0NNRF9SRVFfTk9USUZZX0NRXQk9ICJSRVFf Tk9USUZZX0NRIiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlX29wcyB2aXJ0 aW9fcmRtYV9kZXZfb3BzID0geworCS5vd25lciA9IFRISVNfTU9EVUxFLAorCS51dmVyYnNfYWJp X3ZlciA9IFZJUlRJT19SRE1BX0FCSV9WRVJTSU9OLAorCS5kcml2ZXJfaWQgPSBSRE1BX0RSSVZF Ul9WSVJUSU8sCit9OworCisvKioKKyAqIHZyZG1hX3JlZ2lzdGVyX2liX2RldmljZSAtIFJlZ2lz dGVyIHRoZSB2UkRNQSBkZXZpY2Ugd2l0aCBJQiBjb3JlCisgKiBAdnJkZXY6IFRoZSB2UkRNQSBk ZXZpY2UgdG8gcmVnaXN0ZXIKKyAqCisgKiBJbml0aWFsaXplcyB0aGUgaWJfZGV2aWNlIHN0cnVj dHVyZSBhbmQgcmVnaXN0ZXJzIGl0IHdpdGggdGhlIEluZmluaUJhbmQKKyAqIGNvcmUgc3Vic3lz dGVtLiBNdXN0IGJlIGNhbGxlZCBhZnRlciBxdWV1ZXMgYXJlIGluaXRpYWxpemVkLgorICoKKyAq IFJldHVybnMgMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJuby4KKyAqLworaW50IHZyZG1h X3JlZ2lzdGVyX2liX2RldmljZShzdHJ1Y3QgdnJkbWFfZGV2ICp2cmRldikKK3sKKwlzdHJ1Y3Qg aWJfZGV2aWNlICppYmRldjsKKwlpbnQgcmM7CisKKwlpZiAoIXZyZGV2KSB7CisJCXByX2Vycigi SW52YWxpZCB2cmRldiBwb2ludGVyXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWJk ZXYgPSAmdnJkZXYtPmliX2RldjsKKworCS8qIC0tLSBTdGVwIDE6IEluaXRpYWxpemUgc3RhdGlj IGRldmljZSBwcm9wZXJ0aWVzIC0tLSAqLworCisJaWJkZXYtPmRldi5wYXJlbnQgPSAmdnJkZXYt PnZkZXYtPmRldjsgIC8qIFBvaW50IHRvIHZpcnRpbyBkZXZpY2UgKi8KKworCWliZGV2LT5ub2Rl X3R5cGUgPSBSRE1BX05PREVfSUJfQ0E7CisJc3RybmNweShpYmRldi0+bm9kZV9kZXNjLCAiVmly dElPIFJETUEiLCBzaXplb2YoaWJkZXYtPm5vZGVfZGVzYykpOworCisJaWJkZXYtPnBoeXNfcG9y dF9jbnQgPSAxOwkJIC8qIEFzc3VtZSBzaW5nbGUgcG9ydCAqLworCWliZGV2LT5udW1fY29tcF92 ZWN0b3JzID0gMTsJICAvKiBPbmUgY29tcGxldGlvbiB2ZWN0b3IgKi8KKworCS8qIFNldCBHVUlE OiBVc2UgTUFDLWxpa2UgaWRlbnRpZmllciBkZXJpdmVkIGZyb20gZGV2aWNlIGluZm8gKGV4YW1w bGUpICovCisJbWVtY3B5KCZpYmRldi0+bm9kZV9ndWlkLCB2cmRldi0+dmRldi0+aWQuZGV2aWNl LCA2KTsKKwkqKHU2NCAqKSZpYmRldi0+bm9kZV9ndWlkIHw9IDB4MDIwMDAwIDw8IDI0OyAvKiBN YWtlIGxvY2FsbHkgYWRtaW5pc3RlcmVkICovCisKKwkvKiAtLS0gU3RlcCAyOiBTZXQgdXNlciB2 ZXJicyBjb21tYW5kIG1hc2sgLS0tICovCisKKwlpYmRldi0+dXZlcmJzX2NtZF9tYXNrID0KKwkJ QklUX1VMTChJQl9VU0VSX1ZFUkJTX0NNRF9HRVRfQ09OVEVYVCkgfAorCQlCSVRfVUxMKElCX1VT RVJfVkVSQlNfQ01EX0NSRUFURV9DT01QX0NIQU5ORUwpIHwKKwkJQklUX1VMTChJQl9VU0VSX1ZF UkJTX0NNRF9RVUVSWV9ERVZJQ0UpIHwKKwkJQklUX1VMTChJQl9VU0VSX1ZFUkJTX0NNRF9RVUVS WV9QT1JUKSB8CisJCUJJVF9VTEwoSUJfVVNFUl9WRVJCU19DTURfQUxMT0NfUEQpIHwKKwkJQklU X1VMTChJQl9VU0VSX1ZFUkJTX0NNRF9ERUFMTE9DX1BEKSB8CisJCUJJVF9VTEwoSUJfVVNFUl9W RVJCU19DTURfQ1JFQVRFX1FQKSB8CisJCUJJVF9VTEwoSUJfVVNFUl9WRVJCU19DTURfTU9ESUZZ X1FQKSB8CisJCUJJVF9VTEwoSUJfVVNFUl9WRVJCU19DTURfUVVFUllfUVApIHwKKwkJQklUX1VM TChJQl9VU0VSX1ZFUkJTX0NNRF9ERVNUUk9ZX1FQKSB8CisJCUJJVF9VTEwoSUJfVVNFUl9WRVJC U19DTURfUE9TVF9TRU5EKSB8CisJCUJJVF9VTEwoSUJfVVNFUl9WRVJCU19DTURfUE9TVF9SRUNW KSB8CisJCUJJVF9VTEwoSUJfVVNFUl9WRVJCU19DTURfQ1JFQVRFX0NRKSB8CisJCUJJVF9VTEwo SUJfVVNFUl9WRVJCU19DTURfREVTVFJPWV9DUSkgfAorCQlCSVRfVUxMKElCX1VTRVJfVkVSQlNf Q01EX1BPTExfQ1EpIHwKKwkJQklUX1VMTChJQl9VU0VSX1ZFUkJTX0NNRF9SRVFfTk9USUZZX0NR KSB8CisJCUJJVF9VTEwoSUJfVVNFUl9WRVJCU19DTURfUkVHX01SKSB8CisJCUJJVF9VTEwoSUJf VVNFUl9WRVJCU19DTURfREVSRUdfTVIpIHwKKwkJQklUX1VMTChJQl9VU0VSX1ZFUkJTX0NNRF9D UkVBVEVfQUgpIHwKKwkJQklUX1VMTChJQl9VU0VSX1ZFUkJTX0NNRF9NT0RJRllfQUgpIHwKKwkJ QklUX1VMTChJQl9VU0VSX1ZFUkJTX0NNRF9RVUVSWV9BSCkgfAorCQlCSVRfVUxMKElCX1VTRVJf VkVSQlNfQ01EX0RFU1RST1lfQUgpOworCisJLyogLS0tIFN0ZXAgMzogQXR0YWNoIGRldmljZSBv cGVyYXRpb24gdmVjdG9ycyAtLS0gKi8KKwlpYl9zZXRfZGV2aWNlX29wcyhpYmRldiwgJnZpcnRp b19yZG1hX2Rldl9vcHMpOworCisJLyogLS0tIFN0ZXAgNDogQmluZCB0byBuZXRkZXYgKG9wdGlv bmFsLCBmb3IgUm9DRSkgLS0tICovCisJaWYgKHZyZGV2LT5uZXRkZXYpIHsKKwkJaWJfZGV2aWNl X3NldF9uZXRkZXYoaWJkZXYsIHZyZGV2LT5uZXRkZXYsIDEpOyAvKiBQb3J0IDEgKi8KKwkJcHJf aW5mbygiQm91bmQgdlJETUEgZGV2aWNlIHRvIG5ldF9kZXZpY2UgJyVzJ1xuIiwgdnJkZXYtPm5l dGRldi0+bmFtZSk7CisJfQorCisJLyogLS0tIFN0ZXAgNTogUmVnaXN0ZXIgd2l0aCBJQiBjb3Jl IC0tLSAqLworCXJjID0gaWJfcmVnaXN0ZXJfZGV2aWNlKGliZGV2LCAidnJkbWElZCIsIHZyZGV2 LT52ZGV2LT5kZXYucGFyZW50KTsKKwlpZiAocmMpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gcmVn aXN0ZXIgdlJETUEgZGV2aWNlIHdpdGggSUIgY29yZTogJWRcbiIsIHJjKTsKKwkJcmV0dXJuIHJj OworCX0KKworCXByX2luZm8oIlN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIHZSRE1BIGRldmljZSBh cyAnJXMnXG4iLCBkZXZfbmFtZSgmaWJkZXYtPmRldikpOworCXJldHVybiAwOworfQorCisvKioK KyAqIHZyZG1hX3VucmVnaXN0ZXJfaWJfZGV2aWNlIC0gU2FmZWx5IHVucmVnaXN0ZXIgSUIgZGV2 aWNlCisgKiBAdnJkZXY6IFRoZSB2UkRNQSBkZXZpY2UgdG8gdW5yZWdpc3RlcgorICoKKyAqIFRo aXMgZnVuY3Rpb24gdW5yZWdpc3RlcnMgdGhlIElCIGRldmljZSBmcm9tIHRoZSBjb3JlIHN0YWNr LAorICogZW5zdXJpbmcgdGhhdCBhbGwgY2xpZW50IHJlZmVyZW5jZXMgYXJlIGRyb3BwZWQgYmVm b3JlIHJldHVybmluZy4KKyAqLwordm9pZCB2cmRtYV91bnJlZ2lzdGVyX2liX2RldmljZShzdHJ1 Y3QgdnJkbWFfZGV2ICp2cmRldikKK3sKKwlpZiAoIXZyZGV2KSB7CisJCXByX2VycigiJXM6IGlu dmFsaWQgdnJkZXZcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuOworCX0KKworCWlmICghdnJkZXYt PmliX2Rldi5kZXYucGFyZW50KSB7CisJCXByX3dhcm4oIiVzOiBJQiBkZXZpY2Ugbm90IHJlZ2lz dGVyZWQgb3IgYWxyZWFkeSB1bnJlZ2lzdGVyZWRcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuOwor CX0KKworCS8qCisJICogU3RlcCAxOiBTdG9wIGRldmljZSBvcGVyYXRpb24gLSBkaXNhYmxlIFZR IGhhbmRsaW5nLCBkb29yYmVsbHMsIGV0Yy4KKwkgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB2cmRt YV9zdG9wX2RldmljZSh2cmRldikgaGVyZSBpZiBleGlzdHMuCisJICovCisJdnJkbWFfZmluaXNo X2RldmljZSh2cmRldik7ICAvKiBlLmcuLCBzdG9wIGN0cmwvaW50ci9jb21wL3ZpcnRxdWV1ZXMg Ki8KKworCS8qCisJICogU3RlcCAyOiBVbnJlZ2lzdGVyIGZyb20gSUIgY29yZS4KKwkgKiBUaGlz IHdpbGw6CisJICogICAtIFNlbmQgSUJfRVZFTlRfREVWSUNFX1JFTU9WQUwgdG8gYWxsIHVzZXJz CisJICogICAtIEJsb2NrIHVudGlsIGFsbCBmaWxlIGRlc2NyaXB0b3JzICh1Y29udGV4dCwgZXRj LikgYXJlIHJlbGVhc2VkCisJICogICAtIFdhaXQgZm9yIHJlZmNvdW50IHRvIGRyb3AgdG8gemVy bworCSAqLworCWliX3VucmVnaXN0ZXJfZGV2aWNlKCZ2cmRldi0+aWJfZGV2KTsKK30KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9saW51eC02LjE2LjgvZHJpdmVycy9p bmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYV9pYi5oIGIvbGludXgtNi4xNi44L2RyaXZlcnMvaW5m aW5pYmFuZC9ody92aXJ0aW8vdnJkbWFfaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAuLjlhN2EwYTE2OAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LTYuMTYuOC9kcml2 ZXJzL2luZmluaWJhbmQvaHcvdmlydGlvL3ZyZG1hX2liLmgKQEAgLTAsMCArMSw4MSBAQAorLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgb3IgQlNELTMtQ2xhdXNlCisKKy8qIEF1 dGhvcnM6IFhpb25nIFdlaW1pbiA8eGlvbmd3ZWltaW5Aa3lsaW5vcy5jbj4gKi8KKy8qIENvcHly aWdodCAyMDIwLmt5bGlub3MuY24uQWxsIFJpZ2h0cyBSZXNlcnZlZC4qLworCisjaWZuZGVmIF9f VlJETUFfSUJfSF9fCisjZGVmaW5lIF9fVlJETUFfSUJfSF9fCisKKyNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPgorCisjaW5jbHVkZSA8cmRtYS9pYl92ZXJicy5oPgorI2luY2x1ZGUgPHJkbWEvdnJk bWFfYWJpLmg+CisKK2VudW0geworCVZJUlRJT19SRE1BX0FUT01JQ19OT05FLAorCVZJUlRJT19S RE1BX0FUT01JQ19IQ0EsCisJVklSVElPX1JETUFfQVRPTUlDX0dMT0IKK307CisKK3N0YXRpYyBp bmxpbmUgZW51bSBpYl9hdG9taWNfY2FwIHZyZG1hX2F0b21pY19jYXBfdG9faWIodWludDMyX3Qg c3JjKSB7CisJc3dpdGNoIChzcmMpIHsKKwkJY2FzZSBWSVJUSU9fUkRNQV9BVE9NSUNfTk9ORToK KwkJCXJldHVybiBJQl9BVE9NSUNfTk9ORTsKKwkJY2FzZSBWSVJUSU9fUkRNQV9BVE9NSUNfSENB OgorCQkJcmV0dXJuIElCX0FUT01JQ19IQ0E7CisJCWNhc2UgVklSVElPX1JETUFfQVRPTUlDX0dM T0I6CisJCQlyZXR1cm4gSUJfQVRPTUlDX0dMT0I7CisJCWRlZmF1bHQ6CisJCQlwcl93YXJuKCJV bmtub3duIGF0b21pYyBjYXAiKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogc3RydWN0 IHZyZG1hX3ZxIC0gV3JhcHBlciBhcm91bmQgYSB2aXJ0cXVldWUgZm9yIFJETUEgdXNlCisgKiBA dnE6IFBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgdmlydHF1ZXVlCisgKiBAbG9jazogU3Bpbmxv Y2sgdG8gcHJvdGVjdCBhY2Nlc3MgdG8gdGhlIHZpcnRxdWV1ZSAoZXNwZWNpYWxseSByaW5nIHVw ZGF0ZXMpCisgKiBAbmFtZTogSHVtYW4tcmVhZGFibGUgbmFtZSAoZS5nLiwgInNlbmQuMCIsICJy ZWN2LjEiKQorICogQGlkeDogSW5kZXggb2YgdGhpcyBxdWV1ZSB3aXRoaW4gaXRzIHR5cGUgKGUu Zy4sIHF1ZXVlIHBhaXIgSUQpCisgKgorICogVGhpcyBzdHJ1Y3R1cmUgd3JhcHMgYSB2aXJ0cXVl dWUgd2l0aCBhZGRpdGlvbmFsIG1ldGFkYXRhIG5lZWRlZCBieSB0aGUKKyAqIHZpcnRpby1yZG1h IGRyaXZlciwgaW5jbHVkaW5nIHN5bmNocm9uaXphdGlvbiBhbmQgaWRlbnRpZmljYXRpb24uCisg Ki8KK3N0cnVjdCB2cmRtYV92cSB7CisJc3RydWN0IHZpcnRxdWV1ZSAqdnE7CisJc3BpbmxvY2tf dCBsb2NrOwkJLyogUHJvdGVjdHMgVlEgb3BlcmF0aW9ucyAqLworCWNoYXIgbmFtZVsxNl07CQkJ LyogTmFtZSBmb3IgZGVidWdnaW5nICovCisJaW50IGlkeDsJCQkJLyogUXVldWUgaW5kZXggKi8K K307CisKKy8qKgorICogc3RydWN0IHZyZG1hX2NxIC0gVmlydGlvIFJETUEgY29tcGxldGlvbiBx dWV1ZQorICogQGliY3E6IEVtYmVkZGluZyBJQiBjb3JlIENRIG9iamVjdCAoZm9yIFJETUEgQUJJ KQorICogQGNxX2hhbmRsZTogSG9zdC12aXNpYmxlIGhhbmRsZSB0byBpZGVudGlmeSB0aGlzIENR IGluIHZpcnRpbyBtZXNzYWdlcworICogQHZxOiBBc3NvY2lhdGVkIHJlY2VpdmUgdmlydHF1ZXVl IHVzZWQgdG8gZ2V0IGNvbXBsZXRpb25zIGZyb20gaG9zdAorICogQGVudHJ5OiBNbWFwIGVudHJ5 IGZvciB1c2VyLXNwYWNlIG1hcHBpbmcgb2YgQ1EgcmluZworICogQGxvY2s6IFByb3RlY3RzIGNv bmN1cnJlbnQgYWNjZXNzIHRvIENRIHJpbmcgYW5kIHN0YXRlCisgKiBAcXVldWU6IEtlcm5lbCB2 aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIENRIHJpbmcgKGFycmF5IG9mIENRRXMpCisgKiBAcXVldWVf c2l6ZTogVG90YWwgc2l6ZSBvZiB0aGUgQ1EgcmluZyBpbiBieXRlcworICogQGRtYV9hZGRyOiBE TUEgYWRkcmVzcyBvZiB0aGUgQ1EgcmluZyAoZm9yIGRldmljZSBhY2Nlc3MpCisgKiBAbnVtX2Nx ZTogTnVtYmVyIG9mIENRRSBzbG90cyBhbGxvY2F0ZWQgaW4gdGhlIHJpbmcKKyAqCisgKiBUaGUg Y29tcGxldGlvbiBxdWV1ZSByZWNlaXZlcyB3b3JrIGNvbXBsZXRpb24gbm90aWZpY2F0aW9ucyBm cm9tIHRoZSBob3N0LgorICogSXQgaXMgdHlwaWNhbGx5IGJhY2tlZCBieSBhIGRlZGljYXRlZCB2 aXJ0cXVldWUgdGhhdCBkZWxpdmVycyBDUUVzLgorICovCitzdHJ1Y3QgdnJkbWFfY3EgeworCXN0 cnVjdCBpYl9jcSBpYmNxOworCXUzMiBjcV9oYW5kbGU7CisJc3RydWN0IHZyZG1hX3ZxICp2cTsg IC8qIFZpcnRxdWV1ZSB3aGVyZSBDUUVzIGFycml2ZSAqLworCXN0cnVjdCByZG1hX3VzZXJfbW1h cF9lbnRyeSAqZW50cnk7IC8qIEZvciBtbWFwIHN1cHBvcnQgaW4gdXNlcnNwYWNlICovCisJc3Bp bmxvY2tfdCBsb2NrOworCXN0cnVjdCB2aXJ0aW9fcmRtYV9jcWUgKnF1ZXVlOyAgICAgIC8qIENR RSByaW5nIGJ1ZmZlciAqLworCXNpemVfdCBxdWV1ZV9zaXplOworCWRtYV9hZGRyX3QgZG1hX2Fk ZHI7CisJdTMyIG51bV9jcWU7Cit9OworCitpbnQgdnJkbWFfcmVnaXN0ZXJfaWJfZGV2aWNlKHN0 cnVjdCB2cmRtYV9kZXYgKnZyZGV2KTsKK3ZvaWQgdnJkbWFfdW5yZWdpc3Rlcl9pYl9kZXZpY2Uo c3RydWN0IHZyZG1hX2RldiAqdnJkZXYpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3Zp cnRpby92cmRtYV9tYWluLmMgYi9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3Zp cnRpby92cmRtYV9tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5l YTJmMTU0OTEKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmli YW5kL2h3L3ZpcnRpby92cmRtYV9tYWluLmMKQEAgLTAsMCArMSwxNTkgQEAKKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIG9yIEJTRC0zLUNsYXVzZQorCisvKiBBdXRob3JzOiBY aW9uZyBXZWltaW4gPHhpb25nd2VpbWluQGt5bGlub3MuY24+ICovCisvKiBDb3B5cmlnaHQgMjAy MC5reWxpbm9zLmNuLkFsbCBSaWdodHMgUmVzZXJ2ZWQuKi8KKworI2luY2x1ZGUgPGxpbnV4L2Vy ci5oPgorI2luY2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSA8bGludXgvc3Bp bmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC92aXJ0aW8uaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDx1YXBpL2xpbnV4L3ZpcnRp b19pZHMuaD4KKworI2luY2x1ZGUgInZyZG1hLmgiCisjaW5jbHVkZSAidnJkbWFfZGV2LmgiCisj aW5jbHVkZSAidnJkbWFfaWIuaCIKKyNpbmNsdWRlICJ2cmRtYV9uZXRkZXYuaCIKKworI2luY2x1 ZGUgIi4uLy4uLy4uL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oIgorCisvKioKKyAqIHZyZG1h X3Byb2JlIC0gUHJvYmUgYSB2aXJ0aW8gUkRNQSBkZXZpY2UKKyAqIEB2ZGV2OiBWaXJ0SU8gZGV2 aWNlIHN0cnVjdHVyZQorICoKKyAqIENhbGxlZCB3aGVuIGEgbmV3IHZpcnRpby1yZG1hIGRldmlj ZSBpcyBhdHRhY2hlZC4gQWxsb2NhdGVzIHRoZSBkcml2ZXIKKyAqIHByaXZhdGUgc3RydWN0dXJl LCBpbml0aWFsaXplcyBkZXZpY2UgcXVldWVzLCBhbmQgcmVnaXN0ZXJzIHdpdGggSUIgY29yZS4K KyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVy ZS4KKyAqLworc3RhdGljIGludCB2cmRtYV9wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRl dikKK3sKKyAgICBzdHJ1Y3QgdnJkbWFfZGV2ICp2cmRldjsKKyAgICBpbnQgcmM7CisKKyAgICAv KiBTdGVwIDE6IEFsbG9jYXRlIElCIGRldmljZSBzdHJ1Y3R1cmUgdXNpbmcgaWJfY29yZSdzIGFs bG9jYXRvciAqLworICAgIHZyZGV2ID0gaWJfYWxsb2NfZGV2aWNlKHZyZG1hX2RldiwgaWJfZGV2 KTsKKyAgICBpZiAoIXZyZGV2KSB7CisgICAgICAgIHByX2VycigiRmFpbGVkIHRvIGFsbG9jYXRl IHZSRE1BIGRldmljZVxuIik7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0KKworICAg IC8qIEluaXRpYWxpemUgYmFzaWMgZmllbGRzICovCisgICAgdnJkZXYtPnZkZXYgPSB2ZGV2Owor ICAgIHZkZXYtPnByaXYgPSB2cmRldjsKKworICAgIHNwaW5fbG9ja19pbml0KCZ2cmRldi0+Y3Ry bF9sb2NrKTsKKyAgICBzcGluX2xvY2tfaW5pdCgmdnJkZXYtPnBlbmRpbmdfbW1hcHNfbG9jayk7 CisgICAgSU5JVF9MSVNUX0hFQUQoJnZyZGV2LT5wZW5kaW5nX21tYXBzKTsKKworICAgIC8qIFN0 ZXAgMjogQ2hlY2sgZG9vcmJlbGwgbWVjaGFuaXNtIHN1cHBvcnQgKi8KKyAgICBpZiAodG9fdnBf ZGV2aWNlKHZkZXYpLT5tZGV2Lm5vdGlmeV9vZmZzZXRfbXVsdGlwbGllciAhPSBQQUdFX1NJWkUp IHsKKyAgICAgICAgcHJfd2Fybigibm90aWZ5X29mZnNldF9tdWx0aXBsaWVyPSV1ICE9IFBBR0Vf U0laRSwgZGlzYWJsaW5nIGZhc3QgZG9vcmJlbGxcbiIsCisgICAgICAgICAgICAgICAgdG9fdnBf ZGV2aWNlKHZkZXYpLT5tZGV2Lm5vdGlmeV9vZmZzZXRfbXVsdGlwbGllcik7CisgICAgICAgIHZy ZGV2LT5mYXN0X2Rvb3JiZWxsID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdnJkZXYt PmZhc3RfZG9vcmJlbGwgPSB0cnVlOworICAgIH0KKworICAgIC8qIFN0ZXAgMzogSW5pdGlhbGl6 ZSBoYXJkd2FyZSBpbnRlcmZhY2UgKHZpcnRxdWV1ZXMpICovCisgICAgcmMgPSB2cmRtYV9pbml0 X2RldmljZSh2cmRldik7CisgICAgaWYgKHJjKSB7CisgICAgICAgIHByX2VycigiRmFpbGVkIHRv IGluaXRpYWxpemUgdlJETUEgZGV2aWNlIHF1ZXVlc1xuIik7CisgICAgICAgIGdvdG8gZXJyX2Rl YWxsb2NfZGV2aWNlOworICAgIH0KKworCXJjID0gdnJkbWFfaW5pdF9uZXRkZXYodnJkZXYpOwor CWlmIChyYykgeworCQlwcl9lcnIoIkZhaWwgdG8gY29ubmVjdCB0byBOZXREZXYgbGF5ZXJcbiIp OworCQlnb3RvIGVycl9jbGVhbnVwX2RldmljZTsKKwl9CisKKyAgICAvKiBTdGVwIDQ6IFJlZ2lz dGVyIHdpdGggSW5maW5pQmFuZCBjb3JlIGxheWVyICovCisgICAgcmMgPSB2cmRtYV9yZWdpc3Rl cl9pYl9kZXZpY2UodnJkZXYpOworICAgIGlmIChyYykgeworICAgICAgICBwcl9lcnIoIkZhaWxl ZCB0byByZWdpc3RlciB3aXRoIElCIHN1YnN5c3RlbVxuIik7CisgICAgICAgIGdvdG8gZXJyX2Ns ZWFudXBfbmV0ZGV2OworICAgIH0KKworICAgIHJldHVybiAwOworCitlcnJfY2xlYW51cF9uZXRk ZXY6CisJdnJkbWFfZmluaXNoX25ldGRldih2cmRldik7CisKK2Vycl9jbGVhbnVwX2RldmljZToK KyAgICB2cmRtYV9maW5pc2hfZGV2aWNlKHZyZGV2KTsgIC8qIFNhZmUgY2xlYW51cCBvZiBxdWV1 ZXMgYW5kIHJlc2V0ICovCisKK2Vycl9kZWFsbG9jX2RldmljZToKKyAgICBpYl9kZWFsbG9jX2Rl dmljZSgmdnJkZXYtPmliX2Rldik7ICAvKiBGcmVlcyB2cmRldiBpdHNlbGYgKi8KKwl2ZGV2LT5w cml2ID0gTlVMTDsKKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIHZvaWQgdnJkbWFfcmVt b3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQoreworCXN0cnVjdCB2cmRtYV9kZXYgKnZy ZGV2ID0gdmRldi0+cHJpdjsKKworCWlmICghdnJkZXYpIHsKKwkJZGV2X3dhcm4oJnZkZXYtPmRl diwgInZyZG1hX3JlbW92ZTogbm8gcHJpdmF0ZSBkYXRhIVxuIik7CisJCXJldHVybjsKKwl9CisK KwkvKiBTdGVwIDE6IFByZXZlbnQgZnVydGhlciBhY2Nlc3MgYnkgY2xlYXJpbmcgcHJpdmF0ZSBw b2ludGVyICovCisJdmRldi0+cHJpdiA9IE5VTEw7CisKKwkvKiBTdGVwIDI6IFN0b3AgYWxsIHZp cnRxdWV1ZXMgYW5kIGRpc2FibGUgaW50ZXJydXB0cyAqLworCXZkZXYtPmNvbmZpZy0+cmVzZXQo dmRldik7CisKKwkvKiBTdGVwIDM6IFVucmVnaXN0ZXIgSUIgZGV2aWNlIC0gd2FpdHMgZm9yIGFs bCB1c2VyIGNvbnRleHRzIHRvIGNsb3NlICovCisJdnJkbWFfdW5yZWdpc3Rlcl9pYl9kZXZpY2Uo dnJkZXYpOworCisJLyogU3RlcCA0OiBSZWxlYXNlIHBhaXJlZCBuZXRfZGV2aWNlIHJlZmVyZW5j ZSAoaWYgYW55KSAqLworCXZyZG1hX2ZpbmlzaF9uZXRkZXYodnJkZXYpOworCisJLyogU3RlcCA1 OiBDbGVhbiB1cCBpbnRlcm5hbCBkZXZpY2Ugc3RhdGUgKHZxcywgZG9vcmJlbGxzLCByaW5ncywg ZXRjLikgKi8KKwl2cmRtYV9maW5pc2hfZGV2aWNlKHZyZGV2KTsKKworCS8qIFN0ZXAgNjogRmlu YWxseSwgZnJlZSB0aGUgaWJfZGV2aWNlIHN0cnVjdHVyZSBpdHNlbGYgKi8KKwlpYl9kZWFsbG9j X2RldmljZSgmdnJkZXYtPmliX2Rldik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdmlydGlvX2Rldmlj ZV9pZCBpZF90YWJsZVtdID0geworCXsgVklSVElPX0lEX1JETUEsIFZJUlRJT19ERVZfQU5ZX0lE IH0sCisJeyAwIH0sCit9OworCitzdGF0aWMgc3RydWN0IHZpcnRpb19kcml2ZXIgdnJkbWFfZHJp dmVyID0geworCS5kcml2ZXIubmFtZQk9IEtCVUlMRF9NT0ROQU1FLAorCS5kcml2ZXIub3duZXIJ PSBUSElTX01PRFVMRSwKKwkuaWRfdGFibGUJPSBpZF90YWJsZSwKKwkucHJvYmUJCT0gdnJkbWFf cHJvYmUsCisJLnJlbW92ZQkJPSB2cmRtYV9yZW1vdmUsCit9OworCitzdGF0aWMgaW50IF9faW5p dCB2cmRtYV9pbml0KHZvaWQpCit7CisJaW50IHJjOworCisJcmMgPSByZWdpc3Rlcl92aXJ0aW9f ZHJpdmVyKCZ2cmRtYV9kcml2ZXIpOworCWlmIChyYykgeworCQlwcl9lcnIoIkZhaWxlZCB0byBy ZWdpc3RlciBWaXJ0SU8gUkRNQSBkcml2ZXI6IGVycm9yICVkXG4iLCByYyk7CisJCXJldHVybiBy YzsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHZyZG1hX2Zpbmlz aCh2b2lkKQoreworCXVucmVnaXN0ZXJfdmlydGlvX2RyaXZlcigmdnJkbWFfZHJpdmVyKTsKK30K KworbW9kdWxlX2luaXQodnJkbWFfaW5pdCk7Cittb2R1bGVfZXhpdCh2cmRtYV9maW5pc2gpOwor CitNT0RVTEVfREVWSUNFX1RBQkxFKHZpcnRpbywgaWRfdGFibGUpOworTU9EVUxFX0FVVEhPUigi WGlvbmd3ZWltaW4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiVmlydGlvIFJETUEgZHJpdmVyIik7 CitNT0RVTEVfTElDRU5TRSgiRHVhbCBCU0QvR1BMIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0 aW8vdnJkbWFfbmV0ZGV2LmMgYi9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3Zp cnRpby92cmRtYV9uZXRkZXYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LmU4MzkwMmU2ZAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmlu aWJhbmQvaHcvdmlydGlvL3ZyZG1hX25ldGRldi5jCkBAIC0wLDAgKzEsMTA1IEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBvciBCU0QtMy1DbGF1c2UKKworLyogQXV0aG9y czogWGlvbmcgV2VpbWluIDx4aW9uZ3dlaW1pbkBreWxpbm9zLmNuPiAqLworLyogQ29weXJpZ2h0 IDIwMjAua3lsaW5vcy5jbi5BbGwgUmlnaHRzIFJlc2VydmVkLiovCisKKyNpbmNsdWRlIDxsaW51 eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2lfaWRzLmg+CisjaW5jbHVkZSA8bGlu dXgvdmlydGlvX2lkcy5oPgorCisjaW5jbHVkZSAiLi4vLi4vLi4vdmlydGlvL3ZpcnRpb19wY2lf Y29tbW9uLmgiCisjaW5jbHVkZSAidnJkbWFfbmV0ZGV2LmgiCisjaW5jbHVkZSAidnJkbWEuaCIK KworLyoqCisgKiB2cmRtYV9pbml0X25ldGRldiAtIEF0dGVtcHQgdG8gZmluZCBwYWlyZWQgdmly dGlvLW5ldCBkZXZpY2Ugb24gc2FtZSBQQ0kgc2xvdAorICogQHZyZGV2OiBUaGUgdlJETUEgZGV2 aWNlCisgKgorICogV0FSTklORzogVGhpcyBpcyBhIG5vbi1zdGFuZGFyZCBoYWNrIGZvciBkZXZl bG9wbWVudC9lbXVsYXRpb24gZW52aXJvbm1lbnRzLgorICogICAgICAgICAgRG8gbm90IHVzZSBp biBwcm9kdWN0aW9uIG9yIHVwc3RyZWFtIGRyaXZlcnMuCisgKgorICogUmV0dXJucyAwIG9uIHN1 Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm5vLgorICovCitpbnQgdnJkbWFfaW5pdF9uZXRkZXYoc3Ry dWN0IHZyZG1hX2RldiAqdnJkZXYpCit7CisgICAgc3RydWN0IHBjaV9kZXYgKnBkZXZfbmV0Owor ICAgIHN0cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2OworICAgIHN0cnVjdCB2aXJ0aW9f cGNpX2RldmljZSAqdm5ldF9wZGV2OworICAgIHZvaWQgKnByaXY7CisgICAgc3RydWN0IG5ldF9k ZXZpY2UgKm5ldGRldjsKKworICAgIGlmICghdnJkZXYgfHwgIXZyZGV2LT52ZGV2KSB7CisgICAg ICAgIHByX2VycigiJXM6IGludmFsaWQgdnJkZXYgb3IgdmRldlxuIiwgX19mdW5jX18pOworICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICB2cF9kZXYgPSB0b192cF9kZXZpY2Uo dnJkZXYtPnZkZXYpOworCisgICAgLyogRmluZCB0aGUgUENJIGRldmljZSBhdCBmdW5jdGlvbiAw IG9mIHRoZSBzYW1lIHNsb3QgKi8KKyAgICBwZGV2X25ldCA9IHBjaV9nZXRfc2xvdCh2cF9kZXYt PnBjaV9kZXYtPmJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfREVWRk4oUENJ X1NMT1QodnBfZGV2LT5wY2lfZGV2LT5kZXZmbiksIDApKTsKKyAgICBpZiAoIXBkZXZfbmV0KSB7 CisgICAgICAgIHByX2VycigiRmFpbGVkIHRvIGZpbmQgUENJIGRldmljZSBhdCBmbj0wIG9mIHNs b3QgJXhcbiIsCisgICAgICAgICAgICAgICBQQ0lfU0xPVCh2cF9kZXYtPnBjaV9kZXYtPmRldmZu KSk7CisgICAgICAgIHJldHVybiAtRU5PREVWOworICAgIH0KKworICAgIC8qIE9wdGlvbmFsOiBW YWxpZGF0ZSBpdCdzIGEga25vd24gdmlydGlvLW5ldCBkZXZpY2UgKi8KKyAgICBpZiAocGRldl9u ZXQtPnZlbmRvciAhPSBQQ0lfVkVORE9SX0lEX1JFREhBVF9RVU1SQU5FVCB8fAorICAgICAgICBw ZGV2X25ldC0+ZGV2aWNlICE9IDB4MTA0MSkgeworICAgICAgICBwcl93YXJuKCJQQ0kgZGV2aWNl ICUwNHg6JTA0eCBpcyBub3QgZXhwZWN0ZWQgdmlydGlvLW5ldCAoMTA0MSkgZGV2aWNlXG4iLAor ICAgICAgICAgICAgICAgIHBkZXZfbmV0LT52ZW5kb3IsIHBkZXZfbmV0LT5kZXZpY2UpOworICAg ICAgICBwY2lfZGV2X3B1dChwZGV2X25ldCk7CisgICAgICAgIHJldHVybiAtRU5PREVWOworICAg IH0KKworICAgIC8qIEdldCB0aGUgdmlydGlvX3BjaV9kZXZpY2UgZnJvbSBkcnZkYXRhICovCisg ICAgdm5ldF9wZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXZfbmV0KTsKKyAgICBpZiAoIXZuZXRf cGRldiB8fCAhdm5ldF9wZGV2LT52ZGV2LnByaXYpIHsKKyAgICAgICAgcHJfZXJyKCJObyBkcml2 ZXIgZGF0YSBvciBwcml2IGZvciB2aXJ0aW8tbmV0IGRldmljZVxuIik7CisgICAgICAgIHBjaV9k ZXZfcHV0KHBkZXZfbmV0KTsKKyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisgICAgfQorCisgICAg cHJpdiA9IHZuZXRfcGRldi0+dmRldi5wcml2OworCXZyZGV2LT5uZXRkZXYgPSBwcml2IC0gQUxJ R04oc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlKSwgTkVUREVWX0FMSUdOKTsKKyAgICBuZXRkZXYg PSB2cmRldi0+bmV0ZGV2OyAKKworICAgIGlmICghbmV0ZGV2IHx8ICFuZXRkZXYtPm5ldGRldl9v cHMpIHsKKyAgICAgICAgcHJfZXJyKCJJbnZhbGlkIG5ldF9kZXZpY2UgcmV0cmlldmVkIGZyb20g dmlydGlvLW5ldFxuIik7CisgICAgICAgIHBjaV9kZXZfcHV0KHBkZXZfbmV0KTsKKyAgICAgICAg cmV0dXJuIC1FTk9ERVY7CisgICAgfQorCisgICAgLyogSG9sZCByZWZlcmVuY2Ugc28gbmV0ZGV2 IHdvbid0IGRpc2FwcGVhciAqLworICAgIGRldl9ob2xkKG5ldGRldik7CisKKyAgICBwY2lfZGV2 X3B1dChwZGV2X25ldCk7ICAvKiBSZWxlYXNlIHJlZmVyZW5jZSBmcm9tIHBjaV9nZXRfc2xvdCAq LworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICogdnJkbWFfZmluaXNoX25ldGRldiAtIFJl bGVhc2UgcmVmZXJlbmNlIHRvIHBhaXJlZCBuZXRfZGV2aWNlCisgKiBAdnJkZXY6IFRoZSB2UkRN QSBkZXZpY2UKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJlbGVhc2VzIHRoZSByZWZlcmVuY2UgdGFr ZW4gb24gYSBuZXRfZGV2aWNlIGR1cmluZworICogdnJkbWFfaW5pdF9uZXRkZXYoKS4gSXQgc2hv dWxkIGJlIGNhbGxlZCBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLgorICovCit2b2lkIHZyZG1hX2Zp bmlzaF9uZXRkZXYoc3RydWN0IHZyZG1hX2RldiAqdnJkZXYpCit7CisgICAgaWYgKCF2cmRldikg eworICAgICAgICBwcl9lcnIoIiVzOiBpbnZhbGlkIHZyZGV2IHBvaW50ZXJcbiIsIF9fZnVuY19f KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh2cmRldi0+bmV0ZGV2KSB7Cisg ICAgICAgIHByX2luZm8oIlslc106IFJlbGVhc2luZyByZWZlcmVuY2UgdG8gbmV0X2RldmljZSAn JXMnXG4iLAorICAgICAgICAgICAgICAgIF9fZnVuY19fLCB2cmRldi0+bmV0ZGV2LT5uYW1lKTsK KworICAgICAgICBkZXZfcHV0KHZyZGV2LT5uZXRkZXYpOworICAgICAgICB2cmRldi0+bmV0ZGV2 ID0gTlVMTDsKKyAgICB9IGVsc2UgeworICAgICAgICBwcl9kZWJ1ZygiJXM6IG5vIG5ldGRldiB0 byByZWxlYXNlXG4iLCBfX2Z1bmNfXyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmly dGlvL3ZyZG1hX25ldGRldi5oIGIvbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9ody92 aXJ0aW8vdnJkbWFfbmV0ZGV2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw Li5jZTM5MWI1YmQKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC02LjE2LjgvZHJpdmVycy9pbmZp bmliYW5kL2h3L3ZpcnRpby92cmRtYV9uZXRkZXYuaApAQCAtMCwwICsxLDE0IEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBvciBCU0QtMy1DbGF1c2UKKworLyogQXV0aG9y czogWGlvbmcgV2VpbWluIDx4aW9uZ3dlaW1pbkBreWxpbm9zLmNuPiAqLworLyogQ29weXJpZ2h0 IDIwMjAua3lsaW5vcy5jbi5BbGwgUmlnaHRzIFJlc2VydmVkLiovCisKKyNpZm5kZWYgX19WUkRN QV9ORVRERVZfSF9fCisjZGVmaW5lIF9fVlJETUFfTkVUREVWX0hfXworCisjaW5jbHVkZSAidnJk bWEuaCIKKworaW50ICB2cmRtYV9pbml0X25ldGRldihzdHJ1Y3QgdnJkbWFfZGV2ICp2cmRldik7 Cit2b2lkIHZyZG1hX2ZpbmlzaF9uZXRkZXYoc3RydWN0IHZyZG1hX2RldiAqdnJkZXYpOworCisj ZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmly dGlvL3ZyZG1hX3F1ZXVlLmMgYi9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3Zp cnRpby92cmRtYV9xdWV1ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4u Nzg3NzljMjQzCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5p YmFuZC9ody92aXJ0aW8vdnJkbWFfcXVldWUuYwpAQCAtMCwwICsxLDIxIEBACisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBvciBCU0QtMy1DbGF1c2UKKworLyogQXV0aG9yczog WGlvbmcgV2VpbWluIDx4aW9uZ3dlaW1pbkBreWxpbm9zLmNuPiAqLworLyogQ29weXJpZ2h0IDIw MjAua3lsaW5vcy5jbi5BbGwgUmlnaHRzIFJlc2VydmVkLiovCisjaW5jbHVkZSA8bGludXgvdmly dGlvLmg+CisKKyNpbmNsdWRlICJ2cmRtYS5oIgorI2luY2x1ZGUgInZyZG1hX3F1ZXVlLmgiCisK K3ZvaWQgdnJkbWFfY3FfYWNrKHN0cnVjdCB2aXJ0cXVldWUgKnZxKQoreworCXN0cnVjdCB2cmRt YV9kZXYgKnJkZXY7CisJc3RydWN0IHZyZG1hX2NxICp2Y3E7CisKKwlyZGV2ID0gdnEtPnZkZXYt PnByaXY7CisJLy8gdmNxLT52cSdzIGluZGV4IGlzIHN0YXJ0IGZyb20gMSwgMCBpcyBjdHJsIHZx CisJdmNxID0gcmRldi0+Y3FzW3ZxLT5pbmRleCAtIDFdOworCisJaWYgKHZjcSAmJiB2Y3EtPmli Y3EuY29tcF9oYW5kbGVyKQorCQl2Y3EtPmliY3EuY29tcF9oYW5kbGVyKCZ2Y3EtPmliY3EsIHZj cS0+aWJjcS5jcV9jb250ZXh0KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9saW51eC02LjE2LjgvZHJpdmVycy9pbmZpbmliYW5kL2h3L3ZpcnRpby92cmRtYV9x dWV1ZS5oIGIvbGludXgtNi4xNi44L2RyaXZlcnMvaW5maW5pYmFuZC9ody92aXJ0aW8vdnJkbWFf cXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjY0Yjg5NjIwOAot LS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LTYuMTYuOC9kcml2ZXJzL2luZmluaWJhbmQvaHcvdmly dGlvL3ZyZG1hX3F1ZXVlLmgKQEAgLTAsMCArMSwxNCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAgb3IgQlNELTMtQ2xhdXNlCisKKy8qIEF1dGhvcnM6IFhpb25nIFdlaW1p biA8eGlvbmd3ZWltaW5Aa3lsaW5vcy5jbj4gKi8KKy8qIENvcHlyaWdodCAyMDIwLmt5bGlub3Mu Y24uQWxsIFJpZ2h0cyBSZXNlcnZlZC4qLworCisjaWZuZGVmIF9fVlJETUFfUVVFVUVfSF9fCisj ZGVmaW5lIF9fVlJETUFfUVVFVUVfSF9fCisKKyNpbmNsdWRlICJ2cmRtYV9pYi5oIgorI2luY2x1 ZGUgInZyZG1hX2Rldl9hcGkuaCIKKwordm9pZCB2cmRtYV9jcV9hY2soc3RydWN0IHZpcnRxdWV1 ZSAqdnEpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9saW51eC02LjE2LjgvaW5jbHVkZS9yZG1hL3ZyZG1hX2FiaS5oIGIvbGludXgtNi4xNi44L2lu Y2x1ZGUvcmRtYS92cmRtYV9hYmkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAuLjYyZDRmZGEwOQotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LTYuMTYuOC9pbmNsdWRlL3Jk bWEvdnJkbWFfYWJpLmgKQEAgLTAsMCArMSw2MiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAgb3IgQlNELTMtQ2xhdXNlCisKKy8qIEF1dGhvcnM6IFhpb25nIFdlaW1pbiA8 eGlvbmd3ZWltaW5Aa3lsaW5vcy5jbj4gKi8KKy8qIENvcHlyaWdodCAyMDIwLmt5bGlub3MuY24u QWxsIFJpZ2h0cyBSZXNlcnZlZC4qLworI2lmbmRlZiBfX1ZJUlRJT19SRE1BX0FCSV9IX18KKyNk ZWZpbmUgX19WSVJUSU9fUkRNQV9BQklfSF9fCisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgor CisjZGVmaW5lIFZJUlRJT19SRE1BX0FCSV9WRVJTSU9OIDEKKworLyoqCisgKiBzdHJ1Y3QgdnJk bWFfY3FlIC0gVmlydGlvIFJETUEgY29tcGxldGlvbiBxdWV1ZSBlbnRyeSAoQ1FFKQorICogQHdy X2lkOiBVc2VyLXByb3ZpZGVkIFdvcmsgUmVxdWVzdCBJRCAocGFzc2VkIGJhY2sgb24gY29tcGxl dGlvbikKKyAqIEBzdGF0dXM6IENvbXBsZXRpb24gc3RhdHVzICglSUJfV0NfU1VDQ0VTUyBvciBl cnJvciBjb2RlKQorICogQG9wY29kZTogT3BlcmF0aW9uIHR5cGUgKGUuZy4sICVJQl9XQ19TRU5E LCAlSUJfV0NfUkVDVikKKyAqIEB2ZW5kb3JfZXJyOiBWZW5kb3Itc3BlY2lmaWMgZXJyb3IgY29k ZSAoaWYgYW55KQorICogQGJ5dGVfbGVuOiBOdW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgaW4g dGhpcyBvcGVyYXRpb24KKyAqIEBleDogVW5pb24gY29udGFpbmluZyBhZGRpdGlvbmFsIGRhdGEg YmFzZWQgb24gb3BlcmF0aW9uOgorICogICAgICAtIEBpbW1fZGF0YTogSW5ib3VuZCBpbW1lZGlh dGUgZGF0YSAoZm9yIHNlbmRzIHdpdGggSU1NKQorICogICAgICAtIEBpbnZhbGlkYXRlX3JrZXk6 IFJLRVkgaW52YWxpZGF0ZWQgaW4gcmVtb3RlIGludmFsaWRhdGlvbgorICogQHFwX251bTogUVAg bnVtYmVyIHRoYXQgY29tcGxldGVkIHRoaXMgd29yayAobG93ZXIgMjQgYml0cykKKyAqIEBzcmNf cXA6IFNvdXJjZSBRUCBudW1iZXIgZnJvbSBzZW5kZXIgKGluIFJDL1VDKQorICogQHdjX2ZsYWdz OiBBZGRpdGlvbmFsIGZsYWdzIChlLmcuLCAlSUJfV0NfV0lUSF9JTU0sICVJQl9XQ19HUkgsICVJ Ql9XQ19DT01QTEVUSU9OX1RJTUVTVEFNUCkKKyAqIEBwa2V5X2luZGV4OiBQX0tleSBpbmRleCB1 c2VkIGZvciB0aGlzIHBhY2tldAorICogQHNsaWQ6IFNvdXJjZSBMSUQgKExvY2FsIElkZW50aWZp ZXIpIG9mIHRoZSBzZW5kZXIKKyAqIEBzbDogU2VydmljZSBMZXZlbCB1c2VkIGluIHRoZSBwYWNr ZXQKKyAqIEBkbGlkX3BhdGhfYml0czogUGF0aCBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbiBMSUQg KHVzZWZ1bCBpbiBGTElUIHJvdXRpbmcpCisgKiBAcG9ydF9udW06IFBoeXNpY2FsIHBvcnQgbnVt YmVyIG9uIHdoaWNoIHRoZSBwYWNrZXQgd2FzIHJlY2VpdmVkCisgKgorICogVGhpcyBzdHJ1Y3R1 cmUgcmVwcmVzZW50cyBhIHNpbmdsZSBjb21wbGV0aW9uIGVudHJ5IGRlbGl2ZXJlZCB0byBhIENR LgorICogSXQgbWlycm9ycyB0aGUgZmllbGRzIG9mICZzdHJ1Y3QgaWJfd2MgYnV0IGlzIGRlc2ln bmVkIHRvIGJlIHNlcmlhbGl6ZWQKKyAqIG92ZXIgdGhlIHZpcnRpbyBjb250cm9sIGNoYW5uZWwg b3IgcmluZyBidWZmZXIuCisgKgorICogQWxsIGZpZWxkcyBhcmUgbGFpZCBvdXQgZm9yIG5hdHVy YWwgYWxpZ25tZW50OyBubyBleHBsaWNpdCBwYWRkaW5nIHJlcXVpcmVkLgorICovCitzdHJ1Y3Qg dmlydGlvX3JkbWFfY3FlIHsKKwlfX3U2NAkJd3JfaWQ7CQkJLyogV29yayBSZXF1ZXN0IElEICov CisJX191MzIJCXN0YXR1czsJCQkvKiBJQl9XQ18qIHN0YXR1cyBjb2RlICovCisJX191MzIJCW9w Y29kZTsJCQkvKiBJQl9XQ18qIG9wY29kZSAqLworCV9fdTMyCQl2ZW5kb3JfZXJyOwkJLyogVmVu ZG9yLXNwZWNpZmljIGVycm9yICovCisJX191MzIJCWJ5dGVfbGVuOwkJLyogQnl0ZXMgdHJhbnNm ZXJyZWQgKi8KKworCXVuaW9uIHsKKwkJX191MzIJaW1tX2RhdGE7CQkJLyogSW1tZWRpYXRlIGRh dGEgKGlmIHByZXNlbnQpICovCisJCV9fdTMyCWludmFsaWRhdGVfcmtleTsJLyogUktFWSBpbnZh bGlkYXRlZCAqLworCX0gZXg7CisKKwlfX3UzMgkJcXBfbnVtOwkJCS8qIExvY2FsIFFQIG51bWJl ciAqLworCV9fdTMyCQlzcmNfcXA7CQkJLyogUmVtb3RlIHNvdXJjZSBRUCAqLworCV9fdTMyCQl3 Y19mbGFnczsJCS8qIElCX1dDXyogZmxhZ3MgKGUuZy4sIFdJVEhfSU1NLCBHUkgpICovCisKKwkv KiBDb25uZWN0aW9uIGFuZCByb3V0aW5nIG1ldGFkYXRhICovCisJX191MTYJCXBrZXlfaW5kZXg7 CQkvKiBQX0tleSB0YWJsZSBpbmRleCAqLworCV9fdTE2CQlzbGlkOwkJCS8qIFNvdXJjZSBMSUQg Ki8KKwlfX3U4CQlzbDsJCQkJLyogU2VydmljZSBMZXZlbCAqLworCV9fdTgJCWRsaWRfcGF0aF9i aXRzOwkvKiBETElEIHBhdGggYml0cyAoZm9yIHN1Ym5ldCByb3V0aW5nKSAqLworCV9fdTgJCXBv cnRfbnVtOwkJLyogUG9ydCB3aGVyZSBwYWNrZXQgd2FzIHJlY2VpdmVkICovCisJX191OAkJCXJl c2VydmVkWzNdOwkvKiBQYWQgdG8gbWFpbnRhaW4gOC1ieXRlIGFsaWdubWVudCAqLworfTsKKwor I2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgtNi4x Ni44L2luY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmggYi9saW51eC02LjE2LjgvaW5jbHVk ZS91YXBpL2xpbnV4L3ZpcnRpb19pZHMuaAppbmRleCA3YWEyZWI3NjYuLmZmMmQwYjAxYiAxMDA2 NDQKLS0tIGEvbGludXgtNi4xNi44L2luY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgKKysr IGIvbGludXgtNi4xNi44L2luY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgKQEAgLTY4LDYg KzY4LDcgQEAKICNkZWZpbmUgVklSVElPX0lEX0FVRElPX1BPTElDWQkJMzkgLyogdmlydGlvIGF1 ZGlvIHBvbGljeSAqLwogI2RlZmluZSBWSVJUSU9fSURfQlQJCQk0MCAvKiB2aXJ0aW8gYmx1ZXRv b3RoICovCiAjZGVmaW5lIFZJUlRJT19JRF9HUElPCQkJNDEgLyogdmlydGlvIGdwaW8gKi8KKyNk ZWZpbmUgVklSVElPX0lEX1JETUEgICAgICAgICAgNDIgLyogdmlydGlvIHJkbWEgKi8KIAogLyoK ICAqIFZpcnRpbyBUcmFuc2l0aW9uYWwgSURzCmRpZmYgLS1naXQgYS9saW51eC02LjE2LjgvaW5j bHVkZS91YXBpL3JkbWEvaWJfdXNlcl9pb2N0bF92ZXJicy5oIGIvbGludXgtNi4xNi44L2luY2x1 ZGUvdWFwaS9yZG1hL2liX3VzZXJfaW9jdGxfdmVyYnMuaAppbmRleCBmZTE1YmM3ZTkuLjE4MTk3 OGFhOSAxMDA2NDQKLS0tIGEvbGludXgtNi4xNi44L2luY2x1ZGUvdWFwaS9yZG1hL2liX3VzZXJf aW9jdGxfdmVyYnMuaAorKysgYi9saW51eC02LjE2LjgvaW5jbHVkZS91YXBpL3JkbWEvaWJfdXNl cl9pb2N0bF92ZXJicy5oCkBAIC0yNTUsNiArMjU1LDcgQEAgZW51bSByZG1hX2RyaXZlcl9pZCB7 CiAJUkRNQV9EUklWRVJfU0lXLAogCVJETUFfRFJJVkVSX0VSRE1BLAogCVJETUFfRFJJVkVSX01B TkEsCisJUkRNQV9EUklWRVJfVklSVElPLAogfTsKIAogZW51bSBpYl91dmVyYnNfZ2lkX3R5cGUg ewotLSAKMi40My4wCgo=