From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH 13/15] drm/i915: Integrate GuC-based command submission Date: Mon, 15 Jun 2015 19:36:31 +0100 Message-ID: <1434393394-21002-14-git-send-email-david.s.gordon@intel.com> References: <1434393394-21002-1-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 8C37C6E779 for ; Mon, 15 Jun 2015 11:39:12 -0700 (PDT) In-Reply-To: <1434393394-21002-1-git-send-email-david.s.gordon@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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+CgpHdUMtYmFzZWQgc3VibWlzc2lvbiBp cyBtb3N0bHkgdGhlIHNhbWUgYXMgZXhlY2xpc3QgbW9kZSwgdXAgdG8KaW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2VfYW5kX3N1Ym1pdCgpLCB3aGVyZSB0aGUgY29udGV4dCBiZWluZwpkaXNwYXRj aGVkIHdvdWxkIGJlIGFkZGVkIHRvIHRoZSBleGVjbGlzdCBxdWV1ZTsgYXQgdGhpcyBwb2ludAp3 ZSBzdWJtaXQgdGhlIGNvbnRleHQgdG8gdGhlIEd1QyBiYWNrZW5kIGluc3RlYWQuCgpUaGVyZSBh cmUsIGhvd2V2ZXIsIGEgZmV3IG90aGVyIGNoYW5nZXMgYWxzbyByZXF1aXJlZCwgbm90YWJseToK MS4gIENvbnRleHRzIG11c3QgYmUgcGlubmVkIGF0IEdHVFQgYWRkcmVzc2VzIGFjY2Vzc2libGUg YnkgdGhlIEd1QwogICAgaS5lLiBOT1QgaW4gdGhlIHJhbmdlIFswLi5XT1BDTV9TSVpFKSwgc28g d2UgaGF2ZSB0byBhZGQgdGhlCiAgICBQSU5fT0ZGU0VUX0JJQVMgZmxhZyB0byB0aGUgcmVsZXZh bnQgR0dUVC1waW5uaW5nIGNhbGxzLgoKMi4gIFRoZSBHdUMncyBUTEIgbXVzdCBiZSBpbnZhbGlk YXRlZCBhZnRlciBhIGNvbnRleHQgaXMgcGlubmVkIGF0CiAgICBhIG5ldyBHR1RUIGFkZHJlc3Mu CgozLiAgR3VDIGZpcm13YXJlIHVzZXMgdGhlIG9uZSBwYWdlIGJlZm9yZSBSaW5nIENvbnRleHQg YXMgc2hhcmVkIGRhdGEuCiAgICBUaGVyZWZvcmUsIHdoZW5ldmVyIGRyaXZlciB3YW50cyB0byBn ZXQgYmFzZSBhZGRyZXNzIG9mIExSQywgd2UKICAgIHdpbGwgb2Zmc2V0IG9uZSBwYWdlIGZvciBp dC4gTFJDX1BQSFdTUF9QTiBpcyBkZWZpbmVkIGFzIHRoZSBwYWdlCiAgICBudW1iZXIgb2YgTFJD QS4KCjQuICBJbiB0aGUgd29yayBxdWV1ZSB1c2VkIHRvIHBhc3MgcmVxdWVzdHMgdG8gdGhlIEd1 QywgdGhlIEd1QwogICAgZmlybXdhcmUgcmVxdWlyZXMgdGhlIHJpbmctdGFpbC1vZmZzZXQgdG8g YmUgcmVwcmVzZW50ZWQgYXMgYW4KICAgIDExLWJpdCB2YWx1ZSwgZXhwcmVzc2VkIGluIFFXb3Jk cy4gVGhlcmVmb3JlLCB0aGUgcmluZ2J1ZmZlcgogICAgc2l6ZSBtdXN0IGJlIHJlZHVjZWQgdG8g dGhlIHJlcHJlc2VudGFibGUgcmFuZ2UgKDQgcGFnZXMpLgoKSXNzdWU6IFZJWi00ODg0ClNpZ25l ZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZl IEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8ICAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICAgNDYgKysrKysrKysrKysrKysrKysrKysrKysrLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAgIDEgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgICA0OCArKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCAgICAg ICAgICAgfCAgICA2ICsrKysKIDUgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKSwgMTcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCBiMGFhNGFm Li5jNmUyNTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTk3NSw3ICsx OTc1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9kdW1wX2xyY19vYmooc3RydWN0IHNlcV9maWxlICpt LAogCQlyZXR1cm47CiAJfQogCi0JcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjdHhf b2JqLCAxKTsKKwlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIExSQ19T VEFURV9QTik7CiAJaWYgKCFXQVJOX09OKHBhZ2UgPT0gTlVMTCkpIHsKIAkJcmVnX3N0YXRlID0g a21hcF9hdG9taWMocGFnZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1p c3Npb24uYwppbmRleCA0ODdmMjk1Li5iNDIzZmFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC0zNTYsMTYgKzM1Niw1MiBAQCBzdGF0aWMgdm9pZCBn dWNfaW5pdF9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiB7CiAJc3RydWN0IGd1Y19j b250ZXh0X2Rlc2MgZGVzYzsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNnOworCWludCBpOwogCiAJbWVt c2V0KCZkZXNjLCAwLCBzaXplb2YoZGVzYykpOwogCiAJZGVzYy5hdHRyaWJ1dGUgPSBHVUNfQ1RY X0RFU0NfQVRUUl9BQ1RJVkUgfCBHVUNfQ1RYX0RFU0NfQVRUUl9LRVJORUw7CiAJZGVzYy5jb250 ZXh0X2lkID0gY2xpZW50LT5jdHhfaW5kZXg7CiAJZGVzYy5wcmlvcml0eSA9IGNsaWVudC0+cHJp b3JpdHk7Ci0JZGVzYy5lbmdpbmVzX3VzZWQgPSAoMSA8PCBSQ1MpIHwgKDEgPDwgVkNTKSB8ICgx IDw8IEJDUykgfAotCQkJICAgICgxIDw8IFZFQ1MpIHwgKDEgPDwgVkNTMik7IC8qIGFsbCBlbmdp bmVzICovCiAJZGVzYy5kYl9pZCA9IGNsaWVudC0+ZG9vcmJlbGxfaWQ7CiAKKwlmb3IgKGkgPSAw OyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykgeworCQlzdHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRl eHQgKmxyYyA9ICZkZXNjLmxyY1tpXTsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZzsK KwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKworCQkvKiBUT0RPOiBXZSBoYXZl IGEgZGVzaWduIGlzc3VlIHRvIGJlIHNvbHZlZCBoZXJlLiBPbmx5IHdoZW4gd2UKKwkJICogcmVj ZWl2ZSB0aGUgZmlyc3QgYmF0Y2gsIHdlIGtub3cgd2hpY2ggZW5naW5lIGlzIHVzZWQgYnkgdGhl CisJCSAqIHVzZXIuIEJ1dCBoZXJlIEd1QyBleHBlY3RzIHRoZSBscmMgYW5kIHJpbmcgdG8gYmUg cGlubmVkLiBJdAorCQkgKiBpcyBub3QgYW4gaXNzdWUgZm9yIGRlZmF1bHQgY29udGV4dCwgd2hp Y2ggaXMgdGhlIG9ubHkgb25lCisJCSAqIGZvciBub3cgd2hvIG93bnMgYSBHdUMgY2xpZW50LiBC dXQgZm9yIGZ1dHVyZSBvd25lciBvZiBHdUMKKwkJICogY2xpZW50LCBuZWVkIHRvIG1ha2Ugc3Vy ZSBscmMgaXMgcGlubmVkIHByaW9yIHRvIGVudGVyIGhlcmUuCisJCSAqLworCQlvYmogPSBjbGll bnQtPm93bmVyLT5lbmdpbmVbaV0uc3RhdGU7CisJCWlmICghb2JqKQorCQkJYnJlYWs7CisKKwkJ cmluZyA9IGNsaWVudC0+b3duZXItPmVuZ2luZVtpXS5yaW5nYnVmLT5yaW5nOworCisJCWxyYy0+ Y29udGV4dF9kZXNjID0gZXhlY2xpc3RzX2N0eF9kZXNjcmlwdG9yKHJpbmcsIG9iaik7CisJCS8q IFRoZSBzdGF0ZSBwYWdlIGlzIGFmdGVyIFBQSFdTUCAqLworCQlscmMtPnJpbmdfbGNyYSA9IGk5 MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopICsKKwkJCQlMUkNfU1RBVEVfUE4gKiBQQUdFX1NJ WkU7CisJCWxyYy0+Y29udGV4dF9pZCA9IChjbGllbnQtPmN0eF9pbmRleCA8PCBHVUNfRUxDX0NU WElEX09GRlNFVCkgfAorCQkJCShyaW5nLT5pZCA8PCBHVUNfRUxDX0VOR0lORV9PRkZTRVQpOwor CisJCW9iaiA9IGNsaWVudC0+b3duZXItPmVuZ2luZVtpXS5yaW5nYnVmLT5vYmo7CisKKwkJbHJj LT5yaW5nX2JlZ2luID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7CisJCWxyYy0+cmlu Z19lbmQgPSBscmMtPnJpbmdfYmVnaW4gKyBvYmotPmJhc2Uuc2l6ZSAtIDE7CisJCWxyYy0+cmlu Z19uZXh0X2ZyZWVfbG9jYXRpb24gPSBscmMtPnJpbmdfYmVnaW47CisJCWxyYy0+cmluZ19jdXJy ZW50X3RhaWxfcG9pbnRlcl92YWx1ZSA9IDA7CisKKwkJZGVzYy5lbmdpbmVzX3VzZWQgfD0gKDEg PDwgcmluZy0+aWQpOworCX0KKworCVdBUk5fT04oZGVzYy5lbmdpbmVzX3VzZWQgPT0gMCk7CisK IAkvKgogCSAqIFRoZSBDUFUgYWRkcmVzcyBpcyBvbmx5IG5lZWRlZCBhdCBjZXJ0YWluIHBvaW50 cywgc28ga21hcF9hdG9taWMgb24KIAkgKiBkZW1hbmQgaW5zdGVhZCBvZiBzdG9yaW5nIGl0IGlu IHRoZSBjdHggZGVzY3JpcHRvci4KQEAgLTY1MCw2ICs2ODYsNyBAQCBzdGF0aWMgdm9pZCBndWNf Y2xpZW50X2ZyZWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKICAqIFJldHVybjoJQW4gaTkxNV9n dWNfY2xpZW50IG9iamVjdCBpZiBzdWNjZXNzLgogICovCiBzdGF0aWMgc3RydWN0IGk5MTVfZ3Vj X2NsaWVudCAqZ3VjX2NsaWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCQkJ c3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKIAkJCQkJCXUzMiBwcmlvcml0eSkKIHsKIAlzdHJ1 Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQ7CkBAIC02OTgsNiArNzM1LDggQEAgc3RhdGljIHN0 cnVjdCBpOTE1X2d1Y19jbGllbnQgKmd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJLyogWFhYOiBldmljdCBhIGRvb3JiZWxsIGluc3RlYWQgKi8KIAkJZ290byBlcnI7 CiAKKwljbGllbnQtPm93bmVyID0gY3R4OworCiAJZ3VjX2luaXRfcHJvY19kZXNjKGd1YywgY2xp ZW50KTsKIAlndWNfaW5pdF9jdHhfZGVzYyhndWMsIGNsaWVudCk7CiAJZ3VjX2luaXRfZG9vcmJl bGwoZ3VjLCBjbGllbnQpOwpAQCAtNzk2LDEwICs4MzUsMTEgQEAgaW50IGk5MTVfZ3VjX3N1Ym1p c3Npb25fZW5hYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4ID0gZGV2 X3ByaXYtPnJpbmdbUkNTXS5kZWZhdWx0X2NvbnRleHQ7CiAJc3RydWN0IGk5MTVfZ3VjX2NsaWVu dCAqY2xpZW50OwogCiAJLyogY2xpZW50IGZvciBleGVjYnVmIHN1Ym1pc3Npb24gKi8KLQljbGll bnQgPSBndWNfY2xpZW50X2FsbG9jKGRldiwgR1VDX0NUWF9QUklPUklUWV9OT1JNQUwpOworCWNs aWVudCA9IGd1Y19jbGllbnRfYWxsb2MoZGV2LCBjdHgsIEdVQ19DVFhfUFJJT1JJVFlfTk9STUFM KTsKIAlpZiAoIWNsaWVudCkgewogCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZXhlY2J1 ZiBndWNfY2xpZW50XG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Yy5oCmluZGV4IDE0N2QyODguLjRmN2Q1NWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCkBA IC0zMyw2ICszMyw3IEBACiBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50IHsKIAlzcGlubG9ja190IHdx X2xvY2s7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmNsaWVudF9vYmo7CisJc3RydWN0 IGludGVsX2NvbnRleHQgKm93bmVyOwogCXUzMiBwcmlvcml0eTsKIAlvZmZfdCBkb29yYmVsbF9v ZmZzZXQ7CiAJb2ZmX3QgcHJvY19kZXNjX29mZnNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK aW5kZXggNGZkMTk0MS4uMjgwMWZlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTE4 MCw3ICsxODAsOCBAQCBpbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX2V4ZWNsaXN0cyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBpbnQgZW5hYmxlX2V4ZWNsaXN0cwogICovCiB1MzIgaW50ZWxfZXhl Y2xpc3RzX2N0eF9pZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaikKIHsKLQl1 MzIgbHJjYSA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChjdHhfb2JqKTsKKwl1MzIgbHJjYSA9 IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChjdHhfb2JqKSArCisJCQlMUkNfUFBIV1NQX1BOICog UEFHRV9TSVpFOwogCiAJLyogTFJDQSBpcyByZXF1aXJlZCB0byBiZSA0SyBhbGlnbmVkIHNvIHRo ZSBtb3JlIHNpZ25pZmljYW50IDIwIGJpdHMKIAkgKiBhcmUgZ2xvYmFsbHkgdW5pcXVlICovCkBA IC0xOTIsNyArMTkzLDggQEAgdWludDY0X3QgZXhlY2xpc3RzX2N0eF9kZXNjcmlwdG9yKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJp bmctPmRldjsKIAl1aW50NjRfdCBkZXNjOwotCXVpbnQ2NF90IGxyY2EgPSBpOTE1X2dlbV9vYmpf Z2d0dF9vZmZzZXQoY3R4X29iaik7CisJdWludDY0X3QgbHJjYSA9IGk5MTVfZ2VtX29ial9nZ3R0 X29mZnNldChjdHhfb2JqKSArCisJCQlMUkNfUFBIV1NQX1BOICogUEFHRV9TSVpFOwogCiAJV0FS Tl9PTihscmNhICYgMHhGRkZGRkZGRjAwMDAwRkZGVUxMKTsKIApAQCAtMjYyLDcgKzI2NCw3IEBA IHN0YXRpYyBpbnQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpjdHhfb2JqLAogCXN0cnVjdCBwYWdlICpwYWdlOwogCXVpbnQzMl90ICpyZWdfc3Rh dGU7CiAKLQlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIDEpOworCXBh Z2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgTFJDX1NUQVRFX1BOKTsKIAly ZWdfc3RhdGUgPSBrbWFwX2F0b21pYyhwYWdlKTsKIAogCXJlZ19zdGF0ZVtDVFhfUklOR19UQUlM KzFdID0gdGFpbDsKQEAgLTY0NCwxMyArNjQ2LDE3IEBAIGludGVsX2xvZ2ljYWxfcmluZ19hZHZh bmNlX2FuZF9zdWJtaXQoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCiAJCQkJICAg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogewogCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcgPSByaW5nYnVmLT5yaW5nOworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CiAKIAlpbnRlbF9sb2dpY2Fs X3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKIAogCWlmIChpbnRlbF9yaW5nX3N0b3BwZWQocmluZykp CiAJCXJldHVybjsKIAotCWV4ZWNsaXN0c19jb250ZXh0X3F1ZXVlKHJpbmcsIGN0eCwgcmluZ2J1 Zi0+dGFpbCwgcmVxdWVzdCk7CisJaWYgKGRldl9wcml2LT5ndWMuZXhlY2J1Zl9jbGllbnQpCisJ CWk5MTVfZ3VjX3N1Ym1pdChkZXZfcHJpdi0+Z3VjLmV4ZWNidWZfY2xpZW50LCBjdHgsIHJpbmcp OworCWVsc2UKKwkJZXhlY2xpc3RzX2NvbnRleHRfcXVldWUocmluZywgY3R4LCByaW5nYnVmLT50 YWlsLCByZXF1ZXN0KTsKIH0KIAogc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIo c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCkBAIC05MTQsMTggKzkyMCwyMyBAQCBz dGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPSBjdHgtPmVuZ2lu ZVtyaW5nLT5pZF0uc3RhdGU7CiAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBj dHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOwogCWludCByZXQgPSAwOwogCiAJV0FS Tl9PTighbXV0ZXhfaXNfbG9ja2VkKCZyaW5nLT5kZXYtPnN0cnVjdF9tdXRleCkpOwogCWlmIChj dHgtPmVuZ2luZVtyaW5nLT5pZF0ucGluX2NvdW50KysgPT0gMCkgewotCQlyZXQgPSBpOTE1X2dl bV9vYmpfZ2d0dF9waW4oY3R4X29iaiwKLQkJCQlHRU44X0xSX0NPTlRFWFRfQUxJR04sIDApOwor CQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4oY3R4X29iaiwgR0VOOF9MUl9DT05URVhUX0FM SUdOLAorCQkJCVBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9TSVpFX1ZBTFVFKTsKIAkJaWYg KHJldCkKIAkJCWdvdG8gcmVzZXRfcGluX2NvdW50OwogCiAJCXJldCA9IGludGVsX3Bpbl9hbmRf bWFwX3JpbmdidWZmZXJfb2JqKHJpbmctPmRldiwgcmluZ2J1Zik7CiAJCWlmIChyZXQpCiAJCQln b3RvIHVucGluX2N0eF9vYmo7CisKKwkJLyogSW52YWxpZGF0ZSBHdUMgVExCLiAqLworCQlpZiAo aTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCisJCQlJOTE1X1dSSVRFKEdFTjhfR1RDUiwgR0VO OF9HVENSX0lOVkFMSURBVEUpOwogCX0KIAogCXJldHVybiByZXQ7CkBAIC0xMzM3LDggKzEzNDgs MTMgQEAgb3V0Ogogc3RhdGljIGludCBnZW44X2luaXRfcmNzX2NvbnRleHQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKIAkJICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCiB7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJp dmF0ZTsKIAlpbnQgcmV0OwogCisJLyogSW52YWxpZGF0ZSBHdUMgVExCLiAqLworCWlmIChpOTE1 LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKKwkJSTkxNV9XUklURShHRU44X0dUQ1IsIEdFTjhfR1RD Ul9JTlZBTElEQVRFKTsKKwogCXJldCA9IGludGVsX2xvZ2ljYWxfcmluZ193b3JrYXJvdW5kc19l bWl0KHJpbmcsIGN0eCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKQEAgLTE2NzcsNyArMTY5 Myw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vCiAKIAkvKiBUaGUgc2Vjb25kIHBhZ2Ugb2Yg dGhlIGNvbnRleHQgb2JqZWN0IGNvbnRhaW5zIHNvbWUgZmllbGRzIHdoaWNoIG11c3QKIAkgKiBi ZSBzZXQgdXAgcHJpb3IgdG8gdGhlIGZpcnN0IGV4ZWN1dGlvbi4gKi8KLQlwYWdlID0gaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIDEpOworCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3Rf Z2V0X3BhZ2UoY3R4X29iaiwgTFJDX1NUQVRFX1BOKTsKIAlyZWdfc3RhdGUgPSBrbWFwX2F0b21p YyhwYWdlKTsKIAogCS8qIEEgY29udGV4dCBpcyBhY3R1YWxseSBhIGJpZyBiYXRjaCBidWZmZXIg d2l0aCBzZXZlcmFsIE1JX0xPQURfUkVHSVNURVJfSU1NCkBAIC0xODIzLDEyICsxODM5LDE0IEBA IHN0YXRpYyB2b2lkIGxyY19zZXR1cF9oYXJkd2FyZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nLAogCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9j dHhfb2JqKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRl di0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CiAKIAkvKiBUaGUgc3RhdHVzIHBh Z2UgaXMgb2Zmc2V0IDAgZnJvbSB0aGUgZGVmYXVsdCBjb250ZXh0IG9iamVjdAogCSAqIGluIExS QyBtb2RlLiAqLwotCXJpbmctPnN0YXR1c19wYWdlLmdmeF9hZGRyID0gaTkxNV9nZW1fb2JqX2dn dHRfb2Zmc2V0KGRlZmF1bHRfY3R4X29iaik7Ci0JcmluZy0+c3RhdHVzX3BhZ2UucGFnZV9hZGRy ID0KLQkJCWttYXAoc2dfcGFnZShkZWZhdWx0X2N0eF9vYmotPnBhZ2VzLT5zZ2wpKTsKKwlyaW5n LT5zdGF0dXNfcGFnZS5nZnhfYWRkciA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChkZWZhdWx0 X2N0eF9vYmopCisJCQkrIExSQ19QUEhXU1BfUE4gKiBQQUdFX1NJWkU7CisJcGFnZSA9IGk5MTVf Z2VtX29iamVjdF9nZXRfcGFnZShkZWZhdWx0X2N0eF9vYmosIExSQ19QUEhXU1BfUE4pOworCXJp bmctPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9IGttYXAocGFnZSk7CiAJcmluZy0+c3RhdHVzX3Bh Z2Uub2JqID0gZGVmYXVsdF9jdHhfb2JqOwogCiAJSTkxNV9XUklURShSSU5HX0hXU19QR0Eocmlu Zy0+bW1pb19iYXNlKSwKQEAgLTE4NjQsNiArMTg4Miw5IEBAIGludCBpbnRlbF9scl9jb250ZXh0 X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAogCiAJY29udGV4dF9z aXplID0gcm91bmRfdXAoZ2V0X2xyX2NvbnRleHRfc2l6ZShyaW5nKSwgNDA5Nik7CiAKKwkvKiBP bmUgZXh0cmEgcGFnZSBhcyB0aGUgc2hhcmluZyBkYXRhIGJldHdlZW4gZHJpdmVyIGFuZCBHdUMg Ki8KKwljb250ZXh0X3NpemUgKz0gUEFHRV9TSVpFICogTFJDX1BQSFdTUF9QTjsKKwogCWN0eF9v YmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBjb250ZXh0X3NpemUpOwogCWlmICghY3R4 X29iaikgewogCQlEUk1fREVCVUdfRFJJVkVSKCJBbGxvYyBMUkMgYmFja2luZyBvYmogZmFpbGVk LlxuIik7CkBAIC0xODcxLDcgKzE4OTIsOCBAQCBpbnQgaW50ZWxfbHJfY29udGV4dF9kZWZlcnJl ZF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKIAl9CiAKIAlpZiAoaXNfZ2xvYmFs X2RlZmF1bHRfY3R4KSB7Ci0JCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihjdHhfb2JqLCBH RU44X0xSX0NPTlRFWFRfQUxJR04sIDApOworCQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4o Y3R4X29iaiwgR0VOOF9MUl9DT05URVhUX0FMSUdOLAorCQkJCVBJTl9PRkZTRVRfQklBUyB8IEdV Q19XT1BDTV9TSVpFX1ZBTFVFKTsKIAkJaWYgKHJldCkgewogCQkJRFJNX0RFQlVHX0RSSVZFUigi UGluIExSQyBiYWNraW5nIG9iaiBmYWlsZWQ6ICVkXG4iLAogCQkJCQlyZXQpOwpAQCAtMTg5MCw3 ICsxOTEyLDcgQEAgaW50IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfY3JlYXRlKHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjdHgsCiAKIAlyaW5nYnVmLT5yaW5nID0gcmluZzsKIAotCXJpbmdidWYt PnNpemUgPSAzMiAqIFBBR0VfU0laRTsKKwlyaW5nYnVmLT5zaXplID0gNCAqIFBBR0VfU0laRTsK IAlyaW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSA9IHJpbmdidWYtPnNpemU7CiAJcmluZ2J1Zi0+aGVh ZCA9IDA7CiAJcmluZ2J1Zi0+dGFpbCA9IDA7CkBAIC0xOTgxLDcgKzIwMDMsNyBAQCB2b2lkIGlu dGVsX2xyX2NvbnRleHRfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCVdBUk4oMSwg IkZhaWxlZCBnZXRfcGFnZXMgZm9yIGNvbnRleHQgb2JqXG4iKTsKIAkJCWNvbnRpbnVlOwogCQl9 Ci0JCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgMSk7CisJCXBhZ2Ug PSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgTFJDX1NUQVRFX1BOKTsKIAkJcmVn X3N0YXRlID0ga21hcF9hdG9taWMocGFnZSk7CiAKIAkJcmVnX3N0YXRlW0NUWF9SSU5HX0hFQUQr MV0gPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAppbmRleCAxOWM5YTAyLi5mZDVkNzkxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaApAQCAtNjcsNiArNjcsMTIgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmLAogfQogCiAvKiBMb2dpY2FsIFJpbmcgQ29udGV4dHMgKi8KKworLyogT25lIGV4dHJh IHBhZ2UgaXMgYWRkZWQgYmVmb3JlIExSQyBmb3IgR3VDIGFzIHNoYXJlZCBkYXRhICovCisjZGVm aW5lIExSQ19HVUNTSFJfUE4JKDApCisjZGVmaW5lIExSQ19QUEhXU1BfUE4JKExSQ19HVUNTSFJf UE4gKyAxKQorI2RlZmluZSBMUkNfU1RBVEVfUE4JKExSQ19QUEhXU1BfUE4gKyAxKQorCiB2b2lk IGludGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKIGludCBp bnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4 LAogCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Ci0tIAoxLjcuOS41Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=