> -----Original Message----- > From: Ilya Maximets <i.maxim...@ovn.org> > Sent: Wednesday, July 7, 2021 4:06 PM > To: Van Haaren, Harry <harry.van.haa...@intel.com>; Ilya Maximets > <i.maxim...@ovn.org>; Eli Britstein <el...@nvidia.com>; d...@openvswitch.org > Cc: Ivan Malov <ivan.ma...@oktetlabs.ru>; Majd Dibbiny <m...@nvidia.com> > Subject: Re: [ovs-dev] [PATCH V7 13/13] netdev-dpdk-offload: Add vxlan pattern > matching function. > > On 7/6/21 3:03 PM, Van Haaren, Harry wrote: > >> -----Original Message----- > >> From: Ilya Maximets <i.maxim...@ovn.org> > >> Sent: Friday, July 2, 2021 2:34 PM > >> To: Van Haaren, Harry <harry.van.haa...@intel.com>; Eli Britstein > >> <el...@nvidia.com>; d...@openvswitch.org; Ilya Maximets > <i.maxim...@ovn.org> > >> Cc: Ivan Malov <ivan.ma...@oktetlabs.ru>; Majd Dibbiny > <m...@nvidia.com> > >> Subject: Re: [ovs-dev] [PATCH V7 13/13] netdev-dpdk-offload: Add vxlan > pattern > >> matching function. > >> > >> On 7/1/21 6:36 PM, Van Haaren, Harry wrote: > > > > <snip commit message> > > > >>> Is there a build failure in OVS master branch since this has been merged? > >> > >> I didn't notice any build failures. The main factor here is that you just > >> can't build with DPDK without -Wno-cast-align anyway with neither modern > gcc > >> nor clang. > > > > Actually, yes it is possible to build OVS with DPDK, I've just tested this > > with a > fresh clone: > > git clone https://github.com/openvswitch/ovs (commit 780b2bde8 on master) > > cd ovs > > ./boot.sh > > ./configure --enable-Werror --with-dpdk=static > > make > > > > The above steps *fail to compile* due to the code changes introduce in this > patch. > > This above steps *pass* if the code here (and in another vxlan offload > > commit) > are fixed. > > (See void* casting suggestion below, which was used to fix the compile > > issues > here). > > > > If DPDK has issues in cast-align, then those should be addressed in that > community. > > Saying that it's OK to introduce issues around cast-align in OVS because > > DPDK > has them > > is not a good argument. If I could point out a DPDK segfault, would it be > > OK to > introduce > > segfaulting code in OVS? No. Bugs originating from cast-align warnings are > > no > different. > > I'm not saying that we should introduce issues existed in other projects, > I'm just saying that it's very easy to miss this issue because of flags > that needs to be passed in order to build OVS. I have no compilers that > can build this code without -fno-cast-align, same for our CI. > > > > > > >> So, this should not be an issue. > > > > This is an issue, and the fact that an OVS maintainer is downplaying > > breaking the > build > > when the issue is pointed out is frustrating. > > I don't have a system where this change leads to a build failure, same > for our CI. I understand that certain compilers might handle things > differently and I'm not suggesting to keep things as is. If you didn't > notice, I suggested to fix that in may email below. > > > > > > >> gcc 10.3.1 on fedora generates myriads of cast-align warnings in DPDK > headers: > >> > >> ./configure CC=gcc --enable-Werror --with-dpdk=static > > > > Perhaps on the system being tested there, but this works fine here. If > > there are > issues in > > DPDK, then file a bug there. > > DPDK project is fully aware of this and has no intention to fix. And they > have -fno-cast-align in their CI systems. > > > Do not use potential issues in other projects to try cover up > > having introduced code that breaks the OVS build. > > I didn't suggest that. > > > > > <snip> > > > > > >>> It seems the above casts (ovs_be32 *) are causing issues with increasing > >> alignment? > >>> > >>> From DPDK's struct rte_flow_item_vxlan, the vni is a "uint8_t vni[3];" > >>> > >>> The VNI is not a 32-bit value, so is not required to be aligned on > >>> 32-bits. The > cast > >> here > >>> technically requires the alignment of the casted pointer to be 32-bit/4 > >>> byte, > which > >> is > >>> not guaranteed to be true. I think the compiler rightly flags a cast > >>> alignment > issue? > >> > >> I briefly inspected the resulted binary and I didn't notice any actual > >> changes in alignments, so this, likely, doesn't cause any real problems, > >> at least on x86. But, I agree that we, probably, should fix that to > >> have a more correct code. > > > > I agree that the code on x86-64 is likely to be the same with a (void *) > > cast. > > > > I disagree that we "probably, should" fix this. Its an issue, it must be > > fixed. > > It breaks the build when compiled with -Werror enabled (as shown above). > > When I'm saying "probably, should", I usually mean "we need to". > That is just a more mild way to put that. Sorry for my English, > if that wasn't clear.
OK, no problem. > >>> Casting through a (void *) might solve, or else using some of the BE/LE > conversion > >>> and alignment helpers in byte-order.h and unaligned.h could perhaps work? > >> > >> I think, get_unaligned_be32() is a way to go here. > > > > A (void *) cast will likely have no impact on resulting ASM, but just mutes > > the > warning. > > get_unaligned_be32() may result in 4x byte loads and shifts and ORs, > > instead of > a 4-byte load. > > So why you're suggesting to just silence the warning instead of > fixing the problem here? In the same way you may just ignore > the warning with -fno-cast-align. Please, be consistent. My comments above are technical comments on the ASM output of two methods of fixing the build, I don't recommend merging the (void*) cast. I'm not familiar with the context here, should be BE/LE conversion here or not, what does rte_flow provide, what do we want to print to the string. Somebody who was involved in the code authoring/review is a better candidate to fix. > >> Feel free to submit a patch. > > > > I have no intention of fixing bugs introduced in a patch that was merged > > while > there > > were open outstanding issues to be resolved. Consider this email a > > "Reported- > by". > > I have no issues with Reported-by and nobody should be obligated > to fix the issue that they found, that is perfectly fine. In this case can I ask you Eli (as author of the original patch) to fix the issue? > Best regards, Ilya Maximets. Regards, -Harry <snip> _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev