[dpdk-dev] [Xen-devel] dpdk kernel module when calling xen_create_contiguous_region

Samuel Monderer SMonderer at advaoptical.com
Thu May 1 17:20:06 CEST 2014



> -----Original Message-----
> From: Konrad Rzeszutek Wilk [mailto:konrad.wilk at oracle.com]
> Sent: Thursday, May 01, 2014 6:07 PM
> To: Samuel Monderer
> Cc: xen-devel at lists.xen.org; Shimon Zadok; Eyal Ben Saadon; Andrew
> Sergeev
> Subject: Re: [Xen-devel] dpdk kernel module when calling
> xen_create_contiguous_region
> 
> On Thu, May 01, 2014 at 01:57:17PM +0000, Samuel Monderer wrote:
> > Hi,
> >
> > DPDK application requires hugepages to run.
> > XEN DOM0 does not support hugepages, to be able to run dpdk
> > application in Dom0 a kernel module has been developed to facilitate the
> allocation and mapping of memory.
> >
> > The current version of dpdk uses the old version of
> xen_create_contiguous_region which doesn't get the 4th parameter
> dma_handle.
> > I tried to update the call to  xen_create_contiguous_region as following,
> but the module crashes when it calls  xen_create_contiguous_region.
> 
> 
> You might consider also CC-ing the DPDK developers.

CCed DPDK Developers

> 
> > --- a/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c
> > +++ b/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c
> > @@ -64,6 +64,7 @@
> >  #include <linux/errno.h>
> >  #include <linux/vmalloc.h>
> >  #include <linux/mm.h>
> >
> >  #include <xen/xen.h>
> >  #include <xen/page.h>
> > @@ -309,6 +310,7 @@ dom0_prepare_memsegs(struct memory_info*
> meminfo, struct dom0_
> >         uint64_t pfn, vstart, vaddr;
> >         uint32_t i, num_block, size;
> >         int idx;
> > +       dma_addr_t dma_handle;
> >
> >         /* Allocate 2M memory once */
> >         num_block = meminfo->size / 2; @@ -344,7 +346,7 @@
> > dom0_prepare_memsegs(struct memory_info* meminfo, struct dom0_
> >                  * contiguous physical addresses, its maximum size is 2M.
> >                  */
> >                 if (xen_create_contiguous_region(mm_data-
> >block_info[i].vir_addr,
> > -                                   DOM0_CONTIG_NUM_ORDER, 0) == 0) {
> > +                                   DOM0_CONTIG_NUM_ORDER, 0,
> > + &dma_handle) == 0) {
> >                         mm_data->block_info[i].exchange_flag = 1;
> >                         mm_data->block_info[i].mfn =
> >
> > pfn_to_mfn(mm_data->block_info[i].pfn);
> >
> > Tried to find some documentation xen memory regions without success.
> >
> > Samuel
> >
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel at lists.xen.org
> > http://lists.xen.org/xen-devel


More information about the dev mailing list