From mboxrd@z Thu Jan 1 00:00:00 1970 From: akash.goel@intel.com Subject: [PATCH v3] intel: New libdrm interface to create unbound wc user mappings for objects Date: Tue, 28 Oct 2014 18:39:27 +0530 Message-ID: <1414501767-22479-1-git-send-email-akash.goel@intel.com> References: <1414237913-7809-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 829E16E463 for ; Tue, 28 Oct 2014 06:04:29 -0700 (PDT) In-Reply-To: <1414237913-7809-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 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 ClNpZ25lZC1vZmYtYnk6IEFrYXNoIEdvZWwgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBpbmNs dWRlL2RybS9pOTE1X2RybS5oICAgfCAgIDkgKysrCiBpbnRlbC9pbnRlbF9idWZtZ3IuaCAgICAg fCAgIDMgKwogaW50ZWwvaW50ZWxfYnVmbWdyX2dlbS5jIHwgMTUwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE2MiBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUv ZHJtL2k5MTVfZHJtLmgKaW5kZXggMTVkZDAxZC4uYTkxYTFkMCAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL2RybS9pOTE1X2RybS5oCkBAIC0zNDAsNiAr MzQwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfaXJxX3dhaXQgewogI2RlZmluZSBJOTE1 X1BBUkFNX0hBU19FWEVDX0hBTkRMRV9MVVQgICAyNgogI2RlZmluZSBJOTE1X1BBUkFNX0hBU19X VCAgICAgCSAJIDI3CiAjZGVmaW5lIEk5MTVfUEFSQU1fQ01EX1BBUlNFUl9WRVJTSU9OCSAyOAor I2RlZmluZSBJOTE1X1BBUkFNX01NQVBfVkVSU0lPTgkJIDI5CiAKIHR5cGVkZWYgc3RydWN0IGRy bV9pOTE1X2dldHBhcmFtIHsKIAlpbnQgcGFyYW07CkBAIC00ODcsNiArNDg4LDE0IEBAIHN0cnVj dCBkcm1faTkxNV9nZW1fbW1hcCB7CiAJICogVGhpcyBpcyBhIGZpeGVkLXNpemUgdHlwZSBmb3Ig MzIvNjQgY29tcGF0aWJpbGl0eS4KIAkgKi8KIAlfX3U2NCBhZGRyX3B0cjsKKworCS8qKgorCSAq IEZsYWdzIGZvciBleHRlbmRlZCBiZWhhdmlvdXIuCisJICoKKwkgKiBBZGRlZCBpbiB2ZXJzaW9u IDIuCisJKi8KKwlfX3U2NCBmbGFnczsKKyNkZWZpbmUgSTkxNV9NTUFQX1dDIDB4MQogfTsKIAog c3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX2d0dCB7CmRpZmYgLS1naXQgYS9pbnRlbC9pbnRlbF9i dWZtZ3IuaCBiL2ludGVsL2ludGVsX2J1Zm1nci5oCmluZGV4IGJlODNhNTYuLmJkYTQxMTUgMTAw NjQ0Ci0tLSBhL2ludGVsL2ludGVsX2J1Zm1nci5oCisrKyBiL2ludGVsL2ludGVsX2J1Zm1nci5o CkBAIC0xNzcsNiArMTc3LDkgQEAgdm9pZCBkcm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfdm1hX2Nh Y2hlX3NpemUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAogaW50IGRybV9pbnRlbF9nZW1fYm9f bWFwX3Vuc3luY2hyb25pemVkKGRybV9pbnRlbF9ibyAqYm8pOwogaW50IGRybV9pbnRlbF9nZW1f Ym9fbWFwX2d0dChkcm1faW50ZWxfYm8gKmJvKTsKIGludCBkcm1faW50ZWxfZ2VtX2JvX3VubWFw X2d0dChkcm1faW50ZWxfYm8gKmJvKTsKK2ludCBkcm1faW50ZWxfZ2VtX2JvX21hcF93Y191bnN5 bmNocm9uaXplZChkcm1faW50ZWxfYm8gKmJvKTsKK2ludCBkcm1faW50ZWxfZ2VtX2JvX21hcF93 Yyhkcm1faW50ZWxfYm8gKmJvKTsKK2ludCBkcm1faW50ZWxfZ2VtX2JvX3VubWFwX3djKGRybV9p bnRlbF9ibyAqYm8pOwogCiBpbnQgZHJtX2ludGVsX2dlbV9ib19nZXRfcmVsb2NfY291bnQoZHJt X2ludGVsX2JvICpibyk7CiB2b2lkIGRybV9pbnRlbF9nZW1fYm9fY2xlYXJfcmVsb2NzKGRybV9p bnRlbF9ibyAqYm8sIGludCBzdGFydCk7CmRpZmYgLS1naXQgYS9pbnRlbC9pbnRlbF9idWZtZ3Jf Z2VtLmMgYi9pbnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMKaW5kZXggZjJmNGZlYS4uN2I1M2EyMyAx MDA2NDQKLS0tIGEvaW50ZWwvaW50ZWxfYnVmbWdyX2dlbS5jCisrKyBiL2ludGVsL2ludGVsX2J1 Zm1ncl9nZW0uYwpAQCAtMTMwLDYgKzEzMCw3IEBAIHR5cGVkZWYgc3RydWN0IF9kcm1faW50ZWxf YnVmbWdyX2dlbSB7CiAJdW5zaWduZWQgaW50IGJvX3JldXNlIDogMTsKIAl1bnNpZ25lZCBpbnQg bm9fZXhlYyA6IDE7CiAJdW5zaWduZWQgaW50IGhhc192ZWJveCA6IDE7CisJdW5zaWduZWQgaW50 IGhhc19leHRfbW1hcCA6IDE7CiAJYm9vbCBmZW5jZWRfcmVsb2NzOwogCiAJY2hhciAqYXViX2Zp bGVuYW1lOwpAQCAtMTg0LDYgKzE4NSw4IEBAIHN0cnVjdCBfZHJtX2ludGVsX2JvX2dlbSB7CiAJ aW50IHJlbG9jX2NvdW50OwogCS8qKiBNYXBwZWQgYWRkcmVzcyBmb3IgdGhlIGJ1ZmZlciwgc2F2 ZWQgYWNyb3NzIG1hcC91bm1hcCBjeWNsZXMgKi8KIAl2b2lkICptZW1fdmlydHVhbDsKKwkvKiog VW5jYWNoZWQgTWFwcGVkIGFkZHJlc3MgZm9yIHRoZSBidWZmZXIsIHNhdmVkIGFjcm9zcyBtYXAv dW5tYXAgY3ljbGVzICovCisJdm9pZCAqbWVtX3djX3ZpcnR1YWw7CiAJLyoqIEdUVCB2aXJ0dWFs IGFkZHJlc3MgZm9yIHRoZSBidWZmZXIsIHNhdmVkIGFjcm9zcyBtYXAvdW5tYXAgY3ljbGVzICov CiAJdm9pZCAqZ3R0X3ZpcnR1YWw7CiAJLyoqCkBAIC0xMDU3LDYgKzEwNjAsMTAgQEAgZHJtX2lu dGVsX2dlbV9ib19mcmVlKGRybV9pbnRlbF9ibyAqYm8pCiAJCWRybV9tdW5tYXAoYm9fZ2VtLT5n dHRfdmlydHVhbCwgYm9fZ2VtLT5iby5zaXplKTsKIAkJYnVmbWdyX2dlbS0+dm1hX2NvdW50LS07 CiAJfQorCWlmIChib19nZW0tPm1lbV93Y192aXJ0dWFsKSB7CisJCWRybV9tdW5tYXAoYm9fZ2Vt LT5tZW1fd2NfdmlydHVhbCwgYm9fZ2VtLT5iby5zaXplKTsKKwkJYnVmbWdyX2dlbS0+dm1hX2Nv dW50LS07CisJfQogCiAJLyogQ2xvc2UgdGhpcyBvYmplY3QgKi8KIAlWR19DTEVBUihjbG9zZSk7 CkBAIC0xMDgxLDYgKzEwODgsOSBAQCBkcm1faW50ZWxfZ2VtX2JvX21hcmtfbW1hcHNfaW5jb2hl cmVudChkcm1faW50ZWxfYm8gKmJvKQogCiAJaWYgKGJvX2dlbS0+Z3R0X3ZpcnR1YWwpCiAJCVZB TEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGJvX2dlbS0+Z3R0X3ZpcnR1YWwsIGJvLT5zaXplKTsK KworCWlmIChib19nZW0tPm1lbV93Y192aXJ0dWFsKQorCQlWQUxHUklORF9NQUtFX01FTV9OT0FD Q0VTUyhib19nZW0tPm1lbV93Y192aXJ0dWFsLCBiby0+c2l6ZSk7CiAjZW5kaWYKIH0KIApAQCAt MTEyNiw2ICsxMTM2LDggQEAgc3RhdGljIHZvaWQgZHJtX2ludGVsX2dlbV9ib19wdXJnZV92bWFf Y2FjaGUoZHJtX2ludGVsX2J1Zm1ncl9nZW0gKmJ1Zm1ncl9nZW0pCiAKIAkvKiBXZSBtYXkgbmVl ZCB0byBldmljdCBhIGZldyBlbnRyaWVzIGluIG9yZGVyIHRvIGNyZWF0ZSBuZXcgbW1hcHMgKi8K IAlsaW1pdCA9IGJ1Zm1ncl9nZW0tPnZtYV9tYXggLSAyKmJ1Zm1ncl9nZW0tPnZtYV9vcGVuOwor CWlmIChidWZtZ3JfZ2VtLT5oYXNfZXh0X21tYXApCisJCWxpbWl0IC09IGJ1Zm1ncl9nZW0tPnZt YV9vcGVuOwogCWlmIChsaW1pdCA8IDApCiAJCWxpbWl0ID0gMDsKIApAQCAtMTE0OCw2ICsxMTYw LDExIEBAIHN0YXRpYyB2b2lkIGRybV9pbnRlbF9nZW1fYm9fcHVyZ2Vfdm1hX2NhY2hlKGRybV9p bnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtKQogCQkJYm9fZ2VtLT5ndHRfdmlydHVhbCA9IE5V TEw7CiAJCQlidWZtZ3JfZ2VtLT52bWFfY291bnQtLTsKIAkJfQorCQlpZiAoYm9fZ2VtLT5tZW1f d2NfdmlydHVhbCkgeworCQkJZHJtX211bm1hcChib19nZW0tPm1lbV93Y192aXJ0dWFsLCBib19n ZW0tPmJvLnNpemUpOworCQkJYm9fZ2VtLT5tZW1fd2NfdmlydHVhbCA9IE5VTEw7CisJCQlidWZt Z3JfZ2VtLT52bWFfY291bnQtLTsKKwkJfQogCX0KIH0KIApAQCAtMTE2MCw2ICsxMTc3LDggQEAg c3RhdGljIHZvaWQgZHJtX2ludGVsX2dlbV9ib19jbG9zZV92bWEoZHJtX2ludGVsX2J1Zm1ncl9n ZW0gKmJ1Zm1ncl9nZW0sCiAJCWJ1Zm1ncl9nZW0tPnZtYV9jb3VudCsrOwogCWlmIChib19nZW0t Pmd0dF92aXJ0dWFsKQogCQlidWZtZ3JfZ2VtLT52bWFfY291bnQrKzsKKwlpZiAoYm9fZ2VtLT5t ZW1fd2NfdmlydHVhbCkKKwkJYnVmbWdyX2dlbS0+dm1hX2NvdW50Kys7CiAJZHJtX2ludGVsX2dl bV9ib19wdXJnZV92bWFfY2FjaGUoYnVmbWdyX2dlbSk7CiB9CiAKQEAgLTExNzIsNiArMTE5MSw4 IEBAIHN0YXRpYyB2b2lkIGRybV9pbnRlbF9nZW1fYm9fb3Blbl92bWEoZHJtX2ludGVsX2J1Zm1n cl9nZW0gKmJ1Zm1ncl9nZW0sCiAJCWJ1Zm1ncl9nZW0tPnZtYV9jb3VudC0tOwogCWlmIChib19n ZW0tPmd0dF92aXJ0dWFsKQogCQlidWZtZ3JfZ2VtLT52bWFfY291bnQtLTsKKwlpZiAoYm9fZ2Vt LT5tZW1fd2NfdmlydHVhbCkKKwkJYnVmbWdyX2dlbS0+dm1hX2NvdW50LS07CiAJZHJtX2ludGVs X2dlbV9ib19wdXJnZV92bWFfY2FjaGUoYnVmbWdyX2dlbSk7CiB9CiAKQEAgLTEyNjcsNiArMTI4 OCwxMjQgQEAgc3RhdGljIHZvaWQgZHJtX2ludGVsX2dlbV9ib191bnJlZmVyZW5jZShkcm1faW50 ZWxfYm8gKmJvKQogCX0KIH0KIAorc3RhdGljIGludAorbWFwX3djKGRybV9pbnRlbF9ibyAqYm8p Cit7CisJZHJtX2ludGVsX2J1Zm1ncl9nZW0gKmJ1Zm1ncl9nZW0gPSAoZHJtX2ludGVsX2J1Zm1n cl9nZW0gKikgYm8tPmJ1Zm1ncjsKKwlkcm1faW50ZWxfYm9fZ2VtICpib19nZW0gPSAoZHJtX2lu dGVsX2JvX2dlbSAqKSBibzsKKwlpbnQgcmV0OworCisJaWYgKGJvX2dlbS0+aXNfdXNlcnB0cikK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIWJ1Zm1ncl9nZW0tPmhhc19leHRfbW1hcCkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoYm9fZ2VtLT5tYXBfY291bnQrKyA9PSAwKQorCQlkcm1f aW50ZWxfZ2VtX2JvX29wZW5fdm1hKGJ1Zm1ncl9nZW0sIGJvX2dlbSk7CisKKwkvKiBHZXQgYSBt YXBwaW5nIG9mIHRoZSBidWZmZXIgaWYgd2UgaGF2ZW4ndCBiZWZvcmUuICovCisJaWYgKGJvX2dl bS0+bWVtX3djX3ZpcnR1YWwgPT0gTlVMTCkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXAg bW1hcF9hcmc7CisKKwkJREJHKCJib19tYXBfd2M6IG1tYXAgJWQgKCVzKSwgbWFwX2NvdW50PSVk XG4iLAorCQkgICAgYm9fZ2VtLT5nZW1faGFuZGxlLCBib19nZW0tPm5hbWUsIGJvX2dlbS0+bWFw X2NvdW50KTsKKworCQlWR19DTEVBUihtbWFwX2FyZyk7CisJCW1tYXBfYXJnLmhhbmRsZSA9IGJv X2dlbS0+Z2VtX2hhbmRsZTsKKwkJLyogVG8gaW5kaWNhdGUgdGhlIHVuY2FjaGVkIHZpcnR1YWwg bWFwcGluZyB0byBLTUQgKi8KKwkJbW1hcF9hcmcuZmxhZ3MgPSBJOTE1X01NQVBfV0M7CisJCW1t YXBfYXJnLm9mZnNldCA9IDA7CisJCW1tYXBfYXJnLnNpemUgPSBiby0+c2l6ZTsKKwkJcmV0ID0g ZHJtSW9jdGwoYnVmbWdyX2dlbS0+ZmQsCisJCQkgICAgICAgRFJNX0lPQ1RMX0k5MTVfR0VNX01N QVAsCisJCQkgICAgICAgJm1tYXBfYXJnKTsKKwkJaWYgKHJldCAhPSAwKSB7CisJCQlyZXQgPSAt ZXJybm87CisJCQlEQkcoIiVzOiVkOiBFcnJvciBtYXBwaW5nIGJ1ZmZlciAlZCAoJXMpOiAlcyAu XG4iLAorCQkJICAgIF9fRklMRV9fLCBfX0xJTkVfXywgYm9fZ2VtLT5nZW1faGFuZGxlLAorCQkJ ICAgIGJvX2dlbS0+bmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWlmICgtLWJvX2dlbS0+bWFw X2NvdW50ID09IDApCisJCQkJZHJtX2ludGVsX2dlbV9ib19jbG9zZV92bWEoYnVmbWdyX2dlbSwg Ym9fZ2VtKTsKKwkJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZidWZtZ3JfZ2VtLT5sb2NrKTsKKwkJ CXJldHVybiByZXQ7CisJCX0KKwkJVkcoVkFMR1JJTkRfTUFMTE9DTElLRV9CTE9DSyhtbWFwX2Fy Zy5hZGRyX3B0ciwgbW1hcF9hcmcuc2l6ZSwgMCwgMSkpOworCQlib19nZW0tPm1lbV93Y192aXJ0 dWFsID0gKHZvaWQgKikodWludHB0cl90KSBtbWFwX2FyZy5hZGRyX3B0cjsKKwl9CisKKwliby0+ dmlydHVhbCA9IGJvX2dlbS0+bWVtX3djX3ZpcnR1YWw7CisKKwlEQkcoImJvX21hcF93YzogJWQg KCVzKSAtPiAlcFxuIiwgYm9fZ2VtLT5nZW1faGFuZGxlLCBib19nZW0tPm5hbWUsCisJICAgIGJv X2dlbS0+bWVtX3djX3ZpcnR1YWwpOworCisJcmV0dXJuIDA7Cit9CisKKy8qIFRvIGJlIHVzZWQg aW4gYSBzaW1pbGFyIHdheSB0byBtbWFwX2d0dCAqLworZHJtX3B1YmxpYyBpbnQKK2RybV9pbnRl bF9nZW1fYm9fbWFwX3djKGRybV9pbnRlbF9ibyAqYm8pIHsKKwlkcm1faW50ZWxfYnVmbWdyX2dl bSAqYnVmbWdyX2dlbSA9IChkcm1faW50ZWxfYnVmbWdyX2dlbSAqKSBiby0+YnVmbWdyOworCWRy bV9pbnRlbF9ib19nZW0gKmJvX2dlbSA9IChkcm1faW50ZWxfYm9fZ2VtICopIGJvOworCXN0cnVj dCBkcm1faTkxNV9nZW1fc2V0X2RvbWFpbiBzZXRfZG9tYWluOworCWludCByZXQ7CisKKwlwdGhy ZWFkX211dGV4X2xvY2soJmJ1Zm1ncl9nZW0tPmxvY2spOworCisJcmV0ID0gbWFwX3djKGJvKTsK KwlpZiAocmV0KSB7CisJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZidWZtZ3JfZ2VtLT5sb2NrKTsK KwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBOb3cgbW92ZSBpdCB0byB0aGUgR1RUIGRvbWFpbiBz byB0aGF0IHRoZSBHUFUgYW5kIENQVQorCSAqIGNhY2hlcyBhcmUgZmx1c2hlZCBhbmQgdGhlIEdQ VSBpc24ndCBhY3RpdmVseSB1c2luZyB0aGUKKwkgKiBidWZmZXIuCisJICoKKwkgKiBUaGUgZG9t YWluIGNoYW5nZSBpcyBkb25lIGV2ZW4gZm9yIHRoZSBvYmplY3RzIHdoaWNoCisJICogYXJlIG5v dCBib3VuZGVkLiBGb3IgdGhlbSBmaXJzdCB0aGUgcGFnZXMgYXJlIGFjcXVpcmVkLAorCSAqIGJl Zm9yZSB0aGUgZG9tYWluIGNoYW5nZS4KKwkgKi8KKwlWR19DTEVBUihzZXRfZG9tYWluKTsKKwlz ZXRfZG9tYWluLmhhbmRsZSA9IGJvX2dlbS0+Z2VtX2hhbmRsZTsKKwlzZXRfZG9tYWluLnJlYWRf ZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9HVFQ7CisJc2V0X2RvbWFpbi53cml0ZV9kb21haW4g PSBJOTE1X0dFTV9ET01BSU5fR1RUOworCXJldCA9IGRybUlvY3RsKGJ1Zm1ncl9nZW0tPmZkLAor CQkgICAgICAgRFJNX0lPQ1RMX0k5MTVfR0VNX1NFVF9ET01BSU4sCisJCSAgICAgICAmc2V0X2Rv bWFpbik7CisJaWYgKHJldCAhPSAwKSB7CisJCURCRygiJXM6JWQ6IEVycm9yIHNldHRpbmcgZG9t YWluICVkOiAlc1xuIiwKKwkJICAgIF9fRklMRV9fLCBfX0xJTkVfXywgYm9fZ2VtLT5nZW1faGFu ZGxlLAorCQkgICAgc3RyZXJyb3IoZXJybm8pKTsKKwl9CisJZHJtX2ludGVsX2dlbV9ib19tYXJr X21tYXBzX2luY29oZXJlbnQoYm8pOworCVZHKFZBTEdSSU5EX01BS0VfTUVNX0RFRklORUQoYm9f Z2VtLT5tZW1fd2NfdmlydHVhbCwgYm8tPnNpemUpKTsKKwlwdGhyZWFkX211dGV4X3VubG9jaygm YnVmbWdyX2dlbS0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworZHJtX3B1YmxpYyBpbnQKK2Ry bV9pbnRlbF9nZW1fYm9fbWFwX3djX3Vuc3luY2hyb25pemVkKGRybV9pbnRlbF9ibyAqYm8pIHsK Kwlkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVmbWdyX2dlbSA9IChkcm1faW50ZWxfYnVmbWdyX2dl bSAqKSBiby0+YnVmbWdyOworI2lmZGVmIEhBVkVfVkFMR1JJTkQKKwlkcm1faW50ZWxfYm9fZ2Vt ICpib19nZW0gPSAoZHJtX2ludGVsX2JvX2dlbSAqKSBibzsKKyNlbmRpZgorCWludCByZXQ7CisK KwlwdGhyZWFkX211dGV4X2xvY2soJmJ1Zm1ncl9nZW0tPmxvY2spOworCisJcmV0ID0gbWFwX3dj KGJvKTsKKwlpZiAocmV0ID09IDApIHsKKwkJZHJtX2ludGVsX2dlbV9ib19tYXJrX21tYXBzX2lu Y29oZXJlbnQoYm8pOworCQlWRyhWQUxHUklORF9NQUtFX01FTV9ERUZJTkVEKGJvX2dlbS0+bWVt X3djX3ZpcnR1YWwsIGJvLT5zaXplKSk7CisJfQorCisJcHRocmVhZF9tdXRleF91bmxvY2soJmJ1 Zm1ncl9nZW0tPmxvY2spOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBkcm1faW50 ZWxfZ2VtX2JvX21hcChkcm1faW50ZWxfYm8gKmJvLCBpbnQgd3JpdGVfZW5hYmxlKQogewogCWRy bV9pbnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtID0gKGRybV9pbnRlbF9idWZtZ3JfZ2VtICop IGJvLT5idWZtZ3I7CkBAIC0xMjkzLDYgKzE0MzIsNyBAQCBzdGF0aWMgaW50IGRybV9pbnRlbF9n ZW1fYm9fbWFwKGRybV9pbnRlbF9ibyAqYm8sIGludCB3cml0ZV9lbmFibGUpCiAKIAkJVkdfQ0xF QVIobW1hcF9hcmcpOwogCQltbWFwX2FyZy5oYW5kbGUgPSBib19nZW0tPmdlbV9oYW5kbGU7CisJ CW1tYXBfYXJnLmZsYWdzID0gMDsKIAkJbW1hcF9hcmcub2Zmc2V0ID0gMDsKIAkJbW1hcF9hcmcu c2l6ZSA9IGJvLT5zaXplOwogCQlyZXQgPSBkcm1Jb2N0bChidWZtZ3JfZ2VtLT5mZCwKQEAgLTE1 NTMsNiArMTY5MywxMiBAQCBzdGF0aWMgaW50IGRybV9pbnRlbF9nZW1fYm9fdW5tYXAoZHJtX2lu dGVsX2JvICpibykKIH0KIAogZHJtX3B1YmxpYyBpbnQKK2RybV9pbnRlbF9nZW1fYm9fdW5tYXBf d2MoZHJtX2ludGVsX2JvICpibykKK3sKKwlyZXR1cm4gZHJtX2ludGVsX2dlbV9ib191bm1hcChi byk7Cit9CisKK2RybV9wdWJsaWMgaW50CiBkcm1faW50ZWxfZ2VtX2JvX3VubWFwX2d0dChkcm1f aW50ZWxfYm8gKmJvKQogewogCXJldHVybiBkcm1faW50ZWxfZ2VtX2JvX3VubWFwKGJvKTsKQEAg LTM1MzgsNiArMzY4NCwxMCBAQCBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGludCBmZCwgaW50 IGJhdGNoX3NpemUpCiAJcmV0ID0gZHJtSW9jdGwoYnVmbWdyX2dlbS0+ZmQsIERSTV9JT0NUTF9J OTE1X0dFVFBBUkFNLCAmZ3ApOwogCWJ1Zm1ncl9nZW0tPmhhc192ZWJveCA9IChyZXQgPT0gMCkg JiAoKmdwLnZhbHVlID4gMCk7CiAKKwlncC5wYXJhbSA9IEk5MTVfUEFSQU1fTU1BUF9WRVJTSU9O OworCXJldCA9IGRybUlvY3RsKGJ1Zm1ncl9nZW0tPmZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJB TSwgJmdwKTsKKwlidWZtZ3JfZ2VtLT5oYXNfZXh0X21tYXAgPSAocmV0ID09IDApICYgKCpncC52 YWx1ZSA+IDApOworCiAJaWYgKGJ1Zm1ncl9nZW0tPmdlbiA8IDQpIHsKIAkJZ3AucGFyYW0gPSBJ OTE1X1BBUkFNX05VTV9GRU5DRVNfQVZBSUw7CiAJCWdwLnZhbHVlID0gJmJ1Zm1ncl9nZW0tPmF2 YWlsYWJsZV9mZW5jZXM7Ci0tIAoxLjkuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK