[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 10/19] xen: introduce xen_alloc/free_coherent_pages
On Tue, 1 Oct 2013, Catalin Marinas wrote: > On 30 Sep 2013, at 16:31, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > wrote: > > On Fri, Sep 27, 2013 at 05:09:58PM +0100, Stefano Stabellini wrote: > >> xen_swiotlb_alloc_coherent needs to allocate a coherent buffer for cpu > >> and devices. On native x86 and ARMv8 is sufficient to call > >> __get_free_pages in order to get a coherent buffer, while on ARM we need > >> to call the native dma_ops->alloc implementation. > >> > >> When arm64 stops using the swiotlb by default and starts having multiple > >> dma_ops implementations, we'll use __get_dma_ops there too. > > > > I presume this is a future TODO, not some further patch (in which > > case you should say in here the title of it). If it is a TODO could > > you stick that in the sentence here somewhere to make it crytal clear that > > it is not implemented. > > Thanks for pointing this out. The arm64 patch shouldn't be different > from arm here. I thought a subsequent patch already added > __get_dma_ops() for arm64. Yes, the arm64 patch already added __get_dma_ops. However I am not using __get_dma_ops to implement xen_alloc_coherent_pages for arm64 because I can just use __get_free_pages for the moment: > diff --git a/arch/arm64/include/asm/xen/page-coherent.h > b/arch/arm64/include/asm/xen/page-coherent.h > new file mode 100644 > index 0000000..0d6ad25 > --- /dev/null > +++ b/arch/arm64/include/asm/xen/page-coherent.h > @@ -0,0 +1,24 @@ > +#ifndef _ASM_ARM64_XEN_PAGE_COHERENT_H > +#define _ASM_ARM64_XEN_PAGE_COHERENT_H > + > +#include <asm/page.h> > +#include <linux/dma-attrs.h> > +#include <linux/dma-mapping.h> > + > +static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t > size, > + dma_addr_t *dma_handle, gfp_t flags, > + struct dma_attrs *attrs) > +{ > + void *vstart = (void*)__get_free_pages(flags, get_order(size)); > + *dma_handle = virt_to_phys(vstart); > + return vstart; > +} > + > +static inline void xen_free_coherent_pages(struct device *hwdev, size_t size, > + void *cpu_addr, dma_addr_t dma_handle, > + struct dma_attrs *attrs) > +{ > + free_pages((unsigned long) cpu_addr, get_order(size)); > +} > + > +#endif /* _ASM_ARM64_XEN_PAGE_COHERENT_H */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |