[dpdk-users] Packets not processed when huge pages are not used

Sergio Gonzalez Monroy sergio.gonzalez.monroy at intel.com
Fri Oct 23 11:24:02 CEST 2015


On 22/10/2015 17:09, shesha Sreenivasamurthy (shesha) wrote:
> If someone else is not woking on it, I can fix that. What is the right way
> to fix it?
>
> Should we have to mmap and perform similar trick (as done for huge pages)
> of finding physical pages that are contiguous and discarding the unneeded
> mappings ?
So this is an old problem; get DMA memory in user-space.
You would have to to use a kernel module that would give you physically
contiguous memory.
The contigmem module that we use for FreeBSD does something like that.

Sergio
> --
> - Thanks
> char * (*shesha) (uint64_t cache, uint8_t F00D)
> { return 0x0000C0DE; }
>
>
> -----Original Message-----
> From: Sergio Gonzalez Monroy <sergio.gonzalez.monroy at intel.com>
> Date: Thursday, October 22, 2015 at 7:37 AM
> To: Cisco Employee <shesha at cisco.com>
> Cc: "users at dpdk.org" <users at dpdk.org>
> Subject: Re: [dpdk-users] Packets not processed when huge pages are not
> used
>
> On 21/10/2015 22:08, shesha Sreenivasamurthy (shesha) wrote:
>> Wanted to add ring addresses information:
>>
>> PMD: ixgbe_dev_rx_queue_setup(): sw_ring=0x7fffa0979440
>> sw_sc_ring=0x7fffa0975300 hw_ring=0x7fffa097d580 dma_addr=0x7fffa097d580
>>
>> --
>> - Thanks
>> char * (*shesha) (uint64_t cache, uint8_t F00D)
>> { return 0x0000C0DE; }
>>
>> From: Cisco Employee <shesha at cisco.com<mailto:shesha at cisco.com>>
>> Date: Wednesday, October 21, 2015 at 1:30 PM
>> To: "users at dpdk.org<mailto:users at dpdk.org>"
>> <users at dpdk.org<mailto:users at dpdk.org>>
>> Subject: Packets not processed when huge pages are not used
>>
>> Hi,
>>    I have a packet processing application running correctly using
>> hugepages with 82599 interface. However, when no-huge is set, I do not
>> see any packets being processed by DPDK. When arp packets are sent to
>> this interface, I see them being received by the device (BPRC counter
>> gets incremented). However, the DD register does not get set by the
>> hardware. Therefore, _recv_raw_pkts_vec() returns thinking that there are
>> no packets (shown below). Therefore, when huge pages are not used, I
>> suspect that some DMA configuration is getting messed up. Any tips on how
>> to go about finding the issue will be helpful.
>>
>> drivers/net/ixgbe/ixgbe_rxtx_vec.c
>> 303     /* Before we start moving massive data around, check to see if
>> 304      * there is actually a packet available */
>> 305     if (!(rxdp->wb.upper.status_error &
>> 306                 rte_cpu_to_le_32(IXGBE_RXDADV_STAT_DD)))
>> 307         return 0;
>>
>> Observation: In
>> lib/librte_eal/linuxapp/eal/eal_memory.c::rte_eal_hugepage_init()
>> physical memory is set to be same as virtual (mcfg->memseg[0].phys_addr =
>> (phys_addr_t)(uintptr_t)addr;). Is that expected ?
> Hi Shesha,
>
> It is a known issue:
> http://dpdk.org/doc/guides/rel_notes/known_issues.html#pmd-does-not-work-wi
> th-no-huge-eal-command-line-parameter
>
> It should work with IOMMU=on and VFIO driver, but I haven't verified
> that myself.
>
> Sergio
>



More information about the users mailing list