Skip to content
Permalink
Ville-Syrjala/…
Switch branches/tags

Commits on Feb 11, 2022

  1. drm/i915: Polish ilk+ wm register bits

    Use REG_GENMASK() & co. for ilk+ watermarm registers.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    vsyrjala authored and intel-lab-lkp committed Feb 11, 2022
  2. drm/i915: Clean up SSKPD/MLTR defines

    Give names to the SSKPD/MLTR fields, and use the
    REG_GENMASK* and REG_FIELD_GET*.
    
    Also drop the bogus non-mirrored SSKP register define.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    vsyrjala authored and intel-lab-lkp committed Feb 11, 2022
  3. drm/i915: Add REG_GENMASK64() and REG_FIELD_GET64()

    We treat SSKPD as a 64 bit register. Add the support macros
    to define/extract bits in such registers.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    vsyrjala authored and intel-lab-lkp committed Feb 11, 2022
  4. drm/i915: Remove gen6_check_mch_setup()

    snb_wm_latency_quirk() already boosts up the latency values
    so the extra warning about the SSKPD value being insufficient
    is now redundant. Drop it.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    vsyrjala authored and intel-lab-lkp committed Feb 11, 2022
  5. drm/i915: Use {active, scaled}_planes to compute ilk watermarks

    Use the {active,scaled}_planes bitmasks from the crtc state
    rather than poking at the plane state directly. One step
    towards eliminating the last use of the somewhat questionble
    intel_atomic_crtc_state_for_each_plane_state() macro which
    peeks into the plane state without actually holding the plane
    mutex.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    vsyrjala authored and intel-lab-lkp committed Feb 11, 2022
  6. drm/i915: Introduce scaled_planes bitmask

    Add another plane bitmask, this time tracking which planes are
    scaled. This is going to be useful in ILK watermark computations,
    and skl+ pipe scaler assignments.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    vsyrjala authored and intel-lab-lkp committed Feb 11, 2022
  7. drm/i915: Introduce intel_arm_planes_on_crtc()

    No reason the high level intel_update_crtc() needs to know
    that there is something magical about the commit order of
    planes between different platforms. So let's hide that
    detail even better.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    vsyrjala authored and intel-lab-lkp committed Feb 11, 2022
  8. drm/i915: Move intel_plane_atomic_calc_changes() & co. out

    Exfiltrate intel_plane_atomic_calc_changes() and its friends from
    intel_display.c to intel_atomic_plane.c since that is a much better
    fit.
    
    While at it also nuke the official looking kernel docs for
    intel_wm_need_update() and flag it for eventual destruction so
    that people don't get any wrong ideas about using it in new code.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    vsyrjala authored and intel-lab-lkp committed Feb 11, 2022

Commits on Feb 10, 2022

  1. drm/i915: move the DRIVER_* macros to i915_driver.[ch]

    The macros are more at home in i915_driver.[ch].
    
    v2: Rebase
    
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220209123121.3337496-1-jani.nikula@intel.com
    jnikula committed Feb 10, 2022
  2. drm/i915: move intel_hws_csb_write_index() out of i915_drv.h

    Underscore prefix the index macros, and place
    INTEL_HWS_CSB_WRITE_INDEX() as a macro next to them, to declutter
    i915_drv.h.
    
    v2: Don't underscore the index macros (Tvrtko)
    
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220209131143.3365230-1-jani.nikula@intel.com
    jnikula committed Feb 10, 2022

Commits on Feb 9, 2022

  1. drm/i915: Fix IPS disable in intel_plane_disable_noatomic()

    IPS must be disabled prior to disabling the last plane (excluding
    the cursor). Make the code do that instead of assuming the primary
    plane would be the last one. This is probably 100% theoretical
    as the BIOS should never light up the other planes anyway. But
    no harm in making the code totally consistent.
    
    Also let's update the ips_enabled flag in the crtc state afterwards
    so that the first atomic commit has accurate information about
    the state of IPS.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220209113526.7595-6-ville.syrjala@linux.intel.com
    Acked-by: Jani Nikula <jani.nikula@intel.com>
    vsyrjala committed Feb 9, 2022
  2. drm/i915: Extract hsw_ips_get_config()

    Pull the IPS state readout into hsw_ips.c.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220209113526.7595-5-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    vsyrjala committed Feb 9, 2022
  3. drm/i915: Move the IPS code to its own file

    IPS is a pretty well isolated feature. Move the relevant code
    to a separate file from polluting intel_display.c.
    
    I stuck to the hsw_ips name since that's what the function were
    already using, and also to avoid confusion with the ILK
    "Intelligen Power Sharing"/intel_ips GPU turbo stuff.
    
    And let's also do the s/dev_priv/i915/ rename while touching
    most of the code.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220209113526.7595-4-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    vsyrjala committed Feb 9, 2022
  4. drm/i915: Hoover the IPS enable/disable calls into the pre/post updat…

    …e hooks
    
    No reason the caller of the IPS pre/post update hooks should
    be responsible for the actual IPS enab/disable. Just pull those
    calls into the pre/post update hooks themselves. And while
    at it let's adjust the function naming a bit to have a consistent
    namespace.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220209113526.7595-3-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    vsyrjala committed Feb 9, 2022
  5. drm/i915: Change IPS calling convention

    Follow the modern state+crtc calling convention for the IPS
    code as well.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220209113526.7595-2-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    vsyrjala committed Feb 9, 2022
  6. drm/i915: Move vblank waits out from IPS code

    Hoist the IPS related vblank waits one level up. Later on we'll
    want to consolidate all the potential pre-plane update vblank
    waits into one so we can't be hiding any in low level code.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220209113526.7595-1-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    vsyrjala committed Feb 9, 2022
  7. drm/i915/pm: hide struct drm_i915_clock_gating_funcs

    The struct is only needed in intel_pm.c, move it there.
    
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/63779ac0472895803113180818ecadc22c10369e.1643896905.git.jani.nikula@intel.com
    jnikula committed Feb 9, 2022
  8. drm/i915/dpll: hide struct intel_dpll_funcs

    The struct is only needed in intel_dpll.c, move it there.
    
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/fedb27386cbad2b162d83a706273dd8ad9e8eed2.1643896905.git.jani.nikula@intel.com
    jnikula committed Feb 9, 2022
  9. drm/i915/dpll: add intel_dpll_crtc_compute_clock()

    Avoid referencing the function pointer directly to be able to abstract
    the call better.
    
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/12ac40c1ef9915fe680c6657b603b08be022626b.1643896905.git.jani.nikula@intel.com
    jnikula committed Feb 9, 2022
  10. drm/i915/fdi: hide struct intel_fdi_funcs

    The struct is only needed in intel_fdi.c, move it there.
    
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/a6c524a9abb74be9b4d6a084de5461404b823a10.1643896905.git.jani.nikula@intel.com
    jnikula committed Feb 9, 2022
  11. drm/i915/hpd: hide struct intel_hotplug_funcs

    With intel_hpd_irq_setup() in i915_irq.c, struct intel_hotplug_funcs is
    also only needed there.
    
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/9a10dbca7ad298dde62b83f76e0df43a67bceeef.1643896905.git.jani.nikula@intel.com
    jnikula committed Feb 9, 2022
  12. drm/i915/color: hide struct intel_color_funcs

    The struct is only needed in intel_color.c, move it there.
    
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/68cf44fab55c047253c3ed87f8afcf0a86fa157a.1643896905.git.jani.nikula@intel.com
    jnikula committed Feb 9, 2022
  13. drm/i915: group i915_drv.h forward declarations together

    Group the forward declarations in i915_drv.h together near the top, like
    in other header files, and sort.
    
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/67f2ed8a9166daa891aa6d89f93eb629145d1c15.1643896905.git.jani.nikula@intel.com
    jnikula committed Feb 9, 2022

Commits on Feb 8, 2022

  1. drm/i915: Fix mbus join config lookup

    The bogus loop from compute_dbuf_slices() was copied into
    check_mbus_joined() as well. So this lookup is wrong as well.
    Fix it.
    
    Cc: stable@vger.kernel.org
    Fixes: f4dc008 ("drm/i915/adl_p: MBUS programming")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220207132700.481-2-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    vsyrjala committed Feb 8, 2022
  2. drm/i915: Fix dbuf slice config lookup

    Apparently I totally fumbled the loop condition when I
    removed the ARRAY_SIZE() stuff from the dbuf slice config
    lookup. Comparing the loop index with the active_pipes bitmask
    is utter nonsense, what we want to do is check to see if the
    mask is zero or not.
    
    Note that the code actually ended up working correctly despite
    the fumble, up until commit eef1739 ("drm/i915: Allow
    !join_mbus cases for adlp+ dbuf configuration") when things
    broke for real.
    
    Cc: stable@vger.kernel.org
    Fixes: 05e8155 ("drm/i915: Use a sentinel to terminate the dbuf slice arrays")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220207132700.481-1-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    vsyrjala committed Feb 8, 2022
  3. dma-buf-map: Rename to iosys-map

    Rename struct dma_buf_map to struct iosys_map and corresponding APIs.
    Over time dma-buf-map grew up to more functionality than the one used by
    dma-buf: in fact it's just a shim layer to abstract system memory, that
    can be accessed via regular load and store, from IO memory that needs to
    be acessed via arch helpers.
    
    The idea is to extend this API so it can fulfill other needs, internal
    to a single driver. Example: in the i915 driver it's desired to share
    the implementation for integrated graphics, which uses mostly system
    memory, with discrete graphics, which may need to access IO memory.
    
    The conversion was mostly done with the following semantic patch:
    
    	@r1@
    	@@
    	- struct dma_buf_map
    	+ struct iosys_map
    
    	@r2@
    	@@
    	(
    	- DMA_BUF_MAP_INIT_VADDR
    	+ IOSYS_MAP_INIT_VADDR
    	|
    	- dma_buf_map_set_vaddr
    	+ iosys_map_set_vaddr
    	|
    	- dma_buf_map_set_vaddr_iomem
    	+ iosys_map_set_vaddr_iomem
    	|
    	- dma_buf_map_is_equal
    	+ iosys_map_is_equal
    	|
    	- dma_buf_map_is_null
    	+ iosys_map_is_null
    	|
    	- dma_buf_map_is_set
    	+ iosys_map_is_set
    	|
    	- dma_buf_map_clear
    	+ iosys_map_clear
    	|
    	- dma_buf_map_memcpy_to
    	+ iosys_map_memcpy_to
    	|
    	- dma_buf_map_incr
    	+ iosys_map_incr
    	)
    
    	@@
    	@@
    	- #include <linux/dma-buf-map.h>
    	+ #include <linux/iosys-map.h>
    
    Then some files had their includes adjusted and some comments were
    update to remove mentions to dma-buf-map.
    
    Since this is not specific to dma-buf anymore, move the documentation to
    the "Bus-Independent Device Accesses" section.
    
    v2:
      - Squash patches
    
    v3:
      - Fix wrong removal of dma-buf.h from MAINTAINERS
      - Move documentation from dma-buf.rst to device-io.rst
    
    v4:
      - Change documentation title and level
    
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Acked-by: Christian König <christian.koenig@amd.com>
    Acked-by: Sumit Semwal <sumit.semwal@linaro.org>
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com
    lucasdemarchi committed Feb 8, 2022

Commits on Feb 7, 2022

  1. drm/i915: Fix trailing semicolon

    Remove the trailing semicolon, as correctly warned by checkpatch:
    
    	-:1189: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
    	#1189: FILE: drivers/gpu/drm/i915/intel_device_info.c:119:
    	+#define PRINT_FLAG(name) drm_printf(p, "%s: %s\n", #name, yesno(info->display.name));
    
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220126093951.1470898-3-lucas.demarchi@intel.com
    lucasdemarchi committed Feb 7, 2022
  2. drm/i915: Workaround broken BIOS DBUF configuration on TGL/RKL

    On TGL/RKL the BIOS likes to use some kind of bogus DBUF layout
    that doesn't match what the spec recommends. With a single active
    pipe that is not going to be a problem, but with multiple pipes
    active skl_commit_modeset_enables() goes into an infinite loop
    since it can't figure out any order in which it can commit the
    pipes without causing DBUF overlaps between the planes.
    
    We'd need some kind of extra DBUF defrag stage in between to
    make the transition possible. But that is clearly way too complex
    a solution, so in the name of simplicity let's just sanitize the
    DBUF state by simply turning off all planes when we detect a
    pipe encroaching on its neighbours' DBUF slices. We only have
    to disable the primary planes as all other planes should have
    already been disabled (if they somehow were enabled) by
    earlier sanitization steps.
    
    And for good measure let's also sanitize in case the DBUF
    allocations of the pipes already seem to overlap each other.
    
    Cc: <stable@vger.kernel.org> # v5.14+
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/4762
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220204141818.1900-3-ville.syrjala@linux.intel.com
    Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    vsyrjala committed Feb 7, 2022
  3. drm/i915: Populate pipe dbuf slices more accurately during readout

    During readout we cannot assume the planes are actually using the
    slices they are supposed to use. The BIOS may have misprogrammed
    things and put the planes onto the wrong dbuf slices. So let's
    do the readout more carefully to make sure we really know which
    dbuf slices are actually in use by the pipe at the time.
    
    Cc: <stable@vger.kernel.org> # v5.14+
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220204141818.1900-2-ville.syrjala@linux.intel.com
    Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    vsyrjala committed Feb 7, 2022
  4. drm/i915: Allow !join_mbus cases for adlp+ dbuf configuration

    Reintroduce the !join_mbus single pipe cases for adlp+.
    
    Due to the mbus relative dbuf offsets in PLANE_BUF_CFG we
    need to know the actual slices used by the pipe when doing
    readout, even when mbus joining isn't enabled. Accurate
    readout will be needed to properly sanitize invalid BIOS
    dbuf configurations.
    
    This will also make it much easier to play around with the
    !join_mbus configs for testin/workaround purposes.
    
    Cc: <stable@vger.kernel.org> # v5.14+
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220204141818.1900-1-ville.syrjala@linux.intel.com
    Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    vsyrjala committed Feb 7, 2022

Commits on Feb 3, 2022

  1. drm/i915: Disable unused power wells left enabled by BIOS

    Make sure all unused power wells left enabled by BIOS get disabled
    during driver loading and system resume.
    
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/5028
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220202104249.2680843-1-imre.deak@intel.com
    ideak committed Feb 3, 2022
  2. drm/i915: Fix header test for !CONFIG_X86

    Architectures others than x86 have a stub implementation calling
    WARN_ON_ONCE(). The appropriate headers need to be included, otherwise
    the header-test target will fail with:
    
      HDRTEST drivers/gpu/drm/i915/i915_mm.h
    In file included from <command-line>:
    ./drivers/gpu/drm/i915/i915_mm.h: In function ‘remap_io_mapping’:
    ./drivers/gpu/drm/i915/i915_mm.h:26:2: error: implicit declaration of function ‘WARN_ON_ONCE’ [-Werror=implicit-function-declaration]
       26 |  WARN_ON_ONCE(1);
          |  ^~~~~~~~~~~~
    
    v2: Do not include <linux/printk.h> since call to pr_err() has been
    removed
    
    Fixes: 67c430b ("drm/i915: Skip remap_io_mapping() for non-x86 platforms")
    Cc: Siva Mullati <siva.mullati@intel.com>
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Reviewed-by: Siva Mullati <siva.mullati@intel.com>
    Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220131165926.3230642-3-lucas.demarchi@intel.com
    lucasdemarchi committed Feb 3, 2022
  3. drm/i915: Do not spam log with missing arch support

    Following what was done in drm_cache.c, when the stub for
    remap_io_mapping() was added in commit 67c430b ("drm/i915: Skip
    remap_io_mapping() for non-x86 platforms"), it included a log message
    with pr_err().  However just the warning is already enough and switching
    to WARN_ONCE() allows us to keep the log message while avoiding log
    spam.
    
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220131165926.3230642-4-lucas.demarchi@intel.com
    lucasdemarchi committed Feb 3, 2022

Commits on Feb 2, 2022

  1. drm/i915: Move [more] GT registers to their own header file

    A couple hunks didn't get applied while resolving the conflicts on
    commit 0d6419e ("drm/i915: Move GT registers to their own header
    file").  Add the second half of the patch as a follow-up commit.
    
    Fixes: 0d6419e ("drm/i915: Move GT registers to their own header file")
    Cc: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
    Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220127234334.4016964-6-matthew.d.roper@intel.com
    mattrope committed Feb 2, 2022
  2. drm/i915: Only include i915_reg.h from .c files

    Several of our i915 header files, have been including i915_reg.h.  This
    means that any change to i915_reg.h will trigger a full rebuild of
    pretty much every file of the driver, even those that don't have any
    kind of register access.  Let's delete the i915_reg.h include from all
    headers and add an explicit include from the .c files that truly
    need the register definitions; those that need a definition of
    i915_reg_t for a function definition can get it from i915_reg_defs.h
    instead.
    
    We also remove two non-register #define's (VLV_DISPLAY_BASE and
    GEN12_SFC_DONE_MAX) into i915_reg_defs.h to allow us to drop the
    i915_reg.h include from a couple of headers.
    
    There's probably a lot more header dependency optimization possible, but
    the changes here roughly cut the number of files compiled after 'touch
    i915_reg.h' in half --- a good first step.
    
    Cc: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
    Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220127234334.4016964-7-matthew.d.roper@intel.com
    mattrope committed Feb 2, 2022
Older