mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-25 11:44:22 +07:00
c457d9cf25
ICL has so many planes that it can easily exceed the maximum effective memory bandwidth of the system. We must therefore check that we don't exceed that limit. The algorithm is very magic number heavy and lacks sufficient explanation for now. We also have no sane way to query the memory clock and timings, so we must rely on a combination of raw readout from the memory controller and hardcoded assumptions. The memory controller values obviously change as the system jumps between the different SAGV points, so we try to stabilize it first by disabling SAGV for the duration of the readout. The utilized bandwidth is tracked via a device wide atomic private object. That is actually not robust because we can't afford to enforce strict global ordering between the pipes. Thus I think I'll need to change this to simply chop up the available bandwidth between all the active pipes. Each pipe can then do whatever it wants as long as it doesn't exceed its budget. That scheme will also require that we assume that any number of planes could be active at any time. TODO: make it robust and deal with all the open questions v2: Sleep longer after disabling SAGV v3: Poll for the dclk to get raised (seen it take 250ms!) If the system has 2133MT/s memory then we pointlessly wait one full second :( v4: Use the new pcode interface to get the qgv points rather that using hardcoded numbers v5: Move the pcode stuff into intel_bw.c (Matt) s/intel_sagv_info/intel_qgv_info/ Do the NV12/P010 as per spec for now (Matt) s/IS_ICELAKE/IS_GEN11/ v6: Ignore bandwidth limits if the pcode query fails Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Acked-by: Clint Taylor <Clinton.A.Taylor@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190524153614.32410-1-ville.syrjala@linux.intel.com
232 lines
5.8 KiB
Makefile
232 lines
5.8 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for the drm device driver. This driver provides support for the
|
|
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
|
|
|
|
# Add a set of useful warning flags and enable -Werror for CI to prevent
|
|
# trivial mistakes from creeping in. We have to do this piecemeal as we reject
|
|
# any patch that isn't warning clean, so turning on -Wall -Wextra (or W=1) we
|
|
# need to filter out dubious warnings. Still it is our interest
|
|
# to keep running locally with W=1 C=1 until we are completely clean.
|
|
#
|
|
# Note the danger in using -Wall -Wextra is that when CI updates gcc we
|
|
# will most likely get a sudden build breakage... Hopefully we will fix
|
|
# new warnings before CI updates!
|
|
subdir-ccflags-y := -Wall -Wextra
|
|
subdir-ccflags-y += $(call cc-disable-warning, unused-parameter)
|
|
subdir-ccflags-y += $(call cc-disable-warning, type-limits)
|
|
subdir-ccflags-y += $(call cc-disable-warning, missing-field-initializers)
|
|
subdir-ccflags-y += $(call cc-disable-warning, implicit-fallthrough)
|
|
subdir-ccflags-y += $(call cc-disable-warning, unused-but-set-variable)
|
|
# clang warnings
|
|
subdir-ccflags-y += $(call cc-disable-warning, sign-compare)
|
|
subdir-ccflags-y += $(call cc-disable-warning, sometimes-uninitialized)
|
|
subdir-ccflags-y += $(call cc-disable-warning, initializer-overrides)
|
|
subdir-ccflags-y += $(call cc-disable-warning, uninitialized)
|
|
subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror
|
|
|
|
# Fine grained warnings disable
|
|
CFLAGS_i915_pci.o = $(call cc-disable-warning, override-init)
|
|
CFLAGS_intel_fbdev.o = $(call cc-disable-warning, override-init)
|
|
|
|
subdir-ccflags-y += \
|
|
$(call as-instr,movntdqa (%eax)$(comma)%xmm0,-DCONFIG_AS_MOVNTDQA)
|
|
|
|
# Extra header tests
|
|
include $(src)/Makefile.header-test
|
|
|
|
subdir-ccflags-y += -I$(src)
|
|
|
|
# Please keep these build lists sorted!
|
|
|
|
# core driver code
|
|
i915-y += i915_drv.o \
|
|
i915_irq.o \
|
|
i915_params.o \
|
|
i915_pci.o \
|
|
i915_suspend.o \
|
|
i915_sysfs.o \
|
|
intel_csr.o \
|
|
intel_device_info.o \
|
|
intel_pm.o \
|
|
intel_runtime_pm.o \
|
|
intel_wakeref.o \
|
|
intel_uncore.o
|
|
|
|
# core library code
|
|
i915-y += \
|
|
i915_memcpy.o \
|
|
i915_mm.o \
|
|
i915_sw_fence.o \
|
|
i915_syncmap.o \
|
|
i915_user_extensions.o
|
|
|
|
i915-$(CONFIG_COMPAT) += i915_ioc32.o
|
|
i915-$(CONFIG_DEBUG_FS) += i915_debugfs.o intel_pipe_crc.o
|
|
i915-$(CONFIG_PERF_EVENTS) += i915_pmu.o
|
|
|
|
# "Graphics Technology" (aka we talk to the gpu)
|
|
obj-y += gt/
|
|
gt-y += \
|
|
gt/intel_breadcrumbs.o \
|
|
gt/intel_context.o \
|
|
gt/intel_engine_cs.o \
|
|
gt/intel_engine_pm.o \
|
|
gt/intel_gt_pm.o \
|
|
gt/intel_hangcheck.o \
|
|
gt/intel_lrc.o \
|
|
gt/intel_reset.o \
|
|
gt/intel_ringbuffer.o \
|
|
gt/intel_mocs.o \
|
|
gt/intel_sseu.o \
|
|
gt/intel_workarounds.o
|
|
gt-$(CONFIG_DRM_I915_SELFTEST) += \
|
|
gt/mock_engine.o
|
|
i915-y += $(gt-y)
|
|
|
|
# GEM (Graphics Execution Management) code
|
|
i915-y += \
|
|
i915_active.o \
|
|
i915_cmd_parser.o \
|
|
i915_gem_batch_pool.o \
|
|
i915_gem_clflush.o \
|
|
i915_gem_context.o \
|
|
i915_gem_dmabuf.o \
|
|
i915_gem_evict.o \
|
|
i915_gem_execbuffer.o \
|
|
i915_gem_fence_reg.o \
|
|
i915_gem_gtt.o \
|
|
i915_gem_internal.o \
|
|
i915_gem.o \
|
|
i915_gem_object.o \
|
|
i915_gem_pm.o \
|
|
i915_gem_render_state.o \
|
|
i915_gem_shrinker.o \
|
|
i915_gem_stolen.o \
|
|
i915_gem_tiling.o \
|
|
i915_gem_userptr.o \
|
|
i915_gemfs.o \
|
|
i915_globals.o \
|
|
i915_query.o \
|
|
i915_request.o \
|
|
i915_scheduler.o \
|
|
i915_timeline.o \
|
|
i915_trace_points.o \
|
|
i915_vma.o \
|
|
intel_wopcm.o
|
|
|
|
# general-purpose microcontroller (GuC) support
|
|
i915-y += intel_uc.o \
|
|
intel_uc_fw.o \
|
|
intel_guc.o \
|
|
intel_guc_ads.o \
|
|
intel_guc_ct.o \
|
|
intel_guc_fw.o \
|
|
intel_guc_log.o \
|
|
intel_guc_submission.o \
|
|
intel_huc.o \
|
|
intel_huc_fw.o
|
|
|
|
# autogenerated null render state
|
|
i915-y += intel_renderstate_gen6.o \
|
|
intel_renderstate_gen7.o \
|
|
intel_renderstate_gen8.o \
|
|
intel_renderstate_gen9.o
|
|
|
|
# modesetting core code
|
|
i915-y += intel_audio.o \
|
|
intel_atomic.o \
|
|
intel_atomic_plane.o \
|
|
intel_bios.o \
|
|
intel_bw.o \
|
|
intel_cdclk.o \
|
|
intel_color.o \
|
|
intel_combo_phy.o \
|
|
intel_connector.o \
|
|
intel_display.o \
|
|
intel_dpio_phy.o \
|
|
intel_dpll_mgr.o \
|
|
intel_fbc.o \
|
|
intel_fifo_underrun.o \
|
|
intel_frontbuffer.o \
|
|
intel_hdcp.o \
|
|
intel_hotplug.o \
|
|
intel_overlay.o \
|
|
intel_psr.o \
|
|
intel_quirks.o \
|
|
intel_sideband.o \
|
|
intel_sprite.o
|
|
i915-$(CONFIG_ACPI) += intel_acpi.o intel_opregion.o
|
|
i915-$(CONFIG_DRM_FBDEV_EMULATION) += intel_fbdev.o
|
|
|
|
# modesetting output/encoder code
|
|
i915-y += dvo_ch7017.o \
|
|
dvo_ch7xxx.o \
|
|
dvo_ivch.o \
|
|
dvo_ns2501.o \
|
|
dvo_sil164.o \
|
|
dvo_tfp410.o \
|
|
icl_dsi.o \
|
|
intel_crt.o \
|
|
intel_ddi.o \
|
|
intel_dp_aux_backlight.o \
|
|
intel_dp_link_training.o \
|
|
intel_dp_mst.o \
|
|
intel_dp.o \
|
|
intel_dsi.o \
|
|
intel_dsi_dcs_backlight.o \
|
|
intel_dsi_vbt.o \
|
|
intel_dvo.o \
|
|
intel_gmbus.o \
|
|
intel_hdmi.o \
|
|
intel_lspcon.o \
|
|
intel_lvds.o \
|
|
intel_panel.o \
|
|
intel_sdvo.o \
|
|
intel_tv.o \
|
|
vlv_dsi.o \
|
|
vlv_dsi_pll.o \
|
|
intel_vdsc.o
|
|
|
|
# Post-mortem debug and GPU hang state capture
|
|
i915-$(CONFIG_DRM_I915_CAPTURE_ERROR) += i915_gpu_error.o
|
|
i915-$(CONFIG_DRM_I915_SELFTEST) += \
|
|
selftests/i915_random.o \
|
|
selftests/i915_selftest.o \
|
|
selftests/igt_flush_test.o \
|
|
selftests/igt_gem_utils.o \
|
|
selftests/igt_live_test.o \
|
|
selftests/igt_reset.o \
|
|
selftests/igt_spinner.o
|
|
|
|
# virtual gpu code
|
|
i915-y += i915_vgpu.o
|
|
|
|
# perf code
|
|
i915-y += i915_perf.o \
|
|
i915_oa_hsw.o \
|
|
i915_oa_bdw.o \
|
|
i915_oa_chv.o \
|
|
i915_oa_sklgt2.o \
|
|
i915_oa_sklgt3.o \
|
|
i915_oa_sklgt4.o \
|
|
i915_oa_bxt.o \
|
|
i915_oa_kblgt2.o \
|
|
i915_oa_kblgt3.o \
|
|
i915_oa_glk.o \
|
|
i915_oa_cflgt2.o \
|
|
i915_oa_cflgt3.o \
|
|
i915_oa_cnl.o \
|
|
i915_oa_icl.o
|
|
|
|
ifeq ($(CONFIG_DRM_I915_GVT),y)
|
|
i915-y += intel_gvt.o
|
|
include $(src)/gvt/Makefile
|
|
endif
|
|
|
|
# LPE Audio for VLV and CHT
|
|
i915-y += intel_lpe_audio.o
|
|
|
|
obj-$(CONFIG_DRM_I915) += i915.o
|
|
obj-$(CONFIG_DRM_I915_GVT_KVMGT) += gvt/kvmgt.o
|