24 Nov, 2014

1 commit

  • During a GPU reset we need to get pending page flip cleared out
    since the ring contents are gone and flip will never complete
    on its own. This used to work until the mmio vs. CS flip race
    detection came about. That piece of code is looking for a
    specific surface address in the SURFLIVE register, but as
    a flip to that address may never happen the check may never
    pass. So we should just skip the SURFLIVE and flip counter
    checks when the GPU gets reset.

    intel_display_handle_reset() tries to effectively complete
    the flip anyway by calling .update_primary_plane(). But that
    may not satisfy the conditions of the mmio vs. CS race
    detection since there's no guarantee that a modeset didn't
    sneak in between the GPU reset and intel_display_handle_reset().
    Such a modeset will not wait for pending flips due to the ongoing GPU
    reset, and then the primary plane updates performed by
    intel_display_handle_reset() will already use the new surface
    address, and thus the surface address the flip is waiting for
    might never appear in SURFLIVE. The result is that the flip
    will never complete and attempts to perform further page flips
    will fail with -EBUSY.

    During the GPU reset intel_crtc_has_pending_flip() will return
    false regardless, so the deadlock with a modeset vs. the error
    work acquiring crtc->mutex was avoided. And the reset_counter
    check in intel_crtc_has_pending_flip() actually made this bug
    even less severe since it allowed normal modesets to go through
    even though there's a pending flip.

    This is a regression introduced by me here:
    commit 75f7f3ec600524c9544cc31695155f1a9ddbe1d9
    Author: Ville Syrjälä
    Date: Tue Apr 15 21:41:34 2014 +0300

    drm/i915: Fix mmio vs. CS flip race on ILK+

    Testcase: igt/kms_flip/flip-vs-panning-vs-hang
    Signed-off-by: Ville Syrjälä
    Reviewed-by: Chris Wilson
    Reviewed-by: Daniel Vetter
    Cc: stable@vger.kernel.org
    Signed-off-by: Jani Nikula

    Ville Syrjälä
     

29 Oct, 2014

1 commit

  • commit c675949ec58ca50d5a3ae3c757892f1560f6e896
    Author: Jani Nikula
    Date: Wed Apr 9 11:31:37 2014 +0300

    drm/i915: do not setup backlight if not available according to VBT

    prevents backlight setup on Macbook 2,1. Apply quirk to ignore the VBT
    check so backlight is set up properly.

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81438
    Signed-off-by: Jens Stein Jørgensen
    Cc: stable@vger.kernel.org (3.15+)
    Signed-off-by: Jani Nikula

    jens stein
     

27 Oct, 2014

1 commit

  • vlv_cdclk_freq is in kHz but we need MHz for the GMBUSFREQ divider.

    This is a regression from:
    commit f8bf63fdcb1f82459dae7a3f22ee5ce92f3ea727
    Author: Ville Syrjälä
    Date: Fri Jun 13 13:37:54 2014 +0300

    drm/i915: Kill duplicated cdclk readout code from i2c

    Signed-off-by: Ville Syrjälä
    Cc: stable@vger.kernel.org
    Signed-off-by: Jani Nikula

    Ville Syrjälä
     

16 Oct, 2014

1 commit

  • On CHV the display DDC pins may be muxed to an alternate function if
    there's no need for DDC on a specific port, which is the case for eDP
    ports since there's no way to plug in a DP++ HDMI dongle.

    This causes problems when trying to determine if the port is present
    since the the DP_DETECTED bit is the latched state of the DDC SDA pin
    at boot. If the DDC pins are muxed to an alternate function the bit
    may indicate that the port isn't present.

    To work around this look at the VBT as well as the DP_DETECTED bit
    to determine if we should attempt registering an eDP port. Do this
    only for ports B and C since port D doesn't support eDP (no PPS/BLC).

    In theory someone could also wire up a normal DP port w/o DDC lines.
    That would just mean that simple DP++ HDMI dongles wouldn't work
    on such a port. With this change we would still fail to register
    such DP ports. But let's hope no one wires their board in such a way,
    and if they do we can extend the VBT checks to cover normal DP ports
    as well.

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84265
    Signed-off-by: Ville Syrjälä
    Reviewed-by: Damien Lespiau
    Signed-off-by: Jani Nikula

    Ville Syrjälä
     

06 Oct, 2014

1 commit


01 Oct, 2014

1 commit

  • Haswell and later silicon has added a new pixel replication register
    to the pipe timings for each transcoder. Now in addition to the
    DPLL_A_MD register for the pixel clock double, we also need to write
    to the TRANS_MULT_n (0x6002c) register to double the pixel data. Writing
    to the DPLL only double the pixel clock.

    ver2: Macro name change from MULTIPLY to PIPE_MULTI. (Daniel)
    ver3: Do not set pixel multiplier if transcoder is eDP (Ville)
    ver4: Macro name change to PIPE_MULT and default else pixel_multiplier

    Cc: Ville =?iso-8859-1?Q?Syrj=E4l=E4?=
    Cc: Daniel Vetter
    Cc: Jani Nikula

    Signed-off-by: Clint Taylor
    Reviewed-by: Ville Syrjälä
    [danvet: Appease checkpatch and move one hunk back into the right
    place that git am misplace!?]
    Signed-off-by: Daniel Vetter

    Clint Taylor
     

29 Sep, 2014

1 commit

  • This reverts commit c76bb61a71083b2d90504cc6d0dda2047c5d63ca.

    It's apparently too broken so that Rodrigo submitted a patch to add a
    config option for it. Given that the design is also ... suboptimal and
    that I've only merged this to get lead engineers and managers off my
    back for one second let's just revert this.

    /me puts on combat gear again

    It was worth a shot ...

    References: http://mid.mail-archive.com/1411686380-1953-1-git-send-email-rodrigo.vivi@intel.com
    Cc: Jesse Barnes
    Cc: Daisy Sun
    Cc: Jesse Barnes
    Cc: Rodrigo Vivi
    Signed-off-by: Daniel Vetter

    Daniel Vetter
     

19 Sep, 2014

2 commits

  • drm_send_vblank_event() demands that we hold the event spinlock whilst
    calling it, so do so.

    Signed-off-by: Chris Wilson
    [danvet: Fix the double lock as requested by Chris.]
    Signed-off-by: Daniel Vetter

    Chris Wilson
     
  • The spec says:
    "For the correct operation of the muxed DVO pins (GDEVSELB/ I2Cdata,
    GIRDBY/I2CClk) and (GFRAMEB/DVI_Data, GTRDYB/DVI_Clk): Bit 31
    (DPLL VCO Enable) and Bit 30 (2X Clock Enable) must be set to “1” in
    both the DPLL A Control Register (06014h-06017h) and DPLL B Control
    Register (06018h-0601Bh)."

    The pipe A and B force quirks take care of DPLL_VCO_ENABLE, so we
    just need a bit of special care to handle DPLL_DVO_2X_MODE.

    v2: Recompute num_dvo_pipes on the spot, use PIPE_A/PIPE_B instead
    of pipe/!pipe for the register offsets in disable (Daniel)
    Add a comment about the ordering in enable and another one
    about filtering out the DVO 2x bit in state readout

    Signed-off-by: Ville Syrjälä
    Tested-by: Thomas Richter (v1)
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     

16 Sep, 2014

2 commits

  • - final bits (again) for the rotation support (Sonika Jindal)
    - support bl_power in the intel backlight (Jani)
    - vdd handling improvements from Ville
    - i830M fixes from Ville
    - piles of prep work all over to make skl enabling just plug in (Damien, Sonika)
    - rename DP training defines to reflect latest edp standards, this touches all
    drm drivers supporting DP (Sonika Jindal)
    - cache edids during single detect cycle to avoid re-reading it for e.g. audio,
    from Chris
    - move w/a for registers which are stored in the hw context to the context init
    code (Arun&Damien)
    - edp panel power sequencer fixes, helps chv a lot (Ville)
    - piles of other chv fixes all over
    - much more paranoid pageflip handling with stall detection and better recovery
    from Chris
    - small things all over, as usual

    * tag 'drm-intel-next-2014-09-05' of git://anongit.freedesktop.org/drm-intel: (114 commits)
    drm/i915: Update DRIVER_DATE to 20140905
    drm/i915: Decouple the stuck pageflip on modeset
    drm/i915: Check for a stalled page flip after each vblank
    drm/i915: Introduce a for_each_plane() macro
    drm/i915: Rewrite ABS_DIFF() in a safer manner
    drm/i915: Add comments explaining the vdd on/off functions
    drm/i915: Move DP port disable to post_disable for pch platforms
    drm/i915: Enable DP port earlier
    drm/i915: Turn on panel power before doing aux transfers
    drm/i915: Be more careful when picking the initial power sequencer pipe
    drm/i915: Reset power sequencer pipe tracking when disp2d is off
    drm/i915: Track which port is using which pipe's power sequencer
    drm/i915: Fix edp vdd locking
    drm/i915: Reset the HEAD pointer for the ring after writing START
    drm/i915: Fix unsafe vma iteration in i915_drop_caches
    drm/i915: init sprites with univeral plane init function
    drm/i915: Check of !HAS_PCH_SPLIT() in PCH transcoder funcs
    drm/i915: Use HAS_GMCH_DISPLAY un underrun reporting code
    drm/i915: Use IS_BROADWELL() instead of IS_GEN8() in forcewake code
    drm/i915: Don't call gen8_fbc_sw_flush() on chv
    ...

    Dave Airlie
     
  • This is requested to get the fixes for intel and radeon into the
    same tree for future development work.

    i915_display.c: fix missing dev_priv conflict.

    Dave Airlie
     

11 Sep, 2014

1 commit


05 Sep, 2014

2 commits

  • If we successfully confuse the hardware, and cause it to drop a queued
    pageflip, we wait for 60s and issue a warning before continuing on with
    the modeset. However, this leaves the pending pageflip still stuck
    indefinitely. Pretend to userspace that it does complete, and let us
    start afresh following the modeset.

    v2: Rebase after refactor
    v3: Rebase, rebase.

    Signed-off-by: Chris Wilson
    Cc: Daniel Vetter
    Cc: Ville Syrjälä
    Reviewed-by: Ville Syrjälä
    References: https://bugs.freedesktop.org/show_bug.cgi?id=82612
    Signed-off-by: Daniel Vetter

    Chris Wilson
     
  • Long ago, back in the racy haydays of 915gm interrupt handling, page
    flips would occasionally go astray and leave the hardware stuck, and the
    display not updating. This annoyed people who relied on their systems
    being able to display continuously updating information 24/7, and so
    some code to detect when the driver missed the page flip completion
    signal was added. Until recently, it was presumed that the interrupt
    handling was now flawless, but once again Simon Farnsworth has found a
    system whose display will stall. Reinstate the pageflip stall detection,
    which works by checking to see if the hardware has been updated to the
    new framebuffer address following each vblank. If the hardware is
    scanning out from the new framebuffer, but we still think the flip is
    pending, then we kick our driver into submision.

    This is a continuation of the effort started with
    commit 4e5359cd053bfb7d8dabe4a63624a5726848ffbc
    Author: Simon Farnsworth
    Date: Wed Sep 1 17:47:52 2010 +0100

    drm/i915: Avoid pageflipping freeze when we miss the flip prepare interrupt

    This now includes a belt-and-braces approach to make sure the driver
    (or the hardware) doesn't miss an interrupt and cause us to stop
    updating the display should the unthinkable happen and the pageflip fail - i.e.
    that the user is able to continue submitting flips.

    v2: Cleanup, refactor, and rename
    v3: Only start counting vblanks after the flip command has been seen by
    the hardware.
    v4: Record the seqno after we touch the ring, or else there may be no
    seqno allocated yet.
    v5: Rebase on mmio-flip.
    v6: Rebase, rebase.

    Reported-by: Simon Farnsworth
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75502
    Signed-off-by: Chris Wilson
    Cc: Daniel Vetter
    Cc: Ville Syrjälä
    Reviewed-by: Ville Syrjälä [v4]
    Signed-off-by: Daniel Vetter

    Chris Wilson
     

04 Sep, 2014

1 commit

  • Introduce a new mutex (pps_mutex) to protect the power sequencer
    state. For now this state includes want_panel_vdd as well as the
    power sequencer registers.

    We need a single mutex (as opposed to per port) because later on we
    will need to deal with VLV/CHV which have multiple power sequencer
    which can be reassigned to different ports.

    v2: Add the locking to intel_dp_encoder_suspend too (Imre)
    v3: Take care intel_edp_backlight_power() and
    _intel_edp_backlight_on/off(), deal with reboot notifier
    vlv_power_sequencer_pipe() call (Imre)

    Reviewed-by: Imre Deak
    Signed-off-by: Ville Syrjälä
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     

03 Sep, 2014

23 commits

  • Check for !HAS_PCH_SPLIT() instead of 'gen < 5' in the PCH transcoder
    enable functions.

    Signed-off-by: Ville Syrjälä
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • A few open coded HAS_GMCH_DISPLAY() remain in the underrun reporting
    code. Convert them over.

    Signed-off-by: Ville Syrjälä
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • CHV doesn't have FBC, so don't go calling gen8_fbc_sw_flush() on it.

    Cc: Rodrigo Vivi
    Signed-off-by: Ville Syrjälä
    [danvet: Add a FIXME comment while at it that we should rework this a
    lot more.]
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • Currently, CHV is using the same functions as HSW/BDW instead of the
    same functions as VLV. This looks wrong, especially since, for
    example, valleyview_modeset_global_resouces even has an IS_CHERRYVIEW
    check.

    This patch has the potential to fix display audio and the CHV CDCLK.

    Cc: Ville Syrjälä
    Signed-off-by: Paulo Zanoni
    Reviewed-by: Ville Syrjälä
    Signed-off-by: Daniel Vetter

    Paulo Zanoni
     
  • My Fujistsu-Siemens Lifebook S6010 doesn't like to resume from
    S3 unless VGACNTR has been restore to the original value. The BIOS
    value in this case was 0x0124008E. Setting the "VGA disable" bit
    doesn't interfere with the S3 resume fortunately.

    Signed-off-by: Ville Syrjälä
    Tested-by: Thomas Richter
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • 830M has problems when some of the pipes are disabled. Namely if a
    plane, DVO port etc. is currently assigned to a disabled pipe, it
    can't moved to the other pipe until the current pipe is also enabled.
    To keep things simple just leave both pipes running all the time.

    Ideally I think should turn the pipes off if neither is active, and
    when either becomes active we enable both. But that would reuquire
    proper atomic modeset support, and probably a bit of extra care in
    the order things get enabled.

    v2: Reorder wrt. double wide handling changes

    Signed-off-by: Ville Syrjälä
    Tested-by: Thomas Richter
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • 830 really does want the pipe A quirk. The planes and ports don't
    react to any register writes unless the pipe currently attached
    to them is running, so it's impossible to move them to the other
    pipe unless both pipes are running.

    Also it's documented that the DPLL must be enabled on both pipes
    whenever it's needed.

    This reverts commit ac6696d3236bd61503f89a1a99680fd7894d5d53.

    Signed-off-by: Ville Syrjälä
    Tested-by: Thomas Richter
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • Disable double wide even if the pipe quirk compels us to leave the
    pipe running. Double wide has certain implications for the plane
    assignments so best keep it off.

    Also helps resuming from S3 on the Fujitsu-Siemens Lifebook S6010
    when double wide was enabled prior to suspend.

    We do leave the pixel clock ticking at the original rate which would
    require double wide to be enabled. But since the planes are all disabled
    I'm hoping that the overly fast clock won't cause any problems. Seems
    to be fine so far.

    v2: Disable double wide also when turning the pipe off
    v3: Reorder wrt. force pipe B quirk

    Signed-off-by: Ville Syrjälä
    Tested-by: Thomas Richter
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • Just pass the intel_crtc around instead of dev_priv+pipe.

    Also make intel_wait_for_pipe_off() static since it's only used in
    intel_display.c.

    Signed-off-by: Ville Syrjälä
    Tested-by: Thomas Richter
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • At this point of the code the obj var is already NULL, so we don't
    need to set it again to NULL.

    Signed-off-by: Gustavo Padovan
    Reviewed-by: Jani Nikula
    Signed-off-by: Daniel Vetter

    Gustavo Padovan
     
  • BDW supports GT C0 residency reporting in constant time unit. Driver
    calculates GT utilization based on C0 residency and adjusts RP
    frequency up/down accordingly. For offscreen workload specificly,
    set frequency to RP0.

    Offscreen task is not restricted by frame rate, it can be
    executed as soon as possible. Transcoding and serilized workload
    between CPU and GPU both need high GT performance, RP0 is a good
    option in this case. RC6 will kick in to compensate power
    consumption when GT is not active.

    v2: Rebase on recent drm-intel-nightly
    v3: Add flip timerout monitor, when no flip is deteced within
    100ms, set frequency to RP0.

    Signed-off-by: Daisy Sun
    [torourke: rebased on latest and resolved conflict]
    Signed-off-by: Tom O'Rourke
    Acked-by: Jesse Barnes
    Signed-off-by: Daniel Vetter

    Daisy Sun
     
  • Use the pixel_size we got from drm_format_plane_cpp() instead of
    fb->bits_per_pixel/8 when computing the primary plane page/linear
    offsets. Avoids a few divs and makes the code more future proof
    against funky pixel formats where bits_per_pixel isn't well defined.
    This is what we already did in the sprite code.

    Note that the relevant sprite patch was

    commit ca320ac456099c29290568353d924157e626ede9
    Author: Chris Wilson
    Date: Wed Dec 19 12:14:22 2012 +0000

    drm/i915: Use pixel size for computing linear offsets into a sprite

    This change was required on sprites because they support yuv formats
    which have fb->bits_per_pixel undefined.

    Signed-off-by: Ville Syrjälä
    Reviewed-by: Chris Wilson
    [danvet: Add Chris' software archeology as a note to the commit
    message.]
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • During driver init we may not have a valid framebuffer for the primary
    plane even though the plane is enabled due to failed BIOS fb takeover.
    This means we have to avoid dereferencing the fb in
    .update_primary_plane() when disabling the plane.

    The introduction of the primary plane rotation in

    commit d91a2cb8e5104233c02bbde539bd4ee455ec12ac
    Author: Sonika Jindal
    Date: Fri Aug 22 14:06:04 2014 +0530

    drm/i915: Add 180 degree primary plane rotation support

    caused a regression by trying to look up the pixel format before we can
    be sure there's a valid fb available. This isn't entirely unsurprising
    since the rotation patches originally predate the change to the primary
    plane code that calls .update_primary_plane() also when disabling the
    plane:

    commit fdd508a6419217cce28213f3c9bd27c02a0d4c71
    Author: Ville Syrjälä
    Date: Fri Aug 8 21:51:11 2014 +0300

    drm/i915: Call .update_primary_plane in intel_{enable,
    disable}_primary_hw_plane()

    v2: Warn but don't blow up when trying to enable a plane w/o an fb (Chris)

    Cc: Sonika Jindal
    Signed-off-by: Ville Syrjälä
    Reviewed-by: Chris Wilson
    Signed-off-by: Daniel Vetter

    Ville Syrjälä
     
  • According to spec FBC on BDW and HSW are identical without any gaps.
    So let's copy the nuke and let FBC really start compressing stuff.

    Without this patch we can verify with false color that nothing is being
    compressed. With the nuke in place and false color it is possible
    to see false color debugs.

    Unfortunatelly on some rings like BCS on BDW we have to avoid Bits 22:18 on
    LRIs due to a high risk of hung. So, when using Blt ring for frontbuffer rend
    cache would never been cleaned and FBC would stop compressing buffer.
    One alternative is to cache clean on software frontbuffer tracking.

    v2: Fix rebase conflict.
    v3: Do not clean cache on BCS ring. Instead use sw frontbuffer tracking.

    Signed-off-by: Rodrigo Vivi
    Signed-off-by: Daniel Vetter

    Rodrigo Vivi
     
  • Fix assert_panel_unlocked for vlv/chv, and improve it a bit for
    non-LVDS. Also don't pretend it works for DDI. There's still work to do
    to get this right for eDP on PCH platforms, but this is a start.

    v2: WARN_ON(HAS_DDI)

    Reviewed-by: Ville Syrjälä
    Signed-off-by: Jani Nikula
    Signed-off-by: Daniel Vetter

    Jani Nikula
     
  • Use the correct mask for the unlock bits. In theory this could have lead
    to incorrect asserts but this is unlikely in practise.

    Signed-off-by: Jani Nikula
    Reviewed-by: Paulo Zanoni
    Reviewed-by: Ville Syrjälä
    Signed-off-by: Daniel Vetter

    Jani Nikula
     
  • Be sure to always flush a stuck pageflip even if we couldn't possibly
    expect one to be there.

    References: https://bugs.freedesktop.org/show_bug.cgi?id=82612
    Signed-off-by: Chris Wilson
    Reviewed-by: Ville Syrjälä
    Signed-off-by: Daniel Vetter

    Chris Wilson
     
  • Improve the debug message that tells us we've been waiting for a vblank
    that never arrived. Printing the pipe could lead a "doh!" moment where
    we've been waiting for a vblank on a pipe that was off for instance.

    Signed-off-by: Damien Lespiau
    Reviewed-by: Thomas Wood
    [danvet: Polish commit message a bit.]
    Signed-off-by: Daniel Vetter

    Damien Lespiau
     
  • Chris has decided that enough is enough. It's time to fixup dev Vs
    dev_priv. This is a modest contribution to the crusade.

    v2: Still use INTEL_INFO(), for the (mythical!) case we want to hardcode
    the info struct with defines (Chris)
    Rename the macro argument from 'dev' to 'dev_priv' (Jani)

    v3: Use names unlikely to be used as macro arguments (Chris)

    Suggested-by: Chris Wilson
    Signed-off-by: Damien Lespiau
    Signed-off-by: Daniel Vetter

    Damien Lespiau
     
  • Signed-off-by: Jani Nikula
    Reviewed-by: Ville Syrjälä
    Signed-off-by: Daniel Vetter

    Jani Nikula
     
  • Primary planes support 180 degree rotation. Expose the feature
    through rotation drm property.

    v2: Calculating linear/tiled offsets based on pipe source width and
    height. Added 180 degree rotation support in ironlake_update_plane.

    v3: Checking if CRTC is active before issueing update_plane. Added
    wait for vblank to make sure we dont overtake page flips. Disabling
    FBC since it does not work with rotated planes.

    v4: Updated rotation checks for pending flips, fbc disable. Creating
    rotation property only for Gen4 onwards. Property resetting as part
    of lastclose.

    v5: Resetting property in i915_driver_lastclose properly for planes
    and crtcs. Fixed linear offset calculation that was off by 1 w.r.t
    width in i9xx_update_plane and ironlake_update_plane. Removed tab
    based indentation and unnecessary braces in intel_crtc_set_property
    and intel_update_fbc. FBC and flip related checks should be done only
    for valid crtcs.

    v6: Minor nits in FBC disable checks for comments in intel_crtc_set_property
    and positioning the disable code in intel_update_fbc.

    v7: In case rotation property on inactive crtc is updated, we return
    successfully printing debug log as crtc is inactive and only property change
    is preserved.

    v8: update_plane is changed to update_primary_plane, crtc->fb is changed to
    crtc->primary->fb and return value of update_primary_plane is ignored.

    v9: added rotation property to primary plane instead of crtc. Removing reset
    of rotation property from lastclose. rotation_property is moved to
    drm_mode_config, so drm layer will take care of resetting. Adding updation of
    fbc when rotation is set to 0. Allowing rotation only if value is
    different than old one.

    v10: Calling intel_primary_plane_setplane instead of update_primary_plane in
    set_property(Daniel).

    v11: Using same set_property function for both primary and sprite, Adding
    primary plane specific code in the same function (Matt).

    v12: Removing disabling/ enabling of fbc from set_property because it is done
    from intel_pipe_set_base. Other formatting

    v13: we need to call disable_fbc before changing the rotation to 180,
    disable_fbc from intel_pipe_set_base gets called very late, that will
    be used to re-enable fbc if rotation is set to 0 (Ville).

    Testcase: igt/kms_rotation_crc

    Signed-off-by: Uma Shankar
    Signed-off-by: Sagar Kamble
    Signed-off-by: Sonika Jindal
    [danvet: Add FIXME to explain why we need the open-coded update_fbc
    hunk to disable fbc when rotated 180 degree. And make checkpatch
    happier.]
    Acked-by: Matt Roper
    Signed-off-by: Daniel Vetter

    Sonika Jindal
     
  • This unifies how the primary plane functions work with how the sprite
    functions works, which allows us to reuse them to update primary plane
    properties.

    v2: Moving setting of plane members in the end to take care of failure cases and
    not-visible cases (Matt).

    Signed-off-by: Sonika Jindal
    Acked-by: Matt Roper
    [danvet: Add a real commit message.]
    Signed-off-by: Daniel Vetter

    Sonika Jindal
     
  • drm-intel-next-2014-08-22:
    - basic code for execlist, which is the fancy new cmd submission on gen8. Still
    disabled by default (Ben, Oscar Mateo, Thomas Daniel et al)
    - remove the useless usage of console_lock for I915_FBDEV=n (Chris)
    - clean up relations between ctx and ppgtt
    - clean up ppgtt lifetime handling (Michel Thierry)
    - various cursor code improvements from Ville
    - execbuffer code cleanups and secure batch fixes (Chris)
    - prep work for dev -> dev_priv transition (Chris)
    - some of the prep patches for the seqno -> request object transition (Chris)
    - various small improvements all over

    * tag 'drm-intel-next-2014-09-01' of git://anongit.freedesktop.org/drm-intel: (86 commits)
    drm/i915: fix suspend/resume for GENs w/o runtime PM support
    drm/i915: Update DRIVER_DATE to 20140822
    drm: fix plane rotation when restoring fbdev configuration
    drm/i915/bdw: Disable execlists by default
    drm/i915/bdw: Enable Logical Ring Contexts (hence, Execlists)
    drm/i915/bdw: Document Logical Rings, LR contexts and Execlists
    drm/i915/bdw: Print context state in debugfs
    drm/i915/bdw: Display context backing obj & ringbuffer info in debugfs
    drm/i915/bdw: Display execlists info in debugfs
    drm/i915/bdw: Disable semaphores for Execlists
    drm/i915/bdw: Make sure gpu reset still works with Execlists
    drm/i915/bdw: Don't write PDP in the legacy way when using LRCs
    drm/i915: Track cursor changes as frontbuffer tracking flushes
    drm/i915/bdw: Help out the ctx switch interrupt handler
    drm/i915/bdw: Avoid non-lite-restore preemptions
    drm/i915/bdw: Handle context switch events
    drm/i915/bdw: Two-stage execlist submit process
    drm/i915/bdw: Write the tail pointer, LRC style
    drm/i915/bdw: Implement context switching (somewhat)
    drm/i915/bdw: Emission of requests with logical rings
    ...

    Conflicts:
    drivers/gpu/drm/i915/i915_drv.c

    Dave Airlie
     

26 Aug, 2014

2 commits

  • Somehow the intel_ddi_set_vc_payload_alloc(false) call has ended up
    in ironlake_crtc_disable() rather than haswell_crtc_disable(). Move it
    to the correct place.

    intel_ddi_disable_transcoder_func() already disables the vc payload
    allocation so this doesn't actually do anything more. The spec
    says we should wait for some kind of ack after frobbing the bit. We
    don't appear to do that currently, but if and when someone decides
    that we should do it, intel_ddi_set_vc_payload_alloc() would appear
    to be be the right place for it. So having the function call in
    haswell_crtc_disable() seems like the right thing for the future
    even if it does nothing currently.

    Cc: Dave Airlie
    Signed-off-by: Ville Syrjälä
    Signed-off-by: Jani Nikula

    Ville Syrjälä
     
  • If we're runtime suspended and try to use the plane interfaces, we
    will get a lot of WARNs saying we did the wrong thing.

    We need to get runtime PM references to pin the objects, and to
    change the fences. The pin functions are the ideal places for
    this, but intel_crtc_cursor_set_obj() doesn't call them, so we also
    have to add get/put calls inside it. There is no problem if we runtime
    suspend right after these functions are finished, because the
    registers written are forwarded to system memory.

    Note: for a complete fix of the cursor-dpms test case, we also need
    the patch named "drm/i915: Don't try to enable cursor from setplane
    when crtc is disabled".

    v2: - Narrow the put/get calls on intel_crtc_cursor_set_obj() (Daniel)
    v3: - Make get/put also surround the fence and unpin calls (Daniel and
    Ville).
    - Merge all the plane changes into a single patch since they're
    the same fix.
    - Add the comment requested by Daniel.
    v4: - Remove spurious whitespace (Ville).
    v5: - Remove intel_crtc_update_cursor() chunk since Ville did an
    equivalent fix in another patch (Ville).
    v6: - Remove unpin chunk: it will be on a separate patch (Ville,
    Chris, Daniel).
    v7: - Same thing, new color.

    Testcase: igt/pm_rpm/cursor
    Testcase: igt/pm_rpm/cursor-dpms
    Testcase: igt/pm_rpm/legacy-planes
    Testcase: igt/pm_rpm/legacy-planes-dpms
    Testcase: igt/pm_rpm/universal-planes
    Testcase: igt/pm_rpm/universal-planes-dpms
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81645
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82603
    Cc: stable@vger.kernel.org
    Signed-off-by: Paulo Zanoni
    Reviewed-by: Ville Syrjälä
    Signed-off-by: Jani Nikula

    Paulo Zanoni