From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 04/16] drm/fb-helper: No need to cache rotation and sw_rotations Date: Thu, 28 Mar 2019 09:03:39 +0100 Message-ID: <20190328080339.GS2665@phenom.ffwll.local> References: <20190326175546.18126-1-noralf@tronnes.org> <20190326175546.18126-5-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: <20190326175546.18126-5-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: Hans de Goede , intel-gfx@lists.freedesktop.org, mstaudt@suse.de, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXIgMjYsIDIwMTkgYXQgMDY6NTU6MzRQTSArMDEwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IEdldHRpbmcgcm90YXRpb24gaW5mbyBpcyBjaGVhcCBzbyB3ZSBjYW4gZG8gaXQg b24gZGVtYW5kLgo+IAo+IFRoaXMgaXMgZG9uZSBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIHJlbW92 YWwgb2Ygc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0Yy4KPiAKPiBDYzogSGFucyBkZSBHb2VkZSA8 aGRlZ29lZGVAcmVkaGF0LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5v cmFsZkB0cm9ubmVzLm9yZz4KPiAtLS0KPiAKPiBIYW5zLCAKPiAKPiBZb3UgaGFkIHRoaXMgY29t bWVudCBpbmxpbmUgaW4gcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYygpIHRoZSBsYXN0IHRpbWUK PiBJIHNlbnQgdGhpcyBvdXQ6Cj4gCj4gICBXZSB3YW50IHBsYW5lX3N0YXRlLT5yb3RhdGlvbiB0 byBiZSBzZXQgdG8gRFJNX01PREVfUk9UQVRFXzAgaW4gdGhlIGVsc2UKPiAgIGNhc2UsIEFGQUlL IG5ld19wbGFuZV9zdGF0ZSBzdGFydHMgd2l0aCB0aGUgY3VycmVudCBzdGF0ZSBhbmQgcm90YXRp b24KPiAgIG1heSBoYXZlIGEgZGlmZmVyZW50IHZhbHVlIHRoZXJlLgo+ICAgCj4gICBPdGhlcndp c2UgdGhpcyBsb29rcyBnb29kIHRvIG1lLgo+IAo+IFJvdGF0aW9uIGlzIHJlc2V0IGZvciBlYWNo IHBsYW5lIGluIHRoZSBjb2RlIHNlY3Rpb24gYWJvdmUgdGhlIG9uZSBJJ20KPiBjaGFuZ2luZy4K CkkgdGhpbmsgYmVzdCB0byBsZXQgSGFucyByZXZpZXcvdGVzdCB0aGlzIGluIGRldGFpbC4gbGd0 bSBhdCBhIGdsYW5jZS4KQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3 bGwuY2g+Cj4gCj4gTm9yYWxmLgo+IAo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5j IHwgMTMxICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gIGluY2x1ZGUvZHJtL2Ry bV9mYl9oZWxwZXIuaCAgICAgfCAgIDggLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRp b25zKCspLCA3NCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiBpbmRl eCBiOTFkZjY1OGRiNTkuLmUxYjE0N2ZkZDNmOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZiX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIu Ywo+IEBAIC0zODcsNiArMzg3LDQ5IEBAIGludCBkcm1fZmJfaGVscGVyX2RlYnVnX2xlYXZlKHN0 cnVjdCBmYl9pbmZvICppbmZvKQo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9k ZWJ1Z19sZWF2ZSk7Cj4gIAo+ICsvKiBDaGVjayBpZiB0aGUgcGxhbmUgY2FuIGh3IHJvdGF0ZSB0 byBtYXRjaCBwYW5lbCBvcmllbnRhdGlvbiAqLwo+ICtzdGF0aWMgYm9vbCBkcm1fZmJfaGVscGVy X3BhbmVsX3JvdGF0aW9uKHN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQsCj4gKwkJCQkJIHVu c2lnbmVkIGludCAqcm90YXRpb24pCj4gK3sKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IgPSBtb2Rlc2V0LT5jb25uZWN0b3JzWzBdOwo+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxh bmUgPSBtb2Rlc2V0LT5jcnRjLT5wcmltYXJ5Owo+ICsJdTY0IHZhbGlkX21hc2sgPSAwOwo+ICsJ dW5zaWduZWQgaW50IGk7Cj4gKwo+ICsJaWYgKCFtb2Rlc2V0LT5udW1fY29ubmVjdG9ycykKPiAr CQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJc3dpdGNoIChjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5w YW5lbF9vcmllbnRhdGlvbikgewo+ICsJY2FzZSBEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElPTl9C T1RUT01fVVA6Cj4gKwkJKnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzE4MDsKPiArCQlicmVh azsKPiArCWNhc2UgRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fTEVGVF9VUDoKPiArCQkqcm90 YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfOTA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9NT0RF X1BBTkVMX09SSUVOVEFUSU9OX1JJR0hUX1VQOgo+ICsJCSpyb3RhdGlvbiA9IERSTV9NT0RFX1JP VEFURV8yNzA7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCSpyb3RhdGlvbiA9IERSTV9N T0RFX1JPVEFURV8wOwo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBUT0RPOiBzdXBwb3J0IDkwIC8g MjcwIGRlZ3JlZSBoYXJkd2FyZSByb3RhdGlvbiwKPiArCSAqIGRlcGVuZGluZyBvbiB0aGUgaGFy ZHdhcmUgdGhpcyBtYXkgcmVxdWlyZSB0aGUgZnJhbWVidWZmZXIKPiArCSAqIHRvIGJlIGluIGEg c3BlY2lmaWMgdGlsaW5nIGZvcm1hdC4KPiArCSAqLwo+ICsJaWYgKCpyb3RhdGlvbiAhPSBEUk1f TU9ERV9ST1RBVEVfMTgwIHx8ICFwbGFuZS0+cm90YXRpb25fcHJvcGVydHkpCj4gKwkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBwbGFuZS0+cm90YXRpb25fcHJvcGVydHkt Pm51bV92YWx1ZXM7IGkrKykKPiArCQl2YWxpZF9tYXNrIHw9ICgxVUxMIDw8IHBsYW5lLT5yb3Rh dGlvbl9wcm9wZXJ0eS0+dmFsdWVzW2ldKTsKPiArCj4gKwlpZiAoISgqcm90YXRpb24gJiB2YWxp ZF9tYXNrKSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiAr Cj4gIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhzdHJ1Y3QgZHJtX2ZiX2hl bHBlciAqZmJfaGVscGVyLCBib29sIGFjdGl2ZSkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+IEBAIC00MjcsMTAgKzQ3MCwxMyBAQCBzdGF0aWMgaW50 IHJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciwgYm9vbCBhY3Rpdgo+ICAJZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsg aSsrKSB7Cj4gIAkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9zZXQgPSAmZmJfaGVscGVyLT5j cnRjX2luZm9baV0ubW9kZV9zZXQ7Cj4gIAkJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IG1v ZGVfc2V0LT5jcnRjLT5wcmltYXJ5Owo+ICsJCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiAgCj4g LQkJLyogQ2Fubm90IGZhaWwgYXMgd2UndmUgYWxyZWFkeSBnb3R0ZW4gdGhlIHBsYW5lIHN0YXRl IGFib3ZlICovCj4gLQkJcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3Rh dGUoc3RhdGUsIHByaW1hcnkpOwo+IC0JCXBsYW5lX3N0YXRlLT5yb3RhdGlvbiA9IGZiX2hlbHBl ci0+Y3J0Y19pbmZvW2ldLnJvdGF0aW9uOwo+ICsJCWlmIChkcm1fZmJfaGVscGVyX3BhbmVsX3Jv dGF0aW9uKG1vZGVfc2V0LCAmcm90YXRpb24pKSB7Cj4gKwkJCS8qIENhbm5vdCBmYWlsIGFzIHdl J3ZlIGFscmVhZHkgZ290dGVuIHRoZSBwbGFuZSBzdGF0ZSBhYm92ZSAqLwo+ICsJCQlwbGFuZV9z dGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwgcHJpbWFyeSk7Cj4g KwkJCXBsYW5lX3N0YXRlLT5yb3RhdGlvbiA9IHJvdGF0aW9uOwo+ICsJCX0KPiAgCj4gIAkJcmV0 ID0gX19kcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnKG1vZGVfc2V0LCBzdGF0ZSk7Cj4gIAkJ aWYgKHJldCAhPSAwKQo+IEBAIC04ODEsNyArOTI3LDYgQEAgaW50IGRybV9mYl9oZWxwZXJfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWlmICghZmJfaGVscGVyLT5jcnRjX2luZm9b aV0ubW9kZV9zZXQuY29ubmVjdG9ycykKPiAgCQkJZ290byBvdXRfZnJlZTsKPiAgCQlmYl9oZWxw ZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5udW1fY29ubmVjdG9ycyA9IDA7Cj4gLQkJZmJfaGVs cGVyLT5jcnRjX2luZm9baV0ucm90YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfMDsKPiAgCX0KPiAg Cj4gIAlpID0gMDsKPiBAQCAtMjUwMCw2MiArMjU0NSw2IEBAIHN0YXRpYyBpbnQgZHJtX3BpY2tf Y3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCXJldHVybiBiZXN0X3Nj b3JlOwo+ICB9Cj4gIAo+IC0vKgo+IC0gKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiByb3RhdGlv biBpcyBuZWNlc3NhcnkgYmVjYXVzZSBvZiBwYW5lbCBvcmllbnRhdGlvbgo+IC0gKiBhbmQgaWYg aXQgaXMsIGlmIGl0IGlzIHN1cHBvcnRlZC4KPiAtICogSWYgcm90YXRpb24gaXMgbmVjZXNzYXJ5 IGFuZCBzdXBwb3J0ZWQsIGl0IGdldHMgc2V0IGluIGZiX2NydGMucm90YXRpb24uCj4gLSAqIElm IHJvdGF0aW9uIGlzIG5lY2Vzc2FyeSBidXQgbm90IHN1cHBvcnRlZCwgYSBEUk1fTU9ERV9ST1RB VEVfKiBmbGFnIGdldHMKPiAtICogb3ItZWQgaW50byBmYl9oZWxwZXItPnN3X3JvdGF0aW9ucy4g SW4gZHJtX3NldHVwX2NydGNzX2ZiKCkgd2UgY2hlY2sgaWYgb25seQo+IC0gKiBvbmUgYml0IGlz IHNldCBhbmQgdGhlbiB3ZSBzZXQgZmJfaW5mby5mYmNvbl9yb3RhdGVfaGludCB0byBtYWtlIGZi Y29uIGRvCj4gLSAqIHRoZSB1bnN1cHBvcnRlZCByb3RhdGlvbi4KPiAtICovCj4gLXN0YXRpYyB2 b2lkIGRybV9zZXR1cF9jcnRjX3JvdGF0aW9uKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIsCj4gLQkJCQkgICAgc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqZmJfY3J0YywKPiAtCQkJ CSAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+IC17Cj4gLQlzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSA9IGZiX2NydGMtPm1vZGVfc2V0LmNydGMtPnByaW1hcnk7Cj4gLQl1aW50 NjRfdCB2YWxpZF9tYXNrID0gMDsKPiAtCWludCBpLCByb3RhdGlvbjsKPiAtCj4gLQlmYl9jcnRj LT5yb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV8wOwo+IC0KPiAtCXN3aXRjaCAoY29ubmVjdG9y LT5kaXNwbGF5X2luZm8ucGFuZWxfb3JpZW50YXRpb24pIHsKPiAtCWNhc2UgRFJNX01PREVfUEFO RUxfT1JJRU5UQVRJT05fQk9UVE9NX1VQOgo+IC0JCXJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRF XzE4MDsKPiAtCQlicmVhazsKPiAtCWNhc2UgRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fTEVG VF9VUDoKPiAtCQlyb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV85MDsKPiAtCQlicmVhazsKPiAt CWNhc2UgRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fUklHSFRfVVA6Cj4gLQkJcm90YXRpb24g PSBEUk1fTU9ERV9ST1RBVEVfMjcwOwo+IC0JCWJyZWFrOwo+IC0JZGVmYXVsdDoKPiAtCQlyb3Rh dGlvbiA9IERSTV9NT0RFX1JPVEFURV8wOwo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBUT0RPOiBz dXBwb3J0IDkwIC8gMjcwIGRlZ3JlZSBoYXJkd2FyZSByb3RhdGlvbiwKPiAtCSAqIGRlcGVuZGlu ZyBvbiB0aGUgaGFyZHdhcmUgdGhpcyBtYXkgcmVxdWlyZSB0aGUgZnJhbWVidWZmZXIKPiAtCSAq IHRvIGJlIGluIGEgc3BlY2lmaWMgdGlsaW5nIGZvcm1hdC4KPiAtCSAqLwo+IC0JaWYgKHJvdGF0 aW9uICE9IERSTV9NT0RFX1JPVEFURV8xODAgfHwgIXBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSkg ewo+IC0JCWZiX2hlbHBlci0+c3dfcm90YXRpb25zIHw9IHJvdGF0aW9uOwo+IC0JCXJldHVybjsK PiAtCX0KPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5LT5u dW1fdmFsdWVzOyBpKyspCj4gLQkJdmFsaWRfbWFzayB8PSAoMVVMTCA8PCBwbGFuZS0+cm90YXRp b25fcHJvcGVydHktPnZhbHVlc1tpXSk7Cj4gLQo+IC0JaWYgKCEocm90YXRpb24gJiB2YWxpZF9t YXNrKSkgewo+IC0JCWZiX2hlbHBlci0+c3dfcm90YXRpb25zIHw9IHJvdGF0aW9uOwo+IC0JCXJl dHVybjsKPiAtCX0KPiAtCj4gLQlmYl9jcnRjLT5yb3RhdGlvbiA9IHJvdGF0aW9uOwo+IC0JLyog Um90YXRpbmcgaW4gaGFyZHdhcmUsIGZiY29uIHNob3VsZCBub3Qgcm90YXRlICovCj4gLQlmYl9o ZWxwZXItPnN3X3JvdGF0aW9ucyB8PSBEUk1fTU9ERV9ST1RBVEVfMDsKPiAtfQo+IC0KPiAgc3Rh dGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIs Cj4gIAkJCSAgICB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpCj4gIHsKPiBAQCAtMjYxNSw3ICsyNjA0 LDYgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIsCj4gIAkJZHJtX2ZiX2hlbHBlcl9tb2Rlc2V0X3JlbGVhc2UoZmJfaGVscGVyLAo+ ICAJCQkJCSAgICAgICZmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldCk7Cj4gIAo+IC0J ZmJfaGVscGVyLT5zd19yb3RhdGlvbnMgPSAwOwo+ICAJZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9j b25uZWN0b3IoZmJfaGVscGVyLCBpKSB7Cj4gIAkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUgPSBtb2Rlc1tpXTsKPiAgCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICpmYl9jcnRjID0g Y3J0Y3NbaV07Cj4gQEAgLTI2MzUsNyArMjYyMyw2IEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9j cnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICAJCQltb2Rlc2V0LT5tb2Rl ID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwKPiAgCQkJCQkJCSAgIGZiX2NydGMtPmRlc2lyZWRf bW9kZSk7Cj4gIAkJCWRybV9jb25uZWN0b3JfZ2V0KGNvbm5lY3Rvcik7Cj4gLQkJCWRybV9zZXR1 cF9jcnRjX3JvdGF0aW9uKGZiX2hlbHBlciwgZmJfY3J0YywgY29ubmVjdG9yKTsKPiAgCQkJbW9k ZXNldC0+Y29ubmVjdG9yc1ttb2Rlc2V0LT5udW1fY29ubmVjdG9ycysrXSA9IGNvbm5lY3RvcjsK PiAgCQkJbW9kZXNldC0+eCA9IG9mZnNldC0+eDsKPiAgCQkJbW9kZXNldC0+eSA9IG9mZnNldC0+ eTsKPiBAQCAtMjY1OCwxMSArMjY0NSwyMyBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Mo c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgc3RhdGljIHZvaWQgZHJtX3NldHVw X2NydGNzX2ZiKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gIHsKPiAgCXN0cnVj dCBmYl9pbmZvICppbmZvID0gZmJfaGVscGVyLT5mYmRldjsKPiArCXVuc2lnbmVkIGludCByb3Rh dGlvbiwgc3dfcm90YXRpb25zID0gMDsKPiAgCWludCBpOwo+ICAKPiAtCWZvciAoaSA9IDA7IGkg PCBmYl9oZWxwZXItPmNydGNfY291bnQ7IGkrKykKPiAtCQlpZiAoZmJfaGVscGVyLT5jcnRjX2lu Zm9baV0ubW9kZV9zZXQubnVtX2Nvbm5lY3RvcnMpCj4gLQkJCWZiX2hlbHBlci0+Y3J0Y19pbmZv W2ldLm1vZGVfc2V0LmZiID0gZmJfaGVscGVyLT5mYjsKPiArCWZvciAoaSA9IDA7IGkgPCBmYl9o ZWxwZXItPmNydGNfY291bnQ7IGkrKykgewo+ICsJCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVz ZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7Cj4gKwo+ICsJCWlmICghbW9k ZXNldC0+bnVtX2Nvbm5lY3RvcnMpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQltb2Rlc2V0LT5m YiA9IGZiX2hlbHBlci0+ZmI7Cj4gKwo+ICsJCWlmIChkcm1fZmJfaGVscGVyX3BhbmVsX3JvdGF0 aW9uKG1vZGVzZXQsICZyb3RhdGlvbikpCj4gKwkJCS8qIFJvdGF0aW5nIGluIGhhcmR3YXJlLCBm YmNvbiBzaG91bGQgbm90IHJvdGF0ZSAqLwo+ICsJCQlzd19yb3RhdGlvbnMgfD0gRFJNX01PREVf Uk9UQVRFXzA7Cj4gKwkJZWxzZQo+ICsJCQlzd19yb3RhdGlvbnMgfD0gcm90YXRpb247Cj4gKwl9 Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsK PiAgCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwgaSkgewo+IEBA IC0yNjc4LDcgKzI2NzcsNyBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3NfZmIoc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiAgCX0KPiAgCW11dGV4X3VubG9jaygmZmJfaGVs cGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiAgCj4gLQlzd2l0Y2ggKGZiX2hlbHBlci0+ c3dfcm90YXRpb25zKSB7Cj4gKwlzd2l0Y2ggKHN3X3JvdGF0aW9ucykgewo+ICAJY2FzZSBEUk1f TU9ERV9ST1RBVEVfMDoKPiAgCQlpbmZvLT5mYmNvbl9yb3RhdGVfaGludCA9IEZCX1JPVEFURV9V UjsKPiAgCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5o IGIvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCj4gaW5kZXggYmI5YWNlYTYxMzY5Li5jZmYx YWEyMjI4ODYgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCj4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCj4gQEAgLTUwLDcgKzUwLDYgQEAgc3RydWN0 IGRybV9mYl9oZWxwZXJfY3J0YyB7Cj4gIAlzdHJ1Y3QgZHJtX21vZGVfc2V0IG1vZGVfc2V0Owo+ ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRlc2lyZWRfbW9kZTsKPiAgCWludCB4LCB5Owo+ IC0JaW50IHJvdGF0aW9uOwo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTE3NSwxMyArMTc0LDYgQEAg c3RydWN0IGRybV9mYl9oZWxwZXIgewo+ICAJc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqY3J0 Y19pbmZvOwo+ICAJaW50IGNvbm5lY3Rvcl9jb3VudDsKPiAgCWludCBjb25uZWN0b3JfaW5mb19h bGxvY19jb3VudDsKPiAtCS8qKgo+IC0JICogQHN3X3JvdGF0aW9uczoKPiAtCSAqIEJpdG1hc2sg b2YgYWxsIHJvdGF0aW9ucyByZXF1ZXN0ZWQgZm9yIHBhbmVsLW9yaWVudGF0aW9uIHdoaWNoCj4g LQkgKiBjb3VsZCBub3QgYmUgaGFuZGxlZCBpbiBoYXJkd2FyZS4gSWYgb25seSBvbmUgYml0IGlz IHNldAo+IC0JICogZmJkZXYtPmZiY29uX3JvdGF0ZV9oaW50IGdldHMgc2V0IHRvIHRoZSByZXF1 ZXN0ZWQgcm90YXRpb24uCj4gLQkgKi8KPiAtCWludCBzd19yb3RhdGlvbnM7Cj4gIAkvKioKPiAg CSAqIEBjb25uZWN0b3JfaW5mbzoKPiAgCSAqCj4gLS0gCj4gMi4yMC4xCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKRGFuaWVsIFZl dHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs