RE: Earlier tsc init patch (was RE: [PATCH v3] printk: fix zero-valued printk timestamps in early boot)

"Bird, Tim" <[email protected]> Tue, 7 Apr 2026 20:34:39 +0000
Newsgroups org.kernel.vger.linux-embedded,org.kernel.vger.kvm,org.kernel.vger.linux-kernel
Message-ID <MW5PR13MB5632C89C5782161177101726FD5AA@MW5PR13MB5632.namprd13.prod.outlook.com>
VGhvbWFzLA0KDQpUaGFua3MgZm9yIHBvc3RpbmcgdGhpcyBQb0MgcGF0Y2guICBJIGZvdW5kIHRo
ZSBjb2RlIGludGVyZXN0aW5nIGFuZCBpbmZvcm1hdGl2ZS4NClBsZWFzZSBzZWUgbXkgY29tbWVu
dHMgYmVsb3cuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVGhvbWFz
IEdsZWl4bmVyIDx0Z2x4QGtlcm5lbC5vcmc+DQo+IFRpbSENCj4gDQo+IE9uIFNhdCwgTWFyIDI4
IDIwMjYgYXQgMjI6NTksIFRob21hcyBHbGVpeG5lciB3cm90ZToNCj4gPiBUaGUgb25seSBjbGVh
biB3YXkgdG8gc29sdmUgdGhpcyBjbGVhbmx5IGlzIG1vdmluZyB0aGUgc2NoZWQgY2xvY2sNCj4g
PiBpbml0aWFsaXphdGlvbiB0byB0aGUgZWFybGllc3QgcG9pbnQgcG9zc2libGUgYW5kIGFjY2Vw
dGluZyB0aGF0IGR1ZSB0bw0KPiA+IGhhcmR3YXJlLCBlbnVtZXJhdGlvbiBhbmQgdmlydHVhbGl6
YXRpb24gY29uc3RyYWludHMgdGhpcyBwb2ludCBtaWdodCBiZQ0KPiA+IHN1Ym9wdGltYWwuIEV2
ZXJ5dGhpbmcgZWxzZSBpcyBqdXN0IGFuIGF0dGVtcHQgdG8gZGVmeSByZWFsaXR5Lg0KPiANCj4g
QXMgdGhlIHdoZWF0aGVyIHdhcyBsb3VzeSwgSSBzYXQgZG93biBmb3IgYSBjb3VwbGUgb2YgaG91
cnMgYW5kDQo+IGltcGxlbWVudGVkIHRoZSBvYnZpb3VzbHkgaW5jb21wbGV0ZSBQb0MgYmVsb3cg
Zm9yIGlsbHVzdHJhdGlvbi4NCj4gDQo+IEFzIHRoZSBGSVhNRSBjb21tZW50IGluIHRzY19lYXJs
eV9ib290X3NldHVwKCkgdGVsbHMgY2xlYXJseSwgdGhpcyBpcyBmYXINCj4gZnJvbSBjb21wbGV0
ZSBhbmQgbmVlZHMgd2F5IG1vcmUgdGhvdWdodHMgYW5kIHNjcnV0aW55LCBidXQgaXQncyBnb29k
DQo+IGVub3VnaCB0byBwcm92ZSB0aGUgcG9pbnQ6DQo+IA0KPiBbICAgIDAuMDAwMDE5XSB0c2M6
IEJvb3Qgc2NoZWQgY2xvY2sgZW5hYmxlZA0KPiANCj4gQXMgZWFybHkgYXMgcG9zc2libGUsIGJ1
dCB3aXRoIGF0IGxlYXN0IHRoZSBtaW5pbWFsIHNhZmUgZ3VhcmRzIGluIHBsYWNlLg0KPiANCj4g
WyAgICAwLjAwMDA0MV0gTGludXggdmVyc2lvbiA3LjAuMC1yYzUrICh0Z2x4QHRnbHgtcGxhZHQp
IChnY2MgKERlYmlhbiAxNC4yLjAtMTkpIDE0LjIuMCwgR05VIGxkIChHTlUgQmludXRpbHMgZm9y
IERlYmlhbikgMi40NCkgIzg5MyBTTVANCj4gUFJFRU1QVF9EWU5BTUlDIFN1biBNYXIgMjkgMjE6
Mzg6MDggQ0VTVCAyMDI2DQo+IFsgICAgMC4wMDAwNDNdIENvbW1hbmQgbGluZTogQk9PVF9JTUFH
RT0vYm9vdC92bWxpbnV6LTcuMC4wLXJjNSsgcm9vdD1VVUlEPWZhNDRkNTAxLTE3MTYtNDAyYS04
NjAyLTYzMTVjMzE2NmY3YiBybyBjb25zb2xlPXR0eTANCj4gY29uc29sZT10dHlTMCwxMTUyMDBu
OCBmdHJhY2VfZHVtcF9vbl9vb3BzIGVhcmx5cHJpbnRrPXR0eVMwLDExNTIwMG44IHRzY19lYXJs
eV9raHo9MjA5NTA3MCBuby1rdm1jbG9jaw0KPiANCj4gICAgMSkgdHNjX2Vhcmx5X2toeiBpcyBy
ZXF1aXJlZCBiZWNhdXNlIEtWTSBkb2VzIG5vdCBwcm92aWRlIHRoZSBmcmVxdWVuY3kNCj4gICAg
ICAgbGVhZi4NCj4gDQo+ICAgIDIpIG5vLWt2bWNsb2NrIGlzIHJlcXVpcmVkIGJlY2F1c2UgS1ZN
IHRoaW5rcyBpdCBpcyBtb3JlIGltcG9ydGFudCB0aGFuDQo+ICAgICAgIGV2ZXJ5dGhpbmcgZWxz
ZS4NCj4gDQo+IEJvdGggaXNzdWVzIGFyZSBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgcHJv
YmxlbSBhdCBoYW5kLg0KDQpJIGRvbid0IHJlYWxseSB3YW50IHRvIGFkZCBtb3JlIGNvbXBsZXhp
dHkgdG8gdGhlIGJvb3QgY29kZSwgb3IgY29tcGxpY2F0ZSBhbnkgb3RoZXIgdGltaW5nDQptZWNo
YW5pc21zICBpbiB0aGUga2VybmVsLCBqdXN0IHRvIGluc3RydW1lbnQgYSBmZXcgZWFybHkgcHJp
bnRrcy4NCkFkZGluZyBhZGRpdGlvbmFsIGNvZGUsIGNvbW1hbmQgbGluZSB2YXJpYWJsZXMsIGV0
Yy4gaXMgYW50aXRoZXRpY2FsIHRvIHRoZSBnb2FsIG9mIHJlZHVjaW5nIGJvb3QgdGltZQ0KYW5k
IHJlZHVjaW5nIHRlY2huaWNhbCBkZWJ0Lg0KDQpUaGUgaW5zdHJ1bWVudGF0aW9uIHRoYXQgSSB3
YW50IHRvIGFkZCBpcyBmb3IgcHJpbnRrcyB0aGF0IGFyZSBjdXJyZW50bHkgc2hvd2luZyBhcyB6
ZXJvLCB3aGlsZQ0KYWxzbyBhbGxvd2luZyB0byBnZXQgdXNlZnVsIHRpbWluZyBkYXRhIG9uIHRl
bXBvcmFyeSBwcmludGtzIGluIHRoYXQgZWFybHkgcmVnaW9uIG9mIGJvb3QuDQoNCj4gDQo+IFsg
ICAgMC4wMDk0MTVdIEJJT1MtcHJvdmlkZWQgcGh5c2ljYWwgUkFNIG1hcDoNCj4gWyAgICAwLjAw
OTQxNl0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwMDAwMDAwMC0weDAwMDAwMDAwMDAwOWZi
ZmZdIFN5c3RlbSBSQU0NCj4gLi4uDQo+IFsgICAgMC4wMDk0NzNdIHByaW50azogbGVnYWN5IGJv
b3Rjb25zb2xlIFtlYXJseXNlcjBdIGVuYWJsZWQNCj4gLi4uDQo+IFsgICAgMC4wMjEwMzddIEh5
cGVydmlzb3IgZGV0ZWN0ZWQ6IEtWTQ0KPiANCj4gV2l0aG91dCAnbm8ta3ZtY2xvY2snIEtWTSB3
b3VsZCB0YWtlIG92ZXIgc2NoZWQgY2xvY2sgYW5kIHJlc2V0IHNjaGVkDQo+IGNsb2NrIHRpbWUg
dG8gMCBiZWNhdXNlIEtWTS4uLiBUcml2aWFsIHByb2JsZW0gdG8gYmUgc29sdmVkIGFuZCBsZWZ0
IGFzDQo+IGFuIGV4ZXJjaXNlIGZvciB0aGUgcmVhZGVyLg0KPiANCj4gWyAgICAwLjAyMTI1Nl0g
bGFzdF9wZm4gPSAweDdmZmRiIG1heF9hcmNoX3BmbiA9IDB4NDAwMDAwMDAwDQo+IFsgICAgMC4w
NTE0MjldIHRzYzogRmFzdCBUU0MgY2FsaWJyYXRpb24gdXNpbmcgUElUDQo+IFsgICAgMC4wNTE2
OTldIHRzYzogRGV0ZWN0ZWQgMjA5NC44MDggTUh6IHByb2Nlc3Nvcg0KPiBbICAgIDAuMDUxOTkw
XSB0c2M6IERldGVjdGVkIDIwOTUuMDcwIE1IeiBUU0MNCj4gDQo+IFRoYXQncyBpbiB0c2NfZWFy
bHlfaW5pdCgpIHdoaWNoIGVuYWJsZXMgdGhlIHNjaGVkIGNsb2NrIHN0YXRpYyBrZXkuDQo+IA0K
PiBbICAgIDAuMDUyODcxXSBlODIwOiB1cGRhdGUgW21lbSAweDAwMDAwMDAwLTB4MDAwMDBmZmZd
IFN5c3RlbSBSQU0gPT0+IGRldmljZSByZXNlcnZlZA0KPiANCj4gVW5zdXJwcmlzaW5nbHkgdGlt
ZSBjb250aW51ZXMgd2l0aG91dCBhIGdhcCwganVtcGluZyBiYWNrd2FyZHMgb3Igd2hhdGV2ZXIu
DQoNClRoYXQncyBub3QgYSBwcm9ibGVtIEkgY2FyZSBhYm91dC4NCg0KPiANCj4gSWYgeW91IHdh
bnQgdG8gaGF2ZSBlYXJseSB0aW1lc3RhbXBzIHRoZW4geW91IGhhdmUgdG8gZ28gdGhyb3VnaCB0
aGUgbG93DQo+IGxldmVsIGNvZGUgb24gZXZlcnkgYXJjaGl0ZWN0dXJlIGFuZCBkbyB0aGUgcHJv
cGVyIHNhbml0eSBjaGVja3MsDQo+IGVudW1lcmF0aW9ucywgZXRjLiBubyBtYXR0ZXIgd2hhdC4g
VGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgeW91IGNhbg0KPiB1c2UgYW55IGNsb2NrIHVuY29u
ZGl0aW9uYWxseSBkdXJpbmcgdmVyeSBlYXJseSBib290Lg0KDQpGb3IgdGhlIFRTQyBvbiB4ODZf
NjQgYW5kIGNudHZjdF9lbDAgb24gYXJtNjQsIEkgdGhpbmsgeW91IGFyZSBpbmNvcnJlY3QuDQpJ
biB0aG9zZSBhcmNoaXRlY3R1cmVzIEkgYmVsaWV2ZSAgeW91IGFyZSBndWFyYW50ZWVkIHRoYXQg
dGhlIGluc3RydWN0aW9uIHRvDQpnZXQgdGhlIGN5Y2xlIGNvdW50ZXIgd2lsbCB3b3JrIHRvIHJl
dHJpZXZlIGEgY3ljbGVzIHZhbHVlIGJlZm9yZSBhbnkgaW5pdGlhbGl6YXRpb24NCmNvZGUgaW4g
dGhlIGtlcm5lbCwgZXZlbiB1bmRlciBlbXVsYXRpb24gb3IgdmlydHVhbGl6YXRpb24uICBCdXQg
ZXZlbiBpZiBub3QsIEkgZG8gbm90DQpiZWxpZXZlIGl0IG1hdHRlcnMgKHNlZSBiZWxvdykuDQoN
Ck5vdywgaW4gb3JkZXIgdG8gZ2V0IHRoZSBjbG9jayBmcmVxdWVuY3kgKGFuZCB0aHVzIGNvbnZl
cnQNCnRvIGEgdW5pdHMvc2VjIHRpbWVzdGFtcCB2YWx1ZSksIGFkZGl0aW9uYWwgd29yayBtYXkg
YmUgcmVxdWlyZWQgKGFzIHNob3duIGluIHlvdXIgUE9DKQ0KT1IgeW91IG5lZWQgc29tZSBtZWNo
YW5pc20gdG8gcHJvdmlkZSB0aGUgZnJlcXVlbmN5IHRvIHRoZSBrZXJuZWwNCihzdWNoIGFzIGEg
Y29tbWFuZCBsaW5lIG9wdGlvbiBvciBrZXJuZWwgY29uZmlnIHBhcmFtZXRlcikuDQoNCkhvd2V2
ZXIsIGFsbCB0aGlzIGlzIG1vb3QuDQpJIGJlbGlldmUgaWYgYSBwbGF0Zm9ybSBkZXZlbG9wZXIg
Y2FuJ3QgZ3VhcmFudGVlIHRoYXQgdGhlIGNsb2NrIHRoZXkgZGVjaWRlDQp0byB1c2UgZm9yIHRo
aXMgd2lsbCBiZSBmdW5jdGlvbmFsIHdoZW4gdGhlIGtlcm5lbCBzdGFydHMgKGJlY2F1c2UgZWl0
aGVyIHRoZQ0KaGFyZHdhcmUgb3IgdGhlIHByZS1rZXJuZWwgZmlybXdhcmUgZG9lc24ndCBzdGFy
dCBpdCBhdXRvbWF0aWNhbGx5IGJlZm9yZQ0KdGhlIGtlcm5lbCBsb2FkcyksIHRoZW4gdGhlIGRl
dmVsb3BlciBzaG91bGQgbm90IHVzZSBteSBwcm9wb3NlZCBlYXJseQ0KdGltZXMgZmVhdHVyZS4N
Cg0KSSBkb24ndCB0aGluayB0aGlzIGZlYXR1cmUgaGFzIGFueSB2YWx1ZSBmb3IgcmVndWxhciBw
cm9kdWN0aW9uIGtlcm5lbHMsDQphbmQgaXQgaXMgb25seSBpbnRlbmRlZCB0byBiZSB1c2VmdWwg
Zm9yIGJvb3QtdGltZSByZXNlYXJjaGVycyBhbmQgZGV2ZWxvcGVycy4NCkluZGVlZCwgaXQncyBw
cm9iYWJseSBiZXR0ZXIgaWYgaXQgaXMgbGVmdCB0dXJuZWQgb2ZmIGZvciBwcm9kdWN0aW9uIG9y
IGRpc3RybyBrZXJuZWxzLg0KDQo+IA0KPiBBcyB5b3UgaGF2ZSB0byBkbyB0aGF0IGFueXdheSwg
dGhlcmUgaXMgX3plcm9fIGp1c3RpZmljYXRpb24gZm9yIGFuDQo+IGV4dHJhIGZhY2lsaXR5IHNp
ZGUgc3RlcHBpbmcgc2NoZWQgY2xvY2ssIHdoaWNoIHdvdWxkIGp1c3QgY3JlYXRlDQo+IGFub3Ro
ZXIgcGlsZSBvZiB0ZWNobmljYWwgZGVidC4NCg0KSSB0aGluayB0aGlzIFBPQyBhZGRzIG11Y2gg
bW9yZSBjb21wbGV4aXR5IGFuZCB0ZWNobmljYWwgZGVidA0KdGhhbiBhbnkgdmVyc2lvbiBvZiBt
eSBlYXJseS10aW1lcyBwYXRjaC4NCg0KU2luY2UgeW91IHdhbnQgdG8gZ2V0IHJpZCBvZiB0ZWNo
bmljYWwgZGVidCBvbiB0aGUgdXNlIG9mIGdldF9jeWNsZXMoKSwNCkknbGwgcmUtd29yayB0aGUg
cGF0Y2ggdG8gZWxpbWluYXRlIHVzZSBvZiB0aGF0IGZ1bmN0aW9uLCBhbmQgcmV2ZXJ0DQp0byBz
b21ldGhpbmcgc2ltaWxhciB0byBteSBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIHBhdGNoIHRoYXQg
d2FzIGxlc3MNCmNvbXBsaWNhdGVkLg0KDQo+IA0KPiBRdWl0ZSB0aGUgY29udHJhcnksIEknbSBn
b2luZyB0byBnZXQgcmlkIG9mIHRlY2huaWNhbCBkZWJ0Og0KPiANCj4gICBUaGUgZ2V0X2N5Y2xl
cygpIHJlbGF0ZWQgY2hhbmdlcyBpbiB0c2MuaCBhcmUgZ29pbmcgdG8gZW5kIHVwIGluIGENCj4g
ICBvYnZpb3VzbHkgcmV2aXNlZCBmb3JtYWwgcGF0Y2ggdG9tb3Jyb3cgYXMgdGhlcmUgaXMgZXhh
Y3RseSBfemVyb18NCj4gICByZXF1aXJlbWVudCB0byBwcm92aWRlIHRoaXMgYXMgYSBmdW5jdGlv
bmFsIGludGVyZmFjZS4NCj4gDQo+ICAgMSkgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW4g
YXNtLWdlbmVyaWMgcmV0dXJucyAwDQo+IA0KPiAgICAgIEVyZ28gYW55IGNvZGUgZGVwZW5kaW5n
IG9uIGEgZnVuY3Rpb25hbCBpbXBsZW1lbnRhdGlvbiBpcyBicm9rZW4NCj4gICAgICBieSBkZWZp
bml0aW9uLg0KPiANCj4gICAyKSBUaGUgb3BzL2N5Y2xlcyBtZXRyaWNzIGFyZSBhcyBib2d1cyBh
cyB0aGUgaW5mYW1vdXMgQm9nb01JUFMgbWV0cmljcw0KPiANCj4gICAgICBUaGUgImN5Y2xlIiBj
b3VudGVyIHJ1bnMgb24gYWxtb3N0IGFsbCBjb250ZW1wb3JhcnkgQ1BVcyBhdCBhIGZpeGVkDQo+
ICAgICAgZnJlcXVlbmN5LCB3aGljaCBpcyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgYWN0
dWFsIENQVQ0KPiAgICAgIGZyZXF1ZW5jeSBhbmQgdGhlcmVmb3JlIHRvIHRoZSBhY3R1YWwgQ1BV
IGN5Y2xlcy4NCj4gDQo+ICAgICAgVGhlIG9ubHkgcmVhbGlzdGljIG1ldHJpYyBpcyBvcHMvc2Vj
IGFuZCBub3RoaW5nIGVsc2UgYW5kIHRoYXQgY2FuDQo+ICAgICAgYmUgdHJpdmlhbGx5IGFjaGll
dmVkIGJ5IHVzaW5nIHRoZSBnZW5lcmljIHRpbWUgZ2V0dGVyIGludGVyZmFjZXMuDQo+IA0KPiAg
ICAgIFRob3NlIG1pZ2h0IGVuZCB1cCByZXN1bHRpbmcgaW4gYm9ndXMgYmVuY2htYXJrIHJlc3Vs
dHMgdG9vIGlmIHRoZQ0KPiAgICAgIHVuZGVybHlpbmcgY2xvY2tzb3VyY2UgaXMgamlmZmllcywg
YnV0IHRoYXQncyBhZ2FpbiBhIG1hdHRlciBvZg0KPiAgICAgIGFjY2VwdGluZyByZWFsaXR5Lg0K
PiANCj4gICAgICBJZiBwZW9wbGUgcmVhbGx5IG1hbmRhdGUgdGhhdCBvcHMvYm9nb19jeWNsZXMg
aXMgcmVxdWlyZWQgZm9yIHRoZQ0KPiAgICAgIHZlcnkgd3JvbmcgcmVhc29ucywgdGhlbiBJJ20g
aGFwcHkgdG8gYnJpbmcgaXQgYmFjayB3aXRoIGEgZ2xvYmFsDQo+ICAgICAgbmFtZSBjaGFuZ2Ug
ZnJvbSBnZXRfY3ljbGVzKCkgdG8gZ2V0X2JvZ29fY3ljbGVzKCkgd2hpY2ggZXhjbHVkZXMNCj4g
ICAgICBpdCBmcm9tIGFueSBzZXJpb3VzIHVzYWdlIGluY2x1ZGluZyBwcmludGsuDQo+IA0KPiBU
aGFua3MsDQo+IA0KPiAgICAgICAgIHRnbHgNCj4gLS0tDQo+ICBhcmNoL3g4Ni9pbmNsdWRlL2Fz
bS90c2MuaCAgICAgICAgfCAgIDExICsrLS0NCj4gIGFyY2gveDg2L2tlcm5lbC9wbGF0Zm9ybS1x
dWlya3MuYyB8ICAgIDINCj4gIGFyY2gveDg2L2tlcm5lbC90c2MuYyAgICAgICAgICAgICB8ICAg
OTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0NCj4gIDMgZmlsZXMgY2hh
bmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pDQo+IA0KPiAtLS0gYS9hcmNo
L3g4Ni9pbmNsdWRlL2FzbS90c2MuaA0KPiArKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90c2Mu
aA0KPiBAQCAtNzYsMTAgKzc2LDcgQEAgZXh0ZXJuIHZvaWQgZGlzYWJsZV9UU0Modm9pZCk7DQo+
IA0KPiAgc3RhdGljIGlubGluZSBjeWNsZXNfdCBnZXRfY3ljbGVzKHZvaWQpDQo+ICB7DQo+IC0J
aWYgKCFJU19FTkFCTEVEKENPTkZJR19YODZfVFNDKSAmJg0KPiAtCSAgICAhY3B1X2ZlYXR1cmVf
ZW5hYmxlZChYODZfRkVBVFVSRV9UU0MpKQ0KPiAtCQlyZXR1cm4gMDsNCj4gLQlyZXR1cm4gcmR0
c2MoKTsNCj4gKwlyZXR1cm4gMDsNCg0KRWxpbWluYXRpbmcgZ2V0X2N5Y2xlcygpIGNvbXBsZXRl
bHkgc2VlbXMgbGlrZSBhbiBvdmVyLXJlYWN0aW9uIHRvIG15IHBhdGNoLg0KQnV0IGl0IHNvdW5k
cyBsaWtlIHNvbWV0aGluZyB5b3UndmUgd2FudGVkIHRvIGVsaW1pbmF0ZSBmb3IgYSB3aGlsZSBu
b3csDQphbmQgSSB3b3VsZG4ndCBzdGFuZCBpbiB5b3VyIHdheSwgb3IgY29udHJpYnV0ZSB0byB0
aGUgdGVjaG5pY2FsIGRlYnQgYXNzb2NpYXRlZA0Kd2l0aCBpdCBieSB1c2luZyBpdCBpbiBteSBw
cm9wb3NhbHMuICBCeSBteSBjb3VudCB0aGVyZSBhcmUgYWJvdXQgODAgY3VycmVudCB1c2VycyBv
Zg0KZ2V0X2N5Y2xlcygpIG91dHNpZGUgb2YgYXJjaC1zcGVjaWZpYyBjb2RlLCBpbiB0aGUgNy4w
LXJjNiBrZXJuZWwuDQoNCj4gIH0NCj4gICNkZWZpbmUgZ2V0X2N5Y2xlcyBnZXRfY3ljbGVzDQo+
IA0KPiBAQCAtMTE0LDYgKzExMSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdHNjX3ZlcmlmeV90
c2NfYWRqdXN0DQo+ICBzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tfdHNjX3N5bmNfdGFyZ2V0KHZv
aWQpIHsgfQ0KPiAgI2VuZGlmDQo+IA0KPiArI2lmIGRlZmluZWQoQ09ORklHX1g4Nl9UU0MpICYm
IGRlZmluZWQoQ09ORklHX1g4Nl82NCkNCj4gK3ZvaWQgdHNjX2Vhcmx5X2Jvb3Rfc2V0dXAodm9p
ZCk7DQo+ICsjZWxzZQ0KPiArc3RhdGljIGlubGluZSB2b2lkIHRzY19lYXJseV9ib290X3NldHVw
KHZvaWQpIHsgfQ0KPiArI2VuZGlmDQo+ICsNCj4gIGV4dGVybiBpbnQgbm90c2Nfc2V0dXAoY2hh
ciAqKTsNCj4gIGV4dGVybiB2b2lkIHRzY19zYXZlX3NjaGVkX2Nsb2NrX3N0YXRlKHZvaWQpOw0K
PiAgZXh0ZXJuIHZvaWQgdHNjX3Jlc3RvcmVfc2NoZWRfY2xvY2tfc3RhdGUodm9pZCk7DQo+IC0t
LSBhL2FyY2gveDg2L2tlcm5lbC9wbGF0Zm9ybS1xdWlya3MuYw0KPiArKysgYi9hcmNoL3g4Ni9r
ZXJuZWwvcGxhdGZvcm0tcXVpcmtzLmMNCj4gQEAgLTMyLDYgKzMyLDggQEAgdm9pZCBfX2luaXQg
eDg2X2Vhcmx5X2luaXRfcGxhdGZvcm1fcXVpcg0KPiANCj4gIAlpZiAoeDg2X3BsYXRmb3JtLnNl
dF9sZWdhY3lfZmVhdHVyZXMpDQo+ICAJCXg4Nl9wbGF0Zm9ybS5zZXRfbGVnYWN5X2ZlYXR1cmVz
KCk7DQo+ICsNCj4gKwl0c2NfZWFybHlfYm9vdF9zZXR1cCgpOw0KPiAgfQ0KPiANCj4gIGJvb2wg
X19pbml0IHg4Nl9wbnBiaW9zX2Rpc2FibGVkKHZvaWQpDQo+IC0tLSBhL2FyY2gveDg2L2tlcm5l
bC90c2MuYw0KPiArKysgYi9hcmNoL3g4Ni9rZXJuZWwvdHNjLmMNCj4gQEAgLTE4LDYgKzE4LDcg
QEANCj4gICNpbmNsdWRlIDxsaW51eC9zdGF0aWNfY2FsbC5oPg0KPiANCj4gICNpbmNsdWRlIDxh
c20vY3B1aWQvYXBpLmg+DQo+ICsjaW5jbHVkZSA8YXNtL2NtZGxpbmUuaD4NCj4gICNpbmNsdWRl
IDxhc20vaHBldC5oPg0KPiAgI2luY2x1ZGUgPGFzbS90aW1lci5oPg0KPiAgI2luY2x1ZGUgPGFz
bS92Z3RvZC5oPg0KPiBAQCAtNDgsNiArNDksNyBAQCBFWFBPUlRfU1lNQk9MKHRzY19raHopOw0K
PiAgICovDQo+ICBzdGF0aWMgaW50IF9fcmVhZF9tb3N0bHkgdHNjX3Vuc3RhYmxlOw0KPiAgc3Rh
dGljIHVuc2lnbmVkIGludCBfX2luaXRkYXRhIHRzY19lYXJseV9raHo7DQo+ICtzdGF0aWMgYm9v
bCB0c2NfZWFybHlfYm9vdF9lbmFibGVkIF9fcm9fYWZ0ZXJfaW5pdDsNCj4gDQo+ICBzdGF0aWMg
REVGSU5FX1NUQVRJQ19LRVlfRkFMU0VfUk8oX191c2VfdHNjKTsNCj4gDQo+IEBAIC0yMDIsMTIg
KzIwNCwxMiBAQCBzdGF0aWMgdm9pZCBzZXRfY3ljMm5zX3NjYWxlKHVuc2lnbmVkIGxvDQo+ICAv
Kg0KPiAgICogSW5pdGlhbGl6ZSBjeWMybnMgZm9yIGJvb3QgY3B1DQo+ICAgKi8NCj4gLXN0YXRp
YyB2b2lkIF9faW5pdCBjeWMybnNfaW5pdF9ib290X2NwdSh2b2lkKQ0KPiArc3RhdGljIHZvaWQg
X19pbml0IGN5YzJuc19pbml0X2Jvb3RfY3B1KHVuc2lnbmVkIGxvbmcga2h6KQ0KPiAgew0KPiAg
CXN0cnVjdCBjeWMybnMgKmMybiA9IHRoaXNfY3B1X3B0cigmY3ljMm5zKTsNCj4gDQo+ICAJc2Vx
Y291bnRfbGF0Y2hfaW5pdCgmYzJuLT5zZXEpOw0KPiAtCV9fc2V0X2N5YzJuc19zY2FsZSh0c2Nf
a2h6LCBzbXBfcHJvY2Vzc29yX2lkKCksIHJkdHNjKCkpOw0KPiArCV9fc2V0X2N5YzJuc19zY2Fs
ZShraHosIHNtcF9wcm9jZXNzb3JfaWQoKSwgcmR0c2MoKSk7DQo+ICB9DQo+IA0KPiAgLyoNCj4g
QEAgLTIzMSwxNyArMjMzLDI0IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBjeWMybnNfaW5pdF9zZWNv
bmRhcnkNCj4gIAl9DQo+ICB9DQo+IA0KPiArc3RhdGljIF9fYWx3YXlzX2lubGluZSB1NjQgX19u
YXRpdmVfc2NoZWRfY2xvY2sodm9pZCkNCj4gK3sNCj4gKwl1NjQgdHNjX25vdyA9IHJkdHNjKCk7
DQo+ICsNCj4gKwkvKiByZXR1cm4gdGhlIHZhbHVlIGluIG5zICovDQo+ICsJcmV0dXJuIF9fY3lj
bGVzXzJfbnModHNjX25vdyk7DQo+ICt9DQo+ICsNCj4gIC8qDQo+ICAgKiBTY2hlZHVsZXIgY2xv
Y2sgLSByZXR1cm5zIGN1cnJlbnQgdGltZSBpbiBuYW5vc2VjIHVuaXRzLg0KPiAgICovDQo+ICBu
b2luc3RyIHU2NCBuYXRpdmVfc2NoZWRfY2xvY2sodm9pZCkNCj4gIHsNCj4gLQlpZiAoc3RhdGlj
X2JyYW5jaF9saWtlbHkoJl9fdXNlX3RzYykpIHsNCj4gLQkJdTY0IHRzY19ub3cgPSByZHRzYygp
Ow0KPiArCWlmIChzdGF0aWNfYnJhbmNoX2xpa2VseSgmX191c2VfdHNjKSkNCj4gKwkJcmV0dXJu
IF9fbmF0aXZlX3NjaGVkX2Nsb2NrKCk7DQo+IA0KPiAtCQkvKiByZXR1cm4gdGhlIHZhbHVlIGlu
IG5zICovDQo+IC0JCXJldHVybiBfX2N5Y2xlc18yX25zKHRzY19ub3cpOw0KPiAtCX0NCj4gKwlp
ZiAodHNjX2Vhcmx5X2Jvb3RfZW5hYmxlZCkNCj4gKwkJcmV0dXJuIF9fbmF0aXZlX3NjaGVkX2Ns
b2NrKCk7DQo+IA0KPiAgCS8qDQo+ICAJICogRmFsbCBiYWNrIHRvIGppZmZpZXMgaWYgdGhlcmUn
cyBubyBUU0MgYXZhaWxhYmxlOg0KPiBAQCAtMzcxLDEyICszODAsMTIgQEAgc3RhdGljIHU2NCB0
c2NfcmVhZF9yZWZzKHU2NCAqcCwgaW50IGhwZQ0KPiAgCWludCBpOw0KPiANCj4gIAlmb3IgKGkg
PSAwOyBpIDwgTUFYX1JFVFJJRVM7IGkrKykgew0KPiAtCQl0MSA9IGdldF9jeWNsZXMoKTsNCj4g
KwkJdDEgPSByZHRzYygpOw0KPiAgCQlpZiAoaHBldCkNCj4gIAkJCSpwID0gaHBldF9yZWFkbChI
UEVUX0NPVU5URVIpICYgMHhGRkZGRkZGRjsNCj4gIAkJZWxzZQ0KPiAgCQkJKnAgPSBhY3BpX3Bt
X3JlYWRfZWFybHkoKTsNCj4gLQkJdDIgPSBnZXRfY3ljbGVzKCk7DQo+ICsJCXQyID0gcmR0c2Mo
KTsNCj4gIAkJaWYgKCh0MiAtIHQxKSA8IHRocmVzaCkNCj4gIAkJCXJldHVybiB0MjsNCj4gIAl9
DQo+IEBAIC00NjgsMTMgKzQ3NywxMyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBwaXRfY2FsaWJy
YXRlX3RzYyh1DQo+ICAJb3V0YihsYXRjaCAmIDB4ZmYsIDB4NDIpOw0KPiAgCW91dGIobGF0Y2gg
Pj4gOCwgMHg0Mik7DQo+IA0KPiAtCXRzYyA9IHQxID0gdDIgPSBnZXRfY3ljbGVzKCk7DQo+ICsJ
dHNjID0gdDEgPSB0MiA9IHJkdHNjKCk7DQo+IA0KPiAgCXBpdGNudCA9IDA7DQo+ICAJdHNjbWF4
ID0gMDsNCj4gIAl0c2NtaW4gPSBVTE9OR19NQVg7DQo+ICAJd2hpbGUgKChpbmIoMHg2MSkgJiAw
eDIwKSA9PSAwKSB7DQo+IC0JCXQyID0gZ2V0X2N5Y2xlcygpOw0KPiArCQl0MiA9IHJkdHNjKCk7
DQo+ICAJCWRlbHRhID0gdDIgLSB0c2M7DQo+ICAJCXRzYyA9IHQyOw0KPiAgCQlpZiAoKHVuc2ln
bmVkIGxvbmcpIGRlbHRhIDwgdHNjbWluKQ0KPiBAQCAtNTUzLDkgKzU2Miw5IEBAIHN0YXRpYyBp
bmxpbmUgaW50IHBpdF9leHBlY3RfbXNiKHVuc2lnbmUNCj4gIAkJaWYgKCFwaXRfdmVyaWZ5X21z
Yih2YWwpKQ0KPiAgCQkJYnJlYWs7DQo+ICAJCXByZXZfdHNjID0gdHNjOw0KPiAtCQl0c2MgPSBn
ZXRfY3ljbGVzKCk7DQo+ICsJCXRzYyA9IHJkdHNjKCk7DQo+ICAJfQ0KPiAtCSpkZWx0YXAgPSBn
ZXRfY3ljbGVzKCkgLSBwcmV2X3RzYzsNCj4gKwkqZGVsdGFwID0gcmR0c2MoKSAtIHByZXZfdHNj
Ow0KPiAgCSp0c2NwID0gdHNjOw0KPiANCj4gIAkvKg0KPiBAQCAtNzQ1LDE5ICs3NTQsMjMgQEAg
dW5zaWduZWQgbG9uZyBuYXRpdmVfY2FsaWJyYXRlX3RzYyh2b2lkKQ0KPiANCj4gIHN0YXRpYyB1
bnNpZ25lZCBsb25nIGNwdV9raHpfZnJvbV9jcHVpZCh2b2lkKQ0KPiAgew0KPiAtCXVuc2lnbmVk
IGludCBlYXhfYmFzZV9taHosIGVieF9tYXhfbWh6LCBlY3hfYnVzX21oeiwgZWR4Ow0KPiArCXN0
cnVjdCBjcHVpZF9yZWdzIHJlZ3M7DQo+IA0KPiAtCWlmIChib290X2NwdV9kYXRhLng4Nl92ZW5k
b3IgIT0gWDg2X1ZFTkRPUl9JTlRFTCkNCj4gKwkvKiBEbyBpdCBtYW51YWxseSBhcyB0aGlzIGNh
biBiZSBjYWxsZWQgX2JlZm9yZV8gYm9vdF9jcHVfZGF0YSBpcyBpbml0aWFsaXplZCAqLw0KPiAr
CWNwdWlkX2xlYWYoMCwgJnJlZ3MpOw0KPiArCS8qIEludGVsIG9ubHkgKi8NCj4gKwlpZiAocmVn
cy5lYnggIT0gMHg3NTZlNjU0NyAmJiByZWdzLmVjeCAhPSAweDZjNjU3NDZlICYmIHJlZ3MuZWR4
ICE9IDB4NDk2NTZlNjkpDQo+ICAJCXJldHVybiAwOw0KPiANCj4gLQlpZiAoYm9vdF9jcHVfZGF0
YS5jcHVpZF9sZXZlbCA8IENQVUlEX0xFQUZfRlJFUSkNCj4gKwlpZiAocmVncy5lYXggPCBDUFVJ
RF9MRUFGX0ZSRVEpDQo+ICAJCXJldHVybiAwOw0KPiANCj4gLQllYXhfYmFzZV9taHogPSBlYnhf
bWF4X21oeiA9IGVjeF9idXNfbWh6ID0gZWR4ID0gMDsNCj4gKwltZW1zZXQoJnJlZ3MsIDAsIHNp
emVvZigmcmVncykpOw0KPiANCj4gLQljcHVpZChDUFVJRF9MRUFGX0ZSRVEsICZlYXhfYmFzZV9t
aHosICZlYnhfbWF4X21oeiwgJmVjeF9idXNfbWh6LCAmZWR4KTsNCj4gKwljcHVpZF9sZWFmKENQ
VUlEX0xFQUZfRlJFUSwgJnJlZ3MpOw0KPiANCj4gLQlyZXR1cm4gZWF4X2Jhc2VfbWh6ICogMTAw
MDsNCj4gKwkvKiBFQVggY29udGFpbnMgYmFzZSBNSHogKi8NCj4gKwlyZXR1cm4gcmVncy5lYXgg
KiAxMDAwOw0KPiAgfQ0KPiANCj4gIC8qDQo+IEBAIC0xNTEyLDggKzE1MjUsOSBAQCBzdGF0aWMg
dm9pZCBfX2luaXQgdHNjX2VuYWJsZV9zY2hlZF9jbG9jDQo+IA0KPiAgCS8qIFNhbml0aXplIFRT
QyBBREpVU1QgYmVmb3JlIGN5YzJucyBnZXRzIGluaXRpYWxpemVkICovDQo+ICAJdHNjX3N0b3Jl
X2FuZF9jaGVja190c2NfYWRqdXN0KHRydWUpOw0KPiAtCWN5YzJuc19pbml0X2Jvb3RfY3B1KCk7
DQo+ICsJY3ljMm5zX2luaXRfYm9vdF9jcHUodHNjX2toeik7DQo+ICAJc3RhdGljX2JyYW5jaF9l
bmFibGUoJl9fdXNlX3RzYyk7DQo+ICsJdHNjX2Vhcmx5X2Jvb3RfZW5hYmxlZCA9IGZhbHNlOw0K
PiAgfQ0KPiANCj4gIHZvaWQgX19pbml0IHRzY19lYXJseV9pbml0KHZvaWQpDQo+IEBAIC0xNTc2
LDYgKzE1OTAsNDggQEAgdm9pZCBfX2luaXQgdHNjX2luaXQodm9pZCkNCj4gIAlkZXRlY3RfYXJ0
KCk7DQo+ICB9DQo+IA0KPiArLyogT25seSA2NGJpdCBndWFyYW50ZWVzIHRoYXQgQ1BVSUQgaXMg
YXZhaWxhYmxlICovDQo+ICsjaWZkZWYgQ09ORklHX1g4Nl82NA0KPiArdm9pZCBfX2luaXQgdHNj
X2Vhcmx5X2Jvb3Rfc2V0dXAodm9pZCkNCj4gK3sNCj4gKwlzdHJ1Y3QgY3B1aWRfcmVncyByZWdz
Ow0KPiArCXVuc2lnbmVkIGxvbmcga2h6ID0gMDsNCj4gKwljaGFyIG9wdHN0cls2NF07DQo+ICsN
Cj4gKwlpZiAoY21kbGluZV9maW5kX29wdGlvbl9ib29sKGJvb3RfY29tbWFuZF9saW5lLCAibm90
c2MiKSkNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJLy8gRklYTUU6IFRoaXMgbmVlZHMgd2F5IG1v
cmUgc2FuaXR5IGNoZWNrcyB2cy4gdmlydCBldGMuDQo+ICsJaWYgKGNjX3BsYXRmb3JtX2hhcyhD
Q19BVFRSX0dVRVNUX1NOUF9TRUNVUkVfVFNDKSkNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJLy8g
V2h5IGRvbid0IHdlIGhhdmUgcHJvcGVyIGxlYWYgc3RydWN0cyB5ZXQ/DQo+ICsJY3B1aWRfbGVh
ZigwLCAmcmVncyk7DQo+ICsJaWYgKHJlZ3MuZWF4IDwgMSkNCj4gKwkJcmV0dXJuOw0KPiArDQo+
ICsJLyogVFNDIGVuYWJsZWQgaW4gQ1BVSUQ/ICovDQo+ICsJY3B1aWRfbGVhZigxLCAmcmVncyk7
DQo+ICsJaWYgKCEocmVncy5lZHggJiBCSVQoNCkpKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlp
ZiAoY21kbGluZV9maW5kX29wdGlvbihib290X2NvbW1hbmRfbGluZSwgInRzY19lYXJseV9raHoi
LCBvcHRzdHIsIHNpemVvZihvcHRzdHIpKSA+IDApIHsNCj4gKwkJLy8gU2h1dCB1cCBtdXN0IGNo
ZWNrIGJ5IGRvaW5nIGEgcG9pbnRsZXNzIHplcm9pbmcNCj4gKwkJaWYgKGtzdHJ0b3VsKG9wdHN0
ciwgMTAsICZraHopIDwgMCkNCj4gKwkJCWtoeiA9IDA7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKCFr
aHopDQo+ICsJCWtoeiA9IGNwdV9raHpfZnJvbV9jcHVpZCgpOw0KPiArCWlmICgha2h6KQ0KPiAr
CQlyZXR1cm47DQo+ICsNCj4gKwljeWMybnNfaW5pdF9ib290X2NwdShraHopOw0KPiArCXRzY19l
YXJseV9ib290X2VuYWJsZWQgPSB0cnVlOw0KPiArCXByX2luZm8oIkJvb3Qgc2NoZWQgY2xvY2sg
ZW5hYmxlZFxuIik7DQo+ICt9DQo+ICsjZW5kaWYNCj4gKw0KPiAgI2lmZGVmIENPTkZJR19TTVAN
Cj4gIC8qDQo+ICAgKiBDaGVjayB3aGV0aGVyIGV4aXN0aW5nIGNhbGlicmF0aW9uIGRhdGEgY2Fu
IGJlIHJldXNlZC4NCg0KT3ZlcmFsbCwgdGhpcyBjb2RlIGFjaGlldmVzIHRoZSByZXN1bHQgb2Yg
aW5pdGlhbGl6aW5nIGNsb2NrcyBvbiBzb21lDQp4ODZfNjQgcGxhdGZvcm1zIGVhcmxpZXIgKGFu
ZCBtb3Jlc28gd2hlbiBwcm9wZXJseSBjb25maWd1cmVkIHZpYSB0aGUNCmNvbW1hbmQgbGluZSku
ICBUaGlzIGFjaGlldmVzIGEgbG90IG9mIHRoZSB2YWx1ZSBJIHdhcyBsb29raW5nIGZvci4NCg0K
Q29tcGFyZWQgdG8gbXkgc29sdXRpb24sIGl0IHB1dHMgcHJlLXRpbWVrZWVwaW5nIHRpbWVzdGFt
cHMNCmludG8gdGhlIHNhbWUgdGltZSBzZXF1ZW5jZSBzcGFjZSBhcyBzdWJzZXF1ZW50ICJyZWd1
bGFyIiBvbmVzLg0KSG93ZXZlciwgSSBkb24ndCB0aGluayB0aGUgZGlzY29udGludWl0eSBpcyBh
Y3R1YWxseSBhIGJpZyBwcm9ibGVtLg0KDQpUaGlzIFBvQyBkb2VzIGFuIGFkbWlyYWJsZSBqb2Ig
b2YgYWRkcmVzc2luZyB0aGUgcHJvYmxlbSBzcGFjZSBJIGFtIGludGVyZXN0ZWQgaW4sDQpidXQg
YXQgdGhlIGV4cGVuc2Ugb2YgYWRkaW5nIG1vcmUgY29tcGxleGl0eSB0byB0aGUgYm9vdCBzZXF1
ZW5jZS4NCg0KQXQgdGhlIHNhbWUgdGltZSwgaXQgc3RpbGwgbGVhdmVzIGEgYmxpbmQgc3BvdCBp
biB0aGUga2VybmVsIGJvb3R1cCBzZXF1ZW5jZS4NClRoZSBibGluZCBzcG90IGlzIG11Y2ggc2hv
cnRlciwgYnV0IHN0aWxsIGV4aXN0cy4gIEFuZCB0aGUgUG9DcGF0Y2ggaXMgdW5maW5pc2hlZCwN
CmFuZCBzdXBwb3J0cyBvbmx5IG9uZSBhcmNoaXRlY3R1cmUuIEkgd291bGRuJ3QgYXNrIHNvbWVv
bmUgZWxzZSB0byBmaW5pc2gNCml0IGZvciBtZSwgbm9yIGFtIEkgd2lsbGluZyB0byBjb21taXQg
dG8gZXh0ZW5kIGl0IChlLmcuIHRvIGZpbmFsaXplIHN1cHBvcnQNCmZvciBBTUQgcHJvY2Vzc29y
cykgb3IgbWFpbnRhaW4gaXQgZ29pbmcgZm9yd2FyZC4NCg0KVGhlIGRpc2NvbnRpbnVpdHkgaW4g
dGltZXN0YW1wcyBpcyBhIHRyYWRlb2ZmIEknbSB3aWxsaW5nIHRvIG1ha2UgaW4gb3JkZXIga2Vl
cA0KdGhlIGNvZGUgc2ltcGxlIGFuZCB0byBjb3ZlciBtb3JlIG9mIHRoZSBibGluZCBzcG9ydC4N
Cg0KSSBwcmVmZXIgbXkgb3JpZ2luYWwgYXBwcm9hY2guICBJJ2xsIHNlbmQgYW4gdXBkYXRlZCBw
YXRjaCBmb3IgY29uc2lkZXJhdGlvbiBzb29uLg0KDQpUaGFua3MsDQogLS0gVGltDQogDQoNCg0K