From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Ahern Subject: Re: [PATCH] perf tool: fix endianness handling of u32 data in samples Date: Fri, 02 Sep 2011 14:06:08 -0600 Message-ID: <4E613730.4080508@gmail.com> References: <1314992511-1235-1-git-send-email-dsahern@gmail.com> <20110902200255.GG17970@ghostprotocols.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Received: from mail-iy0-f174.google.com ([209.85.210.174]:63420 "EHLO mail-iy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755153Ab1IBUGO (ORCPT ); Fri, 2 Sep 2011 16:06:14 -0400 In-Reply-To: <20110902200255.GG17970@ghostprotocols.net> Sender: linux-perf-users-owner@vger.kernel.org List-ID: To: Arnaldo Carvalho de Melo Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, mingo@elte.hu, peterz@infradead.org, fweisbec@gmail.com, paulus@samba.org, tglx@linutronix.de, anton@samba.org On 09/02/2011 02:02 PM, Arnaldo Carvalho de Melo wrote: > Em Fri, Sep 02, 2011 at 01:41:51PM -0600, David Ahern escreveu: >> @@ -423,18 +449,25 @@ int perf_event__parse_sample(const union perf_event *event, u64 type, >> } >> >> if (type & PERF_SAMPLE_RAW) { >> - u32 *p = (u32 *)array; >> + u.val64 = *array; >> + if (swapped) { >> + /* undo swap of u64, then swap on individual u32s */ >> + u.val64 = bswap_64(u.val64); >> + u.val32[0] = bswap_32(u.val32[0]); >> + u.val32[1] = bswap_32(u.val32[1]); >> + >> + WARN_ONCE(swapped, "Endianness of raw data not corrected!\n"); >> + } > > That works too, but then we'll be always testing swapped two times :-) > > - Arnaldo I did not see a WARN_ONCE with no 'condition' variable, so I went with the redundant test. I guess swapped really could be changed to '1' -- like an example I saw in the acpi code. David