From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomas Elf Subject: Re: [PATCH 49/53] drm/i915: Make intel_logical_ring_begin() static Date: Mon, 09 Mar 2015 23:24:28 +0000 Message-ID: <54FE2BAC.8040702@intel.com> References: <1423828140-10653-1-git-send-email-John.C.Harrison@Intel.com> <1424366285-29232-1-git-send-email-John.C.Harrison@Intel.com> <1424366285-29232-50-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 6DDC56E637 for ; Mon, 9 Mar 2015 16:24:30 -0700 (PDT) In-Reply-To: <1424366285-29232-50-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: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMTkvMDIvMjAxNSAxNzoxOCwgSm9obi5DLkhhcnJpc29uQEludGVsLmNvbSB3cm90ZToKPiBG cm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Cj4gVGhlIG9u bHkgdXNhZ2Ugb2YgaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKCkgaXMgd2l0aGluIGludGVsX2xy Yy5jIHNvIGl0IGNhbiBiZQo+IG1hZGUgc3RhdGljLiBUbyBhdm9pZCBhIGZvcndhcmQgZGVjbGFy YXRpb24gYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSwgaXQgYW5kIGJ1bmNoCj4gb2Ygb3RoZXIgZnVu Y3Rpb25zIGhhdmUgYmVlbiBzaHVmZmxlZCB1cHdhcmRzLgo+Cj4gRm9yOiBWSVotNTExNQo+IFNp Z25lZC1vZmYtYnk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4g LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyB8ICAzOTQgKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5oIHwgICAgMyAtCj4gICAyIGZpbGVzIGNoYW5nZWQsIDE5NyBpbnNlcnRpb25zKCsp LCAyMDAgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDUy MTJiNTQuLmI0MDUwMWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC02MDYs NiArNjA2LDIwMyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19tb3ZlX3RvX2dwdShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAlyZXR1cm4gbG9naWNhbF9yaW5nX2ludmFsaWRh dGVfYWxsX2NhY2hlcyhyZXEpOwo+ICAgfQo+Cj4gK3N0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dh aXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiArCQkJCSAgICAg aW50IGJ5dGVzKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmluZ2J1 Zi0+cmluZzsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKPiArCWlu dCByZXQ7Cj4gKwo+ICsJaWYgKGludGVsX3Jpbmdfc3BhY2UocmluZ2J1ZikgPj0gYnl0ZXMpCj4g KwkJcmV0dXJuIDA7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmcmluZy0+ cmVxdWVzdF9saXN0LCBsaXN0KSB7Cj4gKwkJLyoKPiArCQkgKiBUaGUgcmVxdWVzdCBxdWV1ZSBp cyBwZXItZW5naW5lLCBzbyBjYW4gY29udGFpbiByZXF1ZXN0cwo+ICsJCSAqIGZyb20gbXVsdGlw bGUgcmluZ2J1ZmZlcnMuIEhlcmUsIHdlIG11c3QgaWdub3JlIGFueSB0aGF0Cj4gKwkJICogYXJl bid0IGZyb20gdGhlIHJpbmdidWZmZXIgd2UncmUgY29uc2lkZXJpbmcuCj4gKwkJICovCj4gKwkJ c3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9IHJlcXVlc3QtPmN0eDsKPiArCQlpZiAoY3R4LT5l bmdpbmVbcmluZy0+aWRdLnJpbmdidWYgIT0gcmluZ2J1ZikKPiArCQkJY29udGludWU7Cj4gKwo+ ICsJCS8qIFdvdWxkIGNvbXBsZXRpb24gb2YgdGhpcyByZXF1ZXN0IGZyZWUgZW5vdWdoIHNwYWNl PyAqLwo+ICsJCWlmIChfX2ludGVsX3Jpbmdfc3BhY2UocmVxdWVzdC0+dGFpbCwgcmluZ2J1Zi0+ dGFpbCwKPiArCQkJCSAgICAgICByaW5nYnVmLT5zaXplKSA+PSBieXRlcykgewo+ICsJCQlicmVh azsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKCZyZXF1ZXN0LT5saXN0ID09ICZyaW5nLT5yZXF1 ZXN0X2xpc3QpCj4gKwkJcmV0dXJuIC1FTk9TUEM7Cj4gKwo+ICsJcmV0ID0gaTkxNV93YWl0X3Jl cXVlc3QocmVxdWVzdCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaTkx NV9nZW1fcmV0aXJlX3JlcXVlc3RzX3JpbmcocmluZyk7Cj4gKwo+ICsJcmV0dXJuIGludGVsX3Jp bmdfc3BhY2UocmluZ2J1ZikgPj0gYnl0ZXMgPyAwIDogLUVOT1NQQzsKPiArfQo+ICsKPiArLyoK PiArICogaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2VfYW5kX3N1Ym1pdCgpIC0gYWR2YW5jZSB0 aGUgdGFpbCBhbmQgc3VibWl0IHRoZSB3b3JrbG9hZAo+ICsgKiBAcmluZ2J1ZjogTG9naWNhbCBS aW5nYnVmZmVyIHRvIGFkdmFuY2UuCj4gKyAqCj4gKyAqIFRoZSB0YWlsIGlzIHVwZGF0ZWQgaW4g b3VyIGxvZ2ljYWwgcmluZ2J1ZmZlciBzdHJ1Y3QsIG5vdCBpbiB0aGUgYWN0dWFsIGNvbnRleHQu IFdoYXQKPiArICogcmVhbGx5IGhhcHBlbnMgZHVyaW5nIHN1Ym1pc3Npb24gaXMgdGhhdCB0aGUg Y29udGV4dCBhbmQgY3VycmVudCB0YWlsIHdpbGwgYmUgcGxhY2VkCj4gKyAqIG9uIGEgcXVldWUg d2FpdGluZyBmb3IgdGhlIEVMU1AgdG8gYmUgcmVhZHkgdG8gYWNjZXB0IGEgbmV3IGNvbnRleHQg c3VibWlzc2lvbi4gQXQgdGhhdAo+ICsgKiBwb2ludCwgdGhlIHRhaWwgKmluc2lkZSogdGhlIGNv bnRleHQgaXMgdXBkYXRlZCBhbmQgdGhlIEVMU1Agd3JpdHRlbiB0by4KPiArICovCj4gK3N0YXRp YyB2b2lkCj4gK2ludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4gKwkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY3R4LAo+ICsJCQkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsK PiArCj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKPiArCj4gKwlpZiAo aW50ZWxfcmluZ19zdG9wcGVkKHJpbmcpKQo+ICsJCXJldHVybjsKPiArCj4gKwlleGVjbGlzdHNf Y29udGV4dF9xdWV1ZShyaW5nLCBjdHgsIHJpbmdidWYtPnRhaWwsIHJlcXVlc3QpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiArCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4LAo+ICsJCQkJICAgICAgIGludCBieXRlcykKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZyA9IHJpbmdidWYtPnJpbmc7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g cmluZy0+ZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKPiArCXVuc2lnbmVkIGxvbmcgZW5kOwo+ICsJaW50IHJldDsKPiArCj4gKwly ZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9yZXF1ZXN0KHJpbmdidWYsIGJ5dGVzKTsKPiArCWlmIChy ZXQgIT0gLUVOT1NQQykKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCS8qIEZvcmNlIHRoZSBjb250 ZXh0IHN1Ym1pc3Npb24gaW4gY2FzZSB3ZSBoYXZlIGJlZW4gc2tpcHBpbmcgaXQgKi8KPiArCWlu dGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQocmluZ2J1ZiwgY3R4LCBOVUxMKTsK PiArCj4gKwkvKiBXaXRoIEdFTSB0aGUgaGFuZ2NoZWNrIHRpbWVyIHNob3VsZCBraWNrIHVzIG91 dCBvZiB0aGUgbG9vcCwKPiArCSAqIGxlYXZpbmcgaXQgZWFybHkgcnVucyB0aGUgcmlzayBvZiBj b3JydXB0aW5nIEdFTSBzdGF0ZSAoZHVlCj4gKwkgKiB0byBydW5uaW5nIG9uIGFsbW9zdCB1bnRl c3RlZCBjb2RlcGF0aHMpLiBCdXQgb24gcmVzdW1lCj4gKwkgKiB0aW1lcnMgZG9uJ3Qgd29yayB5 ZXQsIHNvIHByZXZlbnQgYSBjb21wbGV0ZSBoYW5nIGluIHRoYXQKPiArCSAqIGNhc2UgYnkgY2hv b3NpbmcgYW4gaW5zYW5lbHkgbGFyZ2UgdGltZW91dC4gKi8KPiArCWVuZCA9IGppZmZpZXMgKyA2 MCAqIEhaOwo+ICsKPiArCXJldCA9IDA7Cj4gKwlkbyB7Cj4gKwkJaWYgKGludGVsX3Jpbmdfc3Bh Y2UocmluZ2J1ZikgPj0gYnl0ZXMpCj4gKwkJCWJyZWFrOwo+ICsKPiArCQltc2xlZXAoMSk7Cj4g Kwo+ICsJCWlmIChkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZSAmJiBzaWduYWxfcGVuZGluZyhj dXJyZW50KSkgewo+ICsJCQlyZXQgPSAtRVJFU1RBUlRTWVM7Cj4gKwkJCWJyZWFrOwo+ICsJCX0K PiArCj4gKwkJcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3Is Cj4gKwkJCQkJICAgZGV2X3ByaXYtPm1tLmludGVycnVwdGlibGUpOwo+ICsJCWlmIChyZXQpCj4g KwkJCWJyZWFrOwo+ICsKPiArCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBlbmQpKSB7Cj4gKwkJ CXJldCA9IC1FQlVTWTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfSB3aGlsZSAoMSk7Cj4gKwo+ ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd3JhcF9i dWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4gKwkJCQkgICAgc3RydWN0 IGludGVsX2NvbnRleHQgKmN0eCkKPiArewo+ICsJdWludDMyX3QgX19pb21lbSAqdmlydDsKPiAr CWludCByZW0gPSByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPiArCj4gKwlpZiAocmlu Z2J1Zi0+c3BhY2UgPCByZW0pIHsKPiArCQlpbnQgcmV0ID0gbG9naWNhbF9yaW5nX3dhaXRfZm9y X3NwYWNlKHJpbmdidWYsIGN0eCwgcmVtKTsKPiArCj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJu IHJldDsKPiArCX0KPiArCj4gKwl2aXJ0ID0gcmluZ2J1Zi0+dmlydHVhbF9zdGFydCArIHJpbmdi dWYtPnRhaWw7Cj4gKwlyZW0gLz0gNDsKPiArCXdoaWxlIChyZW0tLSkKPiArCQlpb3dyaXRlMzIo TUlfTk9PUCwgdmlydCsrKTsKPiArCj4gKwlyaW5nYnVmLT50YWlsID0gMDsKPiArCWludGVsX3Jp bmdfdXBkYXRlX3NwYWNlKHJpbmdidWYpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IGxvZ2ljYWxfcmluZ19wcmVwYXJlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmLAo+ICsJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwgaW50IGJ5dGVzKQo+ICt7 Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICh1bmxpa2VseShyaW5nYnVmLT50YWlsICsgYnl0ZXMg PiByaW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSkpIHsKPiArCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd3Jh cF9idWZmZXIocmluZ2J1ZiwgY3R4KTsKPiArCQlpZiAodW5saWtlbHkocmV0KSkKPiArCQkJcmV0 dXJuIHJldDsKPiArCX0KPiArCj4gKwlpZiAodW5saWtlbHkocmluZ2J1Zi0+c3BhY2UgPCBieXRl cykpIHsKPiArCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1ZiwgY3R4 LCBieXRlcyk7Cj4gKwkJaWYgKHVubGlrZWx5KHJldCkpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9sb2dpY2FsX3Jp bmdfYmVnaW4oKSAtIHByZXBhcmUgdGhlIGxvZ2ljYWwgcmluZ2J1ZmZlciB0byBhY2NlcHQgc29t ZSBjb21tYW5kcwo+ICsgKgo+ICsgKiBAcmluZ2J1ZjogTG9naWNhbCByaW5nYnVmZmVyLgo+ICsg KiBAbnVtX2R3b3JkczogbnVtYmVyIG9mIERXT1JEcyB0aGF0IHdlIHBsYW4gdG8gd3JpdGUgdG8g dGhlIHJpbmdidWZmZXIuCj4gKyAqCj4gKyAqIFRoZSByaW5nYnVmZmVyIG1pZ2h0IG5vdCBiZSBy ZWFkeSB0byBhY2NlcHQgdGhlIGNvbW1hbmRzIHJpZ2h0IGF3YXkgKG1heWJlIGl0IG5lZWRzIHRv Cj4gKyAqIGJlIHdyYXBwZWQsIG9yIHdhaXQgYSBiaXQgZm9yIHRoZSB0YWlsIHRvIGJlIHVwZGF0 ZWQpLiBUaGlzIGZ1bmN0aW9uIHRha2VzIGNhcmUgb2YgdGhhdAo+ICsgKiBhbmQgYWxzbyBwcmVh bGxvY2F0ZXMgYSByZXF1ZXN0IChldmVyeSB3b3JrbG9hZCBzdWJtaXNzaW9uIGlzIHN0aWxsIG1l ZGlhdGVkIHRocm91Z2gKPiArICogcmVxdWVzdHMsIHNhbWUgYXMgaXQgZGlkIHdpdGggbGVnYWN5 IHJpbmdidWZmZXIgc3VibWlzc2lvbikuCj4gKyAqCj4gKyAqIFJldHVybjogbm9uLXplcm8gaWYg dGhlIHJpbmdidWZmZXIgaXMgbm90IHJlYWR5IHRvIGJlIHdyaXR0ZW4gdG8uCj4gKyAqLwo+ICtz dGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZiwKPiArCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LCBpbnQgbnVt X2R3b3JkcykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKPiArCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBp OTE1X2dlbV9jaGVja193ZWRnZSgmZGV2X3ByaXYtPmdwdV9lcnJvciwKPiArCQkJCSAgIGRldl9w cml2LT5tbS5pbnRlcnJ1cHRpYmxlKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAr Cj4gKwlyZXQgPSBsb2dpY2FsX3JpbmdfcHJlcGFyZShyaW5nYnVmLCBjdHgsIG51bV9kd29yZHMg KiBzaXplb2YodWludDMyX3QpKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4g KwkvKiBQcmVhbGxvY2F0ZSB0aGUgb2xyIGJlZm9yZSB0b3VjaGluZyB0aGUgcmluZyAqLwo+ICsJ cmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVlc3QocmluZywgY3R4LCAmcmVxKTsK PiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyaW5nYnVmLT5zcGFjZSAtPSBu dW1fZHdvcmRzICogc2l6ZW9mKHVpbnQzMl90KTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAg LyoqCj4gICAgKiBleGVjbGlzdHNfc3VibWlzc2lvbigpIC0gc3VibWl0IGEgYmF0Y2hidWZmZXIg Zm9yIGV4ZWN1dGlvbiwgRXhlY2xpc3RzIHN0eWxlCj4gICAgKiBAZGV2OiBEUk0gZGV2aWNlLgo+ IEBAIC03ODMsMzAgKzk4MCw2IEBAIGludCBsb2dpY2FsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+ IC0vKgo+IC0gKiBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0KCkgLSBhZHZh bmNlIHRoZSB0YWlsIGFuZCBzdWJtaXQgdGhlIHdvcmtsb2FkCj4gLSAqIEByaW5nYnVmOiBMb2dp Y2FsIFJpbmdidWZmZXIgdG8gYWR2YW5jZS4KPiAtICoKPiAtICogVGhlIHRhaWwgaXMgdXBkYXRl ZCBpbiBvdXIgbG9naWNhbCByaW5nYnVmZmVyIHN0cnVjdCwgbm90IGluIHRoZSBhY3R1YWwgY29u dGV4dC4gV2hhdAo+IC0gKiByZWFsbHkgaGFwcGVucyBkdXJpbmcgc3VibWlzc2lvbiBpcyB0aGF0 IHRoZSBjb250ZXh0IGFuZCBjdXJyZW50IHRhaWwgd2lsbCBiZSBwbGFjZWQKPiAtICogb24gYSBx dWV1ZSB3YWl0aW5nIGZvciB0aGUgRUxTUCB0byBiZSByZWFkeSB0byBhY2NlcHQgYSBuZXcgY29u dGV4dCBzdWJtaXNzaW9uLiBBdCB0aGF0Cj4gLSAqIHBvaW50LCB0aGUgdGFpbCAqaW5zaWRlKiB0 aGUgY29udGV4dCBpcyB1cGRhdGVkIGFuZCB0aGUgRUxTUCB3cml0dGVuIHRvLgo+IC0gKi8KPiAt c3RhdGljIHZvaWQKPiAtaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiAtCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjdHgsCj4gLQkJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByaW5nYnVmLT5y aW5nOwo+IC0KPiAtCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+IC0KPiAt CWlmIChpbnRlbF9yaW5nX3N0b3BwZWQocmluZykpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWV4ZWNs aXN0c19jb250ZXh0X3F1ZXVlKHJpbmcsIGN0eCwgcmluZ2J1Zi0+dGFpbCwgcmVxdWVzdCk7Cj4g LX0KPiAtCj4gICBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCj4gICAJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCj4gICB7Cj4g QEAgLTkwMSwxNzkgKzEwNzQsNiBAQCBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVl c3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+ IC1zdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193YWl0X3JlcXVlc3Qoc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmdidWYsCj4gLQkJCQkgICAgIGludCBieXRlcykKPiAtewo+IC0Jc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJpbmc7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmIChpbnRlbF9yaW5n X3NwYWNlKHJpbmdidWYpID49IGJ5dGVzKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWxpc3RfZm9y X2VhY2hfZW50cnkocmVxdWVzdCwgJnJpbmctPnJlcXVlc3RfbGlzdCwgbGlzdCkgewo+IC0JCS8q Cj4gLQkJICogVGhlIHJlcXVlc3QgcXVldWUgaXMgcGVyLWVuZ2luZSwgc28gY2FuIGNvbnRhaW4g cmVxdWVzdHMKPiAtCQkgKiBmcm9tIG11bHRpcGxlIHJpbmdidWZmZXJzLiBIZXJlLCB3ZSBtdXN0 IGlnbm9yZSBhbnkgdGhhdAo+IC0JCSAqIGFyZW4ndCBmcm9tIHRoZSByaW5nYnVmZmVyIHdlJ3Jl IGNvbnNpZGVyaW5nLgo+IC0JCSAqLwo+IC0JCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHggPSBy ZXF1ZXN0LT5jdHg7Cj4gLQkJaWYgKGN0eC0+ZW5naW5lW3JpbmctPmlkXS5yaW5nYnVmICE9IHJp bmdidWYpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQkvKiBXb3VsZCBjb21wbGV0aW9uIG9mIHRo aXMgcmVxdWVzdCBmcmVlIGVub3VnaCBzcGFjZT8gKi8KPiAtCQlpZiAoX19pbnRlbF9yaW5nX3Nw YWNlKHJlcXVlc3QtPnRhaWwsIHJpbmdidWYtPnRhaWwsCj4gLQkJCQkgICAgICAgcmluZ2J1Zi0+ c2l6ZSkgPj0gYnl0ZXMpIHsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCWlmICgm cmVxdWVzdC0+bGlzdCA9PSAmcmluZy0+cmVxdWVzdF9saXN0KQo+IC0JCXJldHVybiAtRU5PU1BD Owo+IC0KPiAtCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KHJlcXVlc3QpOwo+IC0JaWYgKHJldCkK PiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHJp bmcpOwo+IC0KPiAtCXJldHVybiBpbnRlbF9yaW5nX3NwYWNlKHJpbmdidWYpID49IGJ5dGVzID8g MCA6IC1FTk9TUEM7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfZm9y X3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+IC0JCQkJICAgICAgIHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gLQkJCQkgICAgICAgaW50IGJ5dGVzKQo+IC17Cj4g LQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0JdW5zaWduZWQgbG9uZyBlbmQ7Cj4g LQlpbnQgcmV0Owo+IC0KPiAtCXJldCA9IGxvZ2ljYWxfcmluZ193YWl0X3JlcXVlc3QocmluZ2J1 ZiwgYnl0ZXMpOwo+IC0JaWYgKHJldCAhPSAtRU5PU1BDKQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ IC0JLyogRm9yY2UgdGhlIGNvbnRleHQgc3VibWlzc2lvbiBpbiBjYXNlIHdlIGhhdmUgYmVlbiBz a2lwcGluZyBpdCAqLwo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChy aW5nYnVmLCBjdHgsIE5VTEwpOwo+IC0KPiAtCS8qIFdpdGggR0VNIHRoZSBoYW5nY2hlY2sgdGlt ZXIgc2hvdWxkIGtpY2sgdXMgb3V0IG9mIHRoZSBsb29wLAo+IC0JICogbGVhdmluZyBpdCBlYXJs eSBydW5zIHRoZSByaXNrIG9mIGNvcnJ1cHRpbmcgR0VNIHN0YXRlIChkdWUKPiAtCSAqIHRvIHJ1 bm5pbmcgb24gYWxtb3N0IHVudGVzdGVkIGNvZGVwYXRocykuIEJ1dCBvbiByZXN1bWUKPiAtCSAq IHRpbWVycyBkb24ndCB3b3JrIHlldCwgc28gcHJldmVudCBhIGNvbXBsZXRlIGhhbmcgaW4gdGhh dAo+IC0JICogY2FzZSBieSBjaG9vc2luZyBhbiBpbnNhbmVseSBsYXJnZSB0aW1lb3V0LiAqLwo+ IC0JZW5kID0gamlmZmllcyArIDYwICogSFo7Cj4gLQo+IC0JcmV0ID0gMDsKPiAtCWRvIHsKPiAt CQlpZiAoaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKSA+PSBieXRlcykKPiAtCQkJYnJlYWs7Cj4g LQo+IC0JCW1zbGVlcCgxKTsKPiAtCj4gLQkJaWYgKGRldl9wcml2LT5tbS5pbnRlcnJ1cHRpYmxl ICYmIHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7Cj4gLQkJCXJldCA9IC1FUkVTVEFSVFNZUzsK PiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0KPiAtCQlyZXQgPSBpOTE1X2dlbV9jaGVja193ZWRnZSgm ZGV2X3ByaXYtPmdwdV9lcnJvciwKPiAtCQkJCQkgICBkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJs ZSk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJYnJlYWs7Cj4gLQo+IC0JCWlmICh0aW1lX2FmdGVyKGpp ZmZpZXMsIGVuZCkpIHsKPiAtCQkJcmV0ID0gLUVCVVNZOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4g LQl9IHdoaWxlICgxKTsKPiAtCj4gLQlyZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW50 IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1 ZiwKPiAtCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KQo+IC17Cj4gLQl1aW50MzJf dCBfX2lvbWVtICp2aXJ0Owo+IC0JaW50IHJlbSA9IHJpbmdidWYtPnNpemUgLSByaW5nYnVmLT50 YWlsOwo+IC0KPiAtCWlmIChyaW5nYnVmLT5zcGFjZSA8IHJlbSkgewo+IC0JCWludCByZXQgPSBs b2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1ZiwgY3R4LCByZW0pOwo+IC0KPiAtCQlp ZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiAtCXZpcnQgPSByaW5nYnVmLT52 aXJ0dWFsX3N0YXJ0ICsgcmluZ2J1Zi0+dGFpbDsKPiAtCXJlbSAvPSA0Owo+IC0Jd2hpbGUgKHJl bS0tKQo+IC0JCWlvd3JpdGUzMihNSV9OT09QLCB2aXJ0KyspOwo+IC0KPiAtCXJpbmdidWYtPnRh aWwgPSAwOwo+IC0JaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZ2J1Zik7Cj4gLQo+IC0JcmV0 dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3ByZXBhcmUoc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4gLQkJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4LCBpbnQgYnl0ZXMpCj4gLXsKPiAtCWludCByZXQ7Cj4gLQo+IC0JaWYgKHVubGlrZWx5KHJp bmdidWYtPnRhaWwgKyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplKSkgewo+IC0JCXJl dCA9IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihyaW5nYnVmLCBjdHgpOwo+IC0JCWlmICh1bmxp a2VseShyZXQpKQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiAtCWlmICh1bmxpa2VseShy aW5nYnVmLT5zcGFjZSA8IGJ5dGVzKSkgewo+IC0JCXJldCA9IGxvZ2ljYWxfcmluZ193YWl0X2Zv cl9zcGFjZShyaW5nYnVmLCBjdHgsIGJ5dGVzKTsKPiAtCQlpZiAodW5saWtlbHkocmV0KSkKPiAt CQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtLyoqCj4g LSAqIGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbigpIC0gcHJlcGFyZSB0aGUgbG9naWNhbCByaW5n YnVmZmVyIHRvIGFjY2VwdCBzb21lIGNvbW1hbmRzCj4gLSAqCj4gLSAqIEByaW5nYnVmOiBMb2dp Y2FsIHJpbmdidWZmZXIuCj4gLSAqIEBudW1fZHdvcmRzOiBudW1iZXIgb2YgRFdPUkRzIHRoYXQg d2UgcGxhbiB0byB3cml0ZSB0byB0aGUgcmluZ2J1ZmZlci4KPiAtICoKPiAtICogVGhlIHJpbmdi dWZmZXIgbWlnaHQgbm90IGJlIHJlYWR5IHRvIGFjY2VwdCB0aGUgY29tbWFuZHMgcmlnaHQgYXdh eSAobWF5YmUgaXQgbmVlZHMgdG8KPiAtICogYmUgd3JhcHBlZCwgb3Igd2FpdCBhIGJpdCBmb3Ig dGhlIHRhaWwgdG8gYmUgdXBkYXRlZCkuIFRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiB0aGF0 Cj4gLSAqIGFuZCBhbHNvIHByZWFsbG9jYXRlcyBhIHJlcXVlc3QgKGV2ZXJ5IHdvcmtsb2FkIHN1 Ym1pc3Npb24gaXMgc3RpbGwgbWVkaWF0ZWQgdGhyb3VnaAo+IC0gKiByZXF1ZXN0cywgc2FtZSBh cyBpdCBkaWQgd2l0aCBsZWdhY3kgcmluZ2J1ZmZlciBzdWJtaXNzaW9uKS4KPiAtICoKPiAtICog UmV0dXJuOiBub24temVybyBpZiB0aGUgcmluZ2J1ZmZlciBpcyBub3QgcmVhZHkgdG8gYmUgd3Jp dHRlbiB0by4KPiAtICovCj4gLWludCBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4oc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4gLQkJCSAgICAgc3RydWN0IGludGVsX2NvbnRleHQg KmN0eCwgaW50IG51bV9kd29yZHMpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxOwo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJpbmc7 Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWludCByZXQ7Cj4g LQo+IC0JcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3IsCj4g LQkJCQkgICBkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZSk7Cj4gLQlpZiAocmV0KQo+IC0JCXJl dHVybiByZXQ7Cj4gLQo+IC0JcmV0ID0gbG9naWNhbF9yaW5nX3ByZXBhcmUocmluZ2J1ZiwgY3R4 LCBudW1fZHdvcmRzICogc2l6ZW9mKHVpbnQzMl90KSk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVy biByZXQ7Cj4gLQo+IC0JLyogUHJlYWxsb2NhdGUgdGhlIG9sciBiZWZvcmUgdG91Y2hpbmcgdGhl IHJpbmcgKi8KPiAtCXJldCA9IGludGVsX2xvZ2ljYWxfcmluZ19hbGxvY19yZXF1ZXN0KHJpbmcs IGN0eCwgJnJlcSk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JcmluZ2J1 Zi0+c3BhY2UgLT0gbnVtX2R3b3JkcyAqIHNpemVvZih1aW50MzJfdCk7Cj4gLQlyZXR1cm4gMDsK PiAtfQo+IC0KPiAgIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX3dvcmthcm91bmRzX2Vt aXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gICAJaW50IHJldCwg aTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+IGluZGV4IDQwODQ4YjAuLmRjZWVjYzYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+IEBAIC02NSw5ICs2NSw2IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZiwKPiAgIAlpb3dyaXRlMzIoZGF0YSwgcmluZ2J1Zi0+dmlydHVhbF9zdGFydCAr IHJpbmdidWYtPnRhaWwpOwo+ICAgCXJpbmdidWYtPnRhaWwgKz0gNDsKPiAgIH0KPiAtaW50IGlu dGVsX2xvZ2ljYWxfcmluZ19iZWdpbihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwK PiAtCQkJICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+IC0JCQkgICAgIGludCBudW1f ZHdvcmRzKTsKPgo+ICAgLyogTG9naWNhbCBSaW5nIENvbnRleHRzICovCj4gICB2b2lkIGludGVs X2xyX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKPgoKUmV2aWV3ZWQt Ynk6IFRvbWFzIEVsZiA8dG9tYXMuZWxmQGludGVsLmNvbT4KClRoYW5rcywKVG9tYXMKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK