Merge tag 'drm-next-2018-12-14' of git://anongit.freedesktop.org/drm/drm
Pull drm updates from Dave Airlie: "Core: - shared fencing staging removal - drop transactional atomic helpers and move helpers to new location - DP/MST atomic cleanup - Leasing cleanups and drop EXPORT_SYMBOL - Convert drivers to atomic helpers and generic fbdev. - removed deprecated obj_ref/unref in favour of get/put - Improve dumb callback documentation - MODESET_LOCK_BEGIN/END helpers panels: - CDTech panels, Banana Pi Panel, DLC1010GIG, - Olimex LCD-O-LinuXino, Samsung S6D16D0, Truly NT35597 WQXGA, - Himax HX8357D, simulated RTSM AEMv8. - GPD Win2 panel - AUO G101EVN010 vgem: - render node support ttm: - move global init out of drivers - fix LRU handling for ghost objects - Support for simultaneous submissions to multiple engines scheduler: - timeout/fault handling changes to help GPU recovery - helpers for hw with preemption support i915: - Scaler/Watermark fixes - DP MST + powerwell fixes - PSR fixes - Break long get/put shmemfs pages - Icelake fixes - Icelake DSI video mode enablement - Engine workaround improvements amdgpu: - freesync support - GPU reset enabled on CI, VI, SOC15 dGPUs - ABM support in DC - KFD support for vega12/polaris12 - SDMA paging queue on vega - More amdkfd code sharing - DCC scanout on GFX9 - DC kerneldoc - Updated SMU firmware for GFX8 chips - XGMI PSP + hive reset support - GPU reset - DC trace support - Powerplay updates for newer Polaris - Cursor plane update fast path - kfd dma-buf support virtio-gpu: - add EDID support vmwgfx: - pageflip with damage support nouveau: - Initial Turing TU104/TU106 modesetting support msm: - a2xx gpu support for apq8060 and imx5 - a2xx gpummu support - mdp4 display support for apq8060 - DPU fixes and cleanups - enhanced profiling support - debug object naming interface - get_iova/page pinning decoupling tegra: - Tegra194 host1x, VIC and display support enabled - Audio over HDMI for Tegra186 and Tegra194 exynos: - DMA/IOMMU refactoring - plane alpha + blend mode support - Color format fixes for mixer driver rcar-du: - R8A7744 and R8A77470 support - R8A77965 LVDS support imx: - fbdev emulation fix - multi-tiled scalling fixes - SPDX identifiers rockchip - dw_hdmi support - dw-mipi-dsi + dual dsi support - mailbox read size fix qxl: - fix cursor pinning vc4: - YUV support (scaling + cursor) v3d: - enable TFU (Texture Formatting Unit) mali-dp: - add support for linear tiled formats sun4i: - Display Engine 3 support - H6 DE3 mixer 0 support - H6 display engine support - dw-hdmi support - H6 HDMI phy support - implicit fence waiting - BGRX8888 support meson: - Overlay plane support - implicit fence waiting - HDMI 1.4 4k modes bridge: - i2c fixes for sii902x" * tag 'drm-next-2018-12-14' of git://anongit.freedesktop.org/drm/drm: (1403 commits) drm/amd/display: Add fast path for cursor plane updates drm/amdgpu: Enable GPU recovery by default for CI drm/amd/display: Fix duplicating scaling/underscan connector state drm/amd/display: Fix unintialized max_bpc state values Revert "drm/amd/display: Set RMX_ASPECT as default" drm/amdgpu: Fix stub function name drm/msm/dpu: Fix clock issue after bind failure drm/msm/dpu: Clean up dpu_media_info.h static inline functions drm/msm/dpu: Further cleanups for static inline functions drm/msm/dpu: Cleanup the debugfs functions drm/msm/dpu: Remove dpu_irq and unused functions drm/msm: Make irq_postinstall optional drm/msm/dpu: Cleanup callers of dpu_hw_blk_init drm/msm/dpu: Remove unused functions drm/msm/dpu: Remove dpu_crtc_is_enabled() drm/msm/dpu: Remove dpu_crtc_get_mixer_height drm/msm/dpu: Remove dpu_dbg drm/msm: dpu: Remove crtc_lock drm/msm: dpu: Remove vblank_requested flag from dpu_crtc drm/msm: dpu: Separate crtc assignment from vblank enable ...
This commit is contained in:
@@ -533,6 +533,13 @@ static int init_ring_common(struct intel_engine_cs *engine)
|
||||
|
||||
intel_engine_reset_breadcrumbs(engine);
|
||||
|
||||
if (HAS_LEGACY_SEMAPHORES(engine->i915)) {
|
||||
I915_WRITE(RING_SYNC_0(engine->mmio_base), 0);
|
||||
I915_WRITE(RING_SYNC_1(engine->mmio_base), 0);
|
||||
if (HAS_VEBOX(dev_priv))
|
||||
I915_WRITE(RING_SYNC_2(engine->mmio_base), 0);
|
||||
}
|
||||
|
||||
/* Enforce ordering by reading HEAD register back */
|
||||
I915_READ_HEAD(engine);
|
||||
|
||||
@@ -550,10 +557,11 @@ static int init_ring_common(struct intel_engine_cs *engine)
|
||||
/* Check that the ring offsets point within the ring! */
|
||||
GEM_BUG_ON(!intel_ring_offset_valid(ring, ring->head));
|
||||
GEM_BUG_ON(!intel_ring_offset_valid(ring, ring->tail));
|
||||
|
||||
intel_ring_update_space(ring);
|
||||
|
||||
/* First wake the ring up to an empty/idle ring */
|
||||
I915_WRITE_HEAD(engine, ring->head);
|
||||
I915_WRITE_TAIL(engine, ring->tail);
|
||||
I915_WRITE_TAIL(engine, ring->head);
|
||||
(void)I915_READ_TAIL(engine);
|
||||
|
||||
I915_WRITE_CTL(engine, RING_CTL_SIZE(ring->size) | RING_VALID);
|
||||
@@ -578,6 +586,12 @@ static int init_ring_common(struct intel_engine_cs *engine)
|
||||
if (INTEL_GEN(dev_priv) > 2)
|
||||
I915_WRITE_MODE(engine, _MASKED_BIT_DISABLE(STOP_RING));
|
||||
|
||||
/* Now awake, let it get started */
|
||||
if (ring->tail != ring->head) {
|
||||
I915_WRITE_TAIL(engine, ring->tail);
|
||||
(void)I915_READ_TAIL(engine);
|
||||
}
|
||||
|
||||
/* Papering over lost _interrupts_ immediately following the restart */
|
||||
intel_engine_wakeup(engine);
|
||||
out:
|
||||
@@ -612,7 +626,9 @@ static void skip_request(struct i915_request *rq)
|
||||
|
||||
static void reset_ring(struct intel_engine_cs *engine, struct i915_request *rq)
|
||||
{
|
||||
GEM_TRACE("%s seqno=%x\n", engine->name, rq ? rq->global_seqno : 0);
|
||||
GEM_TRACE("%s request global=%d, current=%d\n",
|
||||
engine->name, rq ? rq->global_seqno : 0,
|
||||
intel_engine_get_seqno(engine));
|
||||
|
||||
/*
|
||||
* Try to restore the logical GPU state to match the continuation
|
||||
@@ -644,7 +660,7 @@ static int intel_rcs_ctx_init(struct i915_request *rq)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = intel_ctx_workarounds_emit(rq);
|
||||
ret = intel_engine_emit_ctx_wa(rq);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
|
||||
@@ -662,8 +678,6 @@ static int init_render_ring(struct intel_engine_cs *engine)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
intel_whitelist_workarounds_apply(engine);
|
||||
|
||||
/* WaTimedSingleVertexDispatch:cl,bw,ctg,elk,ilk,snb */
|
||||
if (IS_GEN(dev_priv, 4, 6))
|
||||
I915_WRITE(MI_MODE, _MASKED_BIT_ENABLE(VS_TIMER_DISPATCH));
|
||||
@@ -745,9 +759,18 @@ static void cancel_requests(struct intel_engine_cs *engine)
|
||||
/* Mark all submitted requests as skipped. */
|
||||
list_for_each_entry(request, &engine->timeline.requests, link) {
|
||||
GEM_BUG_ON(!request->global_seqno);
|
||||
if (!i915_request_completed(request))
|
||||
dma_fence_set_error(&request->fence, -EIO);
|
||||
|
||||
if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT,
|
||||
&request->fence.flags))
|
||||
continue;
|
||||
|
||||
dma_fence_set_error(&request->fence, -EIO);
|
||||
}
|
||||
|
||||
intel_write_status_page(engine,
|
||||
I915_GEM_HWS_INDEX,
|
||||
intel_engine_last_submit(engine));
|
||||
|
||||
/* Remaining _unready_ requests will be nop'ed when submitted */
|
||||
|
||||
spin_unlock_irqrestore(&engine->timeline.lock, flags);
|
||||
@@ -1061,8 +1084,7 @@ i915_emit_bb_start(struct i915_request *rq,
|
||||
int intel_ring_pin(struct intel_ring *ring)
|
||||
{
|
||||
struct i915_vma *vma = ring->vma;
|
||||
enum i915_map_type map =
|
||||
HAS_LLC(vma->vm->i915) ? I915_MAP_WB : I915_MAP_WC;
|
||||
enum i915_map_type map = i915_coherent_map_type(vma->vm->i915);
|
||||
unsigned int flags;
|
||||
void *addr;
|
||||
int ret;
|
||||
|
||||
Reference in New Issue
Block a user