linux/drivers/gpu/drm/i915
Lionel Landwerlin 0305613dbc drm/i915/perf: workaround register corruption in OATAILPTR
After having written the entire OA buffer with reports, the HW will
write again at the beginning of the OA buffer. It'll indicate it by
setting the WRAP bits in the OASTATUS register.

When a wrap happens and that at the end of the read vfunc we write the
OASTATUS register back to clear the REPORT_LOST bit, we sometimes see
that the OATAILPTR register is reset to a previous position on Gen8/9
(apparently not the case on Gen11+). This leads the next call to the
read vfunc to process reports we've already read. Because we've marked
those as read by clearing the reason & timestamp dwords, they're
discarded and a "Skipping spurious, invalid OA report" message is
emitted.

The workaround to avoid this OATAILPTR value reset seems to be to set
the wrap bits when writing back OASTATUS.

This change has no impact on userspace, it only avoids a bunch of
DRM_NOTE("Skipping spurious, invalid OA report\n") messages.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 19f81df285 ("drm/i915/perf: Add OA unit support for Gen 8+")
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201117130124.829979-1-lionel.g.landwerlin@intel.com
(cherry picked from commit 059a0beb48)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2020-11-24 09:17:41 -08:00
..
display drm/i915: Handle max_bpc==16 2020-11-19 01:52:25 -05:00
gem drm/i915/gem: Pull phys pread/pwrite implementations to the backend 2020-11-12 19:47:30 -05:00
gt drm/i915/gt: Fixup tgl mocs for PTE tracking 2020-11-19 15:10:49 -05:00
gvt drm/i915/gvt: return error when failing to take the module reference 2020-11-13 12:16:52 +08:00
selftests drm/i915/selftests: Fix wrong return value of perf_request_latency() 2020-11-16 18:06:28 -05:00
.gitignore
i915_active.c drm next for 5.10-rc1 2020-10-15 10:46:16 -07:00
i915_active.h drm/i915: Provide a fastpath for waiting on vma bindings 2020-09-07 13:29:19 +03:00
i915_active_types.h
i915_buddy.c
i915_buddy.h
i915_cmd_parser.c drm/i915: Avoid mixing integer types during batch copies 2020-09-30 14:24:54 -04:00
i915_config.c drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
i915_debugfs.c drm/i915/gem: Serialise debugfs i915_gem_objects with ctx->mutex 2020-09-30 14:24:37 -04:00
i915_debugfs.h
i915_debugfs_params.c drm/i915/params: switch to device specific parameters 2020-06-22 23:26:40 +03:00
i915_debugfs_params.h
i915_drv.c drm/i915: Reduce INTEL_DISPLAY_ENABLED to just removing the outputs 2020-09-15 14:57:13 +03:00
i915_drv.h drm/i915: Force VT'd workarounds when running as a guest OS 2020-10-21 08:32:30 -04:00
i915_fixed.h
i915_gem.c drm/i915/gem: Pull phys pread/pwrite implementations to the backend 2020-11-12 19:47:30 -05:00
i915_gem.h drm/i915: Use per object locking in execbuf, v12. 2020-09-07 14:30:07 +03:00
i915_gem_evict.c drm/i915: Handle idling during i915_gem_evict_something busy loops 2020-05-13 14:39:41 -07:00
i915_gem_gtt.c drm/i915: Update dma-attributes for our sg DMA 2020-07-07 11:00:47 +01:00
i915_gem_gtt.h drm/i915: Remove PIN_UPDATE for i915_vma_pin 2020-05-21 17:33:51 +01:00
i915_getparam.c drm/i915: add syncobj timeline support 2020-08-17 16:16:51 -04:00
i915_globals.c
i915_globals.h
i915_gpu_error.c drm/i915: Use the active reference on the vma while capturing 2020-10-19 13:29:57 -04:00
i915_gpu_error.h drm/i915: Move the engine mask to intel_gt_info 2020-07-08 21:07:11 +01:00
i915_ioc32.c i915 compat ioctl(): just use drm_ioctl_kernel() 2020-05-01 20:35:26 -04:00
i915_ioc32.h
i915_irq.c drm/i915: Introduce intel_hpd_hotplug_irqs() 2020-09-15 18:01:35 +03:00
i915_irq.h
i915_memcpy.c drm/i915: remove always-defined CONFIG_AS_MOVNTDQA 2020-04-09 00:01:59 +09:00
i915_memcpy.h
i915_mm.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
i915_params.c drm/i915: Initial implementation of PSR2 selective fetch 2020-08-17 16:17:15 -04:00
i915_params.h drm/i915: Initial implementation of PSR2 selective fetch 2020-08-17 16:17:15 -04:00
i915_pci.c drm/i915: Restore ILK-M RPS support 2020-10-29 14:20:20 -04:00
i915_perf.c drm/i915/perf: workaround register corruption in OATAILPTR 2020-11-24 09:17:41 -08:00
i915_perf.h
i915_perf_types.h drm/i915/perf: Schedule oa_config after modifying the contexts 2020-03-30 18:20:34 +01:00
i915_pmu.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
i915_pmu.h
i915_priolist_types.h drm/i915/gt: Prevent timeslicing into unpreemptable requests 2020-06-16 11:34:23 +03:00
i915_pvinfo.h
i915_query.c drm/i915/sseu: Move sseu_info under gt_info 2020-07-08 21:13:09 +01:00
i915_query.h
i915_reg.h drm/i915/perf: workaround register corruption in OATAILPTR 2020-11-24 09:17:41 -08:00
i915_request.c drm/i915: Cancel outstanding work after disabling heartbeats on an engine 2020-09-30 14:24:46 -04:00
i915_request.h drm/i915/gt: Distinguish the virtual breadcrumbs from the irq breadcrumbs 2020-09-07 14:23:55 +03:00
i915_scatterlist.c
i915_scatterlist.h
i915_scheduler.c drm/i915: Don't set queue-priority hint when supressing the reschedule 2020-05-25 15:40:26 +03:00
i915_scheduler.h drm/i915: Mark concurrent submissions with a weak-dependency 2020-05-11 10:54:04 -07:00
i915_scheduler_types.h drm/i915: Drop no-semaphore boosting 2020-05-14 06:14:33 +01:00
i915_selftest.h drm/i915/gem: Implement legacy MI_STORE_DATA_IMM 2020-05-04 15:15:04 +01:00
i915_suspend.c drm/i915: Nuke CACHE_MODE_0 save/restore 2020-09-14 16:20:57 +03:00
i915_suspend.h
i915_sw_fence.c treewide: Make all debug_obj_descriptors const 2020-09-24 21:56:25 +02:00
i915_sw_fence.h
i915_sw_fence_work.c
i915_sw_fence_work.h
i915_switcheroo.c drm/i915/switcheroo: use struct drm_device based logging 2020-04-08 13:49:35 +03:00
i915_switcheroo.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c
i915_sysfs.h
i915_trace.h drm/i915: Drop i915_request.i915 backpointer 2020-06-03 13:53:39 +01:00
i915_trace_points.c
i915_user_extensions.c
i915_user_extensions.h
i915_utils.c drm/i915: Don't taint when using fault injection 2020-07-06 19:21:07 +01:00
i915_utils.h drm/i915: Remove unused inline function drain_delayed_work() 2020-07-15 10:16:44 +01:00
i915_vgpu.c
i915_vgpu.h
i915_vma.c drm/i915: Hold onto an explicit ref to i915_vma_work.pinned 2020-11-03 19:22:42 -05:00
i915_vma.h drm/i915: Make sure execbuffer always passes ww state to i915_vma_pin. 2020-09-07 14:31:13 +03:00
i915_vma_types.h drm/i915: Export ppgtt_bind_vma 2020-07-03 15:14:35 +01:00
intel_device_info.c drm/i915: disable all display features when no display 2020-09-11 13:16:48 +03:00
intel_device_info.h drm/i915/rkl: Handle HTI 2020-08-17 16:16:07 -04:00
intel_dram.c drm/i915/dram: prefer struct drm_device based logging 2020-04-08 13:49:35 +03:00
intel_dram.h
intel_gvt.c drm/i915/params: switch to device specific parameters 2020-06-22 23:26:40 +03:00
intel_gvt.h
intel_memory_region.c drm/i915/region: fix max size calculation 2020-10-29 14:20:17 -04:00
intel_memory_region.h
intel_pch.c drm/i915/dg1: Add fake PCH 2020-07-14 02:47:21 -07:00
intel_pch.h drm/i915/dg1: Add fake PCH 2020-07-14 02:47:21 -07:00
intel_pm.c drm/i915/tgl: Fix Media power gate sequence. 2020-11-16 18:06:21 -05:00
intel_pm.h drm/i915: Fix includes and local vars order 2020-05-22 14:40:35 +01:00
intel_region_lmem.c drm/i915/params: switch to device specific parameters 2020-06-22 23:26:40 +03:00
intel_region_lmem.h
intel_runtime_pm.c Merge drm/drm-next into drm-intel-next-queued 2020-06-25 18:05:03 +03:00
intel_runtime_pm.h
intel_sideband.c drm/i915: Nuke dpio_phy_iosf_port[] 2020-09-11 16:59:49 +03:00
intel_sideband.h
intel_uncore.c drm/i915: Drop runtime-pm assert from vgpu io accessors 2020-10-21 08:32:32 -04:00
intel_uncore.h drm/i915: Use the gt in HAS_ENGINE 2020-07-08 21:07:09 +01:00
intel_wakeref.c
intel_wakeref.h
intel_wopcm.c drm/i915: Remove cnl pre-prod workarounds 2020-05-04 18:44:52 +03:00
intel_wopcm.h
Kconfig drm/i915: use vmap in i915_gem_object_map 2020-10-18 09:27:10 -07:00
Kconfig.debug drm/i915: Exclude low pages (128KiB) of stolen from use 2020-10-21 08:32:28 -04:00
Kconfig.profile drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
Kconfig.unstable
Makefile drm/i915: Factor out HDCP shim functions from dp for use by dp_mst 2020-09-01 13:02:33 +05:30
vlv_suspend.c
vlv_suspend.h