From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomas Elf Subject: Re: [PATCH] drm/i915: Reserve space improvements Date: Tue, 30 Jun 2015 15:43:56 +0100 Message-ID: <5592AB2C.8050303@intel.com> References: <1435165408-15470-1-git-send-email-John.C.Harrison@Intel.com> <1435664455-12657-1-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 CCF226E97F for ; Tue, 30 Jun 2015 07:43:58 -0700 (PDT) In-Reply-To: <1435664455-12657-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, Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMzAvMDYvMjAxNSAxMjo0MCwgSm9obi5DLkhhcnJpc29uQEludGVsLmNvbSB3cm90ZToKPiBG cm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Cj4gQW4gZWFy bGllciBwYXRjaCB3YXMgYWRkZWQgdG8gcmVzZXJ2ZSBzcGFjZSBpbiB0aGUgcmluZyBidWZmZXIg Zm9yIHRoZQo+IGNvbW1hbmRzIGlzc3VlZCBkdXJpbmcgJ2FkZF9yZXF1ZXN0KCknLiBUaGUgaW5p dGlhbCB2ZXJzaW9uIHdhcwo+IHBlc3NpbWlzdGljIGluIHRoZSB3YXkgaXQgaGFuZGxlZCBidWZm ZXIgd3JhcHBpbmcgYW5kIHdvdWxkIGNhdXNlCj4gcHJlbWF0dXJlIHdyYXBzIGFuZCB0aHVzIHdh c3RlIHJpbmcgc3BhY2UuCj4KPiBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIGNvZGUgdG8gYmV0dGVy IGhhbmRsZSB0aGUgd3JhcCBjYXNlLiBJdCBubwo+IGxvbmdlciBlbmZvcmNlcyB0aGF0IHRoZSBz cGFjZSBiZWluZyBhc2tlZCBmb3IgYW5kIHRoZSByZXNlcnZlZCBzcGFjZQo+IGFyZSBhIHNpbmds ZSBjb250aWd1b3VzIGJsb2NrLiBJbnN0ZWFkLCBpdCBhbGxvd3MgdGhlIHJlc2VydmUgdG8gYmUg b24KPiB0aGUgZmFyIGVuZCBvZiBhIHdyYXAgb3BlcmF0aW9uLiBJdCBzdGlsbCBndWFyYW50ZWVz IHRoYXQgdGhlIHNwYWNlIGlzCj4gYXZhaWxhYmxlIHNvIHdoZW4gdGhlIHdyYXAgb2NjdXJzLCBu byB3YWl0IHdpbGwgaGFwcGVuLiBUaHVzIHRoZSB3cmFwCj4gY2Fubm90IGZhaWwgd2hpY2ggaXMg dGhlIHdob2xlIHBvaW50IG9mIHRoZSBleGVyY2lzZS4KPgo+IEFsc28gZml4ZWQgYSBtZXJnZSBm YWlsdXJlIHdpdGggc29tZSBjb21tZW50cyBmcm9tIHRoZSBvcmlnaW5hbCBwYXRjaC4KPgo+IHYy OiBJbmNvcnBvcmF0ZWQgc3VnZ2VzdGlvbiBieSBEYXZpZCBHb3Jkb24gdG8gbW92ZSB0aGUgd3Jh cCBjb2RlCj4gaW5zaWRlIHRoZSBwcmVwYXJlIGZ1bmN0aW9uIGFuZCB0aHVzIGFsbG93IGEgc2lu Z2xlIGNvbWJpbmVkCj4gd2FpdF9mb3Jfc3BhY2UoKSBjYWxsIHJhdGhlciB0aGFuIGRvaW5nIG9u ZSBiZWZvcmUgdGhlIHdyYXAgYW5kCj4gYW5vdGhlciBhZnRlci4gVGhpcyBhbHNvIG1ha2VzIHRo ZSBwcmVwYXJlIGNvZGUgbXVjaCBzaW1wbGVyIGFuZAo+IGVhc2llciB0byBmb2xsb3cuCj4KPiB2 MzogRml4IGZvciAnZWZmZWN0aXZlX3NpemUnIHZzICdzaXplJyBkdXJpbmcgcmluZyBidWZmZXIg cmVtYWluZGVyCj4gY2FsY3VsYXRpb25zIChzcG90dGVkIGJ5IFRvbWFzIEVsZikuCj4KPiBGb3I6 IFZJWi01MTE1Cj4gQ0M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiBTaWduZWQt b2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+IC0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgNzMgKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYyB8IDkwICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgIDQgKy0KPiAgIDMgZmlsZXMgY2hhbmdl ZCwgOTAgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwo+IGluZGV4IGIzNmUwNjQuLjdkOTUxNWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwo+IEBAIC02NjMsMTIgKzY2MywxMiBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193 YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAl1bnNp Z25lZCBzcGFjZTsKPiAgIAlpbnQgcmV0Owo+Cj4gLQkvKiBUaGUgd2hvbGUgcG9pbnQgb2YgcmVz ZXJ2aW5nIHNwYWNlIGlzIHRvIG5vdCB3YWl0ISAqLwo+IC0JV0FSTl9PTihyaW5nYnVmLT5yZXNl cnZlZF9pbl91c2UpOwo+IC0KPiAgIAlpZiAoaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKSA+PSBi eXRlcykKPiAgIAkJcmV0dXJuIDA7Cj4KPiArCS8qIFRoZSB3aG9sZSBwb2ludCBvZiByZXNlcnZp bmcgc3BhY2UgaXMgdG8gbm90IHdhaXQhICovCj4gKwlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVk X2luX3VzZSk7Cj4gKwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkodGFyZ2V0LCAmcmluZy0+cmVx dWVzdF9saXN0LCBsaXN0KSB7Cj4gICAJCS8qCj4gICAJCSAqIFRoZSByZXF1ZXN0IHF1ZXVlIGlz IHBlci1lbmdpbmUsIHNvIGNhbiBjb250YWluIHJlcXVlc3RzCj4gQEAgLTcxOCwyMiArNzE4LDEx IEBAIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCWV4ZWNsaXN0c19jb250ZXh0X3F1ZXVlKHJlcXVl c3QpOwo+ICAgfQo+Cj4gLXN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dyYXBfYnVmZmVyKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICtzdGF0aWMgdm9pZCBfX3dyYXBfcmluZ19i dWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gICB7Cj4gLQlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+cmluZ2J1ZjsKPiAgIAl1aW50MzJfdCBf X2lvbWVtICp2aXJ0Owo+ICAgCWludCByZW0gPSByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFp bDsKPgo+IC0JLyogQ2FuJ3Qgd3JhcCBpZiBzcGFjZSBoYXMgYWxyZWFkeSBiZWVuIHJlc2VydmVk ISAqLwo+IC0JV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+IC0KPiAtCWlmIChy aW5nYnVmLT5zcGFjZSA8IHJlbSkgewo+IC0JCWludCByZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9m b3Jfc3BhY2UocmVxLCByZW0pOwo+IC0KPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+ IC0JfQo+IC0KPiAgIAl2aXJ0ID0gcmluZ2J1Zi0+dmlydHVhbF9zdGFydCArIHJpbmdidWYtPnRh aWw7Cj4gICAJcmVtIC89IDQ7Cj4gICAJd2hpbGUgKHJlbS0tKQo+IEBAIC03NDEsNDAgKzczMCw1 MCBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKPgo+ICAgCXJpbmdidWYtPnRhaWwgPSAwOwo+ICAgCWludGVsX3Jp bmdfdXBkYXRlX3NwYWNlKHJpbmdidWYpOwo+IC0KPiAtCXJldHVybiAwOwo+ICAgfQo+Cj4gICBz dGF0aWMgaW50IGxvZ2ljYWxfcmluZ19wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLCBpbnQgYnl0ZXMpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJp bmdidWYgPSByZXEtPnJpbmdidWY7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCS8qCj4gLQkgKiBBZGQg b24gdGhlIHJlc2VydmVkIHNpemUgdG8gdGhlIHJlcXVlc3QgdG8gbWFrZSBzdXJlIHRoYXQgYWZ0 ZXIKPiAtCSAqIHRoZSBpbnRlbmRlZCBjb21tYW5kcyBoYXZlIGJlZW4gZW1pdHRlZCwgdGhlcmUg aXMgZ3VhcmFudGVlZCB0bwo+IC0JICogc3RpbGwgYmUgZW5vdWdoIGZyZWUgc3BhY2UgdG8gc2Vu ZCB0aGVtIHRvIHRoZSBoYXJkd2FyZS4KPiAtCSAqLwo+IC0JaWYgKCFyaW5nYnVmLT5yZXNlcnZl ZF9pbl91c2UpCj4gLQkJYnl0ZXMgKz0gcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKPiAtCj4gLQlp ZiAodW5saWtlbHkocmluZ2J1Zi0+dGFpbCArIGJ5dGVzID4gcmluZ2J1Zi0+ZWZmZWN0aXZlX3Np emUpKSB7Cj4gLQkJcmV0ID0gbG9naWNhbF9yaW5nX3dyYXBfYnVmZmVyKHJlcSk7Cj4gLQkJaWYg KHVubGlrZWx5KHJldCkpCj4gLQkJCXJldHVybiByZXQ7Cj4gKwlpbnQgcmVtYWluX3VzYWJsZSA9 IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPiArCWludCByZW1haW5f YWN0dWFsID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7CgpZb3UgY291bGQgYWRkIGEg Y29tbWVudCBoZXJlIChhbmQgaW4gdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbikgCmV4cGxhaW5p bmcgd2h5IHdlIG1ha2UgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gcmVtYWluX3VzYWJsZSBhbmQg CnJlbWFpbl9hY3R1YWwuIE9yIHlvdSBjb3VsZCBhZGQgdGhlIGNvbW1lbnQgd2hlbiB3ZSBhY3R1 YWxseSB1c2UgCnJlbWFpbl9hY3R1YWwgZnVydGhlciBkb3duIGluIHRoZSBmdW5jdGlvbi4gSXQn cyB1cCB0byB5b3UuCgpXZSBmaXJzdCBuZWVkIHRvIGJlIHBlc3NpbWlzdGljIGFib3V0IGhvdyBt dWNoIHNwYWNlIGlzIGxlZnQgaW4gdGhlIHJpbmcgCmJ1ZmZlciB3aGVuIGRldGVybWluaW5nIHRo ZSBuZWVkIGZvciB3cmFwcGluZyAtIHRoZXJlZm9yZSB3ZSB1c2UgCnJlbWFpbl91c2FibGUsIHdo aWNoIGRpc3JlZ2FyZHMgdGhlIGVuZC1vZi1idWZmZXIgcGFkZGluZyAtIGFuZCB0aGVuIHdlIApu ZWVkIHRvIGJlIHBlc3NpbWlzdGljIGFib3V0IGhvdyBtdWNoIHJpbmcgc3BhY2Ugd2UgbmVlZCB0 byB3YWl0IGZvciAtIAp0aGVyZWZvcmUgd2UgdXNlIHJlbWFpbl9hY3R1YWwsIHdoaWNoIHRha2Vz IHRoZSBlbmQtb2YtYnVmZmVyIHBhZGRpbmcgCmludG8gY29uc2lkZXJhdGlvbiB0byBtYWtlIHN1 cmUgdGhhdCB3ZSdyZSBhY3R1YWxseSBub3Qgd2FpdGluZyBmb3IgdG9vIApsaXR0bGUgc3BhY2Uu CgpJZiB5b3UgYWRkIHRob3NlIGNvbW1lbnRzIG1heWJlIHlvdSBjb3VsZCBhbHNvIHJlbmFtZSB0 aGUgdmFyaWFibGVzIHRvIApzb21ldGhpbmcgbGlrZSAicmVtYWluaW5nX3NwYWNlX3VzYWJsZSIg ZXRjLiBzaW5jZSAicmVtYWluX3VzYWJsZSIgaXMgCm1vcmUgb2YgYSB2ZXJiIHRoYW4gYSBub3Vu LiBCdXQgdGhhdCdzIHNlcmlvdXNseSBuaXRwaWNraW5nLgoKSWYgeW91IGF0IGxlYXN0IGFkZCB0 aGUgY29tbWVudHMgdG8gbWFrZSBpdCBjcnlzdGFsIGNsZWFyIHdoeSB3ZSBkbyBpdCAKdGhpcyB3 YXkgdGhlbiBJJ20gZmluZS4KClJldmlld2VkLWJ5OiBUb21hcyBFbGYgPHRvbWFzLmVsZkBpbnRl bC5jb20+CgpUaGFua3MsClRvbWFzCgo+ICsJaW50IHJldCwgdG90YWxfYnl0ZXMsIHdhaXRfYnl0 ZXMgPSAwOwo+ICsJYm9vbCBuZWVkX3dyYXAgPSBmYWxzZTsKPgo+IC0JCWlmKHJpbmdidWYtPnJl c2VydmVkX3NpemUpIHsKPiAtCQkJdWludDMyX3Qgc2l6ZSA9IHJpbmdidWYtPnJlc2VydmVkX3Np emU7Cj4gKwlpZiAocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKQo+ICsJCXRvdGFsX2J5dGVzID0g Ynl0ZXM7Cj4gKwllbHNlCj4gKwkJdG90YWxfYnl0ZXMgPSBieXRlcyArIHJpbmdidWYtPnJlc2Vy dmVkX3NpemU7Cj4KPiAtCQkJaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmluZ2J1 Zik7Cj4gLQkJCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShyaW5nYnVmLCBzaXpl KTsKPiArCWlmICh1bmxpa2VseShieXRlcyA+IHJlbWFpbl91c2FibGUpKSB7Cj4gKwkJLyoKPiAr CQkgKiBOb3QgZW5vdWdoIHNwYWNlIGZvciB0aGUgYmFzaWMgcmVxdWVzdC4gU28gbmVlZCB0byBm bHVzaAo+ICsJCSAqIG91dCB0aGUgcmVtYWluZGVyIGFuZCB0aGVuIHdhaXQgZm9yIGJhc2UgKyBy ZXNlcnZlZC4KPiArCQkgKi8KPiArCQl3YWl0X2J5dGVzID0gcmVtYWluX2FjdHVhbCArIHRvdGFs X2J5dGVzOwo+ICsJCW5lZWRfd3JhcCA9IHRydWU7Cj4gKwl9IGVsc2Ugewo+ICsJCWlmICh1bmxp a2VseSh0b3RhbF9ieXRlcyA+IHJlbWFpbl91c2FibGUpKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIFRo ZSBiYXNlIHJlcXVlc3Qgd2lsbCBmaXQgYnV0IHRoZSByZXNlcnZlZCBzcGFjZQo+ICsJCQkgKiBm YWxscyBvZmYgdGhlIGVuZC4gU28gb25seSBuZWVkIHRvIHRvIHdhaXQgZm9yIHRoZQo+ICsJCQkg KiByZXNlcnZlZCBzaXplIGFmdGVyIGZsdXNoaW5nIG91dCB0aGUgcmVtYWluZGVyLgo+ICsJCQkg Ki8KPiArCQkJd2FpdF9ieXRlcyA9IHJlbWFpbl9hY3R1YWwgKyByaW5nYnVmLT5yZXNlcnZlZF9z aXplOwo+ICsJCQluZWVkX3dyYXAgPSB0cnVlOwo+ICsJCX0gZWxzZSBpZiAodG90YWxfYnl0ZXMg PiByaW5nYnVmLT5zcGFjZSkgewo+ICsJCQkvKiBObyB3cmFwcGluZyByZXF1aXJlZCwganVzdCB3 YWl0aW5nLiAqLwo+ICsJCQl3YWl0X2J5dGVzID0gdG90YWxfYnl0ZXM7Cj4gICAJCX0KPiAgIAl9 Cj4KPiAtCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IGJ5dGVzKSkgewo+IC0JCXJldCA9 IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShyZXEsIGJ5dGVzKTsKPiArCWlmICh3YWl0X2J5 dGVzKSB7Cj4gKwkJcmV0ID0gbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHJlcSwgd2FpdF9i eXRlcyk7Cj4gICAJCWlmICh1bmxpa2VseShyZXQpKQo+ICAgCQkJcmV0dXJuIHJldDsKPiArCj4g KwkJaWYgKG5lZWRfd3JhcCkKPiArCQkJX193cmFwX3JpbmdfYnVmZmVyKHJpbmdidWYpOwo+ICAg CX0KPgo+ICAgCXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKPiBpbmRleCBhZjdjMTJlLi5lMzljODkxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYwo+IEBAIC0yMTIxLDEyICsyMTIxLDEyIEBAIHN0YXRpYyBpbnQgcmlu Z193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQgbikKPiAg IAl1bnNpZ25lZCBzcGFjZTsKPiAgIAlpbnQgcmV0Owo+Cj4gLQkvKiBUaGUgd2hvbGUgcG9pbnQg b2YgcmVzZXJ2aW5nIHNwYWNlIGlzIHRvIG5vdCB3YWl0ISAqLwo+IC0JV0FSTl9PTihyaW5nYnVm LT5yZXNlcnZlZF9pbl91c2UpOwo+IC0KPiAgIAlpZiAoaW50ZWxfcmluZ19zcGFjZShyaW5nYnVm KSA+PSBuKQo+ICAgCQlyZXR1cm4gMDsKPgo+ICsJLyogVGhlIHdob2xlIHBvaW50IG9mIHJlc2Vy dmluZyBzcGFjZSBpcyB0byBub3Qgd2FpdCEgKi8KPiArCVdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2 ZWRfaW5fdXNlKTsKPiArCj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmcmluZy0+ cmVxdWVzdF9saXN0LCBsaXN0KSB7Cj4gICAJCXNwYWNlID0gX19pbnRlbF9yaW5nX3NwYWNlKHJl cXVlc3QtPnBvc3RmaXgsIHJpbmdidWYtPnRhaWwsCj4gICAJCQkJCSAgIHJpbmdidWYtPnNpemUp Owo+IEBAIC0yMTQ1LDIxICsyMTQ1LDExIEBAIHN0YXRpYyBpbnQgcmluZ193YWl0X2Zvcl9zcGFj ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQgbikKPiAgIAlyZXR1cm4gMDsKPiAg IH0KPgo+IC1zdGF0aWMgaW50IGludGVsX3dyYXBfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZykKPiArc3RhdGljIHZvaWQgX193cmFwX3JpbmdfYnVmZmVyKHN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ICAgewo+ICAgCXVpbnQzMl90IF9faW9tZW0gKnZp cnQ7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJpbmctPmJ1ZmZlcjsK PiAgIAlpbnQgcmVtID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4KPiAtCS8qIENh bid0IHdyYXAgaWYgc3BhY2UgaGFzIGFscmVhZHkgYmVlbiByZXNlcnZlZCEgKi8KPiAtCVdBUk5f T04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPiAtCj4gLQlpZiAocmluZ2J1Zi0+c3BhY2Ug PCByZW0pIHsKPiAtCQlpbnQgcmV0ID0gcmluZ193YWl0X2Zvcl9zcGFjZShyaW5nLCByZW0pOwo+ IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gLQl9Cj4gLQo+ICAgCXZpcnQgPSByaW5n YnVmLT52aXJ0dWFsX3N0YXJ0ICsgcmluZ2J1Zi0+dGFpbDsKPiAgIAlyZW0gLz0gNDsKPiAgIAl3 aGlsZSAocmVtLS0pCj4gQEAgLTIxNjcsOCArMjE1Nyw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfd3Jh cF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+Cj4gICAJcmluZ2J1 Zi0+dGFpbCA9IDA7Cj4gICAJaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZ2J1Zik7Cj4gLQo+ IC0JcmV0dXJuIDA7Cj4gICB9Cj4KPiAgIGludCBpbnRlbF9yaW5nX2lkbGUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZykKPiBAQCAtMjIzOCw5ICsyMjI2LDIxIEBAIHZvaWQgaW50ZWxfcmlu Z19yZXNlcnZlZF9zcGFjZV91c2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4g ICB2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfZW5kKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmKQo+ICAgewo+ICAgCVdBUk5fT04oIXJpbmdidWYtPnJlc2VydmVkX2luX3Vz ZSk7Cj4gLQlXQVJOKHJpbmdidWYtPnRhaWwgPiByaW5nYnVmLT5yZXNlcnZlZF90YWlsICsgcmlu Z2J1Zi0+cmVzZXJ2ZWRfc2l6ZSwKPiAtCSAgICAgInJlcXVlc3QgcmVzZXJ2ZWQgc2l6ZSB0b28g c21hbGw6ICVkIHZzICVkIVxuIiwKPiAtCSAgICAgcmluZ2J1Zi0+dGFpbCAtIHJpbmdidWYtPnJl c2VydmVkX3RhaWwsIHJpbmdidWYtPnJlc2VydmVkX3NpemUpOwo+ICsJaWYgKHJpbmdidWYtPnRh aWwgPiByaW5nYnVmLT5yZXNlcnZlZF90YWlsKSB7Cj4gKwkJV0FSTihyaW5nYnVmLT50YWlsID4g cmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbCArIHJpbmdidWYtPnJlc2VydmVkX3NpemUsCj4gKwkJICAg ICAicmVxdWVzdCByZXNlcnZlZCBzaXplIHRvbyBzbWFsbDogJWQgdnMgJWQhXG4iLAo+ICsJCSAg ICAgcmluZ2J1Zi0+dGFpbCAtIHJpbmdidWYtPnJlc2VydmVkX3RhaWwsIHJpbmdidWYtPnJlc2Vy dmVkX3NpemUpOwo+ICsJfSBlbHNlIHsKPiArCQkvKgo+ICsJCSAqIFRoZSByaW5nIHdhcyB3cmFw cGVkIHdoaWxlIHRoZSByZXNlcnZlZCBzcGFjZSB3YXMgaW4gdXNlLgo+ICsJCSAqIFRoYXQgbWVh bnMgdGhhdCBzb21lIHVua25vd24gYW1vdW50IG9mIHRoZSByaW5nIHRhaWwgd2FzCj4gKwkJICog bm8tb3AgZmlsbGVkIGFuZCBza2lwcGVkLiBUaHVzIHNpbXBseSBhZGRpbmcgdGhlIHJpbmcgc2l6 ZQo+ICsJCSAqIHRvIHRoZSB0YWlsIGFuZCBkb2luZyB0aGUgYWJvdmUgc3BhY2UgY2hlY2sgd2ls bCBub3Qgd29yay4KPiArCQkgKiBSYXRoZXIgdGhhbiBhdHRlbXB0IHRvIHRyYWNrIGhvdyBtdWNo IHRhaWwgd2FzIHNraXBwZWQsCj4gKwkJICogaXQgaXMgbXVjaCBzaW1wbGVyIHRvIHNheSB0aGF0 IGFsc28gc2tpcHBpbmcgdGhlIHNhbml0eQo+ICsJCSAqIGNoZWNrIGV2ZXJ5IG9uY2UgaW4gYSB3 aGlsZSBpcyBub3QgYSBiaWcgaXNzdWUuCj4gKwkJICovCj4gKwl9Cj4KPiAgIAlyaW5nYnVmLT5y ZXNlcnZlZF9zaXplICAgPSAwOwo+ICAgCXJpbmdidWYtPnJlc2VydmVkX2luX3VzZSA9IGZhbHNl Owo+IEBAIC0yMjQ5LDMzICsyMjQ5LDQ1IEBAIHZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFj ZV9lbmQoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gICBzdGF0aWMgaW50IF9f aW50ZWxfcmluZ19wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBieXRl cykKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJpbmctPmJ1 ZmZlcjsKPiAtCWludCByZXQ7Cj4gLQo+IC0JLyoKPiAtCSAqIEFkZCBvbiB0aGUgcmVzZXJ2ZWQg c2l6ZSB0byB0aGUgcmVxdWVzdCB0byBtYWtlIHN1cmUgdGhhdCBhZnRlcgo+IC0JICogdGhlIGlu dGVuZGVkIGNvbW1hbmRzIGhhdmUgYmVlbiBlbWl0dGVkLCB0aGVyZSBpcyBndWFyYW50ZWVkIHRv Cj4gLQkgKiBzdGlsbCBiZSBlbm91Z2ggZnJlZSBzcGFjZSB0byBzZW5kIHRoZW0gdG8gdGhlIGhh cmR3YXJlLgo+IC0JICovCj4gLQlpZiAoIXJpbmdidWYtPnJlc2VydmVkX2luX3VzZSkKPiAtCQli eXRlcyArPSByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+IC0KPiAtCWlmICh1bmxpa2VseShyaW5n YnVmLT50YWlsICsgYnl0ZXMgPiByaW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSkpIHsKPiAtCQlyZXQg PSBpbnRlbF93cmFwX3JpbmdfYnVmZmVyKHJpbmcpOwo+IC0JCWlmICh1bmxpa2VseShyZXQpKQo+ IC0JCQlyZXR1cm4gcmV0Owo+ICsJaW50IHJlbWFpbl91c2FibGUgPSByaW5nYnVmLT5lZmZlY3Rp dmVfc2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4gKwlpbnQgcmVtYWluX2FjdHVhbCA9IHJpbmdidWYt PnNpemUgLSByaW5nYnVmLT50YWlsOwo+ICsJaW50IHJldCwgdG90YWxfYnl0ZXMsIHdhaXRfYnl0 ZXMgPSAwOwo+ICsJYm9vbCBuZWVkX3dyYXAgPSBmYWxzZTsKPgo+IC0JCWlmKHJpbmdidWYtPnJl c2VydmVkX3NpemUpIHsKPiAtCQkJdWludDMyX3Qgc2l6ZSA9IHJpbmdidWYtPnJlc2VydmVkX3Np emU7Cj4gKwlpZiAocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKQo+ICsJCXRvdGFsX2J5dGVzID0g Ynl0ZXM7Cj4gKwllbHNlCj4gKwkJdG90YWxfYnl0ZXMgPSBieXRlcyArIHJpbmdidWYtPnJlc2Vy dmVkX3NpemU7Cj4KPiAtCQkJaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmluZ2J1 Zik7Cj4gLQkJCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShyaW5nYnVmLCBzaXpl KTsKPiArCWlmICh1bmxpa2VseShieXRlcyA+IHJlbWFpbl91c2FibGUpKSB7Cj4gKwkJLyoKPiAr CQkgKiBOb3QgZW5vdWdoIHNwYWNlIGZvciB0aGUgYmFzaWMgcmVxdWVzdC4gU28gbmVlZCB0byBm bHVzaAo+ICsJCSAqIG91dCB0aGUgcmVtYWluZGVyIGFuZCB0aGVuIHdhaXQgZm9yIGJhc2UgKyBy ZXNlcnZlZC4KPiArCQkgKi8KPiArCQl3YWl0X2J5dGVzID0gcmVtYWluX2FjdHVhbCArIHRvdGFs X2J5dGVzOwo+ICsJCW5lZWRfd3JhcCA9IHRydWU7Cj4gKwl9IGVsc2Ugewo+ICsJCWlmICh1bmxp a2VseSh0b3RhbF9ieXRlcyA+IHJlbWFpbl91c2FibGUpKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIFRo ZSBiYXNlIHJlcXVlc3Qgd2lsbCBmaXQgYnV0IHRoZSByZXNlcnZlZCBzcGFjZQo+ICsJCQkgKiBm YWxscyBvZmYgdGhlIGVuZC4gU28gb25seSBuZWVkIHRvIHRvIHdhaXQgZm9yIHRoZQo+ICsJCQkg KiByZXNlcnZlZCBzaXplIGFmdGVyIGZsdXNoaW5nIG91dCB0aGUgcmVtYWluZGVyLgo+ICsJCQkg Ki8KPiArCQkJd2FpdF9ieXRlcyA9IHJlbWFpbl9hY3R1YWwgKyByaW5nYnVmLT5yZXNlcnZlZF9z aXplOwo+ICsJCQluZWVkX3dyYXAgPSB0cnVlOwo+ICsJCX0gZWxzZSBpZiAodG90YWxfYnl0ZXMg PiByaW5nYnVmLT5zcGFjZSkgewo+ICsJCQkvKiBObyB3cmFwcGluZyByZXF1aXJlZCwganVzdCB3 YWl0aW5nLiAqLwo+ICsJCQl3YWl0X2J5dGVzID0gdG90YWxfYnl0ZXM7Cj4gICAJCX0KPiAgIAl9 Cj4KPiAtCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IGJ5dGVzKSkgewo+IC0JCXJldCA9 IHJpbmdfd2FpdF9mb3Jfc3BhY2UocmluZywgYnl0ZXMpOwo+ICsJaWYgKHdhaXRfYnl0ZXMpIHsK PiArCQlyZXQgPSByaW5nX3dhaXRfZm9yX3NwYWNlKHJpbmcsIHdhaXRfYnl0ZXMpOwo+ICAgCQlp ZiAodW5saWtlbHkocmV0KSkKPiAgIAkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCWlmIChuZWVkX3dy YXApCj4gKwkJCV9fd3JhcF9yaW5nX2J1ZmZlcihyaW5nYnVmKTsKPiAgIAl9Cj4KPiAgIAlyZXR1 cm4gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggMGUy YmJjNi4uMzA0Y2FjNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKPiBAQCAtNDczLDcgKzQ3Myw2IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGludGVsX3JpbmdfZ2V0 X3RhaWwoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gICAgKiB3aWxsIGFsd2F5 cyBoYXZlIHN1ZmZpY2llbnQgcm9vbSB0byBkbyBpdHMgc3R1ZmYuIFRoZSByZXF1ZXN0IGNyZWF0 aW9uCj4gICAgKiBjb2RlIGNhbGxzIHRoaXMgYXV0b21hdGljYWxseS4KPiAgICAqLwo+IC1pbnQg aW50ZWxfcmluZ19yZXNlcnZlX3NwYWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCk7Cj4gICB2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwgaW50IHNpemUpOwo+ICAgLyogQ2FuY2VsIHRoZSBy ZXNlcnZhdGlvbiwgZS5nLiBiZWNhdXNlIHRoZSByZXF1ZXN0IGlzIGJlaW5nIGRpc2NhcmRlZC4g Ki8KPiAgIHZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwoc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmdidWYpOwo+IEBAIC00ODIsNCArNDgxLDcgQEAgdm9pZCBpbnRlbF9y aW5nX3Jlc2VydmVkX3NwYWNlX3VzZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7 Cj4gICAvKiBGaW5pc2ggd2l0aCB0aGUgcmVzZXJ2ZWQgc3BhY2UgLSBmb3IgdXNlIGJ5IGk5MTVf YWRkX3JlcXVlc3QoKSBvbmx5LiAqLwo+ICAgdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNl X2VuZChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4KPiArLyogTGVnYWN5IHJp bmdidWZmZXIgc3BlY2lmaWMgcG9ydGlvbiBvZiByZXNlcnZhdGlvbiBjb2RlOiAqLwo+ICtpbnQg aW50ZWxfcmluZ19yZXNlcnZlX3NwYWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCk7Cj4gKwo+ICAgI2VuZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVSX0hfICovCj4KCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==