From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 02/55] drm/i915: Reserve ring buffer space for i915_add_request() commands Date: Tue, 23 Jun 2015 12:38:01 +0100 Message-ID: <55894519.5010906@Intel.com> References: <1432917856-12261-3-git-send-email-John.C.Harrison@Intel.com> <1434731652-15672-1-git-send-email-John.C.Harrison@Intel.com> <20150622201233.GK25769@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 55E286E8E0 for ; Tue, 23 Jun 2015 04:38:04 -0700 (PDT) In-Reply-To: <20150622201233.GK25769@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMjIvMDYvMjAxNSAyMToxMiwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBGcmksIEp1biAx OSwgMjAxNSBhdCAwNTozNDoxMlBNICswMTAwLCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdy b3RlOgo+PiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+ Pgo+PiBJdCBpcyBhIGJhZCBpZGVhIGZvciBpOTE1X2FkZF9yZXF1ZXN0KCkgdG8gZmFpbC4gVGhl IHdvcmsgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbgo+PiBzZW5kIHRvIHRoZSByaW5nIGFuZCB3aWxs IGJlIHByb2Nlc3NlZCwgYnV0IHRoZXJlIHdpbGwgbm90IGJlIGFueSB0cmFja2luZyBvcgo+PiBt YW5hZ2VtZW50IG9mIHRoYXQgd29yay4KPj4KPj4gVGhlIG9ubHkgd2F5IHRoZSBhZGQgcmVxdWVz dCBjYWxsIGNhbiBmYWlsIGlzIGlmIGl0IGNhbid0IHdyaXRlIGl0cyBlcGlsb2d1ZQo+PiBjb21t YW5kcyB0byB0aGUgcmluZyAoY2FjaGUgZmx1c2hpbmcsIHNlcW5vIHVwZGF0ZXMsIGludGVycnVw dCBzaWduYWxsaW5nKS4gVGhlCj4+IHJlYXNvbnMgZm9yIHRoYXQgYXJlIG1vc3RseSBkb3duIHRv IHJ1bm5pbmcgb3V0IG9mIHJpbmcgYnVmZmVyIHNwYWNlIGFuZCB0aGUKPj4gcHJvYmxlbXMgYXNz b2NpYXRlZCB3aXRoIHRyeWluZyB0byBnZXQgc29tZSBtb3JlLiBUaGlzIHBhdGNoIHByZXZlbnRz IHRoYXQKPj4gc2l0dWF0aW9uIGZyb20gaGFwcGVuaW5nIGluIHRoZSBmaXJzdCBwbGFjZS4KPj4K Pj4gV2hlbiBhIHJlcXVlc3QgaXMgY3JlYXRlZCwgaXQgbWFya3Mgc3VmZmljaWVudCBzcGFjZSBh cyByZXNlcnZlZCBmb3IgdGhlCj4+IGVwaWxvZ3VlIGNvbW1hbmRzLiBUaHVzIGd1YXJhbnRlZWlu ZyB0aGF0IGJ5IHRoZSB0aW1lIHRoZSBlcGlsb2d1ZSBpcyB3cml0dGVuLAo+PiB0aGVyZSB3aWxs IGJlIHBsZW50eSBvZiBzcGFjZSBmb3IgaXQuIE5vdGUgdGhhdCBhIHJpbmdfYmVnaW4oKSBjYWxs IGlzIHJlcXVpcmVkCj4+IHRvIGFjdHVhbGx5IHJlc2VydmUgdGhlIHNwYWNlIChhbmQgZG8gYW55 IHBvdGVudGlhbCB3YWl0aW5nKS4gSG93ZXZlciwgdGhhdCBpcwo+PiBub3QgY3VycmVudGx5IGRv bmUgYXQgcmVxdWVzdCBjcmVhdGlvbiB0aW1lLiBUaGlzIGlzIGJlY2F1c2UgdGhlIHJpbmdfYmVn aW4oKQo+PiBjb2RlIGNhbiBhbGxvY2F0ZSBhIHJlcXVlc3QuIEhlbmNlIGNhbGxpbmcgYmVnaW4o KSBmcm9tIHRoZSByZXF1ZXN0IGFsbG9jYXRpb24KPj4gY29kZSB3b3VsZCBsZWFkIHRvIGluZmlu aXRlIHJlY3Vyc2lvbiEgTGF0ZXIgcGF0Y2hlcyBpbiB0aGlzIHNlcmllcyByZW1vdmUgdGhlCj4+ IG5lZWQgZm9yIGJlZ2luKCkgdG8gZG8gdGhlIGFsbG9jYXRlLiBBdCB0aGF0IHBvaW50LCBpdCBi ZWNvbWVzIHNhZmUgZm9yIHRoZQo+PiBhbGxvY2F0ZSB0byBjYWxsIGJlZ2luKCkgYW5kIHJlYWxs eSByZXNlcnZlIHRoZSBzcGFjZS4KPj4KPj4gVW50aWwgdGhlbiwgdGhlcmUgaXMgYSBwb3RlbnRp YWwgZm9yIGluc3VmZmljaWVudCBzcGFjZSB0byBiZSBhdmFpbGFibGUgYXQgdGhlCj4+IHBvaW50 IG9mIGNhbGxpbmcgaTkxNV9hZGRfcmVxdWVzdCgpLiBIb3dldmVyLCB0aGF0IHdvdWxkIG9ubHkg YmUgaW4gdGhlIGNhc2UKPj4gd2hlcmUgdGhlIHJlcXVlc3Qgd2FzIGNyZWF0ZWQgYW5kIGltbWVk aWF0ZWx5IHN1Ym1pdHRlZCB3aXRob3V0IGV2ZXIgY2FsbGluZwo+PiByaW5nX2JlZ2luKCkgYW5k IGFkZGluZyBhbnkgd29yayB0byB0aGF0IHJlcXVlc3QuIFdoaWNoIHNob3VsZCBuZXZlciBoYXBw ZW4uIEFuZAo+PiBldmVuIGlmIGl0IGRvZXMsIGFuZCBpZiB0aGF0IHJlcXVlc3QgaGFwcGVucyB0 byBmYWxsIGRvd24gdGhlIHRpbnkgd2luZG93IG9mCj4+IG9wcG9ydHVuaXR5IGZvciBmYWlsaW5n IGR1ZSB0byBiZWluZyBvdXQgb2YgcmluZyBzcGFjZSB0aGVuIGRvZXMgaXQgcmVhbGx5Cj4+IG1h dHRlciBiZWNhdXNlIHRoZSByZXF1ZXN0IHdhc24ndCBkb2luZyBhbnl0aGluZyBpbiB0aGUgZmly c3QgcGxhY2U/Cj4+Cj4+IHYyOiBVcGRhdGVkIHRoZSAncmVzZXJ2ZWQgc3BhY2UgdG9vIHNtYWxs JyB3YXJuaW5nIHRvIGluY2x1ZGUgdGhlIG9mZmVuZGluZwo+PiBzaXplcy4gQWRkZWQgYSAnY2Fu Y2VsJyBvcGVyYXRpb24gdG8gY2xlYW4gdXAgd2hlbiBhIHJlcXVlc3QgaXMgYWJhbmRvbmVkLiBB ZGRlZAo+PiByZS1pbml0aWFsaXNhdGlvbiBvZiB0cmFja2luZyBzdGF0ZSBhZnRlciBhIGJ1ZmZl ciB3cmFwIHRvIGtlZXAgdGhlIHNhbml0eQo+PiBjaGVja3MgYWNjdXJhdGUuCj4+Cj4+IHYzOiBJ bmNyZW1lbnRlZCB0aGUgcmVzZXJ2ZWQgc2l6ZSB0byBhY2NvbW1vZGF0ZSBJcm9ubGFrZSAoYWZ0 ZXIgZmluYWxseQo+PiBtYW5hZ2luZyB0byBydW4gb24gYW4gSUxLIHN5c3RlbSkuIEFsc28gZml4 ZWQgbWlzc2luZyB3cmFwIGNvZGUgaW4gTFJDIG1vZGUuCj4+Cj4+IHY0OiBBZGRlZCBleHRyYSBj b21tZW50IGFuZCByZW1vdmVkIGR1cGxpY2F0ZSBXQVJOIChmZWVkYmFjayBmcm9tIFRvbWFzKS4K Pj4KPj4gdjU6IFJlLXdyaXRlIG9mIHdyYXAgaGFuZGxpbmcgdG8gcHJldmVudCB1bm5lY2Vzc2Fy eSBlYXJseSB3cmFwcyAoZmVlZGJhY2sgZnJvbQo+PiBEYW5pZWwgVmV0dGVyKS4KPiBUaGlzIGRp ZG4ndCBhY3R1YWxseSBpbXBsZW1lbnQgd2hhdCBJIHN1Z2dlc3RlZCAod3JhcHBpbmcgaXMgdGhl IHdvcnN0Cj4gY2FzZSwgaGVuY2Ugc2tpcHBpbmcgdGhlIGNoZWNrIGZvciB0aGF0IGlzIGJyZWFr aW5nIHRoZSBzYW5pdHkgY2hlY2spIGFuZAo+IHNvIGNoYW5nZWQgdGhlIHBhdGNoIGZyb20gImNv cnJlY3QsIGJ1dCBhIGJpdCBmcmFnaWxlIiB0byBicm9rZW4uIEkndmUKPiBtZXJnZWQgdGhlIHBy ZXZpb3VzIHZlcnNpb24gaW5zdGVhZC4KPiAtRGFuaWVsCkknbSBjb25mdXNlZC4gSSB0aG91Z2h0 IHlvdXIgbWFpbiBpc3N1ZSB3YXMgdGhlIGVhcmx5IHdyYXBwaW5nIG5vdCB0aGUgCnNhbml0eSBj aGVjay4gVGhlIGNoZWNrIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSByZXNlcnZhdGlvbiBpcyBsYXJn ZSAKZW5vdWdoIHRvIGNvdmVyIGFsbCB0aGUgY29tbWFuZHMgd3JpdHRlbiBkdXJpbmcgcmVxdWVz dCBzdWJtaXNzaW9uLiBUaGF0IApzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IHdoZXRoZXIgYSB3 cmFwIG9jY3VycyBvciBub3QuIFdyYXBwaW5nIGRvZXMgCm5vdCBtYWdpY2FsbHkgYWRkIGFuIGV4 dHJhIGJ1bmNoIG9mIGR3b3JkcyB0byB0aGUgZW1pdF9yZXF1ZXN0KCkgY2FsbC4gCldoZXJlYXMg bWFraW5nIHRoZSBjaGVjayB3b3JrIHdpdGggdGhlIHdyYXAgY29uZGl0aW9uIHJlcXVpcmVzIGFk ZGluZyBpbiAKZXh0cmEgdHJhY2tpbmcgc3RhdGUgb2YgZXhhY3RseSB3aGVyZSB0aGUgd3JhcCBv Y2N1cnJlZC4gVGhhdCBpcyBleHRyYSAKY29kZSB0aGF0IG9ubHkgZXhpc3RzIHRvIGNhdGNoIHNv bWV0aGluZyBpbiB0aGUgdmVyeSByYXJlIGNhc2Ugd2hpY2ggCnNob3VsZCBhbHJlYWR5IGhhdmUg YmVlbiBjYXVnaHQgaW4gdGhlIHZlcnkgY29tbW9uIGNhc2UuIEkuZS4gaWYgeW91ciAKcmVzZXJ2 ZWQgc2l6ZSBpcyB0b28gc21hbGwgdGhlbiB5b3Ugd2lsbCBoaXQgdGhlIHdhcm5pbmcgb24gZXZl cnkgYmF0Y2ggCmJ1ZmZlciBzdWJtaXNzaW9uLgoKSm9obi4KCj4+IEZvcjogVklaLTUxMTUKPj4g Q0M6IFRvbWFzIEVsZiA8dG9tYXMuZWxmQGludGVsLmNvbT4KPj4gQ0M6IERhbmllbCBWZXR0ZXIg PGRhbmllbEBmZndsbC5jaD4KPj4gU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5D LkhhcnJpc29uQEludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgIHwgICAgMSArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyAgICAgICAgIHwgICAzNyArKysrKysrKysrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyAgICAgICAgfCAgIDM1ICsrKysrKysrKy0tCj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgICA5OCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwg ICAyNSArKysrKysrKwo+PiAgIDUgZmlsZXMgY2hhbmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDEw IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggMDM0N2Vi OS4uZWJhMTg1NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC0yMTg3LDYg KzIxODcsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewo+PiAgIAo+PiAgIGludCBp OTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ICAg CQkJICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cj4+ICt2b2lkIGk5MTVfZ2VtX3JlcXVl c3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKPj4gICB2b2lkIGk5 MTVfZ2VtX3JlcXVlc3RfZnJlZShzdHJ1Y3Qga3JlZiAqcmVxX3JlZik7Cj4+ICAgCj4+ICAgc3Rh dGljIGlubGluZSB1aW50MzJfdAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gaW5kZXggODFm MzUxMi4uODVmYTI3YiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IEBAIC0yNDg1 LDYgKzI0ODUsMTMgQEAgaW50IF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nLAo+PiAgIAl9IGVsc2UKPj4gICAJCXJpbmdidWYgPSByaW5nLT5idWZmZXI7Cj4+ ICAgCj4+ICsJLyoKPj4gKwkgKiBUbyBlbnN1cmUgdGhhdCB0aGlzIGNhbGwgd2lsbCBub3QgZmFp bCwgc3BhY2UgZm9yIGl0cyBlbWlzc2lvbnMKPj4gKwkgKiBzaG91bGQgYWxyZWFkeSBoYXZlIGJl ZW4gcmVzZXJ2ZWQgaW4gdGhlIHJpbmcgYnVmZmVyLiBMZXQgdGhlIHJpbmcKPj4gKwkgKiBrbm93 IHRoYXQgaXQgaXMgdGltZSB0byB1c2UgdGhhdCBzcGFjZSB1cC4KPj4gKwkgKi8KPj4gKwlpbnRl bF9yaW5nX3Jlc2VydmVkX3NwYWNlX3VzZShyaW5nYnVmKTsKPj4gKwo+PiAgIAlyZXF1ZXN0X3N0 YXJ0ID0gaW50ZWxfcmluZ19nZXRfdGFpbChyaW5nYnVmKTsKPj4gICAJLyoKPj4gICAJICogRW1p dCBhbnkgb3V0c3RhbmRpbmcgZmx1c2hlcyAtIGV4ZWNidWYgY2FuIGZhaWwgdG8gZW1pdCB0aGUg Zmx1c2gKPj4gQEAgLTI1NjcsNiArMjU3NCw5IEBAIGludCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4gICAJCQkgICByb3VuZF9qaWZmaWVzX3VwX3Jl bGF0aXZlKEhaKSk7Cj4+ICAgCWludGVsX21hcmtfYnVzeShkZXZfcHJpdi0+ZGV2KTsKPj4gICAK Pj4gKwkvKiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVzZXJ2ZWQgc2l6ZSB3YXMgbGFyZ2UgZW5v dWdoLiAqLwo+PiArCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfZW5kKHJpbmdidWYpOwo+PiAr Cj4+ICAgCXJldHVybiAwOwo+PiAgIH0KPj4gICAKPj4gQEAgLTI2NjYsNiArMjY3NiwyNiBAQCBp bnQgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ PiAgIAlpZiAocmV0KQo+PiAgIAkJZ290byBlcnI7Cj4+ICAgCj4+ICsJLyoKPj4gKwkgKiBSZXNl cnZlIHNwYWNlIGluIHRoZSByaW5nIGJ1ZmZlciBmb3IgYWxsIHRoZSBjb21tYW5kcyByZXF1aXJl ZCB0bwo+PiArCSAqIGV2ZW50dWFsbHkgZW1pdCB0aGlzIHJlcXVlc3QuIFRoaXMgaXMgdG8gZ3Vh cmFudGVlIHRoYXQgdGhlCj4+ICsJICogaTkxNV9hZGRfcmVxdWVzdCgpIGNhbGwgY2FuJ3QgZmFp bC4gTm90ZSB0aGF0IHRoZSByZXNlcnZlIG1heSBuZWVkCj4+ICsJICogdG8gYmUgcmVkb25lIGlm IHRoZSByZXF1ZXN0IGlzIG5vdCBhY3R1YWxseSBzdWJtaXR0ZWQgc3RyYWlnaHQKPj4gKwkgKiBh d2F5LCBlLmcuIGJlY2F1c2UgYSBHUFUgc2NoZWR1bGVyIGhhcyBkZWZlcnJlZCBpdC4KPj4gKwkg Kgo+PiArCSAqIE5vdGUgZnVydGhlciB0aGF0IHRoaXMgY2FsbCBtZXJlbHkgbm90ZXMgdGhlIHJl c2VydmUgcmVxdWVzdC4gQQo+PiArCSAqIHN1YnNlcXVlbnQgY2FsbCB0byAqX3JpbmdfYmVnaW4o KSBpcyByZXF1aXJlZCB0byBhY3R1YWxseSBlbnN1cmUKPj4gKwkgKiB0aGF0IHRoZSByZXNlcnZh dGlvbiBpcyBhdmFpbGFibGUuIFdpdGhvdXQgdGhlIGJlZ2luLCBpZiB0aGUKPj4gKwkgKiByZXF1 ZXN0IGNyZWF0b3IgaW1tZWRpYXRlbHkgc3VibWl0dGVkIHRoZSByZXF1ZXN0IHdpdGhvdXQgYWRk aW5nCj4+ICsJICogYW55IGNvbW1hbmRzIHRvIGl0IHRoZW4gdGhlcmUgbWlnaHQgbm90IGFjdHVh bGx5IGJlIHN1ZmZpY2llbnQKPj4gKwkgKiByb29tIGZvciB0aGUgc3VibWlzc2lvbiBjb21tYW5k cy4gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQKPj4gKwkgKiAqX3JpbmdfYmVnaW4oKSBpbXBs ZW1lbnRhdGlvbnMgcG90ZW50aWFsbHkgY2FsbCBiYWNrIGhlcmUgdG8KPj4gKwkgKiBpOTE1X2dl bV9yZXF1ZXN0X2FsbG9jKCkuIFRodXMgY2FsbGluZyBfYmVnaW4oKSBoZXJlIHdvdWxkIGxlYWQg dG8KPj4gKwkgKiBpbmZpbml0ZSByZWN1cnNpb24hIFVudGlsIHRoYXQgYmFjayBjYWxsIHBhdGgg aXMgcmVtb3ZlZCwgaXQgaXMKPj4gKwkgKiBuZWNlc3NhcnkgdG8gZG8gYSBtYW51YWwgX2JlZ2lu KCkgb3V0c2lkZS4KPj4gKwkgKi8KPj4gKwlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2Vy dmUocmVxLT5yaW5nYnVmLCBNSU5fU1BBQ0VfRk9SX0FERF9SRVFVRVNUKTsKPj4gKwo+PiAgIAly aW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3QgPSByZXE7Cj4+ICAgCXJldHVybiAwOwo+PiAg IAo+PiBAQCAtMjY3NCw2ICsyNzA0LDEzIEBAIGVycjoKPj4gICAJcmV0dXJuIHJldDsKPj4gICB9 Cj4+ICAgCj4+ICt2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKQo+PiArewo+PiArCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2Fu Y2VsKHJlcS0+cmluZ2J1Zik7Cj4+ICsKPj4gKwlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNl KHJlcSk7Cj4+ICt9Cj4+ICsKPj4gICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgo+PiAg IGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKPj4gICB7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IGluZGV4IDZhNWVkMDcuLmJk NjJiZDYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IEBAIC02OTAsNiArNjkw LDkgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmdidWYsCj4+ICAgCWlmIChpbnRlbF9yaW5nX3NwYWNlKHJpbmdidWYp ID49IGJ5dGVzKQo+PiAgIAkJcmV0dXJuIDA7Cj4+ICAgCj4+ICsJLyogVGhlIHdob2xlIHBvaW50 IG9mIHJlc2VydmluZyBzcGFjZSBpcyB0byBub3Qgd2FpdCEgKi8KPj4gKwlXQVJOX09OKHJpbmdi dWYtPnJlc2VydmVkX2luX3VzZSk7Cj4+ICsKPj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1 ZXN0LCAmcmluZy0+cmVxdWVzdF9saXN0LCBsaXN0KSB7Cj4+ICAgCQkvKgo+PiAgIAkJICogVGhl IHJlcXVlc3QgcXVldWUgaXMgcGVyLWVuZ2luZSwgc28gY2FuIGNvbnRhaW4gcmVxdWVzdHMKPj4g QEAgLTc0OCw4ICs3NTEsMTIgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIo c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4+ICAgCWludCByZW0gPSByaW5nYnVm LT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPj4gICAKPj4gICAJaWYgKHJpbmdidWYtPnNwYWNlIDwg cmVtKSB7Cj4+IC0JCWludCByZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1 ZiwgY3R4LCByZW0pOwo+PiArCQlpbnQgcmV0Owo+PiArCj4+ICsJCS8qIENhbid0IHdhaXQgaWYg c3BhY2UgaGFzIGFscmVhZHkgYmVlbiByZXNlcnZlZCEgKi8KPj4gKwkJV0FSTl9PTihyaW5nYnVm LT5yZXNlcnZlZF9pbl91c2UpOwo+PiAgIAo+PiArCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9m b3Jfc3BhY2UocmluZ2J1ZiwgY3R4LCByZW0pOwo+PiAgIAkJaWYgKHJldCkKPj4gICAJCQlyZXR1 cm4gcmV0Owo+PiAgIAl9Cj4+IEBAIC03NjgsNyArNzc1LDcgQEAgc3RhdGljIGludCBsb2dpY2Fs X3Jpbmdfd3JhcF9idWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4+ICAg c3RhdGljIGludCBsb2dpY2FsX3JpbmdfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZ2J1ZiwKPj4gICAJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwgaW50IGJ5dGVzKQo+ PiAgIHsKPj4gLQlpbnQgcmV0Owo+PiArCWludCByZXQsIG1heF9ieXRlczsKPj4gICAKPj4gICAJ aWYgKHVubGlrZWx5KHJpbmdidWYtPnRhaWwgKyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2ZV9z aXplKSkgewo+PiAgIAkJcmV0ID0gbG9naWNhbF9yaW5nX3dyYXBfYnVmZmVyKHJpbmdidWYsIGN0 eCk7Cj4+IEBAIC03NzYsOCArNzgzLDI4IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3ByZXBh cmUoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4+ICAgCQkJcmV0dXJuIHJldDsK Pj4gICAJfQo+PiAgIAo+PiAtCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IGJ5dGVzKSkg ewo+PiAtCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1ZiwgY3R4LCBi eXRlcyk7Cj4+ICsJLyoKPj4gKwkgKiBBZGQgb24gdGhlIHJlc2VydmVkIHNpemUgdG8gdGhlIHJl cXVlc3QgdG8gbWFrZSBzdXJlIHRoYXQgYWZ0ZXIKPj4gKwkgKiB0aGUgaW50ZW5kZWQgY29tbWFu ZHMgaGF2ZSBiZWVuIGVtaXR0ZWQsIHRoZXJlIGlzIGd1YXJhbnRlZWQgdG8KPj4gKwkgKiBzdGls bCBiZSBlbm91Z2ggZnJlZSBzcGFjZSB0byBzZW5kIHRoZW0gdG8gdGhlIGhhcmR3YXJlLgo+PiAr CSAqLwo+PiArCW1heF9ieXRlcyA9IGJ5dGVzICsgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKPj4g Kwo+PiArCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IG1heF9ieXRlcykpIHsKPj4gKwkJ LyoKPj4gKwkJICogQnl0ZXMgaXMgZ3VhcmFudGVlZCB0byBmaXQgd2l0aGluIHRoZSB0YWlsIG9m IHRoZSBidWZmZXIsCj4+ICsJCSAqIGJ1dCB0aGUgcmVzZXJ2ZWQgc3BhY2UgbWF5IHB1c2ggaXQg b2ZmIHRoZSBlbmQuIElmIHNvIHRoZW4KPj4gKwkJICogbmVlZCB0byB3YWl0IGZvciB0aGUgd2hv bGUgb2YgdGhlIHRhaWwgcGx1cyB0aGUgcmVzZXJ2ZWQKPj4gKwkJICogc2l6ZS4gVGhhdCBzaG91 bGQgZ3VhcmFudGVlIHRoYXQgdGhlIGFjdHVhbCByZXF1ZXN0Cj4+ICsJCSAqIChieXRlcykgd2ls bCBmaXQgYmV0d2VlbiBoZXJlIGFuZCB0aGUgZW5kIGFuZCB0aGUgcmVzZXJ2ZWQKPj4gKwkJICog dXNhZ2Ugd2lsbCBmaXQgZWl0aGVyIGluIHRoZSBzYW1lIG9yIGF0IHRoZSBzdGFydC4gRWl0aGVy Cj4+ICsJCSAqIHdheSwgaWYgYSB3cmFwIG9jY3VycyBpdCB3aWxsIG5vdCBpbnZvbHZlIGEgd2Fp dCBhbmQgdGh1cwo+PiArCQkgKiBjYW5ub3QgZmFpbC4KPj4gKwkJICovCj4+ICsJCWlmICh1bmxp a2VseShyaW5nYnVmLT50YWlsICsgbWF4X2J5dGVzICsgSTkxNV9SSU5HX0ZSRUVfU1BBQ0UgPiBy aW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSkpCj4+ICsJCQltYXhfYnl0ZXMgPSByaW5nYnVmLT5yZXNl cnZlZF9zaXplICsgSTkxNV9SSU5HX0ZSRUVfU1BBQ0UgKyByaW5nYnVmLT5zaXplIC0gcmluZ2J1 Zi0+dGFpbDsKPj4gKwo+PiArCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2Uocmlu Z2J1ZiwgY3R4LCBtYXhfYnl0ZXMpOwo+PiAgIAkJaWYgKHVubGlrZWx5KHJldCkpCj4+ICAgCQkJ cmV0dXJuIHJldDsKPj4gICAJfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4+IGluZGV4IGQ5MzRmODUuLjFjMTI1ZTkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4gQEAgLTIxMDYsNiArMjEwNiw5IEBAIHN0YXRpYyBpbnQg cmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQgbikK Pj4gICAJaWYgKGludGVsX3Jpbmdfc3BhY2UocmluZ2J1ZikgPj0gbikKPj4gICAJCXJldHVybiAw Owo+PiAgIAo+PiArCS8qIFRoZSB3aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8g bm90IHdhaXQhICovCj4+ICsJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+PiAr Cj4+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJnJpbmctPnJlcXVlc3RfbGlzdCwg bGlzdCkgewo+PiAgIAkJc3BhY2UgPSBfX2ludGVsX3Jpbmdfc3BhY2UocmVxdWVzdC0+cG9zdGZp eCwgcmluZ2J1Zi0+dGFpbCwKPj4gICAJCQkJCSAgIHJpbmdidWYtPnNpemUpOwo+PiBAQCAtMjEz MSw3ICsyMTM0LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfd3JhcF9yaW5nX2J1ZmZlcihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQo+PiAgIAlpbnQgcmVtID0gcmluZ2J1Zi0+c2l6ZSAtIHJp bmdidWYtPnRhaWw7Cj4+ICAgCj4+ICAgCWlmIChyaW5nYnVmLT5zcGFjZSA8IHJlbSkgewo+PiAt CQlpbnQgcmV0ID0gcmluZ193YWl0X2Zvcl9zcGFjZShyaW5nLCByZW0pOwo+PiArCQlpbnQgcmV0 Owo+PiArCj4+ICsJCS8qIENhbid0IHdhaXQgaWYgc3BhY2UgaGFzIGFscmVhZHkgYmVlbiByZXNl cnZlZCEgKi8KPj4gKwkJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+PiArCj4+ ICsJCXJldCA9IHJpbmdfd2FpdF9mb3Jfc3BhY2UocmluZywgcmVtKTsKPj4gICAJCWlmIChyZXQp Cj4+ICAgCQkJcmV0dXJuIHJldDsKPj4gICAJfQo+PiBAQCAtMjE4MCwxMSArMjE4OCw2OSBAQCBp bnQgaW50ZWxfcmluZ19hbGxvY19yZXF1ZXN0X2V4dHJhcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcXVlc3QpCj4+ICAgCXJldHVybiAwOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyBp bnQgX19pbnRlbF9yaW5nX3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4g LQkJCQlpbnQgYnl0ZXMpCj4+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2 ZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwgaW50IHNpemUpCj4+ICt7Cj4+ICsJ LyogTkI6IFVudGlsIHJlcXVlc3QgbWFuYWdlbWVudCBpcyBmdWxseSB0aWRpZWQgdXAgYW5kIHRo ZSBPTFIgaXMKPj4gKwkgKiByZW1vdmVkLCB0aGVyZSBhcmUgdG9vIG1hbnkgd2F5cyBmb3IgZ2V0 IGZhbHNlIGhpdHMgb24gdGhpcwo+PiArCSAqIGFudGktcmVjdXJzaW9uIGNoZWNrISAqLwo+PiAr CS8qV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9zaXplKTsqLwo+PiArCVdBUk5fT04ocmluZ2J1 Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPj4gKwo+PiArCXJpbmdidWYtPnJlc2VydmVkX3NpemUgPSBz aXplOwo+PiArCj4+ICsJLyoKPj4gKwkgKiBSZWFsbHkgbmVlZCB0byBjYWxsIF9iZWdpbigpIGhl cmUgYnV0IHRoYXQgY3VycmVudGx5IGxlYWRzIHRvCj4+ICsJICogcmVjdXJzaW9uIHByb2JsZW1z ISBUaGlzIHdpbGwgYmUgZml4ZWQgbGF0ZXIgYnV0IGZvciBub3cganVzdAo+PiArCSAqIHJldHVy biBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuIE5vdGUgdGhhdCB0aGVyZSBpcyBvbmx5IGEgcmVhbAo+ PiArCSAqIHByb2JsZW0gaWYgdGhlIGNyZWF0ZSBvZiB0aGUgcmVxdWVzdCBuZXZlciBhY3R1YWxs eSBjYWxscyBfYmVnaW4oKQo+PiArCSAqIGJ1dCBpZiB0aGV5IGFyZSBub3Qgc3VibWl0dGluZyBh bnkgd29yayB0aGVuIHdoeSBkaWQgdGhleSBjcmVhdGUKPj4gKwkgKiB0aGUgcmVxdWVzdCBpbiB0 aGUgZmlyc3QgcGxhY2U/Cj4+ICsJICovCj4+ICt9Cj4+ICsKPj4gK3ZvaWQgaW50ZWxfcmluZ19y ZXNlcnZlZF9zcGFjZV9jYW5jZWwoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4+ ICt7Cj4+ICsJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+PiArCj4+ICsJcmlu Z2J1Zi0+cmVzZXJ2ZWRfc2l6ZSAgID0gMDsKPj4gKwlyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2Ug PSBmYWxzZTsKPj4gK30KPj4gKwo+PiArdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Vz ZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPj4gK3sKPj4gKwlXQVJOX09OKHJp bmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4+ICsKPj4gKwlyaW5nYnVmLT5yZXNlcnZlZF9pbl91 c2UgPSB0cnVlOwo+PiArCXJpbmdidWYtPnJlc2VydmVkX3RhaWwgICA9IHJpbmdidWYtPnRhaWw7 Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9lbmQoc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4+ICt7Cj4+ICsJV0FSTl9PTighcmluZ2J1Zi0+ cmVzZXJ2ZWRfaW5fdXNlKTsKPj4gKwlpZiAocmluZ2J1Zi0+dGFpbCA+IHJpbmdidWYtPnJlc2Vy dmVkX3RhaWwpIHsKPj4gKwkJV0FSTihyaW5nYnVmLT50YWlsID4gcmluZ2J1Zi0+cmVzZXJ2ZWRf dGFpbCArIHJpbmdidWYtPnJlc2VydmVkX3NpemUsCj4+ICsJCSAgICAgInJlcXVlc3QgcmVzZXJ2 ZWQgc2l6ZSB0b28gc21hbGw6ICVkIHZzICVkIVxuIiwKPj4gKwkJICAgICByaW5nYnVmLT50YWls IC0gcmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbCwgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSk7Cj4+ICsJ fSBlbHNlIHsKPj4gKwkJLyoKPj4gKwkJICogVGhlIHJpbmcgd2FzIHdyYXBwZWQgd2hpbGUgdGhl IHJlc2VydmVkIHNwYWNlIHdhcyBpbiB1c2UuCj4+ICsJCSAqIFRoYXQgbWVhbnMgdGhhdCBzb21l IHVua25vd24gYW1vdW50IG9mIHRoZSByaW5nIHRhaWwgd2FzCj4+ICsJCSAqIG5vLW9wIGZpbGxl ZCBhbmQgc2tpcHBlZC4gVGh1cyBzaW1wbHkgYWRkaW5nIHRoZSByaW5nIHNpemUKPj4gKwkJICog dG8gdGhlIHRhaWwgYW5kIGRvaW5nIHRoZSBhYm92ZSBzcGFjZSBjaGVjayB3aWxsIG5vdCB3b3Jr Lgo+PiArCQkgKiBSYXRoZXIgdGhhbiBhdHRlbXB0IHRvIHRyYWNrIGhvdyBtdWNoIHRhaWwgd2Fz IHNraXBwZWQsCj4+ICsJCSAqIGl0IGlzIG11Y2ggc2ltcGxlciB0byBzYXkgdGhhdCBhbHNvIHNr aXBwaW5nIHRoZSBzYW5pdHkKPj4gKwkJICogY2hlY2sgZXZlcnkgb25jZSBpbiBhIHdoaWxlIGlz IG5vdCBhIGJpZyBpc3N1ZS4KPj4gKwkJICovCj4+ICsJfQo+PiArCj4+ICsJcmluZ2J1Zi0+cmVz ZXJ2ZWRfc2l6ZSAgID0gMDsKPj4gKwlyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UgPSBmYWxzZTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIGludCBfX2ludGVsX3JpbmdfcHJlcGFyZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQgYnl0ZXMpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJpbmctPmJ1ZmZlcjsKPj4gLQlpbnQgcmV0Owo+PiArCWlu dCByZXQsIG1heF9ieXRlczsKPj4gICAKPj4gICAJaWYgKHVubGlrZWx5KHJpbmdidWYtPnRhaWwg KyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplKSkgewo+PiAgIAkJcmV0ID0gaW50ZWxf d3JhcF9yaW5nX2J1ZmZlcihyaW5nKTsKPj4gQEAgLTIxOTIsOCArMjI1OCwyOCBAQCBzdGF0aWMg aW50IF9faW50ZWxfcmluZ19wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ ICAgCQkJcmV0dXJuIHJldDsKPj4gICAJfQo+PiAgIAo+PiAtCWlmICh1bmxpa2VseShyaW5nYnVm LT5zcGFjZSA8IGJ5dGVzKSkgewo+PiAtCQlyZXQgPSByaW5nX3dhaXRfZm9yX3NwYWNlKHJpbmcs IGJ5dGVzKTsKPj4gKwkvKgo+PiArCSAqIEFkZCBvbiB0aGUgcmVzZXJ2ZWQgc2l6ZSB0byB0aGUg cmVxdWVzdCB0byBtYWtlIHN1cmUgdGhhdCBhZnRlcgo+PiArCSAqIHRoZSBpbnRlbmRlZCBjb21t YW5kcyBoYXZlIGJlZW4gZW1pdHRlZCwgdGhlcmUgaXMgZ3VhcmFudGVlZCB0bwo+PiArCSAqIHN0 aWxsIGJlIGVub3VnaCBmcmVlIHNwYWNlIHRvIHNlbmQgdGhlbSB0byB0aGUgaGFyZHdhcmUuCj4+ ICsJICovCj4+ICsJbWF4X2J5dGVzID0gYnl0ZXMgKyByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+ PiArCj4+ICsJaWYgKHVubGlrZWx5KHJpbmdidWYtPnNwYWNlIDwgbWF4X2J5dGVzKSkgewo+PiAr CQkvKgo+PiArCQkgKiBCeXRlcyBpcyBndWFyYW50ZWVkIHRvIGZpdCB3aXRoaW4gdGhlIHRhaWwg b2YgdGhlIGJ1ZmZlciwKPj4gKwkJICogYnV0IHRoZSByZXNlcnZlZCBzcGFjZSBtYXkgcHVzaCBp dCBvZmYgdGhlIGVuZC4gSWYgc28gdGhlbgo+PiArCQkgKiBuZWVkIHRvIHdhaXQgZm9yIHRoZSB3 aG9sZSBvZiB0aGUgdGFpbCBwbHVzIHRoZSByZXNlcnZlZAo+PiArCQkgKiBzaXplLiBUaGF0IHNo b3VsZCBndWFyYW50ZWUgdGhhdCB0aGUgYWN0dWFsIHJlcXVlc3QKPj4gKwkJICogKGJ5dGVzKSB3 aWxsIGZpdCBiZXR3ZWVuIGhlcmUgYW5kIHRoZSBlbmQgYW5kIHRoZSByZXNlcnZlZAo+PiArCQkg KiB1c2FnZSB3aWxsIGZpdCBlaXRoZXIgaW4gdGhlIHNhbWUgb3IgYXQgdGhlIHN0YXJ0LiBFaXRo ZXIKPj4gKwkJICogd2F5LCBpZiBhIHdyYXAgb2NjdXJzIGl0IHdpbGwgbm90IGludm9sdmUgYSB3 YWl0IGFuZCB0aHVzCj4+ICsJCSAqIGNhbm5vdCBmYWlsLgo+PiArCQkgKi8KPj4gKwkJaWYgKHVu bGlrZWx5KHJpbmdidWYtPnRhaWwgKyBtYXhfYnl0ZXMgPiByaW5nYnVmLT5lZmZlY3RpdmVfc2l6 ZSkpCj4+ICsJCQltYXhfYnl0ZXMgPSByaW5nYnVmLT5yZXNlcnZlZF9zaXplICsgSTkxNV9SSU5H X0ZSRUVfU1BBQ0UgKyByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPj4gKwo+PiArCQly ZXQgPSByaW5nX3dhaXRfZm9yX3NwYWNlKHJpbmcsIG1heF9ieXRlcyk7Cj4+ICAgCQlpZiAodW5s aWtlbHkocmV0KSkKPj4gICAJCQlyZXR1cm4gcmV0Owo+PiAgIAl9Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPj4gaW5kZXggMzlmNmRmYy4uYmYyYWMyOCAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+PiBAQCAtMTA1LDYgKzEw NSw5IEBAIHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyIHsKPj4gICAJaW50IHNwYWNlOwo+PiAgIAlp bnQgc2l6ZTsKPj4gICAJaW50IGVmZmVjdGl2ZV9zaXplOwo+PiArCWludCByZXNlcnZlZF9zaXpl Owo+PiArCWludCByZXNlcnZlZF90YWlsOwo+PiArCWJvb2wgcmVzZXJ2ZWRfaW5fdXNlOwo+PiAg IAo+PiAgIAkvKiogV2UgdHJhY2sgdGhlIHBvc2l0aW9uIG9mIHRoZSByZXF1ZXN0cyBpbiB0aGUg cmluZyBidWZmZXIsIGFuZAo+PiAgIAkgKiB3aGVuIGVhY2ggaXMgcmV0aXJlZCB3ZSBpbmNyZW1l bnQgbGFzdF9yZXRpcmVkX2hlYWQgYXMgdGhlIEdQVQo+PiBAQCAtNDUwLDQgKzQ1MywyNiBAQCBp bnRlbF9yaW5nX2dldF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4+ICAg CXJldHVybiByaW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3Q7Cj4+ICAgfQo+PiAgIAo+PiAr LyoKPj4gKyAqIEFyYml0cmFyeSBzaXplIGZvciBsYXJnZXN0IHBvc3NpYmxlICdhZGQgcmVxdWVz dCcgc2VxdWVuY2UuIFRoZSBjb2RlIHBhdGhzCj4+ICsgKiBhcmUgY29tcGxleCBhbmQgdmFyaWFi bGUuIEVtcGlyaWNhbCBtZWFzdXJlbWVudCBzaG93cyB0aGF0IHRoZSB3b3JzdCBjYXNlCj4+ICsg KiBpcyBJTEsgYXQgMTM2IHdvcmRzLiBSZXNlcnZpbmcgdG9vIG11Y2ggaXMgYmV0dGVyIHRoYW4g cmVzZXJ2aW5nIHRvbyBsaXR0bGUKPj4gKyAqIGFzIHRoYXQgYWxsb3dzIGZvciBjb3JuZXIgY2Fz ZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gbWlzc2VkLiBTbyB0aGUgZmlndXJlCj4+ICsgKiBoYXMg YmVlbiByb3VuZGVkIHVwIHRvIDE2MCB3b3Jkcy4KPj4gKyAqLwo+PiArI2RlZmluZSBNSU5fU1BB Q0VfRk9SX0FERF9SRVFVRVNUCTE2MAo+PiArCj4+ICsvKgo+PiArICogUmVzZXJ2ZSBzcGFjZSBp biB0aGUgcmluZyB0byBndWFyYW50ZWUgdGhhdCB0aGUgaTkxNV9hZGRfcmVxdWVzdCgpIGNhbGwK Pj4gKyAqIHdpbGwgYWx3YXlzIGhhdmUgc3VmZmljaWVudCByb29tIHRvIGRvIGl0cyBzdHVmZi4g VGhlIHJlcXVlc3QgY3JlYXRpb24KPj4gKyAqIGNvZGUgY2FsbHMgdGhpcyBhdXRvbWF0aWNhbGx5 Lgo+PiArICovCj4+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwgaW50IHNpemUpOwo+PiArLyogQ2FuY2VsIHRo ZSByZXNlcnZhdGlvbiwgZS5nLiBiZWNhdXNlIHRoZSByZXF1ZXN0IGlzIGJlaW5nIGRpc2NhcmRl ZC4gKi8KPj4gK3ZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwoc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYpOwo+PiArLyogVXNlIHRoZSByZXNlcnZlZCBzcGFjZSAt IGZvciB1c2UgYnkgaTkxNV9hZGRfcmVxdWVzdCgpIG9ubHkuICovCj4+ICt2b2lkIGludGVsX3Jp bmdfcmVzZXJ2ZWRfc3BhY2VfdXNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsK Pj4gKy8qIEZpbmlzaCB3aXRoIHRoZSByZXNlcnZlZCBzcGFjZSAtIGZvciB1c2UgYnkgaTkxNV9h ZGRfcmVxdWVzdCgpIG9ubHkuICovCj4+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2Vf ZW5kKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKPj4gKwo+PiAgICNlbmRpZiAv KiBfSU5URUxfUklOR0JVRkZFUl9IXyAqLwo+PiAtLSAKPj4gMS43LjkuNQo+PgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK