)]}'
{"id":"openocd~master~I658141d6826e3f34e2abd8aface35d4297a77e58","project":"openocd","branch":"master","hashtags":[],"change_id":"I658141d6826e3f34e2abd8aface35d4297a77e58","subject":"target: arm926ejs Resolve Unable to set 32 bit software breakpoint","status":"NEW","created":"2025-01-02 18:35:53.000000000","updated":"2025-01-02 18:49:44.000000000","submit_type":"CHERRY_PICK","submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"f33249579efdb85e3b18457a962da888ba1a02e1","_number":8687,"owner":{"_account_id":1002343,"name":"Gabriel Volpicelli","display_name":"Gabriel","email":"gabe.volpicelli@synaptics.com","username":"gvolpicelli"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:jenkins-gerrit-trigger","value":1,"date":"2025-01-02 18:49:44.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":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_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":{"REVIEWER":[{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-01-02 18:49:44.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"}],"messages":[{"id":"666d8c9f7f4dab444909f2ae6a4a41eec5c12277","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1002343,"name":"Gabriel Volpicelli","display_name":"Gabriel","email":"gabe.volpicelli@synaptics.com","username":"gvolpicelli"},"real_author":{"_account_id":1002343,"name":"Gabriel Volpicelli","display_name":"Gabriel","email":"gabe.volpicelli@synaptics.com","username":"gvolpicelli"},"date":"2025-01-02 18:35:53.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"f33249579efdb85e3b18457a962da888ba1a02e1","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":"2025-01-02 18:49:44.000000000","message":"Patch Set 1: Verified+1\n\nBuild Successful \n\nhttps://build.openocd.org/job/openocd-gerrit/20466/ : SUCCESS\n\nhttps://build.openocd.org/job/openocd-gerrit-build/19618/ : SUCCESS","accounts_in_message":[],"_revision_number":1}],"current_revision":"281ac84f956f9baf13ca8bb3e86a896bf2230f57","revisions":{"281ac84f956f9baf13ca8bb3e86a896bf2230f57":{"kind":"REWORK","_number":1,"created":"2025-01-02 18:35:53.000000000","uploader":{"_account_id":1002343,"name":"Gabriel Volpicelli","display_name":"Gabriel","email":"gabe.volpicelli@synaptics.com","username":"gvolpicelli"},"ref":"refs/changes/87/8687/1","fetch":{"anonymous http":{"url":"https://review.openocd.org/openocd","ref":"refs/changes/87/8687/1","commands":{"Branch":"git fetch https://review.openocd.org/openocd refs/changes/87/8687/1 \u0026\u0026 git checkout -b change-8687 FETCH_HEAD","Checkout":"git fetch https://review.openocd.org/openocd refs/changes/87/8687/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.openocd.org/openocd refs/changes/87/8687/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.openocd.org/openocd refs/changes/87/8687/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.openocd.org/openocd refs/changes/87/8687/1","Reset To":"git fetch https://review.openocd.org/openocd refs/changes/87/8687/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"5233312ea5725dfcb8b8e0baee103017531ba54f","subject":"configure: fix dependency of bitbang from dummy adapter"}],"author":{"name":"Gabriel Volpicelli","email":"gabe.volpicelli@synaptics.com","date":"2025-01-02 18:33:05.000000000","tz":-480},"committer":{"name":"Gabriel Volpicelli","email":"gabe.volpicelli@synaptics.com","date":"2025-01-02 18:33:05.000000000","tz":-480},"subject":"target: arm926ejs Resolve Unable to set 32 bit software breakpoint","message":"target: arm926ejs Resolve Unable to set 32 bit software breakpoint\n\nThe arm926ejs_write_memory function calls armv4_5_mmu_write_physical to\nwrite directly to physical memory for 32 and 16 bit writes.\nWhen it does so, it bypasses the dcache. For these writes, the dcache\nmust be invalidated, even if the dcache is in write-through mode.\n\nIf the dcache is not invalidated after these physical writes, then\nsoftware breakpoints will not function correctly for any code page that\nis already in the dcache. This produces the \"Unable to set 32 bit\nsoftware breakpoint at address\" error message.\n\nThe sequence of events is:\n1: arm7_9_common.c writes the breakpoint instruction to memory.\n2: arm926ejs.c performs the write with a physical write directly to RAM.\n3: The cache is now incoherent.\n4: arm7_9_common.c reads the instruction back to verify it.\n5: arm926ejs.c performs the read via the incoherent cache.\n\nThis commit adds a dcache invalidate to the code path that uses\narmv4_5_mmu_write_physical for the MVA that was written.\n\nAnother potential solution is to modify the arm926ejs_write_memory\nfunction to always perform a non-pysical write and utilize the dcache\nwrite-through but this was not tested.\n\nChange-Id: I658141d6826e3f34e2abd8aface35d4297a77e58\nSigned-off-by: Gabriel Volpicelli \u003cgabe.volpicelli@synaptics.com\u003e\n"}}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"NOT_READY","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":1000014,"name":"jenkins","username":"jenkins","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"NEED"}]}],"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":"UNSATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","-label:Code-Review\u003dMIN"]}}]}
