From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-f65.google.com (mail-ed1-f65.google.com [209.85.208.65]) by dpdk.org (Postfix) with ESMTP id 58E535B32 for ; Mon, 5 Nov 2018 11:14:02 +0100 (CET) Received: by mail-ed1-f65.google.com with SMTP id f8-v6so6933018edt.13 for ; Mon, 05 Nov 2018 02:14:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=wRy4xp5zA/HZ+X88FC+lTWT3IxGoRtke6dp3LCKSv10=; b=H+oAPqvPMAH9X1oFj392KB3hWoWihQVlMvDje+XNPHbwt/5sbjtCAaB3TJRV/gXiRr kiOtDjnZR9eDxUBZv88QI9pmn0aSt1prRRdy2MNEmVVKseXstOPZEKrepORkk8ByYy4M ppuzVUg9oakx12Tgv5tdS85TI4UEQjWKR5K3WQ+WcE5yFp9DnYzSZRv0/hTIigfYVQyx c59Jl5bIIZl9Xp7ILMBnxWYom734B07tdhLq5vrr1NOTrpvyRrj15re6cK/kz7tveag1 D3n5RCegViQ8SvxEVFMm64A/WK8c1mKLLU2qWquyPzTbG2vXSbumc5Ll3oSgpXzpPBaG iUYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=wRy4xp5zA/HZ+X88FC+lTWT3IxGoRtke6dp3LCKSv10=; b=ZFN3fRGjs8wN8uXaNk3l+t3oJ4sG/98KbOLpBG4t3M4ME05H5fDWVJOoW9rvLxKUBM PgX2kiEYlRLWM1LMtP1f56qJ8k9DVr9DqanYEQNtrJVtW0IdzbdpmHlUj4hZuN51ykPV TBtl41Z69gnTCwdFYA4B5MxPSrzOyy3BcMDBukYeCo/LJ9A8+s++o6FQ7utcUiHW1/Ed MbXNDjBkI9qFljNG6lpKc83TqwQrEKOY0qdgXld6kaGFYIdS2UqS8QYFWhzKcX07duik jf4Mim59xon+A1ZfxU260lp/ahmc0MoupMGPTuOT+3Hh52V/CaTIAwyzzEoetT9SbcBP Zogg== X-Gm-Message-State: AGRZ1gKIGRhrp7cLpW4ggvRgu9lgEBw3Krq7wLvXiP1ae4aeGMgaM0tS 3OvJvAuIvdEvQ8jcpAMDgLImaKEMinBPO+F5B1zMCA== X-Google-Smtp-Source: AJdET5f4baEXiI9AXgo/Fd1MgJkX7PSLazWA/bzqegAxZ5E88OTJu7R7jPS7fQHDib79I3CnOhl+c5+kVxdr/4j7dRo= X-Received: by 2002:a50:ee91:: with SMTP id f17-v6mr17318453edr.136.1541412841823; Mon, 05 Nov 2018 02:14:01 -0800 (PST) MIME-Version: 1.0 References: <20181101195330.19464-1-alejandro.lucero@netronome.com> <20181101195330.19464-6-alejandro.lucero@netronome.com> <8688172CD5C0B74590FAE19D9579F94B535FDD90@SHSMSX103.ccr.corp.intel.com> In-Reply-To: <8688172CD5C0B74590FAE19D9579F94B535FDD90@SHSMSX103.ccr.corp.intel.com> From: Alejandro Lucero Date: Mon, 5 Nov 2018 10:13:50 +0000 Message-ID: To: wenjiex.a.li@intel.com Cc: dev , Ferruh Yigit , xueqin.lin@intel.com, "Burakov, Anatoly" Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v2 5/7] mem: modify error message for DMA mask check X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Nov 2018 10:14:02 -0000 On Mon, Nov 5, 2018 at 10:01 AM Li, WenjieX A wrote: > 1. With GCC32, testpmd could not startup without '--iova-mode pa'. > ./i686-native-linuxapp-gcc/app/testpmd -c f -n 4 -- -i > The output is: > EAL: Detected 16 lcore(s) > EAL: Detected 1 NUMA nodes > EAL: Multi-process socket /var/run/dpdk/rte/mp_socket > EAL: Some devices want iova as va but pa will be used because.. EAL: few > device bound to UIO > EAL: No free hugepages reported in hugepages-1048576kB > EAL: Probing VFIO support... > EAL: VFIO support initialized > EAL: wrong dma mask size 48 (Max: 31) > EAL: alloc_pages_on_heap(): couldn't allocate memory due to IOVA exceeding > limits of current DMA mask > error allocating rte services array > EAL: FATAL: rte_service_init() failed > EAL: rte_service_init() failed > PANIC in main(): > Cannot init EAL > 5: [./i686-native-linuxapp-gcc/app/testpmd(+0x95fda) [0x56606fda]] > 4: [/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf6) [0xf74d1276]] > 3: [./i686-native-linuxapp-gcc/app/testpmd(main+0xf21) [0x565fcee1]] > 2: [./i686-native-linuxapp-gcc/app/testpmd(__rte_panic+0x3d) [0x565edc68]] > 1: [./i686-native-linuxapp-gcc/app/testpmd(rte_dump_stack+0x33) > [0x5675f333]] > Aborted > > 2. With '--iova-mode pa', testpmd could startup. > 3. With GCC64, there is no such issue. > Thanks! > > Does 32 bits support require IOMMU? It would be a surprise. If there is no IOMMU hardware, no dma mask should be there at all. > > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Alejandro Lucero > Sent: Friday, November 2, 2018 3:53 AM > To: dev@dpdk.org > Subject: [dpdk-dev] [PATCH v2 5/7] mem: modify error message for DMA mask > check > > If DMA mask checks shows mapped memory out of the supported range > specified by the DMA mask, nothing can be done but return an error an > report the error. This can imply the app not being executed at all or > precluding dynamic memory allocation once the app is running. > In any case, we can advice the user to force IOVA as PA if currently IOVA > being VA and user being root. > > Signed-off-by: Alejandro Lucero > Tested-by: Li, WenjieX A > --- > lib/librte_eal/common/malloc_heap.c | 41 +++++++++++++++++++++++++---- > 1 file changed, 36 insertions(+), 5 deletions(-) > > diff --git a/lib/librte_eal/common/malloc_heap.c > b/lib/librte_eal/common/malloc_heap.c > index 4997c5ef5..c2c112aa6 100644 > --- a/lib/librte_eal/common/malloc_heap.c > +++ b/lib/librte_eal/common/malloc_heap.c > @@ -321,13 +321,44 @@ alloc_pages_on_heap(struct malloc_heap *heap, > uint64_t pg_sz, size_t elt_size, > goto fail; > } > > - if (mcfg->dma_maskbits) { > - if (rte_mem_check_dma_mask(mcfg->dma_maskbits)) { > + /* > + * Once we have all the memseg lists configured, if there is a dma > mask > + * set, check iova addresses are not out of range. Otherwise the > device > + * setting the dma mask could have problems with the mapped memory. > + * > + * There are two situations when this can happen: > + * 1) memory initialization > + * 2) dynamic memory allocation > + * > + * For 1), an error when checking dma mask implies app can not be > + * executed. For 2) implies the new memory can not be added. > + */ > + if (mcfg->dma_maskbits && > + rte_mem_check_dma_mask(mcfg->dma_maskbits)) { > + /* > + * Currently this can only happen if IOMMU is enabled > + * and the address width supported by the IOMMU hw is > + * not enough for using the memory mapped IOVAs. > + * > + * If IOVA is VA, advice to try with '--iova-mode pa' > + * which could solve some situations when IOVA VA is not > + * really needed. > + */ > + RTE_LOG(ERR, EAL, > + "%s(): couldn't allocate memory due to IOVA > exceeding limits of current DMA mask\n", > + __func__); > + > + /* > + * If IOVA is VA and it is possible to run with IOVA PA, > + * because user is root, give and advice for solving the > + * problem. > + */ > + if ((rte_eal_iova_mode() == RTE_IOVA_VA) && > + rte_eal_using_phys_addrs()) > RTE_LOG(ERR, EAL, > - "%s(): couldn't allocate memory due to DMA > mask\n", > + "%s(): Please try initializing EAL with > --iova-mode=pa > +parameter\n", > __func__); > - goto fail; > - } > + goto fail; > } > > /* add newly minted memsegs to malloc heap */ > -- > 2.17.1 > >