linux_dsm_epyc7002/drivers/gpu/drm/i915
Ville Syrjälä 7d423af9bf drm/i915: Implement a better i945gm vblank irq vs. C-states workaround
The current "disable C3+" workaround for the delayed vblank
irqs on i945gm no longer works. I'm not sure what changed, but
now I need to also disable C2. I also got my hands on a i915gm
machine that suffers from the same issue.

After some furious poking of registers I managed to find a
better workaround: The "Do not Turn off Core Render Clock in C
states" bit. With that I no longer have to disable any C-states,
and as a nice bonus the power cost is only ~1/4 of the
"disable C3+" method (which mind you doesn't even work anymore,
and so would have an even higher power cost if we made it work
by also disabling C2).

So let's throw out all the cpuidle/qos crap and just toggle
the magic bit as needed. And we extend the workaround to cover
i915gm as well.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191003140231.24408-1-ville.syrjala@linux.intel.com
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-10-04 18:43:49 +03:00
..
display drm/i915: Implement a better i945gm vblank irq vs. C-states workaround 2019-10-04 18:43:49 +03:00
gem drm/i915: Drop struct_mutex from around GEM initialisation 2019-10-04 15:39:43 +01:00
gt drm/i915/selftests: Drop vestigal struct_mutex guards 2019-10-04 15:39:41 +01:00
gvt drm/i915: Move context management under GEM 2019-10-04 15:39:34 +01:00
oa
selftests drm/i915: Drop struct_mutex from around GEM initialisation 2019-10-04 15:39:43 +01:00
i915_active_types.h drm/i915: Coordinate i915_active with its own mutex 2019-10-04 15:39:12 +01:00
i915_active.c drm/i915: Move idle barrier cleanup into engine-pm 2019-10-04 15:39:16 +01:00
i915_active.h drm/i915: Coordinate i915_active with its own mutex 2019-10-04 15:39:12 +01:00
i915_buddy.c
i915_buddy.h
i915_cmd_parser.c
i915_debugfs.c drm/i915: Remove struct_mutex guard for debugfs/opregion 2019-10-04 15:39:40 +01:00
i915_debugfs.h
i915_drv.c drm/i915: Move context management under GEM 2019-10-04 15:39:34 +01:00
i915_drv.h drm/i915: Implement a better i945gm vblank irq vs. C-states workaround 2019-10-04 18:43:49 +03:00
i915_fixed.h
i915_gem_evict.c drm/i915: Move request runtime management onto gt 2019-10-04 15:39:26 +01:00
i915_gem_fence_reg.c drm/i915: Pull i915_vma_pin under the vm->mutex 2019-10-04 15:39:02 +01:00
i915_gem_fence_reg.h
i915_gem_gtt.c drm/i915: Move context management under GEM 2019-10-04 15:39:34 +01:00
i915_gem_gtt.h drm/i915: Pull i915_vma_pin under the vm->mutex 2019-10-04 15:39:02 +01:00
i915_gem.c drm/i915: Drop struct_mutex from around GEM initialisation 2019-10-04 15:39:43 +01:00
i915_gem.h
i915_getparam.c drm/i915: Pass intel_gt to has-reset? 2019-09-27 23:25:14 +01:00
i915_globals.c
i915_globals.h
i915_gpu_error.c drm/i915: Remove logical HW ID 2019-10-04 15:39:30 +01:00
i915_gpu_error.h drm/i915: Remove logical HW ID 2019-10-04 15:39:30 +01:00
i915_ioc32.c
i915_irq.c drm/i915: Implement a better i945gm vblank irq vs. C-states workaround 2019-10-04 18:43:49 +03:00
i915_irq.h drm/i915: Implement a better i945gm vblank irq vs. C-states workaround 2019-10-04 18:43:49 +03:00
i915_memcpy.c
i915_memcpy.h
i915_mm.c
i915_params.c
i915_params.h
i915_pci.c drm/i915/display: abstract all vgaarb access to intel_vga.[ch] 2019-10-02 13:31:54 +03:00
i915_perf.c drm/i915: Move context management under GEM 2019-10-04 15:39:34 +01:00
i915_perf.h
i915_pmu.c
i915_pmu.h
i915_priolist_types.h
i915_pvinfo.h
i915_query.c
i915_query.h
i915_reg.h drm/i915: Implement a better i945gm vblank irq vs. C-states workaround 2019-10-04 18:43:49 +03:00
i915_request.c drm/i915: Move request runtime management onto gt 2019-10-04 15:39:26 +01:00
i915_request.h drm/i915: Move request runtime management onto gt 2019-10-04 15:39:26 +01:00
i915_scatterlist.c
i915_scatterlist.h
i915_scheduler_types.h
i915_scheduler.c
i915_scheduler.h
i915_selftest.h
i915_suspend.c drm/i915: Drop struct_mutex from suspend state save/restore 2019-10-04 15:39:41 +01:00
i915_suspend.h
i915_sw_fence_work.c
i915_sw_fence_work.h
i915_sw_fence.c
i915_sw_fence.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c drm/i915: Move context management under GEM 2019-10-04 15:39:34 +01:00
i915_sysfs.h
i915_trace_points.c
i915_trace.h drm/i915: Move context management under GEM 2019-10-04 15:39:34 +01:00
i915_user_extensions.c
i915_user_extensions.h
i915_utils.c
i915_utils.h
i915_vgpu.c
i915_vgpu.h
i915_vma.c drm/i915: Coordinate i915_active with its own mutex 2019-10-04 15:39:12 +01:00
i915_vma.h drm/i915: Pull i915_vma_pin under the vm->mutex 2019-10-04 15:39:02 +01:00
intel_csr.c
intel_csr.h
intel_device_info.c
intel_device_info.h
intel_gvt.c
intel_gvt.h
intel_pch.c
intel_pch.h
intel_pm.c
intel_pm.h
intel_runtime_pm.c drm/i915/display: abstract all vgaarb access to intel_vga.[ch] 2019-10-02 13:31:54 +03:00
intel_runtime_pm.h
intel_sideband.c
intel_sideband.h
intel_uncore.c
intel_uncore.h
intel_wakeref.c
intel_wakeref.h
intel_wopcm.c
intel_wopcm.h
Kconfig
Kconfig.debug
Kconfig.profile
Makefile drm/i915: Move request runtime management onto gt 2019-10-04 15:39:26 +01:00