Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 00/18] Imagination BXS-4-64 MC1 GPU support
@ 2025-04-10  9:54 Matt Coster
  2025-04-10  9:55 ` [PATCH v6 01/18] dt-bindings: gpu: img: Future-proofing enhancements Matt Coster
                   ` (17 more replies)
  0 siblings, 18 replies; 22+ messages in thread
From: Matt Coster @ 2025-04-10  9:54 UTC (permalink / raw)
  To: Frank Binns, Matt Coster, David Airlie, Simona Vetter,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Nishanth Menon,
	Vignesh Raghavendra, Tero Kristo
  Cc: dri-devel, devicetree, linux-kernel, linux-arm-kernel,
	Randolph Sapp, Darren Etheridge, Michal Wilczynski, Alessio Belle,
	Alexandru Dadu, Krzysztof Kozlowski, Sarah Walker

This GPU is found in the TI AM68 family of SoCs, with initial support
added to the k3-j721s2 devicetree and tested on a TI SK-AM68 board.

A suitable firmware binary can currently be found in the IMG
linux-firmware repository[1] as powervr/rogue_36.53.104.796_v1.fw.

No new UAPI will be necessary for this platform as it is sufficiently
similar to the already supported AXE-1-16M.

UMD support is close to being complete. We're now able to pass >99% of
Vulkan conformance on our Mesa development branch. The compiler has been
undergoing a significant rework needed to accomodate the BXS-4-64, as
well as to make it more flexible to support additional Rogue GPUs going
forward. The first part of this rework landed in Mesa in [2], and the
next chunk is currently in review in [3].

There are several dt-bindings changes at the beginning of this series.
We expect the result to be versatile enough to handle all Imagination
Rogue GPUs while being a strong foundation to build bindings for the
newer Volcanic architecture (for which we're currently developing
support).

The DTS changes at the end of the series are marked [DO NOT MERGE]. Once
the series is reviewed, we will request these be taken through the
relevant tree.

This version of the series depends on the following patches which exist
in drm-misc-fixes but have not yet made it back to drm-misc-next (the
target of this series):

- 5d84783d621e ("drm/imagination: take paired job reference") [4]
- b05e8911cb7c ("drm/imagination: fix firmware memory leaks") [5]

[1]: https://gitlab.freedesktop.org/imagination/linux-firmware/-/tree/powervr
[2]: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32258
[3]: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33998
[4]: https://lore.kernel.org/r/20250318-ddkopsrc-1337-use-after-free-in-pvr_queue_prepare_job-v1-1-80fb30d044a6@imgtec.com
[5]: https://lore.kernel.org/r/20250318-ddkopsrc-1339-firmware-related-memory-leak-on-module-unload-v1-1-155337c57bb4@imgtec.com

---
Changes in v6:
- Add Krzysztof's Rb to dt-bindings changes (P1/P2)
- Add Frank's Rb to drm/imagination changes (P3-P16)
- Move loop variable (P13)
- Link to v5: https://lore.kernel.org/r/20250326-sets-bxs-4-64-patch-v1-v5-0-e4c46e8280a9@imgtec.com

Changes in v5:
- Remove extraneous (and error-causing) power-domains minItems
  constraint (P1)
- Replace anyOf/const with enum (P2)
- Link to v4: https://lore.kernel.org/r/20250320-sets-bxs-4-64-patch-v1-v4-0-d987cf4ca439@imgtec.com

Changes in v4:
- Update status of UMD support (cover)
- Fix backwards compatibility of new compatible strings (P1)
- Fix power-domains property constraints (P1/P2)
- Fix power-domain-names property constraints (P2)
- Only invoke pvr_device_safety_irq_clear() if has_safety_events is set
  (P7)
- Use pvr_vm_unmap_obj() in pvr_riscv_vm_unmap() (P14)
- Fix formatting of pvr_riscv_fw_process() signature (P14)
- Link to v3: https://lore.kernel.org/r/20250310-sets-bxs-4-64-patch-v1-v3-0-143b3dbef02f@imgtec.com

Changes in v3:
- Reorder some patches to ensure the proper sequencing
- Update status of UMD support (cover)
- Don't use more specific compatible strings when not required (P1)
- Avoid ABI break by limiting new required properties to new compatible
  strings (P2)
- Move power domain changes to the patch in which they're used (P2/P5)
- Update register definitions (P3) [Thanks, Alessio!]
- Don't use more specific compatible strings when not required (P4)
- Enhanced commit messages (P4)
- Remove unnecessary example (P5)
- Add proper fixes for threaded IRQs (P6) [Thanks, Alessio!]
- Include fix for a separate IRQ issue (P7) [Thanks, Alessio!]
- Don't enable firmware debug module (was P13 in v2, also in P14)
- Change from a workaround to a regular codepath (P15)
- Drop platform overrides framework (was P18 in v2, also in P16)
- Mark DTS changes [DO NOT MERGE] (P17/P18)
- Link to v2: https://lore.kernel.org/r/20241118-sets-bxs-4-64-patch-v1-v2-0-3fd45d9fb0cf@imgtec.com

Changes in v2:
- Clarified justification for compatible strings (P1)
- Simplified clocks constraints (P2)
- Simplified power-domains constraints (P3/P4)
- Use normal reg syntax for 64-bit values (P8/P21)
- Link to v1: https://lore.kernel.org/r/20241105-sets-bxs-4-64-patch-v1-v1-0-4ed30e865892@imgtec.com

---
Alessio Belle (3):
      drm/imagination: Update register defs for newer GPUs
      drm/imagination: Mask GPU IRQs in threaded handler
      drm/imagination: Handle Rogue safety event IRQs

Matt Coster (14):
      dt-bindings: gpu: img: Future-proofing enhancements
      dt-bindings: gpu: img: Add BXS-4-64 devicetree bindings
      drm/imagination: Use new generic compatible string
      drm/imagination: Add power domain control
      drm/imagination: Remove firmware enable_reg
      drm/imagination: Rename event_mask -> status_mask
      drm/imagination: Make has_fixed_data_addr a value
      drm/imagination: Use a lookup table for fw defs
      drm/imagination: Use callbacks for fw irq handling
      drm/imagination: Move ELF fw utils to common file
      drm/imagination: Use cached memory with dma_coherent
      drm/imagination: Add support for TI AM68 GPU
      [DO NOT MERGE] arm64: dts: ti: k3-am62: New GPU binding details
      [DO NOT MERGE] arm64: dts: ti: k3-j721s2: Add GPU node

Sarah Walker (1):
      drm/imagination: Add RISC-V firmware processor support

 .../devicetree/bindings/gpu/img,powervr-rogue.yaml |  81 +++++++++-
 arch/arm64/boot/dts/ti/k3-am62-main.dtsi           |   4 +-
 arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi         |  12 ++
 drivers/gpu/drm/imagination/Makefile               |   2 +
 drivers/gpu/drm/imagination/pvr_device.c           | 126 ++++++++++++++--
 drivers/gpu/drm/imagination/pvr_device.h           |  31 +++-
 drivers/gpu/drm/imagination/pvr_drv.c              |  16 ++
 drivers/gpu/drm/imagination/pvr_fw.c               |  28 +++-
 drivers/gpu/drm/imagination/pvr_fw.h               |  85 +++++------
 drivers/gpu/drm/imagination/pvr_fw_meta.c          |  23 +--
 drivers/gpu/drm/imagination/pvr_fw_mips.c          |  81 ++--------
 drivers/gpu/drm/imagination/pvr_fw_riscv.c         | 165 +++++++++++++++++++++
 drivers/gpu/drm/imagination/pvr_fw_startstop.c     |  17 +++
 drivers/gpu/drm/imagination/pvr_fw_util.c          |  66 +++++++++
 drivers/gpu/drm/imagination/pvr_gem.c              |  10 +-
 drivers/gpu/drm/imagination/pvr_gem.h              |   6 +-
 drivers/gpu/drm/imagination/pvr_mmu.c              |   8 +-
 drivers/gpu/drm/imagination/pvr_power.c            | 114 ++++++++++++++
 drivers/gpu/drm/imagination/pvr_power.h            |   3 +
 drivers/gpu/drm/imagination/pvr_rogue_cr_defs.h    | 153 ++++++++++++++++---
 drivers/gpu/drm/imagination/pvr_rogue_riscv.h      |  41 +++++
 21 files changed, 895 insertions(+), 177 deletions(-)
---
base-commit: 07484031a8cdc0da8edd07d00528d9ccb5543e4b
change-id: 20241021-sets-bxs-4-64-patch-v1-44cdf9cc555f



^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2025-06-04 14:11 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-10  9:54 [PATCH v6 00/18] Imagination BXS-4-64 MC1 GPU support Matt Coster
2025-04-10  9:55 ` [PATCH v6 01/18] dt-bindings: gpu: img: Future-proofing enhancements Matt Coster
2025-04-10  9:55 ` [PATCH v6 02/18] dt-bindings: gpu: img: Add BXS-4-64 devicetree bindings Matt Coster
2025-04-10  9:55 ` [PATCH v6 03/18] drm/imagination: Update register defs for newer GPUs Matt Coster
2025-04-10  9:55 ` [PATCH v6 04/18] drm/imagination: Use new generic compatible string Matt Coster
2025-04-10  9:55 ` [PATCH v6 05/18] drm/imagination: Add power domain control Matt Coster
2025-06-04 14:08   ` Ulf Hansson
2025-04-10  9:55 ` [PATCH v6 06/18] drm/imagination: Mask GPU IRQs in threaded handler Matt Coster
2025-04-10  9:55 ` [PATCH v6 07/18] drm/imagination: Handle Rogue safety event IRQs Matt Coster
2025-04-10  9:55 ` [PATCH v6 08/18] drm/imagination: Remove firmware enable_reg Matt Coster
2025-04-10  9:55 ` [PATCH v6 09/18] drm/imagination: Rename event_mask -> status_mask Matt Coster
2025-04-10  9:55 ` [PATCH v6 10/18] drm/imagination: Make has_fixed_data_addr a value Matt Coster
2025-04-10  9:55 ` [PATCH v6 11/18] drm/imagination: Use a lookup table for fw defs Matt Coster
2025-04-10  9:55 ` [PATCH v6 12/18] drm/imagination: Use callbacks for fw irq handling Matt Coster
2025-04-10  9:55 ` [PATCH v6 13/18] drm/imagination: Move ELF fw utils to common file Matt Coster
2025-04-10  9:55 ` [PATCH v6 14/18] drm/imagination: Add RISC-V firmware processor support Matt Coster
2025-04-10  9:55 ` [PATCH v6 15/18] drm/imagination: Use cached memory with dma_coherent Matt Coster
2025-04-10  9:55 ` [PATCH v6 16/18] drm/imagination: Add support for TI AM68 GPU Matt Coster
2025-04-10  9:55 ` [PATCH DO NOT MERGE v6 17/18] arm64: dts: ti: k3-am62: New GPU binding details Matt Coster
2025-04-15 12:41   ` Matt Coster
2025-04-15 15:44     ` Nishanth Menon
2025-04-10  9:55 ` [PATCH DO NOT MERGE v6 18/18] arm64: dts: ti: k3-j721s2: Add GPU node Matt Coster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox