1. 28 4月, 2016 4 次提交
  2. 27 4月, 2016 3 次提交
  3. 26 4月, 2016 5 次提交
  4. 25 4月, 2016 9 次提交
  5. 24 4月, 2016 3 次提交
  6. 23 4月, 2016 2 次提交
    • V
      drm/i915: Make RPS EI/thresholds multiple of 25 on SNB-BDW · 8a292d01
      Ville Syrjälä 提交于
      Somehow my SNB GT1 (Dell XPS 8300) gets very unhappy around
      GPU hangs if the RPS EI/thresholds aren't suitably aligned.
      It seems like scheduling/timer interupts stop working somehow
      and things get stuck eg. in usleep_range().
      
      I bisected the problem down to
      commit 8a586437 ("drm/i915/skl: Restructured the gen6_set_rps_thresholds function")
      I observed that before all the values were at least multiples of 25,
      but afterwards they are not. And rounding things up to the next multiple
      of 25 does seem to help, so lets' do that. I also tried roundup(..., 5)
      but that wasn't sufficient. Also I have no idea if we might need this sort of
      thing on gen9+ as well.
      
      These are the original EI/thresholds:
       LOW_POWER
        GEN6_RP_UP_EI          12500
        GEN6_RP_UP_THRESHOLD   11800
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 21250
       BETWEEN
        GEN6_RP_UP_EI          10250
        GEN6_RP_UP_THRESHOLD    9225
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 18750
       HIGH_POWER
        GEN6_RP_UP_EI           8000
        GEN6_RP_UP_THRESHOLD    6800
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 15000
      
      These are after 8a586437:
       LOW_POWER
        GEN6_RP_UP_EI          12500
        GEN6_RP_UP_THRESHOLD   11875
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 21250
       BETWEEN
        GEN6_RP_UP_EI          10156
        GEN6_RP_UP_THRESHOLD    9140
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 18750
       HIGH_POWER
        GEN6_RP_UP_EI           7812
        GEN6_RP_UP_THRESHOLD    6640
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 15000
      
      And these are what we have after this patch:
       LOW_POWER
        GEN6_RP_UP_EI          12500
        GEN6_RP_UP_THRESHOLD   11875
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 21250
       BETWEEN
        GEN6_RP_UP_EI          10175
        GEN6_RP_UP_THRESHOLD    9150
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 18750
       HIGH_POWER
        GEN6_RP_UP_EI           7825
        GEN6_RP_UP_THRESHOLD    6650
        GEN6_RP_DOWN_EI        25000
        GEN6_RP_DOWN_THRESHOLD 15000
      
      Cc: stable@vger.kernel.org
      Cc: Akash Goel <akash.goel@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Testcase: igt/kms_pipe_crc_basic/hang-read-crc-pipe-B
      Fixes: 8a586437 ("drm/i915/skl: Restructured the gen6_set_rps_thresholds function")
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461159836-9108-1-git-send-email-ville.syrjala@linux.intel.comAcked-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NPatrik Jakobsson <patrik.jakobsson@linux.intel.com>
      8a292d01
    • S
      drm/i915: Fake HDMI live status · 4f4a8185
      Shashank Sharma 提交于
      This patch does the following:
      - Fakes live status of HDMI as connected (even if that's not).
        While testing certain (monitor + cable) combinations with
        various intel  platforms, it seems that live status register
        doesn't work reliably on some older devices. So limit the
        live_status check for HDMI detection, only for platforms
        from gen7 onwards.
      
      V2: restrict faking live_status to certain platforms
      V3: (Ville)
         - keep the debug message for !live_status case
         - fix indentation of comment
         - remove "warning" from the debug message
      
          (Jani)
         - Change format of fix details in the commit message
      
      Fixes: 237ed86c ("drm/i915: Check live status before reading edid")
      Cc: stable@vger.kernel.org # v4.4
      Suggested-by: NVille Syrjala <ville.syrjala@linux.intel.com>
      Signed-off-by: NShashank Sharma <shashank.sharma@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461237606-16491-1-git-send-email-shashank.sharma@intel.comSigned-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      4f4a8185
  7. 22 4月, 2016 9 次提交
  8. 21 4月, 2016 1 次提交
  9. 20 4月, 2016 4 次提交
    • D
      drm/i915: check for ERR_PTR from i915_gem_object_pin_map() · 8305216f
      Dave Gordon 提交于
      The newly-introduced function i915_gem_object_pin_map() returns an
      ERR_PTR (not NULL) if the pin-and-map opertaion fails, so that's what we
      must check for. And it's nicer not to assign such a pointer-or-error to
      a structure being filled in until after it's been validated, so we
      should keep it local and avoid exporting a bogus pointer. Also, for
      clarity and symmetry, we should clear 'virtual_start' along with 'vma'
      when unmapping a ringbuffer.
      Signed-off-by: NDave Gordon <david.s.gordon@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      8305216f
    • D
      drm/i915/guc: local optimisations and updating comments · 86e06cc0
      Dave Gordon 提交于
      Tidying up guc_init_proc_desc() and adding commentary to the client
      structure after the recent change in GuC page mapping strategy.
      Signed-off-by: NDave Gordon <david.s.gordon@intel.com>
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461078516-28678-1-git-send-email-david.s.gordon@intel.comReviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      86e06cc0
    • A
      drm/i915/guc: drop cached copy of 'wq_head' · a5916e8f
      Alex Dai 提交于
      Now that we keep the GuC client process descriptor permanently mapped,
      we don't really need to keep a local copy of the GuC's work-queue-head.
      So we can simplify the code a little by not doing this.
      Signed-off-by: NAlex Dai <yu.dai@intel.com>
      Signed-off-by: NDave Gordon <david.s.gordon@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      a5916e8f
    • D
      drm/i915/guc: keep GuC doorbell & process descriptor mapped in kernel · 0d92a6a4
      Dave Gordon 提交于
      Don't use kmap_atomic() for doorbell & process descriptor access.
      This patch fixes the BUG shown below, where the thread could sleep
      while holding a kmap_atomic mapping. In order not to need to call
      kmap_atomic() in this code path, we now set up a permanent kernel
      mapping of the shared doorbell and process-descriptor page, and
      use that in all doorbell and process-descriptor related code.
      
        BUG: scheduling while atomic: gem_close_race/1941/0x00000002
        Modules linked in: hid_generic usbhid i915 asix usbnet libphy mii
          i2c_algo_bit drm_kms_helper cfbfillrect syscopyarea cfbimgblt
          sysfillrect sysimgblt fb_sys_fops cfbcopyarea drm coretemp i2c_hid
          hid video pinctrl_sunrisepoint pinctrl_intel acpi_pad nls_iso8859_1
          e1000e ptp psmouse pps_core ahci libahci
        CPU: 0 PID: 1941 Comm: gem_close_race Tainted: G     U 4.4.0-160121+ #123
        Hardware name: Intel Corporation Skylake Client platform/Skylake AIO
          DDR3L RVP10, BIOS SKLSE2R1.R00.X100.B01.1509220551 09/22/2015
          0000000000013e40 ffff880166c27a78 ffffffff81280d02 ffff880172c13e40
          ffff880166c27a88 ffffffff810c203a ffff880166c27ac8 ffffffff814ec808
          ffff88016b7c6000 ffff880166c28000 00000000000f4240 0000000000000001
        Call Trace:
          [<ffffffff81280d02>] dump_stack+0x4b/0x79
          [<ffffffff810c203a>] __schedule_bug+0x41/0x4f
          [<ffffffff814ec808>] __schedule+0x5a8/0x690
          [<ffffffff814ec927>] schedule+0x37/0x80
          [<ffffffff814ef3fd>] schedule_hrtimeout_range_clock+0xad/0x130
          [<ffffffff81090be0>] ? hrtimer_init+0x10/0x10
          [<ffffffff814ef3f1>] ?  schedule_hrtimeout_range_clock+0xa1/0x130
          [<ffffffff814ef48e>] schedule_hrtimeout_range+0xe/0x10
          [<ffffffff814eef9b>] usleep_range+0x3b/0x40
          [<ffffffffa01ec109>] i915_guc_wq_check_space+0x119/0x210 [i915]
          [<ffffffffa01da47c>] intel_logical_ring_alloc_request_extras+0x5c/0x70 [i915]
          [<ffffffffa01cdbf1>] i915_gem_request_alloc+0x91/0x170 [i915]
          [<ffffffffa01c1c07>] i915_gem_do_execbuffer.isra.25+0xbc7/0x12a0 [i915]
          [<ffffffffa01cb785>] ?  i915_gem_object_get_pages_gtt+0x225/0x3c0 [i915]
          [<ffffffffa01d1fb6>] ? i915_gem_pwrite_ioctl+0xd6/0x9f0 [i915]
          [<ffffffffa01c2e68>] i915_gem_execbuffer2+0xa8/0x250 [i915]
          [<ffffffffa00f65d8>] drm_ioctl+0x258/0x4f0 [drm]
          [<ffffffffa01c2dc0>] ? i915_gem_execbuffer+0x340/0x340 [i915]
          [<ffffffff8111590d>] do_vfs_ioctl+0x2cd/0x4a0
          [<ffffffff8111eac2>] ? __fget+0x72/0xb0
          [<ffffffff81115b1c>] SyS_ioctl+0x3c/0x70
          [<ffffffff814effd7>] entry_SYSCALL_64_fastpath+0x12/0x6a
        ------------[ cut here ]------------
      
      v4:
        Only tear down doorbell & kunmap() client object if we actually
        succeeded in allocating a client object (Tvrtko Ursulin)
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93847Original-version-by: NAlex Dai <yu.dai@intel.com>
      Signed-off-by: NDave Gordon <david.s.gordon@intel.com>
      Cc: Tvtrko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      0d92a6a4