Messages in this thread | | | From | Sherry Sun <> | Subject | RE: [PATCH 1/5] misc: vop: change the way of allocating vring for noncoherent platform | Date | Mon, 28 Sep 2020 10:10:58 +0000 |
| |
Hi Christoph,
> On Sun, Sep 27, 2020 at 07:58:29AM +0000, Sherry Sun wrote: > > Thanks for your reply. > > Can you explain why we cannot use the API and header above in drivers? > > And do you know if there are any APIs that could replace this to check the > device hardware dma coherent support? > > If your treat the memory as if it is coherent with device access you should > always use dma_alloc_coherent. The whole point of the DMA API is to > abstract such differences away.
Well, for vring and device pages in vop driver, dma coherent memory maybe more reasonable. Will use dma_alloc_coherent to replace the orginal memory allocate method in V2.
> > > > > > > > + vdev->vvr[i].vrh.vring.used = > > > > + (void __force *)vpdev->hw_ops->remap( > > > > > > And you must not use __force casts without a comment explanation why > > > they are safe. > > > > Here is the original code, I moved the original code into the if() without > change it. > > But I think this is because vpdev->hw_ops->remap() return type is void > __iomem *, but vring.used need type void *. > > Maybe this is a workaround for Intel MIC platform, as it reassigns the used > ring on the EP side. > > Well, we'll need to figure out what is going on here, and blind casts to and > from __iomem are dangerous.
Yes, you are right.
Regards Sherry
| |