1. 02 11月, 2017 1 次提交
  2. 22 8月, 2017 1 次提交
  3. 29 7月, 2017 1 次提交
  4. 20 6月, 2017 2 次提交
  5. 16 6月, 2017 1 次提交
  6. 06 6月, 2017 2 次提交
    • B
      drm/nouveau: enable autosuspend only when it'll actually be used · 8fa4338a
      Ben Skeggs 提交于
      This prevents a deadlock that somehow results from the suspend() ->
      forbid() -> resume() callchain.
      
      [  125.266960] [drm] Initialized nouveau 1.3.1 20120801 for 0000:02:00.0 on minor 1
      [  370.120872] INFO: task kworker/4:1:77 blocked for more than 120 seconds.
      [  370.120920]       Tainted: G           O    4.12.0-rc3 #20
      [  370.120947] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [  370.120982] kworker/4:1     D13808    77      2 0x00000000
      [  370.120998] Workqueue: pm pm_runtime_work
      [  370.121004] Call Trace:
      [  370.121018]  __schedule+0x2bf/0xb40
      [  370.121025]  ? mark_held_locks+0x5f/0x90
      [  370.121038]  schedule+0x3d/0x90
      [  370.121044]  rpm_resume+0x107/0x870
      [  370.121052]  ? finish_wait+0x90/0x90
      [  370.121065]  ? pci_pm_runtime_resume+0xa0/0xa0
      [  370.121070]  pm_runtime_forbid+0x4c/0x60
      [  370.121129]  nouveau_pmops_runtime_suspend+0xaf/0xc0 [nouveau]
      [  370.121139]  pci_pm_runtime_suspend+0x5f/0x170
      [  370.121147]  ? pci_pm_runtime_resume+0xa0/0xa0
      [  370.121152]  __rpm_callback+0xb9/0x1e0
      [  370.121159]  ? pci_pm_runtime_resume+0xa0/0xa0
      [  370.121166]  rpm_callback+0x24/0x80
      [  370.121171]  ? pci_pm_runtime_resume+0xa0/0xa0
      [  370.121176]  rpm_suspend+0x138/0x6e0
      [  370.121192]  pm_runtime_work+0x7b/0xc0
      [  370.121199]  process_one_work+0x253/0x6a0
      [  370.121216]  worker_thread+0x4d/0x3b0
      [  370.121229]  kthread+0x133/0x150
      [  370.121234]  ? process_one_work+0x6a0/0x6a0
      [  370.121238]  ? kthread_create_on_node+0x70/0x70
      [  370.121246]  ret_from_fork+0x2a/0x40
      [  370.121283]
                     Showing all locks held in the system:
      [  370.121291] 2 locks held by kworker/4:1/77:
      [  370.121298]  #0:  ("pm"){.+.+.+}, at: [<ffffffffac0d3530>] process_one_work+0x1d0/0x6a0
      [  370.121315]  #1:  ((&dev->power.work)){+.+.+.}, at: [<ffffffffac0d3530>] process_one_work+0x1d0/0x6a0
      [  370.121330] 1 lock held by khungtaskd/81:
      [  370.121333]  #0:  (tasklist_lock){.+.+..}, at: [<ffffffffac10fc8d>] debug_show_all_locks+0x3d/0x1a0
      [  370.121355] 1 lock held by dmesg/1639:
      [  370.121358]  #0:  (&user->lock){+.+.+.}, at: [<ffffffffac124b6d>] devkmsg_read+0x4d/0x360
      
      [  370.121377] =============================================
      Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
      8fa4338a
    • B
  7. 17 5月, 2017 2 次提交
  8. 10 5月, 2017 1 次提交
    • D
      drm/vblank: drop the mode argument from drm_calc_vbltimestamp_from_scanoutpos · 1bf6ad62
      Daniel Vetter 提交于
      If we restrict this helper to only kms drivers (which is the case) we
      can look up the correct mode easily ourselves. But it's a bit tricky:
      
      - All legacy drivers look at crtc->hwmode. But that is updated already
        at the beginning of the modeset helper, which means when we disable
        a pipe. Hence the final timestamps might be a bit off. But since
        this is an existing bug I'm not going to change it, but just try to
        be bug-for-bug compatible with the current code. This only applies
        to radeon&amdgpu.
      
      - i915 tries to get it perfect by updating crtc->hwmode when the pipe
        is off (i.e. vblank->enabled = false).
      
      - All other atomic drivers look at crtc->state->adjusted_mode. Those
        that look at state->requested_mode simply don't adjust their mode,
        so it's the same. That has two problems: Accessing crtc->state from
        interrupt handling code is unsafe, and it's updated before we shut
        down the pipe. For nonblocking modesets it's even worse.
      
      For atomic drivers try to implement what i915 does. To do that we add
      a new hwmode field to the vblank structure, and update it from
      drm_calc_timestamping_constants(). For atomic drivers that's called
      from the right spot by the helper library already, so all fine. But
      for safety let's enforce that.
      
      For legacy driver this function is only called at the end (oh the
      fun), which is broken, so again let's not bother and just stay
      bug-for-bug compatible.
      
      The  benefit is that we can use drm_calc_vbltimestamp_from_scanoutpos
      directly to implement ->get_vblank_timestamp in every driver, deleting
      a lot of code.
      
      v2: Completely new approach, trying to mimick the i915 solution.
      
      v3: Fixup kerneldoc.
      
      v4: Drop the WARN_ON to check that the vblank is off, atomic helpers
      currently unconditionally call this. Recomputing the same stuff should
      be harmless.
      
      v5: Fix typos and move misplaced hunks to the right patches (Neil).
      
      v6: Undo hunk movement (kbuild).
      
      Cc: Mario Kleiner <mario.kleiner@tuebingen.mpg.de>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: linux-arm-msm@vger.kernel.org
      Cc: freedreno@lists.freedesktop.org
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: Christian König <christian.koenig@amd.com>
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Reviewed-by: NNeil Armstrong <narmstrong@baylibre.com>
      Acked-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170509140329.24114-4-daniel.vetter@ffwll.ch
      1bf6ad62
  9. 09 5月, 2017 1 次提交
  10. 01 3月, 2017 1 次提交
  11. 17 2月, 2017 5 次提交
  12. 08 2月, 2017 1 次提交
  13. 27 1月, 2017 1 次提交
    • L
      drm/nouveau: Don't enabling polling twice on runtime resume · cae9ff03
      Lyude Paul 提交于
      As it turns out, on cards that actually have CRTCs on them we're already
      calling drm_kms_helper_poll_enable(drm_dev) from
      nouveau_display_resume() before we call it in
      nouveau_pmops_runtime_resume(). This leads us to accidentally trying to
      enable polling twice, which results in a potential deadlock between the
      RPM locks and drm_dev->mode_config.mutex if we end up trying to enable
      polling the second time while output_poll_execute is running and holding
      the mode_config lock. As such, make sure we only enable polling in
      nouveau_pmops_runtime_resume() if we need to.
      
      This fixes hangs observed on the ThinkPad W541
      Signed-off-by: NLyude <lyude@redhat.com>
      Cc: Hans de Goede <hdegoede@redhat.com>
      Cc: Kilian Singer <kilian.singer@quantumtechnology.info>
      Cc: Lukas Wunner <lukas@wunner.de>
      Cc: David Airlie <airlied@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      cae9ff03
  14. 09 1月, 2017 1 次提交
  15. 13 12月, 2016 1 次提交
    • P
      drm/nouveau/bl: Assign different names to interfaces · db1a0ae2
      Pierre Moreau 提交于
      Currently, every backlight interface created by Nouveau uses the same name,
      nv_backlight. This leads to a sysfs warning as it tries to create an already
      existing folder. This patch adds a incremented number to the name, but keeps
      the initial name as nv_backlight, to avoid possibly breaking userspace; the
      second interface will be named nv_backlight1, and so on.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86539
      
      v2:
      * Switch to using ida for generating unique IDs, as suggested by Ilia Mirkin;
      * Allocate backlight name on the stack, as suggested by Ilia Mirkin;
      * Move `nouveau_get_backlight_name()` to avoid forward declaration, as
        suggested by Ilia Mirkin;
      * Fix reference to bug report formatting, as reported by Nick Tenney.
      
      v3:
      * Define a macro for the size of the backlight name, to avoid defining
        it multiple times;
      * Use snprintf in place of sprintf.
      
      v4:
      * Do not create similarly named interfaces when reaching the maximum
        amount of unique names, but fail instead, as pointed out by Lukas Wunner
      Signed-off-by: NPierre Moreau <pierre.morrow@free.fr>
      Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
      db1a0ae2
  16. 28 11月, 2016 1 次提交
  17. 07 11月, 2016 2 次提交
  18. 12 10月, 2016 1 次提交
    • M
      drm/nouveau/drm/nouveau: add a LED driver for the NVIDIA logo · 8d021d71
      Martin Peres 提交于
      We received a donation of a Titan which has this useless feature
      allowing users to control the brightness of the LED behind the
      logo of NVIDIA. In the true spirit of open source, let's expose
      that to the users of very expensive cards!
      
      This patch hooks up this LED/PWM to the LED subsystem which allows
      blinking it in sync with cpu/disk/network/whatever activity (heartbeat
      is quite nice!). Users may also implement some breathing effect or
      morse code support in the userspace if they feel like it.
      
      v2:
       - surround the use of the LED framework with ifdef CONFIG_LEDS_CLASS
      
      v3:
       - avoid using ifdefs everywhere, follow the recommendations of
         /doc/Documentation/CodingStyle. Suggested by Emil Velikov.
      
      v4 (Ben):
       - squashed series of fixes from ml
      Signed-off-by: NMartin Peres <martin.peres@free.fr>
      Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
      8d021d71
  19. 22 9月, 2016 1 次提交
  20. 12 8月, 2016 1 次提交
  21. 14 7月, 2016 3 次提交
  22. 24 6月, 2016 2 次提交
  23. 22 6月, 2016 1 次提交
    • D
      drm: Lobotomize set_busid nonsense for !pci drivers · a3257256
      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 <gustavo.padovan@collabora.co.uk>
      Cc: Emil Velikov <emil.l.velikov@gmail.com>
      Tested-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> (virt_gpu)
      Reviewed-by: NEmil Velikov <emil.l.velikov@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      a3257256
  24. 01 6月, 2016 1 次提交
  25. 31 5月, 2016 1 次提交
    • L
      vga_switcheroo: Add helper for deferred probing · b00e5334
      Lukas Wunner 提交于
      So far we've got one condition when DRM drivers need to defer probing
      on a dual GPU system and it's coded separately into each of the relevant
      drivers. As suggested by Daniel Vetter, deduplicate that code in the
      drivers and move it to a new vga_switcheroo helper. This yields better
      encapsulation of concepts and lets us add further checks in a central
      place. (The existing check pertains to pre-retina MacBook Pros and an
      additional check is expected to be needed for retinas.)
      
      One might be tempted to check deferred probing conditions in
      vga_switcheroo_register_client(), but this is usually called fairly late
      during driver load. The GPU is fully brought up and ready for switching
      at that point. On boot the ->probe hook is potentially called dozens of
      times until it finally succeeds, and each time we'd repeat bringup and
      teardown of the GPU, lengthening boot time considerably and cluttering
      logfiles. A separate helper is therefore needed which can be called
      right at the beginning of the ->probe hook.
      
      Note that amdgpu currently does not call this helper as the AMD GPUs
      built into MacBook Pros are only supported by radeon so far.
      
      v2: This helper could eventually be used by audio clients as well,
          so rephrase kerneldoc to refer to "client" instead of "GPU"
          and move the single existing check in an if block specific
          to PCI_CLASS_DISPLAY_VGA devices. Move documentation on
          that check from kerneldoc to a comment. (Daniel Vetter)
      
      v3: Mandate in kerneldoc that registration of client shall only
          happen after calling this helper. (Daniel Vetter)
      
      v4: Rebase on 412c8f7d ("drm/radeon: Return -EPROBE_DEFER when
          amdkfd not loaded")
      
      v5: Some Optimus GPUs use PCI_CLASS_DISPLAY_3D, make sure those are
          matched as well. (Emil Velikov)
      
      v6: The if-condition referring to PCI_BASE_CLASS_DISPLAY may be
          considered a functional change. Move to a separate commit to
          keep this a pure refactoring change. (Emil Velikov, Jani Nikula)
      
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Signed-off-by: NLukas Wunner <lukas@wunner.de>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/575885fd440c2b13c3f19ddf44360cfbbff35f50.1464685538.git.lukas@wunner.de
      b00e5334
  26. 20 5月, 2016 1 次提交
  27. 30 3月, 2016 1 次提交
  28. 14 3月, 2016 2 次提交