Re: [Intel-wired-lan] [PATCH iwl-net 2/4] ice: clear unexpected Tx timestamp ready bits to prevent stuck PHY

"Korba, Przemyslaw" <[email protected]> Mon, 27 Jul 2026 08:21:50 +0000
Newsgroups org.osuosl.intel-wired-lan,org.kernel.vger.netdev
Message-ID <PH0PR11MB49044A0573D481C4588313AB94CC2@PH0PR11MB4904.namprd11.prod.outlook.com>
DQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBLb3JiYSwgUHJ6ZW15
c2xhdw0KPiBTZW50OiBUaHVyc2RheSwgSnVseSAyMywgMjAyNiAzOjE2IFBNDQo+IFRvOiAnUGV0
ciBPcm9zJyA8cG9yb3NAcmVkaGF0LmNvbT47IGludGVsLXdpcmVkLWxhbkBsaXN0cy5vc3Vvc2wu
b3JnDQo+IENjOiBuZXRkZXZAdmdlci5rZXJuZWwub3JnOyBLdWJhbGV3c2tpLCBBcmthZGl1c3og
PEFya2FkaXVzei5LdWJhbGV3c2tpQGludGVsLmNvbT47IExva3Rpb25vdiwgQWxla3NhbmRyDQo+
IDxBbGVrc2FuZHIuTG9rdGlvbm92QGludGVsLmNvbT47IE5ndXllbiwgQW50aG9ueSBMIDxhbnRo
b255Lmwubmd1eWVuQGludGVsLmNvbT47IEtpdHN6ZWwsIFByemVteXNsYXcgPHByemVteXNsYXcu
a2l0c3plbEBpbnRlbC5jb20+Ow0KPiBJbGljaGV2LCBLb25zdGFudGluIDxrb25zdGFudGluLmls
aWNoZXZAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW0ludGVsLXdpcmVkLWxhbl0gW1BBVENI
IGl3bC1uZXQgMi80XSBpY2U6IGNsZWFyIHVuZXhwZWN0ZWQgVHggdGltZXN0YW1wIHJlYWR5IGJp
dHMgdG8gcHJldmVudCBzdHVjayBQSFkNCj4gDQo+IA0KPiANCj4gDQo+ID4gLS0tLS1PcmlnaW5h
bCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBQZXRyIE9yb3MgPHBvcm9zQHJlZGhhdC5jb20+DQo+
ID4gU2VudDogVGh1cnNkYXksIEp1bHkgMjMsIDIwMjYgMTA6MjcgQU0NCj4gPiBUbzogS29yYmEs
IFByemVteXNsYXcgPHByemVteXNsYXcua29yYmFAaW50ZWwuY29tPjsgaW50ZWwtd2lyZWQtbGFu
QGxpc3RzLm9zdW9zbC5vcmcNCj4gPiBDYzogbmV0ZGV2QHZnZXIua2VybmVsLm9yZzsgS3ViYWxl
d3NraSwgQXJrYWRpdXN6IDxhcmthZGl1c3oua3ViYWxld3NraUBpbnRlbC5jb20+OyBMb2t0aW9u
b3YsIEFsZWtzYW5kcg0KPiA+IDxhbGVrc2FuZHIubG9rdGlvbm92QGludGVsLmNvbT47IE5ndXll
biwgQW50aG9ueSBMIDxhbnRob255Lmwubmd1eWVuQGludGVsLmNvbT47IEtpdHN6ZWwsIFByemVt
eXNsYXcgPHByemVteXNsYXcua2l0c3plbEBpbnRlbC5jb20+Ow0KPiA+IElsaWNoZXYsIEtvbnN0
YW50aW4gPGtvbnN0YW50aW4uaWxpY2hldkBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUmU6IFtJ
bnRlbC13aXJlZC1sYW5dIFtQQVRDSCBpd2wtbmV0IDIvNF0gaWNlOiBjbGVhciB1bmV4cGVjdGVk
IFR4IHRpbWVzdGFtcCByZWFkeSBiaXRzIHRvIHByZXZlbnQgc3R1Y2sgUEhZDQo+ID4NCj4gPg0K
PiA+IE9uIDcvMjAvMjYgMTQ6MDEsIFByemVteXNsYXcgS29yYmEgd3JvdGU6DQo+ID4gPiBGcm9t
OiBKYWNvYiBLZWxsZXIgPGphY29iLmUua2VsbGVyQGludGVsLmNvbT4NCj4gPiA+DQo+ID4gPiBD
bGVhciBvcnBoYW5lZCB0aW1lc3RhbXAgcmVhZHkgYml0cyBsZWZ0IGluIHRoZSBQSFkgd2hlbiBh
IHBhY2tldCBpcw0KPiA+ID4gdGltZXN0YW1wZWQganVzdCBhcyB0aGUgbGluayBnb2VzIGRvd24u
IFRoZSBkcml2ZXIgY2xlYXJzIGl0cyBzb2Z0d2FyZQ0KPiA+ID4gaW5fdXNlIGJpdHMgZHVyaW5n
IGxpbmstZG93biBjbGVhbnVwLCBidXQgdGhlIFBIWSBoYXMgYWxyZWFkeSBsYXRjaGVkDQo+ID4g
PiB0aGUgdGltZXN0YW1wLCBzbyBvbiB0aGUgbmV4dCBsaW5rLXVwIGEgc3RhbGUgcmVhZHkgYml0
IGZyb20gdGhlDQo+ID4gPiBwcmV2aW91cyBsaW5rIGN5Y2xlIHJlbWFpbnMgc2V0IHdpdGggbm8g
bWF0Y2hpbmcgaW5fdXNlIGVudHJ5Lg0KPiA+ID4NCj4gPiA+IFRoZSBQSFkgdGltZXN0YW1wIGlu
dGVycnVwdCBsb2dpYyB3aWxsIG5vdCBnZW5lcmF0ZSBhIG5ldyBpbnRlcnJ1cHQNCj4gPiA+IHVu
dGlsIEFMTCBvdXRzdGFuZGluZyByZWFkeSBiaXRzIGhhdmUgYmVlbiByZWFkLiBpY2VfcHRwX3By
b2Nlc3NfdHhfDQo+ID4gPiB0c3RhbXAoKSBvbmx5IGl0ZXJhdGVzIHNsb3RzIHNldCBpbiB0aGUg
c29mdHdhcmUgaW5fdXNlIGJpdG1hcCwgc28gaXQNCj4gPiA+IG5ldmVyIHJlYWRzIHRoZXNlIG9y
cGhhbmVkIHNsb3RzLiBUaGUgcmVzdWx0IGlzIGEgcGVybWFuZW50IGludGVycnVwdA0KPiA+ID4g
ZGVhZGxvY2s6DQo+ID4gPg0KPiA+ID4gMS4gVGhlIFBIWSBoYXMgcmVhZHkgYml0cyBzZXQgZm9y
IHNsb3RzIHdpdGggbm8gaW5fdXNlIHRyYWNrZXIgZW50cnkNCj4gPiA+IDIuIFRoZSBkcml2ZXIg
bmV2ZXIgcmVhZHMgdGhvc2Ugc2xvdHMgYmVjYXVzZSBpbl91c2UgaXMgY2xlYXINCj4gPiA+IDMu
IFRoZSBQSFkgcmVmdXNlcyB0byBnZW5lcmF0ZSBuZXcgdGltZXN0YW1wIGludGVycnVwdHMNCj4g
PiA+IDQuIEFsbCBmdXR1cmUgVHggdGltZXN0YW1wcyBwZXJtYW5lbnRseSBmYWlsDQo+ID4gPiA1
LiBPbmx5IGEgcG93ZXItb24gcmVzZXQgY2FuIHJlY292ZXIgdGhlIGRldmljZQ0KPiA+ID4NCj4g
PiA+IENsZWFyIHRoZXNlIHN0YWxlIHJlYWR5IGJpdHMgb24gbGluay11cCwgaW4gaWNlX3B0cF9s
aW5rX2NoYW5nZSgpLA0KPiA+ID4gYmVmb3JlIGFueSBuZXcgdGltZXN0YW1wIHJlcXVlc3RzIGFy
cml2ZSwgc2NvcGVkIHRvIHRoZSBhZmZlY3RlZCBwb3J0DQo+ID4gPiBvbmx5IHNvIHRpbWVzdGFt
cHMgc3RpbGwgcGVuZGluZyBvbiBvdGhlciBwb3J0cyBhcmUgbGVmdCB1bnRvdWNoZWQuIEZvcg0K
PiA+ID4gZXZlcnkgYWZmZWN0ZWQgTUFDIHRoZSBjbGVhcmluZyBpdGVyYXRlcyB0aGUgbm90LWlu
X3VzZSBzbG90cyB3aXRoDQo+ID4gPiBmb3JfZWFjaF9jbGVhcl9iaXQoKSwgc28gYSBwZW5kaW5n
IHNvZnR3YXJlIHJlcXVlc3QgaXMgbmV2ZXIgZGlzY2FyZGVkDQo+ID4gPiBhbmQgdHgtPmxvY2sg
bmVlZCBub3QgYmUgaGVsZCBhY3Jvc3MgdGhlIFBIWSBhY2Nlc3M6DQo+ID4gPg0KPiA+ID4gICAg
LSBFODEwIGlzIHNraXBwZWQgKGd1YXJkZWQgYnkgdHgtPmhhc19yZWFkeV9iaXRtYXApIGJlY2F1
c2UNCj4gPiA+ICAgICAgaWNlX2dldF9waHlfdHhfdHN0YW1wX3JlYWR5X2U4MTAoKSByZXR1cm5z
IGFuIGFsbC1vbmVzIGJpdG1hcCByYXRoZXINCj4gPiA+ICAgICAgdGhhbiBhIHJlYWwgcmVhZHkg
c3RhdHVzLg0KPiA+ID4gICAgLSBFODMwIGFuZCBFODI1L2V0aDU2ZyByZWFkIHRoZSByZWFsIFR4
IHRpbWVzdGFtcCByZWFkeSBiaXRtYXAgYW5kDQo+ID4gPiAgICAgIGNsZWFyIG9ubHkgdGhlIHNs
b3RzIHRoZSBQSFkgYWN0dWFsbHkgbGF0Y2hlZCwgdmlhDQo+ID4gPiAgICAgIGljZV9jbGVhcl9w
aHlfdHN0YW1wKCkuIElmIHRoZSByZWFkeSBiaXRtYXAgY2Fubm90IGJlIHJlYWQsIHRoZQ0KPiA+
ID4gICAgICBjbGVhciBpcyBza2lwcGVkIGFuZCBhIHJhdGUtbGltaXRlZCB3YXJuaW5nIGlzIGxv
Z2dlZC4NCj4gPiA+DQo+ID4gPiBPbiBldmVyeSBNQUMgdGhlIHJlYWR5IGJpdCBpcyBjbGVhcmVk
IGJ5IHJlYWRpbmcgdGhlIHNsb3QncyB0aW1lc3RhbXANCj4gPiA+IG1lbW9yeTsgdGhlIG9ycGhh
bmVkIGJpdHMgbGluZ2VyIG9ubHkgYmVjYXVzZSB0aGUgbm9ybWFsIHByb2Nlc3NpbmcgcGF0aA0K
PiA+ID4gbmV2ZXIgcmVhZHMgdGhvc2Ugbm90LWluX3VzZSBzbG90cy4gVGhlIGxpbmstdXAgcmVj
b3ZlcnkgY2xlYXJzIHRoZW0gYnkNCj4gPiA+IHJlYWRpbmcgdGhlIHRpbWVzdGFtcCBtZW1vcnkg
dmlhIGljZV9jbGVhcl9waHlfdHN0YW1wKCk6DQo+ID4gPg0KPiA+ID4gICAgLSBFODMwOiBhZGQg
aWNlX2NsZWFyX3BoeV90c3RhbXBfZTgzMCgpLCB3aGljaCByZWFkcyB0aGUNCj4gPiA+ICAgICAg
UFJUVFNZTl9UWFRJTUVfSC9MIHJlZ2lzdGVycyB0byBjbGVhciB0aGUgZW50cnksIGFuZCBhZGQg
YW4NCj4gPiA+ICAgICAgSUNFX01BQ19FODMwIGNhc2UgdG8gdGhlIGljZV9jbGVhcl9waHlfdHN0
YW1wKCkgZGlzcGF0Y2guDQo+ID4gPiAgICAtIGV0aDU2ZzogaWNlX2NsZWFyX3B0cF90c3RhbXBf
ZXRoNTZnKCkgcmVhZHMgdGhlIHRpbWVzdGFtcCBtZW1vcnkNCj4gPiA+ICAgICAgbG9jYXRpb24s
IHdoaWNoIHBlciB0aGUgUEhZIHNwZWMgaXMgdGhlIG9wZXJhdGlvbiB0aGF0IGNsZWFycyB0aGUN
Cj4gPiA+ICAgICAgZW50cnkncyB2YWxpZCBiaXQgYW5kIGl0cyBjb3JyZXNwb25kaW5nIChyZWFk
LW9ubHkpIHRzX21lbW9yeV9zdGF0dXMNCj4gPiA+ICAgICAgYml0LiBUaGUgdHNfbWVtb3J5X3N0
YXR1cyByZWdpc3RlcnMgY2Fubm90IGJlIHdyaXR0ZW4gdG8gY2xlYXIgYQ0KPiA+ID4gICAgICBi
aXQsIHNvIG9ubHkgcmVhZGluZyB0aGUgdGltZXN0YW1wIG1lbW9yeSBoYXMgYW55IGVmZmVjdC4N
Cj4gPiA+DQo+ID4gPiBUaGUgbmV3IGZvcl9lYWNoX2NsZWFyX2JpdCgpIGxvb3AgcnVucyBmcm9t
IHRoZSBzZXJ2aWNlIHRhc2sgdmlhIGxpbmsNCj4gPiA+IGV2ZW50cy4gRHVyaW5nIGRldmljZSBy
ZW1vdmFsLCB0eC0+aW5fdXNlIGlzIGZyZWVkIGJlZm9yZSB0aGUgc2VydmljZQ0KPiA+ID4gdGFz
ayBpcyBzdG9wcGVkLiBGaXggYnkgc3RvcHBpbmcgdGhlIHNlcnZpY2UgdGFzayBhdCB0aGUgc3Rh
cnQgb2YNCj4gPiA+IGljZV91bmxvYWQoKSwgYmVmb3JlIGljZV9wdHBfcmVsZWFzZSgpIGZyZWVz
IHR4LT5pbl91c2UuDQo+ID4gPg0KPiA+ID4gUmV2aWV3ZWQtYnk6IEdyemVnb3J6IE5pdGthIDxn
cnplZ29yei5uaXRrYUBpbnRlbC5jb20+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBKYWNvYiBLZWxs
ZXIgPGphY29iLmUua2VsbGVyQGludGVsLmNvbT4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEFya2Fk
aXVzeiBLdWJhbGV3c2tpIDxhcmthZGl1c3oua3ViYWxld3NraUBpbnRlbC5jb20+DQo+ID4gPiBT
aWduZWQtb2ZmLWJ5OiBQcnplbXlzbGF3IEtvcmJhIDxwcnplbXlzbGF3LmtvcmJhQGludGVsLmNv
bT4NCj4gPiA+IC0tLQ0KPiA+ID4gICBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNl
X21haW4uYyAgIHwgIDEgKw0KPiA+ID4gICBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2Uv
aWNlX3B0cC5jICAgIHwgNzIgKysrKysrKysrKysrKysrLS0NCj4gPiA+ICAgZHJpdmVycy9uZXQv
ZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYyB8IDg5ICsrKysrKysrKysrKysrKysrLS0t
LQ0KPiA+ID4gICBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5oIHwg
IDEgKw0KPiA+ID4gICBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaCAg
IHwgIDcgKysNCj4gPiA+ICAgNSBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwgMjEg
ZGVsZXRpb25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy
bmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNl
L2ljZV9tYWluLmMNCj4gPiA+IGluZGV4IGUzZDM4MTBjNzkxZi4uMjMxZDUzMzMwOWNiIDEwMDY0
NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMN
Cj4gPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jDQo+
ID4gPiBAQCAtNTE2OSw2ICs1MTY5LDcgQEAgdm9pZCBpY2VfdW5sb2FkKHN0cnVjdCBpY2VfcGYg
KnBmKQ0KPiA+ID4NCj4gPiA+ICAgCWRldmxfYXNzZXJ0X2xvY2tlZChwcml2X3RvX2Rldmxpbmso
cGYpKTsNCj4gPiA+DQo+ID4gPiArCWljZV9zZXJ2aWNlX3Rhc2tfc3RvcChwZik7DQo+ID4gPiAg
IAlpY2VfdW5wbHVnX2F1eF9kZXYocGYpOw0KPiA+ID4gICAJaWNlX2RlaW5pdF9yZG1hKHBmKTsN
Cj4gPiA+ICAgCWljZV9kZWluaXRfZmVhdHVyZXMocGYpOw0KPiA+ID4gZGlmZiAtLWdpdCBhL2Ry
aXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhl
cm5ldC9pbnRlbC9pY2UvaWNlX3B0cC5jDQo+ID4gPiBpbmRleCAxYWE0NDBiMDYzOWYuLjlkOWQ5
OTU4ZmU1YyAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lj
ZS9pY2VfcHRwLmMNCj4gPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9p
Y2VfcHRwLmMNCj4gPiA+IEBAIC0xMzcyLDE1ICsxMzcyLDczIEBAIHZvaWQgaWNlX3B0cF9saW5r
X2NoYW5nZShzdHJ1Y3QgaWNlX3BmICpwZiwgYm9vbCBsaW5rdXApDQo+ID4gPiAgIAlzd2l0Y2gg
KGh3LT5tYWNfdHlwZSkgew0KPiA+ID4gICAJY2FzZSBJQ0VfTUFDX0U4MTA6DQo+ID4gPiAgIAlj
YXNlIElDRV9NQUNfRTgzMDoNCj4gPiA+IC0JCS8qIERvIG5vdCByZWNvbmZpZ3VyZSBFODEwIG9y
IEU4MzAgUEhZICovDQo+ID4gPiArCWNhc2UgSUNFX01BQ19HRU5FUklDXzNLX0U4MjU6DQo+ID4g
PiArCQkvKiBEbyBub3QgcmVjb25maWd1cmUgRTgxMCBvciBFODMwIFBIWSwgYnV0IG9uIGxpbmst
dXAgY2xlYXINCj4gPiA+ICsJCSAqIGFueSBzdGFsZSB0aW1lc3RhbXAgcmVhZHkgYml0cyBsZWZ0
IG92ZXIgZnJvbSBhIHByZXZpb3VzDQo+ID4gPiArCQkgKiBsaW5rIGN5Y2xlLiBUaGUgUEhZIG1h
eSBoYXZlIGxhdGNoZWQgdGltZXN0YW1wcyBmb3IgcGFja2V0cw0KPiA+ID4gKwkJICogaW4gZmxp
Z2h0IHdoZW4gdGhlIGxpbmsgd2VudCBkb3duOyB0aGVzZSBtdXN0IGJlIGNsZWFyZWQNCj4gPiA+
ICsJCSAqIGJlZm9yZSBuZXcgdGltZXN0YW1wIHJlcXVlc3RzIGFycml2ZS4NCj4gPiA+ICsJCSAq
DQo+ID4gPiArCQkgKiBFODEwIGRvZXMgbm90IGhhdmUgYSByZWFsIHJlYWR5IGJpdG1hcA0KPiA+
ID4gKwkJICogKGljZV9nZXRfcGh5X3R4X3RzdGFtcF9yZWFkeV9lODEwIHJldHVybnMgYWxsLW9u
ZXMpLCBzbw0KPiA+ID4gKwkJICogc2tpcCBjbGVhcmluZyBvbiBFODEwIHRvIGF2b2lkIHVubmVj
ZXNzYXJ5IHNpZGViYW5kIHF1ZXVlDQo+ID4gPiArCQkgKiBvcGVyYXRpb25zIGZvciBldmVyeSBu
b3QtaW4tdXNlIHNsb3Qgb24gZWFjaCBsaW5rLXVwLg0KPiA+ID4gKwkJICovDQo+ID4gPiArCQlp
ZiAobGlua3VwICYmIHB0cF9wb3J0LT50eC5oYXNfcmVhZHlfYml0bWFwKSB7DQo+ID4gPiArCQkJ
c3RydWN0IGljZV9wdHBfdHggKnR4ID0gJnB0cF9wb3J0LT50eDsNCj4gPiA+ICsJCQl1NjQgdHN0
YW1wX3JlYWR5Ow0KPiA+ID4gKwkJCWludCBpOw0KPiA+ID4gKw0KPiA+ID4gKwkJCWlmIChpY2Vf
Z2V0X3BoeV90eF90c3RhbXBfcmVhZHkoaHcsIHR4LT5ibG9jaywNCj4gPiA+ICsJCQkJCQkJJnRz
dGFtcF9yZWFkeSkpIHsNCj4gPiA+ICsJCQkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoaWNlX3BmX3Rv
X2RldihwZiksDQo+ID4gPiArCQkJCQkJICAgICAiUFRQIGZhaWxlZCB0byByZWFkIFR4IHRpbWVz
dGFtcCByZWFkeSBiaXRtYXAgb24gbGluay11cDsgc3RhbGUgUEhZIHRpbWVzdGFtcHMgbWF5DQo+
ID4gcmVtYWluIGFuZCBzdGFsbCBUeCB0aW1lc3RhbXBpbmdcbiIpOw0KPiA+ID4gKwkJCX0gZWxz
ZSB7DQo+ID4gPiArCQkJCS8qIE9ubHkgY2xlYXIgc3RhbGUgcmVhZHkgYml0cyBmb3Igc2xvdHMg
dGhhdA0KPiA+ID4gKwkJCQkgKiBoYXZlIG5vIGluLWZsaWdodCBzb2Z0d2FyZSByZXF1ZXN0LiBJ
dGVyYXRpbmcNCj4gPiA+ICsJCQkJICogdGhlIG5vdC1pbi11c2Ugc2xvdHMgc2tpcHMgYW55IGNv
bmN1cnJlbnQNCj4gPiA+ICsJCQkJICogaWNlX3B0cF9yZXF1ZXN0X3RzKCkgYWxsb2NhdGlvbiB3
aXRob3V0DQo+ID4gPiArCQkJCSAqIGhvbGRpbmcgdHgtPmxvY2sgYWNyb3NzIHRoZSBQSFkgYWNj
ZXNzLiBFODMwDQo+ID4gPiArCQkJCSAqIGFuZCBFODI1IHJlYWNoIHRoaXMgY2xlYXI7IEU4MTAg
aXMgZmlsdGVyZWQNCj4gPiA+ICsJCQkJICogb3V0IGFib3ZlIGJ5IGhhc19yZWFkeV9iaXRtYXAu
DQo+ID4gPiArCQkJCSAqLw0KPiA+ID4gKwkJCQlmb3JfZWFjaF9jbGVhcl9iaXQoaSwgdHgtPmlu
X3VzZSwgdHgtPmxlbikgew0KPiA+ID4gKwkJCQkJdTggcGh5X2lkeCA9IGkgKyB0eC0+b2Zmc2V0
Ow0KPiA+ID4gKw0KPiA+ID4gKwkJCQkJaWYgKHRzdGFtcF9yZWFkeSAmIEJJVF9VTEwocGh5X2lk
eCkpDQo+ID4gPiArCQkJCQkJaWNlX2NsZWFyX3BoeV90c3RhbXAoaHcsDQo+ID4gPiArCQkJCQkJ
CQkgICAgIHR4LT5ibG9jaywNCj4gPiA+ICsJCQkJCQkJCSAgICAgcGh5X2lkeCk7DQo+ID4gPiAr
CQkJCX0NCj4gPiA+ICsJCQl9DQo+ID4gPiArCQl9DQo+ID4gPiArDQo+ID4gPiArCQkvKiBFODEw
IGFuZCBFODMwIG5lZWQgbm8gZnVydGhlciBQSFkgcmVjb25maWd1cmF0aW9uICovDQo+ID4gPiAr
CQlpZiAoaHctPm1hY190eXBlICE9IElDRV9NQUNfR0VORVJJQ18zS19FODI1KQ0KPiA+ID4gKwkJ
CXJldHVybjsNCj4gPiA+ICsNCj4gPiA+ICsJCS8qIEU4MjUgcmVjb3ZlcnMgaXRzIFR4IHBhdGgg
Ynkgc29mdCByZXNldHRpbmcgdGhlIFBIWQ0KPiA+ID4gKwkJICogdGltZXN0YW1wIGJsb2NrIGFu
ZCByZXN0YXJ0aW5nIHRoZSBwb3J0LCBidXQgb25seSBvbg0KPiA+ID4gKwkJICogbGluay11cC4g
VGhlIHJlc2V0IGlzIGEgdGhyZWUtc3RlcCByZWdpc3RlciB0b2dnbGU7IGlmIGl0DQo+ID4gPiAr
CQkgKiBmYWlscyBwYXJ0d2F5IHRocm91Z2gsIHRoZSBwb3J0IGNhbiBiZSBsZWZ0IGhlbGQgaW4g
cmVzZXQsDQo+ID4gPiArCQkgKiBhbmQgcHJvZ3JhbW1pbmcgYSBQSFkgdGhhdCBpcyBzdHVjayBp
biByZXNldCB2aWENCj4gPiA+ICsJCSAqIGljZV9wdHBfcG9ydF9waHlfcmVzdGFydCgpIHdvdWxk
IGxlYXZlIFR4IHRpbWVzdGFtcGluZw0KPiA+ID4gKwkJICogcGVybWFuZW50bHkgYnJva2VuLiBT
byB3YXJuIGFuZCBza2lwIHRoZSByZXN0YXJ0IG9uDQo+ID4gPiArCQkgKiBmYWlsdXJlOyB0aGUg
c2VxdWVuY2UgaXMgcmV0cmllZCBvbiB0aGUgbmV4dCBsaW5rLXVwIGV2ZW50Lg0KPiA+ID4gKwkJ
ICovDQo+ID4gPiArCQlpZiAoIWxpbmt1cCkNCj4gPiA+ICsJCQlyZXR1cm47DQo+ID4gPiArDQo+
ID4gPiArCQlpZiAoaWNlX3B0cF9waHlfc29mdF9yZXNldF9ldGg1NmcoaHcsIHB0cF9wb3J0LT5w
b3J0X251bSkpDQo+ID4gPiArCQkJZGV2X3dhcm4oaWNlX3BmX3RvX2RldihwZiksDQo+ID4gPiAr
CQkJCSAiUFRQIGZhaWxlZCB0byBzb2Z0IHJlc2V0IFBIWSBwb3J0ICV1IG9uIGxpbmstdXA7IHNr
aXBwaW5nIHJlc3RhcnQsIFR4IHRpbWVzdGFtcGluZyBtYXkgYmUgc3R1Y2ssIHRyeSB0b2dnbGUg
YQ0KPiA+IGxpbmsgdG8gcmVjb3ZlclxuIiwNCj4gPiA+ICsJCQkJIHB0cF9wb3J0LT5wb3J0X251
bSk7DQo+ID4gPiArCQllbHNlDQo+ID4gPiArCQkJaWNlX3B0cF9wb3J0X3BoeV9yZXN0YXJ0KHB0
cF9wb3J0KTsNCj4gPg0KPiA+IFdlIGhpdCBhIHJlZ3Jlc3Npb24gZnJvbSB0aGlzIGh1bmsgd2hp
bGUgdGVzdGluZyB0aGUgc2VyaWVzIG9uIGFuDQo+ID4gRTgyNSBULUJDIHN5c3RlbTogYWZ0ZXIg
dGhlIHNvZnQgcmVzZXQgdGhlIHBvcnQgbm8gbG9uZ2VyIHNpZ25hbHMNCj4gPiBsYXRjaGVkIFR4
IHRpbWVzdGFtcHMuIE5vdGhpbmcgcmUtZW5hYmxlcyB0aGUgcG9ydCBpbnRlcnJ1cHQNCj4gPiBj
b25maWd1cmF0aW9uIChQSFlfUkVHX1RTX0lOVF9DT05GSUcpIGFmdGVyd2FyZHMsIHRoZSBvbmx5
IHdyaXRlcnMNCj4gPiBhcmUgdGhlIGNsb2NrIG93bmVyIGluaXQgYW5kIHJlYnVpbGQgcGF0aHMg
dmlhDQo+ID4gaWNlX3B0cF9jZmdfcGh5X2ludGVycnVwdCgpLCBhbmQgaWNlX3B0cF9wb3J0X3Bo
eV9yZXN0YXJ0KCkgZG9lcyBub3QNCj4gPiB0b3VjaCBpdC4gU28gdGhlIGZpcnN0IGxpbmstdXAg
dGhhdCB0YWtlcyB0aGlzIHBhdGggbGVhdmVzIHRoZSBwb3J0DQo+ID4gd2l0aG91dCBUeCB0aW1l
c3RhbXAgaW50ZXJydXB0cyB1bnRpbCB0aGUgbmV4dCByZXNldCBvZiB0aGUgY2xvY2sNCj4gPiBv
d25lciBQRiBvciBhIGRyaXZlciByZWxvYWQuDQo+ID4NCj4gPiBSZWdhcmRzLA0KPiA+DQo+ID4g
UGV0cg0KPiANCj4gSGksIHRoYW5rcyBmb3IgbGV0dGluZyBtZSBrbm93LiBJIHdpbGwgbG9vayBp
bnRvIGl0Lg0KDQpIaSwgDQpJZiBJIGFtIG5vdCBtaXN0YWtlbiwgSmFrZSBLZWxsZXIgc2VudCB5
b3UgYSBwYXRjaCBmaXhpbmcgdGhlIGlzc3VlIHdpdGggdGhpcyBwYXRjaCByZWdhcmRpbmcgUEhZ
IHJlY29uZmlndXJhdGlvbi4NCkRpZCB5b3UgaGF2ZSBhIGNoYW5jZSB0byB0ZXN0IHRoaXM/IElm
IHNvLCBJIHdpbGwgaW1wbGVtZW50IHRoaXMgZml4IGluIHRoZSBuZXcgcmV2aXNpb24uDQoNCj4g
DQo+ID4NCj4gPiA+ICAgCQlyZXR1cm47DQo+ID4gPiAgIAljYXNlIElDRV9NQUNfR0VORVJJQzoN
Cj4gPiA+ICAgCQlpY2VfcHRwX3BvcnRfcGh5X3Jlc3RhcnQocHRwX3BvcnQpOw0KPiA+ID4gICAJ
CXJldHVybjsNCj4gPiA+IC0JY2FzZSBJQ0VfTUFDX0dFTkVSSUNfM0tfRTgyNToNCj4gPiA+IC0J
CWlmIChsaW5rdXApDQo+ID4gPiAtCQkJaWNlX3B0cF9wb3J0X3BoeV9yZXN0YXJ0KHB0cF9wb3J0
KTsNCj4gPiA+IC0JCXJldHVybjsNCj4gPiA+ICAgCWRlZmF1bHQ6DQo+ID4gPiAgIAkJZGV2X3dh
cm4oaWNlX3BmX3RvX2RldihwZiksICIlczogVW5rbm93biBQSFkgdHlwZVxuIiwgX19mdW5jX18p
Ow0KPiA+ID4gICAJfQ0KPiA+ID4gQEAgLTMzODAsNiArMzQzOCw3IEBAIHZvaWQgaWNlX3B0cF9p
bml0KHN0cnVjdCBpY2VfcGYgKnBmKQ0KPiA+ID4NCj4gPiA+ICAgCXB0cC0+c3RhdGUgPSBJQ0Vf
UFRQX0lOSVRJQUxJWklORzsNCj4gPiA+DQo+ID4gPiArCW11dGV4X2luaXQoJmh3LT5wdHAudHhf
dHN0YW1wX2xvY2spOw0KPiA+ID4gICAJaWYgKGh3LT5sYW5lX251bSA8IDApIHsNCj4gPiA+ICAg
CQllcnIgPSBody0+bGFuZV9udW07DQo+ID4gPiAgIAkJZ290byBlcnJfZXhpdDsNCj4gPiA+IEBA
IC0zNDQzLDYgKzM1MDIsNyBAQCB2b2lkIGljZV9wdHBfaW5pdChzdHJ1Y3QgaWNlX3BmICpwZikN
Cj4gPiA+DQo+ID4gPiAgIAlpY2VfcHRwX2NsZWFudXBfYWRhcHRlcihwZik7DQo+ID4gPiAgIGVy
cl9leGl0Og0KPiA+ID4gKwltdXRleF9kZXN0cm95KCZody0+cHRwLnR4X3RzdGFtcF9sb2NrKTsN
Cj4gPiA+ICAgCS8qIElmIHdlIHJlZ2lzdGVyZWQgYSBQVFAgY2xvY2ssIHJlbGVhc2UgaXQgKi8N
Cj4gPiA+ICAgCWlmIChwZi0+cHRwLmNsb2NrKSB7DQo+ID4gPiAgIAkJcHRwX2Nsb2NrX3VucmVn
aXN0ZXIocHRwLT5jbG9jayk7DQo+ID4gPiBAQCAtMzQ2OSw2ICszNTI5LDcgQEAgdm9pZCBpY2Vf
cHRwX3JlbGVhc2Uoc3RydWN0IGljZV9wZiAqcGYpDQo+ID4gPg0KPiA+ID4gICAJaWYgKHBmLT5w
dHAuc3RhdGUgIT0gSUNFX1BUUF9SRUFEWSkgew0KPiA+ID4gICAJCW11dGV4X2Rlc3Ryb3koJnBm
LT5wdHAucG9ydC5wc19sb2NrKTsNCj4gPiA+ICsJCW11dGV4X2Rlc3Ryb3koJnBmLT5ody5wdHAu
dHhfdHN0YW1wX2xvY2spOw0KPiA+ID4gICAJCWljZV9wdHBfY2xlYW51cF9wZihwZik7DQo+ID4g
PiAgIAkJaWNlX3B0cF9jbGVhbnVwX2FkYXB0ZXIocGYpOw0KPiA+ID4gICAJCWlmIChwZi0+cHRw
LmNsb2NrKSB7DQo+ID4gPiBAQCAtMzQ5NSw2ICszNTU2LDcgQEAgdm9pZCBpY2VfcHRwX3JlbGVh
c2Uoc3RydWN0IGljZV9wZiAqcGYpDQo+ID4gPg0KPiA+ID4gICAJaWNlX3B0cF9wb3J0X3BoeV9z
dG9wKCZwZi0+cHRwLnBvcnQpOw0KPiA+ID4gICAJbXV0ZXhfZGVzdHJveSgmcGYtPnB0cC5wb3J0
LnBzX2xvY2spOw0KPiA+ID4gKwltdXRleF9kZXN0cm95KCZwZi0+aHcucHRwLnR4X3RzdGFtcF9s
b2NrKTsNCj4gPiA+ICAgCWlmIChwZi0+cHRwLmt3b3JrZXIpIHsNCj4gPiA+ICAgCQlrdGhyZWFk
X2Rlc3Ryb3lfd29ya2VyKHBmLT5wdHAua3dvcmtlcik7DQo+ID4gPiAgIAkJcGYtPnB0cC5rd29y
a2VyID0gTlVMTDsNCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRl
bC9pY2UvaWNlX3B0cF9ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9w
dHBfaHcuYw0KPiA+ID4gaW5kZXggYTE5NzBhODg3YzM4Li5iMjNiNjhjZDE4ZWUgMTAwNjQ0DQo+
ID4gPiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jDQo+
ID4gPiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jDQo+
ID4gPiBAQCAtMTE2MCwxMSArMTE2MCwxNSBAQCBzdGF0aWMgaW50IGljZV9yZWFkX3B0cF90c3Rh
bXBfZXRoNTZnKHN0cnVjdCBpY2VfaHcgKmh3LCB1OCBwb3J0LCB1OCBpZHgsDQo+ID4gPiAgICAq
DQo+ID4gPiAgICAqIFRvIGRpcmVjdGx5IGNsZWFyIHRoZSBjb250ZW50cyBvZiB0aGUgdGltZXN0
YW1wIGJsb2NrIGVudGlyZWx5LCBkaXNjYXJkaW5nDQo+ID4gPiAgICAqIGFsbCB0aW1lc3RhbXAg
ZGF0YSBhdCBvbmNlLCBzb2Z0d2FyZSBzaG91bGQgaW5zdGVhZCB1c2UNCj4gPiA+IC0gKiBpY2Vf
cHRwX3Jlc2V0X3RzX21lbW9yeV9xdWFkX2V0aDU2ZygpLg0KPiA+ID4gKyAqIGljZV9wdHBfcmVz
ZXRfdHNfbWVtb3J5X2V0aDU2ZygpLg0KPiA+ID4gICAgKg0KPiA+ID4gICAgKiBUaGlzIGZ1bmN0
aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiBhbiBpZHggd2hvc2UgYml0IGlzIHNldCBhY2Nv
cmRpbmcgdG8NCj4gPiA+ICAgICogaWNlX2dldF9waHlfdHhfdHN0YW1wX3JlYWR5KCkuDQo+ID4g
PiAgICAqDQo+ID4gPiArICogU2VyaWFsaXplZCBhZ2FpbnN0IGljZV9wdHBfY2xlYXJfdHhfbWVt
b3J5X3N0YXR1c19ldGg1NmcoKSB2aWENCj4gPiA+ICsgKiB0eF90c3RhbXBfbG9jayBzbyB0aGUg
dHdvIHBhdGhzIGRvIG5vdCBpbnRlcmxlYXZlIHRoZWlyIHJlYWRzIG9mIHRoZSBzYW1lDQo+ID4g
PiArICogcG9ydCdzIFR4IHRpbWVzdGFtcCBtZW1vcnkuDQo+ID4gPiArICoNCj4gPiA+ICAgICog
UmV0dXJuOg0KPiA+ID4gICAgKiAqICUwICAgICAtIHN1Y2Nlc3MNCj4gPiA+ICAgICogKiAlb3Ro
ZXIgLSBmYWlsZWQgdG8gd3JpdGUgdG8gUEhZDQo+ID4gPiBAQCAtMTE3NSwyNSArMTE3OSw2MiBA
QCBzdGF0aWMgaW50IGljZV9jbGVhcl9wdHBfdHN0YW1wX2V0aDU2ZyhzdHJ1Y3QgaWNlX2h3ICpo
dywgdTggcG9ydCwgdTggaWR4KQ0KPiA+ID4gICAJdTE2IGxvX2FkZHI7DQo+ID4gPiAgIAlpbnQg
ZXJyOw0KPiA+ID4NCj4gPiA+IC0JLyogUmVhZCB0aGUgdGltZXN0YW1wIHJlZ2lzdGVyIHRvIGVu
c3VyZSB0aGUgdGltZXN0YW1wIHN0YXR1cyBiaXQgaXMNCj4gPiA+IC0JICogY2xlYXJlZC4NCj4g
PiA+ICsJbG9fYWRkciA9ICh1MTYpUEhZX1RTVEFNUF9MKGlkeCk7DQo+ID4gPiArDQo+ID4gPiAr
CW11dGV4X2xvY2soJmh3LT5wdHAudHhfdHN0YW1wX2xvY2spOw0KPiA+ID4gKw0KPiA+ID4gKwkv
KiBQZXIgdGhlIFBIWSBzcGVjLCByZWFkaW5nIHRoZSB0aW1lc3RhbXAgbWVtb3J5IGxvY2F0aW9u
IGlzIHdoYXQNCj4gPiA+ICsJICogY2xlYXJzIHRoZSBlbnRyeSdzIHZhbGlkIGJpdCBhbmQgaXRz
IGNvcnJlc3BvbmRpbmcgKHJlYWQtb25seSkNCj4gPiA+ICsJICogdHNfbWVtb3J5X3N0YXR1cyBi
aXQuIFRoaXMgY2xlYXJzIG9ubHkgdGhpcyBpbmRleCwgbGVhdmluZyBhbnkNCj4gPiA+ICsJICog
b3RoZXIgaW4tZmxpZ2h0IHRpbWVzdGFtcHMgb24gdGhlIHBvcnQgdW50b3VjaGVkLg0KPiA+ID4g
ICAJICovDQo+ID4gPiAgIAllcnIgPSBpY2VfcmVhZF9wdHBfdHN0YW1wX2V0aDU2ZyhodywgcG9y
dCwgaWR4LCAmdW51c2VkX3RzdGFtcCk7DQo+ID4gPiAtCWlmIChlcnIpIHsNCj4gPiA+ICsJaWYg
KGVycikNCj4gPiA+ICAgCQlpY2VfZGVidWcoaHcsIElDRV9EQkdfUFRQLCAiRmFpbGVkIHRvIHJl
YWQgdGhlIFBIWSB0aW1lc3RhbXAgcmVnaXN0ZXIgZm9yIHBvcnQgJXUsIGlkeCAldSwgZXJyICVk
XG4iLA0KPiA+ID4gICAJCQkgIHBvcnQsIGlkeCwgZXJyKTsNCj4gPiA+IC0JfQ0KPiA+ID4gLQ0K
PiA+ID4gLQlsb19hZGRyID0gKHUxNilQSFlfVFNUQU1QX0woaWR4KTsNCj4gPiA+DQo+ID4gPiAg
IAllcnIgPSBpY2Vfd3JpdGVfcG9ydF9tZW1fZXRoNTZnKGh3LCBwb3J0LCBsb19hZGRyLCAwKTsN
Cj4gPiA+IC0JaWYgKGVycikgew0KPiA+ID4gKwlpZiAoZXJyKQ0KPiA+ID4gICAJCWljZV9kZWJ1
ZyhodywgSUNFX0RCR19QVFAsICJGYWlsZWQgdG8gY2xlYXIgbG93IFBUUCB0aW1lc3RhbXAgcmVn
aXN0ZXIgZm9yIHBvcnQgJXUsIGlkeCAldSwgZXJyICVkXG4iLA0KPiA+ID4gICAJCQkgIHBvcnQs
IGlkeCwgZXJyKTsNCj4gPiA+IC0JCXJldHVybiBlcnI7DQo+ID4gPiArDQo+ID4gPiArCW11dGV4
X3VubG9jaygmaHctPnB0cC50eF90c3RhbXBfbG9jayk7DQo+ID4gPiArDQo+ID4gPiArCXJldHVy
biBlcnI7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIGljZV9wdHBf
Y2xlYXJfdHhfbWVtb3J5X3N0YXR1c19ldGg1NmcgLSBSZXNldCBvbmUgcG9ydCdzIFR4IHRpbWVz
dGFtcCBtZW1vcnkNCj4gPiA+ICsgKiBAaHc6IHBvaW50ZXIgdG8gdGhlIEhXIHN0cnVjdA0KPiA+
ID4gKyAqIEBwb3J0OiBwb3J0IG51bWJlciB0byBjbGVhcg0KPiA+ID4gKyAqDQo+ID4gPiArICog
RnVsbHkgcmVzZXQgYSBzaW5nbGUgUEhZIHBvcnQncyBUeCB0aW1lc3RhbXAgbWVtb3J5LiBQZXIg
dGhlIFBIWSBzcGVjLCB0aGUNCj4gPiA+ICsgKiBvbmx5IHdheSB0byBjbGVhciBhIHRpbWVzdGFt
cCB2YWxpZCBiaXQgKGFuZCBpdHMgcmVhZC1vbmx5IHRzX21lbW9yeV9zdGF0dXMNCj4gPiA+ICsg
KiBiaXQpIGlzIHRvIHJlYWQgdGhlIHRpbWVzdGFtcCBtZW1vcnkgbG9jYXRpb24sIHNvIHJlYWQg
ZXZlcnkgZW50cnkgZm9yIHRoZQ0KPiA+ID4gKyAqIHBvcnQgKHR3byAzMi1iaXQgcmVhZHMgZWFj
aCkuIFRoaXMgZGlzY2FyZHMgYWxsIHRpbWVzdGFtcCBkYXRhIG9uIHRoZSBwb3J0LA0KPiA+ID4g
KyAqIHNvIGl0IG11c3Qgb25seSBiZSB1c2VkIGZvciBhIGZ1bGwgcmVzZXQ7IGNhbGxlcnMgdGhh
dCBtdXN0IHByZXNlcnZlDQo+ID4gPiArICogaW4tZmxpZ2h0IHRpbWVzdGFtcHMgY2xlYXIgaW5k
aXZpZHVhbCBpbmRpY2VzIHZpYSBpY2VfY2xlYXJfcGh5X3RzdGFtcCgpLg0KPiA+ID4gKyAqDQo+
ID4gPiArICogSG9sZHMgdHhfdHN0YW1wX2xvY2sgc28gdGhpcyBmdWxsLXBvcnQgc3dlZXAgZG9l
cyBub3QgaW50ZXJsZWF2ZSB3aXRoIHRoZQ0KPiA+ID4gKyAqIHBlci1pbmRleCByZWFkcyBpbiBp
Y2VfY2xlYXJfcHRwX3RzdGFtcF9ldGg1NmcoKSBvbiB0aGUgc2FtZSBwb3J0Lg0KPiA+ID4gKyAq
DQo+ID4gPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24g
ZmFpbHVyZSB0byByZWFkIHRoZSBQSFkuDQo+ID4gPiArICovDQo+ID4gPiAraW50IGljZV9wdHBf
Y2xlYXJfdHhfbWVtb3J5X3N0YXR1c19ldGg1Nmcoc3RydWN0IGljZV9odyAqaHcsIHU4IHBvcnQp
DQo+ID4gPiArew0KPiA+ID4gKwl1NjQgdW51c2VkX3RzdGFtcDsNCj4gPiA+ICsJaW50IGVyciA9
IDA7DQo+ID4gPiArCXU4IGlkeDsNCj4gPiA+ICsNCj4gPiA+ICsJbXV0ZXhfbG9jaygmaHctPnB0
cC50eF90c3RhbXBfbG9jayk7DQo+ID4gPiArCWZvciAoaWR4ID0gMDsgaWR4IDwgSU5ERVhfUEVS
X1BPUlQ7IGlkeCsrKSB7DQo+ID4gPiArCQllcnIgPSBpY2VfcmVhZF9wdHBfdHN0YW1wX2V0aDU2
ZyhodywgcG9ydCwgaWR4LCAmdW51c2VkX3RzdGFtcCk7DQo+ID4gPiArCQlpZiAoZXJyKQ0KPiA+
ID4gKwkJCWJyZWFrOw0KPiA+ID4gICAJfQ0KPiA+ID4gKwltdXRleF91bmxvY2soJmh3LT5wdHAu
dHhfdHN0YW1wX2xvY2spOw0KPiA+ID4NCj4gPiA+IC0JcmV0dXJuIDA7DQo+ID4gPiArCXJldHVy
biBlcnI7DQo+ID4gPiAgIH0NCj4gPiA+DQo+ID4gPiAgIC8qKg0KPiA+ID4gQEAgLTEyMDQsMTIg
KzEyNDUsOCBAQCBzdGF0aWMgdm9pZCBpY2VfcHRwX3Jlc2V0X3RzX21lbW9yeV9ldGg1Nmcoc3Ry
dWN0IGljZV9odyAqaHcpDQo+ID4gPiAgIHsNCj4gPiA+ICAgCXVuc2lnbmVkIGludCBwb3J0Ow0K
PiA+ID4NCj4gPiA+IC0JZm9yIChwb3J0ID0gMDsgcG9ydCA8IGh3LT5wdHAubnVtX2xwb3J0czsg
cG9ydCsrKSB7DQo+ID4gPiAtCQlpY2Vfd3JpdGVfcHRwX3JlZ19ldGg1NmcoaHcsIHBvcnQsIFBI
WV9SRUdfVFhfTUVNT1JZX1NUQVRVU19MLA0KPiA+ID4gLQkJCQkJIDApOw0KPiA+ID4gLQkJaWNl
X3dyaXRlX3B0cF9yZWdfZXRoNTZnKGh3LCBwb3J0LCBQSFlfUkVHX1RYX01FTU9SWV9TVEFUVVNf
VSwNCj4gPiA+IC0JCQkJCSAwKTsNCj4gPiA+IC0JfQ0KPiA+ID4gKwlmb3IgKHBvcnQgPSAwOyBw
b3J0IDwgaHctPnB0cC5udW1fbHBvcnRzOyBwb3J0KyspDQo+ID4gPiArCQlpY2VfcHRwX2NsZWFy
X3R4X21lbW9yeV9zdGF0dXNfZXRoNTZnKGh3LCBwb3J0KTsNCj4gPiA+ICAgfQ0KPiA+ID4NCj4g
PiA+ICAgLyoqDQo+ID4gPiBAQCAtNTI3Nyw2ICs1MzE0LDIzIEBAIHN0YXRpYyB2b2lkIGljZV9y
ZWFkX3BoeV90c3RhbXBfZTgzMChjb25zdCBzdHJ1Y3QgaWNlX2h3ICpodywgdTggaWR4LA0KPiA+
ID4gICAJCSAgRklFTERfUFJFUChQSFlfRVhUXzQwQl9MT1dfTSwgbG8pOw0KPiA+ID4gICB9DQo+
ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIGljZV9jbGVhcl9waHlfdHN0YW1wX2U4MzAgLSBD
bGVhciBhIHRpbWVzdGFtcCBmcm9tIHRoZSBFODMwIFBIWQ0KPiA+ID4gKyAqIEBodzogcG9pbnRl
ciB0byB0aGUgSFcgc3RydWN0DQo+ID4gPiArICogQGlkeDogdGhlIHRpbWVzdGFtcCBpbmRleCB0
byBjbGVhcg0KPiA+ID4gKyAqDQo+ID4gPiArICogQ2xlYXIgdGhlIHZhbGlkIGJpdCBmb3IgdGhl
IGdpdmVuIHRpbWVzdGFtcCBpbmRleCBpbiB0aGUgVHggbWVtb3J5IChUU19NRU0pLg0KPiA+ID4g
KyAqIE9uIEU4MzAgZGV2aWNlcyB0aGUgUFJUTUFDX1RTX1RYX01FTV9WQUxJRF9ML0ggcmVnaXN0
ZXJzIGFyZSByZWFkLW9ubHkNCj4gPiA+ICsgKiBtaXJyb3JzIG9mIHRoZSBwZXItZW50cnkgVFhf
VkFMSUQgYml0cyBhbmQgY2Fubm90IGJlIHdyaXR0ZW4uIFRoZSBhY3R1YWwNCj4gPiA+ICsgKiBU
U19NRU0gZW50cnkncyBUWF9WQUxJRCBiaXQgaXMgY2xlYXJlZCBieSByZWFkaW5nIHRoZSBjb3Jy
ZXNwb25kaW5nDQo+ID4gPiArICogUFJUVFNZTl9UWFRJTUVfTC9IIHJlZ2lzdGVycyAocmVhZC10
by1jbGVhcikuDQo+ID4gPiArICovDQo+ID4gPiArc3RhdGljIHZvaWQgaWNlX2NsZWFyX3BoeV90
c3RhbXBfZTgzMChjb25zdCBzdHJ1Y3QgaWNlX2h3ICpodywgdTggaWR4KQ0KPiA+ID4gK3sNCj4g
PiA+ICsJcmQzMihodywgRTgzMF9QUlRUU1lOX1RYVElNRV9IKGlkeCkpOw0KPiA+ID4gKwlyZDMy
KGh3LCBFODMwX1BSVFRTWU5fVFhUSU1FX0woaWR4KSk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+
ID4gICAvKioNCj4gPiA+ICAgICogaWNlX2dldF9waHlfdHhfdHN0YW1wX3JlYWR5X2U4MzAgLSBS
ZWFkIFR4IG1lbW9yeSBzdGF0dXMgcmVnaXN0ZXINCj4gPiA+ICAgICogQGh3OiBwb2ludGVyIHRv
IHRoZSBIVyBzdHJ1Y3QNCj4gPiA+IEBAIC01NzcyLDYgKzU4MjYsOSBAQCBpbnQgaWNlX2NsZWFy
X3BoeV90c3RhbXAoc3RydWN0IGljZV9odyAqaHcsIHU4IGJsb2NrLCB1OCBpZHgpDQo+ID4gPiAg
IAlzd2l0Y2ggKGh3LT5tYWNfdHlwZSkgew0KPiA+ID4gICAJY2FzZSBJQ0VfTUFDX0U4MTA6DQo+
ID4gPiAgIAkJcmV0dXJuIGljZV9jbGVhcl9waHlfdHN0YW1wX2U4MTAoaHcsIGJsb2NrLCBpZHgp
Ow0KPiA+ID4gKwljYXNlIElDRV9NQUNfRTgzMDoNCj4gPiA+ICsJCWljZV9jbGVhcl9waHlfdHN0
YW1wX2U4MzAoaHcsIGlkeCk7DQo+ID4gPiArCQlyZXR1cm4gMDsNCj4gPiA+ICAgCWNhc2UgSUNF
X01BQ19HRU5FUklDOg0KPiA+ID4gICAJCXJldHVybiBpY2VfY2xlYXJfcGh5X3RzdGFtcF9lODJ4
KGh3LCBibG9jaywgaWR4KTsNCj4gPiA+ICAgCWNhc2UgSUNFX01BQ19HRU5FUklDXzNLX0U4MjU6
DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9w
dHBfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmgNCj4g
PiA+IGluZGV4IDE2YjE5ODhlOTkzZC4uYjAwM2UwYWFlOGIxIDEwMDY0NA0KPiA+ID4gLS0tIGEv
ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuaA0KPiA+ID4gKysrIGIv
ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuaA0KPiA+ID4gQEAgLTMw
NCw2ICszMDQsNyBAQCBpbnQgaWNlX3B0cF9jbGVhcl9waHlfb2Zmc2V0X3JlYWR5X2U4Mngoc3Ry
dWN0IGljZV9odyAqaHcpOw0KPiA+ID4gICBpbnQgaWNlX3JlYWRfcGh5X3RzdGFtcChzdHJ1Y3Qg
aWNlX2h3ICpodywgdTggYmxvY2ssIHU4IGlkeCwgdTY0ICp0c3RhbXApOw0KPiA+ID4gICBpbnQg
aWNlX2NsZWFyX3BoeV90c3RhbXAoc3RydWN0IGljZV9odyAqaHcsIHU4IGJsb2NrLCB1OCBpZHgp
Ow0KPiA+ID4gICB2b2lkIGljZV9wdHBfcmVzZXRfdHNfbWVtb3J5KHN0cnVjdCBpY2VfaHcgKmh3
KTsNCj4gPiA+ICtpbnQgaWNlX3B0cF9jbGVhcl90eF9tZW1vcnlfc3RhdHVzX2V0aDU2ZyhzdHJ1
Y3QgaWNlX2h3ICpodywgdTggcG9ydCk7DQo+ID4gPiAgIGludCBpY2VfcHRwX2luaXRfcGhjKHN0
cnVjdCBpY2VfaHcgKmh3KTsNCj4gPiA+ICAgdm9pZCBpY2VfcHRwX2luaXRfaHcoc3RydWN0IGlj
ZV9odyAqaHcpOw0KPiA+ID4gICBpbnQgaWNlX2dldF9waHlfdHhfdHN0YW1wX3JlYWR5KHN0cnVj
dCBpY2VfaHcgKmh3LCB1OCBibG9jaywgdTY0ICp0c3RhbXBfcmVhZHkpOw0KPiA+ID4gZGlmZiAt
LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oIGIvZHJpdmVy
cy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eXBlLmgNCj4gPiA+IGluZGV4IDcxMGM1MTlk
NjcwZC4uZDhjNzNmY2FmYzI1IDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu
ZXQvaW50ZWwvaWNlL2ljZV90eXBlLmgNCj4gPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0
L2ludGVsL2ljZS9pY2VfdHlwZS5oDQo+ID4gPiBAQCAtODg4LDYgKzg4OCwxMyBAQCBlbnVtIGlj
ZV9nbG9iYWxfbGlua190b3BvIHsNCj4gPiA+DQo+ID4gPiAgIHN0cnVjdCBpY2VfcHRwX2h3IHsN
Cj4gPiA+ICAgCXVuaW9uIGljZV9waHlfcGFyYW1zIHBoeTsNCj4gPiA+ICsJLyogU2VyaWFsaXpl
cyBldGg1NmcgVHggdGltZXN0YW1wLW1lbW9yeSByZWFkcyAodGhlIHBlci1pbmRleA0KPiA+ID4g
KwkgKiB0aW1lc3RhbXAgZW50cmllcywgbm90IHRoZSBUWF9NRU1PUllfU1RBVFVTIHJlZ2lzdGVy
cykuIFJlYWRpbmcgYW4NCj4gPiA+ICsJICogZW50cnkgYXV0by1jbGVhcnMgaXRzIHRzX21lbW9y
eV9zdGF0dXMgYml0IGFzIGEgc2lkZSBlZmZlY3QsIHNvIHRoZQ0KPiA+ID4gKwkgKiBwZXItaW5k
ZXggYW5kIGZ1bGwtcG9ydCBjbGVhciBwYXRocyBtdXN0IG5vdCBpbnRlcmxlYXZlIG9uIHRoZSBz
YW1lDQo+ID4gPiArCSAqIHBvcnQgb3IgYSBiaXQgY291bGQgcmUtbGF0Y2ggdGhlIGludGVycnVw
dC4NCj4gPiA+ICsJICovDQo+ID4gPiArCXN0cnVjdCBtdXRleCB0eF90c3RhbXBfbG9jazsNCj4g
PiA+ICAgCXU4IG51bV9scG9ydHM7DQo+ID4gPiAgIAl1OCBwb3J0c19wZXJfcGh5Ow0KPiA+ID4g
ICB9Ow0KDQo=