From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 02/55] drm/i915: Reserve ring buffer space for i915_add_request() commands Date: Mon, 22 Jun 2015 22:12:33 +0200 Message-ID: <20150622201233.GK25769@phenom.ffwll.local> References: <1432917856-12261-3-git-send-email-John.C.Harrison@Intel.com> <1434731652-15672-1-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 mail-wg0-f47.google.com (mail-wg0-f47.google.com [74.125.82.47]) by gabe.freedesktop.org (Postfix) with ESMTP id 161746E097 for ; Mon, 22 Jun 2015 13:09:47 -0700 (PDT) Received: by wguu7 with SMTP id u7so78665267wgu.3 for ; Mon, 22 Jun 2015 13:09:46 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1434731652-15672-1-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 Cc: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMDU6MzQ6MTJQTSArMDEwMCwgSm9obi5DLkhhcnJpc29u QEludGVsLmNvbSB3cm90ZToKPiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25A SW50ZWwuY29tPgo+IAo+IEl0IGlzIGEgYmFkIGlkZWEgZm9yIGk5MTVfYWRkX3JlcXVlc3QoKSB0 byBmYWlsLiBUaGUgd29yayB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuCj4gc2VuZCB0byB0aGUgcmlu ZyBhbmQgd2lsbCBiZSBwcm9jZXNzZWQsIGJ1dCB0aGVyZSB3aWxsIG5vdCBiZSBhbnkgdHJhY2tp bmcgb3IKPiBtYW5hZ2VtZW50IG9mIHRoYXQgd29yay4KPiAKPiBUaGUgb25seSB3YXkgdGhlIGFk ZCByZXF1ZXN0IGNhbGwgY2FuIGZhaWwgaXMgaWYgaXQgY2FuJ3Qgd3JpdGUgaXRzIGVwaWxvZ3Vl Cj4gY29tbWFuZHMgdG8gdGhlIHJpbmcgKGNhY2hlIGZsdXNoaW5nLCBzZXFubyB1cGRhdGVzLCBp bnRlcnJ1cHQgc2lnbmFsbGluZykuIFRoZQo+IHJlYXNvbnMgZm9yIHRoYXQgYXJlIG1vc3RseSBk b3duIHRvIHJ1bm5pbmcgb3V0IG9mIHJpbmcgYnVmZmVyIHNwYWNlIGFuZCB0aGUKPiBwcm9ibGVt cyBhc3NvY2lhdGVkIHdpdGggdHJ5aW5nIHRvIGdldCBzb21lIG1vcmUuIFRoaXMgcGF0Y2ggcHJl dmVudHMgdGhhdAo+IHNpdHVhdGlvbiBmcm9tIGhhcHBlbmluZyBpbiB0aGUgZmlyc3QgcGxhY2Uu Cj4gCj4gV2hlbiBhIHJlcXVlc3QgaXMgY3JlYXRlZCwgaXQgbWFya3Mgc3VmZmljaWVudCBzcGFj ZSBhcyByZXNlcnZlZCBmb3IgdGhlCj4gZXBpbG9ndWUgY29tbWFuZHMuIFRodXMgZ3VhcmFudGVl aW5nIHRoYXQgYnkgdGhlIHRpbWUgdGhlIGVwaWxvZ3VlIGlzIHdyaXR0ZW4sCj4gdGhlcmUgd2ls bCBiZSBwbGVudHkgb2Ygc3BhY2UgZm9yIGl0LiBOb3RlIHRoYXQgYSByaW5nX2JlZ2luKCkgY2Fs bCBpcyByZXF1aXJlZAo+IHRvIGFjdHVhbGx5IHJlc2VydmUgdGhlIHNwYWNlIChhbmQgZG8gYW55 IHBvdGVudGlhbCB3YWl0aW5nKS4gSG93ZXZlciwgdGhhdCBpcwo+IG5vdCBjdXJyZW50bHkgZG9u ZSBhdCByZXF1ZXN0IGNyZWF0aW9uIHRpbWUuIFRoaXMgaXMgYmVjYXVzZSB0aGUgcmluZ19iZWdp bigpCj4gY29kZSBjYW4gYWxsb2NhdGUgYSByZXF1ZXN0LiBIZW5jZSBjYWxsaW5nIGJlZ2luKCkg ZnJvbSB0aGUgcmVxdWVzdCBhbGxvY2F0aW9uCj4gY29kZSB3b3VsZCBsZWFkIHRvIGluZmluaXRl IHJlY3Vyc2lvbiEgTGF0ZXIgcGF0Y2hlcyBpbiB0aGlzIHNlcmllcyByZW1vdmUgdGhlCj4gbmVl ZCBmb3IgYmVnaW4oKSB0byBkbyB0aGUgYWxsb2NhdGUuIEF0IHRoYXQgcG9pbnQsIGl0IGJlY29t ZXMgc2FmZSBmb3IgdGhlCj4gYWxsb2NhdGUgdG8gY2FsbCBiZWdpbigpIGFuZCByZWFsbHkgcmVz ZXJ2ZSB0aGUgc3BhY2UuCj4gCj4gVW50aWwgdGhlbiwgdGhlcmUgaXMgYSBwb3RlbnRpYWwgZm9y IGluc3VmZmljaWVudCBzcGFjZSB0byBiZSBhdmFpbGFibGUgYXQgdGhlCj4gcG9pbnQgb2YgY2Fs bGluZyBpOTE1X2FkZF9yZXF1ZXN0KCkuIEhvd2V2ZXIsIHRoYXQgd291bGQgb25seSBiZSBpbiB0 aGUgY2FzZQo+IHdoZXJlIHRoZSByZXF1ZXN0IHdhcyBjcmVhdGVkIGFuZCBpbW1lZGlhdGVseSBz dWJtaXR0ZWQgd2l0aG91dCBldmVyIGNhbGxpbmcKPiByaW5nX2JlZ2luKCkgYW5kIGFkZGluZyBh bnkgd29yayB0byB0aGF0IHJlcXVlc3QuIFdoaWNoIHNob3VsZCBuZXZlciBoYXBwZW4uIEFuZAo+ IGV2ZW4gaWYgaXQgZG9lcywgYW5kIGlmIHRoYXQgcmVxdWVzdCBoYXBwZW5zIHRvIGZhbGwgZG93 biB0aGUgdGlueSB3aW5kb3cgb2YKPiBvcHBvcnR1bml0eSBmb3IgZmFpbGluZyBkdWUgdG8gYmVp bmcgb3V0IG9mIHJpbmcgc3BhY2UgdGhlbiBkb2VzIGl0IHJlYWxseQo+IG1hdHRlciBiZWNhdXNl IHRoZSByZXF1ZXN0IHdhc24ndCBkb2luZyBhbnl0aGluZyBpbiB0aGUgZmlyc3QgcGxhY2U/Cj4g Cj4gdjI6IFVwZGF0ZWQgdGhlICdyZXNlcnZlZCBzcGFjZSB0b28gc21hbGwnIHdhcm5pbmcgdG8g aW5jbHVkZSB0aGUgb2ZmZW5kaW5nCj4gc2l6ZXMuIEFkZGVkIGEgJ2NhbmNlbCcgb3BlcmF0aW9u IHRvIGNsZWFuIHVwIHdoZW4gYSByZXF1ZXN0IGlzIGFiYW5kb25lZC4gQWRkZWQKPiByZS1pbml0 aWFsaXNhdGlvbiBvZiB0cmFja2luZyBzdGF0ZSBhZnRlciBhIGJ1ZmZlciB3cmFwIHRvIGtlZXAg dGhlIHNhbml0eQo+IGNoZWNrcyBhY2N1cmF0ZS4KPiAKPiB2MzogSW5jcmVtZW50ZWQgdGhlIHJl c2VydmVkIHNpemUgdG8gYWNjb21tb2RhdGUgSXJvbmxha2UgKGFmdGVyIGZpbmFsbHkKPiBtYW5h Z2luZyB0byBydW4gb24gYW4gSUxLIHN5c3RlbSkuIEFsc28gZml4ZWQgbWlzc2luZyB3cmFwIGNv ZGUgaW4gTFJDIG1vZGUuCj4gCj4gdjQ6IEFkZGVkIGV4dHJhIGNvbW1lbnQgYW5kIHJlbW92ZWQg ZHVwbGljYXRlIFdBUk4gKGZlZWRiYWNrIGZyb20gVG9tYXMpLgo+IAo+IHY1OiBSZS13cml0ZSBv ZiB3cmFwIGhhbmRsaW5nIHRvIHByZXZlbnQgdW5uZWNlc3NhcnkgZWFybHkgd3JhcHMgKGZlZWRi YWNrIGZyb20KPiBEYW5pZWwgVmV0dGVyKS4KClRoaXMgZGlkbid0IGFjdHVhbGx5IGltcGxlbWVu dCB3aGF0IEkgc3VnZ2VzdGVkICh3cmFwcGluZyBpcyB0aGUgd29yc3QKY2FzZSwgaGVuY2Ugc2tp cHBpbmcgdGhlIGNoZWNrIGZvciB0aGF0IGlzIGJyZWFraW5nIHRoZSBzYW5pdHkgY2hlY2spIGFu ZApzbyBjaGFuZ2VkIHRoZSBwYXRjaCBmcm9tICJjb3JyZWN0LCBidXQgYSBiaXQgZnJhZ2lsZSIg dG8gYnJva2VuLiBJJ3ZlCm1lcmdlZCB0aGUgcHJldmlvdXMgdmVyc2lvbiBpbnN0ZWFkLgotRGFu aWVsCgo+IAo+IEZvcjogVklaLTUxMTUKPiBDQzogVG9tYXMgRWxmIDx0b21hcy5lbGZAaW50ZWwu Y29tPgo+IENDOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4gU2lnbmVkLW9mZi1i eTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAgMSArCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8ICAgMzcgKysrKysrKysrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAgMzUgKysrKysrKysrLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgICA5OCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaCB8ICAgMjUgKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCAxODYgaW5zZXJ0 aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5k ZXggMDM0N2ViOS4uZWJhMTg1NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0y MTg3LDYgKzIxODcsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewo+ICAKPiAgaW50 IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAg CQkJICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cj4gK3ZvaWQgaTkxNV9nZW1fcmVxdWVz dF9jYW5jZWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+ICB2b2lkIGk5MTVf Z2VtX3JlcXVlc3RfZnJlZShzdHJ1Y3Qga3JlZiAqcmVxX3JlZik7Cj4gIAo+ICBzdGF0aWMgaW5s aW5lIHVpbnQzMl90Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggODFmMzUxMi4uODVm YTI3YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0yNDg1LDYgKzI0ODUsMTMg QEAgaW50IF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ ICAJfSBlbHNlCj4gIAkJcmluZ2J1ZiA9IHJpbmctPmJ1ZmZlcjsKPiAgCj4gKwkvKgo+ICsJICog VG8gZW5zdXJlIHRoYXQgdGhpcyBjYWxsIHdpbGwgbm90IGZhaWwsIHNwYWNlIGZvciBpdHMgZW1p c3Npb25zCj4gKwkgKiBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gcmVzZXJ2ZWQgaW4gdGhlIHJp bmcgYnVmZmVyLiBMZXQgdGhlIHJpbmcKPiArCSAqIGtub3cgdGhhdCBpdCBpcyB0aW1lIHRvIHVz ZSB0aGF0IHNwYWNlIHVwLgo+ICsJICovCj4gKwlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Vz ZShyaW5nYnVmKTsKPiArCj4gIAlyZXF1ZXN0X3N0YXJ0ID0gaW50ZWxfcmluZ19nZXRfdGFpbChy aW5nYnVmKTsKPiAgCS8qCj4gIAkgKiBFbWl0IGFueSBvdXRzdGFuZGluZyBmbHVzaGVzIC0gZXhl Y2J1ZiBjYW4gZmFpbCB0byBlbWl0IHRoZSBmbHVzaAo+IEBAIC0yNTY3LDYgKzI1NzQsOSBAQCBp bnQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gIAkJ CSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKPiAgCWludGVsX21hcmtfYnVzeShk ZXZfcHJpdi0+ZGV2KTsKPiAgCj4gKwkvKiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVzZXJ2ZWQg c2l6ZSB3YXMgbGFyZ2UgZW5vdWdoLiAqLwo+ICsJaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9l bmQocmluZ2J1Zik7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTI2NjYsNiArMjY3 NiwyNiBAQCBpbnQgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nLAo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGVycjsKPiAgCj4gKwkvKgo+ICsJICogUmVz ZXJ2ZSBzcGFjZSBpbiB0aGUgcmluZyBidWZmZXIgZm9yIGFsbCB0aGUgY29tbWFuZHMgcmVxdWly ZWQgdG8KPiArCSAqIGV2ZW50dWFsbHkgZW1pdCB0aGlzIHJlcXVlc3QuIFRoaXMgaXMgdG8gZ3Vh cmFudGVlIHRoYXQgdGhlCj4gKwkgKiBpOTE1X2FkZF9yZXF1ZXN0KCkgY2FsbCBjYW4ndCBmYWls LiBOb3RlIHRoYXQgdGhlIHJlc2VydmUgbWF5IG5lZWQKPiArCSAqIHRvIGJlIHJlZG9uZSBpZiB0 aGUgcmVxdWVzdCBpcyBub3QgYWN0dWFsbHkgc3VibWl0dGVkIHN0cmFpZ2h0Cj4gKwkgKiBhd2F5 LCBlLmcuIGJlY2F1c2UgYSBHUFUgc2NoZWR1bGVyIGhhcyBkZWZlcnJlZCBpdC4KPiArCSAqCj4g KwkgKiBOb3RlIGZ1cnRoZXIgdGhhdCB0aGlzIGNhbGwgbWVyZWx5IG5vdGVzIHRoZSByZXNlcnZl IHJlcXVlc3QuIEEKPiArCSAqIHN1YnNlcXVlbnQgY2FsbCB0byAqX3JpbmdfYmVnaW4oKSBpcyBy ZXF1aXJlZCB0byBhY3R1YWxseSBlbnN1cmUKPiArCSAqIHRoYXQgdGhlIHJlc2VydmF0aW9uIGlz IGF2YWlsYWJsZS4gV2l0aG91dCB0aGUgYmVnaW4sIGlmIHRoZQo+ICsJICogcmVxdWVzdCBjcmVh dG9yIGltbWVkaWF0ZWx5IHN1Ym1pdHRlZCB0aGUgcmVxdWVzdCB3aXRob3V0IGFkZGluZwo+ICsJ ICogYW55IGNvbW1hbmRzIHRvIGl0IHRoZW4gdGhlcmUgbWlnaHQgbm90IGFjdHVhbGx5IGJlIHN1 ZmZpY2llbnQKPiArCSAqIHJvb20gZm9yIHRoZSBzdWJtaXNzaW9uIGNvbW1hbmRzLiBVbmZvcnR1 bmF0ZWx5LCB0aGUgY3VycmVudAo+ICsJICogKl9yaW5nX2JlZ2luKCkgaW1wbGVtZW50YXRpb25z IHBvdGVudGlhbGx5IGNhbGwgYmFjayBoZXJlIHRvCj4gKwkgKiBpOTE1X2dlbV9yZXF1ZXN0X2Fs bG9jKCkuIFRodXMgY2FsbGluZyBfYmVnaW4oKSBoZXJlIHdvdWxkIGxlYWQgdG8KPiArCSAqIGlu ZmluaXRlIHJlY3Vyc2lvbiEgVW50aWwgdGhhdCBiYWNrIGNhbGwgcGF0aCBpcyByZW1vdmVkLCBp dCBpcwo+ICsJICogbmVjZXNzYXJ5IHRvIGRvIGEgbWFudWFsIF9iZWdpbigpIG91dHNpZGUuCj4g KwkgKi8KPiArCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShyZXEtPnJpbmdidWYs IE1JTl9TUEFDRV9GT1JfQUREX1JFUVVFU1QpOwo+ICsKPiAgCXJpbmctPm91dHN0YW5kaW5nX2xh enlfcmVxdWVzdCA9IHJlcTsKPiAgCXJldHVybiAwOwo+ICAKPiBAQCAtMjY3NCw2ICsyNzA0LDEz IEBAIGVycjoKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gK3ZvaWQgaTkxNV9nZW1fcmVxdWVz dF9jYW5jZWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gK3sKPiArCWludGVs X3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHJlcS0+cmluZ2J1Zik7Cj4gKwo+ICsJaTkxNV9n ZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ICt9Cj4gKwo+ICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKgo+ICBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcpCj4gIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4 IDZhNWVkMDcuLmJkNjJiZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC02 OTAsNiArNjkwLDkgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2Uoc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4gIAlpZiAoaW50ZWxfcmluZ19zcGFjZShy aW5nYnVmKSA+PSBieXRlcykKPiAgCQlyZXR1cm4gMDsKPiAgCj4gKwkvKiBUaGUgd2hvbGUgcG9p bnQgb2YgcmVzZXJ2aW5nIHNwYWNlIGlzIHRvIG5vdCB3YWl0ISAqLwo+ICsJV0FSTl9PTihyaW5n YnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+ICsKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVz dCwgJnJpbmctPnJlcXVlc3RfbGlzdCwgbGlzdCkgewo+ICAJCS8qCj4gIAkJICogVGhlIHJlcXVl c3QgcXVldWUgaXMgcGVyLWVuZ2luZSwgc28gY2FuIGNvbnRhaW4gcmVxdWVzdHMKPiBAQCAtNzQ4 LDggKzc1MSwxMiBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiAgCWludCByZW0gPSByaW5nYnVmLT5zaXplIC0g cmluZ2J1Zi0+dGFpbDsKPiAgCj4gIAlpZiAocmluZ2J1Zi0+c3BhY2UgPCByZW0pIHsKPiAtCQlp bnQgcmV0ID0gbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHJpbmdidWYsIGN0eCwgcmVtKTsK PiArCQlpbnQgcmV0Owo+ICsKPiArCQkvKiBDYW4ndCB3YWl0IGlmIHNwYWNlIGhhcyBhbHJlYWR5 IGJlZW4gcmVzZXJ2ZWQhICovCj4gKwkJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2Up Owo+ICAKPiArCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1ZiwgY3R4 LCByZW0pOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4gIAl9Cj4gQEAgLTc2OCw3 ICs3NzUsNyBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiAgc3RhdGljIGludCBsb2dpY2FsX3JpbmdfcHJlcGFy ZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiAgCQkJCXN0cnVjdCBpbnRlbF9j b250ZXh0ICpjdHgsIGludCBieXRlcykKPiAgewo+IC0JaW50IHJldDsKPiArCWludCByZXQsIG1h eF9ieXRlczsKPiAgCj4gIAlpZiAodW5saWtlbHkocmluZ2J1Zi0+dGFpbCArIGJ5dGVzID4gcmlu Z2J1Zi0+ZWZmZWN0aXZlX3NpemUpKSB7Cj4gIAkJcmV0ID0gbG9naWNhbF9yaW5nX3dyYXBfYnVm ZmVyKHJpbmdidWYsIGN0eCk7Cj4gQEAgLTc3Niw4ICs3ODMsMjggQEAgc3RhdGljIGludCBsb2dp Y2FsX3JpbmdfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiAgCQkJ cmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gLQlpZiAodW5saWtlbHkocmluZ2J1Zi0+c3BhY2UgPCBi eXRlcykpIHsKPiAtCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1Ziwg Y3R4LCBieXRlcyk7Cj4gKwkvKgo+ICsJICogQWRkIG9uIHRoZSByZXNlcnZlZCBzaXplIHRvIHRo ZSByZXF1ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGFmdGVyCj4gKwkgKiB0aGUgaW50ZW5kZWQgY29t bWFuZHMgaGF2ZSBiZWVuIGVtaXR0ZWQsIHRoZXJlIGlzIGd1YXJhbnRlZWQgdG8KPiArCSAqIHN0 aWxsIGJlIGVub3VnaCBmcmVlIHNwYWNlIHRvIHNlbmQgdGhlbSB0byB0aGUgaGFyZHdhcmUuCj4g KwkgKi8KPiArCW1heF9ieXRlcyA9IGJ5dGVzICsgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKPiAr Cj4gKwlpZiAodW5saWtlbHkocmluZ2J1Zi0+c3BhY2UgPCBtYXhfYnl0ZXMpKSB7Cj4gKwkJLyoK PiArCQkgKiBCeXRlcyBpcyBndWFyYW50ZWVkIHRvIGZpdCB3aXRoaW4gdGhlIHRhaWwgb2YgdGhl IGJ1ZmZlciwKPiArCQkgKiBidXQgdGhlIHJlc2VydmVkIHNwYWNlIG1heSBwdXNoIGl0IG9mZiB0 aGUgZW5kLiBJZiBzbyB0aGVuCj4gKwkJICogbmVlZCB0byB3YWl0IGZvciB0aGUgd2hvbGUgb2Yg dGhlIHRhaWwgcGx1cyB0aGUgcmVzZXJ2ZWQKPiArCQkgKiBzaXplLiBUaGF0IHNob3VsZCBndWFy YW50ZWUgdGhhdCB0aGUgYWN0dWFsIHJlcXVlc3QKPiArCQkgKiAoYnl0ZXMpIHdpbGwgZml0IGJl dHdlZW4gaGVyZSBhbmQgdGhlIGVuZCBhbmQgdGhlIHJlc2VydmVkCj4gKwkJICogdXNhZ2Ugd2ls bCBmaXQgZWl0aGVyIGluIHRoZSBzYW1lIG9yIGF0IHRoZSBzdGFydC4gRWl0aGVyCj4gKwkJICog d2F5LCBpZiBhIHdyYXAgb2NjdXJzIGl0IHdpbGwgbm90IGludm9sdmUgYSB3YWl0IGFuZCB0aHVz Cj4gKwkJICogY2Fubm90IGZhaWwuCj4gKwkJICovCj4gKwkJaWYgKHVubGlrZWx5KHJpbmdidWYt PnRhaWwgKyBtYXhfYnl0ZXMgKyBJOTE1X1JJTkdfRlJFRV9TUEFDRSA+IHJpbmdidWYtPmVmZmVj dGl2ZV9zaXplKSkKPiArCQkJbWF4X2J5dGVzID0gcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSArIEk5 MTVfUklOR19GUkVFX1NQQUNFICsgcmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4gKwo+ ICsJCXJldCA9IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShyaW5nYnVmLCBjdHgsIG1heF9i eXRlcyk7Cj4gIAkJaWYgKHVubGlrZWx5KHJldCkpCj4gIAkJCXJldHVybiByZXQ7Cj4gIAl9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGQ5MzRmODUuLjFj MTI1ZTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAg LTIxMDYsNiArMjEwNiw5IEBAIHN0YXRpYyBpbnQgcmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQgbikKPiAgCWlmIChpbnRlbF9yaW5nX3NwYWNlKHJp bmdidWYpID49IG4pCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICsJLyogVGhlIHdob2xlIHBvaW50IG9m IHJlc2VydmluZyBzcGFjZSBpcyB0byBub3Qgd2FpdCEgKi8KPiArCVdBUk5fT04ocmluZ2J1Zi0+ cmVzZXJ2ZWRfaW5fdXNlKTsKPiArCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZy aW5nLT5yZXF1ZXN0X2xpc3QsIGxpc3QpIHsKPiAgCQlzcGFjZSA9IF9faW50ZWxfcmluZ19zcGFj ZShyZXF1ZXN0LT5wb3N0Zml4LCByaW5nYnVmLT50YWlsLAo+ICAJCQkJCSAgIHJpbmdidWYtPnNp emUpOwo+IEBAIC0yMTMxLDcgKzIxMzQsMTIgQEAgc3RhdGljIGludCBpbnRlbF93cmFwX3Jpbmdf YnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gIAlpbnQgcmVtID0gcmluZ2J1 Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4gIAo+ICAJaWYgKHJpbmdidWYtPnNwYWNlIDwgcmVt KSB7Cj4gLQkJaW50IHJldCA9IHJpbmdfd2FpdF9mb3Jfc3BhY2UocmluZywgcmVtKTsKPiArCQlp bnQgcmV0Owo+ICsKPiArCQkvKiBDYW4ndCB3YWl0IGlmIHNwYWNlIGhhcyBhbHJlYWR5IGJlZW4g cmVzZXJ2ZWQhICovCj4gKwkJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+ICsK PiArCQlyZXQgPSByaW5nX3dhaXRfZm9yX3NwYWNlKHJpbmcsIHJlbSk7Cj4gIAkJaWYgKHJldCkK PiAgCQkJcmV0dXJuIHJldDsKPiAgCX0KPiBAQCAtMjE4MCwxMSArMjE4OCw2OSBAQCBpbnQgaW50 ZWxfcmluZ19hbGxvY19yZXF1ZXN0X2V4dHJhcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBfX2ludGVsX3Jp bmdfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+IC0JCQkJaW50IGJ5dGVz KQo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZiwgaW50IHNpemUpCj4gK3sKPiArCS8qIE5COiBVbnRpbCByZXF1 ZXN0IG1hbmFnZW1lbnQgaXMgZnVsbHkgdGlkaWVkIHVwIGFuZCB0aGUgT0xSIGlzCj4gKwkgKiBy ZW1vdmVkLCB0aGVyZSBhcmUgdG9vIG1hbnkgd2F5cyBmb3IgZ2V0IGZhbHNlIGhpdHMgb24gdGhp cwo+ICsJICogYW50aS1yZWN1cnNpb24gY2hlY2shICovCj4gKwkvKldBUk5fT04ocmluZ2J1Zi0+ cmVzZXJ2ZWRfc2l6ZSk7Ki8KPiArCVdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsK PiArCj4gKwlyaW5nYnVmLT5yZXNlcnZlZF9zaXplID0gc2l6ZTsKPiArCj4gKwkvKgo+ICsJICog UmVhbGx5IG5lZWQgdG8gY2FsbCBfYmVnaW4oKSBoZXJlIGJ1dCB0aGF0IGN1cnJlbnRseSBsZWFk cyB0bwo+ICsJICogcmVjdXJzaW9uIHByb2JsZW1zISBUaGlzIHdpbGwgYmUgZml4ZWQgbGF0ZXIg YnV0IGZvciBub3cganVzdAo+ICsJICogcmV0dXJuIGFuZCBob3BlIGZvciB0aGUgYmVzdC4gTm90 ZSB0aGF0IHRoZXJlIGlzIG9ubHkgYSByZWFsCj4gKwkgKiBwcm9ibGVtIGlmIHRoZSBjcmVhdGUg b2YgdGhlIHJlcXVlc3QgbmV2ZXIgYWN0dWFsbHkgY2FsbHMgX2JlZ2luKCkKPiArCSAqIGJ1dCBp ZiB0aGV5IGFyZSBub3Qgc3VibWl0dGluZyBhbnkgd29yayB0aGVuIHdoeSBkaWQgdGhleSBjcmVh dGUKPiArCSAqIHRoZSByZXF1ZXN0IGluIHRoZSBmaXJzdCBwbGFjZT8KPiArCSAqLwo+ICt9Cj4g Kwo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nYnVmKQo+ICt7Cj4gKwlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2lu X3VzZSk7Cj4gKwo+ICsJcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSAgID0gMDsKPiArCXJpbmdidWYt PnJlc2VydmVkX2luX3VzZSA9IGZhbHNlOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX3JpbmdfcmVz ZXJ2ZWRfc3BhY2VfdXNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ICt7Cj4g KwlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gKwo+ICsJcmluZ2J1Zi0+cmVz ZXJ2ZWRfaW5fdXNlID0gdHJ1ZTsKPiArCXJpbmdidWYtPnJlc2VydmVkX3RhaWwgICA9IHJpbmdi dWYtPnRhaWw7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9lbmQo c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gK3sKPiArCVdBUk5fT04oIXJpbmdi dWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gKwlpZiAocmluZ2J1Zi0+dGFpbCA+IHJpbmdidWYtPnJl c2VydmVkX3RhaWwpIHsKPiArCQlXQVJOKHJpbmdidWYtPnRhaWwgPiByaW5nYnVmLT5yZXNlcnZl ZF90YWlsICsgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSwKPiArCQkgICAgICJyZXF1ZXN0IHJlc2Vy dmVkIHNpemUgdG9vIHNtYWxsOiAlZCB2cyAlZCFcbiIsCj4gKwkJICAgICByaW5nYnVmLT50YWls IC0gcmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbCwgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSk7Cj4gKwl9 IGVsc2Ugewo+ICsJCS8qCj4gKwkJICogVGhlIHJpbmcgd2FzIHdyYXBwZWQgd2hpbGUgdGhlIHJl c2VydmVkIHNwYWNlIHdhcyBpbiB1c2UuCj4gKwkJICogVGhhdCBtZWFucyB0aGF0IHNvbWUgdW5r bm93biBhbW91bnQgb2YgdGhlIHJpbmcgdGFpbCB3YXMKPiArCQkgKiBuby1vcCBmaWxsZWQgYW5k IHNraXBwZWQuIFRodXMgc2ltcGx5IGFkZGluZyB0aGUgcmluZyBzaXplCj4gKwkJICogdG8gdGhl IHRhaWwgYW5kIGRvaW5nIHRoZSBhYm92ZSBzcGFjZSBjaGVjayB3aWxsIG5vdCB3b3JrLgo+ICsJ CSAqIFJhdGhlciB0aGFuIGF0dGVtcHQgdG8gdHJhY2sgaG93IG11Y2ggdGFpbCB3YXMgc2tpcHBl ZCwKPiArCQkgKiBpdCBpcyBtdWNoIHNpbXBsZXIgdG8gc2F5IHRoYXQgYWxzbyBza2lwcGluZyB0 aGUgc2FuaXR5Cj4gKwkJICogY2hlY2sgZXZlcnkgb25jZSBpbiBhIHdoaWxlIGlzIG5vdCBhIGJp ZyBpc3N1ZS4KPiArCQkgKi8KPiArCX0KPiArCj4gKwlyaW5nYnVmLT5yZXNlcnZlZF9zaXplICAg PSAwOwo+ICsJcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlID0gZmFsc2U7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgX19pbnRlbF9yaW5nX3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywgaW50IGJ5dGVzKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9 IHJpbmctPmJ1ZmZlcjsKPiAtCWludCByZXQ7Cj4gKwlpbnQgcmV0LCBtYXhfYnl0ZXM7Cj4gIAo+ ICAJaWYgKHVubGlrZWx5KHJpbmdidWYtPnRhaWwgKyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2 ZV9zaXplKSkgewo+ICAJCXJldCA9IGludGVsX3dyYXBfcmluZ19idWZmZXIocmluZyk7Cj4gQEAg LTIxOTIsOCArMjI1OCwyOCBAQCBzdGF0aWMgaW50IF9faW50ZWxfcmluZ19wcmVwYXJlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gIAkJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+IC0J aWYgKHVubGlrZWx5KHJpbmdidWYtPnNwYWNlIDwgYnl0ZXMpKSB7Cj4gLQkJcmV0ID0gcmluZ193 YWl0X2Zvcl9zcGFjZShyaW5nLCBieXRlcyk7Cj4gKwkvKgo+ICsJICogQWRkIG9uIHRoZSByZXNl cnZlZCBzaXplIHRvIHRoZSByZXF1ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGFmdGVyCj4gKwkgKiB0 aGUgaW50ZW5kZWQgY29tbWFuZHMgaGF2ZSBiZWVuIGVtaXR0ZWQsIHRoZXJlIGlzIGd1YXJhbnRl ZWQgdG8KPiArCSAqIHN0aWxsIGJlIGVub3VnaCBmcmVlIHNwYWNlIHRvIHNlbmQgdGhlbSB0byB0 aGUgaGFyZHdhcmUuCj4gKwkgKi8KPiArCW1heF9ieXRlcyA9IGJ5dGVzICsgcmluZ2J1Zi0+cmVz ZXJ2ZWRfc2l6ZTsKPiArCj4gKwlpZiAodW5saWtlbHkocmluZ2J1Zi0+c3BhY2UgPCBtYXhfYnl0 ZXMpKSB7Cj4gKwkJLyoKPiArCQkgKiBCeXRlcyBpcyBndWFyYW50ZWVkIHRvIGZpdCB3aXRoaW4g dGhlIHRhaWwgb2YgdGhlIGJ1ZmZlciwKPiArCQkgKiBidXQgdGhlIHJlc2VydmVkIHNwYWNlIG1h eSBwdXNoIGl0IG9mZiB0aGUgZW5kLiBJZiBzbyB0aGVuCj4gKwkJICogbmVlZCB0byB3YWl0IGZv ciB0aGUgd2hvbGUgb2YgdGhlIHRhaWwgcGx1cyB0aGUgcmVzZXJ2ZWQKPiArCQkgKiBzaXplLiBU aGF0IHNob3VsZCBndWFyYW50ZWUgdGhhdCB0aGUgYWN0dWFsIHJlcXVlc3QKPiArCQkgKiAoYnl0 ZXMpIHdpbGwgZml0IGJldHdlZW4gaGVyZSBhbmQgdGhlIGVuZCBhbmQgdGhlIHJlc2VydmVkCj4g KwkJICogdXNhZ2Ugd2lsbCBmaXQgZWl0aGVyIGluIHRoZSBzYW1lIG9yIGF0IHRoZSBzdGFydC4g RWl0aGVyCj4gKwkJICogd2F5LCBpZiBhIHdyYXAgb2NjdXJzIGl0IHdpbGwgbm90IGludm9sdmUg YSB3YWl0IGFuZCB0aHVzCj4gKwkJICogY2Fubm90IGZhaWwuCj4gKwkJICovCj4gKwkJaWYgKHVu bGlrZWx5KHJpbmdidWYtPnRhaWwgKyBtYXhfYnl0ZXMgPiByaW5nYnVmLT5lZmZlY3RpdmVfc2l6 ZSkpCj4gKwkJCW1heF9ieXRlcyA9IHJpbmdidWYtPnJlc2VydmVkX3NpemUgKyBJOTE1X1JJTkdf RlJFRV9TUEFDRSArIHJpbmdidWYtPnNpemUgLSByaW5nYnVmLT50YWlsOwo+ICsKPiArCQlyZXQg PSByaW5nX3dhaXRfZm9yX3NwYWNlKHJpbmcsIG1heF9ieXRlcyk7Cj4gIAkJaWYgKHVubGlrZWx5 KHJldCkpCj4gIAkJCXJldHVybiByZXQ7Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaAo+IGluZGV4IDM5ZjZkZmMuLmJmMmFjMjggMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTEwNSw2ICsxMDUsOSBAQCBzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciB7Cj4gIAlpbnQgc3BhY2U7Cj4gIAlpbnQgc2l6ZTsKPiAgCWludCBl ZmZlY3RpdmVfc2l6ZTsKPiArCWludCByZXNlcnZlZF9zaXplOwo+ICsJaW50IHJlc2VydmVkX3Rh aWw7Cj4gKwlib29sIHJlc2VydmVkX2luX3VzZTsKPiAgCj4gIAkvKiogV2UgdHJhY2sgdGhlIHBv c2l0aW9uIG9mIHRoZSByZXF1ZXN0cyBpbiB0aGUgcmluZyBidWZmZXIsIGFuZAo+ICAJICogd2hl biBlYWNoIGlzIHJldGlyZWQgd2UgaW5jcmVtZW50IGxhc3RfcmV0aXJlZF9oZWFkIGFzIHRoZSBH UFUKPiBAQCAtNDUwLDQgKzQ1MywyNiBAQCBpbnRlbF9yaW5nX2dldF9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gIAlyZXR1cm4gcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9y ZXF1ZXN0Owo+ICB9Cj4gIAo+ICsvKgo+ICsgKiBBcmJpdHJhcnkgc2l6ZSBmb3IgbGFyZ2VzdCBw b3NzaWJsZSAnYWRkIHJlcXVlc3QnIHNlcXVlbmNlLiBUaGUgY29kZSBwYXRocwo+ICsgKiBhcmUg Y29tcGxleCBhbmQgdmFyaWFibGUuIEVtcGlyaWNhbCBtZWFzdXJlbWVudCBzaG93cyB0aGF0IHRo ZSB3b3JzdCBjYXNlCj4gKyAqIGlzIElMSyBhdCAxMzYgd29yZHMuIFJlc2VydmluZyB0b28gbXVj aCBpcyBiZXR0ZXIgdGhhbiByZXNlcnZpbmcgdG9vIGxpdHRsZQo+ICsgKiBhcyB0aGF0IGFsbG93 cyBmb3IgY29ybmVyIGNhc2VzIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIG1pc3NlZC4gU28gdGhlIGZp Z3VyZQo+ICsgKiBoYXMgYmVlbiByb3VuZGVkIHVwIHRvIDE2MCB3b3Jkcy4KPiArICovCj4gKyNk ZWZpbmUgTUlOX1NQQUNFX0ZPUl9BRERfUkVRVUVTVAkxNjAKPiArCj4gKy8qCj4gKyAqIFJlc2Vy dmUgc3BhY2UgaW4gdGhlIHJpbmcgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIGk5MTVfYWRkX3JlcXVl c3QoKSBjYWxsCj4gKyAqIHdpbGwgYWx3YXlzIGhhdmUgc3VmZmljaWVudCByb29tIHRvIGRvIGl0 cyBzdHVmZi4gVGhlIHJlcXVlc3QgY3JlYXRpb24KPiArICogY29kZSBjYWxscyB0aGlzIGF1dG9t YXRpY2FsbHkuCj4gKyAqLwo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2 ZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwgaW50IHNpemUpOwo+ICsvKiBDYW5j ZWwgdGhlIHJlc2VydmF0aW9uLCBlLmcuIGJlY2F1c2UgdGhlIHJlcXVlc3QgaXMgYmVpbmcgZGlz Y2FyZGVkLiAqLwo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKPiArLyogVXNlIHRoZSByZXNlcnZlZCBzcGFj ZSAtIGZvciB1c2UgYnkgaTkxNV9hZGRfcmVxdWVzdCgpIG9ubHkuICovCj4gK3ZvaWQgaW50ZWxf cmluZ19yZXNlcnZlZF9zcGFjZV91c2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYp Owo+ICsvKiBGaW5pc2ggd2l0aCB0aGUgcmVzZXJ2ZWQgc3BhY2UgLSBmb3IgdXNlIGJ5IGk5MTVf YWRkX3JlcXVlc3QoKSBvbmx5LiAqLwo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2Vf ZW5kKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKPiArCj4gICNlbmRpZiAvKiBf SU5URUxfUklOR0JVRkZFUl9IXyAqLwo+IC0tIAo+IDEuNy45LjUKPiAKCi0tIApEYW5pZWwgVmV0 dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZnds bC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=