From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [RFC libdrm] intel: Add support for softpin Date: Wed, 9 Sep 2015 16:07:10 +0200 Message-ID: <1441807630-20072-4-git-send-email-michal.winiarski@intel.com> References: <1441807630-20072-1-git-send-email-michal.winiarski@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1441807630-20072-1-git-send-email-michal.winiarski@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org Cc: Thomas Daniel , Ben Widawsky , Michel Thierry , Zou Nanhai , dri-devel@lists.freedesktop.org, mesa-dev@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org U29mdHBpbiBhbGxvd3MgdXNlcnNwYWNlIHRvIHRha2UgZ3JlYXRlciBjb250cm9sIG9mIEdQVSB2 aXJ0dWFsIGFkZHJlc3MKc3BhY2UgYW5kIGVsaW1pbmF0ZXMgdGhlIG5lZWQgb2YgcmVsb2NhdGlv bnMuIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8KbWlycm9yIGFkZHJlc3NlcyBiZXR3ZWVuIEdQVSBh bmQgQ1BVIChzaGFyZWQgdmlydHVhbCBtZW1vcnkpLgpDYWxscyB0byBkcm1faW50ZWxfYm9fZW1p dF9yZWxvYyBhcmUgc3RpbGwgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIGxpc3Qgb2YKZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0cyBhdCBleGVjIHRpbWUsIGJ1dCBubyBlbnRyaWVzIGluIHJlbG9jcyBh cmUKY3JlYXRlZC4gU2VsZi1yZWxvY3MgZG9uJ3QgbWFrZSBhbnkgc2Vuc2UgZm9yIHNvZnRwaW5u ZWQgb2JqZWN0cyBhbmQgY2FuCmluZGljYXRlIGEgcHJvZ3JhbW1pbmcgZXJyb3JzLCB0aHVzIGFy ZSBmb3JiaWRkZW4uIFNvZnRwaW5uZWQgb2JqZWN0cwphcmUgbWFya2VkIGJ5IGFzdGVyaXNrIGlu IGRlYnVnIGR1bXBzLgoKQ2M6IFRob21hcyBEYW5pZWwgPHRob21hcy5kYW5pZWxAaW50ZWwuY29t PgpDYzogS3Jpc3RpYW4gSMO4Z3NiZXJnIDxrcmhAYml0cGxhbmV0Lm5ldD4KQ2M6IFpvdSBOYW5o YWkgPG5hbmhhaS56b3VAaW50ZWwuY29tPgpDYzogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGll cnJ5QGludGVsLmNvbT4KQ2M6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KQ2M6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBNaWNo YcWCIFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+Ci0tLQogaW5jbHVkZS9k cm0vaTkxNV9kcm0uaCAgICB8ICAgNCArLQogaW50ZWwvaW50ZWxfYnVmbWdyLmMgICAgICB8ICAg OSArKysKIGludGVsL2ludGVsX2J1Zm1nci5oICAgICAgfCAgIDEgKwogaW50ZWwvaW50ZWxfYnVm bWdyX2dlbS5jICB8IDE3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tCiBpbnRlbC9pbnRlbF9idWZtZ3JfcHJpdi5oIHwgICA3ICsrCiA1IGZpbGVzIGNoYW5n ZWQsIDE3MyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaAppbmRleCBkZWQ0M2Ix Li4yYjk5ZmM2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1 ZGUvZHJtL2k5MTVfZHJtLmgKQEAgLTM1MCw2ICszNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBkcm1f aTkxNV9pcnFfd2FpdCB7CiAjZGVmaW5lIEk5MTVfUEFSQU1fUkVWSVNJT04gICAgICAgICAgICAg IDMyCiAjZGVmaW5lIEk5MTVfUEFSQU1fU1VCU0xJQ0VfVE9UQUwJIDMzCiAjZGVmaW5lIEk5MTVf UEFSQU1fRVVfVE9UQUwJCSAzNAorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19FWEVDX1NPRlRQSU4J IDM3CiAKIHR5cGVkZWYgc3RydWN0IGRybV9pOTE1X2dldHBhcmFtIHsKIAlpbnQgcGFyYW07CkBA IC02ODAsNyArNjgxLDggQEAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgewogI2Rl ZmluZSBFWEVDX09CSkVDVF9ORUVEU19GRU5DRSAoMTw8MCkKICNkZWZpbmUgRVhFQ19PQkpFQ1Rf TkVFRFNfR1RUCSgxPDwxKQogI2RlZmluZSBFWEVDX09CSkVDVF9XUklURQkoMTw8MikKLSNkZWZp bmUgX19FWEVDX09CSkVDVF9VTktOT1dOX0ZMQUdTIC0oRVhFQ19PQkpFQ1RfV1JJVEU8PDEpCisj ZGVmaW5lIEVYRUNfT0JKRUNUX1BJTk5FRAkoMTw8MykKKyNkZWZpbmUgX19FWEVDX09CSkVDVF9V TktOT1dOX0ZMQUdTIC0oRVhFQ19PQkpFQ1RfUElOTkVEPDwxKQogCV9fdTY0IGZsYWdzOwogCiAJ X191NjQgcnN2ZDE7CmRpZmYgLS1naXQgYS9pbnRlbC9pbnRlbF9idWZtZ3IuYyBiL2ludGVsL2lu dGVsX2J1Zm1nci5jCmluZGV4IDE0ZWE5ZjkuLmJkOTIzMzUgMTAwNjQ0Ci0tLSBhL2ludGVsL2lu dGVsX2J1Zm1nci5jCisrKyBiL2ludGVsL2ludGVsX2J1Zm1nci5jCkBAIC0yNjEsNiArMjYxLDE1 IEBAIGRybV9pbnRlbF9ib19nZXRfdGlsaW5nKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90ICog dGlsaW5nX21vZGUsCiB9CiAKIGludAorZHJtX2ludGVsX2JvX3NldF9zb2Z0cGluX29mZnNldChk cm1faW50ZWxfYm8gKmJvLCB1aW50NjRfdCBvZmZzZXQpCit7CisJaWYgKGJvLT5idWZtZ3ItPmJv X3NldF9zb2Z0cGluX29mZnNldCkKKwkJcmV0dXJuIGJvLT5idWZtZ3ItPmJvX3NldF9zb2Z0cGlu X29mZnNldChibywgb2Zmc2V0KTsKKworCXJldHVybiAtRU5PREVWOworfQorCitpbnQKIGRybV9p bnRlbF9ib19kaXNhYmxlX3JldXNlKGRybV9pbnRlbF9ibyAqYm8pCiB7CiAJaWYgKGJvLT5idWZt Z3ItPmJvX2Rpc2FibGVfcmV1c2UpCmRpZmYgLS1naXQgYS9pbnRlbC9pbnRlbF9idWZtZ3IuaCBi L2ludGVsL2ludGVsX2J1Zm1nci5oCmluZGV4IDk1ZWVjYjguLjYyZWE0YTAgMTAwNjQ0Ci0tLSBh L2ludGVsL2ludGVsX2J1Zm1nci5oCisrKyBiL2ludGVsL2ludGVsX2J1Zm1nci5oCkBAIC0xNjQs NiArMTY0LDcgQEAgaW50IGRybV9pbnRlbF9ib19nZXRfdGlsaW5nKGRybV9pbnRlbF9ibyAqYm8s IHVpbnQzMl90ICogdGlsaW5nX21vZGUsCiBpbnQgZHJtX2ludGVsX2JvX2ZsaW5rKGRybV9pbnRl bF9ibyAqYm8sIHVpbnQzMl90ICogbmFtZSk7CiBpbnQgZHJtX2ludGVsX2JvX2J1c3koZHJtX2lu dGVsX2JvICpibyk7CiBpbnQgZHJtX2ludGVsX2JvX21hZHZpc2UoZHJtX2ludGVsX2JvICpibywg aW50IG1hZHYpOworaW50IGRybV9pbnRlbF9ib19zZXRfc29mdHBpbl9vZmZzZXQoZHJtX2ludGVs X2JvICpibywgdWludDY0X3Qgb2Zmc2V0KTsKIAogaW50IGRybV9pbnRlbF9ib19kaXNhYmxlX3Jl dXNlKGRybV9pbnRlbF9ibyAqYm8pOwogaW50IGRybV9pbnRlbF9ib19pc19yZXVzYWJsZShkcm1f aW50ZWxfYm8gKmJvKTsKZGlmZiAtLWdpdCBhL2ludGVsL2ludGVsX2J1Zm1ncl9nZW0uYyBiL2lu dGVsL2ludGVsX2J1Zm1ncl9nZW0uYwppbmRleCAyNzIzZTIxLi42MTU3NDFjIDEwMDY0NAotLS0g YS9pbnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMKKysrIGIvaW50ZWwvaW50ZWxfYnVmbWdyX2dlbS5j CkBAIC0xODQsNiArMTg0LDEzIEBAIHN0cnVjdCBfZHJtX2ludGVsX2JvX2dlbSB7CiAJZHJtX2lu dGVsX3JlbG9jX3RhcmdldCAqcmVsb2NfdGFyZ2V0X2luZm87CiAJLyoqIE51bWJlciBvZiBlbnRy aWVzIGluIHJlbG9jcyAqLwogCWludCByZWxvY19jb3VudDsKKwkvKiogQXJyYXkgb2YgQk9zIHRo YXQgYXJlIHJlZmVyZW5jZWQgYnkgdGhpcyBidWZmZXIgYW5kIHdpbGwgYmUgc29mdHBpbm5lZCAq LworCWRybV9pbnRlbF9ibyAqKnNvZnRwaW5fdGFyZ2V0OworCS8qKiBOdW1iZXIgc29mdHBpbm5l ZCBCT3MgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSB0aGlzIGJ1ZmZlciAqLworCWludCBzb2Z0cGlu X3RhcmdldF9jb3VudDsKKwkvKiogTWF4aW11bSBhbW91bnQgb2Ygc29mdHBpbm5lZCBCT3MgdGhh dCBhcmUgcmVmZXJlbmNlZCBieSB0aGlzIGJ1ZmZlciAqLworCWludCBzb2Z0cGluX3RhcmdldF9z aXplOworCiAJLyoqIE1hcHBlZCBhZGRyZXNzIGZvciB0aGUgYnVmZmVyLCBzYXZlZCBhY3Jvc3Mg bWFwL3VubWFwIGN5Y2xlcyAqLwogCXZvaWQgKm1lbV92aXJ0dWFsOwogCS8qKiBHVFQgdmlydHVh bCBhZGRyZXNzIGZvciB0aGUgYnVmZmVyLCBzYXZlZCBhY3Jvc3MgbWFwL3VubWFwIGN5Y2xlcyAq LwpAQCAtMjM3LDYgKzI0NCwxMSBAQCBzdHJ1Y3QgX2RybV9pbnRlbF9ib19nZW0gewogCWJvb2wg aXNfdXNlcnB0cjsKIAogCS8qKgorCSAqIFdoZXRoZXIgdGhpcyBidWZmZXIgaXMgc29mdHBpbm5l ZCBhdCBvZmZzZXQgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyCisJICovCisJYm9vbCBpc19zb2Z0cGlu OworCisJLyoqCiAJICogU2l6ZSBpbiBieXRlcyBvZiB0aGlzIGJ1ZmZlciBhbmQgaXRzIHJlbG9j YXRpb24gZGVzY2VuZGVudHMuCiAJICoKIAkgKiBVc2VkIHRvIGF2b2lkIGNvc3RseSB0cmVlIHdh bGtpbmcgaW4KQEAgLTM4NCw4ICszOTYsOSBAQCBkcm1faW50ZWxfZ2VtX2R1bXBfdmFsaWRhdGlv bl9saXN0KGRybV9pbnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtKQogCQlkcm1faW50ZWxfYm8g KmJvID0gYnVmbWdyX2dlbS0+ZXhlY19ib3NbaV07CiAJCWRybV9pbnRlbF9ib19nZW0gKmJvX2dl bSA9IChkcm1faW50ZWxfYm9fZ2VtICopIGJvOwogCi0JCWlmIChib19nZW0tPnJlbG9jcyA9PSBO VUxMKSB7Ci0JCQlEQkcoIiUyZDogJWQgKCVzKVxuIiwgaSwgYm9fZ2VtLT5nZW1faGFuZGxlLAor CQlpZiAoYm9fZ2VtLT5yZWxvY3MgPT0gTlVMTCAmJiBib19nZW0tPnNvZnRwaW5fdGFyZ2V0ID09 IE5VTEwpIHsKKwkJCURCRygiJTJkOiAlZCAlcyglcylcbiIsIGksIGJvX2dlbS0+Z2VtX2hhbmRs ZSwKKwkJCSAgICBib19nZW0tPmlzX3NvZnRwaW4gPyAiKiIgOiAiIiwKIAkJCSAgICBib19nZW0t Pm5hbWUpOwogCQkJY29udGludWU7CiAJCX0KQEAgLTM5NSwxNiArNDA4LDMzIEBAIGRybV9pbnRl bF9nZW1fZHVtcF92YWxpZGF0aW9uX2xpc3QoZHJtX2ludGVsX2J1Zm1ncl9nZW0gKmJ1Zm1ncl9n ZW0pCiAJCQlkcm1faW50ZWxfYm9fZ2VtICp0YXJnZXRfZ2VtID0KIAkJCSAgICAoZHJtX2ludGVs X2JvX2dlbSAqKSB0YXJnZXRfYm87CiAKLQkJCURCRygiJTJkOiAlZCAoJXMpQDB4JTA4bGx4IC0+ ICIKKwkJCURCRygiJTJkOiAlZCAlcyglcylAMHglMDE2bGx4IC0+ICIKIAkJCSAgICAiJWQgKCVz KUAweCUwOGx4ICsgMHglMDh4XG4iLAogCQkJICAgIGksCi0JCQkgICAgYm9fZ2VtLT5nZW1faGFu ZGxlLCBib19nZW0tPm5hbWUsCisJCQkgICAgYm9fZ2VtLT5nZW1faGFuZGxlLAorCQkJICAgIGJv X2dlbS0+aXNfc29mdHBpbiA/ICIqIiA6ICIiLAorCQkJICAgIGJvX2dlbS0+bmFtZSwKIAkJCSAg ICAodW5zaWduZWQgbG9uZyBsb25nKWJvX2dlbS0+cmVsb2NzW2pdLm9mZnNldCwKIAkJCSAgICB0 YXJnZXRfZ2VtLT5nZW1faGFuZGxlLAogCQkJICAgIHRhcmdldF9nZW0tPm5hbWUsCiAJCQkgICAg dGFyZ2V0X2JvLT5vZmZzZXQ2NCwKIAkJCSAgICBib19nZW0tPnJlbG9jc1tqXS5kZWx0YSk7CiAJ CX0KKworCQlmb3IgKGogPSAwOyBqIDwgYm9fZ2VtLT5zb2Z0cGluX3RhcmdldF9jb3VudDsgaisr KSB7CisJCQlkcm1faW50ZWxfYm8gKnRhcmdldF9ibyA9IGJvX2dlbS0+c29mdHBpbl90YXJnZXRb al07CisJCQlkcm1faW50ZWxfYm9fZ2VtICp0YXJnZXRfZ2VtID0KKwkJCSAgICAoZHJtX2ludGVs X2JvX2dlbSAqKSB0YXJnZXRfYm87CisJCQlEQkcoIiUyZDogJWQgJXMoJXMpIC0+ICIKKwkJCSAg ICAiJWQgKiglcylAMHglMDE2bHhcbiIsCisJCQkgICAgaSwKKwkJCSAgICBib19nZW0tPmdlbV9o YW5kbGUsCisJCQkgICAgYm9fZ2VtLT5pc19zb2Z0cGluID8gIioiIDogIiIsCisJCQkgICAgYm9f Z2VtLT5uYW1lLAorCQkJICAgIHRhcmdldF9nZW0tPmdlbV9oYW5kbGUsCisJCQkgICAgdGFyZ2V0 X2dlbS0+bmFtZSwKKwkJCSAgICB0YXJnZXRfYm8tPm9mZnNldDY0KTsKKwkJfQogCX0KIH0KIApA QCAtNDY4LDExICs0OTgsMTggQEAgZHJtX2ludGVsX2FkZF92YWxpZGF0ZV9idWZmZXIyKGRybV9p bnRlbF9ibyAqYm8sIGludCBuZWVkX2ZlbmNlKQogCWRybV9pbnRlbF9idWZtZ3JfZ2VtICpidWZt Z3JfZ2VtID0gKGRybV9pbnRlbF9idWZtZ3JfZ2VtICopYm8tPmJ1Zm1ncjsKIAlkcm1faW50ZWxf Ym9fZ2VtICpib19nZW0gPSAoZHJtX2ludGVsX2JvX2dlbSAqKWJvOwogCWludCBpbmRleDsKKwlp bnQgZmxhZ3MgPSAwOworCisJaWYgKG5lZWRfZmVuY2UpCisJCWZsYWdzIHw9IEVYRUNfT0JKRUNU X05FRURTX0ZFTkNFOworCWlmIChib19nZW0tPmlzX3NvZnRwaW4pCisJCWZsYWdzIHw9IEVYRUNf T0JKRUNUX1BJTk5FRDsKIAogCWlmIChib19nZW0tPnZhbGlkYXRlX2luZGV4ICE9IC0xKSB7CiAJ CWlmIChuZWVkX2ZlbmNlKQogCQkJYnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tib19nZW0tPnZh bGlkYXRlX2luZGV4XS5mbGFncyB8PQogCQkJCUVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOworCQli dWZtZ3JfZ2VtLT5leGVjMl9vYmplY3RzW2JvX2dlbS0+dmFsaWRhdGVfaW5kZXhdLmZsYWdzIHw9 IGZsYWdzOwogCQlyZXR1cm47CiAJfQogCkBAIC00OTksMTUgKzUzNiwxMiBAQCBkcm1faW50ZWxf YWRkX3ZhbGlkYXRlX2J1ZmZlcjIoZHJtX2ludGVsX2JvICpibywgaW50IG5lZWRfZmVuY2UpCiAJ YnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tpbmRleF0ucmVsb2NhdGlvbl9jb3VudCA9IGJvX2dl bS0+cmVsb2NfY291bnQ7CiAJYnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tpbmRleF0ucmVsb2Nz X3B0ciA9ICh1aW50cHRyX3QpYm9fZ2VtLT5yZWxvY3M7CiAJYnVmbWdyX2dlbS0+ZXhlYzJfb2Jq ZWN0c1tpbmRleF0uYWxpZ25tZW50ID0gYm8tPmFsaWduOwotCWJ1Zm1ncl9nZW0tPmV4ZWMyX29i amVjdHNbaW5kZXhdLm9mZnNldCA9IDA7CisJYnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tpbmRl eF0ub2Zmc2V0ID0gYm9fZ2VtLT5pc19zb2Z0cGluID8KKwkJYm8tPm9mZnNldDY0IDogMDsKIAli dWZtZ3JfZ2VtLT5leGVjX2Jvc1tpbmRleF0gPSBibzsKLQlidWZtZ3JfZ2VtLT5leGVjMl9vYmpl Y3RzW2luZGV4XS5mbGFncyA9IDA7CisJYnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tpbmRleF0u ZmxhZ3MgPSBmbGFnczsKIAlidWZtZ3JfZ2VtLT5leGVjMl9vYmplY3RzW2luZGV4XS5yc3ZkMSA9 IDA7CiAJYnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tpbmRleF0ucnN2ZDIgPSAwOwotCWlmIChu ZWVkX2ZlbmNlKSB7Ci0JCWJ1Zm1ncl9nZW0tPmV4ZWMyX29iamVjdHNbaW5kZXhdLmZsYWdzIHw9 Ci0JCQlFWEVDX09CSkVDVF9ORUVEU19GRU5DRTsKLQl9CiAJYnVmbWdyX2dlbS0+ZXhlY19jb3Vu dCsrOwogfQogCkBAIC0xMjU2LDggKzEyOTAsMTIgQEAgZHJtX2ludGVsX2dlbV9ib191bnJlZmVy ZW5jZV9maW5hbChkcm1faW50ZWxfYm8gKmJvLCB0aW1lX3QgdGltZSkKIAkJCQkJCQkJICB0aW1l KTsKIAkJfQogCX0KKwlmb3IgKGkgPSAwOyBpIDwgYm9fZ2VtLT5zb2Z0cGluX3RhcmdldF9jb3Vu dDsgaSsrKQorCQlkcm1faW50ZWxfZ2VtX2JvX3VucmVmZXJlbmNlX2xvY2tlZF90aW1lZChib19n ZW0tPnNvZnRwaW5fdGFyZ2V0W2ldLAorCQkJCQkJCQkgIHRpbWUpOwogCWJvX2dlbS0+cmVsb2Nf Y291bnQgPSAwOwogCWJvX2dlbS0+dXNlZF9hc19yZWxvY190YXJnZXQgPSBmYWxzZTsKKwlib19n ZW0tPnNvZnRwaW5fdGFyZ2V0X2NvdW50ID0gMDsKIAogCURCRygiYm9fdW5yZWZlcmVuY2UgZmlu YWw6ICVkICglcylcbiIsCiAJICAgIGJvX2dlbS0+Z2VtX2hhbmRsZSwgYm9fZ2VtLT5uYW1lKTsK QEAgLTEyNzEsNiArMTMwOSwxMSBAQCBkcm1faW50ZWxfZ2VtX2JvX3VucmVmZXJlbmNlX2ZpbmFs KGRybV9pbnRlbF9ibyAqYm8sIHRpbWVfdCB0aW1lKQogCQlmcmVlKGJvX2dlbS0+cmVsb2NzKTsK IAkJYm9fZ2VtLT5yZWxvY3MgPSBOVUxMOwogCX0KKwlpZiAoYm9fZ2VtLT5zb2Z0cGluX3Rhcmdl dCkgeworCQlmcmVlKGJvX2dlbS0+c29mdHBpbl90YXJnZXQpOworCQlib19nZW0tPnNvZnRwaW5f dGFyZ2V0ID0gTlVMTDsKKwkJYm9fZ2VtLT5zb2Z0cGluX3RhcmdldF9zaXplID0gMDsKKwl9CiAK IAkvKiBDbGVhciBhbnkgbGVmdC1vdmVyIG1hcHBpbmdzICovCiAJaWYgKGJvX2dlbS0+bWFwX2Nv dW50KSB7CkBAIC0xOTA4LDE0ICsxOTUxLDYgQEAgZG9fYm9fZW1pdF9yZWxvYyhkcm1faW50ZWxf Ym8gKmJvLCB1aW50MzJfdCBvZmZzZXQsCiAJCWJvX2dlbS0+cmVsb2NfdHJlZV9mZW5jZXMgKz0g dGFyZ2V0X2JvX2dlbS0+cmVsb2NfdHJlZV9mZW5jZXM7CiAJfQogCi0JYm9fZ2VtLT5yZWxvY3Nb Ym9fZ2VtLT5yZWxvY19jb3VudF0ub2Zmc2V0ID0gb2Zmc2V0OwotCWJvX2dlbS0+cmVsb2NzW2Jv X2dlbS0+cmVsb2NfY291bnRdLmRlbHRhID0gdGFyZ2V0X29mZnNldDsKLQlib19nZW0tPnJlbG9j c1tib19nZW0tPnJlbG9jX2NvdW50XS50YXJnZXRfaGFuZGxlID0KLQkgICAgdGFyZ2V0X2JvX2dl bS0+Z2VtX2hhbmRsZTsKLQlib19nZW0tPnJlbG9jc1tib19nZW0tPnJlbG9jX2NvdW50XS5yZWFk X2RvbWFpbnMgPSByZWFkX2RvbWFpbnM7Ci0JYm9fZ2VtLT5yZWxvY3NbYm9fZ2VtLT5yZWxvY19j b3VudF0ud3JpdGVfZG9tYWluID0gd3JpdGVfZG9tYWluOwotCWJvX2dlbS0+cmVsb2NzW2JvX2dl bS0+cmVsb2NfY291bnRdLnByZXN1bWVkX29mZnNldCA9IHRhcmdldF9iby0+b2Zmc2V0NjQ7Ci0K IAlib19nZW0tPnJlbG9jX3RhcmdldF9pbmZvW2JvX2dlbS0+cmVsb2NfY291bnRdLmJvID0gdGFy Z2V0X2JvOwogCWlmICh0YXJnZXRfYm8gIT0gYm8pCiAJCWRybV9pbnRlbF9nZW1fYm9fcmVmZXJl bmNlKHRhcmdldF9ibyk7CkBAIC0xOTI1LDIxICsxOTYwLDcwIEBAIGRvX2JvX2VtaXRfcmVsb2Mo ZHJtX2ludGVsX2JvICpibywgdWludDMyX3Qgb2Zmc2V0LAogCWVsc2UKIAkJYm9fZ2VtLT5yZWxv Y190YXJnZXRfaW5mb1tib19nZW0tPnJlbG9jX2NvdW50XS5mbGFncyA9IDA7CiAKKwlib19nZW0t PnJlbG9jc1tib19nZW0tPnJlbG9jX2NvdW50XS5vZmZzZXQgPSBvZmZzZXQ7CisJYm9fZ2VtLT5y ZWxvY3NbYm9fZ2VtLT5yZWxvY19jb3VudF0uZGVsdGEgPSB0YXJnZXRfb2Zmc2V0OworCWJvX2dl bS0+cmVsb2NzW2JvX2dlbS0+cmVsb2NfY291bnRdLnRhcmdldF9oYW5kbGUgPQorCSAgICB0YXJn ZXRfYm9fZ2VtLT5nZW1faGFuZGxlOworCWJvX2dlbS0+cmVsb2NzW2JvX2dlbS0+cmVsb2NfY291 bnRdLnJlYWRfZG9tYWlucyA9IHJlYWRfZG9tYWluczsKKwlib19nZW0tPnJlbG9jc1tib19nZW0t PnJlbG9jX2NvdW50XS53cml0ZV9kb21haW4gPSB3cml0ZV9kb21haW47CisJYm9fZ2VtLT5yZWxv Y3NbYm9fZ2VtLT5yZWxvY19jb3VudF0ucHJlc3VtZWRfb2Zmc2V0ID0gdGFyZ2V0X2JvLT5vZmZz ZXQ2NDsKIAlib19nZW0tPnJlbG9jX2NvdW50Kys7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGlj IGludAorZHJtX2ludGVsX2dlbV9ib19hZGRfc29mdHBpbl90YXJnZXQoZHJtX2ludGVsX2JvICpi bywgZHJtX2ludGVsX2JvICp0YXJnZXRfYm8pCit7CisJZHJtX2ludGVsX2J1Zm1ncl9nZW0gKmJ1 Zm1ncl9nZW0gPSAoZHJtX2ludGVsX2J1Zm1ncl9nZW0gKikgYm8tPmJ1Zm1ncjsKKwlkcm1faW50 ZWxfYm9fZ2VtICpib19nZW0gPSAoZHJtX2ludGVsX2JvX2dlbSAqKSBibzsKKwlkcm1faW50ZWxf Ym9fZ2VtICp0YXJnZXRfYm9fZ2VtID0gKGRybV9pbnRlbF9ib19nZW0gKikgdGFyZ2V0X2JvOwor CWlmIChib19nZW0tPmhhc19lcnJvcikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAodGFyZ2V0 X2JvX2dlbS0+aGFzX2Vycm9yKSB7CisJCWJvX2dlbS0+aGFzX2Vycm9yID0gdHJ1ZTsKKwkJcmV0 dXJuIC1FTk9NRU07CisJfQorCisJaWYgKCF0YXJnZXRfYm9fZ2VtLT5pc19zb2Z0cGluKQorCQly ZXR1cm4gLUVJTlZBTDsKKwlpZiAodGFyZ2V0X2JvX2dlbSA9PSBib19nZW0pCisJCXJldHVybiAt RUlOVkFMOworCisJaWYgKGJvX2dlbS0+c29mdHBpbl90YXJnZXRfY291bnQgPT0gYm9fZ2VtLT5z b2Z0cGluX3RhcmdldF9zaXplKSB7CisJCWludCBuZXdfc2l6ZSA9IGJvX2dlbS0+c29mdHBpbl90 YXJnZXRfc2l6ZSAqIDI7CisJCWlmIChuZXdfc2l6ZSA9PSAwKQorCQkJbmV3X3NpemUgPSBidWZt Z3JfZ2VtLT5tYXhfcmVsb2NzOworCisJCWJvX2dlbS0+c29mdHBpbl90YXJnZXQgPSByZWFsbG9j KGJvX2dlbS0+c29mdHBpbl90YXJnZXQsIG5ld19zaXplICoKKwkJCQlzaXplb2YoZHJtX2ludGVs X2JvICopKTsKKwkJaWYgKCFib19nZW0tPnNvZnRwaW5fdGFyZ2V0KQorCQkJcmV0dXJuIC1FTk9N RU07CisKKwkJYm9fZ2VtLT5zb2Z0cGluX3RhcmdldF9zaXplID0gbmV3X3NpemU7CisJfQorCWJv X2dlbS0+c29mdHBpbl90YXJnZXRbYm9fZ2VtLT5zb2Z0cGluX3RhcmdldF9jb3VudF0gPSB0YXJn ZXRfYm87CisJZHJtX2ludGVsX2dlbV9ib19yZWZlcmVuY2UodGFyZ2V0X2JvKTsKKwlib19nZW0t PnNvZnRwaW5fdGFyZ2V0X2NvdW50Kys7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAog ZHJtX2ludGVsX2dlbV9ib19lbWl0X3JlbG9jKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IG9m ZnNldCwKIAkJCSAgICBkcm1faW50ZWxfYm8gKnRhcmdldF9ibywgdWludDMyX3QgdGFyZ2V0X29m ZnNldCwKIAkJCSAgICB1aW50MzJfdCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFp bikKIHsKIAlkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVmbWdyX2dlbSA9IChkcm1faW50ZWxfYnVm bWdyX2dlbSAqKWJvLT5idWZtZ3I7CisJZHJtX2ludGVsX2JvX2dlbSAqdGFyZ2V0X2JvX2dlbSA9 IChkcm1faW50ZWxfYm9fZ2VtICopdGFyZ2V0X2JvOwogCi0JcmV0dXJuIGRvX2JvX2VtaXRfcmVs b2MoYm8sIG9mZnNldCwgdGFyZ2V0X2JvLCB0YXJnZXRfb2Zmc2V0LAotCQkJCXJlYWRfZG9tYWlu cywgd3JpdGVfZG9tYWluLAotCQkJCSFidWZtZ3JfZ2VtLT5mZW5jZWRfcmVsb2NzKTsKKwlpZiAo dGFyZ2V0X2JvX2dlbS0+aXNfc29mdHBpbikKKwkJcmV0dXJuIGRybV9pbnRlbF9nZW1fYm9fYWRk X3NvZnRwaW5fdGFyZ2V0KGJvLCB0YXJnZXRfYm8pOworCWVsc2UKKwkJcmV0dXJuIGRvX2JvX2Vt aXRfcmVsb2MoYm8sIG9mZnNldCwgdGFyZ2V0X2JvLCB0YXJnZXRfb2Zmc2V0LAorCQkJCQlyZWFk X2RvbWFpbnMsIHdyaXRlX2RvbWFpbiwKKwkJCQkJIWJ1Zm1ncl9nZW0tPmZlbmNlZF9yZWxvY3Mp OwogfQogCiBzdGF0aWMgaW50CkBAIC0xOTcyLDYgKzIwNTYsOCBAQCBkcm1faW50ZWxfZ2VtX2Jv X2dldF9yZWxvY19jb3VudChkcm1faW50ZWxfYm8gKmJvKQogICoKICAqIEFueSBmdXJ0aGVyIGRy bV9pbnRlbF9idWZtZ3JfY2hlY2tfYXBlcnR1cmVfc3BhY2UoKSBxdWVyaWVzCiAgKiBpbnZvbHZp bmcgdGhpcyBidWZmZXIgaW4gdGhlIHRyZWUgYXJlIHVuZGVmaW5lZCBhZnRlciB0aGlzIGNhbGwu CisgKgorICogVGhpcyBhbHNvIHJlbW92ZXMgYWxsIHNvZnRwaW5uZWQgdGFyZ2V0cyBiZWluZyBy ZWZlcmVuY2VkIGJ5IHRoZSBCTy4KICAqLwogdm9pZAogZHJtX2ludGVsX2dlbV9ib19jbGVhcl9y ZWxvY3MoZHJtX2ludGVsX2JvICpibywgaW50IHN0YXJ0KQpAQCAtMTk5OCw2ICsyMDg0LDEyIEBA IGRybV9pbnRlbF9nZW1fYm9fY2xlYXJfcmVsb2NzKGRybV9pbnRlbF9ibyAqYm8sIGludCBzdGFy dCkKIAl9CiAJYm9fZ2VtLT5yZWxvY19jb3VudCA9IHN0YXJ0OwogCisJZm9yIChpID0gMDsgaSA8 IGJvX2dlbS0+c29mdHBpbl90YXJnZXRfY291bnQ7IGkrKykgeworCQlkcm1faW50ZWxfYm9fZ2Vt ICp0YXJnZXRfYm9fZ2VtID0gKGRybV9pbnRlbF9ib19nZW0gKikgYm9fZ2VtLT5zb2Z0cGluX3Rh cmdldFtpXTsKKwkJZHJtX2ludGVsX2dlbV9ib191bnJlZmVyZW5jZV9sb2NrZWRfdGltZWQoJnRh cmdldF9ib19nZW0tPmJvLCB0aW1lLnR2X3NlYyk7CisJfQorCWJvX2dlbS0+c29mdHBpbl90YXJn ZXRfY291bnQgPSAwOworCiAJcHRocmVhZF9tdXRleF91bmxvY2soJmJ1Zm1ncl9nZW0tPmxvY2sp OwogCiB9CkBAIC0yMDM4LDcgKzIxMzAsNyBAQCBkcm1faW50ZWxfZ2VtX2JvX3Byb2Nlc3NfcmVs b2MyKGRybV9pbnRlbF9ibyAqYm8pCiAJZHJtX2ludGVsX2JvX2dlbSAqYm9fZ2VtID0gKGRybV9p bnRlbF9ib19nZW0gKilibzsKIAlpbnQgaTsKIAotCWlmIChib19nZW0tPnJlbG9jcyA9PSBOVUxM KQorCWlmIChib19nZW0tPnJlbG9jcyA9PSBOVUxMICYmIGJvX2dlbS0+c29mdHBpbl90YXJnZXQg PT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJZm9yIChpID0gMDsgaSA8IGJvX2dlbS0+cmVsb2NfY291 bnQ7IGkrKykgewpAQCAtMjA1OSw2ICsyMTUxLDE3IEBAIGRybV9pbnRlbF9nZW1fYm9fcHJvY2Vz c19yZWxvYzIoZHJtX2ludGVsX2JvICpibykKIAkJLyogQWRkIHRoZSB0YXJnZXQgdG8gdGhlIHZh bGlkYXRlIGxpc3QgKi8KIAkJZHJtX2ludGVsX2FkZF92YWxpZGF0ZV9idWZmZXIyKHRhcmdldF9i bywgbmVlZF9mZW5jZSk7CiAJfQorCisJZm9yIChpID0gMDsgaSA8IGJvX2dlbS0+c29mdHBpbl90 YXJnZXRfY291bnQ7IGkrKykgeworCQlkcm1faW50ZWxfYm8gKnRhcmdldF9ibyA9IGJvX2dlbS0+ c29mdHBpbl90YXJnZXRbaV07CisKKwkJaWYgKHRhcmdldF9ibyA9PSBibykKKwkJCWNvbnRpbnVl OworCisJCWRybV9pbnRlbF9nZW1fYm9fbWFya19tbWFwc19pbmNvaGVyZW50KGJvKTsKKwkJZHJt X2ludGVsX2dlbV9ib19wcm9jZXNzX3JlbG9jMih0YXJnZXRfYm8pOworCQlkcm1faW50ZWxfYWRk X3ZhbGlkYXRlX2J1ZmZlcjIodGFyZ2V0X2JvLCBmYWxzZSk7CisJfQogfQogCiAKQEAgLTIwOTQs NyArMjE5NywxMSBAQCBkcm1faW50ZWxfdXBkYXRlX2J1ZmZlcl9vZmZzZXRzMiAoZHJtX2ludGVs X2J1Zm1ncl9nZW0gKmJ1Zm1ncl9nZW0pCiAKIAkJLyogVXBkYXRlIHRoZSBidWZmZXIgb2Zmc2V0 ICovCiAJCWlmIChidWZtZ3JfZ2VtLT5leGVjMl9vYmplY3RzW2ldLm9mZnNldCAhPSBiby0+b2Zm c2V0NjQpIHsKLQkJCURCRygiQk8gJWQgKCVzKSBtaWdyYXRlZDogMHglMDhseCAtPiAweCUwOGxs eFxuIiwKKwkJCS8qIElmIHdlJ3JlIHNlZWluZyBzb2Z0cGlubmVkIG9iamVjdCBoZXJlIGl0IG1l YW5zIHRoYXQgdGhlIGtlcm5lbAorCQkJICogaGFzIHJlbG9jYXRlZCBvdXIgb2JqZWN0Li4uIElu ZGljYXRpbmcgYSBwcm9ncmFtbWluZyBlcnJvcgorCQkJICovCisJCQlhc3NlcnQoIWJvX2dlbS0+ aXNfc29mdHBpbik7CisJCQlEQkcoIkJPICVkICglcykgbWlncmF0ZWQ6IDB4JTAxNmx4IC0+IDB4 JTAxNmxseFxuIiwKIAkJCSAgICBib19nZW0tPmdlbV9oYW5kbGUsIGJvX2dlbS0+bmFtZSwgYm8t Pm9mZnNldDY0LAogCQkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpYnVmbWdyX2dlbS0+ZXhlYzJf b2JqZWN0c1tpXS5vZmZzZXQpOwogCQkJYm8tPm9mZnNldDY0ID0gYnVmbWdyX2dlbS0+ZXhlYzJf b2JqZWN0c1tpXS5vZmZzZXQ7CkBAIC0yNDE4LDYgKzI1MjUsMTcgQEAgZHJtX2ludGVsX2dlbV9i b19nZXRfdGlsaW5nKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90ICogdGlsaW5nX21vZGUsCiAJ cmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK2RybV9pbnRlbF9nZW1fYm9fc2V0X3NvZnRwaW5f b2Zmc2V0KGRybV9pbnRlbF9ibyAqYm8sIHVpbnQ2NF90IG9mZnNldCkKK3sKKwlkcm1faW50ZWxf Ym9fZ2VtICpib19nZW0gPSAoZHJtX2ludGVsX2JvX2dlbSAqKSBibzsKKworCWJvX2dlbS0+aXNf c29mdHBpbiA9IHRydWU7CisJYm8tPm9mZnNldDY0ID0gb2Zmc2V0OworCWJvLT5vZmZzZXQgPSBv ZmZzZXQ7CisJcmV0dXJuIDA7Cit9CisKIGRybV9pbnRlbF9ibyAqCiBkcm1faW50ZWxfYm9fZ2Vt X2NyZWF0ZV9mcm9tX3ByaW1lKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwgaW50IHByaW1lX2Zk LCBpbnQgc2l6ZSkKIHsKQEAgLTI3OTYsNiArMjkxNCwxMyBAQCBfZHJtX2ludGVsX2dlbV9ib19y ZWZlcmVuY2VzKGRybV9pbnRlbF9ibyAqYm8sIGRybV9pbnRlbF9ibyAqdGFyZ2V0X2JvKQogCQkJ cmV0dXJuIDE7CiAJfQogCisJZm9yIChpID0gMDsgaTwgYm9fZ2VtLT5zb2Z0cGluX3RhcmdldF9j b3VudDsgaSsrKSB7CisJCWlmIChib19nZW0tPnNvZnRwaW5fdGFyZ2V0W2ldID09IHRhcmdldF9i bykKKwkJCXJldHVybiAxOworCQlpZiAoX2RybV9pbnRlbF9nZW1fYm9fcmVmZXJlbmNlcyhib19n ZW0tPnNvZnRwaW5fdGFyZ2V0W2ldLCB0YXJnZXRfYm8pKQorCQkJcmV0dXJuIDE7CisJfQorCiAJ cmV0dXJuIDA7CiB9CiAKQEAgLTMyNTIsNiArMzM3NywxMSBAQCBkcm1faW50ZWxfYnVmbWdyX2dl bV9pbml0KGludCBmZCwgaW50IGJhdGNoX3NpemUpCiAJcmV0ID0gZHJtSW9jdGwoYnVmbWdyX2dl bS0+ZmQsIERSTV9JT0NUTF9JOTE1X0dFVFBBUkFNLCAmZ3ApOwogCWJ1Zm1ncl9nZW0tPmhhc192 ZWJveCA9IChyZXQgPT0gMCkgJiAoKmdwLnZhbHVlID4gMCk7CiAKKwlncC5wYXJhbSA9IEk5MTVf UEFSQU1fSEFTX0VYRUNfU09GVFBJTjsKKwlyZXQgPSBkcm1Jb2N0bChidWZtZ3JfZ2VtLT5mZCwg RFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7CisJaWYgKHJldCA9PSAwICYmICpncC52YWx1 ZSA+IDApCisJCWJ1Zm1ncl9nZW0tPmJ1Zm1nci5ib19zZXRfc29mdHBpbl9vZmZzZXQgPSBkcm1f aW50ZWxfZ2VtX2JvX3NldF9zb2Z0cGluX29mZnNldDsKKwogCWlmIChidWZtZ3JfZ2VtLT5nZW4g PCA0KSB7CiAJCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9OVU1fRkVOQ0VTX0FWQUlMOwogCQlncC52 YWx1ZSA9ICZidWZtZ3JfZ2VtLT5hdmFpbGFibGVfZmVuY2VzOwpkaWZmIC0tZ2l0IGEvaW50ZWwv aW50ZWxfYnVmbWdyX3ByaXYuaCBiL2ludGVsL2ludGVsX2J1Zm1ncl9wcml2LmgKaW5kZXggNTll YmQxOC4uODY5OTFjOSAxMDA2NDQKLS0tIGEvaW50ZWwvaW50ZWxfYnVmbWdyX3ByaXYuaAorKysg Yi9pbnRlbC9pbnRlbF9idWZtZ3JfcHJpdi5oCkBAIC0yMjcsNiArMjI3LDEzIEBAIHN0cnVjdCBf ZHJtX2ludGVsX2J1Zm1nciB7CiAJCQkgICAgICB1aW50MzJfdCAqIHN3aXp6bGVfbW9kZSk7CiAK IAkvKioKKwkgKiBTZXQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGlzIGJ1ZmZlciB3aWxsIGJlIHNv ZnRwaW5uZWQKKwkgKiBccGFyYW0gYm8gQnVmZmVyIHRvIHNldCB0aGUgc29mdHBpbiBvZmZzZXQg Zm9yCisJICogXHBhcmFtIG9mZnNldCBTb2Z0cGluIG9mZnNldAorCSAqLworCWludCAoKmJvX3Nl dF9zb2Z0cGluX29mZnNldCkgKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQ2NF90IG9mZnNldCk7CisK KwkvKioKIAkgKiBDcmVhdGUgYSB2aXNpYmxlIG5hbWUgZm9yIGEgYnVmZmVyIHdoaWNoIGNhbiBi ZSB1c2VkIGJ5IG90aGVyIGFwcHMKIAkgKgogCSAqIFxwYXJhbSBidWYgQnVmZmVyIHRvIGNyZWF0 ZSBhIG5hbWUgZm9yCi0tIAoyLjQuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK