From mboxrd@z Thu Jan 1 00:00:00 1970 From: akash.goel@intel.com Subject: [PATCH v4] intel: New libdrm interface to create unbound wc user mappings for objects Date: Sun, 14 Dec 2014 14:11:44 +0530 Message-ID: <1418546504-20032-1-git-send-email-akash.goel@intel.com> References: <20141209165301.GE11257@strange.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 220DB6E42A for ; Sun, 14 Dec 2014 00:36:27 -0800 (PST) In-Reply-To: <20141209165301.GE11257@strange.ger.corp.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 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 b24gKERhbWllbikKClNpZ25lZC1vZmYtYnk6IEFrYXNoIEdvZWwgPGFrYXNoLmdvZWxAaW50ZWwu Y29tPgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KUmV2aWV3ZWQtYnk6IERhbWllbiBMZXNwaWF1IDxkYW1pZW4ubGVzcGlhdUBpbnRlbC5jb20+ Ci0tLQogaW5jbHVkZS9kcm0vaTkxNV9kcm0uaCAgIHwgICA5ICsrKwogaW50ZWwvaW50ZWxfYnVm bWdyLmggICAgIHwgICAzICsKIGludGVsL2ludGVsX2J1Zm1ncl9nZW0uYyB8IDE0OSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2Vk LCAxNjEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2k5MTVfZHJtLmgg Yi9pbmNsdWRlL2RybS9pOTE1X2RybS5oCmluZGV4IDE1ZGQwMWQuLmE5MWExZDAgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaApA QCAtMzQwLDYgKzM0MCw3IEBAIHR5cGVkZWYgc3RydWN0IGRybV9pOTE1X2lycV93YWl0IHsKICNk ZWZpbmUgSTkxNV9QQVJBTV9IQVNfRVhFQ19IQU5ETEVfTFVUICAgMjYKICNkZWZpbmUgSTkxNV9Q QVJBTV9IQVNfV1QgICAgIAkgCSAyNwogI2RlZmluZSBJOTE1X1BBUkFNX0NNRF9QQVJTRVJfVkVS U0lPTgkgMjgKKyNkZWZpbmUgSTkxNV9QQVJBTV9NTUFQX1ZFUlNJT04JCSAyOQogCiB0eXBlZGVm IHN0cnVjdCBkcm1faTkxNV9nZXRwYXJhbSB7CiAJaW50IHBhcmFtOwpAQCAtNDg3LDYgKzQ4OCwx NCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXAgewogCSAqIFRoaXMgaXMgYSBmaXhlZC1zaXpl IHR5cGUgZm9yIDMyLzY0IGNvbXBhdGliaWxpdHkuCiAJICovCiAJX191NjQgYWRkcl9wdHI7CisK KwkvKioKKwkgKiBGbGFncyBmb3IgZXh0ZW5kZWQgYmVoYXZpb3VyLgorCSAqCisJICogQWRkZWQg aW4gdmVyc2lvbiAyLgorCSovCisJX191NjQgZmxhZ3M7CisjZGVmaW5lIEk5MTVfTU1BUF9XQyAw eDEKIH07CiAKIHN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9ndHQgewpkaWZmIC0tZ2l0IGEvaW50 ZWwvaW50ZWxfYnVmbWdyLmggYi9pbnRlbC9pbnRlbF9idWZtZ3IuaAppbmRleCBiZTgzYTU2Li5i ZGE0MTE1IDEwMDY0NAotLS0gYS9pbnRlbC9pbnRlbF9idWZtZ3IuaAorKysgYi9pbnRlbC9pbnRl bF9idWZtZ3IuaApAQCAtMTc3LDYgKzE3Nyw5IEBAIHZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1f c2V0X3ZtYV9jYWNoZV9zaXplKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKIGludCBkcm1faW50 ZWxfZ2VtX2JvX21hcF91bnN5bmNocm9uaXplZChkcm1faW50ZWxfYm8gKmJvKTsKIGludCBkcm1f aW50ZWxfZ2VtX2JvX21hcF9ndHQoZHJtX2ludGVsX2JvICpibyk7CiBpbnQgZHJtX2ludGVsX2dl bV9ib191bm1hcF9ndHQoZHJtX2ludGVsX2JvICpibyk7CitpbnQgZHJtX2ludGVsX2dlbV9ib19t YXBfd2NfdW5zeW5jaHJvbml6ZWQoZHJtX2ludGVsX2JvICpibyk7CitpbnQgZHJtX2ludGVsX2dl bV9ib19tYXBfd2MoZHJtX2ludGVsX2JvICpibyk7CitpbnQgZHJtX2ludGVsX2dlbV9ib191bm1h cF93Yyhkcm1faW50ZWxfYm8gKmJvKTsKIAogaW50IGRybV9pbnRlbF9nZW1fYm9fZ2V0X3JlbG9j X2NvdW50KGRybV9pbnRlbF9ibyAqYm8pOwogdm9pZCBkcm1faW50ZWxfZ2VtX2JvX2NsZWFyX3Jl bG9jcyhkcm1faW50ZWxfYm8gKmJvLCBpbnQgc3RhcnQpOwpkaWZmIC0tZ2l0IGEvaW50ZWwvaW50 ZWxfYnVmbWdyX2dlbS5jIGIvaW50ZWwvaW50ZWxfYnVmbWdyX2dlbS5jCmluZGV4IDE0ZTkyYzku LjkxMDkzMjUgMTAwNjQ0Ci0tLSBhL2ludGVsL2ludGVsX2J1Zm1ncl9nZW0uYworKysgYi9pbnRl bC9pbnRlbF9idWZtZ3JfZ2VtLmMKQEAgLTEzMCw2ICsxMzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBf ZHJtX2ludGVsX2J1Zm1ncl9nZW0gewogCXVuc2lnbmVkIGludCBib19yZXVzZSA6IDE7CiAJdW5z aWduZWQgaW50IG5vX2V4ZWMgOiAxOwogCXVuc2lnbmVkIGludCBoYXNfdmVib3ggOiAxOworCXVu c2lnbmVkIGludCBoYXNfZXh0X21tYXAgOiAxOwogCWJvb2wgZmVuY2VkX3JlbG9jczsKIAogCWNo YXIgKmF1Yl9maWxlbmFtZTsKQEAgLTE4NCw2ICsxODUsOCBAQCBzdHJ1Y3QgX2RybV9pbnRlbF9i b19nZW0gewogCWludCByZWxvY19jb3VudDsKIAkvKiogTWFwcGVkIGFkZHJlc3MgZm9yIHRoZSBi dWZmZXIsIHNhdmVkIGFjcm9zcyBtYXAvdW5tYXAgY3ljbGVzICovCiAJdm9pZCAqbWVtX3ZpcnR1 YWw7CisJLyoqIFVuY2FjaGVkIE1hcHBlZCBhZGRyZXNzIGZvciB0aGUgYnVmZmVyLCBzYXZlZCBh Y3Jvc3MgbWFwL3VubWFwIGN5Y2xlcyAqLworCXZvaWQgKm1lbV93Y192aXJ0dWFsOwogCS8qKiBH VFQgdmlydHVhbCBhZGRyZXNzIGZvciB0aGUgYnVmZmVyLCBzYXZlZCBhY3Jvc3MgbWFwL3VubWFw IGN5Y2xlcyAqLwogCXZvaWQgKmd0dF92aXJ0dWFsOwogCS8qKgpAQCAtMTA1OCw2ICsxMDYxLDEw IEBAIGRybV9pbnRlbF9nZW1fYm9fZnJlZShkcm1faW50ZWxfYm8gKmJvKQogCQlkcm1fbXVubWFw KGJvX2dlbS0+Z3R0X3ZpcnR1YWwsIGJvX2dlbS0+Ym8uc2l6ZSk7CiAJCWJ1Zm1ncl9nZW0tPnZt YV9jb3VudC0tOwogCX0KKwlpZiAoYm9fZ2VtLT5tZW1fd2NfdmlydHVhbCkgeworCQlkcm1fbXVu bWFwKGJvX2dlbS0+bWVtX3djX3ZpcnR1YWwsIGJvX2dlbS0+Ym8uc2l6ZSk7CisJCWJ1Zm1ncl9n ZW0tPnZtYV9jb3VudC0tOworCX0KIAogCS8qIENsb3NlIHRoaXMgb2JqZWN0ICovCiAJVkdfQ0xF QVIoY2xvc2UpOwpAQCAtMTA4Miw2ICsxMDg5LDkgQEAgZHJtX2ludGVsX2dlbV9ib19tYXJrX21t YXBzX2luY29oZXJlbnQoZHJtX2ludGVsX2JvICpibykKIAogCWlmIChib19nZW0tPmd0dF92aXJ0 dWFsKQogCQlWQUxHUklORF9NQUtFX01FTV9OT0FDQ0VTUyhib19nZW0tPmd0dF92aXJ0dWFsLCBi by0+c2l6ZSk7CisKKwlpZiAoYm9fZ2VtLT5tZW1fd2NfdmlydHVhbCkKKwkJVkFMR1JJTkRfTUFL RV9NRU1fTk9BQ0NFU1MoYm9fZ2VtLT5tZW1fd2NfdmlydHVhbCwgYm8tPnNpemUpOwogI2VuZGlm CiB9CiAKQEAgLTExMjcsNiArMTEzNyw4IEBAIHN0YXRpYyB2b2lkIGRybV9pbnRlbF9nZW1fYm9f cHVyZ2Vfdm1hX2NhY2hlKGRybV9pbnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtKQogCiAJLyog V2UgbWF5IG5lZWQgdG8gZXZpY3QgYSBmZXcgZW50cmllcyBpbiBvcmRlciB0byBjcmVhdGUgbmV3 IG1tYXBzICovCiAJbGltaXQgPSBidWZtZ3JfZ2VtLT52bWFfbWF4IC0gMipidWZtZ3JfZ2VtLT52 bWFfb3BlbjsKKwlpZiAoYnVmbWdyX2dlbS0+aGFzX2V4dF9tbWFwKQorCQlsaW1pdCAtPSBidWZt Z3JfZ2VtLT52bWFfb3BlbjsKIAlpZiAobGltaXQgPCAwKQogCQlsaW1pdCA9IDA7CiAKQEAgLTEx NDksNiArMTE2MSwxMSBAQCBzdGF0aWMgdm9pZCBkcm1faW50ZWxfZ2VtX2JvX3B1cmdlX3ZtYV9j YWNoZShkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVmbWdyX2dlbSkKIAkJCWJvX2dlbS0+Z3R0X3Zp cnR1YWwgPSBOVUxMOwogCQkJYnVmbWdyX2dlbS0+dm1hX2NvdW50LS07CiAJCX0KKwkJaWYgKGJv X2dlbS0+bWVtX3djX3ZpcnR1YWwpIHsKKwkJCWRybV9tdW5tYXAoYm9fZ2VtLT5tZW1fd2Nfdmly dHVhbCwgYm9fZ2VtLT5iby5zaXplKTsKKwkJCWJvX2dlbS0+bWVtX3djX3ZpcnR1YWwgPSBOVUxM OworCQkJYnVmbWdyX2dlbS0+dm1hX2NvdW50LS07CisJCX0KIAl9CiB9CiAKQEAgLTExNjEsNiAr MTE3OCw4IEBAIHN0YXRpYyB2b2lkIGRybV9pbnRlbF9nZW1fYm9fY2xvc2Vfdm1hKGRybV9pbnRl bF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtLAogCQlidWZtZ3JfZ2VtLT52bWFfY291bnQrKzsKIAlp ZiAoYm9fZ2VtLT5ndHRfdmlydHVhbCkKIAkJYnVmbWdyX2dlbS0+dm1hX2NvdW50Kys7CisJaWYg KGJvX2dlbS0+bWVtX3djX3ZpcnR1YWwpCisJCWJ1Zm1ncl9nZW0tPnZtYV9jb3VudCsrOwogCWRy bV9pbnRlbF9nZW1fYm9fcHVyZ2Vfdm1hX2NhY2hlKGJ1Zm1ncl9nZW0pOwogfQogCkBAIC0xMTcz LDYgKzExOTIsOCBAQCBzdGF0aWMgdm9pZCBkcm1faW50ZWxfZ2VtX2JvX29wZW5fdm1hKGRybV9p bnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtLAogCQlidWZtZ3JfZ2VtLT52bWFfY291bnQtLTsK IAlpZiAoYm9fZ2VtLT5ndHRfdmlydHVhbCkKIAkJYnVmbWdyX2dlbS0+dm1hX2NvdW50LS07CisJ aWYgKGJvX2dlbS0+bWVtX3djX3ZpcnR1YWwpCisJCWJ1Zm1ncl9nZW0tPnZtYV9jb3VudC0tOwog CWRybV9pbnRlbF9nZW1fYm9fcHVyZ2Vfdm1hX2NhY2hlKGJ1Zm1ncl9nZW0pOwogfQogCkBAIC0x MjY4LDYgKzEyODksMTIzIEBAIHN0YXRpYyB2b2lkIGRybV9pbnRlbF9nZW1fYm9fdW5yZWZlcmVu Y2UoZHJtX2ludGVsX2JvICpibykKIAl9CiB9CiAKK3N0YXRpYyBpbnQKK21hcF93Yyhkcm1faW50 ZWxfYm8gKmJvKQoreworCWRybV9pbnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtID0gKGRybV9p bnRlbF9idWZtZ3JfZ2VtICopIGJvLT5idWZtZ3I7CisJZHJtX2ludGVsX2JvX2dlbSAqYm9fZ2Vt ID0gKGRybV9pbnRlbF9ib19nZW0gKikgYm87CisJaW50IHJldDsKKworCWlmIChib19nZW0tPmlz X3VzZXJwdHIpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFidWZtZ3JfZ2VtLT5oYXNfZXh0 X21tYXApCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGJvX2dlbS0+bWFwX2NvdW50KysgPT0g MCkKKwkJZHJtX2ludGVsX2dlbV9ib19vcGVuX3ZtYShidWZtZ3JfZ2VtLCBib19nZW0pOworCisJ LyogR2V0IGEgbWFwcGluZyBvZiB0aGUgYnVmZmVyIGlmIHdlIGhhdmVuJ3QgYmVmb3JlLiAqLwor CWlmIChib19nZW0tPm1lbV93Y192aXJ0dWFsID09IE5VTEwpIHsKKwkJc3RydWN0IGRybV9pOTE1 X2dlbV9tbWFwIG1tYXBfYXJnOworCisJCURCRygiYm9fbWFwX3djOiBtbWFwICVkICglcyksIG1h cF9jb3VudD0lZFxuIiwKKwkJICAgIGJvX2dlbS0+Z2VtX2hhbmRsZSwgYm9fZ2VtLT5uYW1lLCBi b19nZW0tPm1hcF9jb3VudCk7CisKKwkJVkdfQ0xFQVIobW1hcF9hcmcpOworCQltbWFwX2FyZy5o YW5kbGUgPSBib19nZW0tPmdlbV9oYW5kbGU7CisJCS8qIFRvIGluZGljYXRlIHRoZSB1bmNhY2hl ZCB2aXJ0dWFsIG1hcHBpbmcgdG8gS01EICovCisJCW1tYXBfYXJnLmZsYWdzID0gSTkxNV9NTUFQ X1dDOworCQltbWFwX2FyZy5vZmZzZXQgPSAwOworCQltbWFwX2FyZy5zaXplID0gYm8tPnNpemU7 CisJCXJldCA9IGRybUlvY3RsKGJ1Zm1ncl9nZW0tPmZkLAorCQkJICAgICAgIERSTV9JT0NUTF9J OTE1X0dFTV9NTUFQLAorCQkJICAgICAgICZtbWFwX2FyZyk7CisJCWlmIChyZXQgIT0gMCkgewor CQkJcmV0ID0gLWVycm5vOworCQkJREJHKCIlczolZDogRXJyb3IgbWFwcGluZyBidWZmZXIgJWQg KCVzKTogJXMgLlxuIiwKKwkJCSAgICBfX0ZJTEVfXywgX19MSU5FX18sIGJvX2dlbS0+Z2VtX2hh bmRsZSwKKwkJCSAgICBib19nZW0tPm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlpZiAoLS1i b19nZW0tPm1hcF9jb3VudCA9PSAwKQorCQkJCWRybV9pbnRlbF9nZW1fYm9fY2xvc2Vfdm1hKGJ1 Zm1ncl9nZW0sIGJvX2dlbSk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJCVZHKFZBTEdSSU5EX01B TExPQ0xJS0VfQkxPQ0sobW1hcF9hcmcuYWRkcl9wdHIsIG1tYXBfYXJnLnNpemUsIDAsIDEpKTsK KwkJYm9fZ2VtLT5tZW1fd2NfdmlydHVhbCA9ICh2b2lkICopKHVpbnRwdHJfdCkgbW1hcF9hcmcu YWRkcl9wdHI7CisJfQorCisJYm8tPnZpcnR1YWwgPSBib19nZW0tPm1lbV93Y192aXJ0dWFsOwor CisJREJHKCJib19tYXBfd2M6ICVkICglcykgLT4gJXBcbiIsIGJvX2dlbS0+Z2VtX2hhbmRsZSwg Ym9fZ2VtLT5uYW1lLAorCSAgICBib19nZW0tPm1lbV93Y192aXJ0dWFsKTsKKworCXJldHVybiAw OworfQorCisvKiBUbyBiZSB1c2VkIGluIGEgc2ltaWxhciB3YXkgdG8gbW1hcF9ndHQgKi8KK2Ry bV9wdWJsaWMgaW50Citkcm1faW50ZWxfZ2VtX2JvX21hcF93Yyhkcm1faW50ZWxfYm8gKmJvKSB7 CisJZHJtX2ludGVsX2J1Zm1ncl9nZW0gKmJ1Zm1ncl9nZW0gPSAoZHJtX2ludGVsX2J1Zm1ncl9n ZW0gKikgYm8tPmJ1Zm1ncjsKKwlkcm1faW50ZWxfYm9fZ2VtICpib19nZW0gPSAoZHJtX2ludGVs X2JvX2dlbSAqKSBibzsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3NldF9kb21haW4gc2V0X2RvbWFp bjsKKwlpbnQgcmV0OworCisJcHRocmVhZF9tdXRleF9sb2NrKCZidWZtZ3JfZ2VtLT5sb2NrKTsK KworCXJldCA9IG1hcF93Yyhibyk7CisJaWYgKHJldCkgeworCQlwdGhyZWFkX211dGV4X3VubG9j aygmYnVmbWdyX2dlbS0+bG9jayk7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogTm93IG1vdmUg aXQgdG8gdGhlIEdUVCBkb21haW4gc28gdGhhdCB0aGUgR1BVIGFuZCBDUFUKKwkgKiBjYWNoZXMg YXJlIGZsdXNoZWQgYW5kIHRoZSBHUFUgaXNuJ3QgYWN0aXZlbHkgdXNpbmcgdGhlCisJICogYnVm ZmVyLgorCSAqCisJICogVGhlIGRvbWFpbiBjaGFuZ2UgaXMgZG9uZSBldmVuIGZvciB0aGUgb2Jq ZWN0cyB3aGljaAorCSAqIGFyZSBub3QgYm91bmRlZC4gRm9yIHRoZW0gZmlyc3QgdGhlIHBhZ2Vz IGFyZSBhY3F1aXJlZCwKKwkgKiBiZWZvcmUgdGhlIGRvbWFpbiBjaGFuZ2UuCisJICovCisJVkdf Q0xFQVIoc2V0X2RvbWFpbik7CisJc2V0X2RvbWFpbi5oYW5kbGUgPSBib19nZW0tPmdlbV9oYW5k bGU7CisJc2V0X2RvbWFpbi5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fR1RUOworCXNl dF9kb21haW4ud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0dUVDsKKwlyZXQgPSBkcm1J b2N0bChidWZtZ3JfZ2VtLT5mZCwKKwkJICAgICAgIERSTV9JT0NUTF9JOTE1X0dFTV9TRVRfRE9N QUlOLAorCQkgICAgICAgJnNldF9kb21haW4pOworCWlmIChyZXQgIT0gMCkgeworCQlEQkcoIiVz OiVkOiBFcnJvciBzZXR0aW5nIGRvbWFpbiAlZDogJXNcbiIsCisJCSAgICBfX0ZJTEVfXywgX19M SU5FX18sIGJvX2dlbS0+Z2VtX2hhbmRsZSwKKwkJICAgIHN0cmVycm9yKGVycm5vKSk7CisJfQor CWRybV9pbnRlbF9nZW1fYm9fbWFya19tbWFwc19pbmNvaGVyZW50KGJvKTsKKwlWRyhWQUxHUklO RF9NQUtFX01FTV9ERUZJTkVEKGJvX2dlbS0+bWVtX3djX3ZpcnR1YWwsIGJvLT5zaXplKSk7CisJ cHRocmVhZF9tdXRleF91bmxvY2soJmJ1Zm1ncl9nZW0tPmxvY2spOworCisJcmV0dXJuIDA7Cit9 CisKK2RybV9wdWJsaWMgaW50Citkcm1faW50ZWxfZ2VtX2JvX21hcF93Y191bnN5bmNocm9uaXpl ZChkcm1faW50ZWxfYm8gKmJvKSB7CisJZHJtX2ludGVsX2J1Zm1ncl9nZW0gKmJ1Zm1ncl9nZW0g PSAoZHJtX2ludGVsX2J1Zm1ncl9nZW0gKikgYm8tPmJ1Zm1ncjsKKyNpZmRlZiBIQVZFX1ZBTEdS SU5ECisJZHJtX2ludGVsX2JvX2dlbSAqYm9fZ2VtID0gKGRybV9pbnRlbF9ib19nZW0gKikgYm87 CisjZW5kaWYKKwlpbnQgcmV0OworCisJcHRocmVhZF9tdXRleF9sb2NrKCZidWZtZ3JfZ2VtLT5s b2NrKTsKKworCXJldCA9IG1hcF93Yyhibyk7CisJaWYgKHJldCA9PSAwKSB7CisJCWRybV9pbnRl bF9nZW1fYm9fbWFya19tbWFwc19pbmNvaGVyZW50KGJvKTsKKwkJVkcoVkFMR1JJTkRfTUFLRV9N RU1fREVGSU5FRChib19nZW0tPm1lbV93Y192aXJ0dWFsLCBiby0+c2l6ZSkpOworCX0KKworCXB0 aHJlYWRfbXV0ZXhfdW5sb2NrKCZidWZtZ3JfZ2VtLT5sb2NrKTsKKworCXJldHVybiByZXQ7Cit9 CisKIHN0YXRpYyBpbnQgZHJtX2ludGVsX2dlbV9ib19tYXAoZHJtX2ludGVsX2JvICpibywgaW50 IHdyaXRlX2VuYWJsZSkKIHsKIAlkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVmbWdyX2dlbSA9IChk cm1faW50ZWxfYnVmbWdyX2dlbSAqKSBiby0+YnVmbWdyOwpAQCAtMTI5NCw2ICsxNDMyLDcgQEAg c3RhdGljIGludCBkcm1faW50ZWxfZ2VtX2JvX21hcChkcm1faW50ZWxfYm8gKmJvLCBpbnQgd3Jp dGVfZW5hYmxlKQogCiAJCVZHX0NMRUFSKG1tYXBfYXJnKTsKIAkJbW1hcF9hcmcuaGFuZGxlID0g Ym9fZ2VtLT5nZW1faGFuZGxlOworCQltbWFwX2FyZy5mbGFncyA9IDA7CiAJCW1tYXBfYXJnLm9m ZnNldCA9IDA7CiAJCW1tYXBfYXJnLnNpemUgPSBiby0+c2l6ZTsKIAkJcmV0ID0gZHJtSW9jdGwo YnVmbWdyX2dlbS0+ZmQsCkBAIC0xNTU0LDYgKzE2OTMsMTIgQEAgc3RhdGljIGludCBkcm1faW50 ZWxfZ2VtX2JvX3VubWFwKGRybV9pbnRlbF9ibyAqYm8pCiB9CiAKIGRybV9wdWJsaWMgaW50Citk cm1faW50ZWxfZ2VtX2JvX3VubWFwX3djKGRybV9pbnRlbF9ibyAqYm8pCit7CisJcmV0dXJuIGRy bV9pbnRlbF9nZW1fYm9fdW5tYXAoYm8pOworfQorCitkcm1fcHVibGljIGludAogZHJtX2ludGVs X2dlbV9ib191bm1hcF9ndHQoZHJtX2ludGVsX2JvICpibykKIHsKIAlyZXR1cm4gZHJtX2ludGVs X2dlbV9ib191bm1hcChibyk7CkBAIC0zNTQyLDYgKzM2ODcsMTAgQEAgZHJtX2ludGVsX2J1Zm1n cl9nZW1faW5pdChpbnQgZmQsIGludCBiYXRjaF9zaXplKQogCXJldCA9IGRybUlvY3RsKGJ1Zm1n cl9nZW0tPmZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKIAlidWZtZ3JfZ2VtLT5o YXNfdmVib3ggPSAocmV0ID09IDApICYgKCpncC52YWx1ZSA+IDApOwogCisJZ3AucGFyYW0gPSBJ OTE1X1BBUkFNX01NQVBfVkVSU0lPTjsKKwlyZXQgPSBkcm1Jb2N0bChidWZtZ3JfZ2VtLT5mZCwg RFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7CisJYnVmbWdyX2dlbS0+aGFzX2V4dF9tbWFw ID0gKHJldCA9PSAwKSAmICgqZ3AudmFsdWUgPiAwKTsKKwogCWlmIChidWZtZ3JfZ2VtLT5nZW4g PCA0KSB7CiAJCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9OVU1fRkVOQ0VTX0FWQUlMOwogCQlncC52 YWx1ZSA9ICZidWZtZ3JfZ2VtLT5hdmFpbGFibGVfZmVuY2VzOwotLSAKMS45LjIKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==