lkml.org 
[lkml]   [2020]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH V2 3/4] misc: vop: simply return the saved dma address instead of virt_to_phys
On Tue, Sep 29, 2020 at 01:10:12PM +0000, Sherry Sun wrote:
> > > if (!offset) {
> > > - *pa = virt_to_phys(vpdev->hw_ops->get_dp(vpdev));
> > > + if (vpdev->hw_ops->get_dp_dma)
> > > + *pa = vpdev->hw_ops->get_dp_dma(vpdev);
> > > + else {
> > > + dev_err(vop_dev(vdev), "can't get device page
> > physical address\n");
> > > + return -EINVAL;
> > > + }
> >
> > I don't think we need the NULL check here. Wouldn't it also make sense to
> > return the virtual and DMA address from ->get_dp instead of adding another
> > method?
>
> Do you mean that we should only change the original ->get_dp callback to return virtual
> and DMA address at the same time, instead of adding the ->get_dp_dma callback?

That was my intention when writing it, yes. But it seems like most
other callers don't care. Maybe move the invocation of
dma_mmap_coherent into a new ->mmap helper, that way it seems like
the calling code doesn't need to know about the dma_addr_t at all.

That being said the layering in the code keeps puzzling me. As far as
I can tell only a single instance of struct vop_driver even exists, so
we might be able to kill all the indirections entirely.

\
 
 \ /
  Last update: 2020-09-29 20:13    [W:0.138 / U:0.544 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site