From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhang Yi Subject: [PATCH RFC 00/14] Intel EPT-Based Sub-page Write Protection Support. Date: Thu, 19 Oct 2017 16:04:51 +0800 Message-ID: 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 1e55oU-00040u-Ah for xen-devel@lists.xenproject.org; Thu, 19 Oct 2017 08:04:22 +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: kevin.tian@intel.com, tamas@tklengyel.com, wei.liu2@citrix.com, jun.nakajima@intel.com, rcojocaru@bitdefender.com, george.dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, Zhang Yi Z , jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org RnJvbTogWmhhbmcgWWkgWiA8eWkuei56aGFuZ0BsaW51eC5pbnRlbC5jb20+CgpIaSBBbGwsCgpI ZXJlIGlzIGEgcGF0Y2gtc2VyaWVzIHdoaWNoIGFkZGluZyBFUFQtQmFzZWQgU3ViLXBhZ2UgV3Jp dGUgUHJvdGVjdGlvbiBTdXBwb3J0LiBZb3UgY2FuIGdldCBJdCdzIHNvZnR3YXJlIGRldmVsb3Bl ciBtYW51YWxzIGZyb206CgpodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9zaXRlcy9kZWZhdWx0 L2ZpbGVzL21hbmFnZWQvYzUvMTUvYXJjaGl0ZWN0dXJlLWluc3RydWN0aW9uLXNldC1leHRlbnNp b25zLXByb2dyYW1taW5nLXJlZmVyZW5jZS5wZGYKCkluIENoYXB0ZXIgNCBFUFQtQkFTRUQgU1VC LVBBR0UgUEVSTUlTU0lPTlMuCgpJbnRyb2R1Y3Rpb246CgpFUFQtQmFzZWQgU3ViLXBhZ2UgV3Jp dGUgUHJvdGVjdGlvbiByZWZlcnJlZCB0byBhcyBTUFAsIGl0IGlzIGEgY2FwYWJpbGl0eSB3aGlj aCBhbGxvdyBWaXJ0dWFsIE1hY2hpbmUgTW9uaXRvcnMoVk1NKSB0byBzcGVjaWZ5IHdyaXRlLXBl cm1pc3Npb24gZm9yIGd1ZXN0IHBoeXNpY2FsIG1lbW9yeSBhdCBhIHN1Yi1wYWdlKDEyOCBieXRl KSBncmFudWxhcml0eS4gIFdoZW4gdGhpcyBjYXBhYmlsaXR5IGlzIHV0aWxpemVkLCB0aGUgQ1BV IGVuZm9yY2VzIHdyaXRlLWFjY2VzcyBwZXJtaXNzaW9ucyBmb3Igc3ViLXBhZ2UgcmVnaW9ucyBv ZiA0SyBwYWdlcyBhcyBzcGVjaWZpZWQgYnkgdGhlIFZNTS4gRVBULWJhc2VkIHN1Yi1wYWdlIHBl cm1pc3Npb25zIGlzIGludGVuZGVkIHRvIGVuYWJsZSBmaW5lLWdyYWluZWQgbWVtb3J5IHdyaXRl IGVuZm9yY2VtZW50IGJ5IGEgVk1NIGZvciBzZWN1cml0eShndWVzdCBPUyBtb25pdG9yaW5nKSBh bmQgdXNhZ2VzIHN1Y2ggYXMgZGV2aWNlIHZpcnR1YWxpemF0aW9uIGFuZCBtZW1vcnkgY2hlY2st cG9pbnQuCgpIb3cgU1BQIFdvcmtzOgoKU1BQIGlzIGFjdGl2ZSB3aGVuIHRoZSAic3ViLXBhZ2Ug d3JpdGUgcHJvdGVjdGlvbiIgVk0tZXhlY3V0aW9uIGNvbnRyb2wgaXMgMS4gQSBuZXcgNC1sZXZl bCBwYWdpbmcgc3RydWN0dXJlIG5hbWVkIFNQUCBwYWdlIHRhYmxlKFNQUFQpIGlzIGludHJvZHVj ZWQsIFNQUFQgd2lsbCBsb29rIHVwIHRoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzZXMgdG8gZGVy aXZlIGEgNjQgYml0ICJzdWItcGFnZSBwZXJtaXNzaW9uIiB2YWx1ZSBjb250YWluaW5nIHN1Yi1w YWdlIHdyaXRlIHBlcm1pc3Npb25zLiBUaGUgbG9va3VwIGZyb20gZ3Vlc3QtcGh5c2ljYWwgYWRk cmVzc2VzIHRvIHRoZSBzdWItcGFnZSByZWdpb24gcGVybWlzc2lvbnMgaXMgZGV0ZXJtaW5lZCBi eSBhIHNldCBvZiB0aGlzIFNQUFQgcGFnaW5nIHN0cnVjdHVyZXMuCgpUaGUgU1BQVCBpcyB1c2Vk IHRvIGxvb2t1cCB3cml0ZSBwZXJtaXNzaW9uIGJpdHMgZm9yIHRoZSAxMjggYnl0ZSBzdWItcGFn ZSByZWdpb25zIGNvbnRhaW5pbmcgaW4gdGhlIDRLQiBndWVzdCBwaHlzaWNhbCBwYWdlLiBFUFQg c3BlY2lmaWVzIHRoZSA0S0IgcGFnZSBsZXZlbCBwcml2aWxlZ2VzIHRoYXQgc29mdHdhcmUgaXMg YWxsb3dlZCB3aGVuIGFjY2Vzc2luZyB0aGUgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcywgd2hlcmVh cyBTUFBUIGRlZmluZXMgdGhlIHdyaXRlIHBlcm1pc3Npb25zIGZvciBzb2Z0d2FyZSBhdCB0aGUg MTI4IGJ5dGUgZ3JhbnVsYXJpdHkgcmVnaW9ucyB3aXRoaW4gYSA0S0IgcGFnZS4gV3JpdGUgYWNj ZXNzZXMgcHJldmVudGVkIGR1ZSB0byBzdWItcGFnZSBwZXJtaXNzaW9ucyBsb29rZWQgdXAgdmlh IFNQUFQgYXJlIHJlcG9ydGVkIGFzIEVQVCB2aW9sYXRpb24gVk0gZXhpdHMuIFNpbWlsYXIgdG8g RVBULCBhIGxvZ2ljYWwgcHJvY2Vzc29yIHVzZXMgU1BQVCB0byBsb29rdXAgc3ViLXBhZ2UgcmVn aW9uIHdyaXRlIHBlcm1pc3Npb25zIGZvciBndWVzdC1waHlzaWNhbCBhZGRyZXNzZXMgb25seSB3 aGVuIHRob3NlIGFkZHJlc3NlcyBhcmUgdXNlZCB0byBhY2Nlc3MgbWVtb3J5LgoKR3Vlc3Qgd3Jp dGUgYWNjZXNzIC0tPiBHUEEgLS0+IFdhbGsgRVBUIC0tPiBFUFQgbGVhZiBlbnRyeSAt4pSQCuKU jC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0t4pSYCuKUlC0+IGlmIFZNZXhlY19jb250cm9sLnNwcCAmJiBlcHRfbGVhZl9lbnRyeS5zcHBf Yml0IChiaXQgNjEpCiAgICAgfAogICAgIOKUlC0+IDxmYWxzZT4gLS0+IEVQVCBsZWdhY3kgYmVo YXZpb3IKICAgICB8CiAgICAgfAogICAgIOKUlC0+IDx0cnVlPiAgLS0+IGlmIGVwdF9sZWFmX2Vu dHJ5LndyaXRhYmxlCiAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgICAg ICDilJQtPiA8dHJ1ZT4gIC0tPiBJZ25vcmUgU1BQCiAgICAgICAgICAgICAgICAgICAgICB8CgkJ ICAgICAg4pSULT4gPGZhbHNlPiAtLT4gR1BBIC0tPiBXYWxrIFNQUCA0LWxldmVsIHRhYmxlLS3i lJAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwK4pSMLS0tLS0tLS0tLS0tPC0tLS0tLS0tLS1nZXQtdGhlLVNQUFQt cG9pbnQtZnJvbS1WTUNTLWZpbGVkLS0tLS08LS0tLS0t4pSYCnwKV2FsayBTUFAgTDRFIHRhYmxl CnwK4pSU4pSQLS0+IGVudHJ5IG1pc2NvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tPi0tLS0tLS0t LS3ilJA8LS0tLS0tLS0tLS0tLS0tLeKUkAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfAplbHNlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfAog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgfAogfCAgIOKUjC0tLS0tLS0tLS0tLS0tLS0tLVNQUCBWTWV4aXQ8LS0tLS0t LS0tLS0tLS0tLS3ilJggICAgICAgICAgICAgICAgIHwKIHwgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIHwgICDilJQt PiBleGl0X3F1YWxpZmljYXRpb24gJiBzcHB0X21pc2NvbmZpZyAtLT4gc3BwdCBtaXNjb25maWcg ICAgICAgfAogfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAogfCAgIOKUlC0+IGV4aXRfcXVhbGlmaWNhdGlvbiAmIHNw cHRfbWlzcyAtLT4gc3BwdCBtaXNzICAgICAgICAgICAgICAgICB8CiDilJQtLeKUkCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAogICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfAp3YWxrIFNQUFQgTDNFLS3ilJAtLT4gaWYtZW50cnktbWlzY29uZmln dXJhdGlvbi0tLS0tLS0tLS0tLT4tLS0tLS0tLS0tLS3ilJgKICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCSAgICAg IGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAoJICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8CgkgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwKICAgICAgICB3YWxrIFNQUFQgTDJFIC0t4pSQLS0+IGlmLWVudHJ5 LW1pc2NvbmZpZ3VyYXRpb24tLS0tLS0tLT4tLS0tLS0t4pSYCiAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAg ICAgICAgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8CgkJCXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8CgkJCXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cgkg ICAgICAgICB3YWxrIFNQUFQgTDFFIC0t4pSQLT4gaWYtZW50cnktbWlzY29uZmlndXJhdGlvbi0t LT4tLS0t4pSYCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCQkJICAgICAgICBl bHNlCgkJCQkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilJQtPiBpZiBzdWIt cGFnZSB3cml0YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUlC0+ IDx0cnVlPiAgYWxsb3csIHdyaXRlIGFjY2VzcwoJICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAg4pSULT4gPGZhbHNlPiBkaXNhbGxvdywgRVBUIHZpb2xhdGlvbgoKUGF0Y2gtc2V0cyBEZXNj cmlwdGlvbjoKClBhdGNoIDE6IERvY3VtZW50YXRpb25zLgoKUGF0Y2ggMjogdGhpcyBwYXRjaCBh ZGRzIHJlcG9ydGluZyBTUFAgY2FwYWJpbGl0eSBmcm9tIFZNWCBQcm9jYmFzZWQgTVNSLCBhY2Nv cmRpbmcgdG8gdGhlIGRlZmluaXRpb24gb2YgaGFyZHdhcmUgc3BlYywgYml0IDIzIGlzIHRoZSBj b250cm9sIG9mIHRoZSBTUFAgY2FwYWJpbGl0eS4KClBhdGNoIDM6IEFkZCBuZXcgc2Vjb25kYXJ5 IHByb2Nlc3Nvci1iYXNlZCBWTS1leGVjdXRpb24gY29udHJvbCBiaXQgd2hpY2ggZGVmaW5lZCBh cyAic3ViLXBhZ2Ugd3JpdGUgcGVybWlzc2lvbiIsIHNhbWUgYXMgVk1YIFByb2NiYXNlZCBNU1Is IGJpdCAyMyBpcyB0aGUgZW5hYmxlIGJpdCBvZiBTUFAuCkFsc28gd2UgaW50cm9kdWNlZCBhIGtl cm5lbCBwYXJhbWV0ZXIgImVuYWJsZV9lcHRfc3BwIiwgbm93IFNQUCBpcyBhY3RpdmUgd2hlbiB0 aGUgIlN1Yi1wYWdlIFdyaXRlIFByb3RlY3Rpb24iIGluIFNlY29uZGFyeSAgVk0tRXhlY3V0aW9u IENvbnRyb2wgaXMgc2V0IGFuZCBlbmFibGUgdGhlIGtlcm5lbCBwYXJhbWV0ZXIgYnkgImVuYWJs ZV9lcHRfc3BwPTEiLgoKUGF0Y2ggNDogSW50cm9kdWNlZCB0aGUgc3BwdHAgYW5kIHNwcCBwYWdl IHRhYmxlLgpUaGUgc3ViLXBhZ2UgcGVybWlzc2lvbiB0YWJsZSBpcyByZWZlcmVuY2VkIHZpYSBh IDY0LWJpdCBjb250cm9sIGZpZWxkIGNhbGxlZCBTdWItUGFnZSBQZXJtaXNzaW9uIFRhYmxlIFBv aW50ZXIgKFNQUFRQKSB3aGljaCBjb250YWlucyBhIDRLLWFsaWduZWQgcGh5c2ljYWwgYWRkcmVz cy4gVGhlIGluZGV4IGFuZCBlbmNvZGluZyBmb3IgdGhpcyBWTUNTIGZpZWxkIGlmIGRlZmluZWQg MHgyMDMwIGF0IHRoaXMgdGltZS4gVGhlIGZvcm1hdCBvZiBTUFBUUCBpcyBzaG93biBpbiBiZWxv dyBmaWd1cmU6CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS18CnwgQml0ICAgIHwgQ29udGVudHMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IDExOjAgICB8IFJlc2VydmVkICgw KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTi0xOjEyIHwgUGh5 c2ljYWwgYWRkcmVzcyBvZiA0S0IgYWxpZ25lZCBTUFBUIEw0RSBUYWJsZSAgICAgIHwKfCA1MTpO ICAgfCBSZXNlcnZlZCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAp8IDYzOjUyICB8IFJlc2VydmVkICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLXwKClRoaXMgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VkIHRoZSBTcHAgcGFn aW5nIHN0cnVjdHVyZXMsIHdoaWNoIHJvb3QgcGFnZSB3aWxsIGNyZWF0ZWQgYXQgcDJtX2FsbG9j X3RhYmxlLgoKUGF0Y2ggNTogSW50cm9kdWNlZCB0aGUgU1BQLUluZHVjZWQgVk0gZXhpdCBhbmQg aXQncyBoYW5kbGUuCkFjY2Vzc2VzIHVzaW5nIGd1ZXN0LXBoeXNpY2FsIGFkZHJlc3NlcyBtYXkg Y2F1c2UgU1BQLWluZHVjZWQgVk0gZXhpdHMgZHVlIHRvIGFuIFNQUFQgbWlzY29uZmlndXJhdGlv biBvciBhbiBTUFBUIG1pc3MuIFRoZSBiYXNpYyBWTSBleGl0IHJlYXNvbiBjb2RlIHJlcG9ydGVk IGZvciBTUFAtaW5kdWNlZCBWTSBleGl0cyBpcyA2Ni4KCkFsc28gSW50cm9kdWNlZCB0aGUgbmV3 IGV4aXQgcXVhbGlmaWNhdGlvbiBmb3IgU1BQVC1pbmR1Y2VkIHZtZXhpdHMuCgp8IEJpdCAgIHwg Q29udGVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAp8IDotLS0tIHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IDEwOjAgIHwgUmVzZXJ2ZWQgKDApLiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEx ICAgIHwgU1BQVCBWTSBleGl0IHR5cGUuIFNldCBmb3IgU1BQVCBNaXNzLCBjbGVhcmVkIGZvciBT UFBUIE1pc2NvbmZpZy4gfAp8IDEyICAgIHwgTk1JIHVuYmxvY2tpbmcgZHVlIHRvIElSRVQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDYzOjEzIHwgUmVzZXJ2ZWQg KDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAoKClBhdGNoIDcgfiBQYXRjaCA4OiBTZXR1cCBzcHAgcGFnZSB0YWJsZSBhbmQgdXBkYXRlIHRo ZSBFUFQgbGVhZiBlbnRyeSBpbmRpY2F0ZWQgd2l0aCB0aGUgU1BQIGVuYWJsZSBiaXQuCklmIHRo ZSBzdWItcGFnZSB3cml0ZSBwZXJtaXNzaW9uIFZNLWV4ZWN1dGlvbiBjb250cm9sIGlzIHNldCwg dHJlYXRtZW50IG9mIHdyaXRlIGFjY2Vzc2VzIHRvIGd1ZXN0LXBoeXNpY2FsIGFjY2Vzc2VzIGRl cGVuZHMgb24gdGhlIHN0YXRlIG9mIHRoZSBhY2N1bXVsYXRlZCB3cml0ZS1hY2Nlc3MgYml0IChw b3NpdGlvbiAxKSBhbmQgc3ViLXBhZ2UgcGVybWlzc2lvbiBiaXQgKHBvc2l0aW9uIDYxKSBpbiB0 aGUgRVBUIGxlYWYgcGFnaW5nLXN0cnVjdHVyZS4KU29mdHdhcmUgd2lsbCB1cGRhdGUgdGhlIEVQ VCBsZWFmIGVudHJ5IHN1Yi1wYWdlIHBlcm1pc3Npb24gYml0IHdoaWxlIHhlbl9zZXRfc3VicGFn ZShwYXRjaCA3KS4gSWYgdGhlIEVQVCB3cml0ZS1hY2Nlc3MgYml0IHNldCB0byAwIGFuZCB0aGUg U1BQIGJpdCBzZXQgdG8gMSBpbiB0aGUgbGVhZiBFUFQgcGFnaW5nLXN0cnVjdHVyZSBlbnRyeSB0 aGF0IG1hcHMgYSA0S0IgcGFnZSwgdGhlbiB0aGUgaGFyZHdhcmUgd2lsbCBsb29rIHVwIGEgVk1N LW1hbmFnZWQgU3ViLVBhZ2UgUGVybWlzc2lvbiBUYWJsZSAoU1BQVCksIHdoaWNoIHdpbGwgYmUg cHJlcGFyZWQgYnkgc2V0dXAgeGVuX3NldF9zdWJwYWdlKHBhdGNoIDgpLgpUaGUgaGFyZHdhcmUg dXNlcyB0aGUgZ3Vlc3QtcGh5c2ljYWwgYWRkcmVzcyBhbmQgYml0cyAxMTo3IG9mIHRoZSBhZGRy ZXNzIGFjY2Vzc2VkIHRvIGxvb2t1cCB0aGUgU1BQVCB0byBmZXRjaCBhIHdyaXRlIHBlcm1pc3Np b24gYml0IGZvciB0aGUgMTI4IGJ5dGUgd2lkZSBzdWItcGFnZSByZWdpb24gYmVpbmcgYWNjZXNz ZWQgd2l0aGluIHRoZSA0SyBndWVzdC1waHlzaWNhbCBwYWdlLiBJZiB0aGUgc3ViLXBhZ2UgcmVn aW9uIHdyaXRlIHBlcm1pc3Npb24gYml0IGlzIHNldCwgdGhlIHdyaXRlIGlzIGFsbG93ZWQsIG90 aGVyd2lzZSB0aGUgd3JpdGUgaXMgZGlzYWxsb3dlZCBhbmQgcmVzdWx0cyBpbiBhbiBFUFQgdmlv bGF0aW9uLgpHdWVzdC1waHlzaWNhbCBwYWdlcyBtYXBwZWQgdmlhIGxlYWYgRVBULXBhZ2luZy1z dHJ1Y3R1cmVzIGZvciB3aGljaCB0aGUgYWNjdW11bGF0ZWQgd3JpdGUtYWNjZXNzIGJpdCBhbmQg dGhlIFNQUCBiaXRzIGFyZSBib3RoIGNsZWFyICgwKSBnZW5lcmF0ZSBFUFQgdmlvbGF0aW9ucyBv biBtZW1vcnkgd3JpdGVzIGFjY2Vzc2VzLiBHdWVzdC1waHlzaWNhbCBwYWdlcyBtYXBwZWQgdmlh IEVQVC1wYWdpbmctc3RydWN0dXJlIGZvciB3aGljaCB0aGUgYWNjdW11bGF0ZWQgd3JpdGUtYWNj ZXNzIGJpdCBpcyBzZXQgKDEpIGFsbG93IHdyaXRlcywgZWZmZWN0aXZlbHkgaWdub3JpbmcgdGhl IFNQUCBiaXQgb24gdGhlIGxlYWYgRVBULXBhZ2luZyBzdHJ1Y3R1cmUuClNvZnR3YXJlIHdpbGwg c2V0dXAgdGhlIHNwcCBwYWdlIHRhYmxlIGxldmVsNCwzLDIgYXMgd2VsbCBhcyBFUFQgcGFnZSBz dHJ1Y3R1cmUsIGFuZCBmaWxsIHRoZSBsZXZlbDEgcGFnZSB2aWEgdGhlIDMyIGJpdCBiaXRtYXBz IHBlciBhIHNpbmdsZSA0SyBwYWdlLiBOb3cgaXQgY291bGQgYmUgZGl2aWRlZCB0byAzMiB4IDEy OCBzdWItcGFnZXMuCgpUaGUgU1BQIEw0RSBMM0UgTDJFIGlzIGRlZmluZWQgYXMgYmVsb3cgZmln dXJlLgoKfCBCaXQgICAgfCBDb250ZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA6LS0tLS0gfCA6LS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IHwKfCAwICAgICAgfCBWYWxpZCBlbnRyeSB3aGVuIHNldDsgaW5kaWNhdGVzIHdoZXRoZXIgdGhl IGVudHJ5IGlzIHByZXNlbnQgICAgICAgICAgIHwKfCAxMToxICAgfCBSZXNlcnZlZCAoMCkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK fCBOLTE6MTIgfCBQaHlzaWNhbCBhZGRyZXNzIG9mIDRLIGFsaWduZWQgU1BQVCBMWC0xIFRhYmxl IHJlZmVyZW5jZWQgYnkgdGhlIGVudHJ5IHwKfCA1MTpOICAgfCBSZXNlcnZlZCAoMCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA2 Mzo1MiAgfCBSZXNlcnZlZCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKTm90ZTogTiBpcyB0aGUgcGh5c2ljYWwgYWRkcmVzcyB3 aWR0aCBzdXBwb3J0ZWQgYnkgdGhlIHByb2Nlc3NvciwgWCBpcyB0aGUgcGFnZSBsZXZlbAoKVGhl IFNQUCBMMUUgZm9ybWF0IGlzIGRlZmluZWQgYXMgYmVsb3cgZmlndXJlLgp8IEJpdCAgIHwgQ29u dGVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAp8IDotLS0tIHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IDArMmkgIHwgV3JpdGUgcGVybWlzc2lvbiBm b3IgaS10aCAxMjggYnl0ZSBzdWItcGFnZSByZWdpb24uICAgICAgICAgICAgICAgfAp8IDErMmkg IHwgUmVzZXJ2ZWQgKDApLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfApOb3RlOiBgMDw9aTw9MzFgCgpQYXRjaCA5IH4gUGF0Y2ggMTA6IEludHJv ZHVjZWQgYSBoeXBlciBjYWxsIHRvIHNldCBzdWJwYWdlIHByb3RlY3Rpb24uCgpUaGUgbmV3IFhl biBIeXBlcmNhbGwgaXMgSFZNT1Bfc2V0X3N1YnBhZ2UuClRoZSBJbnRlcmZhY2UncyBwYXJhbWV0 ZXJzIGlzIGRlZmluZWQgYXMKCiAgICBzdHJ1Y3QgeGVuX2h2bV9zdWJwYWdlIHsKICAgICAgICBk b21pZF90ICBkb21pZDsKCXVpbnQzMl90IGFjY2Vzc19tYXA7Cgl1aW50NjRfdCBnZm47CiAgICB9 CgpQYXRjaCAxMTogQWRkZWQgYSBoYW5kbGUgb2YgRVBUIHN1YnBhZ2Ugd3JpdGUgcHJvdGVjdGlv biBmYXVsdC4KQSBjb250cm9sIGJpdCBpbiBFUFQgbGVhZiBwYWdpbmctc3RydWN0dXJlIGVudHJp ZXMgaXMgZGVmaW5lZCBhcyDigJxTdWItUGFnZSBQZXJtaXNzaW9u4oCdIChTUFAgYml0KS4gVGhl IGJpdCBwb3NpdGlvbiBpcyA2MTsgaXQgaXMgY2hvc2VuIGZyb20gYW1vbmcgdGhlIGJpdHMgdGhh dCBhcmUgY3VycmVudGx5IGlnbm9yZWQgYnkgdGhlIHByb2Nlc3NvciBhbmQgYXZhaWxhYmxlIHRv IHNvZnR3YXJlLgpXaGlsZSBoYXJkd2FyZSB3YWxraW5nIHRoZSBTUFAgcGFnZSB0YWJsZSwgSWYg dGhlIHN1Yi1wYWdlIHJlZ2lvbiB3cml0ZSBwZXJtaXNzaW9uIGJpdCBpcyBzZXQsIHRoZSB3cml0 ZSBpcyBhbGxvd2VkLCBlbHNlIHRoZSB3cml0ZSBpcyBkaXNhbGxvd2VkIGFuZCByZXN1bHRzIGFu IEVQVCB2aW9sYXRpb24uCldlIG5lZWQgcGVlayB0aGlzIGNhc2UgaW4gRVBUIHZpb2xhdGlvbiBo YW5kbGVyLgoKUGF0Y2ggMTMgfiBQYXRjaCAxNDogSW1wbGVtZW50IGEgdXNlciB0b29sIHRvIHNl dCBzdWJwYWdlIHByb3RlY3Rpb24uCkl0IGlzIGEgdG9vbCBjb3VsZCBzZXQgYSA0SyBwYWdlIGNv cnJlc3BvbmRpbmcgYSAzMiBiaXQgYml0bWFwOiB4ZW4tc3VicGFnZSAtbSBbZG9taWRdIHNldCBb Z2ZuXSBbYml0bWFwXQoKWmhhbmcgWWkgWiAoMTQpOgogIHhlbjogdm14OiBBZGRlZCBFUFQgYmFz ZWQgU3VicGFnZSBXcml0ZSBQcm90ZWN0aW9uIERvYy4KICB4ZW46IHZteDogQWRkZWQgVk1YIFNQ UCBmZWF0dXJlIGZsYWdzIGFuZCBWTS1FeGVjdXRpb24gQ29udHJvbHMuCiAgeGVuOiB2bXg6IElu dHJvZHVjZSB0aGUgU1BQVFAgYW5kIFNQUCBwYWdlIHRhYmxlLgogIHhlbjogdm14OiBJbnRyb2R1 Y2UgU1BQLUluZHVjZWQgdm0gZXhpdCBhbmQgaXQncyBoYW5kbGUuCiAgeGVuOiB2bXg6IERpc2Fi bGUgdGhlIDJNLzFHIHN1cGVycGFnZSB3aGVuIFNQUCBlbmFibGVkCiAgeGVuOiB2bXg6IEFkZGVk IFNQUCBmbGFncyBpbiBFUFQgbGVhZiBlbnRyeS4KICB4ZW46IHZteDogVXBkYXRlIHRoZSBFUFQg bGVhZiBlbnRyeSBpbmRpY2F0ZWQgd2l0aCB0aGUgU1BQIGVuYWJsZSBiaXQuCiAgeGVuOiB2bXg6 IEFkZGVkIHNldHVwIHNwcCBwYWdlIHN0cnVjdHVyZS4KICB4ZW46IHZteDogSW50cm9kdWNlIGEg SHlwZXIgY2FsbCB0byBzZXQgc3VicGFnZQogIHhlbjogdm14OiBJbXBsZW1lbnQgdGhlIEh5cGVy Y2FsbCBwMm1fc2V0X3N1YnBhZ2UKICB4ZW46IHZteDogQWRkZWQgaGFuZGxlIG9mIFNQUCB3cml0 ZSBwcm90ZWN0aW9uIGZhdWx0CiAgeGVuOiB2bXg6IFN1cHBvcnQgZm9yIGNsZWFyIEVQVCBTUFAg d3JpdGUgUHJvdGVjdCBiaXQKICB4ZW46IHRvb2xzOiBJbnRyb2R1Y2UgdGhlIHNldC1zdWJwYWdl IGludG8geGVuY3RybAogIHhlbjogdG9vbHM6IEFkZGVkIHhlbi1zdWJwYWdlIHRvb2wuCgogZG9j cy90eHQvbWlzYy9zcHBfeGVuLnR4dCAgICAgICAgICAgICB8IDI1OSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCAgICAgICAg IHwgICAyICsKIHRvb2xzL2xpYnhjL3hjX21lbV9wYWdpbmcuYyAgICAgICAgICAgfCAgMjAgKysr CiB0b29scy90ZXN0cy94ZW4tc3VicGFnZS9NYWtlZmlsZSAgICAgIHwgIDMwICsrKysKIHRvb2xz L3Rlc3RzL3hlbi1zdWJwYWdlL3hlbi1zdWJwYWdlLmMgfCAxMjUgKysrKysrKysrKysrKysrKwog eGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgICAgICB8ICAyMSArKysKIHhlbi9hcmNo L3g4Ni9odm0vdm14L3ZtY3MuYyAgICAgICAgICAgfCAgMjAgKysrCiB4ZW4vYXJjaC94ODYvaHZt L3ZteC92bXguYyAgICAgICAgICAgIHwgIDQwICsrKysrKwogeGVuL2FyY2gveDg2L21tL21lbV9h Y2Nlc3MuYyAgICAgICAgICB8ICA4MCArKysrKysrKysrKwogeGVuL2FyY2gveDg2L21tL3AybS1l cHQuYyAgICAgICAgICAgICB8IDE1MiArKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2 L21tL3AybS5jICAgICAgICAgICAgICAgICB8ICAxMiArLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vaHZtLmggICAgICAgICB8ICAgMiArCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm1j cy5oICAgIHwgIDE0ICsrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm14LmggICAgIHwg IDI2ICsrKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggICAgICAgICAgICAgfCAgMTMgKy0K IHhlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmggICAgICAgfCAgIDkgKysKIHhlbi9pbmNs dWRlL3hlbi9tZW1fYWNjZXNzLmggICAgICAgICAgfCAgIDMgKwogMTcgZmlsZXMgY2hhbmdlZCwg ODI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9j cy90eHQvbWlzYy9zcHBfeGVuLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3RzL3hl bi1zdWJwYWdlL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvdGVzdHMveGVuLXN1 YnBhZ2UveGVuLXN1YnBhZ2UuYwoKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==