Hi Dave, drm-intel-next-2016-08-08: - refactor ddi buffer programming a bit (Ville) - large-scale renaming to untangle naming in the gem code (Chris) - rework vma/active tracking for accurately reaping idle mappings of shared objects (Chris) - misc dp sst/mst probing corner case fixes (Ville) - tons of cleanup&tunings all around in gem - lockless (rcu-protected) request lookup, plus use it everywhere for non(b)locking waits (Chris) - pipe crc debugfs fixes (Rodrigo) - random fixes all over drm-intel-next-2016-07-25: - more engine code unification (Tvrtko) - reorganize rps&rc6 setup (Chris Wilson) - hotplug polling when in deep rpm states, especially fixes vls (Lyude) - mocs fix for bxt (Imre) - convert i915 request to use dma fences (Chris) - prep work for lockless i915 requests/fences (needed for full sync integration) from Chris Wilson - wait for external rendering/fences attached to dma_bufs (Chris) - tons of small bugfixes all over Note also contains a backmerge (git got confused), but when you've pulled in all pending pulls (there's a few now) I want to do another backmerge to get at the latest fences stuff from Gustavo. Cheers, Daniel The following changes since commit 1cf915d305b6e1d57db6c35c208016f9747ba3c6: Merge tag 'imx-drm-fixes-2016-07-27' of git://git.pengutronix.de/git/pza/linux into drm-next (2016-07-30 05:45:30 +1000) are available in the git repository at: git://anongit.freedesktop.org/drm-intel tags/drm-intel-next-2016-08-08 for you to fetch changes up to c5b7e97b27db4f8a8ffe1072506620679043f006: drm/i915: Update DRIVER_DATE to 20160808 (2016-08-08 09:37:31 +0200) ---------------------------------------------------------------- - refactor ddi buffer programming a bit (Ville) - large-scale renaming to untangle naming in the gem code (Chris) - rework vma/active tracking for accurately reaping idle mappings of shared objects (Chris) - misc dp sst/mst probing corner case fixes (Ville) - tons of cleanup&tunings all around in gem - lockless (rcu-protected) request lookup, plus use it everywhere for non(b)locking waits (Chris) - pipe crc debugfs fixes (Rodrigo) - random fixes all over ---------------------------------------------------------------- Akash Goel (1): drm/i915/gen9: Update i915_drpc_info debugfs for coarse pg & forcewake info Bob Paauwe (1): drm/i915: Set legacy properties when using legacy gamma set IOCTL. (v2) Chris Wilson (152): drm/i915/breadcrumbs: Queue hangcheck before sleeping drm/i915: Kick hangcheck from retire worker drm/i915: Remove temporary RPM wakeref assert disables drm/i915: Update ifdeffery for mutex->owner drm/i915: Provide argument names for static stubs drm/i915: Flush GT idle status upon reset drm/i915: Preserve current RPS frequency across init drm/i915: Perform static RPS frequency setup before userspace drm/i915: Move overclocking detection to alongside RPS frequency detection drm/i915: Define a separate variable and control for RPS waitboost frequency drm/i915: Remove superfluous powersave work flushing drm/i915: Defer enabling rc6 til after we submit the first batch/context drm/i915: Hide gen6_update_ring_freq() drm/i915/fbdev: Drain the suspend worker on retiring drm/i915/fbdev: Check for the framebuffer before use drm/i915/evict: Always switch away from the current context drm/i915: Flush logical context image out to memory upon suspend drm/i915: Handle ENOSPC after failing to insert a mappable node drm/i915: Move GEM request routines to i915_gem_request.c drm/i915: Retire oldest completed request before allocating next drm/i915: Mark all current requests as complete before resetting them drm/i915: Derive GEM requests from dma-fence drm/i915: Disable waitboosting for fence_wait() drm/i915: Disable waitboosting for mmioflips/semaphores drm/i915: Mark imported dma-buf objects as being coherent drm/i915: Wait on external rendering for GEM objects drm/i915: Rename request reference/unreference to get/put drm/i915: Rename i915_gem_context_reference/unreference() drm/i915: Wrap drm_gem_object_lookup in i915_gem_object_lookup drm/i915: Wrap drm_gem_object_reference in i915_gem_object_get drm/i915: Rename drm_gem_object_unreference in preparation for lockless free drm/i915: Rename drm_gem_object_unreference_unlocked in preparation for lockless free drm/i915: Treat ringbuffer writes as write to normal memory drm/i915: Rename ring->virtual_start as ring->vaddr drm/i915: Convert i915_semaphores_is_enabled over to early sanitize drm/i915: Enable RC6 immediately Revert "drm/i915: Enable RC6 immediately" drm/i915: Drop racy markup of missed-irqs from idle-worker drm/i915: Update the breadcrumb interrupt counter before enabling drm/i915: Reduce breadcrumb lock coverage for intel_engine_enable_signaling() drm/i915: Prefer list_first_entry_or_null drm/i915: Only clear the client pointer when tearing down the file drm/i915: Only drop the batch-pool's object reference drm/i915/cmdparser: Remove stray intel_engine_cs *ring drm/i915: Use engine to refer to the user's BSD intel_engine_cs drm/i915: Avoid using intel_engine_cs *ring for GPU error capture drm/i915: Remove stray intel_engine_cs ring identifiers from i915_gem.c drm/i915: Update a couple of hangcheck comments to talk about engines drm/i915: Fix up some stray to_i915(dev) after a recent merge drm/i915: Add missing ring_mask to Pineview drm/i915: Protect older gen against intel_gt_init_powersave() drm/i915: Unify intel_logical_ring_emit and intel_ring_emit drm/i915: Rename request->ringbuf to request->ring drm/i915: Rename intel_context[engine].ringbuf drm/i915: Rename struct intel_ringbuffer to struct intel_ring drm/i915: Rename residual ringbuf parameters drm/i915: Rename intel_pin_and_map_ring() drm/i915: Remove obsolete engine->gpu_caches_dirty drm/i915: Reduce engine->emit_flush() to a single mode parameter drm/i915: Simplify request_alloc by returning the allocated request drm/i915: Unify legacy/execlists emission of MI_BATCHBUFFER_START drm/i915: Remove intel_ring_get_tail() drm/i915: Convert engine->write_tail to operate on a request drm/i915: Move the modulus for ring emission to the register write drm/i915: Unify request submission drm/i915/lrc: Update function names to match request flow drm/i915: Stop passing caller's num_dwords to engine->semaphore.signal() drm/i915: Reuse legacy breadcrumbs + tail emission drm/i915/ringbuffer: Specialise SNB+ request emission for semaphores drm/i915: Remove duplicate golden render state init from execlists drm/i915: Refactor golden render state emission to unconfuse gcc drm/i915: Unify legacy/execlists submit_execbuf callbacks drm/i915: Simplify calling engine->sync_to drm/i915: Rename engine->semaphore.sync_to, engine->sempahore.signal locals drm/i915: Move the common engine cleanup to intel_engine_cs.c drm/i915: Amalgamate GGTT/ppGTT vma debug list walkers drm/i915: Split GGTT initialisation between probing and setup drm/i915: Update GGTT initialisation functions to take drm_i915_private drm/i915: Split early global GTT initialisation drm/i915: Rearrange GGTT probing to avoid needing a vfunc drm/i915: Store owning file on the i915_address_space drm/i915: Count how many VMA are bound for an object drm/i915: Be more careful when unbinding vma drm/i915: Kill drop_pages() drm/i915: Introduce i915_gem_active for request tracking drm/i915: Prepare i915_gem_active for annotations drm/i915: Mark up i915_gem_active for locking annotation drm/i915: Refactor blocking waits drm/i915: Rename request->list to link for consistency drm/i915: Remove obsolete i915_gem_object_flush_active() drm/i915: Refactor activity tracking for requests drm/i915: Track requests inside each intel_ring drm/i915: Convert intel_overlay to request tracking drm/i915: Move the special case wait-request handling to its one caller drm/i915: Disable waitboosting for a saturated engine drm/i915: s/__i915_wait_request/i915_wait_request/ drm/i915: Double check activity before relocations drm/i915: Move request list retirement to i915_gem_request.c drm/i915: i915_vma_move_to_active prep patch drm/i915: Track active vma requests drm/i915: Release vma when the handle is closed drm/i915: Mark the context and address space as closed Revert "drm/i915: Clean up associated VMAs on context destruction" drm/i915: Fix use of engine->index for register offset drm/i915/fbc: FBC causes display flicker when VT-d is enabled on Skylake drm/i915: Add missing rpm wakelock to GGTT pread drm/i915: Acquire audio powerwell for HD-Audio registers drm/i915: Combine loops within i915_gem_evict_something drm/i915: Remove surplus drm_device parameter to i915_gem_evict_something() drm/i915: Double check the active status on the batch pool drm/i915: Remove request retirement before each batch drm/i915: Remove i915_gem_execbuffer_retire_commands() drm/i915: Fix up vma alignment to be u64 drm/i915: Pad GTT views of exec objects up to user specified size drm/i915: Reduce WARN(i915_gem_valid_gtt_space) to a debug-only check drm/i915: Split insertion/binding of an object into the VM drm/i915: Convert 4096 alignment request to 0 for drm_mm allocations drm/i915: Update the GGTT size/alignment query functions drm/i915: Update i915_gem_get_ggtt_size/_alignment to use drm_i915_private drm/i915: Record allocated vma size drm/i915: Wrap vma->pin_count accessors with small inline helpers drm/i915: Start passing around i915_vma from execbuffer drm/i915: Combine all i915_vma bitfields into a single set of flags drm/i915: Make i915_vma_pin() small and inline drm/i915: Remove highly confusing i915_gem_obj_ggtt_pin() drm/i915: Separate intel_frontbuffer into its own header drm/i915: Make fb_tracking.lock a spinlock drm/i915: Use atomics to manipulate obj->frontbuffer_bits drm/i915: Use dev_priv consistently through the intel_frontbuffer interface drm/i915: Move obj->active:5 to obj->flags drm/i915: Move i915_gem_object_wait_rendering() drm/i915: Enable lockless lookup of request tracking via RCU drm/i915: Export our request as a dma-buf fence on the reservation object drm/i915: Introduce i915_gem_active_wait_unlocked() drm/i915: Convert non-blocking waits for requests over to using RCU drm/i915: Convert non-blocking userptr waits for requests over to using RCU drm/i915/userptr: Remove superfluous interruptible=false on waiting drm/i915: Remove forced stop ring on suspend/unload drm/i915: Enable i915_gem_wait_for_idle() without holding struct_mutex drm/i915: Simplify do_idling() (Ironlake vt-d w/a) drm/i915/shrinker: Wait before acquiring struct_mutex under oom drm/i915: Tidy generation of the GTT mmap offset drm/i915: Remove unused no-shrinker-steal drm/i915: Do a nonblocking wait first in pread/pwrite drm/i915: Remove (struct_mutex) locking for wait-ioctl drm/i915: Remove (struct_mutex) locking for busy-ioctl drm/i915: Reduce locking inside swfinish ioctl drm/i915: Remove pinned check from madvise ioctl drm/i915: Remove locking for get_tiling drm/i915: Document and reject invalid tiling modes drm/i915: Repack fence tiling mode and stride into a single integer drm/i915: Assert that the request hasn't been retired Daniel Vetter (8): drm/i915: Fixup kerneldoc code snippets in intel_uncore.c drm/i915: Clean up kerneldoc for intel_lrc.c drm/i915: Update missing kerneldoc drm/i915: Remove misleading CSR firmware loading docs drm/i915: Update DRIVER_DATE to 20160725 Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next-queued drm/i915: Update comment before i915_spin_request drm/i915: Update DRIVER_DATE to 20160808 Dave Gordon (7): drm/i915: unify first-stage engine struct setup drm/i915: compile-time consistency check on __EXEC_OBJECT flags drm/i915: refactor eb_get_batch() drm/i915: rename macro parameter(ring) to (engine) drm/i915: rename 'ring' where it refers to an engine or engine_id drm/i915: rename & update eb_select_ring() drm/i915: use i915_gem_object_put_unlocked() after releasing mutex David Weinehall (1): drm/i915/debugfs: Take runtime_pm ref for sseu Imre Deak (3): drm/i915/gen9: Clean up MOCS table definitions drm/i915/bxt: Fix inadvertent CPU snooping due to incorrect MOCS config drm/i915: Give proper names to MOCS entries Keith Packard (1): drm/i915: cleanup_plane_fb: also drop reference to current state wait_req Lionel Landwerlin (1): drm/i915: add missing condition for committing planes on crtc Lyude (4): drm/i915/vlv: Make intel_crt_reset() per-encoder drm/i915/vlv: Reset the ADPA in vlv_display_power_well_init() drm/i915/vlv: Disable HPD in valleyview_crt_detect_hotplug() drm/i915: Enable polling when we don't have hpd Matt Roper (1): drm/i915/gen9: Give one extra block per line for SKL plane WM calculations Matthew Auld (4): drm/i915: remove superfluous i915_gem_object_free_mmap_offset call drm/i915: remove redundant fbc warnings drm/i915: fix WaInsertDummyPushConstPs drm/i915: fix aliasing_ppgtt leak Mika Kuoppala (2): drm/i915/gen9: Add WaInPlaceDecompressionHang drm/i915/gen9: Add WaDisableGatherAtSetShaderCommonSlice Rodrigo Vivi (3): drm/i915/guc: Revert "drm/i915/guc: enable GuC loading & submission by default" drm/i915: Fix copy_to_user usage for pipe_crc drm/i915: Use drm official vblank_no_hw_counter callback. Tim Gore (1): drm/i915:gen9: restrict WaC6DisallowByGfxPause Tvrtko Ursulin (6): drm/i915: Prepare for engine init unification drm/i915: Unify engine init loop drm/i915: Make more use of the shared engine irq setup drm/i915: Simplify intel_init_ring_buffer prototype drm/i915: Move common engine setup into intel_engine_cs.c drm/i915: Pull out some more common engine init code Ville Syrjälä (27): drm/i915: Unbreak interrupts on pre-gen6 drm/i915: Ignore panel type from OpRegion on SKL drm/i915: Treat eDP as always connected, again drm/i915: Wait up to 3ms for the pcu to ack the cdclk change request on SKL drm/i915: Never fully mask the the EI up rps interrupt on SNB/IVB drm/i915: Fix iboost setting for DDI with 4 lanes on SKL drm/i915: Name the "iboost bit" drm/i915: Program iboost settings for HDMI/DVI on SKL drm/i915: Move bxt_ddi_vswing_sequence() call into intel_ddi_pre_enable() for HDMI drm/i915: Explicitly use ddi buf trans entry 9 for hdmi drm/i915: Split DP/eDP/FDI and HDMI/DVI DDI buffer programming apart drm/i915: Get the iboost setting based on the port type drm/i915: Simplify intel_ddi_get_encoder_port() drm/i915: Extract bdw_get_buf_trans_edp() drm/i915: Always use cpp==4 for FW_BLC_SELF on 915GM/945GM drm/i915: Program FW_BLC_SELF on 915G as well drm/i915: Warn about aux msg buffer vs. size mismatch drm/i915: Clean up the extra RPM ref on CHV with i915.enable_rc6=0 drm/i915: Read PSR caps/intermediate freqs/etc. only once on eDP drm/i915: Avoid mixing up SST and MST in DDI setup drm/i915: Reject mixing MST and SST/HDMI on the same digital port drm/i915: Track active streams also for DP SST drm/i915: Allow MST sinks to work even if drm_probe_ddc() fails drm/i915: Remove useless rate_to_index() usage drm/i915: Don't try to ack sink irqs when there are none drm/i915: Fix iboost setting for SKL Y/U DP DDI buffer translation entry 2 Revert "drm/i915: Track active streams also for DP SST" Documentation/gpu/i915.rst | 3 + drivers/gpu/drm/i915/Makefile | 3 +- drivers/gpu/drm/i915/i915_cmd_parser.c | 74 +- drivers/gpu/drm/i915/i915_debugfs.c | 187 +- drivers/gpu/drm/i915/i915_drv.c | 85 +- drivers/gpu/drm/i915/i915_drv.h | 521 ++--- drivers/gpu/drm/i915/i915_gem.c | 2796 +++++++++----------------- drivers/gpu/drm/i915/i915_gem_batch_pool.c | 34 +- drivers/gpu/drm/i915/i915_gem_batch_pool.h | 6 +- drivers/gpu/drm/i915/i915_gem_context.c | 183 +- drivers/gpu/drm/i915/i915_gem_debug.c | 70 - drivers/gpu/drm/i915/i915_gem_dmabuf.c | 71 +- drivers/gpu/drm/i915/i915_gem_evict.c | 187 +- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 476 +++-- drivers/gpu/drm/i915/i915_gem_fence.c | 52 +- drivers/gpu/drm/i915/i915_gem_gtt.c | 587 +++--- drivers/gpu/drm/i915/i915_gem_gtt.h | 183 +- drivers/gpu/drm/i915/i915_gem_render_state.c | 120 +- drivers/gpu/drm/i915/i915_gem_render_state.h | 18 - drivers/gpu/drm/i915/i915_gem_request.c | 767 +++++++ drivers/gpu/drm/i915/i915_gem_request.h | 676 +++++++ drivers/gpu/drm/i915/i915_gem_shrinker.c | 78 +- drivers/gpu/drm/i915/i915_gem_stolen.c | 20 +- drivers/gpu/drm/i915/i915_gem_tiling.c | 52 +- drivers/gpu/drm/i915/i915_gem_userptr.c | 57 +- drivers/gpu/drm/i915/i915_gpu_error.c | 459 +++-- drivers/gpu/drm/i915/i915_guc_submission.c | 31 +- drivers/gpu/drm/i915/i915_irq.c | 57 +- drivers/gpu/drm/i915/i915_pci.c | 1 + drivers/gpu/drm/i915/i915_reg.h | 20 +- drivers/gpu/drm/i915/i915_sysfs.c | 78 +- drivers/gpu/drm/i915/i915_trace.h | 35 +- drivers/gpu/drm/i915/i915_vgpu.c | 3 +- drivers/gpu/drm/i915/intel_audio.c | 6 + drivers/gpu/drm/i915/intel_breadcrumbs.c | 31 +- drivers/gpu/drm/i915/intel_csr.c | 7 - drivers/gpu/drm/i915/intel_ddi.c | 255 +-- drivers/gpu/drm/i915/intel_display.c | 255 ++- drivers/gpu/drm/i915/intel_dp.c | 231 ++- drivers/gpu/drm/i915/intel_dp_mst.c | 4 +- drivers/gpu/drm/i915/intel_drv.h | 40 +- drivers/gpu/drm/i915/intel_engine_cs.c | 231 +++ drivers/gpu/drm/i915/intel_fbc.c | 29 +- drivers/gpu/drm/i915/intel_fbdev.c | 32 +- drivers/gpu/drm/i915/intel_frontbuffer.c | 128 +- drivers/gpu/drm/i915/intel_frontbuffer.h | 91 + drivers/gpu/drm/i915/intel_guc.h | 1 - drivers/gpu/drm/i915/intel_guc_loader.c | 10 +- drivers/gpu/drm/i915/intel_hotplug.c | 1 - drivers/gpu/drm/i915/intel_lrc.c | 837 +++----- drivers/gpu/drm/i915/intel_lrc.h | 52 +- drivers/gpu/drm/i915/intel_mocs.c | 61 +- drivers/gpu/drm/i915/intel_mocs.h | 2 +- drivers/gpu/drm/i915/intel_overlay.c | 174 +- drivers/gpu/drm/i915/intel_pm.c | 357 ++-- drivers/gpu/drm/i915/intel_psr.c | 26 +- drivers/gpu/drm/i915/intel_renderstate.h | 16 +- drivers/gpu/drm/i915/intel_ringbuffer.c | 1157 +++++------ drivers/gpu/drm/i915/intel_ringbuffer.h | 228 +-- drivers/gpu/drm/i915/intel_sprite.c | 13 +- drivers/gpu/drm/i915/intel_uncore.c | 14 +- include/uapi/drm/i915_drm.h | 42 +- 62 files changed, 6296 insertions(+), 6025 deletions(-) delete mode 100644 drivers/gpu/drm/i915/i915_gem_debug.c create mode 100644 drivers/gpu/drm/i915/i915_gem_request.c create mode 100644 drivers/gpu/drm/i915/i915_gem_request.h create mode 100644 drivers/gpu/drm/i915/intel_engine_cs.c create mode 100644 drivers/gpu/drm/i915/intel_frontbuffer.h -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx