1. 19 7月, 2016 1 次提交
    • L
      drm/i915: Enable polling when we don't have hpd · 84c8e096
      Lyude 提交于
      Unfortunately, there's two situations where we lose hpd right now:
      - Runtime suspend
      - When we've shut off all of the power wells on Valleyview/Cherryview
      
      While it would be nice if this didn't cause issues, this has the
      ability to get us in some awkward states where a user won't be able to
      get their display to turn on. For instance; if we boot a Valleyview
      system without any monitors connected, it won't need any of it's power
      wells and thus shut them off. Since this causes us to lose HPD, this
      means that unless the user knows how to ssh into their machine and do a
      manual reprobe for monitors, none of the monitors they connect after
      booting will actually work.
      
      Eventually we should come up with a better fix then having to enable
      polling for this, since this makes rpm a lot less useful, but for now
      the infrastructure in i915 just isn't there yet to get hpd in these
      situations.
      
      Changes since v1:
       - Add comment explaining the addition of the if
         (!mode_config->poll_running) in intel_hpd_init()
       - Remove unneeded if (!dev->mode_config.poll_enabled) in
         i915_hpd_poll_init_work()
       - Call to drm_helper_hpd_irq_event() after we disable polling
       - Add cancel_work_sync() call to intel_hpd_cancel_work()
      
      Changes since v2:
       - Apparently dev->mode_config.poll_running doesn't actually reflect
         whether or not a poll is currently in progress, and is actually used
         for dynamic module paramter enabling/disabling. So now we instead
         keep track of our own poll_running variable in dev_priv->hotplug
       - Clean i915_hpd_poll_init_work() a little bit
      
      Changes since v3:
       - Remove the now-redundant connector loop in intel_hpd_init(), just
         rely on intel_hpd_poll_enable() for setting connector->polled
         correctly on each connector
       - Get rid of poll_running
       - Don't assign enabled in i915_hpd_poll_init_work before we actually
         lock dev->mode_config.mutex
       - Wrap enabled assignment in i915_hpd_poll_init_work() in READ_ONCE()
         for doc purposes
       - Do the same for dev_priv->hotplug.poll_enabled with WRITE_ONCE in
         intel_hpd_poll_enable()
       - Add some comments about racing not mattering in intel_hpd_poll_enable
      
      Changes since v4:
       - Rename intel_hpd_poll_enable() to intel_hpd_poll_init()
       - Drop the bool argument from intel_hpd_poll_init()
       - Remove redundant calls to intel_hpd_poll_init()
       - Rename poll_enable_work to poll_init_work
       - Add some kerneldoc for intel_hpd_poll_init()
       - Cross-reference intel_hpd_poll_init() in intel_hpd_init()
       - Just copy the loop from intel_hpd_init() in intel_hpd_poll_init()
      
      Changes since v5:
       - Minor kerneldoc nitpicks
      
      Cc: stable@vger.kernel.org
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NLyude <cpaul@redhat.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      (cherry picked from commit 19625e85)
      84c8e096
  2. 15 7月, 2016 1 次提交
  3. 08 7月, 2016 1 次提交
  4. 05 7月, 2016 4 次提交
  5. 04 7月, 2016 4 次提交
  6. 03 7月, 2016 1 次提交
  7. 02 7月, 2016 1 次提交
  8. 01 7月, 2016 1 次提交
  9. 30 6月, 2016 3 次提交
  10. 24 6月, 2016 8 次提交
  11. 14 6月, 2016 2 次提交
    • A
      drm/i915/bxt: Add WaEnablePooledEuFor2x6 · e015dd69
      arun.siluvery@linux.intel.com 提交于
      Pooled EU is enabled by default for BXT but for fused down 2x6 parts it is
      advised to turn it off. But there is another HW issue in these parts (fused
      down 2x6 parts) before C0 that requires Pooled EU to be enabled as a
      workaround. In this case the pool configuration changes depending upon
      which subslice is disabled. This doesn't affect if the device has all 3
      subslices enabled.
      
      Userspace need to know min no. of eus in a pool as it varies based on which
      subslice is disabled, this is not yet exported because userspace support is
      not available yet. Once the support is available this needs to be exported
      using getparam ioctls.
      
      v2: s/subslice_total/subslice_per_slice as it is a more logical field (Mika)
      Reviewed-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Cc: Winiarski, Michal <michal.winiarski@intel.com>
      Cc: Zou, Nanhai <nanhai.zou@intel.com>
      Cc: Yang, Rong R <rong.r.yang@intel.com>
      Cc: Tim Gore <tim.gore@intel.com>
      Cc: Jeff McGee <jeff.mcgee@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: NArun Siluvery <arun.siluvery@linux.intel.com>
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      e015dd69
    • A
      drm/i915:bxt: Enable Pooled EU support · 33e141ed
      arun.siluvery@linux.intel.com 提交于
      This mode allows to assign EUs to pools which can process work collectively.
      The command to enable this mode should be issued as part of context initialization.
      
      The pooled mode is global, once enabled it has to stay the same across all
      contexts until HW reset hence this is sent in auxiliary golden context batch.
      Thanks to Mika for the preliminary review and comments.
      
      v2: explain why this is enabled in golden context, use feature flag while
      enabling the support (Chris)
      
      v3: Include only kernel support as userspace support is not available yet.
      
      User space clients need to know when the pooled EU feature is present
      and enabled on the hardware so that they can adapt work submissions.
      Create a new device info flag for this purpose.
      
      Set has_pooled_eu to true in the Broxton static device info - Broxton
      supports the feature in hardware and the driver will enable it by
      default.
      
      We need to add getparam ioctls to enable userspace to query availability of
      this feature and to retrieve min. no of eus in a pool but we will expose
      them once userspace support is available. Opensource users for this feature
      are mesa, libva and beignet.
      
      Beignet team is currently working on adding userspace support.
      
      Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> (v2)
      Cc: Winiarski, Michal <michal.winiarski@intel.com>
      Cc: Zou, Nanhai <nanhai.zou@intel.com>
      Cc: Yang, Rong R <rong.r.yang@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Armin Reese <armin.c.reese@intel.com>
      Cc: Tim Gore <tim.gore@intel.com>
      Signed-off-by: NJeff McGee <jeff.mcgee@intel.com>
      Signed-off-by: NArun Siluvery <arun.siluvery@linux.intel.com>
      Reviewed-by: NMichał Winiarski <michal.winiarski@intel.com>
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      33e141ed
  12. 13 6月, 2016 1 次提交
  13. 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
  14. 23 5月, 2016 3 次提交
  15. 14 5月, 2016 2 次提交
  16. 11 5月, 2016 2 次提交
  17. 10 5月, 2016 1 次提交
    • V
      drm/i915: Re-enable GGTT earlier during resume on pre-gen6 platforms · ac840ae5
      Ville Syrjälä 提交于
      Move the intel_enable_gtt() call to happen before we touch the GTT
      during resume. Right now it's done way too late. Before
      commit ebb7c78d ("agp/intel-gtt: Only register fake agp driver for gen1")
      it was actually done earlier on account of also getting called from
      the resume hook of the fake agp driver. With the fake agp driver
      no longer getting registered we must move the call up.
      
      The symptoms I've seen on my 830 machine include lowmem corruption,
      other kinds of memory corruption, and straight up hung machine during
      or just after resume. Not really sure what causes the memory corruption,
      but so far I've not seen any with this fix.
      
      I think we shouldn't really need to call this during init, but we have
      been doing that so I've decided to keep the call. However moving that
      call earlier could be prudent as well. Doing it right after the
      intel-gtt probe seems appropriate.
      
      Also tested this on 946gz,elk,ilk and all seemed quite happy with
      this change.
      
      v2: Reorder init_hw vs. enable_hw functions (Chris)
      
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: drm-intel-fixes@lists.freedesktop.org
      Fixes: ebb7c78d ("agp/intel-gtt: Only register fake agp driver for gen1")
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1462559755-353-1-git-send-email-ville.syrjala@linux.intel.comReviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      ac840ae5
  18. 09 5月, 2016 2 次提交
    • C
      drm/i915: Store a i915 backpointer from engine, and use it · c033666a
      Chris Wilson 提交于
         text	   data	    bss	    dec	    hex	filename
      6309351	3578714	 696320	10584385	 a18141	vmlinux
      6308391	3578714	 696320	10583425	 a17d81	vmlinux
      
      Almost 1KiB of code reduction.
      
      v2: More s/INTEL_INFO()->gen/INTEL_GEN()/ and IS_GENx() conversions
      
         text	   data	    bss	    dec	    hex	filename
      6304579	3578778	 696320	10579677	 a16edd	vmlinux
      6303427	3578778	 696320	10578525	 a16a5d	vmlinux
      
      Now over 1KiB!
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1462545621-30125-3-git-send-email-chris@chris-wilson.co.uk
      c033666a
    • T
      drm/i915: Small display interrupt handlers tidy · 91d14251
      Tvrtko Ursulin 提交于
      I have noticed some of our interrupt handlers use both dev and
      dev_priv while they could get away with only dev_priv in the
      huge majority of cases.
      
      Tidying that up had a cascading effect on changing functions
      prototypes, so relatively big churn factor, but I think it is
      for the better.
      
      For example even where changes cascade out of i915_irq.c, for
      functions prefixed with intel_, genX_ or <plat>_, it makes more
      sense to take dev_priv directly anyway.
      
      This allows us to eliminate local variables and intermixed usage
      of dev and dev_priv where only one is good enough.
      
      End result is shrinkage of both source and the resulting binary.
      
      i915.ko:
      
       - .text         000b0899
       + .text         000b0619
      
      Or if we look at the Gen8 display irq chain:
      
       -00000000000006ad t gen8_irq_handler
       +0000000000000663 t gen8_irq_handler
         -0000000000000028 T intel_opregion_asle_intr
         +0000000000000024 T intel_opregion_asle_intr
         -000000000000008c t ilk_hpd_irq_handler
         +000000000000007f t ilk_hpd_irq_handler
         -0000000000000116 T intel_check_page_flip
         +0000000000000112 T intel_check_page_flip
         -000000000000011a T intel_prepare_page_flip
         +0000000000000119 T intel_prepare_page_flip
         -0000000000000014 T intel_finish_page_flip_plane
         +0000000000000013 T intel_finish_page_flip_plane
         -0000000000000053 t hsw_pipe_crc_irq_handler
         +000000000000004c t hsw_pipe_crc_irq_handler
         -000000000000022e t cpt_irq_handler
         +0000000000000213 t cpt_irq_handler
      
      So small shrinkage but it is all fast paths so doesn't harm.
      
      Situation is similar in other interrupt handlers as well.
      
      v2: Tidy intel_queue_rps_boost_for_request as well. (Chris Wilson)
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      91d14251
  19. 30 4月, 2016 1 次提交