On Tue, Feb 24, 2026 at 12:39:00AM +0530, Ekansh Gupta wrote:
Introduce a per-device memory manager for the QDA driver that tracks IOMMU-capable compute context-bank (CB) devices. Each CB device is represented by a qda_iommu_device and registered with a central qda_memory_manager instance owned by qda_dev.
The memory manager maintains an xarray of devices and assigns a unique ID to each CB. It also provides basic lifetime management
Sounds like IDR.
and a workqueue for deferred device removal. qda_cb_setup_device()
What is deferred device removal? Why do you need it?
now allocates a qda_iommu_device for each CB and registers it with the memory manager after DMA configuration succeeds.
qda_init_device() is extended to allocate and initialize the memory manager, while qda_deinit_device() will tear it down in later patches. This prepares the QDA driver for fine-grained memory and IOMMU domain management tied to individual CB devices.
Signed-off-by: Ekansh Gupta ekansh.gupta@oss.qualcomm.com
drivers/accel/qda/Makefile | 1 + drivers/accel/qda/qda_cb.c | 32 +++++++ drivers/accel/qda/qda_drv.c | 46 ++++++++++ drivers/accel/qda/qda_drv.h | 3 + drivers/accel/qda/qda_memory_manager.c | 152 +++++++++++++++++++++++++++++++++ drivers/accel/qda/qda_memory_manager.h | 101 ++++++++++++++++++++++ 6 files changed, 335 insertions(+)