Darrell, do you plan to review patch 2?
On Sun, May 07, 2017 at 08:58:35AM -0400, Ben Pfaff wrote: > 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 <[email protected]> > > > > > > > > On 5/5/17, 9:39 PM, "[email protected] on behalf of Ben > > Pfaff" <[email protected] on behalf of [email protected]> 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 <[email protected]> > > --- > > 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 > > [email protected] > > > > 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 [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
