[PATCH v7 6/6] ieee1275: support added for multiple nvme bootpaths

Avnish Chouhan <[email protected]> Fri, 20 Feb 2026 18:28:28 +0530
Newsgroups org.gnu.grub-devel
Message-ID <[email protected]>
VGhpcyBwYXRjaCBzZXRzIG11cGx0aXBsZSBOVk1lIGJvb3QtZGV2aWNlcyBmb3IgbW9yZSByb2J1
c3QgYm9vdC4KU2NlbmFyaW8gd2hlcmUgTlZNZSBtdWx0aXBhdGhzIGFyZSBhdmFpbGFibGUsIGFs
bCB0aGUgYXZhaWxhYmxlIGJvb3RwYXRocyAoTWF4IDUpCndpbGwgYmUgYWRkZWQgYXMgdGhlIGJv
b3QtZGV2aWNlLgoKU2lnbmVkLW9mZi1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51eC5p
Ym0uY29tPgotLS0KIGdydWItY29yZS9vc2RlcC91bml4L3BsYXRmb3JtLmMgfCAxMTggKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGdydWItY29y
ZS9vc2RlcC9saW51eC9vZnBhdGguYyAgfCAgIDQgKystLQogaW5jbHVkZS9ncnViL3V0aWwvaW5z
dGFsbC5oICAgICB8ICAgMyArKysKIGluY2x1ZGUvZ3J1Yi91dGlsL29mcGF0aC5oICAgICAgfCAg
IDQgKysrKwogNCBmaWxlIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9uKC0p
CgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL29zZGVwL3VuaXgvcGxhdGZvcm0uYyBiL2dydWItY29y
ZS9vc2RlcC91bml4L3BsYXRmb3JtLmMKaW5kZXggZGU3MTIyMS4uNDYzMmY0MSAxMDA2NDQKLS0t
IGEvZ3J1Yi1jb3JlL29zZGVwL3VuaXgvcGxhdGZvcm0uYworKysgYi9ncnViLWNvcmUvb3NkZXAv
dW5peC9wbGF0Zm9ybS5jCkBAIC0yOCw2ICsyOCwxMCBAQAogI2luY2x1ZGUgPGRpcmVudC5oPgog
I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8Z3J1Yi91
dGlsL29mcGF0aC5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKworI2RlZmluZSBCT09UREVWX0JV
RkZFUiAgMTAwMAogCiBzdGF0aWMgY2hhciAqCiBnZXRfb2ZwYXRobmFtZSAoY29uc3QgY2hhciAq
ZGV2KQpAQCAtMTc2LDYgKzE4MCwxMDcgQEAgZ3J1Yl9pbnN0YWxsX3JlZ2lzdGVyX2VmaSAoZ3J1
Yl9kZXZpY2VfdCBlZmlkaXJfZ3J1Yl9kZXYsCiAgIHJldHVybiByZXQ7CiB9CiAKKworY2hhciAq
CithZGRfbXVsdGlwbGVfbnZtZV9ib290ZGV2aWNlcyAoY29uc3QgY2hhciAqaW5zdGFsbF9kZXZp
Y2UpCit7CisgIGNoYXIgKnN5c2ZzX3BhdGgsICpudm1lX25zLCAqcHRyLCAqbm9uX3NwbGl0dGVy
X3BhdGg7CisgIHVuc2lnbmVkIGludCBuc2lkOworICBjaGFyICptdWx0aXBhdGhfYm9vdCwgKm9m
cGF0aCwgKmV4dF9kaXI7CisgIHN0cnVjdCBkaXJlbnQgKmVwLCAqc3BsaXR0ZXJfZXA7CisgIERJ
UiAqZHAsICpzcGxpdHRlcl9kcDsKKyAgY2hhciAqY250bF9pZCwgKmRpclIxLCAqZGlyUjIsICpz
cGxpdHRlcl9pbmZvX3BhdGg7CisgIGJvb2wgaXNfRkMgPSBmYWxzZSwgaXNfc3BsaXR0ZXIgPSBm
YWxzZTsKKworICBudm1lX25zID0gZ3J1Yl9zdHJzdHIgKGluc3RhbGxfZGV2aWNlLCAibnZtZSIp
OworICBuc2lkID0gb2ZfcGF0aF9nZXRfbnZtZV9uc2lkIChudm1lX25zKTsKKyAgaWYgKG5zaWQg
PT0gMCkKKyAgICByZXR1cm4gTlVMTDsKKworICBzeXNmc19wYXRoID0gbnZtZV9nZXRfc3lzcGF0
aCAobnZtZV9ucyk7CisgIG9mcGF0aCA9IHhhc3ByaW50ZiAoIiVzIiwgZ2V0X29mcGF0aG5hbWUg
KG52bWVfbnMpKTsKKworICBpZiAoZ3J1Yl9zdHJzdHIgKG9mcGF0aCwgImZpYnJlLWNoYW5uZWwi
KSkKKyAgICB7CisgICAgICBzdHJjYXQgKHN5c2ZzX3BhdGgsICIvZGV2aWNlIik7CisgICAgICBp
c19GQyA9IHRydWU7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgc3RyY2F0IChzeXNmc19w
YXRoLCAiL3N1YnN5c3RlbSIpOworICAgICAgaXNfRkMgPSBmYWxzZTsKKyAgICB9CisgIGlmIChp
c19GQyA9PSBmYWxzZSkKKyAgICB7CisgICAgICBjbnRsX2lkID0gZ3J1Yl9zdHJzdHIgKG52bWVf
bnMsICJlIik7CisgICAgICBkaXJSMSA9IHhhc3ByaW50ZiAoIm52bWUlYyIsY250bF9pZFsxXSk7
CisKKyAgICAgIHNwbGl0dGVyX2luZm9fcGF0aCA9IHhhc3ByaW50ZiAoIi9zeXMvYmxvY2svJXMv
ZGV2aWNlIiwgbnZtZV9ucyk7CisgICAgICBzcGxpdHRlcl9kcCA9IG9wZW5kaXIgKHNwbGl0dGVy
X2luZm9fcGF0aCk7CisgICAgICBpZiAoIXNwbGl0dGVyX2RwKQorICAgICAgICByZXR1cm4gTlVM
TDsKKworICAgICAgd2hpbGUgKChzcGxpdHRlcl9lcCA9IHJlYWRkaXIgKHNwbGl0dGVyX2RwKSkg
IT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgIGlmIChncnViX3N0cnN0ciAoc3BsaXR0ZXJf
ZXAtPmRfbmFtZSwgIm52bWUiKSkKKwkgICAgeworCSAgICAgIGlmIChncnViX3N0cnN0ciAoc3Bs
aXR0ZXJfZXAtPmRfbmFtZSwgZGlyUjEpKQorCSAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgICAgZXh0X2RpciA9IGdydWJfc3RyY2hyIChzcGxpdHRlcl9lcC0+ZF9uYW1lLCAnZScpOwor
ICAgICAgICAgICAgICBpZiAoZ3J1Yl9zdHJjaHIgKGV4dF9kaXIsICduJykgPT0gTlVMTCkKKwkg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGRpclIyID0geGFzcHJpbnRmKCIlcyIsIHNwbGl0
dGVyX2VwLT5kX25hbWUpOworCSAgICAgICAgICBpc19zcGxpdHRlciA9IHRydWU7CisJICAgICAg
ICAgIGJyZWFrOworCSAgICAgICAgfQorCSAgICB9CisgICAgICAgIH0KKyAgICAgIGNsb3NlZGly
IChzcGxpdHRlcl9kcCk7CisgICAgfQorICBzeXNmc19wYXRoID0geHJlYWxwYXRoIChzeXNmc19w
YXRoKTsKKyAgZHAgPSBvcGVuZGlyIChzeXNmc19wYXRoKTsKKyAgaWYgKCFkcCkKKyAgICByZXR1
cm4gTlVMTDsKKworICBwdHIgPSBtdWx0aXBhdGhfYm9vdCA9IHhtYWxsb2MgKEJPT1RERVZfQlVG
RkVSKTsKKyAgaWYgKGlzX3NwbGl0dGVyID09IGZhbHNlICYmIGlzX0ZDID09IGZhbHNlKQorICAg
IHsKKyAgICAgIG5vbl9zcGxpdHRlcl9wYXRoID0geGFzcHJpbnRmICgiJXMvbmFtZXNwYWNlQCV4
OjEgIiwgZ2V0X29mcGF0aG5hbWUgKGRpclIxKSwgbnNpZCk7CisgICAgICBzdHJuY3B5IChwdHIs
IG5vbl9zcGxpdHRlcl9wYXRoLCBzdHJsZW4gKG5vbl9zcGxpdHRlcl9wYXRoKSk7CisgICAgICBw
dHIgKz0gc3RybGVuIChub25fc3BsaXR0ZXJfcGF0aCk7CisgICAgICBmcmVlIChub25fc3BsaXR0
ZXJfcGF0aCk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgd2hpbGUgKChlcCA9IHJlYWRk
aXIgKGRwKSkgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgIGNoYXIgKnBhdGg7CisKKyAg
ICAgICAgICBpZiAoZ3J1Yl9zdHJzdHIgKGVwLT5kX25hbWUsICJudm1lIikgIT0gTlVMTCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKGlzX0ZDID09IGZhbHNlICYmIGdydWJfc3Ry
c3RyIChlcC0+ZF9uYW1lLCBkaXJSMSkgPT0gTlVMTCAmJgorICAgICAgICAgICAgICAgICAgZ3J1
Yl9zdHJzdHIgKGVwLT5kX25hbWUsIGRpclIyKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICBwYXRoID0geGFzcHJpbnRmICgiJXMvbmFtZXNwYWNlQCV4
ICIsIGdldF9vZnBhdGhuYW1lIChlcC0+ZF9uYW1lKSwgbnNpZCk7CisgICAgICAgICAgICAgIGlm
ICgoc3RybGVuIChtdWx0aXBhdGhfYm9vdCkgKyBzdHJsZW4gKHBhdGgpKSA+IEJPT1RERVZfQlVG
RkVSKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGdydWJfdXRpbF93YXJu
IChfKCJNYXhpbXVtIGZpdmUgZW50cmllcyBhcmUgYWxsb3dlZCBpbiB0aGUgYm9vdGxpc3QiKSk7
CisgICAgICAgICAgICAgICAgICBmcmVlIChwYXRoKTsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgc3RybmNweSAocHRyLCBwYXRoLCBz
dHJsZW4gKHBhdGgpKTsKKyAgICAgICAgICAgICAgcHRyICs9IHN0cmxlbiAocGF0aCk7CisgICAg
ICAgICAgICAgIGZyZWUgKHBhdGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAqLS1wdHIgPSAnXDAnOworICBjbG9zZWRpciAoZHApOworCisgIHJldHVybiBtdWx0aXBhdGhf
Ym9vdDsKK30KKwogdm9pZAogZ3J1Yl9pbnN0YWxsX3JlZ2lzdGVyX2llZWUxMjc1IChpbnQgaXNf
cHJlcCwgY29uc3QgY2hhciAqaW5zdGFsbF9kZXZpY2UsCiAJCQkJaW50IHBhcnRubywgY29uc3Qg
Y2hhciAqcmVscGF0aCkKQEAgLTIxNSw4ICszMjAsMTkgQEAgZ3J1Yl9pbnN0YWxsX3JlZ2lzdGVy
X2llZWUxMjc1IChpbnQgaXNfcHJlcCwgY29uc3QgY2hhciAqaW5zdGFsbF9kZXZpY2UsCiAJfQog
ICAgICAgKnB0ciA9ICdcMCc7CiAgICAgfQorICBlbHNlIGlmIChncnViX3N0cnN0ciAoaW5zdGFs
bF9kZXZpY2UsICJudm1lIikpCisgICAgeworICAgICAgYm9vdF9kZXZpY2UgPSBhZGRfbXVsdGlw
bGVfbnZtZV9ib290ZGV2aWNlcyAoaW5zdGFsbF9kZXZpY2UpOworICAgIH0KICAgZWxzZQotICAg
IGJvb3RfZGV2aWNlID0gZ2V0X29mcGF0aG5hbWUgKGluc3RhbGxfZGV2aWNlKTsKKyAgICB7Cisg
ICAgICBib290X2RldmljZSA9IGdldF9vZnBhdGhuYW1lIChpbnN0YWxsX2RldmljZSk7CisgICAg
ICBpZiAoZ3J1Yl9zdHJzdHIgKGJvb3RfZGV2aWNlLCAibnZtZS1vZiIpKQorICAgICAgICB7Cisg
ICAgICAgICAgZnJlZSAoYm9vdF9kZXZpY2UpOworICAgICAgICAgIGJvb3RfZGV2aWNlID0gYWRk
X211bHRpcGxlX252bWVfYm9vdGRldmljZXMgKGluc3RhbGxfZGV2aWNlKTsKKyAgICAgICAgfQor
ICAgIH0KIAogICBpZiAoZ3J1Yl91dGlsX2V4ZWMgKChjb25zdCBjaGFyICogW10peyAibnZzZXRl
bnYiLCAiYm9vdC1kZXZpY2UiLAogCSAgYm9vdF9kZXZpY2UsIE5VTEwgfSkpCmRpZmYgLS1naXQg
YS9ncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMgYi9ncnViLWNvcmUvb3NkZXAvbGludXgv
b2ZwYXRoLmMKaW5kZXggNzE1OGM4Yy4uM2E3NzhlMCAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL29z
ZGVwL2xpbnV4L29mcGF0aC5jCisrKyBiL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYwpA
QCAtMjA5LDcgKzIwOSw3IEBAIGZpbmRfb2JwcGF0aCAoY29uc3QgY2hhciAqc3lzZnNfcGF0aF9v
cmlnKQogICAgIH0KIH0KCi1zdGF0aWMgY2hhciAqCitjaGFyICoKIHhyZWFscGF0aCAoY29uc3Qg
Y2hhciAqaW4pCiB7CiAgIGNoYXIgKm91dDsKQEAgLTY4NCw3ICs2ODQsNyBAQCBvZl9wYXRoX2dl
dF9udm1lX25zaWQgKGNvbnN0IGNoYXIqIGRldm5hbWUpCiAgIHJldHVybiBuc2lkOwogfQoKLXN0
YXRpYyBjaGFyICoKK2NoYXIgKgogbnZtZV9nZXRfc3lzcGF0aCAoY29uc3QgY2hhciAqbnZtZWRl
dikKIHsKICAgY2hhciAqc3lzZnNfcGF0aDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi91dGls
L2luc3RhbGwuaCBiL2luY2x1ZGUvZ3J1Yi91dGlsL2luc3RhbGwuaAppbmRleCA1MWYzYjEzLi5h
NjdlMjI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvdXRpbC9pbnN0YWxsLmgKKysrIGIvaW5j
bHVkZS9ncnViL3V0aWwvaW5zdGFsbC5oCkBAIC0yMzUsNiArMjM1LDkgQEAgZ3J1Yl9pbnN0YWxs
X3JlZ2lzdGVyX2VmaSAoZ3J1Yl9kZXZpY2VfdCBlZmlkaXJfZ3J1Yl9kZXYsCiAJCQkgICBjb25z
dCBjaGFyICplZmlmaWxlX3BhdGgsCiAJCQkgICBjb25zdCBjaGFyICplZmlfZGlzdHJpYnV0b3Ip
OwogCitjaGFyICoKK2FkZF9tdWx0aXBsZV9udm1lX2Jvb3RkZXZpY2VzIChjb25zdCBjaGFyICpp
bnN0YWxsX2RldmljZSk7CisKIHZvaWQKIGdydWJfaW5zdGFsbF9yZWdpc3Rlcl9pZWVlMTI3NSAo
aW50IGlzX3ByZXAsIGNvbnN0IGNoYXIgKmluc3RhbGxfZGV2aWNlLAogCQkJCWludCBwYXJ0bm8s
IGNvbnN0IGNoYXIgKnJlbHBhdGgpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL3V0aWwvb2Zw
YXRoLmggYi9pbmNsdWRlL2dydWIvdXRpbC9vZnBhdGguaAppbmRleCA1OTYyMzIyLi43OGU3OGU3
IDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvdXRpbC9vZnBhdGguaAorKysgYi9pbmNsdWRlL2dy
dWIvdXRpbC9vZnBhdGguaApAQCAtMzAsNSArMzAsOSBAQCBpbnQgYWRkX2ZpbGVuYW1lX3RvX3Bp
bGUgKGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfcm9vdCogcm9vdCk7
CiB2b2lkIGZpbmRfZmlsZSAoY2hhciogZmlsZW5hbWUsIGNoYXIqIGRpcmVjdG9yeSwgc3RydWN0
IG9mcGF0aF9maWxlc19saXN0X3Jvb3QqIHJvb3QsIGludCBtYXhfZGVwdGgsIGludCBkZXB0aCk7
CiBjaGFyKiBvZl9maW5kX2ZjX2hvc3QgKGNoYXIqIGhvc3Rfd3dwbik7CiB2b2lkIGZyZWVfb2Zw
YXRoX2ZpbGVzX2xpc3QgKHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9yb290KiByb290KTsKK2No
YXIqIG52bWVfZ2V0X3N5c3BhdGggKGNvbnN0IGNoYXIgKm52bWVkZXYpOwordW5zaWduZWQgaW50
IG9mX3BhdGhfZ2V0X252bWVfbnNpZCAoY29uc3QgY2hhciogZGV2bmFtZSk7CitjaGFyKiB4cmVh
bHBhdGggKGNvbnN0IGNoYXIgKmluKTsKKwogCiAjZW5kaWYgLyogISBHUlVCX09GUEFUSF9NQUNI
SU5FX1VUSUxfSEVBREVSICovCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5n
IGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL2dydWItZGV2ZWwK