From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: Re: Xen ARM - Exposing a PL011 to the guest Date: Mon, 13 Feb 2017 14:20:07 +0530 Message-ID: References: <173fa6a7-8656-3465-3d40-59f776deb8a1@arm.com> <20170129110640.GA8656@cbox> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113e3a80da4de1054865886f Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: Wei Liu , Steve Capper , George Dunlap , Andrew Cooper , Ian Jackson , Xen Devel , Julien Grall , Jan Beulich , Christoffer Dall List-Id: xen-devel@lists.xenproject.org --001a113e3a80da4de1054865886f Content-Type: text/plain; charset=UTF-8 Hi Stefano, On 9 February 2017 at 05:40, Stefano Stabellini wrote: > On Wed, 8 Feb 2017, Bhupinder Thakur wrote: >> Hi Julien, >> >> On 3 February 2017 at 19:38, Julien Grall wrote: >> > So if I understand correctly, you don't receive anymore output. Correct? >> > Have you tried to see whether the pl011 driver is receiving interrupt or >> > even Linux calling it. >> >> The pl011 driver is not receiving the interrupts (I put a >> HYPERVISOR_console_io() call inside the interrupt handler and I do not >> see the print on the xen console) . When the console is in this state, >> if I keep typing the characters on the console then Xen keeps raising >> the interrupts (for each character typed) but all those interrupts are >> marked as inflight. So it seems that interrupt is not getting cleared >> in GIC. Which GIC function can I look at to further debug what is the >> issue? >> >> Earlier, when I used to manually write characters to /dev/ttyAMA0 then >> I used to receive the interrupts all fine. > > DomU doesn't get emulated PL011 interrupts from Xen? Make sure you don't > mark the interrupt as a real hardware interrupt by mistake > (GICH_V2_LR_HW). At the same time, check that the virtual PL011 > interrupt has been added correctly to the LRs > (xen/arch/arm/gic-v2.c:gicv2_update_lr). I verified that the PL011 interrupt is getting marked pending by Xen but guest does not receive it. I am not sure if the local interrupt delivery is disabled on the guest because of which it may not be receiving the interrupts. Is there a way to verify that interrupts are indeed disabled at that point. Since the interrupt delivery works fine when I manually read/write characters to /dev/ttyAMA0, I think there is no issue from the Xen side in terms of raising an interrupt. One observation is that pl011_request_port () calls request_mem_region () for the MMIO space allocated to pl011. The function returns -EBUSY indicating that the memory region is already in use. But when I do cat /proc/iomem, I do not see any overlaps. I am using 0x22000000 as the start of the pl011 MMIO space. I see the same error while booting the dom0 kernel also. I have attached the guest boot logs when console=ttyAMA0. I have added debug prints marked with [DEBUG]. I added debug prints in amba-pl011.c and serial_core.c. The output from the console seems to suddenly stop once the pl011 port is started. I have not added getty for ttyAMA0 in the /etc/inittab file. I believe auto-serial-console should be able to attach a getty session to ttyAMA0 automatically (i did try with adding a getty command in the inittab file but that did not solve the issue). Towards the end of the log, we can see that every time a character is typed, Xen raises an interrupt and the characters keep getting collected in the IN RING buffer (in_prod keeps incrementing). Later interrupts remain in inflight as the earlier interrupt is not cleared. Regards, Bhupinder --001a113e3a80da4de1054865886f Content-Type: text/x-log; charset=US-ASCII; name="pl011.log" Content-Disposition: attachment; filename="pl011.log" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iz3uzgcs0 DQoobm9uZSk6L3Jvb3QgIyBjYXQgZG9tVS5jZmcNCmtlcm5lbCA9ICIvcm9vdC9JbWFnZSINCm5h bWUgPSAiZ3Vlc3QiDQptZW1vcnkgPSA1MTINCnZjcHVzID0gMQ0KZXh0cmEgPSAiY29uc29sZT10 dHlBTUEwIHJvb3Q9L2Rldi94dmRhIHJvIg0KZGlzayA9IFsgJ3BoeTovZGV2L2xvb3AwLHh2ZGEs dycgXQ0KDQoobm9uZSk6L3Jvb3QgIyB4bCBjcmVhdGUgZG9tVS5jZmcNClBhcnNpbmcgY29uZmln IGZyb20gZG9tVS5jZmcNCg0KKFhFTikgYWxsb2NhdGVkIHhlbl9jb25zdW1lciA9IDEgZm9yIHBv cnQgPSAxLCByZW1vdGUgZG9tPTANCihYRU4pIHNlYXJjaGluZyB2aXJxIGluIDwgMzIsIDMzID4N CihYRU4pIEhWTV9QQVJBTV9WUEwwMTFfVklSUSBwYXJhbSBnZXQgdmFsPTMyDQooWEVOKSBIVk1f UEFSQU1fVlBMMDExX0NPTlNPTEVfUEZOID0gMHgzOTAwMw0KKFhFTikgSFZNX1BBUkFNX1ZQTDAx MV9DT05TT0xFX1BGTiBwYXJhbSBzZXQgdmFsPTB4MzkwMDMNCnNlcSAxMjA0IHF1ZXVlZCwgJ2Fk ZCcgJ3hlbi1iYWNrZW5kJw0KDQpWYWxpZGF0ZSBtb2R1bGUgaW5kZXgNCkNoZWNrIGlmIGxpbmsg Y29uZmlndXJhdGlvbiBuZWVkcyByZWxvYWRpbmcuDQpzZXEgMTIwNCBmb3JrZWQgbmV3IHdvcmtl ciBbMTU1Nl0NCnNlcSAxMjA0IHJ1bm5pbmcNCklNUE9SVCBidWlsdGluICdod2RiJyAvdXNyL2xp Yi91ZGV2L3J1bGVzLmQvNTAtdWRldi1kZWZhdWx0LnJ1bGVzOjE1DQpJTVBPUlQgYnVpbHRpbiAn aHdkYicgcmV0dXJuZWQgbm9uLXplcm8NClJVTiAna21vZCBsb2FkICRlbnZ7TU9EQUxJQVN9JyAv dXNyL2xpYi91ZGV2L3J1bGVzLmQvODAtZHJpdmVycy5ydWxlczo1DQpFeGVjdXRlICdsb2FkJyAn eGVuLWJhY2tlbmQ6dmJkJw0KcGFzc2VkIGRldmljZSB0byBuZXRsaW5rIG1vbml0b3IgMHhhYWFh YjM4ZGFkOTANCnNlcSAxMjA0IHByb2Nlc3NlZA0KY2xlYW51cCBpZGxlIHdvcmtlcnMNClVubG9h ZCBtb2R1bGUgaW5kZXgNClVubG9hZGVkIGxpbmsgY29uZmlndXJhdGlvbiBjb250ZXh0Lg0Kd29y a2VyIFsxNTU2XSBleGl0ZWQNCnNlcSAxMjA1IHF1ZXVlZCwgJ2FkZCcgJ3hlbi1iYWNrZW5kJw0K c2VxIDEyMDUgZm9ya2VkIG5ldyB3b3JrZXIgWzE2MTRdDQpzZXEgMTIwNSBydW5uaW5nDQpJTVBP UlQgYnVpbHRpbiAnaHdkYicgL3Vzci9saWIvdWRldi9ydWxlcy5kLzUwLXVkZXYtZGVmYXVsdC5y dWxlczoxNQ0KSU1QT1JUIGJ1aWx0aW4gJ2h3ZGInIHJldHVybmVkIG5vbi16ZXJvDQpSVU4gJ2tt b2QgbG9hZCAkZW52e01PREFMSUFTfScgL3Vzci9saWIvdWRldi9ydWxlcy5kLzgwLWRyaXZlcnMu cnVsZXM6NQ0KRXhlY3V0ZSAnbG9hZCcgJ3hlbi1iYWNrZW5kOmNvbnNvbGUnDQpwYXNzZWQgZGV2 aWNlIHRvIG5ldGxpbmsgbW9uaXRvciAweGFhYWFiMzhkYWQ5MA0Kc2VxIDEyMDUgcHJvY2Vzc2Vk DQpjbGVhbnVwIGlkbGUgd29ya2Vycw0KVW5sb2FkIG1vZHVsZSBpbmRleA0KVW5sb2FkZWQgbGlu ayBjb25maWd1cmF0aW9uIGNvbnRleHQuDQp3b3JrZXIgWzE2MTRdIGV4aXRlZA0KDQoNCihub25l KTovcm9vdCAjIHhsIGNvbnNvbGUgZ3Vlc3QNCg0KWyAgICAwLjAwMDAwMF0gQm9vdGluZyBMaW51 eCBvbiBwaHlzaWNhbCBDUFUgMHgwDQpbICAgIDAuMDAwMDAwXSBMaW51eCB2ZXJzaW9uIDQuOS4w LXJjMy0wMDI0My1nMGMxODNkOS1kaXJ0eSAoYnR1c2VyQGJsci11YnVudHUtbGluYXJvKSAoZ2Nj IHZlcnNpb24gNC45LjMgMjAxNDEwMzEgKHByZXJlbGVhc2UpIChMaW5hcm8gR0NDIDIwMTQuMTEp ICkgIzk0IFNNUCBQUkVFTVBUIE1vbiBGZWIgMTMgMTI6MTI6NDggSVNUIDIwMTcNClsgICAgMC4w MDAwMDBdIEJvb3QgQ1BVOiBBQXJjaDY0IFByb2Nlc3NvciBbNDEwZmQwMDBdDQpbICAgIDAuMDAw MDAwXSBYZW4gNC45IHN1cHBvcnQgZm91bmQNClsgICAgMC4wMDAwMDBdIGVmaTogR2V0dGluZyBF RkkgcGFyYW1ldGVycyBmcm9tIEZEVDoNClsgICAgMC4wMDAwMDBdIGVmaTogVUVGSSBub3QgZm91 bmQuDQpbICAgIDAuMDAwMDAwXSBjbWE6IFJlc2VydmVkIDE2IE1pQiBhdCAweDAwMDAwMDAwNWYw MDAwMDANClsgICAgMC4wMDAwMDBdIHBzY2k6IHByb2JpbmcgZm9yIGNvbmR1aXQgbWV0aG9kIGZy b20gRFQuDQpbICAgIDAuMDAwMDAwXSBwc2NpOiBQU0NJdjAuMiBkZXRlY3RlZCBpbiBmaXJtd2Fy ZS4NClsgICAgMC4wMDAwMDBdIHBzY2k6IFVzaW5nIHN0YW5kYXJkIFBTQ0kgdjAuMiBmdW5jdGlv biBJRHMNClsgICAgMC4wMDAwMDBdIHBzY2k6IFRydXN0ZWQgT1MgbWlncmF0aW9uIG5vdCByZXF1 aXJlZA0KWyAgICAwLjAwMDAwMF0gcGVyY3B1OiBFbWJlZGRlZCAyMSBwYWdlcy9jcHUgQGZmZmY4 MDAwMWVmZGMwMDAgczQ4MDAwIHI4MTkyIGQyOTgyNCB1ODYwMTYNClsgICAgMC4wMDAwMDBdIERl dGVjdGVkIFBJUFQgSS1jYWNoZSBvbiBDUFUwDQpbICAgIDAuMDAwMDAwXSBCdWlsdCAxIHpvbmVs aXN0cyBpbiBab25lIG9yZGVyLCBtb2JpbGl0eSBncm91cGluZyBvbi4gIFRvdGFsIHBhZ2VzOiAx MjkwMjQNClsgICAgMC4wMDAwMDBdIEtlcm5lbCBjb21tYW5kIGxpbmU6IGNvbnNvbGU9dHR5QU1B MCByb290PS9kZXYveHZkYSBybw0KWyAgICAwLjAwMDAwMF0gUElEIGhhc2ggdGFibGUgZW50cmll czogMjA0OCAob3JkZXI6IDIsIDE2Mzg0IGJ5dGVzKQ0KWyAgICAwLjAwMDAwMF0gRGVudHJ5IGNh Y2hlIGhhc2ggdGFibGUgZW50cmllczogNjU1MzYgKG9yZGVyOiA3LCA1MjQyODggYnl0ZXMpDQpb ICAgIDAuMDAwMDAwXSBJbm9kZS1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDMyNzY4IChvcmRl cjogNiwgMjYyMTQ0IGJ5dGVzKQ0KWyAgICAwLjAwMDAwMF0gTWVtb3J5OiA0NzYyODBLLzUyNDI4 OEsgYXZhaWxhYmxlICg4MzgwSyBrZXJuZWwgY29kZSwgODc2SyByd2RhdGEsIDM2NzZLIHJvZGF0 YSwgMTAyNEsgaW5pdCwgMjgzSyBic3MsIDMxNjI0SyByZXNlcnZlZCwgMTYzODRLIGNtYS1yZXNl cnZlZCkNClsgICAgMC4wMDAwMDBdIFZpcnR1YWwga2VybmVsIG1lbW9yeSBsYXlvdXQ6DQpbICAg IDAuMDAwMDAwXSAgICAgbW9kdWxlcyA6IDB4ZmZmZjAwMDAwMDAwMDAwMCAtIDB4ZmZmZjAwMDAw ODAwMDAwMCAgICggICAxMjggTUIpDQpbICAgIDAuMDAwMDAwXSAgICAgdm1hbGxvYyA6IDB4ZmZm ZjAwMDAwODAwMDAwMCAtIDB4ZmZmZjdkZmZiZmZmMDAwMCAgICgxMjkwMjIgR0IpDQpbICAgIDAu MDAwMDAwXSAgICAgICAudGV4dCA6IDB4ZmZmZjAwMDAwODA4MDAwMCAtIDB4ZmZmZjAwMDAwODhi MDAwMCAgICggIDgzODQgS0IpDQpbICAgIDAuMDAwMDAwXSAgICAgLnJvZGF0YSA6IDB4ZmZmZjAw MDAwODhiMDAwMCAtIDB4ZmZmZjAwMDAwOGM1MDAwMCAgICggIDM3MTIgS0IpDQpbICAgIDAuMDAw MDAwXSAgICAgICAuaW5pdCA6IDB4ZmZmZjAwMDAwOGM1MDAwMCAtIDB4ZmZmZjAwMDAwOGQ1MDAw MCAgICggIDEwMjQgS0IpDQpbICAgIDAuMDAwMDAwXSAgICAgICAuZGF0YSA6IDB4ZmZmZjAwMDAw OGQ1MDAwMCAtIDB4ZmZmZjAwMDAwOGUyYjIwMCAgICggICA4NzcgS0IpDQpbICAgIDAuMDAwMDAw XSAgICAgICAgLmJzcyA6IDB4ZmZmZjAwMDAwOGUyYjIwMCAtIDB4ZmZmZjAwMDAwOGU3MWVjMCAg ICggICAyODQgS0IpDQpbICAgIDAuMDAwMDAwXSAgICAgZml4ZWQgICA6IDB4ZmZmZjdkZmZmZTdm ZDAwMCAtIDB4ZmZmZjdkZmZmZWMwMDAwMCAgICggIDQxMDggS0IpDQpbICAgIDAuMDAwMDAwXSAg ICAgUENJIEkvTyA6IDB4ZmZmZjdkZmZmZWUwMDAwMCAtIDB4ZmZmZjdkZmZmZmUwMDAwMCAgICgg ICAgMTYgTUIpDQpbICAgIDAuMDAwMDAwXSAgICAgdm1lbW1hcCA6IDB4ZmZmZjdlMDAwMDAwMDAw MCAtIDB4ZmZmZjgwMDAwMDAwMDAwMCAgICggIDIwNDggR0IgbWF4aW11bSkNClsgICAgMC4wMDAw MDBdICAgICAgICAgICAgICAgMHhmZmZmN2UwMDAwMDAwMDAwIC0gMHhmZmZmN2UwMDAwODAwMDAw ICAgKCAgICAgOCBNQiBhY3R1YWwpDQpbICAgIDAuMDAwMDAwXSAgICAgbWVtb3J5ICA6IDB4ZmZm ZjgwMDAwMDAwMDAwMCAtIDB4ZmZmZjgwMDAyMDAwMDAwMCAgICggICA1MTIgTUIpDQpbICAgIDAu MDAwMDAwXSBTTFVCOiBIV2FsaWduPTY0LCBPcmRlcj0wLTMsIE1pbk9iamVjdHM9MCwgQ1BVcz0x LCBOb2Rlcz0xDQpbICAgIDAuMDAwMDAwXSBQcmVlbXB0aWJsZSBoaWVyYXJjaGljYWwgUkNVIGlt cGxlbWVudGF0aW9uLg0KWyAgICAwLjAwMDAwMF0gQnVpbGQtdGltZSBhZGp1c3RtZW50IG9mIGxl YWYgZmFub3V0IHRvIDY0Lg0KWyAgICAwLjAwMDAwMF0gUkNVIHJlc3RyaWN0aW5nIENQVXMgZnJv bSBOUl9DUFVTPTY0IHRvIG5yX2NwdV9pZHM9MS4NClsgICAgMC4wMDAwMDBdIFJDVTogQWRqdXN0 aW5nIGdlb21ldHJ5IGZvciByY3VfZmFub3V0X2xlYWY9NjQsIG5yX2NwdV9pZHM9MQ0KWyAgICAw LjAwMDAwMF0gTlJfSVJRUzo2NCBucl9pcnFzOjY0IDANClsgICAgMC4wMDAwMDBdIGFybV9hcmNo X3RpbWVyOiBBcmNoaXRlY3RlZCBjcDE1IHRpbWVyKHMpIHJ1bm5pbmcgYXQgMTAwLjAwTUh6ICh2 aXJ0KS4NClsgICAgMC4wMDAwMDBdIGNsb2Nrc291cmNlOiBhcmNoX3N5c19jb3VudGVyOiBtYXNr OiAweGZmZmZmZmZmZmZmZmZmIG1heF9jeWNsZXM6IDB4MTcxMDI0ZTdlMCwgbWF4X2lkbGVfbnM6 IDQ0MDc5NTIwNTMxNSBucw0KWyAgICAwLjAwMDAyNF0gc2NoZWRfY2xvY2s6IDU2IGJpdHMgYXQg MTAwTUh6LCByZXNvbHV0aW9uIDEwbnMsIHdyYXBzIGV2ZXJ5IDQzOTgwNDY1MTExMDBucw0KWyAg ICAwLjAwMDY2MF0gQ29uc29sZTogY29sb3VyIGR1bW15IGRldmljZSA4MHgyNQ0KWyAgICAwLjAw MDcyMF0gQ2FsaWJyYXRpbmcgZGVsYXkgbG9vcCAoc2tpcHBlZCksIHZhbHVlIGNhbGN1bGF0ZWQg dXNpbmcgdGltZXIgZnJlcXVlbmN5Li4gMjAwLjAwIEJvZ29NSVBTIChscGo9NDAwMDAwKQ0KWyAg ICAwLjAwMDc3MV0gcGlkX21heDogZGVmYXVsdDogMzI3NjggbWluaW11bTogMzAxDQpbICAgIDAu MDAxMTM4XSBTZWN1cml0eSBGcmFtZXdvcmsgaW5pdGlhbGl6ZWQNClsgICAgMC4wMDEzMzhdIE1v dW50LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMTAyNCAob3JkZXI6IDEsIDgxOTIgYnl0ZXMp DQpbICAgIDAuMDAxMzg5XSBNb3VudHBvaW50LWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMTAy NCAob3JkZXI6IDEsIDgxOTIgYnl0ZXMpDQpbICAgIDAuMDA0MzMzXSBBU0lEIGFsbG9jYXRvciBp bml0aWFsaXNlZCB3aXRoIDY1NTM2IGVudHJpZXMNClsgICAgMC4wMDU1NDVdIHhlbjpncmFudF90 YWJsZTogR3JhbnQgdGFibGVzIHVzaW5nIHZlcnNpb24gMSBsYXlvdXQNClsgICAgMC4wMDU2NTNd IEdyYW50IHRhYmxlIGluaXRpYWxpemVkDQpbICAgIDAuMDA1NzMxXSB4ZW46ZXZlbnRzOiBVc2lu ZyBGSUZPLWJhc2VkIEFCSQ0KWyAgICAwLjAwNTgxM10gWGVuOiBpbml0aWFsaXppbmcgY3B1MA0K WyAgICAwLjAzODA5M10gRUZJIHNlcnZpY2VzIHdpbGwgbm90IGJlIGF2YWlsYWJsZS4NClsgICAg MC4wNTI5MjNdIEJyb3VnaHQgdXAgMSBDUFVzDQpbICAgIDAuMDUyOTU1XSBTTVA6IFRvdGFsIG9m IDEgcHJvY2Vzc29ycyBhY3RpdmF0ZWQuDQpbICAgIDAuMDUyOTk0XSBDUFUgZmVhdHVyZXM6IGRl dGVjdGVkIGZlYXR1cmU6IFByaXZpbGVnZWQgQWNjZXNzIE5ldmVyDQpbICAgIDAuMDUzMDQwXSBD UFUgZmVhdHVyZXM6IGRldGVjdGVkIGZlYXR1cmU6IFVzZXIgQWNjZXNzIE92ZXJyaWRlDQpbICAg IDAuMDUzMDk0XSBDUFUgZmVhdHVyZXM6IGRldGVjdGVkIGZlYXR1cmU6IDMyLWJpdCBFTDAgU3Vw cG9ydA0KWyAgICAwLjA1MzI1Ml0gQ1BVOiBBbGwgQ1BVKHMpIHN0YXJ0ZWQgYXQgRUwxDQpbICAg IDAuMDUzMjk4XSBhbHRlcm5hdGl2ZXM6IHBhdGNoaW5nIGtlcm5lbCBjb2RlDQpbICAgIDAuMDU3 Njg1XSBkZXZ0bXBmczogaW5pdGlhbGl6ZWQNClsgICAgMC4wNjU2NDddIERNSSBub3QgcHJlc2Vu dCBvciBpbnZhbGlkLg0KWyAgICAwLjA2NjU0OV0gY2xvY2tzb3VyY2U6IGppZmZpZXM6IG1hc2s6 IDB4ZmZmZmZmZmYgbWF4X2N5Y2xlczogMHhmZmZmZmZmZiwgbWF4X2lkbGVfbnM6IDc2NDUwNDE3 ODUxMDAwMDAgbnMNClsgICAgMC4wNzAxMjZdIHBpbmN0cmwgY29yZTogaW5pdGlhbGl6ZWQgcGlu Y3RybCBzdWJzeXN0ZW0NClsgICAgMC4wNzU2NjJdIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBm YW1pbHkgMTYNClsgICAgMC4wOTA3NzNdIHZkc286IDIgcGFnZXMgKDEgY29kZSBAIGZmZmYwMDAw MDg4YjcwMDAsIDEgZGF0YSBAIGZmZmYwMDAwMDhkNTQwMDApDQpbICAgIDAuMDkwODI3XSBody1i cmVha3BvaW50OiBmb3VuZCAxNiBicmVha3BvaW50IGFuZCAxNiB3YXRjaHBvaW50IHJlZ2lzdGVy cy4NClsgICAgMC4wOTYzNzRdIERNQTogcHJlYWxsb2NhdGVkIDI1NiBLaUIgcG9vbCBmb3IgYXRv bWljIGFsbG9jYXRpb25zDQpbICAgIDAuMTAxMTU5XSBTZXJpYWw6IEFNQkEgUEwwMTEgVUFSVCBk cml2ZXINClsgICAgMC4xMDc5NDFdIFtERUJVR10gRFQgYmF1ZHJhdGU9MTE1MjAwDQpbICAgIDAu MTA4MDUzXSBbREVCVUddIHBsMDExX3NldHVwX3BvcnQ6IG1taW9iYXNlID0gMHgyMjAwMDAwMA0K WyAgICAwLjEwODA4Ml0gW0RFQlVHXSByZWdpc3RlcmluZyBwbDAxMSBwb3J0Li4uDQpbICAgIDAu MTA4Mjg4XSBbREVCVUddIHBsMDExX3JlcXVlc3RfcG9ydCBjYWxsZWQgd2l0aCByZXR1cm4gLTE2 DQpbICAgIDAuMTA4MzIxXSBbREVCVUddIHBsMDExX2NvbmZpZ19wb3J0IHJldHVybiAtMTYNClsg ICAgMC4xMDgzNzZdIDIyMDAwMDAwLnNic2EtcGwwMTE6IHR0eUFNQTAgYXQgTU1JTyAweDIyMDAw MDAwIChpcnEgPSA1LCBiYXNlX2JhdWQgPSAwKSBpcyBhIFNCU0ENClsgICAgMC45NTE4ODldIGNv bnNvbGUgW3R0eUFNQTBdIGVuYWJsZWQNClsgICAgMS4wNzk1MjBdIEh1Z2VUTEIgcmVnaXN0ZXJl ZCAyIE1CIHBhZ2Ugc2l6ZSwgcHJlLWFsbG9jYXRlZCAwIHBhZ2VzDQpbICAgIDEuMTI2MTUzXSBB Q1BJOiBJbnRlcnByZXRlciBkaXNhYmxlZC4NClsgICAgMS4xNTc5MDJdIHhlbjpiYWxsb29uOiBJ bml0aWFsaXNpbmcgYmFsbG9vbiBkcml2ZXINClsgICAgMS4xODYxNjldIHhlbl9iYWxsb29uOiBJ bml0aWFsaXNpbmcgYmFsbG9vbiBkcml2ZXINClsgICAgMS4yMjE0NzFdIHZnYWFyYjogbG9hZGVk DQpbICAgIDEuMjUzMDk3XSBTQ1NJIHN1YnN5c3RlbSBpbml0aWFsaXplZA0KWyAgICAxLjI2MTMx NV0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2Jmcw0KWyAgICAx LjI5MjA0NV0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBodWINClsg ICAgMS4yOTQ1MzVdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGRldmljZSBkcml2ZXIgdXNiDQpb ICAgIDEuMjk5MTQ2XSBwcHNfY29yZTogTGludXhQUFMgQVBJIHZlci4gMSByZWdpc3RlcmVkDQpb ICAgIDEuMzAxMTQ2XSBwcHNfY29yZTogU29mdHdhcmUgdmVyLiA1LjMuNiAtIENvcHlyaWdodCAy MDA1LTIwMDcgUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+DQpbICAgIDEuMzA1 NTkyXSBQVFAgY2xvY2sgc3VwcG9ydCByZWdpc3RlcmVkDQpbICAgIDEuMzA5MDc4XSBkbWk6IEZp cm13YXJlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuDQpbICAgIDEuMzEyNTU0XSBBZHZhbmNlZCBMaW51 eCBTb3VuZCBBcmNoaXRlY3R1cmUgRHJpdmVyIEluaXRpYWxpemVkLg0KWyAgICAxLjMyMTM5MF0g Y2xvY2tzb3VyY2U6IFN3aXRjaGVkIHRvIGNsb2Nrc291cmNlIGFyY2hfc3lzX2NvdW50ZXINClsg ICAgMS4zNTE1NjhdIFZGUzogRGlzayBxdW90YXMgZHF1b3RfNi42LjANClsgICAgMS4zNTQwNjNd IFZGUzogRHF1b3QtY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiA1MTIgKG9yZGVyIDAsIDQwOTYg Ynl0ZXMpDQpbICAgIDEuMzU3ODAwXSBwbnA6IFBuUCBBQ1BJOiBkaXNhYmxlZA0KWyAgICAxLjQx NDI5Nl0gTkVUOiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAyDQpbICAgIDEuNDE5MTgwXSBU Q1AgZXN0YWJsaXNoZWQgaGFzaCB0YWJsZSBlbnRyaWVzOiA0MDk2IChvcmRlcjogMywgMzI3Njgg Ynl0ZXMpDQpbICAgIDEuNDIzNDE4XSBUQ1AgYmluZCBoYXNoIHRhYmxlIGVudHJpZXM6IDQwOTYg KG9yZGVyOiA0LCA2NTUzNiBieXRlcykNClsgICAgMS40Mjc3MjVdIFRDUDogSGFzaCB0YWJsZXMg Y29uZmlndXJlZCAoZXN0YWJsaXNoZWQgNDA5NiBiaW5kIDQwOTYpDQpbICAgIDEuNDMxNDQwXSBV RFAgaGFzaCB0YWJsZSBlbnRyaWVzOiAyNTYgKG9yZGVyOiAxLCA4MTkyIGJ5dGVzKQ0KWyAgICAx LjQzNDM1Nl0gVURQLUxpdGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAyNTYgKG9yZGVyOiAxLCA4MTky IGJ5dGVzKQ0KWyAgICAxLjQzNzYzN10gTkVUOiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAx DQpbICAgIDEuNDQ4OTU2XSBSUEM6IFJlZ2lzdGVyZWQgbmFtZWQgVU5JWCBzb2NrZXQgdHJhbnNw b3J0IG1vZHVsZS4NClsgICAgMS40NzkyMjFdIFJQQzogUmVnaXN0ZXJlZCB1ZHAgdHJhbnNwb3J0 IG1vZHVsZS4NClsgICAgMS40ODIwMjFdIFJQQzogUmVnaXN0ZXJlZCB0Y3AgdHJhbnNwb3J0IG1v ZHVsZS4NClsgICAgMS40ODM0MzNdIFJQQzogUmVnaXN0ZXJlZCB0Y3AgTkZTdjQuMSBiYWNrY2hh bm5lbCB0cmFuc3BvcnQgbW9kdWxlLg0KWyAgICAxLjQ4NzkxMV0ga3ZtIFsxXTogSFlQIG1vZGUg bm90IGF2YWlsYWJsZQ0KWyAgICAxLjQ5MjgxOV0gZnV0ZXggaGFzaCB0YWJsZSBlbnRyaWVzOiAy NTYgKG9yZGVyOiAzLCAzMjc2OCBieXRlcykNClsgICAgMS41NTQ0MjJdIGF1ZGl0OiBpbml0aWFs aXppbmcgbmV0bGluayBzdWJzeXMgKGRpc2FibGVkKQ0KWyAgICAxLjU1NjUyNF0gYXVkaXQ6IHR5 cGU9MjAwMCBhdWRpdCgwLjcwODoxKTogaW5pdGlhbGl6ZWQNClsgICAgMS41NjU3NzRdIHdvcmtp bmdzZXQ6IHRpbWVzdGFtcF9iaXRzPTQ2IG1heF9vcmRlcj0xNyBidWNrZXRfb3JkZXI9MA0KWyAg ICAxLjY3MTczN10gc3F1YXNoZnM6IHZlcnNpb24gNC4wICgyMDA5LzAxLzMxKSBQaGlsbGlwIExv dWdoZXINClsgICAgMS42ODA3MTVdIE5GUzogUmVnaXN0ZXJpbmcgdGhlIGlkX3Jlc29sdmVyIGtl eSB0eXBlDQpbICAgIDEuNjg0MzUyXSBLZXkgdHlwZSBpZF9yZXNvbHZlciByZWdpc3RlcmVkDQpb ICAgIDEuNjg3MzEyXSBLZXkgdHlwZSBpZF9sZWdhY3kgcmVnaXN0ZXJlZA0KWyAgICAxLjY5MDA1 OV0gbmZzNGZpbGVsYXlvdXRfaW5pdDogTkZTdjQgRmlsZSBMYXlvdXQgRHJpdmVyIFJlZ2lzdGVy aW5nLi4uDQpbICAgIDEuNjkzNTE3XSA5cDogSW5zdGFsbGluZyB2OWZzIDlwMjAwMCBmaWxlIHN5 c3RlbSBzdXBwb3J0DQpbICAgIDEuNzExNzAxXSBCbG9jayBsYXllciBTQ1NJIGdlbmVyaWMgKGJz ZykgZHJpdmVyIHZlcnNpb24gMC40IGxvYWRlZCAobWFqb3IgMjQ3KQ0KWyAgICAxLjcxNTc1MF0g aW8gc2NoZWR1bGVyIG5vb3AgcmVnaXN0ZXJlZA0KWyAgICAxLjcxOTA0MV0gaW8gc2NoZWR1bGVy IGNmcSByZWdpc3RlcmVkIChkZWZhdWx0KQ0KWyAgICAxLjcyNTYwOV0gbGlicGh5OiBtZGlvX2Ry aXZlcl9yZWdpc3RlcjogcGh5LWJjbS1uczItcGNpDQpbICAgIDEuNzYwNDM2XSB4ZW46eGVuX2V2 dGNobjogRXZlbnQtY2hhbm5lbCBkZXZpY2UgaW5zdGFsbGVkDQpbICAgIDEuNzkxOTk4XSBTZXJp YWw6IDgyNTAvMTY1NTAgZHJpdmVyLCA0IHBvcnRzLCBJUlEgc2hhcmluZyBkaXNhYmxlZA0KWyAg ICAxLjgwNDQ3Ml0gU3VwZXJIIChIKVNDSShGKSBkcml2ZXIgaW5pdGlhbGl6ZWQNClsgICAgMS44 MDg4ODRdIG1zbV9zZXJpYWw6IGRyaXZlciBpbml0aWFsaXplZA0KWyAgICAxLjgxMjk2M10gVW5h YmxlIHRvIGRldGVjdCBjYWNoZSBoaWVyYXJjaHkgZnJvbSBEVCBmb3IgQ1BVIDANClsgICAgMS44 NzA5NTRdIGxvb3A6IG1vZHVsZSBsb2FkZWQNClsgICAgMS44NzM2MTBdIEludmFsaWQgbWF4X3F1 ZXVlcyAoNCksIHdpbGwgdXNlIGRlZmF1bHQgbWF4OiAxLg0KWyAgICAxLjg4NTUzMV0gaGlzaV9z YXM6IGRyaXZlciB2ZXJzaW9uIHYxLjYNClsgICAgMS45NDc1MTRdIGxpYnBoeTogRml4ZWQgTURJ TyBCdXM6IHByb2JlZA0KWzQyMDgwLjY5MzIxNl0geGVuLWJsa2JhY2s6IGJhY2tlbmQvdmJkLzMv NTE3MTI6IHVzaW5nIDEgcXVldWVzLCBwcm90b2NvbCAxIChhcm0tYWJpKSBwZXJzaXN0ZW50IGdy YW50cw0KWyAgICAyLjAwNDkwOV0gdHVuOiBVbml2ZXJzYWwgVFVOL1RBUCBkZXZpY2UgZHJpdmVy LCAxLjYNClsgICAgMi4wNjI0NjNdIHR1bjogKEMpIDE5OTktMjAwNCBNYXggS3Jhc255YW5za3kg PG1heGtAcXVhbGNvbW0uY29tPg0KWyAgICAyLjEyMjQ3M10gZTEwMDBlOiBJbnRlbChSKSBQUk8v MTAwMCBOZXR3b3JrIERyaXZlciAtIDMuMi42LWsNClsgICAgMi4xNTM3NjJdIGUxMDAwZTogQ29w eXJpZ2h0KGMpIDE5OTkgLSAyMDE1IEludGVsIENvcnBvcmF0aW9uLg0KWyAgICAyLjE1NzI0NF0g aWdiOiBJbnRlbChSKSBHaWdhYml0IEV0aGVybmV0IE5ldHdvcmsgRHJpdmVyIC0gdmVyc2lvbiA1 LjQuMC1rDQpbICAgIDIuMTYxNzU4XSBpZ2I6IENvcHlyaWdodCAoYykgMjAwNy0yMDE0IEludGVs IENvcnBvcmF0aW9uLg0KWyAgICAyLjE2NTE2NF0gaWdidmY6IEludGVsKFIpIEdpZ2FiaXQgVmly dHVhbCBGdW5jdGlvbiBOZXR3b3JrIERyaXZlciAtIHZlcnNpb24gMi40LjAtaw0KWyAgICAyLjE2 OTg3OF0gaWdidmY6IENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u DQpbICAgIDIuMTczMTAyXSBza3kyOiBkcml2ZXIgdmVyc2lvbiAxLjMwDQpbICAgIDIuMTc2NTMw XSBRTG9naWMvTmV0WGVuIE5ldHdvcmsgRHJpdmVyIHY0LjAuODINClsgICAgMi4xODI2MDNdIHhl bl9uZXRmcm9udDogSW5pdGlhbGlzaW5nIFhlbiB2aXJ0dWFsIGV0aGVybmV0IGRyaXZlcg0KWyAg ICAyLjE5Mzc5NF0gVkZJTyAtIFVzZXIgTGV2ZWwgbWV0YS1kcml2ZXIgdmVyc2lvbjogMC4zDQpb ICAgIDIuMjA2NDMzXSBibGtmcm9udDogeHZkYTogZmx1c2ggZGlza2NhY2hlOiBlbmFibGVkOyBw ZXJzaXN0ZW50IGdyYW50czogZW5hYmxlZDsgaW5kaXJlY3QgZGVzY3JpcHRvcnM6IGVuYWJsZWQ7 DQpbICAgIDIuMjM0Nzc3XSBlaGNpX2hjZDogVVNCIDIuMCAnRW5oYW5jZWQnIEhvc3QgQ29udHJv bGxlciAoRUhDSSkgRHJpdmVyDQpbICAgIDIuMjM0Nzg5XSBlaGNpLXBjaTogRUhDSSBQQ0kgcGxh dGZvcm0gZHJpdmVyDQpbICAgIDIuMjM1MjM1XSBlaGNpLXBsYXRmb3JtOiBFSENJIGdlbmVyaWMg cGxhdGZvcm0gZHJpdmVyDQpbICAgIDIuMjM1NjAzXSBlaGNpLWV4eW5vczogRUhDSSBFWFlOT1Mg ZHJpdmVyDQpbICAgIDIuMjM1OTUzXSBlaGNpLW1zbTogUXVhbGNvbW0gT24tQ2hpcCBFSENJIEhv c3QgQ29udHJvbGxlcg0KWyAgICAyLjIzNzk3OF0gb2hjaV9oY2Q6IFVTQiAxLjEgJ09wZW4nIEhv c3QgQ29udHJvbGxlciAoT0hDSSkgRHJpdmVyDQpbICAgIDIuMjM4MDA1XSBvaGNpLXBjaTogT0hD SSBQQ0kgcGxhdGZvcm0gZHJpdmVyDQpbICAgIDIuMjM4MzIzXSBvaGNpLXBsYXRmb3JtOiBPSENJ IGdlbmVyaWMgcGxhdGZvcm0gZHJpdmVyDQpbICAgIDIuMjM4NjY3XSBvaGNpLWV4eW5vczogT0hD SSBFWFlOT1MgZHJpdmVyDQpbICAgIDIuMjQwNDczXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBp bnRlcmZhY2UgZHJpdmVyIHVzYi1zdG9yYWdlDQpbICAgIDIuMjQ3MDM3XSBtb3VzZWRldjogUFMv MiBtb3VzZSBkZXZpY2UgY29tbW9uIGZvciBhbGwgbWljZQ0KWyAgICAyLjI1NDc0N10gaTJjIC9k ZXYgZW50cmllcyBkcml2ZXINClsgICAgMi4yNjQzOTldIHhlbl93ZHQ6IFhlbiBXYXRjaERvZyBU aW1lciBEcml2ZXIgdjAuMDENClsgICAgMi4yNjc4MzJdIHhlbl93ZHQ6IGluaXRpYWxpemVkICh0 aW1lb3V0PTYwcywgbm93YXlvdXQ9MCkNClsgICAgMi4yNjk5NDhdIHNkaGNpOiBTZWN1cmUgRGln aXRhbCBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGRyaXZlcg0KWyAgICAyLjI2OTk1N10gc2Ro Y2k6IENvcHlyaWdodChjKSBQaWVycmUgT3NzbWFuDQpbICAgIDIuMjcxMDk5XSBTeW5vcHN5cyBE ZXNpZ253YXJlIE11bHRpbWVkaWEgQ2FyZCBJbnRlcmZhY2UgRHJpdmVyDQpbICAgIDIuMjczMjk2 XSBzZGhjaS1wbHRmbTogU0RIQ0kgcGxhdGZvcm0gYW5kIE9GIGRyaXZlciBoZWxwZXINClsgICAg Mi4yNzY5MThdIGxlZHRyaWctY3B1OiByZWdpc3RlcmVkIHRvIGluZGljYXRlIGFjdGl2aXR5IG9u IENQVXMNClsgICAgMi4yODQ0MTJdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBk cml2ZXIgdXNiaGlkDQpbICAgIDIuMjg0NDIwXSB1c2JoaWQ6IFVTQiBISUQgY29yZSBkcml2ZXIN ClsgICAgMi4yOTYwNTddIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMTcNClsgICAg Mi4yOTY0MzFdIDlwbmV0OiBJbnN0YWxsaW5nIDlQMjAwMCBzdXBwb3J0DQpbICAgIDIuMjk3MDU4 XSBLZXkgdHlwZSBkbnNfcmVzb2x2ZXIgcmVnaXN0ZXJlZA0KWyAgICAyLjMwNTM3OV0gcmVnaXN0 ZXJlZCB0YXNrc3RhdHMgdmVyc2lvbiAxDQpbICAgIDIuNDA5ODY4XSBoY3Rvc3lzOiB1bmFibGUg dG8gb3BlbiBydGMgZGV2aWNlIChydGMwKQ0KWyAgICAyLjQxMjQ0N10gQUxTQSBkZXZpY2UgbGlz dDoNClsgICAgMi40MTQxMzJdICAgTm8gc291bmRjYXJkcyBmb3VuZC4NClsgICAgMi40MTUzNTJd IFtERUJVR10gdWFydF9wb3J0X3N0YXJ0dXAgZW50cnkgd2l0aCBwb3J0IHR5cGUgPSAzMg0KWyAg ICAyLjQxODMwM10gW0RFQlVHXSBzYnNhX3VhcnRfc3RhcnR1cCBjYWxsZWQuLi4NClsgICAgMi40 MTk3MzZdIFtERUJVR10gcGwwMTFfYWxsb2NhdGVfaXJxIGlycT01Li4uDQpbICAgIDIuNDIxMzIw XSBbREVCVUddIHNic2FfdWFydF9zdGFydHVwIGRvbmUuLi4NClsgICAgMi41NjgyMTBdIFtERUJV R10gdWFydF9wb3J0X3N0YXJ0dXAgZXhpdA0KWyAgICAyLjU3MDY0OV0gRVhUNC1mcyAoeHZkYSk6 IG1vdW50aW5nIGV4dDMgZmlsZSBzeXN0ZW0gdXNpbmcgdGhlIGV4dDQgc3Vic3lzdGVtDQpbICAg IDIuNjE1NjYyXSBFWFQ0LWZzICh4dmRhKTogbW91bnRlZCBmaWxlc3lzdGVtIHdpdGggb3JkZXJl ZCBkYXRhIG1vZGUuIE9wdHM6IChudWxsKQ0KWyAgICAyLjY0NDkwNl0gVkZTOiBNb3VudGVkIHJv b3QgKGV4dDMgZmlsZXN5c3RlbSkgcmVhZG9ubHkgb24gZGV2aWNlIDIwMjowLg0KWyAgICAyLjY1 Mzk0N10gZGV2dG1wZnM6IG1vdW50ZWQNClsgICAgMi42ODU1MTddIEZyZWVpbmcgdW51c2VkIGtl cm5lbCBtZW1vcnk6IDEwMjRLIChmZmZmODAwMDAwYzUwMDAwIC0gZmZmZjgwMDAwMGQ1MDAwMCkN ClsgICAgMi43NTA5MjBdIFtERUJVR10gdWFydF93YWl0X3VudGlsX3NlbnQgZW50cnkgLi4uDQpb ICAgIDIuNzgwNTM3XSBbREVCVUddIHBsMDExX3R4X2VtcHR5IGNhbGxlZCB3aXRoIHJldHVybiAx DQpbICAgIDIuNzgxOTgzXSBbREVCVUddIHVhcnRfd2FpdF91bnRpbF9zZW50IGV4aXQgLi4uDQpb ICAgIDIuNzgzNTkyXSBbREVCVUddIHVhcnRfd2FpdF91bnRpbF9zZW50IGVudHJ5IC4uLg0KWyAg ICAyLjc4NjMxM10gW0RFQlVHXSBwbDAxMV90eF9lbXB0eSBjYWxsZWQgd2l0aCByZXR1cm4gMQ0K WyAgICAyLjc4NzY3Nl0gW0RFQlVHXSB1YXJ0X3dhaXRfdW50aWxfc2VudCBleGl0IC4uLg0KKFhF TikgW0RFQlVHXVNFTmRpbmcgZ3Vlc3QgcGwwMTEgaW50ciAzMiB3aXRoIGludHI9MHgzMCwgZmxh Zz0weDgwLCBvdXRfY29ucz0xMjQ5NCwgb3V0X3Byb2Q9MTI0OTQsIGluX2NvbnM9MCwgaW5fcHJv ZD0xLCBzdGF0dXM9MC4uLg0KKFhFTikgW0RFQlVHXXZnaWNfdmNwdV9pbmplY3RfaXJxOiByYWlz ZWQNCihYRU4pIFtERUJVR11naWNfcmFpc2VfZ3Vlc3RfaXJxOiBwZW5kaW5nDQooWEVOKSBbREVC VUddaXJxIDMyIG1hcmtlZCBsciBwZW5kaW5nDQooWEVOKSBbREVCVUddc2V0dGluZyBsciAxIGZv ciBpcnEgMzINCihYRU4pIFtERUJVR11naWN2Ml91cGRhdGVfbHI6IDEsIDENCihYRU4pIFtERUJV R11TRU5kaW5nIGd1ZXN0IHBsMDExIGludHIgMzIgd2l0aCBpbnRyPTB4MzAsIGZsYWc9MHg4MCwg b3V0X2NvbnM9MTI0OTQsIG91dF9wcm9kPTEyNDk0LCBpbl9jb25zPTAsIGluX3Byb2Q9Miwgc3Rh dHVzPTAuLi4NCihYRU4pIFtERUJVR112Z2ljX3ZjcHVfaW5qZWN0X2lycTogaW5mbGlnaHQNCg== --001a113e3a80da4de1054865886f Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== --001a113e3a80da4de1054865886f--