From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 3/3] drm/i915: Don't assume primary & cursor are always on for wm calculation (v3) Date: Mon, 9 Mar 2015 19:57:29 +0200 Message-ID: <20150309175729.GB11371@intel.com> References: <1425921565-10828-1-git-send-email-matthew.d.roper@intel.com> <1425921565-10828-4-git-send-email-matthew.d.roper@intel.com> <20150309174400.GA11371@intel.com> <20150309174808.GE27526@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 787796E560 for ; Mon, 9 Mar 2015 10:57:33 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150309174808.GE27526@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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXIgMDksIDIwMTUgYXQgMTA6NDg6MDhBTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBNb24sIE1hciAwOSwgMjAxNSBhdCAwNzo0NDowMFBNICswMjAwLCBWaWxsZSBTeXJq w6Rsw6Qgd3JvdGU6Cj4gPiBPbiBNb24sIE1hciAwOSwgMjAxNSBhdCAxMDoxOToyNUFNIC0wNzAw LCBNYXR0IFJvcGVyIHdyb3RlOgo+ID4gPiBDdXJyZW50IElMSy1zdHlsZSB3YXRlcm1hcmsgY29k ZSBhc3N1bWVzIHRoZSBwcmltYXJ5IHBsYW5lIGFuZCBjdXJzb3IKPiA+ID4gcGxhbmUgYXJlIGFs d2F5cyBlbmFibGVkLiAgVGhpcyBhc3N1bXB0aW9uLCBhbG9uZyB3aXRoIHRoZSBjb21iaW5hdGlv bgo+ID4gPiBvZiB0d28gaW5kZXBlbmRlbnQgY29tbWl0cyB0aGF0IGdvdCBtZXJnZWQgYXQgdGhl IHNhbWUgdGltZSwgcmVzdWx0cyBpbgo+ID4gPiBhIE5VTEwgZGVyZWZlcmVuY2UuICBUaGUgb2Zm ZW5kaW5nIGNvbW1pdHMgYXJlOgo+ID4gPiAKPiA+ID4gICAgICAgICBjb21taXQgZmQyZDYxMzQx YmYzOWQxMDU0MjU2YzA3ZDZlZGRkNjI0ZWJjNDI0MQo+ID4gPiAgICAgICAgIEF1dGhvcjogTWF0 dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiA+ID4gICAgICAgICBEYXRlOiAg IEZyaSBGZWIgMjcgMTA6MTI6MDEgMjAxNSAtMDgwMAo+ID4gPiAKPiA+ID4gICAgICAgICAgICAg ZHJtL2k5MTU6IFVzZSBwbGFuZS0+c3RhdGUtPmZiIGluIHdhdGVybWFyayBjb2RlICh2MikKPiA+ ID4gCj4gPiA+IGFuZAo+ID4gPiAKPiA+ID4gICAgICAgICBjb21taXQgMGZkYTY1NjgwZTkyNTQ1 Y2FlYTViZTc4MDVhN2YwYTYxN2ZiNmMyMAo+ID4gPiAgICAgICAgIEF1dGhvcjogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiA+ID4gICAgICAgICBEYXRlOiAgIEZy aSBGZWIgMjcgMTU6MTI6MzUgMjAxNSArMDAwMAo+ID4gPiAKPiA+ID4gICAgICAgICAgICAgZHJt L2k5MTUvc2tsOiBVcGRhdGUgd2F0ZXJtYXJrcyBmb3IgWSB0aWxpbmcKPiA+ID4gCj4gPiA+IFRo ZSBmaXJzdCBjb21taXQgY2F1c2VzIHVzIHRvIHVzZSB0aGUgRkIgZnJvbSBwbGFuZS0+c3RhdGUt PmZiIHJhdGhlcgo+ID4gPiB0aGFuIHRoZSBsZWdhY3kgcGxhbmUtPmZiLCB3aGljaCBpcyB1cGRh dGVkIGEgYml0IGxhdGVyIGluIHRoZSBwcm9jZXNzLgo+ID4gPiAKPiA+ID4gVGhlIHNlY29uZCBj b21taXQgaW5jbHVkZXMgYSBjaGFuZ2UgdGhhdCBub3cgdHJpZ2dlcnMgd2F0ZXJtYXJrCj4gPiA+ IHJlcHJvZ3JhbW1pbmcgb24gcHJpbWFyeSBwbGFuZSBlbmFibGUvZGlzYWJsZSB3aGVyZSB3ZSBk aWRuJ3QgaGF2ZSBvbmUKPiA+ID4gYmVmb3JlICh3aGljaCB3YXNuJ3QgcmVhbGx5IGNvcnJlY3Qs IGJ1dCB3ZSBoYWQgYmVlbiBnZXR0aW5nIGx1Y2t5Cj4gPiA+IGJlY2F1c2Ugd2UgYWx3YXlzIGNh bGN1bGF0ZWQgYXMgaWYgdGhlIHByaW1hcnkgcGxhbmUgd2FzIG9uKS4KPiA+ID4gCj4gPiA+IFRv Z2V0aGVyLCB0aGVzZSB0d28gY29tbWl0cyBjYXVzZSB0aGUgd2F0ZXJtYXJrIGNhbGN1bGF0aW9u IHRvCj4gPiA+IChwcm9wZXJseSkgc2VlIHBsYW5lLT5zdGF0ZS0+ZmIgPSBOVUxMIHdoZW4gd2Un cmUgaW4gdGhlIHByb2Nlc3Mgb2YKPiA+ID4gZGlzYWJsaW5nIHRoZSBwcmltYXJ5IHBsYW5lLiAg SG93ZXZlciB0aGUgZXhpc3Rpbmcgd2F0ZXJtYXJrIGNvZGUKPiA+ID4gYXNzdW1lcyB0aGVyZSdz IGFsd2F5cyBhIHByaW1hcnkgZmIgYW5kIHRyaWVzIHRvIGRlcmVmZXJlbmNlIGl0IHRvIGZpbmQK PiA+ID4gb3V0IHBpeGVsIGZvcm1hdCAvIGJwcCBpbmZvcm1hdGlvbi4KPiA+ID4gCj4gPiA+IFRo ZSBmaXggaXMgdG8gbWFrZSBJTEstc3R5bGUgd2F0ZXJtYXJrIGNhbGN1bGF0aW9uIGFjdHVhbGx5 IGNoZWNrIHRoZQo+ID4gPiB0cnVlIHN0YXR1cyBvZiBwcmltYXJ5ICYgY3Vyc29yIHBsYW5lcyBh bmQgYWRqdXN0IG91ciB3YXRlcm1hcmsgbG9naWMKPiA+ID4gYWNjb3JkaW5nbHkuCj4gPiA+IAo+ ID4gPiB2MjogVXBkYXRlIHVuY2hlY2tlZCB1c2VzIG9mIHN0YXRlLT5mYiBmb3Igb3RoZXIgcGxh dGZvcm1zIChwbnYsIHNrbCwKPiA+ID4gICAgIGV0Yy4pLiAgTm90ZSB0aGF0IHRoaXMgaXMganVz dCBhIHRlbXBvcmFyeSBmaXguICBVbHRpbWF0ZWx5IHRoZQo+ID4gPiAgICAgdXNlZnVsIGluZm9y bWF0aW9uIGlzIGdvaW5nIHRvIGJlIGNvbXB1dGVkIGF0IGNoZWNrIHRpbWUgYW5kIHN0b3JlZAo+ ID4gPiAgICAgcmlnaHQgaW4gdGhlIHN0YXRlIHN0cnVjdHVyZXMgc28gdGhhdCB3ZSBkb24ndCBo YXZlIHRvIGZpZ3VyZSB0aGlzCj4gPiA+ICAgICBhbGwgb3V0IHdoaWxlIHdlJ3JlIHN1cHBvc2Vk IHRvIGJlIHByb2dyYW1taW5nIHRoZSB3YXRlcm1hcmtzLgo+ID4gPiAgICAgKGNhdWdodCBieSBU dnJ0a28pCj4gPiA+IAo+ID4gPiB2MzogRml4IGEgY291cGxlIGNvcHkvcGFzdGUgbWlzdGFrZXMg aW4gU0tMIGNvZGUuIChUdnJ0a28pCj4gPiA+IAo+ID4gPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KPiA+ID4gUmVwb3J0ZWQtYnk6IE1pY2hhZWwgTGV1Y2h0 ZW5idXJnIDxtaWNoYWVsQHNsYXNoaG9tZS5vcmc+Cj4gPiA+IEJ1Z3ppbGxhOiBodHRwczovL2J1 Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM4OAo+ID4gPiBTaWduZWQtb2Zm LWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ID4gPiAtLS0KPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgfCAxMTMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDgyIGluc2Vy dGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCj4gPiA+IGluZGV4IGEwNmEyYzcuLjIwN2M5NzMgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwo+ID4gPiBAQCAtNjA4LDEyICs2MDgsMTcgQEAgc3RhdGljIHZvaWQgcGlu ZXZpZXdfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51c2VkX2NydGMpCj4gPiA+ICAJY3J0 YyA9IHNpbmdsZV9lbmFibGVkX2NydGMoZGV2KTsKPiA+ID4gIAlpZiAoY3J0Yykgewo+ID4gPiAg CQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZTsKPiA+ID4gLQkJ aW50IHBpeGVsX3NpemUgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVyX3BpeGVs IC8gODsKPiA+ID4gKwkJaW50IHBpeGVsX3NpemU7Cj4gPiA+ICAJCWludCBjbG9jazsKPiA+ID4g IAo+ID4gPiAgCQlhZGp1c3RlZF9tb2RlID0gJnRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4gPiAgCQljbG9jayA9IGFkanVzdGVkX21vZGUtPmNydGNf Y2xvY2s7Cj4gPiA+ICAKPiA+ID4gKwkJaWYgKGNydGMtPnByaW1hcnktPnN0YXRlLT5mYikKPiA+ ID4gKwkJCXBpeGVsX3NpemUgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVyX3Bp eGVsIC8gODsKPiA+ID4gKwkJZWxzZQo+ID4gPiArCQkJcGl4ZWxfc2l6ZSA9IDQ7Cj4gPiA+ICsK PiA+ID4gIAkJLyogRGlzcGxheSBTUiAqLwo+ID4gPiAgCQl3bSA9IGludGVsX2NhbGN1bGF0ZV93 bShjbG9jaywgJnBpbmV2aWV3X2Rpc3BsYXlfd20sCj4gPiA+ICAJCQkJCXBpbmV2aWV3X2Rpc3Bs YXlfd20uZmlmb19zaXplLAo+ID4gPiBAQCAtNjg0LDcgKzY4OSwxMSBAQCBzdGF0aWMgYm9vbCBn NHhfY29tcHV0ZV93bTAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gIAljbG9jayA9IGFk anVzdGVkX21vZGUtPmNydGNfY2xvY2s7Cj4gPiA+ICAJaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+ Y3J0Y19odG90YWw7Cj4gPiA+ICAJaGRpc3BsYXkgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5jb25m aWctPnBpcGVfc3JjX3c7Cj4gPiA+IC0JcGl4ZWxfc2l6ZSA9IGNydGMtPnByaW1hcnktPnN0YXRl LT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4Owo+ID4gPiArCj4gPiA+ICsJaWYgKGNydGMtPnByaW1h cnktPnN0YXRlLT5mYikKPiA+ID4gKwkJcGl4ZWxfc2l6ZSA9IGNydGMtPnByaW1hcnktPnN0YXRl LT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4Owo+ID4gPiArCWVsc2UKPiA+ID4gKwkJcGl4ZWxfc2l6 ZSA9IDQ7Cj4gPiA+ICAKPiA+ID4gIAkvKiBVc2UgdGhlIHNtYWxsIGJ1ZmZlciBtZXRob2QgdG8g Y2FsY3VsYXRlIHBsYW5lIHdhdGVybWFyayAqLwo+ID4gPiAgCWVudHJpZXMgPSAoKGNsb2NrICog cGl4ZWxfc2l6ZSAvIDEwMDApICogZGlzcGxheV9sYXRlbmN5X25zKSAvIDEwMDA7Cj4gPiA+IEBA IC03NzEsNyArNzgwLDExIEBAIHN0YXRpYyBib29sIGc0eF9jb21wdXRlX3Nyd20oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiA+ID4gIAljbG9jayA9IGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2s7 Cj4gPiA+ICAJaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7Cj4gPiA+ICAJaGRp c3BsYXkgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWctPnBpcGVfc3JjX3c7Cj4gPiA+IC0J cGl4ZWxfc2l6ZSA9IGNydGMtPnByaW1hcnktPnN0YXRlLT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4 Owo+ID4gPiArCj4gPiA+ICsJaWYgKGNydGMtPnByaW1hcnktPnN0YXRlLT5mYikKPiA+ID4gKwkJ cGl4ZWxfc2l6ZSA9IGNydGMtPnByaW1hcnktPnN0YXRlLT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4 Owo+ID4gPiArCWVsc2UKPiA+ID4gKwkJcGl4ZWxfc2l6ZSA9IDQ7Cj4gPiA+ICAKPiA+ID4gIAls aW5lX3RpbWVfdXMgPSBtYXgoaHRvdGFsICogMTAwMCAvIGNsb2NrLCAxKTsKPiA+ID4gIAlsaW5l X2NvdW50ID0gKGxhdGVuY3lfbnMgLyBsaW5lX3RpbWVfdXMgKyAxMDAwKSAvIDEwMDA7Cj4gPiA+ IEBAIC0xMTE4LDEwICsxMTMxLDE1IEBAIHN0YXRpYyB2b2lkIGk5NjVfdXBkYXRlX3dtKHN0cnVj dCBkcm1fY3J0YyAqdW51c2VkX2NydGMpCj4gPiA+ICAJCWludCBjbG9jayA9IGFkanVzdGVkX21v ZGUtPmNydGNfY2xvY2s7Cj4gPiA+ICAJCWludCBodG90YWwgPSBhZGp1c3RlZF9tb2RlLT5jcnRj X2h0b3RhbDsKPiA+ID4gIAkJaW50IGhkaXNwbGF5ID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29u ZmlnLT5waXBlX3NyY193Owo+ID4gPiAtCQlpbnQgcGl4ZWxfc2l6ZSA9IGNydGMtPnByaW1hcnkt PnN0YXRlLT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4Owo+ID4gPiArCQlpbnQgcGl4ZWxfc2l6ZTsK PiA+ID4gIAkJdW5zaWduZWQgbG9uZyBsaW5lX3RpbWVfdXM7Cj4gPiA+ICAJCWludCBlbnRyaWVz Owo+ID4gPiAgCj4gPiA+ICsJCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmIpCj4gPiA+ICsJ CQlwaXhlbF9zaXplID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPmZiLT5iaXRzX3Blcl9waXhlbCAv IDg7Cj4gPiA+ICsJCWVsc2UKPiA+ID4gKwkJCXBpeGVsX3NpemUgPSA0Owo+ID4gPiArCj4gPiA+ ICAJCWxpbmVfdGltZV91cyA9IG1heChodG90YWwgKiAxMDAwIC8gY2xvY2ssIDEpOwo+ID4gPiAg Cj4gPiA+ICAJCS8qIFVzZSBucy91cyB0aGVuIGRpdmlkZSB0byBwcmVzZXJ2ZSBwcmVjaXNpb24g Ki8KPiA+ID4gQEAgLTExOTUsNyArMTIxMywxMyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93 bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQo+ID4gPiAgCWNydGMgPSBpbnRlbF9nZXRf Y3J0Y19mb3JfcGxhbmUoZGV2LCAwKTsKPiA+ID4gIAlpZiAoaW50ZWxfY3J0Y19hY3RpdmUoY3J0 YykpIHsKPiA+ID4gIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGU7Cj4gPiA+IC0JCWludCBjcHAgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVy X3BpeGVsIC8gODsKPiA+ID4gKwkJaW50IGNwcDsKPiA+ID4gKwo+ID4gPiArCQlpZiAoY3J0Yy0+ cHJpbWFyeS0+c3RhdGUtPmZiKQo+ID4gPiArCQkJY3BwID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGUt PmZiLT5iaXRzX3Blcl9waXhlbCAvIDg7Cj4gPiA+ICsJCWVsc2UKPiA+ID4gKwkJCWNwcCA9IDQ7 Cj4gPiA+ICsKPiA+ID4gIAkJaWYgKElTX0dFTjIoZGV2KSkKPiA+ID4gIAkJCWNwcCA9IDQ7Cj4g PiA+ICAKPiA+ID4gQEAgLTEyMTcsNyArMTI0MSwxMyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0 ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQo+ID4gPiAgCWNydGMgPSBpbnRlbF9n ZXRfY3J0Y19mb3JfcGxhbmUoZGV2LCAxKTsKPiA+ID4gIAlpZiAoaW50ZWxfY3J0Y19hY3RpdmUo Y3J0YykpIHsKPiA+ID4gIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGU7Cj4gPiA+IC0JCWludCBjcHAgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNf cGVyX3BpeGVsIC8gODsKPiA+ID4gKwkJaW50IGNwcDsKPiA+ID4gKwo+ID4gPiArCQlpZiAoY3J0 Yy0+cHJpbWFyeS0+c3RhdGUtPmZiKQo+ID4gPiArCQkJY3BwID0gY3J0Yy0+cHJpbWFyeS0+c3Rh dGUtPmZiLT5iaXRzX3Blcl9waXhlbCAvIDg7Cj4gPiA+ICsJCWVsc2UKPiA+ID4gKwkJCWNwcCA9 IDQ7Cj4gPiA+ICsKPiA+ID4gIAkJaWYgKElTX0dFTjIoZGV2KSkKPiA+ID4gIAkJCWNwcCA9IDQ7 Cj4gPiA+ICAKPiA+ID4gQEAgLTEyNDMsNyArMTI3Myw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBk YXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51c2VkX2NydGMpCj4gPiA+ICAJCW9iaiA9IGludGVs X2ZiX29iaihlbmFibGVkLT5wcmltYXJ5LT5zdGF0ZS0+ZmIpOwo+ID4gPiAgCj4gPiA+ICAJCS8q IHNlbGYtcmVmcmVzaCBzZWVtcyBidXN0ZWQgd2l0aCB1bnRpbGVkICovCj4gPiA+IC0JCWlmIChv YmotPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX05PTkUpCj4gPiA+ICsJCWlmICghb2JqIHx8 IG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfTk9ORSkKPiA+ID4gIAkJCWVuYWJsZWQg PSBOVUxMOwo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiBAQCAtMTI2NCwxMCArMTI5NCwxNSBAQCBz dGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQo+ ID4gPiAgCQlpbnQgY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ID4gPiAgCQlp bnQgaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7Cj4gPiA+ICAJCWludCBoZGlz cGxheSA9IHRvX2ludGVsX2NydGMoZW5hYmxlZCktPmNvbmZpZy0+cGlwZV9zcmNfdzsKPiA+ID4g LQkJaW50IHBpeGVsX3NpemUgPSBlbmFibGVkLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVy X3BpeGVsIC8gODsKPiA+ID4gKwkJaW50IHBpeGVsX3NpemU7Cj4gPiA+ICAJCXVuc2lnbmVkIGxv bmcgbGluZV90aW1lX3VzOwo+ID4gPiAgCQlpbnQgZW50cmllczsKPiA+ID4gIAo+ID4gPiArCQlp ZiAoZW5hYmxlZC0+cHJpbWFyeS0+c3RhdGUtPmZiKQo+ID4gPiArCQkJcGl4ZWxfc2l6ZSA9IGVu YWJsZWQtPnByaW1hcnktPnN0YXRlLT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4Owo+ID4gPiArCQll bHNlCj4gPiA+ICsJCQlwaXhlbF9zaXplID0gNDsKPiA+ID4gKwo+ID4gPiAgCQlsaW5lX3RpbWVf dXMgPSBtYXgoaHRvdGFsICogMTAwMCAvIGNsb2NrLCAxKTsKPiA+ID4gIAo+ID4gPiAgCQkvKiBV c2UgbnMvdXMgdGhlbiBkaXZpZGUgdG8gcHJlc2VydmUgcHJlY2lzaW9uICovCj4gPiAKPiA+IFdp dGggdGhlIGNoYW5nZSB0byBpbnRlbF9jcnRjX2FjdGl2ZSgpIHRvIGxvb2sgYXQgc3RhdGUtPmZi IEkgdGhpbmsgeW91Cj4gPiBjb3VsZCBkcm9wIGFsbCBvZiB0aGUgY2hhbmdlcyBhYm92ZSwgYW5k IGp1c3Qga2VlcCB0aGUgY2hhbmdlcyBiZWxvdy4KPiAKPiBBcmUgeW91IHN1cmU/ICBJZiBpbnRl bF9jcnRjLT5hY3RpdmUgaXMgdHJ1ZSwgYnV0IHRoZSBwcmltYXJ5IHBsYW5lIGlzCj4gZGlzYWJs ZWQgKHBsYW5lLT5zdGF0ZS0+ZmIgPT0gTlVMTCksIHRoZW4gSSB0aGluayB3ZSdyZSBzdGlsbCBn b2luZyB0bwo+IHdpbmQgdXAgdHJ5aW5nIHRvIGRlcmVmZXJlbmNlIHBsYW5lLT5zdGF0ZS0+ZmIg dG8gZ2V0IGJpdHNfcGVyX3BpeGVsLgoKaW50ZWxfY3J0Y19hY3RpdmUoKSB3aWxsIGNvbWUgb3V0 IGFzIGZhbHNlIGluIHRoYXQgY2FzZSBhbmQgd2UgbmV2ZXIgZW5kCnVwIGxvb2tpbmcgYXQgdGhl IGZiLgoKPiAKPiBJbiBteSBvdGhlciBicmFuY2ggSSBkbyBoYXZlIGEgcGF0Y2ggdGhhdCBqdXN0 IG1vdmVzIGFsbCB0aGF0IHdtX3BhcmFtCj4gY2FsY3VsYXRpb24gb3V0IG9mIHRoZSB3YXRlcm1h cmsgY29kZSBoZXJlIGFuZCBzdGlja3MgaXQgaW4gdGhlCj4gY2hlY2tfcGxhbmUgY29kZSwgc28g dGhhdCB3ZSBhbHdheXMgaGF2ZSB1cC10by1kYXRlIGVuYWJsZWQvYnBwL2V0Ywo+IHZhbHVlcyBj b2xsZWN0ZWQgZm9yIHRoZSBwbGFuZSBzdGF0ZS4gIElmIEkgY2FuIGV4dHJhY3QgdGhhdCBmcm9t IG15Cj4gb3RoZXIgYnJhbmNoIGNsZWFubHksIHRoYXQgbWlnaHQgYmUgYSBzbGlnaHRseSBjbGVh bmVyIHNvbHV0aW9uIHRoYW4KPiBqdXN0IGFkZGluZyBhbGwgdGhlIGZiIHRlc3RzIGhlcmUuCgpJ IGRvbid0IHRoaW5rIGl0J3Mgd29ydGggbG9va2luZyBhdCB0aGUgb2xkIHBsYXRmb3JtIGNvZGUg YXQgdGhpcyBwb2ludC4KV2UganVzdCB3YW50IHRoZSBpbGsrIHN0dWZmIGNvbnZlcnRlZCB0byBh dG9taWMgZmlyc3QuIEkgc3VzcGVjdCBvbmNlIEkKZ2V0IHRoZSBWTFYvQ0hWIHdtIGNvZGUgc29y dGVkIGludG8gYSBiZXR0ZXIgc2hhcGUgd2UgY2FuIGxldmVyYWdlIGl0CmZvciB0aGUgb3RoZXIg Z21jaCBwbGF0Zm9ybXMgYXMgd2VsbC4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==