From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: Lucas Stach <l.stach@pengutronix.de>
Cc: Christian Gmeiner <christian.gmeiner@gmail.com>,
Russell King <linux+etnaviv@armlinux.org.uk>,
dri-devel@lists.freedesktop.org, etnaviv@lists.freedesktop.org,
linux-kernel@vger.kernel.org,
Sui Jingfeng <sui.jingfeng@linux.dev>
Subject: [PATCH v15 00/19] drm/etnaviv: Add driver wrapper for vivante GPUs attached on PCI(e) device
Date: Sun, 8 Sep 2024 17:43:38 +0800 [thread overview]
Message-ID: <20240908094357.291862-1-sui.jingfeng@linux.dev> (raw)
drm/etnaviv use the component framework to bind multiple GPU cores to a
virtual master, the virtual master is manually create during driver load
time. This may works well for SoCs, yet there are some PCIe card has the
vivante GPU cores integrated. The driver lacks support for PCIe devices
currently.
Adds PCIe driver wrapper on the top of drm/etnaviv, the component
framework is still being used to bind subdevices, even though there is
only one GPU core. But the process is going to be reversed, we create
virtual platform device for each of the vivante GPU IP core that is
shipped by the PCIe card. Select the PCIe device as parent, generate a
virtual platform device as component master to take over the bind actions.
Sui Jingfeng (19):
drm/etnaviv: Implement drm_gem_object_funcs::print_info()
drm/etnaviv: Export drm_gem_print_info() and use it
drm/etnaviv: Implement drm_gem_object_funcs::vunmap()
drm/etnaviv: Make etnaviv_gem_prime_vmap() a static function
drm/etnaviv: Add contructor and destructor for etnaviv_gem_get_mapping
structure
drm/etnaviv: Prefer drm_device based drm_WARN_ON() over regular
WARN_ON()
drm/etnaviv: Add a dedicated helper function to get various clocks
drm/etnaviv: Fix wrong caching mode being used for non writecombine
buffers
drm/etnaviv: Add constructor and destructor for the
etnaviv_drm_private structure
drm/etnaviv: Embed struct drm_device into struct etnaviv_drm_private
drm/etnaviv: Add etnaviv_gem_obj_remove() helper
drm/etnaviv: Add support for cached coherent caching mode
drm/etnaviv: Add support for vivante GPU cores attached via PCIe
device
drm/etnaviv: Add PCIe IP setup code
drm/etnaviv: Make more use of the etnaviv_gem_new_private() function
drm/etnaviv: Call etnaviv_gem_obj_add() in ernaviv_gem_new_private()
drm/etnaviv: Support to manage dedicated VRAM base on drm_mm
drm/etnaviv: Allow userspace specify the domain of etnaviv GEM buffer
object
drm/etnaviv: Expose basic sanity tests via debugfs
v10:
* Add one more cleanup patch
* Resolve the conflict with a patch from Rob
* Make the dummy PCI stub inlined
* Print only if the platform is dma-coherrent
V11:
* Process reviews since V10.
* Provide a side by side implement
V12:
* Create a virtual platform device for the subcomponent GPU cores
* Bind all subordinate GPU cores to the real PCI master via component.
V13:
* Drop the non-component code path, always use the component framework
to bind subcomponent GPU core. Even though there is only one core.
* Defer the irq handler register.
* Rebase and improve the commit message
V14:
* Rebase onto etnaviv-next and improve commit message.
V15:
* Plug in a drm-mm based dedicated VRAM range allocator.
drivers/gpu/drm/drm_gem.c | 1 +
drivers/gpu/drm/etnaviv/Kconfig | 9 +
drivers/gpu/drm/etnaviv/Makefile | 5 +
drivers/gpu/drm/etnaviv/etnaviv_debugfs.c | 118 +++++++++
drivers/gpu/drm/etnaviv/etnaviv_debugfs.h | 15 ++
drivers/gpu/drm/etnaviv/etnaviv_drv.c | 183 +++++++++----
drivers/gpu/drm/etnaviv/etnaviv_drv.h | 40 ++-
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 224 ++++++++++++----
drivers/gpu/drm/etnaviv/etnaviv_gem.h | 21 +-
drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 31 +--
drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 2 +-
drivers/gpu/drm/etnaviv/etnaviv_gem_vram.c | 264 +++++++++++++++++++
drivers/gpu/drm/etnaviv/etnaviv_gem_vram.h | 14 +
drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 136 +++++++---
drivers/gpu/drm/etnaviv/etnaviv_gpu.h | 4 +
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 11 +-
drivers/gpu/drm/etnaviv/etnaviv_pci_drv.c | 217 +++++++++++++++
drivers/gpu/drm/etnaviv/etnaviv_pci_drv.h | 63 +++++
drivers/gpu/drm/etnaviv/pcie_ip_setup.c | 109 ++++++++
include/drm/drm_gem.h | 2 +
include/uapi/drm/etnaviv_drm.h | 13 +
21 files changed, 1308 insertions(+), 174 deletions(-)
create mode 100644 drivers/gpu/drm/etnaviv/etnaviv_debugfs.c
create mode 100644 drivers/gpu/drm/etnaviv/etnaviv_debugfs.h
create mode 100644 drivers/gpu/drm/etnaviv/etnaviv_gem_vram.c
create mode 100644 drivers/gpu/drm/etnaviv/etnaviv_gem_vram.h
create mode 100644 drivers/gpu/drm/etnaviv/etnaviv_pci_drv.c
create mode 100644 drivers/gpu/drm/etnaviv/etnaviv_pci_drv.h
create mode 100644 drivers/gpu/drm/etnaviv/pcie_ip_setup.c
--
2.43.0
next reply other threads:[~2024-09-08 9:44 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-08 9:43 Sui Jingfeng [this message]
2024-09-08 9:43 ` [PATCH v15 01/19] drm/etnaviv: Implement drm_gem_object_funcs::print_info() Sui Jingfeng
2024-10-01 13:04 ` Lucas Stach
2024-11-09 7:23 ` Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 02/19] drm/etnaviv: Export drm_gem_print_info() and use it Sui Jingfeng
2024-10-01 13:10 ` Lucas Stach
2024-09-08 9:43 ` [PATCH v15 03/19] drm/etnaviv: Implement drm_gem_object_funcs::vunmap() Sui Jingfeng
2024-10-01 13:34 ` Lucas Stach
2024-09-08 9:43 ` [PATCH v15 04/19] drm/etnaviv: Make etnaviv_gem_prime_vmap() a static function Sui Jingfeng
2024-10-01 13:40 ` Lucas Stach
2024-10-01 14:05 ` Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 05/19] drm/etnaviv: Add contructor and destructor for etnaviv_gem_get_mapping structure Sui Jingfeng
2024-10-01 13:51 ` Lucas Stach
2024-09-08 9:43 ` [PATCH v15 06/19] drm/etnaviv: Prefer drm_device based drm_WARN_ON() over regular WARN_ON() Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 07/19] drm/etnaviv: Add a dedicated helper function to get various clocks Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 08/19] drm/etnaviv: Fix wrong caching mode being used for non writecombine buffers Sui Jingfeng
2024-10-01 13:58 ` Lucas Stach
2024-09-08 9:43 ` [PATCH v15 09/19] drm/etnaviv: Add constructor and destructor for the etnaviv_drm_private structure Sui Jingfeng
2024-10-01 14:07 ` Lucas Stach
2024-09-08 9:43 ` [PATCH v15 10/19] drm/etnaviv: Embed struct drm_device into struct etnaviv_drm_private Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 11/19] drm/etnaviv: Add etnaviv_gem_obj_remove() helper Sui Jingfeng
2024-10-01 14:21 ` Lucas Stach
2024-10-01 18:22 ` Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 12/19] drm/etnaviv: Add support for cached coherent caching mode Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 13/19] drm/etnaviv: Add support for vivante GPU cores attached via PCIe device Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 14/19] drm/etnaviv: Add PCIe IP setup code Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 15/19] drm/etnaviv: Make more use of the etnaviv_gem_new_private() function Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 16/19] drm/etnaviv: Call etnaviv_gem_obj_add() in ernaviv_gem_new_private() Sui Jingfeng
2024-10-01 14:39 ` Lucas Stach
2024-10-01 18:52 ` Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 17/19] drm/etnaviv: Support to manage dedicated VRAM base on drm_mm Sui Jingfeng
2024-09-08 9:43 ` [PATCH v15 18/19] drm/etnaviv: Allow userspace specify the domain of etnaviv GEM buffer object Sui Jingfeng
2024-10-01 14:51 ` Lucas Stach
2024-09-08 9:43 ` [PATCH v15 19/19] drm/etnaviv: Expose basic sanity tests via debugfs Sui Jingfeng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240908094357.291862-1-sui.jingfeng@linux.dev \
--to=sui.jingfeng@linux.dev \
--cc=christian.gmeiner@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=etnaviv@lists.freedesktop.org \
--cc=l.stach@pengutronix.de \
--cc=linux+etnaviv@armlinux.org.uk \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox