1. 18 Apr, 2018 3 commits
    • Jani Nikula's avatar
      drm/i915/bios: filter out invalid DDC pins from VBT child devices · a3520b89
      Jani Nikula authored
      The VBT contains the DDC pin to use for specific ports. Alas, sometimes
      the field appears to contain bogus data, and while we check for it later
      on in intel_gmbus_get_adapter() we fail to check the returned NULL on
      errors. Oops results.
      
      The simplest approach seems to be to catch and ignore the bogus DDC pins
      already at the VBT parsing phase, reverting to fixed per port default
      pins. This doesn't guarantee display working, but at least it prevents
      the oops. And we continue to be fuzzed by VBT.
      
      One affected machine is Dell Latitude 5590 where a BIOS upgrade added
      invalid DDC pins.
      
      Typical backtrace:
      
      [   35.461411] WARN_ON(!intel_gmbus_is_valid_pin(dev_priv, pin))
      [   35.461432] WARNING: CPU: 6 PID: 411 at drivers/gpu/drm/i915/intel_i2c.c:844 intel_gmbus_get_adapter+0x32/0x37 [i915]
      [   35.461437] Modules linked in: i915 ahci libahci dm_snapshot dm_bufio dm_raid raid456 async_raid6_recov async_pq raid6_pq async_xor xor async_memcpy async_tx
      [   35.461445] CPU: 6 PID: 411 Comm: kworker/u16:2 Not tainted 4.16.0-rc7.x64-g1cda370ffded #1
      [   35.461447] Hardware name: Dell Inc. Latitude 5590/0MM81M, BIOS 1.1.9 03/13/2018
      [   35.461450] Workqueue: events_unbound async_run_entry_fn
      [   35.461465] RIP: 0010:intel_gmbus_get_adapter+0x32/0x37 [i915]
      [   35.461467] RSP: 0018:ffff9b4e43d47c40 EFLAGS: 00010286
      [   35.461469] RAX: 0000000000000000 RBX: ffff98f90639f800 RCX: ffffffffae051960
      [   35.461471] RDX: 0000000000000001 RSI: 0000000000000092 RDI: 0000000000000246
      [   35.461472] RBP: ffff98f905410000 R08: 0000004d062a83f6 R09: 00000000000003bd
      [   35.461474] R10: 0000000000000031 R11: ffffffffad4eda58 R12: ffff98f905410000
      [   35.461475] R13: ffff98f9064c1000 R14: ffff9b4e43d47cf0 R15: ffff98f905410000
      [   35.461477] FS:  0000000000000000(0000) GS:ffff98f92e580000(0000) knlGS:0000000000000000
      [   35.461479] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   35.461481] CR2: 00007f5682359008 CR3: 00000001b700c005 CR4: 00000000003606e0
      [   35.461483] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [   35.461484] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [   35.461486] Call Trace:
      [   35.461501]  intel_hdmi_set_edid+0x37/0x27f [i915]
      [   35.461515]  intel_hdmi_detect+0x7c/0x97 [i915]
      [   35.461518]  drm_helper_probe_single_connector_modes+0xe1/0x6c0
      [   35.461521]  drm_setup_crtcs+0x129/0xa6a
      [   35.461523]  ? __switch_to_asm+0x34/0x70
      [   35.461525]  ? __switch_to_asm+0x34/0x70
      [   35.461527]  ? __switch_to_asm+0x40/0x70
      [   35.461528]  ? __switch_to_asm+0x34/0x70
      [   35.461529]  ? __switch_to_asm+0x40/0x70
      [   35.461531]  ? __switch_to_asm+0x34/0x70
      [   35.461532]  ? __switch_to_asm+0x40/0x70
      [   35.461534]  ? __switch_to_asm+0x34/0x70
      [   35.461536]  __drm_fb_helper_initial_config_and_unlock+0x34/0x46f
      [   35.461538]  ? __switch_to_asm+0x40/0x70
      [   35.461541]  ? _cond_resched+0x10/0x33
      [   35.461557]  intel_fbdev_initial_config+0xf/0x1c [i915]
      [   35.461560]  async_run_entry_fn+0x2e/0xf5
      [   35.461563]  process_one_work+0x15b/0x364
      [   35.461565]  worker_thread+0x2c/0x3a0
      [   35.461567]  ? process_one_work+0x364/0x364
      [   35.461568]  kthread+0x10c/0x122
      [   35.461570]  ? _kthread_create_on_node+0x5d/0x5d
      [   35.461572]  ret_from_fork+0x35/0x40
      [   35.461574] Code: 74 16 89 f6 48 8d 04 b6 48 c1 e0 05 48 29 f0 48 8d 84 c7 e8 11 00 00 c3 48 c7 c6 b0 19 1e c0 48 c7 c7 64 8a 1c c0 e8 47 88 ed ec <0f> 0b 31 c0 c3 8b 87 a4 04 00 00 80 e4 fc 09 c6 89 b7 a4 04 00
      [   35.461604] WARNING: CPU: 6 PID: 411 at drivers/gpu/drm/i915/intel_i2c.c:844 intel_gmbus_get_adapter+0x32/0x37 [i915]
      [   35.461606] ---[ end trace 4fe1e63e2dd93373 ]---
      [   35.461609] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
      [   35.461613] IP: i2c_transfer+0x4/0x86
      [   35.461614] PGD 0 P4D 0
      [   35.461616] Oops: 0000 [#1] SMP PTI
      [   35.461618] Modules linked in: i915 ahci libahci dm_snapshot dm_bufio dm_raid raid456 async_raid6_recov async_pq raid6_pq async_xor xor async_memcpy async_tx
      [   35.461624] CPU: 6 PID: 411 Comm: kworker/u16:2 Tainted: G        W        4.16.0-rc7.x64-g1cda370ffded #1
      [   35.461625] Hardware name: Dell Inc. Latitude 5590/0MM81M, BIOS 1.1.9 03/13/2018
      [   35.461628] Workqueue: events_unbound async_run_entry_fn
      [   35.461630] RIP: 0010:i2c_transfer+0x4/0x86
      [   35.461631] RSP: 0018:ffff9b4e43d47b30 EFLAGS: 00010246
      [   35.461633] RAX: ffff9b4e43d47b6e RBX: 0000000000000005 RCX: 0000000000000001
      [   35.461635] RDX: 0000000000000002 RSI: ffff9b4e43d47b80 RDI: 0000000000000000
      [   35.461636] RBP: ffff9b4e43d47bd8 R08: 0000004d062a83f6 R09: 00000000000003bd
      [   35.461638] R10: 0000000000000031 R11: ffffffffad4eda58 R12: 0000000000000002
      [   35.461639] R13: 0000000000000001 R14: ffff9b4e43d47b6f R15: ffff9b4e43d47c07
      [   35.461641] FS:  0000000000000000(0000) GS:ffff98f92e580000(0000) knlGS:0000000000000000
      [   35.461643] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   35.461645] CR2: 0000000000000010 CR3: 00000001b700c005 CR4: 00000000003606e0
      [   35.461646] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [   35.461647] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [   35.461649] Call Trace:
      [   35.461652]  drm_do_probe_ddc_edid+0xb3/0x128
      [   35.461654]  drm_get_edid+0xe5/0x38d
      [   35.461669]  intel_hdmi_set_edid+0x45/0x27f [i915]
      [   35.461684]  intel_hdmi_detect+0x7c/0x97 [i915]
      [   35.461687]  drm_helper_probe_single_connector_modes+0xe1/0x6c0
      [   35.461689]  drm_setup_crtcs+0x129/0xa6a
      [   35.461691]  ? __switch_to_asm+0x34/0x70
      [   35.461693]  ? __switch_to_asm+0x34/0x70
      [   35.461694]  ? __switch_to_asm+0x40/0x70
      [   35.461696]  ? __switch_to_asm+0x34/0x70
      [   35.461697]  ? __switch_to_asm+0x40/0x70
      [   35.461698]  ? __switch_to_asm+0x34/0x70
      [   35.461700]  ? __switch_to_asm+0x40/0x70
      [   35.461701]  ? __switch_to_asm+0x34/0x70
      [   35.461703]  __drm_fb_helper_initial_config_and_unlock+0x34/0x46f
      [   35.461705]  ? __switch_to_asm+0x40/0x70
      [   35.461707]  ? _cond_resched+0x10/0x33
      [   35.461724]  intel_fbdev_initial_config+0xf/0x1c [i915]
      [   35.461727]  async_run_entry_fn+0x2e/0xf5
      [   35.461729]  process_one_work+0x15b/0x364
      [   35.461731]  worker_thread+0x2c/0x3a0
      [   35.461733]  ? process_one_work+0x364/0x364
      [   35.461734]  kthread+0x10c/0x122
      [   35.461736]  ? _kthread_create_on_node+0x5d/0x5d
      [   35.461738]  ret_from_fork+0x35/0x40
      [   35.461739] Code: 5c fa e1 ad 48 89 df e8 ea fb ff ff e9 2a ff ff ff 0f 1f 44 00 00 31 c0 e9 43 fd ff ff 31 c0 45 31 e4 e9 c5 fd ff ff 41 54 55 53 <48> 8b 47 10 48 83 78 10 00 74 70 41 89 d4 48 89 f5 48 89 fb 65
      [   35.461756] RIP: i2c_transfer+0x4/0x86 RSP: ffff9b4e43d47b30
      [   35.461757] CR2: 0000000000000010
      [   35.461759] ---[ end trace 4fe1e63e2dd93374 ]---
      
      Based on a patch by Fei Li.
      
      v2: s/reverting/sticking/ (Chris)
      
      Cc: stable@vger.kernel.org
      Cc: Fei Li <fei.li@intel.com>
      Co-developed-by: default avatarFei Li <fei.li@intel.com>
      Reported-by: default avatarPavel Nakonechnyi <zorg1331@gmail.com>
      Reported-and-tested-by: default avatarSeweryn Kokot <sewkokot@gmail.com>
      Reported-and-tested-by: default avatarLaszlo Valko <valko@linux.karinthy.hu>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105549
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105961Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180411131519.9091-1-jani.nikula@intel.com
      (cherry picked from commit f212bf9a)
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      a3520b89
    • Tvrtko Ursulin's avatar
      drm/i915/pmu: Inspect runtime PM state more carefully while estimating RC6 · e6be6bd8
      Tvrtko Ursulin authored
      While thinking about sporadic failures of perf_pmu/rc6-runtime-pm* tests
      on some CI machines I have concluded that: a) the PMU readout of RC6 can
      race against runtime PM transitions, and b) there are other reasons than
      being runtime suspended which can cause intel_runtime_pm_get_if_in_use to
      fail.
      
      Therefore when estimating RC6 the code needs to assert we are indeed in
      suspended state, and if not, the best we can do is return the last known
      RC6 value.
      
      Without this check we can calculate the estimated value based on un-
      initialized or inappropriate internal state, which can result in over-
      estimation, or in any case incorrect value being returned.
      
      v2:
       * Re-arrange the code a bit to avoid second unlock and return branch.
         (Chris Wilson)
      
      v3:
       * Insert some strategic blank lines and improve commit msg.
         (Chris Wilson)
      Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Fixes: 1fe699e3 ("drm/i915/pmu: Fix sleep under atomic in RC6 readout")
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105010
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Imre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180410112704.24462-1-tvrtko.ursulin@linux.intel.com
      (cherry picked from commit 2924bdee)
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      e6be6bd8
    • Xidong Wang's avatar
      drm/i915: Do no use kfree() to free a kmem_cache_alloc() return value · fcf1fadf
      Xidong Wang authored
      Along the eb_lookup_vmas() error path, the return value from
      kmem_cache_alloc() was freed using kfree(). Fix it to use the proper
      kmem_cache_free() instead.
      
      Fixes: d1b48c1e ("drm/i915: Replace execbuf vma ht with an idr")
      Signed-off-by: default avatarXidong Wang <wangxidong_97@163.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: <stable@vger.kernel.org> # v4.14+
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180404093824.9313-1-chris@chris-wilson.co.uk
      (cherry picked from commit 6be1187d)
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      fcf1fadf
  2. 04 Apr, 2018 2 commits
  3. 30 Mar, 2018 5 commits
  4. 28 Mar, 2018 6 commits
    • Dave Airlie's avatar
      Merge branch 'drm-misc-next-fixes' of git://anongit.freedesktop.org/drm/drm-misc into drm-next · 694f54f6
      Dave Airlie authored
      - Mask mode type garbage from userspace (Ville)
      
      Something went wrong on the misc tree side, but I'll pull the patch directly.
      
      * 'drm-misc-next-fixes' of git://anongit.freedesktop.org/drm/drm-misc:
        drm: Fix uabi regression by allowing garbage mode->type from userspace
      694f54f6
    • Zhipeng Gong's avatar
      drm/i915/gvt: Make MI_USER_INTERRUPT nop in cmd parser · 5da795b0
      Zhipeng Gong authored
      GVT-g dispatches request to host i915 and depends on i915 notify
      ring interrupt mechanism to check completion of request.
      For now MI_USER_INTERRUPT in guest requests is passed through
      in GVT-g cmd parser and i915 does not use it, which causes
      unnecessary interrupt handling in i915.
      On the other hand, if several requests from guest are combined into
      one request in and contain MI_USER_INTERRUPT in the middle of
      combined request. GVT-g still has to wait on the whole request to
      complete to inject user interrupts to guest.
      
      This patch makes all the MI_USER_INTERRUPT nop to save some interrupt
      handling.
      
      Here is test result to run glmark2 on guest for 10 seconds:
      host master interrupts number is reduced from 16021 to 11162
      host user interrupts number is reduced from 7936 to 3536
      
      v2:
      - revise commit message. (Kevin)
      Reviewed-by: default avatarKevin Tian <kevin.tian@intel.com>
      Signed-off-by: default avatarZhipeng Gong <zhipeng.gong@intel.com>
      Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
      5da795b0
    • Gustavo A. R. Silva's avatar
      drm/i915/gvt: Mark expected switch fall-through in handle_g2v_notification · ac0fd9cf
      Gustavo A. R. Silva authored
      In preparation to enabling -Wimplicit-fallthrough, mark switch cases
      where we are expecting to fall through.
      
      Addresses-Coverity-ID: 1466154 ("Missing break in switch")
      Signed-off-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
      ac0fd9cf
    • Dave Airlie's avatar
      Merge tag 'drm-amdkfd-next-2018-03-27' of git://people.freedesktop.org/~gabbayo/linux into drm-next · 9f36f9c8
      Dave Airlie authored
      - GPUVM support for dGPUs
      - KFD events support for dGPUs
      - Fix live-lock situation when restoring multiple evicted processes
      - Fix VM page table allocation on large-bar systems
      - Fix for build failure on frv architecture
      
      * tag 'drm-amdkfd-next-2018-03-27' of git://people.freedesktop.org/~gabbayo/linux:
        drm/amdkfd: Use ordered workqueue to restore processes
        drm/amdgpu: Fix acquiring VM on large-BAR systems
        drm/amdkfd: Add module option for testing large-BAR functionality
        drm/amdkfd: Kmap event page for dGPUs
        drm/amdkfd: Add ioctls for GPUVM memory management
        drm/amdkfd: Add TC flush on VMID deallocation for Hawaii
        drm/amdkfd: Allocate CWSR trap handler memory for dGPUs
        drm/amdkfd: Add per-process IDR for buffer handles
        drm/amdkfd: Aperture setup for dGPUs
        drm/amdkfd: Remove limit on number of GPUs
        drm/amdkfd: Populate DRM render device minor
        drm/amdkfd: Create KFD VMs on demand
        drm/amdgpu: Add kfd2kgd interface to acquire an existing VM
        drm/amdgpu: Add helper to turn an existing VM into a compute VM
        drm/amdgpu: Fix initial validation of PD BO for KFD VMs
        drm/amdgpu: Move KFD-specific fields into struct amdgpu_vm
        drm/amdkfd: fix uninitialized variable use
        drm/amdkfd: add missing include of mm.h
      9f36f9c8
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-fixes-2018-03-27' of... · cb17aa52
      Dave Airlie authored
      Merge tag 'drm-intel-next-fixes-2018-03-27' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
      
      - Display fixes for booting with MST hub lid closed and display
        freezing after hibernation (fd.o bugs 105470 & 105196)
      - Fix for a very rare interrupt handling race resulting in GPU hang
      
      * tag 'drm-intel-next-fixes-2018-03-27' of git://anongit.freedesktop.org/drm/drm-intel:
        drm/i915: Fix hibernation with ACPI S0 target state
        drm/i915/execlists: Use a locked clear_bit() for synchronisation with interrupt
        drm/i915: Specify which engines to reset following semaphore/event lockups
        drm/i915/dp: Write to SET_POWER dpcd to enable MST hub.
      cb17aa52
    • Dave Airlie's avatar
      Backmerge tag 'v4.16-rc7' into drm-next · 2b4f44ee
      Dave Airlie authored
      Linux 4.16-rc7
      
      This was requested by Daniel, and things were getting
      a bit hard to reconcile, most of the conflicts were
      trivial though.
      2b4f44ee
  5. 27 Mar, 2018 4 commits
  6. 26 Mar, 2018 1 commit
    • Dave Airlie's avatar
      Merge branch 'drm-next-4.17' of git://people.freedesktop.org/~agd5f/linux into drm-next · 33d009cd
      Dave Airlie authored
      Last pull for 4.17.  Highlights:
      - Vega12 support
      - A few more bug fixes and cleanups for powerplay
      
      * 'drm-next-4.17' of git://people.freedesktop.org/~agd5f/linux: (77 commits)
        drm/amd/pp: clean header file hwmgr.h
        drm/amd/pp: use mlck_table.count for array loop index limit
        drm/amdgpu: Add an ATPX quirk for hybrid laptop
        drm/amdgpu: fix spelling mistake: "asssert" -> "assert"
        drm/amd/pp: Add new asic support in pp_psm.c
        drm/amd/pp: Clean up powerplay code on Vega12
        drm/amd/pp: Add smu irq handlers for legacy asics
        drm/amd/pp: Fix set wrong temperature range on smu7
        drm/amdgpu: Don't change preferred domian when fallback GTT v5
        drm/amdgpu: Fix NULL ptr on driver unload due to init failure.
        drm/amdgpu: fix "mitigate workaround for i915"
        drm/amd/pp: Add smu irq handlers in sw_init instand of hw_init
        drm/amd/pp: Refine register_thermal_interrupt function
        drm/amdgpu: Remove wrapper layer of cgs irq handling
        drm/amd/powerplay: Return per DPM level clock
        drm/amd/powerplay: Remove the SOC floor voltage setting
        drm/amdgpu: no job timeout setting on compute queues
        drm/amdgpu: add vega12 pci ids (v2)
        drm/amd/powerplay: add the hw manager for vega12 (v4)
        drm/amd/powerplay: add the smu manager for vega12 (v4)
        ...
      33d009cd
  7. 25 Mar, 2018 10 commits
  8. 24 Mar, 2018 1 commit
  9. 23 Mar, 2018 8 commits