1. 01 12月, 2017 12 次提交
  2. 30 11月, 2017 8 次提交
    • M
      drm/i915: Enable IPS with only sprite plane visible too, v4. · adbe5c5c
      Maarten Lankhorst 提交于
      This comment predates atomic, and I think with the way we currently
      track IPS, it's safe to enable this for the case we switch too.
      
      Changes since v1:
      - Keep IPS enabled when switching planes.
      Changes since v2:
      - Enable IPS when at least one plane is enabled. (Ville)
      Changes since v3:
      - Actually do what was advertised in v3, sigh! (Ville, CI)
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171122183906.47767-1-maarten.lankhorst@linux.intel.comReviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      adbe5c5c
    • M
      drm/i915: Make ips_enabled a property depending on whether IPS is enabled, v3. · 24f28450
      Maarten Lankhorst 提交于
      ips_enabled was used as a variable of whether IPS can be enabled or not,
      but should be used to test whether IPS is actually enabled.
      
      Changes since v1:
      - Call needs_modeset on new crtc state. (Ville)
      - IPS can be enabled with sprite plane enabled too. (Ville)
      - Fix CDCLK vs IPS workaround. (Ville)
      Changes since v2:
      - Only re-enable fastset when inheriting mode. (Ville)
      - Put the conditions for enabling and disabling IPS in a helper.
      Changes since v3:
      - Keep the max_cdclk workaround working. (Ville)
      - Also check logical cdclk out of paranoia.
      - Remove planes check from IPS disable function for initial disable.
      - Remove assert_plane_enabled/disabled checks and use
        crtc_state->active_planes for hsw_enable_ips only, always allow
        calling hsw_disable_ips to disable it initially in hw.
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171122183901.47720-1-maarten.lankhorst@linux.intel.com
      [mlankhorst: pipe_config -> crtc_state (Ville)]
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      24f28450
    • I
      drm/i915: Avoid PPS HW/SW state mismatch due to rounding · 5643205c
      Imre Deak 提交于
      We store a SW state of the t11_t12 timing in 100usec units but have to
      program it in 100msec as required by HW. The rounding used during
      programming means there will be a mismatch between the SW and HW states
      of this value triggering a "PPS state mismatch" error. Avoid this by
      storing the already rounded-up value in the SW state.
      
      Note that we still calculate panel_power_cycle_delay with the finer
      100usec granularity to avoid any needless waits using that version of
      the delay.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103903
      Cc: joks <joks@linux.pl>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171129175137.2889-1-imre.deak@intel.com
      5643205c
    • C
      drm/i915: Skip switch-to-kernel-context on suspend when wedged · ecf73eb2
      Chris Wilson 提交于
      If the HW is already wedged, attempting to submit a request will
      generate an -EIO. If we tried this during suspend, we would abort
      whereas all we want to do is to go sleep and throw away the corrupt
      state.
      
      Fixes: 5ab57c70 ("drm/i915: Flush logical context image out to memory upon suspend")
      Testcase: igt/gem_eio/suspend
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171130102951.14965-1-chris@chris-wilson.co.uk
      ecf73eb2
    • V
      drm/i915/glk: Apply WaProgramL3SqcReg1DefaultForPerf for GLK too · 7436830c
      Valtteri Rantala 提交于
      Testing the texture read performance shows that the same tuning for
      the SQ credits is needed on GLK as on BXT/APL. This has been also
      confirmed by Altug from the HW team.
      
      V4: Rebase + fix
      Signed-off-by: NValtteri Rantala <valtteri.rantala@intel.com>
      Reviewed-by: David Weinehall <david.weinehall@linux.intel.com> (v1)
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1511880305-12166-1-git-send-email-valtteri.rantala@intel.com
      7436830c
    • S
      drm/i915/guc: Change default GuC FW for KBL to v9.39 · cc440856
      Sagar Arun Kamble 提交于
      This patch makes v9.39 firmware as default firmware for KBL.
      
      Note: GuC logging control is changed with this firmware. GuC is
      expecting i915 to set control bit to enable "default logging"
      while using GuC action UK_LOG_ENABLE_LOGGING.
      However i915 is currently not doing this because it is version
      specific change and can be handled entirely in GuC. It will need
      to be fixed in future firmwares.
      
      This update includes (since v9.14):
      
      - DCC spec changes for BXT + DCT enabling
      - Bug Fix for power conservation feature SLPC_DCC
      - Scheduler 1-element submission during DCC cycles.
      - SB based Pre-ETM/ETM flow enabling for debug signed GuC/HuC
      - Moving GuC non_critical r/w data to lower SRAM 64KB
      - Media engine Reset fix.  Correctly marking context for resubmission in
        Media Reset case.
      - ABT Disable bug fix. Disabled Evaluation mode on context change.
      - Async FW in Engine Schedule feature (not enabled from KMD)
      - GuC clean up to align developer build in line to production build.
      - Disable ARAT interrupt before programming ARAT delta.
      - Memory range check in Parse to avoid failure due to overflow.
      - GuC Msg Channel Hang WA - Stall GUC for mmio access when IDI is low
        during CPD flow.
      - Fix for submit queue over flow issue
      - Enabling IBC on KBL GT3 15W, GT4 45W
      - Disabling wrong device ID WA in production signed kernel
      - Enabling WA for MSGCH hang issue upto required KBL stepping
      - Clear forcewake in CSB when SQ is empty.
      - 3Tries of GuC2CSME wake request
      - During reset one parameter was not getting accounted
      - Disable DCC 1-elem mode submission
      - Move UkGuckmdInterface.h file from 2016 folders to common 2016 folder.
      - This is file location change.No functional change done as part of this
        check in.
      - Enabling Guc Log changes for ultra low logging for OCA
      - Enabling Dynamic Render Power Well Hysteresis Programming for Compute
        Worklaods
      - Enabling build failure check to catch critical section overflow.
      - Disable build.bat redundant prints.
      - Move few least used functions to non-critical section.
      - Rearrange GuC documentation folder structure.
      - Synchronize SLPC internal debug interface with other branches.
      - Fixing Issue with Default Guc Log changes for OCA using special Control
        Bit
      - Aggressive DCC implementation for supported platforms.
      
      v2: Rebase. Updated commit message.
      Signed-off-by: NJeff McGee <jeff.mcgee@intel.com>
      Signed-off-by: NSagar Arun Kamble <sagar.a.kamble@intel.com>
      Cc: Spotswood John A <john.a.spotswood@intel.com>
      Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
      Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: Anusha Srivatsa<anusha.srivatsa@intel.com >
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1511972351-574-4-git-send-email-sagar.a.kamble@intel.com
      cc440856
    • S
      drm/i915/guc: Change default GuC FW for BXT to v9.29 · d416ac78
      Sagar Arun Kamble 提交于
      This patch makes v9.29 firmware as default firmware for BXT.
      
      Note: GuC logging control is changed with this firmware. GuC is
      expecting i915 to set control bit to enable "default logging"
      while using GuC action UK_LOG_ENABLE_LOGGING.
      However i915 is currently not doing this because it is version
      specific change and can be handled entirely in GuC. It will need
      to be fixed in future firmwares.
      
      This update includes (since v8.7):
      
      - Added support to log media reset count for host to read it
      - BXT WA for fixing MTP hangs. WaDisableDOPRenderClkGatingAtSubmit
      - Sub-feature level control for power management features.
      - Minor clean-up for power management interface.
      - Unified power management interface and scheduler interface into
        1 file using same version.
      - Bug Fix for multi context scheduler flag.
      - DCC spec changes for BXT + DCT enabling
      - Springboard based Pre-ETM/ETM flow enabling for debug signed GuC/HuC
      - Moving GuC non_critical r/w data to lower SRAM 64KB
      - Enabled IBC for BXT
      - Media engine Reset fix.  Correctly marking context for resubmission in
        Media Reset case.
      - SLPC Dynamic RPe fix to resolve issues where incorrect frequency was set.
      - ABT Disable bug fix. Disabled Evaluation mode on context change.
      - GuC clean up to align developer build in line to production build.
      - Disable ARAT interrupt before programming ARAT delta.
      - Memory range check in Parse to avoid failure due to overflow.
      - Clear forcewake in CSB when SQ is empty.
      - SLPC IBC 1.6 for APL to ensure multiplier does not cap IA below Pe.
      - Move UkGuckmdInterface.h file from 2016 folders to common 2016 folder.
      - This is file location change. No functional change done as part of this
        check in.
      - 3 tries of wake request needed from GuC2CSME for ME to wake up. Request
        has come from ME spec
      - During reset one parameter was not getting accounted
      - Enabling Guc Log changes for ultra low logging for OCA
      - Disable build.bat redundant prints.
      - Move few least used functions to non-critical section.
      - Rearrange GuC documentation folder structure.
      - Fixing Issue with Default Guc Log changes for OCA using special Control
        Bit
      
      v2: Rebase. Updated commit message.
      Signed-off-by: NJeff McGee <jeff.mcgee@intel.com>
      Signed-off-by: NSagar Arun Kamble <sagar.a.kamble@intel.com>
      Cc: Spotswood John A <john.a.spotswood@intel.com>
      Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
      Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: NAnusha Srivatsa <anusha.srivatsa@intel.com>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1511972351-574-3-git-send-email-sagar.a.kamble@intel.com
      d416ac78
    • S
      drm/i915/guc: Change default GuC FW for SKL to v9.33 · 580b9d05
      Sagar Arun Kamble 提交于
      This patch makes v9.33 firmware as default firmware for SKL.
      
      Note: GuC logging control is changed with this firmware. GuC is
      expecting i915 to set control bit to enable "default logging"
      while using GuC action UK_LOG_ENABLE_LOGGING.
      However i915 is currently not doing this because it is version
      specific change and can be handled entirely in GuC. It will need
      to be fixed in future firmwares.
      
      This update includes (since v6.1):
      
      - HuC RSA Keys updated.
      - Adding per engine preemption support in GuC scheduler
      - Minor bug fixes.
      - Added support to log media reset count for host to read it
      - Sub-feature level control for power management features.
      - Minor clean-up for power management interface.
      - Unified power management interface and scheduler interface into
        1 file using same version.
      - Bug Fix for multi context scheduler flag.
      - DCC spec changes for BXT + DCT enabling
      - SB based Pre-ETM/ETM flow enabling for debug signed GuC/HuC
      - Moving GuC non_critical r/w data to lower SRAM 64KB
      - Media engine Reset fix.  Correctly marking context for resubmission in
        Media Reset case.
      - ABT Disable bug fix. Disabled Evaluation mode on context change.
      - Async FW in Engine Schedule feature (not enabled from KMD)
      - GuC clean up to align developer build in line to production build.
      - DCC consistency fix for SKL
      - Disable ARAT interrupt before programming ARAT delta.
      - Memory range check in Parse to avoid failure due to overflow.
      - Enabled WA for MSGCH hang issue
      - Clear forcewake in CSB when SQ is empty.
      - Move UkGuckmdInterface.h file from 2016 folders to common 2016 folder.
      - This is file location change.No functional change done as part of this
        check in.
      - Enable decoupled freq for SKL GT4
      - 3 tries of wake request needed from GuC2CSME for ME to wake up. Request
        has come from ME spec
      - During reset one parameter was not getting accounted
      - Enabling Guc Log changes for ultra low logging for OCA
      - Enabling build failure check to catch critical section overflow.
      - Disable build.bat redundant prints.
      - Move few least used functions to non-critical section.
      - Rearrange GuC documentation folder structure.
      - Synchronize SLPC internal debug interface with other branches.
      - Fixing Issue with Default Guc Log changes for OCA using special Control
        Bit
      
      v2: Rebase. Updated commit message.
      Signed-off-by: NJeff McGee <jeff.mcgee@intel.com>
      Signed-off-by: NSagar Arun Kamble <sagar.a.kamble@intel.com>
      Cc: Spotswood John A <john.a.spotswood@intel.com>
      Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
      Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: NAnusha Srivatsa <anusha.srivatsa@intel.com>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1511972351-574-2-git-send-email-sagar.a.kamble@intel.com
      580b9d05
  3. 29 11月, 2017 4 次提交
  4. 28 11月, 2017 8 次提交
  5. 26 11月, 2017 1 次提交
    • C
      drm/i915/fbdev: Serialise early hotplug events with async fbdev config · ad88d7fc
      Chris Wilson 提交于
      As both the hotplug event and fbdev configuration run asynchronously, it
      is possible for them to run concurrently. If configuration fails, we were
      freeing the fbdev causing a use-after-free in the hotplug event.
      
      <7>[ 3069.935211] [drm:intel_fb_initial_config [i915]] Not using firmware configuration
      <7>[ 3069.935225] [drm:drm_setup_crtcs] looking for cmdline mode on connector 77
      <7>[ 3069.935229] [drm:drm_setup_crtcs] looking for preferred mode on connector 77 0
      <7>[ 3069.935233] [drm:drm_setup_crtcs] found mode 3200x1800
      <7>[ 3069.935236] [drm:drm_setup_crtcs] picking CRTCs for 8192x8192 config
      <7>[ 3069.935253] [drm:drm_setup_crtcs] desired mode 3200x1800 set on crtc 43 (0,0)
      <7>[ 3069.935323] [drm:intelfb_create [i915]] no BIOS fb, allocating a new one
      <4>[ 3069.967737] general protection fault: 0000 [#1] PREEMPT SMP
      <0>[ 3069.977453] ---------------------------------
      <4>[ 3069.977457] Modules linked in: i915(+) vgem snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic x86_pkg_temp_thermal intel_powerclamp coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm r8169 mei_me mii prime_numbers mei i2c_hid pinctrl_geminilake pinctrl_intel [last unloaded: i915]
      <4>[ 3069.977492] CPU: 1 PID: 15414 Comm: kworker/1:0 Tainted: G     U          4.14.0-CI-CI_DRM_3388+ #1
      <4>[ 3069.977497] Hardware name: Intel Corp. Geminilake/GLK RVP1 DDR4 (05), BIOS GELKRVPA.X64.0062.B30.1708222146 08/22/2017
      <4>[ 3069.977508] Workqueue: events output_poll_execute
      <4>[ 3069.977512] task: ffff880177734e40 task.stack: ffffc90001fe4000
      <4>[ 3069.977519] RIP: 0010:__lock_acquire+0x109/0x1b60
      <4>[ 3069.977523] RSP: 0018:ffffc90001fe7bb0 EFLAGS: 00010002
      <4>[ 3069.977526] RAX: 6b6b6b6b6b6b6b6b RBX: 0000000000000282 RCX: 0000000000000000
      <4>[ 3069.977530] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff880170d4efd0
      <4>[ 3069.977534] RBP: ffffc90001fe7c70 R08: 0000000000000001 R09: 0000000000000000
      <4>[ 3069.977538] R10: 0000000000000000 R11: ffffffff81899609 R12: ffff880170d4efd0
      <4>[ 3069.977542] R13: ffff880177734e40 R14: 0000000000000001 R15: 0000000000000000
      <4>[ 3069.977547] FS:  0000000000000000(0000) GS:ffff88017fc80000(0000) knlGS:0000000000000000
      <4>[ 3069.977551] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4>[ 3069.977555] CR2: 00007f7e8b7bcf04 CR3: 0000000003e0f000 CR4: 00000000003406e0
      <4>[ 3069.977559] Call Trace:
      <4>[ 3069.977565]  ? mark_held_locks+0x64/0x90
      <4>[ 3069.977571]  ? _raw_spin_unlock_irq+0x24/0x50
      <4>[ 3069.977575]  ? _raw_spin_unlock_irq+0x24/0x50
      <4>[ 3069.977579]  ? trace_hardirqs_on_caller+0xde/0x1c0
      <4>[ 3069.977583]  ? _raw_spin_unlock_irq+0x2f/0x50
      <4>[ 3069.977588]  ? finish_task_switch+0xa5/0x210
      <4>[ 3069.977592]  ? lock_acquire+0xaf/0x200
      <4>[ 3069.977596]  lock_acquire+0xaf/0x200
      <4>[ 3069.977600]  ? __mutex_lock+0x5e9/0x9b0
      <4>[ 3069.977604]  _raw_spin_lock+0x2a/0x40
      <4>[ 3069.977608]  ? __mutex_lock+0x5e9/0x9b0
      <4>[ 3069.977612]  __mutex_lock+0x5e9/0x9b0
      <4>[ 3069.977616]  ? drm_fb_helper_hotplug_event.part.19+0x16/0xa0
      <4>[ 3069.977621]  ? drm_fb_helper_hotplug_event.part.19+0x16/0xa0
      <4>[ 3069.977625]  drm_fb_helper_hotplug_event.part.19+0x16/0xa0
      <4>[ 3069.977630]  output_poll_execute+0x8d/0x180
      <4>[ 3069.977635]  process_one_work+0x22e/0x660
      <4>[ 3069.977640]  worker_thread+0x48/0x3a0
      <4>[ 3069.977644]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
      <4>[ 3069.977649]  kthread+0x102/0x140
      <4>[ 3069.977653]  ? process_one_work+0x660/0x660
      <4>[ 3069.977657]  ? kthread_create_on_node+0x40/0x40
      <4>[ 3069.977662]  ret_from_fork+0x27/0x40
      <4>[ 3069.977666] Code: 8d 62 f8 c3 49 81 3c 24 e0 fa 3c 82 41 be 00 00 00 00 45 0f 45 f0 83 fe 01 77 86 89 f0 49 8b 44 c4 08 48 85 c0 0f 84 76 ff ff ff <f0> ff 80 38 01 00 00 8b 1d 62 f9 e8 01 45 8b 85 b8 08 00 00 85
      <1>[ 3069.977707] RIP: __lock_acquire+0x109/0x1b60 RSP: ffffc90001fe7bb0
      <4>[ 3069.977712] ---[ end trace 4ad012eb3af62df7 ]---
      
      In order to keep the dev_priv->ifbdev alive after failure, we have to
      avoid the free and leave it empty until we unload the module (which is
      less than ideal, but a necessary evil for simplicity). Then we can use
      intel_fbdev_sync() to serialise the hotplug event with the configuration.
      The serialisation between the two was removed in commit 934458c2
      ("Revert "drm/i915: Fix races on fbdev""), but the use after free is much
      older, commit 366e39b4 ("drm/i915: Tear down fbdev if initialization
      fails")
      
      Fixes: 366e39b4 ("drm/i915: Tear down fbdev if initialization fails")
      Fixes: 934458c2 ("Revert "drm/i915: Fix races on fbdev"")
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Lukas Wunner <lukas@wunner.de>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Reviewed-by: NLukas Wunner <lukas@wunner.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171125194155.355-1-chris@chris-wilson.co.uk
      ad88d7fc
  6. 25 11月, 2017 5 次提交
  7. 24 11月, 2017 2 次提交