“d8f95214df1f7c2994a196f9f7777a0b2d8df8eb”上不存在“projects/lennylxx/imports.yml”
  1. 14 7月, 2015 1 次提交
    • P
      drm/i915: Added Programming of the MOCS · 3bbaba0c
      Peter Antoine 提交于
      This change adds the programming of the MOCS registers to the gen 9+
      platforms. The set of MOCS configuration entries introduced by this
      patch is intended to be minimal but sufficient to cover the needs of
      current userspace - i.e. a good set of defaults. It is expected to be
      extended in the future to provide further default values or to allow
      userspace to redefine its private MOCS tables based on its demand for
      additional caching configurations. In this setup, userspace should
      only utilize the first N entries, higher entries are reserved for
      future use.
      
      It creates a fixed register set that is programmed across the different
      engines so that all engines have the same table. This is done as the
      main RCS context only holds the registers for itself and the shared
      L3 values. By trying to keep the registers consistent across the
      different engines it should make the programming for the registers
      consistent.
      
      v2:
      -'static const' for private data structures and style changes.(Matt Turner)
      v3:
      - Make the tables "slightly" more readable. (Damien Lespiau)
      - Updated tables fix performance regression.
      v4:
      - Code formatting. (Chris Wilson)
      - re-privatised mocs code. (Daniel Vetter)
      v5:
      - Changed the name of a function. (Chris Wilson)
      v6:
      - re-based
      - Added Mesa table entry (skylake & broxton) (Francisco Jerez)
      - Tidied up the readability defines (Francisco Jerez)
      - NUMBER of entries defines wrong. (Jim Bish)
      - Added comments to clear up the meaning of the tables (Jim Bish)
      Signed-off-by: NPeter Antoine <peter.antoine@intel.com>
      
      v7 (Francisco Jerez):
      - Don't write L3-specific MOCS_ESC/SCC values into the e/LLC control
        tables.  Prefix L3-specific defines consistently with L3_ and
        e/LLC-specific defines with LE_ to avoid this kind of confusion in
        the future.
      - Change L3CC WT define back to RESERVED (matches my hardware
        documentation and the original patch, probably a misunderstanding
        of my own previous comment).
      - Drop Android tables, define new minimal tables more suitable for the
        open source stack.
      - Add comment that the MOCS tables are part of the kernel ABI.
      - Move intel_logical_ring_begin() and _advance() calls one level down
        (Chris Wilson).
      - Minor formatting and style fixes.
      v8 (Francisco Jerez):
      - Add table size sanity check to emit_mocs_control/l3cc_table() (Chris
        Wilson).
      - Add comment about undefined entries being implicitly set to uncached
        for forwards compatibility.
      v9 (Francisco Jerez):
      - Minor style fixes.
      Signed-off-by: NFrancisco Jerez <currojerez@riseup.net>
      Acked-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      3bbaba0c
  2. 13 7月, 2015 1 次提交
  3. 06 7月, 2015 4 次提交
  4. 30 6月, 2015 3 次提交
  5. 29 6月, 2015 1 次提交
    • V
      drm/i915: Compute display FIFO split dynamically for CHV · 54f1b6e1
      Ville Syrjälä 提交于
      Consider which planes are active and compute the FIFO split based on the
      relative data rates. Since we only consider the pipe src width rather
      than the plane width when computing watermarks it seems best to do the
      same when computing the FIFO split as well. This means the only thing we
      actually have to consider for the FIFO splut is the bpp, and we can
      ignore the rest.
      
      I've just stuffed the logic into the watermark code for now. Eventually
      it'll need to move into the atomic update for the crtc.
      
      There's also one extra complication I've not yet considered; Some of the
      DSPARB registers contain bits related to multiple pipes. The registers
      are double buffered but apparently they update on the vblank of any
      active pipe. So doing the FIFO reconfiguration properly when multiple
      pipes are active is not going to be fun. But let's ignore that mess for
      now.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NClint Taylor <Clinton.A.Taylor@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      54f1b6e1
  6. 27 6月, 2015 1 次提交
  7. 24 6月, 2015 1 次提交
  8. 23 6月, 2015 1 次提交
  9. 18 6月, 2015 2 次提交
    • M
      drm/i915: Reset request handling for gen8+ · 7fd2d269
      Mika Kuoppala 提交于
      In order for gen8+ hardware to guarantee that no context switch
      takes place during engine reset and that current context is properly
      saved, the driver needs to notify and query hw before commencing
      with reset.
      
      There are gpu hangs where the engine gets so stuck that it never will
      report to be ready for reset. We could proceed with reset anyway, but
      with some hangs with skl, the forced gpu reset will result in a system
      hang. By inspecting the unreadiness for reset seems to correlate with
      the probable system hang.
      
      We will only proceed with reset if all engines report that they
      are ready for reset. If root cause for system hang is found and
      can be worked around with another means, we can reconsider if
      we can reinstate full reset for unreadiness case.
      
      v2: -EIO, Recovery, gen8 (Chris, Tomas, Daniel)
      v3: updated commit msg
      v4: timeout_ms, simpler error path (Chris)
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=89959
      References: https://bugs.freedesktop.org/show_bug.cgi?id=90854
      Testcase: igt/gem_concurrent_blit/prw-blt-overwrite-source-read-rcs-forked
      Testcase: igt/gem_concurrent_blit/gtt-blt-overwrite-source-read-rcs-forked
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Tomas Elf <tomas.elf@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      7fd2d269
    • V
      drm/i915/bxt: eDP Panel Power sequencing · b0a08bec
      Vandana Kannan 提交于
      Changes for BXT - added a IS_BROXTON check to use the macro related to PPS
      registers for BXT.
      BXT does not have PP_DIV register. Making changes to handle this.
      Second set of PPS registers have been defined but will be used when VBT
      provides a selection between the 2 sets of registers.
      
      v2:
      [Jani] Added 2nd set of PPS registers and the macro
      Jani's review comments
      	- remove reference in i915_suspend.c
      	- Use BXT PP macro
      Squashing all PPS related patches into one.
      
      v3: Jani's review comments addressed
      	- Use pp_ctl instead of pp
      	- ironlake_get_pp_control() is not required for BXT
      	- correct the use of && in the print statement
      	- drop the shift in the print statement
      
      v4: Jani's comments
      	- modify ironlake_get_pp_control() - dont set unlock key for bxt
      
      v5: Sonika's comments addressed
      	- check alignment
      	- move pp_ctrl_reg write (after ironlake_get_pp_control())
      	to !IS_BROXTON case.
      	- check before subtracting 1 for t11_t12
      Signed-off-by: NVandana Kannan <vandana.kannan@intel.com>
      Signed-off-by: NA.Sunil Kamath <sunil.kamath@intel.com>
      Reviewed-by: NSonika Jindal <sonika.jindal@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b0a08bec
  10. 16 6月, 2015 1 次提交
  11. 15 6月, 2015 3 次提交
  12. 12 6月, 2015 2 次提交
  13. 29 5月, 2015 2 次提交
  14. 28 5月, 2015 2 次提交
  15. 22 5月, 2015 3 次提交
    • V
      drm/i915: Enable GTT caching on gen8 · 6d50b065
      Ville Syrjälä 提交于
      GTT caching was disabled by default on gen8 due to not working with
      big pages. Some information suggests that it got fixed, but still
      GTT caching has been left disabled by default. Or could be it just
      meant that the default was changed to off, and hence the problem
      got solved.
      
      Enable GTT caching in the hopes of some performance increase.
      Whether or not the big pages issue has been fixed is irrelevant
      at this stage since we don't use big pages.
      
      This gives me a 1-2% improvement in xonotic on my BSW. Haven't tried
      BDW, but supposedly it has larger TLBs so might not benefit as much.
      On HSW GTT caching is enabled by default.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6d50b065
    • V
      drm/i915: Clean up the CPT DP .get_hw_state() port readout · adc289d7
      Ville Syrjälä 提交于
      Define a TRANS_DP_PIPE_TO_PORT() to make the CPT DP .get_hw_state()
      pipe readout neater.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      adc289d7
    • D
      drm/i915/skl: Deinit/init the display at suspend/resume · 5d96d8af
      Damien Lespiau 提交于
      We need to re-init the display hardware when going out of suspend. This
      includes:
      
        - Hooking the PCH to the reset logic
        - Restoring CDCDLK
        - Enabling the DDB power
      
      Among those, only the CDCDLK one is a bit tricky. There's some
      complexity in that:
      
        - DPLL0 (which is the source for CDCLK) has two VCOs, each with a set
          of supported frequencies. As eDP also uses DPLL0 for its link rate,
          once DPLL0 is on, we restrict the possible eDP link rates the chosen
          VCO.
        - CDCLK also limits the bandwidth available to push pixels.
      
      So, as a first step, this commit restore what the BIOS set, until I can
      do more testing.
      
      In case that's of interest for the reviewer, I've unit tested the
      function that derives the decimal frequency field:
      
        #include <stdio.h>
        #include <stdint.h>
        #include <assert.h>
      
        #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
      
        static const struct dpll_freq {
                unsigned int freq;
                unsigned int decimal;
        } freqs[] = {
                { .freq = 308570, .decimal = 0b01001100111},
                { .freq = 337500, .decimal = 0b01010100001},
                { .freq = 432000, .decimal = 0b01101011110},
                { .freq = 450000, .decimal = 0b01110000010},
                { .freq = 540000, .decimal = 0b10000110110},
                { .freq = 617140, .decimal = 0b10011010000},
                { .freq = 675000, .decimal = 0b10101000100},
        };
      
        static void intbits(unsigned int v)
        {
                int i;
      
                for(i = 10; i >= 0; i--)
                        putchar('0' + ((v >> i) & 1));
        }
      
        static unsigned int freq_decimal(unsigned int freq /* in kHz */)
        {
                return (freq - 1000) / 500;
        }
      
        static void test_freq(const struct dpll_freq *entry)
        {
                unsigned int decimal = freq_decimal(entry->freq);
      
                printf("freq: %d, expected: ", entry->freq);
                intbits(entry->decimal);
                printf(", got: ");
                intbits(decimal);
                putchar('\n');
      
                assert(decimal == entry->decimal);
        }
      
        int main(int argc, char **argv)
        {
                int i;
      
                for (i = 0; i < ARRAY_SIZE(freqs); i++)
                        test_freq(&freqs[i]);
      
                return 0;
        }
      
      v2:
        - Rebase on top of -nightly
        - Use (freq - 1000) / 500 for the decimal frequency (Ville)
        - Fix setting the enable bit of HSW_NDE_RSTWRN_OPT (Ville)
        - Rename skl_display_{resume,suspend} to skl_{init,uninit}_cdclk to
          be consistent with the BXT code (Ville)
        - Store boot CDCLK in ddi_pll_init (Ville)
        - Merge dev_priv's skl_boot_cdclk into cdclk_freq
        - Use LCPLL_PLL_LOCK instead of (1 << 30) (Ville)
        - Replace various '0' by SKL_DPLL0 to be a bit more explicit that
          we're programming DPLL0
        - Busy poll the PCU before doing the frequency change. It takes about
          3/4 cycles, each separated by 10us, to get the ACK from the CPU
          (Ville)
      
      v3:
        - Restore dev_priv->skl_boot_cdclk, leaving unification with
          dev_priv->cdclk_freq for a later patch (Daniel, Ville)
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5d96d8af
  16. 21 5月, 2015 1 次提交
  17. 20 5月, 2015 2 次提交
    • V
      drm/i915/bxt: Port PLL programming BUN · b6dc71f3
      Vandana Kannan 提交于
      BUN 1: prop_coeff, int_coeff, tdctargetcnt programming updated and tied to
      VCO frequencies. Program i_lockthresh in PORT_PLL_9.
      
      VCO calculated based on the formula:
      Desired Output = Port bit rate in MHz (DisplayPort HBR2 is 5400 MHz)
      Fast Clock = Desired Output / 2
      VCO = Fast Clock * P1 * P2
      
      Prop_coeff, int_coeff, and tdctargetcnt modified according to above
      calculation.
      
      BUN 2: Port PLLs require additional programming at certain frequencies -
      DCO amplitude in PORT_PLL_10
      
      Review comments from Siva which were addressed in the initial version of the
      patch.
      	- Change PORT_PLL_LOCK_THRESHOLD to PORT_PLL_LOCK_THRESHOLD_MASK
      	- Calculate for HDMI
      	- Correct values for vco = 5.4
      	- return in case of invalid vco range
      
      v2: Imre's review comments addressed
      	- change dcoampovr_en to dcoampovr_en_h
      	- change PORT_PLL_DCO_AMP_OVR_EN to PORT_PLL_DCO_AMP_OVR_EN_H
      	- Correct lane stagger value for 324MHz
      	- Make coef common for HDMI and DP
      	- remove superfluous comments
      
      v3: Imre's comments addressed
      	- Remove Prop_coeff, int_coeff, tdctargetcnt, dcoampovr_en, gain_ctl,
      	dcoampovr_en_h from bxt_clk_div and make them local variables.
      Signed-off-by: NVandana Kannan <vandana.kannan@intel.com>
      Reviewed-by: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> [v1]
      Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b6dc71f3
    • C
      drm/i915: Adding dbuf support for skl nv12 format. · 2cd601c6
      Chandra Konduru 提交于
      Skylake nv12 format requires dbuf (aka. ddb) calculations
      and programming for each of y and uv sub-planes. Made minor
      changes to reuse current dbuf calculations and programming
      for uv plane. i.e., with this change, existing computation
      is used for either packed format or uv portion of nv12
      depending on incoming format. Added new code for dbuf
      computation and programming for y plane.
      
      This patch is a pre-requisite for adding NV12 format support.
      Actual nv12 support is coming in later patches.
      Signed-off-by: NChandra Konduru <chandra.konduru@intel.com>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2cd601c6
  18. 08 5月, 2015 9 次提交