Re: [PATCH] drm/gem: Move pages_to_sg helper into drm_gem.c

Christian König <[email protected]> Tue, 4 Aug 2026 15:38:09 +0200
Newsgroups org.infradead.lists.linux-rockchip,org.freedesktop.lists.amd-gfx,org.freedesktop.lists.dri-devel,org.freedesktop.lists.intel-xe,org.freedesktop.lists.nouveau,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media,org.kernel.vger.linux-tegra,org.xenproject.lists.xen-devel
Message-ID <[email protected]>
T24gNy8yNC8yNiAxNDowOCwgQWRyacOhbiBMYXJ1bWJlIHdyb3RlOgo+IE5vbmUgb2YgdGhlIHNl
bWFudGljcyBvZiB0aGUgZnVuY3Rpb24gdGVsbCBvZiBpdCBiZWluZyBhIFBSSU1FLWV4Y2x1c2l2
ZQo+IGVudHJ5IHBvaW50LiBJbiBmYWN0LCBtb3N0IGRyaXZlcnMgc2VlbSB0byBiZSB1c2luZyBp
dCB0byB0cmFuc2xhdGUgYSBsaXN0Cj4gb2YgcGFnZXMgaW50byBhbiBzZyB0YWJsZSB0aGF0IGNh
biBiZSB1c2VkIGZvciBHUFUgbWFwcGluZyBsYXRlciBvbiwgcmF0aGVyCj4gdGhhbiBqdXN0IGZv
ciBzaGFyaW5nIGFuIG9iamVjdCdzIHBhZ2VzIHdpdGggYW5vdGhlciBkcml2ZXIuCj4gCj4gTW92
ZSBpdCBhY3Jvc3MgZmlsZXMgYW5kIHJlbmFtZSBhY2NvcmRpbmdseS4KPiAKPiBTaWduZWQtb2Zm
LWJ5OiBBZHJpw6FuIExhcnVtYmUgPGFkcmlhbi5sYXJ1bWJlQGNvbGxhYm9yYS5jb20+Cj4gLS0t
Cj4gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKCkgaGFzIG5vIHJlYWwgZGVwZW5kZW5jeSBvbiBQUklN
RS9kbWEtYnVmIGludGVyZmFjZXMuCj4gSXQgaXMgYSBnZW5lcmljIGhlbHBlciB0aGF0IGNvbnZl
cnRzIGEgcGFnZSBhcnJheSBpbnRvIGEgc2NhdHRlci9nYXRoZXIKPiB0YWJsZSB2aWEgZG1hX21h
cF9zZ19hdHRycy4gTm90aGluZyBpbiBpdHMgaW1wbGVtZW50YXRpb24gdG91Y2hlcyBzdHJ1Y3QK
PiBkbWFfYnVmIG9yIGltcG9ydC9leHBvcnQgbG9naWMuCgpJdCBpcyBjb3JyZWN0IHRoYXQgdGhp
cyBoZWxwZXIgaXMgbm90IERNQS1idWYgZGVwZW5kZW50LCBidXQgRE1BLWJ1ZiBzaG91bGQgYmUg
dGhlIG9ubHkgY2FzZSB3aGVuIGEgRFJNIGRyaXZlciBuZWVkcyB0byBjb252ZXJ0IGFuIGFycmF5
IG9mIHBhZ2VzIGludG8gYW4gU0cgdGFibGUuCgpUaGUgYmFja2dyb3VuZCBpcyB0aGF0IHdlIHdh
bnQgdG8gZGlzY291cmFnZSBwZW9wbGUgZnJvbSB1c2luZyBTRyB0YWJsZXMgYmVjYXVzZSBpdCB3
YXMgYSByYXRoZXIgYmFkIGRlc2lnbiBjaG9pY2UgdG8gaGF2ZSBwYWdlcyBtYW5nbGVkIHdpdGgg
dGhlIERNQSBhZGRyZXNzZXMgaW4gb25lIHN0cnVjdHVyZSBpbiB0aGUgZmlyc3QgcGxhY2UuCgpT
byBxdWVzdGlvbiBpcyB3aHkgZG8geW91IHdhbnQgdG8gZG8gdGhpcz8KClJlZ2FyZHMsCkNocmlz
dGlhbi4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVm
LmMgfCAgNiArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jICAgICAgICAgICAgICAg
ICAgIHwgMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2Ry
bV9nZW1fc2htZW1faGVscGVyLmMgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1f
cHJpbWUuYyAgICAgICAgICAgICAgICAgfCAzOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQo+ICBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbS5jICAgICAgIHwgIDMgKy0t
Cj4gIGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3ByaW1lLmMgfCAgMyArKy0K
PiAgZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfZ2VtLmMgICAgICAgICB8ICAzICstLQo+
ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYyAgICAgICAgICAgICAgIHwgIDIgKy0KPiAg
ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3ByaW1lLmMgICAgICAgICB8ICAyICstCj4gIGRy
aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfcHJpbWUuYyAgICAgfCAgNCArLS0KPiAgZHJp
dmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYyAgICAgICB8ICA2ICsrLS0tCj4gIGRy
aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3ByaW1lLmMgICAgICAgfCAgNSArKy0tCj4gIGRy
aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMgfCAgNiArKy0tLQo+ICBk
cml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0tCj4gIGRy
aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jICAgICAgICAgfCAgNCArLS0KPiAgZHJp
dmVycy9ncHUvZHJtL3hlL3hlX2RtYV9idWYuYyAgICAgICAgICAgICB8ICA2ICsrLS0tCj4gIGRy
aXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYyAgICAgfCAgMiArLQo+ICBpbmNs
dWRlL2RybS9kcm1fZ2VtLmggICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysrLQo+ICBpbmNs
dWRlL2RybS9kcm1fcHJpbWUuaCAgICAgICAgICAgICAgICAgICAgIHwgIDIgLS0KPiAgMTkgZmls
ZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt
LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMgYi9kcml2
ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jCj4gaW5kZXggYjMzYzMwMGUy
NmUyLi5jOWE5OGFlYzdlYjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn
cHUvYW1kZ3B1X2RtYV9idWYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft
ZGdwdV9kbWFfYnVmLmMKPiBAQCAtMjAzLDkgKzIwMyw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFi
bGUgKmFtZGdwdV9kbWFfYnVmX21hcChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gs
Cj4gIAo+ICAJc3dpdGNoIChiby0+dGJvLnJlc291cmNlLT5tZW1fdHlwZSkgewo+ICAJY2FzZSBU
VE1fUExfVFQ6Cj4gLQkJc2d0ID0gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LAo+IC0J
CQkJCSAgICBiby0+dGJvLnR0bS0+cGFnZXMsCj4gLQkJCQkJICAgIGJvLT50Ym8udHRtLT5udW1f
cGFnZXMpOwo+ICsJCXNndCA9IGRybV9wYWdlc190b19zZyhvYmotPmRldiwKPiArCQkJCSAgICAg
IGJvLT50Ym8udHRtLT5wYWdlcywKPiArCQkJCSAgICAgIGJvLT50Ym8udHRtLT5udW1fcGFnZXMp
Owo+ICAJCWlmIChJU19FUlIoc2d0KSkKPiAgCQkJcmV0dXJuIHNndDsKPiAgCj4gZGlmZiAtLWdp
dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5j
Cj4gaW5kZXggMDE4ZGY5N2Q1OTBkLi4yMmM4YTNiNWY2NjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy
cy9ncHUvZHJtL2RybV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKPiBA
QCAtNzgwLDYgKzc4MCw0MSBAQCB2b2lkIGRybV9nZW1fcHV0X3BhZ2VzKHN0cnVjdCBkcm1fZ2Vt
X29iamVjdCAqb2JqLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAo+ICB9Cj4gIEVYUE9SVF9TWU1CT0wo
ZHJtX2dlbV9wdXRfcGFnZXMpOwo+ICAKPiArLyoqCj4gKyAqIGRybV9wYWdlc190b19zZyAtIGNv
bnZlcnRzIGEgcGFnZSBhcnJheSBpbnRvIGFuIHNnIGxpc3QKPiArICogQGRldjogRFJNIGRldmlj
ZQo+ICsgKiBAcGFnZXM6IHBvaW50ZXIgdG8gdGhlIGFycmF5IG9mIHBhZ2UgcG9pbnRlcnMgdG8g
Y29udmVydAo+ICsgKiBAbnJfcGFnZXM6IGxlbmd0aCBvZiB0aGUgcGFnZSB2ZWN0b3IKPiArICoK
PiArICogVGhpcyBoZWxwZXIgY3JlYXRlcyBhbiBzZyB0YWJsZSBvYmplY3QgZnJvbSBhIHNldCBv
ZiBwYWdlcy4KPiArICogVGhpcyBpcyB1c2VmdWwgZm9yIGltcGxlbWVudGluZyAmZHJtX2dlbV9v
YmplY3RfZnVuY3MuZ2V0X3NnX3RhYmxlLgo+ICsgKi8KPiArc3RydWN0IHNnX3RhYmxlICpkcm1f
cGFnZXNfdG9fc2coc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJCSBzdHJ1Y3QgcGFnZSAq
KnBhZ2VzLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpCj4gK3sKPiArCXN0cnVjdCBzZ190YWJsZSAq
c2c7Cj4gKwlzaXplX3QgbWF4X3NlZ21lbnQgPSAwOwo+ICsJaW50IGVycjsKPiArCj4gKwlzZyA9
IGttYWxsb2Nfb2JqKHN0cnVjdCBzZ190YWJsZSk7Cj4gKwlpZiAoIXNnKQo+ICsJCXJldHVybiBF
UlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCWlmIChkZXYpCj4gKwkJbWF4X3NlZ21lbnQgPSBkbWFf
bWF4X21hcHBpbmdfc2l6ZShkcm1fZGV2X2RtYV9kZXYoZGV2KSk7Cj4gKwlpZiAobWF4X3NlZ21l
bnQgPT0gMCkKPiArCQltYXhfc2VnbWVudCA9IFVJTlRfTUFYOwo+ICsJZXJyID0gc2dfYWxsb2Nf
dGFibGVfZnJvbV9wYWdlc19zZWdtZW50KHNnLCBwYWdlcywgbnJfcGFnZXMsIDAsCj4gKwkJCQkJ
CSh1bnNpZ25lZCBsb25nKW5yX3BhZ2VzIDw8IFBBR0VfU0hJRlQsCj4gKwkJCQkJCW1heF9zZWdt
ZW50LCBHRlBfS0VSTkVMKTsKPiArCWlmIChlcnIpIHsKPiArCQlrZnJlZShzZyk7Cj4gKwkJc2cg
PSBFUlJfUFRSKGVycik7Cj4gKwl9Cj4gKwlyZXR1cm4gc2c7Cj4gK30KPiArRVhQT1JUX1NZTUJP
TChkcm1fcGFnZXNfdG9fc2cpOwo+ICsKPiAgc3RhdGljIGludCBvYmplY3RzX2xvb2t1cChzdHJ1
Y3QgZHJtX2ZpbGUgKmZpbHAsIHUzMiAqaGFuZGxlLCBpbnQgY291bnQsCj4gIAkJCSAgc3RydWN0
IGRybV9nZW1fb2JqZWN0ICoqb2JqcykKPiAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k
cm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVt
X2hlbHBlci5jCj4gaW5kZXggMjJlYzUyZTJmZmI4Li4xNDRkMDg4YTQ3N2YgMTAwNjQ0Cj4gLS0t
IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKPiArKysgYi9kcml2ZXJz
L2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYwo+IEBAIC04MjUsNyArODI1LDcgQEAgc3Ry
dWN0IHNnX3RhYmxlICpkcm1fZ2VtX3NobWVtX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9z
aG1lbV9vYmplY3QgKnNobWVtKQo+ICAKPiAgCWRybV9XQVJOX09OKG9iai0+ZGV2LCBkcm1fZ2Vt
X2lzX2ltcG9ydGVkKG9iaikpOwo+ICAKPiAtCXJldHVybiBkcm1fcHJpbWVfcGFnZXNfdG9fc2co
b2JqLT5kZXYsIHNobWVtLT5wYWdlcywgb2JqLT5zaXplID4+IFBBR0VfU0hJRlQpOwo+ICsJcmV0
dXJuIGRybV9wYWdlc190b19zZyhvYmotPmRldiwgc2htZW0tPnBhZ2VzLCBvYmotPnNpemUgPj4g
UEFHRV9TSElGVCk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9nZXRf
c2dfdGFibGUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5j
IGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jCj4gaW5kZXggOWI0NGM3OGNkNzdmLi41NDUz
OWE4OTI5YzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jCj4gKysr
IGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jCj4gQEAgLTgzNSw0NCArODM1LDYgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcyBkcm1fZ2VtX3ByaW1lX2RtYWJ1Zl9vcHMgPSAg
ewo+ICAJLnZ1bm1hcCA9IGRybV9nZW1fZG1hYnVmX3Z1bm1hcCwKPiAgfTsKPiAgCj4gLS8qKgo+
IC0gKiBkcm1fcHJpbWVfcGFnZXNfdG9fc2cgLSBjb252ZXJ0cyBhIHBhZ2UgYXJyYXkgaW50byBh
biBzZyBsaXN0Cj4gLSAqIEBkZXY6IERSTSBkZXZpY2UKPiAtICogQHBhZ2VzOiBwb2ludGVyIHRv
IHRoZSBhcnJheSBvZiBwYWdlIHBvaW50ZXJzIHRvIGNvbnZlcnQKPiAtICogQG5yX3BhZ2VzOiBs
ZW5ndGggb2YgdGhlIHBhZ2UgdmVjdG9yCj4gLSAqCj4gLSAqIFRoaXMgaGVscGVyIGNyZWF0ZXMg
YW4gc2cgdGFibGUgb2JqZWN0IGZyb20gYSBzZXQgb2YgcGFnZXMKPiAtICogdGhlIGRyaXZlciBp
cyByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgcGFnZXMgaW50byB0aGUKPiAtICogaW1wb3J0
ZXJzIGFkZHJlc3Mgc3BhY2UgZm9yIHVzZSB3aXRoIGRtYV9idWYgaXRzZWxmLgo+IC0gKgo+IC0g
KiBUaGlzIGlzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nICZkcm1fZ2VtX29iamVjdF9mdW5jcy5n
ZXRfc2dfdGFibGUuCj4gLSAqLwo+IC1zdHJ1Y3Qgc2dfdGFibGUgKmRybV9wcmltZV9wYWdlc190
b19zZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCQkJICAgICAgIHN0cnVjdCBwYWdlICoq
cGFnZXMsIHVuc2lnbmVkIGludCBucl9wYWdlcykKPiAtewo+IC0Jc3RydWN0IHNnX3RhYmxlICpz
ZzsKPiAtCXNpemVfdCBtYXhfc2VnbWVudCA9IDA7Cj4gLQlpbnQgZXJyOwo+IC0KPiAtCXNnID0g
a21hbGxvY19vYmooc3RydWN0IHNnX3RhYmxlKTsKPiAtCWlmICghc2cpCj4gLQkJcmV0dXJuIEVS
Ul9QVFIoLUVOT01FTSk7Cj4gLQo+IC0JaWYgKGRldikKPiAtCQltYXhfc2VnbWVudCA9IGRtYV9t
YXhfbWFwcGluZ19zaXplKGRybV9kZXZfZG1hX2RldihkZXYpKTsKPiAtCWlmIChtYXhfc2VnbWVu
dCA9PSAwKQo+IC0JCW1heF9zZWdtZW50ID0gVUlOVF9NQVg7Cj4gLQllcnIgPSBzZ19hbGxvY190
YWJsZV9mcm9tX3BhZ2VzX3NlZ21lbnQoc2csIHBhZ2VzLCBucl9wYWdlcywgMCwKPiAtCQkJCQkJ
KHVuc2lnbmVkIGxvbmcpbnJfcGFnZXMgPDwgUEFHRV9TSElGVCwKPiAtCQkJCQkJbWF4X3NlZ21l
bnQsIEdGUF9LRVJORUwpOwo+IC0JaWYgKGVycikgewo+IC0JCWtmcmVlKHNnKTsKPiAtCQlzZyA9
IEVSUl9QVFIoZXJyKTsKPiAtCX0KPiAtCXJldHVybiBzZzsKPiAtfQo+IC1FWFBPUlRfU1lNQk9M
KGRybV9wcmltZV9wYWdlc190b19zZyk7Cj4gLQo+ICAvKioKPiAgICogZHJtX3ByaW1lX2dldF9j
b250aWd1b3VzX3NpemUgLSByZXR1cm5zIHRoZSBjb250aWd1b3VzIHNpemUgb2YgdGhlIGJ1ZmZl
cgo+ICAgKiBAc2d0OiBzZ190YWJsZSBkZXNjcmliaW5nIHRoZSBidWZmZXIgdG8gY2hlY2sKPiBk
aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW0uYyBiL2RyaXZl
cnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtLmMKPiBpbmRleCBiMDQzNmExZTEwM2YuLmE4
ZTg2MTRmODIxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2
X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW0uYwo+IEBA
IC0zLDcgKzMsNiBAQAo+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBFdG5hdml2IFByb2pl
Y3QKPiAgICovCj4gIAo+IC0jaW5jbHVkZSA8ZHJtL2RybV9wcmltZS5oPgo+ICAjaW5jbHVkZSA8
ZHJtL2RybV9wcmludC5oPgo+ICAjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KPiAgI2lu
Y2x1ZGUgPGxpbnV4L3NobWVtX2ZzLmg+Cj4gQEAgLTEwNCw3ICsxMDMsNyBAQCBzdHJ1Y3QgcGFn
ZSAqKmV0bmF2aXZfZ2VtX2dldF9wYWdlcyhzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5h
dml2X29iaikKPiAgCQl1bnNpZ25lZCBpbnQgbnBhZ2VzID0gZXRuYXZpdl9vYmotPmJhc2Uuc2l6
ZSA+PiBQQUdFX1NISUZUOwo+ICAJCXN0cnVjdCBzZ190YWJsZSAqc2d0Owo+ICAKPiAtCQlzZ3Qg
PSBkcm1fcHJpbWVfcGFnZXNfdG9fc2coZGV2LCBldG5hdml2X29iai0+cGFnZXMsIG5wYWdlcyk7
Cj4gKwkJc2d0ID0gZHJtX3BhZ2VzX3RvX3NnKGRldiwgZXRuYXZpdl9vYmotPnBhZ2VzLCBucGFn
ZXMpOwo+ICAJCWlmIChJU19FUlIoc2d0KSkgewo+ICAJCQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFp
bGVkIHRvIGFsbG9jYXRlIHNndDogJWxkXG4iLAo+ICAJCQkJUFRSX0VSUihzZ3QpKTsKPiBkaWZm
IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fcHJpbWUuYyBiL2Ry
aXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3ByaW1lLmMKPiBpbmRleCA2NzU3YWU2
ZWMzMDQuLmY0NDQ4NDMyNWRkYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZp
di9ldG5hdml2X2dlbV9wcmltZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRu
YXZpdl9nZW1fcHJpbWUuYwo+IEBAIC0zLDYgKzMsNyBAQAo+ICAgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxOCBFdG5hdml2IFByb2plY3QKPiAgICovCj4gIAo+ICsjaW5jbHVkZSA8ZHJtL2RybV9n
ZW0uaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fcHJpbWUuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2Rt
YS1idWYuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+IEBAIC0yMiw3ICsyMyw3IEBA
IHN0cnVjdCBzZ190YWJsZSAqZXRuYXZpdl9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBk
cm1fZ2VtX29iamVjdCAqb2JqKQo+ICAJaWYgKFdBUk5fT04oIWV0bmF2aXZfb2JqLT5wYWdlcykp
ICAvKiBzaG91bGQgaGF2ZSBhbHJlYWR5IHBpbm5lZCEgKi8KPiAgCQlyZXR1cm4gRVJSX1BUUigt
RUlOVkFMKTsKPiAgCj4gLQlyZXR1cm4gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LCBl
dG5hdml2X29iai0+cGFnZXMsIG5wYWdlcyk7Cj4gKwlyZXR1cm4gZHJtX3BhZ2VzX3RvX3NnKG9i
ai0+ZGV2LCBldG5hdml2X29iai0+cGFnZXMsIG5wYWdlcyk7Cj4gIH0KPiAgCj4gIGludCBldG5h
dml2X2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgaW9z
eXNfbWFwICptYXApCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2Rj
X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfZ2VtLmMKPiBpbmRleCAyZmIw
MzQ4N2M5ODMuLjM3MTYwMjI4MjQ0YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbG9v
bmdzb24vbHNkY19nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX2dl
bS5jCj4gQEAgLTksNyArOSw2IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtX2R1bWJfYnVmZmVycy5o
Pgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5o
Pgo+IC0jaW5jbHVkZSA8ZHJtL2RybV9wcmltZS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9wcmlu
dC5oPgo+ICAKPiAgI2luY2x1ZGUgImxzZGNfZHJ2LmgiCj4gQEAgLTUxLDcgKzUwLDcgQEAgc3Rh
dGljIHN0cnVjdCBzZ190YWJsZSAqbHNkY19nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBk
cm1fZ2VtX29iamVjdCAqb2JqKQo+ICAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICAJfQo+
ICAKPiAtCXJldHVybiBkcm1fcHJpbWVfcGFnZXNfdG9fc2cob2JqLT5kZXYsIHR0LT5wYWdlcywg
dHQtPm51bV9wYWdlcyk7Cj4gKwlyZXR1cm4gZHJtX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LCB0dC0+
cGFnZXMsIHR0LT5udW1fcGFnZXMpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBsc2RjX2dlbV9v
YmplY3RfZnJlZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiBkaWZmIC0tZ2l0IGEvZHJp
dmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0u
Ywo+IGluZGV4IGVmZDNkM2M5YTQ0OS4uN2UzNDE4MjkwYzIyIDEwMDY0NAo+IC0tLSBhL2RyaXZl
cnMvZ3B1L2RybS9tc20vbXNtX2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21f
Z2VtLmMKPiBAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqKmdldF9wYWdl
cyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiAgCj4gIAkJbXNtX29iai0+cGFnZXMgPSBw
Owo+ICAKPiAtCQltc21fb2JqLT5zZ3QgPSBkcm1fcHJpbWVfcGFnZXNfdG9fc2cob2JqLT5kZXYs
IHAsIG5wYWdlcyk7Cj4gKwkJbXNtX29iai0+c2d0ID0gZHJtX3BhZ2VzX3RvX3NnKG9iai0+ZGV2
LCBwLCBucGFnZXMpOwo+ICAJCWlmIChJU19FUlIobXNtX29iai0+c2d0KSkgewo+ICAJCQl2b2lk
ICpwdHIgPSBFUlJfQ0FTVChtc21fb2JqLT5zZ3QpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy
cy9ncHUvZHJtL21zbS9tc21fZ2VtX3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9n
ZW1fcHJpbWUuYwo+IGluZGV4IDAzNmQzNGM2NzRkOS4uZDI1MzkzYTllNTQ5IDEwMDY0NAo+IC0t
LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbV9wcmltZS5jCj4gKysrIGIvZHJpdmVycy9n
cHUvZHJtL21zbS9tc21fZ2VtX3ByaW1lLmMKPiBAQCAtMjMsNyArMjMsNyBAQCBzdHJ1Y3Qgc2df
dGFibGUgKm1zbV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq
b2JqKQo+ICAJaWYgKFdBUk5fT04oIW1zbV9vYmotPnBhZ2VzKSkgIC8qIHNob3VsZCBoYXZlIGFs
cmVhZHkgcGlubmVkISAqLwo+ICAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICAKPiAtCXJl
dHVybiBkcm1fcHJpbWVfcGFnZXNfdG9fc2cob2JqLT5kZXYsIG1zbV9vYmotPnBhZ2VzLCBucGFn
ZXMpOwo+ICsJcmV0dXJuIGRybV9wYWdlc190b19zZyhvYmotPmRldiwgbXNtX29iai0+cGFnZXMs
IG5wYWdlcyk7Cj4gIH0KPiAgCj4gIGludCBtc21fZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9n
ZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkKPiBkaWZmIC0tZ2l0IGEvZHJp
dmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9wcmltZS5jIGIvZHJpdmVycy9ncHUvZHJtL25v
dXZlYXUvbm91dmVhdV9wcmltZS5jCj4gaW5kZXggY2FhYjYwZmM2MmY2Li5iOTVmMmYwN2RmNzQg
MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9wcmltZS5jCj4g
KysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9wcmltZS5jCj4gQEAgLTMyLDgg
KzMyLDggQEAgc3RydWN0IHNnX3RhYmxlICpub3V2ZWF1X2dlbV9wcmltZV9nZXRfc2dfdGFibGUo
c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAgCXN0cnVjdCBub3V2ZWF1X2JvICpu
dmJvID0gbm91dmVhdV9nZW1fb2JqZWN0KG9iaik7Cj4gIAo+IC0JcmV0dXJuIGRybV9wcmltZV9w
YWdlc190b19zZyhvYmotPmRldiwgbnZiby0+Ym8udHRtLT5wYWdlcywKPiAtCQkJCSAgICAgbnZi
by0+Ym8udHRtLT5udW1fcGFnZXMpOwo+ICsJcmV0dXJuIGRybV9wYWdlc190b19zZyhvYmotPmRl
diwgbnZiby0+Ym8udHRtLT5wYWdlcywKPiArCQkJICAgICAgIG52Ym8tPmJvLnR0bS0+bnVtX3Bh
Z2VzKTsKPiAgfQo+ICAKPiAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpub3V2ZWF1X2dlbV9wcmlt
ZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiBkaWZmIC0tZ2l0IGEv
ZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9w
YW50aG9yL3BhbnRob3JfZ2VtLmMKPiBpbmRleCA5ODU1ZGY3MzgxOTQuLmVjNTMwZDI1NGZhNCAx
MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jCj4gKysr
IGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYwo+IEBAIC0zMjEsOCArMzIx
LDggQEAgcGFudGhvcl9nZW1fZGV2X21hcF9nZXRfc2d0X2xvY2tlZChzdHJ1Y3QgcGFudGhvcl9n
ZW1fb2JqZWN0ICpibykKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAg
Cj4gLQlzZ3QgPSBkcm1fcHJpbWVfcGFnZXNfdG9fc2coYm8tPmJhc2UuZGV2LCBiby0+YmFja2lu
Zy5wYWdlcywKPiAtCQkJCSAgICBiby0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQpOwo+ICsJc2d0
ID0gZHJtX3BhZ2VzX3RvX3NnKGJvLT5iYXNlLmRldiwgYm8tPmJhY2tpbmcucGFnZXMsCj4gKwkJ
CSAgICAgIGJvLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVCk7Cj4gIAlpZiAoSVNfRVJSKHNndCkp
Cj4gIAkJcmV0dXJuIHNndDsKPiAgCj4gQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgc3RydWN0
IHNnX3RhYmxlICpwYW50aG9yX2dlbV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0
ICpvYmopCj4gIAlkcm1fV0FSTl9PTl9PTkNFKG9iai0+ZGV2LCAhYm8tPmJhY2tpbmcucGFnZXMp
Owo+ICAJZHJtX1dBUk5fT05fT05DRShvYmotPmRldiwgIXJlZmNvdW50X3JlYWQoJmJvLT5iYWNr
aW5nLnBpbl9jb3VudCkpOwo+ICAKPiAtCXJldHVybiBkcm1fcHJpbWVfcGFnZXNfdG9fc2cob2Jq
LT5kZXYsIGJvLT5iYWNraW5nLnBhZ2VzLCBvYmotPnNpemUgPj4gUEFHRV9TSElGVCk7Cj4gKwly
ZXR1cm4gZHJtX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LCBiby0+YmFja2luZy5wYWdlcywgb2JqLT5z
aXplID4+IFBBR0VfU0hJRlQpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHBhbnRob3JfZ2VtX3Zt
YXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAo+IGRpZmYgLS1naXQgYS9kcml2
ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wcmltZS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVv
bi9yYWRlb25fcHJpbWUuYwo+IGluZGV4IGE3Nzg4MWYwMzVlNy4uNGNmYzQyODJhNTljIDEwMDY0
NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3ByaW1lLmMKPiArKysgYi9k
cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wcmltZS5jCj4gQEAgLTI2LDYgKzI2LDcgQEAK
PiAgCj4gICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gIAo+ICsjaW5jbHVkZSA8ZHJtL2Ry
bV9nZW0uaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fcHJpbWUuaD4KPiAgI2luY2x1ZGUgPGRybS9y
YWRlb25fZHJtLmg+Cj4gIAo+IEBAIC0zOCw4ICszOSw4IEBAIHN0cnVjdCBzZ190YWJsZSAqcmFk
ZW9uX2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4g
IHsKPiAgCXN0cnVjdCByYWRlb25fYm8gKmJvID0gZ2VtX3RvX3JhZGVvbl9ibyhvYmopOwo+ICAK
PiAtCXJldHVybiBkcm1fcHJpbWVfcGFnZXNfdG9fc2cob2JqLT5kZXYsIGJvLT50Ym8udHRtLT5w
YWdlcywKPiAtCQkJCSAgICAgYm8tPnRiby50dG0tPm51bV9wYWdlcyk7Cj4gKwlyZXR1cm4gZHJt
X3BhZ2VzX3RvX3NnKG9iai0+ZGV2LCBiby0+dGJvLnR0bS0+cGFnZXMsCj4gKwkJCSAgICAgICBi
by0+dGJvLnR0bS0+bnVtX3BhZ2VzKTsKPiAgfQo+ICAKPiAgc3RydWN0IGRybV9nZW1fb2JqZWN0
ICpyYWRlb25fZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2
LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dl
bS5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uYwo+IGluZGV4
IGIxODg1MzlkY2EwYi4uNzg5N2RhMGJlY2Y0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry
bS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9j
a2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5jCj4gQEAgLTg5LDggKzg5LDggQEAgc3RhdGljIGludCBy
b2NrY2hpcF9nZW1fZ2V0X3BhZ2VzKHN0cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmop
Cj4gIAo+ICAJcmtfb2JqLT5udW1fcGFnZXMgPSBya19vYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NI
SUZUOwo+ICAKPiAtCXJrX29iai0+c2d0ID0gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKHJrX29iai0+
YmFzZS5kZXYsCj4gLQkJCQkJICAgIHJrX29iai0+cGFnZXMsIHJrX29iai0+bnVtX3BhZ2VzKTsK
PiArCXJrX29iai0+c2d0ID0gZHJtX3BhZ2VzX3RvX3NnKHJrX29iai0+YmFzZS5kZXYsCj4gKwkJ
CQkgICAgICBya19vYmotPnBhZ2VzLCBya19vYmotPm51bV9wYWdlcyk7Cj4gIAlpZiAoSVNfRVJS
KHJrX29iai0+c2d0KSkgewo+ICAJCXJldCA9IFBUUl9FUlIocmtfb2JqLT5zZ3QpOwo+ICAJCWdv
dG8gZXJyX3B1dF9wYWdlczsKPiBAQCAtNDMyLDcgKzQzMiw3IEBAIHN0cnVjdCBzZ190YWJsZSAq
cm9ja2NoaXBfZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i
aikKPiAgCWludCByZXQ7Cj4gIAo+ICAJaWYgKHJrX29iai0+cGFnZXMpCj4gLQkJcmV0dXJuIGRy
bV9wcmltZV9wYWdlc190b19zZyhvYmotPmRldiwgcmtfb2JqLT5wYWdlcywgcmtfb2JqLT5udW1f
cGFnZXMpOwo+ICsJCXJldHVybiBkcm1fcGFnZXNfdG9fc2cob2JqLT5kZXYsIHJrX29iai0+cGFn
ZXMsIHJrX29iai0+bnVtX3BhZ2VzKTsKPiAgCj4gIAlzZ3QgPSBremFsbG9jX29iaigqc2d0KTsK
PiAgCWlmICghc2d0KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMg
Yi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMKPiBpbmRleCA0MzYzOTRlMDQ4MTIuLjcwMWFm
NjcyYjRlNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMKPiArKysg
Yi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMKPiBAQCAtMTcsNyArMTcsNyBAQAo+ICAKPiAg
I2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2R1bWJfYnVmZmVy
cy5oPgo+IC0jaW5jbHVkZSA8ZHJtL2RybV9wcmltZS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9n
ZW0uaD4KPiAgCj4gICNpbmNsdWRlICJkcm0uaCIKPiAgI2luY2x1ZGUgImdlbS5oIgo+IEBAIC0z
NTIsNyArMzUyLDcgQEAgc3RhdGljIGludCB0ZWdyYV9ib19nZXRfcGFnZXMoc3RydWN0IGRybV9k
ZXZpY2UgKmRybSwgc3RydWN0IHRlZ3JhX2JvICpibykKPiAgCj4gIAliby0+bnVtX3BhZ2VzID0g
Ym8tPmdlbS5zaXplID4+IFBBR0VfU0hJRlQ7Cj4gIAo+IC0JYm8tPnNndCA9IGRybV9wcmltZV9w
YWdlc190b19zZyhiby0+Z2VtLmRldiwgYm8tPnBhZ2VzLCBiby0+bnVtX3BhZ2VzKTsKPiArCWJv
LT5zZ3QgPSBkcm1fcGFnZXNfdG9fc2coYm8tPmdlbS5kZXYsIGJvLT5wYWdlcywgYm8tPm51bV9w
YWdlcyk7Cj4gIAlpZiAoSVNfRVJSKGJvLT5zZ3QpKSB7Cj4gIAkJZXJyID0gUFRSX0VSUihiby0+
c2d0KTsKPiAgCQlnb3RvIHB1dF9wYWdlczsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt
L3Ztd2dmeC92bXdnZnhfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9nZW0u
Ywo+IGluZGV4IDM5ZjhjNDY1NTBjMi4uYzllN2YyZTM2NjhjIDEwMDY0NAo+IC0tLSBhL2RyaXZl
cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zt
d2dmeC92bXdnZnhfZ2VtLmMKPiBAQCAtMjgsNyArMjgsNyBAQAo+ICAjaW5jbHVkZSAidm13Z2Z4
X2JvLmgiCj4gICNpbmNsdWRlICJ2bXdnZnhfZHJ2LmgiCj4gIAo+IC0jaW5jbHVkZSAiZHJtL2Ry
bV9wcmltZS5oIgo+ICsjaW5jbHVkZSAiZHJtL2RybV9nZW0uaCIKPiAgI2luY2x1ZGUgImRybS9k
cm1fZ2VtX3R0bV9oZWxwZXIuaCIKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+Cj4g
QEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqdm13X2dlbV9vYmplY3Rf
Z2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQo+ICAJaWYgKHZtd190dC0+
dnNndC5zZ3QpCj4gIAkJcmV0dXJuIHZtd190dC0+dnNndC5zZ3Q7Cj4gIAo+IC0JcmV0dXJuIGRy
bV9wcmltZV9wYWdlc190b19zZyhvYmotPmRldiwgdm13X3R0LT5kbWFfdHRtLnBhZ2VzLCB2bXdf
dHQtPmRtYV90dG0ubnVtX3BhZ2VzKTsKPiArCXJldHVybiBkcm1fcGFnZXNfdG9fc2cob2JqLT5k
ZXYsIHZtd190dC0+ZG1hX3R0bS5wYWdlcywgdm13X3R0LT5kbWFfdHRtLm51bV9wYWdlcyk7Cj4g
IH0KPiAgCj4gIHN0YXRpYyBpbnQgdm13X2dlbV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq
b2JqLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry
bS94ZS94ZV9kbWFfYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZG1hX2J1Zi5jCj4gaW5k
ZXggOGE5MjBlNTgyNDVjLi5mMGZlODA3MDZiNzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv
ZHJtL3hlL3hlX2RtYV9idWYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9kbWFfYnVm
LmMKPiBAQCAtMTE4LDkgKzExOCw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKnhlX2RtYV9i
dWZfbWFwKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKPiAgCj4gIAlzd2l0Y2gg
KGJvLT50dG0ucmVzb3VyY2UtPm1lbV90eXBlKSB7Cj4gIAljYXNlIFhFX1BMX1RUOgo+IC0JCXNn
dCA9IGRybV9wcmltZV9wYWdlc190b19zZyhvYmotPmRldiwKPiAtCQkJCQkgICAgYm8tPnR0bS50
dG0tPnBhZ2VzLAo+IC0JCQkJCSAgICBvYmotPnNpemUgPj4gUEFHRV9TSElGVCk7Cj4gKwkJc2d0
ID0gZHJtX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LAo+ICsJCQkJICAgICAgYm8tPnR0bS50dG0tPnBh
Z2VzLAo+ICsJCQkJICAgICAgb2JqLT5zaXplID4+IFBBR0VfU0hJRlQpOwo+ICAJCWlmIChJU19F
UlIoc2d0KSkKPiAgCQkJcmV0dXJuIHNndDsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1
L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2Ry
bV9mcm9udF9nZW0uYwo+IGluZGV4IGVlYzRjMWRhM2Y5ZS4uYTRhN2M3ZjJjOTFjIDEwMDY0NAo+
IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYwo+ICsrKyBiL2Ry
aXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYwo+IEBAIC0yMzYsNyArMjM2LDcg
QEAgc3RydWN0IHNnX3RhYmxlICp4ZW5fZHJtX2Zyb250X2dlbV9nZXRfc2dfdGFibGUoc3RydWN0
IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQo+ICAJaWYgKCF4ZW5fb2JqLT5wYWdlcykKPiAgCQly
ZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gLQlyZXR1cm4gZHJtX3ByaW1lX3BhZ2VzX3Rv
X3NnKGdlbV9vYmotPmRldiwKPiArCXJldHVybiBkcm1fcGFnZXNfdG9fc2coZ2VtX29iai0+ZGV2
LAo+ICAJCQkJICAgICB4ZW5fb2JqLT5wYWdlcywgeGVuX29iai0+bnVtX3BhZ2VzKTsKPiAgfQo+
ICAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dlbS5oIGIvaW5jbHVkZS9kcm0vZHJt
X2dlbS5oCj4gaW5kZXggODg1MjQ0ZTM3NWQzLi43YjljYzYzMzU2ODkgMTAwNjQ0Cj4gLS0tIGEv
aW5jbHVkZS9kcm0vZHJtX2dlbS5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dlbS5oCj4gQEAg
LTE1NSw3ICsxNTUsNyBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3Mgewo+ICAJICogaGVy
ZSBjYW5ub3QgYmUgdXNlZCBmb3Igc2cgdGFibGVzIHBvaW50aW5nIGF0IGRyaXZlciBwcml2YXRl
IG1lbW9yeQo+ICAJICogcmFuZ2VzLgo+ICAJICoKPiAtCSAqIFNlZSBhbHNvIGRybV9wcmltZV9w
YWdlc190b19zZygpLgo+ICsJICogU2VlIGFsc28gZHJtX3BhZ2VzX3RvX3NnKCkuCj4gIAkgKi8K
PiAgCXN0cnVjdCBzZ190YWJsZSAqKCpnZXRfc2dfdGFibGUpKHN0cnVjdCBkcm1fZ2VtX29iamVj
dCAqb2JqKTsKPiAgCj4gQEAgLTU4OSw2ICs1ODksOSBAQCBzdHJ1Y3QgcGFnZSAqKmRybV9nZW1f
Z2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiAgdm9pZCBkcm1fZ2VtX3B1
dF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHBhZ2UgKipwYWdlcywK
PiAgCQlib29sIGRpcnR5LCBib29sIGFjY2Vzc2VkKTsKPiAgCj4gK3N0cnVjdCBzZ190YWJsZSAq
ZHJtX3BhZ2VzX3RvX3NnKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCQkgc3RydWN0IHBh
Z2UgKipwYWdlcywgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTsKPiArCj4gIHZvaWQgZHJtX2dlbV9s
b2NrKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiAgdm9pZCBkcm1fZ2VtX3VubG9jayhz
dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry
bS9kcm1fcHJpbWUuaCBiL2luY2x1ZGUvZHJtL2RybV9wcmltZS5oCj4gaW5kZXggZjUwZjg2MmYw
ZDhiLi42MDNlMTZhNDBhZTcgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3ByaW1lLmgK
PiArKysgYi9pbmNsdWRlL2RybS9kcm1fcHJpbWUuaAo+IEBAIC05Miw4ICs5Miw2IEBAIHZvaWQg
ZHJtX2dlbV9kbWFidWZfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBzdHJ1Y3QgaW9z
eXNfbWFwICptYXApOwo+ICBpbnQgZHJtX2dlbV9wcmltZV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29i
amVjdCAqb2JqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7Cj4gIGludCBkcm1fZ2VtX2Rt
YWJ1Zl9tbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
KnZtYSk7Cj4gIAo+IC1zdHJ1Y3Qgc2dfdGFibGUgKmRybV9wcmltZV9wYWdlc190b19zZyhzdHJ1
Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCQkJICAgICAgIHN0cnVjdCBwYWdlICoqcGFnZXMsIHVu
c2lnbmVkIGludCBucl9wYWdlcyk7Cj4gIHN0cnVjdCBkbWFfYnVmICpkcm1fZ2VtX3ByaW1lX2V4
cG9ydChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJCSAgICAgaW50IGZsYWdzKTsK
PiAgCj4gCj4gLS0tCj4gYmFzZS1jb21taXQ6IDQ4ZGQzN2QxZmVmMzNmYmY0MmYxZDY4ODdjNjFl
MjQyZmQyMWQwMGQKPiBjaGFuZ2UtaWQ6IDIwMjYwNzI0LWdldF9wYWdlcy1lMmU5MWM1M2VhYTMK
PiAKPiBCZXN0IHJlZ2FyZHMsCj4gLS0gIAo+IEFkcmnDoW4gTGFydW1iZSA8YWRyaWFuLmxhcnVt
YmVAY29sbGFib3JhLmNvbT4KPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBA
bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp
c3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==