All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 2.6.13] document alignment and byteorder macros
@ 2005-09-19 19:22 Ed L Cashin
  2005-09-19 22:26 ` David S. Miller
  0 siblings, 1 reply; 2+ messages in thread
From: Ed L Cashin @ 2005-09-19 19:22 UTC (permalink / raw)
  To: trivial; +Cc: Linux Kernel Mailing List, David S. Miller, Roland Dreier

[-- Attachment #1: Type: text/plain, Size: 1859 bytes --]

"David S. Miller" <davem@davemloft.net> writes:

> From: Ed L Cashin <ecashin@coraid.com>
> Date: Mon, 19 Sep 2005 10:24:00 -0400
>
>>   1) Passing le64_to_cpup an unaligned pointer is "OK" and within the
>>      intended use of the function.  I'm having trouble finding whether
>>      this is documented somewhere.
>> 
>>   2) These new changes to the sparc64 unaligned access fault handling
>>      will make it OK to leave the aoe driver the way it is in the
>>      mainline kernel.
>
> Both #1 and #2 are true.
>
> Although it's very much discouraged to dereference unaligned pointers,
> especially in performance critical code (which this AOE case is not,
> thankfully), because performance will be really bad as the trap
> handler has to fix up the access on RISC platforms.

Roland Dreier <rolandd@cisco.com> writes:

>     David> Although it's very much discouraged to dereference
>     David> unaligned pointers, especially in performance critical code
>     David> (which this AOE case is not, thankfully), because
>     David> performance will be really bad as the trap handler has to
>     David> fix up the access on RISC platforms. 
>
> Also, ia64 has a tendency to print an ugly message in the kernel log
> for unaligned accesses.  Has anyone tried AoE on ia64?
>
> It might be better to change the AoE code to use get_unaligned(), just
> to document what's going on.  Although clearly the sparc64 patch is
> correct as well -- we should never silently return the wrong data.

This patch comments the fact that although passing le64_to_cpup et
al. is within the intended use of the byteorder macros, using
get_unaligned is the recommended way to go.

Please speak up if there's a better place for this documentation to go
or a better way to say it.


document alignment and byteorder macros

Signed-off-by: Ed L. Cashin <ecashin@coraid.com>


[-- Attachment #2: diff --]
[-- Type: text/plain, Size: 745 bytes --]

Index: linux-2.6.13/include/linux/byteorder/generic.h
===================================================================
--- linux-2.6.13.orig/include/linux/byteorder/generic.h	2005-08-31 17:00:15.000000000 -0400
+++ linux-2.6.13/include/linux/byteorder/generic.h	2005-09-19 15:15:37.000000000 -0400
@@ -5,6 +5,10 @@
  * linux/byteorder_generic.h
  * Generic Byte-reordering support
  *
+ * The "... p" macros, like le64_to_cpup, can be used with pointers
+ * to unaligned data, but there will be a performance penalty on 
+ * some architectures.  Use get_unaligned for unaligned data.
+ *
  * Francois-Rene Rideau <fare@tunes.org> 19970707
  *    gathered all the good ideas from all asm-foo/byteorder.h into one file,
  *    cleaned them up.

[-- Attachment #3: Type: text/plain, Size: 41 bytes --]



-- 
  Ed L Cashin <ecashin@coraid.com>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2005-09-19 22:26 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-19 19:22 [patch 2.6.13] document alignment and byteorder macros Ed L Cashin
2005-09-19 22:26 ` David S. Miller

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.