RE: [RFC PATCH v6] pile stack and mempool driver

Morten Brørup <[email protected]> Sun, 2 Aug 2026 18:45:59 +0200
Newsgroups org.dpdk.dev
Message-ID <[email protected]>
VGhhbmsgeW91LCBTdGVwaGVuLg0KDQpWZXJ5IHVzZWZ1bCByZXZpZXcgZmVlZGJhY2ssIGVzcGVj
aWFsbHkgdGhlIGZpcnN0IHBvaW50IQ0KDQpJIHRyaWVkIGEgZmV3IGRpZmZlcmVudCBhbGdvcml0
aG1zIGZvciBoYW5kbGluZyB0aGUgbWl4IG9mIHNvbG8gYW5kIGJ1bGsgb2JqZWN0cyBiZWZvcmUg
YXJyaXZpbmcgYXQgdGhpcyBvbmUuDQpCdXQgYXMgdGhlIEFJIHJldmlldyByZXZlYWxlZCwgaXQg
c3RpbGwgbmVlZHMgc29tZSB3b3JrLg0KV2lsbCBmb2xsb3cgdXAgd2l0aCBhIHY3IHBhdGNoLg0K
DQoNClZlbmxpZyBoaWxzZW4gLyBLaW5kIHJlZ2FyZHMsDQotTW9ydGVuIEJyw7hydXANCg0KDQo+
IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFN0ZXBoZW4gSGVtbWluZ2VyIFtt
YWlsdG86c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmddDQo+IFNlbnQ6IFN1bmRheSwgMiBBdWd1
c3QgMjAyNiAxNy4yMw0KPiANCj4gT24gU3VuLCAgMiBBdWcgMjAyNiAwOTo1OTo1NCArMDAwMA0K
PiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPiB3cm90ZToNCj4gDQo+
ID4gRWFybHkgc3VibWlzc2lvbiBvZjoNCj4gPiAtIHNvbWUgbWVtcG9vbCBvcHRpbWl6YXRpb25z
LA0KPiA+IC0gYSBuZXcgbWVtcG9vbCAicGlsZSIgZHJpdmVyLCBhbmQNCj4gPiAtIGl0cyB1bmRl
cmx5aW5nICJwaWxlIiBzdGFjayBpbXBsZW1lbnRhdGlvbi4NCj4gPg0KPiA+IEZvciBjb21tdW5p
dHkgZmVlZGJhY2sgYW5kIENJIHRlc3QuDQo+ID4NCj4gPiBOZWVkbGVzcyB0byBzYXksIHRoaXMg
bXVzdCBiZSBzZXBhcmF0ZWQgaW50byBhIHNlcmllcyBvZiBwYXRjaGVzLg0KPiA+IEZvciBub3cs
IEknbSBzdWJtaXR0aW5nIGEgc25hcHNob3Qgb2Ygd29yayBpbiBwcm9ncmVzcy4NCj4gPg0KPiA+
IFNvbWUgcGVyZm9ybWFuY2UgbnVtYmVycyBmcm9tIG1lbXBvb2xfcGVyZl9hdXRvdGVzdF8yY29y
ZXMsIGFsbA0KPiA+IHdpdGggY2FjaGU9MTAyNCBjb3Jlcz0yIG5fa2VlcD0zMjc2ODoNCj4gPg0K
PiA+IHN0YXJ0IHBlcmZvcm1hbmNlIHRlc3QgKHVzaW5nIHJpbmdfbXBfbWMsIHdpdGggY2FjaGUp
DQo+ID4gbl9nZXRfYnVsaz0gNjQgbl9wdXRfYnVsaz0gNjQgY29uc3RhbnRfbj0wIHJhdGVfcGVy
c2VjPSA3NTM5ODUzMzgNCj4gPiBuX2dldF9idWxrPTI1NiBuX3B1dF9idWxrPTI1NiBjb25zdGFu
dF9uPTAgcmF0ZV9wZXJzZWM9IDc1NTgwNTkxMw0KPiA+DQo+ID4gc3RhcnQgcGVyZm9ybWFuY2Ug
dGVzdCBmb3IgbGZfc3RhY2sgKHdpdGggY2FjaGUpDQo+ID4gbl9nZXRfYnVsaz0gNjQgbl9wdXRf
YnVsaz0gNjQgY29uc3RhbnRfbj0wIHJhdGVfcGVyc2VjPSAgMjkxMzIzNTINCj4gPiBuX2dldF9i
dWxrPTI1NiBuX3B1dF9idWxrPTI1NiBjb25zdGFudF9uPTAgcmF0ZV9wZXJzZWM9ICAyOTI3Njcw
OA0KPiA+DQo+ID4gc3RhcnQgcGVyZm9ybWFuY2UgdGVzdCBmb3IgcGlsZSAod2l0aCBjYWNoZSkN
Cj4gPiBuX2dldF9idWxrPSA2NCBuX3B1dF9idWxrPSA2NCBjb25zdGFudF9uPTAgcmF0ZV9wZXJz
ZWM9IDU2MDE1OTQ3OQ0KPiA+IG5fZ2V0X2J1bGs9MjU2IG5fcHV0X2J1bGs9MjU2IGNvbnN0YW50
X249MCByYXRlX3BlcnNlYz0gNTU3OTEwOTMzDQo+ID4NCj4gPiBIYXQgdGlwIHRvIEJydWNlIGZv
ciBicmluZ2luZyBhdHRlbnRpb24gdG8gdGhlIHJpbmcgbm90IGJlaW5nIHRoZQ0KPiA+IG9wdGlt
YWwgbWVtcG9vbCBkcml2ZXIuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBNb3J0ZW4gQnLDuHJ1
cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiA+IC0tLQ0KPiANCj4gU2luY2UgcmVsYXRp
dmVseSBjb21wbGV4LCBkaWQgQUkgcmV2aWV3IHdpdGggbW9yZSBhZHZhbmNlZCBtb2RlbC4NCj4g
DQo+IFJldmlldyBvZiBbUkZDIFBBVENIIHY2XSBwaWxlIHN0YWNrIGFuZCBtZW1wb29sIGRyaXZl
cg0KPiANCj4gRXJyb3JzDQo+IA0KPiAxLiBsaWIvc3RhY2svcnRlX3N0YWNrX3BpbGUuaCwgX19y
dGVfc3RhY2tfcGlsZV9wb3AoKQ0KPiANCj4gVGhlIGJ1bGsgcmV0cnkgbG9vcCBicmVha3MgdGhl
IGludmFyaWFudCB0aGF0IHRoZSBmcmFnbWVudGF0aW9uIHBhdGgNCj4gZGVwZW5kcyBvbiAobl9z
b2xvIDwgUlRFX1NUQUNLX1BJTEVfQlVMS19TSVpFKToNCj4gDQo+IAluX3NvbG8gKz0gUlRFX1NU
QUNLX1BJTEVfQlVMS19TSVpFOw0KPiAJbl9idWxrLS07DQo+IAlpZiAobl9idWxrID4gMCkNCj4g
CQlnb3RvIGJ1bGs7DQo+IAllbHNlDQo+IAkJZ290byBzb2xvOw0KPiANCj4gRWFjaCByZXRyeSBh
ZGRzIGEgd2hvbGUgYnVsayB3b3J0aCBvZiBvYmplY3RzIHRvIG5fc29sbywgc28gY29udHJvbCBj
YW4NCj4gcmVhY2ggdGhlICJzb2xvOiIgbGFiZWwgd2l0aCBuX3NvbG8gPj0gUlRFX1NUQUNLX1BJ
TEVfQlVMS19TSVpFICh1cCB0bw0KPiBuKS4NCj4gSWYgdGhlIHNvbG8gcG9wIHRoZW4gZmFpbHMg
YW5kIHRoZSBmcmFnbWVudGF0aW9uIHBhdGggaXMgdGFrZW4sIGZvdXINCj4gdGhpbmdzIGdvIHdy
b25nOg0KPiANCj4gIC0gX19ydGVfYXNzdW1lKG5fc29sbyA8IFJURV9TVEFDS19QSUxFX0JVTEtf
U0laRSkgaXMgZmFsc2UsIHdoaWNoIGlzDQo+ICAgIHVuZGVmaW5lZCBiZWhhdmlvci4NCj4gDQo+
ICAtIHRoZSBjb3B5IGxvb3ANCj4gDQo+IAlmb3IgKGkgPSAwOyBpIDwgbl9zb2xvOyBpKyspDQo+
IAkJb2JqX3RhYmxlW25fYnVsayAqIFJURV9TVEFDS19QSUxFX0JVTEtfU0laRSArIGldID0NCj4g
b2JqX2ZyYWdbaV07DQo+IA0KPiAgICByZWFkcyBwYXN0IHRoZSBlbmQgb2Ygb2JqX2ZyYWdbUlRF
X1NUQUNLX1BJTEVfQlVMS19TSVpFXSB3aGVuZXZlcg0KPiAgICBuX3NvbG8gPiBSVEVfU1RBQ0tf
UElMRV9CVUxLX1NJWkUuDQo+IA0KPiAgLSBSVEVfU1RBQ0tfUElMRV9CVUxLX1NJWkUgLSBuX3Nv
bG8gdW5kZXJmbG93cyBmb3Igbl9zb2xvID4gQlVMS19TSVpFLA0KPiAgICBzbyBmcmVlX3NvbG8g
aXMgYXNrZWQgZm9yIH40IGJpbGxpb24gZWxlbWVudHMuDQo+IA0KPiAgLSBmb3Igbl9zb2xvID09
IFJURV9TVEFDS19QSUxFX0JVTEtfU0laRSBleGFjdGx5LCB0aGUgcmVxdWVzdCBiZWNvbWVzDQo+
ICAgIGEgemVyby1lbGVtZW50IHBvcDoNCj4gDQo+IAlzb2xvX2ZpcnN0ID0gX19ydGVfc3RhY2tf
bGZfcG9wX2VsZW1zKCZwaWxlLT5mcmVlX3NvbG8sIDAsIE5VTEwsDQo+ICZzb2xvX2xhc3QpOw0K
PiANCj4gICAgX19ydGVfc3RhY2tfbGZfcG9wX2VsZW1zKCkgd2l0aCBudW0gPT0gMCBuZXZlciBl
bnRlcnMgdGhlIHRyYXZlcnNhbA0KPiAgICBsb29wLCBzbyBpdCBsZWF2ZXMgKmxhc3QgdW50b3Vj
aGVkIGFuZCByZXR1cm5zIG9sZF9oZWFkLnRvcCwgd2hpY2gNCj4gaXMNCj4gICAgbm9uLU5VTEwg
d2hlbmV2ZXIgZnJlZV9zb2xvIGlzIG5vdCBlbXB0eS4gc29sb19sYXN0IGlzIHRoZXJlZm9yZQ0K
PiBzdGlsbA0KPiAgICBOVUxMIHdoZW4NCj4gDQo+IAlfX3J0ZV9zdGFja19sZl9wdXNoX2VsZW1z
KCZwaWxlLT5zb2xvLCBzb2xvX2ZpcnN0LCBzb2xvX2xhc3QsIDApOw0KPiANCj4gICAgZXhlY3V0
ZXMgImxhc3QtPm5leHQgPSBvbGRfaGVhZC50b3AiLCBpLmUuIGEgTlVMTCBwb2ludGVyIHdyaXRl
LiAgSXQNCj4gICAgYWxzbyBzcGxpY2VzIGZyZWVfc29sbydzIGN1cnJlbnQgaGVhZCBvbnRvIHBp
bGUtPnNvbG8uDQo+IA0KPiBSZWFjaGFibGUgcGF0aCB3aXRoIEJVTEtfU0laRSAzMjogcG9wIG9m
IDY0IG9iamVjdHMsIHBpbGUtPmJ1bGsgaG9sZHMNCj4gb25lIGVsZW1lbnQsIHBpbGUtPnNvbG8g
ZW1wdHksIGZyZWVfc29sbyBub24tZW1wdHkuICBUaGUgcG9wIG9mIDIgYnVsa3MNCj4gZmFpbHMg
KG5fc29sbyBiZWNvbWVzIDMyLCBuX2J1bGsgMSksIHRoZSBwb3Agb2YgMSBidWxrIHN1Y2NlZWRz
LCB0aGUNCj4gc29sbyBwb3Agb2YgMzIgZmFpbHMsIGFuZCB0aGUgZnJhZ21lbnRhdGlvbiBwYXRo
IGlzIGVudGVyZWQgd2l0aA0KPiBuX3NvbG8gPT0gMzIuDQo+IA0KPiBUaGUgZnJhZ21lbnRhdGlv
biBwYXRoIG9ubHkgbWFrZXMgc2Vuc2UgZm9yIGEgcGFydGlhbCBidWxrLiAgQWZ0ZXIgdGhlDQo+
IHJldHJ5IGxvb3AsIHNwbGl0IG5fc29sbyBiYWNrIGludG8gd2hvbGUgYnVsa3MgcGx1cyBhIHJl
bWFpbmRlciBhbmQNCj4gc2VydmljZSB0aGUgd2hvbGUtYnVsayBwYXJ0IGZyb20gcGlsZS0+c29s
byAob3IgZmFpbCksIGtlZXBpbmcgdGhlDQo+IGZyYWdtZW50YXRpb24gcGF0aCBib3VuZGVkIHRv
IG5fc29sbyA8IFJURV9TVEFDS19QSUxFX0JVTEtfU0laRS4NCj4gDQo+IDIuIGxpYi9zdGFjay9y
dGVfc3RhY2tfcGlsZS5oLCBfX3J0ZV9zdGFja19waWxlX3BvcCgpDQo+IA0KPiAJX19ydGVfYXNz
dW1lKFJURV9TVEFDS19QSUxFX0JVTEtfU0laRSAtIG5fc29sbyA8DQo+IFJURV9TVEFDS19QSUxF
X0JVTEtfU0laRSAtIDEpOw0KPiANCj4gT2ZmIGJ5IG9uZTogd2l0aCBuX3NvbG8gPT0gMSB0aGUg
bGVmdCBzaWRlIGlzIEJVTEtfU0laRSAtIDEsIGFuZA0KPiAiQlVMS19TSVpFIC0gMSA8IEJVTEtf
U0laRSAtIDEiIGlzIGZhbHNlLiAgQSBmYWxzZSBfX3J0ZV9hc3N1bWUoKSBpcw0KPiB1bmRlZmlu
ZWQgYmVoYXZpb3IuICBTaG91bGQgYmUgIjwgUlRFX1NUQUNLX1BJTEVfQlVMS19TSVpFIi4NCj4g
DQo+IDMuIGFwcC90ZXN0L3Rlc3Rfc3RhY2suYywgdGVzdF9zdGFja19wdXNoX3BvcCgpDQo+IA0K
PiAJaWYgKG1lbWNtcCgmb2JqX3RhYmxlW2ldLA0KPiAJCQkmcG9wcGVkX29ianNbU1RBQ0tfU0la
RSAtIFJURV9TVEFDS19QSUxFX0JVTEtfU0laRSAtDQo+IGldLA0KPiAJCQlSVEVfU1RBQ0tfUElM
RV9CVUxLX1NJWkUpICE9IDApIHsNCj4gDQo+IG1lbWNtcCgpIHRha2VzIGEgYnl0ZSBjb3VudCwg
YnV0IFJURV9TVEFDS19QSUxFX0JVTEtfU0laRSBpcyBhbiBvYmplY3QNCj4gY291bnQuICBPbmx5
IHRoZSBmaXJzdCA0IHBvaW50ZXJzIG9mIGVhY2ggMzItcG9pbnRlciBidWxrIGFyZSBjb21wYXJl
ZA0KPiBvbiBhIDY0LWJpdCBidWlsZC4gIE5lZWRzDQo+ICJSVEVfU1RBQ0tfUElMRV9CVUxLX1NJ
WkUgKiBzaXplb2Yodm9pZCAqKSIuDQo+IA0KPiA0LiBsaWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5o
LCBydGVfbWVtcG9vbF9kb19nZW5lcmljX3B1dCgpDQo+IA0KPiAJY29uc3Qgc2l6ZV90IG1vdmUg
PSBSVEVfQUxJR05fTVVMX0NFSUwoDQo+IAkJCXNpemVvZih2b2lkICopICogKGNhY2hlLT5sZW4g
LSBjYWNoZS0+c2l6ZSAvIDIpLCAzMik7DQo+IAlydGVfbWVtY3B5KGNhY2hlLT5vYmpzLCBfX3J0
ZV9hc3N1bWVfY2FjaGVfYWxpZ25lZCgmY2FjaGUtDQo+ID5vYmpzW2NhY2hlLT5zaXplIC8gMl0p
LA0KPiAJCQltb3ZlKTsNCj4gDQo+IEJvdGggdGhlIGFsaWdubWVudCBoaW50IGFuZCB0aGUgcm91
bmRlZC11cCBsZW5ndGggYXJlIG9ubHkgdmFsaWQgd2hlbg0KPiBjYWNoZS0+c2l6ZSBpcyBhIG11
bHRpcGxlIG9mIDMyLiAgcnRlX21lbXBvb2xfY3JlYXRlX2VtcHR5KCkgbm93DQo+IGVuZm9yY2Vz
DQo+IHRoYXQsIGJ1dCBydGVfbWVtcG9vbF9jYWNoZV9jcmVhdGUoKSBpcyB1bmNoYW5nZWQgYW5k
IHN0aWxsIGFjY2VwdHMgYW55DQo+IHNpemUgaW4gMS4uUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJ
WkUuICBBIHVzZXIgY2FjaGUgb2YsIHNheSwgc2l6ZSAxMDANCj4gZ2l2ZXMgJm9ianNbNTBdIGF0
IGEgNDAwLWJ5dGUgb2Zmc2V0LCBhbmQgX19idWlsdGluX2Fzc3VtZV9hbGlnbmVkKCkgaXMNCj4g
dGhlbiB0b2xkIGEgZmFsc2UgcHJlY29uZGl0aW9uIC0gdGhlIGNvbXBpbGVyIG1heSBlbWl0IGFs
aWduZWQgdmVjdG9yDQo+IGxvYWRzIGFuZCBmYXVsdC4gIEVpdGhlciBhcHBseSB0aGUgc2FtZSBy
b3VuZGluZy9yZWplY3Rpb24gaW4NCj4gcnRlX21lbXBvb2xfY2FjaGVfY3JlYXRlKCksIG9yIGRy
b3AgdGhlIGFsaWdubWVudCBoaW50Lg0KPiANCj4gV2FybmluZ3MNCj4gDQo+IDUuIEFCSSBhbmQg
QVBJIGNoYW5nZXMgd2l0aG91dCBkZXByZWNhdGlvbiBub3RpY2VzDQo+IA0KPiBkZXByZWNhdGlv
bi5yc3QgY3VycmVudGx5IGNvdmVycyBvbmx5IHRoZSBmbHVzaHRocmVzaCBmaWVsZCBhbmQgdGhl
DQo+IG92ZXJzaXplIG9ianMgYXJyYXkuICBUaGUgcGF0Y2ggYWRkaXRpb25hbGx5IGNoYW5nZXM6
DQo+IA0KPiAgLSBzdHJ1Y3QgcnRlX21lbXBvb2w6IGxvY2FsX2NhY2hlIGZyb20gcG9pbnRlciB0
byBpbmxpbmUNCj4gICAgbG9jYWxfY2FjaGVbUlRFX01BWF9MQ09SRV0gYXJyYXkNCj4gIC0gcmVt
b3ZhbCBvZiB0aGUgUlRFX01FTVBPT0xfSEVBREVSX1NJWkUoKSBtYWNybw0KPiAgLSBSVEVfTUVN
UE9PTF9DQUNIRV9NQVhfU0laRSA1MTIgLT4gMTAyNA0KPiAgLSBSVEVfTUVNUE9PTF9NQVhfT1BT
X0lEWCAxNiAtPiAzMiwgd2hpY2ggY2hhbmdlcyB0aGUgc2l6ZSBvZiB0aGUNCj4gICAgZXhwb3J0
ZWQgcnRlX21lbXBvb2xfb3BzX3RhYmxlIHZhcmlhYmxlDQo+ICAtIGNhY2hlX3NpemUgbXVzdCBu
b3cgYmUgYSBtdWx0aXBsZSBvZiAzMg0KPiANCj4gVGhlIHR3byBleGlzdGluZyBkZXByZWNhdGlv
biBlbnRyaWVzIHNob3VsZCBhbHNvIGJlIHJlbW92ZWQgYnkgdGhpcw0KPiBwYXRjaCBvbmNlIHRo
ZXkgYXJlIGltcGxlbWVudGVkLg0KPiANCj4gNi4gbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaCAt
IG1lbXBvb2wgaGVhZGVyIGZvb3RwcmludA0KPiANCj4gV2l0aCBsb2NhbF9jYWNoZVtdIGlubGlu
ZSBhbmQgUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUgYXQgMTAyNCwgdGhlDQo+IGhlYWRlciBp
cyByb3VnaGx5IFJURV9NQVhfTENPUkUgKiA4LjMgS0IsIGkuZS4gYWJvdXQgMSBNQiBwZXIgbWVt
cG9vbCwNCj4gYW5kIGl0IGlzIG5vdyBhbGxvY2F0ZWQgKGFuZCBtZW1zZXQpIHVuY29uZGl0aW9u
YWxseS4gIFByZXZpb3VzbHkNCj4gUlRFX01FTVBPT0xfSEVBREVSX1NJWkUobXAsIDApIG9taXR0
ZWQgdGhlIGFycmF5IGVudGlyZWx5IGZvciBtZW1wb29scw0KPiBjcmVhdGVkIHdpdGggY2FjaGVf
c2l6ZSA9PSAwLCB3aGljaCBpcyBjb21tb24gZm9yIGNvbnRyb2wtb2JqZWN0IHBvb2xzLg0KPiAN
Cj4gNy4gbGliL21lbXBvb2wvcnRlX21lbXBvb2wuYywgcnRlX21lbXBvb2xfY3JlYXRlX2VtcHR5
KCkNCj4gDQo+IAlpZiAoY2FjaGVfc2l6ZSAmIDMxKSB7DQo+IAkJdW5zaWduZWQgaW50IHJvdW5k
ZWQgPSBSVEVfQUxJR05fTVVMX0ZMT09SKGNhY2hlX3NpemUsIDMyKTsNCj4gDQo+IEFueSByZXF1
ZXN0ZWQgY2FjaGVfc2l6ZSBiZWxvdyAzMiBpcyBzaWxlbnRseSByb3VuZGVkIHRvIDAsIGRpc2Fi
bGluZw0KPiB0aGUgY2FjaGUuICBUaGUgZG94eWdlbiBjaGFuZ2UgaW4gcnRlX21lbXBvb2wuaCBz
YXlzIHRoZSBhcmd1bWVudCAibXVzdA0KPiBiZSBkaXZpc2libGUgYnkgMzIiLCB3aGljaCByZWFk
cyBhcyBhIHJlamVjdGlvbiwgbm90IGEgc2lsZW50IHJvdW5kaW5nDQo+IC0NCj4gZG9jIGFuZCBj
b2RlIGRpc2FncmVlLiAgVGhlIGxvZyBtZXNzYWdlcyBzaG91bGQgYWxzbyBwcmludCB0aGUNCj4g
cmVxdWVzdGVkDQo+IGFuZCBlZmZlY3RpdmUgdmFsdWVzLCBhbmQgImRpdmlzYmxlIiBpcyBtaXNz
cGVsbGVkLg0KPiANCj4gOC4gYXBwL3Rlc3QvdGVzdF9zdGFjay5jDQo+IA0KPiBUaGUgZXhjZXNz
LXB1c2ggdGVzdCBpcyB3cmFwcGVkIGluICIjaWYgMCAvKiBGSVhNRSAuLi4gKi8iLiAgVGhhdA0K
PiByZW1vdmVzIGNvdmVyYWdlIGZvciB0aGUgc3RhbmRhcmQgYW5kIGxvY2stZnJlZSBzdGFja3Mg
YXMgd2VsbCwgYW5kIGl0DQo+IGlzIGV4YWN0bHkgdGhlIHRlc3QgdGhhdCB3b3VsZCBleGVyY2lz
ZSB0aGUgcGlsZSBjYXBhY2l0eSBiZWhhdmlvciBpbg0KPiBpdGVtIDkuICBEZWFkIGNvZGUgc2hv
dWxkIG5vdCBiZSBjb21taXR0ZWQ7IGVpdGhlciBmaXggdGhlDQo+IC1XYXJyYXktYm91bmRzIHRy
aWdnZXIgKGEgcnVudGltZS1jb21wdXRlZCBzaXplIGluIGEgdm9sYXRpbGUgdmFyaWFibGUNCj4g
aXMgdXN1YWxseSBlbm91Z2gpIG9yIGRyb3AgdGhlIGJsb2NrIGFuZCBub3RlIHRoZSBnYXAgaW4g
dGhlIGNvbW1pdA0KPiBtZXNzYWdlLg0KPiANCj4gOS4gbGliL3N0YWNrL3J0ZV9zdGFja19waWxl
LmMsIHJ0ZV9zdGFja19waWxlX2luaXQoKQ0KPiANCj4gVGhlIHBpbGUgaXMgaW5pdGlhbGl6ZWQg
d2l0aCBjZWlsKGNvdW50IC8gQlVMS19TSVpFKSBidWxrIGVsZW1lbnRzIHBsdXMNCj4gY291bnQg
c29sbyBlbGVtZW50cywgc28gaXQgY2FuIGhvbGQgdXAgdG8gcm91Z2hseSAyICogY291bnQgb2Jq
ZWN0cywNCj4gYWJvdmUgdGhlIGRlY2xhcmVkIGNhcGFjaXR5LiAgX19ydGVfc3RhY2tfcGlsZV9j
b3VudCgpIG9ubHkgaGlkZXMgdGhpcw0KPiBieSBjbGFtcGluZyB3aXRoIFJURV9NSU4ocy0+Y2Fw
YWNpdHksIC4uLikuICBydGVfc3RhY2tfcHVzaCgpIGlzDQo+IGRvY3VtZW50ZWQgdG8gZmFpbCB3
aGVuIHRoZXJlIGlzIGluc3VmZmljaWVudCBzcGFjZTsgZWl0aGVyIGVuZm9yY2UgdGhlDQo+IGNh
cGFjaXR5IG9yIGRvY3VtZW50IHRoYXQgdGhlIHBpbGUgZG9lcyBub3QuDQo+IA0KPiAxMC4gbGli
L3N0YWNrL3J0ZV9zdGFja19waWxlLmMNCj4gDQo+IHJ0ZV9zdGFja19waWxlX2luaXQoKSBkZXJp
dmVzIHRoZSBlbGVtZW50IGJhc2UgZnJvbQ0KPiAiKCZzLT5zdGFja19waWxlICsgMSkiIHdoaWxl
IHJ0ZV9zdGFja19waWxlX2dldF9tZW1zaXplKCkgc2l6ZXMgaXQgZnJvbQ0KPiAic2l6ZW9mKHN0
cnVjdCBydGVfc3RhY2spIi4gIFRoZXNlIGFncmVlIG9ubHkgYmVjYXVzZSBydGVfc3RhY2tfcGls
ZQ0KPiBoYXBwZW5zIHRvIGJlIHRoZSBsYXJnZXN0IG1lbWJlciBvZiB0aGUgdW5pb24gaW4gc3Ry
dWN0IHJ0ZV9zdGFjay4gIElmDQo+IGFub3RoZXIgbWVtYmVyIGdyb3dzLCBpbml0KCkgd3JpdGVz
IHBhc3QgdGhlIG1lbXpvbmUgd2l0aCBubw0KPiBkaWFnbm9zdGljLg0KPiBVc2UgdGhlIHNhbWUg
ZXhwcmVzc2lvbiBpbiBib3RoIHBsYWNlcywgb3IgZ2l2ZSBzdHJ1Y3QgcnRlX3N0YWNrX3BpbGUg
YQ0KPiBmbGV4aWJsZSBhcnJheSBtZW1iZXIgYXMgcnRlX3N0YWNrX2xmIGhhcy4NCj4gDQo+IDEx
LiBsaWIvc3RhY2svcnRlX3N0YWNrX3BpbGUuaCAtIGRveHlnZW4NCj4gDQo+IEJvdGggX19ydGVf
c3RhY2tfcGlsZV9wdXNoKCkgYW5kIF9fcnRlX3N0YWNrX3BpbGVfcG9wKCkgZG9jdW1lbnQNCj4g
IkBwYXJhbSBwaWxlIiwgYnV0IHRoZSBwYXJhbWV0ZXIgaXMgInN0cnVjdCBydGVfc3RhY2sgKnMi
LiAgRG94eWdlbg0KPiB3aXRoDQo+IC1Ed2Vycm9yIHdpbGwgZmxhZyB0aGUgdW5kb2N1bWVudGVk
IHBhcmFtZXRlci4NCj4gDQo+IDEyLiBNaXNzaW5nIHJlbGVhc2Ugbm90ZXMNCj4gDQo+IGRvYy9n
dWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjZfMTEucnN0IGlzIG5vdCB1cGRhdGVkIGZvciB0aGUg
bmV3IHBpbGUNCj4gc3RhY2sgdHlwZSwgdGhlIG5ldyAicGlsZSIgbWVtcG9vbCBkcml2ZXIsIHRo
ZSBtZW1wb29sIEFCSSBjaGFuZ2VzLCBvcg0KPiB0aGUgbmV3IF9fcnRlX2Fzc3VtZV9hbGlnbmVk
KCkgLyBfX3J0ZV9hc3N1bWVfY2FjaGVfYWxpZ25lZCgpIEVBTA0KPiBtYWNyb3MuDQo+IA0KPiAx
My4gZG9jL2d1aWRlcy9tZW1wb29sL3N0YWNrLnJzdA0KPiANCj4gVGhlIGRyaXZlciBndWlkZSBs
aXN0cyB0aGUgInN0YWNrIiBhbmQgImxmX3N0YWNrIiBtb2RlczsgdGhlIG5ldyAicGlsZSINCj4g
bW9kZSBpcyBub3QgYWRkZWQuICBQTUQvZHJpdmVyIGRvY3VtZW50YXRpb24gbXVzdCBtYXRjaCB0
aGUgcmVnaXN0ZXJlZA0KPiBvcHMuDQo+IA0KPiAxNC4gbGliL21lbXBvb2wvbWVtcG9vbF90cmFj
ZS5oDQo+IA0KPiBEcm9wcGluZyBydGVfdHJhY2VfcG9pbnRfZW1pdF91MzIoY2FjaGUtPmZsdXNo
dGhyZXNoKSBjaGFuZ2VzIHRoZQ0KPiByZWNvcmRlZCB0cmFjZSBmb3JtYXQgZm9yIHRoYXQgdHJh
Y2UgcG9pbnQuICBXb3J0aCBhIHJlbGVhc2Ugbm90ZSBlbnRyeQ0KPiBmb3IgY29uc3VtZXJzIHBh
cnNpbmcgdGhlIHRyYWNlIG91dHB1dC4NCj4gDQo+IDE1LiBhcHAvdGVzdC90ZXN0X3N0YWNrX3Bl
cmYuYw0KPiANCj4gCSNkZWZpbmUgTUFYX0JVUlNUIChSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0la
RSAvIDIpDQo+IA0KPiBBIHN0YWNrIGxpYnJhcnkgdGVzdCBzaG91bGQgbm90IHRha2UgaXRzIGJ1
cnN0IHNpemUgZnJvbSBhIG1lbXBvb2wNCj4gY29uZmlndXJhdGlvbiBjb25zdGFudC4gIFVzZSBh
IHN0YWNrLXNwZWNpZmljIHZhbHVlIChvcg0KPiBSVEVfU1RBQ0tfUElMRV9CVUxLX1NJWkUgbXVs
dGlwbGVzKS4NCj4gDQo+IEluZm8NCj4gDQo+IDE2LiBsaWIvZWFsL3g4Ni9pbmNsdWRlL3J0ZV9t
ZW1jcHkuaA0KPiANCj4gVGhlIG5ldyBjb25zdGFudC1zaXplIGJsb2NrIGFsbG93cyBuIDw9IDUx
MiBmb3IgQVZYLTUxMiBhbmQgZm9yIFNTRSwNCj4gYnV0DQo+IG9ubHkgbiA8PSAyNTYgZm9yIEFW
WDIgLSBpcyB0aGUgYXN5bW1ldHJ5IGludGVuZGVkPyAgU3BsaXR0aW5nIGEgc2luZ2xlDQo+ICJp
ZiAoIiBhY3Jvc3MgI2lmLyNlbGlmLyNlbHNlIHdpdGggdGhlIGJvZHkgb3V0c2lkZSBpcyBhbHNv
IGhhcmQgdG8NCj4gcmVhZDsgYSBwZXItSVNBIFJURV9NRU1DUFlfQ09OU1RfTUFYIGRlZmluZSBh
bmQgb25lICJpZiIgd291bGQgYmUNCj4gY2xlYXJlci4gIFRoaXMgY2hhbmdlIGFuZCB0aGUgX19y
dGVfYXNzdW1lX2FsaWduZWQoKSBhZGRpdGlvbiBhcmUNCj4gaW5kZXBlbmRlbnQgb2YgdGhlIHBp
bGUgd29yayBhbmQgYXJlIGdvb2QgY2FuZGlkYXRlcyBmb3IgdGhlaXIgb3duDQo+IHBhdGNoZXMg
d2hlbiB0aGUgc2VyaWVzIGlzIHNwbGl0Lg0KPiANCj4gMTcuIGRyaXZlcnMvbmV0L3N4ZTIvc3hl
Ml90eHJ4X3ZlY19hdng1MTIuYw0KPiANCj4gVGhlIGh1bmsgYWRkcyBhbiB1bnJlbGF0ZWQgYmxh
bmsgbGluZSBiZWZvcmUgImdvdG8gZG9uZTsiLg0KPiANCj4gMTguIGxpYi9zdGFjay9ydGVfc3Rh
Y2tfcGlsZS5oLCBfX3J0ZV9zdGFja19waWxlX2J1bGtfcG9wX2VsZW1zKCkNCj4gDQo+IFRoZSBl
bGVtZW50IGxpc3QgaXMgdHJhdmVyc2VkIHR3aWNlOiBvbmNlIGluc2lkZQ0KPiBfX3J0ZV9zdGFj
a19sZl9wb3BfZWxlbXMoKSAodG8gZmluZCB0aGUgbmV3IGhlYWQgYW5kIHNldCAqbGFzdCkgYW5k
DQo+IGFnYWluIHRvIGNvcHkgdGhlIGJ1bGsgY29udGVudHMuICBGb3IgYSBwb3Agb2YgOCBidWxr
IGVsZW1lbnRzIHRoYXQgaXMNCj4gdHdvIGRlcGVuZGVudCBwb2ludGVyIGNoYXNlcyBvdmVyIHRo
ZSBzYW1lIGNhY2hlIGxpbmVzLg0KPiANCj4gMTkuIGRyaXZlcnMvbWVtcG9vbC9zdGFjay9ydGVf
bWVtcG9vbF9zdGFjay5jDQo+IA0KPiBwaWxlX2VucXVldWUoKSByZXR1cm5zIC1FTk9CVUZTIHdo
ZW4gdGhlIHB1c2ggZmFpbHMsIGJ1dA0KPiBydGVfbWVtcG9vbF9vcHNfZW5xdWV1ZV9idWxrKCkg
cmV0dXJucyB2b2lkIGFuZCBjYWxsZXJzIGRvIG5vdCByZWNvdmVyLA0KPiBzbyBhIGZhaWxlZCBw
dXQgbG9zZXMgb2JqZWN0cy4gIFRoaXMgaXMgdGhlIHNhbWUgaGF6YXJkIHRoZSBsb2NrLWZyZWUN
Cj4gc3RhY2sgYWxyZWFkeSBoYXMsIGJ1dCB0aGUgcGlsZSBoYXMgdHdvIGluZGVwZW5kZW50IGZy
ZWUgbGlzdHMsIHNvIHRoZQ0KPiB3aW5kb3cgaW4gd2hpY2ggYSBjb25jdXJyZW50IHBvcCBsZWF2
ZXMgbmVpdGhlciBmcmVlX2J1bGsgbm9yIGZyZWVfc29sbw0KPiBhYmxlIHRvIHNhdGlzZnkgYSBw
dXNoIGlzIHdpZGVyLiAgV29ydGggY2FsbGluZyBvdXQgaW4gc3RhY2tfbGliLnJzdC4NCj4gDQo+
IDIwLiBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvc3RhY2tfbGliLnJzdA0KPiANCj4gInBlcmZvcm1h
aW5nIiAtPiAicGVyZm9ybWluZyIuICBUaGUgdHJhaWxpbmcgIk5vdGU6IiBwYXJhZ3JhcGggd291
bGQNCj4gcmVuZGVyIGJldHRlciBhcyBhICIuLiBub3RlOjoiIGRpcmVjdGl2ZS4NCj4gDQo+IDIx
LiBUaGUgc2VyaWVzIG1peGVzIGF0IGxlYXN0IGZpdmUgaW5kZXBlbmRlbnQgY2hhbmdlcyAoRUFM
IGFzc3VtZS0NCj4gYWxpZ25lZA0KPiBtYWNybywgeDg2IHJ0ZV9tZW1jcHkgZmFzdCBwYXRoLCBt
ZW1wb29sIGNhY2hlL2hlYWRlciByZXdvcmssIHRoZSBwaWxlDQo+IHN0YWNrLCB0aGUgcGlsZSBt
ZW1wb29sIGRyaXZlcikuICBZb3UgYWxyZWFkeSBub3RlZCB0aGlzOyB0aG9zZSBsb29rDQo+IGxp
a2UgdGhlIG5hdHVyYWwgc3BsaXQgcG9pbnRzLCBhbmQgdGhlIG1lbXBvb2wgY2FjaGUgcmV3b3Jr
IGluDQo+IHBhcnRpY3VsYXIgZGVzZXJ2ZXMgaXRzIG93biByZXZpZXcgdGhyZWFkIGdpdmVuIHRo
ZSBBQkkgaW1wYWN0Lg0K