From mboxrd@z Thu Jan 1 00:00:00 1970
From: Philipp Zabel
Subject: Re: [PATCH v4 4/6] drm: bridge: dw-hdmi: Switch to V4L bus format
and encodings
Date: Wed, 22 Mar 2017 17:21:17 +0100
Message-ID: <1490199677.2285.48.camel@pengutronix.de>
References: <1490109161-20529-1-git-send-email-narmstrong@baylibre.com>
<1490109161-20529-5-git-send-email-narmstrong@baylibre.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Return-path:
Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de
[IPv6:2001:67c:670:201:290:27ff:fe1d:cc33])
by gabe.freedesktop.org (Postfix) with ESMTPS id F35F06E21A
for ; Wed, 22 Mar 2017 16:21:22 +0000 (UTC)
In-Reply-To: <1490109161-20529-5-git-send-email-narmstrong@baylibre.com>
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
To: Neil Armstrong
Cc: Jose.Abreu@synopsys.com, laurent.pinchart+renesas@ideasonboard.com, linux-doc@vger.kernel.org, kieran.bingham@ideasonboard.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, hans.verkuil@cisco.com, sakari.ailus@linux.intel.com, linux-amlogic@lists.infradead.org, mchehab@kernel.org, linux-media@vger.kernel.org
List-Id: dri-devel@lists.freedesktop.org
T24gVHVlLCAyMDE3LTAzLTIxIGF0IDE2OjEyICswMTAwLCBOZWlsIEFybXN0cm9uZyB3cm90ZToK
PiBTb21lIGRpc3BsYXkgcGlwZWxpbmVzIGNhbiBvbmx5IHByb3ZpZGUgbm9uLVJCRyBpbnB1dCBw
aXhlbHMgdG8gdGhlIEhETUkgVFgKPiBDb250cm9sbGVyLCB0aGlzIHBhdGNoIHRha2VzIHRoZSBw
aXhlbCBmb3JtYXQgZnJvbSB0aGUgcGxhdF9kYXRhIGlmIHByb3ZpZGVkLgo+IAo+IFNpZ25lZC1v
ZmYtYnk6IE5laWwgQXJtc3Ryb25nIDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT4KCk9uIGkuTVg2
IHdlIGNvdWxkIHByb3ZpZGUgUkdCL1lVViBidXMgZm9ybWF0cyBkeW5hbWljYWxseS4gV291bGQg
aXQgbWFrZQpzZW5zZSB0byBuZWdvdGlhdGUgdGhpcyB3aXRoIHRoZSBwaXhlbCBwcm92aWRlciBp
bnN0ZWFkIG9mIGZpeGluZyBpdCBpbgpwbGF0Zm9ybSBkYXRhPwpJIGltYWdpbmUgdGhhdCBpZiBh
IFlVViBpbWFnZSB3aXRoIHRoZSBjb3JyZWN0IGNvbG9yc3BhY2UgaXMgc3VwcG9zZWQgdG8KYmUg
dHJhbnNtaXR0ZWQgdG8gYSBUViB0aGF0IHN1cHBvcnRzIHRoYXQgZm9ybWF0LCBpdCBtaWdodCBi
ZSB1c2VmdWwgdG8KYXZvaWQgcGFzc2luZyB0aHJvdWdoIHR3byBjb2xvcnNwYWNlIGNvbnZlcnRl
cnMgb24gdGhlIHdheS4KCnJlZ2FyZHMKUGhpbGlwcAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt
L2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMgfCAzMjYgKysrKysrKysrKysrKysrKysrKysrLS0t
LS0tLS0tCj4gIGluY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmggICAgICAgICAgICAgIHwgIDYz
ICsrKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspLCA5NSBkZWxldGlv
bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9k
dy1oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYwo+IGlu
ZGV4IGY4Mjc1MGEuLmZjYjBhMjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRn
ZS9zeW5vcHN5cy9kdy1oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9w
c3lzL2R3LWhkbWkuYwo+IEBAIC0zMCwxOCArMzAsMTUgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1f
ZW5jb2Rlcl9zbGF2ZS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2JyaWRnZS9kd19oZG1pLmg+Cj4gIAo+
ICsjaW5jbHVkZSA8dWFwaS9saW51eC9tZWRpYS1idXMtZm9ybWF0Lmg+Cj4gKyNpbmNsdWRlIDx1
YXBpL2xpbnV4L3ZpZGVvZGV2Mi5oPgo+ICsKPiAgI2luY2x1ZGUgImR3LWhkbWkuaCIKPiAgI2lu
Y2x1ZGUgImR3LWhkbWktYXVkaW8uaCIKPiAgCj4gICNkZWZpbmUgRERDX1NFR01FTlRfQUREUgkw
eDMwCj4gICNkZWZpbmUgSERNSV9FRElEX0xFTgkJNTEyCj4gIAo+IC0jZGVmaW5lIFJHQgkJCTAK
PiAtI2RlZmluZSBZQ0JDUjQ0NAkJMQo+IC0jZGVmaW5lIFlDQkNSNDIyXzE2QklUUwkJMgo+IC0j
ZGVmaW5lIFlDQkNSNDIyXzhCSVRTCQkzCj4gLSNkZWZpbmUgWFZZQ0M0NDQJCTQKPiAtCj4gIGVu
dW0gaGRtaV9kYXRhbWFwIHsKPiAgCVJHQjQ0NF84QiA9IDB4MDEsCj4gIAlSR0I0NDRfMTBCID0g
MHgwMywKPiBAQCAtOTUsMTAgKzkyLDEwIEBAIHN0cnVjdCBoZG1pX3Ztb2RlIHsKPiAgfTsKPiAg
Cj4gIHN0cnVjdCBoZG1pX2RhdGFfaW5mbyB7Cj4gLQl1bnNpZ25lZCBpbnQgZW5jX2luX2Zvcm1h
dDsKPiAtCXVuc2lnbmVkIGludCBlbmNfb3V0X2Zvcm1hdDsKPiAtCXVuc2lnbmVkIGludCBlbmNf
Y29sb3JfZGVwdGg7Cj4gLQl1bnNpZ25lZCBpbnQgY29sb3JpbWV0cnk7Cj4gKwl1bnNpZ25lZCBp
bnQgZW5jX2luX2J1c19mb3JtYXQ7Cj4gKwl1bnNpZ25lZCBpbnQgZW5jX291dF9idXNfZm9ybWF0
Owo+ICsJdW5zaWduZWQgaW50IGVuY19pbl9lbmNvZGluZzsKPiArCXVuc2lnbmVkIGludCBlbmNf
b3V0X2VuY29kaW5nOwo+ICAJdW5zaWduZWQgaW50IHBpeF9yZXBldF9mYWN0b3I7Cj4gIAl1bnNp
Z25lZCBpbnQgaGRjcF9lbmFibGU7Cj4gIAlzdHJ1Y3QgaGRtaV92bW9kZSB2aWRlb19tb2RlOwo+
IEBAIC01NjcsNiArNTY0LDkyIEBAIHZvaWQgZHdfaGRtaV9hdWRpb19kaXNhYmxlKHN0cnVjdCBk
d19oZG1pICpoZG1pKQo+ICB9Cj4gIEVYUE9SVF9TWU1CT0xfR1BMKGR3X2hkbWlfYXVkaW9fZGlz
YWJsZSk7Cj4gIAo+ICtzdGF0aWMgYm9vbCBoZG1pX2J1c19mbXRfaXNfcmdiKHVuc2lnbmVkIGlu
dCBidXNfZm9ybWF0KQo+ICt7Cj4gKwlzd2l0Y2ggKGJ1c19mb3JtYXQpIHsKPiArCWNhc2UgTUVE
SUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDoKPiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxMDEwMTBf
MVgzMDoKPiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxMjEyMTJfMVgzNjoKPiArCWNhc2UgTUVE
SUFfQlVTX0ZNVF9SR0IxNjE2MTZfMVg0ODoKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCj4gKwlkZWZh
dWx0Ogo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGJvb2wgaGRt
aV9idXNfZm10X2lzX3l1djQ0NCh1bnNpZ25lZCBpbnQgYnVzX2Zvcm1hdCkKPiArewo+ICsJc3dp
dGNoIChidXNfZm9ybWF0KSB7Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfWVVWOF8xWDI0Ogo+ICsJ
Y2FzZSBNRURJQV9CVVNfRk1UX1lVVjEwXzFYMzA6Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfWVVW
MTJfMVgzNjoKPiArCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVYxNl8xWDQ4Ogo+ICsJCXJldHVybiB0
cnVlOwo+ICsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICt9Cj4gKwo+
ICtzdGF0aWMgYm9vbCBoZG1pX2J1c19mbXRfaXNfeXV2NDIyKHVuc2lnbmVkIGludCBidXNfZm9y
bWF0KQo+ICt7Cj4gKwlzd2l0Y2ggKGJ1c19mb3JtYXQpIHsKPiArCWNhc2UgTUVESUFfQlVTX0ZN
VF9VWVZZOF8xWDE2Ogo+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1VZVlkxMF8xWDIwOgo+ICsJY2Fz
ZSBNRURJQV9CVVNfRk1UX1VZVlkxMl8xWDI0Ogo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCWRl
ZmF1bHQ6Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBo
ZG1pX2J1c19mbXRfaXNfeXV2NDIwKHVuc2lnbmVkIGludCBidXNfZm9ybWF0KQo+ICt7Cj4gKwlz
d2l0Y2ggKGJ1c19mb3JtYXQpIHsKPiArCWNhc2UgTUVESUFfQlVTX0ZNVF9VWVlWWVk4XzFYMjQ6
Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlZVllZMTBfMVgzMDoKPiArCWNhc2UgTUVESUFfQlVT
X0ZNVF9VWVlWWVkxMl8xWDM2Ogo+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1VZWVZZWTE2XzFYNDg6
Cj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gZmFsc2U7Cj4g
Kwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaGRtaV9idXNfZm10X2NvbG9yX2RlcHRoKHVuc2ln
bmVkIGludCBidXNfZm9ybWF0KQo+ICt7Cj4gKwlzd2l0Y2ggKGJ1c19mb3JtYXQpIHsKPiArCWNh
c2UgTUVESUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDoKPiArCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVY4
XzFYMjQ6Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWThfMVgxNjoKPiArCWNhc2UgTUVESUFf
QlVTX0ZNVF9VWVlWWVk4XzFYMjQ6Cj4gKwkJcmV0dXJuIDg7Cj4gKwo+ICsJY2FzZSBNRURJQV9C
VVNfRk1UX1JHQjEwMTAxMF8xWDMwOgo+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjEwXzFYMzA6
Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA6Cj4gKwljYXNlIE1FRElBX0JVU19G
TVRfVVlZVllZMTBfMVgzMDoKPiArCQlyZXR1cm4gMTA7Cj4gKwo+ICsJY2FzZSBNRURJQV9CVVNf
Rk1UX1JHQjEyMTIxMl8xWDM2Ogo+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjEyXzFYMzY6Cj4g
KwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTEyXzFYMjQ6Cj4gKwljYXNlIE1FRElBX0JVU19GTVRf
VVlZVllZMTJfMVgzNjoKPiArCQlyZXR1cm4gMTI7Cj4gKwo+ICsJY2FzZSBNRURJQV9CVVNfRk1U
X1JHQjE2MTYxNl8xWDQ4Ogo+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjE2XzFYNDg6Cj4gKwlj
YXNlIE1FRElBX0JVU19GTVRfVVlZVllZMTZfMVg0ODoKPiArCQlyZXR1cm4gMTY7Cj4gKwo+ICsJ
ZGVmYXVsdDoKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArfQo+ICsKPiAgLyoKPiAgICogdGhpcyBz
dWJtb2R1bGUgaXMgcmVzcG9uc2libGUgZm9yIHRoZSB2aWRlbyBkYXRhIHN5bmNocm9uaXphdGlv
bi4KPiAgICogZm9yIGV4YW1wbGUsIGZvciBSR0IgNDo0OjQgaW5wdXQsIHRoZSBkYXRhIG1hcCBp
cyBkZWZpbmVkIGFzCj4gQEAgLTU3OSwzNyArNjYyLDQ5IEBAIHN0YXRpYyB2b2lkIGhkbWlfdmlk
ZW9fc2FtcGxlKHN0cnVjdCBkd19oZG1pICpoZG1pKQo+ICAJaW50IGNvbG9yX2Zvcm1hdCA9IDA7
Cj4gIAl1OCB2YWw7Cj4gIAo+IC0JaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfaW5fZm9ybWF0ID09
IFJHQikgewo+IC0JCWlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2NvbG9yX2RlcHRoID09IDgpCj4g
LQkJCWNvbG9yX2Zvcm1hdCA9IDB4MDE7Cj4gLQkJZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVu
Y19jb2xvcl9kZXB0aCA9PSAxMCkKPiAtCQkJY29sb3JfZm9ybWF0ID0gMHgwMzsKPiAtCQllbHNl
IGlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2NvbG9yX2RlcHRoID09IDEyKQo+IC0JCQljb2xvcl9m
b3JtYXQgPSAweDA1Owo+IC0JCWVsc2UgaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfY29sb3JfZGVw
dGggPT0gMTYpCj4gLQkJCWNvbG9yX2Zvcm1hdCA9IDB4MDc7Cj4gLQkJZWxzZQo+IC0JCQlyZXR1
cm47Cj4gLQl9IGVsc2UgaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfaW5fZm9ybWF0ID09IFlDQkNS
NDQ0KSB7Cj4gLQkJaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfY29sb3JfZGVwdGggPT0gOCkKPiAt
CQkJY29sb3JfZm9ybWF0ID0gMHgwOTsKPiAtCQllbHNlIGlmIChoZG1pLT5oZG1pX2RhdGEuZW5j
X2NvbG9yX2RlcHRoID09IDEwKQo+IC0JCQljb2xvcl9mb3JtYXQgPSAweDBCOwo+IC0JCWVsc2Ug
aWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfY29sb3JfZGVwdGggPT0gMTIpCj4gLQkJCWNvbG9yX2Zv
cm1hdCA9IDB4MEQ7Cj4gLQkJZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0
aCA9PSAxNikKPiAtCQkJY29sb3JfZm9ybWF0ID0gMHgwRjsKPiAtCQllbHNlCj4gLQkJCXJldHVy
bjsKPiAtCX0gZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9mb3JtYXQgPT0gWUNCQ1I0
MjJfOEJJVFMpIHsKPiAtCQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSA4
KQo+IC0JCQljb2xvcl9mb3JtYXQgPSAweDE2Owo+IC0JCWVsc2UgaWYgKGhkbWktPmhkbWlfZGF0
YS5lbmNfY29sb3JfZGVwdGggPT0gMTApCj4gLQkJCWNvbG9yX2Zvcm1hdCA9IDB4MTQ7Cj4gLQkJ
ZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxMikKPiAtCQkJY29s
b3JfZm9ybWF0ID0gMHgxMjsKPiAtCQllbHNlCj4gLQkJCXJldHVybjsKPiArCXN3aXRjaCAoaGRt
aS0+aGRtaV9kYXRhLmVuY19pbl9idXNfZm9ybWF0KSB7Cj4gKwljYXNlIE1FRElBX0JVU19GTVRf
UkdCODg4XzFYMjQ6Cj4gKwkJY29sb3JfZm9ybWF0ID0gMHgwMTsKPiArCQlicmVhazsKPiArCWNh
c2UgTUVESUFfQlVTX0ZNVF9SR0IxMDEwMTBfMVgzMDoKPiArCQljb2xvcl9mb3JtYXQgPSAweDAz
Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1JHQjEyMTIxMl8xWDM2Ogo+ICsJ
CWNvbG9yX2Zvcm1hdCA9IDB4MDU7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1FRElBX0JVU19GTVRf
UkdCMTYxNjE2XzFYNDg6Cj4gKwkJY29sb3JfZm9ybWF0ID0gMHgwNzsKPiArCQlicmVhazsKPiAr
Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfWVVWOF8xWDI0Ogo+ICsJY2FzZSBNRURJQV9CVVNfRk1U
X1VZWVZZWThfMVgyNDoKPiArCQljb2xvcl9mb3JtYXQgPSAweDA5Owo+ICsJCWJyZWFrOwo+ICsJ
Y2FzZSBNRURJQV9CVVNfRk1UX1lVVjEwXzFYMzA6Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlZ
VllZMTBfMVgzMDoKPiArCQljb2xvcl9mb3JtYXQgPSAweDBCOwo+ICsJCWJyZWFrOwo+ICsJY2Fz
ZSBNRURJQV9CVVNfRk1UX1lVVjEyXzFYMzY6Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlZVllZ
MTJfMVgzNjoKPiArCQljb2xvcl9mb3JtYXQgPSAweDBEOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBN
RURJQV9CVVNfRk1UX1lVVjE2XzFYNDg6Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlZVllZMTZf
MVg0ODoKPiArCQljb2xvcl9mb3JtYXQgPSAweDBGOwo+ICsJCWJyZWFrOwo+ICsKPiArCWNhc2Ug
TUVESUFfQlVTX0ZNVF9VWVZZOF8xWDE2Ogo+ICsJCWNvbG9yX2Zvcm1hdCA9IDB4MTY7Cj4gKwkJ
YnJlYWs7Cj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA6Cj4gKwkJY29sb3JfZm9y
bWF0ID0gMHgxNDsKPiArCQlicmVhazsKPiArCWNhc2UgTUVESUFfQlVTX0ZNVF9VWVZZMTJfMVgy
NDoKPiArCQljb2xvcl9mb3JtYXQgPSAweDEyOwo+ICsJCWJyZWFrOwo+ICsKPiArCWRlZmF1bHQ6
Cj4gKwkJcmV0dXJuOwo+ICAJfQo+ICAKPiAgCXZhbCA9IEhETUlfVFhfSU5WSUQwX0lOVEVSTkFM
X0RFX0dFTkVSQVRPUl9ESVNBQkxFIHwKPiBAQCAtNjMyLDI2ICs3MjcsMzAgQEAgc3RhdGljIHZv
aWQgaGRtaV92aWRlb19zYW1wbGUoc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4gIAo+ICBzdGF0aWMg
aW50IGlzX2NvbG9yX3NwYWNlX2NvbnZlcnNpb24oc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4gIHsK
PiAtCXJldHVybiBoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2Zvcm1hdCAhPSBoZG1pLT5oZG1pX2Rh
dGEuZW5jX291dF9mb3JtYXQ7Cj4gKwlyZXR1cm4gaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9idXNf
Zm9ybWF0ICE9IGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQ7Cj4gIH0KPiAgCj4g
IHN0YXRpYyBpbnQgaXNfY29sb3Jfc3BhY2VfZGVjaW1hdGlvbihzdHJ1Y3QgZHdfaGRtaSAqaGRt
aSkKPiAgewo+IC0JaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2Zvcm1hdCAhPSBZQ0JDUjQy
Ml84QklUUykKPiArCWlmICghaGRtaV9idXNfZm10X2lzX3l1djQyMihoZG1pLT5oZG1pX2RhdGEu
ZW5jX291dF9idXNfZm9ybWF0KSkKPiAgCQlyZXR1cm4gMDsKPiAtCWlmIChoZG1pLT5oZG1pX2Rh
dGEuZW5jX2luX2Zvcm1hdCA9PSBSR0IgfHwKPiAtCSAgICBoZG1pLT5oZG1pX2RhdGEuZW5jX2lu
X2Zvcm1hdCA9PSBZQ0JDUjQ0NCkKPiArCj4gKwlpZiAoaGRtaV9idXNfZm10X2lzX3JnYihoZG1p
LT5oZG1pX2RhdGEuZW5jX2luX2J1c19mb3JtYXQpIHx8Cj4gKwkgICAgaGRtaV9idXNfZm10X2lz
X3l1djQ0NChoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2J1c19mb3JtYXQpKQo+ICAJCXJldHVybiAx
Owo+ICsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGlzX2NvbG9yX3NwYWNl
X2ludGVycG9sYXRpb24oc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4gIHsKPiAtCWlmIChoZG1pLT5o
ZG1pX2RhdGEuZW5jX2luX2Zvcm1hdCAhPSBZQ0JDUjQyMl84QklUUykKPiArCWlmICghaGRtaV9i
dXNfZm10X2lzX3l1djQyMihoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2J1c19mb3JtYXQpKQo+ICAJ
CXJldHVybiAwOwo+IC0JaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2Zvcm1hdCA9PSBSR0Ig
fHwKPiAtCSAgICBoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9mb3JtYXQgPT0gWUNCQ1I0NDQpCj4g
Kwo+ICsJaWYgKGhkbWlfYnVzX2ZtdF9pc19yZ2IoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfYnVz
X2Zvcm1hdCkgfHwKPiArCSAgICBoZG1pX2J1c19mbXRfaXNfeXV2NDQ0KGhkbWktPmhkbWlfZGF0
YS5lbmNfb3V0X2J1c19mb3JtYXQpKQo+ICAJCXJldHVybiAxOwo+ICsKPiAgCXJldHVybiAwOwo+
ICB9Cj4gIAo+IEBAIC02NjIsMTUgKzc2MSwxNiBAQCBzdGF0aWMgdm9pZCBkd19oZG1pX3VwZGF0
ZV9jc2NfY29lZmZzKHN0cnVjdCBkd19oZG1pICpoZG1pKQo+ICAJdTMyIGNzY19zY2FsZSA9IDE7
Cj4gIAo+ICAJaWYgKGlzX2NvbG9yX3NwYWNlX2NvbnZlcnNpb24oaGRtaSkpIHsKPiAtCQlpZiAo
aGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZm9ybWF0ID09IFJHQikgewo+IC0JCQlpZiAoaGRtaS0+
aGRtaV9kYXRhLmNvbG9yaW1ldHJ5ID09Cj4gLQkJCQkJSERNSV9DT0xPUklNRVRSWV9JVFVfNjAx
KQo+ICsJCWlmIChoZG1pX2J1c19mbXRfaXNfcmdiKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1
c19mb3JtYXQpKSB7Cj4gKwkJCWlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9lbmNvZGluZyA9
PQo+ICsJCQkJCQlWNEwyX1lDQkNSX0VOQ182MDEpCj4gIAkJCQljc2NfY29lZmYgPSAmY3NjX2Nv
ZWZmX3JnYl9vdXRfZWl0dTYwMTsKPiAgCQkJZWxzZQo+ICAJCQkJY3NjX2NvZWZmID0gJmNzY19j
b2VmZl9yZ2Jfb3V0X2VpdHU3MDk7Cj4gLQkJfSBlbHNlIGlmIChoZG1pLT5oZG1pX2RhdGEuZW5j
X2luX2Zvcm1hdCA9PSBSR0IpIHsKPiAtCQkJaWYgKGhkbWktPmhkbWlfZGF0YS5jb2xvcmltZXRy
eSA9PQo+IC0JCQkJCUhETUlfQ09MT1JJTUVUUllfSVRVXzYwMSkKPiArCQl9IGVsc2UgaWYgKGhk
bWlfYnVzX2ZtdF9pc19yZ2IoCj4gKwkJCQkJaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9idXNfZm9y
bWF0KSkgewo+ICsJCQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZW5jb2RpbmcgPT0KPiAr
CQkJCQkJVjRMMl9ZQ0JDUl9FTkNfNjAxKQo+ICAJCQkJY3NjX2NvZWZmID0gJmNzY19jb2VmZl9y
Z2JfaW5fZWl0dTYwMTsKPiAgCQkJZWxzZQo+ICAJCQkJY3NjX2NvZWZmID0gJmNzY19jb2VmZl9y
Z2JfaW5fZWl0dTcwOTsKPiBAQCAtNzA4LDE2ICs4MDgsMjMgQEAgc3RhdGljIHZvaWQgaGRtaV92
aWRlb19jc2Moc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4gIAllbHNlIGlmIChpc19jb2xvcl9zcGFj
ZV9kZWNpbWF0aW9uKGhkbWkpKQo+ICAJCWRlY2ltYXRpb24gPSBIRE1JX0NTQ19DRkdfREVDTU9E
RV9DSFJPTUFfSU5UX0ZPUk1VTEEzOwo+ICAKPiAtCWlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2Nv
bG9yX2RlcHRoID09IDgpCj4gKwlzd2l0Y2ggKGhkbWlfYnVzX2ZtdF9jb2xvcl9kZXB0aChoZG1p
LT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9ybWF0KSkgewo+ICsJY2FzZSA4Ogo+ICAJCWNvbG9y
X2RlcHRoID0gSERNSV9DU0NfU0NBTEVfQ1NDX0NPTE9SREVfUFRIXzI0QlBQOwo+IC0JZWxzZSBp
ZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxMCkKPiArCQlicmVhazsKPiAr
CWNhc2UgMTA6Cj4gIAkJY29sb3JfZGVwdGggPSBIRE1JX0NTQ19TQ0FMRV9DU0NfQ09MT1JERV9Q
VEhfMzBCUFA7Cj4gLQllbHNlIGlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2NvbG9yX2RlcHRoID09
IDEyKQo+ICsJCWJyZWFrOwo+ICsJY2FzZSAxMjoKPiAgCQljb2xvcl9kZXB0aCA9IEhETUlfQ1ND
X1NDQUxFX0NTQ19DT0xPUkRFX1BUSF8zNkJQUDsKPiAtCWVsc2UgaWYgKGhkbWktPmhkbWlfZGF0
YS5lbmNfY29sb3JfZGVwdGggPT0gMTYpCj4gKwkJYnJlYWs7Cj4gKwljYXNlIDE2Ogo+ICAJCWNv
bG9yX2RlcHRoID0gSERNSV9DU0NfU0NBTEVfQ1NDX0NPTE9SREVfUFRIXzQ4QlBQOwo+IC0JZWxz
ZQo+ICsJCWJyZWFrOwo+ICsKPiArCWRlZmF1bHQ6Cj4gIAkJcmV0dXJuOwo+ICsJfQo+ICAKPiAg
CS8qIENvbmZpZ3VyZSB0aGUgQ1NDIHJlZ2lzdGVycyAqLwo+ICAJaGRtaV93cml0ZWIoaGRtaSwg
aW50ZXJwb2xhdGlvbiB8IGRlY2ltYXRpb24sIEhETUlfQ1NDX0NGRyk7Cj4gQEAgLTc0MCwzMiAr
ODQ3LDQzIEBAIHN0YXRpYyB2b2lkIGhkbWlfdmlkZW9fcGFja2V0aXplKHN0cnVjdCBkd19oZG1p
ICpoZG1pKQo+ICAJc3RydWN0IGhkbWlfZGF0YV9pbmZvICpoZG1pX2RhdGEgPSAmaGRtaS0+aGRt
aV9kYXRhOwo+ICAJdTggdmFsLCB2cF9jb25mOwo+ICAKPiAtCWlmIChoZG1pX2RhdGEtPmVuY19v
dXRfZm9ybWF0ID09IFJHQiB8fAo+IC0JICAgIGhkbWlfZGF0YS0+ZW5jX291dF9mb3JtYXQgPT0g
WUNCQ1I0NDQpIHsKPiAtCQlpZiAoIWhkbWlfZGF0YS0+ZW5jX2NvbG9yX2RlcHRoKSB7Cj4gLQkJ
CW91dHB1dF9zZWxlY3QgPSBIRE1JX1ZQX0NPTkZfT1VUUFVUX1NFTEVDVE9SX0JZUEFTUzsKPiAt
CQl9IGVsc2UgaWYgKGhkbWlfZGF0YS0+ZW5jX2NvbG9yX2RlcHRoID09IDgpIHsKPiArCWlmICho
ZG1pX2J1c19mbXRfaXNfcmdiKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpIHx8
Cj4gKwkgICAgaGRtaV9idXNfZm10X2lzX3l1djQ0NChoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9i
dXNfZm9ybWF0KSkgewo+ICsJCXN3aXRjaCAoaGRtaV9idXNfZm10X2NvbG9yX2RlcHRoKAo+ICsJ
CQkJCWhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKSB7Cj4gKwkJY2FzZSA4Ogo+
ICAJCQljb2xvcl9kZXB0aCA9IDQ7Cj4gIAkJCW91dHB1dF9zZWxlY3QgPSBIRE1JX1ZQX0NPTkZf
T1VUUFVUX1NFTEVDVE9SX0JZUEFTUzsKPiAtCQl9IGVsc2UgaWYgKGhkbWlfZGF0YS0+ZW5jX2Nv
bG9yX2RlcHRoID09IDEwKSB7Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgMTA6Cj4gIAkJCWNvbG9y
X2RlcHRoID0gNTsKPiAtCQl9IGVsc2UgaWYgKGhkbWlfZGF0YS0+ZW5jX2NvbG9yX2RlcHRoID09
IDEyKSB7Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgMTI6Cj4gIAkJCWNvbG9yX2RlcHRoID0gNjsK
PiAtCQl9IGVsc2UgaWYgKGhkbWlfZGF0YS0+ZW5jX2NvbG9yX2RlcHRoID09IDE2KSB7Cj4gKwkJ
CWJyZWFrOwo+ICsJCWNhc2UgMTY6Cj4gIAkJCWNvbG9yX2RlcHRoID0gNzsKPiAtCQl9IGVsc2Ug
ewo+IC0JCQlyZXR1cm47Cj4gKwkJCWJyZWFrOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCW91dHB1dF9z
ZWxlY3QgPSBIRE1JX1ZQX0NPTkZfT1VUUFVUX1NFTEVDVE9SX0JZUEFTUzsKPiAgCQl9Cj4gLQl9
IGVsc2UgaWYgKGhkbWlfZGF0YS0+ZW5jX291dF9mb3JtYXQgPT0gWUNCQ1I0MjJfOEJJVFMpIHsK
PiAtCQlpZiAoIWhkbWlfZGF0YS0+ZW5jX2NvbG9yX2RlcHRoIHx8Cj4gLQkJICAgIGhkbWlfZGF0
YS0+ZW5jX2NvbG9yX2RlcHRoID09IDgpCj4gKwl9IGVsc2UgaWYgKGhkbWlfYnVzX2ZtdF9pc195
dXY0MjIoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfYnVzX2Zvcm1hdCkpIHsKPiArCQlzd2l0Y2gg
KGhkbWlfYnVzX2ZtdF9jb2xvcl9kZXB0aCgKPiArCQkJCQloZG1pLT5oZG1pX2RhdGEuZW5jX291
dF9idXNfZm9ybWF0KSkgewo+ICsJCWNhc2UgMDoKPiArCQljYXNlIDg6Cj4gIAkJCXJlbWFwX3Np
emUgPSBIRE1JX1ZQX1JFTUFQX1lDQzQyMl8xNmJpdDsKPiAtCQllbHNlIGlmIChoZG1pX2RhdGEt
PmVuY19jb2xvcl9kZXB0aCA9PSAxMCkKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSAxMDoKPiAgCQkJ
cmVtYXBfc2l6ZSA9IEhETUlfVlBfUkVNQVBfWUNDNDIyXzIwYml0Owo+IC0JCWVsc2UgaWYgKGhk
bWlfZGF0YS0+ZW5jX2NvbG9yX2RlcHRoID09IDEyKQo+ICsJCQlicmVhazsKPiArCQljYXNlIDEy
Ogo+ICAJCQlyZW1hcF9zaXplID0gSERNSV9WUF9SRU1BUF9ZQ0M0MjJfMjRiaXQ7Cj4gLQkJZWxz
ZQo+ICsJCQlicmVhazsKPiArCj4gKwkJZGVmYXVsdDoKPiAgCQkJcmV0dXJuOwo+ICsJCX0KPiAg
CQlvdXRwdXRfc2VsZWN0ID0gSERNSV9WUF9DT05GX09VVFBVVF9TRUxFQ1RPUl9ZQ0M0MjI7Cj4g
IAl9IGVsc2Ugewo+ICAJCXJldHVybjsKPiBAQCAtMTE0OCwyOCArMTI2NiwzNSBAQCBzdGF0aWMg
dm9pZCBoZG1pX2NvbmZpZ19BVkkoc3RydWN0IGR3X2hkbWkgKmhkbWksIHN0cnVjdCBkcm1fZGlz
cGxheV9tb2RlICptb2RlKQo+ICAJLyogSW5pdGlhbGlzZSBpbmZvIGZyYW1lIGZyb20gRFJNIG1v
ZGUgKi8KPiAgCWRybV9oZG1pX2F2aV9pbmZvZnJhbWVfZnJvbV9kaXNwbGF5X21vZGUoJmZyYW1l
LCBtb2RlKTsKPiAgCj4gLQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZm9ybWF0ID09IFlD
QkNSNDQ0KQo+ICsJaWYgKGhkbWlfYnVzX2ZtdF9pc195dXY0NDQoaGRtaS0+aGRtaV9kYXRhLmVu
Y19vdXRfYnVzX2Zvcm1hdCkpCj4gIAkJZnJhbWUuY29sb3JzcGFjZSA9IEhETUlfQ09MT1JTUEFD
RV9ZVVY0NDQ7Cj4gLQllbHNlIGlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9mb3JtYXQgPT0g
WUNCQ1I0MjJfOEJJVFMpCj4gKwllbHNlIGlmIChoZG1pX2J1c19mbXRfaXNfeXV2NDIyKGhkbWkt
PmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKQo+ICAJCWZyYW1lLmNvbG9yc3BhY2UgPSBI
RE1JX0NPTE9SU1BBQ0VfWVVWNDIyOwo+ICAJZWxzZQo+ICAJCWZyYW1lLmNvbG9yc3BhY2UgPSBI
RE1JX0NPTE9SU1BBQ0VfUkdCOwo+ICAKPiAgCS8qIFNldCB1cCBjb2xvcmltZXRyeSAqLwo+IC0J
aWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2Zvcm1hdCA9PSBYVllDQzQ0NCkgewo+IC0JCWZy
YW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9FWFRFTkRFRDsKPiAtCQlpZiAoaGRt
aS0+aGRtaV9kYXRhLmNvbG9yaW1ldHJ5ID09IEhETUlfQ09MT1JJTUVUUllfSVRVXzYwMSkKPiAt
CQkJZnJhbWUuZXh0ZW5kZWRfY29sb3JpbWV0cnkgPQo+ICsJc3dpdGNoIChoZG1pLT5oZG1pX2Rh
dGEuZW5jX291dF9lbmNvZGluZykgewo+ICsJY2FzZSBWNEwyX1lDQkNSX0VOQ182MDE6Cj4gKwkJ
aWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfaW5fZW5jb2RpbmcgPT0gVjRMMl9ZQ0JDUl9FTkNfWFY2
MDEpCj4gKwkJCWZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9FWFRFTkRFRDsK
PiArCQllbHNlCj4gKwkJCWZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9JVFVf
NjAxOwo+ICsJCWZyYW1lLmV4dGVuZGVkX2NvbG9yaW1ldHJ5ID0KPiAgCQkJCUhETUlfRVhURU5E
RURfQ09MT1JJTUVUUllfWFZfWUNDXzYwMTsKPiAtCQllbHNlIC8qaGRtaS0+aGRtaV9kYXRhLmNv
bG9yaW1ldHJ5ID09IEhETUlfQ09MT1JJTUVUUllfSVRVXzcwOSovCj4gLQkJCWZyYW1lLmV4dGVu
ZGVkX2NvbG9yaW1ldHJ5ID0KPiArCWNhc2UgVjRMMl9ZQ0JDUl9FTkNfNzA5Ogo+ICsJCWlmICho
ZG1pLT5oZG1pX2RhdGEuZW5jX2luX2VuY29kaW5nID09IFY0TDJfWUNCQ1JfRU5DX1hWNzA5KQo+
ICsJCQlmcmFtZS5jb2xvcmltZXRyeSA9IEhETUlfQ09MT1JJTUVUUllfRVhURU5ERUQ7Cj4gKwkJ
ZWxzZQo+ICsJCQlmcmFtZS5jb2xvcmltZXRyeSA9IEhETUlfQ09MT1JJTUVUUllfSVRVXzcwOTsK
PiArCQlmcmFtZS5leHRlbmRlZF9jb2xvcmltZXRyeSA9Cj4gIAkJCQlIRE1JX0VYVEVOREVEX0NP
TE9SSU1FVFJZX1hWX1lDQ183MDk7Cj4gLQl9IGVsc2UgaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNf
b3V0X2Zvcm1hdCAhPSBSR0IpIHsKPiAtCQlmcmFtZS5jb2xvcmltZXRyeSA9IGhkbWktPmhkbWlf
ZGF0YS5jb2xvcmltZXRyeTsKPiAtCQlmcmFtZS5leHRlbmRlZF9jb2xvcmltZXRyeSA9IEhETUlf
RVhURU5ERURfQ09MT1JJTUVUUllfWFZfWUNDXzYwMTsKPiAtCX0gZWxzZSB7IC8qIENhcnJpZXMg
bm8gZGF0YSAqLwo+IC0JCWZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9OT05F
Owo+IC0JCWZyYW1lLmV4dGVuZGVkX2NvbG9yaW1ldHJ5ID0gSERNSV9FWFRFTkRFRF9DT0xPUklN
RVRSWV9YVl9ZQ0NfNjAxOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDogLyogQ2FycmllcyBubyBk
YXRhICovCj4gKwkJZnJhbWUuY29sb3JpbWV0cnkgPSBIRE1JX0NPTE9SSU1FVFJZX0lUVV82MDE7
Cj4gKwkJZnJhbWUuZXh0ZW5kZWRfY29sb3JpbWV0cnkgPQo+ICsJCQkJSERNSV9FWFRFTkRFRF9D
T0xPUklNRVRSWV9YVl9ZQ0NfNjAxOwo+ICsJCWJyZWFrOwo+ICAJfQo+ICAKPiAgCWZyYW1lLnNj
YW5fbW9kZSA9IEhETUlfU0NBTl9NT0RFX05PTkU7Cj4gQEAgLTE0OTgsMTkgKzE2MjMsMzAgQEAg
c3RhdGljIGludCBkd19oZG1pX3NldHVwKHN0cnVjdCBkd19oZG1pICpoZG1pLCBzdHJ1Y3QgZHJt
X2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiAgCSAgICAoaGRtaS0+dmljID09IDIxKSB8fCAoaGRtaS0+
dmljID09IDIyKSB8fAo+ICAJICAgIChoZG1pLT52aWMgPT0gMikgfHwgKGhkbWktPnZpYyA9PSAz
KSB8fAo+ICAJICAgIChoZG1pLT52aWMgPT0gMTcpIHx8IChoZG1pLT52aWMgPT0gMTgpKQo+IC0J
CWhkbWktPmhkbWlfZGF0YS5jb2xvcmltZXRyeSA9IEhETUlfQ09MT1JJTUVUUllfSVRVXzYwMTsK
PiArCQloZG1pLT5oZG1pX2RhdGEuZW5jX291dF9lbmNvZGluZyA9IFY0TDJfWUNCQ1JfRU5DXzYw
MTsKPiAgCWVsc2UKPiAtCQloZG1pLT5oZG1pX2RhdGEuY29sb3JpbWV0cnkgPSBIRE1JX0NPTE9S
SU1FVFJZX0lUVV83MDk7Cj4gKwkJaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZW5jb2RpbmcgPSBW
NEwyX1lDQkNSX0VOQ183MDk7Cj4gIAo+ICAJaGRtaS0+aGRtaV9kYXRhLnZpZGVvX21vZGUubXBp
eGVscmVwZXRpdGlvbm91dHB1dCA9IDA7Cj4gIAloZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9kZS5t
cGl4ZWxyZXBldGl0aW9uaW5wdXQgPSAwOwo+ICAKPiAtCS8qIFRPRE86IEdldCBpbnB1dCBmb3Jt
YXQgZnJvbSBJUFUgKHZpYSBGQiBkcml2ZXIgaW50ZXJmYWNlKSAqLwo+IC0JaGRtaS0+aGRtaV9k
YXRhLmVuY19pbl9mb3JtYXQgPSBSR0I7Cj4gKwkvKiBUT0ZJWDogR2V0IGlucHV0IGZvcm1hdCBm
cm9tIHBsYXQgZGF0YSBvciBmYWxsYmFjayB0byBSR0I4ODggKi8KPiArCWlmIChoZG1pLT5wbGF0
X2RhdGEtPmlucHV0X2J1c19mb3JtYXQgPj0gMCkKPiArCQloZG1pLT5oZG1pX2RhdGEuZW5jX2lu
X2J1c19mb3JtYXQgPQo+ICsJCQloZG1pLT5wbGF0X2RhdGEtPmlucHV0X2J1c19mb3JtYXQ7Cj4g
KwllbHNlCj4gKwkJaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9idXNfZm9ybWF0ID0gTUVESUFfQlVT
X0ZNVF9SR0I4ODhfMVgyNDsKPiArCj4gKwkvKiBUT0ZJWDogR2V0IGlucHV0IGVuY29kaW5nIGZy
b20gcGxhdCBkYXRhIG9yIGZhbGxiYWNrIHRvIG5vbmUgKi8KPiArCWlmIChoZG1pLT5wbGF0X2Rh
dGEtPmlucHV0X2J1c19lbmNvZGluZyA+PSAwKQo+ICsJCWhkbWktPmhkbWlfZGF0YS5lbmNfaW5f
ZW5jb2RpbmcgPQo+ICsJCQloZG1pLT5wbGF0X2RhdGEtPmlucHV0X2J1c19lbmNvZGluZzsKPiAr
CWVsc2UKPiArCQloZG1pLT5oZG1pX2RhdGEuZW5jX2luX2VuY29kaW5nID0gVjRMMl9ZQ0JDUl9F
TkNfREVGQVVMVDsKPiAgCj4gLQloZG1pLT5oZG1pX2RhdGEuZW5jX291dF9mb3JtYXQgPSBSR0I7
Cj4gKwkvKiBUT0ZJWDogRGVmYXVsdCB0byBSR0I4ODggb3V0cHV0IGZvcm1hdCAqLwo+ICsJaGRt
aS0+aGRtaV9kYXRhLmVuY19vdXRfYnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFY
MjQ7Cj4gIAo+IC0JaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9IDg7Cj4gIAloZG1p
LT5oZG1pX2RhdGEucGl4X3JlcGV0X2ZhY3RvciA9IDA7Cj4gIAloZG1pLT5oZG1pX2RhdGEuaGRj
cF9lbmFibGUgPSAwOwo+ICAJaGRtaS0+aGRtaV9kYXRhLnZpZGVvX21vZGUubWRhdGFlbmFibGVw
b2xhcml0eSA9IHRydWU7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1p
LmggYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRtaS5oCj4gaW5kZXggYmNjZWVlOC4uMGRhNzRm
YiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRtaS5oCj4gKysrIGIvaW5j
bHVkZS9kcm0vYnJpZGdlL2R3X2hkbWkuaAo+IEBAIC0xNCw2ICsxNCw2NyBAQAo+ICAKPiAgc3Ry
dWN0IGR3X2hkbWk7Cj4gIAo+ICsvKioKPiArICogRE9DOiBTdXBwb3J0ZWQgaW5wdXQgZm9ybWF0
cyBhbmQgZW5jb2RpbmdzCj4gKyAqCj4gKyAqIERlcGVuZGluZyBvbiB0aGUgSGFyZHdhcmUgY29u
ZmlndXJhdGlvbiBvZiB0aGUgQ29udHJvbGxlciBJUCwgaXQgc3VwcG9ydHMKPiArICogYSBzdWJz
ZXQgb2YgdGhlIGZvbGxvd2luZyBpbnB1dCBmb3JtYXRzIGFuZCBlbmNvZGluZ3Mgb24gaXQncyBp
bnRlcm5hbAo+ICsgKiA0OGJpdCBidXMuCj4gKyAqCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCj4gKyAqICsgRm9ybWF0IE5hbWUgICAgICAgICAgKyBGb3JtYXQgQ29kZSAg
ICAgICAgICAgICAgICAgICAgICsgRW5jb2RpbmdzICAgICAgICAgICAgICAgICAgICArCj4gKyAq
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsgUkdCIDQ6NDo0IDhiaXQg
ICAgICAgKyBgYE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjRgYCAgICsgYGBWNEwyX1lDQkNSX0VO
Q19ERUZBVUxUYGAgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4g
KyAqICsgUkdCIDQ6NDo0IDEwYml0cyAgICAgKyBgYE1FRElBX0JVU19GTVRfUkdCMTAxMDEwXzFY
MzBgYCsgYGBWNEwyX1lDQkNSX0VOQ19ERUZBVUxUYGAgICArCj4gKyAqICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsgUkdCIDQ6NDo0IDEyYml0cyAgICAgKyBgYE1FRElB
X0JVU19GTVRfUkdCMTIxMjEyXzFYMzZgYCsgYGBWNEwyX1lDQkNSX0VOQ19ERUZBVUxUYGAgICAr
Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsgUkdCIDQ6NDo0
IDE2Yml0cyAgICAgKyBgYE1FRElBX0JVU19GTVRfUkdCMTYxNjE2XzFYNDhgYCsgYGBWNEwyX1lD
QkNSX0VOQ19ERUZBVUxUYGAgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCj4gKyAqICsgWUNiQ3IgNDo0OjQgOGJpdCAgICAgKyBgYE1FRElBX0JVU19GTVRfWVVWOF8x
WDI0YGAgICAgICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4gKyAqICsgICAgICAg
ICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBW
NEwyX1lDQkNSX0VOQ183MDlgYCAgICArCj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ19YVjYw
MWBgICArCj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ19YVjcwOWBgICArCj4gKyAqICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsgWUNiQ3IgNDo0OjQgMTBiaXRzICAg
KyBgYE1FRElBX0JVU19GTVRfWVVWMTBfMVgzMGBgICAgICsgYGBWNEwyX1lDQkNSX0VOQ182MDFg
YCAgICAgICArCj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183MDlgYCAgICArCj4gKyAqICsg
ICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsg
b3IgYGBWNEwyX1lDQkNSX0VOQ19YVjYwMWBgICArCj4gKyAqICsgICAgICAgICAgICAgICAgICAg
ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VO
Q19YVjcwOWBgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAq
ICsgWUNiQ3IgNDo0OjQgMTJiaXRzICAgKyBgYE1FRElBX0JVU19GTVRfWVVWMTJfMVgzNmBgICAg
ICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4gKyAqICsgICAgICAgICAgICAgICAg
ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNS
X0VOQ183MDlgYCAgICArCj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ19YVjYwMWBgICArCj4g
KyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ19YVjcwOWBgICArCj4gKyAqICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsgWUNiQ3IgNDo0OjQgMTZiaXRzICAgKyBgYE1FRElB
X0JVU19GTVRfWVVWMTZfMVg0OGBgICAgICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICAr
Cj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183MDlgYCAgICArCj4gKyAqICsgICAgICAgICAg
ICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwy
X1lDQkNSX0VOQ19YVjYwMWBgICArCj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ19YVjcwOWBg
ICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsgWUNiQ3Ig
NDoyOjIgOGJpdCAgICAgKyBgYE1FRElBX0JVU19GTVRfVVlWWThfMVgxNmBgICAgICsgYGBWNEwy
X1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183MDlg
YCAgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsgWUNi
Q3IgNDoyOjIgMTBiaXRzICAgKyBgYE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjBgYCAgICsgYGBW
NEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAg
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183
MDlgYCAgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsg
WUNiQ3IgNDoyOjIgMTJiaXRzICAgKyBgYE1FRElBX0JVU19GTVRfVVlWWTEyXzFYMjRgYCAgICsg
YGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4gKyAqICsgICAgICAgICAgICAgICAgICAg
ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VO
Q183MDlgYCAgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAq
ICsgWUNiQ3IgNDoyOjAgOGJpdCAgICAgKyBgYE1FRElBX0JVU19GTVRfVVlZVllZOF8xWDI0YGAg
ICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4gKyAqICsgICAgICAgICAgICAgICAg
ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNS
X0VOQ183MDlgYCAgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4g
KyAqICsgWUNiQ3IgNDoyOjAgMTBiaXRzICAgKyBgYE1FRElBX0JVU19GTVRfVVlZVllZMTBfMVgz
MGBgICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4gKyAqICsgICAgICAgICAgICAg
ICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lD
QkNSX0VOQ183MDlgYCAgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
Cj4gKyAqICsgWUNiQ3IgNDoyOjAgMTJiaXRzICAgKyBgYE1FRElBX0JVU19GTVRfVVlZVllZMTJf
MVgzNmBgICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4gKyAqICsgICAgICAgICAg
ICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwy
X1lDQkNSX0VOQ183MDlgYCAgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCj4gKyAqICsgWUNiQ3IgNDoyOjAgMTZiaXRzICAgKyBgYE1FRElBX0JVU19GTVRfVVlZVllZ
MTZfMVg0OGBgICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4gKyAqICsgICAgICAg
ICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBW
NEwyX1lDQkNSX0VOQ183MDlgYCAgICArCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCj4gKyAqLwo+ICsKPiAgZW51bSB7Cj4gIAlEV19IRE1JX1JFU184LAo+ICAJRFdfSERN
SV9SRVNfMTAsCj4gQEAgLTYyLDYgKzEyMyw4IEBAIHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0YSB7
Cj4gIAlzdHJ1Y3QgcmVnbWFwICpyZWdtOwo+ICAJZW51bSBkcm1fbW9kZV9zdGF0dXMgKCptb2Rl
X3ZhbGlkKShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCQkJCSAgIHN0cnVj
dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKPiArCXVuc2lnbmVkIGxvbmcgaW5wdXRfYnVzX2Zv
cm1hdDsKPiArCXVuc2lnbmVkIGxvbmcgaW5wdXRfYnVzX2VuY29kaW5nOwo+ICAKPiAgCS8qIFZl
bmRvciBQSFkgc3VwcG9ydCAqLwo+ICAJY29uc3Qgc3RydWN0IGR3X2hkbWlfcGh5X29wcyAqcGh5
X29wczsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk
cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0
cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK