1. 22 Nov, 2022 5 commits
    • Oded Gabbay's avatar
      drm: initialize accel framework · 7428ff70
      Oded Gabbay authored
      Now that we have the accel framework code ready, let's call the
      accel functions from all the appropriate places. These places are the
      drm module init/exit functions, and all the drm_minor handling
      functions.
      Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Reviewed-by: default avatarJeffrey Hugo <quic_jhugo@quicinc.com>
      Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
      Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      Acked-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
      Tested-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
      Reviewed-by: default avatarMelissa Wen <mwen@igalia.com>
      7428ff70
    • Oded Gabbay's avatar
      accel: add dedicated minor for accelerator devices · 2c204f3d
      Oded Gabbay authored
      The accelerator devices are exposed to user-space using a dedicated
      major. In addition, they are represented in /dev with new, dedicated
      device char names: /dev/accel/accel*. This is done to make sure any
      user-space software that tries to open a graphic card won't open
      the accelerator device by mistake.
      
      The above implies that the minor numbering should be separated from
      the rest of the DRM devices. However, to avoid code duplication, we
      want the drm_minor structure to be able to represent the accelerator
      device.
      
      To achieve this, we add a new drm_minor* to drm_device that represents
      the accelerator device. This pointer is initialized for drivers that
      declare they handle compute accelerator, using a new driver feature
      flag called DRIVER_COMPUTE_ACCEL. It is important to note that this
      driver feature is mutually exclusive with DRIVER_RENDER. Devices that
      want to expose both graphics and compute device char files should be
      handled by two drivers that are connected using the auxiliary bus
      framework.
      
      In addition, we define a different IDR to handle the accelerators
      minors. This is done to make the minor's index be identical to the
      device index in /dev/. Any access to the IDR is done solely
      by functions in accel_drv.c, as the IDR is define as static. The
      DRM core functions call those functions in case they detect the minor's
      type is DRM_MINOR_ACCEL.
      
      We define a separate accel_open function (from drm_open) that the
      accel drivers should set as their open callback function. Both these
      functions eventually call the same drm_open_helper(), which had to be
      changed to be non-static so it can be called from accel_drv.c.
      accel_open() only partially duplicates drm_open as I removed some code
      from it that handles legacy devices.
      
      To help new drivers, I defined DEFINE_DRM_ACCEL_FOPS macro to easily
      set the required function operations pointers structure.
      Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Reviewed-by: default avatarJeffrey Hugo <quic_jhugo@quicinc.com>
      Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
      Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      Acked-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
      Tested-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
      Reviewed-by: default avatarMelissa Wen <mwen@igalia.com>
      2c204f3d
    • Oded Gabbay's avatar
      drivers/accel: define kconfig and register a new major · 8bf48897
      Oded Gabbay authored
      Add a new Kconfig for the accel subsystem. The Kconfig currently
      contains only the basic CONFIG_DRM_ACCEL option that will be used to
      decide whether to compile the accel registration code. Therefore, the
      kconfig option is defined as bool.
      
      The accel code will be compiled as part of drm.ko and will be called
      directly from the DRM core code. The reason we compile it as part of
      drm.ko and not as a separate module is because of cyclic dependency
      between drm.ko and the separate module (if it would have existed).
      This is due to the fact that DRM core code calls accel functions and
      vice-versa.
      
      The accelerator devices will be exposed to the user space with a new,
      dedicated major number - 261.
      
      The accel init function registers the new major number as a char device
      and create corresponding sysfs and debugfs root entries, similar to
      what is done in DRM init function.
      
      I added a new header called drm_accel.h to include/drm/, that will hold
      the prototypes of the drm_accel.c functions. In case CONFIG_DRM_ACCEL
      is set to 'N', that header will contain empty inline implementations of
      those functions, to allow DRM core code to compile successfully
      without dependency on CONFIG_DRM_ACCEL.
      
      I Updated the MAINTAINERS file accordingly with the newly added folder
      and I have taken the liberty to appropriate the dri-devel mailing list
      and the dri-devel IRC channel for the accel subsystem.
      Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Reviewed-by: default avatarJeffrey Hugo <quic_jhugo@quicinc.com>
      Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
      Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      Acked-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
      Tested-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
      Reviewed-by: default avatarMelissa Wen <mwen@igalia.com>
      8bf48897
    • Dave Airlie's avatar
      Merge tag 'amd-drm-next-6.2-2022-11-18' of https://gitlab.freedesktop.org/agd5f/linux into drm-next · fc58764b
      Dave Airlie authored
      amd-drm-next-6.2-2022-11-18:
      
      amdgpu:
      - SR-IOV fixes
      - Clean up DC checks
      - DCN 3.2.x fixes
      - DCN 3.1.x fixes
      - Don't enable degamma on asics which don't support it
      - IP discovery fixes
      - BACO fixes
      - Fix vbios allocation handling when vkms is enabled
      - Drop buggy tdr advanced mode GPU reset handling
      - Fix the build when DCN is not set in kconfig
      - MST DSC fixes
      - Userptr fixes
      - FRU and RAS EEPROM fixes
      - VCN 4.x RAS support
      - Aldrebaran CU occupancy reporting fix
      - PSP ring cleanup
      
      amdkfd:
      - Memory limit fix
      - Enable cooperative launch on gfx 10.3
      
      amd-drm-next-6.2-2022-11-11:
      
      amdgpu:
      - SMU 13.x updates
      - GPUVM TLB race fix
      - DCN 3.1.4 updates
      - DCN 3.2.x updates
      - PSR fixes
      - Kerneldoc fix
      - Vega10 fan fix
      - GPUVM locking fixes in error pathes
      - BACO fix for Beige Goby
      - EEPROM I2C address cleanup
      - GFXOFF fix
      - Fix DC memory leak in error pathes
      - Flexible array updates
      - Mtype fix for GPUVM PTEs
      - Move Kconfig into amdgpu directory
      - SR-IOV updates
      - Fix possible memory leak in CS IOCTL error path
      
      amdkfd:
      - Fix possible memory overrun
      - CRIU fixes
      
      radeon:
      - ACPI ref count fix
      - HDA audio notifier support
      - Move Kconfig into radeon directory
      
      UAPI:
      - Add new GEM_CREATE flags to help to transition more KFD functionality to the DRM UAPI.
        These are used internally in the driver to align location based memory coherency
        requirements from memory allocated in the KFD with how we manage GPUVM PTEs.  They
        are currently blocked in the GEM_CREATE IOCTL as we don't have a user right now.
        They are just used internally in the kernel driver for now for existing KFD memory
        allocations. So a change to the UAPI header, but no functional change in the UAPI.
      
      From: Alex Deucher <alexander.deucher@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221118170807.6505-1-alexander.deucher@amd.comSigned-off-by: default avatarDave Airlie <airlied@redhat.com>
      fc58764b
    • Dave Airlie's avatar
      Merge branch 'etnaviv/next' of https://git.pengutronix.de/git/lst/linux into drm-next · 819683a1
      Dave Airlie authored
      please pull the following etnaviv changes for the next merge window.
      Mostly some small workarounds to get new hardware support going. But
      also more fixes to the softpin MMU handling and a nice addition from
      Christian to make the kernel logs on hang detection more useful.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Lucas Stach <l.stach@pengutronix.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/adcb1b3dec89a18d6c3c4ee6e179b9b2c9f25046.camel@pengutronix.de
      819683a1
  2. 21 Nov, 2022 1 commit
    • Dave Airlie's avatar
      Merge tag 'drm-misc-next-2022-11-17' of git://anongit.freedesktop.org/drm/drm-misc into drm-next · 4302423c
      Dave Airlie authored
      drm-misc-next for 6.2:
      
      UAPI Changes:
      
      Cross-subsystem Changes:
      - fbdev: Add support for the nomodeset kernel parameter
      
      Core Changes:
      - client: Add kunit tests for drm_connector_pick_cmdline_mode()
      - dma-buf: Move dma_buf_mmap_internal() to new locking specification
      - edid: Dump EDID on drm_edid_get_panel_id() failure, Stop using a
        temporary device to load the EDID through the firmware mechanism
      - fb-helper: Remove damage worker
      - gem-vram: Fix deadlock in drm_gem_vram_vmap()
      - modes: Named mode parsing improvements
      - tests: Add Kunit helpers to create a DRM device
      
      Driver Changes:
      - hisilicon: convert to drm_mode_init()
      - malidp: Use drm-managed resources
      - msm: convert to drm_mode_init() and drm_mode_copy()
      - mtk: convert to drm_mode_init()
      - nouveau: Support backlight control for nva3
      - rockchip: convert to drm_mode_copy()
      - sti: convert to drm_mode_copy()
      - v3d: Switch to drm-managed resources
      - vc4: Fix potential NULL pointer dereference
      
      - panels:
        - New panel: NewVision NV3051D
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221117083628.mzij5nrbdzokek7c@houat
      4302423c
  3. 17 Nov, 2022 30 commits
  4. 16 Nov, 2022 4 commits