summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Hecht <uli@suse.de>2011-05-25 01:07:22 +0000
committerDavid S. Miller <davem@davemloft.net>2011-05-25 17:55:32 -0400
commitd10358de8d70aaeb965a974d56e9b72f6c6dbb3a (patch)
treeaab8f6c7a38cf1228866ea844aea44e4e823fd36
parent1ba37c518f8f83094209396c65a72732b2c1df3b (diff)
downloadlinux-3.10-d10358de8d70aaeb965a974d56e9b72f6c6dbb3a.tar.gz
linux-3.10-d10358de8d70aaeb965a974d56e9b72f6c6dbb3a.tar.bz2
linux-3.10-d10358de8d70aaeb965a974d56e9b72f6c6dbb3a.zip
via-velocity: don't annotate MAC registers as packed
On ARM, memory accesses through packed pointers behave in unexpected ways in GCC releases 4.3 and higher; see https://lkml.org/lkml/2011/2/2/163 for discussion. In this particular case, 32-bit I/O registers are accessed bytewise, causing incorrect setting of the DMA address registers which in turn leads to an error interrupt storm that brings the system to a halt. Since the mac_regs structure does not need any packing anyway, this patch simply removes the attribute to fix the issue. Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/via-velocity.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/via-velocity.h b/drivers/net/via-velocity.h
index d7227539484..0f1f05f6c4f 100644
--- a/drivers/net/via-velocity.h
+++ b/drivers/net/via-velocity.h
@@ -1096,7 +1096,7 @@ struct mac_regs {
volatile __le16 PatternCRC[8]; /* 0xB0 */
volatile __le32 ByteMask[4][4]; /* 0xC0 */
-} __packed;
+};
enum hw_mib {