From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: Re: [Intel-gfx] [PATCH v3 4/7] drm/fb-helper: Apply panel orientation connector prop to the primary plane Date: Tue, 31 Oct 2017 11:24:14 +0100 Message-ID: <0c7c79ef-c08a-402f-1566-e4c070abc5a1@redhat.com> References: <20171023071425.5090-1-hdegoede@redhat.com> <20171023071425.5090-5-hdegoede@redhat.com> <20171030095212.fuglrxyc3jpfrnjg@phenom.ffwll.local> <873cb3a6-342f-a1aa-0569-874d86f320b3@redhat.com> <20171031101430.k2ogtgk7smvoklxh@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171031101430.k2ogtgk7smvoklxh@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , Hans de Goede Cc: linux-fbdev@vger.kernel.org, Bartlomiej Zolnierkiewicz , intel-gfx , Daniel Drake , dri-devel@lists.freedesktop.org, Bastien Nocera , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org SGksCgpPbiAzMS0xMC0xNyAxMToxNCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBNb24sIE9j dCAzMCwgMjAxNyBhdCAxMjowOToyN1BNICswMTAwLCBIYW5zIGRlIEdvZWRlIHdyb3RlOgo+PiBI aSwKPj4KPj4gT24gMzAtMTAtMTcgMTA6NTIsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+PiBPbiBN b24sIE9jdCAyMywgMjAxNyBhdCAwOToxNDoyMkFNICswMjAwLCBIYW5zIGRlIEdvZWRlIHdyb3Rl Ogo+Pj4+IEFwcGx5IHRoZSAicGFuZWwgb3JpZW50YXRpb24iIGRybSBjb25uZWN0b3IgcHJvcCB0 byB0aGUgcHJpbWFyeSBwbGFuZSBzbwo+Pj4+IHRoYXQgZmJjb24gYW5kIGZiZGV2IHVzaW5nIHVz ZXJzcGFjZSBwcm9ncmFtcyBkaXNwbGF5IHRoZSByaWdodCB3YXkgdXAuCj4+Pj4KPj4+PiBGaXhl czogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4OTQKPj4+ PiBTaWduZWQtb2ZmLWJ5OiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgo+Pj4+ IC0tLQo+Pj4+IENoYW5nZXMgaW4gdjI6Cj4+Pj4gLU5ldyBwYXRjaCBpbiB2MiBvZiB0aGlzIHBh dGNoLXNldAo+Pj4+Cj4+Pj4gQ2hhbmdlcyBpbiB2MzoKPj4+PiAtVXNlIGEgcm90YXRpb24gbWVt YmVyIGluIHN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgYW5kIHNldCB0aGF0IGZyb20KPj4+PiAg ICBkcm1fc2V0dXBfY3J0Y3MgaW5zdGVhZCBvZiBsb29waW5nIG92ZXIgYWxsIGNydGMncyB0byBm aW5kIHRoZSByaWdodCBvbmUKPj4+PiAgICBsYXRlcgo+Pj4+IC1TaW5jZSB3ZSBub3cgbm8gbG9u Z2VyIGxvb2sgYXQgcm90YXRpb24gcXVpcmtzIGRpcmVjdGx5IGluIHRoZSBmYmNvbiBjb2RlLAo+ Pj4+ICAgIHNldCBmYl9pbmZvLmZiY29uX3JvdGF0ZV9oaW50IHdoZW4gdGhlIHBhbmVsIGlzIG5v dCBtb3VudGVkIHVwcmlnaHQgYW5kCj4+Pj4gICAgd2UgY2Fubm90IHVzZSBoYXJkd2FyZSByb3Rh dGlvbgo+Pj4+IC0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgfCA3 NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+Pj4+ICAgIGluY2x1 ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCAgICAgfCAgOCArKysrKwo+Pj4+ICAgIDIgZmlsZXMgY2hh bmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9mYl9oZWxwZXIuYwo+Pj4+IGluZGV4IDExNmQxZjEzMzdjNy4uZTBmOTVmMmNjNTJmIDEwMDY0 NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4+Pj4gQEAgLTQxLDYgKzQxLDcgQEAKPj4+ PiAgICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPj4+PiAgICAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+Cj4+Pj4gKyNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5hbC5oIgo+ Pj4+ICAgICNpbmNsdWRlICJkcm1fY3J0Y19oZWxwZXJfaW50ZXJuYWwuaCIKPj4+PiAgICBzdGF0 aWMgYm9vbCBkcm1fZmJkZXZfZW11bGF0aW9uID0gdHJ1ZTsKPj4+PiBAQCAtMzUwLDYgKzM1MSw3 IEBAIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9kZWJ1Z19sZWF2ZSk7Cj4+Pj4gICAgc3Rh dGljIGludCByZXN0b3JlX2ZiZGV2X21vZGVfYXRvbWljKHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIsIGJvb2wgYWN0aXZlKQo+Pj4+ICAgIHsKPj4+PiAgICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+Pj4+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGU7Cj4+Pj4gICAgCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+Pj4+ICAgIAlz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4+Pj4gICAgCWludCBpLCByZXQ7Cj4+Pj4g QEAgLTM2OCw4ICszNzAsNiBAQCBzdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMo c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgYm9vbCBhY3Rpdgo+Pj4+ICAgIHJldHJ5 Ogo+Pj4+ICAgIAlwbGFuZV9tYXNrID0gMDsKPj4+PiAgICAJZHJtX2Zvcl9lYWNoX3BsYW5lKHBs YW5lLCBkZXYpIHsKPj4+PiAtCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsK Pj4+PiAtCj4+Pj4gICAgCQlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRl KHN0YXRlLCBwbGFuZSk7Cj4+Pj4gICAgCQlpZiAoSVNfRVJSKHBsYW5lX3N0YXRlKSkgewo+Pj4+ ICAgIAkJCXJldCA9IFBUUl9FUlIocGxhbmVfc3RhdGUpOwo+Pj4+IEBAIC0zOTIsNiArMzkyLDEx IEBAIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhzdHJ1Y3QgZHJtX2ZiX2hl bHBlciAqZmJfaGVscGVyLCBib29sIGFjdGl2Cj4+Pj4gICAgCWZvciAoaSA9IDA7IGkgPCBmYl9o ZWxwZXItPmNydGNfY291bnQ7IGkrKykgewo+Pj4+ICAgIAkJc3RydWN0IGRybV9tb2RlX3NldCAq bW9kZV9zZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7Cj4+Pj4gKwkJc3Ry dWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IG1vZGVfc2V0LT5jcnRjLT5wcmltYXJ5Owo+Pj4+ICsK Pj4+PiArCQkvKiBDYW5ub3QgZmFpbCBhcyB3ZSd2ZSBhbHJlYWR5IGdvdHRlbiB0aGUgcGxhbmUg c3RhdGUgYWJvdmUgKi8KPj4+PiArCQlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19w bGFuZV9zdGF0ZShzdGF0ZSwgcHJpbWFyeSk7Cj4+Pj4gKwkJcGxhbmVfc3RhdGUtPnJvdGF0aW9u ID0gZmJfaGVscGVyLT5jcnRjX2luZm9baV0ucm90YXRpb247Cj4+Pj4gICAgCQlyZXQgPSBfX2Ry bV9hdG9taWNfaGVscGVyX3NldF9jb25maWcobW9kZV9zZXQsIHN0YXRlKTsKPj4+PiAgICAJCWlm IChyZXQgIT0gMCkKPj4+PiBAQCAtMjMzNCw2ICsyMzM5LDU3IEBAIHN0YXRpYyBpbnQgZHJtX3Bp Y2tfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPj4+PiAgICAJcmV0dXJu IGJlc3Rfc2NvcmU7Cj4+Pj4gICAgfQo+Pj4+ICsvKgo+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9uIGNo ZWNrcyBpZiByb3RhdGlvbiBpcyBuZWNlc3NhcnkgYmVjYXVzZSBvZiBwYW5lbCBvcmllbnRhdGlv bgo+Pj4+ICsgKiBhbmQgaWYgaXQgaXMsIGlmIGl0IGlzIHN1cHBvcnRlZC4KPj4+PiArICogSWYg cm90YXRpb24gaXMgbmVjZXNzYXJ5IGFuZCBzdXBwb3J0ZWQsIGl0cyBnZXRzIHNldCBpbiBmYl9j cnRjLnJvdGF0aW9uLgo+Pj4+ICsgKiBJZiByb3RhdGlvbiBpcyBuZWNlc3NhcnkgYnV0IG5vdCBz dXBwb3J0ZWQsIGEgRFJNX01PREVfUk9UQVRFXyogZmxhZyBnZXRzCj4+Pj4gKyAqIG9yLWVkIGlu dG8gZmJfaGVscGVyLT5yb3RhdGlvbnMuIEluIGRybV9zZXR1cF9jcnRjc19mYigpIHdlIGNoZWNr IGlmIG9ubHkKPj4+PiArICogb25lIGJpdCBpcyBzZXQgYW5kIHRoZW4gd2Ugc2V0IGZiX2luZm8u ZmJjb25fcm90YXRlX2hpbnQgdG8gbWFrZSBmYmNvbiBkbwo+Pj4+ICsgKiB0aGUgdW5zdXBwb3J0 ZWQgcm90YXRpb24uCj4+Pj4gKyAqLwo+Pj4+ICtzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y19y b3RhdGlvbihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+Pj4+ICsJCQkJICAgIHN0 cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKmZiX2NydGMsCj4+Pj4gKwkJCQkgICAgc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4+PiArewo+Pj4+ICsJc3RydWN0IGRybV9wbGFuZSAq cGxhbmUgPSBmYl9jcnRjLT5tb2RlX3NldC5jcnRjLT5wcmltYXJ5Owo+Pj4+ICsJdWludDY0X3Qg dmFsaWRfbWFzayA9IDA7Cj4+Pj4gKwlpbnQgaSwgcm90YXRpb247Cj4+Pj4gKwo+Pj4+ICsJZmJf Y3J0Yy0+cm90YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfMDsKPj4+PiArCj4+Pj4gKwlzd2l0Y2gg KGNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLnBhbmVsX29yaWVudGF0aW9uKSB7Cj4+Pj4gKwljYXNl IERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX0JPVFRPTV9VUDoKPj4+PiArCQlyb3RhdGlvbiA9 IERSTV9NT0RFX1JPVEFURV8xODA7Cj4+Pj4gKwkJYnJlYWs7Cj4+Pj4gKwljYXNlIERSTV9NT0RF X1BBTkVMX09SSUVOVEFUSU9OX0xFRlRfVVA6Cj4+Pj4gKwkJcm90YXRpb24gPSBEUk1fTU9ERV9S T1RBVEVfOTA7Cj4+Pj4gKwkJYnJlYWs7Cj4+Pj4gKwljYXNlIERSTV9NT0RFX1BBTkVMX09SSUVO VEFUSU9OX1JJR0hUX1VQOgo+Pj4+ICsJCXJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzI3MDsK Pj4+PiArCQlicmVhazsKPj4+Cj4+PiBGb3IgOTAvMjcwIGh3IHJvdGF0aW9uIHlvdSBuZWVkIHRv IGZsaXAgdGhlIGNvb3JkaW5hdGVzL3NpemVzIG9mIHRoZSBmYi4KPj4KPj4gWW91J3JlIHByb2Jh Ymx5IHJpZ2h0LCBJIGRvbid0IGhhdmUgYW55IGhhcmR3YXJlIHN1cHBvcnRpbmcKPj4gMjcwIGRl Z3JlZSByb3RhdGlvbiB0byB0ZXN0IHRoaXMgd2l0aC4KPj4KPj4+PiArCWRlZmF1bHQ6Cj4+Pj4g KwkJcm90YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfMDsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlp ZiAocm90YXRpb24gPT0gRFJNX01PREVfUk9UQVRFXzAgfHwgIXBsYW5lLT5yb3RhdGlvbl9wcm9w ZXJ0eSkgewo+Pj4+ICsJCWZiX2hlbHBlci0+cm90YXRpb25zIHw9IHJvdGF0aW9uOwo+Pj4+ICsJ CXJldHVybjsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgcGxhbmUtPnJv dGF0aW9uX3Byb3BlcnR5LT5udW1fdmFsdWVzOyBpKyspCj4+Pj4gKwkJdmFsaWRfbWFzayB8PSAo MVVMTCA8PCBwbGFuZS0+cm90YXRpb25fcHJvcGVydHktPnZhbHVlc1tpXSk7Cj4+Pgo+Pj4gVGhp cyBpc24ndCBhIGdvb2QgZW5vdWdoIGNoZWNrIGZvciBhdG9taWMgZHJpdmVycyAoYW5kIG5vdCBm b3IgZ2VuOSsgaW50ZWwKPj4+IGh3KSwgc2luY2Ugd2UgbWlnaHQgZXhwb3NlIDkwwrAgcm90YXRp b25zLCBidXQgaXQgb25seSB3b3JrcyBpZiB5b3UgaGF2ZQo+Pj4gdGhlIGNvcnJlY3QgdGlsaW5n IGZvcm1hdC4KPj4+Cj4+PiBGb3IgYXRvbWljIGRyaXZlcnMgaXQnZCBiZSByZWFsbHkgZ29vZCBp ZiB3ZSBjb3VsZCBkbyBhIFRFU1RfT05MWSBjb21taXQKPj4+IGZpcnN0LCBhbmQgaWYgdGhhdCBm YWlscywgZmFsbCBiYWNrIHRvIHN3IHJvdGF0aW9uLgo+Pj4KPj4+IEJ1dCB0aGF0IHBvc2VzIGEg Yml0IGEgY2hpY2tlbiZlZ2cgd2l0aCBjcmVhdGluZyB0aGUgZnJhbWVidWZmZXIgKHdlIG5lZWQK Pj4+IG9uZSBmb3IgdGhlIFRFU1RfT05MWSksIHNvIHByb2JhYmx5IGEgYml0IHRvbyBtdWNoIG1v cmUgZm9yIHRoaXMuIEFuZAo+Pj4gYWZhaXVpIHlvdXIgcXVpcmsgbGlzdCBvbmx5IGFwcGxpZXMg dG8gb2xkZXIgc3R1ZmYuCj4+Pgo+Pj4gQXQgbGVhc3QgYWRkIGEgRklYTUUgbWVhbndoaWxlPyBJ biBhIHdheSB3ZSBoYXZlIGEgRklYTUUgYWxyZWFkeSBmb3IKPj4+IG11bHRpLXBpcGUsIHNpbmNl IHdlIGRvbid0IHRyeSB0byBmYWxsIGJhY2sgdG8gZmV3ZXIgcGlwZXMgaWYgdGhlIHNpbmdsZQo+ Pj4gYXRvbWljIGNvbW1pdCBmYWlsZWQuCj4+Pgo+Pj4gT3IgbWF5YmUganVzdCBkb24ndCB1c2Ug OTAvMjcwIGh3IHJvdGF0aW9uIGZvciBub3cgc2luY2UgaXQgc2VlbXMgYnVnZ3kgaW4KPj4+IHlv dXIgY29kZSBhbnl3YXkuCj4+Cj4+IEkgd2FzIHdvbmRlcmluZyBhYm91dCB0aGlzIChuZWVkIGZv ciBzcGVjaWFsIGZiIGxheW91dCkgbXlzZWxmIHRvbywgSQo+PiBhZ3JlZSBhbHNvIGdpdmVuIHRo ZSBhYm92ZSBjb21tZW50IHRoYXQgaXQgaXMgcHJvYmFibHkgYmVzdCB0byBvbmx5Cj4+IHN1cHBv cnQgMC8xODAgZGVncmVlIGhhcmR3YXJlIHJvdGF0aW9uIGZvciBub3csIEkgd2lsbCBkbyBmb3Ig dGhlIG5leHQKPj4gdmVyc2lvbiAoYW5kIGFkZCBhIFRPRE8gY29tbWVudCkuCj4gCj4gSXQnbGwg d29yayBvbiBpOTE1IGF0IGxlYXN0LCBvbiBjdXJyZW50IGh3LiBNaWdodCBzdGlsbCBiZSBicm9r ZW4gb24KPiBvdGhlciwgYnV0IHRoZW4gdGhhdCdzIGEgbGFyZ2VyIGlzc3VlIHdpdGggdGhlIGZi Y29uIGF0b21pYyBjb2RlIHJpZ2h0Cj4gbm93Lgo+Pgo+Pgo+Pj4+ICsKPj4+PiArCWlmICghKHJv dGF0aW9uICYgdmFsaWRfbWFzaykpIHsKPj4+PiArCQlmYl9oZWxwZXItPnJvdGF0aW9ucyB8PSBy b3RhdGlvbjsKPj4+PiArCQlyZXR1cm47Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJZmJfY3J0Yy0+ cm90YXRpb24gPSByb3RhdGlvbjsKPj4+PiArCS8qIFJvdGF0aW5nIGluIGhhcmR3YXJlLCBmYmNv biBzaG91bGQgbm90IHJvdGF0ZSAqLwo+Pj4+ICsJZmJfaGVscGVyLT5yb3RhdGlvbnMgfD0gRFJN X01PREVfUk9UQVRFXzA7Cj4+Pgo+Pj4gV3JvbmcgYml0b3B0IEkgdGhpbmsuCj4+Cj4+IE5vIHRo aXMgaXMgaW50ZW50aW9uYWwsIGlmIHdlJ3ZlIGEgcGFuZWwgcmVxdWlyaW5nIHNheSA5MCBkZWdy ZWUgcm90YXRpb24KPj4gd2hpY2ggd2Ugd2lsbCBkbyBpbiBzb2Z0d2FyZSBhbmQgYW5vdGhlciBw YW5lbCAod2VpcmQgZXhhbXBsZSkgZG9pbmcgMTgwCj4+IGRlZ3JlZSByb3RhdGlvbiBpbiBoYXJk d2FyZSwgdGhlbiB3ZSB3YW50IHRvIG9yIGJvdGgKPj4gRFJNX01PREVfUk9UQVRFXzkwIGFuZCBE Uk1fTU9ERV9ST1RBVEVfMCBpbnRvIHRoZSByb3RhdGlvbnMgYml0bWFzawo+PiAoMCBzaW5jZSB0 aGUgaGFyZHdhcmUgcm90YXRpb24gcmVxdWlyZXMgbm8gc3cgcm90YXRpb24pLgo+PiBUaGUgcm90 YXRpb25zIGJpdG1hc2sgaXMgdGhlICpjb21iaW5hdGlvbiogb2YgYWxsIHJvdGF0aW9ucyB3ZSBu ZWVkCj4+IGZiY29uIHRvIGRvIGluIHNvZnR3YXJlIGFuZCB3aGVuIHRoYXQgZW5kcyB1cCBiZWlu ZyBtb3JlIHRoZW4gb25lCj4+IHJvdGF0aW9uIHdlIGNoaWNrZW4gb3V0IGFuZCBqdXN0IGRvbid0 IGRvIGFueSBzb2Z0d2FyZSByb3RhdGlvbiwKPj4gbWF5YmUgSSBzaG91bGQgcmVuYW1lIHJvdGF0 aW9ucyB0byBzd19yb3RhdGlvbnM/Cj4+Cj4+IEEgYmV0dGVyIHJlYWwgd29ybGQgZXhhbXBsZSBp cyBhIDkwIGRlZ3JlZSByb3RhdGVkIHBhbmVsIHdpdGgKPj4gYW4gZXh0ZXJuYWwgbW9uaXRvciwg aW4gdGhhdCBjYXNlIGZvciB0aGUgcGFuZWwgd2UgaGl0Ogo+Pgo+PiAJaWYgKCEocm90YXRpb24g JiB2YWxpZF9tYXNrKSkgewo+PiAJCWZiX2hlbHBlci0+cm90YXRpb25zIHw9IHJvdGF0aW9uOwo+ PiAJCXJldHVybjsKPj4gCX0KPj4KPj4gT3ItaW5nIGluIHRoZSBwYW5lbCdzIERSTV9NT0RFX1JP VEFURV85MC4KPj4KPj4gQW5kIGZvciB0aGUgbW9uaXRvciB3ZSBoaXQ6Cj4+Cj4+IAlpZiAocm90 YXRpb24gPT0gRFJNX01PREVfUk9UQVRFXzAgfHwgIXBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSkg ewo+PiAJCWZiX2hlbHBlci0+cm90YXRpb25zIHw9IHJvdGF0aW9uOwo+PiAJCXJldHVybjsKPj4g CX0KPj4KPj4gT3ItaW5nIGluIHRoZSBtb25pdG9ycydzIERSTV9NT0RFX1JPVEFURV8wLgo+Pgo+ PiBTbyB3ZSBlbmQgdXAgd2l0aCAyIGJpdHMgc2V0IGluIGZiX2hlbHBlci0+cm90YXRpb25zLCBo aXR0aW5nIHRoZQo+PiBkZWZhdWx0IGluIHRoZSBzd2l0Y2ggY2FzZSBhbmQgcGlja2luZyBGQl9S T1RBVEVfVVIsIHNpbmNlIHdlIGNhbm5vdAo+PiBzYXRpc2Z5IGJvdGggcm90YXRpb25zIGluIGZi Y29uIGF0IHRoZSBzYW1lIHRpbWUuCj4+Cj4+Cj4+PiBPciB5b3UncmUgZG9pbmcgc29tZSByZWFs bHkgZnVubnkgY29udHJvbCBsb2dpYyBieSBvcmluZyBpbiBhbm90aGVyIHZhbHVlCj4+PiB0byBo aXQgdGhlIGRlZmF1bHQgY2FzZSBiZWxvdyB3aGljaCBkb2Vzbid0IHJvdGF0ZSBhbnl0aGluZy4g SSB0aGluayB0aGF0Cj4+PiBzaG91bGQgYmUgZG9uZSBleHBsaWNpdGx5LCBieSBleHBsaWNpdGx5 IHNldHRpbmcgdG8gcm90YXRpb24gdG8gUk9UQVRFXzAKPj4+IGluc3RlYWQgb2YgdGhpcy4gU2Ft ZSBmb3IgdGhlIGNoZWNrIGFib3ZlLgo+Pgo+PiBJIGhvcGUgbXkgZXhwbGFuYXRpb24gYWJvdmUg ZXhwbGFpbnMgd2h5IEknbSBvci1pbmcgdG9nZXRoZXIgcm90YXRpb25zLAo+PiBiYXNpY2FsbHkg SSB3YW50IHRvIGRldGVjdCBpZiB3ZSBuZWVkIG1vcmUgdGhlbiAxIHR5cGUgb2Ygc29mdHdhcmUt cm90YXRpb24KPj4gaW4gZmJjb24gYW5kIGluIHRoYXQgY2FzZSBiYWlsIG91dCBhbmQgZmFsbGJh Y2sgdG8gRkJfUk9UQVRFX1VSLgo+IAo+IFllYWggSSBzdXNwZWN0ZWQgdGhpcyBpcyB3aGF0IHlv dSdyZSB0cnlpbmcgdG8gZG8sIGJ1dCBpbW8gaXQncyB0b28gY2xlYXIuCj4gQ2FuJ3Qgd2UgZG8g YW4gZXhwbGljaXQgY2hlY2sgZm9yIHRoaXMgaW5zdGVhZCBvZiB1bmNvbW1lbnRlZCBtYWdpYwoK RXJtLCBteSBwYXRjaCBjb250YWlucyBhIGJpZyhpc2gpIGNvbW1lbnQgYWJvdmUgZHJtX3NldHVw X2NydGNfcm90YXRpb24gd2hpY2gKdHJpZXMgdG8gZXhwbGFpbiB0aGlzIGFscmVhZHkuCj4gdGhh dCB0YWtlcyBoYWxmIGFuIGhvdXIgdG8gdW5kZXJzdGFuZD8gSSdtIHRoaW5raW5nIG9mCj4gCj4g aWYgKGNvdW50X2JpdHMoZmJiX2hlbHBlci0+cm90YXRpb24pKSB7Cj4gCS8qIGNvbmZsaWN0aW5n IHJvdGF0aW9uIHJlcXVlc3RzIG9uIGRpZmZlcmVudCBjb25ubmVjdG9ycywgZmFsbAo+IAkgKiBi YWNrIHRvIHVucm90YXRlZC4gKi8KPiAKPiAJIGZiX2hlbHBlci0+cm90YXRpb24gPT0gUk9UQVRF XzAKPiB9Cj4gCj4gT3Igc29tZXRoaW5nIHNpbWlsYXIgYXQgdGhlIGVuZCBvZiBkcm1fc2V0dXBf Y3J0Y3MgKHBsdXMgbWF5YmUgZG9pbmcgdGhlCj4gcmVzb2x2ZSBpbiB0aGVyZSB0b28pLiBSaWdo dCBub3cgdGhhdCBsb2dpYyBpcyBzcGxpdCBiZXR3ZWVuIDIgZnVuY3Rpb25zLAo+IGFuZCBubyBj b21tZW50IGV4cGxhaW5pbmcgd2hhdCdzIGdvaW5nIG9uLgo+IAo+IEJ1dCBub3Qgc3VyZSB0aGF0 J3MgYWN0dWFsbHkgZ29pbmcgdG8gaGVscCB3aXRoIHJlYWRhYmlsaXR5LgoKSSB3YXMgdGhpbmtp bmcgb2YganVzdCBjaGFuZ2luZyB0aGUgY29kZSBzZXR0aW5nIHRoZSBmYmNvbl9yb3RhdGVfaGlu dAp0byBzb21ldGhpbmcgbGlrZSB0aGlzOgoKICAgICAgICAgc3dpdGNoIChmYl9oZWxwZXItPnN3 X3JvdGF0aW9ucykgewogICAgICAgICBjYXNlIERSTV9NT0RFX1JPVEFURV8wOgogICAgICAgICAg ICAgICAgIGluZm8tPmZiY29uX3JvdGF0ZV9oaW50ID0gRkJfUk9UQVRFX1VSOwogICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERSTV9NT0RFX1JPVEFURV85MDoKICAgICAgICAg ICAgICAgICBpbmZvLT5mYmNvbl9yb3RhdGVfaGludCA9IEZCX1JPVEFURV9DQ1c7CiAgICAgICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRFJNX01PREVfUk9UQVRFXzE4MDoKICAgICAg ICAgICAgICAgICBpbmZvLT5mYmNvbl9yb3RhdGVfaGludCA9IEZCX1JPVEFURV9VRDsKICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEUk1fTU9ERV9ST1RBVEVfMjcwOgogICAg ICAgICAgICAgICAgIGluZm8tPmZiY29uX3JvdGF0ZV9oaW50ID0gRkJfUk9UQVRFX0NXOwogICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgoJCS8qCgkJICogTXVsdGlwbGUg Yml0cyBhcmUgc2V0IC8gbXVsdGlwbGUgcm90YXRpb25zIHJlcXVlc3RlZAoJCSAqIGZiY29uIGNh bm5vdCBoYW5kbGUgc2VwYXJhdGUgcm90YXRpb24gc2V0dGluZ3MgcGVyCgkJICogb3V0cHV0LCBz byBmYWxsYmFjayB0byB1bnJvdGF0ZWQuCgkJICovCiAgICAgICAgICAgICAgICAgaW5mby0+ZmJj b25fcm90YXRlX2hpbnQgPSBGQl9ST1RBVEVfVVI7CiAgICAgICAgIH0KCldvdWxkIHRoYXQgd29y ayBmb3IgeW91ID8KClJlZ2FyZHMsCgpIYW5zCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=