* [PATCH 5/6] lightnvm: expose device geometry through sysfs
@ 2016-06-10 12:22 Matias Bjørling
0 siblings, 0 replies; 4+ messages in thread
From: Matias Bjørling @ 2016-06-10 12:22 UTC (permalink / raw)
To: linux-block, linux-kernel, axboe, keith.busch, linux-nvme
Cc: Simon A. F. Lund, Matias Bjørling
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
dG52bS5jIHwgIDEyICsrLQogZHJpdmVycy9udm1lL2hvc3QvbnZtZS5oICAgICB8ICAyMCArKysr
LQogaW5jbHVkZS9saW51eC9saWdodG52bS5oICAgICB8ICAgMyArCiA4IGZpbGVzIGNoYW5nZWQs
IDI4MiBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk
cml2ZXJzL2xpZ2h0bnZtL2xpZ2h0bnZtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2xp
Z2h0bnZtL3N5c2ZzLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2xpZ2h0bnZtL01ha2VmaWxlIGIv
ZHJpdmVycy9saWdodG52bS9NYWtlZmlsZQppbmRleCBhN2EwYTIyLi4xZjZiNjUyIDEwMDY0NAot
LS0gYS9kcml2ZXJzL2xpZ2h0bnZtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbGlnaHRudm0vTWFr
ZWZpbGUKQEAgLTIsNiArMiw2IEBACiAjIE1ha2VmaWxlIGZvciBPcGVuLUNoYW5uZWwgU1NEcy4K
ICMKIAotb2JqLSQoQ09ORklHX05WTSkJCTo9IGNvcmUubyBzeXNibGsubworb2JqLSQoQ09ORklH
X05WTSkJCTo9IGNvcmUubyBzeXNibGsubyBzeXNmcy5vCiBvYmotJChDT05GSUdfTlZNX0dFTk5W
TSkgCSs9IGdlbm52bS5vCiBvYmotJChDT05GSUdfTlZNX1JSUEMpCQkrPSBycnBjLm8KZGlmZiAt
LWdpdCBhL2RyaXZlcnMvbGlnaHRudm0vY29yZS5jIGIvZHJpdmVycy9saWdodG52bS9jb3JlLmMK
aW5kZXggYWQyNzc2OC4uNjYxYzFiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9saWdodG52bS9jb3Jl
LmMKKysrIGIvZHJpdmVycy9saWdodG52bS9jb3JlLmMKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNs
dWRlIDxsaW51eC9saWdodG52bS5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkL3N5c2N0bC5oPgog
CisjaW5jbHVkZSAibGlnaHRudm0uaCIKKwogc3RhdGljIExJU1RfSEVBRChudm1fdGd0X3R5cGVz
KTsKIHN0YXRpYyBERUNMQVJFX1JXU0VNKG52bV90Z3R0X2xvY2spOwogc3RhdGljIExJU1RfSEVB
RChudm1fbWdycyk7CkBAIC01OTMsMTUgKzU5NSwxOSBAQCBzdGF0aWMgdm9pZCBudm1fZnJlZV9t
Z3Ioc3RydWN0IG52bV9kZXYgKmRldikKIAlkZXYtPm10ID0gTlVMTDsKIH0KIAotc3RhdGljIHZv
aWQgbnZtX2ZyZWUoc3RydWN0IG52bV9kZXYgKmRldikKK3ZvaWQgbnZtX2ZyZWUoc3RydWN0IG52
bV9kZXYgKmRldikKIHsKIAlpZiAoIWRldikKIAkJcmV0dXJuOwogCiAJbnZtX2ZyZWVfbWdyKGRl
dik7CiAKKwlpZiAoZGV2LT5kbWFfcG9vbCkKKwkJZGV2LT5vcHMtPmRlc3Ryb3lfZG1hX3Bvb2wo
ZGV2LT5kbWFfcG9vbCk7CisKIAlrZnJlZShkZXYtPmxwdGJsKTsKIAlrZnJlZShkZXYtPmx1bl9t
YXApOworCWtmcmVlKGRldik7CiB9CiAKIHN0YXRpYyBpbnQgbnZtX2luaXQoc3RydWN0IG52bV9k
ZXYgKmRldikKQEAgLTY0OCwxMSArNjU0LDcgQEAgZXJyOgogCiBzdGF0aWMgdm9pZCBudm1fZXhp
dChzdHJ1Y3QgbnZtX2RldiAqZGV2KQogewotCWlmIChkZXYtPmRtYV9wb29sKQotCQlkZXYtPm9w
cy0+ZGVzdHJveV9kbWFfcG9vbChkZXYtPmRtYV9wb29sKTsKLQludm1fZnJlZShkZXYpOwotCi0J
cHJfaW5mbygibnZtOiBzdWNjZXNzZnVsbHkgdW5sb2FkZWRcbiIpOworCW52bV9zeXNmc191bnJl
Z2lzdGVyX2RldihkZXYpOwogfQogCiBzdHJ1Y3QgbnZtX2RldiAqbnZtX2FsbG9jX2RldihpbnQg
bm9kZSkKQEAgLTY4Myw2ICs2ODUsMTAgQEAgaW50IG52bV9yZWdpc3RlcihzdHJ1Y3QgbnZtX2Rl
diAqZGV2KQogCQl9CiAJfQogCisJcmV0ID0gbnZtX3N5c2ZzX3JlZ2lzdGVyX2RldihkZXYpOwor
CWlmIChyZXQpCisJCWdvdG8gZXJyX3BwYWxpc3Q7CisKIAlpZiAoZGV2LT5pZGVudGl0eS5jYXAg
JiBOVk1fSURfRENBUF9CQkxLTUdNVCkgewogCQlyZXQgPSBudm1fZ2V0X3N5c2Jsb2NrKGRldiwg
JmRldi0+c2IpOwogCQlpZiAoIXJldCkKQEAgLTY5OSw2ICs3MDUsOCBAQCBpbnQgbnZtX3JlZ2lz
dGVyKHN0cnVjdCBudm1fZGV2ICpkZXYpCiAJdXBfd3JpdGUoJm52bV9sb2NrKTsKIAogCXJldHVy
biAwOworZXJyX3BwYWxpc3Q6CisJZGV2LT5vcHMtPmRlc3Ryb3lfZG1hX3Bvb2woZGV2LT5kbWFf
cG9vbCk7CiBlcnJfaW5pdDoKIAlrZnJlZShkZXYtPmx1bl9tYXApOwogCXJldHVybiByZXQ7CmRp
ZmYgLS1naXQgYS9kcml2ZXJzL2xpZ2h0bnZtL2xpZ2h0bnZtLmggYi9kcml2ZXJzL2xpZ2h0bnZt
L2xpZ2h0bnZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNmMWFhYwot
LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbGlnaHRudm0vbGlnaHRudm0uaApAQCAtMCwwICsx
LDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENORVggTGFicy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIEluaXRpYWwgcmVsZWFzZTogTWF0aWFzIEJqb3JsaW5nIDxtYXRpYXNAY25l
eGxhYnMuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24KKyAqIDIgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorICog
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LAorICogVVNBLgorICoK
KyAqLworCisjaWZuZGVmIExJR0hUTlZNX0gKKyNkZWZpbmUgTElHSFROVk1fSAorCisjaW5jbHVk
ZSA8bGludXgvbGlnaHRudm0uaD4KKworLyogY29yZSAtPiBzeXNmcy5jICovCitpbnQgbnZtX3N5
c2ZzX3JlZ2lzdGVyX2RldihzdHJ1Y3QgbnZtX2RldiAqKTsKK3ZvaWQgbnZtX3N5c2ZzX3VucmVn
aXN0ZXJfZGV2KHN0cnVjdCBudm1fZGV2ICopOworaW50IG52bV9zeXNmc19yZWdpc3Rlcih2b2lk
KTsKK3ZvaWQgbnZtX3N5c2ZzX3VucmVnaXN0ZXIodm9pZCk7CisKKy8qIHN5c2ZzID4gY29yZSAq
Lwordm9pZCBudm1fZnJlZShzdHJ1Y3QgbnZtX2RldiAqKTsKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9kcml2ZXJzL2xpZ2h0bnZtL3N5c2ZzLmMgYi9kcml2ZXJzL2xpZ2h0bnZtL3N5c2ZzLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjcxNDE3MgotLS0gL2Rldi9udWxsCisr
KyBiL2RyaXZlcnMvbGlnaHRudm0vc3lzZnMuYwpAQCAtMCwwICsxLDE5NSBAQAorI2luY2x1ZGUg
PGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2xpZ2h0bnZtLmg+CisjaW5jbHVkZSA8
bGludXgvbWlzY2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tvYmplY3QuaD4KKyNpbmNsdWRl
IDxsaW51eC9ibGstbXEuaD4KKworI2luY2x1ZGUgImxpZ2h0bnZtLmgiCisKK3N0YXRpYyBzc2l6
ZV90IG52bV9kZXZfYXR0cl9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgc3RydWN0IGRl
dmljZV9hdHRyaWJ1dGUgKmRhdHRyLCBjaGFyICpwYWdlKQoreworCXN0cnVjdCBudm1fZGV2ICpu
ZGV2ID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IG52bV9kZXYsIGRldik7CisJc3RydWN0IG52
bV9pZCAqaWQgPSAmbmRldi0+aWRlbnRpdHk7CisJc3RydWN0IG52bV9pZF9ncm91cCAqZ3JwID0g
JmlkLT5ncm91cHNbMF07CisJc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciA9ICZkYXR0ci0+YXR0cjsK
KworCWlmIChzdHJjbXAoYXR0ci0+bmFtZSwgInZlcnNpb24iKSA9PSAwKSB7CisJCXJldHVybiBz
Y25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT52ZXJfaWQpOworCX0gZWxzZSBp
ZiAoc3RyY21wKGF0dHItPm5hbWUsICJ2ZW5kb3Jfb3Bjb2RlIikgPT0gMCkgeworCQlyZXR1cm4g
c2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBpZC0+dm1udCk7CisJfSBlbHNlIGlm
IChzdHJjbXAoYXR0ci0+bmFtZSwgImNhcGFiaWxpdGllcyIpID09IDApIHsKKwkJcmV0dXJuIHNj
bnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgaWQtPmNhcCk7CisJfSBlbHNlIGlmIChz
dHJjbXAoYXR0ci0+bmFtZSwgImRldmljZV9tb2RlIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJp
bnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBpZC0+ZG9tKTsKKwl9IGVsc2UgaWYgKHN0cmNt
cChhdHRyLT5uYW1lLCAibWVkaWFfbWFuYWdlciIpID09IDApIHsKKwkJaWYgKCFuZGV2LT5tdCkK
KwkJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXNcbiIsICJub25lIik7CisJ
CXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXNcbiIsIG5kZXYtPm10LT5uYW1l
KTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAicHBhX2Zvcm1hdCIpID09IDApIHsK
KwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsCisJCQkiMHglMDJ4JTAyeCUwMngl
MDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnhcbiIsCisJCQlpZC0+cHBhZi5jaF9v
ZmZzZXQsIGlkLT5wcGFmLmNoX2xlbiwKKwkJCWlkLT5wcGFmLmx1bl9vZmZzZXQsIGlkLT5wcGFm
Lmx1bl9sZW4sCisJCQlpZC0+cHBhZi5wbG5fb2Zmc2V0LCBpZC0+cHBhZi5wbG5fbGVuLAorCQkJ
aWQtPnBwYWYuYmxrX29mZnNldCwgaWQtPnBwYWYuYmxrX2xlbiwKKwkJCWlkLT5wcGFmLnBnX29m
ZnNldCwgaWQtPnBwYWYucGdfbGVuLAorCQkJaWQtPnBwYWYuc2VjdF9vZmZzZXQsIGlkLT5wcGFm
LnNlY3RfbGVuKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAibWVkaWFfdHlwZSIp
ID09IDApIHsJLyogdTggKi8KKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIl
dVxuIiwgZ3JwLT5tdHlwZSk7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgImZsYXNo
X21lZGlhX3R5cGUiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpF
LCAiJXVcbiIsIGdycC0+Zm10eXBlKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAi
bnVtX2NoYW5uZWxzIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0la
RSwgIiV1XG4iLCBncnAtPm51bV9jaCk7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwg
Im51bV9sdW5zIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwg
IiV1XG4iLCBncnAtPm51bV9sdW4pOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJu
dW1fcGxhbmVzIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwg
IiV1XG4iLCBncnAtPm51bV9wbG4pOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJu
dW1fYmxvY2tzIikgPT0gMCkgewkvKiB1MTYgKi8KKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQ
QUdFX1NJWkUsICIldVxuIiwgZ3JwLT5udW1fYmxrKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRy
LT5uYW1lLCAibnVtX3BhZ2VzIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBB
R0VfU0laRSwgIiV1XG4iLCBncnAtPm51bV9wZyk7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+
bmFtZSwgInBhZ2Vfc2l6ZSIpID09IDApIHsKKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdF
X1NJWkUsICIldVxuIiwgZ3JwLT5mcGdfc3opOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5h
bWUsICJod19zZWN0b3Jfc2l6ZSIpID09IDApIHsKKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQ
QUdFX1NJWkUsICIldVxuIiwgZ3JwLT5jc2Vjcyk7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+
bmFtZSwgIm9vYl9zZWN0b3Jfc2l6ZSIpID09IDApIHsvKiB1MzIgKi8KKwkJcmV0dXJuIHNjbnBy
aW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZ3JwLT5zb3MpOworCX0gZWxzZSBpZiAoc3Ry
Y21wKGF0dHItPm5hbWUsICJyZWFkX3R5cCIpID09IDApIHsKKwkJcmV0dXJuIHNjbnByaW50Zihw
YWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZ3JwLT50cmR0KTsKKwl9IGVsc2UgaWYgKHN0cmNtcChh
dHRyLT5uYW1lLCAicmVhZF9tYXgiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwg
UEFHRV9TSVpFLCAiJXVcbiIsIGdycC0+dHJkbSk7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+
bmFtZSwgInByb2dfdHlwIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0Vf
U0laRSwgIiV1XG4iLCBncnAtPnRwcnQpOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUs
ICJwcm9nX21heCIpID09IDApIHsKKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUs
ICIldVxuIiwgZ3JwLT50cHJtKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAiZXJh
c2VfdHlwIikgPT0gMCkgeworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1
XG4iLCBncnAtPnRiZXQpOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJlcmFzZV9t
YXgiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIs
IGdycC0+dGJlbSk7CisJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgIm11bHRpcGxhbmVf
bW9kZXMiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiMHgl
MDh4XG4iLCBncnAtPm1wb3MpOworCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJtZWRp
YV9jYXBhYmlsaXRpZXMiKSA9PSAwKSB7CisJCXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9T
SVpFLCAiMHglMDh4XG4iLCBncnAtPm1jY2FwKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5u
YW1lLCAiY2hhbm5lbF9wYXJhbGxlbGlzbSIpID09IDApIHsvKiB1MTYgKi8KKwkJcmV0dXJuIHNj
bnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZ3JwLT5jcGFyKTsKKwl9IGVsc2Ugewor
CQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsCisJCQkJIFBBR0VfU0laRSwKKwkJCQkgIlVuaGFuZGxl
ZCBhdHRyKCVzKSBpbiBgbnZtX2Rldl9hdHRyX3Nob3dgXG4iLAorCQkJCSBhdHRyLT5uYW1lKTsK
Kwl9Cit9CisKKyNkZWZpbmUgTlZNX0RFVl9BVFRSX1JPKF9uYW1lKQkJCQkJCVwKKwlERVZJQ0Vf
QVRUUihfbmFtZSwgU19JUlVHTywgbnZtX2Rldl9hdHRyX3Nob3csIE5VTEwpCisKK3N0YXRpYyBO
Vk1fREVWX0FUVFJfUk8odmVyc2lvbik7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKHZlbmRvcl9v
cGNvZGUpOworc3RhdGljIE5WTV9ERVZfQVRUUl9STyhjYXBhYmlsaXRpZXMpOworc3RhdGljIE5W
TV9ERVZfQVRUUl9STyhkZXZpY2VfbW9kZSk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKHBwYV9m
b3JtYXQpOworc3RhdGljIE5WTV9ERVZfQVRUUl9STyhtZWRpYV9tYW5hZ2VyKTsKKworc3RhdGlj
IE5WTV9ERVZfQVRUUl9STyhtZWRpYV90eXBlKTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8oZmxh
c2hfbWVkaWFfdHlwZSk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKG51bV9jaGFubmVscyk7Citz
dGF0aWMgTlZNX0RFVl9BVFRSX1JPKG51bV9sdW5zKTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8o
bnVtX3BsYW5lcyk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKG51bV9ibG9ja3MpOworc3RhdGlj
IE5WTV9ERVZfQVRUUl9STyhudW1fcGFnZXMpOworc3RhdGljIE5WTV9ERVZfQVRUUl9STyhwYWdl
X3NpemUpOworc3RhdGljIE5WTV9ERVZfQVRUUl9STyhod19zZWN0b3Jfc2l6ZSk7CitzdGF0aWMg
TlZNX0RFVl9BVFRSX1JPKG9vYl9zZWN0b3Jfc2l6ZSk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JP
KHJlYWRfdHlwKTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8ocmVhZF9tYXgpOworc3RhdGljIE5W
TV9ERVZfQVRUUl9STyhwcm9nX3R5cCk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKHByb2dfbWF4
KTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8oZXJhc2VfdHlwKTsKK3N0YXRpYyBOVk1fREVWX0FU
VFJfUk8oZXJhc2VfbWF4KTsKK3N0YXRpYyBOVk1fREVWX0FUVFJfUk8obXVsdGlwbGFuZV9tb2Rl
cyk7CitzdGF0aWMgTlZNX0RFVl9BVFRSX1JPKG1lZGlhX2NhcGFiaWxpdGllcyk7CitzdGF0aWMg
TlZNX0RFVl9BVFRSX1JPKGNoYW5uZWxfcGFyYWxsZWxpc20pOworCisjZGVmaW5lIE5WTV9ERVZf
QVRUUihfbmFtZSkgKGRldl9hdHRyXyMjX25hbWUjIykKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1
dGUgKm52bV9kZXZfYXR0cnNbXSA9IHsKKwkmZGV2X2F0dHJfdmVyc2lvbi5hdHRyLAorCSZkZXZf
YXR0cl92ZW5kb3Jfb3Bjb2RlLmF0dHIsCisJJmRldl9hdHRyX2NhcGFiaWxpdGllcy5hdHRyLAor
CSZkZXZfYXR0cl9kZXZpY2VfbW9kZS5hdHRyLAorCSZkZXZfYXR0cl9tZWRpYV9tYW5hZ2VyLmF0
dHIsCisKKwkmZGV2X2F0dHJfcHBhX2Zvcm1hdC5hdHRyLAorCSZkZXZfYXR0cl9tZWRpYV90eXBl
LmF0dHIsCisJJmRldl9hdHRyX2ZsYXNoX21lZGlhX3R5cGUuYXR0ciwKKwkmZGV2X2F0dHJfbnVt
X2NoYW5uZWxzLmF0dHIsCisJJmRldl9hdHRyX251bV9sdW5zLmF0dHIsCisJJmRldl9hdHRyX251
bV9wbGFuZXMuYXR0ciwKKwkmZGV2X2F0dHJfbnVtX2Jsb2Nrcy5hdHRyLAorCSZkZXZfYXR0cl9u
dW1fcGFnZXMuYXR0ciwKKwkmZGV2X2F0dHJfcGFnZV9zaXplLmF0dHIsCisJJmRldl9hdHRyX2h3
X3NlY3Rvcl9zaXplLmF0dHIsCisJJmRldl9hdHRyX29vYl9zZWN0b3Jfc2l6ZS5hdHRyLAorCSZk
ZXZfYXR0cl9yZWFkX3R5cC5hdHRyLAorCSZkZXZfYXR0cl9yZWFkX21heC5hdHRyLAorCSZkZXZf
YXR0cl9wcm9nX3R5cC5hdHRyLAorCSZkZXZfYXR0cl9wcm9nX21heC5hdHRyLAorCSZkZXZfYXR0
cl9lcmFzZV90eXAuYXR0ciwKKwkmZGV2X2F0dHJfZXJhc2VfbWF4LmF0dHIsCisJJmRldl9hdHRy
X211bHRpcGxhbmVfbW9kZXMuYXR0ciwKKwkmZGV2X2F0dHJfbWVkaWFfY2FwYWJpbGl0aWVzLmF0
dHIsCisJJmRldl9hdHRyX2NoYW5uZWxfcGFyYWxsZWxpc20uYXR0ciwKKwlOVUxMLAorfTsKKwor
c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbnZtX2Rldl9hdHRyX2dyb3VwID0geworCS5u
YW1lID0gImxpZ2h0bnZtIiwKKwkuYXR0cnMgPSBudm1fZGV2X2F0dHJzLAorfTsKKworc3RhdGlj
IGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKm52bV9kZXZfYXR0cl9ncm91cHNbXSA9IHsK
KwkmbnZtX2Rldl9hdHRyX2dyb3VwLAorCU5VTEwsCit9OworCitzdGF0aWMgdm9pZCBudm1fZGV2
X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2aWNlKQoreworCXN0cnVjdCBudm1fZGV2ICpkZXYg
PSBjb250YWluZXJfb2YoZGV2aWNlLCBzdHJ1Y3QgbnZtX2RldiwgZGV2KTsKKwlzdHJ1Y3QgcmVx
dWVzdF9xdWV1ZSAqcSA9IGRldi0+cTsKKworCXByX2RlYnVnKCJudm0vc3lzZnM6IGBudm1fZGV2
X3JlbGVhc2VgXG4iKTsKKworCWJsa19tcV91bnJlZ2lzdGVyX2RldihkZXZpY2UsIHEpOworCisJ
bnZtX2ZyZWUoZGV2KTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZpY2VfdHlwZSBudm1fdHlwZSA9
IHsKKwkubmFtZQkJPSAibGlnaHRudm0iLAorCS5ncm91cHMJCT0gbnZtX2Rldl9hdHRyX2dyb3Vw
cywKKwkucmVsZWFzZQk9IG52bV9kZXZfcmVsZWFzZSwKK307CisKK2ludCBudm1fc3lzZnNfcmVn
aXN0ZXJfZGV2KHN0cnVjdCBudm1fZGV2ICpkZXYpCit7CisJaWYgKCFkZXYtPnBhcmVudF9kZXYp
CisJCXJldHVybiAwOworCisJZGV2LT5kZXYucGFyZW50ID0gZGV2LT5wYXJlbnRfZGV2OworCWRl
dl9zZXRfbmFtZSgmZGV2LT5kZXYsICIlcyIsIGRldi0+bmFtZSk7CisJZGV2LT5kZXYuY2xhc3Mg
PSBkZXYtPnBhcmVudF9kZXYtPmNsYXNzOworCWRldi0+ZGV2LnR5cGUgPSAmbnZtX3R5cGU7CisJ
ZGV2aWNlX2luaXRpYWxpemUoJmRldi0+ZGV2KTsKKwlkZXZpY2VfYWRkKCZkZXYtPmRldik7CisK
KwlibGtfbXFfcmVnaXN0ZXJfZGV2KCZkZXYtPmRldiwgZGV2LT5xKTsKKworCXJldHVybiAwOwor
fQorCit2b2lkIG52bV9zeXNmc191bnJlZ2lzdGVyX2RldihzdHJ1Y3QgbnZtX2RldiAqZGV2KQor
eworCWlmIChkZXYgJiYgZGV2LT5wYXJlbnRfZGV2KQorCQlrb2JqZWN0X3B1dCgmZGV2LT5kZXYu
a29iaik7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMgYi9kcml2ZXJz
L252bWUvaG9zdC9jb3JlLmMKaW5kZXggZmUxMzVkOS4uMWM1ODY5MiAxMDA2NDQKLS0tIGEvZHJp
dmVycy9udm1lL2hvc3QvY29yZS5jCisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYwpAQCAt
MTI5Niw3ICsxMjk2LDcgQEAgc3RhdGljIERFVklDRV9BVFRSKHJlc2Nhbl9jb250cm9sbGVyLCBT
X0lXVVNSLCBOVUxMLCBudm1lX3N5c2ZzX3Jlc2Nhbik7CiBzdGF0aWMgc3NpemVfdCB3d2lkX3No
b3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJ
CQkJCQkJY2hhciAqYnVmKQogewotCXN0cnVjdCBudm1lX25zICpucyA9IGRldl90b19kaXNrKGRl
diktPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgbnZtZV9ucyAqbnMgPSBudm1lX2dldF9uc19mcm9t
X2RldihkZXYpOwogCXN0cnVjdCBudm1lX2N0cmwgKmN0cmwgPSBucy0+Y3RybDsKIAlpbnQgc2Vy
aWFsX2xlbiA9IHNpemVvZihjdHJsLT5zZXJpYWwpOwogCWludCBtb2RlbF9sZW4gPSBzaXplb2Yo
Y3RybC0+bW9kZWwpOwpAQCAtMTMyMCw3ICsxMzIwLDcgQEAgc3RhdGljIERFVklDRV9BVFRSKHd3
aWQsIFNfSVJVR08sIHd3aWRfc2hvdywgTlVMTCk7CiBzdGF0aWMgc3NpemVfdCB1dWlkX3Nob3co
c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAkJCQkJ
CQkJY2hhciAqYnVmKQogewotCXN0cnVjdCBudm1lX25zICpucyA9IGRldl90b19kaXNrKGRldikt
PnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgbnZtZV9ucyAqbnMgPSBudm1lX2dldF9uc19mcm9tX2Rl
dihkZXYpOwogCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVwVVxuIiwgbnMtPnV1aWQpOwogfQogc3Rh
dGljIERFVklDRV9BVFRSKHV1aWQsIFNfSVJVR08sIHV1aWRfc2hvdywgTlVMTCk7CkBAIC0xMzI4
LDcgKzEzMjgsNyBAQCBzdGF0aWMgREVWSUNFX0FUVFIodXVpZCwgU19JUlVHTywgdXVpZF9zaG93
LCBOVUxMKTsKIHN0YXRpYyBzc2l6ZV90IGV1aV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry
dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkJCQkJCWNoYXIgKmJ1ZikKIHsKLQlzdHJ1
Y3QgbnZtZV9ucyAqbnMgPSBkZXZfdG9fZGlzayhkZXYpLT5wcml2YXRlX2RhdGE7CisJc3RydWN0
IG52bWVfbnMgKm5zID0gbnZtZV9nZXRfbnNfZnJvbV9kZXYoZGV2KTsKIAlyZXR1cm4gc3ByaW50
ZihidWYsICIlOHBoZFxuIiwgbnMtPmV1aSk7CiB9CiBzdGF0aWMgREVWSUNFX0FUVFIoZXVpLCBT
X0lSVUdPLCBldWlfc2hvdywgTlVMTCk7CkBAIC0xMzM2LDcgKzEzMzYsNyBAQCBzdGF0aWMgREVW
SUNFX0FUVFIoZXVpLCBTX0lSVUdPLCBldWlfc2hvdywgTlVMTCk7CiBzdGF0aWMgc3NpemVfdCBu
c2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0
ciwKIAkJCQkJCQkJY2hhciAqYnVmKQogewotCXN0cnVjdCBudm1lX25zICpucyA9IGRldl90b19k
aXNrKGRldiktPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgbnZtZV9ucyAqbnMgPSBudm1lX2dldF9u
c19mcm9tX2RldihkZXYpOwogCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBucy0+bnNfaWQp
OwogfQogc3RhdGljIERFVklDRV9BVFRSKG5zaWQsIFNfSVJVR08sIG5zaWRfc2hvdywgTlVMTCk7
CkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBzdGF0aWMgdW1vZGVfdCBudm1lX2F0dHJzX2FyZV92aXNp
YmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogCQlzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbikK
IHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRldmlj
ZSwga29iaik7Ci0Jc3RydWN0IG52bWVfbnMgKm5zID0gZGV2X3RvX2Rpc2soZGV2KS0+cHJpdmF0
ZV9kYXRhOworCXN0cnVjdCBudm1lX25zICpucyA9IG52bWVfZ2V0X25zX2Zyb21fZGV2KGRldik7
CiAKIAlpZiAoYSA9PSAmZGV2X2F0dHJfdXVpZC5hdHRyKSB7CiAJCWlmICghbWVtY2hyX2ludihu
cy0+dXVpZCwgMCwgc2l6ZW9mKG5zLT51dWlkKSkpCkBAIC0xNDc0LDcgKzE0NzQsOCBAQCBzdGF0
aWMgdm9pZCBudm1lX2FsbG9jX25zKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwsIHVuc2lnbmVkIG5z
aWQpCiAJc3ByaW50ZihkaXNrX25hbWUsICJudm1lJWRuJWQiLCBjdHJsLT5pbnN0YW5jZSwgbnMt
Pmluc3RhbmNlKTsKIAogCWlmIChudm1lX252bV9uc19zdXBwb3J0ZWQobnMsIGlkKSkgewotCQlp
ZiAobnZtZV9udm1fcmVnaXN0ZXIobnMsIGRpc2tfbmFtZSwgbm9kZSkpIHsKKwkJaWYgKG52bWVf
bnZtX3JlZ2lzdGVyKG5zLCBkaXNrX25hbWUsIG5vZGUsCisJCQkJCQkJJm52bWVfbnNfYXR0cl9n
cm91cCkpIHsKIAkJCWRldl93YXJuKGN0cmwtPmRldiwgIiVzOiBMaWdodE5WTSBpbml0IGZhaWx1
cmVcbiIsCiAJCQkJCQkJCV9fZnVuY19fKTsKIAkJCWdvdG8gb3V0X2ZyZWVfaWQ7CmRpZmYgLS1n
aXQgYS9kcml2ZXJzL252bWUvaG9zdC9saWdodG52bS5jIGIvZHJpdmVycy9udm1lL2hvc3QvbGln
aHRudm0uYwppbmRleCAwOTVlNThlLi4zNGJlYTg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUv
aG9zdC9saWdodG52bS5jCisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2xpZ2h0bnZtLmMKQEAgLTU5
MiwxMCArNTkyLDEyIEBAIHN0YXRpYyBzdHJ1Y3QgbnZtX2Rldl9vcHMgbnZtZV9udm1fZGV2X29w
cyA9IHsKIAkubWF4X3BoeXNfc2VjdAkJPSA2NCwKIH07CiAKLWludCBudm1lX252bV9yZWdpc3Rl
cihzdHJ1Y3QgbnZtZV9ucyAqbnMsIGNoYXIgKmRpc2tfbmFtZSwgaW50IG5vZGUpCitpbnQgbnZt
ZV9udm1fcmVnaXN0ZXIoc3RydWN0IG52bWVfbnMgKm5zLCBjaGFyICpkaXNrX25hbWUsIGludCBu
b2RlLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICphdHRycykKIHsKIAlz
dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IG5zLT5xdWV1ZTsKIAlzdHJ1Y3QgbnZtX2RldiAqZGV2
OworCWludCByZXQ7CiAKIAlkZXYgPSBudm1fYWxsb2NfZGV2KG5vZGUpOwogCWlmICghZGV2KQpA
QCAtNjA0LDkgKzYwNiwxNSBAQCBpbnQgbnZtZV9udm1fcmVnaXN0ZXIoc3RydWN0IG52bWVfbnMg
Km5zLCBjaGFyICpkaXNrX25hbWUsIGludCBub2RlKQogCWRldi0+cSA9IHE7CiAJbWVtY3B5KGRl
di0+bmFtZSwgZGlza19uYW1lLCBESVNLX05BTUVfTEVOKTsKIAlkZXYtPm9wcyA9ICZudm1lX252
bV9kZXZfb3BzOworCWRldi0+cGFyZW50X2RldiA9IG5zLT5jdHJsLT5kZXZpY2U7CisJZGV2LT5w
cml2YXRlX2RhdGEgPSBuczsKIAlucy0+bmRldiA9IGRldjsKIAotCXJldHVybiBudm1fcmVnaXN0
ZXIoZGV2KTsKKwlyZXQgPSBudm1fcmVnaXN0ZXIoZGV2KTsKKwlpZiAoc3lzZnNfY3JlYXRlX2dy
b3VwKCZkZXYtPmRldi5rb2JqLCBhdHRycykpCisJCXByX3dhcm4oIiVzOiBmYWlsZWQgdG8gY3Jl
YXRlIHN5c2ZzIGdyb3VwIGZvciBpZGVudGlmaWNhdGlvblxuIiwKKwkJCW5zLT5kaXNrLT5kaXNr
X25hbWUpOworCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgbnZtZV9udm1fdW5yZWdpc3RlcihzdHJ1
Y3QgbnZtZV9ucyAqbnMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9udm1lLmggYi9k
cml2ZXJzL252bWUvaG9zdC9udm1lLmgKaW5kZXggN2I0OWI0NS4uNDNhNmU5MyAxMDA2NDQKLS0t
IGEvZHJpdmVycy9udm1lL2hvc3QvbnZtZS5oCisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L252bWUu
aApAQCAtMjY3LDExICsyNjcsMjEgQEAgaW50IG52bWVfc2dfZ2V0X3ZlcnNpb25fbnVtKGludCBf
X3VzZXIgKmlwKTsKIAogI2lmZGVmIENPTkZJR19OVk0KIGludCBudm1lX252bV9uc19zdXBwb3J0
ZWQoc3RydWN0IG52bWVfbnMgKm5zLCBzdHJ1Y3QgbnZtZV9pZF9ucyAqaWQpOwotaW50IG52bWVf
bnZtX3JlZ2lzdGVyKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBjaGFyICpkaXNrX25hbWUpOwot
dm9pZCBudm1lX252bV91bnJlZ2lzdGVyKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBjaGFyICpk
aXNrX25hbWUpOworaW50IG52bWVfbnZtX3JlZ2lzdGVyKHN0cnVjdCBudm1lX25zICpucywgY2hh
ciAqZGlza19uYW1lLCBpbnQgbm9kZSwKKwkJICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9n
cm91cCAqYXR0cnMpOwordm9pZCBudm1lX252bV91bnJlZ2lzdGVyKHN0cnVjdCBudm1lX25zICpu
cyk7CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IG52bWVfbnMgKm52bWVfZ2V0X25zX2Zyb21fZGV2
KHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlpZiAoZGV2LT50eXBlLT5kZXZub2RlKQorCQlyZXR1
cm4gZGV2X3RvX2Rpc2soZGV2KS0+cHJpdmF0ZV9kYXRhOworCisJcmV0dXJuIChjb250YWluZXJf
b2YoZGV2LCBzdHJ1Y3QgbnZtX2RldiwgZGV2KSktPnByaXZhdGVfZGF0YTsKK30KICNlbHNlCiBz
dGF0aWMgaW5saW5lIGludCBudm1lX252bV9yZWdpc3RlcihzdHJ1Y3QgbnZtZV9ucyAqbnMsIGNo
YXIgKmRpc2tfbmFtZSwKLQkJCQkJCQkJaW50IG5vZGUpCisJCQkJICAgIGludCBub2RlLAorCQkJ
CSAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICphdHRycykKIHsKIAlyZXR1cm4gMDsK
IH0KQEAgLTI4Miw2ICsyOTIsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgbnZtZV9udm1fbnNfc3Vw
cG9ydGVkKHN0cnVjdCBudm1lX25zICpucywgc3RydWN0IG52bWVfaWRfbnMgKmkKIHsKIAlyZXR1
cm4gMDsKIH0KK3N0YXRpYyBpbmxpbmUgc3RydWN0IG52bWVfbnMgKm52bWVfZ2V0X25zX2Zyb21f
ZGV2KHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gZGV2X3RvX2Rpc2soZGV2KS0+cHJp
dmF0ZV9kYXRhOworfQogI2VuZGlmIC8qIENPTkZJR19OVk0gKi8KIAogaW50IF9faW5pdCBudm1l
X2NvcmVfaW5pdCh2b2lkKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGlnaHRudm0uaCBi
L2luY2x1ZGUvbGludXgvbGlnaHRudm0uaAppbmRleCA1YWZjMjYzLi5kMTkwNzg2IDEwMDY0NAot
LS0gYS9pbmNsdWRlL2xpbnV4L2xpZ2h0bnZtLmgKKysrIGIvaW5jbHVkZS9saW51eC9saWdodG52
bS5oCkBAIC0zNTIsNyArMzUyLDEwIEBAIHN0cnVjdCBudm1fZGV2IHsKIAogCS8qIEJhY2tlbmQg
ZGV2aWNlICovCiAJc3RydWN0IHJlcXVlc3RfcXVldWUgKnE7CisJc3RydWN0IGRldmljZSBkZXY7
CisJc3RydWN0IGRldmljZSAqcGFyZW50X2RldjsKIAljaGFyIG5hbWVbRElTS19OQU1FX0xFTl07
CisJdm9pZCAqcHJpdmF0ZV9kYXRhOwogCiAJc3RydWN0IG11dGV4IG1sb2NrOwogCXNwaW5sb2Nr
X3QgbG9jazsKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTGludXgtbnZtZSBtYWlsaW5nIGxpc3QKTGludXgtbnZtZUBsaXN0cy5pbmZy
YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu
dXgtbnZtZQo=
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 5/6] lightnvm: expose device geometry through sysfs
2016-06-29 14:51 [PATCH 0/6] enable sysfs for lightnvm Matias Bjørling
@ 2016-06-29 14:51 ` Matias Bjørling
2016-06-30 20:01 ` J Freyensee
0 siblings, 1 reply; 4+ messages in thread
From: Matias Bjørling @ 2016-06-29 14:51 UTC (permalink / raw)
To: linux-block, linux-kernel, axboe, keith.busch, linux-nvme,
dm-devel
Cc: Simon A. F. Lund, Matias Bjørling
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==
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 5/6] lightnvm: expose device geometry through sysfs
2016-06-29 14:51 ` [PATCH 5/6] lightnvm: expose device geometry through sysfs Matias Bjørling
@ 2016-06-30 20:01 ` J Freyensee
2016-07-01 7:20 ` Matias Bjørling
0 siblings, 1 reply; 4+ messages in thread
From: J Freyensee @ 2016-06-30 20:01 UTC (permalink / raw)
To: Matias Bjørling, linux-block, linux-kernel, axboe,
keith.busch, linux-nvme, dm-devel
Cc: Simon A. F. Lund
On Wed, 2016-06-29 at 16:51 +0200, Matias Bjørling wrote:
> From: "Simon A. F. Lund" <slund@cnexlabs.com>
>
> For a host to access an Open-Channel SSD, it has to know its
> geometry,
> so that it writes and reads at the appropriate device bounds.
>
> Currently, the geometry information is kept within the kernel, and
> not
> exported to user-space for consumption. This patch exposes the
> configuration through sysfs and enables user-space libraries, such as
> liblightnvm, to use the sysfs implementation to get the geometry of
> an
> Open-Channel SSD.
>
> The sysfs entries are stored within the device hierarchy, and can be
> found using the "lightnvm" device type.
>
> An example configuration looks like this:
>
> /sys/class/nvme/
> └── nvme0n1
> ├── capabilities: 3
> ├── device_mode: 1
> ├── channel_parallelism: 0
> ├── erase_max: 1000000
> ├── erase_typ: 1000000
> ├── flash_media_type: 0
> ├── media_capabilities: 0x00000001
> ├── media_type: 0
> ├── multiplane: 0x00010101
> ├── num_blocks: 1022
> ├── num_channels: 1
> ├── num_luns: 4
> ├── num_pages: 64
> ├── num_planes: 1
> ├── page_size: 4096
> ├── prog_max: 100000
> ├── prog_typ: 100000
> ├── read_max: 10000
> ├── read_typ: 10000
> ├── sector_oob_size: 0
> ├── sector_size: 4096
> ├── media_manager: gennvm
> ├── ppa_format: 0x380830082808001010102008
> ├── vendor_opcode: 0
> └── version: 1
>
That is an awful lot of new things to add under nvme0n1-type sysfs
entries when there is already a decent amount of stuff under it.
Any chance these new things could be stuck under a separate sysfs
directory under each nvmeXnY device? If these things are mainly
beneficial to LightNVM, it will be easier for a LightNVM newbie to
find, recognize, and consider all the important things in an Open
Channel SSD solution if it's under a separate directory. And for
current SSD solutions that don't seem to need these things exposed in
sysfs for operation, it will make what is directly under nvmeXnY
directories less cluttered.
Thanks,
Jay
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 5/6] lightnvm: expose device geometry through sysfs
2016-06-30 20:01 ` J Freyensee
@ 2016-07-01 7:20 ` Matias Bjørling
0 siblings, 0 replies; 4+ messages in thread
From: Matias Bjørling @ 2016-07-01 7:20 UTC (permalink / raw)
To: J Freyensee, linux-block, linux-kernel, axboe, keith.busch,
linux-nvme, dm-devel
Cc: Simon A. F. Lund
On 06/30/2016 10:01 PM, J Freyensee wrote:
> On Wed, 2016-06-29 at 16:51 +0200, Matias Bjørling wrote:
>> From: "Simon A. F. Lund" <slund@cnexlabs.com>
>>
>> For a host to access an Open-Channel SSD, it has to know its
>> geometry,
>> so that it writes and reads at the appropriate device bounds.
>>
>> Currently, the geometry information is kept within the kernel, and
>> not
>> exported to user-space for consumption. This patch exposes the
>> configuration through sysfs and enables user-space libraries, such as
>> liblightnvm, to use the sysfs implementation to get the geometry of
>> an
>> Open-Channel SSD.
>>
>> The sysfs entries are stored within the device hierarchy, and can be
>> found using the "lightnvm" device type.
>>
>> An example configuration looks like this:
>>
>> /sys/class/nvme/
>> └── nvme0n1
>> ├── capabilities: 3
>> ├── device_mode: 1
>> ├── channel_parallelism: 0
>> ├── erase_max: 1000000
>> ├── erase_typ: 1000000
>> ├── flash_media_type: 0
>> ├── media_capabilities: 0x00000001
>> ├── media_type: 0
>> ├── multiplane: 0x00010101
>> ├── num_blocks: 1022
>> ├── num_channels: 1
>> ├── num_luns: 4
>> ├── num_pages: 64
>> ├── num_planes: 1
>> ├── page_size: 4096
>> ├── prog_max: 100000
>> ├── prog_typ: 100000
>> ├── read_max: 10000
>> ├── read_typ: 10000
>> ├── sector_oob_size: 0
>> ├── sector_size: 4096
>> ├── media_manager: gennvm
>> ├── ppa_format: 0x380830082808001010102008
>> ├── vendor_opcode: 0
>> └── version: 1
>>
>
> That is an awful lot of new things to add under nvme0n1-type sysfs
> entries when there is already a decent amount of stuff under it.
>
You are right. These are rightfully placed under /lightnvm in the sysfs
path. The description is wrong, will update it. Thanks Jay.
> Any chance these new things could be stuck under a separate sysfs
> directory under each nvmeXnY device? If these things are mainly
> beneficial to LightNVM, it will be easier for a LightNVM newbie to
> find, recognize, and consider all the important things in an Open
> Channel SSD solution if it's under a separate directory. And for
> current SSD solutions that don't seem to need these things exposed in
> sysfs for operation, it will make what is directly under nvmeXnY
> directories less cluttered.
>
> Thanks,
> Jay
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-07-01 7:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-10 12:22 [PATCH 5/6] lightnvm: expose device geometry through sysfs Matias Bjørling
-- strict thread matches above, loose matches on Subject: below --
2016-06-29 14:51 [PATCH 0/6] enable sysfs for lightnvm Matias Bjørling
2016-06-29 14:51 ` [PATCH 5/6] lightnvm: expose device geometry through sysfs Matias Bjørling
2016-06-30 20:01 ` J Freyensee
2016-07-01 7:20 ` Matias Bjørling
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).