All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aneesh V <aneesh@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] arm: enable unaligned access on ARMv7
Date: Fri, 22 Jun 2012 15:13:39 -0700	[thread overview]
Message-ID: <4FE4EE13.7040206@ti.com> (raw)
In-Reply-To: <4FE4ED98.2030103@ti.com>

On 06/22/2012 03:11 PM, Aneesh V wrote:
> +Tom
>
> Hi Lucas,
>
> On 06/22/2012 04:47 AM, Lucas Stach wrote:
>> Hi Albert,
>>
>> Am Freitag, den 22.06.2012, 13:16 +0200 schrieb Albert ARIBAUD:
>>> Hi Lucas,
>>>
>>>>>> Linux in particular does reinitialize this state and I expect any
>>>>>> reasonable OS to do so.
>>>>>
>>>>> Then what is the point of enabling it on U-Boot? Does it fix some
>>>>> issue whereby some mis-aligned piece of data cannot be properly
>>>>> aligned?
>>>>>
>>>> Yes, it fixes U-Boot USB on Tegra, when built with a recent toolchain.
>>>> Fixing the alignment of some of the structures in the USB code should
>>>> also be done, but this is a whole lot more invasive and requires some
>>>> more thought, as the discussion about this on LKML shows. The issue
>>>> doesn't show for older toolchains, as they by default emit code to
>>>> work around unaligned accesses.
>>>>
>>>> This patch fixes all unaligned issues, that may appear with recent
>>>> toolchains. We avoid having to instruct the toolchain to work around
>>>> unaligned accesses and gain better performance in cases where it is
>>>> needed.
>>>
>>> I am not too happy with enabling a lax behavior only to avoid an
>>> issue which apparently is diagnosed and could / should be fixed at
>>> its root. Can you point me to the relevant LKML thread
>>> so that I get the details and understand what prevents fixing this by
>>> 'simply' aligning the USB structures?
>>
>> I'm with you that the issue for this particular fault that I ran into
>> should be fixed at it's root and I will do so as soon as I have enough
>> time to do so, i.e. within the next three weeks.
>> You can find a thread about this here:
>> https://lkml.org/lkml/2011/4/27/278
>> The problem here is that simply removing the packed attribute is not the
>> right thing to do for structures that are used for accessing hardware
>> registers. I have to read a bit more of the USB code to come up with the
>> right thing to do for every structure there.
>>
>> But apart from this, we certainly have situations where we have
>> unaligned accesses that are justified and could not be removed.
>> Activating the aligned access hardware check is crippling a feature of
>> the ARMv7 architecture that's apparently useful enough that all recent
>> toolchains default to using it and not using compiler side workarounds.
>> Furthermore setting the check bit doesn't even deactivate unaligned
>> access (there is also a bit for this, which is forced to 1 by all v7
>> implementations), but just traps the processor in case you care about
>> such unaligned accesses. Linux for example only sets this check bit if
>> you choose to install a trap handler for this.
>>
>> I cannot see how enabling a hardware feature can be seen as allowing of
>> lax behaviour. As some of the USB structs are used to access hardware
>> registers, we can not align every struct there. Our options are either:
>> 1. instruct the toolchain to insert workaround code or
>> 2. allow v7 hardware to do the unaligned access on it's own
>> My comment about fixing the USB code applies only to part of the structs
>> used there as some of them generate _unnecessary_ unaligned accesses,
>> the issue that all unaligned accesses fail with current U-Boot built
>> with a recent toolchain has to be fixed either way and is exactly what
>> this patch does.
>
> I think this issue was discussed before here(I haven't gone through all
> the details of your problem, but it looks similar). And I think Tom
> fixed this by wrapping the problematic accesses with get/set_unaligned().
>
> Please look at this thread, especially starting from my post reporting
> the OMAP4 regression:
> http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/113347/

BTW, I agree that enabling un-aligned access is not a bad idea.

br,
Aneeesh

  reply	other threads:[~2012-06-22 22:13 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-05 17:47 [U-Boot] [PATCH] arm: enable unaligned access on ARMv7 Lucas Stach
2012-06-05 18:42 ` Stephen Warren
2012-06-05 19:06   ` Lucas Stach
2012-06-22  9:15     ` Albert ARIBAUD
2012-06-22  9:36       ` Lucas Stach
2012-06-22 11:16         ` Albert ARIBAUD
2012-06-22 11:47           ` Lucas Stach
2012-06-22 22:11             ` Aneesh V
2012-06-22 22:13               ` Aneesh V [this message]
2012-06-23  9:01                 ` Albert ARIBAUD
2012-06-23 17:43                   ` V, Aneesh
2012-06-25 20:34                     ` Albert ARIBAUD
2012-06-25 21:49                       ` Aneesh V
2012-06-25 22:02                         ` Wolfgang Denk
2012-06-23 19:50                   ` Måns Rullgård
2012-06-24  6:30                   ` Lucas Stach
     [not found]                     ` <20120625221741.3a32790e@lilith>
2012-06-25 21:34                       ` Lucas Stach
2012-06-26 20:56       ` Rob Herring
2012-06-27 10:14         ` Tetsuyuki Kobayashi
2012-07-02  9:42           ` [U-Boot] [PATCH] arm: armv7: add compile option -mno-unaligned-access if available Tetsuyuki Kobayashi
2012-07-02  9:53             ` Måns Rullgård
2012-07-02 15:16               ` Lucas Stach
2012-07-02 16:14                 ` Måns Rullgård
2012-07-03  7:10                   ` Tetsuyuki Kobayashi
2012-07-05  7:57                   ` Albert ARIBAUD
2012-07-18 21:37                     ` Albert ARIBAUD
2012-07-19  4:31                     ` Mike Frysinger
2012-07-19  4:29                   ` Mike Frysinger
2012-07-19  6:28                     ` Albert ARIBAUD
2012-07-19 14:27                       ` Mike Frysinger
2012-07-20  7:12                         ` Albert ARIBAUD
2012-07-12 15:12             ` Gary Thomas

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=4FE4EE13.7040206@ti.com \
    --to=aneesh@ti.com \
    --cc=u-boot@lists.denx.de \
    /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.