[PATCH 4/6] lightnvm: let drivers control the lifetime of nvm_dev
From: Matias Bjørling <hidden>
Date: 2016-06-10 12:21:49
Also in:
linux-nvme, lkml
Subsystem:
block layer, nvm express driver, the rest · Maintainers:
Jens Axboe, Keith Busch, Christoph Hellwig, Sagi Grimberg, Linus Torvalds
TGlnaHROVk0gZG9lcyBub3QgY3VycmVudGx5IGV4cG9zZSB0aGUgZGV2aWNlIGRyaXZlciBzeXNm cyBzcGVjaWZpYwplbnRyaWVzIHRvIHVzZXItc3BhY2UsIGFzIHRoZSBkZXZpY2UgZHJpdmVyIHNr aXBzIHRoZSBpbml0aWFsaXphdGlvbiBvZgpnZW5kaXNrLgoKVG8gZW5hYmxlIGEgZGV2aWNlIGRy aXZlciBzeXNmcyBlbnRyaWVzIHRvIGJlIGV4cG9zZWQsIHdlIG5lZWQgYSBzdHJ1Y3QKZGV2aWNl IHRvIGF0dGFjaCBpdCB0by4gVG8gYWxsb3cgYm90aCB0aGUgZGV2aWNlIGRyaXZlciBhbmQgTGln aHROVk0gdG8KYWNjZXNzIHRoZSBzYW1lIHN0cnVjdCBkZXZpY2UsIHdlIG5lZWQgdGhlIGRldmlj ZSBkcml2ZXIgdG8gdHJhY2sgdGhlCmxpZmV0aW1lIG9mIHRoZSBudm1fZGV2IHN0cnVjdHVyZS4K ClRoaXMgcGF0Y2ggcmVmYWN0b3JzIHRoZSB0d28gdXNlcnMgb2YgTGlnaHROVk0gKE5WTWUgYW5k IG51bGxfYmxrKSwKZW5hYmxlcyB0aGVtIHRvIGFsbG9jYXRlIGFuZCBmcmVlIG52bV9kZXYsIGFu ZCBhdCBsYXN0IHJlbW92ZXMgZ2VuZGlzawp1c2FnZSB3aGVuIGEgTGlnaHROVk0gZGV2aWNlIGlz IHVzZWQuCgpTaWduZWQtb2ZmLWJ5OiBNYXRpYXMgQmrDuHJsaW5nIDxtQGJqb3JsaW5nLm1lPgot LS0KIGRyaXZlcnMvYmxvY2svbnVsbF9ibGsuYyAgICAgfCAyMiArKysrKysrKysrKysrKysrKysr Ky0tCiBkcml2ZXJzL2xpZ2h0bnZtL2NvcmUuYyAgICAgIHwgMzQgKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9udm1lL2hvc3QvY29yZS5jICAgICB8IDM0ICsrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvbnZtZS9ob3N0L2xpZ2h0bnZt LmMgfCAyMSArKysrKysrKysrKysrKysrKy0tLS0KIGRyaXZlcnMvbnZtZS9ob3N0L252bWUuaCAg ICAgfCAgOCArKysrKy0tLQogaW5jbHVkZS9saW51eC9saWdodG52bS5oICAgICB8IDE1ICsrKysr KysrKy0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrLmMgYi9kcml2ZXJzL2Js b2NrL251bGxfYmxrLmMKaW5kZXggMzExN2RmMS4uNWEwZGE4YiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ibG9jay9udWxsX2Jsay5jCisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsuYwpAQCAtMzQs NiArMzQsNyBAQCBzdHJ1Y3QgbnVsbGIgewogCXVuc2lnbmVkIGludCBpbmRleDsKIAlzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcTsKIAlzdHJ1Y3QgZ2VuZGlzayAqZGlzazsKKwlzdHJ1Y3QgbnZtX2Rl diAqbmRldjsKIAlzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDsKIAlzdHJ1Y3QgaHJ0aW1l ciB0aW1lcjsKIAl1bnNpZ25lZCBpbnQgcXVldWVfZGVwdGg7CkBAIC01NTAsMTIgKzU1MSwyOSBA QCBzdGF0aWMgc3RydWN0IG52bV9kZXZfb3BzIG51bGxfbG52bV9kZXZfb3BzID0gewogCiBzdGF0 aWMgaW50IG51bGxfbnZtX3JlZ2lzdGVyKHN0cnVjdCBudWxsYiAqbnVsbGIpCiB7Ci0JcmV0dXJu IG52bV9yZWdpc3RlcihudWxsYi0+cSwgbnVsbGItPmRpc2tfbmFtZSwgJm51bGxfbG52bV9kZXZf b3BzKTsKKwlzdHJ1Y3QgbnZtX2RldiAqZGV2OworCWludCBydjsKKworCWRldiA9IG52bV9hbGxv Y19kZXYoMCk7CisJaWYgKCFkZXYpCisJCXJldHVybiAtRU5PTUVNOworCisJZGV2LT5xID0gbnVs bGItPnE7CisJbWVtY3B5KGRldi0+bmFtZSwgbnVsbGItPmRpc2tfbmFtZSwgRElTS19OQU1FX0xF Tik7CisJZGV2LT5vcHMgPSAmbnVsbF9sbnZtX2Rldl9vcHM7CisKKwlydiA9IG52bV9yZWdpc3Rl cihkZXYpOworCWlmIChydikgeworCQlrZnJlZShkZXYpOworCQlyZXR1cm4gcnY7CisJfQorCW51 bGxiLT5uZGV2ID0gZGV2OworCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBudWxsX252bV91 bnJlZ2lzdGVyKHN0cnVjdCBudWxsYiAqbnVsbGIpCiB7Ci0JbnZtX3VucmVnaXN0ZXIobnVsbGIt PmRpc2tfbmFtZSk7CisJbnZtX3VucmVnaXN0ZXIobnVsbGItPm5kZXYpOwogfQogI2Vsc2UKIHN0 YXRpYyBpbnQgbnVsbF9udm1fcmVnaXN0ZXIoc3RydWN0IG51bGxiICpudWxsYikKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbGlnaHRudm0vY29yZS5jIGIvZHJpdmVycy9saWdodG52bS9jb3JlLmMKaW5k ZXggNDU3NGMwYi4uYWQyNzc2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9saWdodG52bS9jb3JlLmMK KysrIGIvZHJpdmVycy9saWdodG52bS9jb3JlLmMKQEAgLTY1NSwyMyArNjU1LDE1IEBAIHN0YXRp YyB2b2lkIG52bV9leGl0KHN0cnVjdCBudm1fZGV2ICpkZXYpCiAJcHJfaW5mbygibnZtOiBzdWNj ZXNzZnVsbHkgdW5sb2FkZWRcbiIpOwogfQogCi1pbnQgbnZtX3JlZ2lzdGVyKHN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpxLCBjaGFyICpkaXNrX25hbWUsCi0JCQkJCQkJc3RydWN0IG52bV9kZXZfb3Bz ICpvcHMpCitzdHJ1Y3QgbnZtX2RldiAqbnZtX2FsbG9jX2RldihpbnQgbm9kZSkKK3sKKwlyZXR1 cm4ga3phbGxvY19ub2RlKHNpemVvZihzdHJ1Y3QgbnZtX2RldiksIEdGUF9LRVJORUwsIG5vZGUp OworfQorCitpbnQgbnZtX3JlZ2lzdGVyKHN0cnVjdCBudm1fZGV2ICpkZXYpCiB7Ci0Jc3RydWN0 IG52bV9kZXYgKmRldjsKIAlpbnQgcmV0OwogCi0JaWYgKCFvcHMtPmlkZW50aXR5KQotCQlyZXR1 cm4gLUVJTlZBTDsKLQotCWRldiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBudm1fZGV2KSwgR0ZQ X0tFUk5FTCk7Ci0JaWYgKCFkZXYpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JZGV2LT5xID0gcTsK LQlkZXYtPm9wcyA9IG9wczsKLQlzdHJuY3B5KGRldi0+bmFtZSwgZGlza19uYW1lLCBESVNLX05B TUVfTEVOKTsKLQogCXJldCA9IG52bV9pbml0KGRldik7CiAJaWYgKHJldCkKIAkJZ290byBlcnJf aW5pdDsKQEAgLTcwOSwyOSArNzAxLDE3IEBAIGludCBudm1fcmVnaXN0ZXIoc3RydWN0IHJlcXVl c3RfcXVldWUgKnEsIGNoYXIgKmRpc2tfbmFtZSwKIAlyZXR1cm4gMDsKIGVycl9pbml0OgogCWtm cmVlKGRldi0+bHVuX21hcCk7Ci0Ja2ZyZWUoZGV2KTsKIAlyZXR1cm4gcmV0OwogfQogRVhQT1JU X1NZTUJPTChudm1fcmVnaXN0ZXIpOwogCi12b2lkIG52bV91bnJlZ2lzdGVyKGNoYXIgKmRpc2tf bmFtZSkKK3ZvaWQgbnZtX3VucmVnaXN0ZXIoc3RydWN0IG52bV9kZXYgKmRldikKIHsKLQlzdHJ1 Y3QgbnZtX2RldiAqZGV2OwotCiAJZG93bl93cml0ZSgmbnZtX2xvY2spOwotCWRldiA9IG52bV9m aW5kX252bV9kZXYoZGlza19uYW1lKTsKLQlpZiAoIWRldikgewotCQlwcl9lcnIoIm52bTogY291 bGQgbm90IGZpbmQgZGV2aWNlICVzIHRvIHVucmVnaXN0ZXJcbiIsCi0JCQkJCQkJCWRpc2tfbmFt ZSk7Ci0JCXVwX3dyaXRlKCZudm1fbG9jayk7Ci0JCXJldHVybjsKLQl9Ci0KIAlsaXN0X2RlbCgm ZGV2LT5kZXZpY2VzKTsKIAl1cF93cml0ZSgmbnZtX2xvY2spOwogCiAJbnZtX2V4aXQoZGV2KTsK LQlrZnJlZShkZXYpOwogfQogRVhQT1JUX1NZTUJPTChudm1fdW5yZWdpc3Rlcik7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L2NvcmUu YwppbmRleCBmNjE1YjZiLi5mZTEzNWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvaG9zdC9j b3JlLmMKKysrIGIvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCkBAIC0xMzcsMTIgKzEzNywxNCBA QCBzdGF0aWMgdm9pZCBudm1lX2ZyZWVfbnMoc3RydWN0IGtyZWYgKmtyZWYpCiB7CiAJc3RydWN0 IG52bWVfbnMgKm5zID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBudm1lX25zLCBrcmVmKTsK IAotCWlmIChucy0+dHlwZSA9PSBOVk1FX05TX0xJR0hUTlZNKQotCQludm1lX252bV91bnJlZ2lz dGVyKG5zLT5xdWV1ZSwgbnMtPmRpc2stPmRpc2tfbmFtZSk7CisJaWYgKG5zLT5uZGV2KQorCQlu dm1lX252bV91bnJlZ2lzdGVyKG5zKTsKIAotCXNwaW5fbG9jaygmZGV2X2xpc3RfbG9jayk7Ci0J bnMtPmRpc2stPnByaXZhdGVfZGF0YSA9IE5VTEw7Ci0Jc3Bpbl91bmxvY2soJmRldl9saXN0X2xv Y2spOworCWlmIChucy0+ZGlzaykgeworCQlzcGluX2xvY2soJmRldl9saXN0X2xvY2spOworCQlu cy0+ZGlzay0+cHJpdmF0ZV9kYXRhID0gTlVMTDsKKwkJc3Bpbl91bmxvY2soJmRldl9saXN0X2xv Y2spOworCX0KIAogCXB1dF9kaXNrKG5zLT5kaXNrKTsKIAlpZGFfc2ltcGxlX3JlbW92ZSgmbnMt PmN0cmwtPm5zX2lkYSwgbnMtPmluc3RhbmNlKTsKQEAgLTc4OCw4ICs3OTAsNyBAQCBzdGF0aWMg dm9pZCBudm1lX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBudm1lX25zICpucykKIHN0YXRpYyBpbnQg bnZtZV9yZXZhbGlkYXRlX25zKHN0cnVjdCBudm1lX25zICpucywgc3RydWN0IG52bWVfaWRfbnMg KippZCkKIHsKIAlpZiAobnZtZV9pZGVudGlmeV9ucyhucy0+Y3RybCwgbnMtPm5zX2lkLCBpZCkp IHsKLQkJZGV2X3dhcm4oZGlza190b19kZXYobnMtPmRpc2spLCAiJXM6IElkZW50aWZ5IGZhaWx1 cmVcbiIsCi0JCQkJX19mdW5jX18pOworCQlkZXZfd2Fybihucy0+Y3RybC0+ZGV2LCAiJXM6IElk ZW50aWZ5IGZhaWx1cmVcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCkBA IC0xNDczLDE4ICsxNDc0LDExIEBAIHN0YXRpYyB2b2lkIG52bWVfYWxsb2NfbnMoc3RydWN0IG52 bWVfY3RybCAqY3RybCwgdW5zaWduZWQgbnNpZCkKIAlzcHJpbnRmKGRpc2tfbmFtZSwgIm52bWUl ZG4lZCIsIGN0cmwtPmluc3RhbmNlLCBucy0+aW5zdGFuY2UpOwogCiAJaWYgKG52bWVfbnZtX25z X3N1cHBvcnRlZChucywgaWQpKSB7Ci0JCWlmIChudm1lX252bV9yZWdpc3Rlcihucy0+cXVldWUs IGRpc2tfbmFtZSkpIHsKLQkJCWRldl93YXJuKGN0cmwtPmRldiwKLQkJCQkiJXM6IExpZ2h0TlZN IGluaXQgZmFpbHVyZVxuIiwgX19mdW5jX18pOworCQlpZiAobnZtZV9udm1fcmVnaXN0ZXIobnMs IGRpc2tfbmFtZSwgbm9kZSkpIHsKKwkJCWRldl93YXJuKGN0cmwtPmRldiwgIiVzOiBMaWdodE5W TSBpbml0IGZhaWx1cmVcbiIsCisJCQkJCQkJCV9fZnVuY19fKTsKIAkJCWdvdG8gb3V0X2ZyZWVf aWQ7CiAJCX0KLQotCQlkaXNrID0gYWxsb2NfZGlza19ub2RlKDAsIG5vZGUpOwotCQlpZiAoIWRp c2spCi0JCQlnb3RvIG91dF9mcmVlX2lkOwotCQltZW1jcHkoZGlzay0+ZGlza19uYW1lLCBkaXNr X25hbWUsIERJU0tfTkFNRV9MRU4pOwotCQlucy0+ZGlzayA9IGRpc2s7Ci0JCW5zLT50eXBlID0g TlZNRV9OU19MSUdIVE5WTTsKIAl9IGVsc2UgewogCQlkaXNrID0gYWxsb2NfZGlza19ub2RlKDAs IG5vZGUpOwogCQlpZiAoIWRpc2spCkBAIC0xNTMyLDcgKzE1MjYsNyBAQCBzdGF0aWMgdm9pZCBu dm1lX25zX3JlbW92ZShzdHJ1Y3QgbnZtZV9ucyAqbnMpCiAJaWYgKHRlc3RfYW5kX3NldF9iaXQo TlZNRV9OU19SRU1PVklORywgJm5zLT5mbGFncykpCiAJCXJldHVybjsKIAotCWlmIChucy0+ZGlz ay0+ZmxhZ3MgJiBHRU5IRF9GTF9VUCkgeworCWlmIChucy0+ZGlzayAmJiBucy0+ZGlzay0+Zmxh Z3MgJiBHRU5IRF9GTF9VUCkgewogCQlpZiAoYmxrX2dldF9pbnRlZ3JpdHkobnMtPmRpc2spKQog CQkJYmxrX2ludGVncml0eV91bnJlZ2lzdGVyKG5zLT5kaXNrKTsKIAkJc3lzZnNfcmVtb3ZlX2dy b3VwKCZkaXNrX3RvX2Rldihucy0+ZGlzayktPmtvYmosCkBAIC0xNTUyLDcgKzE1NDYsNyBAQCBz dGF0aWMgdm9pZCBudm1lX3ZhbGlkYXRlX25zKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwsIHVuc2ln bmVkIG5zaWQpCiAKIAlucyA9IG52bWVfZmluZF9ucyhjdHJsLCBuc2lkKTsKIAlpZiAobnMpIHsK LQkJaWYgKHJldmFsaWRhdGVfZGlzayhucy0+ZGlzaykpCisJCWlmIChucy0+ZGlzayAmJiByZXZh bGlkYXRlX2Rpc2sobnMtPmRpc2spKQogCQkJbnZtZV9uc19yZW1vdmUobnMpOwogCX0gZWxzZQog CQludm1lX2FsbG9jX25zKGN0cmwsIG5zaWQpOwpAQCAtMTg1Niw3ICsxODUwLDcgQEAgdm9pZCBu dm1lX2tpbGxfcXVldWVzKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwpCiAJCSAqIFJldmFsaWRhdGlu ZyBhIGRlYWQgbmFtZXNwYWNlIHNldHMgY2FwYWNpdHkgdG8gMC4gVGhpcyB3aWxsCiAJCSAqIGVu ZCBidWZmZXJlZCB3cml0ZXJzIGRpcnR5aW5nIHBhZ2VzIHRoYXQgY2FuJ3QgYmUgc3luY2VkLgog CQkgKi8KLQkJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KE5WTUVfTlNfREVBRCwgJm5zLT5mbGFncykp CisJCWlmIChucy0+ZGlzayAmJiAhdGVzdF9hbmRfc2V0X2JpdChOVk1FX05TX0RFQUQsICZucy0+ ZmxhZ3MpKQogCQkJcmV2YWxpZGF0ZV9kaXNrKG5zLT5kaXNrKTsKIAogCQlibGtfc2V0X3F1ZXVl X2R5aW5nKG5zLT5xdWV1ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9saWdodG52 bS5jIGIvZHJpdmVycy9udm1lL2hvc3QvbGlnaHRudm0uYwppbmRleCA5N2ZlNjEwLi4wOTVlNThl IDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvaG9zdC9saWdodG52bS5jCisrKyBiL2RyaXZlcnMv bnZtZS9ob3N0L2xpZ2h0bnZtLmMKQEAgLTU5MiwxNCArNTkyLDI3IEBAIHN0YXRpYyBzdHJ1Y3Qg bnZtX2Rldl9vcHMgbnZtZV9udm1fZGV2X29wcyA9IHsKIAkubWF4X3BoeXNfc2VjdAkJPSA2NCwK IH07CiAKLWludCBudm1lX252bV9yZWdpc3RlcihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgY2hh ciAqZGlza19uYW1lKQoraW50IG52bWVfbnZtX3JlZ2lzdGVyKHN0cnVjdCBudm1lX25zICpucywg Y2hhciAqZGlza19uYW1lLCBpbnQgbm9kZSkKIHsKLQlyZXR1cm4gbnZtX3JlZ2lzdGVyKHEsIGRp c2tfbmFtZSwgJm52bWVfbnZtX2Rldl9vcHMpOworCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0g bnMtPnF1ZXVlOworCXN0cnVjdCBudm1fZGV2ICpkZXY7CisKKwlkZXYgPSBudm1fYWxsb2NfZGV2 KG5vZGUpOworCWlmICghZGV2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRldi0+cSA9IHE7CisJ bWVtY3B5KGRldi0+bmFtZSwgZGlza19uYW1lLCBESVNLX05BTUVfTEVOKTsKKwlkZXYtPm9wcyA9 ICZudm1lX252bV9kZXZfb3BzOworCW5zLT5uZGV2ID0gZGV2OworCisJcmV0dXJuIG52bV9yZWdp c3RlcihkZXYpOwogfQogCi12b2lkIG52bWVfbnZtX3VucmVnaXN0ZXIoc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIGNoYXIgKmRpc2tfbmFtZSkKK3ZvaWQgbnZtZV9udm1fdW5yZWdpc3RlcihzdHJ1 Y3QgbnZtZV9ucyAqbnMpCiB7Ci0JbnZtX3VucmVnaXN0ZXIoZGlza19uYW1lKTsKKwludm1fdW5y ZWdpc3Rlcihucy0+bmRldik7CisJa2ZyZWUobnMtPm5kZXYpOwogfQogCiAvKiBtb3ZlIHRvIHNo YXJlZCBwbGFjZSB3aGVuIHVzZWQgaW4gbXVsdGlwbGUgcGxhY2VzLiAqLwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9udm1lL2hvc3QvbnZtZS5oIGIvZHJpdmVycy9udm1lL2hvc3QvbnZtZS5oCmluZGV4 IDI4MjQyMWYuLjdiNDliNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L252bWUuaAor KysgYi9kcml2ZXJzL252bWUvaG9zdC9udm1lLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRl IDxsaW51eC9wY2kuaD4KICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+CiAjaW5jbHVkZSA8bGludXgv YmxrLW1xLmg+CisjaW5jbHVkZSA8bGludXgvbGlnaHRudm0uaD4KIAogZW51bSB7CiAJLyoKQEAg LTEyMiw2ICsxMjMsNyBAQCBzdHJ1Y3QgbnZtZV9ucyB7CiAJc3RydWN0IG52bWVfY3RybCAqY3Ry bDsKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcXVldWU7CiAJc3RydWN0IGdlbmRpc2sgKmRpc2s7 CisJc3RydWN0IG52bV9kZXYgKm5kZXY7CiAJc3RydWN0IGtyZWYga3JlZjsKIAlpbnQgaW5zdGFu Y2U7CiAKQEAgLTEzMyw3ICsxMzUsNiBAQCBzdHJ1Y3QgbnZtZV9ucyB7CiAJdTE2IG1zOwogCWJv b2wgZXh0OwogCXU4IHBpX3R5cGU7Ci0JaW50IHR5cGU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsK IAogI2RlZmluZSBOVk1FX05TX1JFTU9WSU5HIDAKQEAgLTI2OSwxMiArMjcwLDEzIEBAIGludCBu dm1lX252bV9uc19zdXBwb3J0ZWQoc3RydWN0IG52bWVfbnMgKm5zLCBzdHJ1Y3QgbnZtZV9pZF9u cyAqaWQpOwogaW50IG52bWVfbnZtX3JlZ2lzdGVyKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBj aGFyICpkaXNrX25hbWUpOwogdm9pZCBudm1lX252bV91bnJlZ2lzdGVyKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBjaGFyICpkaXNrX25hbWUpOwogI2Vsc2UKLXN0YXRpYyBpbmxpbmUgaW50IG52 bWVfbnZtX3JlZ2lzdGVyKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBjaGFyICpkaXNrX25hbWUp CitzdGF0aWMgaW5saW5lIGludCBudm1lX252bV9yZWdpc3RlcihzdHJ1Y3QgbnZtZV9ucyAqbnMs IGNoYXIgKmRpc2tfbmFtZSwKKwkJCQkJCQkJaW50IG5vZGUpCiB7CiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyBpbmxpbmUgdm9pZCBudm1lX252bV91bnJlZ2lzdGVyKHN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxLCBjaGFyICpkaXNrX25hbWUpIHt9Oworc3RhdGljIGlubGluZSB2b2lkIG52bWVfbnZt X3VucmVnaXN0ZXIoc3RydWN0IG52bWVfbnMgKm5zKSB7fTsKIAogc3RhdGljIGlubGluZSBpbnQg bnZtZV9udm1fbnNfc3VwcG9ydGVkKHN0cnVjdCBudm1lX25zICpucywgc3RydWN0IG52bWVfaWRf bnMgKmlkKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saWdodG52bS5oIGIvaW5jbHVk ZS9saW51eC9saWdodG52bS5oCmluZGV4IGJhNzhiODMuLjVhZmMyNjMgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbGludXgvbGlnaHRudm0uaAorKysgYi9pbmNsdWRlL2xpbnV4L2xpZ2h0bnZtLmgKQEAg LTUyNCw5ICs1MjQsOSBAQCBleHRlcm4gc3RydWN0IG52bV9ibG9jayAqbnZtX2dldF9ibGsoc3Ry dWN0IG52bV9kZXYgKiwgc3RydWN0IG52bV9sdW4gKiwKIAkJCQkJCQkJdW5zaWduZWQgbG9uZyk7 CiBleHRlcm4gdm9pZCBudm1fcHV0X2JsayhzdHJ1Y3QgbnZtX2RldiAqLCBzdHJ1Y3QgbnZtX2Js b2NrICopOwogCi1leHRlcm4gaW50IG52bV9yZWdpc3RlcihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq LCBjaGFyICosCi0JCQkJCQlzdHJ1Y3QgbnZtX2Rldl9vcHMgKik7Ci1leHRlcm4gdm9pZCBudm1f dW5yZWdpc3RlcihjaGFyICopOworZXh0ZXJuIHN0cnVjdCBudm1fZGV2ICpudm1fYWxsb2NfZGV2 KGludCk7CitleHRlcm4gaW50IG52bV9yZWdpc3RlcihzdHJ1Y3QgbnZtX2RldiAqKTsKK2V4dGVy biB2b2lkIG52bV91bnJlZ2lzdGVyKHN0cnVjdCBudm1fZGV2ICopOwogCiB2b2lkIG52bV9tYXJr X2JsayhzdHJ1Y3QgbnZtX2RldiAqZGV2LCBzdHJ1Y3QgcHBhX2FkZHIgcHBhLCBpbnQgdHlwZSk7 CiAKQEAgLTU3NSwxMSArNTc1LDE0IEBAIGV4dGVybiBpbnQgbnZtX2Rldl9mYWN0b3J5KHN0cnVj dCBudm1fZGV2ICosIGludCBmbGFncyk7CiAjZWxzZSAvKiBDT05GSUdfTlZNICovCiBzdHJ1Y3Qg bnZtX2Rldl9vcHM7CiAKLXN0YXRpYyBpbmxpbmUgaW50IG52bV9yZWdpc3RlcihzdHJ1Y3QgcmVx dWVzdF9xdWV1ZSAqcSwgY2hhciAqZGlza19uYW1lLAotCQkJCQkJCXN0cnVjdCBudm1fZGV2X29w cyAqb3BzKQorc3RhdGljIGlubGluZSBzdHJ1Y3QgbnZtX2RldiAqbnZtX2FsbG9jX2RldihpbnQg bm9kZSkKK3sKKwlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKK30KK3N0YXRpYyBpbmxpbmUgaW50 IG52bV9yZWdpc3RlcihzdHJ1Y3QgbnZtX2RldiAqZGV2KQogewogCXJldHVybiAtRUlOVkFMOwog fQotc3RhdGljIGlubGluZSB2b2lkIG52bV91bnJlZ2lzdGVyKGNoYXIgKmRpc2tfbmFtZSkge30K K3N0YXRpYyBpbmxpbmUgdm9pZCBudm1fdW5yZWdpc3RlcihzdHJ1Y3QgbnZtX2RldiAqZGV2KSB7 fQogI2VuZGlmIC8qIENPTkZJR19OVk0gKi8KICNlbmRpZiAvKiBMSUdIVE5WTS5IICovCi0tIAoy LjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxp bnV4LW52bWUgbWFpbGluZyBsaXN0CkxpbnV4LW52bWVAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52bWUK