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 DB821C25B75 for ; Thu, 6 Jun 2024 12:41:25 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sFCQC-0001SW-Nd; Thu, 06 Jun 2024 08:40:48 -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 1sFCQ8-0001Ng-9Q for grub-devel@gnu.org; Thu, 06 Jun 2024 08:40:45 -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 1sFCQ4-0002Rk-QT for grub-devel@gnu.org; Thu, 06 Jun 2024 08:40:43 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 456CFYaL019688; Thu, 6 Jun 2024 12:40:38 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=e6wV4ztKuRNUG3mu4qk9pIUFABbbN8quzme6C8oPeoE=; b=YPI/Ih9NR9BReJQLYoV/7rgyz2ZJnbVAtH9PynmDfMFCFhQUNQpJ8iPSpVS8adcq7Jzm +GzwXhDZw8S5LnYMSknNiEdGVKx187Naex+B9gHSaDxHWaS9aYqqTiNfRgJ9/QwHSVGK YSKPbSY59g7fHfG58fM/5ls+SWgV9c/LAz39PURyp0RmCeWaWZixA1hKq0ZeIY/PmEPj KjSvUtx7U6ebb3b+UY1cmgGj2B8nCg6BDG2PKrcUEyUCsYLkB+nf//sepmmxaXojrwDj ByjyFHn6VnDVjOCJ3pk0jXhNtZIuXWYDjIr1YsPVaqjd/G3g/KirkHcCINnLKDS6h9YX Sg== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3ykaq68ep5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 06 Jun 2024 12:40:37 +0000 Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 456AeEfH000790; Thu, 6 Jun 2024 12:40:37 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 3ygdyuashq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 06 Jun 2024 12:40:36 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 456CeJ6h53084578 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 6 Jun 2024 12:40:21 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2F6B420063; Thu, 6 Jun 2024 12:40:19 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 59F7320040; Thu, 6 Jun 2024 12:40:17 +0000 (GMT) Received: from li-5fd77d4c-2a67-11b2-a85c-de894c326bed.ibm.com.com (unknown [9.43.125.5]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 6 Jun 2024 12:40:17 +0000 (GMT) From: Avnish Chouhan To: grub-devel@gnu.org Cc: daniel.kiper@oracle.com, brking@linux.ibm.com, meghanaprakash@in.ibm.com, Avnish Chouhan , Diego Domingos Subject: [PATCH v3 6/6] ieee1275: ofpath enable NVMeoF logical device translate Date: Thu, 6 Jun 2024 18:07:27 +0530 Message-Id: <20240606123727.38614-7-avnish@linux.ibm.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240606123727.38614-1-avnish@linux.ibm.com> References: <20240606123727.38614-1-avnish@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: bR6NyzgZVb7SuQUnHBQ9Jqf1Db28UPnY X-Proofpoint-ORIG-GUID: bR6NyzgZVb7SuQUnHBQ9Jqf1Db28UPnY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-06_01,2024-06-06_02,2024-05-17_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 phishscore=0 suspectscore=0 mlxlogscore=727 priorityscore=1501 adultscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406060092 Received-SPF: pass client-ip=148.163.156.1; envelope-from=avnish@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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 VGhpcyBwYXRjaCBhZGQgY29kZSB0byBlbmFibGUgdGhlIHRyYW5zbGF0aW9uIG9mIGxvZ2ljYWwg ZGV2aWNlcyB0byB0aGUgb2YgTlZNZW9GQyBwYXRocy4KClNpZ25lZC1vZmYtYnk6IERpZWdvIERv bWluZ29zIDxkaWVnb2RvQGJyLmlibS5jb20+ClNpZ25lZC1vZmYtYnk6IEF2bmlzaCBDaG91aGFu IDxhdm5pc2hAbGludXguaWJtLmNvbT4KLS0tCiBncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRo LmMgfCAzNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLQogaW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmggICAgIHwgMjggKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMiBmaWxlIGNoYW5nZWQsIDM5MCBpbnNlcnRpb25zKCspLCA5IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYyBi L2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYwppbmRleCBjYzg0OWQ5Li5hMmI0ZWViIDEw MDY0NAotLS0gYS9ncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMKKysrIGIvZ3J1Yi1jb3Jl L29zZGVwL2xpbnV4L29mcGF0aC5jCkBAIC0xMzcsNyArMTM3LDcgQEAgdHJpbV9uZXdsaW5lIChj aGFyICpwYXRoKQogICAgICplbmQtLSA9ICdcMCc7CiB9CiAKLSNkZWZpbmUgTUFYX0RJU0tfQ0FU ICAgIDY0CisjZGVmaW5lIE1BWF9ESVNLX0NBVCAgICA1MTIKIAogc3RhdGljIGNoYXIgKgogZmlu ZF9vYnBwYXRoIChjb25zdCBjaGFyICpzeXNmc19wYXRoX29yaWcpCkBAIC0zMTMsNiArMzEzLDky IEBAIGdldF9iYXNlbmFtZShjaGFyICpwKQogICByZXR1cm4gcmV0OwogfQogCisKK2ludAorYWRk X2ZpbGVuYW1lX3RvX3BpbGUgKGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xp c3Rfcm9vdCogcm9vdCkKK3sKKyAgc3RydWN0IG9mcGF0aF9maWxlc19saXN0X25vZGUqIGZpbGU7 CisKKyAgZmlsZSA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfbm9k ZSkpOworICBpZiAoIWZpbGUpCisgICAgcmV0dXJuIC0xOworCisgIGZpbGUtPmZpbGVuYW1lID0g bWFsbG9jIChzaXplb2YgKGNoYXIpICogMTAyNCk7CisgIGlmICghZmlsZS0+ZmlsZW5hbWUpCisg ICAgeworICAgICAgZnJlZSAoZmlsZSk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgIGdy dWJfc3RyY3B5IChmaWxlLT5maWxlbmFtZSwgZmlsZW5hbWUpOworICBpZiAocm9vdC0+Zmlyc3Qg PT0gTlVMTCkKKyAgICB7CisgICAgICByb290LT5pdGVtcyA9IDE7CisgICAgICByb290LT5maXJz dCA9IGZpbGU7CisgICAgICBmaWxlLT5uZXh0ID0gTlVMTDsKKyAgICB9CisgIGVsc2UKKyAgICB7 CisgICAgICByb290LT5pdGVtcysrOworICAgICAgZmlsZS0+bmV4dCA9IHJvb3QtPmZpcnN0Owor ICAgICAgcm9vdC0+Zmlyc3QgPSBmaWxlOworICAgIH0KKworICByZXR1cm4gMDsKK30KKwordm9p ZAorZmluZF9maWxlIChjaGFyKiBmaWxlbmFtZSwgY2hhciogZGlyZWN0b3J5LCBzdHJ1Y3Qgb2Zw YXRoX2ZpbGVzX2xpc3Rfcm9vdCogcm9vdCwgaW50IG1heF9kZXB0aCwgaW50IGRlcHRoKQorewor ICBzdHJ1Y3QgZGlyZW50ICplcDsKKyAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKKyAgRElSICpkcDsK KyAgaW50IHJldF92YWw9MDsKKyAgY2hhciogZnVsbF9wYXRoOworCisgIGlmIChkZXB0aCA+IG1h eF9kZXB0aCkKKyAgICB7CisgICAgICByZXR1cm47CisgICAgfQorCisgIGlmICgoZHAgPSBvcGVu ZGlyIChkaXJlY3RvcnkpKSA9PSBOVUxMKQorICAgIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisK KyAgZnVsbF9wYXRoID0gbWFsbG9jICgxMDI0ICogc2l6ZW9mIChjaGFyKSk7CisgIGlmICghZnVs bF9wYXRoKQorICAgIHJldHVybjsKKworICB3aGlsZSAoKGVwID0gcmVhZGRpcihkcCkpICE9IE5V TEwpCisgICAgeworICAgICAgc25wcmludGYgKGZ1bGxfcGF0aCwgMTAyNCwgIiVzLyVzIiwgZGly ZWN0b3J5LCBlcC0+ZF9uYW1lKTsKKyAgICAgIGxzdGF0IChmdWxsX3BhdGgsICZzdGF0YnVmKTsK KworICAgICAgaWYgKFNfSVNMTksgKHN0YXRidWYuc3RfbW9kZSkpCisgICAgICAgIHsKKyAgICAg ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICBpZiAoIXN0cmNtcCAoZXAtPmRfbmFt ZSwgIi4iKSB8fCAhc3RyY21wKGVwLT5kX25hbWUsICIuLiIpKQorICAgICAgICB7CisgICAgICAg ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgaWYgKCFzdHJjbXAgKGVwLT5kX25hbWUs IGZpbGVuYW1lKSkKKyAgICAgICAgeworICAgICAgICAgIHJldF92YWwgPSBhZGRfZmlsZW5hbWVf dG9fcGlsZSAoZnVsbF9wYXRoLCByb290KTsKKyAgICAgICAgICBpZiAocmV0X3ZhbCA9PSAtMSkK KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgIGZpbmRfZmlsZSAoZmls ZW5hbWUsIGZ1bGxfcGF0aCwgcm9vdCwgbWF4X2RlcHRoLCBkZXB0aCsxKTsKKyAgICB9CisKKyAg ZnJlZSAoZnVsbF9wYXRoKTsKKyAgY2xvc2VkaXIgKGRwKTsKK30KKwogc3RhdGljIGNoYXIgKgog b2ZfcGF0aF9vZl92ZGlzayhjb25zdCBjaGFyICpzeXNfZGV2bmFtZSBfX2F0dHJpYnV0ZV9fKCh1 bnVzZWQpKSwKIAkJIGNvbnN0IGNoYXIgKmRldmljZSwKQEAgLTM4Myw3ICs0NjksMjAwIEBAIG9m X2ZjX3BvcnRfbmFtZSAoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqc3VicGF0aCwgY2hh ciAqcG9ydF9uYW1lKQogICBmcmVlIChiYXNlcGF0aCk7CiB9CiAKLSNpZmRlZiBfX3NwYXJjX18K K3ZvaWQKK2ZyZWVfb2ZwYXRoX2ZpbGVzX2xpc3QgKHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9y b290KiByb290KQoreworICBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfbm9kZSogbm9kZSA9IHJv b3QtPmZpcnN0OworICBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfbm9kZSogbmV4dDsKKworICB3 aGlsZSAobm9kZSE9TlVMTCkKKyAgICB7CisgICAgICBuZXh0ID0gbm9kZS0+bmV4dDsKKyAgICAg IGZyZWUgKG5vZGUtPmZpbGVuYW1lKTsKKyAgICAgIGZyZWUgKG5vZGUpOworICAgICAgbm9kZSA9 IG5leHQ7CisgICAgfQorCisgIGZyZWUgKHJvb3QpOworICByZXR1cm47Cit9CisKK2NoYXIqCitv Zl9maW5kX2ZjX2hvc3QgKGNoYXIqIGhvc3Rfd3dwbikKK3sKKyAgRklMRSogZnA7CisgIGNoYXIg KmJ1ZjsKKyAgY2hhciAqcmV0X3ZhbDsKKyAgY2hhciBwb3J0bmFtZV9maWxlbmFtZVtzaXplb2Yg KCJwb3J0X25hbWUiKV0gPSAicG9ydF9uYW1lIjsKKyAgY2hhciBkZXZpY2VzX3BhdGhbc2l6ZW9m ICgiL3N5cy9kZXZpY2VzIildID0gIi9zeXMvZGV2aWNlcyI7CisgIHN0cnVjdCBvZnBhdGhfZmls ZXNfbGlzdF9yb290KiBwb3J0bmFtZXNfZmlsZV9saXN0OworICBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVz X2xpc3Rfbm9kZSogbm9kZTsKKworICByZXRfdmFsID0gbWFsbG9jIChzaXplb2YgKGNoYXIpICog MTAyNCk7CisgIGlmICghcmV0X3ZhbCkKKyAgICByZXR1cm4gTlVMTDsKKworICBwb3J0bmFtZXNf ZmlsZV9saXN0ID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9yb290 KSk7CisgIGlmICghcG9ydG5hbWVzX2ZpbGVfbGlzdCkKKyAgICB7CisgICAgICBmcmVlIChyZXRf dmFsKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICBwb3J0bmFtZXNfZmlsZV9saXN0 LT5pdGVtcyA9IDA7CisgIHBvcnRuYW1lc19maWxlX2xpc3QtPmZpcnN0ID0gTlVMTDsKKyAgZmlu ZF9maWxlIChwb3J0bmFtZV9maWxlbmFtZSwgZGV2aWNlc19wYXRoLCBwb3J0bmFtZXNfZmlsZV9s aXN0LCAxMCwgMCk7CisgIG5vZGUgPSBwb3J0bmFtZXNfZmlsZV9saXN0LT5maXJzdDsKKworICB3 aGlsZSAobm9kZSAhPSBOVUxMKQorICAgIHsKKyAgICAgIGZwID0gZm9wZW4obm9kZS0+ZmlsZW5h bWUsICJyIik7CisgICAgICBidWYgPSBtYWxsb2MgKHNpemVvZiAoY2hhcikgKiA1MTIpOworICAg ICAgaWYgKCFidWYpCisgICAgICAgIGJyZWFrOworCisgICAgICBmc2NhbmYgKGZwLCAiJXMiLCBi dWYpOworICAgICAgZmNsb3NlIChmcCk7CisKKyAgICAgIGlmICgoc3RyY21wIChidWYsIGhvc3Rf d3dwbikgPT0gMCkgJiYgZ3J1Yl9zdHJzdHIgKG5vZGUtPmZpbGVuYW1lLCAiZmNfaG9zdCIpKQor ICAgICAgICB7CisgICAgICAgICAgZnJlZSAoYnVmKTsKKyAgICAgICAgICBncnViX3N0cmNweSAo cmV0X3ZhbCwgbm9kZS0+ZmlsZW5hbWUpOworICAgICAgICAgIGZyZWVfb2ZwYXRoX2ZpbGVzX2xp c3QgKHBvcnRuYW1lc19maWxlX2xpc3QpOworCSAgcmV0dXJuIHJldF92YWw7CisgICAgICAgIH0K KworICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7CisgICAgICBmcmVlKGJ1Zik7CisgICAgfQorICBm cmVlX29mcGF0aF9maWxlc19saXN0IChwb3J0bmFtZXNfZmlsZV9saXN0KTsKKyAgZnJlZSAocmV0 X3ZhbCk7CisgIHJldHVybiBOVUxMOworfQorCitpbnQKK29mX3BhdGhfZ2V0X252bWVvZl9hZGFw dGVyX2luZm8gKGNoYXIqIHN5c2ZzX3BhdGgsCisJCSAgICAgICAgICAgICAgICAgIHN0cnVjdCBv ZnBhdGhfbnZtZW9mX2luZm8qIG52bWVvZl9pbmZvKQoreworICBGSUxFICpmcDsKKyAgY2hhciAq YnVmLCAqYnVmMiwgKmJ1ZjM7CisKKyAgbnZtZW9mX2luZm8tPmhvc3Rfd3dwbiA9IG1hbGxvYyAo c2l6ZW9mIChjaGFyKSAqIDI1Nik7CisgIG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbiA9IG1hbGxv YyAoc2l6ZW9mIChjaGFyKSAqIDI1Nik7CisgIG52bWVvZl9pbmZvLT5ucW4gPSBtYWxsb2MgKHNp emVvZiAoY2hhcikgKiAyNTYpOworCisgIGlmIChudm1lb2ZfaW5mby0+aG9zdF93d3BuID09IE5V TEwgfHwgbnZtZW9mX2luZm8tPnRhcmdldF93d3BuID09IE5VTEwgfHwgbnZtZW9mX2luZm8tPm5x biA9PSBOVUxMKQorICAgIHsKKyAgICAgIGZyZWUobnZtZW9mX2luZm8tPmhvc3Rfd3dwbik7Cisg ICAgICBmcmVlKG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbik7CisgICAgICBmcmVlKG52bWVvZl9p bmZvLT5ucW4pOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICBidWYgPSBtYWxsb2MgKHNp emVvZiAoY2hhcikgKiA1MTIpOworICBpZiAoIWJ1ZikKKyAgICB7CisgICAgICBmcmVlIChudm1l b2ZfaW5mby0+aG9zdF93d3BuKTsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT50YXJnZXRfd3dw bik7CisgICAgICBmcmVlIChudm1lb2ZfaW5mby0+bnFuKTsKKyAgICAgIHJldHVybiAtMTsKKyAg ICB9CisKKyAgc25wcmludGYgKGJ1ZiwgNTEyLCAiJXMvc3Vic3lzbnFuIiwgc3lzZnNfcGF0aCk7 CisgIGZwID0gZm9wZW4gKGJ1ZiwgInIiKTsKKyAgZnNjYW5mIChmcCwgIiVzIiwgbnZtZW9mX2lu Zm8tPm5xbik7CisgIGZjbG9zZSAoZnApOworCisgIHNucHJpbnRmIChidWYsIDUxMiwgIiVzL2Nu dGxpZCIsIHN5c2ZzX3BhdGgpOworICBmcCA9IGZvcGVuIChidWYsICJyIik7CisgIGZzY2FuZiAo ZnAsICIldSIsICYobnZtZW9mX2luZm8tPmNudGxpZCkpOworICBmY2xvc2UgKGZwKTsKKworICBz bnByaW50ZiAoYnVmLCA1MTIsICIlcy9hZGRyZXNzIiwgc3lzZnNfcGF0aCk7CisgIGZwID0gZm9w ZW4gKGJ1ZiwgInIiKTsKKyAgYnVmMiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyKSAqIDUxMik7CisK KyAgaWYgKCFidWYyKQorICAgIHsKKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4p OworICAgICAgZnJlZSAobnZtZW9mX2luZm8tPnRhcmdldF93d3BuKTsKKyAgICAgIGZyZWUgKG52 bWVvZl9pbmZvLT5ucW4pOworICAgICAgZnJlZSAoYnVmKTsKKyAgICAgIHJldHVybiAtMTsKKyAg ICB9CisKKyAgZnNjYW5mIChmcCwgIiVzIiwgYnVmMik7CisgIGZjbG9zZSAoZnApOworCisgIGJ1 ZjMgPSBzdHJyY2hyIChidWYyLCAnLScpICsgMTsKKyAgZ3J1Yl9tZW1jcHkgKG52bWVvZl9pbmZv LT5ob3N0X3d3cG4sIGJ1ZjMsIDI1Nik7CisgIGJ1ZjM9c3RyY2hyIChidWYyLCAnLScpICsgMTsK KyAgYnVmMz1zdHJjaHIgKGJ1ZjMsICctJykgKyAxOworICBidWYzPXN0cmNociAoYnVmMywgJ3gn KSArIDE7CisgIGdydWJfbWVtY3B5IChudm1lb2ZfaW5mby0+dGFyZ2V0X3d3cG4sIGJ1ZjMsIDI1 Nik7CisgIGJ1ZjMgPSBzdHJjaHIgKG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbiwgJywnKTsKKyAg KmJ1ZjMgPSAnXDAnOworICBmcmVlIChidWYpOworICBmcmVlIChidWYyKTsKKyAgcmV0dXJuIDA7 Cit9CisKKyNkZWZpbmUgTUFYX05WTUVfTlNJRF9ESUdJVFMgNgorCitzdGF0aWMgY2hhciAqCitv Zl9wYXRoX2dldF9udm1lX2NvbnRyb2xsZXJfbmFtZV9ub2RlIChjb25zdCBjaGFyKiBkZXZuYW1l KQoreworICBjaGFyICpjb250cm9sbGVyX25vZGUsICplbmQ7CisKKyAgY29udHJvbGxlcl9ub2Rl ID0gc3RyZHVwIChkZXZuYW1lKTsKKyAgZW5kID0gZ3J1Yl9zdHJjaHIgKGNvbnRyb2xsZXJfbm9k ZSArIDEsICduJyk7CisgIGlmIChlbmQgIT0gTlVMTCkKKyAgICB7CisgICAgICAqZW5kID0gJ1ww JzsKKyAgICB9CisKKyAgcmV0dXJuIGNvbnRyb2xsZXJfbm9kZTsKK30KKwordW5zaWduZWQgaW50 CitvZl9wYXRoX2dldF9udm1lX25zaWQgKGNvbnN0IGNoYXIqIGRldm5hbWUpCit7CisgIHVuc2ln bmVkIGludCBuc2lkOworICBjaGFyICpzeXNmc19wYXRoLCAqYnVmOworICBGSUxFICpmcDsKKwor ICBidWYgPSBtYWxsb2MgKHNpemVvZihjaGFyKSAqIDUxMik7CisgIGlmICghYnVmKQorICAgIHJl dHVybiAwOworCisgIHN5c2ZzX3BhdGggPSBibG9ja19kZXZpY2VfZ2V0X3N5c2ZzX3BhdGhfYW5k X2xpbmsgKGRldm5hbWUpOworICBzbnByaW50ZiAoYnVmLCA1MTIsICIlcy8lcy9uc2lkIiwgc3lz ZnNfcGF0aCwgZGV2bmFtZSk7CisgIGZwID0gZm9wZW4oYnVmLCAiciIpOworICBmc2NhbmYgKGZw LCAiJXUiLCAmKG5zaWQpKTsKKyAgZmNsb3NlIChmcCk7CisKKyAgZnJlZShzeXNmc19wYXRoKTsK KyAgZnJlZShidWYpOworICByZXR1cm4gbnNpZDsKK30KKworc3RhdGljIGNoYXIgKgorbnZtZV9n ZXRfc3lzcGF0aCAoY29uc3QgY2hhciAqbnZtZWRldikKK3sKKyAgY2hhciAqc3lzZnNfcGF0aCwg KmNvbnRyb2xsZXJfbm9kZTsKKworICBzeXNmc19wYXRoID0gYmxvY2tfZGV2aWNlX2dldF9zeXNm c19wYXRoX2FuZF9saW5rIChudm1lZGV2KTsKKyAgaWYgKHN0cnN0ciAoc3lzZnNfcGF0aCwgIm52 bWUtc3Vic3lzdGVtIikpCisgICAgeworICAgICAgY29udHJvbGxlcl9ub2RlID0gb2ZfcGF0aF9n ZXRfbnZtZV9jb250cm9sbGVyX25hbWVfbm9kZSAobnZtZWRldik7CisgICAgICBzdHJjYXQgKHN5 c2ZzX3BhdGgsICIvIik7CisgICAgICBzdHJjYXQgKHN5c2ZzX3BhdGgsIGNvbnRyb2xsZXJfbm9k ZSk7CisgICAgICBzeXNmc19wYXRoID0geHJlYWxwYXRoIChzeXNmc19wYXRoKTsKKyAgICB9CisK KyAgcmV0dXJuIHN5c2ZzX3BhdGg7Cit9CisKIHN0YXRpYyBjaGFyICoKIG9mX3BhdGhfb2ZfbnZt ZShjb25zdCBjaGFyICpzeXNfZGV2bmFtZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKIAkgICAg ICAgIGNvbnN0IGNoYXIgKmRldmljZSwKQEAgLTM5Miw2ICs2NzEsOCBAQCBvZl9wYXRoX29mX252 bWUoY29uc3QgY2hhciAqc3lzX2Rldm5hbWUgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCiB7CiAg IGNoYXIgKnN5c2ZzX3BhdGgsICpvZl9wYXRoLCBkaXNrW01BWF9ESVNLX0NBVF07CiAgIGNvbnN0 IGNoYXIgKmRpZ2l0X3N0cmluZywgKnBhcnRfZW5kOworICBpbnQgY2hhcnNfd3JpdHRlbiwgcmV0 X3ZhbDsKKyAgc3RydWN0IG9mcGF0aF9udm1lb2ZfaW5mbyogbnZtZW9mX2luZm87CiAKICAgZGln aXRfc3RyaW5nID0gdHJhaWxpbmdfZGlnaXRzIChkZXZpY2UpOwogICBwYXJ0X2VuZCA9IGRldmlj ZW5vZGUgKyBzdHJsZW4gKGRldmljZW5vZGUpIC0gMTsKQEAgLTQxMSwxNSArNjkyLDkwIEBAIG9m X3BhdGhfb2ZfbnZtZShjb25zdCBjaGFyICpzeXNfZGV2bmFtZSBfX2F0dHJpYnV0ZV9fKCh1bnVz ZWQpKSwKICAgICAgIC8qIFJlbW92ZSB0aGUgcC4gKi8KICAgICAgICplbmQgPSAnXDAnOwogICAg ICAgc3NjYW5mIChkaWdpdF9zdHJpbmcsICIlZCIsICZwYXJ0KTsKLSAgICAgIHNucHJpbnRmIChk aXNrLCBzaXplb2YgKGRpc2spLCAiL2Rpc2tAMTolYyIsICdhJyArIChwYXJ0IC0gMSkpOwotICAg ICAgc3lzZnNfcGF0aCA9IGJsb2NrX2RldmljZV9nZXRfc3lzZnNfcGF0aF9hbmRfbGluayAobnZt ZWRldik7CisgICAgICBzeXNmc19wYXRoID0gbnZtZV9nZXRfc3lzcGF0aCAobnZtZWRldik7CisK KyAgICAgIC8qIElmIGlzIGEgTlZNZW9GICovCisgICAgICBpZiAoc3Ryc3RyIChzeXNmc19wYXRo LCAibnZtZS1mYWJyaWNzIikpCisgICAgICAgIHsKKyAgICAgICAgICBudm1lb2ZfaW5mbyA9IG1h bGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgb2ZwYXRoX252bWVvZl9pbmZvKSk7CisgICAgICAgICAgaWYg KCFudm1lb2ZfaW5mbykKKyAgICAgICAgICAgIHsKKwkgICAgICAgZnJlZSAobnZtZWRldik7Cisg ICAgICAgICAgICAgIHJldHVybiBOVUxMOworCSAgICAgfQorCisgICAgICAgICAgcmV0X3ZhbCA9 IG9mX3BhdGhfZ2V0X252bWVvZl9hZGFwdGVyX2luZm8gKHN5c2ZzX3BhdGgsIG52bWVvZl9pbmZv KTsKKyAgICAgICAgICBpZiAocmV0X3ZhbCA9PSAtMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgZnJlZSAobnZtZWRldik7CisgICAgICAgICAgICAgIGZyZWUgKG52bWVvZl9pbmZvKTsK KyAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBz eXNmc19wYXRoID0gb2ZfZmluZF9mY19ob3N0IChudm1lb2ZfaW5mby0+aG9zdF93d3BuKTsKKyAg ICAgICAgICBpZiAoIXN5c2ZzX3BhdGgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGZy ZWUgKG52bWVkZXYpOworICAgICAgICAgICAgICBmcmVlIChudm1lb2ZfaW5mbyk7CisgICAgICAg ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgY2hhcnNfd3Jp dHRlbiA9IHNucHJpbnRmIChkaXNrLHNpemVvZihkaXNrKSwgIi9udm1lLW9mL2NvbnRyb2xsZXJA JXMsJXg6bnFuPSVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG52bWVv Zl9pbmZvLT50YXJnZXRfd3dwbiwweGZmZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBudm1lb2ZfaW5mby0+bnFuKTsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgbnNpZCA9 IG9mX3BhdGhfZ2V0X252bWVfbnNpZCAobnZtZWRldik7CisgICAgICAgICAgaWYgKG5zaWQpCisJ ICAgIHsKKyAgICAgICAgICAgICAgc25wcmludGYgKGRpc2srY2hhcnNfd3JpdHRlbiwgc2l6ZW9m KCIvbmFtZXNwYWNlQCIpICsgTUFYX05WTUVfTlNJRF9ESUdJVFMsCisJCQkgIi9uYW1lc3BhY2VA JXg6JWQiLCBuc2lkLCBwYXJ0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBmcmVlIChudm1l b2ZfaW5mbyk7CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHNu cHJpbnRmIChkaXNrLCBzaXplb2YgKGRpc2spLCAiL2Rpc2tAMTolYyIsICdhJyArIChwYXJ0IC0g MSkpOworICAgICAgICB9CiAgICAgICBmcmVlIChudm1lZGV2KTsKICAgICB9CiAgIGVsc2UKICAg ICB7CiAgICAgICAvKiBXZSBkbyBub3QgaGF2ZSB0aGUgcGFyaXRpb24uICovCi0gICAgICBzbnBy aW50ZiAoZGlzaywgc2l6ZW9mIChkaXNrKSwgIi9kaXNrQDEiKTsKLSAgICAgIHN5c2ZzX3BhdGgg PSBibG9ja19kZXZpY2VfZ2V0X3N5c2ZzX3BhdGhfYW5kX2xpbmsgKGRldmljZSk7CisgICAgICBz eXNmc19wYXRoID0gbnZtZV9nZXRfc3lzcGF0aCAoZGV2aWNlKTsKKyAgICAgIGlmKHN0cnN0ciAo c3lzZnNfcGF0aCwgIm52bWUtZmFicmljcyIpKQorICAgICAgICB7CisgICAgICAgICAgbnZtZW9m X2luZm8gPSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IG9mcGF0aF9udm1lb2ZfaW5mbykpOworICAg ICAgICAgIGlmICghbnZtZW9mX2luZm8pCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAg ICAgICAgIHJldF92YWwgPSBvZl9wYXRoX2dldF9udm1lb2ZfYWRhcHRlcl9pbmZvIChzeXNmc19w YXRoLCBudm1lb2ZfaW5mbyk7CisgICAgICAgICAgaWYgKHJldF92YWwgPT0gLTEpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIGZyZWUgKG52bWVvZl9pbmZvKTsKKyAgICAgICAgICAgICAg cmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBzeXNmc19wYXRoID0gb2Zf ZmluZF9mY19ob3N0IChudm1lb2ZfaW5mby0+aG9zdF93d3BuKTsKKyAgICAgICAgICBpZiAoIXN5 c2ZzX3BhdGgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGZyZWUgKG52bWVvZl9pbmZv KTsKKyAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAg ICBjaGFyc193cml0dGVuID0gc25wcmludGYgKGRpc2ssc2l6ZW9mKGRpc2spLCAiL252bWUtb2Yv Y29udHJvbGxlckAlcywleDpucW49JXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbnZtZW9mX2luZm8tPnRhcmdldF93d3BuLCAweGZmZmYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBudm1lb2ZfaW5mby0+bnFuKTsKKwkgIHVuc2lnbmVkIGludCBu c2lkID0gb2ZfcGF0aF9nZXRfbnZtZV9uc2lkIChkZXZpY2UpOworICAgICAgICAgIGlmIChuc2lk KQorCSAgICB7CisgICAgICAgICAgICAgIHNucHJpbnRmIChkaXNrK2NoYXJzX3dyaXR0ZW4sc2l6 ZW9mKCIvbmFtZXNwYWNlQCIpICsgc2l6ZW9mKGNoYXIpICogTUFYX05WTUVfTlNJRF9ESUdJVFMs CisJCQkgIi9uYW1lc3BhY2VAJXgiLCBuc2lkKTsKKwkgICAgfQorICAgICAgICAgIGZyZWUgKG52 bWVvZl9pbmZvKTsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg c25wcmludGYgKGRpc2ssIHNpemVvZiAoZGlzayksICIvZGlza0AxIik7CisgICAgICAgIH0KICAg ICB9CiAKICAgb2ZfcGF0aCA9IGZpbmRfb2JwcGF0aCAoc3lzZnNfcGF0aCk7CkBAIC00MzAsNyAr Nzg2LDYgQEAgb2ZfcGF0aF9vZl9udm1lKGNvbnN0IGNoYXIgKnN5c19kZXZuYW1lIF9fYXR0cmli dXRlX18oKHVudXNlZCkpLAogICBmcmVlIChzeXNmc19wYXRoKTsKICAgcmV0dXJuIG9mX3BhdGg7 CiB9Ci0jZW5kaWYKIAogc3RhdGljIGludAogdmVuZG9yX2lzX0FUQShjb25zdCBjaGFyICpwYXRo KQpAQCAtODQxLDExICsxMTk2LDkgQEAgZ3J1Yl91dGlsX2Rldm5hbWVfdG9fb2ZwYXRoIChjb25z dCBjaGFyICpzeXNfZGV2bmFtZSkKICAgICAvKiBBbGwgdGhlIG1vZGVscyBJJ3ZlIHNlZW4gaGF2 ZSBhIGRldmFsaWFzICJmbG9wcHkiLgogICAgICAgIE5ldyBtb2RlbHMgaGF2ZSBubyBmbG9wcHkg YXQgYWxsLiAqLwogICAgIG9mcGF0aCA9IHhzdHJkdXAgKCJmbG9wcHkiKTsKLSNpZmRlZiBfX3Nw YXJjX18KICAgZWxzZSBpZiAoZGV2aWNlWzBdID09ICduJyAmJiBkZXZpY2VbMV0gPT0gJ3YnICYm IGRldmljZVsyXSA9PSAnbScKICAgICAgICAgICAgJiYgZGV2aWNlWzNdID09ICdlJykKICAgICBv ZnBhdGggPSBvZl9wYXRoX29mX252bWUgKG5hbWVfYnVmLCBkZXZpY2UsIGRldm5vZGUsIGRldmlj ZW5vZGUpOwotI2VuZGlmCiAgIGVsc2UKICAgICB7CiAgICAgICBncnViX3V0aWxfd2FybiAoXygi dW5rbm93biBkZXZpY2UgdHlwZSAlcyIpLCBkZXZpY2UpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9n cnViL3V0aWwvb2ZwYXRoLmggYi9pbmNsdWRlL2dydWIvdXRpbC9vZnBhdGguaAppbmRleCBiNDNj NTIzLi44NTE3MmJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvdXRpbC9vZnBhdGguaAorKysg Yi9pbmNsdWRlL2dydWIvdXRpbC9vZnBhdGguaApAQCAtMyw0ICszLDMyIEBACiAKIGNoYXIgKmdy dWJfdXRpbF9kZXZuYW1lX3RvX29mcGF0aCAoY29uc3QgY2hhciAqZGV2bmFtZSk7CiAKK3N0cnVj dCBvZnBhdGhfZmlsZXNfbGlzdF9ub2RlCit7CisgIGNoYXIqIGZpbGVuYW1lOworICBzdHJ1Y3Qg b2ZwYXRoX2ZpbGVzX2xpc3Rfbm9kZSogbmV4dDsKK307CisKK3N0cnVjdCBvZnBhdGhfZmlsZXNf bGlzdF9yb290Cit7CisgIGludCBpdGVtczsKKyAgc3RydWN0IG9mcGF0aF9maWxlc19saXN0X25v ZGUqIGZpcnN0OworfTsKKworc3RydWN0IG9mcGF0aF9udm1lb2ZfaW5mbworeworICBjaGFyKiBo b3N0X3d3cG47CisgIGNoYXIqIHRhcmdldF93d3BuOworICBjaGFyKiBucW47CisgIGludCBjbnRs aWQ7CisgIGludCBuc2lkOworfTsKKworaW50IG9mX3BhdGhfZ2V0X252bWVvZl9hZGFwdGVyX2lu Zm8gKGNoYXIqIHN5c2ZzX3BhdGgsIHN0cnVjdCBvZnBhdGhfbnZtZW9mX2luZm8qIG52bWVvZl9p bmZvKTsKK3Vuc2lnbmVkIGludCBvZl9wYXRoX2dldF9udm1lX25zaWQgKGNvbnN0IGNoYXIqIGRl dm5hbWUpOworaW50IGFkZF9maWxlbmFtZV90b19waWxlIChjaGFyICpmaWxlbmFtZSwgc3RydWN0 IG9mcGF0aF9maWxlc19saXN0X3Jvb3QqIHJvb3QpOwordm9pZCBmaW5kX2ZpbGUgKGNoYXIqIGZp bGVuYW1lLCBjaGFyKiBkaXJlY3RvcnksIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9yb290KiBy b290LCBpbnQgbWF4X2RlcHRoLCBpbnQgZGVwdGgpOworY2hhciogb2ZfZmluZF9mY19ob3N0IChj aGFyKiBob3N0X3d3cG4pOwordm9pZCBmcmVlX29mcGF0aF9maWxlc19saXN0IChzdHJ1Y3Qgb2Zw YXRoX2ZpbGVzX2xpc3Rfcm9vdCogcm9vdCk7CisKICNlbmRpZiAvKiAhIEdSVUJfT0ZQQVRIX01B Q0hJTkVfVVRJTF9IRUFERVIgKi8KLS0gCjIuMzEuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2 ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnViLWRl dmVsCg==