On Tue, Aug 18, 2026 at 10:03:56AM +0530, Ekansh Gupta wrote: > On 17-08-2026 12:22, Dmitry Baryshkov wrote: > > On Mon, Aug 17, 2026 at 10:17:42AM +0530, Ekansh Gupta wrote: > >> Introduce the QDA memory manager (qda_memory_manager) to track the > >> IOMMU devices that back each compute context bank (CB). > >> > >> Each CB device registered on the qda-compute-cb bus is wrapped in a > >> qda_iommu_device descriptor recording the device pointer and its stream > >> ID, and stored in the memory manager's registry. Later patches use this > >> registry to resolve the IOMMU device a session should allocate from. > >> > >> The registry is a plain array sized to the number of > >> "qcom,fastrpc-compute-cb" nodes present in the device tree: the RPMsg > >> probe counts those nodes and passes the count to qda_init_device(), > >> which allocates the array in qda_memory_manager_init(). The memory > >> manager is created before CB devices are populated and destroyed after > >> they are torn down, so no dangling descriptors remain. > >> > >> qda_cb_setup_device() is called immediately after a CB device is > >> registered on the bus: it allocates the descriptor, registers it with > >> the memory manager, and stores it as the CB device's driver data so > >> that qda_destroy_cb_device() can unregister and free it during teardown. > >> > >> Assisted-by: Claude:claude-sonnet-5 > >> Signed-off-by: Ekansh Gupta <[email protected]> > >> --- > >> Changes in v2: > >> - Replace the XArray with a plain array sized to the device tree's CB > >> node count instead of a fixed 16-entry table (Dmitry Baryshkov) > >> - Fold the init_memory_manager()/cleanup_memory_manager() wrappers into > >> qda_init_device()/qda_deinit_device() (Dmitry Baryshkov) > >> - Drop the pr_debug() calls (Dmitry Baryshkov) > >> - Use goto labels to unwind probe failures instead of open-coding the > >> cleanup at each error site (Dmitry Baryshkov) > >> --- > >> drivers/accel/qda/Makefile | 1 + > >> drivers/accel/qda/qda_cb.c | 39 ++++++++++++++ > >> drivers/accel/qda/qda_drv.c | 26 +++++++++ > >> drivers/accel/qda/qda_drv.h | 5 ++ > >> drivers/accel/qda/qda_memory_manager.c | 98 > >> ++++++++++++++++++++++++++++++++++ > >> drivers/accel/qda/qda_memory_manager.h | 55 +++++++++++++++++++ > >> drivers/accel/qda/qda_rpmsg.c | 23 +++++++- > >> 7 files changed, 246 insertions(+), 1 deletion(-) > >> > >> + > >> +/** > >> + * struct qda_memory_manager - Central memory management coordinator > >> + * > >> + * Coordinates memory management across multiple IOMMU devices. Maintains > >> + * a registry of devices in an array sized to the number of context banks > >> + * described in the device tree. > >> + */ > >> +struct qda_memory_manager { > >> + /** @devices: Array storing registered IOMMU devices */ > >> + struct qda_iommu_device **devices; > >> + /** @num_devices: Number of registered IOMMU devices */ > >> + int num_devices; > > > > What for? Is devices array to be looped up to num_devices or > > max_devices? > num_devices is to trace device registry with manager, it grows on > register operation. I'll improve the comment.
If it's a loop counter during device registration, make it a loop counter. Don't store useless data. -- With best wishes Dmitry
