From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH v3 09/16] drm/i915/gen9: Drop re-allocation of DDB at atomic commit (v2) Date: Fri, 06 May 2016 14:12:49 -0400 Message-ID: <1462558369.30874.10.camel@redhat.com> References: <1461280630-7477-1-git-send-email-matthew.d.roper@intel.com> <1461280630-7477-10-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id C18916E28E for ; Fri, 6 May 2016 18:12:50 +0000 (UTC) In-Reply-To: <1461280630-7477-10-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org, Maarten Lankhorst List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE2LTA0LTIxIGF0IDE2OjE3IC0wNzAwLCBNYXR0IFJvcGVyIHdyb3RlOgo+IE5v dyB0aGF0IHdlJ3JlIHByb3Blcmx5IHByZS1hbGxvY2F0aW5nIHRoZSBEREIgZHVyaW5nIHRoZSBh dG9taWMgY2hlY2sKPiBwaGFzZSBhbmQgd2UgdHJ1c3QgdGhhdCB0aGUgYWxsb2NhdGlvbiBpcyBh cHByb3ByaWF0ZSwgbGV0J3MgYWN0dWFsbHkKPiB1c2UgdGhlIGFsbG9jYXRpb24gY29tcHV0ZWQg YW5kIG5vdCBkdXBsaWNhdGUgdGhhdCB3b3JrIGR1cmluZyB0aGUKPiBjb21taXQgcGhhc2UuCj4g Cj4gdjI6Cj4gwqAtIFNpZ25pZmljYW50IHJlYmFzaW5nIG5vdyB0aGF0IHdlIGNhbiB1c2UgY2Fj aGVkIGRhdGEgcmF0ZXMgYW5kCj4gwqDCoMKgbWluaW11bSBibG9jayBhbGxvY2F0aW9ucyB0byBh dm9pZCBncmFiYmluZyBhZGRpdGlvbmFsIHBsYW5lIHN0YXRlcy4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBN YWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0t LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHzCoMKgMTQgKy0tCj4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoMKgwqDCoMKgfCAyMjQgKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0KPiDCoDIgZmlsZXMgY2hhbmdlZCwgNjcg aW5zZXJ0aW9ucygrKSwgMTcxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+IGluZGV4IGM5NzBlM2UuLjgwZDhmNzcgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEzNTk5LDYgKzEzNTk5LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gwqAKPiDCoAlk cm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKGRldiwgc3RhdGUpOwo+IMKgCWRldl9wcml2LT53 bS5jb25maWcgPSBpbnRlbF9zdGF0ZS0+d21fY29uZmlnOwo+ICsJZGV2X3ByaXYtPndtLnNrbF9y ZXN1bHRzLmRkYiA9IGludGVsX3N0YXRlLT5kZGI7Cj4gwqAJaW50ZWxfc2hhcmVkX2RwbGxfY29t bWl0KHN0YXRlKTsKPiDCoAo+IMKgCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkgewo+IEBAIC0x MzcxNiwxOSArMTM3MTcsNiBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0 IGRybV9kZXZpY2UKPiAqZGV2LAo+IMKgCQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9jcnRjKGNydGMs IG9sZF9jcnRjX3N0YXRlLCBjcnRjLT5zdGF0ZSk7Cj4gwqAJfQo+IMKgCj4gLQkvKgo+IC0JwqAq IFRlbXBvcmFyeSBzYW5pdHkgY2hlY2s6IG1ha2Ugc3VyZSBvdXIgcHJlLWNvbXB1dGVkIEREQiBt YXRjaGVzIHRoZQo+IC0JwqAqIG9uZSB3ZSBhY3R1YWxseSB3aW5kIHVwIHByb2dyYW1taW5nLgo+ IC0JwqAqCj4gLQnCoCogTm90IGEgZ3JlYXQgcGxhY2UgdG8gcHV0IHRoaXMsIGJ1dCB0aGUgZWFz aWVzdCBwbGFjZSB3ZSBoYXZlCj4gYWNjZXNzCj4gLQnCoCogdG8gYm90aCB0aGUgcHJlLWNvbXB1 dGVkIGFuZCBmaW5hbCBEREInczsgd2UnbGwgYmUgcmVtb3ZpbmcgdGhpcwo+IC0JwqAqIGNoZWNr IGluIHRoZSBuZXh0IHBhdGNoIGFueXdheS4KPiAtCcKgKi8KPiAtCVdBUk4oSVNfR0VOOShkZXYp ICYmCj4gLQnCoMKgwqDCoMKgbWVtY21wKCZpbnRlbF9zdGF0ZS0+ZGRiLCAmZGV2X3ByaXYtPndt LnNrbF9yZXN1bHRzLmRkYiwKPiAtCQnCoMKgwqDCoHNpemVvZihpbnRlbF9zdGF0ZS0+ZGRiKSks Cj4gLQnCoMKgwqDCoMKgIlByZS1jb21wdXRlZCBEREIgZG9lcyBub3QgbWF0Y2ggZmluYWwgRERC IVxuIik7Cj4gLQo+IMKgCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkKPiDCoAkJaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9NT0RFU0VUKTsKPiDCoAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IGZjYTQ0ZjguLmYyOGZkMzYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMjg0OSw3ICsyODQ5LDYgQEAgc2tsX3dtX3BsYW5lX2lk KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCj4gwqBzdGF0aWMgdm9pZAo+IMKgc2ts X2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ IMKgCQkJCcKgwqDCoGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gLQkJ CQnCoMKgwqBzdHJ1Y3QgaW50ZWxfd21fY29uZmlnICpjb25maWcsCj4gwqAJCQkJwqDCoMKgc3Ry dWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jLCAvKiBvdXQgKi8KPiDCoAkJCQnCoMKgwqBpbnQgKm51 bV9hY3RpdmUgLyogb3V0ICovKQo+IMKgewo+IEBAIC0yODU3LDI0ICsyODU2LDIyIEBAIHNrbF9k ZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9kZXZpY2UKPiAqZGV2LAo+ IMKgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KPiB0b19pbnRlbF9h dG9taWNfc3RhdGUoc3RhdGUpOwo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiDCoAlzdHJ1Y3QgZHJtX2NydGMgKmZvcl9jcnRjID0gY3N0YXRl LT5iYXNlLmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gwqAJdW5zaWduZWQgaW50 IHBpcGVfc2l6ZSwgZGRiX3NpemU7Cj4gwqAJaW50IG50aF9hY3RpdmVfcGlwZTsKPiDCoAlpbnQg cGlwZSA9IHRvX2ludGVsX2NydGMoZm9yX2NydGMpLT5waXBlOwo+IMKgCj4gLQlpZiAoaW50ZWxf c3RhdGUgJiYgaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMpCj4gLQkJKm51bV9hY3Rp dmUgPSBod2VpZ2h0MzIoaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcyk7Cj4gLQllbHNlIGlmIChp bnRlbF9zdGF0ZSkKPiAtCQkqbnVtX2FjdGl2ZSA9IGh3ZWlnaHQzMihkZXZfcHJpdi0+YWN0aXZl X2NydGNzKTsKPiAtCWVsc2UKPiAtCQkqbnVtX2FjdGl2ZSA9IGNvbmZpZy0+bnVtX3BpcGVzX2Fj dGl2ZTsKPiAtCj4gLQlpZiAoIWNzdGF0ZS0+YmFzZS5hY3RpdmUpIHsKPiArCWlmIChXQVJOX09O KCFzdGF0ZSkgfHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUpIHsKPiDCoAkJYWxsb2MtPnN0YXJ0ID0g MDsKPiDCoAkJYWxsb2MtPmVuZCA9IDA7Cj4gKwkJKm51bV9hY3RpdmUgPSBod2VpZ2h0MzIoZGV2 X3ByaXYtPmFjdGl2ZV9jcnRjcyk7Cj4gwqAJCXJldHVybjsKPiDCoAl9Cj4gwqAKPiArCWlmIChp bnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcykKPiArCQkqbnVtX2FjdGl2ZSA9IGh3ZWln aHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzKTsKPiArCWVsc2UKPiArCQkqbnVtX2FjdGl2 ZSA9IGh3ZWlnaHQzMihkZXZfcHJpdi0+YWN0aXZlX2NydGNzKTsKPiArCj4gwqAJaWYgKElTX0JS T1hUT04oZGV2KSkKPiDCoAkJZGRiX3NpemUgPSBCWFRfRERCX1NJWkU7Cj4gwqAJZWxzZQo+IEBA IC0yODgzLDUwICsyODgwLDIzIEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMo c3RydWN0IGRybV9kZXZpY2UKPiAqZGV2LAo+IMKgCWRkYl9zaXplIC09IDQ7IC8qIDQgYmxvY2tz IGZvciBieXBhc3MgcGF0aCBhbGxvY2F0aW9uICovCj4gwqAKPiDCoAkvKgo+IC0JwqAqIEZJWE1F OiBBdCB0aGUgbW9tZW50IHdlIG1heSBiZSBjYWxsZWQgb24gZWl0aGVyIGluLWZsaWdodCBvciBm dWxseQo+IC0JwqAqIGNvbW1pdHRlZCBjc3RhdGUncy7CoMKgT25jZSB3ZSBmdWxseSBtb3ZlIERE QiBhbGxvY2F0aW9uIGluIHRoZQo+IGNoZWNrCj4gLQnCoCogcGhhc2UsIHdlJ2xsIG9ubHkgYmUg Y2FsbGVkIG9uIGluLWZsaWdodCBzdGF0ZXMgYW5kIHRoZSAnZWxzZScKPiAtCcKgKiBicmFuY2gg aGVyZSB3aWxsIGdvIGF3YXkuCj4gLQnCoCoKPiAtCcKgKiBUaGUgJ2Vsc2UnIGJyYW5jaCBpcyBz bGlnaHRseSByYWN5IGhlcmUsIGJ1dCBpdCB3YXMgcmFjeSB0byBiZWdpbgo+IC0JwqAqIHdpdGg7 IHNpbmNlIGl0J3MgZ29pbmcgYXdheSBzb29uLCBubyBlZmZvcnQgaXMgbWFkZSB0byBhZGRyZXNz Cj4gdGhhdC4KPiArCcKgKiBJZiB0aGUgc3RhdGUgZG9lc24ndCBjaGFuZ2UgdGhlIGFjdGl2ZSBD UlRDJ3MsIHRoZW4gdGhlcmUncwo+ICsJwqAqIG5vIG5lZWQgdG8gcmVjYWxjdWxhdGU7IHRoZSBl eGlzdGluZyBwaXBlIGFsbG9jYXRpb24gbGltaXRzCj4gKwnCoCogc2hvdWxkIHJlbWFpbiB1bmNo YW5nZWQuwqDCoE5vdGUgdGhhdCB3ZSdyZSBzYWZlIGZyb20gcmFjaW5nCj4gKwnCoCogY29tbWl0 cyBzaW5jZSBhbnkgcmFjaW5nIGNvbW1pdCB0aGF0IGNoYW5nZXMgdGhlIGFjdGl2ZSBDUlRDCj4g KwnCoCogbGlzdCB3b3VsZCBuZWVkIHRvIGdyYWIgX2FsbF8gY3J0YyBsb2NrcywgaW5jbHVkaW5n IHRoZSBvbmUKPiArCcKgKiB3ZSBjdXJyZW50bHkgaG9sZC4KPiDCoAnCoCovCj4gLQlpZiAoc3Rh dGUpIHsKPiAtCQkvKgo+IC0JCcKgKiBJZiB0aGUgc3RhdGUgZG9lc24ndCBjaGFuZ2UgdGhlIGFj dGl2ZSBDUlRDJ3MsIHRoZW4KPiB0aGVyZSdzCj4gLQkJwqAqIG5vIG5lZWQgdG8gcmVjYWxjdWxh dGU7IHRoZSBleGlzdGluZyBwaXBlIGFsbG9jYXRpb24KPiBsaW1pdHMKPiAtCQnCoCogc2hvdWxk IHJlbWFpbiB1bmNoYW5nZWQuwqDCoE5vdGUgdGhhdCB3ZSdyZSBzYWZlIGZyb20gcmFjaW5nCj4g LQkJwqAqIGNvbW1pdHMgc2luY2UgYW55IHJhY2luZyBjb21taXQgdGhhdCBjaGFuZ2VzIHRoZSBh Y3RpdmUKPiBDUlRDCj4gLQkJwqAqIGxpc3Qgd291bGQgbmVlZCB0byBncmFiIF9hbGxfIGNydGMg bG9ja3MsIGluY2x1ZGluZyB0aGUKPiBvbmUKPiAtCQnCoCogd2UgY3VycmVudGx5IGhvbGQuCj4g LQkJwqAqLwo+IC0JCWlmICghaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMpIHsKPiAt CQkJKmFsbG9jID0gZGV2X3ByaXYtPndtLnNrbF9ody5kZGIucGlwZVtwaXBlXTsKPiAtCQkJcmV0 dXJuOwo+IC0JCX0KPiAtCj4gLQkJbnRoX2FjdGl2ZV9waXBlID0gaHdlaWdodDMyKGludGVsX3N0 YXRlLT5hY3RpdmVfY3J0Y3MgJgo+IC0JCQkJCcKgwqDCoMKgKGRybV9jcnRjX21hc2soZm9yX2Ny dGMpIC0gMSkpOwo+IC0JCXBpcGVfc2l6ZSA9IGRkYl9zaXplIC8gaHdlaWdodDMyKGludGVsX3N0 YXRlLT5hY3RpdmVfY3J0Y3MpOwo+IC0JCWFsbG9jLT5zdGFydCA9IG50aF9hY3RpdmVfcGlwZSAq IGRkYl9zaXplIC8gKm51bV9hY3RpdmU7Cj4gLQkJYWxsb2MtPmVuZCA9IGFsbG9jLT5zdGFydCAr IHBpcGVfc2l6ZTsKPiAtCX0gZWxzZSB7Cj4gLQkJbnRoX2FjdGl2ZV9waXBlID0gMDsKPiAtCQlm b3JfZWFjaF9jcnRjKGRldiwgY3J0Yykgewo+IC0JCQlpZiAoIXRvX2ludGVsX2NydGMoY3J0Yykt PmFjdGl2ZSkKPiAtCQkJCWNvbnRpbnVlOwo+IC0KPiAtCQkJaWYgKGNydGMgPT0gZm9yX2NydGMp Cj4gLQkJCQlicmVhazsKPiAtCj4gLQkJCW50aF9hY3RpdmVfcGlwZSsrOwo+IC0JCX0KPiAtCj4g LQkJcGlwZV9zaXplID0gZGRiX3NpemUgLyBjb25maWctPm51bV9waXBlc19hY3RpdmU7Cj4gLQkJ YWxsb2MtPnN0YXJ0ID0gbnRoX2FjdGl2ZV9waXBlICogZGRiX3NpemUgLwo+IC0JCQljb25maWct Pm51bV9waXBlc19hY3RpdmU7Cj4gLQkJYWxsb2MtPmVuZCA9IGFsbG9jLT5zdGFydCArIHBpcGVf c2l6ZTsKPiArCWlmICghaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMpIHsKPiArCQkq YWxsb2MgPSBkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5waXBlW3BpcGVdOwoKU28gSSBmaW5hbGx5 IGZpZ3VyZWQgb3V0IHdoYXQncyBjYXVzaW5nIGFsbCBvZiB0aGUgdmFsaWQgd20gY2FsY3VsYXRp b25zIHRvIGdldApyZWplY3RlZCwgbGVhZGluZyB0byBibGFuayBzY3JlZW5zIGV0Yy4gZXRjLiBU aGUgcHJvYmxlbSBpcyB0aGlzIGxpbmUgcmlnaHQgaGVyZQp3aGVyZSB3ZSBhc3NpZ24gKmFsbG9j LCB3ZSBuZXZlciBhY3R1YWxseSBzZXQgZGV2X3ByaXYtPndtLnNrbF9ody5kZGIucGlwZVtwaXBl XSAKdG8gYSB2YWx1ZSBhbnl3aGVyZSBzbyB3ZSBlbmQgdXAgaGF2aW5nIGJvZ3VzIGRkYiBlbnRy eSBzaXplcy4gSWYgeW91IGNoYW5nZSBpdAp0byBzb21ldGhpbmcgbGlrZToKCgkJKmFsbG9jID0g ZGV2X3ByaXYtPndtLnNrbF9ody5kZGIucGxhbmVbcGlwZV1baW50ZWxfY3J0Yy0+cGxhbmVdOwoK V2UgZ2V0IHRoZSByaWdodCB2YWx1ZXMgYW5kIGV2ZXJ5dGhpbmcgc3RhcnRzIHdvcmtpbmcgYXMg ZXhwZWN0ZWQuIEJUVzogVGhpbmdzCnNlZW0gdG8gYmUgcHJldHR5IHN0YWJsZSB3aXRoIHRoaXMg cGF0Y2hzZXQgYWZ0ZXIgdGhpcyBmaXgsIGhhdmVuJ3QgdHJpZWQgaXQgb24KYW55IG90aGVyIHBs YXRmb3JtcyB0aGVuIHNrbCB5ZXQgdGhvdWdoIHNvIEknbGwgbGV0IHlvdSBrbm93IGlmIEkgcnVu IGludG8gYW55Cm1vcmUgcHJvYmxlbXMuCgo+ICsJCXJldHVybjsKPiDCoAl9Cj4gKwo+ICsJbnRo X2FjdGl2ZV9waXBlID0gaHdlaWdodDMyKGludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MgJgo+ICsJ CQkJwqDCoMKgwqAoZHJtX2NydGNfbWFzayhmb3JfY3J0YykgLSAxKSk7Cj4gKwlwaXBlX3NpemUg PSBkZGJfc2l6ZSAvIGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzKTsKPiArCWFs bG9jLT5zdGFydCA9IG50aF9hY3RpdmVfcGlwZSAqIGRkYl9zaXplIC8gKm51bV9hY3RpdmU7Cj4g KwlhbGxvYy0+ZW5kID0gYWxsb2MtPnN0YXJ0ICsgcGlwZV9zaXplOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgdW5zaWduZWQgaW50IHNrbF9jdXJzb3JfYWxsb2NhdGlvbihpbnQgbnVtX2FjdGl2ZSkK PiBAQCAtMzAyNSw2MiArMjk5NSwzMyBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0 ZShzdHJ1Y3QKPiBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jc3RhdGUpCj4gwqAJc3RydWN0IGRy bV9jcnRjICpjcnRjID0gY3N0YXRlLT5jcnRjOwo+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7Cj4gwqAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOwo+ICsJY29uc3Qgc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gwqAJY29u c3Qgc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnBzdGF0ZTsKPiDCoAl1bnNpZ25lZCBpbnQgcmF0ZSwgdG90YWxfZGF0YV9yYXRlID0g MDsKPiDCoAlpbnQgaWQ7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoV0FSTl9PTighc3RhdGUpKQo+ ICsJCXJldHVybiAwOwo+IMKgCj4gwqAJLyogQ2FsY3VsYXRlIGFuZCBjYWNoZSBkYXRhIHJhdGUg Zm9yIGVhY2ggcGxhbmUgKi8KPiAtCS8qCj4gLQnCoCogRklYTUU6IEF0IHRoZSBtb21lbnQgdGhp cyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIG9uIGVpdGhlciBhbgo+IC0JwqAqIGluLWZsaWdodCBv ciBhIGNvbW1pdHRlZCBzdGF0ZSBvYmplY3QuwqDCoElmIGl0J3MgaW4tZmxpZ2h0IHRoZW4gd2UK PiAtCcKgKiBvbmx5IHdhbnQgdG8gcmUtY2FsY3VsYXRlIHRoZSBwbGFuZSBkYXRhIHJhdGUgZm9y IHBsYW5lcyB0aGF0IGFyZQo+IC0JwqAqIHBhcnQgb2YgdGhlIHRyYW5zYWN0aW9uIChpLmUuLCB3 ZSBkb24ndCB3YW50IHRvIGdyYWIgYW55Cj4gYWRkaXRpb25hbAo+IC0JwqAqIHBsYW5lIHN0YXRl cyBpZiB3ZSBkb24ndCBoYXZlIHRvKS7CoMKgSWYgd2UncmUgb3BlcmF0aW5nIG9uCj4gY29tbWl0 dGVkCj4gLQnCoCogc3RhdGUsIHdlJ2xsIGp1c3QgZ28gYWhlYWQgYW5kIHJlY2FsY3VsYXRlIHRo ZSBwbGFuZSBkYXRhIHJhdGUgZm9yCj4gLQnCoCogYWxsIHBsYW5lcy4KPiAtCcKgKgo+IC0JwqAq IE9uY2Ugd2UgZmluaXNoIG1vdmluZyBvdXIgRERCIGFsbG9jYXRpb24gdG8gdGhlIGF0b21pYyBj aGVjawo+IHBoYXNlLAo+IC0JwqAqIHdlJ2xsIG9ubHkgYmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9u IG9uIGluLWZsaWdodCBzdGF0ZSBvYmplY3RzLCBzbwo+IC0JwqAqIHRoZSAnZWxzZScgYnJhbmNo IGhlcmUgd2lsbCBnbyBhd2F5Lgo+IC0JwqAqLwo+IC0JaWYgKHN0YXRlKSB7Cj4gLQkJc3RydWN0 IGRybV9wbGFuZSAqcGxhbmU7Cj4gLQkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlOwo+ IC0JCWludCBpOwo+IC0KPiAtCQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUs IHBzdGF0ZSwgaSkgewo+IC0JCQlpbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsK PiAtCQkJaWQgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+IC0KPiAtCQkJaWYgKGlu dGVsX3BsYW5lLT5waXBlICE9IGludGVsX2NydGMtPnBpcGUpCj4gLQkJCQljb250aW51ZTsKPiAt Cj4gLQkJCS8qIHBhY2tlZC91diAqLwo+IC0JCQlyYXRlID0gc2tsX3BsYW5lX3JlbGF0aXZlX2Rh dGFfcmF0ZShpbnRlbF9jc3RhdGUsCj4gLQkJCQkJCQnCoMKgwqDCoHBzdGF0ZSwgMCk7Cj4gLQkJ CWludGVsX2NzdGF0ZS0+d20uc2tsLnBsYW5lX2RhdGFfcmF0ZVtpZF0gPSByYXRlOwo+IC0KPiAt CQkJLyogeS1wbGFuZSAqLwo+IC0JCQlyYXRlID0gc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0 ZShpbnRlbF9jc3RhdGUsCj4gLQkJCQkJCQnCoMKgwqDCoHBzdGF0ZSwgMSk7Cj4gLQkJCWludGVs X2NzdGF0ZS0+d20uc2tsLnBsYW5lX3lfZGF0YV9yYXRlW2lkXSA9IHJhdGU7Cj4gLQkJfQo+IC0J fSBlbHNlIHsKPiAtCQlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0 YywgaW50ZWxfcGxhbmUpIHsKPiAtCQkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0 YXRlID0KPiAtCQkJCWludGVsX3BsYW5lLT5iYXNlLnN0YXRlOwo+IC0JCQlpbnQgaWQgPSBza2xf d21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+ICsJZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3Rh dGUsIHBsYW5lLCBwc3RhdGUsIGkpIHsKPiArCQlpZCA9IHNrbF93bV9wbGFuZV9pZCh0b19pbnRl bF9wbGFuZShwbGFuZSkpOwo+ICsJCWludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUp Owo+IMKgCj4gLQkJCS8qIHBhY2tlZC91diAqLwo+IC0JCQlyYXRlID0gc2tsX3BsYW5lX3JlbGF0 aXZlX2RhdGFfcmF0ZShpbnRlbF9jc3RhdGUsCj4gLQkJCQkJCQnCoMKgwqDCoHBzdGF0ZSwgMCk7 Cj4gLQkJCWludGVsX2NzdGF0ZS0+d20uc2tsLnBsYW5lX2RhdGFfcmF0ZVtpZF0gPSByYXRlOwo+ ICsJCWlmIChpbnRlbF9wbGFuZS0+cGlwZSAhPSBpbnRlbF9jcnRjLT5waXBlKQo+ICsJCQljb250 aW51ZTsKPiDCoAo+IC0JCQkvKiB5LXBsYW5lICovCj4gLQkJCXJhdGUgPSBza2xfcGxhbmVfcmVs YXRpdmVfZGF0YV9yYXRlKGludGVsX2NzdGF0ZSwKPiAtCQkJCQkJCcKgwqDCoMKgcHN0YXRlLCAx KTsKPiAtCQkJaW50ZWxfY3N0YXRlLT53bS5za2wucGxhbmVfeV9kYXRhX3JhdGVbaWRdID0gcmF0 ZTsKPiAtCQl9Cj4gKwkJLyogcGFja2VkL3V2ICovCj4gKwkJcmF0ZSA9IHNrbF9wbGFuZV9yZWxh dGl2ZV9kYXRhX3JhdGUoaW50ZWxfY3N0YXRlLAo+ICsJCQkJCQnCoMKgwqDCoHBzdGF0ZSwgMCk7 Cj4gKwkJaW50ZWxfY3N0YXRlLT53bS5za2wucGxhbmVfZGF0YV9yYXRlW2lkXSA9IHJhdGU7Cj4g Kwo+ICsJCS8qIHktcGxhbmUgKi8KPiArCQlyYXRlID0gc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFf cmF0ZShpbnRlbF9jc3RhdGUsCj4gKwkJCQkJCcKgwqDCoMKgcHN0YXRlLCAxKTsKPiArCQlpbnRl bF9jc3RhdGUtPndtLnNrbC5wbGFuZV95X2RhdGFfcmF0ZVtpZF0gPSByYXRlOwo+IMKgCX0KPiDC oAo+IMKgCS8qIENhbGN1bGF0ZSBDUlRDJ3MgdG90YWwgZGF0YSByYXRlIGZyb20gY2FjaGVkIHZh bHVlcyAqLwo+IEBAIC0zMTA0LDggKzMwNDUsNiBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiDCoAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUgPSBjc3RhdGUtPmJhc2Uuc3RhdGU7Cj4gwqAJc3RydWN0IGRybV9jcnRjICpjcnRj ID0gY3N0YXRlLT5iYXNlLmNydGM7Cj4gwqAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMt PmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKPiAtCXN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZyA9ICZkZXZfcHJpdi0+d20uY29u ZmlnOwo+IMKgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKPiDCoAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+IMKgCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lOwo+IEBAIC0zMTE5LDYgKzMwNTgsOSBAQCBza2xfYWxsb2NhdGVfcGlw ZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiDCoAlpbnQgbnVtX2FjdGl2 ZTsKPiDCoAlpbnQgaWQsIGk7Cj4gwqAKPiArCWlmIChXQVJOX09OKCFzdGF0ZSkpCj4gKwkJcmV0 dXJuIDA7Cj4gKwo+IMKgCWlmICghY3N0YXRlLT5iYXNlLmFjdGl2ZSkgewo+IMKgCQlkZGItPnBp cGVbcGlwZV0uc3RhcnQgPSBkZGItPnBpcGVbcGlwZV0uZW5kID0gMDsKPiDCoAkJbWVtc2V0KGRk Yi0+cGxhbmVbcGlwZV0sIDAsIHNpemVvZihkZGItPnBsYW5lW3BpcGVdKSk7Cj4gQEAgLTMxMjYs OCArMzA2OCw3IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3N0YXRlLAo+IMKgCQlyZXR1cm4gMDsKPiDCoAl9Cj4gwqAKPiAtCXNrbF9kZGJfZ2V0X3Bp cGVfYWxsb2NhdGlvbl9saW1pdHMoZGV2LCBjc3RhdGUsIGNvbmZpZywgYWxsb2MsCj4gLQkJCQkJ wqDCoMKgJm51bV9hY3RpdmUpOwo+ICsJc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0 cyhkZXYsIGNzdGF0ZSwgYWxsb2MsICZudW1fYWN0aXZlKTsKPiDCoAlhbGxvY19zaXplID0gc2ts X2RkYl9lbnRyeV9zaXplKGFsbG9jKTsKPiDCoAlpZiAoYWxsb2Nfc2l6ZSA9PSAwKSB7Cj4gwqAJ CW1lbXNldChkZGItPnBsYW5lW3BpcGVdLCAwLCBzaXplb2YoZGRiLT5wbGFuZVtwaXBlXSkpOwo+ IEBAIC0zMTM5LDUzICszMDgwLDMxIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+IMKgCWRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09S XS5lbmQgPSBhbGxvYy0+ZW5kOwo+IMKgCj4gwqAJYWxsb2Nfc2l6ZSAtPSBjdXJzb3JfYmxvY2tz Owo+IC0JYWxsb2MtPmVuZCAtPSBjdXJzb3JfYmxvY2tzOwo+IMKgCj4gwqAJLyogMS4gQWxsb2Nh dGUgdGhlIG1pbmludW0gcmVxdWlyZWQgYmxvY2tzIGZvciBlYWNoIGFjdGl2ZSBwbGFuZSAqLwo+ IC0JLyoKPiAtCcKgKiBUT0RPOiBSZW1vdmUgc3VwcG9ydCBmb3IgYWxyZWFkeS1jb21taXR0ZWQg c3RhdGUgb25jZSB3ZQo+IC0JwqAqIG9ubHkgYWxsb2NhdGUgRERCIG9uIGluLWZsaWdodCBzdGF0 ZXMuCj4gLQnCoCovCj4gLQlpZiAoc3RhdGUpIHsKPiAtCQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0 ZShzdGF0ZSwgcGxhbmUsIHBzdGF0ZSwgaSkgewo+IC0JCQlpbnRlbF9wbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lKTsKPiAtCQkJaWQgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+ IC0KPiAtCQkJaWYgKGludGVsX3BsYW5lLT5waXBlICE9IHBpcGUpCj4gLQkJCQljb250aW51ZTsK PiAtCj4gLQkJCWlmICghdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKS0+dmlzaWJsZSkgewo+ IC0JCQkJbWluaW11bVtpZF0gPSAwOwo+IC0JCQkJeV9taW5pbXVtW2lkXSA9IDA7Cj4gLQkJCQlj b250aW51ZTsKPiAtCQkJfQo+IC0JCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVf Q1VSU09SKSB7Cj4gLQkJCQltaW5pbXVtW2lkXSA9IDA7Cj4gLQkJCQl5X21pbmltdW1baWRdID0g MDsKPiAtCQkJCWNvbnRpbnVlOwo+IC0JCQl9Cj4gLQo+IC0JCQltaW5pbXVtW2lkXSA9IDg7Cj4g LQkJCWlmIChwc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKQo+IC0J CQkJeV9taW5pbXVtW2lkXSA9IDg7Cj4gLQkJCWVsc2UKPiAtCQkJCXlfbWluaW11bVtpZF0gPSAw Owo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4gLQkJZm9yX2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0Yyhk ZXYsIGludGVsX2NydGMsIGludGVsX3BsYW5lKSB7Cj4gLQkJCXN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lID0gJmludGVsX3BsYW5lLT5iYXNlOwo+IC0JCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lLT5zdGF0ZS0+ZmI7Cj4gLQkJCWludCBpZCA9IHNrbF93bV9wbGFuZV9pZChpbnRl bF9wbGFuZSk7Cj4gLQo+IC0JCQlpZiAoIXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0 ZSktPnZpc2libGUpCj4gLQkJCQljb250aW51ZTsKPiArCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRl KHN0YXRlLCBwbGFuZSwgcHN0YXRlLCBpKSB7Cj4gKwkJaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZSk7Cj4gKwkJaWQgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+IMKg Cj4gLQkJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4gLQkJCQlj b250aW51ZTsKPiArCQlpZiAoaW50ZWxfcGxhbmUtPnBpcGUgIT0gcGlwZSkKPiArCQkJY29udGlu dWU7Cj4gwqAKPiAtCQkJbWluaW11bVtpZF0gPSA4Owo+IC0JCQl5X21pbmltdW1baWRdID0gKGZi LT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKQo+ID8gOCA6IDA7Cj4gKwkJaWYgKCF0 b19pbnRlbF9wbGFuZV9zdGF0ZShwc3RhdGUpLT52aXNpYmxlKSB7Cj4gKwkJCW1pbmltdW1baWRd ID0gMDsKPiArCQkJeV9taW5pbXVtW2lkXSA9IDA7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiAr CQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7Cj4gKwkJCW1pbmlt dW1baWRdID0gMDsKPiArCQkJeV9taW5pbXVtW2lkXSA9IDA7Cj4gKwkJCWNvbnRpbnVlOwo+IMKg CQl9Cj4gKwo+ICsJCW1pbmltdW1baWRdID0gODsKPiArCQlpZiAocHN0YXRlLT5mYi0+cGl4ZWxf Zm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikKPiArCQkJeV9taW5pbXVtW2lkXSA9IDg7Cj4gKwkJ ZWxzZQo+ICsJCQl5X21pbmltdW1baWRdID0gMDsKPiDCoAl9Cj4gwqAKPiDCoAlmb3IgKGkgPSAw OyBpIDwgUExBTkVfQ1VSU09SOyBpKyspIHsKPiBAQCAtMzczNiw3ICszNjU1LDYgQEAgc3RhdGlj IGJvb2wgc2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiDCoAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gwqAJc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+ c3RhdGUpOwo+IMKgCj4gLQlXQVJOX09OKHNrbF9hbGxvY2F0ZV9waXBlX2RkYihjc3RhdGUsIGRk YikgIT0gMCk7Cj4gwqAJc2tsX2J1aWxkX3BpcGVfd20oY3N0YXRlLCBkZGIsIHBpcGVfd20pOwo+ IMKgCj4gwqAJaWYgKCFtZW1jbXAoJmludGVsX2NydGMtPndtLmFjdGl2ZS5za2wsIHBpcGVfd20s IHNpemVvZigqcGlwZV93bSkpKQo+IEBAIC0zODAwLDE2ICszNzE4LDYgQEAgc3RhdGljIHZvaWQg c2tsX2NsZWFyX3dtKHN0cnVjdCBza2xfd21fdmFsdWVzCj4gKndhdGVybWFya3MsIGVudW0gcGlw ZSBwaXBlKQo+IMKgCW1lbXNldCh3YXRlcm1hcmtzLT5wbGFuZV90cmFuc1twaXBlXSwKPiDCoAnC oMKgwqDCoMKgwqDCoDAsIHNpemVvZih1aW50MzJfdCkgKiBJOTE1X01BWF9QTEFORVMpOwo+IMKg CXdhdGVybWFya3MtPnBsYW5lX3RyYW5zW3BpcGVdW1BMQU5FX0NVUlNPUl0gPSAwOwo+IC0KPiAt CS8qIENsZWFyIGRkYiBlbnRyaWVzIGZvciBwaXBlICovCj4gLQltZW1zZXQoJndhdGVybWFya3Mt PmRkYi5waXBlW3BpcGVdLCAwLCBzaXplb2Yoc3RydWN0IHNrbF9kZGJfZW50cnkpKTsKPiAtCW1l bXNldCgmd2F0ZXJtYXJrcy0+ZGRiLnBsYW5lW3BpcGVdLCAwLAo+IC0JwqDCoMKgwqDCoMKgwqBz aXplb2Yoc3RydWN0IHNrbF9kZGJfZW50cnkpICogSTkxNV9NQVhfUExBTkVTKTsKPiAtCW1lbXNl dCgmd2F0ZXJtYXJrcy0+ZGRiLnlfcGxhbmVbcGlwZV0sIDAsCj4gLQnCoMKgwqDCoMKgwqDCoHNp emVvZihzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSkgKiBJOTE1X01BWF9QTEFORVMpOwo+IC0JbWVtc2V0 KCZ3YXRlcm1hcmtzLT5kZGIucGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXSwgMCwKPiAtCcKgwqDC oMKgwqDCoMKgc2l6ZW9mKHN0cnVjdCBza2xfZGRiX2VudHJ5KSk7Cj4gLQo+IMKgfQo+IMKgCj4g wqBzdGF0aWMgaW50Ci0tIApDaGVlcnMsCglMeXVkZQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==