Unverified Commit 50e6f254 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14973 v2 fix CVE-2024-54193

Merge Pull Request from: @ci-robot 
 
PR sync from: Xiangwei Li <liwei728@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/JD55SSGA7BVJNAP7RWITVGKCPTEPF2ZD/ 
Jacek Lawrynowicz (1):
  accel/ivpu: Fix WARN in ivpu_ipc_send_receive_internal()

Krystian Pradzynski (1):
  accel/ivpu: Move set autosuspend delay to HW specific code


-- 
2.25.1
 
https://gitee.com/src-openeuler/kernel/issues/IBJCMO 
 
Link:https://gitee.com/openeuler/kernel/pulls/14973

 

Reviewed-by: default avatarXiongfeng Wang <wangxiongfeng2@huawei.com>
Signed-off-by: default avatarZhang Peng <zhangpeng362@huawei.com>
parents ac4ff86e 97b329a1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ struct ivpu_device {
		int jsm;
		int tdr;
		int reschedule_suspend;
		int autosuspend;
	} timeout;
};

+2 −0
Original line number Diff line number Diff line
@@ -124,11 +124,13 @@ static void ivpu_hw_timeouts_init(struct ivpu_device *vdev)
		vdev->timeout.jsm = 50000;
		vdev->timeout.tdr = 2000000;
		vdev->timeout.reschedule_suspend = 1000;
		vdev->timeout.autosuspend = -1;
	} else {
		vdev->timeout.boot = 1000;
		vdev->timeout.jsm = 500;
		vdev->timeout.tdr = 2000;
		vdev->timeout.reschedule_suspend = 10;
		vdev->timeout.autosuspend = 10;
	}
}

+3 −0
Original line number Diff line number Diff line
@@ -138,16 +138,19 @@ static void ivpu_hw_timeouts_init(struct ivpu_device *vdev)
		vdev->timeout.jsm = 50000;
		vdev->timeout.tdr = 2000000;
		vdev->timeout.reschedule_suspend = 1000;
		vdev->timeout.autosuspend = -1;
	} else if (ivpu_is_simics(vdev)) {
		vdev->timeout.boot = 50;
		vdev->timeout.jsm = 500;
		vdev->timeout.tdr = 10000;
		vdev->timeout.reschedule_suspend = 10;
		vdev->timeout.autosuspend = -1;
	} else {
		vdev->timeout.boot = 1000;
		vdev->timeout.jsm = 500;
		vdev->timeout.tdr = 2000;
		vdev->timeout.reschedule_suspend = 10;
		vdev->timeout.autosuspend = 10;
	}
}

+9 −7
Original line number Diff line number Diff line
@@ -287,6 +287,7 @@ int ivpu_pm_init(struct ivpu_device *vdev)
{
	struct device *dev = vdev->drm.dev;
	struct ivpu_pm_info *pm = vdev->pm;
	int delay;

	pm->vdev = vdev;
	pm->suspend_reschedule_counter = PM_RESCHEDULE_LIMIT;
@@ -294,14 +295,16 @@ int ivpu_pm_init(struct ivpu_device *vdev)
	atomic_set(&pm->in_reset, 0);
	INIT_WORK(&pm->recovery_work, ivpu_pm_recovery_work);

	pm_runtime_use_autosuspend(dev);

	if (ivpu_disable_recovery)
		pm_runtime_set_autosuspend_delay(dev, -1);
	else if (ivpu_is_silicon(vdev))
		pm_runtime_set_autosuspend_delay(dev, 100);
		delay = -1;
	else
		pm_runtime_set_autosuspend_delay(dev, 60000);
		delay = vdev->timeout.autosuspend;

	pm_runtime_use_autosuspend(dev);
	pm_runtime_set_autosuspend_delay(dev, delay);
	pm_runtime_set_active(dev);

	ivpu_dbg(vdev, PM, "Autosuspend delay = %d\n", delay);

	return 0;
}
@@ -315,7 +318,6 @@ void ivpu_pm_enable(struct ivpu_device *vdev)
{
	struct device *dev = vdev->drm.dev;

	pm_runtime_set_active(dev);
	pm_runtime_allow(dev);
	pm_runtime_mark_last_busy(dev);
	pm_runtime_put_autosuspend(dev);