diff mbox

[U-Boot,v4] USB: Add align(4) in __attribute__ ((packed)) for struct ehci_hccr and ehci_hcor

Message ID 1313097765-3206-1-git-send-email-agnel.joel@gmail.com
State Awaiting Upstream
Delegated to: Remy Bohmer
Headers show

Commit Message

Joel Fernandes Aug. 11, 2011, 9:22 p.m. UTC
From: Jason Kridner <jkridner@beagleboard.org>

Switched to align(4) to prevent byte access to soc registers in some gcc versions.

Credits have to go to Laine Walker-Avina <lwalkera@ieee.org> for finding the problem.

Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
Signed-off-by: Joel A Fernandes <agnel.joel@gmail.com>
Cc: Koen Kooi <k-kooi@ti.com>
Cc: Alexander Holler <holler@ahsoftware.de>
Cc: Sandeep Paulraj <s-paulraj@ti.com>
Cc: Igor Grinberg <grinberg@compulab.co.il>
---
Changes for v2:
* Original and v2 were provided by Alexander Holler.
* v1 was http://patchwork.ozlabs.org/patch/89358/
* v2 was http://patchwork.ozlabs.org/patch/89362/

Changes for v3:
* Switched to align(4), rather than remove the attribute, per suggestion
  from Alexander.

Changes for v4:
* Modified commit summary and title to be more accurate

 drivers/usb/host/ehci.h |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Wolfgang Denk Aug. 26, 2011, 11:50 a.m. UTC | #1
Dear Joel A Fernandes,

In message <1313097765-3206-1-git-send-email-agnel.joel@gmail.com> you wrote:
> From: Jason Kridner <jkridner@beagleboard.org>
> 
> Switched to align(4) to prevent byte access to soc registers in some gcc versions.
...
> -} __attribute__ ((packed));
> +} __attribute__ ((packed, aligned(4)));

Can we not rather get rid of this "packed" attribute alltogether?

I know there has been a long discussion around this on lak and lkml,
see for example here:

http://thread.gmane.org/gmane.linux.kernel/1132033/focus=120777

And like for example Arnd I feel that this patch is not a cleanup.

Best regards,

Wolfgang Denk
diff mbox

Patch

diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 945ab64..3d0ad0c 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -55,7 +55,7 @@  struct ehci_hccr {
 #define HCS_N_PORTS(p)		(((p) >> 0) & 0xf)
 	uint32_t cr_hccparams;
 	uint8_t cr_hcsp_portrt[8];
-} __attribute__ ((packed));
+} __attribute__ ((packed, aligned(4)));
 
 struct ehci_hcor {
 	uint32_t or_usbcmd;
@@ -85,7 +85,7 @@  struct ehci_hcor {
 #define FLAG_CF		(1 << 0)	/* true:  we'll support "high speed" */
 	uint32_t or_portsc[CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS];
 	uint32_t or_systune;
-} __attribute__ ((packed));
+} __attribute__ ((packed, aligned(4)));
 
 #define USBMODE		0x68		/* USB Device mode */
 #define USBMODE_SDIS	(1 << 3)	/* Stream disable */