Merge pull request #665 from riscv/examined

Don't reexamine targets until it's time.
This commit is contained in:
Tim Newsome 2021-12-03 14:34:07 -08:00 committed by GitHub
commit cb4876d80c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 1 deletions

View File

@ -770,6 +770,12 @@ static int jtag_enable_callback(enum jtag_event event, void *priv)
return target_examine_one(target);
}
/* When this is true, it's OK to call examine() again in the hopes that this time
* it will work. Earlier than that there is probably other initialization that
* needs to happen (like scanning the JTAG chain) before examine should be
* called. */
static bool examine_attempted;
/* Targets that correctly implement init + examine, i.e.
* no communication with target during init:
*
@ -780,6 +786,8 @@ int target_examine(void)
int retval = ERROR_OK;
struct target *target;
examine_attempted = true;
for (target = all_targets; target; target = target->next) {
/* defer examination, but don't skip it */
if (!target->tap->enabled) {
@ -3047,7 +3055,7 @@ static int handle_target(void *priv)
*/
target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
}
if (target->backoff.times > 0) {
if (target->backoff.times > 0 && examine_attempted) {
LOG_DEBUG("[%s] Polling failed, trying to reexamine", target_name(target));
target_reset_examined(target);
retval = target_examine_one(target);