From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [PATCH 02/55] drm/i915: Reserve ring buffer space for i915_add_request() commands Date: Fri, 19 Jun 2015 17:34:12 +0100 Message-ID: <1434731652-15672-1-git-send-email-John.C.Harrison@Intel.com> References: <1432917856-12261-3-git-send-email-John.C.Harrison@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 7D17D6E0F5 for ; Fri, 19 Jun 2015 09:34:14 -0700 (PDT) In-Reply-To: <1432917856-12261-3-git-send-email-John.C.Harrison@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 RnJvbTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KCkl0IGlzIGEg YmFkIGlkZWEgZm9yIGk5MTVfYWRkX3JlcXVlc3QoKSB0byBmYWlsLiBUaGUgd29yayB3aWxsIGFs cmVhZHkgaGF2ZSBiZWVuCnNlbmQgdG8gdGhlIHJpbmcgYW5kIHdpbGwgYmUgcHJvY2Vzc2VkLCBi dXQgdGhlcmUgd2lsbCBub3QgYmUgYW55IHRyYWNraW5nIG9yCm1hbmFnZW1lbnQgb2YgdGhhdCB3 b3JrLgoKVGhlIG9ubHkgd2F5IHRoZSBhZGQgcmVxdWVzdCBjYWxsIGNhbiBmYWlsIGlzIGlmIGl0 IGNhbid0IHdyaXRlIGl0cyBlcGlsb2d1ZQpjb21tYW5kcyB0byB0aGUgcmluZyAoY2FjaGUgZmx1 c2hpbmcsIHNlcW5vIHVwZGF0ZXMsIGludGVycnVwdCBzaWduYWxsaW5nKS4gVGhlCnJlYXNvbnMg Zm9yIHRoYXQgYXJlIG1vc3RseSBkb3duIHRvIHJ1bm5pbmcgb3V0IG9mIHJpbmcgYnVmZmVyIHNw YWNlIGFuZCB0aGUKcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoIHRyeWluZyB0byBnZXQgc29tZSBt b3JlLiBUaGlzIHBhdGNoIHByZXZlbnRzIHRoYXQKc2l0dWF0aW9uIGZyb20gaGFwcGVuaW5nIGlu IHRoZSBmaXJzdCBwbGFjZS4KCldoZW4gYSByZXF1ZXN0IGlzIGNyZWF0ZWQsIGl0IG1hcmtzIHN1 ZmZpY2llbnQgc3BhY2UgYXMgcmVzZXJ2ZWQgZm9yIHRoZQplcGlsb2d1ZSBjb21tYW5kcy4gVGh1 cyBndWFyYW50ZWVpbmcgdGhhdCBieSB0aGUgdGltZSB0aGUgZXBpbG9ndWUgaXMgd3JpdHRlbiwK dGhlcmUgd2lsbCBiZSBwbGVudHkgb2Ygc3BhY2UgZm9yIGl0LiBOb3RlIHRoYXQgYSByaW5nX2Jl Z2luKCkgY2FsbCBpcyByZXF1aXJlZAp0byBhY3R1YWxseSByZXNlcnZlIHRoZSBzcGFjZSAoYW5k IGRvIGFueSBwb3RlbnRpYWwgd2FpdGluZykuIEhvd2V2ZXIsIHRoYXQgaXMKbm90IGN1cnJlbnRs eSBkb25lIGF0IHJlcXVlc3QgY3JlYXRpb24gdGltZS4gVGhpcyBpcyBiZWNhdXNlIHRoZSByaW5n X2JlZ2luKCkKY29kZSBjYW4gYWxsb2NhdGUgYSByZXF1ZXN0LiBIZW5jZSBjYWxsaW5nIGJlZ2lu KCkgZnJvbSB0aGUgcmVxdWVzdCBhbGxvY2F0aW9uCmNvZGUgd291bGQgbGVhZCB0byBpbmZpbml0 ZSByZWN1cnNpb24hIExhdGVyIHBhdGNoZXMgaW4gdGhpcyBzZXJpZXMgcmVtb3ZlIHRoZQpuZWVk IGZvciBiZWdpbigpIHRvIGRvIHRoZSBhbGxvY2F0ZS4gQXQgdGhhdCBwb2ludCwgaXQgYmVjb21l cyBzYWZlIGZvciB0aGUKYWxsb2NhdGUgdG8gY2FsbCBiZWdpbigpIGFuZCByZWFsbHkgcmVzZXJ2 ZSB0aGUgc3BhY2UuCgpVbnRpbCB0aGVuLCB0aGVyZSBpcyBhIHBvdGVudGlhbCBmb3IgaW5zdWZm aWNpZW50IHNwYWNlIHRvIGJlIGF2YWlsYWJsZSBhdCB0aGUKcG9pbnQgb2YgY2FsbGluZyBpOTE1 X2FkZF9yZXF1ZXN0KCkuIEhvd2V2ZXIsIHRoYXQgd291bGQgb25seSBiZSBpbiB0aGUgY2FzZQp3 aGVyZSB0aGUgcmVxdWVzdCB3YXMgY3JlYXRlZCBhbmQgaW1tZWRpYXRlbHkgc3VibWl0dGVkIHdp dGhvdXQgZXZlciBjYWxsaW5nCnJpbmdfYmVnaW4oKSBhbmQgYWRkaW5nIGFueSB3b3JrIHRvIHRo YXQgcmVxdWVzdC4gV2hpY2ggc2hvdWxkIG5ldmVyIGhhcHBlbi4gQW5kCmV2ZW4gaWYgaXQgZG9l cywgYW5kIGlmIHRoYXQgcmVxdWVzdCBoYXBwZW5zIHRvIGZhbGwgZG93biB0aGUgdGlueSB3aW5k b3cgb2YKb3Bwb3J0dW5pdHkgZm9yIGZhaWxpbmcgZHVlIHRvIGJlaW5nIG91dCBvZiByaW5nIHNw YWNlIHRoZW4gZG9lcyBpdCByZWFsbHkKbWF0dGVyIGJlY2F1c2UgdGhlIHJlcXVlc3Qgd2Fzbid0 IGRvaW5nIGFueXRoaW5nIGluIHRoZSBmaXJzdCBwbGFjZT8KCnYyOiBVcGRhdGVkIHRoZSAncmVz ZXJ2ZWQgc3BhY2UgdG9vIHNtYWxsJyB3YXJuaW5nIHRvIGluY2x1ZGUgdGhlIG9mZmVuZGluZwpz aXplcy4gQWRkZWQgYSAnY2FuY2VsJyBvcGVyYXRpb24gdG8gY2xlYW4gdXAgd2hlbiBhIHJlcXVl c3QgaXMgYWJhbmRvbmVkLiBBZGRlZApyZS1pbml0aWFsaXNhdGlvbiBvZiB0cmFja2luZyBzdGF0 ZSBhZnRlciBhIGJ1ZmZlciB3cmFwIHRvIGtlZXAgdGhlIHNhbml0eQpjaGVja3MgYWNjdXJhdGUu Cgp2MzogSW5jcmVtZW50ZWQgdGhlIHJlc2VydmVkIHNpemUgdG8gYWNjb21tb2RhdGUgSXJvbmxh a2UgKGFmdGVyIGZpbmFsbHkKbWFuYWdpbmcgdG8gcnVuIG9uIGFuIElMSyBzeXN0ZW0pLiBBbHNv IGZpeGVkIG1pc3Npbmcgd3JhcCBjb2RlIGluIExSQyBtb2RlLgoKdjQ6IEFkZGVkIGV4dHJhIGNv bW1lbnQgYW5kIHJlbW92ZWQgZHVwbGljYXRlIFdBUk4gKGZlZWRiYWNrIGZyb20gVG9tYXMpLgoK djU6IFJlLXdyaXRlIG9mIHdyYXAgaGFuZGxpbmcgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBlYXJs eSB3cmFwcyAoZmVlZGJhY2sgZnJvbQpEYW5pZWwgVmV0dGVyKS4KCkZvcjogVklaLTUxMTUKQ0M6 IFRvbWFzIEVsZiA8dG9tYXMuZWxmQGludGVsLmNvbT4KQ0M6IERhbmllbCBWZXR0ZXIgPGRhbmll bEBmZndsbC5jaD4KU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29u QEludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg fCAgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8ICAgMzcg KysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAg IDM1ICsrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMg fCAgIDk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAgMjUgKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwg MTg2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IDAzNDdlYjkuLmViYTE4NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjE4 Nyw2ICsyMTg3LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKIAogaW50IGk5MTVf Z2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAkJCSAgIHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwordm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CiB2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rf ZnJlZShzdHJ1Y3Qga3JlZiAqcmVxX3JlZik7CiAKIHN0YXRpYyBpbmxpbmUgdWludDMyX3QKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDgxZjM1MTIuLjg1ZmEyN2IgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwpAQCAtMjQ4NSw2ICsyNDg1LDEzIEBAIGludCBfX2k5MTVfYWRkX3JlcXVlc3Qo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAl9IGVsc2UKIAkJcmluZ2J1ZiA9IHJpbmct PmJ1ZmZlcjsKIAorCS8qCisJICogVG8gZW5zdXJlIHRoYXQgdGhpcyBjYWxsIHdpbGwgbm90IGZh aWwsIHNwYWNlIGZvciBpdHMgZW1pc3Npb25zCisJICogc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVu IHJlc2VydmVkIGluIHRoZSByaW5nIGJ1ZmZlci4gTGV0IHRoZSByaW5nCisJICoga25vdyB0aGF0 IGl0IGlzIHRpbWUgdG8gdXNlIHRoYXQgc3BhY2UgdXAuCisJICovCisJaW50ZWxfcmluZ19yZXNl cnZlZF9zcGFjZV91c2UocmluZ2J1Zik7CisKIAlyZXF1ZXN0X3N0YXJ0ID0gaW50ZWxfcmluZ19n ZXRfdGFpbChyaW5nYnVmKTsKIAkvKgogCSAqIEVtaXQgYW55IG91dHN0YW5kaW5nIGZsdXNoZXMg LSBleGVjYnVmIGNhbiBmYWlsIHRvIGVtaXQgdGhlIGZsdXNoCkBAIC0yNTY3LDYgKzI1NzQsOSBA QCBpbnQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJ CQkgICByb3VuZF9qaWZmaWVzX3VwX3JlbGF0aXZlKEhaKSk7CiAJaW50ZWxfbWFya19idXN5KGRl dl9wcml2LT5kZXYpOwogCisJLyogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIHJlc2VydmVkIHNpemUg d2FzIGxhcmdlIGVub3VnaC4gKi8KKwlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2VuZChyaW5n YnVmKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0yNjY2LDYgKzI2NzYsMjYgQEAgaW50IGk5MTVf Z2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAlpZiAocmV0 KQogCQlnb3RvIGVycjsKIAorCS8qCisJICogUmVzZXJ2ZSBzcGFjZSBpbiB0aGUgcmluZyBidWZm ZXIgZm9yIGFsbCB0aGUgY29tbWFuZHMgcmVxdWlyZWQgdG8KKwkgKiBldmVudHVhbGx5IGVtaXQg dGhpcyByZXF1ZXN0LiBUaGlzIGlzIHRvIGd1YXJhbnRlZSB0aGF0IHRoZQorCSAqIGk5MTVfYWRk X3JlcXVlc3QoKSBjYWxsIGNhbid0IGZhaWwuIE5vdGUgdGhhdCB0aGUgcmVzZXJ2ZSBtYXkgbmVl ZAorCSAqIHRvIGJlIHJlZG9uZSBpZiB0aGUgcmVxdWVzdCBpcyBub3QgYWN0dWFsbHkgc3VibWl0 dGVkIHN0cmFpZ2h0CisJICogYXdheSwgZS5nLiBiZWNhdXNlIGEgR1BVIHNjaGVkdWxlciBoYXMg ZGVmZXJyZWQgaXQuCisJICoKKwkgKiBOb3RlIGZ1cnRoZXIgdGhhdCB0aGlzIGNhbGwgbWVyZWx5 IG5vdGVzIHRoZSByZXNlcnZlIHJlcXVlc3QuIEEKKwkgKiBzdWJzZXF1ZW50IGNhbGwgdG8gKl9y aW5nX2JlZ2luKCkgaXMgcmVxdWlyZWQgdG8gYWN0dWFsbHkgZW5zdXJlCisJICogdGhhdCB0aGUg cmVzZXJ2YXRpb24gaXMgYXZhaWxhYmxlLiBXaXRob3V0IHRoZSBiZWdpbiwgaWYgdGhlCisJICog cmVxdWVzdCBjcmVhdG9yIGltbWVkaWF0ZWx5IHN1Ym1pdHRlZCB0aGUgcmVxdWVzdCB3aXRob3V0 IGFkZGluZworCSAqIGFueSBjb21tYW5kcyB0byBpdCB0aGVuIHRoZXJlIG1pZ2h0IG5vdCBhY3R1 YWxseSBiZSBzdWZmaWNpZW50CisJICogcm9vbSBmb3IgdGhlIHN1Ym1pc3Npb24gY29tbWFuZHMu IFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50CisJICogKl9yaW5nX2JlZ2luKCkgaW1wbGVtZW50 YXRpb25zIHBvdGVudGlhbGx5IGNhbGwgYmFjayBoZXJlIHRvCisJICogaTkxNV9nZW1fcmVxdWVz dF9hbGxvYygpLiBUaHVzIGNhbGxpbmcgX2JlZ2luKCkgaGVyZSB3b3VsZCBsZWFkIHRvCisJICog aW5maW5pdGUgcmVjdXJzaW9uISBVbnRpbCB0aGF0IGJhY2sgY2FsbCBwYXRoIGlzIHJlbW92ZWQs IGl0IGlzCisJICogbmVjZXNzYXJ5IHRvIGRvIGEgbWFudWFsIF9iZWdpbigpIG91dHNpZGUuCisJ ICovCisJaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9yZXNlcnZlKHJlcS0+cmluZ2J1ZiwgTUlO X1NQQUNFX0ZPUl9BRERfUkVRVUVTVCk7CisKIAlyaW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVl c3QgPSByZXE7CiAJcmV0dXJuIDA7CiAKQEAgLTI2NzQsNiArMjcwNCwxMyBAQCBlcnI6CiAJcmV0 dXJuIHJldDsKIH0KIAordm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKK3sKKwlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2NhbmNl bChyZXEtPnJpbmdidWYpOworCisJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwor fQorCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgogaTkxNV9nZW1fZmluZF9hY3RpdmVf cmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwppbmRleCA2YTVlZDA3Li5iZDYyYmQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwpAQCAtNjkwLDYgKzY5MCw5IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfZm9yX3Nw YWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAogCWlmIChpbnRlbF9yaW5nX3Nw YWNlKHJpbmdidWYpID49IGJ5dGVzKQogCQlyZXR1cm4gMDsKIAorCS8qIFRoZSB3aG9sZSBwb2lu dCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8gbm90IHdhaXQhICovCisJV0FSTl9PTihyaW5nYnVm LT5yZXNlcnZlZF9pbl91c2UpOworCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmcmlu Zy0+cmVxdWVzdF9saXN0LCBsaXN0KSB7CiAJCS8qCiAJCSAqIFRoZSByZXF1ZXN0IHF1ZXVlIGlz IHBlci1lbmdpbmUsIHNvIGNhbiBjb250YWluIHJlcXVlc3RzCkBAIC03NDgsOCArNzUxLDEyIEBA IHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dyYXBfYnVmZmVyKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmLAogCWludCByZW0gPSByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsK IAogCWlmIChyaW5nYnVmLT5zcGFjZSA8IHJlbSkgewotCQlpbnQgcmV0ID0gbG9naWNhbF9yaW5n X3dhaXRfZm9yX3NwYWNlKHJpbmdidWYsIGN0eCwgcmVtKTsKKwkJaW50IHJldDsKKworCQkvKiBD YW4ndCB3YWl0IGlmIHNwYWNlIGhhcyBhbHJlYWR5IGJlZW4gcmVzZXJ2ZWQhICovCisJCVdBUk5f T04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKIAorCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2Fp dF9mb3Jfc3BhY2UocmluZ2J1ZiwgY3R4LCByZW0pOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJl dDsKIAl9CkBAIC03NjgsNyArNzc1LDcgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd3JhcF9i dWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCiBzdGF0aWMgaW50IGxvZ2lj YWxfcmluZ19wcmVwYXJlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAogCQkJCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsIGludCBieXRlcykKIHsKLQlpbnQgcmV0OworCWludCBy ZXQsIG1heF9ieXRlczsKIAogCWlmICh1bmxpa2VseShyaW5nYnVmLT50YWlsICsgYnl0ZXMgPiBy aW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSkpIHsKIAkJcmV0ID0gbG9naWNhbF9yaW5nX3dyYXBfYnVm ZmVyKHJpbmdidWYsIGN0eCk7CkBAIC03NzYsOCArNzgzLDI4IEBAIHN0YXRpYyBpbnQgbG9naWNh bF9yaW5nX3ByZXBhcmUoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCiAJCQlyZXR1 cm4gcmV0OwogCX0KIAotCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IGJ5dGVzKSkgewot CQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1ZiwgY3R4LCBieXRlcyk7 CisJLyoKKwkgKiBBZGQgb24gdGhlIHJlc2VydmVkIHNpemUgdG8gdGhlIHJlcXVlc3QgdG8gbWFr ZSBzdXJlIHRoYXQgYWZ0ZXIKKwkgKiB0aGUgaW50ZW5kZWQgY29tbWFuZHMgaGF2ZSBiZWVuIGVt aXR0ZWQsIHRoZXJlIGlzIGd1YXJhbnRlZWQgdG8KKwkgKiBzdGlsbCBiZSBlbm91Z2ggZnJlZSBz cGFjZSB0byBzZW5kIHRoZW0gdG8gdGhlIGhhcmR3YXJlLgorCSAqLworCW1heF9ieXRlcyA9IGJ5 dGVzICsgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKKworCWlmICh1bmxpa2VseShyaW5nYnVmLT5z cGFjZSA8IG1heF9ieXRlcykpIHsKKwkJLyoKKwkJICogQnl0ZXMgaXMgZ3VhcmFudGVlZCB0byBm aXQgd2l0aGluIHRoZSB0YWlsIG9mIHRoZSBidWZmZXIsCisJCSAqIGJ1dCB0aGUgcmVzZXJ2ZWQg c3BhY2UgbWF5IHB1c2ggaXQgb2ZmIHRoZSBlbmQuIElmIHNvIHRoZW4KKwkJICogbmVlZCB0byB3 YWl0IGZvciB0aGUgd2hvbGUgb2YgdGhlIHRhaWwgcGx1cyB0aGUgcmVzZXJ2ZWQKKwkJICogc2l6 ZS4gVGhhdCBzaG91bGQgZ3VhcmFudGVlIHRoYXQgdGhlIGFjdHVhbCByZXF1ZXN0CisJCSAqIChi eXRlcykgd2lsbCBmaXQgYmV0d2VlbiBoZXJlIGFuZCB0aGUgZW5kIGFuZCB0aGUgcmVzZXJ2ZWQK KwkJICogdXNhZ2Ugd2lsbCBmaXQgZWl0aGVyIGluIHRoZSBzYW1lIG9yIGF0IHRoZSBzdGFydC4g RWl0aGVyCisJCSAqIHdheSwgaWYgYSB3cmFwIG9jY3VycyBpdCB3aWxsIG5vdCBpbnZvbHZlIGEg d2FpdCBhbmQgdGh1cworCQkgKiBjYW5ub3QgZmFpbC4KKwkJICovCisJCWlmICh1bmxpa2VseShy aW5nYnVmLT50YWlsICsgbWF4X2J5dGVzICsgSTkxNV9SSU5HX0ZSRUVfU1BBQ0UgPiByaW5nYnVm LT5lZmZlY3RpdmVfc2l6ZSkpCisJCQltYXhfYnl0ZXMgPSByaW5nYnVmLT5yZXNlcnZlZF9zaXpl ICsgSTkxNV9SSU5HX0ZSRUVfU1BBQ0UgKyByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsK KworCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1ZiwgY3R4LCBtYXhf Ynl0ZXMpOwogCQlpZiAodW5saWtlbHkocmV0KSkKIAkJCXJldHVybiByZXQ7CiAJfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGQ5MzRmODUuLjFjMTI1ZTkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTIxMDYsNiArMjEwNiw5 IEBAIHN0YXRpYyBpbnQgcmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nLCBpbnQgbikKIAlpZiAoaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKSA+PSBuKQogCQly ZXR1cm4gMDsKIAorCS8qIFRoZSB3aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8g bm90IHdhaXQhICovCisJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOworCiAJbGlz dF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmcmluZy0+cmVxdWVzdF9saXN0LCBsaXN0KSB7CiAJ CXNwYWNlID0gX19pbnRlbF9yaW5nX3NwYWNlKHJlcXVlc3QtPnBvc3RmaXgsIHJpbmdidWYtPnRh aWwsCiAJCQkJCSAgIHJpbmdidWYtPnNpemUpOwpAQCAtMjEzMSw3ICsyMTM0LDEyIEBAIHN0YXRp YyBpbnQgaW50ZWxfd3JhcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KQogCWludCByZW0gPSByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsKIAogCWlmIChyaW5n YnVmLT5zcGFjZSA8IHJlbSkgewotCQlpbnQgcmV0ID0gcmluZ193YWl0X2Zvcl9zcGFjZShyaW5n LCByZW0pOworCQlpbnQgcmV0OworCisJCS8qIENhbid0IHdhaXQgaWYgc3BhY2UgaGFzIGFscmVh ZHkgYmVlbiByZXNlcnZlZCEgKi8KKwkJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2Up OworCisJCXJldCA9IHJpbmdfd2FpdF9mb3Jfc3BhY2UocmluZywgcmVtKTsKIAkJaWYgKHJldCkK IAkJCXJldHVybiByZXQ7CiAJfQpAQCAtMjE4MCwxMSArMjE4OCw2OSBAQCBpbnQgaW50ZWxfcmlu Z19hbGxvY19yZXF1ZXN0X2V4dHJhcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVl c3QpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbnRlbF9yaW5nX3ByZXBhcmUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKLQkJCQlpbnQgYnl0ZXMpCit2b2lkIGludGVsX3Jp bmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1 ZiwgaW50IHNpemUpCit7CisJLyogTkI6IFVudGlsIHJlcXVlc3QgbWFuYWdlbWVudCBpcyBmdWxs eSB0aWRpZWQgdXAgYW5kIHRoZSBPTFIgaXMKKwkgKiByZW1vdmVkLCB0aGVyZSBhcmUgdG9vIG1h bnkgd2F5cyBmb3IgZ2V0IGZhbHNlIGhpdHMgb24gdGhpcworCSAqIGFudGktcmVjdXJzaW9uIGNo ZWNrISAqLworCS8qV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9zaXplKTsqLworCVdBUk5fT04o cmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKKworCXJpbmdidWYtPnJlc2VydmVkX3NpemUgPSBz aXplOworCisJLyoKKwkgKiBSZWFsbHkgbmVlZCB0byBjYWxsIF9iZWdpbigpIGhlcmUgYnV0IHRo YXQgY3VycmVudGx5IGxlYWRzIHRvCisJICogcmVjdXJzaW9uIHByb2JsZW1zISBUaGlzIHdpbGwg YmUgZml4ZWQgbGF0ZXIgYnV0IGZvciBub3cganVzdAorCSAqIHJldHVybiBhbmQgaG9wZSBmb3Ig dGhlIGJlc3QuIE5vdGUgdGhhdCB0aGVyZSBpcyBvbmx5IGEgcmVhbAorCSAqIHByb2JsZW0gaWYg dGhlIGNyZWF0ZSBvZiB0aGUgcmVxdWVzdCBuZXZlciBhY3R1YWxseSBjYWxscyBfYmVnaW4oKQor CSAqIGJ1dCBpZiB0aGV5IGFyZSBub3Qgc3VibWl0dGluZyBhbnkgd29yayB0aGVuIHdoeSBkaWQg dGhleSBjcmVhdGUKKwkgKiB0aGUgcmVxdWVzdCBpbiB0aGUgZmlyc3QgcGxhY2U/CisJICovCit9 CisKK3ZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwoc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYpCit7CisJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2Up OworCisJcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSAgID0gMDsKKwlyaW5nYnVmLT5yZXNlcnZlZF9p bl91c2UgPSBmYWxzZTsKK30KKwordm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3VzZShz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKK3sKKwlXQVJOX09OKHJpbmdidWYtPnJl c2VydmVkX2luX3VzZSk7CisKKwlyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UgPSB0cnVlOworCXJp bmdidWYtPnJlc2VydmVkX3RhaWwgICA9IHJpbmdidWYtPnRhaWw7Cit9CisKK3ZvaWQgaW50ZWxf cmluZ19yZXNlcnZlZF9zcGFjZV9lbmQoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYp Cit7CisJV0FSTl9PTighcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKKwlpZiAocmluZ2J1Zi0+ dGFpbCA+IHJpbmdidWYtPnJlc2VydmVkX3RhaWwpIHsKKwkJV0FSTihyaW5nYnVmLT50YWlsID4g cmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbCArIHJpbmdidWYtPnJlc2VydmVkX3NpemUsCisJCSAgICAg InJlcXVlc3QgcmVzZXJ2ZWQgc2l6ZSB0b28gc21hbGw6ICVkIHZzICVkIVxuIiwKKwkJICAgICBy aW5nYnVmLT50YWlsIC0gcmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbCwgcmluZ2J1Zi0+cmVzZXJ2ZWRf c2l6ZSk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogVGhlIHJpbmcgd2FzIHdyYXBwZWQgd2hpbGUg dGhlIHJlc2VydmVkIHNwYWNlIHdhcyBpbiB1c2UuCisJCSAqIFRoYXQgbWVhbnMgdGhhdCBzb21l IHVua25vd24gYW1vdW50IG9mIHRoZSByaW5nIHRhaWwgd2FzCisJCSAqIG5vLW9wIGZpbGxlZCBh bmQgc2tpcHBlZC4gVGh1cyBzaW1wbHkgYWRkaW5nIHRoZSByaW5nIHNpemUKKwkJICogdG8gdGhl IHRhaWwgYW5kIGRvaW5nIHRoZSBhYm92ZSBzcGFjZSBjaGVjayB3aWxsIG5vdCB3b3JrLgorCQkg KiBSYXRoZXIgdGhhbiBhdHRlbXB0IHRvIHRyYWNrIGhvdyBtdWNoIHRhaWwgd2FzIHNraXBwZWQs CisJCSAqIGl0IGlzIG11Y2ggc2ltcGxlciB0byBzYXkgdGhhdCBhbHNvIHNraXBwaW5nIHRoZSBz YW5pdHkKKwkJICogY2hlY2sgZXZlcnkgb25jZSBpbiBhIHdoaWxlIGlzIG5vdCBhIGJpZyBpc3N1 ZS4KKwkJICovCisJfQorCisJcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSAgID0gMDsKKwlyaW5nYnVm LT5yZXNlcnZlZF9pbl91c2UgPSBmYWxzZTsKK30KKworc3RhdGljIGludCBfX2ludGVsX3Jpbmdf cHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQgYnl0ZXMpCiB7CiAJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByaW5nLT5idWZmZXI7Ci0JaW50IHJldDsK KwlpbnQgcmV0LCBtYXhfYnl0ZXM7CiAKIAlpZiAodW5saWtlbHkocmluZ2J1Zi0+dGFpbCArIGJ5 dGVzID4gcmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUpKSB7CiAJCXJldCA9IGludGVsX3dyYXBfcmlu Z19idWZmZXIocmluZyk7CkBAIC0yMTkyLDggKzIyNTgsMjggQEAgc3RhdGljIGludCBfX2ludGVs X3JpbmdfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQkJcmV0dXJuIHJl dDsKIAl9CiAKLQlpZiAodW5saWtlbHkocmluZ2J1Zi0+c3BhY2UgPCBieXRlcykpIHsKLQkJcmV0 ID0gcmluZ193YWl0X2Zvcl9zcGFjZShyaW5nLCBieXRlcyk7CisJLyoKKwkgKiBBZGQgb24gdGhl IHJlc2VydmVkIHNpemUgdG8gdGhlIHJlcXVlc3QgdG8gbWFrZSBzdXJlIHRoYXQgYWZ0ZXIKKwkg KiB0aGUgaW50ZW5kZWQgY29tbWFuZHMgaGF2ZSBiZWVuIGVtaXR0ZWQsIHRoZXJlIGlzIGd1YXJh bnRlZWQgdG8KKwkgKiBzdGlsbCBiZSBlbm91Z2ggZnJlZSBzcGFjZSB0byBzZW5kIHRoZW0gdG8g dGhlIGhhcmR3YXJlLgorCSAqLworCW1heF9ieXRlcyA9IGJ5dGVzICsgcmluZ2J1Zi0+cmVzZXJ2 ZWRfc2l6ZTsKKworCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IG1heF9ieXRlcykpIHsK KwkJLyoKKwkJICogQnl0ZXMgaXMgZ3VhcmFudGVlZCB0byBmaXQgd2l0aGluIHRoZSB0YWlsIG9m IHRoZSBidWZmZXIsCisJCSAqIGJ1dCB0aGUgcmVzZXJ2ZWQgc3BhY2UgbWF5IHB1c2ggaXQgb2Zm IHRoZSBlbmQuIElmIHNvIHRoZW4KKwkJICogbmVlZCB0byB3YWl0IGZvciB0aGUgd2hvbGUgb2Yg dGhlIHRhaWwgcGx1cyB0aGUgcmVzZXJ2ZWQKKwkJICogc2l6ZS4gVGhhdCBzaG91bGQgZ3VhcmFu dGVlIHRoYXQgdGhlIGFjdHVhbCByZXF1ZXN0CisJCSAqIChieXRlcykgd2lsbCBmaXQgYmV0d2Vl biBoZXJlIGFuZCB0aGUgZW5kIGFuZCB0aGUgcmVzZXJ2ZWQKKwkJICogdXNhZ2Ugd2lsbCBmaXQg ZWl0aGVyIGluIHRoZSBzYW1lIG9yIGF0IHRoZSBzdGFydC4gRWl0aGVyCisJCSAqIHdheSwgaWYg YSB3cmFwIG9jY3VycyBpdCB3aWxsIG5vdCBpbnZvbHZlIGEgd2FpdCBhbmQgdGh1cworCQkgKiBj YW5ub3QgZmFpbC4KKwkJICovCisJCWlmICh1bmxpa2VseShyaW5nYnVmLT50YWlsICsgbWF4X2J5 dGVzID4gcmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUpKQorCQkJbWF4X2J5dGVzID0gcmluZ2J1Zi0+ cmVzZXJ2ZWRfc2l6ZSArIEk5MTVfUklOR19GUkVFX1NQQUNFICsgcmluZ2J1Zi0+c2l6ZSAtIHJp bmdidWYtPnRhaWw7CisKKwkJcmV0ID0gcmluZ193YWl0X2Zvcl9zcGFjZShyaW5nLCBtYXhfYnl0 ZXMpOwogCQlpZiAodW5saWtlbHkocmV0KSkKIAkJCXJldHVybiByZXQ7CiAJfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IDM5ZjZkZmMuLmJmMmFjMjggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTEwNSw2ICsxMDUsOSBAQCBz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciB7CiAJaW50IHNwYWNlOwogCWludCBzaXplOwogCWludCBl ZmZlY3RpdmVfc2l6ZTsKKwlpbnQgcmVzZXJ2ZWRfc2l6ZTsKKwlpbnQgcmVzZXJ2ZWRfdGFpbDsK Kwlib29sIHJlc2VydmVkX2luX3VzZTsKIAogCS8qKiBXZSB0cmFjayB0aGUgcG9zaXRpb24gb2Yg dGhlIHJlcXVlc3RzIGluIHRoZSByaW5nIGJ1ZmZlciwgYW5kCiAJICogd2hlbiBlYWNoIGlzIHJl dGlyZWQgd2UgaW5jcmVtZW50IGxhc3RfcmV0aXJlZF9oZWFkIGFzIHRoZSBHUFUKQEAgLTQ1MCw0 ICs0NTMsMjYgQEAgaW50ZWxfcmluZ19nZXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQogCXJldHVybiByaW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3Q7CiB9CiAKKy8q CisgKiBBcmJpdHJhcnkgc2l6ZSBmb3IgbGFyZ2VzdCBwb3NzaWJsZSAnYWRkIHJlcXVlc3QnIHNl cXVlbmNlLiBUaGUgY29kZSBwYXRocworICogYXJlIGNvbXBsZXggYW5kIHZhcmlhYmxlLiBFbXBp cmljYWwgbWVhc3VyZW1lbnQgc2hvd3MgdGhhdCB0aGUgd29yc3QgY2FzZQorICogaXMgSUxLIGF0 IDEzNiB3b3Jkcy4gUmVzZXJ2aW5nIHRvbyBtdWNoIGlzIGJldHRlciB0aGFuIHJlc2VydmluZyB0 b28gbGl0dGxlCisgKiBhcyB0aGF0IGFsbG93cyBmb3IgY29ybmVyIGNhc2VzIHRoYXQgbWlnaHQg aGF2ZSBiZWVuIG1pc3NlZC4gU28gdGhlIGZpZ3VyZQorICogaGFzIGJlZW4gcm91bmRlZCB1cCB0 byAxNjAgd29yZHMuCisgKi8KKyNkZWZpbmUgTUlOX1NQQUNFX0ZPUl9BRERfUkVRVUVTVAkxNjAK KworLyoKKyAqIFJlc2VydmUgc3BhY2UgaW4gdGhlIHJpbmcgdG8gZ3VhcmFudGVlIHRoYXQgdGhl IGk5MTVfYWRkX3JlcXVlc3QoKSBjYWxsCisgKiB3aWxsIGFsd2F5cyBoYXZlIHN1ZmZpY2llbnQg cm9vbSB0byBkbyBpdHMgc3R1ZmYuIFRoZSByZXF1ZXN0IGNyZWF0aW9uCisgKiBjb2RlIGNhbGxz IHRoaXMgYXV0b21hdGljYWxseS4KKyAqLwordm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNl X3Jlc2VydmUoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsIGludCBzaXplKTsKKy8q IENhbmNlbCB0aGUgcmVzZXJ2YXRpb24sIGUuZy4gYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBiZWlu ZyBkaXNjYXJkZWQuICovCit2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKKy8qIFVzZSB0aGUgcmVzZXJ2ZWQgc3Bh Y2UgLSBmb3IgdXNlIGJ5IGk5MTVfYWRkX3JlcXVlc3QoKSBvbmx5LiAqLwordm9pZCBpbnRlbF9y aW5nX3Jlc2VydmVkX3NwYWNlX3VzZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7 CisvKiBGaW5pc2ggd2l0aCB0aGUgcmVzZXJ2ZWQgc3BhY2UgLSBmb3IgdXNlIGJ5IGk5MTVfYWRk X3JlcXVlc3QoKSBvbmx5LiAqLwordm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2VuZChz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7CisKICNlbmRpZiAvKiBfSU5URUxfUklO R0JVRkZFUl9IXyAqLwotLSAKMS43LjkuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK