<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/arm/mm/alignment.c, branch linux-3.17.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-09-25T14:32:57Z</updated>
<entry>
<title>ARM: 8165/1: alignment: don't break misaligned NEON load/store</title>
<updated>2014-09-25T14:32:57Z</updated>
<author>
<name>Robin Murphy</name>
</author>
<published>2014-09-25T10:56:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5ca918e5e3f9df4634077c06585c42bc6a8d699a'/>
<id>urn:sha1:5ca918e5e3f9df4634077c06585c42bc6a8d699a</id>
<content type='text'>
The alignment fixup incorrectly decodes faulting ARM VLDn/VSTn
instructions (where the optional alignment hint is given but incorrect)
as LDR/STR, leading to register corruption. Detect these and correctly
treat them as unhandled, so that userspace gets the fault it expects.

Reported-by: Simon Hosie &lt;simon.hosie@arm.com&gt;
Signed-off-by: Robin Murphy &lt;robin.murphy@arm.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: alignment: save last kernel aligned fault location</title>
<updated>2014-07-18T11:29:06Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2014-07-04T13:32:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1e7e3211854507d6c2695126d6d30a7762cf4006'/>
<id>urn:sha1:1e7e3211854507d6c2695126d6d30a7762cf4006</id>
<content type='text'>
Save and report (via the procfs file) the last kernel unaligned fault
location.  This allows us to trivially inspect where the last fault
happened for cases which we don't expect to occur.

Since we expect the kernel to generate misalignment faults (due to
the networking layer), even when warnings are enabled, we don't log
them for the kernel.

Tested-by: Tony Lindgren &lt;tony@atomide.com&gt;
Acked-by: Catalin Marinas &lt;catalin.marinas@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: remove global cr_no_alignment</title>
<updated>2014-06-02T08:20:18Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2014-04-13T18:43:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0aeb3408ca9773283b0ae63771c4b17f39e204df'/>
<id>urn:sha1:0aeb3408ca9773283b0ae63771c4b17f39e204df</id>
<content type='text'>
cr_no_alignment is really only used by the alignment code.  Since we no
longer change the setting of cr_alignment after boot, we can localise
this to alignment.c

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: remove CPU_CP15 conditional from alignment.c</title>
<updated>2014-06-02T08:20:16Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2014-04-13T18:40:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3cb099f0894c06359dd6495dec81359591d06207'/>
<id>urn:sha1:3cb099f0894c06359dd6495dec81359591d06207</id>
<content type='text'>
alignment.c will not be built unless CPU_CP15 is set:

config CPU_CP15
        bool

config CPU_CP15_MMU
        bool
        select CPU_CP15

config ALIGNMENT_TRAP
        bool
        depends on CPU_CP15_MMU

So there's no point having conditionals on CPU_CP15 within this code.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: move "noalign" command line option to alignment.c</title>
<updated>2014-06-02T08:20:13Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2014-04-13T18:00:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=175352a51cfc275b8590d27be6fdd4b14f416c32'/>
<id>urn:sha1:175352a51cfc275b8590d27be6fdd4b14f416c32</id>
<content type='text'>
Keep all bits of alignment handling together.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: provide common method to clear bits in CPU control register</title>
<updated>2014-06-02T08:20:11Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2014-04-13T17:57:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b4b20ad881f5a5c19ae9199547ddbb00fa4825eb'/>
<id>urn:sha1:b4b20ad881f5a5c19ae9199547ddbb00fa4825eb</id>
<content type='text'>
Several places open-code this manipulation, let's consolidate this.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: use get_cr() rather than cr_alignment</title>
<updated>2014-05-22T15:27:27Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2014-04-13T17:47:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4585eaff634b1bbb09686895221b3645f53f7a60'/>
<id>urn:sha1:4585eaff634b1bbb09686895221b3645f53f7a60</id>
<content type='text'>
Rather than reading the cr_alignment variable, use get_cr() to read
directly from the hardware instead.  We have two places where this
occurs, neither of them are performance critical.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: alignment: correctly decode instructions in BE8 mode.</title>
<updated>2013-10-19T19:46:34Z</updated>
<author>
<name>Ben Dooks</name>
</author>
<published>2013-07-18T20:10:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8592edf0dec8159fde379eb7e056eaddbbd697f2'/>
<id>urn:sha1:8592edf0dec8159fde379eb7e056eaddbbd697f2</id>
<content type='text'>
If we are in BE8 mode, we must deal with the instruction stream being
in LE order when data is being loaded in BE order. Ensure the data is
swapped before processing to avoid thre following:

Change to using &lt;asm/opcodes.h&gt; to provide the necessary conversion
functions to change the byte ordering.

This stops the following warning messages from the kernel on a fault:

Unhandled fault: alignment exception (0x001) at 0xbfa09567
Alignment trap: not handling instruction 030091e8 at [&lt;80333e8c&gt;]

Signed-off-by: Ben Dooks &lt;ben.dooks@codethink.co.uk&gt;
Reviewed-by: Dave Martin &lt;Dave.Martin@arm.com&gt;
Tested-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-next' of git://git.pengutronix.de/git/ukl/linux into devel-stable</title>
<updated>2013-03-09T15:49:32Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2013-03-09T15:49:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=73a09d212ec65b7068a283e6034fa05649d3d075'/>
<id>urn:sha1:73a09d212ec65b7068a283e6034fa05649d3d075</id>
<content type='text'>
Conflicts:
	arch/arm/include/asm/cputype.h

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: fix scheduling while atomic warning in alignment handling code</title>
<updated>2013-02-25T16:10:42Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2013-02-25T16:10:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b255188f90e2bade1bd11a986dd1ca4861869f4d'/>
<id>urn:sha1:b255188f90e2bade1bd11a986dd1ca4861869f4d</id>
<content type='text'>
Paolo Pisati reports that IPv6 triggers this warning:

BUG: scheduling while atomic: swapper/0/0/0x40000100
Modules linked in:
[&lt;c001b1c4&gt;] (unwind_backtrace+0x0/0xf0) from [&lt;c0503c5c&gt;] (__schedule_bug+0x48/0x5c)
[&lt;c0503c5c&gt;] (__schedule_bug+0x48/0x5c) from [&lt;c0508608&gt;] (__schedule+0x700/0x740)
[&lt;c0508608&gt;] (__schedule+0x700/0x740) from [&lt;c007007c&gt;] (__cond_resched+0x24/0x34)
[&lt;c007007c&gt;] (__cond_resched+0x24/0x34) from [&lt;c05086dc&gt;] (_cond_resched+0x3c/0x44)
[&lt;c05086dc&gt;] (_cond_resched+0x3c/0x44) from [&lt;c0021f6c&gt;] (do_alignment+0x178/0x78c)
[&lt;c0021f6c&gt;] (do_alignment+0x178/0x78c) from [&lt;c00083e0&gt;] (do_DataAbort+0x34/0x98)
[&lt;c00083e0&gt;] (do_DataAbort+0x34/0x98) from [&lt;c0509a60&gt;] (__dabt_svc+0x40/0x60)
Exception stack(0xc0763d70 to 0xc0763db8)
3d60:                                     e97e805e e97e806e 2c000000 11000000
3d80: ea86bb00 0000002c 00000011 e97e807e c076d2a8 e97e805e e97e806e 0000002c
3da0: 3d000000 c0763dbc c04b98fc c02a8490 00000113 ffffffff
[&lt;c0509a60&gt;] (__dabt_svc+0x40/0x60) from [&lt;c02a8490&gt;] (__csum_ipv6_magic+0x8/0xc8)

Fix this by using probe_kernel_address() stead of __get_user().

Cc: &lt;stable@vger.kernel.org&gt;
Reported-by: Paolo Pisati &lt;p.pisati@gmail.com&gt;
Tested-by: Paolo Pisati &lt;p.pisati@gmail.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
</feed>
