[dpdk-dev] [PATCH v2] Fix two compile issues with i686 platform

Qiu, Michael michael.qiu at intel.com
Thu Dec 4 11:21:26 CET 2014


On 12/4/2014 5:05 PM, Thomas Monjalon wrote:
> 2014-12-04 02:49, Qiu, Michael:
>> On 12/3/2014 11:40 PM, Richardson, Bruce wrote:
>>> On Wed, Dec 03, 2014 at 04:10:23PM +0800, Michael Qiu wrote:
>>>> lib/librte_eal/linuxapp/eal/eal_memory.c:324:4: error: comparison
>>>> is always false due to limited range of data type [-Werror=type-limits]
>>>>     || (hugepage_sz == RTE_PGSIZE_16G)) {
>>>>     ^
>>>> cc1: all warnings being treated as errors
>>>>
>>>> lib/librte_eal/linuxapp/eal/eal.c(461): error #2259: non-pointer
>>>> conversion from "long long" to "void *" may lose significant bits
>>>>    RTE_PTR_ALIGN_CEIL((uintptr_t)addr, RTE_PGSIZE_16M);
>>>>
>>>> This was introuduced by commit b77b5639:
>>>>         mem: add huge page sizes for IBM Power
>>>>
>>>> The root cause is that size_t and uintptr_t are 32-bit in i686
>>>> platform, but RTE_PGSIZE_16M and RTE_PGSIZE_16G are always 64-bit.
>>>>
>>>> Define RTE_PGSIZE_16G only in 64 bit platform to avoid
>>>> this issue.
>>>>
>>>> Signed-off-by: Michael Qiu <michael.qiu at intel.com>
>>> Minor comment below.
>>>
>>> Acked-by: Bruce Richardson <bruce.richardson at intel.com>
>>>
>>>> ---
>>>>  app/test/test_memzone.c                    | 18 ++++++++++++------
>>>>  lib/librte_eal/common/eal_common_memzone.c |  2 ++
>>>>  lib/librte_eal/common/include/rte_memory.h | 14 ++++++++------
>>>>  lib/librte_eal/linuxapp/eal/eal_memory.c   | 12 +++++-------
>>>>  4 files changed, 27 insertions(+), 19 deletions(-)
>>>>
>>> ... snip ...
>>>> --- a/lib/librte_eal/common/include/rte_memory.h
>>>> +++ b/lib/librte_eal/common/include/rte_memory.h
>>>> @@ -53,12 +53,14 @@ extern "C" {
>>>>  #endif
>>>>  
>>>>  enum rte_page_sizes {
>>>> -	RTE_PGSIZE_4K = 1ULL << 12,
>>>> -	RTE_PGSIZE_2M = 1ULL << 21,
>>>> -	RTE_PGSIZE_1G = 1ULL << 30,
>>>> -	RTE_PGSIZE_64K = 1ULL << 16,
>>>> -	RTE_PGSIZE_16M = 1ULL << 24,
>>>> -	RTE_PGSIZE_16G = 1ULL << 34
>>>> +	RTE_PGSIZE_4K	= 1UL << 12,
>>>> +	RTE_PGSIZE_2M	= 1UL << 21,
>>>> +	RTE_PGSIZE_1G	= 1UL << 30,
>>>> +	RTE_PGSIZE_64K	= 1UL << 16,
>>>> +	RTE_PGSIZE_16M	= 1UL << 24,
>>>> +#ifdef RTE_ARCH_64
>>>> +	RTE_PGSIZE_16G	= 1ULL << 34
>>> you don't need the "LL" here as long type is 64-bits on 64-bit systems. Changing
>>> it to 1UL << 34 will keep all entries consistent.
>> Hi Thomas,
>>
>> Should I resend V3 patch to modify this or you can do it when you plan
>> to merge this patch?
> I could do the change by myself. But given that you had some problems to send
> the patch to the mailing list, please send the v3 to everyone.
> Then a review from Chao would be appreciated.

OK, I will send V3 to everyone.

Thanks,
Michael
>
> Thanks



More information about the dev mailing list