lkml.org 
[lkml]   [2023]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v5 00/17] Imagination Technologies PowerVR DRM driver
    On Fri, Aug 18, 2023 at 4:35 AM Sarah Walker <sarah.walker@imgtec.com> wrote:
    >
    > This patch series adds the initial DRM driver for Imagination Technologies PowerVR
    > GPUs, starting with those based on our Rogue architecture. It's worth pointing
    > out that this is a new driver, written from the ground up, rather than a
    > refactored version of our existing downstream driver (pvrsrvkm).
    >
    > This new DRM driver supports:
    > - GEM shmem allocations
    > - dma-buf / PRIME
    > - Per-context userspace managed virtual address space
    > - DRM sync objects (binary and timeline)
    > - Power management suspend / resume
    > - GPU job submission (geometry, fragment, compute, transfer)
    > - META firmware processor
    > - MIPS firmware processor
    > - GPU hang detection and recovery
    >
    > Currently our main focus is on the AXE-1-16M GPU. Testing so far has been done
    > using a TI SK-AM62 board (AXE-1-16M GPU). Firmware for the AXE-1-16M can be
    > found here:
    > https://gitlab.freedesktop.org/frankbinns/linux-firmware/-/tree/powervr
    >
    > A Vulkan driver that works with our downstream kernel driver has already been
    > merged into Mesa [1][2]. Support for this new DRM driver is being maintained in
    > a merge request [3], with the branch located here:
    > https://gitlab.freedesktop.org/frankbinns/mesa/-/tree/powervr-winsys
    >
    > Job stream formats are documented at:
    > https://gitlab.freedesktop.org/mesa/mesa/-/blob/f8d2b42ae65c2f16f36a43e0ae39d288431e4263/src/imagination/csbgen/rogue_kmd_stream.xml
    >
    > The Vulkan driver is progressing towards Vulkan 1.0. We're code complete, and
    > are working towards passing conformance. The current combination of this kernel
    > driver with the Mesa Vulkan driver (powervr-mesa-next branch) achieves 88.3% conformance.
    >
    > The code in this patch series, along with some of its history, can also be found here:
    > https://gitlab.freedesktop.org/frankbinns/powervr/-/tree/powervr-next
    >
    > This patch series has dependencies on a number of patches not yet merged. They
    > are listed below :
    >
    > drm/sched: Convert drm scheduler to use a work queue rather than kthread:
    > https://lore.kernel.org/dri-devel/20230404002211.3611376-2-matthew.brost@intel.com/
    > drm/sched: Move schedule policy to scheduler / entity:
    > https://lore.kernel.org/dri-devel/20230404002211.3611376-3-matthew.brost@intel.com/
    > drm/sched: Add DRM_SCHED_POLICY_SINGLE_ENTITY scheduling policy:
    > https://lore.kernel.org/dri-devel/20230404002211.3611376-4-matthew.brost@intel.com/
    > drm/sched: Start run wq before TDR in drm_sched_start:
    > https://lore.kernel.org/dri-devel/20230404002211.3611376-6-matthew.brost@intel.com/
    > drm/sched: Submit job before starting TDR:
    > https://lore.kernel.org/dri-devel/20230404002211.3611376-7-matthew.brost@intel.com/
    > drm/sched: Add helper to set TDR timeout:
    > https://lore.kernel.org/dri-devel/20230404002211.3611376-8-matthew.brost@intel.com/
    >
    > [1] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15243
    > [2] https://gitlab.freedesktop.org/mesa/mesa/-/tree/main/src/imagination/vulkan
    > [3] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15507
    >
    > High level summary of changes:
    >
    > v5:
    > * Retrieve GPU device information from firmware image header
    > * Address issues with DT binding and example DTS
    > * Update VM code for upstream GPU VA manager
    > * BOs are always zeroed on allocation
    > * Update copyright
    >
    > v4:
    > * Implemented hang recovery via firmware hard reset
    > * Add support for partial render jobs
    > * Move to a threaded IRQ
    > * Remove unnecessary read/write and clock helpers
    > * Remove device tree elements not relevant to AXE-1-16M
    > * Clean up resource acquisition
    > * Remove unused DT binding attributes
    >
    > v3:
    > * Use drm_sched for scheduling
    > * Use GPU VA manager
    > * Use runtime PM
    > * Use drm_gem_shmem
    > * GPU watchdog and device loss handling
    > * DT binding changes: remove unused attributes, add additionProperties:false
    >
    > v2:
    > * Redesigned and simplified UAPI based on RFC feedback from XDC 2022
    > * Support for transfer and partial render jobs
    > * Support for timeline sync objects
    >
    > RFC v1: https://lore.kernel.org/dri-devel/20220815165156.118212-1-sarah.walker@imgtec.com/
    >
    > RFC v2: https://lore.kernel.org/dri-devel/20230413103419.293493-1-sarah.walker@imgtec.com/
    >
    > v3: https://lore.kernel.org/dri-devel/20230613144800.52657-1-sarah.walker@imgtec.com/
    >
    > v4: https://lore.kernel.org/dri-devel/20230714142355.111382-1-sarah.walker@imgtec.com/
    >
    > Matt Coster (1):
    > sizes.h: Add entries between 32G and 64T
    >
    > Sarah Walker (16):
    > dt-bindings: gpu: Add Imagination Technologies PowerVR GPU
    > drm/imagination/uapi: Add PowerVR driver UAPI
    > drm/imagination: Add skeleton PowerVR driver
    > drm/imagination: Get GPU resources
    > drm/imagination: Add GPU register and FWIF headers
    > drm/imagination: Add GPU ID parsing and firmware loading
    > drm/imagination: Add GEM and VM related code
    > drm/imagination: Implement power management
    > drm/imagination: Implement firmware infrastructure and META FW support
    > drm/imagination: Implement MIPS firmware processor and MMU support
    > drm/imagination: Implement free list and HWRT create and destroy
    > ioctls
    > drm/imagination: Implement context creation/destruction ioctls
    > drm/imagination: Implement job submission and scheduling
    > drm/imagination: Add firmware trace to debugfs
    > drm/imagination: Add driver documentation
    > arm64: dts: ti: k3-am62-main: Add GPU device node [DO NOT MERGE]






    I failed to compile this patch set.

    I applied this series to linux next-20230822 and set CONFIG_DRM_POWERVR=m.


    I got this error.

    CC [M] drivers/gpu/drm/imagination/pvr_ccb.o
    In file included from drivers/gpu/drm/imagination/pvr_ccb.c:4:
    drivers/gpu/drm/imagination/pvr_ccb.h:7:10: fatal error:
    pvr_rogue_fwif.h: No such file or directory
    7 | #include "pvr_rogue_fwif.h"
    | ^~~~~~~~~~~~~~~~~~
    compilation terminated.



    Did you forget to do 'git add' or am I missing something?


    I do not see pvr_rogue_fwif.h
    in the following diff stat.


    > .../devicetree/bindings/gpu/img,powervr.yaml | 75 +
    > Documentation/gpu/drivers.rst | 2 +
    > Documentation/gpu/imagination/index.rst | 14 +
    > Documentation/gpu/imagination/uapi.rst | 174 +
    > .../gpu/imagination/virtual_memory.rst | 462 ++
    > MAINTAINERS | 10 +
    > arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 9 +
    > drivers/gpu/drm/Kconfig | 2 +
    > drivers/gpu/drm/Makefile | 1 +
    > drivers/gpu/drm/imagination/Kconfig | 16 +
    > drivers/gpu/drm/imagination/Makefile | 35 +
    > drivers/gpu/drm/imagination/pvr_ccb.c | 641 ++
    > drivers/gpu/drm/imagination/pvr_ccb.h | 71 +
    > drivers/gpu/drm/imagination/pvr_cccb.c | 267 +
    > drivers/gpu/drm/imagination/pvr_cccb.h | 109 +
    > drivers/gpu/drm/imagination/pvr_context.c | 460 ++
    > drivers/gpu/drm/imagination/pvr_context.h | 205 +
    > drivers/gpu/drm/imagination/pvr_debugfs.c | 53 +
    > drivers/gpu/drm/imagination/pvr_debugfs.h | 29 +
    > drivers/gpu/drm/imagination/pvr_device.c | 651 ++
    > drivers/gpu/drm/imagination/pvr_device.h | 704 ++
    > drivers/gpu/drm/imagination/pvr_device_info.c | 253 +
    > drivers/gpu/drm/imagination/pvr_device_info.h | 185 +
    > drivers/gpu/drm/imagination/pvr_drv.c | 1515 ++++
    > drivers/gpu/drm/imagination/pvr_drv.h | 129 +
    > drivers/gpu/drm/imagination/pvr_free_list.c | 625 ++
    > drivers/gpu/drm/imagination/pvr_free_list.h | 195 +
    > drivers/gpu/drm/imagination/pvr_fw.c | 1470 ++++
    > drivers/gpu/drm/imagination/pvr_fw.h | 508 ++
    > drivers/gpu/drm/imagination/pvr_fw_info.h | 135 +
    > drivers/gpu/drm/imagination/pvr_fw_meta.c | 554 ++
    > drivers/gpu/drm/imagination/pvr_fw_meta.h | 14 +
    > drivers/gpu/drm/imagination/pvr_fw_mips.c | 250 +
    > drivers/gpu/drm/imagination/pvr_fw_mips.h | 38 +
    > .../gpu/drm/imagination/pvr_fw_startstop.c | 301 +
    > .../gpu/drm/imagination/pvr_fw_startstop.h | 13 +
    > drivers/gpu/drm/imagination/pvr_fw_trace.c | 515 ++
    > drivers/gpu/drm/imagination/pvr_fw_trace.h | 78 +
    > drivers/gpu/drm/imagination/pvr_gem.c | 396 ++
    > drivers/gpu/drm/imagination/pvr_gem.h | 184 +
    > drivers/gpu/drm/imagination/pvr_hwrt.c | 549 ++
    > drivers/gpu/drm/imagination/pvr_hwrt.h | 165 +
    > drivers/gpu/drm/imagination/pvr_job.c | 770 ++
    > drivers/gpu/drm/imagination/pvr_job.h | 161 +
    > drivers/gpu/drm/imagination/pvr_mmu.c | 2523 +++++++
    > drivers/gpu/drm/imagination/pvr_mmu.h | 108 +
    > drivers/gpu/drm/imagination/pvr_params.c | 147 +
    > drivers/gpu/drm/imagination/pvr_params.h | 72 +
    > drivers/gpu/drm/imagination/pvr_power.c | 421 ++
    > drivers/gpu/drm/imagination/pvr_power.h | 39 +
    > drivers/gpu/drm/imagination/pvr_queue.c | 1455 ++++
    > drivers/gpu/drm/imagination/pvr_queue.h | 179 +
    > .../gpu/drm/imagination/pvr_rogue_cr_defs.h | 6193 +++++++++++++++++
    > .../imagination/pvr_rogue_cr_defs_client.h | 159 +
    > drivers/gpu/drm/imagination/pvr_rogue_defs.h | 179 +
    > drivers/gpu/drm/imagination/pvr_rogue_fwif.h | 2208 ++++++
    > .../drm/imagination/pvr_rogue_fwif_check.h | 491 ++
    > .../drm/imagination/pvr_rogue_fwif_client.h | 371 +
    > .../imagination/pvr_rogue_fwif_client_check.h | 133 +
    > .../drm/imagination/pvr_rogue_fwif_common.h | 60 +
    > .../drm/imagination/pvr_rogue_fwif_dev_info.h | 112 +
    > .../pvr_rogue_fwif_resetframework.h | 28 +
    > .../gpu/drm/imagination/pvr_rogue_fwif_sf.h | 1648 +++++
    > .../drm/imagination/pvr_rogue_fwif_shared.h | 258 +
    > .../imagination/pvr_rogue_fwif_shared_check.h | 108 +
    > .../drm/imagination/pvr_rogue_fwif_stream.h | 78 +
    > .../drm/imagination/pvr_rogue_heap_config.h | 113 +
    > drivers/gpu/drm/imagination/pvr_rogue_meta.h | 356 +
    > drivers/gpu/drm/imagination/pvr_rogue_mips.h | 335 +
    > .../drm/imagination/pvr_rogue_mips_check.h | 58 +
    > .../gpu/drm/imagination/pvr_rogue_mmu_defs.h | 136 +
    > drivers/gpu/drm/imagination/pvr_stream.c | 285 +
    > drivers/gpu/drm/imagination/pvr_stream.h | 75 +
    > drivers/gpu/drm/imagination/pvr_stream_defs.c | 351 +
    > drivers/gpu/drm/imagination/pvr_stream_defs.h | 16 +
    > drivers/gpu/drm/imagination/pvr_sync.c | 287 +
    > drivers/gpu/drm/imagination/pvr_sync.h | 84 +
    > drivers/gpu/drm/imagination/pvr_vm.c | 906 +++
    > drivers/gpu/drm/imagination/pvr_vm.h | 60 +
    > drivers/gpu/drm/imagination/pvr_vm_mips.c | 208 +
    > drivers/gpu/drm/imagination/pvr_vm_mips.h | 22 +
    > include/linux/sizes.h | 9 +
    > include/uapi/drm/pvr_drm.h | 1303 ++++
    > 83 files changed, 34567 insertions(+)
    > create mode 100644 Documentation/devicetree/bindings/gpu/img,powervr.yaml
    > create mode 100644 Documentation/gpu/imagination/index.rst
    > create mode 100644 Documentation/gpu/imagination/uapi.rst
    > create mode 100644 Documentation/gpu/imagination/virtual_memory.rst
    > create mode 100644 drivers/gpu/drm/imagination/Kconfig
    > create mode 100644 drivers/gpu/drm/imagination/Makefile
    > create mode 100644 drivers/gpu/drm/imagination/pvr_ccb.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_ccb.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_cccb.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_cccb.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_context.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_context.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_debugfs.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_debugfs.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_device.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_device.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_device_info.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_device_info.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_drv.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_drv.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_free_list.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_free_list.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw_info.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw_meta.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw_meta.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw_mips.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw_mips.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw_startstop.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw_startstop.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw_trace.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_fw_trace.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_gem.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_gem.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_hwrt.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_hwrt.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_job.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_job.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_mmu.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_mmu.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_params.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_params.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_power.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_power.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_queue.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_queue.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_cr_defs.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_cr_defs_client.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_defs.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_check.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_client.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_client_check.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_common.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_dev_info.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_resetframework.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_sf.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_shared.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_shared_check.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_fwif_stream.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_heap_config.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_meta.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_mips.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_mips_check.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_rogue_mmu_defs.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_stream.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_stream.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_stream_defs.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_stream_defs.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_sync.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_sync.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_vm.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_vm.h
    > create mode 100644 drivers/gpu/drm/imagination/pvr_vm_mips.c
    > create mode 100644 drivers/gpu/drm/imagination/pvr_vm_mips.h
    > create mode 100644 include/uapi/drm/pvr_drm.h
    >
    > --
    > 2.41.0
    >


    --
    Best Regards
    Masahiro Yamada

    \
     
     \ /
      Last update: 2023-08-24 00:33    [W:3.283 / U:0.464 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site