diff --git a/tt_metal/impl/device/device.cpp b/tt_metal/impl/device/device.cpp index 73e7c943437b..46e5279d0d38 100644 --- a/tt_metal/impl/device/device.cpp +++ b/tt_metal/impl/device/device.cpp @@ -584,6 +584,10 @@ void Device::reset_cores() { for (auto &id_and_cores : dispatch_cores) { for (auto it = id_and_cores.second.begin(); it != id_and_cores.second.end(); it++) { const auto &virtual_core = *it; + // For new FD init, we've already initialized dispatch cores on other devices, so don't reset here. + if (llrt::RunTimeOptions::get_instance().get_use_new_fd_init() && id_and_cores.first != this->id()) + continue; + // Only need to manually reset ethernet dispatch cores, tensix cores are all reset below. if (tt::Cluster::instance().is_ethernet_core(virtual_core, id_and_cores.first)) { // Ethernet cores won't be reset, so just signal the dispatch cores to early exit.