)]}'
{"id":"openocd~master~Iabcfa1fd64a48febb0f759a213f15d69621ea5cf","project":"openocd","branch":"master","attention_set":{},"removed_from_attention_set":{"1000853":{"account":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"last_update":"2026-03-01 19:42:39.000000000","reason":"Change was submitted"},"1000021":{"account":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"last_update":"2026-02-21 17:58:46.000000000","reason":"\u003cGERRIT_ACCOUNT_1000021\u003e replied on the change","reason_account":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"}},"1000687":{"account":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"last_update":"2026-03-01 19:42:39.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"Iabcfa1fd64a48febb0f759a213f15d69621ea5cf","subject":"target/arm_adi_v5: search for multiple AP types much more effective way","status":"MERGED","created":"2026-02-04 12:38:07.000000000","updated":"2026-03-01 19:42:39.000000000","submitted":"2026-03-01 19:42:39.000000000","submitter":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"total_comment_count":12,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"9439","meta_rev_id":"da6fa8d9785e90cb15b1c24e3e4f2b0541b3d820","_number":9439,"owner":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},{"value":0,"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2026-03-01 19:42:39.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Code-Review":{"approved":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"all":[{"tag":"autogenerated:gerrit:merged","value":1,"date":"2026-03-01 19:42:39.000000000","permitted_voting_range":{"min":1,"max":2},"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},{"tag":"autogenerated:gerrit:merged","value":2,"date":"2026-03-01 19:42:39.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},{"value":0,"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]}],"values":{"-2":"This shall not be merged","-1":"I would prefer this is not merged as is"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"}],"REVIEWER":[{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-02-04 12:38:21.000000000","updated_by":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-02-04 13:05:41.000000000","updated_by":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-02-04 16:11:36.000000000","updated_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"reviewer":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"state":"CC"},{"updated":"2026-02-12 19:53:40.000000000","updated_by":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"reviewer":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"state":"REVIEWER"}],"messages":[{"id":"2b5054f6568ad8004788a7dfc9d5680fb61e3225","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"real_author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"date":"2026-02-04 12:38:07.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"a8f0d3a05ec85525f71d34a49d9fe24287ed8b96","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2026-02-04 13:05:41.000000000","message":"Patch Set 1: Verified+1\n\nBuild Successful \n\nhttps://build.openocd.org/job/openocd-gerrit-build/21742/ : SUCCESS\n\nhttps://build.openocd.org/job/openocd-gerrit/22630/ : SUCCESS","accounts_in_message":[],"_revision_number":1},{"id":"93c8536bdac4819a871e56ba1c5398fb1c83a6be","author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"real_author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"date":"2026-02-04 16:11:36.000000000","message":"Patch Set 1:\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"60b3841e227e62e6b29e18c7961b57a7e7e0bb07","author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"real_author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"date":"2026-02-04 17:54:03.000000000","message":"Patch Set 1:\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"ec6bab45e9dd48031996d5200220a121b0127511","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"real_author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"date":"2026-02-04 19:23:12.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":2},{"id":"9e1f5c11d94d493e5b026f8cfa4ab6d7384626ad","author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"real_author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"date":"2026-02-04 19:50:42.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"afb0edc6899cb7c2a6930d74b87043484243e9c6","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2026-02-04 22:10:27.000000000","message":"Patch Set 2: Verified+1\n\nBuild Successful \n\nhttps://build.openocd.org/job/openocd-gerrit-build/21763/ : SUCCESS\n\nhttps://build.openocd.org/job/openocd-gerrit/22653/ : SUCCESS","accounts_in_message":[],"_revision_number":2},{"id":"8b34721b911f67e1407417bec6fc84154cb3d60e","author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"real_author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"date":"2026-02-12 19:53:40.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"bf2ade3eced53ce9838229fe44e620f2f13bffc1","author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"real_author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"date":"2026-02-16 09:19:35.000000000","message":"Patch Set 2: Code-Review+1\n\n(2 comments)","accounts_in_message":[],"_revision_number":2},{"id":"ea8647f9b65f5cede510bb65523e68addaa39ee8","author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"real_author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"date":"2026-02-16 10:03:32.000000000","message":"Patch Set 2: Code-Review+2\n\n(3 comments)","accounts_in_message":[],"_revision_number":2},{"id":"b44a97fe5c6eb1bb90b20943f815dbec1f1e8d92","author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"real_author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"date":"2026-02-21 17:58:46.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"da6fa8d9785e90cb15b1c24e3e4f2b0541b3d820","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"real_author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"date":"2026-03-01 19:42:39.000000000","message":"Change has been successfully cherry-picked as 84f88140031b09b7fc88e077fb640276d55402ed","accounts_in_message":[],"_revision_number":3}],"current_revision":"84f88140031b09b7fc88e077fb640276d55402ed","revisions":{"81cb2fd3e1f0751ab42461a4accb9c3180a9851b":{"kind":"REWORK","_number":1,"created":"2026-02-04 12:38:07.000000000","uploader":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"ref":"refs/changes/39/9439/1","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/39/9439/1","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/1 \u0026\u0026 git checkout -b change-9439 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/39/9439/1","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"db34f6f0a71baa9c97794cb347dc3c74b3ef729d","subject":"target: arm_dap: Fix crash in \u0027dap info\u0027 command"}],"author":{"name":"Tomas Vanek","email":"vanekt@fbl.cz","date":"2026-02-04 11:45:41.000000000","tz":60},"committer":{"name":"Tomas Vanek","email":"vanekt@fbl.cz","date":"2026-02-04 12:37:25.000000000","tz":60},"subject":"target/arm_adi_v5: search for multiple AP types much more effective way","message":"target/arm_adi_v5: search for multiple AP types much more effective way\n\nCortex-M debug AP could be on AHB3 or AHB5.\nFinding AHB3 is fast as AP usually has a low address.\nOn the other hand, finding AP on the AHB5 equipped device is weird\nwithout this patch. cortex_m_find_mem_ap()\nfirst tries to read IDR from all possible 256 ADIv5 APs and checks\nfor AHB3 ID and if that fails, starts over and search for AHB5.\nIt takes long time (74 msec on fast USB HS based STLINK V3J15M7)\nand logs lot of rubbish:\n\nDebug: 168 117  target_examine_one(): [stm32u3x.cpu] Examination started\nDebug: 169 117  target_call_event_callbacks(): event 19 (examine-start)\nDebug: 170 117 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x0 get 1\nDebug: 171 118 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x0 put 0\nDebug: 172 118 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x1 get 1\nDebug: 173 118 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x1 put 0\nDebug: 174 118 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x2 get 1\nDebug: 175 119 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x2 put 0\n...\nDebug: 188 123 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x9 get 1\nDebug: 189 123  stlink_usb_error_check(): STLINK_BAD_AP_ERROR\nDebug: 190 123 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x9 put 0\nDebug: 191 123 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0xa get 1\nDebug: 192 123  stlink_usb_error_check(): STLINK_BAD_AP_ERROR\nDebug: 193 123 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0xa put 0\n...\nDebug: 926 190 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0xff get 1\nDebug: 927 191  stlink_usb_error_check(): STLINK_BAD_AP_ERROR\nDebug: 928 191 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0xff put 0\nDebug: 929 191 arm_adi_v5.c:1154 dap_find_get_ap(): No MEM-AP AHB3 found\nDebug: 930 191 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x0 get 1\nDebug: 931 191 arm_adi_v5.c:1144 dap_find_get_ap(): Found MEM-AP AHB5\n at AP index: 0 (IDR\u003d0x14770015)\n\nIntroduce dap_find_by_types_get_ap() to search for the array of AP IDs.\n\nWith the patch cortex_m_find_mem_ap() succeeds immediately:\n\nDebug: 168 118  target_examine_one(): [stm32u3x.cpu] Examination started\nDebug: 169 118  target_call_event_callbacks(): event 19 (examine-start)\nDebug: 170 118 arm_adi_v5.c:1222 dap_get_ap(): refcount AP#0x0 get 1\nDebug: 171 118 arm_adi_v5.c:1150 dap_find_by_types_get_ap(): Found MEM-AP\n AHB5 at AP index: 0 (IDR\u003d0x14770015)\n\nChange-Id: Iabcfa1fd64a48febb0f759a213f15d69621ea5cf\nSigned-off-by: Tomas Vanek \u003cvanekt@fbl.cz\u003e\n"}},"84f88140031b09b7fc88e077fb640276d55402ed":{"kind":"REWORK","_number":3,"created":"2026-03-01 19:42:39.000000000","uploader":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"ref":"refs/changes/39/9439/3","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/39/9439/3","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/3 \u0026\u0026 git checkout -b change-9439 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/39/9439/3","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"70525731872b26b9c64c2ec6617b927045d41dae","subject":"server/gdb: Add support for NVM banks without sectors"}],"author":{"name":"Tomas Vanek","email":"vanekt@fbl.cz","date":"2026-02-04 11:45:41.000000000","tz":60},"committer":{"name":"Tomas Vanek","email":"vanekt@fbl.cz","date":"2026-03-01 19:42:39.000000000","tz":0},"subject":"target/arm_adi_v5: search for multiple AP types much more effective way","message":"target/arm_adi_v5: search for multiple AP types much more effective way\n\nCortex-M debug AP could be on AHB3 or AHB5.\nFinding AHB3 is fast as AP usually has a low address.\nOn the other hand, finding AP on the AHB5 equipped device is weird\nwithout this patch. cortex_m_find_mem_ap()\nfirst tries to read IDR from all possible 256 ADIv5 APs and checks\nfor AHB3 ID and if that fails, starts over and search for AHB5.\nIt takes long time (74 msec on fast USB HS based STLINK V3J15M7)\nand logs lot of rubbish:\n\nDebug: 168 117  target_examine_one(): [stm32u3x.cpu] Examination started\nDebug: 169 117  target_call_event_callbacks(): event 19 (examine-start)\nDebug: 170 117 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x0 get 1\nDebug: 171 118 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x0 put 0\nDebug: 172 118 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x1 get 1\nDebug: 173 118 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x1 put 0\nDebug: 174 118 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x2 get 1\nDebug: 175 119 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x2 put 0\n...\nDebug: 188 123 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x9 get 1\nDebug: 189 123  stlink_usb_error_check(): STLINK_BAD_AP_ERROR\nDebug: 190 123 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x9 put 0\nDebug: 191 123 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0xa get 1\nDebug: 192 123  stlink_usb_error_check(): STLINK_BAD_AP_ERROR\nDebug: 193 123 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0xa put 0\n...\nDebug: 926 190 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0xff get 1\nDebug: 927 191  stlink_usb_error_check(): STLINK_BAD_AP_ERROR\nDebug: 928 191 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0xff put 0\nDebug: 929 191 arm_adi_v5.c:1154 dap_find_get_ap(): No MEM-AP AHB3 found\nDebug: 930 191 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x0 get 1\nDebug: 931 191 arm_adi_v5.c:1144 dap_find_get_ap(): Found MEM-AP AHB5\n at AP index: 0 (IDR\u003d0x14770015)\n\nIntroduce dap_find_by_types_get_ap() to search for the array of AP IDs.\n\nWith the patch cortex_m_find_mem_ap() succeeds immediately:\n\nDebug: 168 118  target_examine_one(): [stm32u3x.cpu] Examination started\nDebug: 169 118  target_call_event_callbacks(): event 19 (examine-start)\nDebug: 170 118 arm_adi_v5.c:1222 dap_get_ap(): refcount AP#0x0 get 1\nDebug: 171 118 arm_adi_v5.c:1150 dap_find_by_types_get_ap(): Found MEM-AP\n AHB5 at AP index: 0 (IDR\u003d0x14770015)\n\nChange-Id: Iabcfa1fd64a48febb0f759a213f15d69621ea5cf\nFixes: commit 0d47d85ff5d3 (\"target/cortex_m: Add support for AHB5-AP\")\nSigned-off-by: Tomas Vanek \u003cvanekt@fbl.cz\u003e\nReviewed-on: https://review.openocd.org/c/openocd/+/9439\nTested-by: jenkins\nReviewed-by: Marc Schink \u003cdev@zapb.de\u003e\n"}},"c42e5ae5daf36d9c2211f627b8529974cf3b133c":{"kind":"REWORK","_number":2,"created":"2026-02-04 19:23:12.000000000","uploader":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"ref":"refs/changes/39/9439/2","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/39/9439/2","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/2 \u0026\u0026 git checkout -b change-9439 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/39/9439/2","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/39/9439/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"db34f6f0a71baa9c97794cb347dc3c74b3ef729d","subject":"target: arm_dap: Fix crash in \u0027dap info\u0027 command"}],"author":{"name":"Tomas Vanek","email":"vanekt@fbl.cz","date":"2026-02-04 11:45:41.000000000","tz":60},"committer":{"name":"Tomas Vanek","email":"vanekt@fbl.cz","date":"2026-02-04 19:22:28.000000000","tz":60},"subject":"target/arm_adi_v5: search for multiple AP types much more effective way","message":"target/arm_adi_v5: search for multiple AP types much more effective way\n\nCortex-M debug AP could be on AHB3 or AHB5.\nFinding AHB3 is fast as AP usually has a low address.\nOn the other hand, finding AP on the AHB5 equipped device is weird\nwithout this patch. cortex_m_find_mem_ap()\nfirst tries to read IDR from all possible 256 ADIv5 APs and checks\nfor AHB3 ID and if that fails, starts over and search for AHB5.\nIt takes long time (74 msec on fast USB HS based STLINK V3J15M7)\nand logs lot of rubbish:\n\nDebug: 168 117  target_examine_one(): [stm32u3x.cpu] Examination started\nDebug: 169 117  target_call_event_callbacks(): event 19 (examine-start)\nDebug: 170 117 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x0 get 1\nDebug: 171 118 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x0 put 0\nDebug: 172 118 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x1 get 1\nDebug: 173 118 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x1 put 0\nDebug: 174 118 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x2 get 1\nDebug: 175 119 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x2 put 0\n...\nDebug: 188 123 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x9 get 1\nDebug: 189 123  stlink_usb_error_check(): STLINK_BAD_AP_ERROR\nDebug: 190 123 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0x9 put 0\nDebug: 191 123 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0xa get 1\nDebug: 192 123  stlink_usb_error_check(): STLINK_BAD_AP_ERROR\nDebug: 193 123 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0xa put 0\n...\nDebug: 926 190 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0xff get 1\nDebug: 927 191  stlink_usb_error_check(): STLINK_BAD_AP_ERROR\nDebug: 928 191 arm_adi_v5.c:1226 dap_put_ap(): refcount AP#0xff put 0\nDebug: 929 191 arm_adi_v5.c:1154 dap_find_get_ap(): No MEM-AP AHB3 found\nDebug: 930 191 arm_adi_v5.c:1201 dap_get_ap(): refcount AP#0x0 get 1\nDebug: 931 191 arm_adi_v5.c:1144 dap_find_get_ap(): Found MEM-AP AHB5\n at AP index: 0 (IDR\u003d0x14770015)\n\nIntroduce dap_find_by_types_get_ap() to search for the array of AP IDs.\n\nWith the patch cortex_m_find_mem_ap() succeeds immediately:\n\nDebug: 168 118  target_examine_one(): [stm32u3x.cpu] Examination started\nDebug: 169 118  target_call_event_callbacks(): event 19 (examine-start)\nDebug: 170 118 arm_adi_v5.c:1222 dap_get_ap(): refcount AP#0x0 get 1\nDebug: 171 118 arm_adi_v5.c:1150 dap_find_by_types_get_ap(): Found MEM-AP\n AHB5 at AP index: 0 (IDR\u003d0x14770015)\n\nChange-Id: Iabcfa1fd64a48febb0f759a213f15d69621ea5cf\nFixes: commit 0d47d85ff5d3 (\"target/cortex_m: Add support for AHB5-AP\")\nSigned-off-by: Tomas Vanek \u003cvanekt@fbl.cz\u003e\n"}}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"}}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dMAX -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX","-label:Verified\u003dMIN"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX","-label:Code-Review\u003dMIN"],"failing_atoms":[]}}]}
