From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: [Draft D] Xen on ARM vITS Handling Date: Thu, 4 Jun 2015 14:54:13 +0100 Message-ID: <1433426053.7108.107.camel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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@lists.xen.org" Cc: manish.jaggi@caviumnetworks.com, Julien Grall , Stefano Stabellini , Vijay Kilari List-Id: xen-devel@lists.xenproject.org RHJhZnQgRCBmb2xsb3dzLiBBbHNvIGF0OgpodHRwOi8veGVuYml0cy54ZW4ub3JnL3Blb3BsZS9p YW5jL3ZpdHMvZHJhZnRELntwZGYsaHRtbH0KCkluIHRoaXMgaXRlcmF0aW9uIEkgdG9vayBhIHN0 ZXAgYmFjayBhbmQgdHJpZWQgdG8gc2ltcGxpZnkgYSBsb3Qgb2YKdGhpbmdzLCBpbiBhbiBhdHRl bXB0IHRvIGdldCBjbG9zZXIgdG8gc29tZXRoaW5nIHdlIGNhbiBhZ3JlZSBvbiBhcyBhCmZpcnN0 IGN1dCB0aGF0IGlzIGFjaGlldmFibGUgZm9yIDQuNiwgc2luY2UgSSBmZWx0IHdlIHdlcmUgZ2V0 dGluZwpib2dnZWQgZG93biBpbiB0aGUgY29tcGxleGl0eSBvZiB0cnlpbmcgdG8gZG8gZXZlcnl0 aGluZyBhdCBvbmNlLiBUaGVzZQphc3N1bXB0aW9ucy9zaG9ydCBjb21pbmdzIGNhbiBiZSBhZGRy ZXNzZWQgaW4gZnV0dXJlIGl0ZXJhdGlvbnMgb2YgdGhlCmNvZGUuCgpQbGVhc2UgbGV0IG1lIGtu b3cgd2hhdCB5b3UgdGhpbmsuCgpQZXJoYXBzIGl0IHdvdWxkIGJlIHVzZWZ1bCB0byBoYXZlIGEg c2hvcnQgSVJDIG1lZXRpbmcgb24gI3hlbmFybSB0bwppcm9uIG91dCB0aGUgbGFzdCBkZXRhaWxz PyBJZiBwZW9wbGUgY291bGQgbGV0IG1lIGtub3cgdGhlaXIKYXZhaWxhYmlsaXR5IGFuZCB0aW1l em9uZXMgSSBjYW4gdHJ5IGFuZCBzZXQgc29tZXRoaW5nIHVwLgoKSWYgcGVvcGxlIHByZWZlciB3 ZSBjb3VsZCB1c2UgYSBzbG90IGluIHRoZSBNb250aGx5IHRlY2huaWNhbCBjYWxsWzBdLAp3aGlj aCBpcyBuZXh0IHdlZWsgYnV0IEkgdGhpbmsgSVJDIGlzIHByb2JhYmx5IGJldHRlciBzdWl0ZWQ/ CgpbMF0gaHR0cDovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNS0w Ni9tc2cwMDQ2MC5odG1sCgpJYW4uCgotLS0tLTg+LS0tLS0tLS0tLS0tCgolIFhlbiBvbiBBUk0g dklUUyBIYW5kbGluZwolIElhbiBDYW1wYmVsbCA8aWFuLmNhbXBiZWxsQGNpdHJpeC5jb20+CiUg RHJhZnQgRAoKIyBDaGFuZ2Vsb2cKCiMjIFNpbmNlIERyYWZ0IEMKCiogX01ham9yXyByZXdvcmss IGluIGFuIGF0dGVtcHQgdG8gc2ltcGxpZnkgZXZlcnl0aGluZyBpbnRvIHNvbWV0aGluZwogIG1v cmUgbGlrZWx5IHRvIGJlIGFjaGlldmFibGUgZm9yIDQuNi4KICAgICogTWFkZSBzb21lIHNpbXBs aWZ5aW5nIGFzc3VtcHRpb25zLgogICAgKiBSZWR1Y2VkIHRoZSBzY29wZSBvZiBzb21lIHN1cHBv cnQuCiAgICAqIENvbW1hbmQgZW11bGF0aW9uIGlzIG5vdyBtb3N0bHkgdHJpdmlhbC4KICAgICog RXhwYW5kZWQgZGV0YWlsIG9uIGhvc3Qgc2V0dXAsIGFsbG93aW5nIG90aGVyIGFzc3VtcHRpb25z IHRvIGJlCiAgICAgIG1hZGUgZHVyaW5nIGVtdWxhdGlvbi4KKiBNYW55IG90aGVyIHRoaW5ncyBs b3N0IGluIHRoZSBub2lzZSBvZiB0aGUgYWJvdmUuCgojIyBTaW5jZSBEcmFmdCBCCgoqIERldGFp bHMgb2YgY29tbWFuZCB0cmFuc2xhdGlvbiAodGhhbmtzIHRvIEp1bGllbiBhbmQgVmlqYXkpCiog QWRkZWQgYmFja2dyb3VuZCBvbiBMUEkgVHJhbnNsYXRpb24gYW5kIFBlbmRpbmcgdGFibGVzCiog QWRkZWQgYmFja2dyb3VuZCBvbiBDb2xsZWN0aW9ucwoqIFNldHRsZWQgb24gYE46TmAgc2NoZW1l IGZvciB2SVRTOnBhdCdzIG1hcHBpbmcuCiogUmVqaWdnZWQgc2VjdGlvbiBuZXN0aW5nIGEgYml0 LgoqIFNpbmNlIHdlIG5vdyB0aGluZyB0cmFuc2xhdGlvbiBzaG91bGQgYmUgY2hlYXAsIHNldHRs ZSBvbgogIHRyYW5zbGF0aW9uIGF0IHNjaGVkdWxpbmcgdGltZS4KKiBMYXp5IGBJTlZBTExgIGFu ZCBgU1lOQ2AKCiMjIFNpbmNlIERyYWZ0IEEKCiogQWRkZWQgZGlzY3Vzc2lvbiBvZiB3aGVuL3do ZXJlIGNvbW1hbmQgdHJhbnNsYXRpb24gb2NjdXJzLgoqIENvbnRlbnRpb24gb24gc2NoZWR1bGVy IGxvY2ssIHN1Z2dlc3Rpb24gdG8gdXNlIFNPRlRJUlEuCiogSGFuZGxpbmcgb2YgZG9tYWluIHNo dXRkb3duLgoqIE1vcmUgZGV0YWlsZWQgZGlzY3Vzc2lvbiBvZiBtdWx0aXBsZSB2cyBzaW5nbGUg dml0cyBwcm9zL2NvbnMuCgojIEludHJvZHVjdGlvbgoKQVJNIHN5c3RlbXMgY29udGFpbmluZyBh IEdJQyB2ZXJzaW9uIDMgb3IgbGF0ZXIgbWF5IGNvbnRhaW4gb25lIG9yCm1vcmUgSVRTIGxvZ2lj YWwgYmxvY2tzLiBBbiBJVFMgaXMgdXNlZCB0byByb3V0ZSBNZXNzYWdlIFNpZ25hbGxlZAppbnRl cnJ1cHRzIGZyb20gZGV2aWNlcyBpbnRvIGFuIExQSSBpbmplY3Rpb24gb24gdGhlIHByb2Nlc3Nv ci4KClRoZSBmb2xsb3dpbmcgc3VtbWFyaXNlcyB0aGUgSVRTIGhhcmR3YXJlIGRlc2lnbiBhbmQg c2VydmVzIGFzIGEgc2V0Cm9mIGFzc3VtcHRpb25zIGZvciB0aGUgdklUUyBzb2Z0d2FyZSBkZXNp Z24uIEZvciBmdWxsIGRldGFpbHMgb2YgdGhlCklUUyBzZWUgdGhlICJHSUMgQXJjaGl0ZWN0dXJl IFNwZWNpZmljYXRpb24iLgoKIyMgTG9jYWxpdHktc3BlY2lmaWMgUGVyaXBoZXJhbCBJbnRlcnJ1 cHRzIChgTFBJYCkKClRoaXMgaXMgYSBuZXcgY2xhc3Mgb2YgbWVzc2FnZSBzaWduYWxsZWQgaW50 ZXJydXB0cyBpbnRyb2R1Y2VkIGluCkdJQ3YzLiBUaGV5IG9jY3VweSB0aGUgaW50ZXJydXB0IElE IHNwYWNlIGZyb20gYDgxOTIuLigyXjMyKS0xYC4KClRoZSBudW1iZXIgb2YgTFBJcyBzdXBwb3J0 IGJ5IGFuIElUUyBpcyBleHBvc2VkIHZpYQpgR0lUU19UWVBFUi5JRGJpdHNgIChhcyBudW1iZXIg b2YgYml0cyAtIDEpLCBpdCBtYXkgYmUgdXAgdG8KMl4zMi4gX05vdGVfOiBUaGlzIGZpZWxkIGFs c28gY29udGFpbnMgdGhlIG51bWJlciBvZiBFdmVudCBJRHMKc3VwcG9ydGVkIGJ5IHRoZSBJVFMu CgojIyMgTFBJIENvbmZpZ3VyYXRpb24gVGFibGUKCkVhY2ggTFBJIGhhcyBhbiBhc3NvY2lhdGVk IGNvbmZpZ3VyYXRpb24gYnl0ZSBpbiB0aGUgTFBJIENvbmZpZ3VyYXRpb24KVGFibGUgKG1hbmFn ZWQgdmlhIHRoZSBHSUMgUmVkaXN0cmlidXRvciBhbmQgcGxhY2VkIGF0CmBHSUNSX1BST1BCQVNF UmAgb3IgYEdJQ1JfVlBST1BCQVNFUmApLiBUaGlzIGJ5dGUgY29uZmlndXJlczoKCiogVGhlIExQ SSdzIHByaW9yaXR5OwoqIFdoZXRoZXIgdGhlIExQSSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgoK U29mdHdhcmUgdXBkYXRlcyB0aGUgQ29uZmlndXJhdGlvbiBUYWJsZSBkaXJlY3RseSBidXQgbXVz dCB0aGVuIGlzc3VlCmFuIGludmFsaWRhdGUgY29tbWFuZCAocGVyLWRldmljZSBgSU5WYCBJVFMg Y29tbWFuZCwgZ2xvYmFsIGBJTlZBTExgCklUUyBjb21tYW5kIG9yIHdyaXRlIGBHSUNSX0lOVkxQ SVJgKSBmb3IgdGhlIGFmZmVjdCB0byBiZSBndWFyYW50ZWVkCnRvIGJlY29tZSB2aXNpYmxlIChw b3NzaWJseSByZXF1aXJpbmcgYW4gSVRTIGBTWU5DYCBjb21tYW5kIHRvIGVuc3VyZQpjb21wbGV0 aW9uIG9mIHRoZSBgSU5WYCBvciBgSU5WQUxMYCkuIE5vdGUgdGhhdCBpdCBpcyB2YWxpZCBmb3Ig YW4KaW1wbGVtZW50YXRpb24gdG8gcmVyZWFkIHRoZSBjb25maWd1cmF0aW9uIHRhYmxlIGF0IGFu eSB0aW1lIChJT1cgaXQKaXMgX25vdF8gZ3VhcmFudGVlZCB0aGF0IGEgY2hhbmdlIHRvIHRoZSBM UEkgQ29uZmlndXJhdGlvbiBUYWJsZSB3b24ndApiZSB2aXNpYmxlIHVudGlsIGFuIGludmFsaWRh dGUgaXMgaXNzdWVkKS4KCiMjIyBMUEkgUGVuZGluZyBUYWJsZQoKRWFjaCBMUEkgYWxzbyBoYXMg YW4gYXNzb2NpYXRlZCBiaXQgaW4gdGhlIExQSSBQZW5kaW5nIFRhYmxlIChtYW5hZ2VkCmJ5IHRo ZSBHSUMgcmVkaXN0cmlidXRvcikuIFRoaXMgYml0IHNpZ25hbHMgd2hldGhlciB0aGUgTFBJIGlz IHBlbmRpbmcKb3Igbm90LgoKVGhpcyByZWdpb24gbWF5IGNvbnRhaW4gb3V0IG9mIGRhdGUgaW5m b3JtYXRpb24gYW5kIHRoZSBtZWNoYW5pc20gdG8Kc3luY2hyb25pc2UgaXMgYElNUExFTUVOVEFU SU9OIERFRklORURgLgoKIyMgSW50ZXJydXB0IFRyYW5zbGF0aW9uIFNlcnZpY2UgKGBJVFNgKQoK IyMjIERldmljZSBJZGVudGlmaWVycwoKRWFjaCBkZXZpY2UgdXNpbmcgdGhlIElUUyBpcyBhc3Nv Y2lhdGVkIHdpdGggYSB1bmlxdWUgIkRldmljZQpJZGVudGlmaWVyIi4KClRoZSBkZXZpY2UgSURz IGFyZSBwcm9wZXJ0aWVzIG9mIHRoZSBpbXBsZW1lbnRhaXRvbiBhbmQgYXJlIHR5cGljYWxseQpk ZXNjcmliZWQgdmlhIHN5c3RlbSBmaXJtd2FyZSwgZS5nLiB0aGUgQUNQSSBJT1JUIHRhYmxlIG9y IHZpYSBkZXZpY2UKdHJlZS4KClRoZSBudW1iZXIgb2YgZGV2aWNlIGlkcyBpbiBhIHN5c3RlbSBk ZXBlbmRzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQKY2FuIGJlIGRpc2NvdmVyZWQgdmlhIGBH SVRTX1RZUEVSLkRldmJpdHNgLiBUaGlzIGZpZWxkIGFsbG93cyBhbiBJVFMKdG8gaGF2ZSB1cCB0 byAyXjMyIGRldmljZXMuCgojIyMgRXZlbnRzCgpFYWNoIGRldmljZSBjYW4gZ2VuZXJhdGUgIkV2 ZW50cyIgKGNhbGxlZCBgSURgIGluIHRoZSBzcGVjKSB0aGVzZQpjb3JyZXNwb25kIHRvIHBvc3Np YmxlIGludGVycnVwdCBzb3VyY2VzIGluIHRoZSBkZXZpY2UgKGUuZy4gTVNJCm9mZnNldCkuCgpU aGUgbWF4aW11bSBudW1iZXIgb2YgaW50ZXJydXB0IHNvdXJjZXMgaXMgZGV2aWNlIHNwZWNpZmlj LiBJdCBpcwp1c3VhbGx5IGRpc2NvdmVyZWQgZWl0aGVyIGZyb20gZmlybXdhcmUgdGFibGVzIChl LmcuIERUIG9yIEFDUEkpIG9yCmZyb20gYnVzIHNwZWNpZmljIG1lY2hhbmlzbXMgKGUuZy4gUENJ IGNvbmZpZyBzcGFjZSkuCgpUaGUgbWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIGlkcyBzdXBwb3J0 IGJ5IGFuIElUUyBpcyBleHBvc2VkIHZpYQpgR0lUU19UWVBFUi5JRGJpdHNgIChhcyBudW1iZXIg b2YgYml0cyAtIDEpLCBpdCBtYXkgYmUgdXAgdG8KMl4zMi4gX05vdGVfOiBUaGlzIGZpZWxkIGFs c28gY29udGFpbnMgdGhlIG51bWJlciBvZiBgTFBJc2Agc3VwcG9ydGVkCmJ5IHRoZSBJVFMuCgoj IyMgSW50ZXJydXB0IENvbGxlY3Rpb25zCgpFYWNoIGludGVycnVwdCBpcyBhIG1lbWJlciBvZiBh biAiSW50ZXJydXB0IENvbGxlY3Rpb24iLiBUaGlzIGFsbG93cwpzb2Z0d2FyZSB0byBtYW5hZ2Ug bGFyZ2UgbnVtYmVycyBvZiBwaHlzaWNhbCBpbnRlcnJ1cHRzIHdpdGggYSBzbWFsbApudW1iZXIg b2YgY29tbWFuZHMgcmF0aGVyIHRoYW4gaXNzdWluZyBvbmUgY29tbWFuZCBwZXIgaW50ZXJydXB0 LgoKT24gYSBzeXN0ZW0gd2l0aCBOIHByb2Nlc3NvcnMsIHRoZSBJVFMgbXVzdCBwcm92aWRlIGF0 IGxlYXN0IE4rMQpjb2xsZWN0aW9ucy4KCkFuIElUUyBtYXkgc3VwcG9ydCBzb21lIG51bWJlciBv ZiBpbnRlcm5hbCBjb2xsZWN0aW9ucyAoaW5kaWNhdGVkIGJ5CmBHSVRTX1RZUEVSLkhDQ2ApIGFu ZCBleHRlcm5hbCBvbmVzIHdoaWNoIHJlcXVpcmUgbWVtb3J5IHByb3Zpc2lvbmVkCmJ5IHRoZSBP cGVyYXRpbmcgU3lzdGVtIHZpYSBhIGBHSVRTX0JBU0VSbmAgcmVnaXN0ZXIuCgojIyMgVGFyZ2V0 IEFkZHJlc3NlcwoKVGhlIFRhcmdldCBBZGRyZXNzIGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYyBH SUMgcmUtZGlzdHJpYnV0b3IuIFRoZQpmb3JtYXQgb2YgdGhpcyBmaWVsZCBkZXBlbmRzIG9uIHRo ZSB2YWx1ZSBvZiB0aGUgYEdJVFNfVFlQRVIuUFRBYCBiaXQ6CgoqIDE6IHRoZSBiYXNlIGFkZHJl c3Mgb2YgdGhlIHJlLWRpc3RyaWJ1dG9yIHRhcmdldCBpcyB1c2VkCiogMDogYSB1bmlxdWUgcHJv Y2Vzc29yIG51bWJlciBpcyB1c2VkLiBUaGUgbWFwcGluZyBiZXR3ZWVuIHRoZQogIHByb2Nlc3Nv ciBhZmZpbml0eSB2YWx1ZSAoYE1QSURSYCkgYW5kIHRoZSBwcm9jZXNzb3IgbnVtYmVyIGlzCiAg ZGlzY292ZXJhYmxlIHZpYSBgR0lDUl9UWVBFUi5Qcm9jZXNzb3JOdW1iZXJgLgoKVGhpcyB2YWx1 ZSBpcyB1cCB0byB0aGUgSVRTIGltcGxlbWVudGVyIChgR0lUU19UWVBFUmAgaXMgYSByZWFkLW9u bHkKcmVnaXN0ZXIpLgoKIyMjIERldmljZSBUYWJsZQoKQSBEZXZpY2UgVGFibGUgaXMgY29uZmln dXJlZCBpbiBlYWNoIElUUyB3aGljaCBtYXBzIGluY29taW5nIGRldmljZQppZGVudGlmaWVycyBp bnRvIGFuIElUUyBJbnRlcnJ1cHQgVHJhbnNsYXRpb24gVGFibGUuCgojIyMgSW50ZXJydXB0IFRy YW5zbGF0aW9uIFRhYmxlIChgSVRUYCkgYW5kIENvbGxlY3Rpb24gVGFibGUKCkFuIGBFdmVudGAg Z2VuZXJhdGVkIGJ5IGEgYERldmljZWAgaXMgdHJhbnNsYXRlZCBpbnRvIGFuIGBMUElgIHZpYSBh CnBlci1EZXZpY2UgSW50ZXJydXB0IFRyYW5zbGF0aW9uIFRhYmxlLiBUaGUgc3RydWN0dXJlIG9m IHRoaXMgdGFibGUgaXMKZGVzY3JpYmVkIGluIEdJQyBTcGVjIDQuOS4xMi4KClRoZSBJVFMgdHJh bnNsYXRpb24gdGFibGUgbWFwcyB0aGUgZGV2aWNlIGlkIG9mIHRoZSBvcmlnaW5hdGluZyBkZXZp Y2UKaW50byBhIHBoeXNpY2FsIGludGVycnVwdCAoYExQSWApIGFuZCBhbiBJbnRlcnJ1cHQgQ29s bGVjdGlvbi4KClRoZSBDb2xsZWN0aW9uIGlzIGluIHR1cm4gbG9va2VkIHVwIGluIHRoZSBDb2xs ZWN0aW9uIFRhYmxlIHRvIHByb2R1Y2UKYSBUYXJnZXQgQWRkcmVzcywgaW5kaWNhdGluZyBhIHJl ZGlzdHJpYnV0b3IgKEFLQSBDUFUpIHRvIHdoaWNoIHRoZQpMUEkgaXMgZGVsaXZlcmVkLgoKIyMj IE9TIFByb3Zpc2lvbmVkIE1lbW9yeSBSZWdpb25zCgpUaGUgSVRTIGhhcmR3YXJlIGRlc2lnbiBw cm92aWRlcyBtZWNoYW5pc21zIGZvciBhbiBJVFMgdG8gYmUgcHJvdmlkZWQKd2l0aCB2YXJpb3Vz IGJsb2NrcyBvZiBtZW1vcnkgYnkgdGhlIE9TIGZvciBJVFMgaW50ZXJuYWwgdXNlLCB0aGlzCmlu Y2x1ZGUgdGhlIHBlci1kZXZpY2UgSVRUIChlc3RhYmxpc2hlZCB3aXRoIGBNQVBEYCkgYW5kIG1l bW9yeQpyZWdpb25zIGZvciBEZXZpY2UgVGFibGVzLCBWaXJ0dWFsIFByb2Nlc3NvcnMgYW5kIElu dGVycnVwdApDb2xsZWN0aW9ucy4gVXAgdG8gOCBzdWNoIHJlZ2lvbnMgY2FuIGJlIHJlcXVlc3Rl ZCBieSB0aGUgSVRTIGFuZApwcm92aXNpb25lZCBieSB0aGUgT1MgdmlhIHRoZSBgR0lUU19CQVNF Um5gIHJlZ2lzdGVycy4KCiMjIyBJVFMgQ29uZmlndXJhdGlvbgoKVGhlIElUUyBpcyBjb25maWd1 cmVkIGFuZCBtYW5hZ2VkLCBpbmNsdWRpbmcgZXN0YWJsaXNoaW5nIGFuZApjb25maWd1cmluZyB0 aGUgVHJhbnNsYXRpb24gVGFibGVzIGFuZCBDb2xsZWN0aW9uIFRhYmxlLCB2aWEgYW4gaW4KbWVt b3J5IHJpbmcgc2hhcmVkIGJldHdlZW4gdGhlIENQVSBhbmQgdGhlIElUUyBjb250cm9sbGVyLiBU aGUgcmluZyBpcwptYW5hZ2VkIHZpYSB0aGUgYEdJVFNfQ0JBU0VSYCByZWdpc3RlciBhbmQgaW5k ZXhlZCBieSBgR0lUU19DV1JJVEVSYAphbmQgYEdJVFNfQ1JFQURSYCByZWdpc3RlcnMuCgpBIHBy b2Nlc3NvciBhZGRzIGNvbW1hbmRzIHRvIHRoZSBzaGFyZWQgcmluZyBhbmQgdGhlbiB1cGRhdGVz CmBHSVRTX0NXUklURVJgIHRvIG1ha2UgdGhlbSB2aXNpYmxlIHRvIHRoZSBJVFMgY29udHJvbGxl ci4KClRoZSBJVFMgY29udHJvbGxlciBwcm9jZXNzZXMgY29tbWFuZHMgZnJvbSB0aGUgcmluZyBh bmQgdGhlbiB1cGRhdGVzCmBHSVRTX0NSRUFEUmAgdG8gaW5kaWNhdGUgdGhlIHRoZSBwcm9jZXNz b3IgdGhhdCB0aGUgY29tbWFuZCBoYXMgYmVlbgpwcm9jZXNzZWQuCgpDb21tYW5kcyBhcmUgcHJv Y2Vzc2VkIHNlcXVlbnRpYWxseS4KCkNvbW1hbmRzIHNlbnQgb24gdGhlIHJpbmcgaW5jbHVkZSBv cGVyYXRpb25hbCBjb21tYW5kczoKCiogUm91dGluZyBpbnRlcnJ1cHRzIHRvIHByb2Nlc3NvcnM7 CiogR2VuZXJhdGluZyBpbnRlcnJ1cHRzOwoqIENsZWFyaW5nIHRoZSBwZW5kaW5nIHN0YXRlIG9m IGludGVycnVwdHM7CiogU3luY2hyb25pc2luZyB0aGUgY29tbWFuZCBxdWV1ZQoKYW5kIG1haW50 ZW5hbmNlIGNvbW1hbmRzOgoKKiBNYXAgZGV2aWNlL2NvbGxlY3Rpb24vcHJvY2Vzc29yOwoqIE1h cCB2aXJ0dWFsIGludGVycnVwdDsKKiBDbGVhbiBpbnRlcnJ1cHRzOwoqIERpc2NhcmQgaW50ZXJy dXB0czsKClRoZSBmaWVsZCBgR0lUU19DQkFTRVIuU2l6ZWAgZW5jb2RlcyB0aGUgbnVtYmVyIG9m IDRLQiBwYWdlcyBtaW51cyAwCmNvbnNpc3Rpbmcgb2YgdGhlIGNvbW1hbmQgcXVldWUuIFRoaXMg ZmllbGQgaXMgOCBiaXRzIHdoaWNoIG1lYW5zIHRoZQptYXhpbXVtIHNpemUgaXMgMl44ICogNEtC ID0gMU1CLiBHaXZlbiB0aGF0IGVhY2ggY29tbWFuZCBpcyAzMiBieXRlcywKdGhlcmUgaXMgYSBt YXhpbXVtIG9mIDMyNzY4IGNvbW1hbmRzIGluIHRoZSBxdWV1ZS4KClRoZSBJVFMgcHJvdmlkZXMg bm8gc3BlY2lmaWMgY29tcGxldGlvbiBub3RpZmljYXRpb24KbWVjaGFuaXNtLiBDb21wbGV0aW9u IGlzIG1vbml0b3JlZCBieSBhIGNvbWJpbmF0aW9uIG9mIGEgYFNZTkNgCmNvbW1hbmQgYW5kIGVp dGhlciBwb2xsaW5nIGBHSVRTX0NSRUFEUmAgb3Igbm90aWZpY2F0aW9uIHZpYSBhbgppbnRlcnJ1 cHQgZ2VuZXJhdGVkIHZpYSB0aGUgYElOVGAgY29tbWFuZC4KCk5vdGUgdGhhdCB0aGUgaW50ZXJy dXB0IGdlbmVyYXRpb24gdmlhIGBJTlRgIHJlcXVpcmVzIGFuIG9yaWdpbmF0aW5nCmRldmljZSBJ RCB0byBiZSBzdXBwbGllZCAod2hpY2ggaXMgdGhlbiB0cmFuc2xhdGVkIHZpYSB0aGUgSVRTIGlu dG8gYW4KTFBJKS4gTm8gc3BlY2lmaWMgZGV2aWNlIElEIGlzIGRlZmluZWQgZm9yIHRoaXMgcHVy cG9zZSBhbmQgc28gdGhlIE9TCnNvZnR3YXJlIGlzIGV4cGVjdGVkIHRvIGZhYnJpY2F0ZSBvbmUu CgpQb3NzaWJsZSB3YXlzIG9mIGludmVudGluZyBzdWNoIGEgZGV2aWNlIElEIGFyZToKCiogRW51 bWVyYXRlIGFsbCBkZXZpY2UgaWRzIGluIHRoZSBzeXN0ZW0gYW5kIHBpY2sgYW5vdGhlciBvbmU7 CiogVXNlIGEgUENJIEJERiBhc3NvY2lhdGVkIHdpdGggYSBub24tZXhpc3RlbnQgZGV2aWNlIGZ1 bmN0aW9uIChzdWNoCiAgYXMgYW4gdW51c2VkIG9uZSByZWxhdGluZyB0byB0aGUgUENJIHJvb3Qt YnJpZGdlKSBhbmQgdHJhbnNsYXRlIHRoYXQKICAodmlhIGZpcm13YXJlIHRhYmxlcykgaW50byBh IHN1aXRhYmxlIGRldmljZSBpZDsKKiA/Pz8KCiMgTFBJIEhhbmRsaW5nIGluIFhlbgoKIyMgSVJR IGRlc2NyaXB0b3JzCgpDdXJyZW50bHkgYWxsIFNHSS9QUEkvU1BJIGludGVycnVwdHMgYXJlIGNv dmVyZWQgYnkgYSBzaW5nbGUgc3RhdGljCmFycmF5IG9mIGBzdHJ1Y3QgaXJxX2Rlc2NgIHdpdGgg fjEwMjQgZW50cmllcyAodGhlIG1heGltdW0gaW50ZXJydXB0Cm51bWJlciBpbiB0aGF0IHNldCBv ZiBpbnRlcnJ1cHQgdHlwZXMpLgoKVGhlIGFkZGl0aW9uIG9mIExQSXMgaW4gR0lDdjMgbWVhbnMg dGhhdCB0aGUgbGFyZ2VzdCBwb3RlbnRpYWwKaW50ZXJydXB0IHNwZWNpZmllciBpcyBtdWNoIGxh cmdlci4KClRoZXJlZm9yZSBhIHNlY29uZCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgd2ls bCBiZSBhZGRlZCB0byBjb3Zlcgp0aGUgcmFuZ2UgYDgxOTIuLm5yX2xwaXNgLiBUaGUgYGlycV90 b19kZXNjYCBmdW5jdGlvbiB3aWxsIGRldGVybWluZQp3aGljaCBhcnJheSB0byB1c2UgKHN0YXRp YyBgMC4uMTAyNGAgb3IgZHluYW1pYyBgODE5Mi4uZW5kYCBscGkgZGVzYwphcnJheSkgYmFzZWQg b24gdGhlIGlucHV0IGlycSBudW1iZXIuIFR3byBhcnJheXMgYXJlIHVzZWQgdG8gYXZvaWQgYQp3 YXN0ZWZ1bCBhbGxvY2F0aW9uIGNvdmVyaW5nIHRoZSB1bnVzZWQvdW51c2FibGUpIGAxMDI0Li44 MTkxYCByYW5nZS4KCiMjIFZpcnR1YWwgTFBJIGludGVycnVwdCBpbmplY3Rpb24KCkEgcGh5c2lj YWwgaW50ZXJydXB0IHdoaWNoIGlzIHJvdXRlZCB0byBhIGd1ZXN0IHZDUFUgaGFzIHRoZQpgX0lS UV9HVUVTVGAgZmxhZyBzZXQgaW4gdGhlIGBpcnFfZGVzY2Agc3RhdHVzIG1hc2suIFN1Y2ggaW50 ZXJydXB0cwpoYXZlIGFuIGFzc29jaWF0ZWQgaW5zdGFuY2Ugb2YgYHN0cnVjdCBpcnFfZ3Vlc3Rg IHdoaWNoIGNvbnRhaW5zIHRoZQp0YXJnZXQgYHN0cnVjdCBkb21haW5gIHBvaW50ZXIgYW5kIHZp cnR1YWwgaW50ZXJydXB0IG51bWJlci4KCkluIFhlbiBhIHZpcnR1YWwgaW50ZXJydXB0IChlaXRo ZXIgYXJpc2luZyBmcm9tIGEgcGh5c2ljYWwgaW50ZXJydXB0Cm9yIGNvbXBsZXRlbHkgdmlydHVh bCkgaXMgdWx0aW1hdGVseSBpbmplY3RlZCB0byBhIFZDUFUgdXNpbmcgdGhlCmB2Z2ljX3ZjcHVf aW5qZWN0X2lycWAgZnVuY3Rpb24sIG9yIGB2Z2ljX3ZjcHVfaW5qZWN0X3NwaWAuCgpUaGlzIG1l Y2hhbmlzbSB3aWxsIGxpa2VseSBuZWVkIHVwZGF0aW5nIHRvIGhhbmRsZSB0aGUgaW5qZWN0aW9u IG9mCnZpcnR1YWwgTFBJcy4gSW4gcGFydGljdWxhciByYXRoZXIgdGhhbiBgR0lDRF9JVEFSR0VS Um5gIG9yCmBHSUNEX0lST1VURVJuYCByb3V0aW5nIG9mIExQSXMgaXMgcGVyZm9ybWVkIHZpYSB0 aGUgSVRTIGNvbGxlY3Rpb25zCm1lY2hhbmlzbS4gVGhpcyBpcyBkaXNjdXNzZWQgYmVsb3cgKElu IF92SVRTXzpfVmlydHVhbCBMUEkgaW5qZWN0aW9uXykuCgojIFNjb3BlCgpUaGUgSVRTIGlzIHJh dGhlciBjb21wbGljYXRlZCwgZXNwZWNpYWxseSB3aGVuIGNvbWJpbmVkIHdpdGgKdmlydHVhbGlz YXRpb24uIFRvIHNpbXBsaWZ5IHRoaW5ncyB3ZSBpbml0aWFsbHkgb21pdCB0aGUgZm9sbG93aW5n CmZ1bmN0aW9uYWxpdHk6CgotIEludGVycnVwdCAtPiB2Q1BVIC0+IHBDUFUgYWZmaW5pdHkuIFRo ZSBtYW5hZ2VtZW50IG9mIHBoeXNpY2FsIHZzCiAgdmlydHVhbCBDb2xsZWN0aW9ucyBpcyBhIGZl YXR1cmUgb2YgR0lDdjQsIHRodXMgaXMgb21pdHRlZCBpbiB0aGlzCiAgZGVzaWduIGZvciBHSUN2 My4gUGh5c2ljYWwgaW50ZXJydXB0cyB3aGljaCBvY2N1ciBvbiBhIHBDUFUgd2hlcmUKICB0aGUg dGFyZ2V0IHZDUFUgaXMgbm90IGFscmVhZHkgcmVzaWRlbnQgd2lsbCBiZSBmb3J3YXJkZWQgKHZp YSBJUEkpCiAgdG8gdGhlIGNvcnJlY3QgcENQVSBmb3IgaW5qZWN0aW9uIHZpYSB0aGUgZXhpc3Rp bmcKICBgdmdpY192Y3B1X2luamVjdF9pcnFgIG1lY2hhbmlzbSAoZXh0ZW5kZWQgdG8gaGFuZGxl IExQSSBpbmplY3Rpb24KICBjb3JyZWN0bHkpLgotIENsZWFyaW5nIG9mIHRoZSBwZW5kaW5nIHN0 YXRlIG9mIGFuIExQSSB1bmRlciB2YXJpb3VzIGNpcmN1bXN0YW5jZXMKICAoYE1PVklgLCBgRElT Q0FSRGAsIGBDTEVBUmAgY29tbWFuZHMpIGlzIG5vdCBkb25lLiBUaGlzIHdpbGwgcmVzdWx0CiAg aW4gZ3Vlc3RzIHNlZWluZyBzb21lIHBlcmhhcHMgc3B1cmlvdXMgaW50ZXJydXB0cy4KLSB2SVRT IGZ1bmN0aW9uYWxpdHkgd2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBvbiA2NC1iaXQgQVJNIGhvc3Rz LAogIGF2b2lkaW5nIHRoZSBuZWVkIHRvIHdvcnJ5IGFib3V0IGZhc3QgYWNjZXNzIHRvIGd1ZXN0 IG93bmVkIGRhdGEKICBzdHJ1Y3R1cmVzICg2NC1iaXQgdXNlcyBhIGRpcmVjdCBtYXApLiAoTkI6 IDMyLWJpdCBndWVzdHMgb24gNjQtYml0CiAgaG9zdHMgY2FuIGJlIGNvbnNpZGVyZWQgdG8gaGF2 ZSBhY2Nlc3MpCgpYWFggQ2FuIHdlIGFzc3VtZSB0aGF0IGBHSVRTX1RZUEVSLkRldmJpdHNgIHdp bGwgYmUgc2FuZSwKaS5lLiByZXF1aXJpbmcgc3VwcG9ydCBmb3IgdGhlIGZ1bGwgMl4zMiBkZXZp Y2UgaWRzIHdvdWxkIHJlcXVpcmUgYQozMkdCIGRldmljZSB0YWJsZSBldmVuIGZvciBuYXRpdmUs IHdoaWNoIGlzIGltcHJvYmFibGUgZXhjZXB0IG9uCnN5c3RlbXMgd2l0aCBSQU0gbWVhc3VyZWQg aW4gVEIuIFNvIHdlIGNhbiBwcm9iYWJseSBhc3N1bWUgdGhhdApEZXZiaXRzIHdpbGwgYmUgYXBw cm9wcmlhdGUgdG8gdGhlIHNpemUgb2YgdGhlIHN5c3RlbS4gX05vdGVfOiBXZQpyZXF1aXJlIHBl ciBndWVzdCBkZXZpY2UgdGFibGVzLCBzbyBzaXplIG9mIHRoZSBuYXRpdmUgRGV2aWNlIFRhYmxl IGlzCm5vdCB0aGUgb25seSBmYWN0b3IgaGVyZS4KClhYWCBMaWtld2lzZSBjYW4gd2UgYXNzdW1l IHRoYXQgYEdJVFNfVFlQRVIuSURiaXRzYCB3aWxsIGJlIHNhbmU/CmkuZS4gdGhhdCB0aGUgcmVx dWlyZWQgSVRUIHRhYmxlIHNpemUgd2lsbCBiZSByZWFzb25hYmxlPwoKIyBVbnJlc29sdmVkIElz c3VlcwoKVmFyaW91cyBwYXJ0cyBhcmUgbWFya2VkIHdpdGggWFhYLiBNb3N0IGFyZSBtaW5vciwg YnV0IHRoZXJlIHMgb25lCm1vcmUgb3IgbGVzcyBtYWpvciBvbmUsIHdoaWNoIHdlIG1heSBvciBt YXkgbm90IGJlIGFibGUgdG8gbGl2ZSB3aXRoCmZvciBhIGZpcnN0IGltcGxlbWVudGF0aW9uOgoK MS4gV2hlbiBoYW5kbGluZyBWaXJ0dWFsIExQSSBDb25maWd1cmF0aW9uIFRhYmxlIHdyaXRlcyB3 ZSBkbyBub3QgaGF2ZQogICBhIERldmljZSBJRCwgc28gd2UgY2Fubm90IGNvbnN1bHQgdGhlIHZp cnR1YWwgRGV2aWNlIFRhYmxlLCBJVFQgZXRjCiAgIHRvIGRldGVybWluZSBpZiB0aGUgTFBJIGlz IGFjdHVhbGx5IG1hcHBlZC4gVGhpcyBtZWFucyB0aGF0IHRoZQogICBwaHlzaWNhbCBMUEkgZW5h YmxlL2Rpc2FibGUgaXMgZGVjb3VwbGVkIGZyb20gdGhlIHZhbGlkaXR5IG9mIHRoZQogICB2aXJ0 dWFsIElUVC4gUG9zc2libHkgcmVzdWx0aW5nIGluIHNwdXJpb3VzIExQSXMgd2hpY2ggbXVzdCBi ZQogICBpZ25vcmVkLgoKVGhpcyBpc3N1ZSBpcyBkaXNjdXNzZWQgZnVydGhlciBpbiB0aGUgcmVs ZXZhbnQgcGxhY2VzIGluIHRoZSB0ZXh0LAptYXJrZWQgd2l0aCBgWFhYIFVJMWAuCgojIHBJVFMK CiMjIEFzc3VtcHRpb25zCgpJdCBpcyBhc3N1bWVkIHRoYXQgYEdJVFNfVFlQRVIuSURiaXRzYCBp cyBsYXJnZSBlbm91Z2ggdGhhdCB0aGVyZSBhcmUKc3VmZmljaWVudCBMUElzIGF2YWlsYWJsZSB0 byBjb3ZlciB0aGUgc3VtIG9mIHRoZSBudW1iZXIgb2YgcG9zc2libGUKZXZlbnRzIGdlbmVyYXRl ZCBieSBlYWNoIGRldmljZSBpbiB0aGUgc3lzdGVtICh0aGF0IGlzIHRoZSBzdW0gb2YgdGhlCmFj dHVhbCBldmVudHMgZm9yIGVhY2ggYml0IG9mIGhhcmR3YXJlLCByYXRoZXIgdGhhbiB0aGUgbm90 aW9uYWwKcGVyLWRldmljZSBtYXhpbXVtIGZyb20gYEdJVFNfVFlQRVIuSWRiaXRzYCkuCgpUaGlz IGFzc3VtcHRpb24gYXZvaWRzIHRoZSBuZWVkIHRvIGRvIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQg aW50ZXJydXB0CnJvdXRpbmcgYXQgcnVuIHRpbWUsIGUuZy4gZHVyaW5nIGNvbW1hbmQgcHJvY2Vz c2luZyBieSBhbGxvd2luZyB1cyB0bwpzZXR1cCBldmVyeXRoaW5nIHVwIGZyb250LgoKIyMgRHJp dmVyCgpUaGUgcGh5c2ljYWwgZHJpdmVyIHdpbGwgcHJvdmlkZSBmdW5jdGlvbnMgZm9yIGVuYWJs aW5nLCBkaXNhYmxpbmcKcm91dGluZyBldGMgYSBzcGVjaWZpZWQgaW50ZXJydXB0LCB2aWEgdGhl IHVzdWFsIFhlbiBBUElzIGZvciBkb2luZwpzdWNoIHRoaW5ncy4KClRoaXMgd2lsbCBsaWtlbHkg aW52b2x2ZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBwaHlzaWNhbCBJVFMgY29tbWFuZApxdWV1ZSBl dGMuIEluIHRoaXMgZG9jdW1lbnQgc3VjaCBpbnRlcmFjdGlvbnMgYXJlIGNvbnNpZGVyZWQgaW50 ZXJuYWwKdG8gdGhlIGRyaXZlciAoaS5lLiB3ZSBjYXJlIHRoYXQgdGhlIEFQSSB0byBlbmFibGUg YW4gaW50ZXJydXB0CmV4aXN0cywgbm90IGhvdyBpdCBpcyBpbXBsZW1lbnRlZCkuCgojIyBEZXZp Y2UgVGFibGUKClRoZSBgcElUU2AgZGV2aWNlIHRhYmxlIHdpbGwgYmUgYWxsb2NhdGVkIGFuZCBn aXZlbiB0byB0aGUgcElUUyBhdApzdGFydCBvZiBkYXkuCgojIyBDb2xsZWN0aW9ucwoKVGhlIGBw SVRTYCB3aWxsIGJlIGNvbmZpZ3VyZWQgYXQgc3RhcnQgb2YgZGF5IHdpdGggMSBDb2xsZWN0aW9u IG1hcHBlZAp0byBlYWNoIHBoeXNpY2FsIHByb2Nlc3NvciwgdXNpbmcgdGhlIGBNQVBDYCBjb21t YW5kIG9uIHRoZSBwaHlzaWNhbApJVFMuCgojIyBQZXIgRGV2aWNlIEluZm9ybWF0aW9uCgpFYWNo IHBoeXNpY2FsIGRldmljZSBpbiB0aGUgc3lzdGVtIHdoaWNoIGNhbiBiZSB1c2VkIHRvZ2V0aGVy IHdpdGggYW4KSVRTICh3aGV0aGVyIHVzaW5nIHBhc3N0aHJvdWdoIG9yIG5vdCkgd2lsbCBoYXZl IGFzc29jaWF0ZWQgd2l0aCBpdCBhCmRhdGEgc3RydWN0dXJlOgoKICAgIHN0cnVjdCBpdHNfZGV2 aWNlIHsKICAgICAgICB1aW50Tk5fdCBwaHlzX2RldmljZV9pZDsKICAgICAgICB1aW50Tk5fdCB2 aXJ0X2RldmljZV9pZDsKICAgICAgICB1bnNpZ25lZCBpbnQgKmV2ZW50czsKICAgICAgICB1bnNp Z25lZCBpbnQgbnJfZXZlbnRzOwogICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBpdHQ7CiAgICAg ICAgdW5zaWduZWQgaW50IG5yX3BpdHRfcGFnZXMKICAgIH07CgpXaGVyZToKCi0gYHBoeXNfZGV2 aWNlX2lkYDogVGhlIHBoeXNpY2FsIGRldmljZSBJRCBvZiB0aGUgcGh5c2ljYWwgZGV2aWNlCi0g YHZpcnRfZGV2aWNlX2lkYDogVGhlIHZpcnR1YWwgZGV2aWNlIElEIGlmIHRoZSBkZXZpY2UgaXMg YWNjZXNzaWJsZQogIHRvIGEgZG9tYWluCi0gYGV2ZW50c2A6IEFuIGFycmF5IG1hcHBpbmcgYSBw ZXItZGV2aWNlIGV2ZW50IG51bWJlciBpbnRvIGEgcGh5c2ljYWwKICBMUEkuCi0gYG5yX2V2ZW50 c2A6IFRoZSBudW1iZXIgb2YgZXZlbnRzIHdoaWNoIHRoaXMgZGV2aWNlIGlzIGFibGUgdG8KICBn ZW5lcmF0ZS4KLSBgcGl0dGAsIGBucl9waXR0X3BhZ2VzYDogUmVjb3JkcyBhbGxvY2F0aW9uIG9m IHBhZ2VzIGZvciBwaHlzaWNhbAogIElUVCAobm90IGRpcmVjdGx5IGFjY2Vzc2libGUpLgoKRHVy aW5nIGl0cyBsaWZldGltZSB0aGlzIHN0cnVjdHVyZSBtYXkgYmUgcmVmZXJlbmNlZCBieSBzZXZl cmFsCmRpZmZlcmVudCBtYXBwaW5ncyAoZS5nLiBwaHlzaWNhbCBhbmQgdmlydHVhbCBkZXZpY2Ug aWQgbWFwcywgdmlydHVhbApjb2xsZWN0aW9uIGRldmljZSBpZCkuCgojIyBEZXZpY2UgRGlzY292 ZXJ5L1JlZ2lzdHJhdGlvbiBhbmQgQ29uZmlndXJhdGlvbgoKUGVyIGRldmljZSBpbmZvcm1hdGlv biB3aWxsIGJlIGRpc2NvdmVyZWQgYmFzZWQgb24gZmlybXdhcmUgdGFibGVzIChEVApvciBBQ1BJ KSBhbmQgaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgZG9tMCAoZS5nLiByZWdpc3RyYXRpb24gdmlh ClBIWVNERVZPUF9wY2lfZGV2aWNlX2FkZCBvciBuZXcgY3VzdG9tIGh5cGVyY2FsbHMpLgoKVGhp cyBpbmZvcm1hdGlvbiBzaGFsbCBpbmNsdWRlIGF0IGxlYXN0OgoKLSBUaGUgRGV2aWNlIElEIG9m IHRoZSBkZXZpY2UuCi0gVGhlIG1heGltdW0gbnVtYmVyIG9mIEV2ZW50cyB3aGljaCB0aGUgZGV2 aWNlIGlzIGNhcGFibGUgb2YKICBnZW5lcmF0aW5nLgoKV2hlbiBhIGRldmljZSBpcyBkaXNjb3Zl cmVkL3JlZ2lzdGVyZWQgKGkuZS4gd2hlbiBhbGwgbmVjZXNzYXJ5CmluZm9ybWF0aW9uIGlzIGF2 YWlsYWJsZSkgdGhlbjoKCi0gYHN0cnVjdCBpdHNfZGV2aWNlYCBhbmQgdGhlIGVtYmVkZGVkIGBl dmVudHNgIGFycmF5IHdpbGwgYmUKICBhbGxvY2F0ZWQgKHRoZSBsYXR0ZXIgd2l0aCBgbnJfZXZl bnRzYCBlbGVtZW50cykuCi0gVGhlIGBzdHJ1Y3QgaXRzX2RldmljZWAgd2lsbCBiZSBpbnNlcnRl ZCBpbnRvIGEgbWFwcGluZyAocG9zc2libHkgYW4KICBSLUIgdHJlZSkgZnJvbSBpdHMgcGh5c2lj YWwgRGV2aWNlIElEIHRvIHRoZSBgc3RydWN0IGl0c2AuCi0gYG5yX2V2ZW50c2AgcGh5c2ljYWwg TFBJcyB3aWxsIGJlIGFsbG9jYXRlZCBhbmQgcmVjb3JkZWQgaW4gdGhlCiAgYGV2ZW50c2AgYXJy YXkuCi0gQW4gSVRUIHRhYmxlIHdpbGwgYmUgYWxsb2NhdGVkIGZvciB0aGUgZGV2aWNlIGFuZCB0 aGUgYXBwcm9wcmlhdGUKICBgTUFQRGAgY29tbWFuZCB3aWxsIGJlIGlzc3VlZCB0byB0aGUgcGh5 c2ljYWwgSVRTLiBUaGUgbG9jYXRpb24gd2lsbAogIGJlIHJlY29yZGVkIGluIGBzdHJ1Y3QgaXRz X2RldmljZS5waXR0YC4KLSBFYWNoIEV2ZW50IHdoaWNoIHRoZSBkZXZpY2UgbWF5IGdlbmVyYXRl IHdpbGwgYmUgbWFwcGVkIHRvIHRoZQogIGNvcnJlc3BvbmRpbmcgTFBJIGluIHRoZSBgZXZlbnRz YCBhcnJheSBhbmQgYSBjb2xsZWN0aW9uLCBieSBpc3N1aW5nCiAgYSBzZXJpZXMgb2YgYE1BUFZJ YCBjb21tYW5kcy4gRXZlbnRzIHdpbGwgYmUgYXNzaWduZWQgdG8gcGh5c2ljYWwKICBjb2xsZWN0 aW9ucyBpbiBhIHJvdW5kLXJvYmluIGZhc2hpb24uCgpUaGlzIHNldHVwIG11c3Qgb2NjdXIgZm9y IGEgZ2l2ZW4gZGV2aWNlIGJlZm9yZSBhbnkgSVRTIGludGVycnVwdHMgbWF5CmJlIGNvbmZpZ3Vy ZWQgZm9yIHRoZSBkZXZpY2UgYW5kIGNlcnRhaW5seSBiZWZvcmUgYSBkZXZpY2UgaXMgcGFzc2Vk CnRocm91Z2ggdG8gYSBndWVzdC4gVGhpcyBpbXBsaWVzIHRoYXQgZG9tMCBjYW5ub3QgdXNlIE1T SXMgb24gYSBQQ0kKZGV2aWNlIGJlZm9yZSBoYXZpbmcgY2FsbGVkIGBQSFlTREVWT1BfcGNpX2Rl dmljZV9hZGRgLgoKIyBEZXZpY2UgQXNzaWdubWVudAoKRWFjaCBkb21haW4gd2lsbCBoYXZlIGFu IGFzc29jaWF0ZWQgbWFwcGluZyBmcm9tIHZpcnR1YWwgZGV2aWNlIGlkcwppbnRvIGEgZGF0YSBz dHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgcGh5c2ljYWwgZGV2aWNlLCBpbmNsdWRpbmcgYQpyZWZl cmVuY2UgdG8gdGhlIHJlbGV2YW50IGBzdHJ1Y3QgaXRzX2RldmljZWAuCgpUaGUgbnVtYmVyIG9m IHBvc3NpYmxlIGRldmljZSBJRHMgbWF5IGJlIGxhcmdlIHNvIGEgc2ltcGxlIGFycmF5IG9yCmxp c3QgaXMgbGlrZWx5IHVuc3VpdGFibGUuIEEgdHJlZSAoZS5nLiBSZWQtQmxhY2sgbWF5IGJlIGEg c3VpdGFibGUKZGF0YSBzdHJ1Y3R1cmUuIEN1cnJlbnRseSB3ZSBkbyBub3QgbmVlZCB0byBwZXJm b3JtIGxvb2t1cHMgaW4gdGhpcwp0cmVlIG9uIGFueSBob3QgcGF0aHMuCgpfTm90ZV86IEluIHRo ZSBjb250ZXh0IG9mIHZpcnR1YWxpc2VkIGRldmljZSBpZHMgKGVzcGVjaWFsbHkgZm9yIGRvbVUp Cml0IG1heSBiZSBwb3NzaWJsZSB0byBhcnJhbmdlIGZvciB0aGUgdXBwZXIgYm91bmQgb24gdGhl IG51bWJlciBvZgpkZXZpY2UgSURzIHRvIGJlIGxvd2VyIGFsbG93aW5nIGEgbW9yZSBlZmZpY2ll bnQgZGF0YSBzdHJ1Y3R1cmUgdG8gYmUKdXNlZC4gVGhpcyBpcyBsZWZ0IGZvciBhIGZ1dHVyZSBp bXByb3ZlbWVudC4KCldoZW4gYSBkZXZpY2UgaXMgYXNzaWduZWQgdG8gYSBkb21haW4gKGluY2x1 ZGluZyB0byBkb21haW4gMCkgdGhlCm1hcHBpbmcgZm9yIHRoZSBuZXcgdmlydHVhbCBkZXZpY2Ug SUQgd2lsbCBiZSBlbnRlcmVkIGludG8gdGhlIHRyZWUuCgpEdXJpbmcgYXNzaWdubWVudCBhbGwg TFBJcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSB3aWxsIGJlIHJvdXRlZAp0byB0aGUgZ3Vl c3QgKGkuZS4gYHJvdXRlX2lycV90b19ndWVzdGAgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggTFBJ IGluCnRoZSBgc3RydWN0IGl0c19kZXZpY2UuZXZlbnRzYCBhcnJheSkuCgojIHZJVFMKCkEgZ3Vl c3QgZG9tYWluIHdoaWNoIGlzIGFsbG93ZWQgdG8gdXNlIElUUyBmdW5jdGlvbmFsaXR5IChpLmUu IGhhcwpiZWVuIGFzc2lnbmVkIHBhc3MtdGhyb3VnaCBkZXZpY2VzIHdoaWNoIGNhbiBnZW5lcmF0 ZSBNU0lzKSB3aWxsIGJlCnByZXNlbnRlZCB3aXRoIGEgdmlydHVhbGlzZWQgSVRTLgoKQWNjZXNz ZXMgdG8gdGhlIHZJVFMgcmVnaXN0ZXJzIHdpbGwgdHJhcCB0byBYZW4gYW5kIGJlIGVtdWxhdGVk IGFuZCBhCnZpcnR1YWxpc2VkIENvbW1hbmQgUXVldWUgd2lsbCBiZSBwcm92aWRlZC4KCkNvbW1h bmRzIGVudGVyZWQgb250byB0aGUgdmlydHVhbCBDb21tYW5kIFF1ZXVlIHdpbGwgYmUgdHJhbnNs YXRlZAppbnRvIHBoeXNpY2FsIGNvbW1hbmRzLCBhcyBkZXNjcmliZWQgbGF0ZXIgaW4gdGhpcyBk b2N1bWVudC4KClRoZXJlIGFyZSBvdGhlciBhc3BlY3RzIHRvIHZpcnR1YWxpc2luZyB0aGUgSVRT IChMUEkgY29sbGVjdGlvbgptYW5hZ2VtZW50LCBhc3NpZ25tZW50IG9mIExQSSByYW5nZXMgdG8g Z3Vlc3RzLCBkZXZpY2UKbWFuYWdlbWVudCkuIEhvd2V2ZXIgdGhlc2UgYXJlIG9ubHkgY29uc2lk ZXJlZCBoZXJlIHRvIHRoZSBleHRlbnQKbmVlZGVkIGZvciBkZXNjcmliaW5nIHRoZSB2SVRTIGVt dWxhdGlvbi4KCiMjIFhlbiBpbnRlcmFjdGlvbiB3aXRoIGd1ZXN0IE9TIHByb3Zpc2lvbmVkIHZJ VFMgbWVtb3J5CgpNZW1vcnkgd2hpY2ggdGhlIGd1ZXN0IHByb3Zpc2lvbnMgdG8gdGhlIHZJVFMg KElUVCB2aWEgYE1BUERgIG9yIG90aGVyCnRhYmxlcyB2aWEgYEdJVFNfQkFTRVJuYCkgbmVlZHMg Y2FyZWZ1bCBoYW5kbGluZyBpbiBYZW4uCgpTaW5jZSBYZW4gY2Fubm90IHRydXN0IGRhdGEgaW4g ZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5lZCBpbiBzdWNoCm1lbW9yeSBpZiBhIGd1ZXN0IGNhbiB0 cmFtcGxlIG92ZXIgaXQgYXQgd2lsbC4gVGhlcmVmb3JlIFhlbiBlaXRoZXIKbXVzdCB0YWtlIGdy ZWF0IGNhcmUgd2hlbiBhY2Nlc3NpbmcgZGF0YSBzdHJ1Y3R1cmVzIHN0b3JlZCBpbiBzdWNoCm1l bW9yeSB0byB2YWxpZGF0ZSB0aGUgY29udGVudHMgZS5nLiBub3QgdHJ1c3QgdGhhdCB2YWx1ZXMg YXJlIHdpdGhpbgp0aGUgcmVxdWlyZWQgbGltaXRzIG9yIGl0IG11c3QgdGFrZSBzdGVwcyB0byBy ZXN0cmljdCBndWVzdCBhY2Nlc3MgdG8KdGhlIG1lbW9yeSB3aGVuIGl0IGlzIHByb3Zpc2lvbmVk LiBTaW5jZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFyZQpzaW1wbGUgYW5kIG1vc3QgYWNjZXNzb3Jz IG5lZWQgdG8gZG8gYm91bmRzIGNoZWNrIGFueXdheSBpdCBpcwpjb25zaWRlcmVkIHN1ZmZpY2ll bnQgdG8gc2ltcGx5IGRvIHRoZSBuZWNlc3NhcnkgY2hlY2tzIG9uIGFjY2Vzcy4KCk1vc3QgZGF0 YSBzdHJ1Y3R1cmVzIHN0b3JlZCBpbiB0aGlzIHNoYXJlZCBtZW1vcnkgYXJlIGFjY2Vzc2VkIG9u IHRoZQpob3QgaW50ZXJydXB0IGluamVjdGlvbiBwYXRoIGFuZCBtdXN0IHRoZXJlZm9yZSBiZSBx dWlja2x5IGFjY2Vzc2JpbGUKZnJvbSB3aXRoaW4gWGVuLiBTaW5jZSB3ZSBoYXZlIHJlc3RyaWN0 ZWQgdml0cyBzdXBwb3J0IHRvIDY0LWJpdCBob3N0cwpvbmx5IGBtYXBfZG9tYWluX3BhZ2VgIGlz IGZhc3QgZW5vdWdoIHRvIGJlIHVzZWQgb24gdGhlIGZseSBhbmQKdGhlcmVmb3JlIHdlIGRvIG5v dCBuZWVkIHRvIGJlIGNvbmNlcm5lZCBhYm91dCB1bmJvdW5kZWQgYW1vdW50cyBvZgpwZXJtYW5l bnRseSBtYXBwZWQgbWVtb3J5IGNvbnN1bWVkIGJ5IGVhY2ggYE1BUERgIGNvbW1hbmQuCgpBbHRo b3VnaCBgbWFwX2RvbWFpbl9wYWdlYCBpcyBmYXN0LCBgcDJtX2xvb2t1cGAgKHRyYW5zbGF0aW9u IGZyb20gSVBBCnRvIFBBKSBpcyBub3QgbmVjZXNzYXJpbHkgc28uIEZvciBub3cgd2UgYWNjZXB0 IHRoaXMsIGFzIGEgZnV0dXJlCmV4dGVuc2lvbiBhIHNwYXJzZSBtYXBwaW5nIG9mIHRoZSBndWVz dCBkZXZpY2UgdGFibGUgaW4gdm1hcCBzcGFjZQpjb3VsZCBiZSBjb25zaWRlcmVkLCB3aXRoIGxp bWl0cyBvbiB0aGUgdG90YWwgYW1vdW50IG9mIHZtYXAgc3BhY2Ugd2hpY2gKd2UgYWxsb3cgZWFj aCBkb21haW4gdG8gY29uc3VtZS4KCiMjIHZJVFMgcHJvcGVydGllcwoKVGhlIHZJVFMgaW1wbGVt ZW50YXRpb24gc2hhbGwgaGF2ZToKCi0gYEdJVFNfVFlQRVIuSENDID09IG5yX3ZjcHVzICsgMWAu Ci0gYEdJVFNfVFlQRVIuUFRBID09IDBgLiBUYXJnZXQgYWRkcmVzc2VzIGFyZSBsaW5lYXIgcHJv Y2Vzc29yIG51bWJlcnMuCi0gYEdJVFNfVFlQRVIuRGV2Yml0cyA9PSBTZWUgYmVsb3dgLgotIGBH SVRTX1RZUEVSLklEYml0cyA9PSBTZWUgYmVsb3dgLgotIGBHSVRTX1RZUEVSLklUVCBFbnRyeSBT aXplID09IDdgLCBtZWFuaW5nIDggYnl0ZXMsIHdoaWNoIGlzIHRoZSBzaXplCiAgb2YgYHN0cnVj dCB2aXR0YCAoZGVmaW5lZCBiZWxvdykuCgpgR0lUU19UWVBFUi5EZXZiaXRzYCBhbmQgYEdJVFNf VFlQRVIuSWRiaXRzYCB3aWxsIG5lZWQgdG8gYmUgY2hvc2VuIHRvCnJlZmxlY3QgdGhlIGhvc3Qg YW5kIGd1ZXN0IGNvbmZpZ3VyYXRpb25zIChudW1iZXIgb2YgTFBJcywgbWF4aW11bQpkZXZpY2Ug SUQgZXRjKS4KCk90aGVyIGZpZWxkcyAobm90IG1lbnRpb25lZCBoZXJlKSB3aWxsIGJlIHNldCB0 byBzb21lIHNlbnNpYmxlIChvcgptYW5kYXRlZCkgdmFsdWUuCgpUaGUgYEdJVFNfQkFTRVIwYCB3 aWxsIGJlIHNldHVwIHRvIHJlcXVlc3Qgc3VmZmljaWVudCBtZW1vcnkgZm9yIGEKZGV2aWNlIHRh YmxlIGNvbnNpc3Rpbmcgb2YgZW50cmllcyBvZjoKCiAgICBzdHJ1Y3QgdmRldmljZV90YWJsZSB7 CiAgICAgICAgdWludDY0X3Qgdml0dF9pcGE7CiAgICAgICAgdWludDMyX3Qgdml0dF9zaXplOwog ICAgICAgIHVpbnQzMl90IHBhZGRpbmc7CiAgICB9OwogICAgQlVJTERfQlVHX09OKHNpemVvZihz dHJ1Y3QgdmRldmljZV90YWJsZSkgIT0gMTYpOwoKT24gd3JpdGUgdG8gYEdJVFNfQkFTRTBgIHRo ZSByZWxldmFudCBkZXRhaWxzIG9mIHRoZSBEZXZpY2UgVGFibGUKKElQQSwgc2l6ZSwgY2FjaGUg YXR0cmlidXRlcyB0byB1c2Ugd2hlbiBtYXBwaW5nKSB3aWxsIGJlIHJlY29yZGVkIGluCmBzdHJ1 Y3QgZG9tYWluYC4KCkFsbCBvdGhlciBgR0lUU19CQVNFUm4uVmFsaWQgPT0gMGAuCgojIyB2SVRT IHRvIHBJVFMgbWFwcGluZwoKQSBwaHlzaWNhbCBzeXN0ZW0gbWF5IGhhdmUgbXVsdGlwbGUgcGh5 c2ljYWwgSVRTcy4KCldpdGggdGhlIHNpbXBsaWZpZWQgdml0cyBjb21tYW5kIG1vZGVsIHByZXNl bnRlZCBoZXJlIG9ubHkgYSBzaW5nbGUKYHZpdHNgIGlzIHJlcXVpcmVkLgoKSW4gdGhlIGZ1dHVy ZSBhIG1vcmUgY29tcGxleCBhcnJhbmdlbWVudCBtYXkgYmUgZGVzaXJlZC4gU2luY2UgdGhlCmNo b2ljZSBvZiBtb2RlbCBpcyBpbnRlcm5hbCB0byB0aGUgaHlwZXJ2aXNvci90b29scyBhbmQgaXMK Y29tbXVuaWNhdGVkIHRvIHRoZSBndWVzdCB2aWEgZmlybXdhcmUgdGFibGVzIHdlIGFyZSBub3Qg dGllZCB0byB0aGlzCm1vZGVsIGFzIGFuIEFCSSBpZiB3ZSBkZWNpZGUgdG8gY2hhbmdlLgoKIyMg TFBJIENvbmZpZ3VyYXRpb24gVGFibGUgVmlydHVhbGlzYXRpb24KCkEgZ3Vlc3QncyB3cml0ZSBh Y2Nlc3NlcyB0byBpdHMgTFBJIENvbmZpZ3VyYXRpb24gVGFibGUgKHdoaWNoIGlzIGp1c3QKYW4g YXJlYSBvZiBndWVzdCBSQU0gd2hpY2ggdGhlIGd1ZXN0IGhhcyBub21pbmF0ZWQpIHdpbGwgYmUg dHJhcHBlZCB0bwp0aGUgaHlwZXJ2aXNvciwgdXNpbmcgc3RhZ2UgMiBNTVUgcGVybWlzc2lvbnMs IGluIG9yZGVyIGZvciBjaGFuZ2VzIHRvCmJlIHByb3BhZ2F0ZWQgaW50byB0aGUgaG9zdCBpbnRl cnJ1cHQgY29uZmlndXJhdGlvbi4KCk9uIHdyaXRlIGBiaXRbMF1gIG9mIHRoZSB3cml0dGVuIGJ5 dGUgaXMgdGhlIGVuYWJsZS9kaXNhYmxlIHN0YXRlIGZvcgp0aGUgaXJxIGFuZCBpcyBoYW5kbGVk IHRodXM6CgogICAgbHBpID0gKGFkZHIgLSB0YWJsZV9iYXNlKTsKICAgIGlmICggYnl0ZSAmIDEg KQogICAgICAgIGVuYWJsZV9pcnEobHBpKTsKICAgIGVsc2UKICAgICAgICBkaXNhYmxlX2lycShs cGkpOwoKTm90ZSB0aGF0IGluIHRoZSBjb250ZXh0IG9mIHRoaXMgZW11bGF0aW9uIHdlIGRvIG5v dCBoYXZlIGFjY2VzcyB0byBhCkRldmljZSBJRCwgYW5kIHRoZXJlZm9yZSBjYW5ub3QgbWFrZSBk ZWNpc2lvbnMgYmFzZWQgb24gd2hldGhlciB0aGUKTFBJL2V2ZW50IGhhcyBiZWVuIGBNQVBEYGQg ZXRjLiBJbiBhbnkgY2FzZSB3ZSBoYXZlIGFuIGBscGlgIGluIG91cgpoYW5kIGFuZCBub3QgYW4g YGV2ZW50YCwgSU9XIHdlIHdvdWxkIG5lZWQgdG8gZG8gYSBfcmV2ZXJzZV8gbG9va3VwIGluCnRo ZSBJVFQuCgpMUEkgcHJpb3JpdHkgKHRoZSByZW1haW5pbmcgYml0cyBpbiB0aGUgd3JpdHRlbiBi eXRlKSBpcyBjdXJyZW50bHkKaWdub3JlZC4KCiMjIExQSSBQZW5kaW5nIFRhYmxlIFZpcnR1YWxp c2F0aW9uCgpYWFggQ2FuIHdlIHNpbXBseSBpZ25vcmUgdGhpcz8gNC44LjUgc3VnZ2VzdHMgaXQg aXMgbm90IG5lY2Vzc2FyaWx5IGluCnN5bmMgYW5kIHRoZSBtZWNoYW5pc20gdG8gZm9yY2UgYSBz eW5jIGlzIGBJTVBMRU1FTlRBVElPTiBERUZJTkVEYC4KCiMjIERldmljZSBUYWJsZSBWaXJ0dWFs aXNhdGlvbgoKVGhlIElQQSwgc2l6ZSBhbmQgY2FjaGVhYmlsaXR5IGF0dHJpYnV0ZXMgb2YgdGhl IGd1ZXN0IGRldmljZSB0YWJsZQp3aWxsIGJlIHJlY29yZGVkIGluIGBzdHJ1Y3QgZG9tYWluYCB1 cG9uIHdyaXRlIHRvIGBHSVRTX0JBU0VSMGAuCgpJbiBvcmRlciB0byBsb29rdXAgYW4gZW50cnkg Zm9yIGBkZXZpY2VgOgoKICAgIGRlZmluZSB7Z2V0LHNldH1fdmRldmljZV9lbnRyeShkb21haW4s IGRldmljZSwgc3RydWN0IGRldmljZV90YWJsZSAqZW50cnkpOgogICAgICAgIG9mZnNldCA9IGRl dmljZSpzaXplb2Yoc3RydWN0IHZkZXZpY2VfdGFibGUpCiAgICAgICAgaWYgb2Zmc2V0ID4gPERU IHNpemU+OiBlcnJvcgoKICAgICAgICBkdF9lbnRyeSA9IDxEVCBiYXNlIElQQT4gKyBkZXZpY2Uq c2l6ZW9mKHN0cnVjdCB2ZGV2aWNlX3RhYmxlKQogICAgICAgIHBhZ2UgPSBwMm1fbG9va3VwKGRv bWFpbiwgZHRfZW50cnksIHAybV9yYW0pCiAgICAgICAgaWYgIXBhZ2U6IGVycm9yCiAgICAgICAg LyogbmI6IG5vbi1SQU0gcGFnZXMsIGUuZy4gZ3JhbnQgbWFwcGluZ3MsCiAgICAgICAgICogYXJl IHJlamVjdGVkIGJ5IHRoaXMgbG9va3VwICovCgogICAgICAgIGR0X21hcHBpbmcgPSBtYXBfZG9t YWluX3BhZ2UocGFnZSkKCiAgICAgICAgaWYgKHNldCkKICAgICAgICAgICAgIGR0X21hcHBpbmdb PGFwcHJvcHJpYXRlIHBhZ2Ugb2Zmc2V0IGZyb20gZGV2aWNlPl0gPSAqZW50cnk7CiAgICAgICAg ZWxzZQogICAgICAgICAgICAgKmVudHJ5ID0gZHRfbWFwcGluZ1s8YXBwcm9wcmlhdGUgcGFnZSBv ZmZzZXQ+XTsKCiAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UoZHRfbWFwcGluZykKClNpbmNlIGV2 ZXJ5dGhpbmcgaXMgYmFzZWQgdXBvbiBJUEEgKGd1ZXN0IGFkZHJlc3NlcykgYSBtYWxpY2lvdXMg Z3Vlc3QKY2FuIG9ubHkgcmVmZXJlbmNlIGl0cyBvd24gUkFNIGhlcmUuCgojIyBJVFQgVmlydHVh bGlzYXRpb24KClRoZSBsb2NhdGlvbiBvZiBhIFZJVFMgd2lsbCBoYXZlIGJlZW4gcmVjb3JkZWQg aW4gdGhlIGRvbWFpbiBEZXZpY2UKVGFibGUgYnkgYSBgTUFQSWAgb3IgYE1BUFZJYCBjb21tYW5k IGFuZCBpcyBsb29rZWQgdXAgYXMgYWJvdmUuCgpUaGUgYHZpdHRgIGlzIGEgYHN0cnVjdCB2aXR0 YDoKCiAgICBzdHJ1Y3Qgdml0dCB7CiAgICAgICAgdWludDE2X3QgdmFsaWQ6MTsKICAgICAgICB1 aW50MTZfdCBwYWQ6MTU7CiAgICAgICAgdWludDE2X3QgY29sbGVjdGlvbjsKICAgICAgICB1aW50 MzJfdCB2cGxpOwogICAgfTsKICAgIEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHZpdHQpICE9 IDgpOwoKQSBsb29rdXAgb2NjdXJzIHNpbWlsYXIgdG8gZm9yIGEgZGV2aWNlIHRhYmxlLCB0aGUg b2Zmc2V0IGlzIHJhbmdlCmNoZWNrZWQgYWdhaW5zdCB0aGUgYHZpdHRfc2l6ZWAgZnJvbSB0aGUg ZGV2aWNlIHRhYmxlLiBUbyBsb29rdXAKYGV2ZW50YCBvbiBgZGV2aWNlYDoKCiAgICBkZWZpbmUg e2dldCxzZXR9X3ZpdHRfZW50cnkoZG9tYWluLCBkZXZpY2UsIGV2ZW50LCBzdHJ1Y3Qgdml0dCAq ZW50cnkpOgogICAgICAgIGdldF92ZGV2aWNlX2VudHJ5KGRvbWFpbiwgZGV2aWNlLCAmZHQpCgog ICAgICAgIG9mZnNldCA9IGRldmljZSpzaXplb2Yoc3RydWN0IHZpdHQpOwogICAgICAgIGlmIG9m ZnNldCA+IGR0LT52aXR0X3NpemU6IGVycm9yCgogICAgICAgIHZpdHRfZW50cnkgPSBkdC0+dml0 YV9pcGEgKyBldmVudCpzaXplb2Yoc3RydWN0IHZpdHQpCiAgICAgICAgcGFnZSA9IHAybV9sb29r dXAoZG9tYWluLCB2aXR0X2VudHJ5LCBwMm1fcmFtKQogICAgICAgIGlmICFwYWdlOiBlcnJvcgog ICAgICAgIC8qIG5iOiBub24tUkFNIHBhZ2VzLCBlLmcuIGdyYW50IG1hcHBpbmdzLAogICAgICAg ICAqIGFyZSByZWplY3RlZCBieSB0aGlzIGxvb2t1cCAqLwoKICAgICAgICB2aXR0X21hcHBpbmcg PSBtYXBfZG9tYWluX3BhZ2UocGFnZSkKCiAgICAgICAgaWYgKHNldCkKICAgICAgICAgICAgIHZp dHRfbWFwcGluZ1s8YXBwcm9wcmlhdGUgcGFnZSBvZmZzZXQgZnJvbSBldmVudD5dID0gKmVudHJ5 OwogICAgICAgIGVsc2UKICAgICAgICAgICAgICplbnRyeSA9IHZpdHRfbWFwcGluZ1s8YXBwcm9w cmlhdGUgcGFnZSBvZmZzZXQ+XTsKCiAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UoZW50cnkpCgpB Z2FpbiBzaW5jZSB0aGlzIGlzIElQQSBiYXNlZCBhIG1hbGljaW91cyBndWVzdCBjYW4gb25seSBw b2ludCB0aGluZ3MKdG8gaXRzIG93biByYW0uCgojIyBDb2xsZWN0aW9uIFRhYmxlIFZpcnR1YWxp c2F0aW9uCgpBIHBvaW50ZXIgdG8gYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgYGl0c19j b2xsZWN0aW9uc2AgbWFwcGluZwpjb2xsZWN0aW9uIElEIHRvIHZjcHUgSUQgd2lsbCBiZSBhZGRl ZCB0byBgc3RydWN0IGRvbWFpbmAuIFRoZSBhcnJheQpzaGFsbCBoYXZlIGBucl92Y3B1cyArIDFg IGVudHJpZXMgYW5kIHJlc2V0cyB0byB+MCAob3IgYW5vdGhlcgpleHBsaWNpdGx5IGludmFsaWQg dnBjdSBucikuCgojIyBWaXJ0dWFsIExQSSBpbmplY3Rpb24KCkFzIGRpc2N1c3NlZCBhYm92ZSB0 aGUgYHZnaWNfdmNwdV9pbmplY3RfaXJxYCBmdW5jdGlvbmFsaXR5IHdpbGwgbmVlZAp0byBiZSBl eHRlbmRlZCB0byBjb3ZlciB0aGlzIG5ldyBjYXNlLCBtb3N0IGxpa2VseSB2aWEgYSBuZXcKYHZn aWNfdmNwdV9pbmplY3RfbHBpYCBmcm9udGVuZCBmdW5jdGlvbi4KCmB2Z2ljX3ZjcHVfaW5qZWN0 X2xwaWAgcmVjZWl2ZXMgYSBgc3RydWN0IGRvbWFpbiAqYCBhbmQgYSB2aXJ0dWFsCmludGVycnVw dCBudW1iZXIgKGNvcnJlc3BvbmRpbmcgdG8gYSB2TFBJKSBhbmQgbmVlZHMgdG8gZmlndXJlIG91 dAp3aGljaCB2Y3B1IHRoaXMgc2hvdWxkIG1hcCB0by4KClRvIGRvIHRoaXMgaXQgbXVzdCBsb29r IHVwIHRoZSBDb2xsZWN0aW9uIElEIGFzc29jaWF0ZWQgKHZpYSB0aGUgdklUUykKd2l0aCB0aGF0 IExQSS4KClByb3Bvc2FsOiBBZGQgYSBuZXcgYGl0c19kZXZpY2VgIGZpZWxkIHRvIGBzdHJ1Y3Qg aXJxX2d1ZXN0YCwgYQpwb2ludGVyIHRvIHRoZSBhc3NvY2lhdGVkIGBzdHJ1Y3QgaXRzX2Rldmlj ZWAuIFRoZSBleGlzdGluZyBgc3RydWN0CmlycV9ndWVzdC52aXJxYCBmaWVsZCBjb250YWlucyB0 aGUgZXZlbnQgSUQgKHBlcmhhcHMgdXNlIGEgYHVuaW9uYAp0byBnaXZlIGEgbW9yZSBhcHByb3By aWF0ZSBuYW1lKSBhbmQgX25vdF8gdGhlIHZpcnR1YWwgTFBJLiBJbmplY3Rpb24KdGhlbiBjb25z aXN0cyBvZjoKCiAgICAgICAgZCA9IGlycV9ndWVzdC0+ZG9tYWluCiAgICAgICAgdmlycSA9IGly cV9ndWVzdC0+dmlycQogICAgICAgIGl0c19kZXZpY2UgPSBpcnFfZ3Vlc3QtPml0c19kZXZpY2UK CiAgICAgICAgZ2V0X3ZpdHRfZW50cnkoZCwgaXRzX2RldmljZS0+dmlydF9kZXZpY2VfaWQsIHZp cnEsICZ2aXR0KQogICAgICAgIHZjcHUgPSBkLT5pdHNfY29sbGVjdGlvbnNbdml0dC5jb2xsZWN0 aW9uXQogICAgICAgIHZnaWNfdmNwdV9pbmplY3RfaXJxKGQsICZkLT52Y3B1c1t2Y3B1XSkKCklu IHRoZSBldmVudCB0aGF0IHRoZSBJSVQgaXMgbm90IGBNQVBEYGQsIG9yIHRoZSBFdmVudCBoYXMg bm90IGJlZW4KYE1BUElgL2BNQVBWSWBkIG9yIHRoZSBjb2xsZWN0aW9uIGlzIG5vdCBgTUFQQ2Bk IGhlcmUgdGhlIGludGVycnVwdCBpcwpzaW1wbHkgaWdub3JlZC4gTm90ZSB0aGF0IHRoaXMgY2Fu IGhhcHBlbiBiZWNhdXNlIExQSSBtYXBwaW5nIGlzCmRlY291cGxlZCBmcm9tIExQSSBlbmFibGVt ZW50LiBJbiBwYXJ0aWN1bGFyIHdyaXRlcyB0byB0aGUgTFBJCkNvbmZpZ3VyYXRpb24gVGFibGUg ZG8gbm90IGluY2x1ZGUgYSBEZXZpY2UgSUQgYW5kIHRoZXJlZm9yZSBjYW5ub3QKbWFrZSBkZWNp c2lvbnMgYmFzZWQgb24gdGhlIElUVC4KClhYWCBVSTEgaWYgd2UgY291bGQgZmluZCBhIHJlbGlh YmxlIHdheSB0byByZWVuYWJsZSB0aGVuIGNvdWxkCnBvdGVudGlhbGx5IGRpc2FibGUgTFBJIG9u IGVycm9yIGFuZCByZWVuYWJsZSBsYXRlciAodGFraW5nIGEgc3B1cmlvdXMKWGVuIGludGVycnVw dCBmb3IgZWFjaCBwb3NzaWJsZSB2aXRzIG1pc2NvbmZpZ3VyYXRpb24pLiBJT1cgaWYgdGhlCmlu dGVycnVwdCBpcyBpbnZhbGlkIGZvciBlYWNoIG9mIHRoZXNlIHJlYXNvbnMgd2UgY2FuIGRpc2Fi bGUgYW5kCnJlZW5hYmxlIGFzIGRlc2NyaWJlZDoKCi0gTm90IGBNQVBEYGQgLS0gb24gYE1BUERg IGVuYWJsZSBhbGwgYXNzb2NpYXRlIExQSXMgd2hpY2ggYXJlIGVuYWJsZWQKICBpbiBMUEkgQ0ZH IFRhYmxlLgotIE5vdCBgTUFQSWAvYE1BUFZJYGQgLS0gb24gYE1BUElgL2BNQVBWSWAgZW5hYmxl IExQSSBpZiBlbmFibGVkIGluCiAgQ0ZHIFRhYmxlLgotIE5vdCBgTUFQQ2BkIC0tIHRyaWNreS4g TmVlZCB0byBrbm93IGxpc3RzIG9mIExQSXMgYXNzb2NpYXRlZCB3aXRoIGEKICB2aXJ0dWFsIGNv bGxlY3Rpb24uIEEgYGxpc3RfaGVhZGAgaW4gYHN0cnVjdCBpcnFfZ3Vlc3RgIGltcGxpZXMgYQog IGZhaXIgYml0IG9mIG92ZXJoZWFkLCBudW1iZXIgb2YgTFBJcyBwZXIgY29sbGVjdGlvbiBpcyB0 aGUgdG90YWwKICBudW1iZXIgb2YgTFBJcyAoZ3Vlc3QgY291bGQgYXNzaWduIGFsbCB0byB0aGUg c2FtZQogIGNvbGxlY3Rpb24pLiBDb3VsZCB3YWxrIGVudGlyZSBMUEkgQ0ZHIGFuZCByZWVuYWJs ZSBhbGwgc2V0IExQSXMsCiAgbWlnaHQgaW52b2x2ZSB3YWxraW5nIG92ZXIgc2V2ZXJhbCBLQiBv ZiBtZW1vcnkgdGhvdWdoLiBDb3VsZCBpbmplY3QKICB1bm1hcHBlZCBjb2xsZWN0aW9ucyB0byB2 Y3B1MCwgZm9yY2luZyB0aGUgZ3Vlc3QgdG8gZGVhbCB3aXRoIHRoZQogIHNwdXJpb3VzIGludGVy cnVwdHM/CgpYWFggT25seSB0aGUgYE1BUENgIGlzc3VlIHNlZW1zIHByb2JsZW1hdGljLiBJcyB0 aGlzIGEgY3JpdGljYWwgaXNzdWUgb3IKY2FuIHdlIGdldCBhd2F5IHdpdGggaXQ/CgojIyBDb21t YW5kIFF1ZXVlIFZpcnR1YWxpc2F0aW9uCgpUaGUgY29tbWFuZCB0cmFuc2xhdGlvbi9lbXVsYXRp b24gaW4gdGhpcyBkZXNpZ24gaGFzIGJlZW4gYXJyYW5nZWQgdG8KYmUgYXMgY2hlYXAgYXMgcG9z c2libGUgKGUuZy4gaW4gbWFueSBjYXNlcyB0aGUgYWN0aW9ucyBhcmUgTk9QcyksCmF2b2lkaW5n IHByZXZpb3VzIGNvbmNlcm5zIGFib3V0IHRoZSBsZW5ndGggb2YgdGltZSB3aGljaCBhbiBlbXVs YXRlZAp3cml0ZSB0byBhIGBDV1JJVEVSYCByZWdpc3RlciBtYXkgYmxvY2sgdGhlIHZjcHUuCgpU aGUgdml0cyB3aWxsIHNpbXBseSB0cmFjayBpdHMgcmVhZGVyIGFuZCB3cml0ZXIgcG9pbnRlcnMu IE9uIHdyaXRlCnRvIGBDV1JJVEVSYCBpdCB3aWxsIGltbWVkaWF0ZWx5IGFuZCBzeW5jaHJvbm91 c2x5IHByb2Nlc3MgYWxsCmNvbW1hbmRzIGluIHRoZSBxdWV1ZSBhbmQgdXBkYXRlIGl0cyBzdGF0 ZSBhY2NvcmRpbmdseS4KCkl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGltcGxlbWVudCBhIHJ1ZGlt ZW50YXJ5IGZvcm0gb2YgcHJlZW1wdGlvbiBieQpwZXJpb2RpY2FsbHkgKGFzIGRldGVybWluZWQg YnkgYGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKClgKSByZXR1cm5pbmcKdG8gdGhlIGd1ZXN0IHdp dGhvdXQgaW5jcmVtZW50aW5nIFBDIGJ1dCB3aXRoIHVwZGF0ZWQgaW50ZXJuYWwKYENSRUFEUmAg c3RhdGUsIG1lYW5pbmcgaXQgd2lsbCByZWV4ZWN1dGUgdGhlIHdyaXRlIHRvIGBDV1JJVEVSYCBh bmQKd2UgY2FuIHBpY2t1cCB3aGVyZSB3ZSBsZWZ0IG9mZiBmb3IgYW5vdGhlciBpdGVyYXRpb24u IFRoaXMgYXQgbGVhc3QKbGV0cyB1cyBzY2hlZHVsZSBvdGhlciB2Y3B1cyBldGMgYW5kIHByZXZl bnRzIGEgbW9ub3BvbHkuCgojIyBJVFMgQ29tbWFuZCBUcmFuc2xhdGlvbgoKVGhpcyBzZWN0aW9u IGlzIGJhc2VkIG9uIHRoZSBzZWN0aW9uIDUuMTMgb2YgR0lDdjMgc3BlY2lmaWNhdGlvbgooUFJE MDMtR0VOQy0wMTA3NDUgMjQuMCkgYW5kIHByb3ZpZGVzIGNvbmNyZXRlIGlkZWFzIG9mIGhvdyB0 aGlzIGNhbgpiZSBpbnRlcnByZXRlZCBmb3IgWGVuLgoKVGhlIElUUyBwcm92aWRlcyAxMiBjb21t YW5kcyBpbiBvcmRlciB0byBtYW5hZ2UgaW50ZXJydXB0IGNvbGxlY3Rpb25zLApkZXZpY2VzIGFu ZCBpbnRlcnJ1cHRzLiBQb3NzaWJsZSBjb21tYW5kIHBhcmFtZXRlcnMgYXJlOgoKLSBEZXZpY2Ug SUQgKGBEZXZpY2VgKSAoY2FsbGVkIGBkZXZpY2VgIGluIHRoZSBzcGVjKS4KLSBFdmVudCBJRCAo YEV2ZW50YCkgKGNhbGxlZCBgSURgIGluIHRoZSBzcGVjKS4gVGhpcyBpcyBhbiBpbmRleCBpbnRv CiAgYSBkZXZpY2VzIGBJVFRgLgotIENvbGxlY3Rpb24gSUQgKGBDb2xsZWN0aW9uYCkgKGNhbGxl ZCBgY29sbGVjdGlvbmAgaW4gdGhlIHNwZWMpCi0gTFBJIElEIChgTFBJYCkgKGNhbGxlZCBgcElE YCBpbiB0aGUgc3BlYykKLSBUYXJnZXQgQWRkcmVzcyAoYFRBYCkgKGNhbGxlZCBgVEFgIGluIHRo ZSBzcGVjYCkKClRoZXNlIHBhcmFtZXRlcnMgbmVlZCB0byBiZSB2YWxpZGF0ZWQgYW5kIHRyYW5z bGF0ZWQgZnJvbSBWaXJ0dWFsIChgdmAKcHJlZml4KSB0byBQaHlzaWNhbCAoYHBgIHByZWZpeCku CgpOb3RlLCB3ZSBkaWZmZXIgZnJvbSB0aGUgbmFtaW5nIGluIHRoZSBHSUMgc3BlYyBmb3IgY2xh cml0eSwgaW4KcGFydGljdWxhciB3ZSB1c2UgYEV2ZW50YCBub3QgYElEYCBhbmQgYExQSWAgbm90 IGBwSURgIHRvIHJlZHVjZQpjb25mdXNpb24sIGVzcGVjaWFsbHkgd2hlbiBgdmAgYW5kIGBwYCBz dWZmaXhlcyBhcmUgdXNlZCBkdWUgdG8KdmlydHVhbGlzYXRpb24uCgojIyMgUGFyYW1ldGVyIFZh bGlkYXRpb24gLyBUcmFuc2xhdGlvbgoKRWFjaCBjb21tYW5kIGNvbnRhaW5zIHBhcmFtZXRlcnMg dGhhdCBuZWVkcyB0byBiZSB2YWxpZGF0ZWQgYmVmb3JlIGFueQp1c2FnZSBpbiBYZW4gb3IgcGFz c2luZyB0byB0aGUgaGFyZHdhcmUuCgojIyMjIERldmljZSBJRCAoYERldmljZWApCgpDb3JyZXNw b25kaW5nIElUVCBvYnRhaW5lZCBieSBsb29raW5nIHVwIGFzIGRlc2NyaWJlZCBhYm92ZS4KClRo ZSBwaHlzaWNhbCBgc3RydWN0IGl0c19kZXZpY2VgIGNhbiBiZSBmb3VuZCBieSBsb29raW5nIHVw IGluIHRoZQpkb21haW4ncyBkZXZpY2UgbWFwLgoKSWYgbG9va3VwIGZhaWxzIG9yIHRoZSByZXN1 bHRpbmcgZGV2aWNlIHRhYmxlIGVudHJ5IGlzIGludmFsaWQgdGhlbgp0aGUgRGV2aWNlIGlzIGlu dmFsaWQuCgojIyMjIEV2ZW50IElEIChgRXZlbnRgKQoKVmFsaWRhdGVkIGFnYWluc3QgZW11bGF0 ZWQgYEdJVFNfVFlQRVIuSURiaXRzYC4KCkl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gdHJhbnNsYXRl IGEgYHZFdmVudGAuCgojIyMjIExQSSAoYExQSWApCgpWYWxpZGF0ZWQgYWdhaW5zdCBlbXVsYXRl ZCBgR0lUU19UWVBFUi5JRGJpdHNgLgoKSXQgaXMgbm90IG5lY2Vzc2FyeSB0byB0cmFuc2xhdGUg YSBgdkxQSWAgaW50byBhIGBwTFBJYCBzaW5jZSB0aGUKdGFibGVzIGFsbCBjb250YWluIGB2TFBJ YC4gKFRyYW5zbGF0aW9uIGZyb20gYHBMUElgIHRvIGB2TFBJYCBoYXBwZW5zCnZpYSBgc3RydWN0 IGlycV9ndWVzdGAgd2hlbiB3ZSByZWNlaXZlIHRoZSBJUlEpLgoKIyMjIyBJbnRlcnJ1cHQgQ29s bGVjdGlvbiAoYENvbGxlY3Rpb25gKQoKVGhlIGBDb2xsZWN0aW9uYCBpcyB2YWxpZGF0ZWQgYWdh aW5zdCB0aGUgc2l6ZSBvZiB0aGUgcGVyLWRvbWFpbgpgaXRzX2NvbGxlY3Rpb25zYCBhcnJheSAo aS5lLiBucl92Y3B1cyArIDEpIGFuZCB0aGVuIHRyYW5zbGF0ZWQgYnkgYQpzaW1wbGUgbG9va3Vw IGluIHRoYXQgYXJyYXkuCgogICAgIHZjcHVfbnIgPSBkLT5pdHNfY29sbGVjdGlvbnNbQ29sbGVj dGlvbl0KCkEgcmVzdWx0ID4gYG5yX2NwdXNgIGlzIGludmFsaWQKCiMjIyMgVGFyZ2V0IEFkZHJl c3MgKGBUQWApCgpUaGlzIHBhcmFtZXRlciBpcyB1c2VkIGluIGNvbW1hbmRzIHdoaWNoIG1hbmFn ZSBjb2xsZWN0aW9ucy4gSXQgaXMgYQp1bmlxdWUgaWRlbnRpZmllciBwZXIgcHJvY2Vzc29yLgoK V2UgaGF2ZSBjaG9zZW4gdG8gaW1wbGVtZW50IGBHSVRTX1RZUEVSLlBUQWAgYXMgMCwgaGVuY2Ug YHZUQWAgc2ltcGx5CmNvcnJlc3BvbmRzIHRvIHRoZSBgdmNwdV9pZGAsIHNvIG9ubHkgbmVlZHMg Ym91bmRzIGNoZWNraW5nIGFnYWluc3QKYG5yX3ZjcHVzYC4KCiMjIyBDb21tYW5kcwoKVG8gYmUg cmVhZCB3aXRoIHJlZmVyZW5jZSB0byBzcGVjIGZvciBlYWNoIGNvbW1hbmQgKHdoaWNoIGluY2x1 ZGVzCmVycm9yIGNoZWNrcyBldGMgd2hpY2ggYXJlIG9taXR0ZWQgaGVyZSkuCgpJdCBpcyBhc3N1 bWVkIHRoYXQgaW5wdXRzIHdpbGwgYmUgYm91bmRzIGFuZCB2YWxpZGl0eSBjaGVja2VkIGFzCmRl c2NyaWJlZCBhYm92ZSwgdGh1cyBlcnJvciBoYW5kbGluZyBpcyBvbWl0dGVkIGZvciBicmV2aXR5 IChpLmUuIGlmCmdldCBhbmQvb3Igc2V0IGZhaWwgdGhlbiBzbyBiZSBpdCkuIEluIGdlbmVyYWwg aW52YWxpZCBjb21tYW5kcyBhcmUKc2ltcGx5IGlnbm9yZWQuCgojIyMjIGBNQVBEYDogTWFwIGEg cGh5c2ljYWwgZGV2aWNlIHRvIGFuIElUVC4KCl9Gb3JtYXRfOiBgTUFQRCBEZXZpY2UsIFZhbGlk LCBJVFQgQWRkcmVzcywgSVRUIFNpemVgLgoKX1NwZWNfOiA1LjEzLjExCgpgTUFQRGAgaXMgc2Vu dCB3aXRoIGBWYWxpZGAgYml0IHNldCBpZiB0aGUgbWFwcGluZyBpcyB0byBiZSBhZGRlZCBhbmQK cmVzZXQgd2hlbiBtYXBwaW5nIGlzIHJlbW92ZWQuCgpUaGUgZG9tYWluJ3MgZGV2aWNlIHRhYmxl IGlzIHVwZGF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24uCgpUaGUgYHZpdHRfbWFw ZGAgZmllbGQgaXMgc2V0IGFjY29yZGluZyB0byB0aGUgYFZhbGlkYCBmbGFnIGluIHRoZQpjb21t YW5kOgoKICAgIGR0X2VudHJ5LnZpdHRfaXBhID0gSVRUIEFkZHJlc3MKICAgIGR0X2VudHJ5LnZp dHRfc2l6ZSA9IElUVCBTaXplCiAgICBzZXRfdmRldmljZV9lbnRyeShjdXJyZW50LT5kb21haW4s IERldmljZSwgJmR0X2VudHJ5KQoKICAgIFhYWCBVSTEgUG9zcy4gaGFuZGxlIGRpcy9lbmFibGlu ZyBwTFBJLCBpZiBtYXBwaW5nIG5vdyBjb21wbGV0ZWx5IChpbil2YWxpZC4KClhYWCBTaG91bGQg d2UgdmFsaWRhdGUgc2l6ZT8gR3Vlc3RzIG93biBmYXVsdCBpZiB3ZSBydW4gb2ZmIHRoZSBlbmQg b2YKYSB0YWJsZSBsYXRlcj8gSWYgd2UgZGlkIHN0YXJ0IHRvIGNvbnNpZGVyIHBlcm1hbmVudCBt YXBwaW5ncyB0aGVuIHdlCl93b3VsZF8gY2FyZS4KCiMjIyMgYE1BUENgOiBNYXAgYW4gaW50ZXJy dXB0IGNvbGxlY3Rpb24gdG8gYSB0YXJnZXQgcHJvY2Vzc29yCgpfRm9ybWF0XzogYE1BUEMgQ29s bGVjdGlvbiwgVEFgCgpfU3BlY186IDUuMTMuMTIKClRoZSB1cGRhdGVkIGB2VEFgIChhIHZjcHUg bnVtYmVyKSBpcyByZWNvcmRlZCBpbiB0aGUgYGl0c19jb2xsZWN0aW9uc2AKYXJyYXkgb2YgdGhl IGRvbWFpbiBzdHJ1Y3Q6CgogICAgZC0+aXRzX2NvbGxlY3Rpb25zW0NvbGxlY3Rpb25dID0gVEEK CiAgICBYWFggVUkxIFBvc3MuIGhhbmRsZSBkaXMvZW5hYmxpbmcgcExQSSwgaWYgbWFwcGluZyBu b3cgY29tcGxldGVseSAoaW4pdmFsaWQuCgojIyMjIGBNQVBJYDogTWFwIGFuIGludGVycnVwdCB0 byBhbiBpbnRlcnJ1cHQgY29sbGVjdGlvbi4KCl9Gb3JtYXRfOiBgTUFQSSBEZXZpY2UsIExQSSwg Q29sbGVjdGlvbmAKCl9TcGVjXzogNS4xMy4xMwoKQWZ0ZXIgdmFsaWRhdGlvbjoKCiAgICB2aXR0 LnZhbGlkID0gVHJ1ZQogICAgdml0dC5jb2xsZWN0aW9uID0gQ29sbGVjdGlvbgogICAgdml0dC52 cGxpID0gTFBJCiAgICBzZXRfdml0dF9lbnRyeShjdXJyZW50LT5kb21pYW4sIERldmljZSwgTFBJ LCAmdml0dCkKCiAgICBYWFggVUkxIFBvc3MuIGhhbmRsZSBkaXMvZW5hYmxpbmcgcExQSSwgaWYg bWFwcGluZyBub3cgY29tcGxldGVseSAoaW4pdmFsaWQuCgojIyMjIGBNQVBWSWA6IE1hcCBhbiBp bnB1dCBpZGVudGlmaWVyIHRvIGEgcGh5c2ljYWwgaW50ZXJydXB0IGFuZCBhbiBpbnRlcnJ1cHQg Y29sbGVjdGlvbi4KCkZvcm1hdDogYE1BUFZJIERldmljZSwgRXZlbnQsIExQSSwgQ29sbGVjdGlv bmAKCiAgICB2aXR0LnZhbGlkID0gVHJ1ZQogICAgdml0dC5jb2xsZWN0aW9uID0gQ29sbGVjdGlv bgogICAgdml0dC52cGxpID0gTFBJCiAgICBzZXRfdml0dF9lbnRyeShjdXJyZW50LT5vZG1pYW4s IERldmljZSwgRXZlbnQsICZ2aXR0KQoKICAgIFhYWCBVSTEgUG9zcy4gaGFuZGxlIGRpcy9lbmFi bGluZyBwTFBJLCBpZiBtYXBwaW5nIG5vdyBjb21wbGV0ZWx5IChpbil2YWxpZC4KCiMjIyMgYE1P VklgOiBSZWRpcmVjdCBpbnRlcnJ1cHQgdG8gYW4gaW50ZXJydXB0IGNvbGxlY3Rpb24KCl9Gb3Jt YXRfOiBgTU9WSSBEZXZpY2UsIEV2ZW50LCBDb2xsZWN0aW9uYAoKX1NwZWNfOiA1LjEzLjE1Cgog ICAgZ2V0X3ZpdHRfZW50cnkoY3VycmVudC0+ZG9tYWluLCBEZXZpY2UsIEV2ZW50LCAmdml0dCkK ICAgIHZpdHQuY29sbGVjdGlvbiA9IENvbGxlY3Rpb24KICAgIHNldF92aXR0X2VudHJ5KGN1cnJl bnQtPmRvbWFpbiwgRGV2aWNlLCBFdmVudCwgJnZpdHQpCgogICAgWFhYIGNvbnNpZGVyIGhlbHBl ciB3aGljaCBzZXRzIGZpZWxkIHdpdGhvdXQgbWFwcGluZy91bm1hcHBpbmcKICAgIHR3aWNlLgoK VGhpcyBjb21tYW5kIGlzIHN1cHBvc2VkIHRvIG1vdmUgYW55IHBlbmRpbmcgaW50ZXJydXB0cyBh c3NvY2lhdGVkCndpdGggYEV2ZW50YCB0byB0aGUgdmNwdSBpbXBsaWVkIGJ5IHRoZSBuZXcgYENv bGxlY3Rpb25gLCB3aGljaCBpcwp0cmlja3kuIEZvciBub3cgd2UgaWdub3JlIHRoaXMgcmVxdWly ZW1lbnQgKGFzIHdlIGRvIGZvcgpgR0lDRF9JUk9VVEVSbmAgYW5kIGBHSUNEX1RBUkdFVFJuYCBm b3Igb3RoZXIgaW50ZXJydXB0IHR5cGVzKS4KCiMjIyMgYERJU0NBUkRgOiBEaXNjYXJkIGludGVy cnVwdCByZXF1ZXN0cwoKX0Zvcm1hdF86IGBESVNDQVJEIERldmljZSwgRXZlbnRgCgpfU3BlY186 IDUuMTMuMTYKCiAgICBnZXRfdml0dF9lbnRyeShjdXJyZW50LT5kb21haW4sIERldmljZSwgRXZl bnQsICZ2aXR0KQogICAgdml0dC52YWxpZCA9IEZhbHNlCiAgICBzZXRfdml0dF9lbnRyeShjdXJy ZW50LT5kb21haW4sIERldmljZSwgRXZlbnQsICZ2aXR0KQoKICAgIFhYWCBVSTEgUG9zcy4gaGFu ZGxlIGRpcy9lbmFibGluZyBwTFBJLCBpZiBtYXBwaW5nIG5vdyBjb21wbGV0ZWx5IChpbil2YWxp ZC4KCiAgICBYWFggY29uc2lkZXIgaGVscGVyIHdoaWNoIHNldHMgZmllbGQgd2l0aG91dCBtYXBw aW5nL3VubWFwcGluZwogICAgdHdpY2UuCgpUaGlzIGNvbW1hbmQgaXMgc3VwcG9zZWQgdG8gY2xl YXIgdGhlIHBlbmRpbmcgc3RhdGUgb2YgYW55IGFzc29jaWF0ZWQKaW50ZXJydXB0LiBUaGlzIHJl cXVpcmVtZW50IGlzIGlnbm9yZWQgKGd1ZXN0IG1heSBzZWUgYSBzcHVyaW91cwppbnRlcnJ1cHQp LgoKIyMjIyBgSU5WYDogQ2xlYW4gYW55IGNhY2hlcyBhc3NvY2lhdGVkIHdpdGggaW50ZXJydXB0 CgpfRm9ybWF0XzogYElOViBEZXZpY2UsIEV2ZW50YAoKX1NwZWNfOiA1LjEzLjE3CgpTaW5jZSBM UEkgQ29uZmlndXJhdGlvbiB0YWJsZSB1cGRhdGVzIGFyZSBoYW5kbGVkIHN5bmNocm9ub3VzbHkg aW4gdGhlCnJlc3BlY3RpdmUgdHJhcCBoYW5kbGVyIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gaGVy ZS4KCiMjIyMgYElOVkFMTGA6IENsZWFuIGFueSBjYWNoZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGlu dGVycnVwdCBjb2xsZWN0aW9uCgpfRm9ybWF0XzogYElOVkFMTCBDb2xsZWN0aW9uYAoKX1NwZWNf OiA1LjEzLjE5CgpTaW5jZSBMUEkgQ29uZmlndXJhdGlvbiB0YWJsZSB1cGRhdGVzIGFyZSBoYW5k bGVkIHN5bmNocm9ub3VzbHkgdGhlcmUKaXMgbm90aGluZyB0byBkbyBoZXJlLgoKIyMjIyBgSU5U YDogR2VuZXJhdGUgYW4gaW50ZXJydXB0CgpfRm9ybWF0XzogYElOVCBEZXZpY2UsIEV2ZW50YAoK X1NwZWNfOiA1LjEzLjIwCgpUaGUgYHZpdHRgIGVudHJ5IGNvcnJlc29uZGluZyB0byBgRGV2aWNl LEV2ZW50YCBpcyBsb29rZWQgdXAgYW5kIHRoZW46CgogICAgZ2V0X3ZpdHRfZW50cnkoY3VycmVu dC0+ZG9tYWluLCBEZXZpY2UsIEV2ZW50LCAmdml0dCkKICAgIHZnaWNfdmNwdV9pbmplY3RfbHBp KGN1cnJlbnQtPmRvbWFpbiwgdml0dC52bHBpKQoKWFhYIFdoZXJlIChEZXZpY2UsRXZlbnQpIGlz IHJlYWwgbWF5IG5lZWQgY29uc2lkZXJhdGlvbiBvZgppbnRlcmFjdGlvbnMgd2l0aCByZWFsIExQ SXMgYmVpbmcgZGVsaXZlcmVkOiBKdWxpZW4gaGFkIGNvbmNlcm5zIGFib3V0ClhlbidzIGludGVy bmFsIElSUSBTdGF0ZSB0cmFja2luZy4gaWYgdGhpcyBpcyBhIHByb2JsZW0gdGhlbiBtYXkgbmVl ZApjaGFuZ2VzIHRvIElSUSBzdGF0ZSB0cmFja2luZywgb3IgdG8gaW5qZWN0IGFzIGEgcmVhbCBJ UlEgYW5kIGxldApwaHlzaWNhbCBJUlEgaW5qZWN0aW9uIGhhbmRsZSBpdCwgb3Igd3JpdGUgdG8g YEdJQ1JfU0VUTFBJUmA/CgojIyMjIGBDTEVBUmA6IENsZWFyIHRoZSBwZW5kaW5nIHN0YXRlIG9m IGFuIGludGVycnVwdAoKX0Zvcm1hdF86IGBDTEVBUiBEZXZpY2UsIEV2ZW50YAoKX1NwZWNfOiA1 LjEzLjIxCgpTaG91bGQgY2xlYXIgcGVuZGluZyBzdGF0ZSBvZiBMUEkuIElnbm9yZSAoZ3Vlc3Qg bWF5IHNlZSBhIHNwdXJpb3VzCmludGVycnVwdCkuCgojIyMjIGBTWU5DYDogV2FpdCBmb3IgY29t cGxldGlvbiBvZiBhbnkgb3V0c3RhbmRpbmcgSVRTIGFjdGlvbnMgZm9yIGNvbGxlY3Rpb24KCl9G b3JtYXRfOiBgU1lOQyBUQWAKCl9TcGVjXzogNS4xMy4yMgoKVGhpcyBjb21tYW5kIGNhbiBiZSBp Z25vcmVkLgoKIyBHSUN2NCBEaXJlY3QgSW50ZXJydXB0IEluamVjdGlvbgoKR0lDdjQgd2lsbCBk aXJlY3RseSBtYXJrIHRoZSBMUElzIHBlbmRpbmcgaW4gdGhlIHZpcnR1YWwgcGVuZGluZyB0YWJs ZQp3aGljaCBpcyBwZXItcmVkaXN0cmlidXRvciAoaS5lIHBlci12Q1BVKS4KCkxQSXMgd2lsbCBi ZSByZWNlaXZlZCBieSB0aGUgZ3Vlc3QgdGhlIHNhbWUgd2F5IGFzIGFuIFNQSXMuIEkuZSB0cmFw IGluCklSUSBtb2RlIHRoZW4gcmVhZCBJQ0NfSUFSMV9FTDEgKGZvciBHSUN2MykuCgpUaGVyZWZv cmUgR0lDdjQgd2lsbCBub3QgcmVxdWlyZSBvbmUgdklUUyBwZXIgcElUUy4KCiMgRXZlbnQgQ2hh bm5lbHMKCkl0IGhhcyBiZWVuIHByb3Bvc2VkIHRoYXQgaXQgbWlnaHQgYmUgbmljZSB0byBpbmpl Y3QgZXZlbnQgY2hhbm5lbHMgYXMKTFBJcyBpbiB0aGUgZnV0dXJlLiBXaGV0aGVyIG9yIG5vdCB0 aGF0IHdvdWxkIGludm9sdmUgYW55IHNvcnQgb2YgdklUUwppcyB1bmNsZWFyLCBidXQgaWYgaXQg ZGlkIHRoZW4gaXQgd291bGQgbGlrZWx5IGJlIGEgc2VwYXJhdGUgZW11bGF0aW9uCnRvIHRoZSB2 SVRTIGVtdWxhdGlvbiB1c2VkIHdpdGggYSBwSVRTIGFuZCBhcyBzdWNoIGlzIG5vdCBjb25zaWRl cmVkCmZ1cnRoZXIgaGVyZS4KCiMgR2xvc3NhcnkKCiogX01TSV86IE1lc3NhZ2UgU2lnbmFsbGVk IEludGVycnVwdAoqIF9JVFNfOiBJbnRlcnJ1cHQgVHJhbnNsYXRpb24gU2VydmljZQoqIF9HSUNf OiBHZW5lcmljIEludGVycnVwdCBDb250cm9sbGVyCiogX0xQSV86IExvY2FsaXR5LXNwZWNpZmlj IFBlcmlwaGVyYWwgSW50ZXJydXB0CgojIFJlZmVyZW5jZXMKCiJHSUMgQXJjaGl0ZWN0dXJlIFNw ZWNpZmljYXRpb24iIFBSRDAzLUdFTkMtMDEwNzQ1IDI0LjAuCgoiSU8gUmVtYXBwaW5nIFRhYmxl IFN5c3RlbSBTb2Z0d2FyZSBvbiBBUk3CriBQbGF0Zm9ybXMiIEFSTSBERU4gMDA0OUEuCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK