On Dec 3, 2014, at 10:32 AM, Jarno Rajahalme <jrajaha...@nicira.com> wrote:
> > On Dec 2, 2014, at 11:14 AM, Ben Pfaff <b...@nicira.com> wrote: > >> On Fri, Nov 28, 2014 at 01:30:08PM +0100, Mijo Safradin wrote: >>> >>> >>>>> It fails on master and on older git versions as well. Even using Debian >>>>> Sid, >>>>> the same errors could be observed. Can you provide hardware details about >>>>> the power/s390 machines the mentioned test has been executed on? >>>> >>>> Basics about the machines are in the Debian machine database: >>>> >>>> The mips machine: https://db.debian.org/machines.cgi?host=corelli >>>> The powerpc machine: https://db.debian.org/machines.cgi?host=poulenc >>>> The s390 machine: https://db.debian.org/machines.cgi?host=zandonai >>>> >>> >>> thanks >>> >>>>> When using the openvswitch-2.3.0.tar.gz release, most of the failed test >>>>> do >>>>> pass, but other tests do fail. >>>> >>>> All the tests you show failing below relate to ssl. This is probably >>>> unrelated to endianness. Please take a look at the testsuite log to >>>> find the details. >>>> >>>>> Here's a subset of test which do fail on master and passed on 2.3.0 >>>> >>>> I'd suggest doing a "git bisect" run to find the point at which tests >>>> started failing due to endian problems. >>>> >>> >>> Ok, I did 'git bisect' for the first failing test case, which is >>> 'flow classifier - lookup segmentation' >>> No. 79 on master >>> No. 78 at bisect bad commit >>> >>> ... >>> [root@s390x ovs-test]# git bisect bad >>> a64759f02d8324caf6c37af0ac4e3e1d26e02a43 is the first bad commit >>> commit a64759f02d8324caf6c37af0ac4e3e1d26e02a43 >>> Author: Jarno Rajahalme <jrajaha...@nicira.com> >>> Date: Fri Jun 13 10:38:05 2014 -0700 >>> >>> lib/classifier: Optimize megaflows for single rule case. >>> >>> When, during a classifier lookup, we narrow down to a single potential >>> rule, it is enough to match on ("unwildcard") one bit that differs >>> between the packet and the rule. >>> >>> This is a special case of the more general algorithm, where it is >>> sufficient to match on enough bits that separates the packet from all >>> higher priority rules than the matched rule. For a miss that would be >>> all the rules. Implementing this is expensive for a more than a few >>> rules. This patch starts by doing this for a single rule when we >>> already have it, also reducing the lookup cost by finishing the lookup >>> earlier than before. >>> >>> Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com> >>> Acked-by: Ben Pfaff <b...@nicira.com> >>> >>> :040000 040000 e912f31d212ce362445ee961447e1bc3c7ff393a >>> d0006051050c1e73a83811909f583d7d38b73229 M lib >>> :040000 040000 2cbd9fba63166d7037843de87d150a4b47a79260 >>> be70c481bc5241662029436eb79b520f6067512f M tests >>> ... >>> >>> It looks like the patch is not part of the 2.3.0 release, which >>> explains why the test doesn't fail using this release. >>> >>> The fact that 'maskp' comes in LE order doesen't hurt here. >> >> Thanks for narrowing it down. >> >> Jarno, can you take a look and figure out a nice way to make this code >> work properly on both little-endian and big-endian systems? > > Sure. Was there any log file of the failed test case? > > Jarno Looking at the commit, I think this is where it’s at: + /* Keep one bit of the difference. */ + *flow_u32_lvalue(&wc->masks, idx) |= rightmost_1bit(diff); I recall we had a discussion of whether to keep the MSB or LSB, but here we are definitely setting a different bit on big-endian and little-endian systems, which would show up as a test case failure. Jarno
_______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss