[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==