)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"14a7dbcd85b47e449926c32db73dabee84fe15a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4003d3b8_cd7afc6b","updated":"2021-09-07 09:33:53.000000000","message":"Yes, agree, this is the change I suggested. Code is ok.\nBut would be good to add in the commit message the list of targets that could have a regression, something like:\nThis change makes consistent the value of examine flag with the successfully execution of the target examination. On some target (arm7_9, cortex_m, mem_ap, ori1k, riscv013) the new behavior is different in case of examination failure and could introduce a regression. In case of regression, the fix should be addressed in the target\u0027s code.","commit_id":"a94844f7ff5244671bf3b776a26d45dc99e4495a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"c8bf0c329f60a856e1538d7c05dbb482e7fa35e9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ddac52b6_762da338","updated":"2021-09-07 13:27:17.000000000","message":"let\u0027s keep it simple as first step","commit_id":"21cd5d3c4299ecca507f75ffc46f16b64e0f27ce"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9954dc0e5da416550af17a579517c8b680cb03e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"47167d18_7ffd00d0","updated":"2021-11-24 05:35:29.000000000","message":"And two exceptions to the previous rule:\n\n2151: target: reexamine after polling succeeds again | https://review.openocd.org/c/openocd/+/2151\n\nIMO kind of paranoia. There are more things that would break if the target is changed on-the-fly...\n\n3076: Add -defer-examine option to target create command | https://review.openocd.org/c/openocd/+/3076\n\nHere the misuse of examined flag silently snakes in. The logic of defer examine requires to reset the flag during reset. So no more one-time-init, but at least targets w/o defer option are not affected.","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"a6b9e0b836cd6d95924ca2bdda5d235df7a5d9c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f4b808fe_6c0efba3","updated":"2022-09-29 09:55:41.000000000","message":"Antonio,\nI learned from conversation at https://github.com/zephyrproject-rtos/zephyr/issues/50590\nthat zephyrproject prefer to run OpenOCD without `reset_config connect_assert_srst`.\nThis way is not as reliable as with \u0027connect_assert_srst` and OpenOCD inevitably shows some errors as it tries to talk to a sleeping and unresponsive target. Moreover it seems that nobody of us tests such use case.\n\nI updated \n6745: target/cortex_m: make reset robust again | https://review.openocd.org/c/openocd/+/6745\nand submitted 3 new changes dependent on it.\n\nWith these changes \u0027reset halt/init\u0027 expends the best effort to restore debug communication with the target. It is reliable with \u0027reset_config srst_nogate\u0027. Without \u0027srst_nogate\u0027 it still depends on target (it\u0027s by principle, AFAIK we cannot do more)\n\nBecause this problem confirmed my fears about possible regressions from this change, I recommend to re-consider including\n6753: Revert \"target: reset target examined flag if target::examine() fails\" | https://review.openocd.org/c/openocd/+/6753\nto rc2\n\n","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4352c9d319273116fa41637b7a2caaa098a2d5d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"44e8d049_c9e064f8","updated":"2022-09-23 19:51:49.000000000","message":"Antonio,\nthe problem is an unresponsive target in sleep mode.\nI managed to reproduce it on STM32F3 discovery.\nNo problem if STM demo app is loaded. As soon as Zephyr runs on target,\nST-Link shows waits and then fails\n 576 command.c:155 script_debug(): command - stm32f3x.cpu invoke-event examine-start\n 576 command.c:155 script_debug(): command - stm32f3x.cpu arp_examine allow-defer\n 576 hla_target.c:595 adapter_read_memory(): adapter_read_memory 0xe000ed00 4 1\n 579 stlink_usb.c:1083 stlink_usb_error_check(): wait status SWD_DP_WAIT (0x14)\n 582 stlink_usb.c:1083 stlink_usb_error_check(): wait status SWD_DP_WAIT (0x14)\n 586 stlink_usb.c:1083 stlink_usb_error_check(): wait status SWD_DP_WAIT (0x14)\n 592 stlink_usb.c:1083 stlink_usb_error_check(): wait status SWD_DP_WAIT (0x14)\n 602 stlink_usb.c:1083 stlink_usb_error_check(): wait status SWD_DP_WAIT (0x14)\n 621 stlink_usb.c:1083 stlink_usb_error_check(): wait status SWD_DP_WAIT (0x14)\n 656 stlink_usb.c:1080 stlink_usb_error_check(): wait status SWD_AP_WAIT (0x10)\n 723 stlink_usb.c:1080 stlink_usb_error_check(): wait status SWD_AP_WAIT (0x10)\n 854 stlink_usb.c:1083 stlink_usb_error_check(): wait status SWD_DP_WAIT (0x14)\n 854 target.c:2634 target_read_u32(): address: 0xe000ed00 failed\n 855 command.c:155 script_debug(): command - stm32f3x.cpu invoke-event examine-fail\n\nI recommended them to use connect_assert_srst, it solves the problem.","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5859f8ecab8879b6e19bd1e2d3d9324502017678","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c49a24a2_76848cf4","updated":"2022-09-23 20:55:27.000000000","message":"I have tested today with connect_assert_srst, not enough!\nThe command in zephyr script is (removing long paths):\nopenocd -s \u003cpath\u003e -f openocd.cfg \u0027-c init\u0027 \u0027-c targets\u0027 -c \u0027reset halt\u0027 -c \u0027flash zephyr.hex\u0027 -c \u0027reset halt\u0027 -c \u0027verify_image zephyr.hex\u0027 -c \u0027reset run\u0027 -c shutdown\nWithout connect_assert_srst it gets error at the first \u0027reset halt\u0027 because target is not halted.\nWith connect_assert_srst it gets error at last \u0027reset run\u0027.\nBut I had no time to dig more, I will try in next days","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"74c728cd3bc1afde5f1eb56de78322398a2cab61","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b9d4a411_7efe96d8","updated":"2021-11-24 09:51:44.000000000","message":"I\u0027m ok for a compromise to not delay v0.12.0, taking more effort after the release.\nYour proposal seams ok. And check better if 6545 needs extension in other flash drivers. \nI would also like to get Tarek feedback about reverting this change.\n\nClearly we have to discriminate between:\n- target has been examined at least once, so we know its detail (type, mem size, ...)\n- target is currently accessible. This could be an extension of target-\u003estate, but it could be problematic having a target that continuously toggle between, e.g., TARGET_RUNNING and TARGET_NOT_ACCESSIBLE. Maybe better having an independent flag on top of target-\u003estate saying that currently we cannot confirm previous state.\n\nWhat you mean for target_is_memory_accessible()? Being able to access target\u0027s memory?\nFor Cortex-M the memory is accessible even when target is kept in reset, but Cortex-A needs target in halt because its memory is accessed running some instruction in the core.","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"e0b23e6f6e5ff19baac32a57f6750e5b60db4854","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"85af76de_259acbc8","updated":"2022-09-14 09:42:05.000000000","message":"More TODOs after examine flag usage cleanup:\n6964: When poll() fails, only poll every 5s. | https://review.openocd.org/c/openocd/+/6964\n7189: target/target: enhanced defer_examine support | https://review.openocd.org/c/openocd/+/7189","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3b9346e3b0de0c326c01f8fb7d5d3e77f4b07a0b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"dabc780f_a8bef44b","updated":"2021-11-24 09:24:26.000000000","message":"My conclusion:\n\nbefore 0.12:\n- revert this change\n- fix access to cortex_m-\u003ecore_info from flash drivers\nWe can merge \n6545: fix crash in case cortex_m-\u003ecore_info is not set | https://review.openocd.org/c/openocd/+/6545\n as is or introduce a safe helper cortex_m_partno()\n\nafter 0.12:\n- change tests of !target_was_examined() in all targets xxxx_examine() to target_is_first_time_examine__broken_always_true()\n- introduce target_is_first_time_examine() and switch to it only on targets where we know for sure the examination is correctly split to the first-time and run-always parts and we can test the target. I bet that currently no target with non-trivial examination fulfil this criterion.\n\n- change tests of target_was_examined() in all target memory access routines\nI would prefer to remove these tests and make target specific routines safe from NULL dereference and similar faults in *any* target state. There is no problem if they return an error in such state as the memory access can fail any time. As an alternative we can introduce a new method in struct target_type and wrapper target_is_memory_accessible()\n\n- then we can remove all calls target_set_examined() from xxxx_examine() and set/reset examine flag only on return of target-\u003etype-\u003eexamine().\n\nI think it\u0027s not too far from your ideas, Antonio?","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"592ce2db703a748cfa43b767a8afe2f616f1e597","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e38c2059_10714d09","updated":"2021-11-24 04:11:46.000000000","message":"The deeper I dig into, the more I want to revert.\n\nThe marked comments ensure that only 2) is correct from two examine flag purposes.\nSo the change totally breaks original intention of the flag","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"d2c018931e356766f1f3a6c60d5c96c36855a0a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"15ed8011_a9dffef4","updated":"2022-09-23 13:08:05.000000000","message":"This patch is breaking Zephyr:\nhttps://github.com/zephyrproject-rtos/zephyr/issues/50590\nZephyr uses to fork a branch from OpenOCD.\nRecently Zephyr switched to a branch forked from 480d4e17727864f75dc60e22cb1a42e022cb1db3 https://review.openocd.org/7005/ plus minor changes.\nBut the same issue is reported on v0.12.0-rc1 and bisect points to this change.\nIt would be good to get a fix for rc2","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"6fd0c28e2863cc635bff5c51a5edc8c1bddccd31","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"91b1a275_86fddf8e","updated":"2021-11-23 08:39:53.000000000","message":"Unfortunately even the \"reduced\" patch set 3 makes problems.\n\nThe examined flag is tested for two different purposes:\n\n1) Do we need to re-examine the target? The reply was often incorrect before this change and now is reliable.\n\n2) Has been the target configured enough to do some work with? Some critical points even read the flag as \u0027has *ever* been configured\u0027. I has some logic: If OpenOCD once examined let\u0027s say a Cortex-M4 CPU, it very likely that it is still connected to very same CPU even if the communication is broken for some reason. The flag worked more-or-less this way before the change.\n\nAfter merging the change \u0027reset halt\u0027 does not work on not responding Cortex-M. It also means that a Kinetis MCU running in RESET/WDOG loop due to blank flash cannot neither be stopped nor put under the control of OpenOCD. It\u0027s a serious regression as the new blank chip cannot be programmed, isn\u0027t it?\n\nI\u0027m working on a fix for Cortex-M reset. However I have no idea how deep is the impact on other targets.","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"56f0ee3673abdab411d01b651613c258473e7249","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"def88ced_401db13f","updated":"2021-11-24 04:29:04.000000000","message":"https://review.openocd.org/gitweb?p\u003dopenocd.git;a\u003dcommit;h\u003d9ac7cdec82c19481b79f2effcefb7106dd7ade41","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"7aa9e7f4e797030a497f7b9d249ee20593ca81fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5883e21d_0b4cb640","in_reply_to":"44e8d049_c9e064f8","updated":"2022-09-23 19:54:18.000000000","message":"\u003e I recommended them to use connect_assert_srst, it solves the problem.\n\nAt least on srst_nogate capable devices...","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"d80164fdb894619ffd60833c363cb29dc5d6c140","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6ec5b71b_8ce88dd4","in_reply_to":"47167d18_7ffd00d0","updated":"2021-11-24 07:06:46.000000000","message":"\u003e 2151: target: reexamine after polling succeeds again | https://review.openocd.org/c/openocd/+/2151\n\u003e \n\u003e IMO kind of paranoia. There are more things that would break if the target is changed on-the-fly...\n\nOops, didn\u0027t read carefully. This had to be a solution for the target which did some vital part of examination on the first time only.\n\nDamn, what a mess!","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"bd8feaeb88cb45358c237eea61e7de475f4b035a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c9220d98_d683c617","in_reply_to":"91b1a275_86fddf8e","updated":"2021-11-23 12:35:53.000000000","message":"6745: target/cortex_m: make reset robust again [WIP] | https://review.openocd.org/c/openocd/+/6745","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3d7032c6e7a131db8a0949d93b9d71b3102096dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"88e63ce9_9940fbf2","in_reply_to":"c49a24a2_76848cf4","updated":"2022-09-23 22:29:13.000000000","message":"\u003e I have tested today with connect_assert_srst, not enough!\n\nStrange. Device? -d log?\n\n\u003e With connect_assert_srst it gets error at last \u0027reset run\u0027.\n\nAt least the new image gets flashed.\nI get the error here iff I prepend the last \u0027reset run\u0027 by clearing DBGMCU_CR.\nI used it to restore the POR state and replicate the problem without power cycling.\nEither DBGMCU_CR was not set correctly or debug fails on sleeping CPU anyway?","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"}],"src/target/cortex_m.c":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"18ea14622d5f7ca9a6ada3ad1d202a08564b2a20","unresolved":true,"context_lines":[{"line_number":2058,"context_line":""},{"line_number":2059,"context_line":"\tif (!target_was_examined(target)) {"},{"line_number":2060,"context_line":"\t\t/* Read from Device Identification Registers */"},{"line_number":2061,"context_line":"\t\tretval \u003d target_read_u32(target, CPUID, \u0026cpuid);"},{"line_number":2062,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":2063,"context_line":"\t\t\treturn retval;"},{"line_number":2064,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6b0e8469_897e0b47","line":2061,"range":{"start_line":2061,"start_character":11,"end_line":2061,"end_character":49},"updated":"2021-09-07 10:16:35.000000000","message":"Looks like chicken-egg problem here. target_read_u32() refuses to read anything until target is examined.","commit_id":"a94844f7ff5244671bf3b776a26d45dc99e4495a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"ad412f9710b9d0a479b4e885eedd238607c5a4cb","unresolved":false,"context_lines":[{"line_number":2058,"context_line":""},{"line_number":2059,"context_line":"\tif (!target_was_examined(target)) {"},{"line_number":2060,"context_line":"\t\t/* Read from Device Identification Registers */"},{"line_number":2061,"context_line":"\t\tretval \u003d target_read_u32(target, CPUID, \u0026cpuid);"},{"line_number":2062,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":2063,"context_line":"\t\t\treturn retval;"},{"line_number":2064,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"58909919_d809f935","line":2061,"range":{"start_line":2061,"start_character":11,"end_line":2061,"end_character":49},"in_reply_to":"1654de2b_d3768f3d","updated":"2021-09-07 22:10:15.000000000","message":"Done","commit_id":"a94844f7ff5244671bf3b776a26d45dc99e4495a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"e0bd859f46f64b3961a6403371377eeff748bc60","unresolved":true,"context_lines":[{"line_number":2058,"context_line":""},{"line_number":2059,"context_line":"\tif (!target_was_examined(target)) {"},{"line_number":2060,"context_line":"\t\t/* Read from Device Identification Registers */"},{"line_number":2061,"context_line":"\t\tretval \u003d target_read_u32(target, CPUID, \u0026cpuid);"},{"line_number":2062,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":2063,"context_line":"\t\t\treturn retval;"},{"line_number":2064,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"df7f2ced_20f37ed3","line":2061,"range":{"start_line":2061,"start_character":11,"end_line":2061,"end_character":49},"in_reply_to":"6b0e8469_897e0b47","updated":"2021-09-07 10:35:02.000000000","message":"what about keeping that target_set_examined in t-\u003eexamine() and do target_reset_examined(t) if t-\u003eexamine() return failure code ?","commit_id":"a94844f7ff5244671bf3b776a26d45dc99e4495a"},{"author":{"_account_id":1000863,"name":"Tarek BOCHKATI","email":"tarek.bouchkati@gmail.com","username":"BouchkatiTarek"},"change_message_id":"918975e9f7e5382da8699b36c12246b20f5d9268","unresolved":true,"context_lines":[{"line_number":2058,"context_line":""},{"line_number":2059,"context_line":"\tif (!target_was_examined(target)) {"},{"line_number":2060,"context_line":"\t\t/* Read from Device Identification Registers */"},{"line_number":2061,"context_line":"\t\tretval \u003d target_read_u32(target, CPUID, \u0026cpuid);"},{"line_number":2062,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":2063,"context_line":"\t\t\treturn retval;"},{"line_number":2064,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"1654de2b_d3768f3d","line":2061,"range":{"start_line":2061,"start_character":11,"end_line":2061,"end_character":49},"in_reply_to":"92e0f58c_66632014","updated":"2021-09-07 11:10:39.000000000","message":"I have tried to do so, but tracking the callchains of target_was_examined was too much effort espacially for the case of arm7_9_common, I will give it another try and let you know by the result","commit_id":"a94844f7ff5244671bf3b776a26d45dc99e4495a"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"2af6902629644182c27f9968fac4de927f137728","unresolved":true,"context_lines":[{"line_number":2058,"context_line":""},{"line_number":2059,"context_line":"\tif (!target_was_examined(target)) {"},{"line_number":2060,"context_line":"\t\t/* Read from Device Identification Registers */"},{"line_number":2061,"context_line":"\t\tretval \u003d target_read_u32(target, CPUID, \u0026cpuid);"},{"line_number":2062,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":2063,"context_line":"\t\t\treturn retval;"},{"line_number":2064,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"92e0f58c_66632014","line":2061,"range":{"start_line":2061,"start_character":11,"end_line":2061,"end_character":49},"in_reply_to":"df7f2ced_20f37ed3","updated":"2021-09-07 11:01:53.000000000","message":"Introducing a target_read_u32_during_examine() is probably not enough.\nWhat about left target_set_examined() only to targets that need it (with a comment \"why\") and move outside the final test to set or reset it?","commit_id":"a94844f7ff5244671bf3b776a26d45dc99e4495a"}],"src/target/target.h":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"592ce2db703a748cfa43b767a8afe2f616f1e597","unresolved":true,"context_lines":[{"line_number":441,"context_line":"}"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"/** Sets the @c examined flag for the given target. */"},{"line_number":444,"context_line":"/** Use in target-\u003etype-\u003eexamine() after one-time setup is done. */"},{"line_number":445,"context_line":"static inline void target_set_examined(struct target *target)"},{"line_number":446,"context_line":"{"},{"line_number":447,"context_line":"\ttarget-\u003eexamined \u003d true;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"d1d0339a_1fbebf4f","line":444,"range":{"start_line":444,"start_character":35,"end_line":444,"end_character":63},"updated":"2021-11-24 04:11:46.000000000","message":"One-time setup!","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"}],"src/target/target_type.h":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"592ce2db703a748cfa43b767a8afe2f616f1e597","unresolved":true,"context_lines":[{"line_number":225,"context_line":"\t * is enabled by a JRC.  It may also be called during some"},{"line_number":226,"context_line":"\t * parts of the reset sequence."},{"line_number":227,"context_line":"\t *"},{"line_number":228,"context_line":"\t * For one-time initialization tasks, use target_was_examined()"},{"line_number":229,"context_line":"\t * and target_set_examined().  For example, probe the hardware"},{"line_number":230,"context_line":"\t * before setting up chip-specific state, and then set that"},{"line_number":231,"context_line":"\t * flag so you don\u0027t do that again."},{"line_number":232,"context_line":"\t */"},{"line_number":233,"context_line":"\tint (*examine)(struct target *target);"},{"line_number":234,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"fa30eb04_441eb8bb","line":231,"range":{"start_line":228,"start_character":4,"end_line":231,"end_character":36},"updated":"2021-11-24 04:11:46.000000000","message":"!!!!","commit_id":"98d9f1168cbdc59e4c2c0b1f01b225a4df9ad98a"}]}
