From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3759629492980525740==" MIME-Version: 1.0 From: Sreeni (Sreenivasa) Busam (Stellus) Subject: Re: [SPDK] Request for clarification of NVMeoF test configuration and setup in initiator and target. Date: Tue, 12 Dec 2017 19:05:04 +0000 Message-ID: <84bdb955f065409e82c661aabf32d9fc@stellus.com> In-Reply-To: c1b4c015b6f04f03a979ce49e44d0fba@stellus.com List-ID: To: spdk@lists.01.org --===============3759629492980525740== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Here is some more information regarding the problem I am facing. I have configured the target for 2 subsystems with NVMe devices. Here are t= he errors I am getting from starting the target application. DPDK EAL parameters: nvmf -c 0x1 --file-prefix=3Dspdk_pid6390 ] EAL: Detected 32 lcore(s) EAL: No free hugepages reported in hugepages-1048576kB EAL: Probing VFIO support... Total cores available: 1 Occupied cpu socket mask is 0x1 reactor.c: 364:_spdk_reactor_run: *NOTICE*: Reactor started on core 0 on so= cket 0 copy_engine_ioat.c: 306:copy_engine_ioat_init: *NOTICE*: Ioat Copy Engine O= ffload Enabled bdev.c: 522:spdk_bdev_initialize: *ERROR*: create rbuf small pool failed subsystem.c: 122:spdk_subsystem_init_next: *ERROR*: Init subsystem bdev fai= led My configuration file in the target [Subsystem1] NQN nqn.2017-06.io.spdk-MPcnode1 Core 0 Mode Direct #SN SPDK000000000000015 Listen RDMA 10.0.0.1:11345 AllowAnyHost Yes NVMe 0000:84:00.0 Please let me know if you have any suggestions how to fix it. Thanks for your ideas, Sreeni From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Sreeni (Sreeni= vasa) Busam (Stellus) Sent: Monday, December 11, 2017 10:13 AM To: Storage Performance Development Kit Subject: [SPDK] Request for clarification of NVMeoF test configuration and = setup in initiator and target. Hi Ben, Lee, John and Teng, I am looking at the set of instructions from one of the email discussion re= garding setting up a NVMeoF setup for running SPDK test. I understood some = of the steps, have are few more questions, for which I need some informatio= n. Please take look and reply when you get a chance. I have attached the st= eps from the email for your reference. 1. NQN nqn.2016-06.io.spdk:cnode1 How was the nqn configured? Is it just node name of the target or what comm= and was used to configure? What does cnode1 mean? How is it used? I am trying to understand how it is = relevant to initiator. 2. Host nqn.2016-06.io.spdk:init It looks like nqn and host name the same. Please confirm. 3. "3) The nvme-cli tool is capable of configuring the Linux kernel's = built-in NVMe-oF initiator to connect to a target. You simply type somethin= g like "nvme connect -t rdma -a -s -n ", where the values = match the ones you put into the SPDK NVMe-oF target's configuration file. T= he initiator will then connect and a block device will appear on the initia= tor system at /dev/nvmeX." 4. What application is used to test the device /dev/nvmeX which appears on = the initiator when the configuration is successful? Can I use the fio to test the NVMeoF setup as per this configuration? Pleas= e tell any specific changes I need to make to fio configuration file. 5. In the similar way to local SSD NVME API's spdk_nvme_ns_cmd_read() and s= pdk_nvme_ns_write() used in hello_world program, can you please explain wha= t are the API's used in the target application to send the commands to the = underlying device? Please give some pointers how the NVME commands are sent from initiator to = target using the RDMA protocol. Any help would be greatly appreciated? Thanks a lot for your help, Sreeni --===============3759629492980525740== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+CjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPgo8c3R5bGU+ PCEtLQovKiBGb250IERlZmluaXRpb25zICovCkBmb250LWZhY2UKCXtmb250LWZhbWlseToiQ2Ft YnJpYSBNYXRoIjsKCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7fQpAZm9udC1mYWNlCgl7 Zm9udC1mYW1pbHk6Ik1hbGd1biBHb3RoaWMiOwoJcGFub3NlLTE6MiAxMSA1IDMgMiAwIDAgMiAw IDQ7fQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsKCXBhbm9zZS0xOjIgMTUgNSAy IDIgMiA0IDMgMiA0O30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OiJcQE1hbGd1biBHb3RoaWMi OwoJcGFub3NlLTE6MiAxMSA1IDMgMiAwIDAgMiAwIDQ7fQovKiBTdHlsZSBEZWZpbml0aW9ucyAq LwpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCgl7bWFyZ2luOjBpbjsK CW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZvbnQtc2l6ZToxMS4wcHQ7Cglmb250LWZhbWlseToi Q2FsaWJyaSIsc2Fucy1zZXJpZjt9CmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsKCXttc28tc3R5 bGUtcHJpb3JpdHk6OTk7Cgljb2xvcjojMDU2M0MxOwoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu ZTt9CmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZAoJe21zby1zdHlsZS1wcmlv cml0eTo5OTsKCWNvbG9yOiM5NTRGNzI7Cgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30Kc3Bh bi5FbWFpbFN0eWxlMTcKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbDsKCWZvbnQtZmFtaWx5OiJD YWxpYnJpIixzYW5zLXNlcmlmOwoJY29sb3I6d2luZG93dGV4dDt9CnNwYW4uRW1haWxTdHlsZTE4 Cgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7Cglmb250LWZhbWlseToiQ2FsaWJyaSIs c2Fucy1zZXJpZjsKCWNvbG9yOiMxRjQ5N0Q7fQouTXNvQ2hwRGVmYXVsdAoJe21zby1zdHlsZS10 eXBlOmV4cG9ydC1vbmx5OwoJZm9udC1zaXplOjEwLjBwdDt9CkBwYWdlIFdvcmRTZWN0aW9uMQoJ e3NpemU6OC41aW4gMTEuMGluOwoJbWFyZ2luOjEuMGluIDEuMGluIDEuMGluIDEuMGluO30KZGl2 LldvcmRTZWN0aW9uMQoJe3BhZ2U6V29yZFNlY3Rpb24xO30KLS0+PC9zdHlsZT48IS0tW2lmIGd0 ZSBtc28gOV0+PHhtbD4KPG86c2hhcGVkZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAy NiIgLz4KPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+CjxvOnNoYXBl bGF5b3V0IHY6ZXh0PSJlZGl0Ij4KPG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+Cjwv bzpzaGFwZWxheW91dD48L3htbD48IVtlbmRpZl0tLT4KPC9oZWFkPgo8Ym9keSBsYW5nPSJFTi1V UyIgbGluaz0iIzA1NjNDMSIgdmxpbms9IiM5NTRGNzIiPgo8ZGl2IGNsYXNzPSJXb3JkU2VjdGlv bjEiPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+SGVy ZSBpcyBzb21lIG1vcmUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBwcm9ibGVtIEkgYW0gZmFj aW5nLgo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0 eWxlPSJjb2xvcjojMUY0OTdEIj5JIGhhdmUgY29uZmlndXJlZCB0aGUgdGFyZ2V0IGZvciAyIHN1 YnN5c3RlbXMgd2l0aCBOVk1lIGRldmljZXMuIEhlcmUgYXJlIHRoZSBlcnJvcnMgSSBhbSBnZXR0 aW5nIGZyb20gc3RhcnRpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbi4KPG86cD48L286cD48L3Nw YW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+ RFBESyBFQUwgcGFyYW1ldGVyczogbnZtZiAtYyAweDEgLS1maWxlLXByZWZpeD1zcGRrX3BpZDYz OTAgXTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5 bGU9ImNvbG9yOiMxRjQ5N0QiPkVBTDogRGV0ZWN0ZWQgMzIgbGNvcmUocyk8bzpwPjwvbzpwPjwv c3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdE Ij5FQUw6IE5vIGZyZWUgaHVnZXBhZ2VzIHJlcG9ydGVkIGluIGh1Z2VwYWdlcy0xMDQ4NTc2a0I8 bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJj b2xvcjojMUY0OTdEIj5FQUw6IFByb2JpbmcgVkZJTyBzdXBwb3J0Li4uPG86cD48L286cD48L3Nw YW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+ VG90YWwgY29yZXMgYXZhaWxhYmxlOiAxPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0i TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+T2NjdXBpZWQgY3B1IHNvY2tl dCBtYXNrIGlzIDB4MTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPnJlYWN0b3IuYzogMzY0Ol9zcGRrX3JlYWN0b3Jf cnVuOiAqTk9USUNFKjogUmVhY3RvciBzdGFydGVkIG9uIGNvcmUgMCBvbiBzb2NrZXQgMDxvOnA+ PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9y OiMxRjQ5N0QiPmNvcHlfZW5naW5lX2lvYXQuYzogMzA2OmNvcHlfZW5naW5lX2lvYXRfaW5pdDog Kk5PVElDRSo6IElvYXQgQ29weSBFbmdpbmUgT2ZmbG9hZCBFbmFibGVkPG86cD48L286cD48L3Nw YW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+ YmRldi5jOiA1MjI6c3Bka19iZGV2X2luaXRpYWxpemU6ICpFUlJPUio6IGNyZWF0ZSByYnVmIHNt YWxsIHBvb2wgZmFpbGVkPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+c3Vic3lzdGVtLmM6IDEyMjpzcGRrX3N1YnN5 c3RlbV9pbml0X25leHQ6ICpFUlJPUio6IEluaXQgc3Vic3lzdGVtIGJkZXYgZmFpbGVkPG86cD48 L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6 IzFGNDk3RCI+TXkgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZSB0YXJnZXQ8bzpwPjwvbzpwPjwv c3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdE Ij5bU3Vic3lzdGVtMV08bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj4mbmJzcDsgTlFOIG5xbi4yMDE3LTA2LmlvLnNw ZGstTVBjbm9kZTE8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj4mbmJzcDsgQ29yZSAwPG86cD48L286cD48L3NwYW4+ PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+Jm5i c3A7IE1vZGUgRGlyZWN0PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+Jm5ic3A7ICNTTiZuYnNwOyBTUERLMDAwMDAw MDAwMDAwMDE1PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBzdHlsZT0iY29sb3I6IzFGNDk3RCI+Jm5ic3A7IExpc3RlbiBSRE1BIDEwLjAuMC4xOjExMzQ1 PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i Y29sb3I6IzFGNDk3RCI+Jm5ic3A7IEFsbG93QW55SG9zdCBZZXM8bzpwPjwvbzpwPjwvc3Bhbj48 L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWluZGVudDo0LjhwdCI+PHNwYW4g c3R5bGU9ImNvbG9yOiMxRjQ5N0QiPk5WTWUgMDAwMDo4NDowMC4wPG86cD48L286cD48L3NwYW4+ PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1pbmRlbnQ6NC44cHQiPjxzcGFu IHN0eWxlPSJjb2xvcjojMUY0OTdEIj5QbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91IGhhdmUgYW55 IHN1Z2dlc3Rpb25zIGhvdyB0byBmaXggaXQuPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1pbmRlbnQ6NC44cHQiPjxzcGFuIHN0eWxlPSJjb2xv cjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3Jt YWwiIHN0eWxlPSJ0ZXh0LWluZGVudDo0LjhwdCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0Qi PlRoYW5rcyBmb3IgeW91ciBpZGVhcyw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWluZGVudDo0LjhwdCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMx RjQ5N0QiPlNyZWVuaTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PGEgbmFtZT0iX01haWxFbmRDb21wb3NlIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+PG86 cD4mbmJzcDs8L286cD48L3NwYW4+PC9hPjwvcD4KPGRpdj4KPGRpdiBzdHlsZT0iYm9yZGVyOm5v bmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAw aW4iPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj5Gcm9tOjwvYj4gU1BESyBbbWFpbHRvOnNwZGst Ym91bmNlc0BsaXN0cy4wMS5vcmddIDxiPk9uIEJlaGFsZiBPZgo8L2I+U3JlZW5pIChTcmVlbml2 YXNhKSBCdXNhbSAoU3RlbGx1cyk8YnI+CjxiPlNlbnQ6PC9iPiBNb25kYXksIERlY2VtYmVyIDEx LCAyMDE3IDEwOjEzIEFNPGJyPgo8Yj5Ubzo8L2I+IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxv cG1lbnQgS2l0ICZsdDtzcGRrQGxpc3RzLjAxLm9yZyZndDs8YnI+CjxiPlN1YmplY3Q6PC9iPiBb U1BES10gUmVxdWVzdCBmb3IgY2xhcmlmaWNhdGlvbiBvZiBOVk1lb0YgdGVzdCBjb25maWd1cmF0 aW9uIGFuZCBzZXR1cCBpbiBpbml0aWF0b3IgYW5kIHRhcmdldC48bzpwPjwvbzpwPjwvcD4KPC9k aXY+CjwvZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+SGkgQmVuLCBMZWUsIEpvaG4gYW5kIFRlbmcsPG86cD48L286cD48 L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPgo8cCBjbGFzcz0i TXNvTm9ybWFsIj5JIGFtIGxvb2tpbmcgYXQgdGhlIHNldCBvZiBpbnN0cnVjdGlvbnMgZnJvbSBv bmUgb2YgdGhlIGVtYWlsIGRpc2N1c3Npb24gcmVnYXJkaW5nIHNldHRpbmcgdXAgYSBOVk1lb0Yg c2V0dXAgZm9yIHJ1bm5pbmcgU1BESyB0ZXN0LiBJIHVuZGVyc3Rvb2Qgc29tZSBvZiB0aGUgc3Rl cHMsIGhhdmUgYXJlIGZldyBtb3JlIHF1ZXN0aW9ucywgZm9yIHdoaWNoIEkgbmVlZCBzb21lIGlu Zm9ybWF0aW9uLiBQbGVhc2UgdGFrZQogbG9vayBhbmQgcmVwbHkgd2hlbiB5b3UgZ2V0IGEgY2hh bmNlLiBJIGhhdmUgYXR0YWNoZWQgdGhlIHN0ZXBzIGZyb20gdGhlIGVtYWlsIGZvciB5b3VyIHJl ZmVyZW5jZS48bzpwPjwvbzpwPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+MS4gTlFOIG5xbi4y MDE2LTA2LmlvLnNwZGs6Y25vZGUxPG86cD48L286cD48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwi PkhvdyB3YXMgdGhlIG5xbiBjb25maWd1cmVkPyBJcyBpdCBqdXN0IG5vZGUgbmFtZSBvZiB0aGUg dGFyZ2V0IG9yIHdoYXQgY29tbWFuZCB3YXMgdXNlZCB0byBjb25maWd1cmU/CjxvOnA+PC9vOnA+ PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5XaGF0IGRvZXMgY25vZGUxIG1lYW4/IEhvdyBpcyBp dCB1c2VkPyBJIGFtIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBpdCBpcyByZWxldmFudCB0byBp bml0aWF0b3IuPG86cD48L286cD48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjIuIEhvc3QgbnFu LjIwMTYtMDYuaW8uc3Bkazppbml0PG86cD48L286cD48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwi Pkl0IGxvb2tzIGxpa2UgbnFuIGFuZCBob3N0IG5hbWUgdGhlIHNhbWUuIFBsZWFzZSBjb25maXJt LiA8bzpwPgo8L286cD48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjMuICYjODIyMDszKSZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDtUaGUgbnZtZS1jbGkgdG9vbCBpcyBjYXBhYmxlIG9m IGNvbmZpZ3VyaW5nIHRoZSBMaW51eCBrZXJuZWwmIzgyMTc7cyBidWlsdC1pbiBOVk1lLW9GIGlu aXRpYXRvciB0byBjb25uZWN0IHRvIGEgdGFyZ2V0LiBZb3Ugc2ltcGx5IHR5cGUgc29tZXRoaW5n IGxpa2UgJiM4MjIwO252bWUgY29ubmVjdCAmIzgyMTE7dCByZG1hICYjODIxMTthICZsdDtpcCZn dDsgLXMgJmx0O3BvcnQmZ3Q7IC1uICZsdDtucW4mZ3Q7JiM4MjIxOywgd2hlcmUgdGhlIHZhbHVl cyBtYXRjaCB0aGUgb25lcwogeW91IHB1dCBpbnRvIHRoZSBTUERLIE5WTWUtb0YgdGFyZ2V0JiM4 MjE3O3MgY29uZmlndXJhdGlvbiBmaWxlLiBUaGUgaW5pdGlhdG9yIHdpbGwgdGhlbiBjb25uZWN0 IGFuZCBhIGJsb2NrIGRldmljZSB3aWxsIGFwcGVhciBvbiB0aGUgaW5pdGlhdG9yIHN5c3RlbSBh dCAvZGV2L252bWVYLiYjODIyMTs8bzpwPjwvbzpwPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ NC4gV2hhdCBhcHBsaWNhdGlvbiBpcyB1c2VkIHRvIHRlc3QgdGhlIGRldmljZSAvZGV2L252bWVY IHdoaWNoIGFwcGVhcnMgb24gdGhlIGluaXRpYXRvciB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGlz IHN1Y2Nlc3NmdWw/CjxvOnA+PC9vOnA+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5DYW4gSSB1 c2UgdGhlIGZpbyB0byB0ZXN0IHRoZSBOVk1lb0Ygc2V0dXAgYXMgcGVyIHRoaXMgY29uZmlndXJh dGlvbj8gUGxlYXNlIHRlbGwgYW55IHNwZWNpZmljIGNoYW5nZXMgSSBuZWVkIHRvIG1ha2UgdG8g ZmlvIGNvbmZpZ3VyYXRpb24gZmlsZS48bzpwPjwvbzpwPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1h bCI+NS4gSW4gdGhlIHNpbWlsYXIgd2F5IHRvIGxvY2FsIFNTRCBOVk1FIEFQSSYjODIxNztzIHNw ZGtfbnZtZV9uc19jbWRfcmVhZCgpIGFuZCBzcGRrX252bWVfbnNfd3JpdGUoKSB1c2VkIGluIGhl bGxvX3dvcmxkIHByb2dyYW0sIGNhbiB5b3UgcGxlYXNlIGV4cGxhaW4gd2hhdCBhcmUgdGhlIEFQ SSYjODIxNztzIHVzZWQgaW4gdGhlIHRhcmdldCBhcHBsaWNhdGlvbiB0byBzZW5kIHRoZSBjb21t YW5kcyB0byB0aGUgdW5kZXJseWluZwogZGV2aWNlPyA8bzpwPjwvbzpwPjwvcD4KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+UGxlYXNlIGdpdmUgc29tZSBwb2ludGVycyBob3cgdGhlIE5WTUUgY29tbWFu ZHMgYXJlIHNlbnQgZnJvbSBpbml0aWF0b3IgdG8gdGFyZ2V0IHVzaW5nIHRoZSBSRE1BIHByb3Rv Y29sLjxvOnA+PC9vOnA+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5BbnkgaGVscCB3b3VsZCBi ZSBncmVhdGx5IGFwcHJlY2lhdGVkPyA8bzpwPjwvbzpwPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PG86cD4mbmJzcDs8L286cD48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPlRoYW5rcyBhIGxv dCBmb3IgeW91ciBoZWxwLDxvOnA+PC9vOnA+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5TcmVl bmk8bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo= --===============3759629492980525740==--