Message ID | 20230525103818.877590-1-stanislaw.gruszka@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/2] accel/ivpu: Do not trigger extra VPU reset if the VPU is idle | expand |
On 5/25/2023 4:38 AM, Stanislaw Gruszka wrote: > From: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com> > > Turning off the PLL and entering D0i3 will reset the VPU so > an explicit IP reset is redundant. > But if the VPU is active, it may interfere with PLL disabling > and to avoid that, we have to issue an additional IP reset > to silence the VPU before turning off the PLL. > > Fixes: a8fed6d1e0b9 ("accel/ivpu: Fix power down sequence") > Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com> > Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> > Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
diff --git a/drivers/accel/ivpu/ivpu_hw_mtl.c b/drivers/accel/ivpu/ivpu_hw_mtl.c index 3210f1b4a7dd..012a25fae16d 100644 --- a/drivers/accel/ivpu/ivpu_hw_mtl.c +++ b/drivers/accel/ivpu/ivpu_hw_mtl.c @@ -743,9 +743,8 @@ static int ivpu_hw_mtl_power_down(struct ivpu_device *vdev) { int ret = 0; - if (ivpu_hw_mtl_reset(vdev)) { + if (!ivpu_hw_mtl_is_idle(vdev) && ivpu_hw_mtl_reset(vdev)) { ivpu_err(vdev, "Failed to reset the VPU\n"); - ret = -EIO; } if (ivpu_pll_disable(vdev)) { @@ -753,8 +752,10 @@ static int ivpu_hw_mtl_power_down(struct ivpu_device *vdev) ret = -EIO; } - if (ivpu_hw_mtl_d0i3_enable(vdev)) - ivpu_warn(vdev, "Failed to enable D0I3\n"); + if (ivpu_hw_mtl_d0i3_enable(vdev)) { + ivpu_err(vdev, "Failed to enter D0I3\n"); + ret = -EIO; + } return ret; }