From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC v4 22/25] drm/fb-helper: Add generic fbdev emulation Date: Mon, 16 Apr 2018 10:52:25 +0200 Message-ID: <20180416085225.GQ31310@phenom.ffwll.local> References: <20180414115318.14500-1-noralf@tronnes.org> <20180414115318.14500-23-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-23-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 T24gU2F0LCBBcHIgMTQsIDIwMTggYXQgMDE6NTM6MTVQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IFRoaXMgYWRkcyBnZW5lcmljIGZiZGV2IGVtdWxhdGlvbiBmb3IgZHJpdmVycyB0 aGF0IHN1cHBvcnRzCj4gZHVtYiBidWZmZXJzIHdoaWNoIHRoZXkgY2FuIGV4cG9ydC4KPiAKPiBB bGwgdGhlIGRyaXZlciBoYXMgdG8gZG8gaXMgY2FsbCBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cCgp Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IE5vcmFsZiBUcsO4bm5lcyA8bm9yYWxmQHRyb25uZXMub3Jn Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIHwgMjU1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX2ZiX2hl bHBlci5oICAgICB8ICAyMCArKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMjc1IGluc2VydGlvbnMo KykKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiBpbmRleCBiMTEyNGMwOGIxZWQuLjE5NTRk ZTViMTNlMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+IEBAIC0zMCw2ICszMCw3IEBA Cj4gICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgIjogIiBmbXQKPiAgCj4gICNp bmNsdWRlIDxsaW51eC9jb25zb2xlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3N5c3JxLmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gQEAgLTE5OTUsNiArMTk5NiwyNjAgQEAgdm9pZCBk cm1fZmJfaGVscGVyX291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hhbmdlZCk7 Cj4gIAo+ICtzdGF0aWMgaW50IGRybV9mYmRldl9mYl9tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZv LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKPiArewo+ICsJc3RydWN0IGRybV9mYl9oZWxw ZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKPiArCj4gKwlyZXR1cm4gZG1hX2J1Zl9tbWFwKGZi X2hlbHBlci0+YnVmZmVyLT5kbWFfYnVmLCB2bWEsIDApOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBm Yl9vcHMuZmJfZGVzdHJveSBpcyBjYWxsZWQgYnkgdGhlIGxhc3QgcHV0X2ZiX2luZm8oKSBjYWxs IGF0IHRoZSBlbmQgb2YKPiArICogdW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlcigpIG9yIGZiX3JlbGVh c2UoKS4KPiArICovCj4gK3N0YXRpYyB2b2lkIGRybV9mYmRldl9mYl9kZXN0cm95KHN0cnVjdCBm Yl9pbmZvICppbmZvKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0g aW5mby0+cGFyOwo+ICsJc3RydWN0IGZiX29wcyAqZmJvcHMgPSBOVUxMOwo+ICsKPiArCURSTV9E RUJVRygiXG4iKTsKPiArCj4gKwlpZiAoZmJfaGVscGVyLT5mYmRldi0+ZmJkZWZpbykKPiArCQlm Ym9wcyA9IGZiX2hlbHBlci0+ZmJkZXYtPmZib3BzOwo+ICsKPiArCWRybV9mYl9oZWxwZXJfZmlu aShmYl9oZWxwZXIpOwo+ICsJZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUoZmJfaGVscGVy LT5idWZmZXIpOwo+ICsJZHJtX2NsaWVudF9mcmVlKGZiX2hlbHBlci0+Y2xpZW50KTsKPiArCWtm cmVlKGZiX2hlbHBlcik7Cj4gKwlrZnJlZShmYm9wcyk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1 Y3QgZmJfb3BzIGRybV9mYmRldl9mYl9vcHMgPSB7Cj4gKwkvKgo+ICsJICogTm8gbmVlZCB0byBz ZXQgb3duZXIsIHRoaXMgbW9kdWxlIGlzIGFscmVhZHkgcGlubmVkIGJ5IHRoZSBkcml2ZXIuCj4g KwkgKiBBIHJlZmVyZW5jZSBpcyB0YWtlbiBvbiB0aGUgZHJpdmVyIG1vZHVsZSBpbiBkcm1fZmJf aGVscGVyX2ZiX29wZW4oKQo+ICsJICogdG8gcHJldmVudCB0aGUgZHJpdmVyIGdvaW5nIGF3YXkg d2l0aCBvcGVuIGZkJ3MuCj4gKwkgKi8KPiArCURSTV9GQl9IRUxQRVJfREVGQVVMVF9PUFMsCj4g KwkuZmJfb3Blbgk9IGRybV9mYl9oZWxwZXJfZmJfb3BlbiwKPiArCS5mYl9yZWxlYXNlCT0gZHJt X2ZiX2hlbHBlcl9mYl9yZWxlYXNlLAo+ICsJLmZiX2Rlc3Ryb3kJPSBkcm1fZmJkZXZfZmJfZGVz dHJveSwKPiArCS5mYl9tbWFwCT0gZHJtX2ZiZGV2X2ZiX21tYXAsCj4gKwkuZmJfcmVhZAk9IGRy bV9mYl9oZWxwZXJfc3lzX3JlYWQsCj4gKwkuZmJfd3JpdGUJPSBkcm1fZmJfaGVscGVyX3N5c193 cml0ZSwKPiArCS5mYl9maWxscmVjdAk9IGRybV9mYl9oZWxwZXJfc3lzX2ZpbGxyZWN0LAo+ICsJ LmZiX2NvcHlhcmVhCT0gZHJtX2ZiX2hlbHBlcl9zeXNfY29weWFyZWEsCj4gKwkuZmJfaW1hZ2Vi bGl0CT0gZHJtX2ZiX2hlbHBlcl9zeXNfaW1hZ2VibGl0LAo+ICt9Owo+ICsKPiArc3RhdGljIHN0 cnVjdCBmYl9kZWZlcnJlZF9pbyBkcm1fZmJkZXZfZGVmaW8gPSB7Cj4gKwkuZGVsYXkJCT0gSFog LyAyMCwKPiArCS5kZWZlcnJlZF9pbwk9IGRybV9mYl9oZWxwZXJfZGVmZXJyZWRfaW8sCj4gK307 Cj4gKwo+ICsvKiBIYWNrIHRvIHRlc3QgdGlueWRybSBiZWZvcmUgY29udmVydGluZyB0byB2bWFs bG9jIGJ1ZmZlcnMgKi8KPiArc3RhdGljIGludCBkcm1fZmJkZXZfY21hX2RlZmVycmVkX2lvX21t YXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gKwkJCQkJICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSkKPiArewo+ICsJZmJfZGVmZXJyZWRfaW9fbW1hcChpbmZvLCB2bWEpOwo+ICsJdm1hLT52 bV9wYWdlX3Byb3QgPSBwZ3Byb3Rfd3JpdGVjb21iaW5lKHZtYS0+dm1fcGFnZV9wcm90KTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBkcm1fZmJfaGVscGVyX2dlbmVy aWNfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiArCQkJCSAgICAgICBz dHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2NsaWVudF9kZXYgKmNsaWVudCA9IGZiX2hlbHBlci0+Y2xpZW50Owo+ICsJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgc2l6ZXNfbW9kZSA9IHsKPiArCQkuaGRpc3BsYXkgPSBzaXplcy0+c3Vy ZmFjZV93aWR0aCwKPiArCQkudmRpc3BsYXkgPSBzaXplcy0+c3VyZmFjZV9oZWlnaHQsCj4gKwl9 Owo+ICsJc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXI7Cj4gKwlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYjsKPiArCXN0cnVjdCBmYl9pbmZvICpmYmk7Cj4gKwl1MzIgZm9ybWF0Owo+ ICsJaW50IHJldDsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJzdXJmYWNlIHdpZHRoKCVkKSwgaGVp Z2h0KCVkKSBhbmQgYnBwKCVkKVxuIiwKPiArCQkgICAgICBzaXplcy0+c3VyZmFjZV93aWR0aCwg c2l6ZXMtPnN1cmZhY2VfaGVpZ2h0LAo+ICsJCSAgICAgIHNpemVzLT5zdXJmYWNlX2JwcCk7Cj4g Kwo+ICsJZm9ybWF0ID0gZHJtX21vZGVfbGVnYWN5X2ZiX2Zvcm1hdChzaXplcy0+c3VyZmFjZV9i cHAsIHNpemVzLT5zdXJmYWNlX2RlcHRoKTsKPiArCWJ1ZmZlciA9IGRybV9jbGllbnRfZnJhbWVi dWZmZXJfY3JlYXRlKGNsaWVudCwgJnNpemVzX21vZGUsIGZvcm1hdCk7Cj4gKwlpZiAoSVNfRVJS KGJ1ZmZlcikpCj4gKwkJcmV0dXJuIFBUUl9FUlIoYnVmZmVyKTsKPiArCj4gKwlmYl9oZWxwZXIt PmJ1ZmZlciA9IGJ1ZmZlcjsKPiArCWZiX2hlbHBlci0+ZmIgPSBidWZmZXItPmZiOwo+ICsJZmIg PSBidWZmZXItPmZiOwo+ICsKPiArCWZiaSA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJpKGZiX2hl bHBlcik7Cj4gKwlpZiAoSVNfRVJSKGZiaSkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGZiaSk7Cj4g KwkJZ290byBlcnJfZnJlZV9idWZmZXI7Cj4gKwl9Cj4gKwo+ICsJZmJpLT5wYXIgPSBmYl9oZWxw ZXI7Cj4gKwlmYmktPmZib3BzID0gJmRybV9mYmRldl9mYl9vcHM7Cj4gKwlmYmktPnNjcmVlbl9z aXplID0gZmItPmhlaWdodCAqIGZiLT5waXRjaGVzWzBdOwo+ICsJZmJpLT5maXguc21lbV9sZW4g PSBmYmktPnNjcmVlbl9zaXplOwo+ICsJZmJpLT5zY3JlZW5fYnVmZmVyID0gYnVmZmVyLT52YWRk cjsKPiArCXN0cmNweShmYmktPmZpeC5pZCwgIkRSTSBlbXVsYXRlZCIpOwo+ICsKPiArCWRybV9m Yl9oZWxwZXJfZmlsbF9maXgoZmJpLCBmYi0+cGl0Y2hlc1swXSwgZmItPmZvcm1hdC0+ZGVwdGgp Owo+ICsJZHJtX2ZiX2hlbHBlcl9maWxsX3ZhcihmYmksIGZiX2hlbHBlciwgc2l6ZXMtPmZiX3dp ZHRoLCBzaXplcy0+ZmJfaGVpZ2h0KTsKPiArCj4gKwkvKgo+ICsJICogRHJpdmVycyB0aGF0IHNl dCB0aGUgZGlydHkgY2FsbGJhY2s6Cj4gKwkgKiAtIERvZXNuJ3QgdXNlIGRlZmlvOgo+ICsJICog ICBpOTE1LCB2aXJ0aW8sIHJvY2tjaGlwCj4gKwkgKiAtIGRlZmlvIHdpdGggdm1hbGxvYyBidWZm ZXIgYmxpdHRlZCBvbiB0aGUgcmVhbCBvbmU6Cj4gKwkgKiAgIHZtd2dmeAo+ICsJICogLSBkZWZp byBpcyBkaXNhYmxlZCBiZWNhdXNlIGl0IGRvZXNuJ3Qgd29yayB3aXRoIHNobWVtOgo+ICsJICog ICB1ZGwKPiArCSAqIC0gZGVmaW8gd2l0aCBzcGVjaWFsIGRpcnR5IGNhbGxiYWNrIGZvciBmYmRl diwgdXNlcyB2bWFsbG9jIGZvciBmYmRldjoKPiArCSAqICAgcXhsCj4gKwkgKiAtIGRlZmlvIHdp dGggY21hIGJ1ZmZlciwgd2lsbCBtb3ZlIHRvIHZtYWxsb2MgYnVmZmVyczoKPiArCSAqICAgdGlu eWRybQo+ICsJICoKPiArCSAqIFRPRE86Cj4gKwkgKiBNYXliZSBhZGQgdm1hbGxvYyBzaGFkb3cg YnVmZmVyIHN1cHBvcnQuCj4gKwkgKi8KPiArCj4gKwlpZiAoZmItPmZ1bmNzLT5kaXJ0eSkgewo+ ICsJCXN0cnVjdCBmYl9vcHMgKmZib3BzOwo+ICsKPiArCQkvKgo+ICsJCSAqIGZiX2RlZmVycmVk X2lvX2NsZWFudXAoKSBjbGVhcnMgJmZib3BzLT5mYl9tbWFwIHNvIGEgcGVyCj4gKwkJICogaW5z dGFuY2UgdmVyc2lvbiBpcyBuZWNlc3NhcnkuCj4gKwkJICovCj4gKwkJZmJvcHMgPSBremFsbG9j KHNpemVvZigqZmJvcHMpLCBHRlBfS0VSTkVMKTsKPiArCQlpZiAoIWZib3BzKSB7Cj4gKwkJCXJl dCA9IC1FTk9NRU07Cj4gKwkJCWdvdG8gZXJyX2ZiX2luZm9fZGVzdHJveTsKPiArCQl9Cj4gKwo+ ICsJCSpmYm9wcyA9ICpmYmktPmZib3BzOwo+ICsJCWZiaS0+ZmJvcHMgPSBmYm9wczsKPiArCj4g KwkJZmJpLT5mYmRlZmlvID0gJmRybV9mYmRldl9kZWZpbzsKPiArCj4gKwkJLyogSGFjayBzbyBJ IGNhbiB0ZXN0IHdpdGggdGlueWRybSAqLwo+ICsJCWZiaS0+Zml4LnNtZW1fc3RhcnQgPSBwYWdl X3RvX3BoeXModmlydF90b19wYWdlKGJ1ZmZlci0+dmFkZHIpKTsKPiArCj4gKwkJZmJfZGVmZXJy ZWRfaW9faW5pdChmYmkpOwo+ICsKPiArCQkvKiBIYWNrIHNvIEkgY2FuIHRlc3Qgd2l0aCB0aW55 ZHJtICovCj4gKwkJZmJpLT5mYm9wcy0+ZmJfbW1hcCA9IGRybV9mYmRldl9jbWFfZGVmZXJyZWRf aW9fbW1hcDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9mYl9pbmZvX2Rlc3Ry b3k6Cj4gKwlkcm1fZmJfaGVscGVyX2ZpbmkoZmJfaGVscGVyKTsKPiArZXJyX2ZyZWVfYnVmZmVy Ogo+ICsJZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUoYnVmZmVyKTsKPiArCj4gKwlyZXR1 cm4gcmV0Owo+ICt9CgpJJ2Qgc3BsaXQgdGhpcyBwYXRjaCBpbnRvIDI6CgotIEZpcnN0IG9uZSBq dXN0IGFkZHMgdGhlIGdlbmVyaWNfcHJvYmUgY2FsbGJhY2suIFdlIGNvdWxkIHRoZW4gc3RhcnQK ICByb2xsaW5nIHRoYXQgb25lIG91dCB0byBsb3RzIG9mIGRyaXZlcnMsIHdoaWNoIHdvdWxkIGdp dmUgYWxsIHRoaXMgY29kZQogIGxvdHMgb2YgdGVzdGluZy4KCi0gU2Vjb25kIHBhcnQgaXMgdGhl IGdlbmVyaWMgY2xpZW50IHN0dWZmIGJlbG93LiBBZ2FpbiB0aGVuIHdpdGggZm9sbG93LXVwCiAg cGF0Y2hlcyB0byByb2xsIGl0IG91dC4KClRoaXMgd2F5IHdlIGNvdWxkIGFjaGlldmUgYSBzbGln aHRseSBtb3JlIGdyYWR1YWwgdHJhbnNpdGlvbiBvZiBkcml2ZXJzLgpBbmQgdGhlIGZpcnN0IHN0 ZXAgc2hvdWxkIG9ubHkgYmUgcmVwbGFjaW5nIHRoZSBmYl9wcm9iZSBjYWxsYmFjay4KLURhbmll bAoKCj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mYl9oZWxwZXJfZnVuY3MgZHJtX2Zi X2hlbHBlcl9nZW5lcmljX2Z1bmNzID0gewo+ICsJLmZiX3Byb2JlID0gZHJtX2ZiX2hlbHBlcl9n ZW5lcmljX3Byb2JlLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBkcm1fZmJkZXZfY2xpZW50X3Jl bW92ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKPiArewo+ICsJc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciA9IGNsaWVudC0+cHJpdmF0ZTsKPiArCj4gKwlpZiAoIWZiX2hl bHBlci0+ZmJkZXYpIHsKPiArCQlrZnJlZShmYl9oZWxwZXIpOwo+ICsJCXJldHVybiAwOwo+ICsJ fQo+ICsKPiArCXVucmVnaXN0ZXJfZnJhbWVidWZmZXIoZmJfaGVscGVyLT5mYmRldik7Cj4gKwo+ ICsJLyoKPiArCSAqIElmIHVzZXJzcGFjZSBpcyBjbG9zZWQgdGhlIGNsaWVudCBpcyBub3cgZnJl ZWQgYnkKPiArCSAqIGRybV9mYmRldl9mYl9kZXN0cm95KCksIG90aGVyd2lzZSBpdCB3aWxsIGJl IGZyZWVkIG9uIHRoZSBsYXN0IGNsb3NlLgo+ICsJICogUmV0dXJuIDEgdG8gdGVsbCB0aGF0IGZy ZWVpbmcgaXMgdGFrZW4gY2FyZSBvZi4KPiArCSAqLwo+ICsKPiArCXJldHVybiAxOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IGRybV9mYmRldl9jbGllbnRfbGFzdGNsb3NlKHN0cnVjdCBkcm1fY2xp ZW50X2RldiAqY2xpZW50KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVy ID0gY2xpZW50LT5wcml2YXRlOwo+ICsKPiArCWRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9t b2RlX3VubG9ja2VkKGZiX2hlbHBlcik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgZHJtX2ZiZGV2X2NsaWVudF9ob3RwbHVnKHN0cnVjdCBkcm1fY2xpZW50X2RldiAq Y2xpZW50KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gY2xpZW50 LT5wcml2YXRlOwo+ICsKPiArCWlmIChmYl9oZWxwZXItPmZiZGV2KQo+ICsJCXJldHVybiAwOwo+ ICsKPiArCXJldHVybiBkcm1fZmJfaGVscGVyX2ZiZGV2X3NldHVwKGNsaWVudC0+ZGV2LCBmYl9o ZWxwZXIsCj4gKwkJCQkJICZkcm1fZmJfaGVscGVyX2dlbmVyaWNfZnVuY3MsCj4gKwkJCQkJIGZi X2hlbHBlci0+cHJlZmVycmVkX2JwcCwgMCk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2NsaWVudF9mdW5jcyBkcm1fZmJkZXZfY2xpZW50X2Z1bmNzID0gewo+ICsJLm5hbWUJ CT0gImZiZGV2IiwKPiArCS5yZW1vdmUJCT0gZHJtX2ZiZGV2X2NsaWVudF9yZW1vdmUsCj4gKwku bGFzdGNsb3NlCT0gZHJtX2ZiZGV2X2NsaWVudF9sYXN0Y2xvc2UsCj4gKwkuaG90cGx1Zwk9IGRy bV9mYmRldl9jbGllbnRfaG90cGx1ZywKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fZmJfaGVs cGVyX2dlbmVyaWNfZmJkZXZfc2V0dXAoKSAtIFNldHVwIGdlbmVyaWMgZmJkZXYgZW11bGF0aW9u Cj4gKyAqIEBkZXY6IERSTSBkZXZpY2UKPiArICogQHByZWZlcnJlZF9icHA6IFByZWZlcnJlZCBi aXRzIHBlciBwaXhlbCBmb3IgdGhlIGRldmljZS4KPiArICogICAgICAgICAgICAgICAgIEBkZXYt Pm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aCBpcyB1c2VkIGlmIHRoaXMgaXMgemVyby4KPiAr ICoKPiArICogVGhpcyBmdW5jdGlvbiBzZXRzIHVwIGdlbmVyaWMgZmJkZXYgZW11bGF0aW9uIGZv ciBkcml2ZXJzIHRoYXQgc3VwcG9ydHMKPiArICogZHVtYiBidWZmZXJzIHdoaWNoIGNhbiBiZSBl eHBvcnRlZC4KPiArICoKPiArICogUmVzdG9yZSwgaG90cGx1ZyBldmVudHMgYW5kIHRlYXJkb3du IGFyZSBhbGwgdGFrZW4gY2FyZSBvZi4gRHJpdmVycyB0aGF0IGRvZXMKPiArICogc3VzcGVuZC9y ZXN1bWUgbmVlZCB0byBjYWxsIGRybV9mYl9oZWxwZXJfc2V0X3N1c3BlbmRfdW5sb2NrZWQoKSB0 aGVtc2VsdmVzLgo+ICsgKiBTaW1wbGUgZHJpdmVycyBtaWdodCB1c2UgZHJtX21vZGVfY29uZmln X2hlbHBlcl9zdXNwZW5kKCkuCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIFplcm8gb24gc3Vj Y2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgZHJt X2ZiZGV2X2dlbmVyaWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHByZWZlcnJlZF9icHApCj4gK3sKPiArCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXI7 Cj4gKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudDsKPiArCj4gKwlpZiAoIWRybV9mYmRl dl9lbXVsYXRpb24pCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJZmJfaGVscGVyID0ga3phbGxvYyhz aXplb2YoKmZiX2hlbHBlciksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFmYl9oZWxwZXIpCj4gKwkJ cmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJY2xpZW50ID0gZHJtX2NsaWVudF9uZXcoZGV2LCAmZHJt X2ZiZGV2X2NsaWVudF9mdW5jcyk7Cj4gKwlpZiAoSVNfRVJSKGNsaWVudCkpIHsKPiArCQlrZnJl ZShmYl9oZWxwZXIpOwo+ICsJCXJldHVybiBQVFJfRVJSKGNsaWVudCk7Cj4gKwl9Cj4gKwo+ICsJ Y2xpZW50LT5wcml2YXRlID0gZmJfaGVscGVyOwo+ICsJZmJfaGVscGVyLT5jbGllbnQgPSBjbGll bnQ7Cj4gKwlmYl9oZWxwZXItPnByZWZlcnJlZF9icHAgPSBwcmVmZXJyZWRfYnBwOwo+ICsKPiAr CWRybV9mYmRldl9jbGllbnRfaG90cGx1ZyhjbGllbnQpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXApOwo+ICsKPiAgLyogVGhl IEtjb25maWcgRFJNX0tNU19IRUxQRVIgc2VsZWN0cyBGUkFNRUJVRkZFUl9DT05TT0xFIChpZiAh RVhQRVJUKQo+ICAgKiBidXQgdGhlIG1vZHVsZSBkb2Vzbid0IGRlcGVuZCBvbiBhbnkgZmIgY29u c29sZSBzeW1ib2xzLiAgQXQgbGVhc3QKPiAgICogYXR0ZW1wdCB0byBsb2FkIGZiY29uIHRvIGF2 b2lkIGxlYXZpbmcgdGhlIHN5c3RlbSB3aXRob3V0IGEgdXNhYmxlIGNvbnNvbGUuCj4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mYl9o ZWxwZXIuaAo+IGluZGV4IDMzMDk4Mzk3NWQ1ZS4uNzExZGExNzQ3ODM2IDEwMDY0NAo+IC0tLSBh L2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9mYl9o ZWxwZXIuaAo+IEBAIC0xMjYsNiArMTI2LDIwIEBAIHN0cnVjdCBkcm1fZmJfaGVscGVyIHsKPiAg CSAqLwo+ICAJc3RydWN0IGRybV9jbGllbnRfZGlzcGxheSAqZGlzcGxheTsKPiAgCj4gKwkvKioK PiArCSAqIEBjbGllbnQ6Cj4gKwkgKgo+ICsJICogRFJNIGNsaWVudCB1c2VkIGJ5IHRoZSBnZW5l cmljIGZiZGV2IGVtdWxhdGlvbi4KPiArCSAqLwo+ICsJc3RydWN0IGRybV9jbGllbnRfZGV2ICpj bGllbnQ7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAYnVmZmVyOgo+ICsJICoKPiArCSAqIEZyYW1lYnVm ZmVyIHVzZWQgYnkgdGhlIGdlbmVyaWMgZmJkZXYgZW11bGF0aW9uLgo+ICsJICovCj4gKwlzdHJ1 Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlcjsKPiArCj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Zi X2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gIAlzdHJ1Y3QgZmJfaW5mbyAqZmJkZXY7Cj4gIAl1MzIg cHNldWRvX3BhbGV0dGVbMTddOwo+IEBAIC0yMTksNiArMjMzLDcgQEAgc3RydWN0IGRybV9mYl9o ZWxwZXIgewo+ICAJLmZiX2lvY3RsCT0gZHJtX2ZiX2hlbHBlcl9pb2N0bAo+ICAKPiAgI2lmZGVm IENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OCj4gK2ludCBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1 cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2JwcCk7Cj4g IHZvaWQgZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCj4gIAkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVs cGVyX2Z1bmNzICpmdW5jcyk7Cj4gIGludCBkcm1fZmJfaGVscGVyX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiBAQCAtMjk3LDYgKzMxMiwxMSBAQCB2b2lkIGRybV9mYl9oZWxwZXJfZmJk ZXZfdGVhcmRvd24oc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIHZvaWQgZHJtX2ZiX2hlbHBl cl9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIHZvaWQgZHJtX2ZiX2hlbHBl cl9vdXRwdXRfcG9sbF9jaGFuZ2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAjZWxzZQo+ ICtzdGF0aWMgaW5saW5lIGludAo+ICtkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2JwcCkKPiArewo+ICt9Cj4gKwo+ ICBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIAkJCQkJc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPiAgCQkJCQlj b25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyAqZnVuY3MpCj4gLS0gCj4gMi4xNS4xCj4g Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgot LSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==