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 7E08AC87FCB for ; Wed, 30 Jul 2025 05:36:32 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ugzUE-00036Y-Gv; Wed, 30 Jul 2025 01:36:24 -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 1ugzTp-0002rA-10 for grub-devel@gnu.org; Wed, 30 Jul 2025 01:36:00 -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 1ugzTl-00032H-2I for grub-devel@gnu.org; Wed, 30 Jul 2025 01:35:56 -0400 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56TNPvI3015679; Wed, 30 Jul 2025 05:35:51 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=Xdl2CRXyIPgCrJkT7 Up5fvP2QeMOoiG0TIc1gCxKidg=; b=Chlqkkk5T+/79p8oZllOvPnjG31GTyeXh uQgNfz8Sn7cUBXacp2NMm9jPLLOKwwdFywc9zvR7Xq48Nf5iZpKKzlnk/nJsMb48 S1DMR7TUhvnkl5+sn8PSOW88gkocbS+6oxQ9Cc5CNU/1jtbGB4gDsNGz+a3dQMvN IlF004qdghgP0YDgbWNK0pI2g8JttrJnb40yekLATziwIKo8c/RAa6OOZpLqAy6t XINDND16vaeU6Rr2AUZVr+4DiHlQXWtDzBI8TqCUNj+vaPsczQqitjwq2k+1OkL9 FyN/Y2qsAdtMkZ4OFeouKj8OsIRks4drR55m3XwJtnPRAG3rWLSNQ== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 484qfqtsjc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Jul 2025 05:35:51 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 56U3QsXO028745; Wed, 30 Jul 2025 05:35:50 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 485c22npah-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Jul 2025 05:35:50 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 56U5ZekV28639862 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Jul 2025 05:35:41 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D995B2004B; Wed, 30 Jul 2025 05:35:40 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5EACE20043; Wed, 30 Jul 2025 05:35:39 +0000 (GMT) Received: from localhost.localdomain (unknown [9.109.249.65]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 30 Jul 2025 05:35:39 +0000 (GMT) From: Avnish Chouhan To: grub-devel@gnu.org Cc: daniel.kiper@oracle.com, brking@linux.ibm.com, meghanaprakash@in.ibm.com, mchang@suse.com, Avnish Chouhan , Diego Domingos Subject: [PATCH v6 5/6] ieee1275: ofpath enable NVMeoF logical device translate Date: Wed, 30 Jul 2025 11:04:04 +0530 Message-ID: <20250730053405.41417-6-avnish@linux.ibm.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20250730053405.41417-1-avnish@linux.ibm.com> References: <20250730053405.41417-1-avnish@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzMwMDAzNSBTYWx0ZWRfX5a5R2s/EE8CM yu5rAGf7w2u47ZKyIAfpOVglgWAP2w09Ntzl2lMVxc6vp6fFPnY0B9M3vOglnbuYe3xOuO+pU+t 3ZQ4IsQ5iLqEUerXUvZrhrbFtHu8aZvxGJiqmYdvZe0GfvQ4g2uIxWG729xrHgF/UwTHJRs2q9B 3gKeWsKiT4i0k7PfBJ0F+YifD2UvfbwdJqxc9aCNrrAMfu7QRpqhTQjmS5/UC1Y80b2wfM2Qlg/ NauDvhCUE0PGF1TS341G9/kQAnFU/3DemTN96BEUdiduZ9inrUMZKS7D3ZkFwoJWSNOOg5w3x2a TW/NOtHuavbK1+mV7ltYPYM4MspHEwVJZHVj5dRw58DqjRGkXYzOJR8TTV4kAJIen4IyMEmO2Py h7xAYi7dXndq3GRSQT3lu/R3TYvzu1BHSkdD8pWuHuKcn4+EyMsaeHGWw3C+GVwcnMxsJY5A X-Authority-Analysis: v=2.4 cv=Je28rVKV c=1 sm=1 tr=0 ts=6889af37 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=Wb1JkmetP80A:10 a=VnNF1IyMAAAA:8 a=iox4zFpeAAAA:8 a=oNM_RH7Yg1IF_yt7N9wA:9 a=WzC6qhA0u3u7Ye7llzcV:22 X-Proofpoint-GUID: l0Mw1jtmur9m7BedQtzLQqy7x6DQGeAy X-Proofpoint-ORIG-GUID: l0Mw1jtmur9m7BedQtzLQqy7x6DQGeAy X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-30_02,2025-07-28_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=812 clxscore=1011 lowpriorityscore=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 phishscore=0 mlxscore=0 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507300035 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_H4=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+ClNpZ25lZC1PZmYtYnk6IE1pY2hhZWwgQ2hhbmcgPG1j aGFuZ0BzdXNlLmNvbT4KLS0tCiBncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMgfCA0MTUg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQog aW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmggICAgIHwgMjggKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQzNCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYyBiL2dydWItY29y ZS9vc2RlcC9saW51eC9vZnBhdGguYwppbmRleCA2NGY5NWEyLi5kZDgxZTZiIDEwMDY0NAotLS0g YS9ncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMKKysrIGIvZ3J1Yi1jb3JlL29zZGVwL2xp bnV4L29mcGF0aC5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNs dWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CiAK ICNpZmRlZiBfX3NwYXJjX18KIHR5cGVkZWYgZW51bQpAQCAtMTM2LDcgKzEzNyw3IEBAIHRyaW1f bmV3bGluZSAoY2hhciAqcGF0aCkKICAgICAqZW5kLS0gPSAnXDAnOwogfQogCi0jZGVmaW5lIE1B WF9ESVNLX0NBVCAgICA2NAorI2RlZmluZSBNQVhfRElTS19DQVQgICAgNTEyCiAKIHN0YXRpYyBj aGFyICoKIGZpbmRfb2JwcGF0aCAoY29uc3QgY2hhciAqc3lzZnNfcGF0aF9vcmlnKQpAQCAtMzEy LDYgKzMxMyw5MSBAQCBnZXRfYmFzZW5hbWUoY2hhciAqcCkKICAgcmV0dXJuIHJldDsKIH0KIAor aW50CithZGRfZmlsZW5hbWVfdG9fcGlsZSAoY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBvZnBhdGhf ZmlsZXNfbGlzdF9yb290KiByb290KQoreworICBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfbm9k ZSogZmlsZTsKKworICBmaWxlID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCBvZnBhdGhfZmlsZXNf bGlzdF9ub2RlKSk7CisgIGlmICghZmlsZSkKKyAgICByZXR1cm4gLTE7CisKKyAgZmlsZS0+Zmls ZW5hbWUgPSBtYWxsb2MgKHNpemVvZiAoY2hhcikgKiAxMDI0KTsKKyAgaWYgKCFmaWxlLT5maWxl bmFtZSkKKyAgICB7CisgICAgICBmcmVlIChmaWxlKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9 CisKKyAgZ3J1Yl9zdHJjcHkgKGZpbGUtPmZpbGVuYW1lLCBmaWxlbmFtZSk7CisgIGlmIChyb290 LT5maXJzdCA9PSBOVUxMKQorICAgIHsKKyAgICAgIHJvb3QtPml0ZW1zID0gMTsKKyAgICAgIHJv b3QtPmZpcnN0ID0gZmlsZTsKKyAgICAgIGZpbGUtPm5leHQgPSBOVUxMOworICAgIH0KKyAgZWxz ZQorICAgIHsKKyAgICAgIHJvb3QtPml0ZW1zKys7CisgICAgICBmaWxlLT5uZXh0ID0gcm9vdC0+ Zmlyc3Q7CisgICAgICByb290LT5maXJzdCA9IGZpbGU7CisgICAgfQorCisgIHJldHVybiAwOwor fQorCit2b2lkCitmaW5kX2ZpbGUgKGNoYXIqIGZpbGVuYW1lLCBjaGFyKiBkaXJlY3RvcnksIHN0 cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9yb290KiByb290LCBpbnQgbWF4X2RlcHRoLCBpbnQgZGVw dGgpCit7CisgIHN0cnVjdCBkaXJlbnQgKmVwOworICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOworICBE SVIgKmRwOworICBpbnQgcmV0X3ZhbD0wOworICBjaGFyKiBmdWxsX3BhdGg7CisKKyAgaWYgKGRl cHRoID4gbWF4X2RlcHRoKQorICAgIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgaWYgKChk cCA9IG9wZW5kaXIgKGRpcmVjdG9yeSkpID09IE5VTEwpCisgICAgeworICAgICAgcmV0dXJuOwor ICAgIH0KKworICBmdWxsX3BhdGggPSBtYWxsb2MgKDEwMjQgKiBzaXplb2YgKGNoYXIpKTsKKyAg aWYgKCFmdWxsX3BhdGgpCisgICAgcmV0dXJuOworCisgIHdoaWxlICgoZXAgPSByZWFkZGlyKGRw KSkgIT0gTlVMTCkKKyAgICB7CisgICAgICBzbnByaW50ZiAoZnVsbF9wYXRoLCAxMDI0LCAiJXMv JXMiLCBkaXJlY3RvcnksIGVwLT5kX25hbWUpOworICAgICAgbHN0YXQgKGZ1bGxfcGF0aCwgJnN0 YXRidWYpOworCisgICAgICBpZiAoU19JU0xOSyAoc3RhdGJ1Zi5zdF9tb2RlKSkKKyAgICAgICAg eworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgIGlmICghc3RyY21wIChl cC0+ZF9uYW1lLCAiLiIpIHx8ICFzdHJjbXAoZXAtPmRfbmFtZSwgIi4uIikpCisgICAgICAgIHsK KyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICBpZiAoIXN0cmNtcCAoZXAt PmRfbmFtZSwgZmlsZW5hbWUpKQorICAgICAgICB7CisgICAgICAgICAgcmV0X3ZhbCA9IGFkZF9m aWxlbmFtZV90b19waWxlIChmdWxsX3BhdGgsIHJvb3QpOworICAgICAgICAgIGlmIChyZXRfdmFs ID09IC0xKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgZmluZF9m aWxlIChmaWxlbmFtZSwgZnVsbF9wYXRoLCByb290LCBtYXhfZGVwdGgsIGRlcHRoKzEpOworICAg IH0KKworICBmcmVlIChmdWxsX3BhdGgpOworICBjbG9zZWRpciAoZHApOworfQorCiBzdGF0aWMg Y2hhciAqCiBvZl9wYXRoX29mX3ZkaXNrKGNvbnN0IGNoYXIgKnN5c19kZXZuYW1lIF9fYXR0cmli dXRlX18oKHVudXNlZCkpLAogCQkgY29uc3QgY2hhciAqZGV2aWNlLApAQCAtMzgyLDcgKzQ2OCwy NDQgQEAgb2ZfZmNfcG9ydF9uYW1lIChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpzdWJw YXRoLCBjaGFyICpwb3J0X25hbWUpCiAgIGZyZWUgKGJhc2VwYXRoKTsKIH0KIAotI2lmZGVmIF9f c3BhcmNfXwordm9pZAorZnJlZV9vZnBhdGhfZmlsZXNfbGlzdCAoc3RydWN0IG9mcGF0aF9maWxl c19saXN0X3Jvb3QqIHJvb3QpCit7CisgIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9ub2RlKiBu b2RlID0gcm9vdC0+Zmlyc3Q7CisgIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9ub2RlKiBuZXh0 OworCisgIHdoaWxlIChub2RlIT1OVUxMKQorICAgIHsKKyAgICAgIG5leHQgPSBub2RlLT5uZXh0 OworICAgICAgZnJlZSAobm9kZS0+ZmlsZW5hbWUpOworICAgICAgZnJlZSAobm9kZSk7CisgICAg ICBub2RlID0gbmV4dDsKKyAgICB9CisKKyAgZnJlZSAocm9vdCk7CisgIHJldHVybjsKK30KKwor Y2hhcioKK29mX2ZpbmRfZmNfaG9zdCAoY2hhciogaG9zdF93d3BuKQoreworICBGSUxFKiBmcDsK KyAgY2hhciAqYnVmOworICBjaGFyICpyZXRfdmFsOworICBjaGFyIHBvcnRuYW1lX2ZpbGVuYW1l W3NpemVvZiAoInBvcnRfbmFtZSIpXSA9ICJwb3J0X25hbWUiOworICBjaGFyIGRldmljZXNfcGF0 aFtzaXplb2YgKCIvc3lzL2RldmljZXMiKV0gPSAiL3N5cy9kZXZpY2VzIjsKKyAgc3RydWN0IG9m cGF0aF9maWxlc19saXN0X3Jvb3QqIHBvcnRuYW1lc19maWxlX2xpc3Q7CisgIHN0cnVjdCBvZnBh dGhfZmlsZXNfbGlzdF9ub2RlKiBub2RlOworCisgIHJldF92YWwgPSBtYWxsb2MgKHNpemVvZiAo Y2hhcikgKiAxMDI0KTsKKyAgaWYgKCFyZXRfdmFsKQorICAgIHJldHVybiBOVUxMOworCisgIHBv cnRuYW1lc19maWxlX2xpc3QgPSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IG9mcGF0aF9maWxlc19s aXN0X3Jvb3QpKTsKKyAgaWYgKCFwb3J0bmFtZXNfZmlsZV9saXN0KQorICAgIHsKKyAgICAgIGZy ZWUgKHJldF92YWwpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgIHBvcnRuYW1lc19m aWxlX2xpc3QtPml0ZW1zID0gMDsKKyAgcG9ydG5hbWVzX2ZpbGVfbGlzdC0+Zmlyc3QgPSBOVUxM OworICBmaW5kX2ZpbGUgKHBvcnRuYW1lX2ZpbGVuYW1lLCBkZXZpY2VzX3BhdGgsIHBvcnRuYW1l c19maWxlX2xpc3QsIDEwLCAwKTsKKyAgbm9kZSA9IHBvcnRuYW1lc19maWxlX2xpc3QtPmZpcnN0 OworCisgIHdoaWxlIChub2RlICE9IE5VTEwpCisgICAgeworICAgICAgZnAgPSBmb3Blbihub2Rl LT5maWxlbmFtZSwgInIiKTsKKyAgICAgIGJ1ZiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyKSAqIDUx Mik7CisgICAgICBpZiAoIWJ1ZikKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGZzY2FuZiAoZnAs ICIlcyIsIGJ1Zik7CisgICAgICBmY2xvc2UgKGZwKTsKKworICAgICAgaWYgKChzdHJjbXAgKGJ1 ZiwgaG9zdF93d3BuKSA9PSAwKSAmJiBncnViX3N0cnN0ciAobm9kZS0+ZmlsZW5hbWUsICJmY19o b3N0IikpCisgICAgICAgIHsKKyAgICAgICAgICBmcmVlIChidWYpOworICAgICAgICAgIGdydWJf c3RyY3B5IChyZXRfdmFsLCBub2RlLT5maWxlbmFtZSk7CisgICAgICAgICAgZnJlZV9vZnBhdGhf ZmlsZXNfbGlzdCAocG9ydG5hbWVzX2ZpbGVfbGlzdCk7CisgICAgICAgICAgcmV0dXJuIHJldF92 YWw7CisgICAgICAgIH0KKworICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7CisgICAgICBmcmVlIChi dWYpOworICAgIH0KKyAgZnJlZV9vZnBhdGhfZmlsZXNfbGlzdCAocG9ydG5hbWVzX2ZpbGVfbGlz dCk7CisgIGZyZWUgKHJldF92YWwpOworICByZXR1cm4gTlVMTDsKK30KKworaW50CitvZl9wYXRo X2dldF9udm1lb2ZfYWRhcHRlcl9pbmZvIChjaGFyKiBzeXNmc19wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9mcGF0aF9udm1lb2ZfaW5mbyogbnZtZW9mX2lu Zm8pCit7CisgIEZJTEUgKmZwOworICBjaGFyICpidWYsICpidWYyLCAqYnVmMzsKKworICBudm1l b2ZfaW5mby0+aG9zdF93d3BuID0gbWFsbG9jIChzaXplb2YgKGNoYXIpICogMjU2KTsKKyAgbnZt ZW9mX2luZm8tPnRhcmdldF93d3BuID0gbWFsbG9jIChzaXplb2YgKGNoYXIpICogMjU2KTsKKyAg bnZtZW9mX2luZm8tPm5xbiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyKSAqIDI1Nik7CisKKyAgaWYg KG52bWVvZl9pbmZvLT5ob3N0X3d3cG4gPT0gTlVMTCB8fCBudm1lb2ZfaW5mby0+dGFyZ2V0X3d3 cG4gPT0gTlVMTCB8fCBudm1lb2ZfaW5mby0+bnFuID09IE5VTEwpCisgICAgeworICAgICAgZnJl ZSAobnZtZW9mX2luZm8tPmhvc3Rfd3dwbik7CisgICAgICBmcmVlIChudm1lb2ZfaW5mby0+dGFy Z2V0X3d3cG4pOworICAgICAgZnJlZSAobnZtZW9mX2luZm8tPm5xbik7CisgICAgICByZXR1cm4g LTE7CisgICAgfQorCisgIGJ1ZiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyKSAqIDUxMik7CisgIGlm ICghYnVmKQorICAgIHsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworICAg ICAgZnJlZSAobnZtZW9mX2luZm8tPnRhcmdldF93d3BuKTsKKyAgICAgIGZyZWUgKG52bWVvZl9p bmZvLT5ucW4pOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICBzbnByaW50ZiAoYnVmLCA1 MTIsICIlcy9zdWJzeXNucW4iLCBzeXNmc19wYXRoKTsKKyAgaWYgKCEgKGZwID0gZm9wZW4gKGJ1 ZiwgInIiKSkgfHwKKyAgICAgIGZzY2FuZiAoZnAsICIlcyIsIG52bWVvZl9pbmZvLT5ucW4pICE9 IDEpCisgICAgeworICAgICAgaWYgKGZwKQorCWZjbG9zZSAoZnApOworICAgICAgZnJlZSAobnZt ZW9mX2luZm8tPmhvc3Rfd3dwbik7CisgICAgICBmcmVlIChudm1lb2ZfaW5mby0+dGFyZ2V0X3d3 cG4pOworICAgICAgZnJlZSAobnZtZW9mX2luZm8tPm5xbik7CisgICAgICBmcmVlIChidWYpOwor ICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgZmNsb3NlIChmcCk7CisKKyAgc25wcmludGYgKGJ1 ZiwgNTEyLCAiJXMvY250bGlkIiwgc3lzZnNfcGF0aCk7CisgIGlmICghIChmcCA9IGZvcGVuIChi dWYsICJyIikpIHx8CisgICAgICBmc2NhbmYgKGZwLCAiJXUiLCAmKG52bWVvZl9pbmZvLT5jbnRs aWQpKSAhPSAxKQorICAgIHsKKyAgICAgIGlmIChmcCkKKwlmY2xvc2UgKGZwKTsKKyAgICAgIGZy ZWUgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworICAgICAgZnJlZSAobnZtZW9mX2luZm8tPnRh cmdldF93d3BuKTsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ucW4pOworICAgICAgZnJlZSAo YnVmKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIGZjbG9zZSAoZnApOworCisgIHNucHJp bnRmIChidWYsIDUxMiwgIiVzL2FkZHJlc3MiLCBzeXNmc19wYXRoKTsKKyAgYnVmMiA9IE5VTEw7 CisgIGZwID0gTlVMTDsKKyAgaWYgKCEgKGJ1ZjIgPSBtYWxsb2MgKHNpemVvZiAoY2hhcikgKiA1 MTIpKSB8fAorICAgICAgISAoZnAgPSBmb3BlbiAoYnVmLCAiciIpKSB8fAorICAgICAgZnNjYW5m IChmcCwgIiVzIiwgYnVmMikgIT0gMSkKKyAgIHsKKyAgICAgIGlmIChmcCkKKwlmY2xvc2UgKGZw KTsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworICAgICAgZnJlZSAobnZt ZW9mX2luZm8tPnRhcmdldF93d3BuKTsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ucW4pOwor ICAgICAgZnJlZSAoYnVmKTsKKyAgICAgIGZyZWUgKGJ1ZjIpOworICAgICAgcmV0dXJuIC0xOwor ICAgIH0KKworICBmY2xvc2UgKGZwKTsKKworICBpZiAoISAoYnVmMyA9IHN0cnJjaHIgKGJ1ZjIs ICctJykpKQorICAgIHsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworICAg ICAgZnJlZSAobnZtZW9mX2luZm8tPnRhcmdldF93d3BuKTsKKyAgICAgZnJlZSAobnZtZW9mX2lu Zm8tPm5xbik7CisgICAgICBmcmVlIChidWYpOworICAgICAgZnJlZSAoYnVmMik7CisgICAgICBy ZXR1cm4gLTE7CisgICAgfQorICBncnViX21lbWNweSAobnZtZW9mX2luZm8tPmhvc3Rfd3dwbiwg YnVmMyArIDEsIDI1Nik7CisgIGlmICghIChidWYzID0gc3RyY2hyIChidWYyLCAnLScpKQl8fAor ICAgICAgISAoYnVmMyA9IHN0cmNociAoYnVmMyArIDEsICctJykpIHx8CisgICAgICAhIChidWYz ID0gc3RyY2hyIChidWYzICsgMSwgJ3gnKSkpCisgICAgeworICAgICAgZnJlZSAobnZtZW9mX2lu Zm8tPmhvc3Rfd3dwbik7CisgICAgICBmcmVlIChudm1lb2ZfaW5mby0+dGFyZ2V0X3d3cG4pOwor ICAgICAgZnJlZSAobnZtZW9mX2luZm8tPm5xbik7CisgICAgICBmcmVlIChidWYpOworICAgICAg ZnJlZSAoYnVmMik7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICBncnViX21lbWNweSAobnZt ZW9mX2luZm8tPnRhcmdldF93d3BuLCBidWYzICsgMSwgMjU2KTsKKyAgYnVmMyA9IHN0cmNociAo bnZtZW9mX2luZm8tPnRhcmdldF93d3BuLCAnLCcpOworICBpZiAoYnVmMykKKyAgICAqYnVmMyA9 ICdcMCc7CisgIGZyZWUgKGJ1Zik7CisgIGZyZWUgKGJ1ZjIpOworICByZXR1cm4gMDsKK30KKwor I2RlZmluZSBPRlBBVEhfTUFYX1VJTlRfSEVYX0RJR0lUUyA4CisjZGVmaW5lIE9GUEFUSF9NQVhf SU5UX0RJR0lUUyAxMAorCitzdGF0aWMgY2hhciAqCitvZl9wYXRoX2dldF9udm1lX2NvbnRyb2xs ZXJfbmFtZV9ub2RlIChjb25zdCBjaGFyKiBkZXZuYW1lKQoreworICBjaGFyICpjb250cm9sbGVy X25vZGUsICplbmQ7CisKKyAgY29udHJvbGxlcl9ub2RlID0geHN0cmR1cCAoZGV2bmFtZSk7Cisg IGVuZCA9IGdydWJfc3RyY2hyIChjb250cm9sbGVyX25vZGUgKyAxLCAnbicpOworICBpZiAoZW5k ICE9IE5VTEwpCisgICAgeworICAgICAgKmVuZCA9ICdcMCc7CisgICAgfQorCisgIHJldHVybiBj b250cm9sbGVyX25vZGU7Cit9CisKK3Vuc2lnbmVkIGludAorb2ZfcGF0aF9nZXRfbnZtZV9uc2lk IChjb25zdCBjaGFyKiBkZXZuYW1lKQoreworICB1bnNpZ25lZCBpbnQgbnNpZDsKKyAgY2hhciAq c3lzZnNfcGF0aCwgKmJ1ZjsKKyAgRklMRSAqZnA7CisKKyAgYnVmID0gbWFsbG9jIChzaXplb2Yo Y2hhcikgKiA1MTIpOworICBpZiAoIWJ1ZikKKyAgICByZXR1cm4gMDsKKworICBzeXNmc19wYXRo ID0gYmxvY2tfZGV2aWNlX2dldF9zeXNmc19wYXRoX2FuZF9saW5rIChkZXZuYW1lKTsKKyAgc25w cmludGYgKGJ1ZiwgNTEyLCAiJXMvJXMvbnNpZCIsIHN5c2ZzX3BhdGgsIGRldm5hbWUpOworICBm cCA9IGZvcGVuKGJ1ZiwgInIiKTsKKyAgZnNjYW5mIChmcCwgIiV1IiwgJihuc2lkKSk7CisgIGZj bG9zZSAoZnApOworCisgIGZyZWUgKHN5c2ZzX3BhdGgpOworICBmcmVlIChidWYpOworICByZXR1 cm4gbnNpZDsKK30KKworc3RhdGljIGNoYXIgKgorbnZtZV9nZXRfc3lzcGF0aCAoY29uc3QgY2hh ciAqbnZtZWRldikKK3sKKyAgY2hhciAqc3lzZnNfcGF0aDsKKworICBzeXNmc19wYXRoID0gYmxv Y2tfZGV2aWNlX2dldF9zeXNmc19wYXRoX2FuZF9saW5rIChudm1lZGV2KTsKKyAgaWYgKHN0cnN0 ciAoc3lzZnNfcGF0aCwgIm52bWUtc3Vic3lzdGVtIikpCisgICAgeworICAgICAgY2hhciAqY29u dHJvbGxlcl9ub2RlID0gb2ZfcGF0aF9nZXRfbnZtZV9jb250cm9sbGVyX25hbWVfbm9kZSAobnZt ZWRldik7CisgICAgICBjaGFyICpidWYgPSB4bWFsbG9jIChzdHJsZW4gKHN5c2ZzX3BhdGgpICsg c3RybGVuICgiLyIpICsgc3RybGVuIChjb250cm9sbGVyX25vZGUpICsgMSk7CisgICAgICBzdHJj cHkgKGJ1Ziwgc3lzZnNfcGF0aCk7CisgICAgICBzdHJjYXQgKGJ1ZiwgIi8iKTsKKyAgICAgIHN0 cmNhdCAoYnVmLCBjb250cm9sbGVyX25vZGUpOworICAgICAgZnJlZSAoc3lzZnNfcGF0aCk7Cisg ICAgICBmcmVlIChjb250cm9sbGVyX25vZGUpOworICAgICAgc3lzZnNfcGF0aCA9IHhyZWFscGF0 aCAoYnVmKTsKKyAgICAgIGZyZWUgKGJ1Zik7CisgICAgfQorCisgIHJldHVybiBzeXNmc19wYXRo OworfQorCiBzdGF0aWMgY2hhciAqCiBvZl9wYXRoX29mX252bWUoY29uc3QgY2hhciAqc3lzX2Rl dm5hbWUgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCiAJICAgICAgICBjb25zdCBjaGFyICpkZXZp Y2UsCkBAIC0zOTEsNiArNzE0LDggQEAgb2ZfcGF0aF9vZl9udm1lKGNvbnN0IGNoYXIgKnN5c19k ZXZuYW1lIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAogewogICBjaGFyICpzeXNmc19wYXRoLCAq b2ZfcGF0aCwgZGlza1tNQVhfRElTS19DQVRdOwogICBjb25zdCBjaGFyICpkaWdpdF9zdHJpbmcs ICpwYXJ0X2VuZDsKKyAgaW50IGNoYXJzX3dyaXR0ZW4sIHJldF92YWw7CisgIHN0cnVjdCBvZnBh dGhfbnZtZW9mX2luZm8qIG52bWVvZl9pbmZvOwogCiAgIGRpZ2l0X3N0cmluZyA9IHRyYWlsaW5n X2RpZ2l0cyAoZGV2aWNlKTsKICAgcGFydF9lbmQgPSBkZXZpY2Vub2RlICsgc3RybGVuIChkZXZp Y2Vub2RlKSAtIDE7CkBAIC00MTAsMTUgKzczNSw5MCBAQCBvZl9wYXRoX29mX252bWUoY29uc3Qg Y2hhciAqc3lzX2Rldm5hbWUgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCiAgICAgICAvKiBSZW1v dmUgdGhlIHAuICovCiAgICAgICAqZW5kID0gJ1wwJzsKICAgICAgIHNzY2FuZiAoZGlnaXRfc3Ry aW5nLCAiJWQiLCAmcGFydCk7Ci0gICAgICBzbnByaW50ZiAoZGlzaywgc2l6ZW9mIChkaXNrKSwg Ii9kaXNrQDE6JWMiLCAnYScgKyAocGFydCAtIDEpKTsKLSAgICAgIHN5c2ZzX3BhdGggPSBibG9j a19kZXZpY2VfZ2V0X3N5c2ZzX3BhdGhfYW5kX2xpbmsgKG52bWVkZXYpOworICAgICAgc3lzZnNf cGF0aCA9IG52bWVfZ2V0X3N5c3BhdGggKG52bWVkZXYpOworCisgICAgICAvKiBJZiBpcyBhIE5W TWVvRiAqLworICAgICAgaWYgKHN0cnN0ciAoc3lzZnNfcGF0aCwgIm52bWUtZmFicmljcyIpKQor ICAgICAgICB7CisgICAgICAgICAgbnZtZW9mX2luZm8gPSBtYWxsb2MgKHNpemVvZiAoc3RydWN0 IG9mcGF0aF9udm1lb2ZfaW5mbykpOworICAgICAgICAgIGlmICghbnZtZW9mX2luZm8pCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgIGZyZWUgKG52bWVkZXYpOworICAgICAgICAgICAgICBy ZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIHJldF92YWwgPSBvZl9wYXRo X2dldF9udm1lb2ZfYWRhcHRlcl9pbmZvIChzeXNmc19wYXRoLCBudm1lb2ZfaW5mbyk7CisgICAg ICAgICAgaWYgKHJldF92YWwgPT0gLTEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGZy ZWUgKG52bWVkZXYpOworICAgICAgICAgICAgICBmcmVlIChudm1lb2ZfaW5mbyk7CisgICAgICAg ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgc3lzZnNfcGF0 aCA9IG9mX2ZpbmRfZmNfaG9zdCAobnZtZW9mX2luZm8tPmhvc3Rfd3dwbik7CisgICAgICAgICAg aWYgKCFzeXNmc19wYXRoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBmcmVlIChudm1l ZGV2KTsKKyAgICAgICAgICAgICAgZnJlZSAobnZtZW9mX2luZm8pOworICAgICAgICAgICAgICBy ZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIGNoYXJzX3dyaXR0ZW4gPSBz bnByaW50ZiAoZGlzayxzaXplb2YoZGlzayksICIvbnZtZS1vZi9jb250cm9sbGVyQCVzLCV4Om5x bj0lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudm1lb2ZfaW5mby0+ dGFyZ2V0X3d3cG4sMHhmZmZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bnZtZW9mX2luZm8tPm5xbik7CisgICAgICAgICAgdW5zaWduZWQgaW50IG5zaWQgPSBvZl9wYXRo X2dldF9udm1lX25zaWQgKG52bWVkZXYpOworICAgICAgICAgIGlmIChuc2lkKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICBzbnByaW50ZiAoZGlzaytjaGFyc193cml0dGVuLCBzaXplb2Yo Ii9uYW1lc3BhY2VAIikgKyBPRlBBVEhfTUFYX1VJTlRfSEVYX0RJR0lUUyArIE9GUEFUSF9NQVhf SU5UX0RJR0lUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICIvbmFtZXNwYWNlQCV4OiVkIiwg bnNpZCwgcGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgZnJlZSAobnZtZW9mX2luZm8p OworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBzbnByaW50ZiAo ZGlzaywgc2l6ZW9mIChkaXNrKSwgIi9kaXNrQDE6JWMiLCAnYScgKyAocGFydCAtIDEpKTsKKyAg ICAgICAgfQogICAgICAgZnJlZSAobnZtZWRldik7CiAgICAgfQogICBlbHNlCiAgICAgewogICAg ICAgLyogV2UgZG8gbm90IGhhdmUgdGhlIHBhcml0aW9uLiAqLwotICAgICAgc25wcmludGYgKGRp c2ssIHNpemVvZiAoZGlzayksICIvZGlza0AxIik7Ci0gICAgICBzeXNmc19wYXRoID0gYmxvY2tf ZGV2aWNlX2dldF9zeXNmc19wYXRoX2FuZF9saW5rIChkZXZpY2UpOworICAgICAgc3lzZnNfcGF0 aCA9IG52bWVfZ2V0X3N5c3BhdGggKGRldmljZSk7CisgICAgICBpZiAoc3Ryc3RyIChzeXNmc19w YXRoLCAibnZtZS1mYWJyaWNzIikpCisgICAgICAgIHsKKyAgICAgICAgICBudm1lb2ZfaW5mbyA9 IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgb2ZwYXRoX252bWVvZl9pbmZvKSk7CisgICAgICAgICAg aWYgKCFudm1lb2ZfaW5mbykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgICAg cmV0X3ZhbCA9IG9mX3BhdGhfZ2V0X252bWVvZl9hZGFwdGVyX2luZm8gKHN5c2ZzX3BhdGgsIG52 bWVvZl9pbmZvKTsKKyAgICAgICAgICBpZiAocmV0X3ZhbCA9PSAtMSkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgZnJlZSAobnZtZW9mX2luZm8pOworICAgICAgICAgICAgICByZXR1cm4g TlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIHN5c2ZzX3BhdGggPSBvZl9maW5kX2Zj X2hvc3QgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworICAgICAgICAgIGlmICghc3lzZnNfcGF0 aCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZnJlZSAobnZtZW9mX2luZm8pOworICAg ICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIGNoYXJz X3dyaXR0ZW4gPSBzbnByaW50ZiAoZGlzayxzaXplb2YoZGlzayksICIvbnZtZS1vZi9jb250cm9s bGVyQCVzLCV4Om5xbj0lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu dm1lb2ZfaW5mby0+dGFyZ2V0X3d3cG4sIDB4ZmZmZiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG52bWVvZl9pbmZvLT5ucW4pOworICAgICAgICAgIHVuc2lnbmVkIGludCBu c2lkID0gb2ZfcGF0aF9nZXRfbnZtZV9uc2lkIChkZXZpY2UpOworICAgICAgICAgIGlmIChuc2lk KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBzbnByaW50ZiAoZGlzaytjaGFyc193cml0 dGVuLHNpemVvZigiL25hbWVzcGFjZUAiKSArIHNpemVvZihjaGFyKSAqIE9GUEFUSF9NQVhfVUlO VF9IRVhfRElHSVRTLAorICAgICAgICAgICAgICAgICAgICAgICAgIi9uYW1lc3BhY2VAJXgiLCBu c2lkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBmcmVlIChudm1lb2ZfaW5mbyk7CisgICAg ICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHNucHJpbnRmIChkaXNrLCBz aXplb2YgKGRpc2spLCAiL2Rpc2tAMSIpOworICAgICAgICB9CiAgICAgfQogCiAgIG9mX3BhdGgg PSBmaW5kX29icHBhdGggKHN5c2ZzX3BhdGgpOwpAQCAtNDI5LDcgKzgyOSw2IEBAIG9mX3BhdGhf b2ZfbnZtZShjb25zdCBjaGFyICpzeXNfZGV2bmFtZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwK ICAgZnJlZSAoc3lzZnNfcGF0aCk7CiAgIHJldHVybiBvZl9wYXRoOwogfQotI2VuZGlmCiAKIHN0 YXRpYyBpbnQKIHZlbmRvcl9pc19BVEEoY29uc3QgY2hhciAqcGF0aCkKQEAgLTc3OSwxMSArMTE3 OCw5IEBAIGdydWJfdXRpbF9kZXZuYW1lX3RvX29mcGF0aCAoY29uc3QgY2hhciAqc3lzX2Rldm5h bWUpCiAgICAgLyogQWxsIHRoZSBtb2RlbHMgSSd2ZSBzZWVuIGhhdmUgYSBkZXZhbGlhcyAiZmxv cHB5Ii4KICAgICAgICBOZXcgbW9kZWxzIGhhdmUgbm8gZmxvcHB5IGF0IGFsbC4gKi8KICAgICBv ZnBhdGggPSB4c3RyZHVwICgiZmxvcHB5Iik7Ci0jaWZkZWYgX19zcGFyY19fCiAgIGVsc2UgaWYg KGRldmljZVswXSA9PSAnbicgJiYgZGV2aWNlWzFdID09ICd2JyAmJiBkZXZpY2VbMl0gPT0gJ20n CiAgICAgICAgICAgICYmIGRldmljZVszXSA9PSAnZScpCiAgICAgb2ZwYXRoID0gb2ZfcGF0aF9v Zl9udm1lIChuYW1lX2J1ZiwgZGV2aWNlLCBkZXZub2RlLCBkZXZpY2Vub2RlKTsKLSNlbmRpZgog ICBlbHNlCiAgICAgewogICAgICAgZ3J1Yl91dGlsX3dhcm4gKF8oInVua25vd24gZGV2aWNlIHR5 cGUgJXMiKSwgZGV2aWNlKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi91dGlsL29mcGF0aC5o IGIvaW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmgKaW5kZXggYjQzYzUyMy4uODUxNzJiYyAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmgKKysrIGIvaW5jbHVkZS9ncnViL3V0 aWwvb2ZwYXRoLmgKQEAgLTMsNCArMywzMiBAQAogCiBjaGFyICpncnViX3V0aWxfZGV2bmFtZV90 b19vZnBhdGggKGNvbnN0IGNoYXIgKmRldm5hbWUpOwogCitzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xp c3Rfbm9kZQoreworICBjaGFyKiBmaWxlbmFtZTsKKyAgc3RydWN0IG9mcGF0aF9maWxlc19saXN0 X25vZGUqIG5leHQ7Cit9OworCitzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfcm9vdAoreworICBp bnQgaXRlbXM7CisgIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9ub2RlKiBmaXJzdDsKK307CisK K3N0cnVjdCBvZnBhdGhfbnZtZW9mX2luZm8KK3sKKyAgY2hhciogaG9zdF93d3BuOworICBjaGFy KiB0YXJnZXRfd3dwbjsKKyAgY2hhciogbnFuOworICBpbnQgY250bGlkOworICBpbnQgbnNpZDsK K307CisKK2ludCBvZl9wYXRoX2dldF9udm1lb2ZfYWRhcHRlcl9pbmZvIChjaGFyKiBzeXNmc19w YXRoLCBzdHJ1Y3Qgb2ZwYXRoX252bWVvZl9pbmZvKiBudm1lb2ZfaW5mbyk7Cit1bnNpZ25lZCBp bnQgb2ZfcGF0aF9nZXRfbnZtZV9uc2lkIChjb25zdCBjaGFyKiBkZXZuYW1lKTsKK2ludCBhZGRf ZmlsZW5hbWVfdG9fcGlsZSAoY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlz dF9yb290KiByb290KTsKK3ZvaWQgZmluZF9maWxlIChjaGFyKiBmaWxlbmFtZSwgY2hhciogZGly ZWN0b3J5LCBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfcm9vdCogcm9vdCwgaW50IG1heF9kZXB0 aCwgaW50IGRlcHRoKTsKK2NoYXIqIG9mX2ZpbmRfZmNfaG9zdCAoY2hhciogaG9zdF93d3BuKTsK K3ZvaWQgZnJlZV9vZnBhdGhfZmlsZXNfbGlzdCAoc3RydWN0IG9mcGF0aF9maWxlc19saXN0X3Jv b3QqIHJvb3QpOworCiAjZW5kaWYgLyogISBHUlVCX09GUEFUSF9NQUNISU5FX1VUSUxfSEVBREVS ICovCi0tIAoyLjM5LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpHcnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcKaHR0cHM6 Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=