On 10/21/20 2:17 PM, Stokes, Ian wrote: >> In sparse commit [1], __ATOMIC_* defines were introduced, which cause >> redefinition errors. Wrap OVS defines with #ifndef to fix it. > > Thanks for this Eli as well as the testing, was a bit confused myself as the > community CI was passing yesterday initially with RC1, so good catch. > > One minor comment below. >> >> [1] >> https://git.kernel.org/pub/scm/devel/sparse/sparse.git/commit/?id=cf8f104749 >> f5bca36852989297af8cc19ff24d5f >> >> Tested-at: https://travis-ci.org/github/elibritstein/OVS/builds/737660375 >> Signed-off-by: Eli Britstein <[email protected]> >> --- >> include/sparse/rte_mbuf.h | 8 ++++++++ >> include/sparse/rte_trace_point.h | 4 ++++ >> 2 files changed, 12 insertions(+) >> >> diff --git a/include/sparse/rte_mbuf.h b/include/sparse/rte_mbuf.h >> index ee461f91e..172c9954a 100644 >> --- a/include/sparse/rte_mbuf.h >> +++ b/include/sparse/rte_mbuf.h >> @@ -18,10 +18,18 @@ >> #endif >> >> /* sparse doesn't know about gcc atomic builtins. */ >> +#ifndef __ATOMIC_ACQ_REL >> #define __ATOMIC_ACQ_REL 0 >> +#endif >> +#ifndef __ATOMIC_RELAXED >> #define __ATOMIC_RELAXED 1 >> +#endif >> +#ifndef __atomic_add_fetch >> #define __atomic_add_fetch(p, val, memorder) (*(p) = *(p) + (val)) > > So in the sparse patch > https://git.kernel.org/pub/scm/devel/sparse/sparse.git/commit/?id=cf8f104749f5bca36852989297af8cc19ff24d5f > > I see the changes to the ACQ_REL and ATOMIC_RELAXED, but no mention of the > atomic_add_fetch, for my own curiosity must the fetch atomic fetch and gather > operations also be wrapped because of the sparse patch or is this more an > effort future proof and keep the definitions uniform in OVS? Same query WRT > the atomic load operation below.
There is another recent patch: https://git.kernel.org/pub/scm/devel/sparse/sparse.git/commit/?id=7cdf84691f33e4fc6a0198e1a04137993f3a37ad This one introduces support for __atomic_add_fetch and friends. I didn't test it, though. > > Thanks > Ian > >> +#endif >> +#ifndef __atomic_store_n >> #define __atomic_store_n(p, val, memorder) (*(p) = (val)) >> +#endif >> >> /* Get actual <rte_mbuf.h> definitions for us to annotate and build on. */ >> #include_next <rte_mbuf.h> >> diff --git a/include/sparse/rte_trace_point.h >> b/include/sparse/rte_trace_point.h >> index c28f1c941..94bd54b25 100644 >> --- a/include/sparse/rte_trace_point.h >> +++ b/include/sparse/rte_trace_point.h >> @@ -18,8 +18,12 @@ >> #endif >> >> /* sparse doesn't know about gcc atomic builtins. */ >> +#ifndef __ATOMIC_ACQUIRE >> #define __ATOMIC_ACQUIRE 0 >> +#endif >> +#ifndef __atomic_load_n >> #define __atomic_load_n(p, memorder) *(p) >> +#endif >> >> /* Get actual <rte_trace_point.h> definitions for us to annotate and >> * build on. */ >> -- >> 2.28.0.546.g385c171 > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
