diff options
author | Ulrich Hecht <uli@suse.de> | 2011-05-24 21:07:22 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-05-25 17:55:32 -0400 |
commit | d10358de8d70aaeb965a974d56e9b72f6c6dbb3a (patch) | |
tree | aab8f6c7a38cf1228866ea844aea44e4e823fd36 | |
parent | 1ba37c518f8f83094209396c65a72732b2c1df3b (diff) |
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.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/via-velocity.h b/drivers/net/via-velocity.h index d7227539484e..0f1f05f6c4f8 100644 --- a/drivers/net/via-velocity.h +++ b/drivers/net/via-velocity.h | |||
@@ -1096,7 +1096,7 @@ struct mac_regs { | |||
1096 | 1096 | ||
1097 | volatile __le16 PatternCRC[8]; /* 0xB0 */ | 1097 | volatile __le16 PatternCRC[8]; /* 0xB0 */ |
1098 | volatile __le32 ByteMask[4][4]; /* 0xC0 */ | 1098 | volatile __le32 ByteMask[4][4]; /* 0xC0 */ |
1099 | } __packed; | 1099 | }; |
1100 | 1100 | ||
1101 | 1101 | ||
1102 | enum hw_mib { | 1102 | enum hw_mib { |