1. 25 Nov, 2019 6 commits
  2. 22 Nov, 2019 1 commit
  3. 20 Nov, 2019 2 commits
  4. 18 Nov, 2019 10 commits
  5. 15 Nov, 2019 2 commits
  6. 14 Nov, 2019 4 commits
  7. 13 Nov, 2019 7 commits
  8. 12 Nov, 2019 4 commits
  9. 11 Nov, 2019 4 commits
    • Ben Hutchings's avatar
      drm/i915/cmdparser: Fix jump whitelist clearing · ea0b163b
      Ben Hutchings authored
      When a jump_whitelist bitmap is reused, it needs to be cleared.
      Currently this is done with memset() and the size calculation assumes
      bitmaps are made of 32-bit words, not longs.  So on 64-bit
      architectures, only the first half of the bitmap is cleared.
      
      If some whitelist bits are carried over between successive batches
      submitted on the same context, this will presumably allow embedding
      the rogue instructions that we're trying to reject.
      
      Use bitmap_zero() instead, which gets the calculation right.
      
      Fixes: f8c08d8f ("drm/i915/cmdparser: Add support for backward jumps")
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarJon Bloomfield <jon.bloomfield@intel.com>
      ea0b163b
    • Ville Syrjälä's avatar
      drm/i915: Preload LUTs if the hw isn't currently using them · f7702137
      Ville Syrjälä authored
      The LUTs are single buffered so in order to program them without
      tearing we'd have to do it during vblank (actually to be 100%
      effective it has to happen between start of vblank and frame start).
      We have no proper mechanism for that at the moment so we just
      defer loading them after the vblank waits have happened. That
      is not quite sufficient (especially when committing multiple pipes
      whose vblanks don't line up) so the LUT load will often leak into
      the following frame causing tearing.
      
      However in case the hardware wasn't previously using the LUT we
      can preload it before setting the enable bit (which is double
      buffered so won't tear). Let's determine if we can do such
      preloading and make it happen. Slight variation between the
      hardware requires some platforms specifics in the checks.
      
      Hans is seeing ugly colored flash on VLV/CHV macchines (GPD win
      and Asus T100HA) when the gamma LUT gets loaded for the first
      time as the BIOS has left some junk in the LUT memory.
      
      v2: Deal with uapi vs. hw crtc state split
          s/GCM/CGM/ typo fix
      
      Cc: Hans de Goede <hdegoede@redhat.com>
      Fixes: 051a6d8d ("drm/i915: Move LUT programming to happen after vblank waits")
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191030190815.7359-1-ville.syrjala@linux.intel.comTested-by: default avatarHans de Goede <hdegoede@redhat.com>
      Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
      (cherry picked from commit 0ccc42a2)
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      f7702137
    • Ville Syrjälä's avatar
      drm/i915: Don't oops in dumb_create ioctl if we have no crtcs · aeec7661
      Ville Syrjälä authored
      Make sure we have a crtc before probing its primary plane's
      max stride. Initially I thought we can't get this far without
      crtcs, but looks like we can via the dumb_create ioctl.
      
      Not sure if we shouldn't disable dumb buffer support entirely
      when we have no crtcs, but that would require some amount of work
      as the only thing currently being checked is dev->driver->dumb_create
      which we'd have to convert to some device specific dynamic thing.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Fixes: aa5ca8b7 ("drm/i915: Align dumb buffer stride to 4k to allow for gtt remapping")
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191106172349.11987-1-ville.syrjala@linux.intel.comReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      (cherry picked from commit baea9ffe)
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      aeec7661
    • Chris Wilson's avatar
      drm/i915: Leave the aliasing-ppgtt size alone · 3cac1958
      Chris Wilson authored
      The hidden aliasing-ppgtt's size is never revealed, as we only inspect
      the front GTT when engaged. However, we were "fixing" the hidden ppgtt
      to match, with the net result that we ended up leaking the unused
      portion on Braswell were we preallocated the entire set of top level
      PDP, see gen8_preallocate_top_level_pdp().
      
      [   26.025364] DMA-API: pci 0000:00:02.0: device driver has pending DMA allocations while released from device [count=2]
      [   26.025364] One of leaked entries details: [device address=0x0000000230778000] [size=4096 bytes] [mapped with DMA_BIDIRECTIONAL] [mapped as single]
      [   26.025683] WARNING: CPU: 0 PID: 415 at kernel/dma/debug.c:894 dma_debug_device_change+0x1a4/0x1f0
      [   26.025905] Modules linked in: i915(E-) intel_powerclamp(E) nls_ascii(E) nls_cp437(E) crct10dif_pclmul(E) crc32_pclmul(E) vfat(E) crc32c_intel(E) fat(E) ghash_clmulni_intel(E) prime_numbers(E) intel_gtt(E) i2c_algo_bit(E) efi_pstore(E) drm_kms_helper(E) syscopyarea(E) sysfillrect(E) sysimgblt(E) fb_sys_fops(E) evdev(E) drm(E) aesni_intel(E) glue_helper(E) crypto_simd(E) cryptd(E) intel_cstate(E) sg(E) efivars(E) pcspkr(E) video(E) button(E) efivarfs(E) ip_tables(E) x_tables(E) autofs4(E) sd_mod(E) lpc_ich(E) ahci(E) mfd_core(E) i2c_i801(E) libahci(E) i2c_designware_pci(E) i2c_designware_core(E)
      [   26.026613] CPU: 0 PID: 415 Comm: rmmod Tainted: G            E     5.4.0-rc6+ #25
      [   26.026837] Hardware name:  /, BIOS PYBSWCEL.86A.0027.2015.0507.1758 05/07/2015
      [   26.027080] RIP: 0010:dma_debug_device_change+0x1a4/0x1f0
      [   26.027319] Code: 89 54 24 08 e8 ad 60 62 00 48 8b 54 24 08 48 89 c6 41 57 4d 89 e9 49 89 d8 44 89 f1 41 54 48 c7 c7 e0 61 06 82 e8 c1 aa f5 ff <0f> 0b 5a 59 48 83 3c 24 00 0f 85 97 26 00 00 8b 05 77 47 92 01 85
      [   26.027600] RSP: 0018:ffff888228d2fcc8 EFLAGS: 00010282
      [   26.027831] RAX: 0000000000000000 RBX: 0000000230778000 RCX: 0000000000000000
      [   26.028053] RDX: 0000000000000001 RSI: 0000000000000008 RDI: ffffed10451a5f8f
      [   26.028279] RBP: ffff88823480c0b0 R08: 0000000000000001 R09: ffffed1046e83eb1
      [   26.028500] R10: ffffed1046e83eb0 R11: ffff88823741f587 R12: ffffffff82067340
      [   26.028725] R13: 0000000000001000 R14: 0000000000000002 R15: ffffffff82067480
      [   26.028952] FS:  00007fdf3ed174c0(0000) GS:ffff888237400000(0000) knlGS:0000000000000000
      [   26.029185] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   26.029405] CR2: 000055e211109030 CR3: 0000000230139000 CR4: 00000000001006f0
      [   26.029622] Call Trace:
      [   26.029846]  notifier_call_chain+0x67/0xa0
      [   26.030076]  blocking_notifier_call_chain+0x5a/0x80
      [   26.030305]  device_release_driver_internal+0x20d/0x260
      [   26.030535]  driver_detach+0x7b/0xe1
      [   26.030761]  bus_remove_driver+0x8c/0x153
      [   26.030993]  pci_unregister_driver+0x2d/0xf0
      [   26.032603]  i915_exit+0x16/0x1c [i915]
      Reported-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Fixes: 1eda701e ("drm/i915/gtt: Recursive cleanup for gen8")
      References: c082afac ("drm/i915: Move aliasing_ppgtt underneath its i915_ggtt")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191106221223.7437-1-chris@chris-wilson.co.uk
      (cherry picked from commit 2b0a4fc2)
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      3cac1958