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=