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

Reply via email to