)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1002346,"name":"Henrik Brix Andersen","email":"henrik@brixandersen.dk","username":"henrikbrixandersen"},"change_message_id":"6d8bbca74ab4ca9d1248cbe62a609b56fa0322e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d28d8904_d813653b","updated":"2024-12-12 09:54:13.000000000","message":"Nice work! I have tested this using a Xilinx AXI to JTAG Debug Bridge in a Xilinx Zynq 7000 towards both a Xilinx Artix-7 FPGA and an Altera MAX-V CPLD in JTAG mode, works fine - but it needs the fix from I2383e41fb70063e26aa69fabcf728df597607934.","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7be420c4bef7cbb8ac25d612d7e0df03b7b73c37","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"0789e193_0d507e0d","updated":"2025-06-21 09:27:56.000000000","message":"Sorry for not having reviewed this earlier.\nIt is in a quite good shape, so it could be possible to merge it soon.\n\nGerrit is not able to see that `xlnx-pcie-xvc.c` has been renamed as `xlnx-xvc.c` and this makes the review heavy and many coding style issues in the old code would cause reviewer to add comments unrelated with this patch.\nI suggest you to split this in two commits, one that rework the old `xlnx-pcie-xvc.c` to add the features, followed by one to rename the file. Or the opposite, rename the file at first and then apply the changes.\nThe delta will pass from\nremoved 755 lines, added 1155 lines\nto removed 104 lines, added 555 lines\nthat is way more manageable.\nPlus, several changes in this way are simple indentation changes, `0x` prefix added in logs, function and variable rename ... easy to review.","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"3898e11577ce070e7595ed3e869412f56ad0c9e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"3cf50f74_81f50c9e","in_reply_to":"0789e193_0d507e0d","updated":"2025-06-30 16:19:19.000000000","message":"Done","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"3a22f4d17443d5101aff5384a57a7c73e7d7d8dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"8ad073b9_820778d5","updated":"2025-06-30 14:14:14.000000000","message":"Thanks a lot for the review. I have split the patch in two, and applied required changes. Let me know if I missed something!","commit_id":"a7ed478f2726f93c58be26c2cf07d9ae3a28e4c2"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"edee4f3d935c64424b3e81a00ead6af1dedb20df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"7dd4d77f_96cfb4ed","updated":"2025-07-04 08:43:16.000000000","message":"Thanks!","commit_id":"8cd43e6ee68cac13ec3b412319b7b59d58b5e3b6"}],"configure.ac":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7be420c4bef7cbb8ac25d612d7e0df03b7b73c37","unresolved":true,"context_lines":[{"line_number":390,"context_line":"      AC_MSG_ERROR([sysfsgpio is only available on linux])"},{"line_number":391,"context_line":"    ])"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    AS_IF([test \"x$enable_linuxgpiod\" \u003d \"xyes\"], ["},{"line_number":394,"context_line":"      AC_MSG_ERROR([linuxgpiod is only available on linux])"},{"line_number":395,"context_line":"    ])"},{"line_number":396,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":11,"id":"4e30f0ee_ae2de657","line":393,"updated":"2025-06-21 09:27:56.000000000","message":"I think this is a leftover of a rebase. Not anymore needed upstream","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"3a22f4d17443d5101aff5384a57a7c73e7d7d8dd","unresolved":false,"context_lines":[{"line_number":390,"context_line":"      AC_MSG_ERROR([sysfsgpio is only available on linux])"},{"line_number":391,"context_line":"    ])"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    AS_IF([test \"x$enable_linuxgpiod\" \u003d \"xyes\"], ["},{"line_number":394,"context_line":"      AC_MSG_ERROR([linuxgpiod is only available on linux])"},{"line_number":395,"context_line":"    ])"},{"line_number":396,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":11,"id":"1de4eba5_044218be","line":393,"in_reply_to":"4e30f0ee_ae2de657","updated":"2025-06-30 14:14:14.000000000","message":"Done","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"3898e11577ce070e7595ed3e869412f56ad0c9e8","unresolved":true,"context_lines":[{"line_number":180,"context_line":"m4_define([PCIE_ADAPTERS],"},{"line_number":181,"context_line":"\t[[[xlnx_pcie_xvc], [Xilinx XVC/PCIe], [XLNX_XVC]]])"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"m4_define([AXI_ADAPTERS],"},{"line_number":184,"context_line":"\t[[[xlnx_axi_xvc], [Xilinx XVC/AXI], [XLNX_XVC]]])"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"m4_define([SERIAL_PORT_ADAPTERS],"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"6b630a22_47479f9e","line":183,"updated":"2025-06-30 16:19:19.000000000","message":"Something weird due to reusing the same macro `XLNX_XVC`!\nToday you get:\n`./configure --enable-xlnx-pcie-xvc --disable-xlnx-axi-xvc`\nand the driver is built;\n`./configure --disable-xlnx-pcie-xvc --enable-xlnx-axi-xvc`\nand the driver is not built.\n\nWe could have two macros, easy for configure but messy in the C code.\nI don\u0027t want to have plenty of\n```\n#if defined ...\n#else\n#endif\n```\nin the C code, so better saying that either the two drivers are both compiled, or both are disabled.\nThis means that a single configure flag should work for both.\n\nSince we need to check the presence of the include file `linux/pci.h`, not present in every Linux installation, what about putting all as PCIE_ADAPTERS and drop AXI_ADAPTERS that has nothing special?:\n```\nm4_define([PCIE_ADAPTERS],\n  [[[xlnx_xvc], [Xilinx XVC PCIe and AXI drivers], [XLNX_XVC]]])\n```","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"476cf3396894debc3821e7e8eb0565d9f8489812","unresolved":false,"context_lines":[{"line_number":180,"context_line":"m4_define([PCIE_ADAPTERS],"},{"line_number":181,"context_line":"\t[[[xlnx_pcie_xvc], [Xilinx XVC/PCIe], [XLNX_XVC]]])"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"m4_define([AXI_ADAPTERS],"},{"line_number":184,"context_line":"\t[[[xlnx_axi_xvc], [Xilinx XVC/AXI], [XLNX_XVC]]])"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"m4_define([SERIAL_PORT_ADAPTERS],"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"cd277b0f_d8c411e0","line":183,"in_reply_to":"261e4192_37ee34f3","updated":"2025-07-02 21:13:17.000000000","message":"The original classification was about the dependencies.\nUSB1_ADAPTERS collects all the adapters that need libusb1 (old libusb0 is not needed anymore).\nLIBFTDI_USB1_ADAPTERS for adapters that need both libusb1 and libftdi.\n\nWith PCIE_ADAPTERS I intend all the adapters that need to include linux/pci.h (right now only xvc).\n\nBut over time this classification got broken.\nNow we have entries with a single driver. We need a rework of this to better group them.\n\nNever mind, XVC_ADAPTERS is fine for the time being.","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"43f066b023761f34a1397c76f82129cb5489a8c5","unresolved":true,"context_lines":[{"line_number":180,"context_line":"m4_define([PCIE_ADAPTERS],"},{"line_number":181,"context_line":"\t[[[xlnx_pcie_xvc], [Xilinx XVC/PCIe], [XLNX_XVC]]])"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"m4_define([AXI_ADAPTERS],"},{"line_number":184,"context_line":"\t[[[xlnx_axi_xvc], [Xilinx XVC/AXI], [XLNX_XVC]]])"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"m4_define([SERIAL_PORT_ADAPTERS],"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"261e4192_37ee34f3","line":183,"in_reply_to":"6b630a22_47479f9e","updated":"2025-07-01 09:41:40.000000000","message":"The name is a bit misleading, as AXI interface is a simple MMIO interface on boards that mostly do not support PCIe. What about XVC_ADAPTERS?","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"}],"doc/openocd.texi":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7be420c4bef7cbb8ac25d612d7e0df03b7b73c37","unresolved":true,"context_lines":[{"line_number":3354,"context_line":"Specifies the GPIOD name of the TRST signal via parameter @var{trst_gpio_signal_name\"}."},{"line_number":3355,"context_line":"@end deffn"},{"line_number":3356,"context_line":""},{"line_number":3357,"context_line":"@deffn {Config Command} {xlnx_axi_xvc srst} trst_gpio_signal_name"},{"line_number":3358,"context_line":"Specifies the GPIOD name of the SRST signal via parameter @var{srst_gpio_signal_name\"}."},{"line_number":3359,"context_line":"@end deffn"},{"line_number":3360,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":11,"id":"fc8c52f6_0d5a50b6","line":3357,"updated":"2025-06-21 09:27:56.000000000","message":"s/trst_/srst_/\n\nInstead of adding custom commands for `trst` and `srst`, please use the default commands `adapter gpio trst ...` and `adapter gpio srst ...`\nDocument here that the driver uses such standard commands","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"43f066b023761f34a1397c76f82129cb5489a8c5","unresolved":false,"context_lines":[{"line_number":3354,"context_line":"Specifies the GPIOD name of the TRST signal via parameter @var{trst_gpio_signal_name\"}."},{"line_number":3355,"context_line":"@end deffn"},{"line_number":3356,"context_line":""},{"line_number":3357,"context_line":"@deffn {Config Command} {xlnx_axi_xvc srst} trst_gpio_signal_name"},{"line_number":3358,"context_line":"Specifies the GPIOD name of the SRST signal via parameter @var{srst_gpio_signal_name\"}."},{"line_number":3359,"context_line":"@end deffn"},{"line_number":3360,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":11,"id":"d171975d_d45f7279","line":3357,"in_reply_to":"1858d470_30e03248","updated":"2025-07-01 09:41:40.000000000","message":"Perfect then!","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"3898e11577ce070e7595ed3e869412f56ad0c9e8","unresolved":false,"context_lines":[{"line_number":3354,"context_line":"Specifies the GPIOD name of the TRST signal via parameter @var{trst_gpio_signal_name\"}."},{"line_number":3355,"context_line":"@end deffn"},{"line_number":3356,"context_line":""},{"line_number":3357,"context_line":"@deffn {Config Command} {xlnx_axi_xvc srst} trst_gpio_signal_name"},{"line_number":3358,"context_line":"Specifies the GPIOD name of the SRST signal via parameter @var{srst_gpio_signal_name\"}."},{"line_number":3359,"context_line":"@end deffn"},{"line_number":3360,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":11,"id":"1858d470_30e03248","line":3357,"in_reply_to":"f7474db0_d6cac3ba","updated":"2025-06-30 16:19:19.000000000","message":"The current implementation in OpenOCD covers libgpiod v1 only. V2 is not supported yet.\nAnyway, it could be easier and faster to work at this patchset without GPIO, and eventually adding it later on.","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"3a22f4d17443d5101aff5384a57a7c73e7d7d8dd","unresolved":true,"context_lines":[{"line_number":3354,"context_line":"Specifies the GPIOD name of the TRST signal via parameter @var{trst_gpio_signal_name\"}."},{"line_number":3355,"context_line":"@end deffn"},{"line_number":3356,"context_line":""},{"line_number":3357,"context_line":"@deffn {Config Command} {xlnx_axi_xvc srst} trst_gpio_signal_name"},{"line_number":3358,"context_line":"Specifies the GPIOD name of the SRST signal via parameter @var{srst_gpio_signal_name\"}."},{"line_number":3359,"context_line":"@end deffn"},{"line_number":3360,"context_line":"@end deffn"}],"source_content_type":"text/x-texinfo","patch_set":11,"id":"f7474db0_d6cac3ba","line":3357,"in_reply_to":"fc8c52f6_0d5a50b6","updated":"2025-06-30 14:14:14.000000000","message":"I am not familiar with this gpio interface, that does not seem to me to be compatible with the former libgpiod interface. Therefore, I removed it for this current patchset, and may add it later if I encounter the need of it.","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"}],"src/jtag/drivers/xlnx-xvc.c":[{"author":{"_account_id":1002346,"name":"Henrik Brix Andersen","email":"henrik@brixandersen.dk","username":"henrikbrixandersen"},"change_message_id":"6d8bbca74ab4ca9d1248cbe62a609b56fa0322e5","unresolved":true,"context_lines":[{"line_number":346,"context_line":"\t\t\terr \u003d xlnx_xvc_transact(1, 1, 0, NULL, xvc_type);"},{"line_number":347,"context_line":"\t\t} else if (path[i] \u003d\u003d tap_state_transition(tap_get_state(), true)) {"},{"line_number":348,"context_line":"\t\t\terr \u003d xlnx_xvc_transact(1, 0, 0, NULL, xvc_type);"},{"line_number":349,"context_line":"\t\t} else {"},{"line_number":350,"context_line":"\t\t\tLOG_ERROR(\"BUG: %s -\u003e %s isn\u0027t a valid TAP transition.\","},{"line_number":351,"context_line":"\t\t\t\t  tap_state_name(tap_get_state()),"},{"line_number":352,"context_line":"\t\t\t\t  tap_state_name(path[i]));"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"83f02b04_b417c09f","line":349,"updated":"2024-12-12 09:54:13.000000000","message":"This suffers from the same bug as fixed by I2383e41fb70063e26aa69fabcf728df597607934.","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"391e1e0abd76ef73c61f8753beae49c76b50ddd2","unresolved":false,"context_lines":[{"line_number":346,"context_line":"\t\t\terr \u003d xlnx_xvc_transact(1, 1, 0, NULL, xvc_type);"},{"line_number":347,"context_line":"\t\t} else if (path[i] \u003d\u003d tap_state_transition(tap_get_state(), true)) {"},{"line_number":348,"context_line":"\t\t\terr \u003d xlnx_xvc_transact(1, 0, 0, NULL, xvc_type);"},{"line_number":349,"context_line":"\t\t} else {"},{"line_number":350,"context_line":"\t\t\tLOG_ERROR(\"BUG: %s -\u003e %s isn\u0027t a valid TAP transition.\","},{"line_number":351,"context_line":"\t\t\t\t  tap_state_name(tap_get_state()),"},{"line_number":352,"context_line":"\t\t\t\t  tap_state_name(path[i]));"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"bb121f61_2b0e18e7","line":349,"in_reply_to":"83f02b04_b417c09f","updated":"2024-12-12 15:23:49.000000000","message":"I updated it on the last patch.","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"},{"author":{"_account_id":1001700,"name":"Moritz Fischer","email":"moritzf@google.com","username":"moritzf"},"change_message_id":"937a31250266cd4c3872bbc72c2a3146cfcfb26e","unresolved":true,"context_lines":[{"line_number":632,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"},{"line_number":633,"context_line":"\t}"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"\txlnx_axi_xvc-\u003efd \u003d open(\"/dev/mem\", O_RDWR | O_SYNC);"},{"line_number":636,"context_line":"\tif (xlnx_axi_xvc-\u003efd \u003c 0) {"},{"line_number":637,"context_line":"\t\tLOG_ERROR(\"Failed to open /dev/mem.  Check permissions.\");"},{"line_number":638,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"e3ba62fa_4451b2c0","line":635,"updated":"2024-12-12 13:32:08.000000000","message":"Wouldn\u0027t binding the device to VFIO / UIO a more palpable solution kernel wise?","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"37320667de43bcdb445ddc3acbd26b193ca1871d","unresolved":true,"context_lines":[{"line_number":632,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"},{"line_number":633,"context_line":"\t}"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"\txlnx_axi_xvc-\u003efd \u003d open(\"/dev/mem\", O_RDWR | O_SYNC);"},{"line_number":636,"context_line":"\tif (xlnx_axi_xvc-\u003efd \u003c 0) {"},{"line_number":637,"context_line":"\t\tLOG_ERROR(\"Failed to open /dev/mem.  Check permissions.\");"},{"line_number":638,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"56886a5b_209abdb9","line":635,"in_reply_to":"208d3ebb_a9dd2c2d","updated":"2024-12-16 16:20:52.000000000","message":"The very latest branch (sorry for all the fuss, apparently I started from an old one) integrates such a parameter. Is this what you had in mind?","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"a78da7bcd7bfb351b796d11869e10121a3f2e348","unresolved":false,"context_lines":[{"line_number":632,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"},{"line_number":633,"context_line":"\t}"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"\txlnx_axi_xvc-\u003efd \u003d open(\"/dev/mem\", O_RDWR | O_SYNC);"},{"line_number":636,"context_line":"\tif (xlnx_axi_xvc-\u003efd \u003c 0) {"},{"line_number":637,"context_line":"\t\tLOG_ERROR(\"Failed to open /dev/mem.  Check permissions.\");"},{"line_number":638,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"20756da7_0c0134e9","line":635,"in_reply_to":"56886a5b_209abdb9","updated":"2024-12-18 12:47:14.000000000","message":"Done","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"},{"author":{"_account_id":1001700,"name":"Moritz Fischer","email":"moritzf@google.com","username":"moritzf"},"change_message_id":"05b2ebb7c3463fe3591592e6ef4222ff2fa8d167","unresolved":true,"context_lines":[{"line_number":632,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"},{"line_number":633,"context_line":"\t}"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"\txlnx_axi_xvc-\u003efd \u003d open(\"/dev/mem\", O_RDWR | O_SYNC);"},{"line_number":636,"context_line":"\tif (xlnx_axi_xvc-\u003efd \u003c 0) {"},{"line_number":637,"context_line":"\t\tLOG_ERROR(\"Failed to open /dev/mem.  Check permissions.\");"},{"line_number":638,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"208d3ebb_a9dd2c2d","line":635,"in_reply_to":"c62eb220_a7f4157b","updated":"2024-12-12 18:25:01.000000000","message":"I think having a device path parameter would capture this","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"c6161bd5c83a9f2a953b0a80edf5cd8984e950ff","unresolved":true,"context_lines":[{"line_number":632,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"},{"line_number":633,"context_line":"\t}"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"\txlnx_axi_xvc-\u003efd \u003d open(\"/dev/mem\", O_RDWR | O_SYNC);"},{"line_number":636,"context_line":"\tif (xlnx_axi_xvc-\u003efd \u003c 0) {"},{"line_number":637,"context_line":"\t\tLOG_ERROR(\"Failed to open /dev/mem.  Check permissions.\");"},{"line_number":638,"context_line":"\t\treturn ERROR_JTAG_INIT_FAILED;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"c62eb220_a7f4157b","line":635,"in_reply_to":"e3ba62fa_4451b2c0","updated":"2024-12-12 15:17:59.000000000","message":"It is a perfectly valid point. What do you see as a best design? An additional configuration option to provide the file, either `/dev/uioX` or `/dev/mem`? I am however unfamiliar with VFIO, so I doubt to be able to integrate its support in this PR.","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"},{"author":{"_account_id":1002346,"name":"Henrik Brix Andersen","email":"henrik@brixandersen.dk","username":"henrikbrixandersen"},"change_message_id":"f26afafed0c9a52140f7b1fbb3ad89708df91c61","unresolved":true,"context_lines":[{"line_number":74,"context_line":"\tint fd;"},{"line_number":75,"context_line":"\tuint32_t *base;"},{"line_number":76,"context_line":"\tchar *device_addr;"},{"line_number":77,"context_line":"\tchar *device_file;"},{"line_number":78,"context_line":"\tstruct xlnx_axi_signal trst;"},{"line_number":79,"context_line":"\tstruct xlnx_axi_signal srst;"},{"line_number":80,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"307c0220_2c8451da","line":77,"updated":"2024-12-18 11:36:53.000000000","message":"Should this default to `/dev/mem`?","commit_id":"f777492199cb8c25dd7956890eef2008dd02fcf1"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"a78da7bcd7bfb351b796d11869e10121a3f2e348","unresolved":false,"context_lines":[{"line_number":74,"context_line":"\tint fd;"},{"line_number":75,"context_line":"\tuint32_t *base;"},{"line_number":76,"context_line":"\tchar *device_addr;"},{"line_number":77,"context_line":"\tchar *device_file;"},{"line_number":78,"context_line":"\tstruct xlnx_axi_signal trst;"},{"line_number":79,"context_line":"\tstruct xlnx_axi_signal srst;"},{"line_number":80,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"9d68da2c_ff1b1cbb","line":77,"in_reply_to":"307c0220_2c8451da","updated":"2024-12-18 12:47:14.000000000","message":"Good point, this is fixed on latest patch.","commit_id":"f777492199cb8c25dd7956890eef2008dd02fcf1"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7be420c4bef7cbb8ac25d612d7e0df03b7b73c37","unresolved":true,"context_lines":[{"line_number":74,"context_line":"\tint fd;"},{"line_number":75,"context_line":"\tuint32_t *base;"},{"line_number":76,"context_line":"\tchar *device_addr;"},{"line_number":77,"context_line":"\t/* Defaults to `/dev/mem`"},{"line_number":78,"context_line":"     * if NULL"},{"line_number":79,"context_line":"     */"},{"line_number":80,"context_line":"\tchar *device_file;"},{"line_number":81,"context_line":"\tstruct xlnx_axi_signal trst;"},{"line_number":82,"context_line":"\tstruct xlnx_axi_signal srst;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"d3f042e8_d7826324","line":79,"range":{"start_line":77,"start_character":1,"end_line":79,"end_character":7},"updated":"2025-06-21 09:27:56.000000000","message":"indentation starts with TAB then following lines use space!\nBe coherent using TAB every time\nThis comment can even be in a single line, using `//`","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"3a22f4d17443d5101aff5384a57a7c73e7d7d8dd","unresolved":false,"context_lines":[{"line_number":74,"context_line":"\tint fd;"},{"line_number":75,"context_line":"\tuint32_t *base;"},{"line_number":76,"context_line":"\tchar *device_addr;"},{"line_number":77,"context_line":"\t/* Defaults to `/dev/mem`"},{"line_number":78,"context_line":"     * if NULL"},{"line_number":79,"context_line":"     */"},{"line_number":80,"context_line":"\tchar *device_file;"},{"line_number":81,"context_line":"\tstruct xlnx_axi_signal trst;"},{"line_number":82,"context_line":"\tstruct xlnx_axi_signal srst;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"b43af409_66b9b832","line":79,"range":{"start_line":77,"start_character":1,"end_line":79,"end_character":7},"in_reply_to":"d3f042e8_d7826324","updated":"2025-06-30 14:14:14.000000000","message":"Done","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7be420c4bef7cbb8ac25d612d7e0df03b7b73c37","unresolved":true,"context_lines":[{"line_number":120,"context_line":"\tvolatile uint32_t *w \u003d (uint32_t *)b;"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"\tif (val) {"},{"line_number":123,"context_line":"\t\t__sync_synchronize();"},{"line_number":124,"context_line":"\t\t*val \u003d *w;"},{"line_number":125,"context_line":"\t}"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"1c84c359_7e3a57d4","line":123,"updated":"2025-06-21 09:27:56.000000000","message":"There are two instances of this `__sync_synchronize()` in the new code.\nGCC manual report it as \u0027legacy\u0027:\nhttps://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html\nhttps://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html\n\n\u003e New code should always use the \u0027__atomic\u0027 builtins rather than the \u0027__sync\u0027 builtins.\n\nI have not checked about LLVM.","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"3a22f4d17443d5101aff5384a57a7c73e7d7d8dd","unresolved":false,"context_lines":[{"line_number":120,"context_line":"\tvolatile uint32_t *w \u003d (uint32_t *)b;"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"\tif (val) {"},{"line_number":123,"context_line":"\t\t__sync_synchronize();"},{"line_number":124,"context_line":"\t\t*val \u003d *w;"},{"line_number":125,"context_line":"\t}"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"5af9bc7d_04f6cf71","line":123,"in_reply_to":"1c84c359_7e3a57d4","updated":"2025-06-30 14:14:14.000000000","message":"Done","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7be420c4bef7cbb8ac25d612d7e0df03b7b73c37","unresolved":true,"context_lines":[{"line_number":307,"context_line":"\t\t  cmd-\u003ecmd.runtest-\u003enum_cycles,"},{"line_number":308,"context_line":"\t\t  cmd-\u003ecmd.runtest-\u003eend_state);"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"\ttap_state_t tmp_state \u003d tap_get_end_state();"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"\tif (tap_get_state() !\u003d TAP_IDLE) {"},{"line_number":313,"context_line":"\t\ttap_set_end_state(TAP_IDLE);"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"bf985b3e_950b5b91","line":310,"updated":"2025-06-21 09:27:56.000000000","message":"The `typedef tap_state_t` has been dropped with\nhttps://review.openocd.org/c/openocd/+/8709\nUse `enum tap_state`","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"3a22f4d17443d5101aff5384a57a7c73e7d7d8dd","unresolved":false,"context_lines":[{"line_number":307,"context_line":"\t\t  cmd-\u003ecmd.runtest-\u003enum_cycles,"},{"line_number":308,"context_line":"\t\t  cmd-\u003ecmd.runtest-\u003eend_state);"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"\ttap_state_t tmp_state \u003d tap_get_end_state();"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"\tif (tap_get_state() !\u003d TAP_IDLE) {"},{"line_number":313,"context_line":"\t\ttap_set_end_state(TAP_IDLE);"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"bfc164cc_aca07f42","line":310,"in_reply_to":"bf985b3e_950b5b91","updated":"2025-06-30 14:14:14.000000000","message":"Done","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7be420c4bef7cbb8ac25d612d7e0df03b7b73c37","unresolved":true,"context_lines":[{"line_number":1126,"context_line":"\t.run \u003d xlnx_axi_xvc_swd_run_queue,"},{"line_number":1127,"context_line":"};"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"static const char * const xlnx_pcie_xvc_transports[] \u003d { \"jtag\", \"swd\", NULL };"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"static const char * const xlnx_axi_xvc_transports[] \u003d { \"jtag\", \"swd\", NULL };"},{"line_number":1132,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"de387aaa_001eeba9","line":1129,"updated":"2025-06-21 09:27:56.000000000","message":"minor changes upstream regarding this. Please check upstream driver xlnx-pcie-xvc.\nThis array disappears and in the struct below disappears `.transport` replaced by:\n```\n        .transport_ids \u003d TRANSPORT_JTAG | TRANSPORT_SWD,\n        .transport_preferred_id \u003d TRANSPORT_JTAG,\n```","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"3a22f4d17443d5101aff5384a57a7c73e7d7d8dd","unresolved":false,"context_lines":[{"line_number":1126,"context_line":"\t.run \u003d xlnx_axi_xvc_swd_run_queue,"},{"line_number":1127,"context_line":"};"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"static const char * const xlnx_pcie_xvc_transports[] \u003d { \"jtag\", \"swd\", NULL };"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"static const char * const xlnx_axi_xvc_transports[] \u003d { \"jtag\", \"swd\", NULL };"},{"line_number":1132,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"a047eb7a_6008037b","line":1129,"in_reply_to":"de387aaa_001eeba9","updated":"2025-06-30 14:14:14.000000000","message":"Done","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"3898e11577ce070e7595ed3e869412f56ad0c9e8","unresolved":true,"context_lines":[{"line_number":647,"context_line":""},{"line_number":648,"context_line":"COMMAND_HANDLER(xlnx_axi_xvc_handle_dev_addr_command)"},{"line_number":649,"context_line":"{"},{"line_number":650,"context_line":"\tif (CMD_ARGC \u003c 1)"},{"line_number":651,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"\t/* we can\u0027t really free this in a safe manner, so at least"}],"source_content_type":"text/x-csrc","patch_set":16,"id":"d4caaa97_4b1762cb","line":650,"updated":"2025-06-30 16:19:19.000000000","message":"Only one argument is allowed, so:\n`if (CMD_ARGC !\u003d 1)`","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"43f066b023761f34a1397c76f82129cb5489a8c5","unresolved":false,"context_lines":[{"line_number":647,"context_line":""},{"line_number":648,"context_line":"COMMAND_HANDLER(xlnx_axi_xvc_handle_dev_addr_command)"},{"line_number":649,"context_line":"{"},{"line_number":650,"context_line":"\tif (CMD_ARGC \u003c 1)"},{"line_number":651,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"\t/* we can\u0027t really free this in a safe manner, so at least"}],"source_content_type":"text/x-csrc","patch_set":16,"id":"19f151fc_b1c021e1","line":650,"in_reply_to":"d4caaa97_4b1762cb","updated":"2025-07-01 09:41:40.000000000","message":"Done","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"3898e11577ce070e7595ed3e869412f56ad0c9e8","unresolved":true,"context_lines":[{"line_number":655,"context_line":"\t * before allocating a new one ..."},{"line_number":656,"context_line":"\t */"},{"line_number":657,"context_line":"\tif (xlnx_axi_xvc-\u003edevice_addr)"},{"line_number":658,"context_line":"\t\tfree(xlnx_axi_xvc-\u003edevice_addr);"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"\txlnx_axi_xvc-\u003edevice_addr \u003d strdup(CMD_ARGV[0]);"},{"line_number":661,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":16,"id":"dc42464d_b288b9d0","line":658,"updated":"2025-06-30 16:19:19.000000000","message":"What you mean in the comment above? We can free this pointer!\n\nNo need to check if the pointer has already been assigned because `free()` does nothing on NULL pointers.\nUse directly:\n`free(xlnx_axi_xvc-\u003edevice_addr);`","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"476cf3396894debc3821e7e8eb0565d9f8489812","unresolved":false,"context_lines":[{"line_number":655,"context_line":"\t * before allocating a new one ..."},{"line_number":656,"context_line":"\t */"},{"line_number":657,"context_line":"\tif (xlnx_axi_xvc-\u003edevice_addr)"},{"line_number":658,"context_line":"\t\tfree(xlnx_axi_xvc-\u003edevice_addr);"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"\txlnx_axi_xvc-\u003edevice_addr \u003d strdup(CMD_ARGV[0]);"},{"line_number":661,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":16,"id":"bc974146_06bed7fa","line":658,"in_reply_to":"cd436836_c45e78e3","updated":"2025-07-02 21:13:17.000000000","message":"you are right. We need to free them at exit.\nI have added a comment as placehold","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"43f066b023761f34a1397c76f82129cb5489a8c5","unresolved":true,"context_lines":[{"line_number":655,"context_line":"\t * before allocating a new one ..."},{"line_number":656,"context_line":"\t */"},{"line_number":657,"context_line":"\tif (xlnx_axi_xvc-\u003edevice_addr)"},{"line_number":658,"context_line":"\t\tfree(xlnx_axi_xvc-\u003edevice_addr);"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"\txlnx_axi_xvc-\u003edevice_addr \u003d strdup(CMD_ARGV[0]);"},{"line_number":661,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":16,"id":"cd436836_c45e78e3","line":658,"in_reply_to":"dc42464d_b288b9d0","updated":"2025-07-01 09:41:40.000000000","message":"It was already present Garff\u0027s PR. I believe it means that the `strdup`ed `device_addr` is not freed at the end of the execution; only if several init are called in a row.","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"3898e11577ce070e7595ed3e869412f56ad0c9e8","unresolved":true,"context_lines":[{"line_number":664,"context_line":""},{"line_number":665,"context_line":"COMMAND_HANDLER(xlnx_axi_xvc_handle_dev_file_command)"},{"line_number":666,"context_line":"{"},{"line_number":667,"context_line":"\tif (CMD_ARGC \u003c 1)"},{"line_number":668,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"\t/* we can\u0027t really free this in a safe manner, so at least"}],"source_content_type":"text/x-csrc","patch_set":16,"id":"34965465_5cbd6611","line":667,"updated":"2025-06-30 16:19:19.000000000","message":"`if (CMD_ARGC !\u003d 1)`","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"43f066b023761f34a1397c76f82129cb5489a8c5","unresolved":false,"context_lines":[{"line_number":664,"context_line":""},{"line_number":665,"context_line":"COMMAND_HANDLER(xlnx_axi_xvc_handle_dev_file_command)"},{"line_number":666,"context_line":"{"},{"line_number":667,"context_line":"\tif (CMD_ARGC \u003c 1)"},{"line_number":668,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"\t/* we can\u0027t really free this in a safe manner, so at least"}],"source_content_type":"text/x-csrc","patch_set":16,"id":"91e06644_bb346164","line":667,"in_reply_to":"34965465_5cbd6611","updated":"2025-07-01 09:41:40.000000000","message":"Done","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"3898e11577ce070e7595ed3e869412f56ad0c9e8","unresolved":true,"context_lines":[{"line_number":672,"context_line":"\t * before allocating a new one ..."},{"line_number":673,"context_line":"\t */"},{"line_number":674,"context_line":"\tif (xlnx_axi_xvc-\u003edevice_file)"},{"line_number":675,"context_line":"\t\tfree(xlnx_axi_xvc-\u003edevice_file);"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"\txlnx_axi_xvc-\u003edevice_file \u003d strdup(CMD_ARGV[0]);"},{"line_number":678,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":16,"id":"48da391f_6439e82f","line":675,"updated":"2025-06-30 16:19:19.000000000","message":"No check, directly `free(...);`","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"43f066b023761f34a1397c76f82129cb5489a8c5","unresolved":false,"context_lines":[{"line_number":672,"context_line":"\t * before allocating a new one ..."},{"line_number":673,"context_line":"\t */"},{"line_number":674,"context_line":"\tif (xlnx_axi_xvc-\u003edevice_file)"},{"line_number":675,"context_line":"\t\tfree(xlnx_axi_xvc-\u003edevice_file);"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"\txlnx_axi_xvc-\u003edevice_file \u003d strdup(CMD_ARGV[0]);"},{"line_number":678,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":16,"id":"8fe0f7bc_d031cdb2","line":675,"in_reply_to":"48da391f_6439e82f","updated":"2025-07-01 09:41:40.000000000","message":"Done","commit_id":"f5973e3a0845748c2caf2224429074ac3e1806c3"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"476cf3396894debc3821e7e8eb0565d9f8489812","unresolved":true,"context_lines":[{"line_number":626,"context_line":"\terr \u003d close(xlnx_axi_xvc-\u003efd);"},{"line_number":627,"context_line":"\tif (err)"},{"line_number":628,"context_line":"\t\treturn err;"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"\treturn ERROR_OK;"},{"line_number":631,"context_line":"}"},{"line_number":632,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":17,"id":"6973dc0f_3707efdb","line":629,"updated":"2025-07-02 21:13:17.000000000","message":"here is the memory leak, at exit.\nWe need:\n```\nfree(xlnx_pcie_xvc-\u003edevice);\nfree(xlnx_axi_xvc-\u003edevice_addr);\n```","commit_id":"ce83008c6e0d461a62f1e81af23db41c0dad3df2"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"e0ac038800b0bd5d04e984d3681eacfe00536b61","unresolved":false,"context_lines":[{"line_number":626,"context_line":"\terr \u003d close(xlnx_axi_xvc-\u003efd);"},{"line_number":627,"context_line":"\tif (err)"},{"line_number":628,"context_line":"\t\treturn err;"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"\treturn ERROR_OK;"},{"line_number":631,"context_line":"}"},{"line_number":632,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":17,"id":"6f4a73f0_6fc07783","line":629,"in_reply_to":"6973dc0f_3707efdb","updated":"2025-07-03 12:41:52.000000000","message":"Thanks!","commit_id":"ce83008c6e0d461a62f1e81af23db41c0dad3df2"}],"src/jtag/interface.h":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7be420c4bef7cbb8ac25d612d7e0df03b7b73c37","unresolved":true,"context_lines":[{"line_number":404,"context_line":"extern struct adapter_driver vsllink_adapter_driver;"},{"line_number":405,"context_line":"extern struct adapter_driver xds110_adapter_driver;"},{"line_number":406,"context_line":"extern struct adapter_driver xlnx_pcie_xvc_adapter_driver;"},{"line_number":407,"context_line":"extern struct adapter_driver xlnx_axi_xvc_adapter_driver;"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"#endif /* OPENOCD_JTAG_INTERFACE_H */"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"0adae39d_63b555cc","line":407,"updated":"2025-06-21 09:27:56.000000000","message":"This list should be kept in alphabetic order","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"3a22f4d17443d5101aff5384a57a7c73e7d7d8dd","unresolved":false,"context_lines":[{"line_number":404,"context_line":"extern struct adapter_driver vsllink_adapter_driver;"},{"line_number":405,"context_line":"extern struct adapter_driver xds110_adapter_driver;"},{"line_number":406,"context_line":"extern struct adapter_driver xlnx_pcie_xvc_adapter_driver;"},{"line_number":407,"context_line":"extern struct adapter_driver xlnx_axi_xvc_adapter_driver;"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"#endif /* OPENOCD_JTAG_INTERFACE_H */"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"a9e26fce_a82c6261","line":407,"in_reply_to":"0adae39d_63b555cc","updated":"2025-06-30 14:14:14.000000000","message":"Done","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"}],"src/jtag/interfaces.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7be420c4bef7cbb8ac25d612d7e0df03b7b73c37","unresolved":true,"context_lines":[{"line_number":126,"context_line":"#if BUILD_LINUXSPIDEV \u003d\u003d 1"},{"line_number":127,"context_line":"\t\t\u0026linuxspidev_adapter_driver,"},{"line_number":128,"context_line":"#endif"},{"line_number":129,"context_line":"#if BUILD_XLNX_XVC \u003d\u003d 1"},{"line_number":130,"context_line":"\t\t\u0026xlnx_pcie_xvc_adapter_driver,"},{"line_number":131,"context_line":"\t\t\u0026xlnx_axi_xvc_adapter_driver,"},{"line_number":132,"context_line":"#endif"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"3e6e1988_4854edf5","line":129,"updated":"2025-06-21 09:27:56.000000000","message":"this is going to change due to https://review.openocd.org/c/8950\nnot merged yet to keep the list in alphabetic order.\nNothing to do until merged","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"3a22f4d17443d5101aff5384a57a7c73e7d7d8dd","unresolved":false,"context_lines":[{"line_number":126,"context_line":"#if BUILD_LINUXSPIDEV \u003d\u003d 1"},{"line_number":127,"context_line":"\t\t\u0026linuxspidev_adapter_driver,"},{"line_number":128,"context_line":"#endif"},{"line_number":129,"context_line":"#if BUILD_XLNX_XVC \u003d\u003d 1"},{"line_number":130,"context_line":"\t\t\u0026xlnx_pcie_xvc_adapter_driver,"},{"line_number":131,"context_line":"\t\t\u0026xlnx_axi_xvc_adapter_driver,"},{"line_number":132,"context_line":"#endif"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"7dcb1594_c4a53875","line":129,"in_reply_to":"3e6e1988_4854edf5","updated":"2025-06-30 14:14:14.000000000","message":"Ack","commit_id":"3d1e559dc32aef518399f293f2fad3d449151f3b"}],"src/jtag/startup.tcl":[{"author":{"_account_id":1002346,"name":"Henrik Brix Andersen","email":"henrik@brixandersen.dk","username":"henrikbrixandersen"},"change_message_id":"6d8bbca74ab4ca9d1248cbe62a609b56fa0322e5","unresolved":true,"context_lines":[{"line_number":418,"context_line":"\techo \"DEPRECATED! use \u0027xlnx_axi_xvc config\u0027 not \u0027xlnx_axi_xvc_config\u0027\""},{"line_number":419,"context_line":"\teval xlnx_axi_xvc config $args"},{"line_number":420,"context_line":"}"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"lappend _telnet_autocomplete_skip ulink_download_firmware"},{"line_number":423,"context_line":"proc ulink_download_firmware args {"},{"line_number":424,"context_line":"\techo \"DEPRECATED! use \u0027ulink download_firmware\u0027 not \u0027ulink_download_firmware\u0027\""}],"source_content_type":"text/x-tcl","patch_set":3,"id":"0e3de0f5_fd7ba424","line":421,"updated":"2024-12-12 09:54:13.000000000","message":"How come this is needed?","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"},{"author":{"_account_id":1002340,"name":"Nicolas Derumigny","display_name":"Nicolas Derumigny","email":"nicolas.derumigny@inria.fr","username":"NicolasDerumigny","status":"Post Doc - Inria"},"change_message_id":"391e1e0abd76ef73c61f8753beae49c76b50ddd2","unresolved":false,"context_lines":[{"line_number":418,"context_line":"\techo \"DEPRECATED! use \u0027xlnx_axi_xvc config\u0027 not \u0027xlnx_axi_xvc_config\u0027\""},{"line_number":419,"context_line":"\teval xlnx_axi_xvc config $args"},{"line_number":420,"context_line":"}"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"lappend _telnet_autocomplete_skip ulink_download_firmware"},{"line_number":423,"context_line":"proc ulink_download_firmware args {"},{"line_number":424,"context_line":"\techo \"DEPRECATED! use \u0027ulink download_firmware\u0027 not \u0027ulink_download_firmware\u0027\""}],"source_content_type":"text/x-tcl","patch_set":3,"id":"9116d4d2_eccc5a70","line":421,"in_reply_to":"0e3de0f5_fd7ba424","updated":"2024-12-12 15:23:49.000000000","message":"That was a leftover, removed in latest patch.","commit_id":"842407c65cf4e514893ed93430bc07a5b7883c7b"}]}
