From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [v2 0/3] Enable L2 Cache Allocation Technology Date: Thu, 22 Sep 2016 10:14:00 +0800 Message-ID: <1474510440-29478-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bmtXB-00073u-2l for xen-devel@lists.xenproject.org; Thu, 22 Sep 2016 02:14:45 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org RGVzaWduIGRvY3VtZW50IGlzIGJlbG93Ogo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQolIEludGVsIEwyIENhY2hl IEFsbG9jYXRpb24gVGVjaG5vbG9neSAoTDIgQ0FUKSBGZWF0dXJlCiUgUmV2aXNpb24gMi4wCgpc Y2xlYXJwYWdlCgpIaSBhbGwsCgpXZSBwbGFuIHRvIGJyaW5nIGEgbmV3IFBTUiAoUGxhdGZvcm0g U2hhcmVkIFJlc291cmNlKSBmZWF0dXJlIGNhbGxlZApJbnRlbCBMMiBDYWNoZSBBbGxvY2F0aW9u IFRlY2hub2xvZ3kgKEwyIENBVCkgdG8gWGVuLgoKVGhpcyBpcyB0aGUgZGVzaWduIG9mIEwyIENB VC4gSXQgbWlnaHQgYmUgYSBsaXR0bGUgbG9uZyBhbmQgZGV0YWlsZWQsIGhvcGUKaXQgZG9lc24n dCBtYXR0ZXIuCgpCZXNpZGVzIHRoZSBMMiBDQVQgaW1wbGVtZW50YWlvbiwgd2UgcmVmYWN0b3Ig dGhlIHBzci5jIHRvIG1ha2UgaXQgbW9yZQpmbGV4aWJsZSB0byBhZGQgbmV3IGZlYXR1cmVzIGFu ZCBmdWxmaWxsIHRoZSBwcmluY2lwbGUsIG9wZW4gZm9yIGV4dGVuc2lvbgpidXQgY2xvc2VkIGZv ciBtb2RpZmljYXRpb24uIAoKQ29tbWVudHMgYW5kIHN1Z2dlc3Rpb25zIGFyZSB3ZWxjb21lIDot KQoKIyBCYXNpY3MKCi0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICBTdGF0dXM6ICoqVGVjaCBQcmV2aWV3 KioKCkFyY2hpdGVjdHVyZShzKTogSW50ZWwgeDg2CgogICBDb21wb25lbnQocyk6IEh5cGVydmlz b3IsIHRvb2xzdGFjawoKICAgICAgIEhhcmR3YXJlOiBBdG9tIGNvZGVuYW1lIEdvbGRtb250IGFu ZCBiZXlvbmQKLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIE92ZXJ2aWV3CgpMMiBDQVQgYWxsb3dzIGFuIE9TIG9y IEh5cGVydmlzb3IvVk1NIHRvIGNvbnRyb2wgYWxsb2NhdGlvbiBvZiBhCkNQVSdzIHNoYXJlZCBM MiBjYWNoZSBiYXNlZCBvbiBhcHBsaWNhdGlvbiBwcmlvcml0eSBvciBDbGFzcyBvZiBTZXJ2aWNl CihDT1MpLiBFYWNoIENMT1MgaXMgY29uZmlndXJlZCB1c2luZyBjYXBhY2l0eSBiaXRtYXNrcyAo Q0JNKSB3aGljaApyZXByZXNlbnQgY2FjaGUgY2FwYWNpdHkgYW5kIGluZGljYXRlIHRoZSBkZWdy ZWUgb2Ygb3ZlcmxhcCBhbmQKaXNvbGF0aW9uIGJldHdlZW4gY2xhc3Nlcy4gT25jZSBMMiBDQVQg aXMgY29uZmlndXJlZCwgdGhlIHByb2Nlc3NvcgphbGxvd3MgYWNjZXNzIHRvIHBvcnRpb25zIG9m IEwyIGNhY2hlIGFjY29yZGluZyB0byB0aGUgZXN0YWJsaXNoZWQKY2xhc3Mgb2Ygc2VydmljZSAo Q09TKS4KCiMgVGVjaG5pY2FsIGluZm9ybWF0aW9uCgpMMiBDQVQgaXMgYSBtZW1iZXIgb2YgSW50 ZWwgUFNSIGZlYXR1cmVzIGFuZCBwYXJ0IG9mIENBVCwgaXQgc2hhcmVzCnNvbWUgYmFzZSBQU1Ig aW5mcmFzdHJ1Y3R1cmUgaW4gWGVuLgoKIyMgSGFyZHdhcmUgcGVyc3BlY3RpdmUKCkwyIENBVCBk ZWZpbmVzIGEgbmV3IHJhbmdlIE1TUnMgdG8gYXNzaWduIGRpZmZlcmVudCBMMiBjYWNoZSBhY2Nl c3MKcGF0dGVybnMgd2hpY2ggYXJlIGtub3duIGFzIENCTXMgKENhcGFjaXR5IEJpdE1hc2spLCBl YWNoIENCTSBpcwphc3NvY2lhdGVkIHdpdGggYSBDT1MuCgpgYGAKCiAgICAgICAgICAgICAgICAg ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCiAg IElBMzJfUFFSX0FTU09DICAgICAgIHwgTVNSIChwZXIgc29ja2V0KSAgICAgICAgICAgfCAgICBB ZGRyZXNzICAgICB8CiArLS0tLSstLS0rLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCiB8ICAgIHxDT1N8ICAgICAgIHwgICAgIHwgSUEz Ml9MMl9RT1NfTUFTS18wICAgICAgICAgfCAgICAgMHhEMTAgICAgICB8CiArLS0tLSstLS0rLS0t LS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CiAgICAgICAg4pSULS0tLS0tLS0tLS0tLT4gfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICB8 ICAuLi4gICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAg fCBJQTMyX0wyX1FPU19NQVNLX24gICAgICAgICB8IDB4RDEwK24gKG48NjQpIHwKICAgICAgICAg ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKYGBgCgpXaGVuIGNvbnRleHQgc3dpdGNoIGhhcHBlbnMsIHRoZSBDT1Mgb2YgVkNQVSBp cyB3cml0dGVuIHRvIHBlci10aHJlYWQKTVNSIGBJQTMyX1BRUl9BU1NPQ2AsIGFuZCB0aGVuIGhh cmR3YXJlIGVuZm9yY2VzIEwyIGNhY2hlIGFsbG9jYXRpb24KYWNjb3JkaW5nIHRvIHRoZSBjb3Jy ZXNwb25kaW5nIENCTS4KCiMjIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBMMiBDQVQgYW5kIEwz IENBVC9DRFAKCkwyIENBVCBpcyBpbmRlcGVuZGVudCBvZiBMMyBDQVQvQ0RQLCB3aGljaCBtZWFu cyBMMiBDQVQgd291bGQgYmUgZW5hYmxlZAp3aGlsZSBMMyBDQVQvQ0RQIGlzIGRpc2FibGVkLCBv ciBMMiBDQVQgYW5kIEwzIENBVC9DRFAgYXJlIGFsbCBlbmFibGVkLgoKTDIgQ0FUIHVzZXMgYSBu ZXcgcmFuZ2UgQ0JNcyBmcm9tIDB4RDEwIH4gMHhEMTArbiAobjw2NCksIGZvbGxvd2luZyBieQp0 aGUgTDMgQ0FUL0NEUCBDQk1zLCBhbmQgc3VwcG9ydHMgc2V0dGluZyBkaWZmZXJlbnQgTDIgY2Fj aGUgYWNjZXNzaW5nCnBhdHRlcm5zIGZyb20gTDMgY2FjaGUuIExpa2UgTDMgQ0FUL0NEUCByZXF1 aXJlbWVudCwgdGhlIGJpdHMgb2YgQ0JNIG9mCkwyIENBVCBtdXN0IGJlIGNvbnRpbnVvdXMgdG9v LgoKTi5CLiBMMiBDQVQgYW5kIEwzIENBVC9DRFAgc2hhcmUgdGhlIHNhbWUgQ09TIGZpZWxkIGlu IHRoZSBzYW1lCmFzc29jaWF0ZSByZWdpc3RlciBgSUEzMl9QUVJfQVNTT0NgLCB3aGljaCBtZWFu cyBvbmUgQ09TIGFzc29jaWF0ZSB0byBhCnBhaXIgb2YgTDIgQ0JNIGFuZCBMMyBDQk0uCkJlc2lk ZXMsIHRoZSBtYXggQ09TIG9mIEwyIENBVCBtYXkgYmUgZGlmZmVyZW50IGZyb20gTDMgQ0FUL0NE UCAob3IKb3RoZXIgUFNSIGZlYXR1cmVzIGluIGZ1dHVyZSkuIEluIHNvbWUgY2FzZXMsIGEgVk0g aXMgcGVybWl0dGVkIHRvIGhhdmUgYQpDT1MgdGhhdCBpcyBiZXlvbmQgb25lIChvciBtb3JlKSBv ZiBQU1IgZmVhdHVyZXMgYnV0IHdpdGhpbiB0aGUgb3RoZXJzLiAKRm9yIGluc3RhbmNlLCBsZXQn cyBhc3N1bWUgdGhlIG1heCBDT1Mgb2YgTDIgQ0FUIGlzIDggYnV0IHRoZSBtYXggQ09TIG9mCkwz IENBVCBpcyAxNiwgd2hlbiBhIFZNIGlzIGFzc2lnbmVkIDkgYXMgQ09TLCB0aGUgTDMgQ0JNIGFz c29jaWF0ZWQgdG8KQ09TIDkgd291bGQgYmUgZW5mb3JjZWQsIGJ1dCBmb3IgTDIgQ0FULCB0aGUg YmVoYXZpb3IgaXMgZnVsbHkgb3BlbiAobm8KbGltaXQpIHNpbmNlIENPUyA5IGlzIGJleW9uZCB0 aGUgbWF4IENPUyAoOCkgb2YgTDIgQ0FULgoKIyMgRGVzaWduIE92ZXJ2aWV3CgoqIENvcmUgQ09T L0NCTSBhc3NvY2lhdGlvbgoKICBXaGVuIGVuZm9yY2luZyBMMiBDQVQsIGFsbCBjb3JlcyBvZiBk b21haW5zIGhhdmUgdGhlIHNhbWUgZGVmYXVsdAogIENPUyAoQ09TMCkgd2hpY2ggYXNzb2NpYXRl ZCB0byB0aGUgZnVsbHkgb3BlbiBDQk0gKGFsbCBvbmVzIGJpdG1hc2spCiAgdG8gYWNjZXNzIGFs bCBMMiBjYWNoZS4gVGhlIGRlZmF1bHQgQ09TIGlzIHVzZWQgb25seSBpbiBoeXBlcnZpc29yCiAg YW5kIGlzIHRyYW5zcGFyZW50IHRvIHRvb2wgc3RhY2sgYW5kIHVzZXIuCgogIFN5c3RlbSBhZG1p bmlzdHJhdG9yIGNhbiBjaGFuZ2UgUFNSIGFsbG9jYXRpb24gcG9saWN5IGF0IHJ1bnRpbWUgYnkK ICB0b29sIHN0YWNrLiBTaW5jZSBMMiBDQVQgc2hhcmUgQ09TIHdpdGggTDMgQ0FUL0NEUCwgYSBD T1MgY29ycmVzcG9uZHMKICB0byBhIDItdHVwbGUsIGxpa2UgW0wyIENCTSwgTDMgQ0JNXSB3aXRo IG9ubHktQ0FUIGVuYWJsZWQsIHdoZW4gQ0RQCiAgaXMgZW5hYmxlZCwgb25lIENPUyBjb3JyZXNw b25kcyB0byBhIDMtdHVwbGUsIGxpa2UgW0wyIENCTSwKICBMMyBDb2RlX0NCTSwgTDMgRGF0YV9D Qk1dLiBJZiBuZWl0aGVyIEwzIENBVCBub3IgTDMgQ0RQIGlzIGVuYWJsZWQsCiAgdGhpbmdzIHdv dWxkIGJlIGVhc2llciwgb25lIENPUyBjb3JyZXNwb25kcyB0byBvbmUgTDIgQ0JNLgoKKiBWQ1BV IHNjaGVkdWxlCgogIFRoaXMgcGFydCByZXVzZXMgTDMgQ0FUIENPUyBpbmZyYXN0cnVjdHVyZS4K CiogTXVsdGktc29ja2V0cwoKICBEaWZmZXJlbnQgc29ja2V0cyBtYXkgaGF2ZSBkaWZmZXJlbnQg TDIgQ0FUIGNhcGFiaWxpdHkgKGUuZy4gbWF4IENPUykKICBhbHRob3VnaCBpdCBpcyBjb25zaXN0 ZW50IG9uIHRoZSBzYW1lIHNvY2tldC4gU28gdGhlIGNhcGFiaWxpdHkgb2YKICBwZXItc29ja2V0 IEwyIENBVCBpcyBzcGVjaWZpZWQuCgojIyBJbXBsZW1lbnRhdGlvbiBEZXNjcmlwdGlvbgoKKiBI eXBlcnZpc29yIGludGVyZmFjZXM6CgogIDEuIEV4dDogQm9vdCBsaW5lIHBhcmFtZXRlciAicHNy PWNhdCIgbm93IHdpbGwgZW5hYmxlIEwyIENBVCBhbmQgTDMKICAgICAgICAgIENBVCBpZiBoYXJk d2FyZSBzdXBwb3J0ZWQuCgogIDIuIE5ldzogU1lTQ1RMOgogICAgICAgICAgLSBYRU5fU1lTQ1RM X1BTUl9DQVRfZ2V0X2wyX2luZm86IEdldCBMMiBDQVQgaW5mb3JtYXRpb24uCgogIDMuIE5ldzog RE9NQ1RMOgogICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTTogR2V0 IEwyIENCTSBmb3IgYSBkb21haW4uCiAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9T RVRfTDJfQ0JNOiBTZXQgTDIgQ0JNIGZvciBhIGRvbWFpbi4KCiogeGwgaW50ZXJmYWNlczoKCiAg MS4gRXh0OiBwc3ItY2F0LXNob3cgLWwyIGRvbWFpbi1pZAogICAgICAgICAgU2hvdyBMMiBjYm0g Zm9yIGEgZG9tYWluLgogICAgICAgICAgPT4gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sMl9pbmZv IC8KICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJfQ0JNCgogIDIuIEV4 dDogcHNyLW1iYS1zZXQgLWwyIGRvbWFpbi1pZCBjYm0KICAgICAgICAgIFNldCBMMiBjYm0gZm9y IGEgZG9tYWluLgogICAgICAgICAgPT4gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MMl9DQk0K CiAgMy4gRXh0OiBwc3ItaHdpbmZvCiAgICAgICAgICBTaG93IFBTUiBIVyBpbmZvcm1hdGlvbiwg aW5jbHVkaW5nIEwyIENBVAogICAgICAgICAgPT4gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sMl9p bmZvCgoqIEtleSBkYXRhIHN0cnVjdHVyZToKCiAgIDEuIEZlYXR1cmUgaW5mbwoKICAgICAgYGBg CiAgICAgIHN0cnVjdCBmZWF0X2luZm8gewogICAgICAgICAgdW5pb24gewogICAgICAgICAgICAg IHN0cnVjdCBwc3JfY2F0X2x2bF9pbmZvIGwzX2luZm87CiAgICAgICAgICAgICAgc3RydWN0IHBz cl9jYXRfbHZsX2luZm8gbDJfaW5mbzsKICAgICAgICAgIH07CiAgICAgIH07CiAgICAgIGBgYAoK ICAgICAgLSBNZW1iZXIgYGwzX2luZm9gCgogICAgICAgIGBsM19pbmZvYCBpcyB0aGUgaGFyZHdh cmUgaW5mbyBvZiBMMyBDQVQuCgogICAgICAtIE1lbWJlciBgbDJfaW5mb2AKCiAgICAgICAgYGwy X2luZm9gIGlzIHRoZSBoYXJkd2FyZSBpbmZvIG9mIEwyIENBVC4KCiAgIDIuIEZlYXR1cmUgbGlz dAoKICAgICAgYGBgCiAgICAgIHN0cnVjdCBmZWF0X2xpc3QgewogICAgICAgICAgdW5zaWduZWQg aW50IGZlYXR1cmU7CiAgICAgICAgICBzdHJ1Y3QgZmVhdF9vcHMgb3BzOwogICAgICAgICAgdW5z aWduZWQgZmVhdF9pbmZvIGluZm87CiAgICAgICAgICB1aW50NjRfdCBjb3NfcmVnX3ZhbFtNQVhf Q09TX1JFR19OVU1dOwogICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICB9Owog ICAgICBgYGAKCiAgICAgIFdoZW4gYSBQU1IgZW5mb3JjZW1lbnQgZmVhdHVyZSBpcyBlbmFibGVk LCBpdCB3aWxsIGJlIGFkZGVkIGludG8gYQogICAgICBmZWF0dXJlIGxpc3QuIFRoZSBoZWFkIG9m IHRoZSBsaXN0IGlzIGNyZWF0ZWQgaW4gcHNyIGluaXRpYWxpemF0aW9uLgoJIAogICAgICAtIE1l bWJlciBgZmVhdHVyZWAKCiAgICAgICAgYGZlYXR1cmVgIGlzIGFuIGludGVnZXIgbnVtYmVyLCB0 byBpbmRpY2F0ZSB3aGljaCBmZWF0dXJlIHRoZSBsaXN0IG1lbWJlcgogICAgICAgIGNvcnJlc3Bv bmRzIHRvLgoKICAgICAgLSBNZW1iZXIgYG9wc2AKCiAgICAgICAgYG9wc2AgbWFpbnRhaW5zIGEg Y2FsbGJhY2sgZnVuY3Rpb24gbGlzdCBvZiB0aGUgZmVhdHVyZS4gSXQgd2lsbCBiZSBpbnRyb2R1 Y2VkCiAgICAgICAgaW4gZGV0YWlscyBsYXRlci4KCiAgICAgIC0gTWVtYmVyIGBpbmZvYAoKICAg ICAgICBgaW5mb2AgbWFpbnRhaW5zIHRoZSBmZWF0dXJlIEhXIGluZm9ybWF0aW9uIHdoaWNoIGNh biBiZSBnb3QgdGhyb3VnaAogICAgICAgIHBzcl9od2luZm8gY29tbWFuZC4JCQoKICAgICAgLSBN ZW1iZXIgYGNvc19yZWdfdmFsYAoKICAgICAgICBgY29zX3JlZl92YWxgIGlzIGFuIGFycmF5IHRv IG1haW50YWluIHRoZSB2YWx1ZSBzZXQgaW4gYWxsIENPUyByZWdpc3RlcnMgb2YKICAgICAgICB0 aGUgZmVhdHVyZS4KCiAgIDMuIFBlci1zb2NrZXQgUFNSIGZlYXR1cmVzIGluZm9ybWF0aW9uIHN0 cnVjdHVyZQoKICAgICAgYGBgCiAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gewogICAgICAg ICAgdW5zaWduZWQgaW50IGZlYXR1cmVzOwogICAgICAgICAgdW5zaWduZWQgaW50IG5yX2ZlYXQ7 CiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZlYXRfbGlzdDsKICAgICAgICAgIHN0cnVjdCBw c3JfcmVmICpjb3NfcmVmOwogICAgICAgICAgc3BpbmxvY2tfdCBtYXNrX2xvY2s7CiAgICAgIH07 CiAgICAgIGBgYAoKICAgICAgV2UgY29sbGVjdCBhbGwgUFNSIGFsbG9jYXRpb24gZmVhdHVyZXMg aW5mb3JtYXRpb24gb2YgYSBzb2NrZXQgaW4KICAgICAgdGhpcyBgc3RydWN0IHBzcl9zb2NrZXRf YWxsb2NfaW5mb2AuCgogICAgICAtIE1lbWJlciBgZmVhdHVyZXNgCgogICAgICAgIGBmZWF0dXJl c2AgaXMgYSBiaXRtYXAsIHRvIGluZGljYXRlIHdoaWNoIGZlYXR1cmUgaXMgZW5hYmxlZCBvbgog ICAgICAgIGN1cnJlbnQgc29ja2V0LiBXZSBkZWZpbmUgYGZlYXR1cmVzYCBiaXRtYXAgYXM6Cgog ICAgICAgIGJpdCAwfjE6IEwzIENBVCBzdGF0dXMsIFswMV0gc3RhbmRzIGZvciBMMyBDQVQgb25s eSBhbmQgWzEwXQogICAgICAgICAgICAgICAgIHN0YW5kcyBmb3IgTDMgQ0RQIGlzIGVuYWxiZWQu CgogICAgICAgIGJpdCAyOiBMMiBDQVQgc3RhdHVzLgoKICAgICAgLSBNZW1iZXIgYGNvc19yZWZg CgogICAgICAgIGBjb3NfcmVmYCBpcyBhbiBhcnJheSB3aGljaCBtYWludGFpbnMgdGhlIHJlZmVy ZW5jZSBvZiBvbmUgQ09TLgogICAgICAgIElmIHRoZSBDT1MgaXMgdXNlZCBieSBvbmUgZG9tYWlu LCB0aGUgcmVmZXJlbmNlIHdpbGwgaW5jcmVhc2Ugb25lLgogICAgICAgIElmIGEgZG9tYWluIHJl bGVhc2VzIHRoZSBDT1MsIHRoZSByZWZlcmVuY2Ugd2lsbCBkZWNyZWFzZSBvbmUuIFRoZQogICAg ICAgIGFycmF5IGlzIGluZGV4ZWQgYnkgQ09TLgoKICAgNC4gRmVhdHVyZSBvcGVyYXRpb24gZnVu Y3Rpb25zIHN0cnVjdHVyZQoKICAgICAgYGBgCiAgICAgIHN0cnVjdCBmZWF0X29wcyB7CiAgICAg ICAgICB2b2lkICgqaW5pdF9mZWF0dXJlKSh1bnNpZ25lZCBpbnQgZWF4LCB1bnNpZ25lZCBpbnQg ZWJ4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGVjeCwgdW5z aWduZWQgaW50IGVkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0 X2xpc3QgKmZlYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHNyX3Nv Y2tldF9pbmZvICppbmZvKTsKICAgICAgICAgIHVuc2lnbmVkIGludCAoKmdldF9jb3NfbnVtKShj b25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0KTsKICAgICAgICAgIGludCAoKmdldF9vbGRfdmFs KSh1aW50NjRfdCB2YWxbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgZmVhdF9saXN0ICpmZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBvbGRfY29zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90 eXBlIHR5cGUpOwogICAgICAgICAgaW50ICgqc2V0X25ld192YWwpKHVpbnQ2NF90IHZhbFtdLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9jb3MsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfdmFsX3R5cGUgdHlwZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBtKTsKICAgICAgICAgIGludCAoKmNvbXBhcmVf dmFsKShjb25zdCB1aW50NjRfdCB2YWxbXSwgY29uc3Qgc3RydWN0IGZlYXRfbGlzdCAqZmVhdCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY29zLCBib29sICpmb3Vu ZCk7CiAgICAgICAgICB1bnNpZ25lZCBpbnQgKCpnZXRfY29zX21heF9mcm9tX3R5cGUpKGNvbnN0 IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5cGUpOwogICAgICAgICAgdW5zaWdu ZWQgaW50ICgqZXhjZWVkc19jb3NfbWF4KShjb25zdCB1aW50NjRfdCB2YWxbXSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZlYXRfbGlzdCAq ZmVhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGNvcyk7CiAgICAgICAgICBpbnQgKCp3cml0ZV9tc3IpKHVuc2lnbmVkIGludCBjb3MsIGNv bnN0IHVpbnQ2NF90IHZhbFtdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZl YXRfbGlzdCAqZmVhdCk7CiAgICAgICAgICBpbnQgKCpnZXRfdmFsKShjb25zdCBzdHJ1Y3QgZmVh dF9saXN0ICpmZWF0LCB1bnNpZ25lZCBpbnQgY29zLAogICAgICAgICAgICAgICAgICAgICAgICAg ZW51bSBwc3JfdmFsX3R5cGUgdHlwZSwgdWludDY0X3QgKnZhbCk7CiAgICAgICAgICBpbnQgKCpn ZXRfdmFsKShjb25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0LCB1bnNpZ25lZCBpbnQgY29zLAog ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfdmFsX3R5cGUgdHlwZSwgdWludDY0X3Qg KnZhbCk7CiAgICAgICAgICB1bnNpZ25lZCBpbnQgKCpnZXRfbWF4X2Nvc19tYXgpKGNvbnN0IHN0 cnVjdCBmZWF0X2xpc3QgKmZlYXQpOwogICAgICB9OwogICAgICBgYGAKCiAgICAgIFdlIGFic3Ry YWN0IGFib3ZlIGNhbGxiYWNrIGZ1bmN0aW9ucyB0byBlbmNhcHN1bGF0ZSB0aGUgZmVhdHVyZSBz cGVjaWZpYwogICAgICBiZWhhdmlvcnMgaW50byB0aGVtLiBUaGVuLCBpdCBpcyBlYXN5IHRvIGFk ZCBhIG5ldyBmZWF0dXJlLiBXZSBqdXN0IG5lZWQ6CiAgICAgICAgICAxKSBJbXBsZW1lbnQgc3Vj aCBvcHMgYW5kIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3IgZXZlcnkgZmVhdHVyZS4KICAgICAgICAg IDIpIFJlZ2lzdGVyIHRoZSBvcHMgaW50byBgc3RydWN0IGZlYXRfbGlzdGAuCiAgICAgICAgICAz KSBBZGQgdGhlIGZlYXR1cmUgaW50byBmZWF0dXJlIGxpc3QgZHVyaW5nIENQVSBpbml0aWFsaXph dGlvbi4KCiMgVXNlciBpbmZvcm1hdGlvbgoKKiBGZWF0dXJlIEVuYWJsaW5nOgoKICBBZGQgInBz cj1jYXQiIHRvIGJvb3QgbGluZSBwYXJhbWV0ZXIgdG8gZW5hYmxlIGFsbCBzdXBwb3J0ZWQgbGV2 ZWwgQ0FUCiAgZmVhdHVyZXMuCgoqIHhsIGludGVyZmFjZXM6CgogIDEuIGBwc3ItY2F0LXNob3cg W09QVElPTlNdIGRvbWFpbi1pZGA6CgogICAgIFNob3cgZG9tYWluIEwyIG9yIEwzIENBVCBDQk0u CgkgCiAgICAgTmV3IG9wdGlvbiBgLWxgIGlzIGFkZGVkLgogICAgIGAtbDJgOiBTcGVjaWZ5IGNi bSBmb3IgTDIgY2FjaGUuCiAgICAgYC1sM2A6IFNwZWNpZnkgY2JtIGZvciBMMyBjYWNoZS4KCSAK ICAgICBJZiBuZWl0aGVyIGAtbDJgIG5vciBgLWwzYCBpcyBnaXZlbiwgYSBwcm9tcHQgbWVzc2Fn ZSB3aWxsIGJlIHNob3duIAogICAgIHRvIGFzayB1c2VyIGlucHV0IGNhY2hlIGxldmVsLgoJIAog IDIuIGBwc3ItY2F0LWNibS1zZXQgW09QVElPTlNdIGRvbWFpbi1pZCBjYm1gOgoKICAgICBTZXQg ZG9tYWluIEwyIG9yIEwzIENCTS4KCSAKICAgICBOZXcgb3B0aW9uIGAtbGAgaXMgYWRkZWQuCiAg ICAgYC1sMmA6IFNwZWNpZnkgY2JtIGZvciBMMiBjYWNoZS4KICAgICBgLWwzYDogU3BlY2lmeSBj Ym0gZm9yIEwzIGNhY2hlLgoKICAgICBJZiBuZWl0aGVyIGAtbDJgIG5vciBgLWwzYCBpcyBnaXZl biwgYSBwcm9tcHQgbWVzc2FnZSB3aWxsIGJlIHNob3duIAogICAgIHRvIGFzayB1c2VyIGlucHV0 IGNhY2hlIGxldmVsLiBTaW5jZSB0aGVyZSBpcyBubyBDRFAgc3VwcG9ydCBvbiBMMiBjYWNoZSwK ICAgICBzbyBpZiBgLWwyYCwgYC0tY29kZWAgb3IgYC0tZGF0YWAgYXJlIGJvdGggZ2l2ZW4sIGVy cm9yIG1lc3NhZ2Ugc2hvd3MuCgogIDMuIGBwc3ItaHdpbmZvIFtPUFRJT05TXWA6CgogICAgIFNo b3cgTDIgJiBMMyBDQVQgSFcgaW5mb3JtYXRpb25zIG9uIGV2ZXJ5IHNvY2tldC4KCiMgUmVmZXJl bmNlcwoKW0ludGVswq4gNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxv cGVyIE1hbnVhbHMsIHZvbDMsIGNoYXB0ZXIgMTcuMTddKGh0dHA6Ly93d3cuaW50ZWwuY29tL2Nv bnRlbnQvd3d3L3VzL2VuL3Byb2Nlc3NvcnMvYXJjaGl0ZWN0dXJlcy1zb2Z0d2FyZS1kZXZlbG9w ZXItbWFudWFscy5odG1sKQoKIyBIaXN0b3J5CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGF0ZSAgICAgICBS ZXZpc2lvbiBWZXJzaW9uICBOb3RlcwotLS0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAxNi0wOC0xMiAxLjAgICAg ICBYZW4gNC43ICBJbml0aWFsIGRlc2lnbgoyMDE2LTA5LTIxIDIuMCAgICAgIFhlbiA0LjcgIENo YW5nZXMgYWNjb3JkaW5nIHRvIHJldmlldyBjb21tZW50cy4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxLiBMMiBDQk0gYml0cyBzaG91bGQgYmUgY29udGludW91cyB0b28uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMi4gRGVzY3JpYmUgJ3N0cnVjdCBmZWF0X2luZm8nCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMy4gVXBkYXRlICdzdHJ1Y3QgZmVhdF9saXN0IiBkZXNj cmlwdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LiBVcGRhdGUgJ3N0cnVjdCBm ZWF0X29wcyIgZGVzY3JpcHRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4gVXBk YXRlIGBwc3ItY2F0LXNob3dgIGRlc2NyaXB0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDYuIFVwZGF0ZSBgcHNyLWNhdC1jYm0tc2V0YCBkZXNjcmlwdGlvbi4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA3LiBBZGQgdm9sdW1lIGFuZCBjaGFwdGVyIGluZm8gaW4gUmVmZXJl bmNlcy4KLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpZaSBTdW4gKDMpOgogIHg4NjogcmVmYWN0b3IgcHNyIGlt cGxlbWVudGF0aW9uIGluIGh5cGVydmlzb3IuCiAgeDg2OiBhZGQgc3VwcG9ydCBmb3IgTDIgQ0FU IGluIGh5cGVydmlzb3IuCiAgdG9vbHMgJiBkb2NzOiBhZGQgTDIgQ0FUIHN1cHBvcnQgaW4gdG9v bHMgYW5kIGRvY3MuCgogZG9jcy9tYW4veGwucG9kLjEuaW4gICAgICAgICAgICB8ICAgMjUgKy0K IGRvY3MvbWlzYy94bC1wc3IubWFya2Rvd24gICAgICAgfCAgIDEwICstCiB0b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaCAgIHwgICAgNyArLQogdG9vbHMvbGlieGMveGNfcHNyLmMgICAgICAg ICAgICB8ICAgNDcgKy0KIHRvb2xzL2xpYnhsL2xpYnhsLmggICAgICAgICAgICAgfCAgICAyICsK IHRvb2xzL2xpYnhsL2xpYnhsX3Bzci5jICAgICAgICAgfCAgIDUwICstCiB0b29scy9saWJ4bC9s aWJ4bF90eXBlcy5pZGwgICAgIHwgICAgMSArCiB0b29scy9saWJ4bC94bF9jbWRpbXBsLmMgICAg ICAgIHwgIDE5NSArKysrKy0KIHRvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMgICAgICAgfCAgICA0 ICstCiB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgICAgICAgIHwgICA0OSArLQogeGVuL2FyY2gv eDg2L3Bzci5jICAgICAgICAgICAgICB8IDEzMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tCiB4ZW4vYXJjaC94ODYvc3lzY3RsLmMgICAgICAgICAgIHwgICAyNSArLQog eGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaCB8ICAgIDEgKwogeGVuL2luY2x1ZGUvYXNt LXg4Ni9wc3IuaCAgICAgICB8ICAgMjIgKy0KIHhlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCAg ICAgfCAgICAyICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCAgICAgfCAgICA2ICsKIDE2 IGZpbGVzIGNoYW5nZWQsIDE0NDAgaW5zZXJ0aW9ucygrKSwgMzIzIGRlbGV0aW9ucygtKQoKLS0g CjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==