)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4970a0241a7a09217951ce2229038f244875c1f9","unresolved":true,"context_lines":[{"line_number":15,"context_line":"The simple array of 256 AP can be reused as a dynamic storage for"},{"line_number":16,"context_line":"ADIv6 ap:"},{"line_number":17,"context_line":"- the ADIv5 AP number is replaced by the ADIv6 base address;"},{"line_number":18,"context_line":"- the index of the array (equal to ADIv5 AP number) as no link to"},{"line_number":19,"context_line":"  any ADIv6 property;"},{"line_number":20,"context_line":"- the ADIv6 base_address has to be searched in the array of AP."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5db97cac_633d9b24","line":18,"range":{"start_line":18,"start_character":52,"end_line":18,"end_character":54},"updated":"2021-09-08 20:46:36.000000000","message":"typo s/as/has/","commit_id":"08759a5ad82e94d0deca8b8bb9b4b7fa163cf5ad"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"change_message_id":"ff5e5df2a7443ff2e98a84d0f95037985cb882e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"23130259_0e6fd623","updated":"2021-09-17 22:50:56.000000000","message":"I tested the relation chain up to and including this patch on an ARM Neoverse N1 system and didn\u0027t see any issues. Also performed a code review and everything looks good.","commit_id":"08759a5ad82e94d0deca8b8bb9b4b7fa163cf5ad"},{"author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"change_message_id":"9311d0f819165b5fc89f34917ef67bd8fb8fb8a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"90c4db97_e6838425","updated":"2021-11-18 15:50:59.000000000","message":"I tested the full series on ARM Neoverse N1 (ADIv5) and Ampere Altra Max (ADIv6) silicon and didn\u0027t see any issues.","commit_id":"b500034a6cee4d42440d5d86d9e4b210f12a9442"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ea39ed70f9b08e8cbb3c3fd33af1afa079f2907b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"892a0719_440ab4be","updated":"2021-11-09 23:52:47.000000000","message":"I\u0027m still not fully satisfied with the series, but I have addressed all the comments (hope not forgot anything) and fixed other stuff here and there.\nI prefer sharing the current version before going ahead, so more people can review and test it.\nTo get the full series, in the last change https://review.openocd.org/5591 click on the three dots on top-right, select \"download patch\" then \"Checkout\"","commit_id":"b500034a6cee4d42440d5d86d9e4b210f12a9442"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"03fec272ab849ac7f717245e6b741945aa95891f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"004a17c1_f3ad11ea","updated":"2021-11-19 12:26:01.000000000","message":"It\u0027s a pity you chose to keep the static array of APs. A standard associative array would be more memory effective for most device and not constrained for ADIv6.\n\nI will test for regression on Kinetis MCU soon.","commit_id":"b500034a6cee4d42440d5d86d9e4b210f12a9442"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"a9f03f900bf2171af74096d192d7f9b057df07f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5d344847_90706cc7","in_reply_to":"004a17c1_f3ad11ea","updated":"2021-11-19 14:15:22.000000000","message":"Agree, but I tried to minimize the impact on ADIv5. If later we find a regression, it could be easier to sort it out.\nBut it could be addressed later on.","commit_id":"b500034a6cee4d42440d5d86d9e4b210f12a9442"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4cf2b37f721b20f1ed92685debafdc712f5c8dda","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8b20f19c_79df1386","in_reply_to":"5d344847_90706cc7","updated":"2021-11-19 20:26:05.000000000","message":"Tested MDM-AP operations on Kinetis K26. No regression found.","commit_id":"b500034a6cee4d42440d5d86d9e4b210f12a9442"},{"author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"change_message_id":"f6c7dcf3aacd84c9774bfde3c61c3adbcc24b7fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0f12d0b8_69c43573","updated":"2022-06-23 13:33:12.000000000","message":"I\u0027ve regression tested the ADIv6 patch series on Ampere server products containing ADIv6 DAPs. Everything works as expected and I see no issues.","commit_id":"ea75b53a0861f72701c15984bf06b995d033184a"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c061217d6cc749d6af78e33eab1f40f8ea75f6e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"69cf4f26_663fe3bf","updated":"2022-06-10 22:27:22.000000000","message":"This series has already drained too much time, it\u0027s time to go!\nI have rebased the whole series and I plan to merge it in 2 weeks, if nobody has concerns.","commit_id":"ea75b53a0861f72701c15984bf06b995d033184a"},{"author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"change_message_id":"f6c7dcf3aacd84c9774bfde3c61c3adbcc24b7fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b9fbc1bf_7942d646","in_reply_to":"69cf4f26_663fe3bf","updated":"2022-06-23 13:33:12.000000000","message":"I\u0027ve regression tested the ADIv6 patch series on Ampere server products containing ADIv6 DAPs. Everything works as expected and I see no issues. I have no concerns and I\u0027m ready for the merge. Thanks again for all the time and effort you have put into this series.","commit_id":"ea75b53a0861f72701c15984bf06b995d033184a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"45cc87f05c6fe335f341d7e2713c0d0bacb7a7c8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"dbbb5750_7ad846cc","updated":"2022-12-09 10:30:08.000000000","message":"Antonio,\nI spotted another regression from this change, somewhat similar to already fixed\n7108: target/cortex_m: prevent segmentation fault in cortex_m_poll() | https://review.openocd.org/c/openocd/+/7108\n\nWhen a cortex_m target is half-live (in this case powered by SWCLK and SWDIO lines only),\nopenocd segfaults. This time halt fails when gdb is connecting but any other command could be impacted.\n\n Polling target at91samd.cpu failed, trying to reexamine\n Info : SWD DPIDR 0x03811477\n Info : SWD DPIDR 0x03801077\n Error: [at91samd.cpu] Could not find MEM-AP to control the core\n Examination failed, GDB will be halted. Polling again in 6300ms\n Info : accepting \u0027gdb\u0027 connection on tcp/3333\n Warn : [at91samd.cpu] target was in unknown state when halt was requested\n \n Thread 1 \"openocd\" received signal SIGSEGV, Segmentation fault.\n 0x00005555555fb385 in mem_ap_write_u32 (ap\u003d0x0, address\u003d3758157296, value\u003d2690580483) at src/target/arm_adi_v5.c:291\n 291                             CSW_32BIT | (ap-\u003ecsw_value \u0026 CSW_ADDRINC_MASK),\n (gdb) bt\n #0  0x00005555555fb385 in mem_ap_write_u32 (ap\u003d0x0, address\u003d3758157296, value\u003d2690580483) at src/target/arm_adi_v5.c:291\n #1  0x00005555555fb4ed in mem_ap_write_atomic_u32 (ap\u003d0x0, address\u003daddress@entry\u003d3758157296, value\u003d\u003coptimized out\u003e) at src/target/arm_adi_v5.c:314\n #2  0x0000555555704d89 in cortex_m_write_debug_halt_mask (target\u003d0x555555a06350, target\u003d0x555555a06350, mask_off\u003d0, mask_on\u003d2) at src/target/cortex_m.c:428\n #3  cortex_m_halt (target\u003d0x555555a06350) at src/target/cortex_m.c:1021\n #4  0x000055555560c1ba in target_halt (target\u003d0x555555a06350) at src/target/target.c:594\n #5  0x0000555555611c26 in handle_halt_command (cmd\u003d0x7fffffffdca0) at src/target/target.c:3311\n #6  0x000055555563eabc in run_command (num_words\u003d2, words\u003d0x555555a4eda0, c\u003d0x555555a13ba0, context\u003d0x5555559b52a0) at src/helper/command.c:536\n #7  exec_command (argv\u003d0x7fffffffddb0, argc\u003d2, c\u003d0x555555a13ba0, cmd_ctx\u003d0x5555559b52a0, interp\u003d0x5555559b5300) at src/helper/command.c:904\n #8  jim_command_dispatch (interp\u003d0x5555559b5300, argc\u003d2, argv\u003d0x7fffffffddb0) at src/helper/command.c:967\n #9  0x00005555557ae23a in JimInvokeCommand (interp\u003dinterp@entry\u003d0x5555559b5300, objc\u003dobjc@entry\u003d2, objv\u003dobjv@entry\u003d0x7fffffffddb0) at jimtcl/jim.c:10682\n #10 0x00005555557aec43 in Jim_EvalObj (interp\u003d0x5555559b5300, scriptObjPtr\u003d0x555555a3da80) at jimtcl/jim.c:11175\n #11 0x0000555555611500 in target_handle_event (target\u003dtarget@entry\u003d0x555555a06350, e\u003de@entry\u003dTARGET_EVENT_GDB_ATTACH) at src/target/target.c:5103\n #12 0x00005555556116b6 in target_call_event_callbacks (target\u003dtarget@entry\u003d0x555555a06350, event\u003devent@entry\u003dTARGET_EVENT_GDB_ATTACH) at src/target/target.c:1847\n #13 0x000055555562dcd7 in gdb_new_connection (connection\u003d0x555555a4cfa0) at src/server/gdb_server.c:1037\n #14 0x0000555555635e37 in add_connection (cmd_ctx\u003d0x5555559b52a0, service\u003d0x555555a4b440) at src/server/server.c:91\n #15 server_loop (command_context\u003dcommand_context@entry\u003d0x5555559b52a0) at src/server/server.c:541\n #16 0x00005555555b58a0 in openocd_thread (cmd_ctx\u003d0x5555559b52a0, argv\u003d0x7fffffffe188, argc\u003d\u003coptimized out\u003e) at src/openocd.c:373\n #17 openocd_main (argc\u003d\u003coptimized out\u003e, argv\u003d0x7fffffffe188) at src/openocd.c:412\n ...\n\nThe problem is that before this change debug_ap cannot just unexpectedly disappear. Now it does. It looks we need to recheck all code using debug_ap!","commit_id":"35a503b08d145edbd81519f9471b480292062bb5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"d00d2d64ee37be303444f99971ba682d3162153c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f017e66e_2a30a423","in_reply_to":"dbbb5750_7ad846cc","updated":"2022-12-10 17:58:44.000000000","message":"What about https://review.openocd.org/7392/ ?\nIt reverts to the old behavior of keeping the AP if it was already set in previous examine.","commit_id":"35a503b08d145edbd81519f9471b480292062bb5"}],"src/target/arm_adi_v5.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"a9f03f900bf2171af74096d192d7f9b057df07f4","unresolved":true,"context_lines":[{"line_number":1866,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":1867,"context_line":"\t\treturn retval;"},{"line_number":1868,"context_line":""},{"line_number":1869,"context_line":"\tif (is_64bit_ap(ap)) {"},{"line_number":1870,"context_line":"\t\tbaseaddr \u003d (((target_addr_t)baseaddr_upper) \u003c\u003c 32) | baseaddr_lower;"},{"line_number":1871,"context_line":"\t\tcommand_print(CMD, \"0x%016\" PRIx64, baseaddr);"},{"line_number":1872,"context_line":"\t} else"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"c1caaa1e_86e7421c","line":1869,"updated":"2021-11-19 14:15:22.000000000","message":"use of \"ap\" _AFTER_ dap_put_ap(ap).\nIt works now on ADIv5, but could be a problem later.\nI will fix it!","commit_id":"b500034a6cee4d42440d5d86d9e4b210f12a9442"}],"src/target/arm_adi_v5.h":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"03fec272ab849ac7f717245e6b741945aa95891f","unresolved":true,"context_lines":[{"line_number":249,"context_line":"\tuint32_t cfg_reg;"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"\t/* references counter:"},{"line_number":252,"context_line":"\t * BIT(0) is set only for value changed during config phase;"},{"line_number":253,"context_line":"\t * normal increment/decrement in steps of +2/-2 */"},{"line_number":254,"context_line":"\tunsigned int refcount;"},{"line_number":255,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"592817f3_77f679cb","line":252,"range":{"start_line":252,"start_character":4,"end_line":252,"end_character":60},"updated":"2021-11-19 12:26:01.000000000","message":"The description is far from sufficient.\nrefcount is (ab)used as a black magic, so at least explain that once configured ap never gets released to keep its configuration.\nI would prefer adding\n  bool has_been_configured\n\nas much easier to understand than playing odd-even. And would save special dap_get_config_ap()","commit_id":"b500034a6cee4d42440d5d86d9e4b210f12a9442"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"a9f03f900bf2171af74096d192d7f9b057df07f4","unresolved":true,"context_lines":[{"line_number":249,"context_line":"\tuint32_t cfg_reg;"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"\t/* references counter:"},{"line_number":252,"context_line":"\t * BIT(0) is set only for value changed during config phase;"},{"line_number":253,"context_line":"\t * normal increment/decrement in steps of +2/-2 */"},{"line_number":254,"context_line":"\tunsigned int refcount;"},{"line_number":255,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"5eebb779_6026ffe8","line":252,"range":{"start_line":252,"start_character":4,"end_line":252,"end_character":60},"in_reply_to":"592817f3_77f679cb","updated":"2021-11-19 14:15:22.000000000","message":"Agree, it would be more readable by splitting it in counter and flag.\nMaybe a better flag\u0027s name is \"is_get_during_config\".\nBut I will keep dap_get_config_ap()! For I will not let other part of code to play with the bool flag outside of this API: dap_get_ap()/dap_get_config_ap()/dap_put_ap()","commit_id":"b500034a6cee4d42440d5d86d9e4b210f12a9442"}]}
