On 17/06/2024 11:02, David Marchand wrote:
> Hello Paul,
>
> On Fri, Jun 14, 2024 at 12:28 PM David Marchand
> <david.march...@redhat.com> wrote:
>> Even if this library only contains a header, with no tie to other
>> public DPDK API, this library should be optional.
>> If no objection, please work on this change for -rc2,
>
> We have a build error on armv7 (tested in OBS).
> https://build.opensuse.org/public/build/home:bluca:dpdk/openSUSE_Factory_ARM/armv7l/dpdk/_log
>
> [ 395s] [1730/2037] cc -Iapp/dpdk-test.p -Iapp -I../app -Ilib/cmdline
> -I../lib/cmdline -I. -I.. -Iconfig -I../config -Ilib/eal/include
> -I../lib/eal/include -Ilib/eal/linux/include
> -I../lib/eal/linux/include -Ilib/eal/arm/include
> -I../lib/eal/arm/include -Ilib/eal/common -I../lib/eal/common
> -Ilib/eal -I../lib/eal -Ilib/kvargs -I../lib/kvargs -Ilib/log
> -I../lib/log -Ilib/metrics -I../lib/metrics -Ilib/telemetry
> -I../lib/telemetry -Ilib/net -I../lib/net -Ilib/mbuf -I../lib/mbuf
> -Ilib/mempool -I../lib/mempool -Ilib/ring -I../lib/ring
> -Idrivers/net/ring -I../drivers/net/ring -Ilib/ethdev -I../lib/ethdev
> -Ilib/meter -I../lib/meter -Idrivers/bus/pci -I../drivers/bus/pci
> -I../drivers/bus/pci/linux -Ilib/pci -I../lib/pci -Idrivers/bus/vdev
> -I../drivers/bus/vdev -Ilib/acl -I../lib/acl -Ilib/argparse
> -I../lib/argparse -Ilib/hash -I../lib/hash -Ilib/rcu -I../lib/rcu
> -Ilib/bitratestats -I../lib/bitratestats -Ilib/bpf -I../lib/bpf
> -Ilib/compressdev -I../lib/compressdev -Ilib/cryptodev
> -I../lib/cryptodev -Ilib/security -I../lib/security -Ilib/dispatcher
> -I../lib/dispatcher -Ilib/eventdev -I../lib/eventdev -Ilib/timer
> -I../lib/timer -Ilib/dmadev -I../lib/dmadev -Ilib/distributor
> -I../lib/distributor -Ilib/efd -I../lib/efd -Ilib/fib -I../lib/fib
> -Ilib/rib -I../lib/rib -Ilib/table -I../lib/table -Ilib/port
> -I../lib/port -Ilib/sched -I../lib/sched -Ilib/ip_frag
> -I../lib/ip_frag -Ilib/lpm -I../lib/lpm -Ilib/graph -I../lib/graph
> -Ilib/pcapng -I../lib/pcapng -Ilib/ipsec -I../lib/ipsec
> -Ilib/latencystats -I../lib/latencystats -Idrivers/net/bonding
> -I../drivers/net/bonding -Ilib/member -I../lib/member -Ilib/pdcp
> -I../lib/pdcp -Ilib/reorder -I../lib/reorder -Ilib/pdump
> -I../lib/pdump -Ilib/power -I../lib/power -Ilib/ptr_compress
> -I../lib/ptr_compress -Ilib/rawdev -I../lib/rawdev -Ilib/stack
> -I../lib/stack -Ilib/pipeline -I../lib/pipeline
> -Idrivers/crypto/scheduler -I../drivers/crypto/scheduler
> -I/usr/include/libnl3 -I/usr/include/dbus-1.0
> -I/usr/lib/dbus-1.0/include -fdiagnostics-color=always
> -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c11 -O3
> -include rte_config.h -Wcast-qual -Wdeprecated -Wformat
> -Wmissing-declarations -Wmissing-prototypes -Wnested-externs
> -Wold-style-definition -Wpointer-arith -Wsign-compare
> -Wstrict-prototypes -Wundef -Wwrite-strings
> -Wno-address-of-packed-member -Wno-packed-not-aligned
> -Wno-missing-field-initializers -Wno-zero-length-bounds
> -Wno-pointer-to-int-cast -D_GNU_SOURCE -fcommon -Werror -march=armv7-a
> -mfpu=neon -DALLOW_EXPERIMENTAL_API -Wno-format-truncation
> -fno-strict-aliasing -DALLOW_INTERNAL_API -MD -MQ
> app/dpdk-test.p/test_test_ptr_compress.c.o -MF
> app/dpdk-test.p/test_test_ptr_compress.c.o.d -o
> app/dpdk-test.p/test_test_ptr_compress.c.o -c
> ../app/test/test_ptr_compress.c
> [ 395s] FAILED: app/dpdk-test.p/test_test_ptr_compress.c.o
> [ 395s] cc -Iapp/dpdk-test.p -Iapp -I../app -Ilib/cmdline
> -I../lib/cmdline -I. -I.. -Iconfig -I../config -Ilib/eal/include
> -I../lib/eal/include -Ilib/eal/linux/include
> -I../lib/eal/linux/include -Ilib/eal/arm/include
> -I../lib/eal/arm/include -Ilib/eal/common -I../lib/eal/common
> -Ilib/eal -I../lib/eal -Ilib/kvargs -I../lib/kvargs -Ilib/log
> -I../lib/log -Ilib/metrics -I../lib/metrics -Ilib/telemetry
> -I../lib/telemetry -Ilib/net -I../lib/net -Ilib/mbuf -I../lib/mbuf
> -Ilib/mempool -I../lib/mempool -Ilib/ring -I../lib/ring
> -Idrivers/net/ring -I../drivers/net/ring -Ilib/ethdev -I../lib/ethdev
> -Ilib/meter -I../lib/meter -Idrivers/bus/pci -I../drivers/bus/pci
> -I../drivers/bus/pci/linux -Ilib/pci -I../lib/pci -Idrivers/bus/vdev
> -I../drivers/bus/vdev -Ilib/acl -I../lib/acl -Ilib/argparse
> -I../lib/argparse -Ilib/hash -I../lib/hash -Ilib/rcu -I../lib/rcu
> -Ilib/bitratestats -I../lib/bitratestats -Ilib/bpf -I../lib/bpf
> -Ilib/compressdev -I../lib/compressdev -Ilib/cryptodev
> -I../lib/cryptodev -Ilib/security -I../lib/security -Ilib/dispatcher
> -I../lib/dispatcher -Ilib/eventdev -I../lib/eventdev -Ilib/timer
> -I../lib/timer -Ilib/dmadev -I../lib/dmadev -Ilib/distributor
> -I../lib/distributor -Ilib/efd -I../lib/efd -Ilib/fib -I../lib/fib
> -Ilib/rib -I../lib/rib -Ilib/table -I../lib/table -Ilib/port
> -I../lib/port -Ilib/sched -I../lib/sched -Ilib/ip_frag
> -I../lib/ip_frag -Ilib/lpm -I../lib/lpm -Ilib/graph -I../lib/graph
> -Ilib/pcapng -I../lib/pcapng -Ilib/ipsec -I../lib/ipsec
> -Ilib/latencystats -I../lib/latencystats -Idrivers/net/bonding
> -I../drivers/net/bonding -Ilib/member -I../lib/member -Ilib/pdcp
> -I../lib/pdcp -Ilib/reorder -I../lib/reorder -Ilib/pdump
> -I../lib/pdump -Ilib/power -I../lib/power -Ilib/ptr_compress
> -I../lib/ptr_compress -Ilib/rawdev -I../lib/rawdev -Ilib/stack
> -I../lib/stack -Ilib/pipeline -I../lib/pipeline
> -Idrivers/crypto/scheduler -I../drivers/crypto/scheduler
> -I/usr/include/libnl3 -I/usr/include/dbus-1.0
> -I/usr/lib/dbus-1.0/include -fdiagnostics-color=always
> -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c11 -O3
> -include rte_config.h -Wcast-qual -Wdeprecated -Wformat
> -Wmissing-declarations -Wmissing-prototypes -Wnested-externs
> -Wold-style-definition -Wpointer-arith -Wsign-compare
> -Wstrict-prototypes -Wundef -Wwrite-strings
> -Wno-address-of-packed-member -Wno-packed-not-aligned
> -Wno-missing-field-initializers -Wno-zero-length-bounds
> -Wno-pointer-to-int-cast -D_GNU_SOURCE -fcommon -Werror -march=armv7-a
> -mfpu=neon -DALLOW_EXPERIMENTAL_API -Wno-format-truncation
> -fno-strict-aliasing -DALLOW_INTERNAL_API -MD -MQ
> app/dpdk-test.p/test_test_ptr_compress.c.o -MF
> app/dpdk-test.p/test_test_ptr_compress.c.o.d -o
> app/dpdk-test.p/test_test_ptr_compress.c.o -c
> ../app/test/test_ptr_compress.c
> [ 395s] In file included from ../app/test/test.h:14,
> [ 395s] from ../app/test/test_ptr_compress.c:5:
> [ 395s] ../lib/ptr_compress/rte_ptr_compress.h: In function
> ‘rte_ptr_decompress_32_shift’:
> [ 395s] ../lib/eal/include/rte_common.h:404:30: error: cast to
> pointer from integer of different size [-Werror=int-to-pointer-cast]
> [ 395s] 404 | #define RTE_PTR_ADD(ptr, x) ((void*)((uintptr_t)(ptr) + (x)))
> [ 395s] | ^
> [ 395s] ../lib/ptr_compress/rte_ptr_compress.h:219:33: note: in
> expansion of macro ‘RTE_PTR_ADD’
> [ 395s] 219 | dest_table[i] = RTE_PTR_ADD(ptr_base,
> ptr_diff);
> [ 395s] | ^~~~~~~~~~~
> [ 395s] cc1: all warnings being treated as errors
>
> Please have a look.
> Thanks.
>
This will solve it:
diff --git a/lib/ptr_compress/rte_ptr_compress.h
b/lib/ptr_compress/rte_ptr_compress.h
index b9ab17b2db..a779f21fda 100644
--- a/lib/ptr_compress/rte_ptr_compress.h
+++ b/lib/ptr_compress/rte_ptr_compress.h
@@ -141,7 +141,7 @@ rte_ptr_compress_32_shift(void *ptr_base, void *
const *src_table,
i += svcntd();
} while (i < n);
#elif defined __ARM_NEON && !defined RTE_ARCH_ARMv8_AARCH32
- uint64_t ptr_diff;
+ uintptr_t ptr_diff;
uint64x2_t v_ptr_table;
/* right shift is done by left shifting by negative int */
int64x2_t v_shift = vdupq_n_s64(-bit_shift);
@@ -202,7 +202,7 @@ rte_ptr_decompress_32_shift(void *ptr_base, uint32_t
const *src_table,
i += svcntd();
} while (i < n);
#elif defined __ARM_NEON && !defined RTE_ARCH_ARMv8_AARCH32
- uint64_t ptr_diff;
+ uintptr_t ptr_diff;
uint64x2_t v_ptr_table;
int64x2_t v_shift = vdupq_n_s64(bit_shift);
uint64x2_t v_ptr_base = vdupq_n_u64((uint64_t)ptr_base);
@@ -215,7 +215,7 @@ rte_ptr_decompress_32_shift(void *ptr_base, uint32_t
const *src_table,
}
/* process leftover single item in case of odd number of n */
if (unlikely(n & 0x1)) {
- ptr_diff = ((uint64_t) src_table[i]) << bit_shift;
+ ptr_diff = ((uintptr_t) src_table[i]) << bit_shift;
dest_table[i] = RTE_PTR_ADD(ptr_base, ptr_diff);
}
#else
Do you want me to make a separate patch?