mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 15:07:13 -04:00
drm/xe: Move d3cold_allowed decision all together.
And let's use the VRAM threshold to keep d3cold temporarily disabled. With this we have the ability to run D3Cold experiments just by touching the vram_d3cold_threshold sysfs entry. Cc: Anshuman Gupta <anshuman.gupta@intel.com> Reviewed-by: Anshuman Gupta <anshuman.gupta@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
@@ -806,20 +806,7 @@ static int xe_pci_runtime_idle(struct device *dev)
|
||||
struct pci_dev *pdev = to_pci_dev(dev);
|
||||
struct xe_device *xe = pdev_to_xe_device(pdev);
|
||||
|
||||
if (!xe->d3cold.capable) {
|
||||
xe->d3cold.allowed = false;
|
||||
} else {
|
||||
xe_pm_d3cold_allowed_toggle(xe);
|
||||
|
||||
/*
|
||||
* TODO: d3cold should be allowed (true) if
|
||||
* (IS_DGFX(xe) && !xe_device_mem_access_ongoing(xe))
|
||||
* but maybe include some other conditions. So, before
|
||||
* we can re-enable the D3cold, we need to:
|
||||
* 1. rewrite the VRAM save / restore to avoid buffer object locks
|
||||
*/
|
||||
xe->d3cold.allowed = false;
|
||||
}
|
||||
xe_pm_d3cold_allowed_toggle(xe);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -342,6 +342,11 @@ void xe_pm_d3cold_allowed_toggle(struct xe_device *xe)
|
||||
u64 vram_used;
|
||||
int i;
|
||||
|
||||
if (!xe->d3cold.capable) {
|
||||
xe->d3cold.allowed = false;
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = XE_PL_VRAM0; i <= XE_PL_VRAM1; ++i) {
|
||||
man = ttm_manager_type(&xe->ttm, i);
|
||||
if (man) {
|
||||
|
||||
@@ -8,7 +8,12 @@
|
||||
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#define DEFAULT_VRAM_THRESHOLD 300 /* in MB */
|
||||
/*
|
||||
* TODO: Threshold = 0 will block D3Cold.
|
||||
* Before we can move this to a higher value (like 300), we need to:
|
||||
* 1. rewrite the VRAM save / restore to avoid buffer object locks
|
||||
*/
|
||||
#define DEFAULT_VRAM_THRESHOLD 0 /* in MB */
|
||||
|
||||
struct xe_device;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user