Thread (9 messages) 9 messages, 2 authors, 2016-07-01
STALE3625d

[PATCH 5/6] lightnvm: expose device geometry through sysfs

From: Matias Bjørling <hidden>
Date: 2016-06-29 14:52:57
Also in: dm-devel, linux-nvme, lkml
Subsystem: nvm express driver, the rest · Maintainers: Keith Busch, Jens Axboe, Christoph Hellwig, Sagi Grimberg, Linus Torvalds

RnJvbTogIlNpbW9uIEEuIEYuIEx1bmQiIDxzbHVuZEBjbmV4bGFicy5jb20+CgpGb3IgYSBob3N0
IHRvIGFjY2VzcyBhbiBPcGVuLUNoYW5uZWwgU1NELCBpdCBoYXMgdG8ga25vdyBpdHMgZ2VvbWV0
cnksCnNvIHRoYXQgaXQgd3JpdGVzIGFuZCByZWFkcyBhdCB0aGUgYXBwcm9wcmlhdGUgZGV2aWNl
IGJvdW5kcy4KCkN1cnJlbnRseSwgdGhlIGdlb21ldHJ5IGluZm9ybWF0aW9uIGlzIGtlcHQgd2l0
aGluIHRoZSBrZXJuZWwsIGFuZCBub3QKZXhwb3J0ZWQgdG8gdXNlci1zcGFjZSBmb3IgY29uc3Vt
cHRpb24uIFRoaXMgcGF0Y2ggZXhwb3NlcyB0aGUKY29uZmlndXJhdGlvbiB0aHJvdWdoIHN5c2Zz
IGFuZCBlbmFibGVzIHVzZXItc3BhY2UgbGlicmFyaWVzLCBzdWNoIGFzCmxpYmxpZ2h0bnZtLCB0
byB1c2UgdGhlIHN5c2ZzIGltcGxlbWVudGF0aW9uIHRvIGdldCB0aGUgZ2VvbWV0cnkgb2YgYW4K
T3Blbi1DaGFubmVsIFNTRC4KClRoZSBzeXNmcyBlbnRyaWVzIGFyZSBzdG9yZWQgd2l0aGluIHRo
ZSBkZXZpY2UgaGllcmFyY2h5LCBhbmQgY2FuIGJlCmZvdW5kIHVzaW5nIHRoZSAibGlnaHRudm0i
IGRldmljZSB0eXBlLgoKQW4gZXhhbXBsZSBjb25maWd1cmF0aW9uIGxvb2tzIGxpa2UgdGhpczoK
Ci9zeXMvY2xhc3MvbnZtZS8K4pSU4pSA4pSAIG52bWUwbjEKICAg4pSc4pSA4pSAIGNhcGFiaWxp
dGllczogMwogICDilJzilIDilIAgZGV2aWNlX21vZGU6IDEKICAg4pSc4pSA4pSAIGNoYW5uZWxf
cGFyYWxsZWxpc206IDAKICAg4pSc4pSA4pSAIGVyYXNlX21heDogMTAwMDAwMAogICDilJzilIDi
lIAgZXJhc2VfdHlwOiAxMDAwMDAwCiAgIOKUnOKUgOKUgCBmbGFzaF9tZWRpYV90eXBlOiAwCiAg
IOKUnOKUgOKUgCBtZWRpYV9jYXBhYmlsaXRpZXM6IDB4MDAwMDAwMDEKICAg4pSc4pSA4pSAIG1l
ZGlhX3R5cGU6IDAKICAg4pSc4pSA4pSAIG11bHRpcGxhbmU6IDB4MDAwMTAxMDEKICAg4pSc4pSA
4pSAIG51bV9ibG9ja3M6IDEwMjIKICAg4pSc4pSA4pSAIG51bV9jaGFubmVsczogMQogICDilJzi
lIDilIAgbnVtX2x1bnM6IDQKICAg4pSc4pSA4pSAIG51bV9wYWdlczogNjQKICAg4pSc4pSA4pSA
IG51bV9wbGFuZXM6IDEKICAg4pSc4pSA4pSAIHBhZ2Vfc2l6ZTogNDA5NgogICDilJzilIDilIAg
cHJvZ19tYXg6IDEwMDAwMAogICDilJzilIDilIAgcHJvZ190eXA6IDEwMDAwMAogICDilJzilIDi
lIAgcmVhZF9tYXg6IDEwMDAwCiAgIOKUnOKUgOKUgCByZWFkX3R5cDogMTAwMDAKICAg4pSc4pSA
4pSAIHNlY3Rvcl9vb2Jfc2l6ZTogMAogICDilJzilIDilIAgc2VjdG9yX3NpemU6IDQwOTYKICAg
4pSc4pSA4pSAIG1lZGlhX21hbmFnZXI6IGdlbm52bQogICDilJzilIDilIAgcHBhX2Zvcm1hdDog
MHgzODA4MzAwODI4MDgwMDEwMTAxMDIwMDgKICAg4pSc4pSA4pSAIHZlbmRvcl9vcGNvZGU6IDAK
ICAg4pSU4pSA4pSAIHZlcnNpb246IDEKClNpZ25lZC1vZmYtYnk6IFNpbW9uIEEuIEYuIEx1bmQg
PHNsdW5kQGNuZXhsYWJzLmNvbT4KU2lnbmVkLW9mZi1ieTogTWF0aWFzIEJqw7hybGluZyA8bUBi
am9ybGluZy5tZT4KLS0tCiBkcml2ZXJzL2xpZ2h0bnZtL01ha2VmaWxlICAgIHwgICAyICstCiBk
cml2ZXJzL2xpZ2h0bnZtL2NvcmUuYyAgICAgIHwgIDIwICsrKy0tCiBkcml2ZXJzL2xpZ2h0bnZt
L2xpZ2h0bnZtLmggIHwgIDM1ICsrKysrKysrCiBkcml2ZXJzL2xpZ2h0bnZtL3N5c2ZzLmMgICAg
IHwgMTk1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZl
cnMvbnZtZS9ob3N0L2NvcmUuYyAgICAgfCAgMTMgKy0tCiBkcml2ZXJzL252bWUvaG9zdC9saWdo
dG52bS5jIHwgICA2ICstCiBkcml2ZXJzL252bWUvaG9zdC9udm1lLmggICAgIHwgIDIwICsrKyst
CiBpbmNsdWRlL2xpbnV4L2xpZ2h0bnZtLmggICAgIHwgICAzICsKIDggZmlsZXMgY2hhbmdlZCwg
Mjc3IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy
aXZlcnMvbGlnaHRudm0vbGlnaHRudm0uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbGln
aHRudm0vc3lzZnMuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGlnaHRudm0vTWFrZWZpbGUgYi9k
cml2ZXJzL2xpZ2h0bnZtL01ha2VmaWxlCmluZGV4IGE3YTBhMjIuLjFmNmI2NTIgMTAwNjQ0Ci0t
LSBhL2RyaXZlcnMvbGlnaHRudm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9saWdodG52bS9NYWtl
ZmlsZQpAQCAtMiw2ICsyLDYgQEAKICMgTWFrZWZpbGUgZm9yIE9wZW4tQ2hhbm5lbCBTU0RzLgog
IwogCi1vYmotJChDT05GSUdfTlZNKQkJOj0gY29yZS5vIHN5c2Jsay5vCitvYmotJChDT05GSUdf
TlZNKQkJOj0gY29yZS5vIHN5c2Jsay5vIHN5c2ZzLm8KIG9iai0kKENPTkZJR19OVk1fR0VOTlZN
KSAJKz0gZ2VubnZtLm8KIG9iai0kKENPTkZJR19OVk1fUlJQQykJCSs9IHJycGMubwpkaWZmIC0t
Z2l0IGEvZHJpdmVycy9saWdodG52bS9jb3JlLmMgYi9kcml2ZXJzL2xpZ2h0bnZtL2NvcmUuYwpp
bmRleCAwNjU0YzA2Li4wMjA4NjM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xpZ2h0bnZtL2NvcmUu
YworKysgYi9kcml2ZXJzL2xpZ2h0bnZtL2NvcmUuYwpAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1
ZGUgPGxpbnV4L2xpZ2h0bnZtLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQvc3lzY3RsLmg+CiAK
KyNpbmNsdWRlICJsaWdodG52bS5oIgorCiBzdGF0aWMgTElTVF9IRUFEKG52bV90Z3RfdHlwZXMp
Owogc3RhdGljIERFQ0xBUkVfUldTRU0obnZtX3RndHRfbG9jayk7CiBzdGF0aWMgTElTVF9IRUFE
KG52bV9tZ3JzKTsKQEAgLTU5OCwxNSArNjAwLDE5IEBAIHN0YXRpYyB2b2lkIG52bV9mcmVlX21n
cihzdHJ1Y3QgbnZtX2RldiAqZGV2KQogCWRldi0+bXQgPSBOVUxMOwogfQogCi1zdGF0aWMgdm9p
ZCBudm1fZnJlZShzdHJ1Y3QgbnZtX2RldiAqZGV2KQordm9pZCBudm1fZnJlZShzdHJ1Y3QgbnZt
X2RldiAqZGV2KQogewogCWlmICghZGV2KQogCQlyZXR1cm47CiAKIAludm1fZnJlZV9tZ3IoZGV2
KTsKIAorCWlmIChkZXYtPmRtYV9wb29sKQorCQlkZXYtPm9wcy0+ZGVzdHJveV9kbWFfcG9vbChk
ZXYtPmRtYV9wb29sKTsKKwogCWtmcmVlKGRldi0+bHB0YmwpOwogCWtmcmVlKGRldi0+bHVuX21h
cCk7CisJa2ZyZWUoZGV2KTsKIH0KIAogc3RhdGljIGludCBudm1faW5pdChzdHJ1Y3QgbnZtX2Rl
diAqZGV2KQpAQCAtNjUzLDExICs2NTksNyBAQCBlcnI6CiAKIHN0YXRpYyB2b2lkIG52bV9leGl0
KHN0cnVjdCBudm1fZGV2ICpkZXYpCiB7Ci0JaWYgKGRldi0+ZG1hX3Bvb2wpCi0JCWRldi0+b3Bz
LT5kZXN0cm95X2RtYV9wb29sKGRldi0+ZG1hX3Bvb2wpOwotCW52bV9mcmVlKGRldik7Ci0KLQlw
cl9pbmZvKCJudm06IHN1Y2Nlc3NmdWxseSB1bmxvYWRlZFxuIik7CisJbnZtX3N5c2ZzX3VucmVn
aXN0ZXJfZGV2KGRldik7CiB9CiAKIHN0cnVjdCBudm1fZGV2ICpudm1fYWxsb2NfZGV2KGludCBu
b2RlKQpAQCAtNjg4LDYgKzY5MCwxMCBAQCBpbnQgbnZtX3JlZ2lzdGVyKHN0cnVjdCBudm1fZGV2
ICpkZXYpCiAJCX0KIAl9CiAKKwlyZXQgPSBudm1fc3lzZnNfcmVnaXN0ZXJfZGV2KGRldik7CisJ
aWYgKHJldCkKKwkJZ290byBlcnJfcHBhbGlzdDsKKwogCWlmIChkZXYtPmlkZW50aXR5LmNhcCAm
IE5WTV9JRF9EQ0FQX0JCTEtNR01UKSB7CiAJCXJldCA9IG52bV9nZXRfc3lzYmxvY2soZGV2LCAm
ZGV2LT5zYik7CiAJCWlmICghcmV0KQpAQCAtNzA0LDYgKzcxMCw4IEBAIGludCBudm1fcmVnaXN0
ZXIoc3RydWN0IG52bV9kZXYgKmRldikKIAl1cF93cml0ZSgmbnZtX2xvY2spOwogCiAJcmV0dXJu
IDA7CitlcnJfcHBhbGlzdDoKKwlkZXYtPm9wcy0+ZGVzdHJveV9kbWFfcG9vbChkZXYtPmRtYV9w
b29sKTsKIGVycl9pbml0OgogCWtmcmVlKGRldi0+bHVuX21hcCk7CiAJcmV0dXJuIHJldDsKZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvbGlnaHRudm0vbGlnaHRudm0uaCBiL2RyaXZlcnMvbGlnaHRudm0v
bGlnaHRudm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2YxYWFjCi0t
LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9saWdodG52bS9saWdodG52bS5oCkBAIC0wLDAgKzEs
MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ05FWCBMYWJzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogSW5pdGlhbCByZWxlYXNlOiBNYXRpYXMgQmpvcmxpbmcgPG1hdGlhc0BjbmV4
bGFicy5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbgorICogMiBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisgKiBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksCisgKiBVU0EuCisgKgor
ICovCisKKyNpZm5kZWYgTElHSFROVk1fSAorI2RlZmluZSBMSUdIVE5WTV9ICisKKyNpbmNsdWRl
IDxsaW51eC9saWdodG52bS5oPgorCisvKiBjb3JlIC0+IHN5c2ZzLmMgKi8KK2ludCBudm1fc3lz
ZnNfcmVnaXN0ZXJfZGV2KHN0cnVjdCBudm1fZGV2ICopOwordm9pZCBudm1fc3lzZnNfdW5yZWdp
c3Rlcl9kZXYoc3RydWN0IG52bV9kZXYgKik7CitpbnQgbnZtX3N5c2ZzX3JlZ2lzdGVyKHZvaWQp
Owordm9pZCBudm1fc3lzZnNfdW5yZWdpc3Rlcih2b2lkKTsKKworLyogc3lzZnMgPiBjb3JlICov
Cit2b2lkIG52bV9mcmVlKHN0cnVjdCBudm1fZGV2ICopOworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L2RyaXZlcnMvbGlnaHRudm0vc3lzZnMuYyBiL2RyaXZlcnMvbGlnaHRudm0vc3lzZnMuYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzE0MTcyCi0tLSAvZGV2L251bGwKKysr
IGIvZHJpdmVycy9saWdodG52bS9zeXNmcy5jCkBAIC0wLDAgKzEsMTk1IEBACisjaW5jbHVkZSA8
bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbGlnaHRudm0uaD4KKyNpbmNsdWRlIDxs
aW51eC9taXNjZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgva29iamVjdC5oPgorI2luY2x1ZGUg
PGxpbnV4L2Jsay1tcS5oPgorCisjaW5jbHVkZSAibGlnaHRudm0uaCIKKworc3RhdGljIHNzaXpl
X3QgbnZtX2Rldl9hdHRyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSBzdHJ1Y3QgZGV2
aWNlX2F0dHJpYnV0ZSAqZGF0dHIsIGNoYXIgKnBhZ2UpCit7CisJc3RydWN0IG52bV9kZXYgKm5k
ZXYgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbnZtX2RldiwgZGV2KTsKKwlzdHJ1Y3QgbnZt
X2lkICppZCA9ICZuZGV2LT5pZGVudGl0eTsKKwlzdHJ1Y3QgbnZtX2lkX2dyb3VwICpncnAgPSAm
aWQtPmdyb3Vwc1swXTsKKwlzdHJ1Y3QgYXR0cmlidXRlICphdHRyID0gJmRhdHRyLT5hdHRyOwor
CisJaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAidmVyc2lvbiIpID09IDApIHsKKwkJcmV0dXJuIHNj
bnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgaWQtPnZlcl9pZCk7CisJfSBlbHNlIGlm
IChzdHJjbXAoYXR0ci0+bmFtZSwgInZlbmRvcl9vcGNvZGUiKSA9PSAwKSB7CisJCXJldHVybiBz
Y25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT52bW50KTsKKwl9IGVsc2UgaWYg
KHN0cmNtcChhdHRyLT5uYW1lLCAiY2FwYWJpbGl0aWVzIikgPT0gMCkgeworCQlyZXR1cm4gc2Nu
cHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBpZC0+Y2FwKTsKKwl9IGVsc2UgaWYgKHN0
cmNtcChhdHRyLT5uYW1lLCAiZGV2aWNlX21vZGUiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmlu
dGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT5kb20pOworCX0gZWxzZSBpZiAoc3RyY21w
KGF0dHItPm5hbWUsICJtZWRpYV9tYW5hZ2VyIikgPT0gMCkgeworCQlpZiAoIW5kZXYtPm10KQor
CQkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIlc1xuIiwgIm5vbmUiKTsKKwkJ
cmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIlc1xuIiwgbmRldi0+bXQtPm5hbWUp
OworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJwcGFfZm9ybWF0IikgPT0gMCkgewor
CQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwKKwkJCSIweCUwMnglMDJ4JTAyeCUw
MnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeFxuIiwKKwkJCWlkLT5wcGFmLmNoX29m
ZnNldCwgaWQtPnBwYWYuY2hfbGVuLAorCQkJaWQtPnBwYWYubHVuX29mZnNldCwgaWQtPnBwYWYu
bHVuX2xlbiwKKwkJCWlkLT5wcGFmLnBsbl9vZmZzZXQsIGlkLT5wcGFmLnBsbl9sZW4sCisJCQlp
ZC0+cHBhZi5ibGtfb2Zmc2V0LCBpZC0+cHBhZi5ibGtfbGVuLAorCQkJaWQtPnBwYWYucGdfb2Zm
c2V0LCBpZC0+cHBhZi5wZ19sZW4sCisJCQlpZC0+cHBhZi5zZWN0X29mZnNldCwgaWQtPnBwYWYu
c2VjdF9sZW4pOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJtZWRpYV90eXBlIikg
PT0gMCkgewkvKiB1OCAqLworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1
XG4iLCBncnAtPm10eXBlKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAiZmxhc2hf
bWVkaWFfdHlwZSIpID09IDApIHsKKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUs
ICIldVxuIiwgZ3JwLT5mbXR5cGUpOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJu
dW1fY2hhbm5lbHMiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpF
LCAiJXVcbiIsIGdycC0+bnVtX2NoKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAi
bnVtX2x1bnMiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAi
JXVcbiIsIGdycC0+bnVtX2x1bik7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgIm51
bV9wbGFuZXMiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAi
JXVcbiIsIGdycC0+bnVtX3Bsbik7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgIm51
bV9ibG9ja3MiKSA9PSAwKSB7CS8qIHUxNiAqLworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBB
R0VfU0laRSwgIiV1XG4iLCBncnAtPm51bV9ibGspOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHIt
Pm5hbWUsICJudW1fcGFnZXMiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFH
RV9TSVpFLCAiJXVcbiIsIGdycC0+bnVtX3BnKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5u
YW1lLCAicGFnZV9zaXplIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0Vf
U0laRSwgIiV1XG4iLCBncnAtPmZwZ19zeik7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFt
ZSwgImh3X3NlY3Rvcl9zaXplIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBB
R0VfU0laRSwgIiV1XG4iLCBncnAtPmNzZWNzKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5u
YW1lLCAib29iX3NlY3Rvcl9zaXplIikgPT0gMCkgey8qIHUzMiAqLworCQlyZXR1cm4gc2NucHJp
bnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBncnAtPnNvcyk7CisJfSBlbHNlIGlmIChzdHJj
bXAoYXR0ci0+bmFtZSwgInJlYWRfdHlwIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBh
Z2UsIFBBR0VfU0laRSwgIiV1XG4iLCBncnAtPnRyZHQpOworCX0gZWxzZSBpZiAoc3RyY21wKGF0
dHItPm5hbWUsICJyZWFkX21heCIpID09IDApIHsKKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQ
QUdFX1NJWkUsICIldVxuIiwgZ3JwLT50cmRtKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5u
YW1lLCAicHJvZ190eXAiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9T
SVpFLCAiJXVcbiIsIGdycC0+dHBydCk7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwg
InByb2dfbWF4IikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwg
IiV1XG4iLCBncnAtPnRwcm0pOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJlcmFz
ZV90eXAiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVc
biIsIGdycC0+dGJldCk7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgImVyYXNlX21h
eCIpID09IDApIHsKKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwg
Z3JwLT50YmVtKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAibXVsdGlwbGFuZV9t
b2RlcyIpID09IDApIHsKKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIweCUw
OHhcbiIsIGdycC0+bXBvcyk7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgIm1lZGlh
X2NhcGFiaWxpdGllcyIpID09IDApIHsKKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJ
WkUsICIweCUwOHhcbiIsIGdycC0+bWNjYXApOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5h
bWUsICJjaGFubmVsX3BhcmFsbGVsaXNtIikgPT0gMCkgey8qIHUxNiAqLworCQlyZXR1cm4gc2Nu
cHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBncnAtPmNwYXIpOworCX0gZWxzZSB7CisJ
CXJldHVybiBzY25wcmludGYocGFnZSwKKwkJCQkgUEFHRV9TSVpFLAorCQkJCSAiVW5oYW5kbGVk
IGF0dHIoJXMpIGluIGBudm1fZGV2X2F0dHJfc2hvd2BcbiIsCisJCQkJIGF0dHItPm5hbWUpOwor
CX0KK30KKworI2RlZmluZSBOVk1fREVWX0FUVFJfUk8oX25hbWUpCQkJCQkJXAorCURFVklDRV9B
VFRSKF9uYW1lLCBTX0lSVUdPLCBudm1fZGV2X2F0dHJfc2hvdywgTlVMTCkKKworc3RhdGljIE5W
TV9ERVZfQVRUUl9STyh2ZXJzaW9uKTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8odmVuZG9yX29w
Y29kZSk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKGNhcGFiaWxpdGllcyk7CitzdGF0aWMgTlZN
X0RFVl9BVFRSX1JPKGRldmljZV9tb2RlKTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8ocHBhX2Zv
cm1hdCk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKG1lZGlhX21hbmFnZXIpOworCitzdGF0aWMg
TlZNX0RFVl9BVFRSX1JPKG1lZGlhX3R5cGUpOworc3RhdGljIE5WTV9ERVZfQVRUUl9STyhmbGFz
aF9tZWRpYV90eXBlKTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8obnVtX2NoYW5uZWxzKTsKK3N0
YXRpYyBOVk1fREVWX0FUVFJfUk8obnVtX2x1bnMpOworc3RhdGljIE5WTV9ERVZfQVRUUl9STyhu
dW1fcGxhbmVzKTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8obnVtX2Jsb2Nrcyk7CitzdGF0aWMg
TlZNX0RFVl9BVFRSX1JPKG51bV9wYWdlcyk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKHBhZ2Vf
c2l6ZSk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKGh3X3NlY3Rvcl9zaXplKTsKK3N0YXRpYyBO
Vk1fREVWX0FUVFJfUk8ob29iX3NlY3Rvcl9zaXplKTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8o
cmVhZF90eXApOworc3RhdGljIE5WTV9ERVZfQVRUUl9STyhyZWFkX21heCk7CitzdGF0aWMgTlZN
X0RFVl9BVFRSX1JPKHByb2dfdHlwKTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8ocHJvZ19tYXgp
Oworc3RhdGljIE5WTV9ERVZfQVRUUl9STyhlcmFzZV90eXApOworc3RhdGljIE5WTV9ERVZfQVRU
Ul9STyhlcmFzZV9tYXgpOworc3RhdGljIE5WTV9ERVZfQVRUUl9STyhtdWx0aXBsYW5lX21vZGVz
KTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8obWVkaWFfY2FwYWJpbGl0aWVzKTsKK3N0YXRpYyBO
Vk1fREVWX0FUVFJfUk8oY2hhbm5lbF9wYXJhbGxlbGlzbSk7CisKKyNkZWZpbmUgTlZNX0RFVl9B
VFRSKF9uYW1lKSAoZGV2X2F0dHJfIyNfbmFtZSMjKQorCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0
ZSAqbnZtX2Rldl9hdHRyc1tdID0geworCSZkZXZfYXR0cl92ZXJzaW9uLmF0dHIsCisJJmRldl9h
dHRyX3ZlbmRvcl9vcGNvZGUuYXR0ciwKKwkmZGV2X2F0dHJfY2FwYWJpbGl0aWVzLmF0dHIsCisJ
JmRldl9hdHRyX2RldmljZV9tb2RlLmF0dHIsCisJJmRldl9hdHRyX21lZGlhX21hbmFnZXIuYXR0
ciwKKworCSZkZXZfYXR0cl9wcGFfZm9ybWF0LmF0dHIsCisJJmRldl9hdHRyX21lZGlhX3R5cGUu
YXR0ciwKKwkmZGV2X2F0dHJfZmxhc2hfbWVkaWFfdHlwZS5hdHRyLAorCSZkZXZfYXR0cl9udW1f
Y2hhbm5lbHMuYXR0ciwKKwkmZGV2X2F0dHJfbnVtX2x1bnMuYXR0ciwKKwkmZGV2X2F0dHJfbnVt
X3BsYW5lcy5hdHRyLAorCSZkZXZfYXR0cl9udW1fYmxvY2tzLmF0dHIsCisJJmRldl9hdHRyX251
bV9wYWdlcy5hdHRyLAorCSZkZXZfYXR0cl9wYWdlX3NpemUuYXR0ciwKKwkmZGV2X2F0dHJfaHdf
c2VjdG9yX3NpemUuYXR0ciwKKwkmZGV2X2F0dHJfb29iX3NlY3Rvcl9zaXplLmF0dHIsCisJJmRl
dl9hdHRyX3JlYWRfdHlwLmF0dHIsCisJJmRldl9hdHRyX3JlYWRfbWF4LmF0dHIsCisJJmRldl9h
dHRyX3Byb2dfdHlwLmF0dHIsCisJJmRldl9hdHRyX3Byb2dfbWF4LmF0dHIsCisJJmRldl9hdHRy
X2VyYXNlX3R5cC5hdHRyLAorCSZkZXZfYXR0cl9lcmFzZV9tYXguYXR0ciwKKwkmZGV2X2F0dHJf
bXVsdGlwbGFuZV9tb2Rlcy5hdHRyLAorCSZkZXZfYXR0cl9tZWRpYV9jYXBhYmlsaXRpZXMuYXR0
ciwKKwkmZGV2X2F0dHJfY2hhbm5lbF9wYXJhbGxlbGlzbS5hdHRyLAorCU5VTEwsCit9OworCitz
dGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBudm1fZGV2X2F0dHJfZ3JvdXAgPSB7CisJLm5h
bWUgPSAibGlnaHRudm0iLAorCS5hdHRycyA9IG52bV9kZXZfYXR0cnMsCit9OworCitzdGF0aWMg
Y29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqbnZtX2Rldl9hdHRyX2dyb3Vwc1tdID0gewor
CSZudm1fZGV2X2F0dHJfZ3JvdXAsCisJTlVMTCwKK307CisKK3N0YXRpYyB2b2lkIG52bV9kZXZf
cmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpCit7CisJc3RydWN0IG52bV9kZXYgKmRldiA9
IGNvbnRhaW5lcl9vZihkZXZpY2UsIHN0cnVjdCBudm1fZGV2LCBkZXYpOworCXN0cnVjdCByZXF1
ZXN0X3F1ZXVlICpxID0gZGV2LT5xOworCisJcHJfZGVidWcoIm52bS9zeXNmczogYG52bV9kZXZf
cmVsZWFzZWBcbiIpOworCisJYmxrX21xX3VucmVnaXN0ZXJfZGV2KGRldmljZSwgcSk7CisKKwlu
dm1fZnJlZShkZXYpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV90eXBlIG52bV90eXBlID0g
eworCS5uYW1lCQk9ICJsaWdodG52bSIsCisJLmdyb3VwcwkJPSBudm1fZGV2X2F0dHJfZ3JvdXBz
LAorCS5yZWxlYXNlCT0gbnZtX2Rldl9yZWxlYXNlLAorfTsKKworaW50IG52bV9zeXNmc19yZWdp
c3Rlcl9kZXYoc3RydWN0IG52bV9kZXYgKmRldikKK3sKKwlpZiAoIWRldi0+cGFyZW50X2RldikK
KwkJcmV0dXJuIDA7CisKKwlkZXYtPmRldi5wYXJlbnQgPSBkZXYtPnBhcmVudF9kZXY7CisJZGV2
X3NldF9uYW1lKCZkZXYtPmRldiwgIiVzIiwgZGV2LT5uYW1lKTsKKwlkZXYtPmRldi5jbGFzcyA9
IGRldi0+cGFyZW50X2Rldi0+Y2xhc3M7CisJZGV2LT5kZXYudHlwZSA9ICZudm1fdHlwZTsKKwlk
ZXZpY2VfaW5pdGlhbGl6ZSgmZGV2LT5kZXYpOworCWRldmljZV9hZGQoJmRldi0+ZGV2KTsKKwor
CWJsa19tcV9yZWdpc3Rlcl9kZXYoJmRldi0+ZGV2LCBkZXYtPnEpOworCisJcmV0dXJuIDA7Cit9
CisKK3ZvaWQgbnZtX3N5c2ZzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBudm1fZGV2ICpkZXYpCit7
CisJaWYgKGRldiAmJiBkZXYtPnBhcmVudF9kZXYpCisJCWtvYmplY3RfcHV0KCZkZXYtPmRldi5r
b2JqKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYyBiL2RyaXZlcnMv
bnZtZS9ob3N0L2NvcmUuYwppbmRleCBmZTEzNWQ5Li4xYzU4NjkyIDEwMDY0NAotLS0gYS9kcml2
ZXJzL252bWUvaG9zdC9jb3JlLmMKKysrIGIvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCkBAIC0x
Mjk2LDcgKzEyOTYsNyBAQCBzdGF0aWMgREVWSUNFX0FUVFIocmVzY2FuX2NvbnRyb2xsZXIsIFNf
SVdVU1IsIE5VTEwsIG52bWVfc3lzZnNfcmVzY2FuKTsKIHN0YXRpYyBzc2l6ZV90IHd3aWRfc2hv
dyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkJ
CQkJCQljaGFyICpidWYpCiB7Ci0Jc3RydWN0IG52bWVfbnMgKm5zID0gZGV2X3RvX2Rpc2soZGV2
KS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBudm1lX25zICpucyA9IG52bWVfZ2V0X25zX2Zyb21f
ZGV2KGRldik7CiAJc3RydWN0IG52bWVfY3RybCAqY3RybCA9IG5zLT5jdHJsOwogCWludCBzZXJp
YWxfbGVuID0gc2l6ZW9mKGN0cmwtPnNlcmlhbCk7CiAJaW50IG1vZGVsX2xlbiA9IHNpemVvZihj
dHJsLT5tb2RlbCk7CkBAIC0xMzIwLDcgKzEzMjAsNyBAQCBzdGF0aWMgREVWSUNFX0FUVFIod3dp
ZCwgU19JUlVHTywgd3dpZF9zaG93LCBOVUxMKTsKIHN0YXRpYyBzc2l6ZV90IHV1aWRfc2hvdyhz
dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkJCQkJ
CQljaGFyICpidWYpCiB7Ci0Jc3RydWN0IG52bWVfbnMgKm5zID0gZGV2X3RvX2Rpc2soZGV2KS0+
cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBudm1lX25zICpucyA9IG52bWVfZ2V0X25zX2Zyb21fZGV2
KGRldik7CiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJXBVXG4iLCBucy0+dXVpZCk7CiB9CiBzdGF0
aWMgREVWSUNFX0FUVFIodXVpZCwgU19JUlVHTywgdXVpZF9zaG93LCBOVUxMKTsKQEAgLTEzMjgs
NyArMTMyOCw3IEBAIHN0YXRpYyBERVZJQ0VfQVRUUih1dWlkLCBTX0lSVUdPLCB1dWlkX3Nob3cs
IE5VTEwpOwogc3RhdGljIHNzaXplX3QgZXVpX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1
Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJCQkJCQkJY2hhciAqYnVmKQogewotCXN0cnVj
dCBudm1lX25zICpucyA9IGRldl90b19kaXNrKGRldiktPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3Qg
bnZtZV9ucyAqbnMgPSBudm1lX2dldF9uc19mcm9tX2RldihkZXYpOwogCXJldHVybiBzcHJpbnRm
KGJ1ZiwgIiU4cGhkXG4iLCBucy0+ZXVpKTsKIH0KIHN0YXRpYyBERVZJQ0VfQVRUUihldWksIFNf
SVJVR08sIGV1aV9zaG93LCBOVUxMKTsKQEAgLTEzMzYsNyArMTMzNiw3IEBAIHN0YXRpYyBERVZJ
Q0VfQVRUUihldWksIFNfSVJVR08sIGV1aV9zaG93LCBOVUxMKTsKIHN0YXRpYyBzc2l6ZV90IG5z
aWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy
LAogCQkJCQkJCQljaGFyICpidWYpCiB7Ci0Jc3RydWN0IG52bWVfbnMgKm5zID0gZGV2X3RvX2Rp
c2soZGV2KS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBudm1lX25zICpucyA9IG52bWVfZ2V0X25z
X2Zyb21fZGV2KGRldik7CiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIG5zLT5uc19pZCk7
CiB9CiBzdGF0aWMgREVWSUNFX0FUVFIobnNpZCwgU19JUlVHTywgbnNpZF9zaG93LCBOVUxMKTsK
QEAgLTEzNTMsNyArMTM1Myw3IEBAIHN0YXRpYyB1bW9kZV90IG52bWVfYXR0cnNfYXJlX3Zpc2li
bGUoc3RydWN0IGtvYmplY3QgKmtvYmosCiAJCXN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKQog
ewogCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGV2aWNl
LCBrb2JqKTsKLQlzdHJ1Y3QgbnZtZV9ucyAqbnMgPSBkZXZfdG9fZGlzayhkZXYpLT5wcml2YXRl
X2RhdGE7CisJc3RydWN0IG52bWVfbnMgKm5zID0gbnZtZV9nZXRfbnNfZnJvbV9kZXYoZGV2KTsK
IAogCWlmIChhID09ICZkZXZfYXR0cl91dWlkLmF0dHIpIHsKIAkJaWYgKCFtZW1jaHJfaW52KG5z
LT51dWlkLCAwLCBzaXplb2YobnMtPnV1aWQpKSkKQEAgLTE0NzQsNyArMTQ3NCw4IEBAIHN0YXRp
YyB2b2lkIG52bWVfYWxsb2NfbnMoc3RydWN0IG52bWVfY3RybCAqY3RybCwgdW5zaWduZWQgbnNp
ZCkKIAlzcHJpbnRmKGRpc2tfbmFtZSwgIm52bWUlZG4lZCIsIGN0cmwtPmluc3RhbmNlLCBucy0+
aW5zdGFuY2UpOwogCiAJaWYgKG52bWVfbnZtX25zX3N1cHBvcnRlZChucywgaWQpKSB7Ci0JCWlm
IChudm1lX252bV9yZWdpc3RlcihucywgZGlza19uYW1lLCBub2RlKSkgeworCQlpZiAobnZtZV9u
dm1fcmVnaXN0ZXIobnMsIGRpc2tfbmFtZSwgbm9kZSwKKwkJCQkJCQkmbnZtZV9uc19hdHRyX2dy
b3VwKSkgewogCQkJZGV2X3dhcm4oY3RybC0+ZGV2LCAiJXM6IExpZ2h0TlZNIGluaXQgZmFpbHVy
ZVxuIiwKIAkJCQkJCQkJX19mdW5jX18pOwogCQkJZ290byBvdXRfZnJlZV9pZDsKZGlmZiAtLWdp
dCBhL2RyaXZlcnMvbnZtZS9ob3N0L2xpZ2h0bnZtLmMgYi9kcml2ZXJzL252bWUvaG9zdC9saWdo
dG52bS5jCmluZGV4IGViNzgwZWYuLmZiZTMyMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9o
b3N0L2xpZ2h0bnZtLmMKKysrIGIvZHJpdmVycy9udm1lL2hvc3QvbGlnaHRudm0uYwpAQCAtNTky
LDEwICs1OTIsMTIgQEAgc3RhdGljIHN0cnVjdCBudm1fZGV2X29wcyBudm1lX252bV9kZXZfb3Bz
ID0gewogCS5tYXhfcGh5c19zZWN0CQk9IDY0LAogfTsKIAotaW50IG52bWVfbnZtX3JlZ2lzdGVy
KHN0cnVjdCBudm1lX25zICpucywgY2hhciAqZGlza19uYW1lLCBpbnQgbm9kZSkKK2ludCBudm1l
X252bV9yZWdpc3RlcihzdHJ1Y3QgbnZtZV9ucyAqbnMsIGNoYXIgKmRpc2tfbmFtZSwgaW50IG5v
ZGUsCisJCSAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmF0dHJzKQogewogCXN0
cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gbnMtPnF1ZXVlOwogCXN0cnVjdCBudm1fZGV2ICpkZXY7
CisJaW50IHJldDsKIAogCWRldiA9IG52bV9hbGxvY19kZXYobm9kZSk7CiAJaWYgKCFkZXYpCkBA
IC02MDQsNiArNjA2LDggQEAgaW50IG52bWVfbnZtX3JlZ2lzdGVyKHN0cnVjdCBudm1lX25zICpu
cywgY2hhciAqZGlza19uYW1lLCBpbnQgbm9kZSkKIAlkZXYtPnEgPSBxOwogCW1lbWNweShkZXYt
Pm5hbWUsIGRpc2tfbmFtZSwgRElTS19OQU1FX0xFTik7CiAJZGV2LT5vcHMgPSAmbnZtZV9udm1f
ZGV2X29wczsKKwlkZXYtPnBhcmVudF9kZXYgPSBucy0+Y3RybC0+ZGV2aWNlOworCWRldi0+cHJp
dmF0ZV9kYXRhID0gbnM7CiAJbnMtPm5kZXYgPSBkZXY7CiAKIAlyZXQgPSBudm1fcmVnaXN0ZXIo
ZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L252bWUuaCBiL2RyaXZlcnMvbnZt
ZS9ob3N0L252bWUuaAppbmRleCA3YjQ5YjQ1Li40M2E2ZTkzIDEwMDY0NAotLS0gYS9kcml2ZXJz
L252bWUvaG9zdC9udm1lLmgKKysrIGIvZHJpdmVycy9udm1lL2hvc3QvbnZtZS5oCkBAIC0yNjcs
MTEgKzI2NywyMSBAQCBpbnQgbnZtZV9zZ19nZXRfdmVyc2lvbl9udW0oaW50IF9fdXNlciAqaXAp
OwogCiAjaWZkZWYgQ09ORklHX05WTQogaW50IG52bWVfbnZtX25zX3N1cHBvcnRlZChzdHJ1Y3Qg
bnZtZV9ucyAqbnMsIHN0cnVjdCBudm1lX2lkX25zICppZCk7Ci1pbnQgbnZtZV9udm1fcmVnaXN0
ZXIoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIGNoYXIgKmRpc2tfbmFtZSk7Ci12b2lkIG52bWVf
bnZtX3VucmVnaXN0ZXIoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIGNoYXIgKmRpc2tfbmFtZSk7
CitpbnQgbnZtZV9udm1fcmVnaXN0ZXIoc3RydWN0IG52bWVfbnMgKm5zLCBjaGFyICpkaXNrX25h
bWUsIGludCBub2RlLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICphdHRy
cyk7Cit2b2lkIG52bWVfbnZtX3VucmVnaXN0ZXIoc3RydWN0IG52bWVfbnMgKm5zKTsKKworc3Rh
dGljIGlubGluZSBzdHJ1Y3QgbnZtZV9ucyAqbnZtZV9nZXRfbnNfZnJvbV9kZXYoc3RydWN0IGRl
dmljZSAqZGV2KQoreworCWlmIChkZXYtPnR5cGUtPmRldm5vZGUpCisJCXJldHVybiBkZXZfdG9f
ZGlzayhkZXYpLT5wcml2YXRlX2RhdGE7CisKKwlyZXR1cm4gKGNvbnRhaW5lcl9vZihkZXYsIHN0
cnVjdCBudm1fZGV2LCBkZXYpKS0+cHJpdmF0ZV9kYXRhOworfQogI2Vsc2UKIHN0YXRpYyBpbmxp
bmUgaW50IG52bWVfbnZtX3JlZ2lzdGVyKHN0cnVjdCBudm1lX25zICpucywgY2hhciAqZGlza19u
YW1lLAotCQkJCQkJCQlpbnQgbm9kZSkKKwkJCQkgICAgaW50IG5vZGUsCisJCQkJICAgIGNvbnN0
IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmF0dHJzKQogewogCXJldHVybiAwOwogfQpAQCAtMjgy
LDYgKzI5MiwxMCBAQCBzdGF0aWMgaW5saW5lIGludCBudm1lX252bV9uc19zdXBwb3J0ZWQoc3Ry
dWN0IG52bWVfbnMgKm5zLCBzdHJ1Y3QgbnZtZV9pZF9ucyAqaQogewogCXJldHVybiAwOwogfQor
c3RhdGljIGlubGluZSBzdHJ1Y3QgbnZtZV9ucyAqbnZtZV9nZXRfbnNfZnJvbV9kZXYoc3RydWN0
IGRldmljZSAqZGV2KQoreworCXJldHVybiBkZXZfdG9fZGlzayhkZXYpLT5wcml2YXRlX2RhdGE7
Cit9CiAjZW5kaWYgLyogQ09ORklHX05WTSAqLwogCiBpbnQgX19pbml0IG52bWVfY29yZV9pbml0
KHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saWdodG52bS5oIGIvaW5jbHVkZS9s
aW51eC9saWdodG52bS5oCmluZGV4IDVhZmMyNjMuLmQxOTA3ODYgMTAwNjQ0Ci0tLSBhL2luY2x1
ZGUvbGludXgvbGlnaHRudm0uaAorKysgYi9pbmNsdWRlL2xpbnV4L2xpZ2h0bnZtLmgKQEAgLTM1
Miw3ICszNTIsMTAgQEAgc3RydWN0IG52bV9kZXYgewogCiAJLyogQmFja2VuZCBkZXZpY2UgKi8K
IAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcTsKKwlzdHJ1Y3QgZGV2aWNlIGRldjsKKwlzdHJ1Y3Qg
ZGV2aWNlICpwYXJlbnRfZGV2OwogCWNoYXIgbmFtZVtESVNLX05BTUVfTEVOXTsKKwl2b2lkICpw
cml2YXRlX2RhdGE7CiAKIAlzdHJ1Y3QgbXV0ZXggbWxvY2s7CiAJc3BpbmxvY2tfdCBsb2NrOwot
LSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpMaW51eC1udm1lIG1haWxpbmcgbGlzdApMaW51eC1udm1lQGxpc3RzLmluZnJhZGVhZC5vcmcK
aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1udm1lCg==
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help