From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH 12/15] drm/i915: Integrate GuC-based command submission Date: Fri, 3 Jul 2015 13:30:34 +0100 Message-ID: <1435926637-30892-13-git-send-email-david.s.gordon@intel.com> References: <1435926637-30892-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 5F42A4A0AE for ; Fri, 3 Jul 2015 05:31:09 -0700 (PDT) In-Reply-To: <1435926637-30892-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 dGhlIHJlcHJlc2VudGFibGUgcmFuZ2UgKDQgcGFnZXMpLgoKdjI6CiAgICBEZWZlciBhZGRpbmcg I2RlZmluZXMgdW50aWwgbmVlZGVkIFtDaHJpcyBXaWxzb25dCiAgICBSYXRpb25hbGlzZSB0eXBl IGRlY2xhcmF0aW9ucyBbQ2hyaXMgV2lsc29uXQoKSXNzdWU6IFZJWi00ODg0ClNpZ25lZC1vZmYt Ynk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEdvcmRv biA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1 Y19zdWJtaXNzaW9uLmMgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggICAgICAgICAgIHwg IDYgKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGFkOTA5ZjUuLjlkMzU1NTAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xOTgyLDcgKzE5ODIsNyBAQCBz dGF0aWMgdm9pZCBpOTE1X2R1bXBfbHJjX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCiAJCXJldHVy bjsKIAl9CiAKLQlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIDEpOwor CXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgTFJDX1NUQVRFX1BOKTsK IAlpZiAoIVdBUk5fT04ocGFnZSA9PSBOVUxMKSkgewogCQlyZWdfc3RhdGUgPSBrbWFwX2F0b21p YyhwYWdlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3Vi bWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmlu ZGV4IDNjMjhjOGIuLjA5OWYwNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMKQEAgLTM0OCwxNiArMzQ4LDUyIEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X2N0 eF9kZXNjKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIHsKIAlzdHJ1Y3QgZ3VjX2NvbnRleHRfZGVz YyBkZXNjOwogCXN0cnVjdCBzZ190YWJsZSAqc2c7CisJaW50IGk7CiAKIAltZW1zZXQoJmRlc2Ms IDAsIHNpemVvZihkZXNjKSk7CiAKIAlkZXNjLmF0dHJpYnV0ZSA9IEdVQ19DVFhfREVTQ19BVFRS X0FDVElWRSB8IEdVQ19DVFhfREVTQ19BVFRSX0tFUk5FTDsKIAlkZXNjLmNvbnRleHRfaWQgPSBj bGllbnQtPmN0eF9pbmRleDsKIAlkZXNjLnByaW9yaXR5ID0gY2xpZW50LT5wcmlvcml0eTsKLQlk ZXNjLmVuZ2luZXNfdXNlZCA9ICgxIDw8IFJDUykgfCAoMSA8PCBWQ1MpIHwgKDEgPDwgQkNTKSB8 Ci0JCQkgICAgKDEgPDwgVkVDUykgfCAoMSA8PCBWQ1MyKTsgLyogYWxsIGVuZ2luZXMgKi8KIAlk ZXNjLmRiX2lkID0gY2xpZW50LT5kb29yYmVsbF9pZDsKIAorCWZvciAoaSA9IDA7IGkgPCBJOTE1 X05VTV9SSU5HUzsgaSsrKSB7CisJCXN0cnVjdCBndWNfZXhlY2xpc3RfY29udGV4dCAqbHJjID0g JmRlc2MubHJjW2ldOworCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nOworCQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCisJCS8qIFRPRE86IFdlIGhhdmUgYSBkZXNpZ24g aXNzdWUgdG8gYmUgc29sdmVkIGhlcmUuIE9ubHkgd2hlbiB3ZQorCQkgKiByZWNlaXZlIHRoZSBm aXJzdCBiYXRjaCwgd2Uga25vdyB3aGljaCBlbmdpbmUgaXMgdXNlZCBieSB0aGUKKwkJICogdXNl ci4gQnV0IGhlcmUgR3VDIGV4cGVjdHMgdGhlIGxyYyBhbmQgcmluZyB0byBiZSBwaW5uZWQuIEl0 CisJCSAqIGlzIG5vdCBhbiBpc3N1ZSBmb3IgZGVmYXVsdCBjb250ZXh0LCB3aGljaCBpcyB0aGUg b25seSBvbmUKKwkJICogZm9yIG5vdyB3aG8gb3ducyBhIEd1QyBjbGllbnQuIEJ1dCBmb3IgZnV0 dXJlIG93bmVyIG9mIEd1QworCQkgKiBjbGllbnQsIG5lZWQgdG8gbWFrZSBzdXJlIGxyYyBpcyBw aW5uZWQgcHJpb3IgdG8gZW50ZXIgaGVyZS4KKwkJICovCisJCW9iaiA9IGNsaWVudC0+b3duZXIt PmVuZ2luZVtpXS5zdGF0ZTsKKwkJaWYgKCFvYmopCisJCQlicmVhazsKKworCQlyaW5nID0gY2xp ZW50LT5vd25lci0+ZW5naW5lW2ldLnJpbmdidWYtPnJpbmc7CisKKwkJbHJjLT5jb250ZXh0X2Rl c2MgPSAodTMyKWludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcihyaW5nLCBvYmopOworCQkvKiBU aGUgc3RhdGUgcGFnZSBpcyBhZnRlciBQUEhXU1AgKi8KKwkJbHJjLT5yaW5nX2xjcmEgPSBpOTE1 X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArCisJCQkJTFJDX1NUQVRFX1BOICogUEFHRV9TSVpF OworCQlscmMtPmNvbnRleHRfaWQgPSAoY2xpZW50LT5jdHhfaW5kZXggPDwgR1VDX0VMQ19DVFhJ RF9PRkZTRVQpIHwKKwkJCQkocmluZy0+aWQgPDwgR1VDX0VMQ19FTkdJTkVfT0ZGU0VUKTsKKwor CQlvYmogPSBjbGllbnQtPm93bmVyLT5lbmdpbmVbaV0ucmluZ2J1Zi0+b2JqOworCisJCWxyYy0+ cmluZ19iZWdpbiA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopOworCQlscmMtPnJpbmdf ZW5kID0gbHJjLT5yaW5nX2JlZ2luICsgb2JqLT5iYXNlLnNpemUgLSAxOworCQlscmMtPnJpbmdf bmV4dF9mcmVlX2xvY2F0aW9uID0gbHJjLT5yaW5nX2JlZ2luOworCQlscmMtPnJpbmdfY3VycmVu dF90YWlsX3BvaW50ZXJfdmFsdWUgPSAwOworCisJCWRlc2MuZW5naW5lc191c2VkIHw9ICgxIDw8 IHJpbmctPmlkKTsKKwl9CisKKwlXQVJOX09OKGRlc2MuZW5naW5lc191c2VkID09IDApOworCiAJ LyoKIAkgKiBUaGUgQ1BVIGFkZHJlc3MgaXMgb25seSBuZWVkZWQgYXQgY2VydGFpbiBwb2ludHMs IHNvIGttYXBfYXRvbWljIG9uCiAJICogZGVtYW5kIGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbiB0 aGUgY3R4IGRlc2NyaXB0b3IuCkBAIC02MzQsMTEgKzY3MCwxMyBAQCBzdGF0aWMgdm9pZCBndWNf Y2xpZW50X2ZyZWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKICAqIAkJVGhlIGtlcm5lbCBjbGll bnQgdG8gcmVwbGFjZSBFeGVjTGlzdCBzdWJtaXNzaW9uIGlzIGNyZWF0ZWQgd2l0aAogICogCQlO T1JNQUwgcHJpb3JpdHkuIFByaW9yaXR5IG9mIGEgY2xpZW50IGZvciBzY2hlZHVsZXIgY2FuIGJl IEhJR0gsCiAgKiAJCXdoaWxlIGEgcHJlZW1wdGlvbiBjb250ZXh0IGNhbiB1c2UgQ1JJVElDQUwu CisgKiBAY3R4CQl0aGUgY29udGV4dCB0byBvd24gdGhlIGNsaWVudCAod2UgdXNlIHRoZSBkZWZh dWx0IHJlbmRlciBjb250ZXh0KQogICoKICAqIFJldHVybjoJQW4gaTkxNV9ndWNfY2xpZW50IG9i amVjdCBpZiBzdWNjZXNzLgogICovCiBzdGF0aWMgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqZ3Vj X2NsaWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCQkJdWludDMyX3QgcHJp b3JpdHkpCisJCQkJCQl1aW50MzJfdCBwcmlvcml0eSwKKwkJCQkJCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgpCiB7CiAJc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50OwogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CkBAIC02NTEsNiAr Njg5LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmd1Y19jbGllbnRfYWxsb2Mo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCWNsaWVudC0+ZG9vcmJlbGxfaWQgPSBHVUNfSU5W QUxJRF9ET09SQkVMTF9JRDsKIAljbGllbnQtPnByaW9yaXR5ID0gcHJpb3JpdHk7CisJY2xpZW50 LT5vd25lciA9IGN0eDsKIAogCWNsaWVudC0+Y3R4X2luZGV4ID0gKHVpbnQzMl90KWlkYV9zaW1w bGVfZ2V0KCZndWMtPmN0eF9pZHMsIDAsCiAJCQlHVUNfTUFYX0dQVV9DT05URVhUUywgR0ZQX0tF Uk5FTCk7CkBAIC03ODQsMTAgKzgyMywxMSBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFi bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZk ZXZfcHJpdi0+Z3VjOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHggPSBkZXZfcHJpdi0+cmlu Z1tSQ1NdLmRlZmF1bHRfY29udGV4dDsKIAlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQ7 CiAKIAkvKiBjbGllbnQgZm9yIGV4ZWNidWYgc3VibWlzc2lvbiAqLwotCWNsaWVudCA9IGd1Y19j bGllbnRfYWxsb2MoZGV2LCBHVUNfQ1RYX1BSSU9SSVRZX05PUk1BTCk7CisJY2xpZW50ID0gZ3Vj X2NsaWVudF9hbGxvYyhkZXYsIEdVQ19DVFhfUFJJT1JJVFlfTk9STUFMLCBjdHgpOwogCWlmICgh Y2xpZW50KSB7CiAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBleGVjYnVmIGd1Y19jbGll bnRcbiIpOwogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKaW5kZXgg NWJlZDUyOS4uN2RhNjFkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKQEAgLTMwLDYgKzMw LDcgQEAKIAogc3RydWN0IGk5MTVfZ3VjX2NsaWVudCB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKmNsaWVudF9vYmo7CisJc3RydWN0IGludGVsX2NvbnRleHQgKm93bmVyOwogCXVpbnQz Ml90IHByaW9yaXR5OwogCXVpbnQzMl90IGN0eF9pbmRleDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwppbmRleCAxNjRjNjNhLi45ZGY4OWFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpA QCAtMjU1LDcgKzI1NSw4IEBAIGludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xpc3RzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfZXhlY2xpc3RzCiAgKi8KIHUzMiBpbnRl bF9leGVjbGlzdHNfY3R4X2lkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqKQog ewotCXUzMiBscmNhID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGN0eF9vYmopOworCXUzMiBs cmNhID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGN0eF9vYmopICsKKwkJCUxSQ19QUEhXU1Bf UE4gKiBQQUdFX1NJWkU7CiAKIAkvKiBMUkNBIGlzIHJlcXVpcmVkIHRvIGJlIDRLIGFsaWduZWQg c28gdGhlIG1vcmUgc2lnbmlmaWNhbnQgMjAgYml0cwogCSAqIGFyZSBnbG9iYWxseSB1bmlxdWUg Ki8KQEAgLTI2Nyw3ICsyNjgsOCBAQCB1aW50NjRfdCBpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0 b3Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gcmluZy0+ZGV2OwogCXVpbnQ2NF90IGRlc2M7Ci0JdWludDY0X3QgbHJjYSA9IGk5MTVf Z2VtX29ial9nZ3R0X29mZnNldChjdHhfb2JqKTsKKwl1aW50NjRfdCBscmNhID0gaTkxNV9nZW1f b2JqX2dndHRfb2Zmc2V0KGN0eF9vYmopICsKKwkJCUxSQ19QUEhXU1BfUE4gKiBQQUdFX1NJWkU7 CiAKIAlXQVJOX09OKGxyY2EgJiAweEZGRkZGRkZGMDAwMDBGRkZVTEwpOwogCkBAIC0zMzcsNyAr MzM5LDcgQEAgdm9pZCBpbnRlbF9scl9jb250ZXh0X3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqY3R4X29iaiwKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAl1aW50MzJfdCAqcmVnX3N0 YXRlOwogCi0JcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjdHhfb2JqLCAxKTsKKwlw YWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIExSQ19TVEFURV9QTik7CiAJ cmVnX3N0YXRlID0ga21hcF9hdG9taWMocGFnZSk7CiAKIAlyZWdfc3RhdGVbQ1RYX1JJTkdfQlVG RkVSX1NUQVJUKzFdID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KHJpbmdfb2JqKTsKQEAgLTY5 NiwxMyArNjk4LDE3IEBAIHN0YXRpYyB2b2lkCiBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9h bmRfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIHsKIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxdWVzdC0+cmluZzsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXF1ZXN0LT5pOTE1OwogCiAJaW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2UocmVxdWVzdC0+cmluZ2J1Zik7CiAKIAlpZiAoaW50ZWxfcmluZ19zdG9wcGVk KHJpbmcpKQogCQlyZXR1cm47CiAKLQlleGVjbGlzdHNfY29udGV4dF9xdWV1ZShyZXF1ZXN0KTsK KwlpZiAoZGV2X3ByaXYtPmd1Yy5leGVjYnVmX2NsaWVudCkKKwkJaTkxNV9ndWNfc3VibWl0KGRl dl9wcml2LT5ndWMuZXhlY2J1Zl9jbGllbnQsIHJlcXVlc3QtPmN0eCwgcmluZyk7CisJZWxzZQor CQlleGVjbGlzdHNfY29udGV4dF9xdWV1ZShyZXF1ZXN0KTsKIH0KIAogc3RhdGljIHZvaWQgX193 cmFwX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQpAQCAtOTk2 LDE4ICsxMDAyLDIzIEBAIHN0YXRpYyBpbnQgaW50ZWxfbHJfY29udGV4dF9waW4oc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4 X29iaiA9IGN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZiA9IGN0eC0+ZW5naW5lW3JpbmctPmlkXS5yaW5nYnVmOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CiAJaW50 IHJldCA9IDA7CiAKIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJnJpbmctPmRldi0+c3RydWN0 X211dGV4KSk7CiAJaWYgKGN0eC0+ZW5naW5lW3JpbmctPmlkXS5waW5fY291bnQrKyA9PSAwKSB7 Ci0JCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihjdHhfb2JqLAotCQkJCUdFTjhfTFJfQ09O VEVYVF9BTElHTiwgMCk7CisJCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihjdHhfb2JqLCBH RU44X0xSX0NPTlRFWFRfQUxJR04sCisJCQkJUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1NJ WkVfVkFMVUUpOwogCQlpZiAocmV0KQogCQkJZ290byByZXNldF9waW5fY291bnQ7CiAKIAkJcmV0 ID0gaW50ZWxfcGluX2FuZF9tYXBfcmluZ2J1ZmZlcl9vYmoocmluZy0+ZGV2LCByaW5nYnVmKTsK IAkJaWYgKHJldCkKIAkJCWdvdG8gdW5waW5fY3R4X29iajsKKworCQkvKiBJbnZhbGlkYXRlIEd1 QyBUTEIuICovCisJCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKKwkJCUk5MTVfV1JJ VEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7CiAJfQogCiAJcmV0dXJuIHJldDsK QEAgLTE2NDAsOCArMTY1MSwxMyBAQCBvdXQ6CiAKIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3Jjc19j b250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogeworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkxNTsKIAlpbnQgcmV0OwogCisJLyogSW52 YWxpZGF0ZSBHdUMgVExCLiAqLworCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKKwkJ STkxNV9XUklURShHRU44X0dUQ1IsIEdFTjhfR1RDUl9JTlZBTElEQVRFKTsKKwogCXJldCA9IGlu dGVsX2xvZ2ljYWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHJlcSk7CiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKQEAgLTE5OTgsNyArMjAxNCw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0 IGludGVsX2NvbnRleHQgKmN0eCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vCiAK IAkvKiBUaGUgc2Vjb25kIHBhZ2Ugb2YgdGhlIGNvbnRleHQgb2JqZWN0IGNvbnRhaW5zIHNvbWUg ZmllbGRzIHdoaWNoIG11c3QKIAkgKiBiZSBzZXQgdXAgcHJpb3IgdG8gdGhlIGZpcnN0IGV4ZWN1 dGlvbi4gKi8KLQlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIDEpOwor CXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgTFJDX1NUQVRFX1BOKTsK IAlyZWdfc3RhdGUgPSBrbWFwX2F0b21pYyhwYWdlKTsKIAogCS8qIEEgY29udGV4dCBpcyBhY3R1 YWxseSBhIGJpZyBiYXRjaCBidWZmZXIgd2l0aCBzZXZlcmFsIE1JX0xPQURfUkVHSVNURVJfSU1N CkBAIC0yMTU2LDEyICsyMTcyLDE0IEBAIHN0YXRpYyB2b2lkIGxyY19zZXR1cF9oYXJkd2FyZV9z dGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9jdHhfb2JqKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IHBhZ2UgKnBh Z2U7CiAKIAkvKiBUaGUgc3RhdHVzIHBhZ2UgaXMgb2Zmc2V0IDAgZnJvbSB0aGUgZGVmYXVsdCBj b250ZXh0IG9iamVjdAogCSAqIGluIExSQyBtb2RlLiAqLwotCXJpbmctPnN0YXR1c19wYWdlLmdm eF9hZGRyID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGRlZmF1bHRfY3R4X29iaik7Ci0Jcmlu Zy0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyID0KLQkJCWttYXAoc2dfcGFnZShkZWZhdWx0X2N0eF9v YmotPnBhZ2VzLT5zZ2wpKTsKKwlyaW5nLT5zdGF0dXNfcGFnZS5nZnhfYWRkciA9IGk5MTVfZ2Vt X29ial9nZ3R0X29mZnNldChkZWZhdWx0X2N0eF9vYmopCisJCQkrIExSQ19QUEhXU1BfUE4gKiBQ QUdFX1NJWkU7CisJcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShkZWZhdWx0X2N0eF9v YmosIExSQ19QUEhXU1BfUE4pOworCXJpbmctPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9IGttYXAo cGFnZSk7CiAJcmluZy0+c3RhdHVzX3BhZ2Uub2JqID0gZGVmYXVsdF9jdHhfb2JqOwogCiAJSTkx NV9XUklURShSSU5HX0hXU19QR0EocmluZy0+bW1pb19iYXNlKSwKQEAgLTIxOTcsNiArMjIxNSw5 IEBAIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY3R4LAogCiAJY29udGV4dF9zaXplID0gcm91bmRfdXAoZ2V0X2xyX2NvbnRleHRfc2l6 ZShyaW5nKSwgNDA5Nik7CiAKKwkvKiBPbmUgZXh0cmEgcGFnZSBhcyB0aGUgc2hhcmluZyBkYXRh IGJldHdlZW4gZHJpdmVyIGFuZCBHdUMgKi8KKwljb250ZXh0X3NpemUgKz0gUEFHRV9TSVpFICog TFJDX1BQSFdTUF9QTjsKKwogCWN0eF9vYmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBj b250ZXh0X3NpemUpOwogCWlmICghY3R4X29iaikgewogCQlEUk1fREVCVUdfRFJJVkVSKCJBbGxv YyBMUkMgYmFja2luZyBvYmogZmFpbGVkLlxuIik7CkBAIC0yMjA0LDcgKzIyMjUsOCBAQCBpbnQg aW50ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmN0 eCwKIAl9CiAKIAlpZiAoaXNfZ2xvYmFsX2RlZmF1bHRfY3R4KSB7Ci0JCXJldCA9IGk5MTVfZ2Vt X29ial9nZ3R0X3BpbihjdHhfb2JqLCBHRU44X0xSX0NPTlRFWFRfQUxJR04sIDApOworCQlyZXQg PSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4oY3R4X29iaiwgR0VOOF9MUl9DT05URVhUX0FMSUdOLAor CQkJCVBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9TSVpFX1ZBTFVFKTsKIAkJaWYgKHJldCkg ewogCQkJRFJNX0RFQlVHX0RSSVZFUigiUGluIExSQyBiYWNraW5nIG9iaiBmYWlsZWQ6ICVkXG4i LAogCQkJCQlyZXQpOwpAQCAtMjIyMyw3ICsyMjQ1LDcgQEAgaW50IGludGVsX2xyX2NvbnRleHRf ZGVmZXJyZWRfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCiAKIAlyaW5nYnVmLT5y aW5nID0gcmluZzsKIAotCXJpbmdidWYtPnNpemUgPSAzMiAqIFBBR0VfU0laRTsKKwlyaW5nYnVm LT5zaXplID0gNCAqIFBBR0VfU0laRTsKIAlyaW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSA9IHJpbmdi dWYtPnNpemU7CiAJcmluZ2J1Zi0+aGVhZCA9IDA7CiAJcmluZ2J1Zi0+dGFpbCA9IDA7CkBAIC0y MzIzLDcgKzIzNDUsNyBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfcmVzZXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJCVdBUk4oMSwgIkZhaWxlZCBnZXRfcGFnZXMgZm9yIGNvbnRleHQgb2Jq XG4iKTsKIAkJCWNvbnRpbnVlOwogCQl9Ci0JCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3Bh Z2UoY3R4X29iaiwgMSk7CisJCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29i aiwgTFJDX1NUQVRFX1BOKTsKIAkJcmVnX3N0YXRlID0ga21hcF9hdG9taWMocGFnZSk7CiAKIAkJ cmVnX3N0YXRlW0NUWF9SSU5HX0hFQUQrMV0gPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaApp bmRleCBiMzY1OWExLi40NjcxNTdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaApAQCAtNjYs NiArNjYsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAogfQogCiAvKiBMb2dpY2FsIFJpbmcgQ29u dGV4dHMgKi8KKworLyogT25lIGV4dHJhIHBhZ2UgaXMgYWRkZWQgYmVmb3JlIExSQyBmb3IgR3VD IGFzIHNoYXJlZCBkYXRhICovCisjZGVmaW5lIExSQ19HVUNTSFJfUE4JKDApCisjZGVmaW5lIExS Q19QUEhXU1BfUE4JKExSQ19HVUNTSFJfUE4gKyAxKQorI2RlZmluZSBMUkNfU1RBVEVfUE4JKExS Q19QUEhXU1BfUE4gKyAxKQorCiB2b2lkIGludGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY3R4KTsKIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAogCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyk7Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK