From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v7] drm/omap: Rework the rotation-on-crtc hack Date: Mon, 7 Aug 2017 12:20:06 +0200 Message-ID: References: <20170725080122.20548-2-daniel.vetter@ffwll.ch> <20170731154235.6402-1-daniel.vetter@ffwll.ch> <2563110.xQjJWl2ggy@avalon> <0348f52a-94d4-4174-2060-6104e145acfa@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 31BE56E3E3 for ; Mon, 7 Aug 2017 10:20:09 +0000 (UTC) In-Reply-To: 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 , Tomi Valkeinen Cc: Daniel Vetter , Laurent Pinchart , DRI Development List-Id: dri-devel@lists.freedesktop.org T3AgMDQtMDgtMTcgb20gMTI6MDIgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+IE9uIEZyaSwgQXVn IDQsIDIwMTcgYXQgMTE6NTcgQU0sIFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5j b20+IHdyb3RlOgo+Pj4gSGVyZSB5b3UgZ28sIGNvbXBpbGUgdGVzdGVkIHZlcnNpb24uIDopCj4+ PiAtLS0tODwtLS0tCj4+PiBJIHdhbnQvbmVlZCB0byByZXdvcmsgdGhlIGNvcmUgcHJvcGVydHkg aGFuZGxpbmcsIGFuZCB0aGlzIGhhY2sgaXMKPj4+IGdldHRpbmcgaW4gdGhlIHdheS4gQnV0IHNp bmNlIGl0J3MgYSBub24tc3RhbmRhcmQgcHJvcGV0eSBvbmx5IHVzZWQgYnkKPj4+IGxlZ2FjeSB1 c2Vyc3BhY2Ugd2Uga25vdyB0aGF0IHRoaXMgd2lsbCBvbmx5IGV2ZXJ5IGJlIGNhbGxlZCBmcm9t Cj4+PiBpb2N0bCBjb2RlLiBBbmQgbmV2ZXIgb24gc29tZSBvdGhlciBmcmVlLXN0YW5kaW5nIHN0 YXRlIHN0cnVjdCwgd2hlcmUKPj4+IHRoaXMgb2xkIGhhY2sgd291bGRuJ3Qgd29yayBlaXRoZXIu Cj4+Pgo+Pj4gdjI6IGRvbid0IGZvcmdldCB6b3JkZXIgYW5kIGdldF9wcm9wZXJ0eSEKPj4+Cj4+ PiB2MzogU2hhZG93IHRoZSBsZWdhY3kgc3RhdGUgdG8gYXZvaWQgbG9ja2luZyBpc3N1ZXMgaW4g Z2V0X3Byb3BlcnR5Cj4+PiAoTWFhcnRlbikuCj4+Pgo+Pj4gdjQ6IFJldmlldyBmcm9tIExhdXJl bnQKPj4+IC0gTW92ZSBzdHJ1Y3Qgb21hcF9jcnRjX3N0YXRlIGludG8gb21hcF9jcnRjLmMKPj4+ IC0gQ2xlYW4gdXAgY29tbWVudHMuCj4+PiAtIERvbid0IGZvcmdldCB0byBjb3B5IHRoZSBzaGFk b3dlZCBzdGF0ZSBvdmVyIG9uIGR1cGxpY2F0ZS4KPj4+Cj4+PiB2NTogRG9uJ3QgZm9yZ2V0IHRv IHVwZGF0ZSB0aGUgcmVzZXQgaGFuZGxlciAoTWFhcnRlbikuCj4+PiB2NjogVXBkYXRlIG9tYXBf Y3J0Y19zdGF0ZSBzaGFkb3cgdmFsdWVzIGluIG9tYXBfY3J0Y19hdG9taWNfY2hlY2sgKE1hYXJ0 ZW4pLgo+Pj4KPj4+IFJldmlld2VkLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNo YXJ0QGlkZWFzb25ib2FyZC5jb20+ICh2NCkKPj4+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFh cnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+Pj4gQ2M6IFRvbWkgVmFsa2VpbmVuIDx0 b21pLnZhbGtlaW5lbkB0aS5jb20KPj4+IENjOiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBp bmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVy IDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+PiAtLS0KPj4+ICBk cml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuYyB8IDExOCArKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0KPj4+ICAxIGZpbGUgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygr KSwgMzcgZGVsZXRpb25zKC0pCj4+IFRoaXMgbWFrZXMgYWxsIHRoZSBDUlRDIHByb3BlcnRpZXMg ZGlzYXBwZWFyLi4uCj4gU3RyYW5nZSwgd2Ugc2hvdWxkIHN0aWxsIHJlZ2lzdGVyIHRoZW0sIHRo YXQncyByZWFsbHkgc3VycHJpc2luZy4KPgo+PiBUaGlzIGRvZXNuJ3QgZGVwZW5kIG9uIGFueXRo aW5nIGluIGRybS1uZXh0LCBkb2VzIGl0PyBJJ20gY3VycmVudGx5IG9uCj4+IHY0LjEzLXJjMy4g SSdsbCBsb29rIGEgYml0IG1vcmUgb24gd2hhdCdzIGdvaW5nIG9uIGxhdGVyIHRvZGF5Lgo+IE5v dCB0aGF0IEkga25vdyBvZi4gTGF0ZXIgcGF0Y2hlcyB3aWxsLCBidXQgdGhpcyBvbmUgc2hvdWxk IGJlIHN0YW5kLWFsb25lLgo+IC1EYW5pZWwKCi0tLS0tPjgtLS0tLS0tLQpJIHdhbnQvbmVlZCB0 byByZXdvcmsgdGhlIGNvcmUgcHJvcGVydHkgaGFuZGxpbmcsIGFuZCB0aGlzIGhhY2sgaXMKZ2V0 dGluZyBpbiB0aGUgd2F5LiBCdXQgc2luY2UgaXQncyBhIG5vbi1zdGFuZGFyZCBwcm9wZXR5IG9u bHkgdXNlZCBieQpsZWdhY3kgdXNlcnNwYWNlIHdlIGtub3cgdGhhdCB0aGlzIHdpbGwgb25seSBl dmVyeSBiZSBjYWxsZWQgZnJvbQppb2N0bCBjb2RlLiBBbmQgbmV2ZXIgb24gc29tZSBvdGhlciBm cmVlLXN0YW5kaW5nIHN0YXRlIHN0cnVjdCwgd2hlcmUKdGhpcyBvbGQgaGFjayB3b3VsZG4ndCB3 b3JrIGVpdGhlci4KCnYyOiBkb24ndCBmb3JnZXQgem9yZGVyIGFuZCBnZXRfcHJvcGVydHkhCgp2 MzogU2hhZG93IHRoZSBsZWdhY3kgc3RhdGUgdG8gYXZvaWQgbG9ja2luZyBpc3N1ZXMgaW4gZ2V0 X3Byb3BlcnR5CihNYWFydGVuKS4KCnY0OiBSZXZpZXcgZnJvbSBMYXVyZW50Ci0gTW92ZSBzdHJ1 Y3Qgb21hcF9jcnRjX3N0YXRlIGludG8gb21hcF9jcnRjLmMKLSBDbGVhbiB1cCBjb21tZW50cy4K LSBEb24ndCBmb3JnZXQgdG8gY29weSB0aGUgc2hhZG93ZWQgc3RhdGUgb3ZlciBvbiBkdXBsaWNh dGUuCgp2NTogRG9uJ3QgZm9yZ2V0IHRvIHVwZGF0ZSB0aGUgcmVzZXQgaGFuZGxlciAoTWFhcnRl bikuCnY2OiBVcGRhdGUgb21hcF9jcnRjX3N0YXRlIHNoYWRvdyB2YWx1ZXMgaW4gb21hcF9jcnRj X2F0b21pY19jaGVjayAoTWFhcnRlbikuCnY3OgotIEZpeCBnZXRfcHJvcGVydHkgdG8gcmV0dXJu IDAgYW5kIHNldCB2YWx1ZSBpbiAqdmFsIChNYWFydGVuKS4KLSBVcGRhdGUgY29tbWVudCBpbiBz ZXRfcHJvcGVydHkgZm9yIGNoYW5nZXMgaW4gdjYgKE1hYXJ0ZW4pLgoKUmV2aWV3ZWQtYnk6IExh dXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4gKHY0KQpD YzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4K Q2M6IFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20KQ2M6IExhdXJlbnQgUGlu Y2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KU2lnbmVkLW9mZi1ieTog RGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9jcnRjLmMgfCAxMjQgKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwg MzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21h cF9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2NydGMuYwppbmRleCAxNGU4 YTc3MzhiMDYuLjA5ZTA1ZTAwMjcwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBk cm0vb21hcF9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9jcnRjLmMK QEAgLTI2LDYgKzI2LDE2IEBACiAKICNpbmNsdWRlICJvbWFwX2Rydi5oIgogCisjZGVmaW5lIHRv X29tYXBfY3J0Y19zdGF0ZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IG9tYXBfY3J0Y19zdGF0 ZSwgYmFzZSkKKworc3RydWN0IG9tYXBfY3J0Y19zdGF0ZSB7CisJLyogTXVzdCBiZSBmaXJzdC4g Ki8KKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgYmFzZTsKKwkvKiBTaGFkb3cgdmFsdWVzIGZvciBs ZWdhY3kgdXNlcnNwYWNlIHN1cHBvcnQuICovCisJdW5zaWduZWQgaW50IHJvdGF0aW9uOworCXVu c2lnbmVkIGludCB6cG9zOworfTsKKwogI2RlZmluZSB0b19vbWFwX2NydGMoeCkgY29udGFpbmVy X29mKHgsIHN0cnVjdCBvbWFwX2NydGMsIGJhc2UpCiAKIHN0cnVjdCBvbWFwX2NydGMgewpAQCAt NDQ1LDYgKzQ1NSw4IEBAIHN0YXRpYyB2b2lkIG9tYXBfY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKIHN0YXRpYyBpbnQgb21hcF9jcnRjX2F0b21pY19jaGVjayhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKIHsK KwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwcmlfc3RhdGU7CisKIAlpZiAoc3RhdGUtPmNvbG9y X21nbXRfY2hhbmdlZCAmJiBzdGF0ZS0+Z2FtbWFfbHV0KSB7CiAJCXVpbnQgbGVuZ3RoID0gc3Rh dGUtPmdhbW1hX2x1dC0+bGVuZ3RoIC8KIAkJCXNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCk7 CkBAIC00NTMsNiArNDY1LDE2IEBAIHN0YXRpYyBpbnQgb21hcF9jcnRjX2F0b21pY19jaGVjayhz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKKwlwcmlfc3Rh dGUgPSBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUtPnN0YXRlLCBjcnRjLT5w cmltYXJ5KTsKKwlpZiAocHJpX3N0YXRlKSB7CisJCXN0cnVjdCBvbWFwX2NydGNfc3RhdGUgKm9t YXBfY3J0Y19zdGF0ZSA9CisJCQl0b19vbWFwX2NydGNfc3RhdGUoc3RhdGUpOworCisJCS8qIE1p cnJvciBuZXcgdmFsdWVzIGZvciB6cG9zIGFuZCByb3RhdGlvbiBpbiBvbWFwX2NydGNfc3RhdGUg Ki8KKwkJb21hcF9jcnRjX3N0YXRlLT56cG9zID0gcHJpX3N0YXRlLT56cG9zOworCQlvbWFwX2Ny dGNfc3RhdGUtPnJvdGF0aW9uID0gcHJpX3N0YXRlLT5yb3RhdGlvbjsKKwl9CisKIAlyZXR1cm4g MDsKIH0KIApAQCAtNDk4LDM5ICs1MjAsMzIgQEAgc3RhdGljIHZvaWQgb21hcF9jcnRjX2F0b21p Y19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJc3Bpbl91bmxvY2tfaXJxKCZjcnRjLT5k ZXYtPmV2ZW50X2xvY2spOwogfQogCi1zdGF0aWMgYm9vbCBvbWFwX2NydGNfaXNfcGxhbmVfcHJv cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0Jc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHkp Ci17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3Qgb21hcF9k cm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0KLQlyZXR1cm4gcHJvcGVydHkg PT0gcHJpdi0+em9yZGVyX3Byb3AgfHwKLQkJcHJvcGVydHkgPT0gY3J0Yy0+cHJpbWFyeS0+cm90 YXRpb25fcHJvcGVydHk7Ci19Ci0KIHN0YXRpYyBpbnQgb21hcF9jcnRjX2F0b21pY19zZXRfcHJv cGVydHkoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCQkgc3RydWN0IGRybV9jcnRjX3N0YXRl ICpzdGF0ZSwKIAkJCQkJIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAogCQkJCQkgdWlu dDY0X3QgdmFsKQogewotCWlmIChvbWFwX2NydGNfaXNfcGxhbmVfcHJvcChjcnRjLCBwcm9wZXJ0 eSkpIHsKLQkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Ci0JCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lID0gY3J0Yy0+cHJpbWFyeTsKLQotCQkvKgotCQkgKiBEZWxlZ2F0ZSBw cm9wZXJ0eSBzZXQgdG8gdGhlIHByaW1hcnkgcGxhbmUuIEdldCB0aGUgcGxhbmUKLQkJICogc3Rh dGUgYW5kIHNldCB0aGUgcHJvcGVydHkgZGlyZWN0bHkuCi0JCSAqLwotCi0JCXBsYW5lX3N0YXRl ID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUtPnN0YXRlLCBwbGFuZSk7Ci0JCWlm IChJU19FUlIocGxhbmVfc3RhdGUpKQotCQkJcmV0dXJuIFBUUl9FUlIocGxhbmVfc3RhdGUpOwor CXN0cnVjdCBvbWFwX2RybV9wcml2YXRlICpwcml2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsK KwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKIAotCQlyZXR1cm4gZHJtX2F0 b21pY19wbGFuZV9zZXRfcHJvcGVydHkocGxhbmUsIHBsYW5lX3N0YXRlLAotCQkJCXByb3BlcnR5 LCB2YWwpOwotCX0KKwkvKgorCSAqIERlbGVnYXRlIHByb3BlcnR5IHNldCB0byB0aGUgcHJpbWFy eSBwbGFuZS4gR2V0IHRoZSBwbGFuZSBzdGF0ZSBhbmQKKwkgKiBzZXQgdGhlIHByb3BlcnR5IGRp cmVjdGx5LCB0aGUgc2hhZG93IGNvcHkgd2lsbCBiZSBhc3NpZ25lZCBpbiB0aGUKKwkgKiBvbWFw X2NydGNfYXRvbWljX2NoZWNrIGNhbGxiYWNrLiBUaGlzIHdheSB1cGRhdGVzIHRvIHBsYW5lIHN0 YXRlIHdpbGwKKwkgKiBhbHdheXMgYmUgbWlycm9yZWQgaW4gdGhlIGNydGMgc3RhdGUgY29ycmVj dGx5LgorCSAqLworCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3Rh dGUtPnN0YXRlLCBjcnRjLT5wcmltYXJ5KTsKKwlpZiAoSVNfRVJSKHBsYW5lX3N0YXRlKSkKKwkJ cmV0dXJuIFBUUl9FUlIocGxhbmVfc3RhdGUpOworCisJaWYgKHByb3BlcnR5ID09IGNydGMtPnBy aW1hcnktPnJvdGF0aW9uX3Byb3BlcnR5KQorCQlwbGFuZV9zdGF0ZS0+cm90YXRpb24gPSB2YWw7 CisJZWxzZSBpZiAocHJvcGVydHkgPT0gcHJpdi0+em9yZGVyX3Byb3ApCisJCXBsYW5lX3N0YXRl LT56cG9zID0gdmFsOworCWVsc2UKKwkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXR1cm4gLUVJTlZB TDsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBvbWFwX2NydGNfYXRvbWljX2dldF9wcm9w ZXJ0eShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCkBAIC01MzgsMjggKzU1Myw1OSBAQCBzdGF0aWMg aW50IG9tYXBfY3J0Y19hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAkJCQkJIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAogCQkJCQkgdWludDY0X3QgKnZh bCkKIHsKLQlpZiAob21hcF9jcnRjX2lzX3BsYW5lX3Byb3AoY3J0YywgcHJvcGVydHkpKSB7Ci0J CS8qCi0JCSAqIERlbGVnYXRlIHByb3BlcnR5IGdldCB0byB0aGUgcHJpbWFyeSBwbGFuZS4gVGhl Ci0JCSAqIGRybV9hdG9taWNfcGxhbmVfZ2V0X3Byb3BlcnR5KCkgZnVuY3Rpb24gaXNuJ3QgZXhw b3J0ZWQsIGJ1dAotCQkgKiBjYW4gYmUgY2FsbGVkIHRocm91Z2ggZHJtX29iamVjdF9wcm9wZXJ0 eV9nZXRfdmFsdWUoKSBhcyB0aGF0Ci0JCSAqIHdpbGwgY2FsbCBkcm1fYXRvbWljX2dldF9wcm9w ZXJ0eSgpIGZvciBhdG9taWMgZHJpdmVycy4KLQkJICovCi0JCXJldHVybiBkcm1fb2JqZWN0X3By b3BlcnR5X2dldF92YWx1ZSgmY3J0Yy0+cHJpbWFyeS0+YmFzZSwKLQkJCQlwcm9wZXJ0eSwgdmFs KTsKLQl9CisJc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUgKnByaXYgPSBjcnRjLT5kZXYtPmRldl9w cml2YXRlOworCXN0cnVjdCBvbWFwX2NydGNfc3RhdGUgKm9tYXBfc3RhdGUgPSB0b19vbWFwX2Ny dGNfc3RhdGUoc3RhdGUpOworCisJaWYgKHByb3BlcnR5ID09IGNydGMtPnByaW1hcnktPnJvdGF0 aW9uX3Byb3BlcnR5KQorCQkqdmFsID0gb21hcF9zdGF0ZS0+cm90YXRpb247CisJZWxzZSBpZiAo cHJvcGVydHkgPT0gcHJpdi0+em9yZGVyX3Byb3ApCisJCSp2YWwgPSBvbWFwX3N0YXRlLT56cG9z OworCWVsc2UKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZv aWQgb21hcF9jcnRjX3Jlc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlpZiAoY3J0Yy0+ c3RhdGUpCisJCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKGNydGMtPnN0 YXRlKTsKKworCWtmcmVlKGNydGMtPnN0YXRlKTsKKwljcnRjLT5zdGF0ZSA9IGt6YWxsb2Moc2l6 ZW9mKHN0cnVjdCBvbWFwX2NydGNfc3RhdGUpLCBHRlBfS0VSTkVMKTsKKworCWlmIChjcnRjLT5z dGF0ZSkKKwkJY3J0Yy0+c3RhdGUtPmNydGMgPSBjcnRjOworfQorCitzdGF0aWMgc3RydWN0IGRy bV9jcnRjX3N0YXRlICoKK29tYXBfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRj ICpjcnRjKQoreworCXN0cnVjdCBvbWFwX2NydGNfc3RhdGUgKnN0YXRlLCAqY3VycmVudF9zdGF0 ZTsKKworCWlmIChXQVJOX09OKCFjcnRjLT5zdGF0ZSkpCisJCXJldHVybiBOVUxMOworCisJY3Vy cmVudF9zdGF0ZSA9IHRvX29tYXBfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CisKKwlzdGF0ZSA9 IGttYWxsb2Moc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOworCWlmIChzdGF0ZSkKKwkJX19k cm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShjcnRjLCAmc3RhdGUtPmJhc2Up OworCisJc3RhdGUtPnpwb3MgPSBjdXJyZW50X3N0YXRlLT56cG9zOworCXN0YXRlLT5yb3RhdGlv biA9IGN1cnJlbnRfc3RhdGUtPnJvdGF0aW9uOwogCi0JcmV0dXJuIC1FSU5WQUw7CisJcmV0dXJu ICZzdGF0ZS0+YmFzZTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBv bWFwX2NydGNfZnVuY3MgPSB7Ci0JLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNl dCwKKwkucmVzZXQgPSBvbWFwX2NydGNfcmVzZXQsCiAJLnNldF9jb25maWcgPSBkcm1fYXRvbWlj X2hlbHBlcl9zZXRfY29uZmlnLAogCS5kZXN0cm95ID0gb21hcF9jcnRjX2Rlc3Ryb3ksCiAJLnBh Z2VfZmxpcCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKIAkuZ2FtbWFfc2V0ID0gZHJt X2F0b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3NldCwKIAkuc2V0X3Byb3BlcnR5ID0gZHJtX2F0 b21pY19oZWxwZXJfY3J0Y19zZXRfcHJvcGVydHksCi0JLmF0b21pY19kdXBsaWNhdGVfc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2R1cGxp Y2F0ZV9zdGF0ZSA9IG9tYXBfY3J0Y19kdXBsaWNhdGVfc3RhdGUsCiAJLmF0b21pY19kZXN0cm95 X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlLAogCS5hdG9taWNf c2V0X3Byb3BlcnR5ID0gb21hcF9jcnRjX2F0b21pY19zZXRfcHJvcGVydHksCiAJLmF0b21pY19n ZXRfcHJvcGVydHkgPSBvbWFwX2NydGNfYXRvbWljX2dldF9wcm9wZXJ0eSwKLS0gCjIuMTEuMAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=