From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongwon Kim Subject: [RFC PATCH 37/60] hyper_dmabuf: implementation of query ioctl Date: Tue, 19 Dec 2017 11:29:53 -0800 Message-ID: <1513711816-2618-37-git-send-email-dongwon.kim__34032.4162425988$1513712392$gmane$org@intel.com> References: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eRNle-0002uj-Q4 for xen-devel@lists.xenproject.org; Tue, 19 Dec 2017 19:41:34 +0000 In-Reply-To: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org Cc: xen-devel@lists.xenproject.org, mateuszx.potrola@intel.com, dri-devel@lists.freedesktop.org, dongwon.kim@intel.com List-Id: xen-devel@lists.xenproject.org TGlzdCBvZiBxdWVyaWVzIGlzIHJlLWRlZmluZWQuIE5vdyBpdCBzdXBwb3J0cyBmb2xsb3dpbmcK aXRlbXM6CgoJZW51bSBoeXBlcl9kbWFidWZfcXVlcnkgewoJCURNQUJVRl9RVUVSWV9UWVBFID0g MHgxMCwKCQlETUFCVUZfUVVFUllfRVhQT1JURVIsCgkJRE1BQlVGX1FVRVJZX0lNUE9SVEVSLAoJ CURNQUJVRl9RVUVSWV9TSVpFLAoJCURNQUJVRl9RVUVSWV9CVVNZLAoJCURNQUJVRl9RVUVSWV9V TkVYUE9SVEVELAoJCURNQUJVRl9RVUVSWV9ERUxBWUVEX1VORVhQT1JURUQsCgl9OwoKQWxzbywg YWN0dWFsIHF1ZXJ5aW5nIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGlzIG1vdmVkIHRvIGh5cGVyX2Rt YWJ1Zl9xdWVyeS5jCgpTaWduZWQtb2ZmLWJ5OiBEb25nd29uIEtpbSA8ZG9uZ3dvbi5raW1AaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9NYWtlZmlsZSAgICAgICAgICAg ICB8ICAgMSArCiBkcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lvY3RsLmMg fCAxMTEgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVm L2h5cGVyX2RtYWJ1Zl9xdWVyeS5jIHwgMTE1ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3F1ZXJ5LmggfCAgMzggKy0tLS0t LS0tCiBpbmNsdWRlL3VhcGkveGVuL2h5cGVyX2RtYWJ1Zi5oICAgICAgICAgICAgICAgfCAgMTcg KysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfcXVlcnkuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9NYWtlZmls ZSBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9NYWtlZmlsZQppbmRleCBkOTBjZmMzLi44ODY1 ZjUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL01ha2VmaWxlCkBAIC0xMSw2ICsxMSw3IEBAIGlmbmVx ICgkKEtFUk5FTFJFTEVBU0UpLCkKIAkJCQkgaHlwZXJfZG1hYnVmX21zZy5vIFwKIAkJCQkgaHlw ZXJfZG1hYnVmX2lkLm8gXAogCQkJCSBoeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMubyBcCisJCQkJ IGh5cGVyX2RtYWJ1Zl9xdWVyeS5vIFwKIAogaWZlcSAoJChDT05GSUdfWEVOKSwgeSkKIAkkKFRB UkdFVF9NT0RVTEUpLW9ianMgKz0geGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5vIFwKZGlmZiAt LWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaW9jdGwuYyBiL2Ry aXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaW9jdGwuYwppbmRleCAzNzViNjY0 Li4xMmY3Y2U0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1h YnVmX2lvY3RsLmMKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9p b2N0bC5jCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5j bHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZpY2UuaD4KLSNpbmNs dWRlIDxhc20vdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KICNpbmNsdWRl IDxsaW51eC9kbWEtYnVmLmg+CiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxs aW51eC9saXN0Lmg+CkBAIC00Niw3ICs0Niw3IEBACiAKIGV4dGVybiBzdHJ1Y3QgaHlwZXJfZG1h YnVmX3ByaXZhdGUgaHlwZXJfZG1hYnVmX3ByaXZhdGU7CiAKLXN0YXRpYyBpbnQgaHlwZXJfZG1h YnVmX3R4X2NoX3NldHVwKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQorc3RhdGljIGlu dCBoeXBlcl9kbWFidWZfdHhfY2hfc2V0dXBfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQg KmRhdGEpCiB7CiAJc3RydWN0IGlvY3RsX2h5cGVyX2RtYWJ1Zl90eF9jaF9zZXR1cCAqdHhfY2hf YXR0cjsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX2JhY2tlbmRfb3BzICpvcHMgPSBoeXBlcl9kbWFi dWZfcHJpdmF0ZS5iYWNrZW5kX29wczsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGludCBoeXBl cl9kbWFidWZfdHhfY2hfc2V0dXAoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRhdGEpCiAJcmV0 dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBoeXBlcl9kbWFidWZfcnhfY2hfc2V0dXAoc3RydWN0 IGZpbGUgKmZpbHAsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9yeF9jaF9z ZXR1cF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgaW9j dGxfaHlwZXJfZG1hYnVmX3J4X2NoX3NldHVwICpyeF9jaF9hdHRyOwogCXN0cnVjdCBoeXBlcl9k bWFidWZfYmFja2VuZF9vcHMgKm9wcyA9IGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmJhY2tlbmRfb3Bz OwpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9yeF9jaF9zZXR1cChz dHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMg aW50IGh5cGVyX2RtYWJ1Zl9leHBvcnRfcmVtb3RlKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpk YXRhKQorc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0X3JlbW90ZV9pb2N0bChzdHJ1Y3Qg ZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgaW9jdGxfaHlwZXJfZG1hYnVmX2V4 cG9ydF9yZW1vdGUgKmV4cG9ydF9yZW1vdGVfYXR0cjsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX2Jh Y2tlbmRfb3BzICpvcHMgPSBoeXBlcl9kbWFidWZfcHJpdmF0ZS5iYWNrZW5kX29wczsKQEAgLTUx NCw3ICs1MTQsNyBAQCBzdGF0aWMgdm9pZCBoeXBlcl9kbWFidWZfZGVsYXllZF91bmV4cG9ydChz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIC8qIFNjaGVkdWxlcyB1bmV4cG9ydCBvZiBkbWFi dWYuCiAgKi8KLXN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX3VuZXhwb3J0KHN0cnVjdCBmaWxlICpm aWxwLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBoeXBlcl9kbWFidWZfdW5leHBvcnRfaW9jdGwo c3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGlvY3RsX2h5cGVyX2Rt YWJ1Zl91bmV4cG9ydCAqdW5leHBvcnRfYXR0cjsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX3NndF9p bmZvICpzZ3RfaW5mbzsKQEAgLTU1NCwxMSArNTU0LDExIEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1h YnVmX3VuZXhwb3J0KHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQogCXJldHVybiAwOwog fQogCi1zdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9xdWVyeShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9p ZCAqZGF0YSkKK3N0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX3F1ZXJ5X2lvY3RsKHN0cnVjdCBmaWxl ICpmaWxwLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBpb2N0bF9oeXBlcl9kbWFidWZfcXVlcnkg KnF1ZXJ5X2F0dHI7Ci0Jc3RydWN0IGh5cGVyX2RtYWJ1Zl9zZ3RfaW5mbyAqc2d0X2luZm87Ci0J c3RydWN0IGh5cGVyX2RtYWJ1Zl9pbXBvcnRlZF9zZ3RfaW5mbyAqaW1wb3J0ZWRfc2d0X2luZm87 CisJc3RydWN0IGh5cGVyX2RtYWJ1Zl9zZ3RfaW5mbyAqc2d0X2luZm8gPSBOVUxMOworCXN0cnVj dCBoeXBlcl9kbWFidWZfaW1wb3J0ZWRfc2d0X2luZm8gKmltcG9ydGVkX3NndF9pbmZvID0gTlVM TDsKIAlpbnQgcmV0ID0gMDsKIAogCWlmICghZGF0YSkgewpAQCAtNTY4LDcxICs1NjgsNDYgQEAg c3RhdGljIGludCBoeXBlcl9kbWFidWZfcXVlcnkoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRh dGEpCiAKIAlxdWVyeV9hdHRyID0gKHN0cnVjdCBpb2N0bF9oeXBlcl9kbWFidWZfcXVlcnkgKilk YXRhOwogCi0Jc2d0X2luZm8gPSBoeXBlcl9kbWFidWZfZmluZF9leHBvcnRlZChxdWVyeV9hdHRy LT5oaWQpOwotCWltcG9ydGVkX3NndF9pbmZvID0gaHlwZXJfZG1hYnVmX2ZpbmRfaW1wb3J0ZWQo cXVlcnlfYXR0ci0+aGlkKTsKLQotCS8qIGlmIGRtYWJ1ZiBjYW4ndCBiZSBmb3VuZCBpbiBib3Ro IGxpc3RzLCByZXR1cm4gKi8KLQlpZiAoIShzZ3RfaW5mbyAmJiBpbXBvcnRlZF9zZ3RfaW5mbykp IHsKLQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJjYW4ndCBmaW5kIGVu dHJ5IGFueXdoZXJlXG4iKTsKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0JfQotCi0JLyogbm90IGNvbnNp ZGVyaW5nIHRoZSBjYXNlIHdoZXJlIGEgZG1hYnVmIGlzIGZvdW5kIG9uIGJvdGggcXVldWVzCi0J ICogaW4gb25lIGRvbWFpbiAqLwotCXN3aXRjaCAocXVlcnlfYXR0ci0+aXRlbSkKLQl7Ci0JCWNh c2UgRE1BQlVGX1FVRVJZX1RZUEVfTElTVDoKLQkJCWlmIChzZ3RfaW5mbykgewotCQkJCXF1ZXJ5 X2F0dHItPmluZm8gPSBFWFBPUlRFRDsKLQkJCX0gZWxzZSB7Ci0JCQkJcXVlcnlfYXR0ci0+aW5m byA9IElNUE9SVEVEOwotCQkJfQotCQkJYnJlYWs7Ci0KLQkJLyogZXhwb3J0aW5nIGRvbWFpbiBv ZiB0aGlzIHNwZWNpZmljIGRtYWJ1ZiovCi0JCWNhc2UgRE1BQlVGX1FVRVJZX0VYUE9SVEVSOgot CQkJaWYgKHNndF9pbmZvKSB7Ci0JCQkJcXVlcnlfYXR0ci0+aW5mbyA9IDB4RkZGRkZGRkY7IC8q IG15c2VsZiAqLwotCQkJfSBlbHNlIHsKLQkJCQlxdWVyeV9hdHRyLT5pbmZvID0gSFlQRVJfRE1B QlVGX0RPTV9JRChpbXBvcnRlZF9zZ3RfaW5mby0+aGlkKTsKLQkJCX0KLQkJCWJyZWFrOwotCi0J CS8qIGltcG9ydGluZyBkb21haW4gb2YgdGhpcyBzcGVjaWZpYyBkbWFidWYgKi8KLQkJY2FzZSBE TUFCVUZfUVVFUllfSU1QT1JURVI6Ci0JCQlpZiAoc2d0X2luZm8pIHsKLQkJCQlxdWVyeV9hdHRy LT5pbmZvID0gc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9yZG9tYWluOwotCQkJfSBlbHNlIHsKLSNp ZiAwIC8qIFRPRE86IGEgZ2xvYmFsIHZhcmlhYmxlLCBjdXJyZW50X2RvbWFpbiBkb2VzIG5vdCBl eGlzdCB5ZXQqLwotCQkJCXF1ZXJ5X2F0dHItPmluZm8gPSBjdXJyZW50X2RvbWFpbjsKLSNlbmRp ZgotCQkJfQotCQkJYnJlYWs7Ci0KLQkJLyogc2l6ZSBvZiBkbWFidWYgaW4gYnl0ZSAqLwotCQlj YXNlIERNQUJVRl9RVUVSWV9TSVpFOgotCQkJaWYgKHNndF9pbmZvKSB7Ci0jaWYgMCAvKiBUT0RP OiBoeXBlcl9kbWFidWZfYnVmX3NpemUgaXMgbm90IGltcGxlbWVudGVkIHlldCAqLwotCQkJCXF1 ZXJ5X2F0dHItPmluZm8gPSBoeXBlcl9kbWFidWZfYnVmX3NpemUoc2d0X2luZm8tPnNndCk7Ci0j ZW5kaWYKLQkJCX0gZWxzZSB7Ci0JCQkJcXVlcnlfYXR0ci0+aW5mbyA9IGltcG9ydGVkX3NndF9p bmZvLT5uZW50cyAqIDQwOTYgLQotCQkJCQkJICAgaW1wb3J0ZWRfc2d0X2luZm8tPmZyc3Rfb2Zz dCAtIDQwOTYgKwotCQkJCQkJICAgaW1wb3J0ZWRfc2d0X2luZm8tPmxhc3RfbGVuOwotCQkJfQot CQkJYnJlYWs7CisJaWYgKEhZUEVSX0RNQUJVRl9ET01fSUQocXVlcnlfYXR0ci0+aGlkKSA9PSBo eXBlcl9kbWFidWZfcHJpdmF0ZS5kb21pZCkgeworCQkvKiBxdWVyeSBmb3IgZXhwb3J0ZWQgZG1h YnVmICovCisJCXNndF9pbmZvID0gaHlwZXJfZG1hYnVmX2ZpbmRfZXhwb3J0ZWQocXVlcnlfYXR0 ci0+aGlkKTsKKwkJaWYgKHNndF9pbmZvKSB7CisJCQlyZXQgPSBoeXBlcl9kbWFidWZfcXVlcnlf ZXhwb3J0ZWQoc2d0X2luZm8sIHF1ZXJ5X2F0dHItPml0ZW0pOworCQkJaWYgKHJldCAhPSAtRUlO VkFMKQorCQkJCXF1ZXJ5X2F0dHItPmluZm8gPSByZXQ7CisJCX0gZWxzZSB7CisJCQlkZXZfZXJy KGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCQkiRE1BIEJVRiB7aWQ6JWQga2V5OiVk ICVkICVkfSBjYW4ndCBiZSBmb3VuZCBpbiB0aGUgZXhwb3J0IGxpc3RcbiIsCisJCQkJcXVlcnlf YXR0ci0+aGlkLmlkLCBxdWVyeV9hdHRyLT5oaWQucm5nX2tleVswXSwgcXVlcnlfYXR0ci0+aGlk LnJuZ19rZXlbMV0sCisJCQkJcXVlcnlfYXR0ci0+aGlkLnJuZ19rZXlbMl0pOworCQkJcmV0dXJu IC1FTk9FTlQ7CisJCX0KKwl9IGVsc2UgeworCQkvKiBxdWVyeSBmb3IgaW1wb3J0ZWQgZG1hYnVm ICovCisJCWltcG9ydGVkX3NndF9pbmZvID0gaHlwZXJfZG1hYnVmX2ZpbmRfaW1wb3J0ZWQocXVl cnlfYXR0ci0+aGlkKTsKKwkJaWYgKGltcG9ydGVkX3NndF9pbmZvKSB7CisJCQlyZXQgPSBoeXBl cl9kbWFidWZfcXVlcnlfaW1wb3J0ZWQoaW1wb3J0ZWRfc2d0X2luZm8sIHF1ZXJ5X2F0dHItPml0 ZW0pOworCQkJaWYgKHJldCAhPSAtRUlOVkFMKQorCQkJCXF1ZXJ5X2F0dHItPmluZm8gPSByZXQ7 CisJCX0gZWxzZSB7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJ CQkiRE1BIEJVRiB7aWQ6JWQga2V5OiVkICVkICVkfSBjYW4ndCBiZSBmb3VuZCBpbiB0aGUgaW1w b3J0ZWQgbGlzdFxuIiwKKwkJCQlxdWVyeV9hdHRyLT5oaWQuaWQsIHF1ZXJ5X2F0dHItPmhpZC5y bmdfa2V5WzBdLCBxdWVyeV9hdHRyLT5oaWQucm5nX2tleVsxXSwKKwkJCQlxdWVyeV9hdHRyLT5o aWQucm5nX2tleVsyXSk7CisJCQlyZXR1cm4gLUVOT0VOVDsKKwkJfQogCX0KIAotCXJldHVybiBy ZXQ7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHlwZXJfZG1hYnVmX2lv Y3RsX2Rlc2MgaHlwZXJfZG1hYnVmX2lvY3Rsc1tdID0gewotCUhZUEVSX0RNQUJVRl9JT0NUTF9E RUYoSU9DVExfSFlQRVJfRE1BQlVGX1RYX0NIX1NFVFVQLCBoeXBlcl9kbWFidWZfdHhfY2hfc2V0 dXAsIDApLAotCUhZUEVSX0RNQUJVRl9JT0NUTF9ERUYoSU9DVExfSFlQRVJfRE1BQlVGX1JYX0NI X1NFVFVQLCBoeXBlcl9kbWFidWZfcnhfY2hfc2V0dXAsIDApLAotCUhZUEVSX0RNQUJVRl9JT0NU TF9ERUYoSU9DVExfSFlQRVJfRE1BQlVGX0VYUE9SVF9SRU1PVEUsIGh5cGVyX2RtYWJ1Zl9leHBv cnRfcmVtb3RlLCAwKSwKKwlIWVBFUl9ETUFCVUZfSU9DVExfREVGKElPQ1RMX0hZUEVSX0RNQUJV Rl9UWF9DSF9TRVRVUCwgaHlwZXJfZG1hYnVmX3R4X2NoX3NldHVwX2lvY3RsLCAwKSwKKwlIWVBF Ul9ETUFCVUZfSU9DVExfREVGKElPQ1RMX0hZUEVSX0RNQUJVRl9SWF9DSF9TRVRVUCwgaHlwZXJf ZG1hYnVmX3J4X2NoX3NldHVwX2lvY3RsLCAwKSwKKwlIWVBFUl9ETUFCVUZfSU9DVExfREVGKElP Q1RMX0hZUEVSX0RNQUJVRl9FWFBPUlRfUkVNT1RFLCBoeXBlcl9kbWFidWZfZXhwb3J0X3JlbW90 ZV9pb2N0bCwgMCksCiAJSFlQRVJfRE1BQlVGX0lPQ1RMX0RFRihJT0NUTF9IWVBFUl9ETUFCVUZf RVhQT1JUX0ZELCBoeXBlcl9kbWFidWZfZXhwb3J0X2ZkX2lvY3RsLCAwKSwKLQlIWVBFUl9ETUFC VUZfSU9DVExfREVGKElPQ1RMX0hZUEVSX0RNQUJVRl9VTkVYUE9SVCwgaHlwZXJfZG1hYnVmX3Vu ZXhwb3J0LCAwKSwKLQlIWVBFUl9ETUFCVUZfSU9DVExfREVGKElPQ1RMX0hZUEVSX0RNQUJVRl9R VUVSWSwgaHlwZXJfZG1hYnVmX3F1ZXJ5LCAwKSwKKwlIWVBFUl9ETUFCVUZfSU9DVExfREVGKElP Q1RMX0hZUEVSX0RNQUJVRl9VTkVYUE9SVCwgaHlwZXJfZG1hYnVmX3VuZXhwb3J0X2lvY3RsLCAw KSwKKwlIWVBFUl9ETUFCVUZfSU9DVExfREVGKElPQ1RMX0hZUEVSX0RNQUJVRl9RVUVSWSwgaHlw ZXJfZG1hYnVmX3F1ZXJ5X2lvY3RsLCAwKSwKIH07CiAKIHN0YXRpYyBsb25nIGh5cGVyX2RtYWJ1 Zl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKQEAgLTczMSw3ICs3MDYsNyBAQCBzdGF0aWMgdm9p ZCBoeXBlcl9kbWFidWZfZW1lcmdlbmN5X3JlbGVhc2Uoc3RydWN0IGh5cGVyX2RtYWJ1Zl9zZ3Rf aW5mbyogc2d0X2luZgogCQl1bmV4cG9ydF9hdHRyLmhpZCA9IHNndF9pbmZvLT5oaWQ7CiAJCXVu ZXhwb3J0X2F0dHIuZGVsYXlfbXMgPSAwOwogCi0JCWh5cGVyX2RtYWJ1Zl91bmV4cG9ydChmaWxw LCAmdW5leHBvcnRfYXR0cik7CisJCWh5cGVyX2RtYWJ1Zl91bmV4cG9ydF9pb2N0bChmaWxwLCAm dW5leHBvcnRfYXR0cik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYvaHlwZXJfZG1hYnVmX3F1ZXJ5LmMgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlw ZXJfZG1hYnVmX3F1ZXJ5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE1 MjAxYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9k bWFidWZfcXVlcnkuYwpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE3 IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3 YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNP RlRXQVJFLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICBEb25nd29uIEtpbSA8ZG9uZ3dvbi5raW1A aW50ZWwuY29tPgorICogICAgTWF0ZXVzeiBQb2xyb2xhIDxtYXRldXN6eC5wb3Ryb2xhQGludGVs LmNvbT4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KKyNpbmNsdWRlICJo eXBlcl9kbWFidWZfZHJ2LmgiCisjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX3N0cnVjdC5oIgorI2lu Y2x1ZGUgImh5cGVyX2RtYWJ1Zl9pZC5oIgorCitleHRlcm4gc3RydWN0IGh5cGVyX2RtYWJ1Zl9w cml2YXRlIGh5cGVyX2RtYWJ1Zl9wcml2YXRlOworCisjZGVmaW5lIEhZUEVSX0RNQUJVRl9TSVpF KG5lbnRzLCBmaXJzdF9vZmZzZXQsIGxhc3RfbGVuKSBcCisJKChuZW50cykqUEFHRV9TSVpFIC0g KGZpcnN0X29mZnNldCkgLSBQQUdFX1NJWkUgKyAobGFzdF9sZW4pKQorCitpbnQgaHlwZXJfZG1h YnVmX3F1ZXJ5X2V4cG9ydGVkKHN0cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8gKnNndF9pbmZv LCBpbnQgcXVlcnkpCit7CisJc3dpdGNoIChxdWVyeSkKKwl7CisJCWNhc2UgSFlQRVJfRE1BQlVG X1FVRVJZX1RZUEU6CisJCQlyZXR1cm4gRVhQT1JURUQ7CisKKwkJLyogZXhwb3J0aW5nIGRvbWFp biBvZiB0aGlzIHNwZWNpZmljIGRtYWJ1ZiovCisJCWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZX0VY UE9SVEVSOgorCQkJcmV0dXJuIEhZUEVSX0RNQUJVRl9ET01fSUQoc2d0X2luZm8tPmhpZCk7CisK KwkJLyogaW1wb3J0aW5nIGRvbWFpbiBvZiB0aGlzIHNwZWNpZmljIGRtYWJ1ZiAqLworCQljYXNl IEhZUEVSX0RNQUJVRl9RVUVSWV9JTVBPUlRFUjoKKwkJCXJldHVybiBzZ3RfaW5mby0+aHlwZXJf ZG1hYnVmX3Jkb21haW47CisKKwkJLyogc2l6ZSBvZiBkbWFidWYgaW4gYnl0ZSAqLworCQljYXNl IEhZUEVSX0RNQUJVRl9RVUVSWV9TSVpFOgorCQkJcmV0dXJuIHNndF9pbmZvLT5kbWFfYnVmLT5z aXplOworCisJCS8qIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyB1c2VkIGJ5IGltcG9ydGVyICovCisJ CWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZX0JVU1k6CisJCQlyZXR1cm4gKHNndF9pbmZvLT5pbXBv cnRlcl9leHBvcnRlZCA9PSAwKSA/IGZhbHNlIDogdHJ1ZTsKKworCQkvKiB3aGV0aGVyIHRoZSBi dWZmZXIgaXMgdW5leHBvcnRlZCAqLworCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9VTkVYUE9S VEVEOgorCQkJcmV0dXJuICFzZ3RfaW5mby0+dmFsaWQ7CisKKwkJLyogd2hldGhlciB0aGUgYnVm ZmVyIGlzIHNjaGVkdWxlZCB0byBiZSB1bmV4cG9ydGVkICovCisJCWNhc2UgSFlQRVJfRE1BQlVG X1FVRVJZX0RFTEFZRURfVU5FWFBPUlRFRDoKKwkJCXJldHVybiAhc2d0X2luZm8tPnVuZXhwb3J0 X3NjaGVkdWxlZDsKKwl9CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworCitpbnQgaHlwZXJfZG1h YnVmX3F1ZXJ5X2ltcG9ydGVkKHN0cnVjdCBoeXBlcl9kbWFidWZfaW1wb3J0ZWRfc2d0X2luZm8g KmltcG9ydGVkX3NndF9pbmZvLCBpbnQgcXVlcnkpCit7CisJc3dpdGNoIChxdWVyeSkKKwl7CisJ CWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZX1RZUEU6CisJCQlyZXR1cm4gSU1QT1JURUQ7CisKKwkJ LyogZXhwb3J0aW5nIGRvbWFpbiBvZiB0aGlzIHNwZWNpZmljIGRtYWJ1ZiovCisJCWNhc2UgSFlQ RVJfRE1BQlVGX1FVRVJZX0VYUE9SVEVSOgorCQkJcmV0dXJuIEhZUEVSX0RNQUJVRl9ET01fSUQo aW1wb3J0ZWRfc2d0X2luZm8tPmhpZCk7CisKKwkJLyogaW1wb3J0aW5nIGRvbWFpbiBvZiB0aGlz IHNwZWNpZmljIGRtYWJ1ZiAqLworCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9JTVBPUlRFUjoK KwkJCXJldHVybiAgaHlwZXJfZG1hYnVmX3ByaXZhdGUuZG9taWQ7CisKKwkJLyogc2l6ZSBvZiBk bWFidWYgaW4gYnl0ZSAqLworCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9TSVpFOgorCQkJaWYg KGltcG9ydGVkX3NndF9pbmZvLT5kbWFfYnVmKSB7CisJCQkJLyogaWYgbG9jYWwgZG1hX2J1ZiBp cyBjcmVhdGVkIChpZiBpdCdzIGV2ZXIgbWFwcGVkKSwKKwkJCQkgKiByZXRyaWV2ZSBpdCBkaXJl Y3RseSBmcm9tIHN0cnVjdCBkbWFfYnVmICoKKwkJCQkgKi8KKwkJCQlyZXR1cm4gaW1wb3J0ZWRf c2d0X2luZm8tPmRtYV9idWYtPnNpemU7CisJCQl9IGVsc2UgeworCQkJCS8qIGNhbGN1YXRlIGl0 IGZyb20gZ2l2ZW4gbmVudHMsIGZyc3Rfb2ZzdCBhbmQgbGFzdF9sZW4gKi8KKwkJCQlyZXR1cm4g SFlQRVJfRE1BQlVGX1NJWkUoaW1wb3J0ZWRfc2d0X2luZm8tPm5lbnRzLAorCQkJCQkJCSBpbXBv cnRlZF9zZ3RfaW5mby0+ZnJzdF9vZnN0LAorCQkJCQkJCSBpbXBvcnRlZF9zZ3RfaW5mby0+bGFz dF9sZW4pOworCQkJfQorCisJCS8qIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyB1c2VkIG9yIG5vdCAq LworCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9CVVNZOgorCQkJLyogY2hlY2tzIGlmIGl0J3Mg dXNlZCBieSBpbXBvcnRlciAqLworCQkJcmV0dXJuIChpbXBvcnRlZF9zZ3RfaW5mby0+bnVtX2lt cG9ydGVycyA+IDApID8gdHJ1ZSA6IGZhbHNlOworCisJCS8qIHdoZXRoZXIgdGhlIGJ1ZmZlciBp cyB1bmV4cG9ydGVkICovCisJCWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZX1VORVhQT1JURUQ6CisJ CQlyZXR1cm4gIWltcG9ydGVkX3NndF9pbmZvLT52YWxpZDsKKwl9CisKKwlyZXR1cm4gLUVJTlZB TDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZf cXVlcnkuaCBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfcXVlcnkuaApp bmRleCA2Y2Y1YjJkLi4yOTVlOTIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFi dWYvaHlwZXJfZG1hYnVmX3F1ZXJ5LmgKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5 cGVyX2RtYWJ1Zl9xdWVyeS5oCkBAIC0xLDQwICsxLDggQEAKLS8qCi0gKiBDb3B5cmlnaHQgwqkg MjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi0gKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCi0gKiBh bmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUKLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAotICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZQotICogU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK LSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCi0gKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKLSAqIElOIFRI RSBTT0ZUV0FSRS4KLSAqCi0gKi8KLQogI2lmbmRlZiBfX0hZUEVSX0RNQUJVRl9RVUVSWV9IX18K ICNkZWZpbmUgX19IWVBFUl9ETUFCVUZfUVVFUllfSF9fCiAKLWVudW0gaHlwZXJfZG1hYnVmX3F1 ZXJ5IHsKLQlETUFCVUZfUVVFUllfVFlQRV9MSVNUID0gMHgxMCwKLQlETUFCVUZfUVVFUllfRVhQ T1JURVIsCi0JRE1BQlVGX1FVRVJZX0lNUE9SVEVSLAotCURNQUJVRl9RVUVSWV9TSVpFCi19Owor aW50IGh5cGVyX2RtYWJ1Zl9xdWVyeV9pbXBvcnRlZChzdHJ1Y3QgaHlwZXJfZG1hYnVmX2ltcG9y dGVkX3NndF9pbmZvICppbXBvcnRlZF9zZ3RfaW5mbywgaW50IHF1ZXJ5KTsKIAotZW51bSBoeXBl cl9kbWFidWZfc3RhdHVzIHsKLQlFWFBPUlRFRCA9IDB4MDEsCi0JSU1QT1JURUQKLX07CitpbnQg aHlwZXJfZG1hYnVmX3F1ZXJ5X2V4cG9ydGVkKHN0cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8g KnNndF9pbmZvLCBpbnQgcXVlcnkpOwogCi0jZW5kaWYgLyogX19IWVBFUl9ETUFCVUZfUVVFUllf SF9fICovCisjZW5kaWYgLy8gX19IWVBFUl9ETUFCVUZfUVVFUllfSF9fCmRpZmYgLS1naXQgYS9p bmNsdWRlL3VhcGkveGVuL2h5cGVyX2RtYWJ1Zi5oIGIvaW5jbHVkZS91YXBpL3hlbi9oeXBlcl9k bWFidWYuaAppbmRleCA5OTJhNTQyLi5iZWUwZjg2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkv eGVuL2h5cGVyX2RtYWJ1Zi5oCisrKyBiL2luY2x1ZGUvdWFwaS94ZW4vaHlwZXJfZG1hYnVmLmgK QEAgLTk4LDQgKzk4LDIxIEBAIHN0cnVjdCBpb2N0bF9oeXBlcl9kbWFidWZfcXVlcnkgewogCWlu dCBpbmZvOwogfTsKIAorLyogRE1BQlVGIHF1ZXJ5ICovCisKK2VudW0gaHlwZXJfZG1hYnVmX3F1 ZXJ5IHsKKyAgICAgICAgSFlQRVJfRE1BQlVGX1FVRVJZX1RZUEUgPSAweDEwLAorICAgICAgICBI WVBFUl9ETUFCVUZfUVVFUllfRVhQT1JURVIsCisgICAgICAgIEhZUEVSX0RNQUJVRl9RVUVSWV9J TVBPUlRFUiwKKyAgICAgICAgSFlQRVJfRE1BQlVGX1FVRVJZX1NJWkUsCisgICAgICAgIEhZUEVS X0RNQUJVRl9RVUVSWV9CVVNZLAorICAgICAgICBIWVBFUl9ETUFCVUZfUVVFUllfVU5FWFBPUlRF RCwKKyAgICAgICAgSFlQRVJfRE1BQlVGX1FVRVJZX0RFTEFZRURfVU5FWFBPUlRFRCwKK307CisK K2VudW0gaHlwZXJfZG1hYnVmX3N0YXR1cyB7CisgICAgICAgIEVYUE9SVEVEPSAweDAxLAorICAg ICAgICBJTVBPUlRFRCwKK307CisKICNlbmRpZiAvL19fTElOVVhfUFVCTElDX0hZUEVSX0RNQUJV Rl9IX18KLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVj dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1k ZXZlbA==