)]}'
{"id":"openocd~master~I98316eb42b9f3d9c9bbbb6c73b1091b53f629092","project":"openocd","branch":"master","topic":"adiv6","attention_set":{},"removed_from_attention_set":{"1001651":{"account":{"_account_id":1001651,"name":"Florian Fainelli","email":"f.fainelli@gmail.com","username":"ffainelli"},"last_update":"2022-06-24 21:33:23.000000000","reason":"Change was submitted"},"1001824":{"account":{"_account_id":1001824,"name":"Sylvain Chouleur","email":"sylvain.chouleur@gmail.com","username":"schouleu"},"last_update":"2022-06-24 21:33:23.000000000","reason":"Change was submitted"},"1000021":{"account":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"last_update":"2022-06-24 21:33:23.000000000","reason":"Change was submitted"},"1000853":{"account":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"last_update":"2022-06-24 21:33:23.000000000","reason":"Change was submitted"},"1000863":{"account":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"last_update":"2022-06-24 21:33:23.000000000","reason":"Change was submitted"},"1000687":{"account":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"last_update":"2021-11-19 20:26:05.000000000","reason":"Tomas Vanek replied on the change"},"1001726":{"account":{"_account_id":1001726,"name":"Kevin Burke","email":"kevinb@os.amperecomputing.com","username":"kburke-ampere"},"last_update":"2022-06-24 21:33:23.000000000","reason":"Change was submitted"},"1001661":{"account":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"last_update":"2021-09-17 22:50:56.000000000","reason":"Daniel Goehring replied on the change"}},"hashtags":[],"change_id":"I98316eb42b9f3d9c9bbbb6c73b1091b53f629092","subject":"arm_adi_v5: add ap refcount and add get/put around ap use","status":"MERGED","created":"2021-08-22 22:46:14.000000000","updated":"2022-12-10 17:58:44.000000000","submitted":"2022-06-24 21:33:23.000000000","submitter":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"total_comment_count":15,"unresolved_comment_count":4,"has_review_started":true,"submission_id":"6455-adiv6","meta_rev_id":"d00d2d64ee37be303444f99971ba682d3162153c","_number":6455,"owner":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},{"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":"2022-06-24 21:33:23.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},{"value":0,"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Code-Review":{"approved":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"all":[{"tag":"autogenerated:gerrit:merged","value":2,"date":"2022-06-24 21:33:23.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},{"value":0,"_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"]},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2022-06-24 21:33:23.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"}],"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":[{"_account_id":1001651,"name":"Florian Fainelli","email":"f.fainelli@gmail.com","username":"ffainelli"},{"_account_id":1001824,"name":"Sylvain Chouleur","email":"sylvain.chouleur@gmail.com","username":"schouleu"},{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},{"_account_id":1001726,"name":"Kevin Burke","email":"kevinb@os.amperecomputing.com","username":"kburke-ampere"}],"reviewers":{"REVIEWER":[{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},{"_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"},{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},{"_account_id":1001651,"name":"Florian Fainelli","email":"f.fainelli@gmail.com","username":"ffainelli"},{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},{"_account_id":1001726,"name":"Kevin Burke","email":"kevinb@os.amperecomputing.com","username":"kburke-ampere"},{"_account_id":1001824,"name":"Sylvain Chouleur","email":"sylvain.chouleur@gmail.com","username":"schouleu"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-08-22 22:46:14.000000000","updated_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"reviewer":{"_account_id":1001824,"name":"Sylvain Chouleur","email":"sylvain.chouleur@gmail.com","username":"schouleu"},"state":"REVIEWER"},{"updated":"2021-08-22 22:46:14.000000000","updated_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"reviewer":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"state":"REVIEWER"},{"updated":"2021-08-22 22:46:14.000000000","updated_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"reviewer":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"state":"REVIEWER"},{"updated":"2021-08-22 22:46:14.000000000","updated_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"reviewer":{"_account_id":1001651,"name":"Florian Fainelli","email":"f.fainelli@gmail.com","username":"ffainelli"},"state":"REVIEWER"},{"updated":"2021-08-22 22:46:14.000000000","updated_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"reviewer":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"state":"REVIEWER"},{"updated":"2021-08-22 22:46:14.000000000","updated_by":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"reviewer":{"_account_id":1001726,"name":"Kevin Burke","email":"kevinb@os.amperecomputing.com","username":"kburke-ampere"},"state":"REVIEWER"},{"updated":"2021-08-23 03:17:19.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":"2021-11-19 12:26:01.000000000","updated_by":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"reviewer":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"state":"CC"},{"updated":"2022-01-24 07:28:52.000000000","updated_by":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"reviewer":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"state":"REVIEWER"}],"messages":[{"id":"ea9bdb48a0b803fcf02991013303bdca0a48211f","tag":"autogenerated:gerrit:newPatchSet","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":"2021-08-22 22:46:14.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"47afe2feed488382513ce9e6f8926a98f3b673f7","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2021-08-23 03:17:19.000000000","message":"Patch Set 1: Verified+1\n\nBuild Successful \n\nhttps://build.openocd.org/job/openocd-gerrit/15096/ : SUCCESS\n\nhttps://build.openocd.org/job/openocd-gerrit-build/14323/ : SUCCESS","accounts_in_message":[],"_revision_number":1},{"id":"4970a0241a7a09217951ce2229038f244875c1f9","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":"2021-09-08 20:46:36.000000000","message":"Patch Set 1: Code-Review-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"ff5e5df2a7443ff2e98a84d0f95037985cb882e2","author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"real_author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"date":"2021-09-17 22:50:56.000000000","message":"Patch Set 1: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"b4d36576226f63e5dc24a00aa3c82a447301f769","tag":"autogenerated:gerrit:newPatchSet","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":"2021-11-09 23:45:26.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"ea39ed70f9b08e8cbb3c3fd33af1afa079f2907b","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":"2021-11-09 23:52:47.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"418e0c890d9beb12fdbc59624ccd8b82dc14a4ea","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2021-11-10 00:56:23.000000000","message":"Patch Set 2: Verified+1\n\nBuild Successful \n\nhttps://build.openocd.org/job/openocd-gerrit/15479/ : SUCCESS\n\nhttps://build.openocd.org/job/openocd-gerrit-build/14698/ : SUCCESS","accounts_in_message":[],"_revision_number":2},{"id":"9311d0f819165b5fc89f34917ef67bd8fb8fb8a5","author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"real_author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"date":"2021-11-18 15:50:59.000000000","message":"Patch Set 2: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"03fec272ab849ac7f717245e6b741945aa95891f","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":"2021-11-19 12:26:01.000000000","message":"Patch Set 2:\n\n(2 comments)","accounts_in_message":[],"_revision_number":2},{"id":"a9f03f900bf2171af74096d192d7f9b057df07f4","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":"2021-11-19 14:15:22.000000000","message":"Patch Set 2:\n\n(3 comments)","accounts_in_message":[],"_revision_number":2},{"id":"4cf2b37f721b20f1ed92685debafdc712f5c8dda","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":"2021-11-19 20:26:05.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"e3bfea234a4d9b0292f6f5071aa040d92d85dbf0","tag":"autogenerated:gerrit:newPatchSet","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":"2022-01-23 21:05:11.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"7115bf826049dcddc136bf80a96677bde9e55a02","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2022-01-24 00:52:39.000000000","message":"Patch Set 3: Verified+1\n\nBuild Successful \n\nhttps://build.openocd.org/job/openocd-gerrit/15798/ : SUCCESS\n\nhttps://build.openocd.org/job/openocd-gerrit-build/15016/ : SUCCESS","accounts_in_message":[],"_revision_number":3},{"id":"e3dad1ac65457289a0a4135b243406f47b44daeb","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":"2022-01-24 07:28:52.000000000","message":"Patch Set 3: Code-Review+1","accounts_in_message":[],"_revision_number":3},{"id":"9121122c8abee0fdeb624970d72a29f0b9d95b3b","tag":"autogenerated:gerrit:newPatchSet","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":"2022-06-10 22:13:18.000000000","message":"Uploaded patch set 4: Code-Review+2: Patch Set 3 was rebased.","accounts_in_message":[],"_revision_number":4},{"id":"c061217d6cc749d6af78e33eab1f40f8ea75f6e2","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":"2022-06-10 22:27:22.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"e21913014ebad65f84a61bdf84a208c337e00596","author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"real_author":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"date":"2022-06-10 23:18:40.000000000","message":"Patch Set 4: Verified+1\n\nBuild Successful \n\nhttps://build.openocd.org/job/openocd-gerrit/16249/ : SUCCESS\n\nhttps://build.openocd.org/job/openocd-gerrit-build/15458/ : SUCCESS","accounts_in_message":[],"_revision_number":4},{"id":"f6c7dcf3aacd84c9774bfde3c61c3adbcc24b7fb","author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"real_author":{"_account_id":1001661,"name":"Daniel Goehring","email":"dgoehrin@os.amperecomputing.com","username":"dgoehrin"},"date":"2022-06-23 13:33:12.000000000","message":"Patch Set 4: Code-Review+1\n\n(2 comments)","accounts_in_message":[],"_revision_number":4},{"id":"d545a8f349f117715674aa5649c0d0a9243f8d77","tag":"autogenerated:gerrit:merged","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":"2022-06-24 21:33:23.000000000","message":"Change has been successfully cherry-picked as 35a503b08d145edbd81519f9471b480292062bb5","accounts_in_message":[],"_revision_number":5},{"id":"45cc87f05c6fe335f341d7e2713c0d0bacb7a7c8","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":"2022-12-09 10:30:08.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"d00d2d64ee37be303444f99971ba682d3162153c","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":"2022-12-10 17:58:44.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5}],"current_revision":"35a503b08d145edbd81519f9471b480292062bb5","revisions":{"b500034a6cee4d42440d5d86d9e4b210f12a9442":{"kind":"REWORK","_number":2,"created":"2021-11-09 23:45:26.000000000","uploader":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"ref":"refs/changes/55/6455/2","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/55/6455/2","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/2 \u0026\u0026 git checkout -b change-6455 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/55/6455/2","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"b2ab2241f20fd3da11c92f8edde4639ab8ce996f","subject":"jimtcl: revert temporary workaround for memory leak in jimtcl 0.80"}],"author":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2021-08-04 21:07:57.000000000","tz":120},"committer":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2021-11-09 10:38:13.000000000","tz":60},"subject":"arm_adi_v5: add ap refcount and add get/put around ap use","message":"arm_adi_v5: add ap refcount and add get/put around ap use\n\nWhile an ADIv5 DAP can only have 256 AP, ADIv6 can provide till\n2**40 (1,099,511,627,776) AP per DAP.\nThe actual trivial code implementation for ADIv5 (that uses an\narray of 256 ap in the struct adiv5_dap) cannot be extended as-is\nto handle ADIv6.\n\nThe simple array of 256 AP can be reused as a dynamic storage for\nADIv6 ap:\n- the ADIv5 AP number is replaced by the ADIv6 base address;\n- the index of the array (equal to ADIv5 AP number) has no link to\n  any ADIv6 property;\n- the ADIv6 base_address has to be searched in the array of AP.\n\nThe 256 elements in the AP array should be enough for any device\navailable today. In future it can be easily increased, if needed.\n\nTo efficiently use the 256 elements in the AP array, the code\nshould associate one element of the array to an ADIv6 AP (through\nthe AP base address), then cancel the association when the AP is\nnot anymore needed. This is important to avoid saturating the AP\narray while exploring the device through \u0027dap apreg\u0027 commands.\n\nAdd a reference counter in the struct adiv5_ap to track how many\ntimes the struct has been associated with the same base address.\nIntroduce the function dap_get_ap() to associate and return the\nstruct, and dap_put_ap() to release the struct. For the moment the\ncode covers ADIv5 only, so the association is through the index.\nUse the two functions above and dap_find_get_ap() throughout the\ncode.\nCheck the return value of dap_get_ap(). It is always not NULL in\nthe current ADIv5-only implementation, but can be NULL for ADIv6\nwhen there are no more available AP in the array.\nInstrument dap_queue_ap_read() and dap_queue_ap_write() to log an\nerror message if the AP has reference counter zero, meaning that\nthe AP has not been \u0027get\u0027 yet. This helps identifying AP used\nwithout get/put, e.g. code missed by this patch, or merged later.\nInstrument dap_cleanup_all() to log an error message if an AP has\nreference counter not zero at openocd exit, meaning that the AP\nhas not been \u0027put\u0027 yet.\n\nChange-Id: I98316eb42b9f3d9c9bbbb6c73b1091b53f629092\nSigned-off-by: Antonio Borneo \u003cborneo.antonio@gmail.com\u003e\n"}},"c1be5380397fd822ee9934a9aa6dcd29efe62869":{"kind":"REWORK","_number":3,"created":"2022-01-23 21:05:11.000000000","uploader":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"ref":"refs/changes/55/6455/3","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/55/6455/3","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/3 \u0026\u0026 git checkout -b change-6455 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/55/6455/3","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"949efd47a4e2a4c1b6a3dbda5e8f6b55f8d39a55","subject":"[WIP] arm_adi_v5: add command \u0027$dap_name dump_config\u0027"}],"author":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2021-08-04 21:07:57.000000000","tz":120},"committer":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2022-01-23 15:36:03.000000000","tz":60},"subject":"arm_adi_v5: add ap refcount and add get/put around ap use","message":"arm_adi_v5: add ap refcount and add get/put around ap use\n\nWhile an ADIv5 DAP can only have 256 AP, ADIv6 can provide till\n2**40 (1,099,511,627,776) AP per DAP.\nThe actual trivial code implementation for ADIv5 (that uses an\narray of 256 ap in the struct adiv5_dap) cannot be extended as-is\nto handle ADIv6.\n\nThe simple array of 256 AP can be reused as a dynamic storage for\nADIv6 ap:\n- the ADIv5 AP number is replaced by the ADIv6 base address;\n- the index of the array (equal to ADIv5 AP number) has no link to\n  any ADIv6 property;\n- the ADIv6 base_address has to be searched in the array of AP.\n\nThe 256 elements in the AP array should be enough for any device\navailable today. In future it can be easily increased, if needed.\n\nTo efficiently use the 256 elements in the AP array, the code\nshould associate one element of the array to an ADIv6 AP (through\nthe AP base address), then cancel the association when the AP is\nnot anymore needed. This is important to avoid saturating the AP\narray while exploring the device through \u0027dap apreg\u0027 commands.\n\nAdd a reference counter in the struct adiv5_ap to track how many\ntimes the struct has been associated with the same base address.\nIntroduce the function dap_get_ap() to associate and return the\nstruct, and dap_put_ap() to release the struct. For the moment the\ncode covers ADIv5 only, so the association is through the index.\nUse the two functions above and dap_find_get_ap() throughout the\ncode.\nCheck the return value of dap_get_ap(). It is always not NULL in\nthe current ADIv5-only implementation, but can be NULL for ADIv6\nwhen there are no more available AP in the array.\nInstrument dap_queue_ap_read() and dap_queue_ap_write() to log an\nerror message if the AP has reference counter zero, meaning that\nthe AP has not been \u0027get\u0027 yet. This helps identifying AP used\nwithout get/put, e.g. code missed by this patch, or merged later.\nInstrument dap_cleanup_all() to log an error message if an AP has\nreference counter not zero at openocd exit, meaning that the AP\nhas not been \u0027put\u0027 yet.\n\nChange-Id: I98316eb42b9f3d9c9bbbb6c73b1091b53f629092\nSigned-off-by: Antonio Borneo \u003cborneo.antonio@gmail.com\u003e\n"}},"08759a5ad82e94d0deca8b8bb9b4b7fa163cf5ad":{"kind":"REWORK","_number":1,"created":"2021-08-22 22:46:14.000000000","uploader":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"ref":"refs/changes/55/6455/1","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/55/6455/1","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/1 \u0026\u0026 git checkout -b change-6455 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/55/6455/1","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"62a78aa56d445c587db1f4d26b08bc8741fd424a","subject":"arm_adi_v5: drop ANY_ID from table dap_partnums"}],"author":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2021-08-04 21:07:57.000000000","tz":120},"committer":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2021-08-22 22:40:40.000000000","tz":120},"subject":"arm_adi_v5: add ap refcount and add get/put around ap use","message":"arm_adi_v5: add ap refcount and add get/put around ap use\n\nWhile an ADIv5 DAP can only have 256 AP, ADIv6 can provide till\n2**40 (1,099,511,627,776) AP per DAP.\nThe actual trivial code implementation for ADIv5 (that uses an\narray of 256 ap in the struct adiv5_dap) cannot be extended as-is\nto handle ADIv6.\n\nThe simple array of 256 AP can be reused as a dynamic storage for\nADIv6 ap:\n- the ADIv5 AP number is replaced by the ADIv6 base address;\n- the index of the array (equal to ADIv5 AP number) as no link to\n  any ADIv6 property;\n- the ADIv6 base_address has to be searched in the array of AP.\n\nThe 256 elements in the AP array should be enough for any device\navailable today. In future it can be easily increased, if needed.\n\nTo efficiently use the 256 elements in the AP array, the code\nshould associate one element of the array to an ADIv6 AP (through\nthe AP base address), then cancel the association when the AP is\nnot anymore needed. This is important to avoid saturating the AP\narray while exploring the device through \u0027dap apreg\u0027 commands.\n\nAdd a reference counter in the struct adiv5_ap to track how many\ntimes the struct has been associated with the same base address.\nIntroduce the function dap_get_ap() to associate and return the\nstruct, and dap_put_ap() to release the struct. For the moment the\ncode covers ADIv5 only, so the association is through the index.\nUse the two functions above and dap_find_get_ap() throughout the\ncode.\nCheck the return value of dap_get_ap(). It is always not NULL in\nthe current ADIv5-only implementation, but can be NULL for ADIv6\nwhen there are no more available AP in the array.\nInstrument dap_queue_ap_read() and dap_queue_ap_write() to log an\nerror message if the AP has reference counter zero, meaning that\nthe AP has not been \u0027get\u0027 yet. This helps identifying AP used\nwithout get/put, e.g. code missed by this patch, or merged later.\nInstrument dap_cleanup_all() to log an error message if an AP has\nreference counter not zero at openocd exit, meaning that the AP\nhas not been \u0027put\u0027 yet.\n\nChange-Id: I98316eb42b9f3d9c9bbbb6c73b1091b53f629092\nSigned-off-by: Antonio Borneo \u003cborneo.antonio@gmail.com\u003e\n"}},"ea75b53a0861f72701c15984bf06b995d033184a":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2022-06-10 22:13:18.000000000","uploader":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"ref":"refs/changes/55/6455/4","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/55/6455/4","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/4 \u0026\u0026 git checkout -b change-6455 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/55/6455/4","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"480d4e17727864f75dc60e22cb1a42e022cb1db3","subject":"semihosting: fix accessing memory outside the bounds of the fn array"}],"author":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2021-08-04 21:07:57.000000000","tz":120},"committer":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2022-06-10 22:05:46.000000000","tz":120},"subject":"arm_adi_v5: add ap refcount and add get/put around ap use","message":"arm_adi_v5: add ap refcount and add get/put around ap use\n\nWhile an ADIv5 DAP can only have 256 AP, ADIv6 can provide till\n2**40 (1,099,511,627,776) AP per DAP.\nThe actual trivial code implementation for ADIv5 (that uses an\narray of 256 ap in the struct adiv5_dap) cannot be extended as-is\nto handle ADIv6.\n\nThe simple array of 256 AP can be reused as a dynamic storage for\nADIv6 ap:\n- the ADIv5 AP number is replaced by the ADIv6 base address;\n- the index of the array (equal to ADIv5 AP number) has no link to\n  any ADIv6 property;\n- the ADIv6 base_address has to be searched in the array of AP.\n\nThe 256 elements in the AP array should be enough for any device\navailable today. In future it can be easily increased, if needed.\n\nTo efficiently use the 256 elements in the AP array, the code\nshould associate one element of the array to an ADIv6 AP (through\nthe AP base address), then cancel the association when the AP is\nnot anymore needed. This is important to avoid saturating the AP\narray while exploring the device through \u0027dap apreg\u0027 commands.\n\nAdd a reference counter in the struct adiv5_ap to track how many\ntimes the struct has been associated with the same base address.\nIntroduce the function dap_get_ap() to associate and return the\nstruct, and dap_put_ap() to release the struct. For the moment the\ncode covers ADIv5 only, so the association is through the index.\nUse the two functions above and dap_find_get_ap() throughout the\ncode.\nCheck the return value of dap_get_ap(). It is always not NULL in\nthe current ADIv5-only implementation, but can be NULL for ADIv6\nwhen there are no more available AP in the array.\nInstrument dap_queue_ap_read() and dap_queue_ap_write() to log an\nerror message if the AP has reference counter zero, meaning that\nthe AP has not been \u0027get\u0027 yet. This helps identifying AP used\nwithout get/put, e.g. code missed by this patch, or merged later.\nInstrument dap_cleanup_all() to log an error message if an AP has\nreference counter not zero at openocd exit, meaning that the AP\nhas not been \u0027put\u0027 yet.\n\nChange-Id: I98316eb42b9f3d9c9bbbb6c73b1091b53f629092\nSigned-off-by: Antonio Borneo \u003cborneo.antonio@gmail.com\u003e\n"}},"35a503b08d145edbd81519f9471b480292062bb5":{"kind":"NO_CODE_CHANGE","_number":5,"created":"2022-06-24 21:33:23.000000000","uploader":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"ref":"refs/changes/55/6455/5","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/55/6455/5","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/5 \u0026\u0026 git checkout -b change-6455 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/55/6455/5","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/55/6455/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"480d4e17727864f75dc60e22cb1a42e022cb1db3","subject":"semihosting: fix accessing memory outside the bounds of the fn array"}],"author":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2021-08-04 21:07:57.000000000","tz":120},"committer":{"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","date":"2022-06-24 21:33:23.000000000","tz":0},"subject":"arm_adi_v5: add ap refcount and add get/put around ap use","message":"arm_adi_v5: add ap refcount and add get/put around ap use\n\nWhile an ADIv5 DAP can only have 256 AP, ADIv6 can provide till\n2**40 (1,099,511,627,776) AP per DAP.\nThe actual trivial code implementation for ADIv5 (that uses an\narray of 256 ap in the struct adiv5_dap) cannot be extended as-is\nto handle ADIv6.\n\nThe simple array of 256 AP can be reused as a dynamic storage for\nADIv6 ap:\n- the ADIv5 AP number is replaced by the ADIv6 base address;\n- the index of the array (equal to ADIv5 AP number) has no link to\n  any ADIv6 property;\n- the ADIv6 base_address has to be searched in the array of AP.\n\nThe 256 elements in the AP array should be enough for any device\navailable today. In future it can be easily increased, if needed.\n\nTo efficiently use the 256 elements in the AP array, the code\nshould associate one element of the array to an ADIv6 AP (through\nthe AP base address), then cancel the association when the AP is\nnot anymore needed. This is important to avoid saturating the AP\narray while exploring the device through \u0027dap apreg\u0027 commands.\n\nAdd a reference counter in the struct adiv5_ap to track how many\ntimes the struct has been associated with the same base address.\nIntroduce the function dap_get_ap() to associate and return the\nstruct, and dap_put_ap() to release the struct. For the moment the\ncode covers ADIv5 only, so the association is through the index.\nUse the two functions above and dap_find_get_ap() throughout the\ncode.\nCheck the return value of dap_get_ap(). It is always not NULL in\nthe current ADIv5-only implementation, but can be NULL for ADIv6\nwhen there are no more available AP in the array.\nInstrument dap_queue_ap_read() and dap_queue_ap_write() to log an\nerror message if the AP has reference counter zero, meaning that\nthe AP has not been \u0027get\u0027 yet. This helps identifying AP used\nwithout get/put, e.g. code missed by this patch, or merged later.\nInstrument dap_cleanup_all() to log an error message if an AP has\nreference counter not zero at openocd exit, meaning that the AP\nhas not been \u0027put\u0027 yet.\n\nChange-Id: I98316eb42b9f3d9c9bbbb6c73b1091b53f629092\nSigned-off-by: Antonio Borneo \u003cborneo.antonio@gmail.com\u003e\nReviewed-on: https://review.openocd.org/c/openocd/+/6455\nReviewed-by: Daniel Goehring \u003cdgoehrin@os.amperecomputing.com\u003e\nTested-by: jenkins\n"}}},"requirements":[],"submit_records":[{"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":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"}}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dCustom-Rule"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dCustom-Rule"],"failing_atoms":[]}}]}
