[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 10/17] xen: arm64: disable alignment traps



On 2014-03-20 16:27, Ian Campbell wrote:
On Thu, 2014-03-20 at 16:21 +0000, Gordan Bobic wrote:
On 2014-03-20 15:59, Ian Campbell wrote:
> On Thu, 2014-03-20 at 15:57 +0000, Andrew Cooper wrote:
>> On 20/03/14 15:45, Ian Campbell wrote:
>> > The mem* primitives which I am about to import from Linux in a subsequent
>> > patch rely on the hardware handling misalignment.
>> >
>> > The benefits of an optimised memcpy etc oughtweigh the downsides.
>
> Ahem, "outweigh".

Just FYI, the slow-down from heavy unaligned accesses (with
hardware alignment fixup, you can't disable it using
/proc/cpu/alignment) on Cortex A15 is about 40x.

That's pretty staggering -- are you positive this wasn't the kernel
doing the fixups?

I'm not sure if this is easily checkable:

# echo 0 > /proc/cpu/alignment
# cat /proc/cpu/alignment
User:           0
System:         631040
Skipped:        0
Half:           0
Word:           631040
DWord:          0
Multi:          0
User faults:    2 (fixup)

i.e. I can't disable it.

This is on a Samsung Exynos Chromebook with the
standard ChromeOS kernel.

Here is a recent thread from the Fedora ARM mailing list
which contains links to a simple test program that can
be used to test the alignment related slowdown:

http://www.mail-archive.com/arm@xxxxxxxxxxxxxxxxxxxxxxx/msg06121.html

Most of the commonly used code has been fixed recently, but
there are still some packages that exhibit misaligned access
traps during their test suites and/or normal operation.

Whether the hardware alignment fixup is less overheady on
ARM64, I don't know - I haven't been able to get my hands
on the hardware yet.

arm64 is a lot "friendlier" than arm32 in this regard. I was mostly
taking it on trust that whoever implemented memcpy.S etc found that
memcpy.S with hardware alignment was better than the dumb loop, even if
it wasn't as good as a clever memcpy.S which avoided the alignments.

I am inclined to agree - it shouldn't be the job of the kernel or the
hypervisor to do this. It is up to the application developers to know
what they are doing and not do things that introduce misaligned
accesses. Unfortunately, there is far too little push-back on buggy
code because most developers have only ever used x86 and have no idea
that until recently everything else wasn't forgiving of such things.

Gordan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.