From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Subject: HVMlite ABI specification DRAFT A Date: Thu, 4 Feb 2016 18:48:14 +0100 Message-ID: <56B38EDE.5090700@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aRO11-0006r2-0T for xen-devel@lists.xenproject.org; Thu, 04 Feb 2016 17:48:23 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel Cc: Wei Liu , Andrew Cooper , Stefano Stabellini , Tim Deegan , Paul Durrant , David Vrabel , Jan Beulich , samuel.thibault@ens-lyon.org, Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org SGVsbG8sCgpJJ3ZlIENjZWQgYSBidW5jaCBvZiBwZW9wbGUgd2hvIGhhdmUgZXhwcmVzc2VkIGlu dGVyZXN0IGluIHRoZSBIVk1saXRlIApkZXNpZ24vaW1wbGVtZW50YXRpb24sIGJvdGggZnJvbSBh IFhlbiBvciBPUyBwb2ludCBvZiB2aWV3LiBJZiB5b3UgCndvdWxkIGxpa2UgdG8gYmUgcmVtb3Zl ZCwgcGxlYXNlIHNheSBzbyBhbmQgSSB3aWxsIHJlbW92ZSB5b3UgaW4gCmZ1cnRoZXIgaXRlcmF0 aW9ucy4gVGhlIHNhbWUgYXBwbGllcyBpZiB5b3Ugd2FudCB0byBiZSBhZGRlZCB0byB0aGUgQ2Mu CgpUaGlzIGlzIGFuIGluaXRpYWwgZHJhZnQgb24gdGhlIEhWTWxpdGUgZGVzaWduIGFuZCBpbXBs ZW1lbnRhdGlvbi4gSSd2ZSAKbWl4ZWQgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBkZXNpZ24gd2l0 aCB0aGUgaW1wbGVtZW50YXRpb24sIGJlY2F1c2UgSSAKdGhpbmsgd2UgYXJlIHF1aXRlIHRpZWQg YnkgdGhlIGltcGxlbWVudGF0aW9uIHBvc3NpYmlsaXRpZXMgaW4gY2VydGFpbiAKYXNwZWN0cywg c28gbm90IHNwZWFraW5nIGFib3V0IGl0IHdvdWxkIG1ha2UgdGhlIGRvY3VtZW50IGluY29tcGxl dGUuIEkgCm1pZ2h0IGJlIHdyb25nIG9uIHRoYXQsIHNvIGZlZWwgZnJlZSB0byBjb21tZW50IG90 aGVyd2lzZSBpZiB5b3Ugd291bGQgCnByZWZlciBhIGRpZmZlcmVudCBhcHByb2FjaC4gQXQgbGVh c3QgdGhpcyBzaG91bGQgZ2V0IHRoZSBjb252ZXJzYXRpb24gCnN0YXJ0ZWQgaW50byBhIGNvdXBs ZSBvZiBwZW5kaW5nIGl0ZW1zIHJlZ2FyZGluZyBIVk1saXRlLiBJIGRvbid0IHdhbnQgCnRvIHNw b2lsIHRoZSBmdW4sIGJ1dCBJTUhPIHRoZXkgYXJlOgoKIC0gTG9jYWwgQVBJQzogc2hvdWxkIHdl IF9hbHdheXNfIHByb3ZpZGUgYSBsb2NhbCBBUElDIHRvIEhWTWxpdGUgCiAgIGd1ZXN0cz8KIC0g SFZNbGl0ZSBoYXJkd2FyZSBkb21haW46IGNhbiB3ZSBnZXQgcmlkIG9mIHRoZSBQSFlTREVWIG9w cyBhbmQgUElSUSAKICAgZXZlbnQgY2hhbm5lbHM/CiAtIEhWTWxpdGUgUENJLXBhc3N0aHJvdWdo OiBjYW4gd2UgZ2V0IHJpZCBvZiBwY2liYWNrL3BjaWZyb250PwoKVGhlIGRvY3VtZW50IGlzIHN0 aWxsIGZhciBmcm9tIGNvbXBsZXRlLCBhbmQgSSd2ZSBvbmx5IHRyaWVkIHRvIApyZXByZXNlbnQg dGhlIHBvaW50cyB3aGVyZSB0aGVyZSdzIGNvbnNlbnN1cyAobGlrZSB0aGUgYm9vdCBBQkkpIG9y IApwYXJ0cyB3aGVyZSBmZWVkYmFjayBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gcmVhY2ggYSBjb25z ZW5zdXMgKGxpa2UgdGhlIAppdGVtcyBwb2ludGVkIGFib3ZlKS4gSSdtIG9mIGNvdXJzZSBub3Qg YXMga25vd2xlZGdlYWJsZSBhcyBzb21lIHBlb3BsZSAKb24gdGhlIENjLCBzbyBwbGVhc2UgY29y cmVjdCBtZSBpZiB5b3UgdGhpbmsgdGhlcmUgYXJlIG1pc3Rha2VzIG9yIApzaW1wbHkgaW1wb3Nz aWJsZSBnb2Fscy4KClJvZ2VyLgotLS0KClhlbiBIVk1saXRlIEFCSQo9PT09PT09PT09PT09PT0K CkJvb3QgQUJJCi0tLS0tLS0tCgpTaW5jZSB0aGUgWGVuIGVudHJ5IHBvaW50IGludG8gdGhlIGtl cm5lbCBjYW4gYmUgZGlmZmVyZW50IGZyb20gdGhlCm5hdGl2ZSBlbnRyeSBwb2ludCwgYSBgRUxG Tk9URWAgaXMgdXNlZCBpbiBvcmRlciB0byB0ZWxsIHRoZSBkb21haW4KYnVpbGRlciBob3cgdG8g bG9hZCBhbmQganVtcCBpbnRvIHRoZSBrZXJuZWwgZW50cnkgcG9pbnQ6CgogICAgRUxGTk9URShY ZW4sIFhFTl9FTEZOT1RFX1BIWVMzMl9FTlRSWSwgICAgICAgICAgLmxvbmcsICB4ZW5fc3RhcnQz MikKClRoZSBwcmVzZW5jZSBvZiB0aGUgYFhFTl9FTEZOT1RFX1BIWVMzMl9FTlRSWWAgbm90ZSBp bmRpY2F0ZXMgdGhhdCB0aGUKa2VybmVsIHN1cHBvcnRzIHRoZSBib290IEFCSSBkZXNjcmliZWQg aW4gdGhpcyBkb2N1bWVudC4KClRoZSBkb21haW4gYnVpbGRlciBtdXN0IGxvYWQgdGhlIGtlcm5l bCBpbnRvIHRoZSBndWVzdCBtZW1vcnkgc3BhY2UgYW5kCmp1bXAgaW50byB0aGUgZW50cnkgcG9p bnQgZGVmaW5lZCBhdCBgWEVOX0VMRk5PVEVfUEhZUzMyX0VOVFJZYCB3aXRoIHRoZQpmb2xsb3dp bmcgbWFjaGluZSBzdGF0ZToKCiAqIGBlYnhgOiBjb250YWlucyB0aGUgcGh5c2ljYWwgbWVtb3J5 IGFkZHJlc3Mgd2hlcmUgdGhlIGxvYWRlciBoYXMgcGxhY2VkCiAgIHRoZSBib290IHN0YXJ0IGlu Zm8gc3RydWN0dXJlLgoKICogYGNyMGA6IGJpdCAwIChQRSkgbXVzdCBiZSBzZXQuIEFsbCB0aGUg b3RoZXIgd3JpdGVhYmxlIGJpdHMgYXJlIGNsZWFyZWQuCgogKiBgY3I0YDogYWxsIGJpdHMgYXJl IGNsZWFyZWQuCgogKiBgY3NgOiBtdXN0IGJlIGEgMzItYml0IHJlYWQvZXhlY3V0ZSBjb2RlIHNl Z21lbnQgd2l0aCBhIGJhc2Ugb2Yg4oCYMOKAmQogICBhbmQgYSBsaW1pdCBvZiDigJgweEZGRkZG RkZG4oCZLiBUaGUgc2VsZWN0b3IgdmFsdWUgaXMgdW5zcGVjaWZpZWQuCgogKiBgZHNgLCBgZXNg OiBtdXN0IGJlIGEgMzItYml0IHJlYWQvd3JpdGUgZGF0YSBzZWdtZW50IHdpdGggYSBiYXNlIG9m CiAgIOKAmDDigJkgYW5kIGEgbGltaXQgb2Yg4oCYMHhGRkZGRkZGRuKAmS4gVGhlIHNlbGVjdG9y IHZhbHVlcyBhcmUgYWxsIHVuc3BlY2lmaWVkLgoKICogYHRyYDogbXVzdCBiZSBhIDMyLWJpdCBU U1MgKGFjdGl2ZSkgd2l0aCBhIGJhc2Ugb2YgJzAnIGFuZCBhIGxpbWl0IG9mICcweDY3Jy4KCiAq IGBlZmxhZ3NgOiBiaXQgMTcgKFZNKSBtdXN0IGJlIGNsZWFyZWQuIEJpdCA5IChJRikgbXVzdCBi ZSBjbGVhcmVkLgogICBCaXQgOCAoVEYpIG11c3QgYmUgY2xlYXJlZC4gT3RoZXIgYml0cyBhcmUg YWxsIHVuc3BlY2lmaWVkLgoKQWxsIG90aGVyIHByb2Nlc3NvciByZWdpc3RlcnMgYW5kIGZsYWcg Yml0cyBhcmUgdW5zcGVjaWZpZWQuIFRoZSBPUyBpcyBpbgpjaGFyZ2Ugb2Ygc2V0dGluZyB1cCBp dCdzIG93biBzdGFjaywgR0RUIGFuZCBJRFQuCgpUaGUgZm9ybWF0IG9mIHRoZSBib290IHN0YXJ0 IGluZm8gc3RydWN0dXJlIGlzIHRoZSBmb2xsb3dpbmcgKHBvaW50ZWQgdG8KYmUgJWVieCk6Cgog ICAgc3RydWN0IGh2bV9zdGFydF9pbmZvIHsKICAgICNkZWZpbmUgSFZNX1NUQVJUX01BR0lDX1ZB TFVFIDB4MzM2ZWM1NzgKICAgICAgICB1aW50MzJfdCBtYWdpYzsgICAgICAgICAgICAgLyogQ29u dGFpbnMgdGhlIG1hZ2ljIHZhbHVlIDB4MzM2ZWM1NzggICAgICAgKi8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogKCJ4RW4zIiB3aXRoIHRoZSAweDgwIGJpdCBvZiB0aGUg IkUiIHNldCkuKi8KICAgICAgICB1aW50MzJfdCBmbGFnczsgICAgICAgICAgICAgLyogU0lGX3h4 eCBmbGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICB1aW50MzJfdCBj bWRsaW5lX3BhZGRyOyAgICAgLyogUGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgY29tbWFuZCBsaW5l LiAgICAgKi8KICAgICAgICB1aW50MzJfdCBucl9tb2R1bGVzOyAgICAgICAgLyogTnVtYmVyIG9m IG1vZHVsZXMgcGFzc2VkIHRvIHRoZSBrZXJuZWwuICAgKi8KICAgICAgICB1aW50MzJfdCBtb2Rs aXN0X3BhZGRyOyAgICAgLyogUGh5c2ljYWwgYWRkcmVzcyBvZiBhbiBhcnJheSBvZiAgICAgICAg ICAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaHZtX21vZGxpc3Rf ZW50cnkuICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgIH07CgogICAgc3RydWN0IGh2bV9t b2RsaXN0X2VudHJ5IHsKICAgICAgICB1aW50MzJfdCBwYWRkcjsgICAgICAgICAgICAgLyogUGh5 c2ljYWwgYWRkcmVzcyBvZiB0aGUgbW9kdWxlLiAgICAgICAgICAgKi8KICAgICAgICB1aW50MzJf dCBzaXplOyAgICAgICAgICAgICAgLyogU2l6ZSBvZiB0aGUgbW9kdWxlIGluIGJ5dGVzLiAgICAg ICAgICAgICAgKi8KICAgIH07CgpPdGhlciByZWxldmFudCBpbmZvcm1hdGlvbiBuZWVkZWQgaW4g b3JkZXIgdG8gYm9vdCBhIGd1ZXN0IGtlcm5lbAooY29uc29sZSBwYWdlIGFkZHJlc3MsIHhlbnN0 b3JlIGV2ZW50IGNoYW5uZWwuLi4pIGNhbiBiZSBvYnRhaW5lZAp1c2luZyBIVk1QQVJBTVMsIGp1 c3QgbGlrZSBpdCdzIGRvbmUgb24gSFZNIGd1ZXN0cy4KClRoZSBzZXR1cCBvZiB0aGUgaHlwZXJj YWxsIHBhZ2UgaXMgYWxzbyBwZXJmb3JtZWQgaW4gdGhlIHNhbWUgd2F5CmFzIEhWTSBndWVzdHMs IHVzaW5nIHRoZSBoeXBlcnZpc29yIGNwdWlkIGxlYXZlcyBhbmQgbXNyIHJhbmdlcy4KCkhhcmR3 YXJlIGRlc2NyaXB0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpIYXJkd2FyZSBkZXNjcmlwdGlv biBjYW4gY29tZSBmcm9tIHR3byBkaWZmZXJlbnQgc291cmNlcywganVzdCBsaWtlIG9uIChQVilI Vk0KZ3Vlc3RzLgoKRGVzY3JpcHRpb24gb2YgUFYgZGV2aWNlcyB3aWxsIGFsd2F5cyBjb21lIGZy b20geGVuYnVzLCBhbmQgaW4gZmFjdAp4ZW5idXMgaXMgdGhlIG9ubHkgaGFyZHdhcmUgZGVzY3Jp cHRpb24gdGhhdCBpcyBndWFyYW50ZWVkIHRvIGFsd2F5cyBiZQpwcm92aWRlZCB0byBIVk1saXRl IGd1ZXN0cy4KCkRlc2NyaXB0aW9uIG9mIHBoeXNpY2FsIGhhcmR3YXJlIGRldmljZXMgd2lsbCBh bHdheXMgY29tZSBmcm9tIEFDUEksIGluIHRoZQphYnNlbmNlIG9mIGFueSBwaHlzaWNhbCBoYXJk d2FyZSBkZXZpY2Ugbm8gQUNQSSB0YWJsZXMgd2lsbCBiZSBwcm92aWRlZC4gVGhlCnByZXNlbmNl IG9mIEFDUEkgdGFibGVzIGNhbiBiZSBkZXRlY3RlZCBieSBmaW5kaW5nIHRoZSBSU0RQLCBqdXN0 IGxpa2Ugb24KYmFyZSBtZXRhbC4KCk5vbi1QViBkZXZpY2VzIGV4cG9zZWQgdG8gdGhlIGd1ZXN0 Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGUgaW5pdGlhbCBpZGVhIHdh cyB0byBzaW1wbHkgZG9uJ3QgcHJvdmlkZSBhbnkgZW11bGF0ZWQgZGV2aWNlcyB0byBhIEhWTWxp dGUKZ3Vlc3QgYXMgdGhlIGRlZmF1bHQgb3B0aW9uLiBXZSBoYXZlIGhvd2V2ZXIgaWRlbnRpZmll ZCBjZXJ0YWluIHNpdHVhdGlvbnMKd2hlcmUgZW11bGF0ZWQgZGV2aWNlcyBjb3VsZCBiZSBpbnRl cmVzdGluZywgYm90aCBmcm9tIGEgcGVyZm9ybWFuY2UgYW5kCmVhc3kgaW1wbGVtZW50YXRpb24g cG9pbnQgb2Ygdmlldy4gVGhlIGZvbGxvd2luZyBsaXN0IHRyaWVzIHRvIGVuY29tcGFzcwp0aGUg ZGlmZmVyZW50IGlkZW50aWZpZWQgc2NlbmFyaW9zOgoKICogMS4gSFZNbGl0ZSB3aXRoIG5vIGVt dWxhdGVkIGRldmljZXMgYXQgYWxsCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICBUaGlzIGlzIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGluc2lkZSBv ZiBYZW4sIGV2ZXJ5dGhpbmcgaXMgZGlzYWJsZWQKICAgYnkgZGVmYXVsdCBhbmQgdGhlIGd1ZXN0 IGhhcyBhY2Nlc3MgdG8gdGhlIFBWIGRldmljZXMgb25seS4gVGhpcyBpcyBvZgogICBjb3Vyc2Ug dGhlIG1vc3Qgc2VjdXJlIGRlc2lnbiBiZWNhdXNlIGl0IGhhcyB0aGUgc21hbGxlciBzdXJmYWNl IG9mIGF0dGFjay4KCiAqIDIuIEhWTWxpdGUgd2l0aCBQQ0ktcGFzc3Rocm91Z2gKICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBUaGUgY3VycmVudCBtb2RlbCBvZiBQQ0ktcGFz c3Rocm91Z2h0IGluIFBWIGd1ZXN0cyBpcyBjb21wbGV4IGFuZCByZXF1aXJlcwogICBoZWF2eSBt b2RpZmljYXRpb25zIHRvIHRoZSBndWVzdCBPUy4gR29pbmcgZm9yd2FyZCB3ZSB3b3VsZCBsaWtl IHRvIHJlbW92ZQogICB0aGlzIGxpbWl0YXRpb24sIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZhY2Ug dGhhdCdzIHRoZSBzYW1lIGFzIGZvdW5kIG9uIGJhcmUKICAgbWV0YWwuIEluIG9yZGVyIHRvIGRv IHRoaXMsIGF0IGxlYXN0IGFuIGVtdWxhdGVkIGxvY2FsIEFQSUMgYW5kIElPIEFQSUMKICAgc2hv dWxkIGJlIHByb3ZpZGVkIHRvIGd1ZXN0cywgdG9nZXRoZXIgd2l0aCB0aGUgYWNjZXNzIHRvIGEg UENJLVJvb3QgY29tcGxleC4KICAgQXMgc2FpZCBpbiB0aGUgJ0hhcmR3YXJlIGRlc2NyaXB0aW9u JyBzZWN0aW9uIGFib3ZlLCB0aGlzIHdpbGwgYWxzbyByZXF1aXJlCiAgIEFDUEkuIFNvIHRoaXMg cHJvcG9zZWQgc2NlbmFyaW8gd2lsbCByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgdGhh dCBhcmUKICAgbm90IHByZXNlbnQgaW4gdGhlIG1pbmltYWwgKG9yIGRlZmF1bHQpIEhWTWxpdGUg aW1wbGVtZW50YXRpb246IEFDUEksIGxvY2FsCiAgIEFQSUMgSU8gQVBJQyBhbmQgUENJLVJvb3Qg Y29tcGxleC4KCiAqIDMuIEhWTWxpdGUgaGFyZHdhcmUgZG9tYWluCiAgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgIFRoZSBhaW0gaXMgdGhhdCBhIEhWTWxpdGUgaGFyZHdhcmUgZG9tYWlu IGlzIGdvaW5nIHRvIHdvcmsgZXhhY3RseSBsaWtlIGEKICAgSFZNbGl0ZSBkb21haW4gd2l0aCBw YXNzZWQtdGhyb3VnaCBkZXZpY2VzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGRvbWFpbiB3aWxsCiAg IG5lZWQgYWNjZXNzIHRvIHRoZSBzYW1lIHNldCBvZiBlbXVsYXRlZCBkZXZpY2VzLCBhbmQgdGhh dCBzb21lIEFDUEkgdGFibGVzCiAgIG11c3QgYmUgZml4ZWQgaW4gb3JkZXIgdG8gcmVmbGVjdCB0 aGUgcmVhbGl0eSBvZiB0aGUgY29udGFpbmVyIHRoZSBoYXJkd2FyZQogICBkb21haW4gaXMgcnVu bmluZyBvbi4gVGhlIEFDUEkgc2VjdGlvbiBjb250YWlucyBtb3JlIGRldGFpbGVkIGluZm9ybWF0 aW9uCiAgIGFib3V0IHdoaWNoL2hvdyB0aGVzZSB0YWJsZXMgYXJlIGdvaW5nIHRvIGJlIGZpeGVk LgoKICAgTm90ZSB0aGF0IGluIHRoaXMgc2NlbmFyaW8gdGhlIGhhcmR3YXJlIGRvbWFpbiB3aWxs ICphbHdheXMqIGhhdmUgYSBsb2NhbAogICBBUElDIGFuZCBJTyBBUElDLCBhbmQgdGhhdCB0aGUg dXNhZ2Ugb2YgUEhZU0RFViBvcGVyYXRpb25zIGFuZCBQSVJRIGV2ZW50CiAgIGNoYW5uZWxzIGlz IGdvaW5nIHRvIGJlIHJlbW92ZWQgaW4gZmF2b3VyIG9mIHRoZSBiYXJlIG1ldGFsIG1lY2hhbmlz bXMuCgpUaGVyZSBoYXZlIGJlZW4gc29tZSBvcGluaW9ucyB0aGF0IHRoZSBjdXJyZW50IG1vZGVs ICgxKSBzaG91bGQgYmUgcmVwbGFjZWQKd2l0aCAoMikgd2l0aG91dCBhbnkgcGFzc2VkLXRocm91 Z2ggZGV2aWNlcywgc28gdGhhdCBhdCBsZWFzdCBhIGxvY2FsIEFQSUMgaXMKcHJvdmlkZWQuIFNo b3VsZCB0aGVuIGEgUlNEVCwgRkFEVCBhbmQgTUFEVCBiZSBwcm92aWRlZD8gV2Ugd291bGQgdGhl biBiZQphYmxlIHRvIHN3aXRjaCB0aGUgQ1BVIGVudW1lcmF0aW9uIHRvIHRoZSBvbmUgdXNlZCBv biBiYXJlIG1ldGFsIChpZTogdXNpbmcgdGhlCmRhdGEgaW4gdGhlIE1BRFQpLgoKQUNQSQotLS0t CgpBQ1BJIHRhYmxlcyB3aWxsIGJlIHByb3ZpZGVkIHRvIHRoZSBoYXJkd2FyZSBkb21haW4gb3Ig dG8gdW5wcml2aWxlZ2VkCmRvbWFpbnMgdGhhdCBoYXZlIHBhc3NlZC10aHJvdWdoIFBDSSBkZXZp Y2VzLiBJbiB0aGUgY2FzZSBvZiB1bnByaXZpbGVnZWQKZ3Vlc3RzIEFDUEkgdGFibGVzIGFyZSBn b2luZyB0byBiZSBjcmVhdGVkIGJ5IHRoZSB0b29sc3RhY2sgYW5kIHdpbGwgb25seQpjb250YWlu IHRoZSBzZXQgb2YgZGV2aWNlcyBhdmFpbGFibGUgdG8gdGhlIGd1ZXN0LCB3aGljaCB3aWxsIGF0 IGxlYXN0IGJlCnRoZSBmb2xsb3dpbmc6IGxvY2FsIEFQSUMsIElPIEFQSUMsIHRoZSBwYXNzZWQt dGhyb3VnaCBkZXZpY2UuIEluIG9yZGVyIHRvCnByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBmcm9t IEFDUEkgdGhlIGZvbGxvd2luZyB0YWJsZXMgYXJlIG5lZWRlZCBhcyBhCm1pbmltdW06IFJTRFQs IEZBRFQsIE1BRFQgYW5kIERTRFQuCgpJbiB0aGUgY2FzZSBvZiB0aGUgaGFyZHdhcmUgZG9tYWlu LCBYZW4gaGFzIHRyYWRpdGlvbmFsbHkgcGFzc2VkLXRocm91Z2ggdGhlCm5hdGl2ZSBBQ1BJIHRh YmxlcyB0byB0aGUgZ3Vlc3QuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgb2YgY291cnNlIHdlIHN0 aWxsCndhbnQgdG8gZG8sIGJ1dCBpbiB0aGUgY2FzZSBvZiBIVk1saXRlIFhlbiB3aWxsIGhhdmUg dG8gbWFrZSBzdXJlIHRoYXQKdGhlIGRhdGEgcGFzc2VkIGluIHRoZSBBQ1BJIHRhYmxlcyB0byB0 aGUgaGFyZHdhcmUgZG9tYWluIGNvbnRhaW4gdGhlIGFjY3VyYXRlCmhhcmR3YXJlIGRlc2NyaXB0 aW9uLiBUaGlzIG1lYW5zIHRoYXQgYXQgbGVhc3QgY2VydGFpbiB0YWJsZXMgd2lsbCBoYXZlIHRv CmJlIG1vZGlmaWVkL21hbmdsZWQgYmVmb3JlIGJlaW5nIHByZXNlbnRlZCB0byB0aGUgZ3Vlc3Q6 CgogKiBNQURUOiB0aGUgbnVtYmVyIG9mIGxvY2FsIEFQSUMgZW50cmllcyBuZWVkIHRvIGJlIGZp eGVkIHRvIG1hdGNoIHRoZSBudW1iZXIKICAgICAgICAgb2YgdkNQVXMgYXZhaWxhYmxlIHRvIHRo ZSBndWVzdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIElPIEFQSUMocykgYWxzbwogICAgICAgICBuZWVk IHRvIGJlIGZpeGVkIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBlbXVsYXRlZCBvbmVzIHRoYXQgd2Ug YXJlIGdvaW5nCiAgICAgICAgIHRvIHByb3ZpZGUuCgogKiBEU0RUOiBjZXJ0YWluIGRldmljZXMg cmVwb3J0ZWQgaW4gdGhlIERTRFQgbWF5IG5vdCBiZSBhdmFpbGFibGUgdG8gdGhlIGd1ZXN0LAog ICAgICAgICBidXQgc2luY2UgdGhlIERTRFQgaXMgYSBydW4tdGltZSBnZW5lcmF0ZWQgdGFibGUg d2UgY2Fubm90IGZpeCBpdC4gSW4KICAgICAgICAgb3JkZXIgdG8gY29wZSB3aXRoIHRoaXMsIGEg U1RBTyB0YWJsZSB3aWxsIGJlIHByb3ZpZGVkIHRoYXQgc2hvdWxkCiAgICAgICAgIGJlIGFibGUg dG8gc2lnbmFsIHdoaWNoIGRldmljZXMgYXJlIG5vdCBhdmFpbGFibGUgdG8gdGhlIGhhcmR3YXJl CiAgICAgICAgIGRvbWFpbi4gVGhpcyBpcyBpbiBsaW5lIHdpdGggdGhlIFhlbi9BQ1BJIGltcGxl bWVudGF0aW9uIGZvciBBUk0uCgogKiBNUFNULCBQTVRULCBTQlRUIGFuZCBTUkFUOiB3b24ndCBi ZSBpbml0aWFsbHkgcHJlc2VudGVkIHRvIHRoZSBndWVzdCwgdW50aWwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2UgZ2V0IG91ciBhY3QgdG9nZXRoZXIgb24gdGhlIHZOVU1BIHN0dWZm LgoKTkI6IHRoZXJlIGFyZSBjb3JuZXIgY2FzZXMgdGhhdCBJJ20gbm90IHN1cmUgaG93IHRvIHNv bHZlIHByb3Blcmx5LiBDdXJyZW50bHkKdGhlIGhhcmR3YXJlIGRvbWFpbiBoYXMgc29tZSAnaGFj a3MnIHJlZ2FyZGluZyBBQ1BJIGFuZCBYZW4uIEF0IGxlYXN0IEknbSBhd2FyZQpvZiB0aGUgZm9s bG93aW5nOgoKICogMS4gUmVwb3J0aW5nIENQVSBQTSBpbmZvIGJhY2sgdG8gWGVuOiB0aGlzIGNv bWVzIGZyb20gdGhlIERTRFQgdGFibGUsIGFuZAogICBzaW5jZSB0aGlzIHRhYmxlIGlzIG9ubHkg YXZhaWxhYmxlIHRvIHRoZSBoYXJkd2FyZSBkb21haW4gaXQgaGFzIHRvIHJlcG9ydAogICB0aGUg UE0gaW5mbyBiYWNrIHRvIFhlbiBzbyB0aGF0IFhlbiBjYW4gcGVyZm9ybSBwcm9wZXIgUE0uCiAq IDIuIERvaW5nIHByb3BlciBzaHV0ZG93biAoUzUpIHJlcXVpcmVzIHRoZSB1c2FnZSBvZiBhIGh5 cGVyY2FsbCwgd2hpY2ggaXMKICAgbWl4ZWQgd2l0aCBuYXRpdmUgQUNQSUNBIGNvZGUgaW4gbW9z dCBPU2VzLiBUaGlzIGlzIGF3a3dhcmQgYW5kIHJlcXVpcmVzCiAgIHRoZSB1c2FnZSBvZiBob29r cyBpbnRvIEFDUElDQSB3aGljaCB3ZSBoYXZlIG5vdCB5ZXQgbWFuYWdlZCB0byB1cHN0cmVhbS4K ICogMy4gUmVwb3J0aW5nIHRoZSBQQ0kgZGV2aWNlcyBpdCBmaW5kcyB0byB0aGUgaHlwZXJ2aXNv cjogdGhpcyBpcyBub3QgdmVyeQogICBpbnRydXNpdmUgaW4gZ2VuZXJhbCwgc28gSSdtIG5vdCB0 aGF0IHB1c2hlZCB0byByZW1vdmUgaXQuIEl0J3MgZ2VuZXJhbGx5CiAgIGVhc3kgaW4gYW55IE9T IHRvIGFkZCBzb21lIGtpbmQgb2YgaG9vayB0aGF0J3MgZXhlY3V0ZWQgZXZlcnkgdGltZSBhIFBD SQogICBkZXZpY2UgaXMgZGlzY292ZXJlZC4KICogNC4gUmVwb3J0IFBDSSBtZW1vcnktbWFwcGVk IGNvbmZpZ3VyYXRpb24gYXJlYXMgdG8gWGVuOiBteSBvcGluaW9uIHJlZ2FyZGluZwogICB0aGlz IG9uZSBpcyB0aGUgc2FtZSBhcyAoMyksIGl0J3Mgbm90IHJlYWxseSBpbnRydXNpdmUgc28gSSdt IG5vdCB2ZXJ5CiAgIHB1c2hlZCB0byByZW1vdmUgaXQuCgpJIHdvdWxkIGlkZWFsbHkgbGlrZSB0 byBnZXQgcmlkIG9mICgyKSBpbiB0aGUgbGlzdCBhYm92ZSwgc2luY2UgSSdtIHF1aXRlIHN1cmUK d2UgYXJlIG5ldmVyIGdvaW5nIHRvIGJlIGFibGUgdG8gbWVyZ2UgdGhlIG5lZWRlZCBob29rcyBp bnRvIEFDUElDQS4gQUZBSUNUIFhlbgpzaG91bGQgYmUgYWJsZSB0byBwYXJzZSB0aGUgRkFEVCB0 YWJsZSBhbmQgZmluZCB0aGUgYWRkcmVzcyBvZiB0aGUgUE0xYSBhbmQKUE0xYiBjb250cm9sIHJl Z2lzdGVycyBhbmQgdHJhcCBvbiBhY2Nlc3MuCgooMSkgaXMgYWxzbyBxdWl0ZSBuYXN0eSwgYnV0 IEkgZG9uJ3Qgc2VlIGFueSBwb3NzaWJsZSB3YXkgdG8gZ2V0IHJpZCBvZiBpdC4KCkFQIHN0YXJ0 dXAKLS0tLS0tLS0tLQoKQVAgc3RhcnR1cCBpcyBwZXJmb3JtZWQgdXNpbmcgaHlwZXJjYWxscy4g VGhlIGZvbGxvd2luZyBWQ1BVIG9wZXJhdGlvbnMKYXJlIHVzZWQgaW4gb3JkZXIgdG8gYnJpbmcg dXAgc2Vjb25kYXJ5IHZDUFVzOgoKICogVkNQVU9QX2luaXRpYWxpc2UgaXMgdXNlZCB0byBzZXQg dGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIHZDUFUuIFRoZQogICBhcmd1bWVudCBwYXNzZWQgdG8g dGhlIGh5cGVyY2FsbCBtdXN0IGJlIG9mIHRoZSB0eXBlIHZjcHVfaHZtX2NvbnRleHQuCiAgIFNl ZSBwdWJsaWMvaHZtL2h2bV92Y3B1LmggZm9yIHRoZSBsYXlvdXQgb2YgdGhlIHN0cnVjdHVyZS4g Tm90ZSB0aGF0CiAgIHRoaXMgaHlwZXJjYWxsIGFsbG93cyBzdGFydGluZyB0aGUgdkNQVSBpbiBz ZXZlcmFsIG1vZGVzICgxNi8zMi82NGJpdHMpLAogICByZWdhcmRsZXNzIG9mIHRoZSBtb2RlIHRo ZSBCU1AgaXMgY3VycmVudGx5IHJ1bm5pbmcgb24uCgogKiBWQ1BVT1BfdXAgaXMgdXNlZCB0byBs YXVuY2ggdGhlIHZDUFUgb25jZSB0aGUgaW5pdGlhbCBzdGF0ZSBoYXMgYmVlbgogICBzZXQgdXNp bmcgVkNQVU9QX2luaXRpYWxpc2UuCgogKiBWQ1BVT1BfZG93biBpcyB1c2VkIHRvIGJyaW5nIGRv d24gYSB2Q1BVLgoKICogVkNQVU9QX2lzX3VwIGlzIHVzZWQgdG8gc2NhbiB0aGUgbnVtYmVyIG9m IGF2YWlsYWJsZSB2Q1BVcy4KCkFkZGl0aW9uYWxseSwgaWYgYSBsb2NhbCBBUElDIGlzIGF2YWls YWJsZSBDUFUgYnJpbmd1cCBjYW4gYWxzbyBiZSBwZXJmb3JtZWQKdXNpbmcgdGhlIGhhcmR3YXJl IG5hdGl2ZSBBUCBzdGFydHVwIHNlcXVlbmNlIChJUElzKS4gSW4gdGhpcyBjYXNlIHRoZQpoeXBl cmNhbGwgaW50ZXJmYWNlIHdpbGwgc3RpbGwgYmUgcHJvdmlkZWQsIGFzIGEgZmFzdGVyIGFuZCBt b3JlIGNvbnZlbmllbnQKd2F5IG9mIHN0YXJ0aW5nIEFQcy4KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==