From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH 11/13 v4] drm/i915: Integrate GuC-based command submission Date: Thu, 9 Jul 2015 19:29:12 +0100 Message-ID: <1436466554-24806-12-git-send-email-david.s.gordon@intel.com> References: <1436466554-24806-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 99D7B6ED14 for ; Thu, 9 Jul 2015 11:29:57 -0700 (PDT) In-Reply-To: <1436466554-24806-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 IGRlY2xhcmF0aW9ucyBbQ2hyaXMgV2lsc29uXQoKdjQ6CiAgICBTcXVhc2hlZCBrZXJuZWxkb2Mg cGF0Y2ggaW50byBoZXJlIFtEYW5pZWwgVmV0dGVyXQoKSXNzdWU6IFZJWi00ODg0ClNpZ25lZC1v ZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEdv cmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgotLS0KIERvY3VtZW50YXRpb24vRG9jQm9v ay9kcm0udG1wbCAgICAgICAgICAgICB8IDE0ICsrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgICAgfCAgMSArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCA1MSArKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggICAgICAgICAg IHwgIDYgKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsIGIvRG9j dW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCmluZGV4IDU5NmIxMWQuLjBmZjVmZDcgMTAwNjQ0 Ci0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbAorKysgYi9Eb2N1bWVudGF0aW9u L0RvY0Jvb2svZHJtLnRtcGwKQEAgLTQyMjMsNiArNDIyMywyMCBAQCBpbnQgbnVtX2lvY3Rsczs8 L3N5bm9wc2lzPgogICAgICAgPC9zZWN0Mj4KICAgICA8L3NlY3QxPgogICAgIDxzZWN0MT4KKyAg ICAgIDx0aXRsZT5HdUMtYmFzZWQgQ29tbWFuZCBTdWJtaXNzaW9uPC90aXRsZT4KKyAgICAgIDxz ZWN0Mj4KKyAgICAgICAgPHRpdGxlPkd1QzwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYyBHdUMtc3BlY2lmaWMgZmlybXdhcmUgbG9hZGVyCishSWRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworICAgICAgPC9zZWN0Mj4KKyAgICAg IDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPkd1QyBDbGllbnQ8L3RpdGxlPgorIVBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIEd1Qy1iYXNlZCBjb21tYW5kIHN1Ym1p c3Npc29uCishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKKyAg ICAgIDwvc2VjdDI+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MT4KICAgICAgIDx0aXRsZT4g VHJhY2luZyA8L3RpdGxlPgogICAgICAgPHBhcmE+CiAgICAgVGhpcyBzZWN0aW9ucyBjb3ZlcnMg YWxsIHRoaW5ncyByZWxhdGVkIHRvIHRoZSB0cmFjZXBvaW50cyBpbXBsZW1lbnRlZCBpbgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCAxM2UzN2QxLi5kOTM3MzJhIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTk4Miw3ICsxOTgyLDcgQEAgc3RhdGljIHZv aWQgaTkxNV9kdW1wX2xyY19vYmooc3RydWN0IHNlcV9maWxlICptLAogCQlyZXR1cm47CiAJfQog Ci0JcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjdHhfb2JqLCAxKTsKKwlwYWdlID0g aTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIExSQ19TVEFURV9QTik7CiAJaWYgKCFX QVJOX09OKHBhZ2UgPT0gTlVMTCkpIHsKIAkJcmVnX3N0YXRlID0ga21hcF9hdG9taWMocGFnZSk7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCAyNWQ4 ODA3Li5jNWM5ZmJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jCkBAIC0zNDYsMTggKzM0Niw1OCBAQCBzdGF0aWMgdm9pZCBndWNfaW5pdF9wcm9jX2Rlc2Mo c3RydWN0IGludGVsX2d1YyAqZ3VjLAogc3RhdGljIHZvaWQgZ3VjX2luaXRfY3R4X2Rlc2Moc3Ry dWN0IGludGVsX2d1YyAqZ3VjLAogCQkJICAgICAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xp ZW50KQogeworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHggPSBjbGllbnQtPm93bmVyOwogCXN0 cnVjdCBndWNfY29udGV4dF9kZXNjIGRlc2M7CiAJc3RydWN0IHNnX3RhYmxlICpzZzsKKwlpbnQg aTsKIAogCW1lbXNldCgmZGVzYywgMCwgc2l6ZW9mKGRlc2MpKTsKIAogCWRlc2MuYXR0cmlidXRl ID0gR1VDX0NUWF9ERVNDX0FUVFJfQUNUSVZFIHwgR1VDX0NUWF9ERVNDX0FUVFJfS0VSTkVMOwog CWRlc2MuY29udGV4dF9pZCA9IGNsaWVudC0+Y3R4X2luZGV4OwogCWRlc2MucHJpb3JpdHkgPSBj bGllbnQtPnByaW9yaXR5OwotCWRlc2MuZW5naW5lc191c2VkID0gKDEgPDwgUkNTKSB8ICgxIDw8 IFZDUykgfCAoMSA8PCBCQ1MpIHwKLQkJCSAgICAoMSA8PCBWRUNTKSB8ICgxIDw8IFZDUzIpOyAv KiBhbGwgZW5naW5lcyAqLwogCWRlc2MuZGJfaWQgPSBjbGllbnQtPmRvb3JiZWxsX2lkOwogCisJ Zm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspIHsKKwkJc3RydWN0IGd1Y19leGVj bGlzdF9jb250ZXh0ICpscmMgPSAmZGVzYy5scmNbaV07CisJCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmID0gY3R4LT5lbmdpbmVbaV0ucmluZ2J1ZjsKKwkJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZzsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwkJdWlu dDY0X3QgY3R4X2Rlc2M7CisKKwkJLyogVE9ETzogV2UgaGF2ZSBhIGRlc2lnbiBpc3N1ZSB0byBi ZSBzb2x2ZWQgaGVyZS4gT25seSB3aGVuIHdlCisJCSAqIHJlY2VpdmUgdGhlIGZpcnN0IGJhdGNo LCB3ZSBrbm93IHdoaWNoIGVuZ2luZSBpcyB1c2VkIGJ5IHRoZQorCQkgKiB1c2VyLiBCdXQgaGVy ZSBHdUMgZXhwZWN0cyB0aGUgbHJjIGFuZCByaW5nIHRvIGJlIHBpbm5lZC4gSXQKKwkJICogaXMg bm90IGFuIGlzc3VlIGZvciBkZWZhdWx0IGNvbnRleHQsIHdoaWNoIGlzIHRoZSBvbmx5IG9uZQor CQkgKiBmb3Igbm93IHdobyBvd25zIGEgR3VDIGNsaWVudC4gQnV0IGZvciBmdXR1cmUgb3duZXIg b2YgR3VDCisJCSAqIGNsaWVudCwgbmVlZCB0byBtYWtlIHN1cmUgbHJjIGlzIHBpbm5lZCBwcmlv ciB0byBlbnRlciBoZXJlLgorCQkgKi8KKwkJb2JqID0gY3R4LT5lbmdpbmVbaV0uc3RhdGU7CisJ CWlmICghb2JqKQorCQkJYnJlYWs7CisKKwkJcmluZyA9IHJpbmdidWYtPnJpbmc7CisJCWN0eF9k ZXNjID0gaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKGN0eCwgcmluZyk7CisJCWxyYy0+Y29u dGV4dF9kZXNjID0gKHUzMiljdHhfZGVzYzsKKworCQkvKiBUaGUgc3RhdGUgcGFnZSBpcyBhZnRl ciBQUEhXU1AgKi8KKwkJbHJjLT5yaW5nX2xjcmEgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQo b2JqKSArCisJCQkJTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFOworCQlscmMtPmNvbnRleHRfaWQg PSAoY2xpZW50LT5jdHhfaW5kZXggPDwgR1VDX0VMQ19DVFhJRF9PRkZTRVQpIHwKKwkJCQkocmlu Zy0+aWQgPDwgR1VDX0VMQ19FTkdJTkVfT0ZGU0VUKTsKKworCQlvYmogPSByaW5nYnVmLT5vYmo7 CisKKwkJbHJjLT5yaW5nX2JlZ2luID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7CisJ CWxyYy0+cmluZ19lbmQgPSBscmMtPnJpbmdfYmVnaW4gKyBvYmotPmJhc2Uuc2l6ZSAtIDE7CisJ CWxyYy0+cmluZ19uZXh0X2ZyZWVfbG9jYXRpb24gPSBscmMtPnJpbmdfYmVnaW47CisJCWxyYy0+ cmluZ19jdXJyZW50X3RhaWxfcG9pbnRlcl92YWx1ZSA9IDA7CisKKwkJZGVzYy5lbmdpbmVzX3Vz ZWQgfD0gKDEgPDwgcmluZy0+aWQpOworCX0KKworCVdBUk5fT04oZGVzYy5lbmdpbmVzX3VzZWQg PT0gMCk7CisKIAkvKgogCSAqIFRoZSBDUFUgYWRkcmVzcyBpcyBvbmx5IG5lZWRlZCBhdCBjZXJ0 YWluIHBvaW50cywgc28ga21hcF9hdG9taWMgb24KIAkgKiBkZW1hbmQgaW5zdGVhZCBvZiBzdG9y aW5nIGl0IGluIHRoZSBjdHggZGVzY3JpcHRvci4KQEAgLTYyMiwxMSArNjYyLDEzIEBAIHN0YXRp YyB2b2lkIGd1Y19jbGllbnRfZnJlZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogICogCQlUaGUg a2VybmVsIGNsaWVudCB0byByZXBsYWNlIEV4ZWNMaXN0IHN1Ym1pc3Npb24gaXMgY3JlYXRlZCB3 aXRoCiAgKiAJCU5PUk1BTCBwcmlvcml0eS4gUHJpb3JpdHkgb2YgYSBjbGllbnQgZm9yIHNjaGVk dWxlciBjYW4gYmUgSElHSCwKICAqIAkJd2hpbGUgYSBwcmVlbXB0aW9uIGNvbnRleHQgY2FuIHVz ZSBDUklUSUNBTC4KKyAqIEBjdHgJCXRoZSBjb250ZXh0IHRvIG93biB0aGUgY2xpZW50ICh3ZSB1 c2UgdGhlIGRlZmF1bHQgcmVuZGVyIGNvbnRleHQpCiAgKgogICogUmV0dXJuOglBbiBpOTE1X2d1 Y19jbGllbnQgb2JqZWN0IGlmIHN1Y2Nlc3MuCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgaTkxNV9ndWNf Y2xpZW50ICpndWNfY2xpZW50X2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJCQl1 aW50MzJfdCBwcmlvcml0eSkKKwkJCQkJCXVpbnQzMl90IHByaW9yaXR5LAorCQkJCQkJc3RydWN0 IGludGVsX2NvbnRleHQgKmN0eCkKIHsKIAlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQ7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK QEAgLTYzOSw2ICs2ODEsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqZ3VjX2Ns aWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJY2xpZW50LT5kb29yYmVsbF9p ZCA9IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEOwogCWNsaWVudC0+cHJpb3JpdHkgPSBwcmlvcml0 eTsKKwljbGllbnQtPm93bmVyID0gY3R4OwogCiAJY2xpZW50LT5jdHhfaW5kZXggPSAodWludDMy X3QpaWRhX3NpbXBsZV9nZXQoJmd1Yy0+Y3R4X2lkcywgMCwKIAkJCUdVQ19NQVhfR1BVX0NPTlRF WFRTLCBHRlBfS0VSTkVMKTsKQEAgLTc3MiwxMCArODE1LDExIEBAIGludCBpOTE1X2d1Y19zdWJt aXNzaW9uX2VuYWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2d1 YyAqZ3VjID0gJmRldl9wcml2LT5ndWM7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9IGRl dl9wcml2LT5yaW5nW1JDU10uZGVmYXVsdF9jb250ZXh0OwogCXN0cnVjdCBpOTE1X2d1Y19jbGll bnQgKmNsaWVudDsKIAogCS8qIGNsaWVudCBmb3IgZXhlY2J1ZiBzdWJtaXNzaW9uICovCi0JY2xp ZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXYsIEdVQ19DVFhfUFJJT1JJVFlfTk9STUFMKTsKKwlj bGllbnQgPSBndWNfY2xpZW50X2FsbG9jKGRldiwgR1VDX0NUWF9QUklPUklUWV9OT1JNQUwsIGN0 eCk7CiAJaWYgKCFjbGllbnQpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGV4ZWNi dWYgZ3VjX2NsaWVudFxuIik7CiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWMuaAppbmRleCBkMjQ5MzI2Li45NTcxYjU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaApA QCAtMjksNiArMjksNyBAQAogCiBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50IHsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqY2xpZW50X29iajsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqb3du ZXI7CiAJdWludDMyX3QgcHJpb3JpdHk7CiAJdWludDMyX3QgY3R4X2luZGV4OwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCmluZGV4IDllMTIxZDMuLjgyOTQ0NjIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jCkBAIC0yNTQsNyArMjU0LDggQEAgaW50IGludGVsX3Nhbml0aXplX2VuYWJsZV9l eGVjbGlzdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGVuYWJsZV9leGVjbGlzdHMKICAq LwogdTMyIGludGVsX2V4ZWNsaXN0c19jdHhfaWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg KmN0eF9vYmopCiB7Ci0JdTMyIGxyY2EgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoY3R4X29i aik7CisJdTMyIGxyY2EgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoY3R4X29iaikgKworCQkJ TFJDX1BQSFdTUF9QTiAqIFBBR0VfU0laRTsKIAogCS8qIExSQ0EgaXMgcmVxdWlyZWQgdG8gYmUg NEsgYWxpZ25lZCBzbyB0aGUgbW9yZSBzaWduaWZpY2FudCAyMCBiaXRzCiAJICogYXJlIGdsb2Jh bGx5IHVuaXF1ZSAqLwpAQCAtMjY3LDcgKzI2OCw4IEBAIHVpbnQ2NF90IGludGVsX2xyX2NvbnRl eHRfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSByaW5nLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9v YmogPSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGU7CiAJdWludDY0X3QgZGVzYzsKLQl1aW50 NjRfdCBscmNhID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGN0eF9vYmopOworCXVpbnQ2NF90 IGxyY2EgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoY3R4X29iaikgKworCQkJTFJDX1BQSFdT UF9QTiAqIFBBR0VfU0laRTsKIAogCVdBUk5fT04obHJjYSAmIDB4RkZGRkZGRkYwMDAwMEZGRlVM TCk7CiAKQEAgLTM0Miw3ICszNDQsNyBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfdXBkYXRlKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCiAJV0FSTl9PTighaTkxNV9nZW1fb2JqX2lz X3Bpbm5lZChjdHhfb2JqKSk7CiAJV0FSTl9PTighaTkxNV9nZW1fb2JqX2lzX3Bpbm5lZChyYl9v YmopKTsKIAotCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgMSk7CisJ cGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjdHhfb2JqLCBMUkNfU1RBVEVfUE4pOwog CXJlZ19zdGF0ZSA9IGttYXBfYXRvbWljKHBhZ2UpOwogCiAJcmVnX3N0YXRlW0NUWF9SSU5HX1RB SUwrMV0gPSBycS0+dGFpbDsKQEAgLTY4NywxMyArNjg5LDE3IEBAIHN0YXRpYyB2b2lkCiBpbnRl bF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxdWVz dC0+cmluZzsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXF1ZXN0LT5p OTE1OwogCiAJaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmVxdWVzdC0+cmluZ2J1Zik7CiAK IAlpZiAoaW50ZWxfcmluZ19zdG9wcGVkKHJpbmcpKQogCQlyZXR1cm47CiAKLQlleGVjbGlzdHNf Y29udGV4dF9xdWV1ZShyZXF1ZXN0KTsKKwlpZiAoZGV2X3ByaXYtPmd1Yy5leGVjYnVmX2NsaWVu dCkKKwkJaTkxNV9ndWNfc3VibWl0KGRldl9wcml2LT5ndWMuZXhlY2J1Zl9jbGllbnQsIHJlcXVl c3QpOworCWVsc2UKKwkJZXhlY2xpc3RzX2NvbnRleHRfcXVldWUocmVxdWVzdCk7CiB9CiAKIHN0 YXRpYyB2b2lkIF9fd3JhcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu Z2J1ZikKQEAgLTk4NCw2ICs5OTAsNyBAQCBpbnQgbG9naWNhbF9yaW5nX2ZsdXNoX2FsbF9jYWNo ZXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAKIHN0YXRpYyBpbnQgaW50ZWxf bHJfY29udGV4dF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKIHsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBycS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nID0gcnEtPnJpbmc7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg KmN0eF9vYmogPSBycS0+Y3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlOwogCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcnEtPnJpbmdidWY7CkBAIC05OTEsMTQgKzk5OCwxOCBA QCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcnEpCiAKIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJnJpbmctPmRldi0+c3RydWN0 X211dGV4KSk7CiAJaWYgKHJxLT5jdHgtPmVuZ2luZVtyaW5nLT5pZF0ucGluX2NvdW50KysgPT0g MCkgewotCQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4oY3R4X29iaiwKLQkJCQlHRU44X0xS X0NPTlRFWFRfQUxJR04sIDApOworCQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4oY3R4X29i aiwgR0VOOF9MUl9DT05URVhUX0FMSUdOLAorCQkJCVBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BD TV9TSVpFX1ZBTFVFKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gcmVzZXRfcGluX2NvdW50OwogCiAJ CXJldCA9IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2JqKHJpbmctPmRldiwgcmluZ2J1 Zik7CiAJCWlmIChyZXQpCiAJCQlnb3RvIHVucGluX2N0eF9vYmo7CisKKwkJLyogSW52YWxpZGF0 ZSBHdUMgVExCLiAqLworCQlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCisJCQlJOTE1 X1dSSVRFKEdFTjhfR1RDUiwgR0VOOF9HVENSX0lOVkFMSURBVEUpOwogCX0KIAogCXJldHVybiBy ZXQ7CkBAIC0xNjY4LDggKzE2NzksMTMgQEAgb3V0OgogCiBzdGF0aWMgaW50IGdlbjhfaW5pdF9y Y3NfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7CiAJaW50IHJldDsKIAorCS8q IEludmFsaWRhdGUgR3VDIFRMQi4gKi8KKwlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24p CisJCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7CisKIAlyZXQg PSBpbnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChyZXEpOwogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CkBAIC0yMDI2LDcgKzIwNDIsNyBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhf bwogCiAJLyogVGhlIHNlY29uZCBwYWdlIG9mIHRoZSBjb250ZXh0IG9iamVjdCBjb250YWlucyBz b21lIGZpZWxkcyB3aGljaCBtdXN0CiAJICogYmUgc2V0IHVwIHByaW9yIHRvIHRoZSBmaXJzdCBl eGVjdXRpb24uICovCi0JcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjdHhfb2JqLCAx KTsKKwlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIExSQ19TVEFURV9Q Tik7CiAJcmVnX3N0YXRlID0ga21hcF9hdG9taWMocGFnZSk7CiAKIAkvKiBBIGNvbnRleHQgaXMg YWN0dWFsbHkgYSBiaWcgYmF0Y2ggYnVmZmVyIHdpdGggc2V2ZXJhbCBNSV9MT0FEX1JFR0lTVEVS X0lNTQpAQCAtMjE4NSwxMiArMjIwMSwxMyBAQCBzdGF0aWMgdm9pZCBscmNfc2V0dXBfaGFyZHdh cmVfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAkJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKmRlZmF1bHRfY3R4X29iaikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBwYWdl ICpwYWdlOwogCi0JLyogVGhlIHN0YXR1cyBwYWdlIGlzIG9mZnNldCAwIGZyb20gdGhlIGRlZmF1 bHQgY29udGV4dCBvYmplY3QKLQkgKiBpbiBMUkMgbW9kZS4gKi8KLQlyaW5nLT5zdGF0dXNfcGFn ZS5nZnhfYWRkciA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChkZWZhdWx0X2N0eF9vYmopOwot CXJpbmctPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9Ci0JCQlrbWFwKHNnX3BhZ2UoZGVmYXVsdF9j dHhfb2JqLT5wYWdlcy0+c2dsKSk7CisJLyogVGhlIEhXU1AgaXMgcGFydCBvZiB0aGUgZGVmYXVs dCBjb250ZXh0IG9iamVjdCBpbiBMUkMgbW9kZS4gKi8KKwlyaW5nLT5zdGF0dXNfcGFnZS5nZnhf YWRkciA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChkZWZhdWx0X2N0eF9vYmopCisJCQkrIExS Q19QUEhXU1BfUE4gKiBQQUdFX1NJWkU7CisJcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFn ZShkZWZhdWx0X2N0eF9vYmosIExSQ19QUEhXU1BfUE4pOworCXJpbmctPnN0YXR1c19wYWdlLnBh Z2VfYWRkciA9IGttYXAocGFnZSk7CiAJcmluZy0+c3RhdHVzX3BhZ2Uub2JqID0gZGVmYXVsdF9j dHhfb2JqOwogCiAJSTkxNV9XUklURShSSU5HX0hXU19QR0EocmluZy0+bW1pb19iYXNlKSwKQEAg LTIyMjYsNiArMjI0Myw5IEBAIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAogCiAJY29udGV4dF9zaXplID0gcm91bmRfdXAoZ2V0 X2xyX2NvbnRleHRfc2l6ZShyaW5nKSwgNDA5Nik7CiAKKwkvKiBPbmUgZXh0cmEgcGFnZSBhcyB0 aGUgc2hhcmluZyBkYXRhIGJldHdlZW4gZHJpdmVyIGFuZCBHdUMgKi8KKwljb250ZXh0X3NpemUg Kz0gUEFHRV9TSVpFICogTFJDX1BQSFdTUF9QTjsKKwogCWN0eF9vYmogPSBpOTE1X2dlbV9hbGxv Y19vYmplY3QoZGV2LCBjb250ZXh0X3NpemUpOwogCWlmICghY3R4X29iaikgewogCQlEUk1fREVC VUdfRFJJVkVSKCJBbGxvYyBMUkMgYmFja2luZyBvYmogZmFpbGVkLlxuIik7CkBAIC0yMjMzLDcg KzIyNTMsOCBAQCBpbnQgaW50ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9jcmVhdGUoc3RydWN0IGlu dGVsX2NvbnRleHQgKmN0eCwKIAl9CiAKIAlpZiAoaXNfZ2xvYmFsX2RlZmF1bHRfY3R4KSB7Ci0J CXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihjdHhfb2JqLCBHRU44X0xSX0NPTlRFWFRfQUxJ R04sIDApOworCQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4oY3R4X29iaiwgR0VOOF9MUl9D T05URVhUX0FMSUdOLAorCQkJCVBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9TSVpFX1ZBTFVF KTsKIAkJaWYgKHJldCkgewogCQkJRFJNX0RFQlVHX0RSSVZFUigiUGluIExSQyBiYWNraW5nIG9i aiBmYWlsZWQ6ICVkXG4iLAogCQkJCQlyZXQpOwpAQCAtMjI1Miw3ICsyMjczLDcgQEAgaW50IGlu dGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgs CiAKIAlyaW5nYnVmLT5yaW5nID0gcmluZzsKIAotCXJpbmdidWYtPnNpemUgPSAzMiAqIFBBR0Vf U0laRTsKKwlyaW5nYnVmLT5zaXplID0gNCAqIFBBR0VfU0laRTsKIAlyaW5nYnVmLT5lZmZlY3Rp dmVfc2l6ZSA9IHJpbmdidWYtPnNpemU7CiAJcmluZ2J1Zi0+aGVhZCA9IDA7CiAJcmluZ2J1Zi0+ dGFpbCA9IDA7CkBAIC0yMzUyLDcgKzIzNzMsNyBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfcmVz ZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCVdBUk4oMSwgIkZhaWxlZCBnZXRfcGFnZXMg Zm9yIGNvbnRleHQgb2JqXG4iKTsKIAkJCWNvbnRpbnVlOwogCQl9Ci0JCXBhZ2UgPSBpOTE1X2dl bV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgMSk7CisJCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3Rf Z2V0X3BhZ2UoY3R4X29iaiwgTFJDX1NUQVRFX1BOKTsKIAkJcmVnX3N0YXRlID0ga21hcF9hdG9t aWMocGFnZSk7CiAKIAkJcmVnX3N0YXRlW0NUWF9SSU5HX0hFQUQrMV0gPSAwOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuaAppbmRleCA2ZWNjMGIzLi5lMDRiNWMyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuaApAQCAtNjcsNiArNjcsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2xvZ2lj YWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAogfQogCiAvKiBM b2dpY2FsIFJpbmcgQ29udGV4dHMgKi8KKworLyogT25lIGV4dHJhIHBhZ2UgaXMgYWRkZWQgYmVm b3JlIExSQyBmb3IgR3VDIGFzIHNoYXJlZCBkYXRhICovCisjZGVmaW5lIExSQ19HVUNTSFJfUE4J KDApCisjZGVmaW5lIExSQ19QUEhXU1BfUE4JKExSQ19HVUNTSFJfUE4gKyAxKQorI2RlZmluZSBM UkNfU1RBVEVfUE4JKExSQ19QUEhXU1BfUE4gKyAxKQorCiB2b2lkIGludGVsX2xyX2NvbnRleHRf ZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKIGludCBpbnRlbF9scl9jb250ZXh0X2Rl ZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAogCQkJCSAgICAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK