From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v8 01/24] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document Date: Wed, 15 Feb 2017 16:49:16 +0800 Message-ID: <1487148579-7243-2-git-send-email-yi.y.sun@linux.intel.com> References: <1487148579-7243-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 1cdvKd-0007B9-4z for xen-devel@lists.xenproject.org; Wed, 15 Feb 2017 08:52:59 +0000 In-Reply-To: <1487148579-7243-1-git-send-email-yi.y.sun@linux.intel.com> 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: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBjcmVhdGVzIENBVCBhbmQgQ0RQIGZlYXR1cmUgZG9jdW1lbnQgaW4gZG9jL2Zl YXR1cmVzLy4gSXQgZGVzY3JpYmVzCmtleSBwb2ludHMgdG8gaW1wbGVtZW50IEwzIENBVC9DRFAg YW5kIEwyIENBVCB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlscyBpbgpJbnRlbCBTRE0gIklO VEVMwq4gUkVTT1VSQ0UgRElSRUNUT1IgVEVDSE5PTE9HWSAoSU5URUzCriBSRFQpIEFMTE9DQVRJ T04gRkVBVFVSRVMiLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRl bC5jb20+Ci0tLQp2ODoKICAgIC0gY2hhbmdlIHJldmlzaW9uIGluZm8uCiAgICAtIGFkZCBjb250 ZW50IGludCAnQXJlYXMgZm9yIGltcHJvdmVtZW50Jy4KLS0tCiBkb2NzL2ZlYXR1cmVzL2ludGVs X3Bzcl9jYXRfY2RwLnBhbmRvYyB8IDQ2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIDEgZmlsZSBjaGFuZ2VkLCA0NjkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jCgpkaWZmIC0tZ2l0IGEvZG9j cy9mZWF0dXJlcy9pbnRlbF9wc3JfY2F0X2NkcC5wYW5kb2MgYi9kb2NzL2ZlYXR1cmVzL2ludGVs X3Bzcl9jYXRfY2RwLnBhbmRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m NDZiNDFiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9mZWF0dXJlcy9pbnRlbF9wc3JfY2F0X2Nk cC5wYW5kb2MKQEAgLTAsMCArMSw0NjkgQEAKKyUgSW50ZWwgQ2FjaGUgQWxsb2NhdGlvbiBUZWNo bm9sb2d5IGFuZCBDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9uIEZlYXR1cmVzCislIFJldmlz aW9uIDEuOAorCitcY2xlYXJwYWdlCisKKyMgQmFzaWNzCisKKy0tLS0tLS0tLS0tLS0tLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgU3RhdHVzOiAqKlRlY2ggUHJldmlldyoqCisKK0FyY2hpdGVjdHVyZShzKTogSW50ZWwgeDg2 CisKKyAgIENvbXBvbmVudChzKTogSHlwZXJ2aXNvciwgdG9vbHN0YWNrCisKKyAgICAgICBIYXJk d2FyZTogTDMgQ0FUOiBIYXN3ZWxsIGFuZCBiZXlvbmQgQ1BVcworICAgICAgICAgICAgICAgICBD RFAgICA6IEJyb2Fkd2VsbCBhbmQgYmV5b25kIENQVXMKKyAgICAgICAgICAgICAgICAgTDIgQ0FU OiBBdG9tIGNvZGVuYW1lIEdvbGRtb250IGFuZCBiZXlvbmQgQ1BVcworLS0tLS0tLS0tLS0tLS0t LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK KyMgVGVybWlub2xvZ3kKKworKiBDQVQgICAgICAgICBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xv Z3kKKyogQ0JNICAgICAgICAgQ2FwYWNpdHkgQml0TWFza3MKKyogQ0RQICAgICAgICAgQ29kZSBh bmQgRGF0YSBQcmlvcml0aXphdGlvbgorKiBDT1MvQ0xPUyAgICBDbGFzcyBvZiBTZXJ2aWNlCisq IE1TUnMgICAgICAgIE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXJzCisqIFBTUiAgICAgICAgIElu dGVsIFBsYXRmb3JtIFNoYXJlZCBSZXNvdXJjZQorCisjIE92ZXJ2aWV3CisKK0ludGVsIHByb3Zp ZGVzIGEgc2V0IG9mIGFsbG9jYXRpb24gY2FwYWJpbGl0aWVzIGluY2x1ZGluZyBDYWNoZSBBbGxv Y2F0YXRpb24KK1RlY2hub2xvZ3kgKENBVCkgYW5kIENvZGUgYW5kIERhdGEgUHJpb3JpdGl6YXRp b24gKENEUCkuCisKK0NBVCBhbGxvd3MgYW4gT1Mgb3IgaHlwZXJ2aXNvciB0byBjb250cm9sIGFs bG9jYXRpb24gb2YgYSBDUFUncyBzaGFyZWQgY2FjaGUKK2Jhc2VkIG9uIGFwcGxpY2F0aW9uL2Rv bWFpbiBwcmlvcml0eSBvciBDbGFzcyBvZiBTZXJ2aWNlIChDT1MpLiBFYWNoIENPUyBpcworY29u ZmlndXJlZCB1c2luZyBjYXBhY2l0eSBiaXRtYXNrcyAoQ0JNcykgd2hpY2ggcmVwcmVzZW50IGNh Y2hlIGNhcGFjaXR5IGFuZAoraW5kaWNhdGUgdGhlIGRlZ3JlZSBvZiBvdmVybGFwIGFuZCBpc29s YXRpb24gYmV0d2VlbiBjbGFzc2VzLiBPbmNlIENBVCBpcyBjby0KK25maWd1cmVkLCB0aGUgcHJv Y2Vzc29yIGFsbG93cyBhY2Nlc3MgdG8gcG9ydGlvbnMgb2YgY2FjaGUgYWNjb3JkaW5nIHRvIHRo ZQorZXN0YWJsaXNoZWQgQ09TLiBJbnRlbCBYZW9uIHByb2Nlc3NvciBFNSB2NCBmYW1pbHkgKGFu ZCBzb21lIG90aGVycykgaW50cm9kdWNlCitjYXBhYmlsaXRpZXMgdG8gY29uZmlndXJlIGFuZCBt YWtlIHVzZSBvZiB0aGUgQ0FUIG1lY2hhbmlzbSBvbiB0aGUgTDMgY2FjaGUuCitJbnRlbCBHb2xk bW9udCBwcm9jZXNzb3IgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY29udHJvbCBvdmVyIHRoZSBMMiBj YWNoZS4KKworQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbiAoQ0RQKSBUZWNobm9sb2d5IGlz IGFuIGV4dGVuc2lvbiBvZiBDQVQuIENEUAorZW5hYmxlcyBpc29sYXRpb24gYW5kIHNlcGFyYXRl IHByaW9yaXRpemF0aW9uIG9mIGNvZGUgYW5kIGRhdGEgZmV0Y2hlcyB0bwordGhlIEwzIGNhY2hl IGluIGEgU1cgY29uZmlndXJhYmxlIG1hbm5lciwgd2hpY2ggY2FuIGVuYWJsZSB3b3JrbG9hZCBw cmlvcml0LQoraXphdGlvbiBhbmQgdHVuaW5nIG9mIGNhY2hlIGNhcGFjaXR5IHRvIHRoZSBjaGFy YWN0ZXJpc3RpY3Mgb2YgdGhlIHdvcmtsb2FkLgorQ0RQIGV4dGVuZHMgQ0FUIGJ5IHByb3ZpZGlu ZyBzZXBhcmF0ZSBjb2RlIGFuZCBkYXRhIG1hc2tzIHBlciBDbGFzcyBvZiBTZXJ2aWNlCisoQ09T KS4gV2hlbiBTVyBjb25maWd1cmVzIHRvIGVuYWJsZSBDRFAsIEwzIENBVCBpcyBkaXNhYmxlZC4K KworIyBVc2VyIGRldGFpbHMKKworKiBGZWF0dXJlIEVuYWJsaW5nOgorCisgIEFkZCAicHNyPWNh dCIgdG8gYm9vdCBsaW5lIHBhcmFtZXRlciB0byBlbmFibGUgYWxsIHN1cHBvcnRlZCBsZXZlbCBD QVQgZmVhdHUtCisgIHJlcy4gQWRkICJwc3I9Y2RwIiB0byBlbmFibGUgTDMgQ0RQIGJ1dCBkaXNh YmxlcyBMMyBDQVQgYnkgU1cuCisKKyogeGwgaW50ZXJmYWNlczoKKworICAxLiBgcHNyLWNhdC1z aG93IFtPUFRJT05TXSBkb21haW4taWRgOgorCisgICAgIFNob3cgTDIgQ0FUIG9yIEwzIENBVC9D RFAgQ0JNIG9mIHRoZSBkb21haW4gZGVzaWduYXRlZCBieSBYZW4gZG9tYWluLWlkLgorCisgICAg IE9wdGlvbiBgLWxgOgorICAgICBgLWwyYDogU2hvdyBjYm0gZm9yIEwyIGNhY2hlLgorICAgICBg LWwzYDogU2hvdyBjYm0gZm9yIEwzIGNhY2hlLgorCisgICAgIElmIGAtbFhgIGlzIHNwZWNpZmll ZCBhbmQgTFggaXMgbm90IHN1cHBvcnRlZCwgcHJpbnQgZXJyb3IuCisgICAgIElmIG5vIGAtbGAg aXMgc3BlY2lmaWVkLCBsZXZlbCAzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbi4KKworICAyLiBgcHNy LWNhdC1zZXQgW09QVElPTlNdIGRvbWFpbi1pZCBjYm1gOgorCisgICAgIFNldCBMMiBDQVQgb3Ig TDMgQ0FUL0NEUCBDQk0gdG8gdGhlIGRvbWFpbiBkZXNpZ25hdGVkIGJ5IFhlbiBkb21haW4taWQu CisKKyAgICAgT3B0aW9uIGAtc2A6IFNwZWNpZnkgdGhlIHNvY2tldCB0byBwcm9jZXNzLCBvdGhl cndpc2UgYWxsIHNvY2tldHMgYXJlCisgICAgIHByb2Nlc3NlZC4KKworICAgICBPcHRpb24gYC1s YDoKKyAgICAgYC1sMmA6IFNwZWNpZnkgY2JtIGZvciBMMiBjYWNoZS4KKyAgICAgYC1sM2A6IFNw ZWNpZnkgY2JtIGZvciBMMyBjYWNoZS4KKworICAgICBJZiBgLWxYYCBpcyBzcGVjaWZpZWQgYW5k IExYIGlzIG5vdCBzdXBwb3J0ZWQsIHByaW50IGVycm9yLgorICAgICBJZiBubyBgLWxgIGlzIHNw ZWNpZmllZCwgbGV2ZWwgMyBpcyB0aGUgZGVmYXVsdCBvcHRpb24uCisKKyAgICAgT3B0aW9uIGAt Y2Agb3IgYC1kYDoKKyAgICAgYC1jYDogU2V0IEwzIENEUCBjb2RlIGNibS4KKyAgICAgYC1kYDog U2V0IEwzIENEUCBkYXRhIGNibS4KKworICAzLiBgcHNyLWh3aW5mbyBbT1BUSU9OU11gOgorCisg ICAgIFNob3cgQ01UICYgTDIgQ0FUICYgTDMgQ0FUL0NEUCBIVyBpbmZvcm1hdGlvbiBvbiBldmVy eSBzb2NrZXQuCisKKyAgICAgT3B0aW9uIGAtbSwgLS1jbXRgOiBTaG93IENhY2hlIE1vbml0b3Jp bmcgVGVjaG5vbG9neSAoQ01UKSBoYXJkd2FyZSBpbmZvLgorCisgICAgIE9wdGlvbiBgLWEsIC0t Y2F0YDogU2hvdyBDQVQvQ0RQIGhhcmR3YXJlIGluZm8uCisKKyMgVGVjaG5pY2FsIGRldGFpbHMK KworTDMgQ0FUL0NEUCBhbmQgTDIgQ0FUIGFyZSBhbGwgbWVtYmVycyBvZiBJbnRlbCBQU1IgZmVh dHVyZXMsIHRoZXkgc2hhcmUgdGhlIGJhc2UKK1BTUiBpbmZyYXN0cnVjdHVyZSBpbiBYZW4uCisK KyMjIEhhcmR3YXJlIHBlcnNwZWN0aXZlCisKKyAgQ0FUL0NEUCBkZWZpbmVzIGEgcmFuZ2Ugb2Yg TVNScyB0byBhc3NpZ24gZGlmZmVyZW50IGNhY2hlIGFjY2VzcyBwYXR0ZXJucworICB3aGljaCBh cmUga25vd24gYXMgQ0JNcywgZWFjaCBDQk0gaXMgYXNzb2NpYXRlZCB3aXRoIGEgQ09TLgorCisg IGBgYAorICBFLmcuIEwyIENBVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgSUEzMl9QUVJfQVNT T0MgICAgICAgfCBNU1IgKHBlciBzb2NrZXQpICAgICAgICAgICB8ICAgIEFkZHJlc3MgICAgIHwK KyAgICstLS0tKy0tLSstLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgfENPU3wgICAgICAgfCAgICAgfCBJQTMyX0wyX1FP U19NQVNLXzAgICAgICAgICB8ICAgICAweEQxMCAgICAgIHwKKyAgICstLS0tKy0tLSstLS0tLS0t KyAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAg ICAgICAgICDilJQtLS0tLS0tLS0tLS0tPiB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgIHwg IC4uLiAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAg ICAgICB8IElBMzJfTDJfUU9TX01BU0tfbiAgICAgICAgIHwgMHhEMTArbiAobjw2NCkgfAorICAg ICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICBgYGAKKworICBMMyBDQVQvQ0RQIHVzZXMgYSByYW5nZSBvZiBNU1Jz IGZyb20gMHhDOTAgfiAweEM5MCtuIChuPDEyOCkuCisKKyAgTDIgQ0FUIHVzZXMgYSByYW5nZSBv ZiBNU1JzIGZyb20gMHhEMTAgfiAweEQxMCtuIChuPDY0KSwgZm9sbG93aW5nIHRoZSBMMworICBD QVQvQ0RQIE1TUnMsIHNldHRpbmcgZGlmZmVyZW50IEwyIGNhY2hlIGFjY2Vzc2luZyBwYXR0ZXJu cyBmcm9tIEwzIGNhY2hlIGlzCisgIHN1cHBvcnRlZC4KKworICBFdmVyeSBNU1Igc3RvcmVzIGEg Q0JNIHZhbHVlLiBBIGNhcGFjaXR5IGJpdG1hc2sgKENCTSkgcHJvdmlkZXMgYSBoaW50IHRvIHRo ZQorICBoYXJkd2FyZSBpbmRpY2F0aW5nIHRoZSBjYWNoZSBzcGFjZSBhIGRvbWFpbiBzaG91bGQg YmUgbGltaXRlZCB0byBhcyB3ZWxsIGFzCisgIHByb3ZpZGluZyBhbiBpbmRpY2F0aW9uIG9mIG92 ZXJsYXAgYW5kIGlzb2xhdGlvbiBpbiB0aGUgQ0FULWNhcGFibGUgY2FjaGUgZnJvbQorICBvdGhl ciBkb21haW5zIGNvbnRlbmRpbmcgZm9yIHRoZSBjYWNoZS4KKworICBTYW1wbGUgY2FjaGUgY2Fw YWNpdHkgYml0bWFza3MgZm9yIGEgYml0bGVuZ3RoIG9mIDggYXJlIHNob3duIGJlbG93LiBQbGVh c2UKKyAgbm90ZSB0aGF0IGFsbCAoYW5kIG9ubHkpIGNvbnRpZ3VvdXMgJzEnIGNvbWJpbmF0aW9u cyBhcmUgYWxsb3dlZCAoZS5nLiBGRkZGSCwKKyAgMEZGMEgsIDAwM0NILCBldGMuKS4KKworICBg YGAKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICAg ICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8CisgICAgICAgKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMCB8IEEgIHwgQSAg fCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBEZWZhdWx0IEJpdG1hc2sKKyAgICAgICAr LS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBDT1MxIHwgQSAgfCBB ICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8CisgICAgICAgKy0tLS0rLS0tLSstLS0t Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMiB8IEEgIHwgQSAgfCBBICB8IEEgIHwg QSAgfCBBICB8IEEgIHwgQSAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rCisKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0t LSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8 CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09T MCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBPdmVybGFwcGVkIEJp dG1hc2sKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwor ICBDT1MxIHwgICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEgIHwgQSAgfCBBICB8CisgICAgICAg Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMiB8ICAgIHwg ICAgfCAgICB8ICAgIHwgICAgfCAgICB8IEEgIHwgQSAgfAorICAgICAgICstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8 IE0yIHwgTTEgfCBNMCB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSsKKyAgQ09TMCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgICAgfCAgICB8ICAgIHwgICAg fCBJc29sYXRlZCBCaXRtYXNrCisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0t Ky0tLS0rLS0tLSsKKyAgQ09TMSB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAgfCBBICB8ICAgIHwg ICAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisg IENPUzIgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEgIHwKKyAgICAgICAr LS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBgYGAKKworICBXZSBj YW4gZ2V0IHRoZSBDQk0gbGVuZ3RoIHRocm91Z2ggQ1BVSUQuIFRoZSBkZWZhdWx0IHZhbHVlIG9m IENCTSBpcyBjYWxjdWwtCisgIGF0ZWQgYnkgYCgxdWxsIDw8IGNibV9sZW4pIC0gMWAuIFRoYXQg aXMgYSBmdWxseSBvcGVuIGJpdG1hc2ssIGFsbCBvbmVzIGJpdG0tCisgIGFzay4gVGhlIENPU1sw XSBhbHdheXMgc3RvcmVzIHRoZSBkZWZhdWx0IHZhbHVlIHdpdGhvdXQgY2hhbmdlLgorCisgIFRo ZXJlIGlzIGEgYElBMzJfUFFSX0FTU09DYCByZWdpc3RlciB3aGljaCBzdG9yZXMgdGhlIENPUyBJ RCBvZiB0aGUgVkNQVS4gSFcKKyAgZW5mb3JjZXMgY2FjaGUgYWxsb2NhdGlvbiBhY2NvcmRpbmcg dG8gdGhlIGNvcnJlc3BvbmRpbmcgQ0JNLgorCisjIyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4g TDMgQ0FUL0NEUCBhbmQgTDIgQ0FUCisKKyAgSFcgbWF5IHN1cHBvcnQgYWxsIGZlYXR1cmVzLiBC eSBkZWZhdWx0LCBDRFAgaXMgZGlzYWJsZWQgb24gdGhlIHByb2Nlc3Nvci4KKyAgSWYgdGhlIEwz IENBVCBNU1JzIGFyZSB1c2VkIHdpdGhvdXQgZW5hYmxpbmcgQ0RQLCB0aGUgcHJvY2Vzc29yIG9w ZXJhdGVzIGluCisgIGEgdHJhZGl0aW9uYWwgQ0FULW9ubHkgbW9kZS4gV2hlbiBDRFAgaXMgZW5h YmxlZDoKKyAgKiB0aGUgQ0FUIG1hc2sgTVNScyBhcmUgcmUtbWFwcGVkIGludG8gaW50ZXJsZWF2 ZWQgcGFpcnMgb2YgbWFzayBNU1JzIGZvcgorICAgIGRhdGEgb3IgY29kZSBmZXRjaGVzLgorICAq IHRoZSByYW5nZSBvZiBDT1MgZm9yIENBVCBpcyByZS1pbmRleGVkLCB3aXRoIHRoZSBsb3dlci1o YWxmIG9mIHRoZSBDT1MKKyAgICByYW5nZSBhdmFpbGFibGUgZm9yIENEUC4KKworICBMMiBDQVQg aXMgaW5kZXBlbmRlbnQgb2YgTDMgQ0FUL0NEUCwgd2hpY2ggbWVhbnMgTDIgQ0FUIGNhbiBiZSBl bmFibGVkIHdoaWxlCisgIEwzIENBVC9DRFAgaXMgZGlzYWJsZWQsIG9yIEwyIENBVCBhbmQgTDMg Q0FUL0NEUCBhcmUgYm90aCBlbmFibGVkLgorCisgIEFzIGEgcmVxdWlyZW1lbnQsIHRoZSBiaXRz IG9mIENCTSBvZiBDQVQvQ0RQIG11c3QgYmUgY29udGludW91cy4KKworICBOLkIuIEwyIENBVCBh bmQgTDMgQ0FUL0NEUCBzaGFyZSB0aGUgc2FtZSBDT1MgZmllbGQgaW4gdGhlIHNhbWUgYXNzb2Np YXRlCisgIHJlZ2lzdGVyIGBJQTMyX1BRUl9BU1NPQ2AsIHdoaWNoIG1lYW5zIG9uZSBDT1MgaXMg YXNzb2NpYXRlZCB3aXRoIGEgcGFpciBvZgorICBMMiBDQVQgQ0JNIGFuZCBMMyBDQVQvQ0RQIENC TS4KKworICBCZXNpZGVzLCB0aGUgbWF4IENPUyBvZiBMMiBDQVQgbWF5IGJlIGRpZmZlcmVudCBm cm9tIEwzIENBVC9DRFAgKG9yIG90aGVyCisgIFBTUiBmZWF0dXJlcyBpbiBmdXR1cmUpLiBJbiBz b21lIGNhc2VzLCBhIGRvbWFpbiBpcyBwZXJtaXR0ZWQgdG8gaGF2ZSBhIENPUworICB0aGF0IGlz IGJleW9uZCBvbmUgKG9yIG1vcmUpIG9mIFBTUiBmZWF0dXJlcyBidXQgd2l0aGluIHRoZSBvdGhl cnMuIEZvcgorICBpbnN0YW5jZSwgbGV0J3MgYXNzdW1lIHRoZSBtYXggQ09TIG9mIEwyIENBVCBp cyA4IGJ1dCB0aGUgbWF4IENPUyBvZiBMMworICBDQVQgaXMgMTYsIHdoZW4gYSBkb21haW4gaXMg YXNzaWduZWQgOSBhcyBDT1MsIHRoZSBMMyBDQVQgQ0JNIGFzc29jaWF0ZWQgdG8KKyAgQ09TIDkg d291bGQgYmUgZW5mb3JjZWQsIGJ1dCBmb3IgTDIgQ0FULCB0aGUgSFcgd29ya3MgYXMgZGVmYXVs dCB2YWx1ZSBpcworICBzZXQgc2luY2UgQ09TIDkgaXMgYmV5b25kIHRoZSBtYXggQ09TICg4KSBv ZiBMMiBDQVQuCisKKyMjIERlc2lnbiBPdmVydmlldworCisqIENvcmUgQ09TL0NCTSBhc3NvY2lh dGlvbgorCisgIFdoZW4gZW5mb3JjaW5nIENBVC9DRFAsIGFsbCBjb3JlcyBvZiBkb21haW5zIGhh dmUgdGhlIHNhbWUgZGVmYXVsdCBDT1MgKENPUzApCisgIHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0 aCB0aGUgZnVsbHkgb3BlbiBDQk0gKGFsbCBvbmVzIGJpdG1hc2spIHRvIGFjY2VzcyBhbGwKKyAg Y2FjaGUuIFRoZSBkZWZhdWx0IENPUyBpcyB1c2VkIG9ubHkgaW4gaHlwZXJ2aXNvciBhbmQgaXMg dHJhbnNwYXJlbnQgdG8gdG9vbAorICBzdGFjayBhbmQgdXNlci4KKworICBTeXN0ZW0gYWRtaW5p c3RyYXRvciBjYW4gY2hhbmdlIFBTUiBhbGxvY2F0aW9uIHBvbGljeSBhdCBydW50aW1lIGJ5IHRv b2wgc3RhY2suCisgIFNpbmNlIEwyIENBVCBzaGFyZXMgQ09TIHdpdGggTDMgQ0FUL0NEUCwgYSBD T1MgY29ycmVzcG9uZHMgdG8gYSAyLXR1cGxlLCBsaWtlCisgIFtMMiBDQk0sIEwzIENCTV0gd2l0 aCBvbmx5LUNBVCBlbmFibGVkLCB3aGVuIENEUCBpcyBlbmFibGVkLCBvbmUgQ09TIGNvcnJlc3Bv LQorICBuZHMgdG8gYSAzLXR1cGxlLCBsaWtlIFtMMiBDQk0sIEwzIENvZGVfQ0JNLCBMMyBEYXRh X0NCTV0uIElmIG5laXRoZXIgTDMgQ0FUCisgIG5vciBMMyBDRFAgaXMgZW5hYmxlZCwgdGhpbmdz IHdvdWxkIGJlIGVhc2llciwgb25lIENPUyBjb3JyZXNwb25kcyB0byBvbmUgTDIKKyAgQ0JNLgor CisqIFZDUFUgc2NoZWR1bGUKKworICBXaGVuIGNvbnRleHQgc3dpdGNoIGhhcHBlbnMsIHRoZSBD T1Mgb2YgVkNQVSBpcyB3cml0dGVuIHRvIHBlci10aHJlYWQgTVNSCisgIGBJQTMyX1BRUl9BU1NP Q2AsIGFuZCB0aGVuIGhhcmR3YXJlIGVuZm9yY2VzIGNhY2hlIGFsbG9jYXRpb24gYWNjb3JkaW5n IHRvCisgIHRoZSBjb3JyZXNwb25kaW5nIENCTS4KKworKiBNdWx0aS1zb2NrZXRzCisKKyAgRGlm ZmVyZW50IHNvY2tldHMgbWF5IGhhdmUgZGlmZmVyZW50IENBVC9DRFAgY2FwYWJpbGl0eSAoZS5n LiBtYXggQ09TKSBhbHRoLQorICBvdWdoIGl0IGlzIGNvbnNpc3RlbnQgb24gdGhlIHNhbWUgc29j a2V0LiBTbyB0aGUgY2FwYWJpbGl0eSBvZiBwZXItc29ja2V0IENBVC8KKyAgQ0RQIGlzIHNwZWNp ZmllZC4KKworICAncHNyLWNhdC1zZXQnIGNhbiBzZXQgQ0JNIGZvciBvbmUgZG9tYWluIHBlciBz b2NrZXQuIE9uIGVhY2ggc29ja2V0LCB3ZSBtYWluLQorICB0YWluIGEgQ09TIGFycmF5IGZvciBh bGwgZG9tYWlucy4gT25lIGRvbWFpbiB1c2VzIG9uZSBDT1MgYXQgb25lIHRpbWUuIE9uZSBDT1MK KyAgc3RvcmVzIHRoZSBDQk0gb2YgdGhlIGRvbWFpbiB0byB3b3JrLiBTbywgd2hlbiBhIFZDUFUg b2YgdGhlIGRvbWFpbiBpcyBtaWdyYXQtCisgIGVkIGZyb20gc29ja2V0IDEgdG8gc29ja2V0IDIs IGl0IGZvbGxvd3MgY29uZmlndXJhdGlvbiBvbiBzb2NrZXQgMi4KKworICBFLmcuIHVzZXIgc2V0 cyBkb21haW4gMSBDQk0gb24gc29ja2V0IDEgdG8gMHg3ZiB3aGljaCB1c2VzIENPUyA5IGJ1dCBz ZXRzIGRvLQorICBtYWluIDEgQ0JNIG9uIHNvY2tldCAyIHRvIDB4M2Ygd2hpY2ggdXNlcyBDT1Mg Ny4gV2hlbiBWQ1BVIG9mIHRoaXMgZG9tYWluCisgIGlzIG1pZ3JhdGVkIGZyb20gc29ja2V0IDEg dG8gMiwgdGhlIENPUyBJRCB1c2VkIGlzIDcsIHRoYXQgbWVhbnMgMHgzZiBpcyB0aGUKKyAgQ0JN IHRvIHdvcmsgZm9yIHRoaXMgZG9tYWluIDEgbm93LgorCisjIyBJbXBsZW1lbnRhdGlvbiBEZXNj cmlwdGlvbgorCisqIEh5cGVydmlzb3IgaW50ZXJmYWNlczoKKworICAxLiBCb290IGxpbmUgcGFy YW1ldGVyICJwc3I9Y2F0IiBlbmFibGVzIEwyIENBVCBhbmQgTDMgQ0FUIGlmIGhhcmR3YXJlIHN1 cHBvLQorICAgICBydGVkLiAicHNyPWNkcCIgZW5hYmxlcyBDRFAgaWYgaGFyZHdhcmUgc3VwcG9y dGVkLgorCisgIDIuIFNZU0NUTDoKKyAgICAgICAgICAtIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRf bDNfaW5mbzogR2V0IEwzIENBVC9DRFAgaW5mb3JtYXRpb24uCisgICAgICAgICAgLSBYRU5fU1lT Q1RMX1BTUl9DQVRfZ2V0X2wyX2luZm86IEdldCBMMiBDQVQgaW5mb3JtYXRpb24uCisKKyAgMy4g RE9NQ1RMOgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19DQk06IEdl dCBMMyBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09Q X1NFVF9MM19DQk06IFNldCBMMyBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAgIC0gWEVOX0RP TUNUTF9QU1JfQ0FUX09QX0dFVF9MM19DT0RFOiBHZXQgQ0RQIENvZGUgQ0JNIGZvciBhIGRvbWFp bi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfQ09ERTogU2V0IENE UCBDb2RlIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfR0VUX0wzX0RBVEE6IEdldCBDRFAgRGF0YSBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAg IC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19EQVRBOiBTZXQgQ0RQIERhdGEgQ0JNIGZv ciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJfQ0JN OiBHZXQgTDIgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NB VF9PUF9TRVRfTDJfQ0JNOiBTZXQgTDIgQ0JNIGZvciBhIGRvbWFpbi4KKworKiB4bCBpbnRlcmZh Y2VzOgorCisgIDEuIHBzci1jYXQtc2hvdyAtbFggZG9tYWluLWlkCisgICAgICAgICAgU2hvdyBM WCBjYm0gZm9yIGEgZG9tYWluLgorICAgICAgICAgID0+IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRf bDNfaW5mbyAgICAvCisgICAgICAgICAgICAgWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sMl9pbmZv ICAgIC8KKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0NCTSAgLwor ICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ09ERSAvCisgICAgICAg ICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19EQVRBIC8KKyAgICAgICAgICAgICBY RU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTQorCisgIDIuIHBzci1jYXQtc2V0IC1sWCBk b21haW4taWQgY2JtCisgICAgICAgICAgU2V0IExYIGNibSBmb3IgYSBkb21haW4uCisgICAgICAg ICAgPT4gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DQk0gIC8KKyAgICAgICAgICAgICBY RU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NPREUgLworICAgICAgICAgICAgIFhFTl9ET01D VExfUFNSX0NBVF9PUF9TRVRfTDNfREFUQSAvCisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1Jf Q0FUX09QX1NFVF9MMl9DQk0KKworICAzLiBwc3ItaHdpbmZvCisgICAgICAgICAgU2hvdyBQU1Ig SFcgaW5mb3JtYXRpb24sIGluY2x1ZGluZyBMMyBDQVQvQ0RQL0wyIENBVAorICAgICAgICAgID0+ IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDNfaW5mbyAvCisgICAgICAgICAgICAgWEVOX1NZU0NU TF9QU1JfQ0FUX2dldF9sMl9pbmZvCisKKyogS2V5IGRhdGEgc3RydWN0dXJlOgorCisgICAxLiBG ZWF0dXJlIEhXIGluZm8KKworICAgICAgYGBgCisgICAgICBzdHJ1Y3QgcHNyX2NhdF9od19pbmZv IHsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKKyAgICAgICAgICB1bnNpZ25lZCBp bnQgY29zX21heDsKKyAgICAgIH07CisgICAgICBgYGAKKworICAgICAgLSBNZW1iZXIgYGNibV9s ZW5gCisKKyAgICAgICAgYGNibV9sZW5gIGlzIG9uZSBvZiB0aGUgaGFyZHdhcmUgaW5mbyBvZiBD QVQuIEl0IG1lYW5zIHRoZSBtYXggbnVtYmVyCisgICAgICAgIG9mIGJpdHMgdG8gc2V0LgorCisg ICAgICAtIE1lbWJlciBgY29zX21heGAKKworICAgICAgICBgY29zX21heGAgaXMgb25lIG9mIHRo ZSBoYXJkd2FyZSBpbmZvIG9mIENBVC4gSXQgbWVhbnMgdGhlIG1heCBudW1iZXIKKyAgICAgICAg b2YgQ09TIHJlZ2lzdGVycy4KKworICAgMi4gRmVhdHVyZSBsaXN0IG5vZGUKKworICAgICAgYGBg CisgICAgICBzdHJ1Y3QgZmVhdF9ub2RlIHsKKyAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUg ZmVhdHVyZTsKKyAgICAgICAgICBzdHJ1Y3QgZmVhdF9vcHMgb3BzOworICAgICAgICAgIHN0cnVj dCBwc3JfY2F0X2h3X2luZm8gaW5mbzsKKyAgICAgICAgICB1aW50NjRfdCBjb3NfcmVnX3ZhbFtN QVhfQ09TX1JFR19OVU1dOworICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKyAgICAg IH07CisgICAgICBgYGAKKworICAgICAgV2hlbiBhIFBTUiBlbmZvcmNlbWVudCBmZWF0dXJlIGlz IGVuYWJsZWQsIGl0IHdpbGwgYmUgYWRkZWQgaW50byBhCisgICAgICBmZWF0dXJlIGxpc3QuIFRo ZSBoZWFkIG9mIHRoZSBsaXN0IGlzIGNyZWF0ZWQgaW4gcHNyIGluaXRpYWxpemF0aW9uLgorCisg ICAgICAtIE1lbWJlciBgZmVhdHVyZWAKKworICAgICAgICBgZmVhdHVyZWAgaXMgYW4gaW50ZWdl ciBudW1iZXIsIHRvIGluZGljYXRlIHdoaWNoIGZlYXR1cmUgdGhlIGxpc3QgZW50cnkKKyAgICAg ICAgY29ycmVzcG9uZHMgdG8uCisKKyAgICAgIC0gTWVtYmVyIGBvcHNgCisKKyAgICAgICAgYG9w c2AgbWFpbnRhaW5zIGEgY2FsbGJhY2sgZnVuY3Rpb24gbGlzdCBvZiB0aGUgZmVhdHVyZS4gSXQg d2lsbCBiZSBpbnRyb2R1Y2VkCisgICAgICAgIGluIGRldGFpbHMgbGF0ZXIgYXQgW0ZlYXR1cmUg b3BlcmF0aW9uIGZ1bmN0aW9ucyBzdHJ1Y3R1cmVdLgorCisgICAgICAtIE1lbWJlciBgaW5mb2AK KworICAgICAgICBgaW5mb2AgbWFpbnRhaW5zIHRoZSBmZWF0dXJlIEhXIGluZm9ybWF0aW9uIHdo aWNoIGFyZSBwcm92aWRlZCB0byBwc3JfaHdpbmZvCisgICAgICAgIGNvbW1hbmQuCisKKyAgICAg IC0gTWVtYmVyIGBjb3NfcmVnX3ZhbGAKKworICAgICAgICBgY29zX3JlZ192YWxgIGlzIGFuIGFy cmF5IHRvIG1haW50YWluIHRoZSB2YWx1ZSBzZXQgaW4gYWxsIENPUyByZWdpc3RlcnMgb2YKKyAg ICAgICAgdGhlIGZlYXR1cmUuIFRoZSBhcnJheSBpcyBpbmRleGVkIGJ5IENPUyBJRC4KKworICAg My4gUGVyLXNvY2tldCBQU1IgZmVhdHVyZXMgaW5mb3JtYXRpb24gc3RydWN0dXJlCisKKyAgICAg IGBgYAorICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyB7CisgICAgICAgICAgdW5zaWduZWQg aW50IGZlYXRfbWFzazsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZmVhdDsKKyAgICAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkIGZlYXRfbGlzdDsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgY29z X3JlZltNQVhfQ09TX1JFR19OVU1dOworICAgICAgICAgIHNwaW5sb2NrX3QgcmVmX2xvY2s7Cisg ICAgICB9OworICAgICAgYGBgCisKKyAgICAgIFdlIGNvbGxlY3QgYWxsIFBTUiBhbGxvY2F0aW9u IGZlYXR1cmVzIGluZm9ybWF0aW9uIG9mIGEgc29ja2V0IGluIHRoaXMKKyAgICAgIGBzdHJ1Y3Qg cHNyX3NvY2tldF9pbmZvYC4KKworICAgICAgLSBNZW1iZXIgYGZlYXRfbWFza2AKKworICAgICAg ICBgZmVhdF9tYXNrYCBpcyBhIGJpdG1hcCwgdG8gaW5kaWNhdGUgd2hpY2ggZmVhdHVyZSBpcyBl bmFibGVkIG9uIGN1cnJlbnQKKyAgICAgICAgc29ja2V0LiBTZWUgdmFsdWVzIGRlZmluZWQgaW4g J2VudW0gcHNyX2ZlYXRfdHlwZScuIEUuZy4KKworICAgICAgICBiaXQgMDogTDMgQ0FUIHN0YXR1 cy4KKyAgICAgICAgYml0IDE6IEwzIENEUCBzdGF0dXMuCisgICAgICAgIGJpdCAyOiBMMiBDQVQg c3RhdHVzLgorCisgICAgICAtIE1lbWJlciBgbnJfZmVhdGAKKworICAgICAgICBgbnJfZmVhdGAg bWVhbnMgdGhlIG51bWJlciBvZiBQU1IgZmVhdHVyZXMgZW5hYmxlZC4KKworICAgICAgLSBNZW1i ZXIgYGNvc19yZWZgCisKKyAgICAgICAgYGNvc19yZWZgIGlzIGFuIGFycmF5IHdoaWNoIG1haW50 YWlucyB0aGUgcmVmZXJlbmNlIG9mIG9uZSBDT1MuIEl0IG1hcHMKKyAgICAgICAgdG8gY29zX3Jl Z192YWxbTUFYX0NPU19SRUdfTlVNXSBpbiBgc3RydWN0IGZlYXRfbm9kZWAuIElmIG9uZSBDT1Mg aXMKKyAgICAgICAgdXNlZCBieSBvbmUgZG9tYWluLCB0aGUgY29ycmVzcG9uZGluZyByZWZlcmVu Y2Ugd2lsbCBpbmNyZWFzZSBieSBvbmUuIElmCisgICAgICAgIGEgZG9tYWluIHJlbGVhc2VzIHRo ZSBDT1MsIHRoZSByZWZlcmVuY2Ugd2lsbCBkZWNyZWFzZSBieSBvbmUuIFRoZSBhcnJheQorICAg ICAgICBpcyBpbmRleGVkIGJ5IENPUyBJRC4KKworICAgNC4gRmVhdHVyZSBvcGVyYXRpb24gZnVu Y3Rpb25zIHN0cnVjdHVyZQorCisgICAgICBgYGAKKyAgICAgIHN0cnVjdCBmZWF0X29wcyB7Cisg ICAgICAgICAgdW5zaWduZWQgaW50ICgqZ2V0X2Nvc19tYXgpKGNvbnN0IHN0cnVjdCBmZWF0X25v ZGUgKmZlYXQpOworICAgICAgICAgIGludCAoKmdldF9mZWF0X2luZm8pKGNvbnN0IHN0cnVjdCBm ZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg ZGF0YVtdLCB1aW50MzJfdCBhcnJheV9sZW4pOworICAgICAgICAgIGludCAoKmdldF92YWwpKGNv bnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsIHVuc2lnbmVkIGludCBjb3MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgZW51bSBjYm1fdHlwZSB0eXBlLCB1aW50NjRfdCAqdmFsKTsKKyAgICAg ICAgICB1bnNpZ25lZCBpbnQgKCpnZXRfY29zX251bSkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAq ZmVhdCk7CisgICAgICAgICAgaW50ICgqZ2V0X29sZF92YWwpKHVpbnQ2NF90IHZhbFtdLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2Nvcyk7CisgICAg ICAgICAgaW50ICgqc2V0X25ld192YWwpKHVpbnQ2NF90IHZhbFtdLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW51bSBjYm1fdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCBtKTsKKyAgICAgICAgICBpbnQgKCpjb21wYXJlX3ZhbCkoY29uc3QgdWlu dDY0X3QgdmFsW10sIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb3MsIGJvb2wgKmZvdW5kKTsKKyAgICAgICAg ICB1bnNpZ25lZCBpbnQgKCpmaXRzX2Nvc19tYXgpKGNvbnN0IHVpbnQ2NF90IHZhbFtdLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZlYXRfbm9k ZSAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBjb3MpOworICAgICAgICAgIGludCAoKndyaXRlX21zcikodW5zaWduZWQgaW50IGNvcywg Y29uc3QgdWludDY0X3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZmVhdF9ub2RlICpmZWF0KTsKKyAgICAgIH07CisgICAgICBgYGAKKworICAgICAgV2UgYWJzdHJh Y3QgYWJvdmUgY2FsbGJhY2sgZnVuY3Rpb25zIHRvIGVuY2Fwc3VsYXRlIHRoZSBmZWF0dXJlIHNw ZWNpZmljCisgICAgICBiZWhhdmlvcnMgaW50byB0aGVtLiBUaGVuLCBpdCBpcyBlYXN5IHRvIGFk ZCBhIG5ldyBmZWF0dXJlLiBXZSBqdXN0IG5lZWQ6CisgICAgICAgICAgMSkgSW1wbGVtZW50IHN1 Y2ggb3BzIGFuZCBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIGV2ZXJ5IGZlYXR1cmUuCisgICAgICAg ICAgMikgUmVnaXN0ZXIgdGhlIG9wcyBpbnRvIGBzdHJ1Y3QgZmVhdF9ub2RlYC4KKyAgICAgICAg ICAzKSBBZGQgdGhlIGZlYXR1cmUgaW50byBmZWF0dXJlIGxpc3QgZHVyaW5nIENQVSBpbml0aWFs aXphdGlvbi4KKworIyBMaW1pdGF0aW9ucworCitDQVQvQ0RQIGNhbiBvbmx5IHdvcmsgb24gSFcg d2hpY2ggZW5hYmxlcyBpdChjaGVjayBieSBDUFVJRCkuIFNvIGZhciwgdGhlcmUgaXMKK25vIEhX IHdoaWNoIGVuYWJsZXMgYm90aCBMMiBDQVQgYW5kIEwzIENBVC9DRFAuIEJ1dCBTVyBpbXBsZW1l bnRhdGlvbiBoYXMgY29ucy0KK2lkZXJlZCBzdWNoIHNjZW5hcmlvIHRvIGVuYWJsZSBib3RoIEwy IENBVCBhbmQgTDMgQ0FUL0NEUC4KKworIyBUZXN0aW5nCisKK1dlIGNhbiBleGVjdXRlIGFib3Zl IHhsIGNvbW1hbmRzIHRvIHZlcmlmeSBMMiBDQVQgYW5kIEwzIENBVC9DRFAgb24gZGlmZmVyZW50 CitIV3Mgc3VwcG9ydCB0aGVtLgorCitGb3IgZXhhbXBsZToKKyAgICByb290QDp+JCB4bCBwc3It aHdpbmZvIC0tY2F0CisgICAgQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOiBMMgor ICAgIFNvY2tldCBJRCAgICAgICA6IDAKKyAgICBNYXhpbXVtIENPUyAgICAgOiAzCisgICAgQ0JN IGxlbmd0aCAgICAgIDogOAorICAgIERlZmF1bHQgQ0JNICAgICA6IDB4ZmYKKworICAgIHJvb3RA On4kIHhsIHBzci1jYXQtY2JtLXNldCAtbDIgMSAweDdmCisKKyAgICByb290QDp+JCB4bCBwc3It Y2F0LXNob3cgLWwyIDEKKyAgICBTb2NrZXQgSUQgICAgICAgOiAwCisgICAgRGVmYXVsdCBDQk0g ICAgIDogMHhmZgorICAgICAgIElEICAgICAgICAgICAgICAgICAgICAgTkFNRSAgICAgICAgICAg ICBDQk0KKyAgICAgICAgMSAgICAgICAgICAgICAgICAgdWJ1bnR1MTQgICAgICAgICAgICAweDdm CisKKyMgQXJlYXMgZm9yIGltcHJvdmVtZW50CisKK0EgaGV4YWRlY2ltYWwgbnVtYmVyIGlzIHVz ZWQgdG8gc2V0L3Nob3cgQ0JNIGZvciBhIGRvbWFpbiBub3cuIEFsdGhvdWdoIHRoaXMKK2lzIGNv bnZlbmllbnQgdG8gY292ZXIgb3ZlcmxhcC9pc29sYXRlZCBiaXRtYXNrIHJlcXVpcmVtZW50LCBp dCBpcyBub3QgdXNlci0KK2ZyaWVuZGx5LgorCitUbyBpbXByb3ZlIHRoaXMsIHRoZSBsaWJ4bCBp bnRlcmZhY2VzIGNhbiBiZSB3cmFwcGVkIGluIGxpYnZpcnQgdG8gcHJvdmlkZSBtb3JlCit1c3It ZnJpZW5kbHkgaW50ZXJmYWNlcyB0byB1c2VyLCBlLmcuIGEgcGVyY2VudGFnZSBudW1iZXIgb2Yg dGhlIGNhY2hlIHRvIHNldAorYW5kIHNob3cuCisKKyMgS25vd24gaXNzdWVzCisKK04vQQorCisj IFJlZmVyZW5jZXMKKworIklOVEVMwq4gUkVTT1VSQ0UgRElSRUNUT1IgVEVDSE5PTE9HWSAoSU5U RUzCriBSRFQpIEFMTE9DQVRJT04gRkVBVFVSRVMiIFtJbnRlbMKuIDY0IGFuZCBJQS0zMiBBcmNo aXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlciBNYW51YWxzLCB2b2wzXShodHRwOi8vd3d3Lmlu dGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9wcm9jZXNzb3JzL2FyY2hpdGVjdHVyZXMtc29mdHdh cmUtZGV2ZWxvcGVyLW1hbnVhbHMuaHRtbCkKKworIyBIaXN0b3J5CisKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorRGF0ZSAgICAgICBSZXZpc2lvbiBWZXJzaW9uICBOb3RlcworLS0tLS0tLS0tLSAtLS0tLS0t LSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisy MDE2LTA4LTEyIDEuMCAgICAgIFhlbiA0LjkgIERlc2lnbiBkb2N1bWVudCB3cml0dGVuCisyMDE3 LTAyLTEzIDEuNyAgICAgIFhlbiA0LjkgIENoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDEuIE1vZGlmeSB0aGUgZGVzaWduIGRvY3VtZW50IHRvIGNvdmVyIEwzCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENBVC9DRFAgYW5kIEwyIENBVDsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMi4gRml4IHR5cG9zOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAzLiBBbWVuZCBkZXNjcmlwdGlvbiBvZiBgZmVhdF9tYXNrYCB0byBtYWtlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGl0IGNsZWFyZXI7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDQuIE90aGVyIG1pbm9yIGNoYW5nZXMuCisyMDE3LTAyLTE1IDEuOCAgICAgIFhl biA0LjkgIENoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuIEFkZCBjb250 ZW50IGluICdBcmVhcyBmb3IgaW1wcm92ZW1lbnQnOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAyLiBBZGp1c3QgcmV2aXNpb24gbnVtYmVyLgorLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0t LS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIAoxLjku MQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=