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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 7E2DDC369D9 for ; Wed, 30 Apr 2025 06:05:07 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uA0Z2-0002UJ-LD; Wed, 30 Apr 2025 02:05:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uA0Yg-0002Ig-5u for grub-devel@gnu.org; Wed, 30 Apr 2025 02:04:41 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uA0Yd-0001rr-8m for grub-devel@gnu.org; Wed, 30 Apr 2025 02:04:37 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53TLd5L8005263; Wed, 30 Apr 2025 06:04:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=u6t+2yo4kr6YblO6e a5S5EKNUpXXlHTx6kzPCL+C03U=; b=i4qTWi4qqi2+c6VUcLSK+Yb+csyy6znHG pVH9/ptTj5DKVfhCOVzmI6tTHPBOSUfrecJRoZcjgaDZPKg3s3D5d5PUfkL6xzUw D14Gh8giVZpfV2SjnyFnts/AiT/9t2xbwSN/sg3UibdOiokxQt+p+dts/2690NTr sNPIxyH8dvAn+TcM8HdmmOUoOp3aEzeDQx4ARyG4bI3ojSc3T1SIxQ2z/GCY+Hfo GvetmR7/flwIjchHomwhHfithVaOPkqqjqS+ijyHH9DLC5dPmaKP+HZi3cLIDtyO h1yEAGZu4M5sqMNEPYvTsH5Phv+oYLbi1+YA67++zhUbYByqu/T4w== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 46b6vb1cah-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 06:04:33 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 53U1uhBL016131; Wed, 30 Apr 2025 06:04:32 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 469a70eqsu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 06:04:32 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 53U64L1Y34341418 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Apr 2025 06:04:21 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B5AAE2006F; Wed, 30 Apr 2025 06:04:21 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1EFDD2004E; Wed, 30 Apr 2025 06:04:18 +0000 (GMT) Received: from localhost.localdomain (unknown [9.61.244.175]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 30 Apr 2025 06:04:17 +0000 (GMT) From: Avnish Chouhan To: grub-devel@gnu.org Cc: daniel.kiper@oracle.com, brking@linux.ibm.com, meghanaprakash@in.ibm.com, mamatha4@linux.ibm.com, Avnish Chouhan , Diego Domingos Subject: [PATCH v5 5/5] ieee1275: ofpath enable NVMeoF logical device translate Date: Wed, 30 Apr 2025 11:32:37 +0530 Message-ID: <20250430060237.10984-6-avnish@linux.ibm.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20250430060237.10984-1-avnish@linux.ibm.com> References: <20250430060237.10984-1-avnish@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=BISzrEQG c=1 sm=1 tr=0 ts=6811bd71 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=XR8D0OoHHMoA:10 a=VnNF1IyMAAAA:8 a=oNM_RH7Yg1IF_yt7N9wA:9 X-Proofpoint-GUID: udxsJgPo0MWLZI8nn53caR7o1HLTYZUq X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDAzNyBTYWx0ZWRfX1yMDau/ud/LM u0paWPiA66fVDbij6t/8H4//AIsGkFTWy8y7VbhMdHEqpraON5Vv752dFsAdotxITM9YoI0wGV8 OSVFhr/UvH55yZEVom7aqO14IYUqTcmZgNG+wf2M9KKD127TiTUL7lzJOZIY/wj4iM1FzcCYC8M HtZD9lw/xJBzc86oSy1JO32GvcqgOZ7BbdWpD/8woYEh8rsv6jTFZry/zKjj51iEOxf00h/TGFo 8K3zun6nijlGI8gtt68+NEfROoQarbx5zzLRrbVza6LYG85d2x+EQzk2gXTpGbDGsFzU9q/bOWT abYFMiFr9nYI+/V5ubq4YCcR3/9/w+Mp+vP/eWRAsLnu2Z63/Rkn9Tu3ZlqQXvLFs+OmZcOwOCR LGD/Opl6SUVRlUVpyA5c8xuaVgsyJu8HO7GXAzt6YR6qcVKtbe41GPH7iYs2F5XiaWEnesvF X-Proofpoint-ORIG-GUID: udxsJgPo0MWLZI8nn53caR7o1HLTYZUq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_01,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 mlxlogscore=819 mlxscore=0 phishscore=0 bulkscore=0 impostorscore=0 clxscore=1015 malwarescore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2504300037 Received-SPF: pass client-ip=148.163.156.1; envelope-from=avnish@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org VGhpcyBwYXRjaCBhZGRzIGNvZGUgdG8gZW5hYmxlIHRoZSB0cmFuc2xhdGlvbiBvZiBsb2dpY2Fs IGRldmljZXMgdG8gdGhlIG9mIE5WTWVvRkMgcGF0aHMuCgpTaWduZWQtb2ZmLWJ5OiBEaWVnbyBE b21pbmdvcyA8ZGllZ29kb0Bici5pYm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBBdm5pc2ggQ2hvdWhh biA8YXZuaXNoQGxpbnV4LmlibS5jb20+Ci0tLQogZ3J1Yi1jb3JlL29zZGVwL2xpbnV4L29mcGF0 aC5jIHwgNDE1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIGluY2x1ZGUvZ3J1Yi91dGlsL29mcGF0aC5oICAgICB8IDI4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0MzQgaW5zZXJ0aW9ucygrKSwgOSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMg Yi9ncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMKaW5kZXggNjRmOTVhMi4uZGQ4MWU2YiAx MDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL29zZGVwL2xpbnV4L29mcGF0aC5jCisrKyBiL2dydWItY29y ZS9vc2RlcC9saW51eC9vZnBhdGguYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPGZjbnRs Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGRp cmVudC5oPgogCiAjaWZkZWYgX19zcGFyY19fCiB0eXBlZGVmIGVudW0KQEAgLTEzNiw3ICsxMzcs NyBAQCB0cmltX25ld2xpbmUgKGNoYXIgKnBhdGgpCiAgICAgKmVuZC0tID0gJ1wwJzsKIH0KIAot I2RlZmluZSBNQVhfRElTS19DQVQgICAgNjQKKyNkZWZpbmUgTUFYX0RJU0tfQ0FUICAgIDUxMgog CiBzdGF0aWMgY2hhciAqCiBmaW5kX29icHBhdGggKGNvbnN0IGNoYXIgKnN5c2ZzX3BhdGhfb3Jp ZykKQEAgLTMxMiw2ICszMTMsOTEgQEAgZ2V0X2Jhc2VuYW1lKGNoYXIgKnApCiAgIHJldHVybiBy ZXQ7CiB9CiAKK2ludAorYWRkX2ZpbGVuYW1lX3RvX3BpbGUgKGNoYXIgKmZpbGVuYW1lLCBzdHJ1 Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfcm9vdCogcm9vdCkKK3sKKyAgc3RydWN0IG9mcGF0aF9maWxl c19saXN0X25vZGUqIGZpbGU7CisKKyAgZmlsZSA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgb2Zw YXRoX2ZpbGVzX2xpc3Rfbm9kZSkpOworICBpZiAoIWZpbGUpCisgICAgcmV0dXJuIC0xOworCisg IGZpbGUtPmZpbGVuYW1lID0gbWFsbG9jIChzaXplb2YgKGNoYXIpICogMTAyNCk7CisgIGlmICgh ZmlsZS0+ZmlsZW5hbWUpCisgICAgeworICAgICAgZnJlZSAoZmlsZSk7CisgICAgICByZXR1cm4g LTE7CisgICAgfQorCisgIGdydWJfc3RyY3B5IChmaWxlLT5maWxlbmFtZSwgZmlsZW5hbWUpOwor ICBpZiAocm9vdC0+Zmlyc3QgPT0gTlVMTCkKKyAgICB7CisgICAgICByb290LT5pdGVtcyA9IDE7 CisgICAgICByb290LT5maXJzdCA9IGZpbGU7CisgICAgICBmaWxlLT5uZXh0ID0gTlVMTDsKKyAg ICB9CisgIGVsc2UKKyAgICB7CisgICAgICByb290LT5pdGVtcysrOworICAgICAgZmlsZS0+bmV4 dCA9IHJvb3QtPmZpcnN0OworICAgICAgcm9vdC0+Zmlyc3QgPSBmaWxlOworICAgIH0KKworICBy ZXR1cm4gMDsKK30KKwordm9pZAorZmluZF9maWxlIChjaGFyKiBmaWxlbmFtZSwgY2hhciogZGly ZWN0b3J5LCBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfcm9vdCogcm9vdCwgaW50IG1heF9kZXB0 aCwgaW50IGRlcHRoKQoreworICBzdHJ1Y3QgZGlyZW50ICplcDsKKyAgc3RydWN0IHN0YXQgc3Rh dGJ1ZjsKKyAgRElSICpkcDsKKyAgaW50IHJldF92YWw9MDsKKyAgY2hhciogZnVsbF9wYXRoOwor CisgIGlmIChkZXB0aCA+IG1heF9kZXB0aCkKKyAgICB7CisgICAgICByZXR1cm47CisgICAgfQor CisgIGlmICgoZHAgPSBvcGVuZGlyIChkaXJlY3RvcnkpKSA9PSBOVUxMKQorICAgIHsKKyAgICAg IHJldHVybjsKKyAgICB9CisKKyAgZnVsbF9wYXRoID0gbWFsbG9jICgxMDI0ICogc2l6ZW9mIChj aGFyKSk7CisgIGlmICghZnVsbF9wYXRoKQorICAgIHJldHVybjsKKworICB3aGlsZSAoKGVwID0g cmVhZGRpcihkcCkpICE9IE5VTEwpCisgICAgeworICAgICAgc25wcmludGYgKGZ1bGxfcGF0aCwg MTAyNCwgIiVzLyVzIiwgZGlyZWN0b3J5LCBlcC0+ZF9uYW1lKTsKKyAgICAgIGxzdGF0IChmdWxs X3BhdGgsICZzdGF0YnVmKTsKKworICAgICAgaWYgKFNfSVNMTksgKHN0YXRidWYuc3RfbW9kZSkp CisgICAgICAgIHsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICBpZiAo IXN0cmNtcCAoZXAtPmRfbmFtZSwgIi4iKSB8fCAhc3RyY21wKGVwLT5kX25hbWUsICIuLiIpKQor ICAgICAgICB7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgaWYgKCFz dHJjbXAgKGVwLT5kX25hbWUsIGZpbGVuYW1lKSkKKyAgICAgICAgeworICAgICAgICAgIHJldF92 YWwgPSBhZGRfZmlsZW5hbWVfdG9fcGlsZSAoZnVsbF9wYXRoLCByb290KTsKKyAgICAgICAgICBp ZiAocmV0X3ZhbCA9PSAtMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg ICAgIGZpbmRfZmlsZSAoZmlsZW5hbWUsIGZ1bGxfcGF0aCwgcm9vdCwgbWF4X2RlcHRoLCBkZXB0 aCsxKTsKKyAgICB9CisKKyAgZnJlZSAoZnVsbF9wYXRoKTsKKyAgY2xvc2VkaXIgKGRwKTsKK30K Kwogc3RhdGljIGNoYXIgKgogb2ZfcGF0aF9vZl92ZGlzayhjb25zdCBjaGFyICpzeXNfZGV2bmFt ZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKIAkJIGNvbnN0IGNoYXIgKmRldmljZSwKQEAgLTM4 Miw3ICs0NjgsMjQ0IEBAIG9mX2ZjX3BvcnRfbmFtZSAoY29uc3QgY2hhciAqcGF0aCwgY29uc3Qg Y2hhciAqc3VicGF0aCwgY2hhciAqcG9ydF9uYW1lKQogICBmcmVlIChiYXNlcGF0aCk7CiB9CiAK LSNpZmRlZiBfX3NwYXJjX18KK3ZvaWQKK2ZyZWVfb2ZwYXRoX2ZpbGVzX2xpc3QgKHN0cnVjdCBv ZnBhdGhfZmlsZXNfbGlzdF9yb290KiByb290KQoreworICBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xp c3Rfbm9kZSogbm9kZSA9IHJvb3QtPmZpcnN0OworICBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rf bm9kZSogbmV4dDsKKworICB3aGlsZSAobm9kZSE9TlVMTCkKKyAgICB7CisgICAgICBuZXh0ID0g bm9kZS0+bmV4dDsKKyAgICAgIGZyZWUgKG5vZGUtPmZpbGVuYW1lKTsKKyAgICAgIGZyZWUgKG5v ZGUpOworICAgICAgbm9kZSA9IG5leHQ7CisgICAgfQorCisgIGZyZWUgKHJvb3QpOworICByZXR1 cm47Cit9CisKK2NoYXIqCitvZl9maW5kX2ZjX2hvc3QgKGNoYXIqIGhvc3Rfd3dwbikKK3sKKyAg RklMRSogZnA7CisgIGNoYXIgKmJ1ZjsKKyAgY2hhciAqcmV0X3ZhbDsKKyAgY2hhciBwb3J0bmFt ZV9maWxlbmFtZVtzaXplb2YgKCJwb3J0X25hbWUiKV0gPSAicG9ydF9uYW1lIjsKKyAgY2hhciBk ZXZpY2VzX3BhdGhbc2l6ZW9mICgiL3N5cy9kZXZpY2VzIildID0gIi9zeXMvZGV2aWNlcyI7Cisg IHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9yb290KiBwb3J0bmFtZXNfZmlsZV9saXN0OworICBz dHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfbm9kZSogbm9kZTsKKworICByZXRfdmFsID0gbWFsbG9j IChzaXplb2YgKGNoYXIpICogMTAyNCk7CisgIGlmICghcmV0X3ZhbCkKKyAgICByZXR1cm4gTlVM TDsKKworICBwb3J0bmFtZXNfZmlsZV9saXN0ID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCBvZnBh dGhfZmlsZXNfbGlzdF9yb290KSk7CisgIGlmICghcG9ydG5hbWVzX2ZpbGVfbGlzdCkKKyAgICB7 CisgICAgICBmcmVlIChyZXRfdmFsKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICBw b3J0bmFtZXNfZmlsZV9saXN0LT5pdGVtcyA9IDA7CisgIHBvcnRuYW1lc19maWxlX2xpc3QtPmZp cnN0ID0gTlVMTDsKKyAgZmluZF9maWxlIChwb3J0bmFtZV9maWxlbmFtZSwgZGV2aWNlc19wYXRo LCBwb3J0bmFtZXNfZmlsZV9saXN0LCAxMCwgMCk7CisgIG5vZGUgPSBwb3J0bmFtZXNfZmlsZV9s aXN0LT5maXJzdDsKKworICB3aGlsZSAobm9kZSAhPSBOVUxMKQorICAgIHsKKyAgICAgIGZwID0g Zm9wZW4obm9kZS0+ZmlsZW5hbWUsICJyIik7CisgICAgICBidWYgPSBtYWxsb2MgKHNpemVvZiAo Y2hhcikgKiA1MTIpOworICAgICAgaWYgKCFidWYpCisgICAgICAgIGJyZWFrOworCisgICAgICBm c2NhbmYgKGZwLCAiJXMiLCBidWYpOworICAgICAgZmNsb3NlIChmcCk7CisKKyAgICAgIGlmICgo c3RyY21wIChidWYsIGhvc3Rfd3dwbikgPT0gMCkgJiYgZ3J1Yl9zdHJzdHIgKG5vZGUtPmZpbGVu YW1lLCAiZmNfaG9zdCIpKQorICAgICAgICB7CisgICAgICAgICAgZnJlZSAoYnVmKTsKKyAgICAg ICAgICBncnViX3N0cmNweSAocmV0X3ZhbCwgbm9kZS0+ZmlsZW5hbWUpOworICAgICAgICAgIGZy ZWVfb2ZwYXRoX2ZpbGVzX2xpc3QgKHBvcnRuYW1lc19maWxlX2xpc3QpOworICAgICAgICAgIHJl dHVybiByZXRfdmFsOworICAgICAgICB9CisKKyAgICAgIG5vZGUgPSBub2RlLT5uZXh0OworICAg ICAgZnJlZSAoYnVmKTsKKyAgICB9CisgIGZyZWVfb2ZwYXRoX2ZpbGVzX2xpc3QgKHBvcnRuYW1l c19maWxlX2xpc3QpOworICBmcmVlIChyZXRfdmFsKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK2lu dAorb2ZfcGF0aF9nZXRfbnZtZW9mX2FkYXB0ZXJfaW5mbyAoY2hhciogc3lzZnNfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvZnBhdGhfbnZtZW9mX2luZm8q IG52bWVvZl9pbmZvKQoreworICBGSUxFICpmcDsKKyAgY2hhciAqYnVmLCAqYnVmMiwgKmJ1ZjM7 CisKKyAgbnZtZW9mX2luZm8tPmhvc3Rfd3dwbiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyKSAqIDI1 Nik7CisgIG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyKSAq IDI1Nik7CisgIG52bWVvZl9pbmZvLT5ucW4gPSBtYWxsb2MgKHNpemVvZiAoY2hhcikgKiAyNTYp OworCisgIGlmIChudm1lb2ZfaW5mby0+aG9zdF93d3BuID09IE5VTEwgfHwgbnZtZW9mX2luZm8t PnRhcmdldF93d3BuID09IE5VTEwgfHwgbnZtZW9mX2luZm8tPm5xbiA9PSBOVUxMKQorICAgIHsK KyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworICAgICAgZnJlZSAobnZtZW9m X2luZm8tPnRhcmdldF93d3BuKTsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ucW4pOworICAg ICAgcmV0dXJuIC0xOworICAgIH0KKworICBidWYgPSBtYWxsb2MgKHNpemVvZiAoY2hhcikgKiA1 MTIpOworICBpZiAoIWJ1ZikKKyAgICB7CisgICAgICBmcmVlIChudm1lb2ZfaW5mby0+aG9zdF93 d3BuKTsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbik7CisgICAgICBmcmVl IChudm1lb2ZfaW5mby0+bnFuKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgc25wcmlu dGYgKGJ1ZiwgNTEyLCAiJXMvc3Vic3lzbnFuIiwgc3lzZnNfcGF0aCk7CisgIGlmICghIChmcCA9 IGZvcGVuIChidWYsICJyIikpIHx8CisgICAgICBmc2NhbmYgKGZwLCAiJXMiLCBudm1lb2ZfaW5m by0+bnFuKSAhPSAxKQorICAgIHsKKyAgICAgIGlmIChmcCkKKwlmY2xvc2UgKGZwKTsKKyAgICAg IGZyZWUgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworICAgICAgZnJlZSAobnZtZW9mX2luZm8t PnRhcmdldF93d3BuKTsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ucW4pOworICAgICAgZnJl ZSAoYnVmKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIGZjbG9zZSAoZnApOworCisgIHNu cHJpbnRmIChidWYsIDUxMiwgIiVzL2NudGxpZCIsIHN5c2ZzX3BhdGgpOworICBpZiAoISAoZnAg PSBmb3BlbiAoYnVmLCAiciIpKSB8fAorICAgICAgZnNjYW5mIChmcCwgIiV1IiwgJihudm1lb2Zf aW5mby0+Y250bGlkKSkgIT0gMSkKKyAgICB7CisgICAgICBpZiAoZnApCisJZmNsb3NlIChmcCk7 CisgICAgICBmcmVlIChudm1lb2ZfaW5mby0+aG9zdF93d3BuKTsKKyAgICAgIGZyZWUgKG52bWVv Zl9pbmZvLT50YXJnZXRfd3dwbik7CisgICAgICBmcmVlIChudm1lb2ZfaW5mby0+bnFuKTsKKyAg ICAgIGZyZWUgKGJ1Zik7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICBmY2xvc2UgKGZwKTsK KworICBzbnByaW50ZiAoYnVmLCA1MTIsICIlcy9hZGRyZXNzIiwgc3lzZnNfcGF0aCk7CisgIGJ1 ZjIgPSBOVUxMOworICBmcCA9IE5VTEw7CisgIGlmICghIChidWYyID0gbWFsbG9jIChzaXplb2Yg KGNoYXIpICogNTEyKSkgfHwKKyAgICAgICEgKGZwID0gZm9wZW4gKGJ1ZiwgInIiKSkgfHwKKyAg ICAgIGZzY2FuZiAoZnAsICIlcyIsIGJ1ZjIpICE9IDEpCisgICB7CisgICAgICBpZiAoZnApCisJ ZmNsb3NlIChmcCk7CisgICAgICBmcmVlIChudm1lb2ZfaW5mby0+aG9zdF93d3BuKTsKKyAgICAg IGZyZWUgKG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbik7CisgICAgICBmcmVlIChudm1lb2ZfaW5m by0+bnFuKTsKKyAgICAgIGZyZWUgKGJ1Zik7CisgICAgICBmcmVlIChidWYyKTsKKyAgICAgIHJl dHVybiAtMTsKKyAgICB9CisKKyAgZmNsb3NlIChmcCk7CisKKyAgaWYgKCEgKGJ1ZjMgPSBzdHJy Y2hyIChidWYyLCAnLScpKSkKKyAgICB7CisgICAgICBmcmVlIChudm1lb2ZfaW5mby0+aG9zdF93 d3BuKTsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbik7CisgICAgIGZyZWUg KG52bWVvZl9pbmZvLT5ucW4pOworICAgICAgZnJlZSAoYnVmKTsKKyAgICAgIGZyZWUgKGJ1ZjIp OworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgZ3J1Yl9tZW1jcHkgKG52bWVvZl9pbmZvLT5o b3N0X3d3cG4sIGJ1ZjMgKyAxLCAyNTYpOworICBpZiAoISAoYnVmMyA9IHN0cmNociAoYnVmMiwg Jy0nKSkJfHwKKyAgICAgICEgKGJ1ZjMgPSBzdHJjaHIgKGJ1ZjMgKyAxLCAnLScpKSB8fAorICAg ICAgISAoYnVmMyA9IHN0cmNociAoYnVmMyArIDEsICd4JykpKQorICAgIHsKKyAgICAgIGZyZWUg KG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworICAgICAgZnJlZSAobnZtZW9mX2luZm8tPnRhcmdl dF93d3BuKTsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ucW4pOworICAgICAgZnJlZSAoYnVm KTsKKyAgICAgIGZyZWUgKGJ1ZjIpOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgZ3J1Yl9t ZW1jcHkgKG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbiwgYnVmMyArIDEsIDI1Nik7CisgIGJ1ZjMg PSBzdHJjaHIgKG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbiwgJywnKTsKKyAgaWYgKGJ1ZjMpCisg ICAgKmJ1ZjMgPSAnXDAnOworICBmcmVlIChidWYpOworICBmcmVlIChidWYyKTsKKyAgcmV0dXJu IDA7Cit9CisKKyNkZWZpbmUgT0ZQQVRIX01BWF9VSU5UX0hFWF9ESUdJVFMgOAorI2RlZmluZSBP RlBBVEhfTUFYX0lOVF9ESUdJVFMgMTAKKworc3RhdGljIGNoYXIgKgorb2ZfcGF0aF9nZXRfbnZt ZV9jb250cm9sbGVyX25hbWVfbm9kZSAoY29uc3QgY2hhciogZGV2bmFtZSkKK3sKKyAgY2hhciAq Y29udHJvbGxlcl9ub2RlLCAqZW5kOworCisgIGNvbnRyb2xsZXJfbm9kZSA9IHhzdHJkdXAgKGRl dm5hbWUpOworICBlbmQgPSBncnViX3N0cmNociAoY29udHJvbGxlcl9ub2RlICsgMSwgJ24nKTsK KyAgaWYgKGVuZCAhPSBOVUxMKQorICAgIHsKKyAgICAgICplbmQgPSAnXDAnOworICAgIH0KKwor ICByZXR1cm4gY29udHJvbGxlcl9ub2RlOworfQorCit1bnNpZ25lZCBpbnQKK29mX3BhdGhfZ2V0 X252bWVfbnNpZCAoY29uc3QgY2hhciogZGV2bmFtZSkKK3sKKyAgdW5zaWduZWQgaW50IG5zaWQ7 CisgIGNoYXIgKnN5c2ZzX3BhdGgsICpidWY7CisgIEZJTEUgKmZwOworCisgIGJ1ZiA9IG1hbGxv YyAoc2l6ZW9mKGNoYXIpICogNTEyKTsKKyAgaWYgKCFidWYpCisgICAgcmV0dXJuIDA7CisKKyAg c3lzZnNfcGF0aCA9IGJsb2NrX2RldmljZV9nZXRfc3lzZnNfcGF0aF9hbmRfbGluayAoZGV2bmFt ZSk7CisgIHNucHJpbnRmIChidWYsIDUxMiwgIiVzLyVzL25zaWQiLCBzeXNmc19wYXRoLCBkZXZu YW1lKTsKKyAgZnAgPSBmb3BlbihidWYsICJyIik7CisgIGZzY2FuZiAoZnAsICIldSIsICYobnNp ZCkpOworICBmY2xvc2UgKGZwKTsKKworICBmcmVlIChzeXNmc19wYXRoKTsKKyAgZnJlZSAoYnVm KTsKKyAgcmV0dXJuIG5zaWQ7Cit9CisKK3N0YXRpYyBjaGFyICoKK252bWVfZ2V0X3N5c3BhdGgg KGNvbnN0IGNoYXIgKm52bWVkZXYpCit7CisgIGNoYXIgKnN5c2ZzX3BhdGg7CisKKyAgc3lzZnNf cGF0aCA9IGJsb2NrX2RldmljZV9nZXRfc3lzZnNfcGF0aF9hbmRfbGluayAobnZtZWRldik7Cisg IGlmIChzdHJzdHIgKHN5c2ZzX3BhdGgsICJudm1lLXN1YnN5c3RlbSIpKQorICAgIHsKKyAgICAg IGNoYXIgKmNvbnRyb2xsZXJfbm9kZSA9IG9mX3BhdGhfZ2V0X252bWVfY29udHJvbGxlcl9uYW1l X25vZGUgKG52bWVkZXYpOworICAgICAgY2hhciAqYnVmID0geG1hbGxvYyAoc3RybGVuIChzeXNm c19wYXRoKSArIHN0cmxlbiAoIi8iKSArIHN0cmxlbiAoY29udHJvbGxlcl9ub2RlKSArIDEpOwor ICAgICAgc3RyY3B5IChidWYsIHN5c2ZzX3BhdGgpOworICAgICAgc3RyY2F0IChidWYsICIvIik7 CisgICAgICBzdHJjYXQgKGJ1ZiwgY29udHJvbGxlcl9ub2RlKTsKKyAgICAgIGZyZWUgKHN5c2Zz X3BhdGgpOworICAgICAgZnJlZSAoY29udHJvbGxlcl9ub2RlKTsKKyAgICAgIHN5c2ZzX3BhdGgg PSB4cmVhbHBhdGggKGJ1Zik7CisgICAgICBmcmVlIChidWYpOworICAgIH0KKworICByZXR1cm4g c3lzZnNfcGF0aDsKK30KKwogc3RhdGljIGNoYXIgKgogb2ZfcGF0aF9vZl9udm1lKGNvbnN0IGNo YXIgKnN5c19kZXZuYW1lIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAogCSAgICAgICAgY29uc3Qg Y2hhciAqZGV2aWNlLApAQCAtMzkxLDYgKzcxNCw4IEBAIG9mX3BhdGhfb2ZfbnZtZShjb25zdCBj aGFyICpzeXNfZGV2bmFtZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKIHsKICAgY2hhciAqc3lz ZnNfcGF0aCwgKm9mX3BhdGgsIGRpc2tbTUFYX0RJU0tfQ0FUXTsKICAgY29uc3QgY2hhciAqZGln aXRfc3RyaW5nLCAqcGFydF9lbmQ7CisgIGludCBjaGFyc193cml0dGVuLCByZXRfdmFsOworICBz dHJ1Y3Qgb2ZwYXRoX252bWVvZl9pbmZvKiBudm1lb2ZfaW5mbzsKIAogICBkaWdpdF9zdHJpbmcg PSB0cmFpbGluZ19kaWdpdHMgKGRldmljZSk7CiAgIHBhcnRfZW5kID0gZGV2aWNlbm9kZSArIHN0 cmxlbiAoZGV2aWNlbm9kZSkgLSAxOwpAQCAtNDEwLDE1ICs3MzUsOTAgQEAgb2ZfcGF0aF9vZl9u dm1lKGNvbnN0IGNoYXIgKnN5c19kZXZuYW1lIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAogICAg ICAgLyogUmVtb3ZlIHRoZSBwLiAqLwogICAgICAgKmVuZCA9ICdcMCc7CiAgICAgICBzc2NhbmYg KGRpZ2l0X3N0cmluZywgIiVkIiwgJnBhcnQpOwotICAgICAgc25wcmludGYgKGRpc2ssIHNpemVv ZiAoZGlzayksICIvZGlza0AxOiVjIiwgJ2EnICsgKHBhcnQgLSAxKSk7Ci0gICAgICBzeXNmc19w YXRoID0gYmxvY2tfZGV2aWNlX2dldF9zeXNmc19wYXRoX2FuZF9saW5rIChudm1lZGV2KTsKKyAg ICAgIHN5c2ZzX3BhdGggPSBudm1lX2dldF9zeXNwYXRoIChudm1lZGV2KTsKKworICAgICAgLyog SWYgaXMgYSBOVk1lb0YgKi8KKyAgICAgIGlmIChzdHJzdHIgKHN5c2ZzX3BhdGgsICJudm1lLWZh YnJpY3MiKSkKKyAgICAgICAgeworICAgICAgICAgIG52bWVvZl9pbmZvID0gbWFsbG9jIChzaXpl b2YgKHN0cnVjdCBvZnBhdGhfbnZtZW9mX2luZm8pKTsKKyAgICAgICAgICBpZiAoIW52bWVvZl9p bmZvKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBmcmVlIChudm1lZGV2KTsKKyAgICAg ICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICByZXRfdmFs ID0gb2ZfcGF0aF9nZXRfbnZtZW9mX2FkYXB0ZXJfaW5mbyAoc3lzZnNfcGF0aCwgbnZtZW9mX2lu Zm8pOworICAgICAgICAgIGlmIChyZXRfdmFsID09IC0xKQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICBmcmVlIChudm1lZGV2KTsKKyAgICAgICAgICAgICAgZnJlZSAobnZtZW9mX2luZm8p OworICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg IHN5c2ZzX3BhdGggPSBvZl9maW5kX2ZjX2hvc3QgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOwor ICAgICAgICAgIGlmICghc3lzZnNfcGF0aCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ZnJlZSAobnZtZWRldik7CisgICAgICAgICAgICAgIGZyZWUgKG52bWVvZl9pbmZvKTsKKyAgICAg ICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBjaGFyc193 cml0dGVuID0gc25wcmludGYgKGRpc2ssc2l6ZW9mKGRpc2spLCAiL252bWUtb2YvY29udHJvbGxl ckAlcywleDpucW49JXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZt ZW9mX2luZm8tPnRhcmdldF93d3BuLDB4ZmZmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG52bWVvZl9pbmZvLT5ucW4pOworICAgICAgICAgIHVuc2lnbmVkIGludCBuc2lk ID0gb2ZfcGF0aF9nZXRfbnZtZV9uc2lkIChudm1lZGV2KTsKKyAgICAgICAgICBpZiAobnNpZCkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc25wcmludGYgKGRpc2srY2hhcnNfd3JpdHRl biwgc2l6ZW9mKCIvbmFtZXNwYWNlQCIpICsgT0ZQQVRIX01BWF9VSU5UX0hFWF9ESUdJVFMgKyBP RlBBVEhfTUFYX0lOVF9ESUdJVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAiL25hbWVzcGFj ZUAleDolZCIsIG5zaWQsIHBhcnQpOworICAgICAgICAgICAgfQorICAgICAgICAgIGZyZWUgKG52 bWVvZl9pbmZvKTsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg c25wcmludGYgKGRpc2ssIHNpemVvZiAoZGlzayksICIvZGlza0AxOiVjIiwgJ2EnICsgKHBhcnQg LSAxKSk7CisgICAgICAgIH0KICAgICAgIGZyZWUgKG52bWVkZXYpOwogICAgIH0KICAgZWxzZQog ICAgIHsKICAgICAgIC8qIFdlIGRvIG5vdCBoYXZlIHRoZSBwYXJpdGlvbi4gKi8KLSAgICAgIHNu cHJpbnRmIChkaXNrLCBzaXplb2YgKGRpc2spLCAiL2Rpc2tAMSIpOwotICAgICAgc3lzZnNfcGF0 aCA9IGJsb2NrX2RldmljZV9nZXRfc3lzZnNfcGF0aF9hbmRfbGluayAoZGV2aWNlKTsKKyAgICAg IHN5c2ZzX3BhdGggPSBudm1lX2dldF9zeXNwYXRoIChkZXZpY2UpOworICAgICAgaWYgKHN0cnN0 ciAoc3lzZnNfcGF0aCwgIm52bWUtZmFicmljcyIpKQorICAgICAgICB7CisgICAgICAgICAgbnZt ZW9mX2luZm8gPSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IG9mcGF0aF9udm1lb2ZfaW5mbykpOwor ICAgICAgICAgIGlmICghbnZtZW9mX2luZm8pCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKwor ICAgICAgICAgIHJldF92YWwgPSBvZl9wYXRoX2dldF9udm1lb2ZfYWRhcHRlcl9pbmZvIChzeXNm c19wYXRoLCBudm1lb2ZfaW5mbyk7CisgICAgICAgICAgaWYgKHJldF92YWwgPT0gLTEpCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgIGZyZWUgKG52bWVvZl9pbmZvKTsKKyAgICAgICAgICAg ICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBzeXNmc19wYXRoID0g b2ZfZmluZF9mY19ob3N0IChudm1lb2ZfaW5mby0+aG9zdF93d3BuKTsKKyAgICAgICAgICBpZiAo IXN5c2ZzX3BhdGgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGZyZWUgKG52bWVvZl9p bmZvKTsKKyAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAg ICAgICBjaGFyc193cml0dGVuID0gc25wcmludGYgKGRpc2ssc2l6ZW9mKGRpc2spLCAiL252bWUt b2YvY29udHJvbGxlckAlcywleDpucW49JXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnZtZW9mX2luZm8tPnRhcmdldF93d3BuLCAweGZmZmYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBudm1lb2ZfaW5mby0+bnFuKTsKKyAgICAgICAgICB1bnNp Z25lZCBpbnQgbnNpZCA9IG9mX3BhdGhfZ2V0X252bWVfbnNpZCAoZGV2aWNlKTsKKyAgICAgICAg ICBpZiAobnNpZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc25wcmludGYgKGRpc2sr Y2hhcnNfd3JpdHRlbixzaXplb2YoIi9uYW1lc3BhY2VAIikgKyBzaXplb2YoY2hhcikgKiBPRlBB VEhfTUFYX1VJTlRfSEVYX0RJR0lUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICIvbmFtZXNw YWNlQCV4IiwgbnNpZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgZnJlZSAobnZtZW9mX2lu Zm8pOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBzbnByaW50 ZiAoZGlzaywgc2l6ZW9mIChkaXNrKSwgIi9kaXNrQDEiKTsKKyAgICAgICAgfQogICAgIH0KIAog ICBvZl9wYXRoID0gZmluZF9vYnBwYXRoIChzeXNmc19wYXRoKTsKQEAgLTQyOSw3ICs4MjksNiBA QCBvZl9wYXRoX29mX252bWUoY29uc3QgY2hhciAqc3lzX2Rldm5hbWUgX19hdHRyaWJ1dGVfXygo dW51c2VkKSksCiAgIGZyZWUgKHN5c2ZzX3BhdGgpOwogICByZXR1cm4gb2ZfcGF0aDsKIH0KLSNl bmRpZgogCiBzdGF0aWMgaW50CiB2ZW5kb3JfaXNfQVRBKGNvbnN0IGNoYXIgKnBhdGgpCkBAIC03 NzksMTEgKzExNzgsOSBAQCBncnViX3V0aWxfZGV2bmFtZV90b19vZnBhdGggKGNvbnN0IGNoYXIg KnN5c19kZXZuYW1lKQogICAgIC8qIEFsbCB0aGUgbW9kZWxzIEkndmUgc2VlbiBoYXZlIGEgZGV2 YWxpYXMgImZsb3BweSIuCiAgICAgICAgTmV3IG1vZGVscyBoYXZlIG5vIGZsb3BweSBhdCBhbGwu ICovCiAgICAgb2ZwYXRoID0geHN0cmR1cCAoImZsb3BweSIpOwotI2lmZGVmIF9fc3BhcmNfXwog ICBlbHNlIGlmIChkZXZpY2VbMF0gPT0gJ24nICYmIGRldmljZVsxXSA9PSAndicgJiYgZGV2aWNl WzJdID09ICdtJwogICAgICAgICAgICAmJiBkZXZpY2VbM10gPT0gJ2UnKQogICAgIG9mcGF0aCA9 IG9mX3BhdGhfb2ZfbnZtZSAobmFtZV9idWYsIGRldmljZSwgZGV2bm9kZSwgZGV2aWNlbm9kZSk7 Ci0jZW5kaWYKICAgZWxzZQogICAgIHsKICAgICAgIGdydWJfdXRpbF93YXJuIChfKCJ1bmtub3du IGRldmljZSB0eXBlICVzIiksIGRldmljZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvdXRp bC9vZnBhdGguaCBiL2luY2x1ZGUvZ3J1Yi91dGlsL29mcGF0aC5oCmluZGV4IGI0M2M1MjMuLjg1 MTcyYmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi91dGlsL29mcGF0aC5oCisrKyBiL2luY2x1 ZGUvZ3J1Yi91dGlsL29mcGF0aC5oCkBAIC0zLDQgKzMsMzIgQEAKIAogY2hhciAqZ3J1Yl91dGls X2Rldm5hbWVfdG9fb2ZwYXRoIChjb25zdCBjaGFyICpkZXZuYW1lKTsKIAorc3RydWN0IG9mcGF0 aF9maWxlc19saXN0X25vZGUKK3sKKyAgY2hhciogZmlsZW5hbWU7CisgIHN0cnVjdCBvZnBhdGhf ZmlsZXNfbGlzdF9ub2RlKiBuZXh0OworfTsKKworc3RydWN0IG9mcGF0aF9maWxlc19saXN0X3Jv b3QKK3sKKyAgaW50IGl0ZW1zOworICBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfbm9kZSogZmly c3Q7Cit9OworCitzdHJ1Y3Qgb2ZwYXRoX252bWVvZl9pbmZvCit7CisgIGNoYXIqIGhvc3Rfd3dw bjsKKyAgY2hhciogdGFyZ2V0X3d3cG47CisgIGNoYXIqIG5xbjsKKyAgaW50IGNudGxpZDsKKyAg aW50IG5zaWQ7Cit9OworCitpbnQgb2ZfcGF0aF9nZXRfbnZtZW9mX2FkYXB0ZXJfaW5mbyAoY2hh ciogc3lzZnNfcGF0aCwgc3RydWN0IG9mcGF0aF9udm1lb2ZfaW5mbyogbnZtZW9mX2luZm8pOwor dW5zaWduZWQgaW50IG9mX3BhdGhfZ2V0X252bWVfbnNpZCAoY29uc3QgY2hhciogZGV2bmFtZSk7 CitpbnQgYWRkX2ZpbGVuYW1lX3RvX3BpbGUgKGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3Qgb2ZwYXRo X2ZpbGVzX2xpc3Rfcm9vdCogcm9vdCk7Cit2b2lkIGZpbmRfZmlsZSAoY2hhciogZmlsZW5hbWUs IGNoYXIqIGRpcmVjdG9yeSwgc3RydWN0IG9mcGF0aF9maWxlc19saXN0X3Jvb3QqIHJvb3QsIGlu dCBtYXhfZGVwdGgsIGludCBkZXB0aCk7CitjaGFyKiBvZl9maW5kX2ZjX2hvc3QgKGNoYXIqIGhv c3Rfd3dwbik7Cit2b2lkIGZyZWVfb2ZwYXRoX2ZpbGVzX2xpc3QgKHN0cnVjdCBvZnBhdGhfZmls ZXNfbGlzdF9yb290KiByb290KTsKKwogI2VuZGlmIC8qICEgR1JVQl9PRlBBVEhfTUFDSElORV9V VElMX0hFQURFUiAqLwotLSAKMi4zOS4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUu b3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK