From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 254F233ADA7 for ; Mon, 18 May 2026 23:54:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779148450; cv=none; b=hcziyz8yoUOxT3ZcP9q8EYnf4KOawyAiuiSFF6Kvqtnz5Va/7ebelrJEbVryIQ0GtkRXUA4p1HAtpNmMkd5AR+mpKDMRr+3Oehz9zsXlly5Lqjn+rnG835gqHgdcwN3+EN/yVR1bhVCF9DWRrlaZ9RrNXHPJ6i1LFeUrHP7PPfc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779148450; c=relaxed/simple; bh=ZZernUP6/Hi6KA5O7QXbFZWWf//ctZy3kOMXm/a4ikQ=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=oprrBZVE9IE0HUjmEOQRT9A9lyWL4tzxg3UXQBeKT+fDcJ0wkmwUm8gt4FHJZn+QTFK8bwF1hIzTBs3Xklf7UoZRn/nFfJa+Q7yKRAX5JjaSHvtHiKq107l3L4WwoGMR4COp0sdUFAnGPU4exWDoaPhIntfRh3MsWK5u/kPzm9g= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WR4OCB0I; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WR4OCB0I" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7EF6C2BCB8; Mon, 18 May 2026 23:54:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1779148449; bh=ZZernUP6/Hi6KA5O7QXbFZWWf//ctZy3kOMXm/a4ikQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=WR4OCB0I7mOtJEjSJu5BrcVnBmtMsjcFskuVZ3m9ZjrRdeX4LbZ21o1mmS6G9m+DD KVpI5Pf21t44NZ+ddBVofR/0hF1n+cxokMAdZ1cDXXcmnRvyhUdHe0Ne/gMWqZGEE3 3dueirwjGNoZdkV2f0PkJxVQ1hF4WD2rQX0pkcGjIdVC70wOiM6MOHOen+r9CdTxx+ 4p+7Kkc7kcvu+Cx6lfUZaJXlq9YAZZpSakXcwKxJ+UIbo/pLy3W8BFyib5CZV+jZdC wREcWsPsZ42Npf3O4Uo+XysmbpL9hZTMbtgY10zZWCaNgTYtXEl5f0xmVFoYhUfVrR psjrPpVNWwAfw== Message-ID: Date: Mon, 18 May 2026 18:54:07 -0500 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V2] accel/amdxdna: Remove mmap and export support for ubuf To: Lizhi Hou , ogabbay@kernel.org, quic_jhugo@quicinc.com, karol.wachowski@linux.intel.com Cc: linux-kernel@vger.kernel.org, linaro-mm-sig@lists.linaro.org, dri-devel@lists.freedesktop.org, christian.koenig@amd.com, simona@ffwll.ch, max.zhen@amd.com, sonal.santan@amd.com References: <20260518155706.937461-1-lizhi.hou@amd.com> Content-Language: en-US From: Mario Limonciello In-Reply-To: <20260518155706.937461-1-lizhi.hou@amd.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 5/18/26 10:57, Lizhi Hou wrote: > Ubuf pages should not be mmaped or exported. Remove the ubuf mmap callback > and return -EOPNOTSUPP when exporting ubuf objects. > > ubuf vmap is also removed for there is not a real use case yet. > > Fixes: bd72d4acda10 ("accel/amdxdna: Support user space allocated buffer") > Cc: Christian Koenig > Signed-off-by: Lizhi Hou Reviewed-by: Mario Limonciello (AMD) > --- > v2: > Remove dead code amdxdna_ubuf_vm_ops structure and amdxdna_ubuf_vm_fault > function. > Rename Non-exportable buffer flag from 'pri' to 'private_buffer' > > drivers/accel/amdxdna/amdxdna_gem.c | 9 ++++- > drivers/accel/amdxdna/amdxdna_gem.h | 2 ++ > drivers/accel/amdxdna/amdxdna_ubuf.c | 50 ---------------------------- > 3 files changed, 10 insertions(+), 51 deletions(-) > > diff --git a/drivers/accel/amdxdna/amdxdna_gem.c b/drivers/accel/amdxdna/amdxdna_gem.c > index 319d2064fafa..6b9b556de555 100644 > --- a/drivers/accel/amdxdna/amdxdna_gem.c > +++ b/drivers/accel/amdxdna/amdxdna_gem.c > @@ -492,6 +492,9 @@ static struct dma_buf *amdxdna_gem_prime_export(struct drm_gem_object *gobj, int > struct amdxdna_gem_obj *abo = to_xdna_obj(gobj); > DEFINE_DMA_BUF_EXPORT_INFO(exp_info); > > + if (abo->private_buffer) > + return ERR_PTR(-EOPNOTSUPP); > + > if (abo->dma_buf) { > get_dma_buf(abo->dma_buf); > return abo->dma_buf; > @@ -716,6 +719,7 @@ amdxdna_gem_create_ubuf_object(struct drm_device *dev, struct amdxdna_drm_create > { > struct amdxdna_dev *xdna = to_xdna_dev(dev); > struct amdxdna_drm_va_tbl va_tbl; > + struct amdxdna_gem_obj *abo; > struct drm_gem_object *gobj; > struct dma_buf *dma_buf; > > @@ -742,7 +746,10 @@ amdxdna_gem_create_ubuf_object(struct drm_device *dev, struct amdxdna_drm_create > > dma_buf_put(dma_buf); > > - return to_xdna_obj(gobj); > + abo = to_xdna_obj(gobj); > + abo->private_buffer = true; > + > + return abo; > } > > static struct amdxdna_gem_obj * > diff --git a/drivers/accel/amdxdna/amdxdna_gem.h b/drivers/accel/amdxdna/amdxdna_gem.h > index 4fc48a1189d2..957305ccb485 100644 > --- a/drivers/accel/amdxdna/amdxdna_gem.h > +++ b/drivers/accel/amdxdna/amdxdna_gem.h > @@ -54,6 +54,8 @@ struct amdxdna_gem_obj { > > /* True, if BO is managed by XRT, not application */ > bool internal; > + /* True, if BO is not exportable */ > + bool private_buffer; > }; > > #define to_gobj(obj) (&(obj)->base.base) > diff --git a/drivers/accel/amdxdna/amdxdna_ubuf.c b/drivers/accel/amdxdna/amdxdna_ubuf.c > index 3769210c55cc..bb60fb80467e 100644 > --- a/drivers/accel/amdxdna/amdxdna_ubuf.c > +++ b/drivers/accel/amdxdna/amdxdna_ubuf.c > @@ -69,60 +69,10 @@ static void amdxdna_ubuf_release(struct dma_buf *dbuf) > kfree(ubuf); > } > > -static vm_fault_t amdxdna_ubuf_vm_fault(struct vm_fault *vmf) > -{ > - struct vm_area_struct *vma = vmf->vma; > - struct amdxdna_ubuf_priv *ubuf; > - unsigned long pfn; > - pgoff_t pgoff; > - > - ubuf = vma->vm_private_data; > - pgoff = (vmf->address - vma->vm_start) >> PAGE_SHIFT; > - > - pfn = page_to_pfn(ubuf->pages[pgoff]); > - return vmf_insert_pfn(vma, vmf->address, pfn); > -} > - > -static const struct vm_operations_struct amdxdna_ubuf_vm_ops = { > - .fault = amdxdna_ubuf_vm_fault, > -}; > - > -static int amdxdna_ubuf_mmap(struct dma_buf *dbuf, struct vm_area_struct *vma) > -{ > - struct amdxdna_ubuf_priv *ubuf = dbuf->priv; > - > - vma->vm_ops = &amdxdna_ubuf_vm_ops; > - vma->vm_private_data = ubuf; > - vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP); > - > - return 0; > -} > - > -static int amdxdna_ubuf_vmap(struct dma_buf *dbuf, struct iosys_map *map) > -{ > - struct amdxdna_ubuf_priv *ubuf = dbuf->priv; > - void *kva; > - > - kva = vmap(ubuf->pages, ubuf->nr_pages, VM_MAP, PAGE_KERNEL); > - if (!kva) > - return -EINVAL; > - > - iosys_map_set_vaddr(map, kva); > - return 0; > -} > - > -static void amdxdna_ubuf_vunmap(struct dma_buf *dbuf, struct iosys_map *map) > -{ > - vunmap(map->vaddr); > -} > - > static const struct dma_buf_ops amdxdna_ubuf_dmabuf_ops = { > .map_dma_buf = amdxdna_ubuf_map, > .unmap_dma_buf = amdxdna_ubuf_unmap, > .release = amdxdna_ubuf_release, > - .mmap = amdxdna_ubuf_mmap, > - .vmap = amdxdna_ubuf_vmap, > - .vunmap = amdxdna_ubuf_vunmap, > }; > > static int readonly_va_entry(struct amdxdna_drm_va_entry *va_ent)