1. 24 Feb, 2022 2 commits
    • Dave Airlie's avatar
      Merge tag 'drm-misc-next-2022-02-23' of git://anongit.freedesktop.org/drm/drm-misc into drm-next · 54f43c17
      Dave Airlie authored
      drm-misc-next for v5.18:
      
      UAPI Changes:
      
      Cross-subsystem Changes:
      - Split out panel-lvds and lvds dt bindings .
      - Put yes/no on/off disabled/enabled strings in linux/string_helpers.h
        and use it in drivers and tomoyo.
      - Clarify dma_fence_chain and dma_fence_array should never include eachother.
      - Flatten chains in syncobj's.
      - Don't double add in fbdev/defio when page is already enlisted.
      - Don't sort deferred-I/O pages by default in fbdev.
      
      Core Changes:
      - Fix missing pm_runtime_put_sync in bridge.
      - Set modifier support to only linear fb modifier if drivers don't
        advertise support.
      - As a result, we remove allow_fb_modifiers.
      - Add missing clear for EDID Deep Color Modes in drm_reset_display_info.
      - Assorted documentation updates.
      - Warn once in drm_clflush if there is no arch support.
      - Add missing select for dp helper in drm_panel_edp.
      - Assorted small fixes.
      - Improve fb-helper's clipping handling.
      - Don't dump shmem mmaps in a core dump.
      - Add accounting to ttm resource manager, and use it in amdgpu.
      - Allow querying the detected eDP panel through debugfs.
      - Add helpers for xrgb8888 to 8 and 1 bits gray.
      - Improve drm's buddy allocator.
      - Add selftests for the buddy allocator.
      
      Driver Changes:
      - Add support for nomodeset to a lot of drm drivers.
      - Use drm_module_*_driver in a lot of drm drivers.
      - Assorted small fixes to bridge/lt9611, v3d, vc4, vmwgfx, mxsfb, nouveau,
        bridge/dw-hdmi, panfrost, lima, ingenic, sprd, bridge/anx7625, ti-sn65dsi86.
      - Add bridge/it6505.
      - Create DP and DVI-I connectors in ast.
      - Assorted nouveau backlight fixes.
      - Rework amdgpu reset handling.
      - Add dt bindings for ingenic,jz4780-dw-hdmi.
      - Support reading edid through aux channel in ingenic.
      - Add a drm driver for Solomon SSD130x OLED displays.
      - Add simple support for sharp LQ140M1JW46.
      - Add more panels to nt35560.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/686ec871-e77f-c230-22e5-9e3bb80f064a@linux.intel.com
      54f43c17
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-2022-02-23' of git://anongit.freedesktop.org/drm/drm-intel into drm-next · 7f44571b
      Dave Airlie authored
      Linux core:
      -----------
      iosys-map: Add offset to iosys_map_memcpy_to() (Lucas)
      iosys-map: Add a few more helpers (Lucas)
      
      i915 (display and core changes on drm-intel-next):
      --------------------------------------------------
      
      - Display's DBuf and watermark related fixes and improvements (Ville)
      - More i915 header and other code clean-up (Jani)
      - Display IPS fixes and improvements (Ville)
      - OPRegion fixes and cleanups (Jani)
      - Fix the plane end Y offset check for FBC (Ville)
      - DP 128b/132b updates (Jani)
      - Disable runtime pm wakeref tracking for the mock device selftest (Ville)
      - Many display code clean-up while targeting to fix up DP DFP 4:2:0 handling (Ville)
      - Bigjoiner state tracking and more bigjoiner related work (Ville)
      - Update DMC_DEBUG3 register for DG1 (Chuansheng)
      - SAGV fixes (Ville)
      - More GT register cleanup (Matt)
      - Fix build issue when using clang (Tong)
      - Display DG2 fixes (Matt)
      - ADL-P PHY related fixes (Imre)
      - PSR2 fixes (Jose)
      - Add PCH Support for Alder Lake N (Tejas)
      
      drm-intel-gt-next (drm-intel-gt-next-2022-02-17):
      -------------------------------------------------
      UAPI Changes:
      
      - Weak parallel submission support for execlists
      
        Minimal implementation of the parallel submission support for
        execlists backend that was previously only implemented for GuC.
        Support one sibling non-virtual engine.
      
      Core Changes:
      
      - Two backmerges of drm/drm-next for header file renames/changes and
        i915_regs reorganization
      
      Driver Changes:
      
      - Add new DG2 subplatform: DG2-G12 (Matt R)
      - Add new DG2 workarounds (Matt R, Ram, Bruce)
      - Handle pre-programmed WOPCM registers for DG2+ (Daniele)
      - Update guc shim control programming on XeHP SDV+ (Daniele)
      - Add RPL-S C0/D0 stepping information (Anusha)
      - Improve GuC ADS initialization to work on ARM64 on dGFX (Lucas)
      
      - Fix KMD and GuC race on accessing PMU busyness (Umesh)
      - Use PM timestamp instead of RING TIMESTAMP for reference in PMU with GuC (Umesh)
      - Report error on invalid reset notification from GuC (John)
      - Avoid WARN splat by holding RPM wakelock during PXP unbind (Juston)
      - Fixes to parallel submission implementation (Matt B.)
      - Improve GuC loading status check/error reports (John)
      - Tweak TTM LRU priority hint selection (Matt A.)
      - Align the plane_vma to min_page_size of stolen mem (Ram)
      
      - Introduce vma resources and implement async unbinding (Thomas)
      - Use struct vma_resource instead of struct vma_snapshot (Thomas)
      - Return some TTM accel move errors instead of trying memcpy move (Thomas)
      - Fix a race between vma / object destruction and unbinding (Thomas)
      - Remove short-term pins from execbuf (Maarten)
      - Update to GuC version 69.0.3 (John, Michal Wa.)
      - Improvements to GT reset paths in GuC backend (Matt B.)
      - Use shrinker_release_pages instead of writeback in shmem object hooks (Matt A., Tvrtko)
      - Use trylock instead of blocking lock when freeing GEM objects (Maarten)
      - Allocate intel_engine_coredump_alloc with ALLOW_FAIL (Matt B.)
      - Fixes to object unmapping and purging (Matt A)
      - Check for wedged device in GuC backend (John)
      - Avoid lockdep splat by locking dpt_obj around set_cache_level (Maarten)
      - Allow dead vm to unbind vma's without lock (Maarten)
      - s/engine->i915/i915/ for DG2 engine workarounds (Matt R)
      
      - Use to_gt() helper for GGTT accesses (Michal Wi.)
      - Selftest improvements (Matt B., Thomas, Ram)
      - Coding style and compiler warning fixes (Matt B., Jasmine, Andi, Colin, Gustavo, Dan)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/YhbDan8wNZBR6FzF@intel.com
      7f44571b
  2. 23 Feb, 2022 17 commits
  3. 22 Feb, 2022 4 commits
    • Manasi Navare's avatar
      drm/i915/display/vrr: Reset VRR capable property on a long hpd · 9bc34b4d
      Manasi Navare authored
      With some VRR panels, user can turn VRR ON/OFF on the fly from the panel settings.
      When VRR is turned OFF ,sends a long HPD to the driver clearing the Ignore MSA bit
      in the DPCD. Currently the driver parses that onevery HPD but fails to reset
      the corresponding VRR Capable Connector property.
      Hence the userspace still sees this as VRR Capable panel which is incorrect.
      
      Fix this by explicitly resetting the connector property.
      
      v2: Reset vrr capable if status == connector_disconnected
      v3: Use i915 and use bool vrr_capable (Jani Nikula)
      v4: Move vrr_capable to after update modes call (Jani N)
      Remove the redundant comment (Jan N)
      
      Cc: Jani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarManasi Navare <manasi.d.navare@intel.com>
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220215202601.22943-1-manasi.d.navare@intel.com
      9bc34b4d
    • Arunpravin's avatar
      drm: implement a method to free unused pages · 95ee2a8b
      Arunpravin authored
      On contiguous allocation, we round up the size
      to the *next* power of 2, implement a function
      to free the unused pages after the newly allocate block.
      
      v2(Matthew Auld):
        - replace function name 'drm_buddy_free_unused_pages' with
          drm_buddy_block_trim
        - replace input argument name 'actual_size' with 'new_size'
        - add more validation checks for input arguments
        - add overlaps check to avoid needless searching and splitting
        - merged the below patch to see the feature in action
           - add free unused pages support to i915 driver
        - lock drm_buddy_block_trim() function as it calls mark_free/mark_split
          are all globally visible
      
      v3(Matthew Auld):
        - remove trim method error handling as we address the failure case
          at drm_buddy_block_trim() function
      
      v4:
        - in case of trim, at __alloc_range() split_block failure path
          marks the block as free and removes it from the original list,
          potentially also freeing it, to overcome this problem, we turn
          the drm_buddy_block_trim() input node into a temporary node to
          prevent recursively freeing itself, but still retain the
          un-splitting/freeing of the other nodes(Matthew Auld)
      
        - modify the drm_buddy_block_trim() function return type
      
      v5(Matthew Auld):
        - revert drm_buddy_block_trim() function return type changes in v4
        - modify drm_buddy_block_trim() passing argument n_pages to original_size
          as n_pages has already been rounded up to the next power-of-two and
          passing n_pages results noop
      
      v6:
        - fix warnings reported by kernel test robot <lkp@intel.com>
      
      v7:
        - modify drm_buddy_block_trim() function doc description
        - at drm_buddy_block_trim() handle non-allocated block as
          a serious programmer error
        - fix a typo
      Signed-off-by: default avatarArunpravin <Arunpravin.PaneerSelvam@amd.com>
      Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220221164552.2434-3-Arunpravin.PaneerSelvam@amd.comSigned-off-by: default avatarChristian König <christian.koenig@amd.com>
      95ee2a8b
    • Arunpravin's avatar
      drm: implement top-down allocation method · 476e4063
      Arunpravin authored
      Implemented a function which walk through the order list,
      compares the offset and returns the maximum offset block,
      this method is unpredictable in obtaining the high range
      address blocks which depends on allocation and deallocation.
      for instance, if driver requests address at a low specific
      range, allocator traverses from the root block and splits
      the larger blocks until it reaches the specific block and
      in the process of splitting, lower orders in the freelist
      are occupied with low range address blocks and for the
      subsequent TOPDOWN memory request we may return the low
      range blocks.To overcome this issue, we may go with the
      below approach.
      
      The other approach, sorting each order list entries in
      ascending order and compares the last entry of each
      order list in the freelist and return the max block.
      This creates sorting overhead on every drm_buddy_free()
      request and split up of larger blocks for a single page
      request.
      
      v2:
        - Fix alignment issues(Matthew Auld)
        - Remove unnecessary list_empty check(Matthew Auld)
        - merged the below patch to see the feature in action
           - add top-down alloc support to i915 driver
      Signed-off-by: default avatarArunpravin <Arunpravin.PaneerSelvam@amd.com>
      Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220221164552.2434-2-Arunpravin.PaneerSelvam@amd.comSigned-off-by: default avatarChristian König <christian.koenig@amd.com>
      476e4063
    • Arunpravin's avatar
      drm: improve drm_buddy_alloc function · afea229f
      Arunpravin authored
      - Make drm_buddy_alloc a single function to handle
        range allocation and non-range allocation demands
      
      - Implemented a new function alloc_range() which allocates
        the requested power-of-two block comply with range limitations
      
      - Moved order computation and memory alignment logic from
        i915 driver to drm buddy
      
      v2:
        merged below changes to keep the build unbroken
         - drm_buddy_alloc_range() becomes obsolete and may be removed
         - enable ttm range allocation (fpfn / lpfn) support in i915 driver
         - apply enhanced drm_buddy_alloc() function to i915 driver
      
      v3(Matthew Auld):
        - Fix alignment issues and remove unnecessary list_empty check
        - add more validation checks for input arguments
        - make alloc_range() block allocations as bottom-up
        - optimize order computation logic
        - replace uint64_t with u64, which is preferred in the kernel
      
      v4(Matthew Auld):
        - keep drm_buddy_alloc_range() function implementation for generic
          actual range allocations
        - keep alloc_range() implementation for end bias allocations
      
      v5(Matthew Auld):
        - modify drm_buddy_alloc() passing argument place->lpfn to lpfn
          as place->lpfn will currently always be zero for i915
      
      v6(Matthew Auld):
        - fixup potential uaf - If we are unlucky and can't allocate
          enough memory when splitting blocks, where we temporarily
          end up with the given block and its buddy on the respective
          free list, then we need to ensure we delete both blocks,
          and no just the buddy, before potentially freeing them
      
        - fix warnings reported by kernel test robot <lkp@intel.com>
      
      v7(Matthew Auld):
        - revert fixup potential uaf
        - keep __alloc_range() add node to the list logic same as
          drm_buddy_alloc_blocks() by having a temporary list variable
        - at drm_buddy_alloc_blocks() keep i915 range_overflows macro
          and add a new check for end variable
      
      v8:
        - fix warnings reported by kernel test robot <lkp@intel.com>
      
      v9(Matthew Auld):
        - remove DRM_BUDDY_RANGE_ALLOCATION flag
        - remove unnecessary function description
      
      v10:
         - keep DRM_BUDDY_RANGE_ALLOCATION flag as removing the flag
           and replacing with (end < size) logic fails amdgpu driver load
      Signed-off-by: default avatarArunpravin <Arunpravin.PaneerSelvam@amd.com>
      Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220221164552.2434-1-Arunpravin.PaneerSelvam@amd.com
      afea229f
  4. 21 Feb, 2022 7 commits
  5. 20 Feb, 2022 6 commits
  6. 19 Feb, 2022 3 commits
  7. 18 Feb, 2022 1 commit