All of lore.kernel.org
 help / color / mirror / Atom feed
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM64: disable DCACHE_WORD_ACCESS in big endian case
Date: Wed, 23 Apr 2014 13:38:45 +0100	[thread overview]
Message-ID: <20140423123845.GB5649@arm.com> (raw)
In-Reply-To: <CAA3XUr20eFyLshVM+7VBSMz4a4-cCA0PLrYGN5oyk-wOM2NLtg@mail.gmail.com>

On Wed, Apr 23, 2014 at 07:37:11AM +0100, Victor Kamensky wrote:
> Hi Will,

Hi Victor,

Thanks for investigating this!

> On 22 April 2014 02:46, Will Deacon <will.deacon@arm.com> wrote:
> > On Mon, Apr 21, 2014 at 11:36:10PM +0100, Victor Kamensky wrote:
> The issue turned out to be in another commit: "word-at-a-time:
> provide generic big-endian zero_bytemask implementation". Because
> of the issue in zero_bytemask function full_name_hash and
> hash_name were giving different hash results for the same path
> name (without slash). The issue is that (~0ul << 64) gives
> ~0ul not 0. I could not come up with more elegant solution other
> than use inline function that check shift value against type maximum
> width. Please take a look below.

Ah yes, we're in UNDEFINED territory here and AArch64 differs from AArch32
wrt LSL >= register width. Can you try the following instead of your patch
please? I think it should be more efficient.

Cheers,

Will

--->8

diff --git a/include/asm-generic/word-at-a-time.h b/include/asm-generic/word-at-a-time.h
index d3909effd725..243ce8c84ee9 100644
--- a/include/asm-generic/word-at-a-time.h
+++ b/include/asm-generic/word-at-a-time.h
@@ -50,11 +50,7 @@ static inline bool has_zero(unsigned long val, unsigned long *data, const struct
 }
 
 #ifndef zero_bytemask
-#ifdef CONFIG_64BIT
-#define zero_bytemask(mask)    (~0ul << fls64(mask))
-#else
-#define zero_bytemask(mask)    (~0ul << fls(mask))
-#endif /* CONFIG_64BIT */
+#define zero_bytemask(mask)    (mask ? ~0ul << __fls(mask) << 1 : ~0ul)
 #endif /* zero_bytemask */
 
 #endif /* _ASM_WORD_AT_A_TIME_H */

  reply	other threads:[~2014-04-23 12:38 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-21 22:36 [PATCH] ARM64: disable DCACHE_WORD_ACCESS in big endian case Victor Kamensky
2014-04-22  9:46 ` Will Deacon
2014-04-23  6:37   ` Victor Kamensky
2014-04-23 12:38     ` Will Deacon [this message]
2014-04-23 16:22       ` Victor Kamensky
2014-04-23 16:37         ` Will Deacon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140423123845.GB5649@arm.com \
    --to=will.deacon@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.