From mboxrd@z Thu Jan 1 00:00:00 1970 From: Claude Code Review Bot To: dri-devel-reviews@example.com Subject: Claude review: dma: coherent: register to coherent heap Date: Wed, 04 Mar 2026 07:19:21 +1000 Message-ID: In-Reply-To: <20260303-b4-dmabuf-heap-coherent-rmem-v2-5-65a4653b3378@redhat.com> References: <20260303-b4-dmabuf-heap-coherent-rmem-v2-0-65a4653b3378@redhat.com> <20260303-b4-dmabuf-heap-coherent-rmem-v2-5-65a4653b3378@redhat.com> X-Mailer: Claude Code Patch Reviewer Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit MIME-Version: 1.0 Patch Review Adds a static array `rmem_coherent_areas[MAX_COHERENT_REGIONS]` in `kernel/dma/coherent.c` to record reserved regions during early boot, then exposes them via `dma_coherent_get_reserved_region()`. **Issues:** 1. **Fixed-size static array of 64 entries is a design concern.** The `MAX_COHERENT_REGIONS` of 64 is hardcoded with no Kconfig tunability: ```c +#define MAX_COHERENT_REGIONS 64 +static struct reserved_mem *rmem_coherent_areas[MAX_COHERENT_REGIONS]; ``` This wastes memory when unused (most systems have 0-2 coherent regions) and is an arbitrary limit. A dynamic list or leveraging the existing reserved_mem infrastructure would be cleaner. This is similar to how `cma_heap.c` uses `MAX_CMA_AREAS`, but `MAX_CMA_AREAS` is a well-known kernel-wide constant, while `MAX_COHERENT_REGIONS` is newly invented here. 2. **`rmem_coherent_insert_area()` returns `-EINVAL` on overflow** but `-ENOSPC` or `-ENOMEM` would be more semantically correct. 3. **The array is not `__initdata`.** Unlike the CMA heap's `dma_areas` which is `__initdata` (freed after init), `rmem_coherent_areas` persists forever. Since `dma_coherent_get_reserved_region()` is called from `module_init` (which could be called after `__init` section is freed if built as a module), this is actually necessary, but worth noting the permanent memory cost. 4. **`IS_ENABLED(CONFIG_DMABUF_HEAPS_COHERENT)` guard in `rmem_dma_setup()`:** ```c + if (IS_ENABLED(CONFIG_DMABUF_HEAPS_COHERENT)) { ``` This is `__init` code. If the coherent heap is built as a module (`=m`), `IS_ENABLED()` returns true, so regions are collected. Good -- this is the correct behavior to support the modular case. --- Generated by Claude Code Patch Reviewer