* [dpdk-dev] [PATCH 1/2] eal: fix use of RTE_PTR_ALIGN_CEIL macro on 32bits system
@ 2014-02-28 8:21 David Marchand
2014-02-28 8:21 ` [dpdk-dev] [PATCH 2/2] mem: fix build " David Marchand
2014-03-20 14:40 ` [dpdk-dev] [PATCH 1/2] eal: fix use of RTE_PTR_ALIGN_CEIL macro " Thomas Monjalon
0 siblings, 2 replies; 4+ messages in thread
From: David Marchand @ 2014-02-28 8:21 UTC (permalink / raw)
To: liljegren.mats2; +Cc: dev
Build issue reported by Mats Liljegren :
CC eal.o
In file included from
/home/lwrt/build/dpdk/lib/librte_eal/linuxapp/eal/eal.c:55:0:
/home/lwrt/build/dpdk/lib/librte_eal/linuxapp/eal/eal.c: In function
‘eal_parse_base_virtaddr’:
/home/lwrt/build/dpdk/i686-default-linuxapp-gcc/include/rte_common.h:133:22:
error: cast from pointer to integer of different size
[-Werror=pointer-to-int-cast]
RTE_PTR_ALIGN_FLOOR((typeof(ptr))RTE_PTR_ADD(ptr, (align) - 1), align)
^
/home/lwrt/build/dpdk/i686-default-linuxapp-gcc/include/rte_common.h:115:10:
note: in definition of macro ‘RTE_PTR_ALIGN_FLOOR’
(typeof(ptr))rte_align_floor_int((uintptr_t)ptr, align)
^
/home/lwrt/build/dpdk/lib/librte_eal/linuxapp/eal/eal.c:566:9: note:
in expansion of macro ‘RTE_PTR_ALIGN_CEIL’
addr = RTE_PTR_ALIGN_CEIL(addr, RTE_PGSIZE_2M);
^
/home/lwrt/build/dpdk/i686-default-linuxapp-gcc/include/rte_common.h:133:22:
error: cast from pointer to integer of different size
[-Werror=pointer-to-int-cast]
RTE_PTR_ALIGN_FLOOR((typeof(ptr))RTE_PTR_ADD(ptr, (align) - 1), align)
^
/home/lwrt/build/dpdk/i686-default-linuxapp-gcc/include/rte_common.h:115:46:
note: in definition of macro ‘RTE_PTR_ALIGN_FLOOR’
(typeof(ptr))rte_align_floor_int((uintptr_t)ptr, align)
^
/home/lwrt/build/dpdk/lib/librte_eal/linuxapp/eal/eal.c:566:9: note:
in expansion of macro ‘RTE_PTR_ALIGN_CEIL’
addr = RTE_PTR_ALIGN_CEIL(addr, RTE_PGSIZE_2M);
^
cc1: all warnings being treated as errors
RTE_PTR_ALIGN_CEIL return type is the same as what we give it as input.
So instead of casting the returned value, cast 'addr' which should be the same
as base_virtaddr.
Reported-by: Mats Liljegren <mats.liljegren@enea.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
---
lib/librte_eal/linuxapp/eal/eal.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
index db0e15c..72b4dd7 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -563,9 +563,9 @@ eal_parse_base_virtaddr(const char *arg)
#endif
/* align the addr on 2M boundary */
- addr = RTE_PTR_ALIGN_CEIL(addr, RTE_PGSIZE_2M);
+ internal_config.base_virtaddr = RTE_PTR_ALIGN_CEIL((uintptr_t)addr,
+ RTE_PGSIZE_2M);
- internal_config.base_virtaddr = (uintptr_t) addr;
return 0;
}
--
1.7.10.4
^ permalink raw reply [flat|nested] 4+ messages in thread
* [dpdk-dev] [PATCH 2/2] mem: fix build on 32bits system
2014-02-28 8:21 [dpdk-dev] [PATCH 1/2] eal: fix use of RTE_PTR_ALIGN_CEIL macro on 32bits system David Marchand
@ 2014-02-28 8:21 ` David Marchand
2014-03-20 14:43 ` Thomas Monjalon
2014-03-20 14:40 ` [dpdk-dev] [PATCH 1/2] eal: fix use of RTE_PTR_ALIGN_CEIL macro " Thomas Monjalon
1 sibling, 1 reply; 4+ messages in thread
From: David Marchand @ 2014-02-28 8:21 UTC (permalink / raw)
To: liljegren.mats2; +Cc: dev
Rebase commit 57c24af85d9eaa81549a212169605b4e2468a29f introduced a build
regression for 32bits system.
CC eal_memory.o
/home/marchand/dpdk.org/lib/librte_eal/linuxapp/eal/eal_memory.c: In function
‘rte_mem_virt2phy’:
/home/marchand/dpdk.org/lib/librte_eal/linuxapp/eal/eal_memory.c:140:12: error: cast
from pointer to integer of different size [-Werror=pointer-to-int-cast]
virtual = (uint64_t) virtaddr;
^
cc1: all warnings being treated as errors
Rework this patch so that it is equivalent to what we had in 1.5.2.
Signed-off-by: David Marchand <david.marchand@6wind.com>
---
lib/librte_eal/linuxapp/eal/eal_memory.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c
index 296f172..242f1b3 100644
--- a/lib/librte_eal/linuxapp/eal/eal_memory.c
+++ b/lib/librte_eal/linuxapp/eal/eal_memory.c
@@ -131,13 +131,14 @@ phys_addr_t
rte_mem_virt2phy(const void *virtaddr)
{
int fd;
- uint64_t page, physaddr, virtual;
- unsigned long virt_pfn;
int page_size;
+ unsigned long virtual;
+ uint64_t page;
+ off_t offset;
/* standard page size */
page_size = getpagesize();
- virtual = (uint64_t) virtaddr;
+ virtual = (unsigned long) virtaddr;
fd = open("/proc/self/pagemap", O_RDONLY);
if (fd < 0) {
@@ -146,9 +147,7 @@ rte_mem_virt2phy(const void *virtaddr)
return (uint64_t) -1;
}
- off_t offset;
- virt_pfn = (unsigned long)virtaddr / page_size;
- offset = sizeof(uint64_t) * virt_pfn;
+ offset = sizeof(uint64_t) * virtual / page_size;
if (lseek(fd, offset, SEEK_SET) == (off_t) -1) {
RTE_LOG(ERR, EAL, "%s(): seek error in /proc/self/pagemap: %s\n",
__func__, strerror(errno));
@@ -166,9 +165,8 @@ rte_mem_virt2phy(const void *virtaddr)
* the pfn (page frame number) are bits 0-54 (see
* pagemap.txt in linux Documentation)
*/
- physaddr = ((page & 0x7fffffffffffffULL) * page_size) + (virtual % page_size);
close(fd);
- return physaddr;
+ return ((page & 0x7fffffffffffffULL) * page_size) + (virtual % page_size);
}
/*
--
1.7.10.4
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH 1/2] eal: fix use of RTE_PTR_ALIGN_CEIL macro on 32bits system
2014-02-28 8:21 [dpdk-dev] [PATCH 1/2] eal: fix use of RTE_PTR_ALIGN_CEIL macro on 32bits system David Marchand
2014-02-28 8:21 ` [dpdk-dev] [PATCH 2/2] mem: fix build " David Marchand
@ 2014-03-20 14:40 ` Thomas Monjalon
1 sibling, 0 replies; 4+ messages in thread
From: Thomas Monjalon @ 2014-03-20 14:40 UTC (permalink / raw)
To: dev
28/02/2014 09:21, David Marchand :
> RTE_PTR_ALIGN_CEIL return type is the same as what we give it as input.
> So instead of casting the returned value, cast 'addr' which should be the
> same as base_virtaddr.
>
> Reported-by: Mats Liljegren <mats.liljegren@enea.com>
> Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked and applied with title
"mem: fix build of virtual address hinting for 32-bit"
Thank you
--
Thomas
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH 2/2] mem: fix build on 32bits system
2014-02-28 8:21 ` [dpdk-dev] [PATCH 2/2] mem: fix build " David Marchand
@ 2014-03-20 14:43 ` Thomas Monjalon
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Monjalon @ 2014-03-20 14:43 UTC (permalink / raw)
To: David Marchand, liljegren.mats2; +Cc: dev
28/02/2014 09:21, David Marchand :
> Rebase commit 57c24af85d9eaa81549a212169605b4e2468a29f introduced a build
> regression for 32bits system.
The commit log of the rebased commit was also wrong for branch 1.6.0.
So I've reverted the rebased commit and did a new one.
It's better now.
Thank you for reporting
--
Thomas
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-03-20 14:42 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-28 8:21 [dpdk-dev] [PATCH 1/2] eal: fix use of RTE_PTR_ALIGN_CEIL macro on 32bits system David Marchand
2014-02-28 8:21 ` [dpdk-dev] [PATCH 2/2] mem: fix build " David Marchand
2014-03-20 14:43 ` Thomas Monjalon
2014-03-20 14:40 ` [dpdk-dev] [PATCH 1/2] eal: fix use of RTE_PTR_ALIGN_CEIL macro " Thomas Monjalon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).