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: Thu, 4 Jun 2015 13:06:34 +0100 Message-ID: <1433419594-32559-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id D21EE6E02A for ; Thu, 4 Jun 2015 05:07:00 -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 IGZpeGVkIG1pc3Npbmcgd3JhcCBjb2RlIGluIExSQyBtb2RlLgoKRm9yOiBWSVotNTExNQpTaWdu ZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgICAzNyArKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICAxOCArKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgICA2OCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmggfCAgIDI1ICsrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBlOWQ3 NmYzLi40NGRlZTMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTIxODcsNiArMjE4Nyw3 IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7CiAKIGludCBpOTE1X2dlbV9yZXF1ZXN0 X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJCQkgICBzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY3R4KTsKK3ZvaWQgaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwogdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUoc3RydWN0 IGtyZWYgKnJlcV9yZWYpOwogCiBzdGF0aWMgaW5saW5lIHVpbnQzMl90CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwppbmRleCA3OGY2YTg5Li41MTZlOWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK QEAgLTI0OTUsNiArMjQ5NSwxMyBAQCBpbnQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcsCiAJfSBlbHNlCiAJCXJpbmdidWYgPSByaW5nLT5idWZmZXI7CiAK KwkvKgorCSAqIFRvIGVuc3VyZSB0aGF0IHRoaXMgY2FsbCB3aWxsIG5vdCBmYWlsLCBzcGFjZSBm b3IgaXRzIGVtaXNzaW9ucworCSAqIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiByZXNlcnZlZCBp biB0aGUgcmluZyBidWZmZXIuIExldCB0aGUgcmluZworCSAqIGtub3cgdGhhdCBpdCBpcyB0aW1l IHRvIHVzZSB0aGF0IHNwYWNlIHVwLgorCSAqLworCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2Vf dXNlKHJpbmdidWYpOworCiAJcmVxdWVzdF9zdGFydCA9IGludGVsX3JpbmdfZ2V0X3RhaWwocmlu Z2J1Zik7CiAJLyoKIAkgKiBFbWl0IGFueSBvdXRzdGFuZGluZyBmbHVzaGVzIC0gZXhlY2J1ZiBj YW4gZmFpbCB0byBlbWl0IHRoZSBmbHVzaApAQCAtMjU3Nyw2ICsyNTg0LDkgQEAgaW50IF9faTkx NV9hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQkJICAgcm91bmRf amlmZmllc191cF9yZWxhdGl2ZShIWikpOwogCWludGVsX21hcmtfYnVzeShkZXZfcHJpdi0+ZGV2 KTsKIAorCS8qIFNhbml0eSBjaGVjayB0aGF0IHRoZSByZXNlcnZlZCBzaXplIHdhcyBsYXJnZSBl bm91Z2guICovCisJaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9lbmQocmluZ2J1Zik7CisKIAly ZXR1cm4gMDsKIH0KIApAQCAtMjY3Niw2ICsyNjg2LDI2IEBAIGludCBpOTE1X2dlbV9yZXF1ZXN0 X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJaWYgKHJldCkKIAkJZ290byBl cnI7CiAKKwkvKgorCSAqIFJlc2VydmUgc3BhY2UgaW4gdGhlIHJpbmcgYnVmZmVyIGZvciBhbGwg dGhlIGNvbW1hbmRzIHJlcXVpcmVkIHRvCisJICogZXZlbnR1YWxseSBlbWl0IHRoaXMgcmVxdWVz dC4gVGhpcyBpcyB0byBndWFyYW50ZWUgdGhhdCB0aGUKKwkgKiBpOTE1X2FkZF9yZXF1ZXN0KCkg Y2FsbCBjYW4ndCBmYWlsLiBOb3RlIHRoYXQgdGhlIHJlc2VydmUgbWF5IG5lZWQKKwkgKiB0byBi ZSByZWRvbmUgaWYgdGhlIHJlcXVlc3QgaXMgbm90IGFjdHVhbGx5IHN1Ym1pdHRlZCBzdHJhaWdo dAorCSAqIGF3YXksIGUuZy4gYmVjYXVzZSBhIEdQVSBzY2hlZHVsZXIgaGFzIGRlZmVycmVkIGl0 LgorCSAqCisJICogTm90ZSBmdXJ0aGVyIHRoYXQgdGhpcyBjYWxsIG1lcmVseSBub3RlcyB0aGUg cmVzZXJ2ZSByZXF1ZXN0LiBBCisJICogc3Vic2VxdWVudCBjYWxsIHRvICpfcmluZ19iZWdpbigp IGlzIHJlcXVpcmVkIHRvIGFjdHVhbGx5IGVuc3VyZQorCSAqIHRoYXQgdGhlIHJlc2VydmF0aW9u IGlzIGF2YWlsYWJsZS4gV2l0aG91dCB0aGUgYmVnaW4sIGlmIHRoZQorCSAqIHJlcXVlc3QgY3Jl YXRvciBpbW1lZGlhdGVseSBzdWJtaXR0ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBhZGRpbmcKKwkg KiBhbnkgY29tbWFuZHMgdG8gaXQgdGhlbiB0aGVyZSBtaWdodCBub3QgYWN0dWFsbHkgYmUgc3Vm ZmljaWVudAorCSAqIHJvb20gZm9yIHRoZSBzdWJtaXNzaW9uIGNvbW1hbmRzLiBVbmZvcnR1bmF0 ZWx5LCB0aGUgY3VycmVudAorCSAqICpfcmluZ19iZWdpbigpIGltcGxlbWVudGF0aW9ucyBwb3Rl bnRpYWxseSBjYWxsIGJhY2sgaGVyZSB0bworCSAqIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoKS4g VGh1cyBjYWxsaW5nIF9iZWdpbigpIGhlcmUgd291bGQgbGVhZCB0bworCSAqIGluZmluaXRlIHJl Y3Vyc2lvbiEgVW50aWwgdGhhdCBiYWNrIGNhbGwgcGF0aCBpcyByZW1vdmVkLCBpdCBpcworCSAq IG5lY2Vzc2FyeSB0byBkbyBhIG1hbnVhbCBfYmVnaW4oKSBvdXRzaWRlLgorCSAqLworCWludGVs X3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShyZXEtPnJpbmdidWYsIE1JTl9TUEFDRV9GT1Jf QUREX1JFUVVFU1QpOworCiAJcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0ID0gcmVxOwog CXJldHVybiAwOwogCkBAIC0yNjg0LDYgKzI3MTQsMTMgQEAgZXJyOgogCXJldHVybiByZXQ7CiB9 CiAKK3ZvaWQgaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEpCit7CisJaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmVxLT5yaW5n YnVmKTsKKworCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2UocmVxKTsKK30KKwogc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5k ZXggNmE1ZWQwNy4uNDJhNzU2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTY4Nyw2 ICs2ODcsOSBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKIAl1bnNpZ25lZCBzcGFjZTsKIAlpbnQgcmV0Owog CisJLyogVGhlIHdob2xlIHBvaW50IG9mIHJlc2VydmluZyBzcGFjZSBpcyB0byBub3Qgd2FpdCEg Ki8KKwlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7CisKIAlpZiAoaW50ZWxfcmlu Z19zcGFjZShyaW5nYnVmKSA+PSBieXRlcykKIAkJcmV0dXJuIDA7CiAKQEAgLTc0Nyw2ICs3NTAs OSBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZ2J1ZiwKIAl1aW50MzJfdCBfX2lvbWVtICp2aXJ0OwogCWludCByZW0gPSBy aW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsKIAorCS8qIENhbid0IHdyYXAgaWYgc3BhY2Ug aGFzIGFscmVhZHkgYmVlbiByZXNlcnZlZCEgKi8KKwlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVk X2luX3VzZSk7CisKIAlpZiAocmluZ2J1Zi0+c3BhY2UgPCByZW0pIHsKIAkJaW50IHJldCA9IGxv Z2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShyaW5nYnVmLCBjdHgsIHJlbSk7CiAKQEAgLTc3MCwx MCArNzc2LDIyIEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3ByZXBhcmUoc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmdidWYsCiB7CiAJaW50IHJldDsKIAorCWlmICghcmluZ2J1Zi0+cmVz ZXJ2ZWRfaW5fdXNlKQorCQlieXRlcyArPSByaW5nYnVmLT5yZXNlcnZlZF9zaXplOworCiAJaWYg KHVubGlrZWx5KHJpbmdidWYtPnRhaWwgKyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXpl KSkgeworCQlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7CisKIAkJcmV0ID0gbG9n aWNhbF9yaW5nX3dyYXBfYnVmZmVyKHJpbmdidWYsIGN0eCk7CiAJCWlmICh1bmxpa2VseShyZXQp KQogCQkJcmV0dXJuIHJldDsKKworCQlpZihyaW5nYnVmLT5yZXNlcnZlZF9zaXplKSB7CisJCQl1 aW50MzJfdCBzaXplID0gcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKKworCQkJaW50ZWxfcmluZ19y ZXNlcnZlZF9zcGFjZV9jYW5jZWwocmluZ2J1Zik7CisJCQlpbnRlbF9yaW5nX3Jlc2VydmVkX3Nw YWNlX3Jlc2VydmUocmluZ2J1Ziwgc2l6ZSk7CisJCX0KIAl9CiAKIAlpZiAodW5saWtlbHkocmlu Z2J1Zi0+c3BhY2UgPCBieXRlcykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYwppbmRleCBkOTM0Zjg1Li43NGMyMjIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jCkBAIC0yMTAzLDYgKzIxMDMsOSBAQCBzdGF0aWMgaW50IHJpbmdfd2FpdF9m b3Jfc3BhY2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgaW50IG4pCiAJdW5zaWduZWQg c3BhY2U7CiAJaW50IHJldDsKIAorCS8qIFRoZSB3aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3Bh Y2UgaXMgdG8gbm90IHdhaXQhICovCisJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2Up OworCiAJaWYgKGludGVsX3Jpbmdfc3BhY2UocmluZ2J1ZikgPj0gbikKIAkJcmV0dXJuIDA7CiAK QEAgLTIxMzAsNiArMjEzMyw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfd3JhcF9yaW5nX2J1ZmZlcihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmID0gcmluZy0+YnVmZmVyOwogCWludCByZW0gPSByaW5nYnVmLT5zaXplIC0gcmluZ2J1 Zi0+dGFpbDsKIAorCS8qIENhbid0IHdyYXAgaWYgc3BhY2UgaGFzIGFscmVhZHkgYmVlbiByZXNl cnZlZCEgKi8KKwlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7CisKIAlpZiAocmlu Z2J1Zi0+c3BhY2UgPCByZW0pIHsKIAkJaW50IHJldCA9IHJpbmdfd2FpdF9mb3Jfc3BhY2Uocmlu ZywgcmVtKTsKIAkJaWYgKHJldCkKQEAgLTIxODAsMTYgKzIxODYsNzQgQEAgaW50IGludGVsX3Jp bmdfYWxsb2NfcmVxdWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9faW50ZWxfcmluZ19wcmVwYXJlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCi0JCQkJaW50IGJ5dGVzKQordm9pZCBpbnRlbF9y aW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2VydmUoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdi dWYsIGludCBzaXplKQoreworCS8qIE5COiBVbnRpbCByZXF1ZXN0IG1hbmFnZW1lbnQgaXMgZnVs bHkgdGlkaWVkIHVwIGFuZCB0aGUgT0xSIGlzCisJICogcmVtb3ZlZCwgdGhlcmUgYXJlIHRvbyBt YW55IHdheXMgZm9yIGdldCBmYWxzZSBoaXRzIG9uIHRoaXMKKwkgKiBhbnRpLXJlY3Vyc2lvbiBj aGVjayEgKi8KKwkvKldBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSk7Ki8KKwlXQVJOX09O KHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7CisKKwlyaW5nYnVmLT5yZXNlcnZlZF9zaXplID0g c2l6ZTsKKworCS8qCisJICogUmVhbGx5IG5lZWQgdG8gY2FsbCBfYmVnaW4oKSBoZXJlIGJ1dCB0 aGF0IGN1cnJlbnRseSBsZWFkcyB0bworCSAqIHJlY3Vyc2lvbiBwcm9ibGVtcyEgVGhpcyB3aWxs IGJlIGZpeGVkIGxhdGVyIGJ1dCBmb3Igbm93IGp1c3QKKwkgKiByZXR1cm4gYW5kIGhvcGUgZm9y IHRoZSBiZXN0LiBOb3RlIHRoYXQgdGhlcmUgaXMgb25seSBhIHJlYWwKKwkgKiBwcm9ibGVtIGlm IHRoZSBjcmVhdGUgb2YgdGhlIHJlcXVlc3QgbmV2ZXIgYWN0dWFsbHkgY2FsbHMgX2JlZ2luKCkK KwkgKiBidXQgaWYgdGhleSBhcmUgbm90IHN1Ym1pdHRpbmcgYW55IHdvcmsgdGhlbiB3aHkgZGlk IHRoZXkgY3JlYXRlCisJICogdGhlIHJlcXVlc3QgaW4gdGhlIGZpcnN0IHBsYWNlPworCSAqLwor fQorCit2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nYnVmKQoreworCVdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNl KTsKKworCXJpbmdidWYtPnJlc2VydmVkX3NpemUgICA9IDA7CisJcmluZ2J1Zi0+cmVzZXJ2ZWRf aW5fdXNlID0gZmFsc2U7Cit9CisKK3ZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV91c2Uo c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCit7CisJV0FSTl9PTihyaW5nYnVmLT5y ZXNlcnZlZF9pbl91c2UpOworCisJcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlID0gdHJ1ZTsKKwly aW5nYnVmLT5yZXNlcnZlZF90YWlsICAgPSByaW5nYnVmLT50YWlsOworfQorCit2b2lkIGludGVs X3JpbmdfcmVzZXJ2ZWRfc3BhY2VfZW5kKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVm KQoreworCVdBUk5fT04oIXJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7CisJV0FSTihyaW5nYnVm LT50YWlsID4gcmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbCArIHJpbmdidWYtPnJlc2VydmVkX3NpemUs CisJICAgICAicmVxdWVzdCByZXNlcnZlZCBzaXplIHRvbyBzbWFsbDogJWQgdnMgJWQhXG4iLAor CSAgICAgcmluZ2J1Zi0+dGFpbCAtIHJpbmdidWYtPnJlc2VydmVkX3RhaWwsIHJpbmdidWYtPnJl c2VydmVkX3NpemUpOworCisJcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSAgID0gMDsKKwlyaW5nYnVm LT5yZXNlcnZlZF9pbl91c2UgPSBmYWxzZTsKK30KKworc3RhdGljIGludCBfX2ludGVsX3Jpbmdf cHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQgYnl0ZXMpCiB7CiAJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByaW5nLT5idWZmZXI7CiAJaW50IHJldDsK IAorCWlmICghcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKQorCQlieXRlcyArPSByaW5nYnVmLT5y ZXNlcnZlZF9zaXplOworCiAJaWYgKHVubGlrZWx5KHJpbmdidWYtPnRhaWwgKyBieXRlcyA+IHJp bmdidWYtPmVmZmVjdGl2ZV9zaXplKSkgeworCQlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2lu X3VzZSk7CisKIAkJcmV0ID0gaW50ZWxfd3JhcF9yaW5nX2J1ZmZlcihyaW5nKTsKIAkJaWYgKHVu bGlrZWx5KHJldCkpCiAJCQlyZXR1cm4gcmV0OworCisJCWlmKHJpbmdidWYtPnJlc2VydmVkX3Np emUpIHsKKwkJCXVpbnQzMl90IHNpemUgPSByaW5nYnVmLT5yZXNlcnZlZF9zaXplOworCisJCQlp bnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2NhbmNlbChyaW5nYnVmKTsKKwkJCWludGVsX3Jpbmdf cmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShyaW5nYnVmLCBzaXplKTsKKwkJfQogCX0KIAogCWlmICh1 bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IGJ5dGVzKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5oCmluZGV4IDM5ZjZkZmMuLmJmMmFjMjggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTEwNSw2ICsxMDUsOSBAQCBzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciB7CiAJaW50IHNwYWNlOwogCWludCBzaXplOwogCWludCBlZmZlY3RpdmVfc2l6 ZTsKKwlpbnQgcmVzZXJ2ZWRfc2l6ZTsKKwlpbnQgcmVzZXJ2ZWRfdGFpbDsKKwlib29sIHJlc2Vy dmVkX2luX3VzZTsKIAogCS8qKiBXZSB0cmFjayB0aGUgcG9zaXRpb24gb2YgdGhlIHJlcXVlc3Rz IGluIHRoZSByaW5nIGJ1ZmZlciwgYW5kCiAJICogd2hlbiBlYWNoIGlzIHJldGlyZWQgd2UgaW5j cmVtZW50IGxhc3RfcmV0aXJlZF9oZWFkIGFzIHRoZSBHUFUKQEAgLTQ1MCw0ICs0NTMsMjYgQEAg aW50ZWxfcmluZ19nZXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCXJl dHVybiByaW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3Q7CiB9CiAKKy8qCisgKiBBcmJpdHJh cnkgc2l6ZSBmb3IgbGFyZ2VzdCBwb3NzaWJsZSAnYWRkIHJlcXVlc3QnIHNlcXVlbmNlLiBUaGUg Y29kZSBwYXRocworICogYXJlIGNvbXBsZXggYW5kIHZhcmlhYmxlLiBFbXBpcmljYWwgbWVhc3Vy ZW1lbnQgc2hvd3MgdGhhdCB0aGUgd29yc3QgY2FzZQorICogaXMgSUxLIGF0IDEzNiB3b3Jkcy4g UmVzZXJ2aW5nIHRvbyBtdWNoIGlzIGJldHRlciB0aGFuIHJlc2VydmluZyB0b28gbGl0dGxlCisg KiBhcyB0aGF0IGFsbG93cyBmb3IgY29ybmVyIGNhc2VzIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIG1p c3NlZC4gU28gdGhlIGZpZ3VyZQorICogaGFzIGJlZW4gcm91bmRlZCB1cCB0byAxNjAgd29yZHMu CisgKi8KKyNkZWZpbmUgTUlOX1NQQUNFX0ZPUl9BRERfUkVRVUVTVAkxNjAKKworLyoKKyAqIFJl c2VydmUgc3BhY2UgaW4gdGhlIHJpbmcgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIGk5MTVfYWRkX3Jl cXVlc3QoKSBjYWxsCisgKiB3aWxsIGFsd2F5cyBoYXZlIHN1ZmZpY2llbnQgcm9vbSB0byBkbyBp dHMgc3R1ZmYuIFRoZSByZXF1ZXN0IGNyZWF0aW9uCisgKiBjb2RlIGNhbGxzIHRoaXMgYXV0b21h dGljYWxseS4KKyAqLwordm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2VydmUoc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsIGludCBzaXplKTsKKy8qIENhbmNlbCB0aGUg cmVzZXJ2YXRpb24sIGUuZy4gYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBiZWluZyBkaXNjYXJkZWQu ICovCit2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nYnVmKTsKKy8qIFVzZSB0aGUgcmVzZXJ2ZWQgc3BhY2UgLSBmb3IgdXNl IGJ5IGk5MTVfYWRkX3JlcXVlc3QoKSBvbmx5LiAqLwordm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVk X3NwYWNlX3VzZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7CisvKiBGaW5pc2gg d2l0aCB0aGUgcmVzZXJ2ZWQgc3BhY2UgLSBmb3IgdXNlIGJ5IGk5MTVfYWRkX3JlcXVlc3QoKSBv bmx5LiAqLwordm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2VuZChzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1Zik7CisKICNlbmRpZiAvKiBfSU5URUxfUklOR0JVRkZFUl9IXyAq LwotLSAKMS43LjkuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK