All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: "Liu, Jijiang" <jijiang.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: dev-VfR2kkLFssw@public.gmane.org,
	"SMonderer-FQHY9aGUihGE8VeLPBfq+Q@public.gmane.org"
	<SMonderer-FQHY9aGUihGE8VeLPBfq+Q@public.gmane.org>,
	"xen-devel-GuqFBffKawuEi8DpZVb4nw@public.gmane.org"
	<xen-devel-GuqFBffKawuEi8DpZVb4nw@public.gmane.org>
Subject: Re: could not l2fwd in DOM0
Date: Thu, 29 May 2014 11:58:51 +0200	[thread overview]
Message-ID: <1815026.ZOX21DlnhJ@xps13> (raw)
In-Reply-To: <1ED644BD7E0A5F4091CF203DAFB8E4CC01C77421-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>

Jijiang, I'm not sure to understand.
Could you send a proper patch for this issue?

Thanks
-- 
Thomas


2014-05-17 07:48, Liu, Jijiang:
> In Linux kernel versions < 3.14 , the vstart is kernel virtual address, the
> API prototype below. int xen_create_contiguous_region(unsigned long vstart,
> unsigned int order, unsigned int address_bits)
> 
> In Linux kernel 3.14, the pstart is kernel physical address, the API
> prototype below. int xen_create_contiguous_region(phys_addr_t pstart,
> unsigned int order, unsigned int address_bits,
> 				 dma_addr_t *dma_handle)
> 
> ,so the mm_data->block_info[i].vir_addr cannot pass to
> xen_create_contiguous_region() directly for Linux kernel 3.14, the pstart
> should be mm_data->block_info[i].pfn * PAGE_SIZE in the Dom0 Driver.
> 
> #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_mm_data 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_mm_data * contiguous physical addresses, its maximum size is 2M. */
>                 if (xen_create_contiguous_region(mm_data->block_info[i].pfn
> * PAGE_SIZE, -                                   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);
> 
> Thanks
> Frank Liu
> 
> -----Original Message-----
> From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Samuel Monderer
> Sent: Wednesday, May 07, 2014 8:44 PM
> To: Liu, Jijiang
> Cc: dev-VfR2kkLFssw@public.gmane.org
> Subject: Re: [dpdk-dev] could not l2fwd in DOM0
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Liu, Jijiang
> > Sent: Wednesday, May 07, 2014 7:36 AM
> > To: dev-VfR2kkLFssw@public.gmane.org
> > Subject: Re: [dpdk-dev] could not l2fwd in DOM0
> > 
> > Hi,
> > 
> > I have checked source codes of xen_create_contiguous_region function
> > in kernel 3.14, and found the dma_handle cannot be NULL.
> > 
> > int xen_create_contiguous_region(phys_addr_t pstart, unsigned int order,
> > 
> >                                  unsigned int address_bits,
> >                                  dma_addr_t *dma_handle) {
> >         
> >         unsigned long *in_frames = discontig_frames, out_frame;
> >         unsigned long  flags;
> >         int            success;
> >         unsigned long vstart = (unsigned long)phys_to_virt(pstart);
> >     
> >     ...
> >     
> >         *dma_handle = virt_to_machine(vstart).maddr;
> >         return success ? 0 : -ENOMEM;
> > 
> > }
> > 
> > Thanks
> > Frank Liu
> 
> Thanks Frank,
> 
> I've changed the code as following but now the kernel module crashes.
> 
> diff --git a/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c
> b/lib/librte_eal/linuxapp/xen index 87fa3e6..8addc21 100644
> --- 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_mm_data 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_mm_data * 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);
> 
> Samuel
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Samuel Monderer
> > Sent: Wednesday, April 30, 2014 1:54 AM
> > To: dev-VfR2kkLFssw@public.gmane.org<mailto:dev-VfR2kkLFssw@public.gmane.org>
> > Cc: Shimon Zadok
> > Subject: [dpdk-dev] could not l2fwd in DOM0
> > 
> > Hi,
> > 
> > First I've encountered a compiling problem when compiling for DOM0 due
> > to prototype change of the function xen_create_contiguous_region I
> > made the following changes:
> > 
> > diff --git a/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c
> > b/lib/librte_eal/linuxapp/xen index 87fa3e6..8addc21 100644
> > --- 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 <linux/types.h>
> > 
> >  #include <xen/xen.h>
> >  #include <xen/page.h>
> > 
> > @@ -309,6 +310,7 @@ dom0_prepare_memsegs(struct memory_info* meminfo,
> > struct dom0_mm_data
> > 
> >         uint64_t pfn, vstart, vaddr;
> >         uint32_t i, num_block, size;
> >         int idx;
> > 
> > +       dma_addr_t *dma_handle = NULL;
> > 
> >         /* Allocate 2M memory once */
> >         num_block = meminfo->size / 2; @@ -344,7 +346,7 @@
> > 
> > dom0_prepare_memsegs(struct memory_info* meminfo, struct dom0_mm_data
> > 
> >                  * 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);
> > 
> > After that I tried to run l2fwd example and got a segmentation fault
> > 
> > root@Smart:~/samuelm/dpdk/dpdk# modprobe uio
> > root@Smart:~/samuelm/dpdk/dpdk# insmod ./x86_64-default-linuxapp-
> > gcc/kmod/igb_uio.ko root@Smart:~/samuelm/dpdk/dpdk# insmod
> > ./x86_64-default-linuxapp- gcc/kmod/rte_dom0_mm.ko
> > root@Smart:~/samuelm/dpdk/dpdk# cd examples/l2fwd/build/
> > root@Smart:~/samuelm/dpdk/dpdk/examples/l2fwd/build# echo 2048 >
> > /sys/kernel/mm/dom0-mm/memsize-mB/memsize
> > root@Smart:~/samuelm/dpdk/dpdk/examples/l2fwd/build# ./l2fwd -c 3 -n 4
> > --xen-dom0 -- -q 1 -p 3
> > EAL: Detected lcore 0 as core 0 on socket 0
> > EAL: Detected lcore 1 as core 0 on socket 0
> > EAL: Setting up memory...
> > Segmentation fault
> > root@Smart:~/samuelm/dpdk/dpdk/examples/l2fwd/build#
> > 
> > Has anyone already encountered this problem?
> > 
> > Samuelm

  parent reply	other threads:[~2014-05-29  9:58 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-17  7:48 could not l2fwd in DOM0 Liu, Jijiang
2014-05-29  9:58 ` [dpdk-dev] " Thomas Monjalon
     [not found] ` <1ED644BD7E0A5F4091CF203DAFB8E4CC01C77421-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-05-29  9:58   ` Thomas Monjalon [this message]
2014-05-29 10:12     ` Liu, Jijiang
2014-05-29 10:12     ` Liu, Jijiang
2014-06-09 16:02       ` [dpdk-dev] " Thomas Monjalon
     [not found]       ` <1ED644BD7E0A5F4091CF203DAFB8E4CC01C7AB55-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-06-09 16:02         ` Thomas Monjalon
  -- strict thread matches above, loose matches on Subject: below --
2014-04-29 17:53 Samuel Monderer
     [not found] ` <CAD16F236028A64DBBC0158B1636EA4510E8816E@SHSMSX104.ccr.corp.intel.com>
     [not found]   ` <CAD16F236028A64DBBC0158B1636EA4510E8816E-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-05-07  4:35     ` Liu, Jijiang
     [not found]       ` <9f34498d15cd400eb2db76212778c038@MUC-SRV-MBX2.advaoptical.com>
2014-05-07 12:38         ` Samuel Monderer
     [not found]         ` <9f34498d15cd400eb2db76212778c038-LiFg+WTrWmBD2sXLaXP0VurYEM62JlN9VpNB7YpNyf8@public.gmane.org>
2014-05-07 12:44           ` Samuel Monderer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1815026.ZOX21DlnhJ@xps13 \
    --to=thomas.monjalon-pdr9zngts4eavxtiumwx3w@public.gmane.org \
    --cc=SMonderer-FQHY9aGUihGE8VeLPBfq+Q@public.gmane.org \
    --cc=dev-VfR2kkLFssw@public.gmane.org \
    --cc=jijiang.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=xen-devel-GuqFBffKawuEi8DpZVb4nw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.