]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
accel/amdxdna: Require carveout when PASID and force_iova are disabled
authorLizhi Hou <lizhi.hou@amd.com>
Thu, 4 Jun 2026 19:54:59 +0000 (12:54 -0700)
committerLizhi Hou <lizhi.hou@amd.com>
Fri, 5 Jun 2026 16:18:20 +0000 (09:18 -0700)
When both PASID and force_iova are disabled, carveout memory should be
used. Reject buffer allocations that cannot use carveout memory in this
configuration and return an error.

Fixes: 3cc5d7a59519 ("accel/amdxdna: Add carveout memory support for non-IOMMU systems")
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
Link: https://patch.msgid.link/20260604195459.2423279-1-lizhi.hou@amd.com
drivers/accel/amdxdna/amdxdna_pci_drv.c

index c677293c1ae7f35b7d33fde3492b59480d9be788..1f066ed8d23659e97ed1db2b1def62c0b81b8dcf 100644 (file)
@@ -120,8 +120,14 @@ static int amdxdna_drm_open(struct drm_device *ddev, struct drm_file *filp)
 
        if (!amdxdna_iova_on(xdna)) {
                /* No need to fail open since user may use pa + carveout later. */
-               if (amdxdna_sva_init(client))
+               if (amdxdna_sva_init(client)) {
                        XDNA_WARN(xdna, "PASID not available for pid %d", client->pid);
+                       if (!amdxdna_use_carveout(xdna)) {
+                               XDNA_ERR(xdna, "PASID unavailable and carveout not configured");
+                               kfree(client);
+                               return -EINVAL;
+                       }
+               }
        }
        mmgrab(client->mm);
        init_srcu_struct(&client->hwctx_srcu);