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