From mboxrd@z Thu Jan 1 00:00:00 1970 From: akash.goel@intel.com Subject: [PATCH v5] intel: New libdrm interface to create unbound wc user mappings for objects Date: Wed, 9 Mar 2016 14:39:53 +0530 Message-ID: <1457514593-12306-1-git-send-email-akash.goel@intel.com> References: <1418546504-20032-1-git-send-email-akash.goel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 771626E869 for ; Wed, 9 Mar 2016 08:57:09 +0000 (UTC) In-Reply-To: <1418546504-20032-1-git-send-email-akash.goel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Akash Goel , martin.peres@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQWthc2ggR29lbCA8YWthc2guZ29lbEBpbnRlbC5jb20+CgpBIG5ldyBsaWJkcm0gaW50 ZXJmYWNlICdkcm1faW50ZWxfZ2VtX2JvX21hcF93YycgaXMgcHJvdmlkZWQgYnkgdGhpcwpwYXRj aC4gVGhyb3VnaCB0aGlzIGludGVyZmFjZSBHZnggY2xpZW50cyBjYW4gY3JlYXRlIHdyaXRlIGNv bWJpbmluZwp2aXJ0dWFsIG1hcHBpbmdzIG9mIHRoZSBHZW0gb2JqZWN0LiBJdCB3aWxsIHByb3Zp ZGUgdGhlIHNhbWUgZnVudGlvbmFsaXR5Cm9mICdtbWFwX2d0dCcgaW50ZXJmYWNlIHdpdGhvdXQg dGhlIGNvbnN0cmFpbnRzIG9mIGxpbWl0ZWQgYXBlcnR1cmUgc3BhY2UsCmJ1dCBwcm92aWRlZCBj bGllbnRzIGhhbmRsZXMgdGhlIGxpbmVhciB0byB0aWxlIGNvbnZlcnNpb24gb24gdGhlaXIgb3du LgpUaGlzIHBhdGNoIGlzIGludGVuZGVkIGZvciBpbXByb3ZpbmcgdGhlIENQVSB3cml0ZSBvcGVy YXRpb24gcGVyZm9ybWFuY2UsCmFzIHdpdGggc3VjaCBtYXBwaW5nLCB3cml0ZXMgYXJlIGFsbW9z dCA1MCUgZmFzdGVyIHRoYW4gd2l0aCBtbWFwX2d0dC4KQWxzbyBpdCBhdm9pZHMgdGhlIENhY2hl IGZsdXNoIGFmdGVyIHVwZGF0ZSBmcm9tIENQVSBzaWRlLCB3aGVuIG9iamVjdCBpcwpwYXNzZWQg b24gdG8gR1BVLCB3aGljaCB3aWxsIGJlIHRoZSBjYXNlIGlmIHJlZ3VsYXIgbW1hcCBpbnRlcmZh Y2UgaXMgdXNlZC4KVGhpcyB0eXBlIG9mIG1hcHBpbmcgaXMgc3BlY2lhbGx5IHVzZWZ1bCBpbiBj YXNlIG9mIHN1Yi1yZWdpb24KdXBkYXRlLCBpLmUuIHdoZW4gb25seSBhIHBvcnRpb24gb2YgdGhl IG9iamVjdCBpcyB0byBiZSB1cGRhdGVkLgpBbHNvIHRoZXJlIGlzIGEgc3VwcG9ydCBmb3IgdGhl IHVuc3luY2hyb25pemVkIHZlcnNpb24gb2YgdGhpcyBpbnRlcmZhY2UKbmFtZWQgJ2RybV9pbnRl bF9nZW1fYm9fbWFwX3djX3Vuc3luY2hyb25pemVkJywgdGhyb3VnaCB3aGljaCB3YyB2aXJ0dWFs Cm1hcHBpbmdzLCBidXQgdW5zeW5jaHJvbml6ZWQgb25lLCBjYW4gYmUgY3JlYXRlZCBvZiB0aGUg R2VtIG9iamVjdC4KVG8gZW5zdXJlIHRoZSBjYWNoZSBjb2hlcmVuY3ksIGJlZm9yZSB1c2luZyB0 aGlzIG1hcHBpbmcsIHRoZSBHVFQgZG9tYWluIGhhcwpiZWVuIHJldXNlZCBoZXJlLiBUaGlzIHBy b3ZpZGVzIHRoZSByZXF1aXJlZCBDYWNoZSBmbHVzaCBpZiB0aGUgb2JqZWN0IGlzIGluCkNQVSBk b21haW4gb3Igc3luY2hyb25pemF0aW9uIGFnYWluc3QgdGhlIGNvbmN1cnJlbnQgcmVuZGVyaW5n CgpUaGUgZHJtX2k5MTVfZ2VtX21tYXAgc3RydWN0dXJlIChmb3IgdGhlIERSTV9JOTE1X0dFTV9N TUFQX0lPQ1RMKSBoYXMgYmVlbgpleHRlbmRlZCB3aXRoIGEgbmV3IGZsYWdzIGZpZWxkIChkZWZh dWx0aW5nIHRvIDAgZm9yIGV4aXN0ZW50IHVzZXJzKS4gSW4Kb3JkZXIgZm9yIHVzZXJzcGFjZSB0 byBkZXRlY3QgdGhlIGV4dGVuZGVkIGlvY3RsLCBhIG5ldyBwYXJhbWV0ZXIKSTkxNV9QQVJBTV9I QVNfRVhUX01NQVAgaGFzIGJlZW4gYWRkZWQgZm9yIHZlcnNpb25pbmcgdGhlIGlvY3RsIGludGVy ZmFjZS4KCnYyOiBBbGlnbmVkIHdpdGggdGhlIHYyIG9mIHRoZSBjb3JyZXNwb25kaW5nIGtlcm5l bCBwYXRjaCAoQ2hyaXMpCnYzOiBBZGRlZCB0aGUgdW5tYXAgY2FsbHMgZm9yIHRoZSB3YyBtYXBw aW5nIChEYW1pZW4pCiAgICBBZGRlZCB0aGUgcGFyYW0gZmVhdHVyZSBjaGVjayBiZWZvcmUgY3Jl YXRpbmcgdGhlIHdjIG1hcHBpbmcgJiByZWR1Y2VkCiAgICB0aGUgdm1hIGxpbWl0IChDaHJpcykK djQ6IFJlbW92ZWQgdGhlIGV4dHJhbmVvdXMgdW5sb2NrIGNhbGwgZnJvbSBtYXBfd2MgZnVuY3Rp b24gKERhbWllbikKdjU6IFJlYmFzZWQuCgpTaWduZWQtb2ZmLWJ5OiBBa2FzaCBHb2VsIDxha2Fz aC5nb2VsQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+ClJldmlld2VkLWJ5OiBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuLmxlc3Bp YXVAaW50ZWwuY29tPgotLS0KIGludGVsL2ludGVsX2J1Zm1nci5oICAgICB8ICAgMyArCiBpbnRl bC9pbnRlbF9idWZtZ3JfZ2VtLmMgfCAxNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9pbnRlbC9pbnRlbF9idWZtZ3IuaCBiL2ludGVsL2ludGVsX2J1Zm1nci5oCmlu ZGV4IGExYWJiY2QuLjA2MWI1MDAgMTAwNjQ0Ci0tLSBhL2ludGVsL2ludGVsX2J1Zm1nci5oCisr KyBiL2ludGVsL2ludGVsX2J1Zm1nci5oCkBAIC0xODMsNiArMTgzLDkgQEAgdm9pZCBkcm1faW50 ZWxfYnVmbWdyX2dlbV9zZXRfdm1hX2NhY2hlX3NpemUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdy LAogaW50IGRybV9pbnRlbF9nZW1fYm9fbWFwX3Vuc3luY2hyb25pemVkKGRybV9pbnRlbF9ibyAq Ym8pOwogaW50IGRybV9pbnRlbF9nZW1fYm9fbWFwX2d0dChkcm1faW50ZWxfYm8gKmJvKTsKIGlu dCBkcm1faW50ZWxfZ2VtX2JvX3VubWFwX2d0dChkcm1faW50ZWxfYm8gKmJvKTsKK2ludCBkcm1f aW50ZWxfZ2VtX2JvX21hcF93Y191bnN5bmNocm9uaXplZChkcm1faW50ZWxfYm8gKmJvKTsKK2lu dCBkcm1faW50ZWxfZ2VtX2JvX21hcF93Yyhkcm1faW50ZWxfYm8gKmJvKTsKK2ludCBkcm1faW50 ZWxfZ2VtX2JvX3VubWFwX3djKGRybV9pbnRlbF9ibyAqYm8pOwogCiBpbnQgZHJtX2ludGVsX2dl bV9ib19nZXRfcmVsb2NfY291bnQoZHJtX2ludGVsX2JvICpibyk7CiB2b2lkIGRybV9pbnRlbF9n ZW1fYm9fY2xlYXJfcmVsb2NzKGRybV9pbnRlbF9ibyAqYm8sIGludCBzdGFydCk7CmRpZmYgLS1n aXQgYS9pbnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMgYi9pbnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMK aW5kZXggZGMyODIwMC4uY2EyZjllZCAxMDA2NDQKLS0tIGEvaW50ZWwvaW50ZWxfYnVmbWdyX2dl bS5jCisrKyBiL2ludGVsL2ludGVsX2J1Zm1ncl9nZW0uYwpAQCAtMTQ2LDYgKzE0Niw3IEBAIHR5 cGVkZWYgc3RydWN0IF9kcm1faW50ZWxfYnVmbWdyX2dlbSB7CiAJdW5zaWduZWQgaW50IGJvX3Jl dXNlIDogMTsKIAl1bnNpZ25lZCBpbnQgbm9fZXhlYyA6IDE7CiAJdW5zaWduZWQgaW50IGhhc192 ZWJveCA6IDE7CisJdW5zaWduZWQgaW50IGhhc19leHRfbW1hcCA6IDE7CiAJYm9vbCBmZW5jZWRf cmVsb2NzOwogCiAJc3RydWN0IHsKQEAgLTIwOSw2ICsyMTAsOCBAQCBzdHJ1Y3QgX2RybV9pbnRl bF9ib19nZW0gewogCiAJLyoqIE1hcHBlZCBhZGRyZXNzIGZvciB0aGUgYnVmZmVyLCBzYXZlZCBh Y3Jvc3MgbWFwL3VubWFwIGN5Y2xlcyAqLwogCXZvaWQgKm1lbV92aXJ0dWFsOworCS8qKiBVbmNh Y2hlZCBNYXBwZWQgYWRkcmVzcyBmb3IgdGhlIGJ1ZmZlciwgc2F2ZWQgYWNyb3NzIG1hcC91bm1h cCBjeWNsZXMgKi8KKwl2b2lkICptZW1fd2NfdmlydHVhbDsKIAkvKiogR1RUIHZpcnR1YWwgYWRk cmVzcyBmb3IgdGhlIGJ1ZmZlciwgc2F2ZWQgYWNyb3NzIG1hcC91bm1hcCBjeWNsZXMgKi8KIAl2 b2lkICpndHRfdmlydHVhbDsKIAkvKioKQEAgLTExOTIsNiArMTE5NSwxMCBAQCBkcm1faW50ZWxf Z2VtX2JvX2ZyZWUoZHJtX2ludGVsX2JvICpibykKIAkJZHJtX211bm1hcChib19nZW0tPmd0dF92 aXJ0dWFsLCBib19nZW0tPmJvLnNpemUpOwogCQlidWZtZ3JfZ2VtLT52bWFfY291bnQtLTsKIAl9 CisJaWYgKGJvX2dlbS0+bWVtX3djX3ZpcnR1YWwpIHsKKwkJZHJtX211bm1hcChib19nZW0tPm1l bV93Y192aXJ0dWFsLCBib19nZW0tPmJvLnNpemUpOworCQlidWZtZ3JfZ2VtLT52bWFfY291bnQt LTsKKwl9CiAKIAkvKiBDbG9zZSB0aGlzIG9iamVjdCAqLwogCW1lbWNsZWFyKGNsb3NlKTsKQEAg LTEyMTUsNiArMTIyMiw5IEBAIGRybV9pbnRlbF9nZW1fYm9fbWFya19tbWFwc19pbmNvaGVyZW50 KGRybV9pbnRlbF9ibyAqYm8pCiAKIAlpZiAoYm9fZ2VtLT5ndHRfdmlydHVhbCkKIAkJVkFMR1JJ TkRfTUFLRV9NRU1fTk9BQ0NFU1MoYm9fZ2VtLT5ndHRfdmlydHVhbCwgYm8tPnNpemUpOworCisJ aWYgKGJvX2dlbS0+bWVtX3djX3ZpcnR1YWwpCisJCVZBTEdSSU5EX01BS0VfTUVNX05PQUNDRVNT KGJvX2dlbS0+bWVtX3djX3ZpcnR1YWwsIGJvLT5zaXplKTsKICNlbmRpZgogfQogCkBAIC0xMjYw LDYgKzEyNzAsOCBAQCBzdGF0aWMgdm9pZCBkcm1faW50ZWxfZ2VtX2JvX3B1cmdlX3ZtYV9jYWNo ZShkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVmbWdyX2dlbSkKIAogCS8qIFdlIG1heSBuZWVkIHRv IGV2aWN0IGEgZmV3IGVudHJpZXMgaW4gb3JkZXIgdG8gY3JlYXRlIG5ldyBtbWFwcyAqLwogCWxp bWl0ID0gYnVmbWdyX2dlbS0+dm1hX21heCAtIDIqYnVmbWdyX2dlbS0+dm1hX29wZW47CisJaWYg KGJ1Zm1ncl9nZW0tPmhhc19leHRfbW1hcCkKKwkJbGltaXQgLT0gYnVmbWdyX2dlbS0+dm1hX29w ZW47CiAJaWYgKGxpbWl0IDwgMCkKIAkJbGltaXQgPSAwOwogCkBAIC0xMjgyLDYgKzEyOTQsMTEg QEAgc3RhdGljIHZvaWQgZHJtX2ludGVsX2dlbV9ib19wdXJnZV92bWFfY2FjaGUoZHJtX2ludGVs X2J1Zm1ncl9nZW0gKmJ1Zm1ncl9nZW0pCiAJCQlib19nZW0tPmd0dF92aXJ0dWFsID0gTlVMTDsK IAkJCWJ1Zm1ncl9nZW0tPnZtYV9jb3VudC0tOwogCQl9CisJCWlmIChib19nZW0tPm1lbV93Y192 aXJ0dWFsKSB7CisJCQlkcm1fbXVubWFwKGJvX2dlbS0+bWVtX3djX3ZpcnR1YWwsIGJvX2dlbS0+ Ym8uc2l6ZSk7CisJCQlib19nZW0tPm1lbV93Y192aXJ0dWFsID0gTlVMTDsKKwkJCWJ1Zm1ncl9n ZW0tPnZtYV9jb3VudC0tOworCQl9CiAJfQogfQogCkBAIC0xMjk0LDYgKzEzMTEsOCBAQCBzdGF0 aWMgdm9pZCBkcm1faW50ZWxfZ2VtX2JvX2Nsb3NlX3ZtYShkcm1faW50ZWxfYnVmbWdyX2dlbSAq YnVmbWdyX2dlbSwKIAkJYnVmbWdyX2dlbS0+dm1hX2NvdW50Kys7CiAJaWYgKGJvX2dlbS0+Z3R0 X3ZpcnR1YWwpCiAJCWJ1Zm1ncl9nZW0tPnZtYV9jb3VudCsrOworCWlmIChib19nZW0tPm1lbV93 Y192aXJ0dWFsKQorCQlidWZtZ3JfZ2VtLT52bWFfY291bnQrKzsKIAlkcm1faW50ZWxfZ2VtX2Jv X3B1cmdlX3ZtYV9jYWNoZShidWZtZ3JfZ2VtKTsKIH0KIApAQCAtMTMwNiw2ICsxMzI1LDggQEAg c3RhdGljIHZvaWQgZHJtX2ludGVsX2dlbV9ib19vcGVuX3ZtYShkcm1faW50ZWxfYnVmbWdyX2dl bSAqYnVmbWdyX2dlbSwKIAkJYnVmbWdyX2dlbS0+dm1hX2NvdW50LS07CiAJaWYgKGJvX2dlbS0+ Z3R0X3ZpcnR1YWwpCiAJCWJ1Zm1ncl9nZW0tPnZtYV9jb3VudC0tOworCWlmIChib19nZW0tPm1l bV93Y192aXJ0dWFsKQorCQlidWZtZ3JfZ2VtLT52bWFfY291bnQtLTsKIAlkcm1faW50ZWxfZ2Vt X2JvX3B1cmdlX3ZtYV9jYWNoZShidWZtZ3JfZ2VtKTsKIH0KIApAQCAtMTQxMCw2ICsxNDMxLDEy MiBAQCBzdGF0aWMgdm9pZCBkcm1faW50ZWxfZ2VtX2JvX3VucmVmZXJlbmNlKGRybV9pbnRlbF9i byAqYm8pCiAJfQogfQogCitzdGF0aWMgaW50CittYXBfd2MoZHJtX2ludGVsX2JvICpibykKK3sK Kwlkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVmbWdyX2dlbSA9IChkcm1faW50ZWxfYnVmbWdyX2dl bSAqKSBiby0+YnVmbWdyOworCWRybV9pbnRlbF9ib19nZW0gKmJvX2dlbSA9IChkcm1faW50ZWxf Ym9fZ2VtICopIGJvOworCWludCByZXQ7CisKKwlpZiAoYm9fZ2VtLT5pc191c2VycHRyKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWlmICghYnVmbWdyX2dlbS0+aGFzX2V4dF9tbWFwKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWlmIChib19nZW0tPm1hcF9jb3VudCsrID09IDApCisJCWRybV9pbnRl bF9nZW1fYm9fb3Blbl92bWEoYnVmbWdyX2dlbSwgYm9fZ2VtKTsKKworCS8qIEdldCBhIG1hcHBp bmcgb2YgdGhlIGJ1ZmZlciBpZiB3ZSBoYXZlbid0IGJlZm9yZS4gKi8KKwlpZiAoYm9fZ2VtLT5t ZW1fd2NfdmlydHVhbCA9PSBOVUxMKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcCBtbWFw X2FyZzsKKworCQlEQkcoImJvX21hcF93YzogbW1hcCAlZCAoJXMpLCBtYXBfY291bnQ9JWRcbiIs CisJCSAgICBib19nZW0tPmdlbV9oYW5kbGUsIGJvX2dlbS0+bmFtZSwgYm9fZ2VtLT5tYXBfY291 bnQpOworCisJCW1lbWNsZWFyKG1tYXBfYXJnKTsKKwkJbW1hcF9hcmcuaGFuZGxlID0gYm9fZ2Vt LT5nZW1faGFuZGxlOworCQkvKiBUbyBpbmRpY2F0ZSB0aGUgdW5jYWNoZWQgdmlydHVhbCBtYXBw aW5nIHRvIEtNRCAqLworCQltbWFwX2FyZy5mbGFncyA9IEk5MTVfTU1BUF9XQzsKKwkJbW1hcF9h cmcuc2l6ZSA9IGJvLT5zaXplOworCQlyZXQgPSBkcm1Jb2N0bChidWZtZ3JfZ2VtLT5mZCwKKwkJ CSAgICAgICBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUCwKKwkJCSAgICAgICAmbW1hcF9hcmcpOwor CQlpZiAocmV0ICE9IDApIHsKKwkJCXJldCA9IC1lcnJubzsKKwkJCURCRygiJXM6JWQ6IEVycm9y IG1hcHBpbmcgYnVmZmVyICVkICglcyk6ICVzIC5cbiIsCisJCQkgICAgX19GSUxFX18sIF9fTElO RV9fLCBib19nZW0tPmdlbV9oYW5kbGUsCisJCQkgICAgYm9fZ2VtLT5uYW1lLCBzdHJlcnJvcihl cnJubykpOworCQkJaWYgKC0tYm9fZ2VtLT5tYXBfY291bnQgPT0gMCkKKwkJCQlkcm1faW50ZWxf Z2VtX2JvX2Nsb3NlX3ZtYShidWZtZ3JfZ2VtLCBib19nZW0pOworCQkJcmV0dXJuIHJldDsKKwkJ fQorCQlWRyhWQUxHUklORF9NQUxMT0NMSUtFX0JMT0NLKG1tYXBfYXJnLmFkZHJfcHRyLCBtbWFw X2FyZy5zaXplLCAwLCAxKSk7CisJCWJvX2dlbS0+bWVtX3djX3ZpcnR1YWwgPSAodm9pZCAqKSh1 aW50cHRyX3QpIG1tYXBfYXJnLmFkZHJfcHRyOworCX0KKworCWJvLT52aXJ0dWFsID0gYm9fZ2Vt LT5tZW1fd2NfdmlydHVhbDsKKworCURCRygiYm9fbWFwX3djOiAlZCAoJXMpIC0+ICVwXG4iLCBi b19nZW0tPmdlbV9oYW5kbGUsIGJvX2dlbS0+bmFtZSwKKwkgICAgYm9fZ2VtLT5tZW1fd2Nfdmly dHVhbCk7CisKKwlyZXR1cm4gMDsKK30KKworLyogVG8gYmUgdXNlZCBpbiBhIHNpbWlsYXIgd2F5 IHRvIG1tYXBfZ3R0ICovCitpbnQKK2RybV9pbnRlbF9nZW1fYm9fbWFwX3djKGRybV9pbnRlbF9i byAqYm8pIHsKKwlkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVmbWdyX2dlbSA9IChkcm1faW50ZWxf YnVmbWdyX2dlbSAqKSBiby0+YnVmbWdyOworCWRybV9pbnRlbF9ib19nZW0gKmJvX2dlbSA9IChk cm1faW50ZWxfYm9fZ2VtICopIGJvOworCXN0cnVjdCBkcm1faTkxNV9nZW1fc2V0X2RvbWFpbiBz ZXRfZG9tYWluOworCWludCByZXQ7CisKKwlwdGhyZWFkX211dGV4X2xvY2soJmJ1Zm1ncl9nZW0t PmxvY2spOworCisJcmV0ID0gbWFwX3djKGJvKTsKKwlpZiAocmV0KSB7CisJCXB0aHJlYWRfbXV0 ZXhfdW5sb2NrKCZidWZtZ3JfZ2VtLT5sb2NrKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBO b3cgbW92ZSBpdCB0byB0aGUgR1RUIGRvbWFpbiBzbyB0aGF0IHRoZSBHUFUgYW5kIENQVQorCSAq IGNhY2hlcyBhcmUgZmx1c2hlZCBhbmQgdGhlIEdQVSBpc24ndCBhY3RpdmVseSB1c2luZyB0aGUK KwkgKiBidWZmZXIuCisJICoKKwkgKiBUaGUgZG9tYWluIGNoYW5nZSBpcyBkb25lIGV2ZW4gZm9y IHRoZSBvYmplY3RzIHdoaWNoCisJICogYXJlIG5vdCBib3VuZGVkLiBGb3IgdGhlbSBmaXJzdCB0 aGUgcGFnZXMgYXJlIGFjcXVpcmVkLAorCSAqIGJlZm9yZSB0aGUgZG9tYWluIGNoYW5nZS4KKwkg Ki8KKwltZW1jbGVhcihzZXRfZG9tYWluKTsKKwlzZXRfZG9tYWluLmhhbmRsZSA9IGJvX2dlbS0+ Z2VtX2hhbmRsZTsKKwlzZXRfZG9tYWluLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9H VFQ7CisJc2V0X2RvbWFpbi53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fR1RUOworCXJl dCA9IGRybUlvY3RsKGJ1Zm1ncl9nZW0tPmZkLAorCQkgICAgICAgRFJNX0lPQ1RMX0k5MTVfR0VN X1NFVF9ET01BSU4sCisJCSAgICAgICAmc2V0X2RvbWFpbik7CisJaWYgKHJldCAhPSAwKSB7CisJ CURCRygiJXM6JWQ6IEVycm9yIHNldHRpbmcgZG9tYWluICVkOiAlc1xuIiwKKwkJICAgIF9fRklM RV9fLCBfX0xJTkVfXywgYm9fZ2VtLT5nZW1faGFuZGxlLAorCQkgICAgc3RyZXJyb3IoZXJybm8p KTsKKwl9CisJZHJtX2ludGVsX2dlbV9ib19tYXJrX21tYXBzX2luY29oZXJlbnQoYm8pOworCVZH KFZBTEdSSU5EX01BS0VfTUVNX0RFRklORUQoYm9fZ2VtLT5tZW1fd2NfdmlydHVhbCwgYm8tPnNp emUpKTsKKwlwdGhyZWFkX211dGV4X3VubG9jaygmYnVmbWdyX2dlbS0+bG9jayk7CisKKwlyZXR1 cm4gMDsKK30KKworaW50Citkcm1faW50ZWxfZ2VtX2JvX21hcF93Y191bnN5bmNocm9uaXplZChk cm1faW50ZWxfYm8gKmJvKSB7CisJZHJtX2ludGVsX2J1Zm1ncl9nZW0gKmJ1Zm1ncl9nZW0gPSAo ZHJtX2ludGVsX2J1Zm1ncl9nZW0gKikgYm8tPmJ1Zm1ncjsKKyNpZmRlZiBIQVZFX1ZBTEdSSU5E CisJZHJtX2ludGVsX2JvX2dlbSAqYm9fZ2VtID0gKGRybV9pbnRlbF9ib19nZW0gKikgYm87Cisj ZW5kaWYKKwlpbnQgcmV0OworCisJcHRocmVhZF9tdXRleF9sb2NrKCZidWZtZ3JfZ2VtLT5sb2Nr KTsKKworCXJldCA9IG1hcF93Yyhibyk7CisJaWYgKHJldCA9PSAwKSB7CisJCWRybV9pbnRlbF9n ZW1fYm9fbWFya19tbWFwc19pbmNvaGVyZW50KGJvKTsKKwkJVkcoVkFMR1JJTkRfTUFLRV9NRU1f REVGSU5FRChib19nZW0tPm1lbV93Y192aXJ0dWFsLCBiby0+c2l6ZSkpOworCX0KKworCXB0aHJl YWRfbXV0ZXhfdW5sb2NrKCZidWZtZ3JfZ2VtLT5sb2NrKTsKKworCXJldHVybiByZXQ7Cit9CisK IHN0YXRpYyBpbnQgZHJtX2ludGVsX2dlbV9ib19tYXAoZHJtX2ludGVsX2JvICpibywgaW50IHdy aXRlX2VuYWJsZSkKIHsKIAlkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVmbWdyX2dlbSA9IChkcm1f aW50ZWxfYnVmbWdyX2dlbSAqKSBiby0+YnVmbWdyOwpAQCAtMTY5NSw2ICsxODMyLDEyIEBAIHN0 YXRpYyBpbnQgZHJtX2ludGVsX2dlbV9ib191bm1hcChkcm1faW50ZWxfYm8gKmJvKQogfQogCiBp bnQKK2RybV9pbnRlbF9nZW1fYm9fdW5tYXBfd2MoZHJtX2ludGVsX2JvICpibykKK3sKKwlyZXR1 cm4gZHJtX2ludGVsX2dlbV9ib191bm1hcChibyk7Cit9CisKK2ludAogZHJtX2ludGVsX2dlbV9i b191bm1hcF9ndHQoZHJtX2ludGVsX2JvICpibykKIHsKIAlyZXR1cm4gZHJtX2ludGVsX2dlbV9i b191bm1hcChibyk7CkBAIC0zNDI1LDYgKzM1NjgsMTAgQEAgZHJtX2ludGVsX2J1Zm1ncl9nZW1f aW5pdChpbnQgZmQsIGludCBiYXRjaF9zaXplKQogCXJldCA9IGRybUlvY3RsKGJ1Zm1ncl9nZW0t PmZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKIAlidWZtZ3JfZ2VtLT5oYXNfdmVi b3ggPSAocmV0ID09IDApICYgKCpncC52YWx1ZSA+IDApOwogCisJZ3AucGFyYW0gPSBJOTE1X1BB UkFNX01NQVBfVkVSU0lPTjsKKwlyZXQgPSBkcm1Jb2N0bChidWZtZ3JfZ2VtLT5mZCwgRFJNX0lP Q1RMX0k5MTVfR0VUUEFSQU0sICZncCk7CisJYnVmbWdyX2dlbS0+aGFzX2V4dF9tbWFwID0gKHJl dCA9PSAwKSAmICgqZ3AudmFsdWUgPiAwKTsKKwogCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9IQVNf RVhFQ19TT0ZUUElOOwogCXJldCA9IGRybUlvY3RsKGJ1Zm1ncl9nZW0tPmZkLCBEUk1fSU9DVExf STkxNV9HRVRQQVJBTSwgJmdwKTsKIAlpZiAocmV0ID09IDAgJiYgKmdwLnZhbHVlID4gMCkKLS0g CjEuOS4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK