idle_workqueue
adev->dm.idle_workqueue = idle_create_workqueue(adev);
if (adev->dm.idle_workqueue) {
if (adev->dm.idle_workqueue->running) {
adev->dm.idle_workqueue->enable = false;
flush_work(&adev->dm.idle_workqueue->work);
kfree(adev->dm.idle_workqueue);
adev->dm.idle_workqueue = NULL;
struct idle_workqueue *idle_create_workqueue(struct amdgpu_device *adev);
struct idle_workqueue *idle_workqueue;
if (dm->idle_workqueue &&
dm->idle_workqueue->enable &&
!dm->idle_workqueue->running)
schedule_work(&dm->idle_workqueue->work);
struct idle_workqueue *idle_work;
idle_work = container_of(work, struct idle_workqueue, work);
idle_work->dm->idle_workqueue->running = true;
idle_work->dm->idle_workqueue->running = false;
struct idle_workqueue *idle_create_workqueue(struct amdgpu_device *adev)
struct idle_workqueue *idle_work;
if (adev->dm.idle_workqueue) {
seq_printf(m, "Idle workqueue - enabled: %d\n", adev->dm.idle_workqueue->enable);
seq_printf(m, "Idle workqueue - running: %d\n", adev->dm.idle_workqueue->running);
if (adev->dm.idle_workqueue) {
adev->dm.idle_workqueue->enable = enable;
if (enable && !adev->dm.idle_workqueue->running && amdgpu_dm_is_headless(adev))
schedule_work(&adev->dm.idle_workqueue->work);