OK, I added that it affects i386 and applied this to master.  Thank you!

On Sat, May 06, 2017 at 08:27:47PM +0000, Darrell Ball wrote:
> I am not able to reproduce this using 64bit arch., although Sparse does work 
> for me.
>    (I guess I should install a 32 bit VM at some point, but I am low on disk 
> space - too many 64bit VMs)
> I tried tip of master and about 2 months old master
> 
> Based on the above data point and the error output below, it seems like this 
> noise only afflicts 32 bit arch
> Maybe specify in the commit message that this helps on 32 bit arch, unless 
> others can see this or 
> something similar on 64bit.
> 
> Acked-by: Darrell Ball <dlu...@gmail.com>
> 
> 
> 
> On 5/5/17, 9:39 PM, "ovs-dev-boun...@openvswitch.org on behalf of Ben Pfaff" 
> <ovs-dev-boun...@openvswitch.org on behalf of b...@ovn.org> wrote:
> 
>     Without this replacement header, building netdev-dpdk.c provokes several
>     "sparse" warnings:
>     
>     /usr/include/dpdk/rte_memcpy.h:515:33: warning: incorrect type in 
> argument 1 (different type sizes)
>     /usr/include/dpdk/rte_memcpy.h:515:33:    expected long long const 
> [usertype] *__P
>     /usr/include/dpdk/rte_memcpy.h:515:33:    got int const [usertype] 
> *<noident>
>     /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:698:20: error: 
> undefined identifier '__builtin_ia32_loaddqu'
>     /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:698:11: error: cast 
> from unknown type
>     /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:716:3: error: 
> undefined identifier '__builtin_ia32_storedqu'
>     /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:698:43: error: not a 
> function <noident>
>     /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:716:27: error: not a 
> function <noident>
>     ...
>     
>     Signed-off-by: Ben Pfaff <b...@ovn.org>
>     ---
>      include/sparse/automake.mk  |  1 +
>      include/sparse/rte_memcpy.h | 39 +++++++++++++++++++++++++++++++++++++++
>      2 files changed, 40 insertions(+)
>      create mode 100644 include/sparse/rte_memcpy.h
>     
>     diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk
>     index 0456ee67d481..f3282c260414 100644
>     --- a/include/sparse/automake.mk
>     +++ b/include/sparse/automake.mk
>     @@ -10,6 +10,7 @@ noinst_HEADERS += \
>              include/sparse/pthread.h \
>              include/sparse/rte_atomic.h \
>              include/sparse/rte_lcore.h \
>     +        include/sparse/rte_memcpy.h \
>              include/sparse/rte_vect.h \
>              include/sparse/sys/socket.h \
>              include/sparse/sys/wait.h
>     diff --git a/include/sparse/rte_memcpy.h b/include/sparse/rte_memcpy.h
>     new file mode 100644
>     index 000000000000..5cd3f013ea8b
>     --- /dev/null
>     +++ b/include/sparse/rte_memcpy.h
>     @@ -0,0 +1,39 @@
>     +/* Copyright (c) 2017 Nicira, Inc.
>     + *
>     + * Licensed under the Apache License, Version 2.0 (the "License");
>     + * you may not use this file except in compliance with the License.
>     + * You may obtain a copy of the License at:
>     + *
>     + *     
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.apache.org_licenses_LICENSE-2D2.0&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=Qv-3YRHpSQuMTnL-vRyqF0jCaFIpiuYqPGtkgPYEwxA&s=AzghyY07JReCfJwWQShu12qMFGiOML9IpKTIdvsOTu0&e=
>  
>     + *
>     + * Unless required by applicable law or agreed to in writing, software
>     + * distributed under the License is distributed on an "AS IS" BASIS,
>     + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
> implied.
>     + * See the License for the specific language governing permissions and
>     + * limitations under the License.
>     + */
>     +
>     +#ifndef RTE_MEMCPY_H
>     +#define RTE_MEMCPY_H 1
>     +
>     +#ifndef __CHECKER__
>     +#error "Use this header only with sparse.  It is not a correct 
> implementation."
>     +#endif
>     +
>     +/* Include the same headers as the real rte_memcpy(). */
>     +#include <stdio.h>
>     +#include <stdint.h>
>     +#include <string.h>
>     +#include <rte_vect.h>
>     +
>     +/* Declare the same functions as the real rte_memcpy.h, without defining 
> them.
>     + * This gives sparse the information it needs without provoking sparse's
>     + * complaints about the implementations. */
>     +void rte_mov16(uint8_t *, const uint8_t *);
>     +void rte_mov32(uint8_t *, const uint8_t *);
>     +void rte_mov64(uint8_t *, const uint8_t *);
>     +void rte_mov128(uint8_t *, const uint8_t *);
>     +void rte_mov256(uint8_t *, const uint8_t *);
>     +void *rte_memcpy(void *, const void *, size_t);
>     +
>     +#endif  /* RTE_MEMCPY_H_WRAPPER */
>     -- 
>     2.10.2
>     
>     _______________________________________________
>     dev mailing list
>     d...@openvswitch.org
>     
> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=Qv-3YRHpSQuMTnL-vRyqF0jCaFIpiuYqPGtkgPYEwxA&s=Nij03EBjSF5Amp8_Hg_3XzcIOE0lgMzzhGfJXVAzHhU&e=
>  
>     
> 
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to