05 Oct, 2016

2 commits

  • dma_buf may live a long time, longer than the last direct user of the
    driver. We already hold a reference to the owner module (that prevents
    the object code from disappearing), but there is no reference to the
    drm_dev - so the pointers to the driver backend themselves may vanish.

    v2: Resist temptation to fix the bug in armada_gem.c not setting the
    correct flags on the exported dma-buf (it should pass the flags through
    and not be arbitrarily setting O_RDWR).

    Use a common wrapper for exporting the dmabuf and acquiring the
    reference to the drm_device.

    Testcase: igt/vgem_basic/unload
    Suggested-by: Daniel Vetter
    Signed-off-by: Chris Wilson
    Cc: Petri Latvala
    Cc: Daniel Vetter
    Cc: stable@vger.kernel.org
    Tested-by: Petri Latvala
    Reviewed-by: Christian König
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/20161005122145.1507-2-chris@chris-wilson.co.uk

    Chris Wilson
     
  • dma_buf_export() adds a reference to the owning module to the dmabuf (to
    prevent the driver from being unloaded whilst a third party still refers
    to the dmabuf). However, drm_gem_prime_export() was passing its own
    THIS_MODULE (i.e. drm.ko) rather than the driver. Extract the right
    owner from the device->fops instead.

    v2: Use C99 initializers to zero out unset elements of
    dma_buf_export_info
    v3: Extract the right module from dev->fops.

    Testcase: igt/vgem_basic/unload
    Reported-by: Petri Latvala
    Signed-off-by: Chris Wilson
    Cc: Petri Latvala
    Cc: Christian König
    Cc: stable@vger.kernel.org
    Tested-by: Petri Latvala
    Reviewed-by: Petri Latvala
    Reviewed-by: Christian König
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/20161005122145.1507-1-chris@chris-wilson.co.uk

    Chris Wilson
     

04 Oct, 2016

2 commits

  • Remove function name and special " *ERROR*" from argument list

    $ size drivers/gpu/drm/built-in.o* (x86-32 defconfig, most drm selected)
    text data bss dec hex filename
    5635366 182579 14328 5832273 58fe51 drivers/gpu/drm/built-in.o.new
    5779552 182579 14328 5976459 5b318b drivers/gpu/drm/built-in.o.old

    Using "%ps", __builtin_return_address(0) is the same as "%s", __func__
    except for static inlines, but it's more or less the same output.

    Miscellanea:

    o Convert args... to ##__VA_ARGS__
    o The equivalent DRM_DEV_ macros are rarely used and not
    worth conversion

    Reviewed-by: Chris Wilson
    Signed-off-by: Joe Perches
    Signed-off-by: Sean Paul
    Link: http://patchwork.freedesktop.org/patch/msgid/01f976d5ab93c985756fc1b2e83656fb0a2a28c8.1474856262.git.joe@perches.com

    Joe Perches
     
  • Currently we use a linear walk to lookup a handle and return a dma-buf,
    and vice versa. A long overdue TODO task is to convert that to a
    hashtable. Since the initial implementation of dma-buf/prime, we now
    have resizeable hashtables we can use (and now a future task is to RCU
    enable the lookup!). However, this patch opts to use an rbtree instead
    to provide O(lgN) lookups (and insertion, deletion). rbtrees were chosen
    over using the RCU backed resizable hashtable to firstly avoid the
    reallocations (rbtrees can be embedded entirely within the parent
    struct) and to favour simpler code with predictable worst case
    behaviour. In simple testing, the difference between using the constant
    lookup and insertion of the rhashtable and the rbtree was less than 10%
    of the wall time (igt/benchmarks/prime_lookup) - both are dramatic
    improvements over the existing linear lists.

    v2: Favour rbtree over rhashtable

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94631
    Signed-off-by: Chris Wilson
    Cc: Sean Paul
    Cc: David Herrmann
    Reviewed-by: David Herrmann
    Reviewed-by: Sean Paul
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/20160926204414.23222-1-chris@chris-wilson.co.uk

    Chris Wilson
     

28 Sep, 2016

1 commit

  • - more core cleanup patches to prep drm_file to be used for
    kernel-internal contexts (David Herrmann)
    - more split-up+docs for drm_crtc.c
    - lots of small fixes and polish all over

    * tag 'topic/drm-misc-2016-09-25' of git://anongit.freedesktop.org/drm-intel: (37 commits)
    drm: bridge: analogix/dp: mark symbols static where possible
    drm/bochs: mark bochs_connector_get_modes() static
    drm/bridge: analogix_dp: Improve panel on time
    drm/bridge: analogix_dp: Don't read EDID if panel present
    drm/bridge: analogix_dp: Remove duplicated code
    Revert "drm/i2c: tda998x: don't register the connector"
    drm: Fix plane type uabi breakage
    dma-buf/sync_file: free fences array in num_fences is 1
    drm/i2c: tda998x: don't register the connector
    drm: Don't swallow error codes in drm_dev_alloc()
    drm: Distinguish no name from ENOMEM in set_unique()
    drm: Remove dirty property from docs
    drm/doc: Document color space handling
    drm: Extract drm_color_mgmt.[hc]
    drm/doc: Polish plane composition property docs
    drm: Conslidate blending properties in drm_blend.[hc]
    drm/doc: Polish for drm_plane.[hc]
    drm: Extract drm_plane.[hc]
    drm/tilcdc: Add atomic and crtc headers to crtc.c
    drm: Fix typo in encoder docs
    ...

    Dave Airlie
     

20 Sep, 2016

1 commit

  • - refactor the sseu code (Imre)
    - refine guc dmesg output (Dave Gordon)
    - more vgpu work
    - more skl wm fixes (Lyude)
    - refactor dpll code in prep for upfront link training (Jim Bride et al)
    - consolidate all platform feature checks into intel_device_info (Carlos Santa)
    - refactor elsp/execlist submission as prep for re-submission after hang
    recovery and eventually scheduling (Chris Wilson)
    - allow synchronous gpu reset handling, to remove tricky/impossible/fragile
    error recovery code (Chris Wilson)
    - prep work for nonblocking (execlist) submission, using fences to track
    depencies and drive elsp submission (Chris Wilson)
    - partial error recover/resubmission of non-guilty batches after hangs (Chris Wilson)
    - full dma-buf implicit fencing support (Chris Wilson)
    - dp link training fixes (Jim, Dhinkaran, Navare, ...)
    - obey dp branch device pixel rate/bpc/clock limits (Mika Kahola), needed for
    many vga dongles
    - bunch of small cleanups and polish all over, as usual

    [airlied: printing macros collided]

    * tag 'drm-intel-next-2016-09-19' of git://anongit.freedesktop.org/drm-intel: (163 commits)
    drm/i915: Update DRIVER_DATE to 20160919
    drm: Fix DisplayPort branch device ID kernel-doc
    drm/i915: use NULL for NULL pointers
    drm/i915: do not use 'false' as a NULL pointer
    drm/i915: make intel_dp_compute_bpp static
    drm: Add DP branch device info on debugfs
    drm/i915: Update bits per component for display info
    drm/i915: Check pixel rate for DP to VGA dongle
    drm/i915: Read DP branch device SW revision
    drm/i915: Read DP branch device HW revision
    drm/i915: Cleanup DisplayPort AUX channel initialization
    drm: Read DP branch device id
    drm: Helper to read max bits per component
    drm: Helper to read max clock rate
    drm: Drop VGA from bpc definitions
    drm: Add missing DP downstream port types
    drm/i915: Add ddb size field to device info structure
    drm/i915/guc: general tidying up (submission)
    drm/i915/guc: general tidying up (loader)
    drm/i915: clarify PMINTRMSK/pm_intr_keep usage
    ...

    Dave Airlie
     

19 Sep, 2016

1 commit

  • Each DRM file-context caches the EUID of the process that opened the file.
    It is used exclusively for debugging purposes in /proc/dri/ and friends.

    Note, however, that we can already fetch the EUID from
    priv->pid->task->creds. The pointer-chasing will not hurt us, since it is
    only about debugging, anyway.

    Since we already are in an rcu-read-side, we can use __task_cred() rather
    than task_cred_xxx().

    Signed-off-by: David Herrmann
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/20160901124837.680-2-dh.herrmann@gmail.com

    David Herrmann
     

05 Sep, 2016

1 commit

  • We had only DRM_INFO() and DRM_ERROR(), whereas the underlying printk()
    provides several other useful intermediate levels such as NOTICE and
    WARNING. So this patch fills out the set by providing both regular and
    once-only macros for each of the levels INFO, NOTICE, and WARNING, using
    a common underlying macro that does all the token-pasting.

    DRM_ERROR is unchanged, as it's not just a printk wrapper.

    v2:
    Fix whitespace, missing ## (Eric Engestrom)

    Signed-off-by: Dave Gordon
    Reviewed-by: Eric Engestrom
    Cc: dri-devel@lists.freedesktop.org
    Acked-by: Dave Airlie
    Signed-off-by: Tvrtko Ursulin

    Dave Gordon
     

19 Aug, 2016

1 commit

  • This patch consolidates all the various log functions/macros into
    one uber function, drm_log. It also introduces some new DRM_DEV_*
    variants that print the device name to delineate multiple devices
    of the same type.

    Reviewed-by: Chris Wilson
    Reviewed-by: Eric Engestrom
    Signed-off-by: Sean Paul
    Link: http://patchwork.freedesktop.org/patch/msgid/1471303084-3757-1-git-send-email-seanpaul@chromium.org

    Sean Paul
     

10 Aug, 2016

1 commit

  • There's a couple of places where this would be useful for drivers (such
    as reporting DP aux transaction timeouts).

    Signed-off-by: Lyude
    Reviewed-by: Christian König
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1470443443-27252-7-git-send-email-cpaul@redhat.com

    Lyude
     

08 Aug, 2016

2 commits

  • It's super confusing that new drivers need to be marked with
    DRIVER_MODESET when really it means DRIVER_MODERN. Much better to
    invert the meaning and rename it to something that's suitably
    off-putting.

    Since there's over 100 places using DRIVER_MODESET we need to roll out
    this change without a flag day.

    v2: Update docs.

    Reviewed-by: Frank Binns
    Reviewed-by: David Herrmann
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1470251470-30830-1-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     
  • The minor referred to by "DRM_MINOR_LEGACY" is called 'dev->primary' and
    gets 'cardX' as name assigned. Lets reduce this magnificent number of
    names for the same concept by one and rename DRM_MINOR_LEGACY to
    DRM_MINOR_PRIMARY (to match the actual struct-member name).

    Furthermore, this is in no way a legacy node, so lets not call it that.

    Signed-off-by: David Herrmann
    Reviewed-by: Frank Binns
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/20160803180432.1341-2-dh.herrmann@gmail.com

    David Herrmann
     

19 Jul, 2016

1 commit

  • The drm_irq docs want one function from drmP.h, but that one is a
    serious mess. Extract it, and while at it improve the docs a bit.
    There's a bit a header loop issue since core data structures like
    drm_device and drm_driver aren't in their own headers yet, which means
    the drm_irq.h include in drmP.h needs to be in just the right spot :(

    Also noticed that drm_vblank_crtc->last_wait is entirely unused,
    remove it.

    v2: git add drm_irq.h ...

    Acked-by: Chris Wilson
    Signed-off-by: Daniel Vetter

    Daniel Vetter
     

12 Jul, 2016

1 commit


22 Jun, 2016

7 commits

  • Also extract drm_auth.h for nicer grouping.

    v2: Nuke the other comments since they don't really explain a lot, and
    within the drm core we generally only document functions exported to
    drivers: The main audience for these docs are driver writers.

    v3: Limit the exposure of drm_master internals by only including
    drm_auth.h where it is neede (Chris).

    v4: Spelling polish (Emil).

    Cc: Chris Wilson
    Reviewed-by: Chris Wilson
    Reviewed-by: Emil Velikov
    Signed-off-by: Daniel Vetter

    Daniel Vetter
     
  • - is_master can be removed, we can compute this by checking allowed_master
    (which really just tracks whether a master struct has been allocated
    for this fpriv in either open or set_master), and whether the fpriv is
    the current master on the device.

    - that frees up is_master as a good replacement name for allowed_master.
    With that it's clear that it tracks whether the fpriv is a master (with
    possibly clients attached to it and authenticated against it), and that
    one of those fprivs with is_master set is the current master.

    v2: Fix kerneldoc for is_master (Emil).

    Cc: Chris Wilson
    Cc: Thomas Hellstrom
    Reviewed-by: Chris Wilson
    Reviewed-by: Emil Velikov
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1466499262-18717-10-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     
  • Just rolling out a bit of abstraction to be able to clean
    up the master logic in the next step.

    Cc: Chris Wilson
    Cc: Thomas Hellstrom
    Reviewed-by: Chris Wilson
    Reviewed-by: Emil Velikov
    Signed-off-by: Daniel Vetter

    Daniel Vetter
     
  • File open/set_maseter ioctl and file close/drop_master ioctl share the
    same master handling code. Extract it.

    Note that vmwgfx's master_set callback needs to know whether the
    master is a new one or has been used already, so thread this through.
    On the close/drop side a similar parameter existed, but wasnt used.
    Drop it to simplify the flow.

    v2: Try to make it not leak so much (Emil).

    v3: Send out the right version ...

    Cc: Emil Velikov
    Cc: Chris Wilson
    Cc: Thomas Hellstrom
    Reviewed-by: Chris Wilson
    Reviewed-by: Emil Velikov
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1466511638-9885-1-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     
  • We already have a fallback in place to fill out the unique from
    dev->unique, which is set to something reasonable in drm_dev_alloc.

    Which means we only need to have a special set_busid for pci devices,
    to be able to care the backwards compat code for drm 1.1 around, which
    libdrm still needs.

    While developing and testing this patch things blew up in really
    interesting ways, and the code is rather confusing in naming things
    between the kernel code, ioctl #defines and libdrm. For the next brave
    dragon slayer, document all this madness properly in the userspace
    interface section of gpu.tmpl.

    v2: Make drm_dev_set_unique static and update kerneldoc.

    v3: Entire rewrite, plus document what's going on for posterity in the
    gpu docbook uapi section.

    v4: Drop accidental amdgpu hunk (Emil).

    v5: Drop accidental omapdrm vblank counter change (Emil).

    v6: Rebase on top of the sphinx conversion.

    Cc: Gustavo Padovan
    Cc: Emil Velikov
    Tested-by: Gustavo Padovan (virt_gpu)
    Reviewed-by: Emil Velikov
    Signed-off-by: Daniel Vetter

    Daniel Vetter
     
  • Since

    commit e112e593b215c394c0303dbf0534db0928e87967
    Author: Nicolas Iooss
    Date: Fri Dec 11 11:20:28 2015 +0100

    drm: use dev_name as default unique name in drm_dev_alloc()

    we're using a reasonable default which should work for everyone. Only
    mtk, rcar-du and sun4i are affected, and as kms-only drivers without
    any rendering support no one should ever care about the unique name

    v2: Rebase on top of mediatek.

    Cc: Philipp Zabel
    Cc: Maxime Ripard
    Cc: Laurent Pinchart
    Cc: Emil Velikov
    Reviewed-by: Emil Velikov
    Reviewed-by: Laurent Pinchart
    Acked-by: Maxime Ripard
    Acked-by: Philipp Zabel
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1466499262-18717-5-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     
  • There can only be one current master, and it's for the overall device.
    Render/control minors don't support master-based auth at all.

    This simplifies the master logic a lot, at least in my eyes: All these
    additional pointer chases are just confusing.

    While doing the conversion I spotted some locking fail:
    - drm_lock/drm_auth check dev->master without holding the
    master_mutex. This is fallout from

    commit c996fd0b956450563454e7ccc97a82ca31f9d043
    Author: Thomas Hellstrom
    Date: Tue Feb 25 19:57:44 2014 +0100

    drm: Protect the master management with a drm_device::master_mutex v3

    but I honestly don't care one bit about those old legacy drivers
    using this.

    - debugfs name info should just grab master_mutex.

    - And the fbdev helper looked at it to figure out whether someone is
    using KMS. We just need a consistent value, so READ_ONCE. Aside: We
    should probably check if anyone has opened a control node too, but I
    guess current userspace doesn't really do that yet.

    v2: Balance locking, reported by Julia.

    v3: Rebase on top of Chris' oops fixes.

    Cc: Julia Lawall
    Cc: Chris Wilson
    Reviewed-by: Chris Wilson (v2)
    Reviewed-by: Emil Velikov (v2)
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1466499262-18717-1-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     

17 Jun, 2016

1 commit

  • In order to allow drivers to pack their privates and drm_device into one
    struct (e.g. for subclassing), export the initialisation routines for
    struct drm_device.

    v2: Missed return ret. That error path had only one job to do!
    v3: Cross-referencing drm_dev_init/drm_dev_alloc in kerneldoc, fix
    missed error code for goto err_minors.

    Signed-off-by: Chris Wilson
    Cc: Dave Airlie
    Cc: Daniel Vetter
    Cc: dri-devel@lists.freedesktop.org
    Reviewed-by: Daniel Vetter
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1465993109-19523-2-git-send-email-chris@chris-wilson.co.uk

    Chris Wilson
     

16 Jun, 2016

2 commits

  • For modern drivers pretty much the only thing drm_master does is
    handling authentication for the primary/legacy drm_minor node. Instead
    of having it all over drm files, move it all together into drm_auth.c.

    This patch just does code-motion, follow up patches will also extract
    the master logic from file open&release paths.

    Reviewed-by: Chris Wilson Mchris@chris-wilson.co.uk>
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1465930269-7883-5-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     
  • Master-based auth only exists for the legacy/primary drm_minor, hence
    there can only be one per device. The goal here is to untangle the
    epic dereference games of minor->master and master->minor which is
    just massively confusing.

    Reviewed-by: Chris Wilson
    Reviewed-by: Emil Velikov
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1465930269-7883-4-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     

14 Jun, 2016

3 commits


10 Jun, 2016

1 commit

  • Split out from my big nonblocking atomic commit helper code as prep
    work. While add it, also add some neat asciiart to document how it's
    supposed to be used.

    v2: Resurrect misplaced hunk in the kerneldoc.

    v3: Wording improvements from Liviu.

    Tested-by: Tomeu Vizoso
    Cc: Maarten Lankhorst
    Cc: Tomeu Vizoso
    Cc: Daniel Stone
    Tested-by: Liviu Dudau
    Reviewed-by: Maarten Lankhorst
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1465388359-8070-8-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     

09 Jun, 2016

2 commits

  • The drm_crtc.c file is a mess, making the ABI documentation confusing
    since all functions are in the same bag. Split the format-related
    helpers to a new drm_fourcc.c file.

    Signed-off-by: Laurent Pinchart
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1465466048-2020-1-git-send-email-laurent.pinchart@ideasonboard.com

    Laurent Pinchart
     
  • The PM core introduced the ability to keep devices runtime suspended
    during the entire system suspend/resume process with commit aae4518b3124
    ("PM / sleep: Mechanism to avoid resuming runtime-suspended devices
    unnecessarily"). Before this so-called "direct-complete" procedure was
    introduced, devices were always runtime resumed only to be immediately
    put to sleep again using their ->suspend hook. Direct-complete is
    enabled by returning a positive value from the ->prepare hook. The PCI
    core usually does this automatically.

    Direct-complete is only available for a device if all children use it as
    well. Currently we cannot support direct-complete for DRM drivers
    because the DRM core automatically registers multiple DRM minors which
    belong to device class drm_class, and drm_class uses a struct dev_pm_ops
    which lacks the ->prepare callback.

    While this could be solved by adding the missing ->prepare callback,
    closer inspection shows that there are no DRM drivers left which declare
    the legacy ->suspend and ->resume callbacks in their drm_driver struct.
    The last ones to remove them were i915 with commit 1751fcf9f92e
    ("drm/i915: Fix module initialisation, v2.") and exynos with commit
    e7fefb1d5af5 ("drm/exynos: remove legacy ->suspend()/resume()").

    Consequently the struct dev_pm_ops of drm_class is now dead code. Remove
    it. If no dev_pm_ops is declared for a device, the PM core automatically
    enables direct-complete for it, thereby making that mechanism available
    to the parent DRM PCI devices.

    Signed-off-by: Lukas Wunner
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/da848fcd5ca72a35d9a722e644719977a47bb7ba.1465382836.git.lukas@wunner.de

    Lukas Wunner
     

03 Jun, 2016

1 commit

  • Now a drm_pending_event can either send a real drm_event or signal a
    fence, or both. It allow us to signal via fences when the buffer is
    displayed on the screen. Which in turn means that the previous buffer
    is not in use anymore and can be freed or sent back to another driver
    for processing.

    v2: Comments from Daniel Vetter
    - call fence_signal in drm_send_event_locked()
    - remove unneeded !e->event check

    v3: Remove drm_pending_event->destroy to fix a leak when e->file_priv
    is not set.

    Reviewed-by: Sean Paul
    Signed-off-by: Gustavo Padovan (v2)
    [danvet: fix one e->destroy in arcpgu due to rebasing.]
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1464818821-5736-13-git-send-email-daniel.vetter@ffwll.ch

    Gustavo Padovan
     

02 Jun, 2016

2 commits

  • Since commit 4dfd64862ff8 ("drm: Use vblank timestamps to guesstimate
    how many vblanks were missed"), the DRM framework can cope with devices
    that don't have a hardware counter for vsync events without having
    to keep the vsync interrupts enabled all the time. Drivers handling
    such hardware should use drm_vblank_no_hw_counter() function for
    their ->get_vblank_counter hook.

    Cc: Daniel Vetter
    Cc: Ville Syrjälä
    Signed-off-by: Liviu Dudau
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1464795342-32297-1-git-send-email-Liviu.Dudau@arm.com

    Liviu Dudau
     
  • drm-intel-next-2016-05-22:
    - cmd-parser support for direct reg->reg loads (Ken Graunke)
    - better handle DP++ smart dongles (Ville)
    - bxt guc fw loading support (Nick Hoathe)
    - remove a bunch of struct typedefs from dpll code (Ander)
    - tons of small work all over to avoid casting between drm_device and the i915
    dev struct (Tvrtko&Chris)
    - untangle request retiring from other operations, also fixes reset stat corner
    cases (Chris)
    - skl atomic watermark support from Matt Roper, yay!
    - various wm handling bugfixes from Ville
    - big pile of cdclck rework for bxt/skl (Ville)
    - CABC (Content Adaptive Brigthness Control) for dsi panels (Jani&Deepak M)
    - nonblocking atomic commits for plane-only updates (Maarten Lankhorst)
    - bunch of PSR fixes&improvements
    - untangle our map/pin/sg_iter code a bit (Dave Gordon)
    drm-intel-next-2016-05-08:
    - refactor stolen quirks to share code between early quirks and i915 (Joonas)
    - refactor gem BO/vma funcstion (Tvrtko&Dave)
    - backlight over DPCD support (Yetunde Abedisi)
    - more dsi panel sequence support (Jani)
    - lots of refactoring around handling iomaps, vma, ring access and related
    topics culmulating in removing the duplicated request tracking in the execlist
    code (Chris & Tvrtko) includes a small patch for core iomapping code
    - hw state readout for bxt dsi (Ramalingam C)
    - cdclk cleanups (Ville)
    - dedupe chv pll code a bit (Ander)
    - enable semaphores on gen8+ for legacy submission, to be able to have a direct
    comparison against execlist on the same platform (Chris) Not meant to be used
    for anything else but performance tuning
    - lvds border bit hw state checker fix (Jani)
    - rpm vs. shrinker/oom-notifier fixes (Praveen Paneri)
    - l3 tuning (Imre)
    - revert mst dp audio, it's totally non-functional and crash-y (Lyude)
    - first official dmc for kbl (Rodrigo)
    - and tons of small things all over as usual

    * 'drm-intel-next' of git://anongit.freedesktop.org/drm-intel: (194 commits)
    drm/i915: Revert async unpin and nonblocking atomic commit
    drm/i915: Update DRIVER_DATE to 20160522
    drm/i915: Inline sg_next() for the optimised SGL iterator
    drm/i915: Introduce & use new lightweight SGL iterators
    drm/i915: optimise i915_gem_object_map() for small objects
    drm/i915: refactor i915_gem_object_pin_map()
    drm/i915/psr: Implement PSR2 w/a for gen9
    drm/i915/psr: Use ->get_aux_send_ctl functions
    drm/i915/psr: Order DP aux transactions correctly
    drm/i915/psr: Make idle_frames sensible again
    drm/i915/psr: Try to program link training times correctly
    drm/i915/userptr: Convert to drm_i915_private
    drm/i915: Allow nonblocking update of pageflips.
    drm/i915: Check for unpin correctness.
    Reapply "drm/i915: Avoid stalling on pending flips for legacy cursor updates"
    drm/i915: Make unpin async.
    drm/i915: Prepare connectors for nonblocking checks.
    drm/i915: Pass atomic states to fbc update functions.
    drm/i915: Remove reset_counter from intel_crtc.
    drm/i915: Remove queue_flip pointer.
    ...

    Dave Airlie
     

25 May, 2016

1 commit

  • This patch aims to replace the roll-your-own seqlock implementation with
    full-blown seqlock'. We also remove the timestamp ring-buffer in favour
    of single timestamp/count pair protected by a seqlock. In turn this
    means we can now increment the vblank freely without the need for
    clamping.

    v2:
    - reduce the scope of the seqlock, keeping vblank_time_lock
    - make the seqlock per vblank_crtc, so multiple readers aren't blocked by
    the writer

    Cc: Mario Kleiner
    Cc: Daniel Vetter
    Cc: Ville Syrjälä
    Signed-off-by: Matthew Auld
    Reviewed-by: Ville Syrjälä
    Reviewed-by: Mario Kleiner
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1462890088-18194-1-git-send-email-matthew.auld@intel.com

    Matthew Auld
     

21 May, 2016

1 commit

  • This was added in

    commit 0a3e67a4caac273a3bfc4ced3da364830b1ab241
    Author: Jesse Barnes
    Date: Tue Sep 30 12:14:26 2008 -0700

    drm: Rework vblank-wait handling to allow interrupt reduction.

    to stay backwards-compatible with old UMS code that didn't even tell
    the kernel when it did a modeset, so that the kernel could
    save/restore vblank counters. At worst this means vblanks will be
    somewhat funky on a setup that very likely no one still runs.

    So let's just nuke it.

    Plan B would be to set it unconditionally in drm_vblank_init for kms
    drivers, instead of in each driver separately. So if this patch breaks
    anything please only restore the hunks in drmP.h and drm_irq.c, plus
    add a check for DRIVER_MODESET in drm_vblank_init.

    Stumbled over this in a discussion on irc with Chris.

    Cc: Chris Wilson
    Cc: Alex Deucher
    Cc: Liviu Dudau
    Cc: Russell King
    Cc: Thierry Reding
    Cc: Eric Anholt
    Cc: Laurent Pinchart
    Cc: Inki Dae
    Cc: Tomi Valkeinen
    Cc: Mark Yao
    Cc: Sascha Hauer
    Cc: Philipp Zabel
    Signed-off-by: Daniel Vetter
    Reviewed-by: Alex Deucher
    Acked-by: Liviu Dudau
    Acked-by: Laurent Pinchart
    Tested-by: Laurent Pinchart
    Signed-off-by: Dave Airlie

    Daniel Vetter
     

19 May, 2016

1 commit

  • This function is useful for gen2 intel devices which have no frame
    counter, but need a way to determine the current vblank count without
    racing with the vblank interrupt handler.

    intel_pipe_update_start checks if no vblank interrupt will occur
    during vblank evasion, but cannot check whether the vblank handler has
    run to completion. This function uses the timestamps to determine
    when the last vblank has happened, and interpolates from there.

    Changes since v1:
    - Take vblank_time_lock and don't use drm_vblank_count_and_time.
    Changes since v2:
    - Don't return time of last vblank.
    Changes since v3:
    - Change pipe to unsigned int. (Ville)
    - Remove unused documentation for tv_ret. (kbuild)
    Changes since v4:
    - Add warning to docs when the function is useful.
    - Add a WARN_ON when get_vblank_timestamp is unavailable.
    - Use drm_vblank_count.

    Cc: Mario Kleiner
    Cc: Ville Syrjälä
    Signed-off-by: Maarten Lankhorst
    Reviewed-by: Ville Syrjälä #v4
    Acked-by: David Airlie #irc, v4
    Link: http://patchwork.freedesktop.org/patch/msgid/1463490484-19540-2-git-send-email-maarten.lankhorst@linux.intel.com
    Reviewed-by: Mario Kleiner

    Maarten Lankhorst
     

04 May, 2016

1 commit

  • Finally all the core gem and a lot of drivers are entirely free of
    dev->struct_mutex depencies, and we can start to have an entirely
    lockless unref path.

    To make sure that no one who touches the core code accidentally breaks
    existing drivers which still require dev->struct_mutex I've made the
    might_lock check unconditional.

    While at it de-inline the ref/unref functions, they've become a bit
    too big.

    v2: Make it not leak like a sieve.

    v3: Review from Lucas:
    - drop != NULL in pointer checks.
    - fixup copypasted kerneldoc to actually match the functions.

    v4:
    Add __drm_gem_object_unreference as a fastpath helper for drivers who
    abolished dev->struct_mutex, requested by Chris.

    v5: Fix silly mistake in drm_gem_object_unreference_unlocked caught by
    intel-gfx CI - I checked for gem_free_object instead of
    gem_free_object_unlocked ...

    Cc: Chris Wilson
    Cc: Alex Deucher
    Cc: Lucas Stach
    Reviewed-by: Lucas Stach (v3)
    Reviewed-by: Chris Wilson (v4)
    Reviewed-by: Alex Deucher
    Signed-off-by: Daniel Vetter
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1462178451-1765-1-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     

27 Apr, 2016

1 commit

  • amdgpu gained dev->struct_mutex usage, and that's because it's walking
    the dev->filelist list. Protect that list with it's own lock to take
    one more step towards getting rid of struct_mutex usage in drivers
    once and for all.

    While doing the conversion I noticed that 2 debugfs files in i915
    completely lacked appropriate locking. Fix that up too.

    v2: don't forget to switch to drm_gem_object_unreference_unlocked.

    Cc: Alex Deucher
    Reviewed-by: Alex Deucher
    Reviewed-by: Chris Wilson
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1461691808-12414-9-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter
     

14 Apr, 2016

1 commit

  • The debug category comment mentions 4 categories, but
    more than 4 categories are listed. Let's change the
    wording to something a bit more generic.

    Signed-off-by: Robert Foss
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1460644456-9752-1-git-send-email-robert.foss@collabora.com

    Robert Foss
     

08 Feb, 2016

1 commit

  • There's really no reason to not do so, instead of replicating this
    for every use-case and every driver. Now we can't just nuke the events,
    since that would still mean that all drm_event users would need to know
    when that has happened, since calling e.g. drm_send_event isn't allowed
    any more. Instead just unlink them from the file, and detect this case
    and handle it appropriately in all functions.

    v2: Adjust existing kerneldoc too.

    v3: Improve wording of the kerneldoc and split out vblank cleanup (Laurent).

    Cc: Alex Deucher
    Cc: Laurent Pinchart
    Acked-by: Daniel Stone
    Reviewed-by: Alex Deucher (v1)
    Reviewed-by: Laurent Pinchart
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1453756616-28942-2-git-send-email-daniel.vetter@ffwll.ch

    Daniel Vetter