[PATCH v7 5/6] ieee1275: ofpath enable NVMeoF logical device translate

Avnish Chouhan <[email protected]> Fri, 20 Feb 2026 18:28:27 +0530
Newsgroups org.gnu.grub-devel
Message-ID <[email protected]>
VGhpcyBwYXRjaCBhZGRzIGNvZGUgdG8gZW5hYmxlIHRoZSB0cmFuc2xhdGlvbiBvZiBsb2dpY2Fs
IGRldmljZXMgdG8gdGhlIG9mIE5WTWVvRkMgcGF0aHMuCgpTaWduZWQtb2ZmLWJ5OiBEaWVnbyBE
b21pbmdvcyA8ZGllZ29kb0Bici5pYm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBBdm5pc2ggQ2hvdWhh
biA8YXZuaXNoQGxpbnV4LmlibS5jb20+ClNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgQ2hhbmcgPG1j
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
ICovCi0tCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpHcnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVs
QGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZl
bAo=