From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3955289279120512467==" MIME-Version: 1.0 From: Sreeni (Sreenivasa) Busam (Stellus) Subject: Re: [SPDK] Regarding NVMe driver command queue depth. Date: Thu, 16 Nov 2017 23:57:48 +0000 Message-ID: In-Reply-To: 67acc8057cd24c0f8d67926f9f39967d@stellus.com List-ID: To: spdk@lists.01.org --===============3955289279120512467== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I have been trying to test the number of commands that can be given to the = device at a time. I verified that a maximum of 254 commands could be issued= for a qpair. So I created a 2nd qpair for ns_entry and issued the I/O comm= ands, it was failing in the first command itself. Is it invalid to create 2= qpair for the same ns_entry and send command to device? The qpair is succe= ssfully created, but I could not submit command. I modified the hello_world program to test this and attached the related co= de. Please take a look and let me know what is the problem. 0x000000000040bae2 in nvme_allocate_request (qpair=3D0x0, payload=3D0x7fffa4726ba0, payload_size=3D512, cb_fn=3D0x4041a4 , cb_arg=3D0x7b4270) at nvme.c:85 #1 0x000000000040996c in _nvme_ns_cmd_rw (ns=3D0x100ff8ee40, qpair=3D0x0, payload=3D0x7fffa4726ba0, payload_offset=3D0, md_offset=3D0, lba=3D0, l= ba_count=3D1, cb_fn=3D0x4041a4 , cb_arg=3D0x7b4270, opc=3D1, io_flags= =3D0, apptag_mask=3D0, apptag=3D0, check_sgl=3Dtrue) at nvme_ns_cmd.c:440 #2 0x0000000000409fea in spdk_nvme_ns_cmd_write (ns=3D0x100ff8ee40, qpair= =3D0x0, buffer=3D0x10000f7000, lba=3D0, lba_count=3D1, cb_fn=3D0x4041a4 , cb_arg=3D0x7b4270, io_flags=3D0) at nvme_ns_cmd.c:649 #3 0x000000000040439d in stellus_spdk_nvme_ns_cmd_write (ns_entry=3D0x7b13= c0, qpair=3D0x0, buffer=3D0x10000f7000, lba=3D0, lba_count=3D1, cb_fn=3D0x40420d , cb_arg=3D0x7b4270, ioflags=3D0) at iost= at.c:233 #4 0x00000000004046b8 in test_io_func1 () at iostat.c:342 #5 0x0000000000404a94 in main (argc=3D1, argv=3D0x7fffa4726db8) at iostat.= c:503 (gdb) f 3 #3 0x000000000040439d in stellus_spdk_nvme_ns_cmd_write (ns_entry=3D0x7b13= c0, qpair=3D0x0, buffer=3D0x10000f7000, lba=3D0, lba_count=3D1, cb_fn=3D0x40420d , cb_arg=3D0x7b4270, ioflags=3D0) at iost= at.c:233 233 rc =3D spdk_nvme_ns_cmd_write(ns_entry->ns, qpair, = buffer, (gdb) p qpair $1 =3D (struct spdk_nvme_qpair *) 0x0 If any of you get time, please look at it. Thank you for your suggestion. From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Sreeni (Sreeni= vasa) Busam (Stellus) Sent: Thursday, November 16, 2017 11:26 AM To: spdk(a)lists.01.org Subject: [SPDK] Regarding NVMe driver command queue depth. Hi Paul, I was reading about the driver from SPDK site, and interested in understand= ing the queue depth for a device. "The specification allows for thousands, but most devices support between 3= 2 and 128. The specification makes no guarantees about the performance avai= lable from each queue pair, but in practice the full performance of a devic= e is almost always achievable using just one queue pair. For example, if a = device claims to be capable of 450,000 I/O per second at queue depth 128, i= n practice it does not matter if the driver is using 4 queue pairs each wit= h queue depth 32, or a single queue pair with queue depth 128" When queue depth is mentioned for device, is it the number of commands that= can be issued from application to controller, and outstanding at any time? Is there NVMe driver API to set the queue depth? Is my understanding correc= t if I think that the size of queue is at firmware level? Please give some detail about the parameter. Thanks, Sreeni --===============3955289279120512467== 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+SSBo YXZlIGJlZW4gdHJ5aW5nIHRvIHRlc3QgdGhlIG51bWJlciBvZiBjb21tYW5kcyB0aGF0IGNhbiBi ZSBnaXZlbiB0byB0aGUgZGV2aWNlIGF0IGEgdGltZS4gSSB2ZXJpZmllZCB0aGF0IGEgbWF4aW11 bSBvZiAyNTQgY29tbWFuZHMgY291bGQgYmUgaXNzdWVkIGZvciBhIHFwYWlyLiBTbyBJIGNyZWF0 ZWQgYSAyPHN1cD5uZDwvc3VwPiBxcGFpciBmb3IgbnNfZW50cnkKIGFuZCBpc3N1ZWQgdGhlIEkv TyBjb21tYW5kcywgaXQgd2FzIGZhaWxpbmcgaW4gdGhlIGZpcnN0IGNvbW1hbmQgaXRzZWxmLiBJ cyBpdCBpbnZhbGlkIHRvIGNyZWF0ZSAyIHFwYWlyIGZvciB0aGUgc2FtZSBuc19lbnRyeSBhbmQg c2VuZCBjb21tYW5kIHRvIGRldmljZT8gVGhlIHFwYWlyIGlzIHN1Y2Nlc3NmdWxseSBjcmVhdGVk LCBidXQgSSBjb3VsZCBub3Qgc3VibWl0IGNvbW1hbmQuPG86cD48L286cD48L3NwYW4+PC9wPgo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+SSBtb2RpZmll ZCB0aGUgaGVsbG9fd29ybGQgcHJvZ3JhbSB0byB0ZXN0IHRoaXMgYW5kIGF0dGFjaGVkIHRoZSBy ZWxhdGVkIGNvZGUuICZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPlBsZWFzZSB0YWtlIGEgbG9vayBhbmQg bGV0IG1lIGtub3cgd2hhdCBpcyB0aGUgcHJvYmxlbS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Cjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNw OzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9z cGFjZTpub25lIj48YSBuYW1lPSJfTWFpbEVuZENvbXBvc2UiPjxzcGFuIHN0eWxlPSJmb250LWZh bWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+MHgwMDAwMDAwMDAwNDBiYWUyIGluIG52bWVf YWxsb2NhdGVfcmVxdWVzdCAocXBhaXI9MHgwLDxvOnA+PC9vOnA+PC9zcGFuPjwvYT48L3A+Cjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHls ZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNw OyBwYXlsb2FkPTB4N2ZmZmE0NzI2YmEwLCBwYXlsb2FkX3NpemU9NTEyLCBjYl9mbj0weDQwNDFh NCAmbHQ7d3JpdGVfY29tcGxldGUmZ3Q7LDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250 LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNiX2Fy Zz0weDdiNDI3MCkgYXQgbnZtZS5jOjg1PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQt ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4jMSZuYnNwOyAweDAwMDAwMDAwMDA0MDk5 NmMgaW4gX252bWVfbnNfY21kX3J3IChucz0weDEwMGZmOGVlNDAsIHFwYWlyPTB4MCw8bzpwPjwv bzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9zcGFj ZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsi PiZuYnNwOyZuYnNwOyZuYnNwOyBwYXlsb2FkPTB4N2ZmZmE0NzI2YmEwLCBwYXlsb2FkX29mZnNl dD0wLCBtZF9vZmZzZXQ9MCwgbGJhPTAsIGxiYV9jb3VudD0xLDxvOnA+PC9vOnA+PC9zcGFuPjwv cD4KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFu IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7IGNiX2ZuPTB4NDA0MWE0ICZsdDt3cml0ZV9jb21wbGV0ZSZndDssIGNiX2FyZz0weDdi NDI3MCwgb3BjPTEsIGlvX2ZsYWdzPTAsPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQt ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsgYXBwdGFn X21hc2s9MCwgYXBwdGFnPTAsIGNoZWNrX3NnbD10cnVlKSBhdCBudm1lX25zX2NtZC5jOjQ0MDxv OnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0 b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZx dW90OyI+IzImbmJzcDsgMHgwMDAwMDAwMDAwNDA5ZmVhIGluIHNwZGtfbnZtZV9uc19jbWRfd3Jp dGUgKG5zPTB4MTAwZmY4ZWU0MCwgcXBhaXI9MHgwLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAg Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxl PSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7 IGJ1ZmZlcj0weDEwMDAwZjcwMDAsIGxiYT0wLCBsYmFfY291bnQ9MSwgY2JfZm49MHg0MDQxYTQg Jmx0O3dyaXRlX2NvbXBsZXRlJmd0Oyw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1m YW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyBjYl9hcmc9 MHg3YjQyNzAsIGlvX2ZsYWdzPTApIGF0IG52bWVfbnNfY21kLmM6NjQ5PG86cD48L286cD48L3Nw YW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+ PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4jMyZuYnNw OyAweDAwMDAwMDAwMDA0MDQzOWQgaW4gc3RlbGx1c19zcGRrX252bWVfbnNfY21kX3dyaXRlIChu c19lbnRyeT0weDdiMTNjMCw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3Jt YWwiIHN0eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6 JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyBxcGFpcj0weDAsIGJ1 ZmZlcj0weDEwMDAwZjcwMDAsIGxiYT0wLCBsYmFfY291bnQ9MSw8bzpwPjwvbzpwPjwvc3Bhbj48 L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25lIj48c3Bh biBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNw OyZuYnNwOyBjYl9mbj0weDQwNDIwZCAmbHQ7aW9fY29tcGxldGUmZ3Q7LCBjYl9hcmc9MHg3YjQy NzAsIGlvZmxhZ3M9MCkgYXQgaW9zdGF0LmM6MjMzPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBj bGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9 ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4jNCZuYnNwOyAweDAwMDAwMDAw MDA0MDQ2YjggaW4gdGVzdF9pb19mdW5jMSAoKSBhdCBpb3N0YXQuYzozNDI8bzpwPjwvbzpwPjwv c3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25l Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiM1Jm5i c3A7IDB4MDAwMDAwMDAwMDQwNGE5NCBpbiBtYWluIChhcmdjPTEsIGFyZ3Y9MHg3ZmZmYTQ3MjZk YjgpIGF0IGlvc3RhdC5jOjUwMzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05v cm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWls eTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+KGdkYikgZiAzPG86cD48L286cD48L3NwYW4+PC9w Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4g c3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4jMyZuYnNwOyAweDAw MDAwMDAwMDA0MDQzOWQgaW4gc3RlbGx1c19zcGRrX252bWVfbnNfY21kX3dyaXRlIChuc19lbnRy eT0weDdiMTNjMCw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7 Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyBxcGFpcj0weDAsIGJ1ZmZlcj0w eDEwMDAwZjcwMDAsIGxiYT0wLCBsYmFfY291bnQ9MSw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+Cjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHls ZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNw OyBjYl9mbj0weDQwNDIwZCAmbHQ7aW9fY29tcGxldGUmZ3Q7LCBjYl9hcmc9MHg3YjQyNzAsIGlv ZmxhZ3M9MCkgYXQgaW9zdGF0LmM6MjMzPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQt ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4yMzMmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmMgPSBzcGRrX252bWVf bnNfY21kX3dyaXRlKG5zX2VudHJ5LSZndDtucywgcXBhaXIsIGJ1ZmZlciw8bzpwPjwvbzpwPjwv c3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25l Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPihnZGIp IHAgcXBhaXI8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+JDEgPSAoc3RydWN0 IHNwZGtfbnZtZV9xcGFpciAqKSAweDA8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwvbzpwPjwv c3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdE Ij5JZiBhbnkgb2YgeW91IGdldCB0aW1lLCBwbGVhc2UgbG9vayBhdCBpdC4gVGhhbmsgeW91IGZv ciB5b3VyIHN1Z2dlc3Rpb24uCjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFu PjwvcD4KPGRpdj4KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFF MUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPgo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48Yj5Gcm9tOjwvYj4gU1BESyBbbWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmddIDxi Pk9uIEJlaGFsZiBPZgo8L2I+U3JlZW5pIChTcmVlbml2YXNhKSBCdXNhbSAoU3RlbGx1cyk8YnI+ CjxiPlNlbnQ6PC9iPiBUaHVyc2RheSwgTm92ZW1iZXIgMTYsIDIwMTcgMTE6MjYgQU08YnI+Cjxi PlRvOjwvYj4gc3Bka0BsaXN0cy4wMS5vcmc8YnI+CjxiPlN1YmplY3Q6PC9iPiBbU1BES10gUmVn YXJkaW5nIE5WTWUgZHJpdmVyIGNvbW1hbmQgcXVldWUgZGVwdGguPG86cD48L286cD48L3A+Cjwv ZGl2Pgo8L2Rpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+Cjxw IGNsYXNzPSJNc29Ob3JtYWwiPkhpIFBhdWwsPG86cD48L286cD48L3A+CjxwIGNsYXNzPSJNc29O b3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JIHdhcyBy ZWFkaW5nIGFib3V0IHRoZSBkcml2ZXIgZnJvbSBTUERLIHNpdGUsIGFuZCBpbnRlcmVzdGVkIGlu IHVuZGVyc3RhbmRpbmcgdGhlIHF1ZXVlIGRlcHRoIGZvciBhIGRldmljZS48bzpwPjwvbzpwPjwv cD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMy41cHQ7Zm9u dC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMzMzMzMzO2JhY2tn cm91bmQ6d2hpdGUiPiYjODIyMDtUaGUgc3BlY2lmaWNhdGlvbiBhbGxvd3MgZm9yIHRob3VzYW5k cywgYnV0IG1vc3QgZGV2aWNlcyBzdXBwb3J0IGJldHdlZW4gMzIgYW5kIDEyOC4gVGhlIHNwZWNp ZmljYXRpb24gbWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCB0aGUgcGVyZm9ybWFuY2UKIGF2YWls YWJsZSBmcm9tIGVhY2ggcXVldWUgcGFpciwgYnV0IGluIHByYWN0aWNlIHRoZSBmdWxsIHBlcmZv cm1hbmNlIG9mIGEgZGV2aWNlIGlzIGFsbW9zdCBhbHdheXMgYWNoaWV2YWJsZSB1c2luZyBqdXN0 IG9uZSBxdWV1ZSBwYWlyLiBGb3IgZXhhbXBsZSwgaWYgYSBkZXZpY2UgY2xhaW1zIHRvIGJlIGNh cGFibGUgb2YgNDUwLDAwMCBJL08gcGVyIHNlY29uZCBhdCBxdWV1ZSBkZXB0aCAxMjgsIGluIHBy YWN0aWNlIGl0IGRvZXMgbm90IG1hdHRlcgogaWYgdGhlIGRyaXZlciBpcyB1c2luZyA0IHF1ZXVl IHBhaXJzIGVhY2ggd2l0aCBxdWV1ZSBkZXB0aCAzMiwgb3IgYSBzaW5nbGUgcXVldWUgcGFpciB3 aXRoIHF1ZXVlIGRlcHRoIDEyOCYjODIyMTs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNz PSJNc29Ob3JtYWwiPldoZW4gcXVldWUgZGVwdGggaXMgbWVudGlvbmVkIGZvciBkZXZpY2UsIGlz IGl0IHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhhdCBjYW4gYmUgaXNzdWVkIGZyb20gYXBwbGlj YXRpb24gdG8gY29udHJvbGxlciwgYW5kIG91dHN0YW5kaW5nIGF0IGFueSB0aW1lPwo8bzpwPjwv bzpwPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SXMgdGhlcmUgTlZNZSBkcml2ZXIgQVBJIHRv IHNldCB0aGUgcXVldWUgZGVwdGg/IElzIG15IHVuZGVyc3RhbmRpbmcgY29ycmVjdCBpZiBJIHRo aW5rIHRoYXQgdGhlIHNpemUgb2YgcXVldWUgaXMgYXQgZmlybXdhcmUgbGV2ZWw/CjxvOnA+PC9v OnA+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5QbGVhc2UgZ2l2ZSBzb21lIGRldGFpbCBhYm91 dCB0aGUgcGFyYW1ldGVyLjxvOnA+PC9vOnA+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpw PiZuYnNwOzwvbzpwPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhhbmtzLDxvOnA+PC9vOnA+ PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5TcmVlbmk8bzpwPjwvbzpwPjwvcD4KPC9kaXY+Cjwv Ym9keT4KPC9odG1sPgo= --===============3955289279120512467== Content-Type: application/octet-stream MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="hello_test_prog_v2.obj" bW9kaWZpZWQgbnNfZW50cnkNCg0Kc3RydWN0IG5zX2VudHJ5IHsNCglzdHJ1Y3Qgc3Bka19udm1l X2N0cmxyCSpjdHJscjsNCglzdHJ1Y3Qgc3Bka19udm1lX25zCSpuczsNCglzdHJ1Y3QgbnNfZW50 cnkJCSpuZXh0Ow0KCXN0cnVjdCBzcGRrX252bWVfcXBhaXIJKnFwYWlyOw0KCXN0cnVjdCBzcGRr X252bWVfcXBhaXIJKnFwYWlyXzI7DQp9DQptb2RpZmllZCBwcm9ncmFtDQp3aGlsZSAobnNfZW50 cnkgIT0gTlVMTCkgew0KCQkvKg0KCQkgKiBBbGxvY2F0ZSBhbiBJL08gcXBhaXIgdGhhdCB3ZSBj YW4gdXNlIHRvIHN1Ym1pdCByZWFkL3dyaXRlIHJlcXVlc3RzDQoJCSAqICB0byBuYW1lc3BhY2Vz IG9uIHRoZSBjb250cm9sbGVyLiAgTlZNZSBjb250cm9sbGVycyB0eXBpY2FsbHkgc3VwcG9ydA0K CQkgKiAgbWFueSBxcGFpcnMgcGVyIGNvbnRyb2xsZXIuICBBbnkgSS9PIHFwYWlyIGFsbG9jYXRl ZCBmb3IgYSBjb250cm9sbGVyDQoJCSAqICBjYW4gc3VibWl0IEkvTyB0byBhbnkgbmFtZXNwYWNl IG9uIHRoYXQgY29udHJvbGxlci4NCgkJICoNCgkJICogVGhlIFNQREsgTlZNZSBkcml2ZXIgcHJv dmlkZXMgbm8gc3luY2hyb25pemF0aW9uIGZvciBxcGFpciBhY2Nlc3NlcyAtDQoJCSAqICB0aGUg YXBwbGljYXRpb24gbXVzdCBlbnN1cmUgb25seSBhIHNpbmdsZSB0aHJlYWQgc3VibWl0cyBJL08g dG8gYQ0KCQkgKiAgcXBhaXIsIGFuZCB0aGF0IHNhbWUgdGhyZWFkIG11c3QgYWxzbyBjaGVjayBm b3IgY29tcGxldGlvbnMgb24gdGhhdA0KCQkgKiAgcXBhaXIuICBUaGlzIGVuYWJsZXMgZXh0cmVt ZWx5IGVmZmljaWVudCBJL08gcHJvY2Vzc2luZyBieSBtYWtpbmcgYWxsDQoJCSAqICBJL08gb3Bl cmF0aW9ucyBjb21wbGV0ZWx5IGxvY2tsZXNzLg0KCQkgKi8NCgkJaWYgKG5zX2VudHJ5LT5xcGFp cl9hbGxvY2F0ZWQgPT0gMCkgew0KCQkJbnNfZW50cnktPnFwYWlyID0gc3Bka19udm1lX2N0cmxy X2FsbG9jX2lvX3FwYWlyKG5zX2VudHJ5LT5jdHJsciwgTlVMTCwgMCk7DQoJCQlpZiAobnNfZW50 cnktPnFwYWlyID09IE5VTEwpIHsNCgkJCQlwcmludGYoIkVSUk9SOiBzcGRrX252bWVfY3RybHJf YWxsb2NfaW9fcXBhaXIoKSBmYWlsZWRcbiIpOw0KCQkJCXJldHVybjsNCgkJCX0NCgkJfQ0KDQov Kg0KCQkgKiBVc2Ugc3Bka19kbWFfem1hbGxvYyB0byBhbGxvY2F0ZSBhIDRLQiB6ZXJvZWQgYnVm ZmVyLiAgVGhpcyBtZW1vcnkNCgkJICogd2lsbCBiZSBwaW5uZWQsIHdoaWNoIGlzIHJlcXVpcmVk IGZvciBkYXRhIGJ1ZmZlcnMgdXNlZCBmb3IgU1BESyBOVk1lDQoJCSAqIEkvTyBvcGVyYXRpb25z Lg0KCQkgKi8NCgkJc2VxdWVuY2UgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBpb19zZXF1ZW5j ZSkpOw0KCQkJc2VxdWVuY2UtPmJ1ZiA9IHNwZGtfZG1hX3ptYWxsb2MoMHgxMDAwLCAweDEwMDAs IE5VTEwpOw0KCQkJc2VxdWVuY2UtPmlzX2NvbXBsZXRlZCA9IDA7DQoJCQlzZXF1ZW5jZS0+bnNf ZW50cnkgPSBuc19lbnRyeTsNCgkJCW5zX2VudHJ5LT5xcGFpcl9hbGxvY2F0ZWQgPSAxOw0KDQoJ CXNlcXVlbmNlMSA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGlvX3NlcXVlbmNlKSk7DQoJCQlz ZXF1ZW5jZTEtPmJ1ZiA9IHNwZGtfZG1hX3ptYWxsb2MoMHgxMDAwLCAweDEwMDAsIE5VTEwpOw0K CQkJc2VxdWVuY2UxLT5pc19jb21wbGV0ZWQgPSAwOw0KCQkJc2VxdWVuY2UxLT5uc19lbnRyeSA9 IG5zX2VudHJ5Ow0KCQkvKg0KCQkgKiBQcmludCAiSGVsbG8gd29ybGQhIiB0byBzZXF1ZW5jZS5i dWYuICBXZSB3aWxsIHdyaXRlIHRoaXMgZGF0YSB0byBMQkENCgkJICogIDAgb24gdGhlIG5hbWVz cGFjZSwgYW5kIHRoZW4gbGF0ZXIgcmVhZCBpdCBiYWNrIGludG8gYSBzZXBhcmF0ZSBidWZmZXIN CgkJICogIHRvIGRlbW9uc3RyYXRlIHRoZSBmdWxsIEkvTyBwYXRoLg0KCQkgKi8NCgkJc25wcmlu dGYoc2VxdWVuY2UtPmJ1ZiwgMHgxMDAwLCAiJXMiLCAiSGVsbG8gd29ybGQhXG4iKTsNCg0KCQkv Kg0KCQkgKiBXcml0ZSB0aGUgZGF0YSBidWZmZXIgdG8gTEJBIDAgb2YgdGhpcyBuYW1lc3BhY2Uu ICAid3JpdGVfY29tcGxldGUiIGFuZA0KCQkgKiAgIiZzZXF1ZW5jZSIgYXJlIHNwZWNpZmllZCBh cyB0aGUgY29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbiBhbmQNCgkJICogIGFyZ3VtZW50IHJl c3BlY3RpdmVseS4gIHdyaXRlX2NvbXBsZXRlKCkgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUNCgkJ ICogIHZhbHVlIG9mICZzZXF1ZW5jZSBhcyBhIHBhcmFtZXRlciB3aGVuIHRoZSB3cml0ZSBJL08g aXMgY29tcGxldGVkLg0KCQkgKiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gcG90ZW50aWFsbHkgc3Bl Y2lmeSBkaWZmZXJlbnQgY29tcGxldGlvbg0KCQkgKiAgY2FsbGJhY2sgcm91dGluZXMgZm9yIGVh Y2ggSS9PLCBhcyB3ZWxsIGFzIHBhc3MgYSB1bmlxdWUgaGFuZGxlDQoJCSAqICBhcyBhbiBhcmd1 bWVudCBzbyB0aGUgYXBwbGljYXRpb24ga25vd3Mgd2hpY2ggSS9PIGhhcyBjb21wbGV0ZWQuDQoJ CSAqDQoJCSAqIE5vdGUgdGhhdCB0aGUgU1BESyBOVk1lIGRyaXZlciB3aWxsIG9ubHkgY2hlY2sg Zm9yIGNvbXBsZXRpb25zDQoJCSAqICB3aGVuIHRoZSBhcHBsaWNhdGlvbiBjYWxscyBzcGRrX252 bWVfcXBhaXJfcHJvY2Vzc19jb21wbGV0aW9ucygpLg0KCQkgKiAgSXQgaXMgdGhlIHJlc3BvbnNp YmlsaXR5IG9mIHRoZSBhcHBsaWNhdGlvbiB0byB0cmlnZ2VyIHRoZSBwb2xsaW5nDQoJCSAqICBw cm9jZXNzLg0KCQkgKi8NCgkJY250ID0gMTI3Ow0KCQl3aGlsZSAoY250KSB7DQoJCQlyYyA9IHN0 ZWxsdXNfc3Bka19udm1lX25zX2NtZF93cml0ZShuc19lbnRyeSwgbnNfZW50cnktPnFwYWlyLCBz ZXF1ZW5jZS0+YnVmLA0KCQkJCQkJICAgIDAsIC8qIExCQSBzdGFydCAqLw0KCQkJCQkJICAgIDEs IC8qIG51bWJlciBvZiBMQkFzICovDQoJCQkJCQkgICAgaW9fY29tcGxldGUsIHNlcXVlbmNlLCAw KTsNCgkJCWlmIChyYyAhPSAwKSB7DQoJCQkJZnByaW50ZihzdGRlcnIsICJzdGFydGluZyB3cml0 ZSBJL08gZmFpbGVkXG4iKTsNCgkJCQlleGl0KDEpOw0KCQkJfQ0KCQkJcmMgPSBzdGVsbHVzX3Nw ZGtfbnZtZV9uc19jbWRfcmVhZChuc19lbnRyeSwgbnNfZW50cnktPnFwYWlyLCBzZXF1ZW5jZTEt PmJ1ZiwNCgkJCQkJCSAgICAwLCAvKiBMQkEgc3RhcnQgKi8NCgkJCQkJCSAgICAxLCAvKiBudW1i ZXIgb2YgTEJBcyAqLw0KCQkJCQkJICAgIGlvX2NvbXBsZXRlLCBzZXF1ZW5jZTEsIDApOw0KCQkJ aWYgKHJjICE9IDApIHsNCgkJCQlmcHJpbnRmKHN0ZGVyciwgInN0YXJ0aW5nIHJlYWQgSS9PIGZh aWxlZFxuIik7DQoJCQkJZXhpdCgxKTsNCgkJCX0NCgkJCWNudC0tOw0KCQl9DQoJCXNwZGtfbnZt ZV9xcGFpcl9wcm9jZXNzX2NvbXBsZXRpb25zKG5zX2VudHJ5LT5xcGFpciwgMCk7DQoJCW5zX2Vu dHJ5ID0gbnNfZW50cnktPm5leHQ7DQoJfQ0KCW5zX2VudHJ5ID0gZ19uYW1lc3BhY2VzOw0KCW5z X2VudHJ5LT5xcGFpcl8yID0gc3Bka19udm1lX2N0cmxyX2FsbG9jX2lvX3FwYWlyKG5zX2VudHJ5 LT5jdHJsciwgTlVMTCwgMCk7DQoJaWYgKG5zX2VudHJ5LT5xcGFpcl8yID09IE5VTEwpIHsNCgkJ cHJpbnRmKCJUaGUgcXBhaXIgYWxsb2NhdGlvbiBmYWlsZWQuXG4iKTsNCgkJZXhpdCAoMCk7DQoJ fQ0KCXdoaWxlIChuc19lbnRyeSAhPSBOVUxMKSB7DQoJCWNudCA9IDE7DQoJCXdoaWxlIChjbnQp IHsNCgkJLy8gRmFpbHMgdG8gYmUgc3VjY2Vzc2Z1bGx5IHN1Ym1pdA0KCQkJcmMgPSBzdGVsbHVz X3NwZGtfbnZtZV9uc19jbWRfd3JpdGUobnNfZW50cnksIG5zX2VudHJ5LT5xcGFpcl8yLCBzZXF1 ZW5jZS0+YnVmLA0KCQkJCQkJICAgIDAsIC8qIExCQSBzdGFydCAqLw0KCQkJCQkJICAgIDEsIC8q IG51bWJlciBvZiBMQkFzICovDQoJCQkJCQkgICAgaW9fY29tcGxldGUsIHNlcXVlbmNlLCAwKTsN CgkJCWlmIChyYyAhPSAwKSB7DQoJCQkJZnByaW50ZihzdGRlcnIsICJzdGFydGluZyB3cml0ZSBJ L08gZmFpbGVkXG4iKTsNCgkJCQlleGl0KDEpOw0KCQkJfQ0KCQkJLi4uDQoJCX0NCgl9DQoNCg0K DQo= --===============3955289279120512467==--