diff --git a/tinygrad/runtime/support/am/amdev.py b/tinygrad/runtime/support/am/amdev.py index 78d363ee78..1bf93e8de7 100644 --- a/tinygrad/runtime/support/am/amdev.py +++ b/tinygrad/runtime/support/am/amdev.py @@ -173,7 +173,7 @@ class AMDev(PCIDevImplBase): # Init hw for IP blocks where it is needed if not self.partial_boot: if self.psp.is_sos_alive() and self.smu.is_smu_alive(): - if self.gmc.xgmi_seg_sz > 0: + if self.is_hive(): if reset_mode: return # in reset mode, do not raise raise RuntimeError("Malformed state. Use extra/amdpci/hive_reset.py to reset the hive") self.smu.mode1_reset() @@ -221,6 +221,8 @@ class AMDev(PCIDevImplBase): self.smu.set_clocks(level=0) self.ih.interrupt_handler() + def is_hive(self) -> bool: return self.gmc.xgmi_seg_sz > 0 + def paddr2mc(self, paddr:int) -> int: return self.gmc.mc_base + paddr def paddr2xgmi(self, paddr:int) -> int: return self.gmc.paddr_base + paddr def xgmi2paddr(self, xgmi_paddr:int) -> int: return xgmi_paddr - self.gmc.paddr_base diff --git a/tinygrad/runtime/support/am/ip.py b/tinygrad/runtime/support/am/ip.py index 2eb8765049..da3c663bbb 100644 --- a/tinygrad/runtime/support/am/ip.py +++ b/tinygrad/runtime/support/am/ip.py @@ -183,7 +183,8 @@ class AM_SMU(AM_IP): if self.adev.ip_ver[am.MP0_HWIP] >= (14,0,0): self._send_msg(__DEBUGSMC_MSG_Mode1Reset:=2, 0, debug=True) elif self.adev.ip_ver[am.MP0_HWIP] in {(13,0,6), (13,0,12)}: self._send_msg(self.smu_mod.PPSMC_MSG_GfxDriverReset, 1) else: self._send_msg(self.smu_mod.PPSMC_MSG_Mode1Reset, 0) - time.sleep(0.5) # 500ms + + if not self.adev.is_hive(): time.sleep(0.5) # 500ms def read_table(self, table_t, arg): if self.adev.ip_ver[am.MP0_HWIP] in {(13,0,6),(13,0,12)}: self._send_msg(self.smu_mod.PPSMC_MSG_GetMetricsTable, arg)