From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC v4 12/25] drm/i915: Add drm_driver->initial_client_display callback Date: Mon, 16 Apr 2018 10:38:52 +0200 Message-ID: <20180416083852.GN31310@phenom.ffwll.local> References: <20180414115318.14500-1-noralf@tronnes.org> <20180414115318.14500-13-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180414115318.14500-13-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gU2F0LCBBcHIgMTQsIDIwMTggYXQgMDE6NTM6MDVQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IEFzIHBhcnQgb2YgbW92aW5nIHRoZSBtb2Rlc2V0dGluZyBjb2RlIG91dCBvZiBk cm1fZmJfaGVscGVyIGFuZCBpbnRvCj4gZHJtX2NsaWVudCwgdGhlIGRybV9mYl9oZWxwZXJfZnVu Y3MtPmluaXRpYWxfY29uZmlnIGNhbGxiYWNrIG5lZWRzIHRvIGdvLgo+IFJlcGxhY2UgaXQgd2l0 aCBhIGRybV9kcml2ZXItPmluaXRpYWxfY2xpZW50X2Rpc3BsYXkgY2FsbGJhY2sgdGhhdCBjYW4K PiB3b3JrIGZvciBhbGwgaW4ta2VybmVsIGNsaWVudHMuCj4gCj4gVE9ETzoKPiAtIEFkZCBhIHBh dGNoIHRoYXQgbW92ZXMgdGhlIGZ1bmN0aW9uIG91dCBvZiBpbnRlbF9mYmRldi5jIHNpbmNlIGl0 J3Mgbm90Cj4gICBmYmRldiBzcGVjaWZpYyBhbnltb3JlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE5v cmFsZiBUcsO4bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgoKU28gdGhlIHJlYXNvbiB3ZSBvcmln aW5hbGx5IGFkZGVkIHRoaXMgY2FsbGJhY2sgZm9yIGk5MTUgZmFzdCBib290IHdhcwp0aGF0IHRo ZXJlIHdhc24ndCBhbnkgYXRvbWljIGFyb3VuZCB5ZXQuIEFuZCBpdCB3YXMgYWxsIGFuIGV4cGVy aW1lbnQgdG8KZmlndXJlIG91dCBob3cgdG8gYmVzdCBnbyBhYm91dCBkZXNpZ25pbmcgZmFzdGJv b3QuCgpCdXQgbm93IHdlIGhhdmUgZmJkZXYsIGFuZCBmYXN0Ym9vdCBkZXNpZ24gaXMgYWxzbyBw cmV0dHkgY2xlYXI6CgoxLiBkcml2ZXIgbG9hZHMKMi4gZHJpdmVyIHJlYWRzIG91dCBjdXJyZW50 IGh3IHN0YXRlLCByZWNvbnN0cnVjdHMgYSBmdWxsIGF0b21pYyBzdGF0ZSBmb3IKZXZlcnl0aGlu ZyBhbmQgc3R1ZmZzIGl0IGludG8gY29ubmVjdG9yL2NydGMvcGxhbmUtPnN0YXRlIHBvaW50ZXJz LgozLiBmYmRldiBhbmQgYW55IG90aGVyIGNsaWVudCByZWFkIG91dCBjdXJyZW50IHN0YXRlICh3 aXRoIHNvbWUgY2F2ZWF0cykKYW5kIGp1c3QgdGFrZSBpdCBvdmVyLgoKV2hhdCBub24tZmFzdGJv b3QgZHJpdmVycyBkbzoKMS4gZHJpdmVycyBsb2FkCjIuIHJlc2V0IGJvdGggaHcgYW5kIHN3IHN0 YXRlIHRvIGV2ZXJ5dGhpbmcgb2ZmLgoKTm93IHRoZSBpbnRlbF9mYl9pbml0aWFsX2NvbmZpZyBp cyBhbGwgZ2VuZXJpYyBjb2RlIHJlYWxseSwgYW5kIGl0IHdpbGwKbmVhdGx5IGZhbGwgYmFjayB0 byB0aGUgZGVmYXVsdCBjb25maWcgaWYgZXZlcnl0aGluZyBpcyBvZmYuIFRoaXMgbWVhbnMgd2UK Y291bGQ6CjEuIE1vdmUgdGhlIGludGVsX2ZiX2luaXRpYWxfY29uZmlnIGludG8gdGhlIGZiZGV2 IGhlbHBlcnMuCjIuIE51a2UgdGhlIC0+aW5pdGlhbF9jb25maWcgY2FsbGJhY2suCgpBbmQgcHJv bnRvISBldmVyeSBkcml2ZXIgd2hpY2ggaW1wbGVtZW50cyBodyBzdGF0ZSByZWFkb3V0IHdpbGwg Z2V0IGZiZGV2CmZhc3Rib290IGZvciBmcmVlLgoKQW5kIHNpbmNlIHlvdSd2ZSBhbHJlYWR5IHJl d3JpdHRpbmcgdGhlIGludGVsIGNvZGUgdG8gdXNlIGRybV9jbGllbnQsIGl0J3MKcHJhY3RpY2Fs bHkgZG9uZSBhbHJlYWR5LiBKdXN0IG5lZWQgdG8gcy9pbnRlbF8vZHJtX2ZiZGV2X2hlbHBlcl8g b3IKc29tZXRoaW5nIGxpa2UgdGhhdCA6LSkKLURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2RybV9mYl9oZWxwZXIuYyAgICB8ICAxOSArKysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgIHwgIDExICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyB8 IDExMyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGluY2x1ZGUvZHJt L2RybV9kcnYuaCAgICAgICAgICAgICAgfCAgMjEgKysrKysrKwo+ICA1IGZpbGVzIGNoYW5nZWQs IDEwNCBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVs cGVyLmMKPiBpbmRleCBiOTkyZjU5ZGFkMzAuLjU0MDdiZjZkYzhjMCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9mYl9oZWxwZXIuYwo+IEBAIC0yMTAzLDYgKzIxMDMsMjAgQEAgc3RhdGljIHZvaWQgZHJtX3Nl dHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gIAkvKiBwcmV2ZW50 IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIG9mIGNvbm5lY3Rvcl9jb3VudCBieSBob3RwbHVnICov Cj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZmYl9oZWxwZXItPmxvY2spOwo+ICAKPiArCW11dGV4 X2xvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICsJaWYgKGRybV9mYl9oZWxwZXJfcHJv YmVfY29ubmVjdG9yX21vZGVzKGZiX2hlbHBlciwgd2lkdGgsIGhlaWdodCkgPT0gMCkKPiArCQlE Uk1fREVCVUdfS01TKCJObyBjb25uZWN0b3JzIHJlcG9ydGVkIGNvbm5lY3RlZCB3aXRoIG1vZGVz XG4iKTsKPiArCj4gKwlpZiAoZGV2LT5kcml2ZXItPmluaXRpYWxfY2xpZW50X2Rpc3BsYXkpIHsK PiArCQlkaXNwbGF5ID0gZGV2LT5kcml2ZXItPmluaXRpYWxfY2xpZW50X2Rpc3BsYXkoZGV2LCB3 aWR0aCwgaGVpZ2h0KTsKPiArCQlpZiAoZGlzcGxheSkgewo+ICsJCQlkcm1fY2xpZW50X2Rpc3Bs YXlfZnJlZShmYl9oZWxwZXItPmRpc3BsYXkpOwo+ICsJCQlmYl9oZWxwZXItPmRpc3BsYXkgPSBk aXNwbGF5Owo+ICsJCQltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICsJ CQlyZXR1cm47Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCWNydGNzID0ga2NhbGxvYyhmYl9oZWxwZXIt PmNvbm5lY3Rvcl9jb3VudCwKPiAgCQkJc2l6ZW9mKHN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMg KiksIEdGUF9LRVJORUwpOwo+ICAJbW9kZXMgPSBrY2FsbG9jKGZiX2hlbHBlci0+Y29ubmVjdG9y X2NvdW50LAo+IEBAIC0yMTIwLDkgKzIxMzQsNiBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0 Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCWlmIChJU19FUlIoZGlzcGxh eSkpCj4gIAkJZ290byBvdXQ7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5kZXYtPm1v ZGVfY29uZmlnLm11dGV4KTsKPiAtCWlmIChkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5lY3Rvcl9t b2RlcyhmYl9oZWxwZXIsIHdpZHRoLCBoZWlnaHQpID09IDApCj4gLQkJRFJNX0RFQlVHX0tNUygi Tm8gY29ubmVjdG9ycyByZXBvcnRlZCBjb25uZWN0ZWQgd2l0aCBtb2Rlc1xuIik7Cj4gIAlkcm1f ZW5hYmxlX2Nvbm5lY3RvcnMoZmJfaGVscGVyLCBlbmFibGVkKTsKPiAgCj4gIAlpZiAoIShmYl9o ZWxwZXItPmZ1bmNzLT5pbml0aWFsX2NvbmZpZyAmJgo+IEBAIC0yMTQ0LDcgKzIxNTUsNiBAQCBz dGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciwKPiAgCj4gIAkJZHJtX3BpY2tfY3J0Y3MoZmJfaGVscGVyLCBjcnRjcywgbW9kZXMsIDAsIHdp ZHRoLCBoZWlnaHQpOwo+ICAJfQo+IC0JbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmRldi0+bW9k ZV9jb25maWcubXV0ZXgpOwo+ICAKPiAgCS8qIG5lZWQgdG8gc2V0IHRoZSBtb2Rlc2V0cyB1cCBo ZXJlIGZvciB1c2UgbGF0ZXIgKi8KPiAgCS8qIGZpbGwgb3V0IHRoZSBjb25uZWN0b3I8LT5jcnRj IG1hcHBpbmdzIGludG8gdGhlIG1vZGVzZXRzICovCj4gQEAgLTIxODIsNiArMjE5Miw3IEBAIHN0 YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVy LAo+ICAJZHJtX2NsaWVudF9kaXNwbGF5X2ZyZWUoZmJfaGVscGVyLT5kaXNwbGF5KTsKPiAgCWZi X2hlbHBlci0+ZGlzcGxheSA9IGRpc3BsYXk7Cj4gIG91dDoKPiArCW11dGV4X3VubG9jaygmZGV2 LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gIAlrZnJlZShjcnRjcyk7Cj4gIAlrZnJlZShtb2Rlcyk7 Cj4gIAlrZnJlZShvZmZzZXRzKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCAwN2Mw N2Q1NTM5OGIuLmI3NDZjMGNiYWE0YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBA IC0yODU3LDYgKzI4NTcsNyBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewo+ ICAKPiAgCS5kdW1iX2NyZWF0ZSA9IGk5MTVfZ2VtX2R1bWJfY3JlYXRlLAo+ICAJLmR1bWJfbWFw X29mZnNldCA9IGk5MTVfZ2VtX21tYXBfZ3R0LAo+ICsJLmluaXRpYWxfY2xpZW50X2Rpc3BsYXkg PSBpOTE1X2luaXRpYWxfY2xpZW50X2Rpc3BsYXksCj4gIAkuaW9jdGxzID0gaTkxNV9pb2N0bHMs Cj4gIAkubnVtX2lvY3RscyA9IEFSUkFZX1NJWkUoaTkxNV9pb2N0bHMpLAo+ICAJLmZvcHMgPSAm aTkxNV9kcml2ZXJfZm9wcywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGQ0MzY4 NTg5YjM1NS4uZjc3ZjUxMDYxN2M1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBA QCAtMTcyMCw2ICsxNzIwLDkgQEAgZXh0ZXJuIHZvaWQgaW50ZWxfZmJkZXZfZmluaShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBleHRlcm4gdm9pZCBpbnRlbF9mYmRldl9z ZXRfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgc3RhdGUsIGJvb2wgc3luY2hy b25vdXMpOwo+ICBleHRlcm4gdm9pZCBpbnRlbF9mYmRldl9vdXRwdXRfcG9sbF9jaGFuZ2VkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICBleHRlcm4gdm9pZCBpbnRlbF9mYmRldl9yZXN0b3Jl X21vZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK3N0cnVjdCBkcm1fY2xpZW50X2Rpc3Bs YXkgKgo+ICtpOTE1X2luaXRpYWxfY2xpZW50X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdW5zaWduZWQgaW50IHdpZHRoLAo+ICsJCQkgICAgdW5zaWduZWQgaW50IGhlaWdodCk7Cj4g ICNlbHNlCj4gIHN0YXRpYyBpbmxpbmUgaW50IGludGVsX2ZiZGV2X2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgewo+IEBAIC0xNzQ5LDYgKzE3NTIsMTQgQEAgc3RhdGljIGlubGluZSB2 b2lkIGludGVsX2ZiZGV2X291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2ZiZGV2X3Jlc3RvcmVfbW9kZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIH0KPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRy bV9jbGllbnRfZGlzcGxheSAqCj4gK2k5MTVfaW5pdGlhbF9jbGllbnRfZGlzcGxheShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgd2lkdGgsCj4gKwkJCSAgICB1bnNpZ25lZCBp bnQgaGVpZ2h0KQo+ICt7Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiAgI2VuZGlmCj4gIAo+ ICAvKiBpbnRlbF9mYmMuYyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+IGluZGV4 IGE0YWI4NTc1YTcyZS4uYjdmNDRjOTQ3NWE4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2ZiZGV2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmRldi5jCj4gQEAgLTM4LDYgKzM4LDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3ZnYV9zd2l0Y2hl cm9vLmg+Cj4gIAo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1f Y2xpZW50Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiAgI2luY2x1ZGUgPGRybS9k cm1fZmJfaGVscGVyLmg+Cj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiBAQCAtMjg3LDE4ICsy ODgsNiBAQCBzdGF0aWMgaW50IGludGVsZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpo ZWxwZXIsCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGRybV9mYl9o ZWxwZXJfY3J0YyAqCj4gLWludGVsX2ZiX2hlbHBlcl9jcnRjKHN0cnVjdCBkcm1fZmJfaGVscGVy ICpmYl9oZWxwZXIsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAtewo+IC0JaW50IGk7Cj4gLQo+ IC0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKQo+IC0JCWlmIChm Yl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjID09IGNydGMpCj4gLQkJCXJldHVy biAmZmJfaGVscGVyLT5jcnRjX2luZm9baV07Cj4gLQo+IC0JcmV0dXJuIE5VTEw7Cj4gLX0KPiAt Cj4gIC8qCj4gICAqIFRyeSB0byByZWFkIHRoZSBCSU9TIGRpc3BsYXkgY29uZmlndXJhdGlvbiBh bmQgdXNlIGl0IGZvciB0aGUgaW5pdGlhbAo+ICAgKiBmYiBjb25maWd1cmF0aW9uLgo+IEBAIC0z MjYsNDQgKzMxNSw0OCBAQCBpbnRlbF9mYl9oZWxwZXJfY3J0YyhzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gICAqIGlzIGluIFZHQSBtb2Rl IHdlIG5lZWQgdG8gcmVjYWxjdWxhdGUgd2F0ZXJtYXJrcyBhbmQgc2V0IGEgbmV3IGhpZ2gtcmVz Cj4gICAqIGZyYW1lYnVmZmVyIGFueXdheS4KPiAgICovCj4gLXN0YXRpYyBib29sIGludGVsX2Zi X2luaXRpYWxfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gLQkJCQkg ICAgc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqKmNydGNzLAo+IC0JCQkJICAgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCj4gLQkJCQkgICAgc3RydWN0IGRybV9mYl9vZmZzZXQg Km9mZnNldHMsCj4gLQkJCQkgICAgYm9vbCAqZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0 KQo+ICtzdHJ1Y3QgZHJtX2NsaWVudF9kaXNwbGF5ICoKPiAraTkxNV9pbml0aWFsX2NsaWVudF9k aXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB3aWR0aCwKPiArCQkJ ICAgIHVuc2lnbmVkIGludCBoZWlnaHQpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZmJfaGVscGVyLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJdW5zaWduZWQgbG9uZyBjb25u X2NvbmZpZ3VyZWQsIGNvbm5fc2VxLCBtYXNrOwo+IC0JdW5zaWduZWQgaW50IGNvdW50ID0gbWlu KGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LCBCSVRTX1BFUl9MT05HKTsKPiAtCWludCBpLCBq Owo+IC0JYm9vbCAqc2F2ZV9lbmFibGVkOwo+IC0JYm9vbCBmYWxsYmFjayA9IHRydWUsIHJldCA9 IHRydWU7Cj4gKwlib29sIGZhbGxiYWNrID0gdHJ1ZSwgKmVuYWJsZWQgPSBOVUxMOwo+ICsJc3Ry dWN0IGRybV9jbGllbnRfZGlzcGxheSAqZGlzcGxheTsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9y ICoqY29ubmVjdG9yczsKPiArCWludCBpLCBjb25uZWN0b3JfY291bnQ7Cj4gKwl1bnNpZ25lZCBp bnQgY291bnQ7Cj4gIAlpbnQgbnVtX2Nvbm5lY3RvcnNfZW5hYmxlZCA9IDA7Cj4gIAlpbnQgbnVt X2Nvbm5lY3RvcnNfZGV0ZWN0ZWQgPSAwOwo+ICAJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVf Y3R4IGN0eDsKPiAgCj4gLQlzYXZlX2VuYWJsZWQgPSBrY2FsbG9jKGNvdW50LCBzaXplb2YoYm9v bCksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCFzYXZlX2VuYWJsZWQpCj4gLQkJcmV0dXJuIGZhbHNl Owo+ICsJZGlzcGxheSA9IGRybV9jbGllbnRfZGlzcGxheV9jcmVhdGUoZGV2KTsKPiArCWlmIChJ U19FUlIoZGlzcGxheSkpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gIAo+ICAJZHJtX21vZGVzZXRfYWNx dWlyZV9pbml0KCZjdHgsIDApOwo+ICAKPiAtCXdoaWxlIChkcm1fbW9kZXNldF9sb2NrX2FsbF9j dHgoZmJfaGVscGVyLT5kZXYsICZjdHgpICE9IDApCj4gKwl3aGlsZSAoZHJtX21vZGVzZXRfbG9j a19hbGxfY3R4KGRldiwgJmN0eCkgIT0gMCkKPiAgCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgp Owo+ICAKPiAtCW1lbWNweShzYXZlX2VuYWJsZWQsIGVuYWJsZWQsIGNvdW50KTsKPiArCWNvbm5l Y3Rvcl9jb3VudCA9IGRybV9jb25uZWN0b3JfZ2V0X2FsbChkZXYsICZjb25uZWN0b3JzKTsKPiAr CWlmIChjb25uZWN0b3JfY291bnQgPCAxKQo+ICsJCWdvdG8gYmFpbDsKPiArCj4gKwllbmFibGVk ID0gZHJtX2Nvbm5lY3Rvcl9nZXRfZW5hYmxlZF9zdGF0dXMoY29ubmVjdG9ycywgY29ubmVjdG9y X2NvdW50KTsKPiArCWlmICghZW5hYmxlZCkKPiArCQlnb3RvIGJhaWw7Cj4gKwo+ICsJY291bnQg PSBtaW4oY29ubmVjdG9yX2NvdW50LCBCSVRTX1BFUl9MT05HKTsKPiAgCW1hc2sgPSBHRU5NQVNL KGNvdW50IC0gMSwgMCk7Cj4gIAljb25uX2NvbmZpZ3VyZWQgPSAwOwo+ICByZXRyeToKPiAgCWNv bm5fc2VxID0gY29ubl9jb25maWd1cmVkOwo+ICAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKysp IHsKPiAtCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZiX2Nvbm47Cj4gLQkJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yID0gY29ubmVjdG9yc1tpXTsKPiArCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZTsKPiArCQlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0Owo+ICAJCXN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcjsKPiAtCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICpuZXdfY3J0 YzsKPiAtCj4gLQkJZmJfY29ubiA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07Cj4gLQkJ Y29ubmVjdG9yID0gZmJfY29ubi0+Y29ubmVjdG9yOwo+ICAKPiAgCQlpZiAoY29ubl9jb25maWd1 cmVkICYgQklUKGkpKQo+ICAJCQljb250aW51ZTsKPiBAQCAtNDAyLDE2ICszOTUsMTMgQEAgc3Rh dGljIGJvb2wgaW50ZWxfZmJfaW5pdGlhbF9jb25maWcoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciwKPiAgCj4gIAkJbnVtX2Nvbm5lY3RvcnNfZW5hYmxlZCsrOwo+ICAKPiAtCQluZXdf Y3J0YyA9IGludGVsX2ZiX2hlbHBlcl9jcnRjKGZiX2hlbHBlciwKPiAtCQkJCQkJY29ubmVjdG9y LT5zdGF0ZS0+Y3J0Yyk7Cj4gLQo+ICAJCS8qCj4gIAkJICogTWFrZSBzdXJlIHdlJ3JlIG5vdCB0 cnlpbmcgdG8gZHJpdmUgbXVsdGlwbGUgY29ubmVjdG9ycwo+ICAJCSAqIHdpdGggYSBzaW5nbGUg Q1JUQywgc2luY2Ugb3VyIGNsb25pbmcgc3VwcG9ydCBtYXkgbm90Cj4gIAkJICogbWF0Y2ggdGhl IEJJT1MuCj4gIAkJICovCj4gLQkJZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHsKPiAtCQkJ aWYgKGNydGNzW2pdID09IG5ld19jcnRjKSB7Cj4gKwkJZHJtX2NsaWVudF9kaXNwbGF5X2Zvcl9l YWNoX21vZGVzZXQobW9kZXNldCwgZGlzcGxheSkgewo+ICsJCQlpZiAobW9kZXNldC0+Y29ubmVj dG9yc1swXSA9PSBjb25uZWN0b3IpIHsKPiAgCQkJCURSTV9ERUJVR19LTVMoImZhbGxiYWNrOiBj bG9uZWQgY29uZmlndXJhdGlvblxuIik7Cj4gIAkJCQlnb3RvIGJhaWw7Cj4gIAkJCX0KPiBAQCAt NDIxLDI4ICs0MTEsMjYgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJfaW5pdGlhbF9jb25maWcoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCQkJICAgICAgY29ubmVjdG9yLT5uYW1l KTsKPiAgCj4gIAkJLyogZ28gZm9yIGNvbW1hbmQgbGluZSBtb2RlIGZpcnN0ICovCj4gLQkJbW9k ZXNbaV0gPSBkcm1fY29ubmVjdG9yX3BpY2tfY21kbGluZV9tb2RlKGNvbm5lY3Rvcik7Cj4gKwkJ bW9kZSA9IGRybV9jb25uZWN0b3JfcGlja19jbWRsaW5lX21vZGUoY29ubmVjdG9yKTsKPiAgCj4g IAkJLyogdHJ5IGZvciBwcmVmZXJyZWQgbmV4dCAqLwo+IC0JCWlmICghbW9kZXNbaV0pIHsKPiAr CQlpZiAoIW1vZGUpIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygibG9va2luZyBmb3IgcHJlZmVycmVk IG1vZGUgb24gY29ubmVjdG9yICVzICVkXG4iLAo+ICAJCQkJICAgICAgY29ubmVjdG9yLT5uYW1l LCBjb25uZWN0b3ItPmhhc190aWxlKTsKPiAtCQkJbW9kZXNbaV0gPSBkcm1fY29ubmVjdG9yX2hh c19wcmVmZXJyZWRfbW9kZShjb25uZWN0b3IsCj4gLQkJCQkJCQkJICAgIHdpZHRoLAo+IC0JCQkJ CQkJCSAgICBoZWlnaHQpOwo+ICsJCQltb2RlID0gZHJtX2Nvbm5lY3Rvcl9oYXNfcHJlZmVycmVk X21vZGUoY29ubmVjdG9yLAo+ICsJCQkJCQkJCXdpZHRoLCBoZWlnaHQpOwo+ICAJCX0KPiAgCj4g IAkJLyogTm8gcHJlZmVycmVkIG1vZGUgbWFya2VkIGJ5IHRoZSBFRElEPyBBcmUgdGhlcmUgYW55 IG1vZGVzPyAqLwo+IC0JCWlmICghbW9kZXNbaV0gJiYgIWxpc3RfZW1wdHkoJmNvbm5lY3Rvci0+ bW9kZXMpKSB7Cj4gKwkJaWYgKCFtb2RlICYmICFsaXN0X2VtcHR5KCZjb25uZWN0b3ItPm1vZGVz KSkgewo+ICAJCQlEUk1fREVCVUdfS01TKCJ1c2luZyBmaXJzdCBtb2RlIGxpc3RlZCBvbiBjb25u ZWN0b3IgJXNcbiIsCj4gIAkJCQkgICAgICBjb25uZWN0b3ItPm5hbWUpOwo+IC0JCQltb2Rlc1tp XSA9IGxpc3RfZmlyc3RfZW50cnkoJmNvbm5lY3Rvci0+bW9kZXMsCj4gLQkJCQkJCSAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSwKPiAtCQkJCQkJICAgIGhlYWQpOwo+ICsJCQltb2RlID0gbGlz dF9maXJzdF9lbnRyeSgmY29ubmVjdG9yLT5tb2RlcywKPiArCQkJCQkJc3RydWN0IGRybV9kaXNw bGF5X21vZGUsIGhlYWQpOwo+ICAJCX0KPiAgCj4gIAkJLyogbGFzdCByZXNvcnQ6IHVzZSBjdXJy ZW50IG1vZGUgKi8KPiAtCQlpZiAoIW1vZGVzW2ldKSB7Cj4gKwkJaWYgKCFtb2RlKSB7Cj4gIAkJ CS8qCj4gIAkJCSAqIElNUE9SVEFOVDogV2Ugd2FudCB0byB1c2UgdGhlIGFkanVzdGVkIG1vZGUg KGkuZS4KPiAgCQkJICogYWZ0ZXIgdGhlIHBhbmVsIGZpdHRlciB1cHNjYWxpbmcpIGFzIHRoZSBp bml0aWFsCj4gQEAgLTQ1OCwxNiArNDQ2LDI2IEBAIHN0YXRpYyBib29sIGludGVsX2ZiX2luaXRp YWxfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gIAkJCSAqLwo+ICAJ CQlEUk1fREVCVUdfS01TKCJsb29raW5nIGZvciBjdXJyZW50IG1vZGUgb24gY29ubmVjdG9yICVz XG4iLAo+ICAJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPiAtCQkJbW9kZXNbaV0gPSAmY29u bmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+bW9kZTsKPiArCQkJbW9kZSA9ICZjb25uZWN0b3ItPnN0YXRl LT5jcnRjLT5tb2RlOwo+ICAJCX0KPiAtCQljcnRjc1tpXSA9IG5ld19jcnRjOwo+ICsKPiArCQlt b2Rlc2V0ID0gZHJtX2NsaWVudF9kaXNwbGF5X2ZpbmRfbW9kZXNldChkaXNwbGF5LCBjb25uZWN0 b3ItPnN0YXRlLT5jcnRjKTsKPiArCQlpZiAoV0FSTl9PTighbW9kZXNldCkpCj4gKwkJCWdvdG8g YmFpbDsKPiArCj4gKwkJbW9kZXNldC0+bW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShkZXYsIG1v ZGUpOwo+ICsJCWRybV9jb25uZWN0b3JfZ2V0KGNvbm5lY3Rvcik7Cj4gKwkJbW9kZXNldC0+Y29u bmVjdG9yc1swXSA9IGNvbm5lY3RvcjsKPiArCQltb2Rlc2V0LT5udW1fY29ubmVjdG9ycyA9IDE7 Cj4gKwkJbW9kZXNldC0+eCA9IDA7Cj4gKwkJbW9kZXNldC0+eSA9IDA7Cj4gIAo+ICAJCURSTV9E RUJVR19LTVMoImNvbm5lY3RvciAlcyBvbiBbQ1JUQzolZDolc106ICVkeCVkJXNcbiIsCj4gIAkJ CSAgICAgIGNvbm5lY3Rvci0+bmFtZSwKPiAgCQkJICAgICAgY29ubmVjdG9yLT5zdGF0ZS0+Y3J0 Yy0+YmFzZS5pZCwKPiAgCQkJICAgICAgY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+bmFtZSwKPiAt CQkJICAgICAgbW9kZXNbaV0tPmhkaXNwbGF5LCBtb2Rlc1tpXS0+dmRpc3BsYXksCj4gLQkJCSAg ICAgIG1vZGVzW2ldLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFID8gImkiIDoiIik7 Cj4gKwkJCSAgICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKPiArCQkJICAgICAg bW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSA/ICJpIiA6ICIiKTsKPiAgCj4g IAkJZmFsbGJhY2sgPSBmYWxzZTsKPiAgCQljb25uX2NvbmZpZ3VyZWQgfD0gQklUKGkpOwo+IEBA IC00OTIsMTkgKzQ5MCwyMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYl9pbml0aWFsX2NvbmZpZyhz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICAJaWYgKGZhbGxiYWNrKSB7Cj4gIGJh aWw6Cj4gIAkJRFJNX0RFQlVHX0tNUygiTm90IHVzaW5nIGZpcm13YXJlIGNvbmZpZ3VyYXRpb25c biIpOwo+IC0JCW1lbWNweShlbmFibGVkLCBzYXZlX2VuYWJsZWQsIGNvdW50KTsKPiAtCQlyZXQg PSBmYWxzZTsKPiArCQlkcm1fY2xpZW50X2Rpc3BsYXlfZnJlZShkaXNwbGF5KTsKPiArCQlkaXNw bGF5ID0gTlVMTDsKPiAgCX0KPiAgCj4gIAlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ ICAJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ICAKPiAtCWtmcmVlKHNhdmVfZW5h YmxlZCk7Cj4gLQlyZXR1cm4gcmV0Owo+ICsJZHJtX2Nvbm5lY3Rvcl9wdXRfYWxsKGNvbm5lY3Rv cnMsIGNvbm5lY3Rvcl9jb3VudCk7Cj4gKwlrZnJlZShlbmFibGVkKTsKPiArCj4gKwlyZXR1cm4g ZGlzcGxheTsKPiAgfQo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1 bmNzIGludGVsX2ZiX2hlbHBlcl9mdW5jcyA9IHsKPiAtCS5pbml0aWFsX2NvbmZpZyA9IGludGVs X2ZiX2luaXRpYWxfY29uZmlnLAo+ICAJLmZiX3Byb2JlID0gaW50ZWxmYl9jcmVhdGUsCj4gIH07 Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHJ2LmggYi9pbmNsdWRlL2RybS9k cm1fZHJ2LmgKPiBpbmRleCA3ZTU0NWY1Zjk0ZDMuLjEzMzU2ZTZmZDQwYyAxMDA2NDQKPiAtLS0g YS9pbmNsdWRlL2RybS9kcm1fZHJ2LmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZHJ2LmgKPiBA QCAtMzIsNiArMzIsNyBAQAo+ICAKPiAgI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+Cj4gIAo+ ICtzdHJ1Y3QgZHJtX2NsaWVudF9kaXNwbGF5Owo+ICBzdHJ1Y3QgZHJtX2ZpbGU7Cj4gIHN0cnVj dCBkcm1fZ2VtX29iamVjdDsKPiAgc3RydWN0IGRybV9tYXN0ZXI7Cj4gQEAgLTU1Myw2ICs1NTQs MjYgQEAgc3RydWN0IGRybV9kcml2ZXIgewo+ICAJCQkgICAgc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAgCQkJICAgIHVpbnQzMl90IGhhbmRsZSk7Cj4gIAo+ICsJLyoqCj4gKwkgKiBAaW5pdGlh bF9jbGllbnRfY29uZmlnOgo+ICsJICoKPiArCSAqIERyaXZlciBjYWxsYmFjayB0byBzZXR1cCBh biBpbml0aWFsIGZiZGV2IGRpc3BsYXkgY29uZmlndXJhdGlvbi4KPiArCSAqIERyaXZlcnMgY2Fu IHVzZSB0aGlzIGNhbGxiYWNrIHRvIHRlbGwgdGhlIGZiZGV2IGVtdWxhdGlvbiB3aGF0IHRoZQo+ ICsJICogcHJlZmVycmVkIGluaXRpYWwgY29uZmlndXJhdGlvbiBpcy4gVGhpcyBpcyB1c2VmdWwg dG8gaW1wbGVtZW50Cj4gKwkgKiBzbW9vdGggYm9vdGluZyB3aGVyZSB0aGUgZmJkZXYgKGFuZCBz dWJzZXF1ZW50bHkgYWxsIHVzZXJzcGFjZSkgbmV2ZXIKPiArCSAqIGNoYW5nZXMgdGhlIG1vZGUs IGJ1dCBhbHdheXMgaW5oZXJpdHMgdGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uCj4gKwkgKgo+ ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4KPiArCSAqCj4gKwkgKiBSRVRVUk5TOgo+ ICsJICoKPiArCSAqIFRoZSBkcml2ZXIgc2hvdWxkIHJldHVybiB0cnVlIGlmIGEgc3VpdGFibGUg aW5pdGlhbCBjb25maWd1cmF0aW9uIGhhcwo+ICsJICogYmVlbiBmaWxsZWQgb3V0IGFuZCBmYWxz ZSB3aGVuIHRoZSBmYmRldiBoZWxwZXIgc2hvdWxkIGZhbGwgYmFjayB0bwo+ICsJICogdGhlIGRl ZmF1bHQgcHJvYmluZyBsb2dpYy4KPiArCSAqLwo+ICsJc3RydWN0IGRybV9jbGllbnRfZGlzcGxh eSAqKCppbml0aWFsX2NsaWVudF9kaXNwbGF5KShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJ CQkJCXVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCk7Cj4gKwo+ICAJLyoq Cj4gIAkgKiBAZ2VtX3ZtX29wczogRHJpdmVyIHByaXZhdGUgb3BzIGZvciB0aGlzIG9iamVjdAo+ ICAJICovCj4gLS0gCj4gMi4xNS4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVl ciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==