[PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

Subsystems: arm port, the rest

STALE4988d

9 messages, 5 authors, 2012-12-06 · open the first message on its own page

[PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

From: Armando Visconti <hidden>
Date: 2012-11-29 11:05:04

This patch keeps disabled the strict alignment CP15 bit for
all armv6 and armv7 processor without the mmu. This behaviour
is now same as in the mmu case.

Signed-off-by: Armando Visconti <redacted>
---
 arch/arm/kernel/head-nommu.S |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 278cfc1..2c228a0 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -68,7 +68,7 @@ __after_proc_init:
 	 * CP15 system control register value returned in r0 from
 	 * the CPU init function.
 	 */
-#ifdef CONFIG_ALIGNMENT_TRAP
+#if defined(CONFIG_ALIGNMENT_TRAP) && __LINUX_ARM_ARCH__ < 6
 	orr	r0, r0, #CR_A
 #else
 	bic	r0, r0, #CR_A
-- 
1.7.4.4

Re: [PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

From: Armando Visconti <hidden>
Date: 2012-12-03 16:44:47

On 11/29/2012 12:04 PM, Armando VISCONTI wrote:
quoted hunk
This patch keeps disabled the strict alignment CP15 bit for
all armv6 and armv7 processor without the mmu. This behaviour
is now same as in the mmu case.

Signed-off-by: Armando Visconti<redacted>
---
  arch/arm/kernel/head-nommu.S |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 278cfc1..2c228a0 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -68,7 +68,7 @@ __after_proc_init:
  	 * CP15 system control register value returned in r0 from
  	 * the CPU init function.
  	 */
-#ifdef CONFIG_ALIGNMENT_TRAP
+#if defined(CONFIG_ALIGNMENT_TRAP)&&  __LINUX_ARM_ARCH__<  6
  	orr	r0, r0, #CR_A
  #else
  	bic	r0, r0, #CR_A
Any feedback on this simple patch?

Thx,
Armando

Re: [PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

From: Nicolas Pitre <hidden>
Date: 2012-12-03 16:51:28

On Mon, 3 Dec 2012, Armando Visconti wrote:
On 11/29/2012 12:04 PM, Armando VISCONTI wrote:
quoted
This patch keeps disabled the strict alignment CP15 bit for
all armv6 and armv7 processor without the mmu. This behaviour
is now same as in the mmu case.

Signed-off-by: Armando Visconti<redacted>
---
  arch/arm/kernel/head-nommu.S |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 278cfc1..2c228a0 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -68,7 +68,7 @@ __after_proc_init:
  	 * CP15 system control register value returned in r0 from
  	 * the CPU init function.
  	 */
-#ifdef CONFIG_ALIGNMENT_TRAP
+#if defined(CONFIG_ALIGNMENT_TRAP)&&  __LINUX_ARM_ARCH__<  6
  	orr	r0, r0, #CR_A
  #else
  	bic	r0, r0, #CR_A
Any feedback on this simple patch?
Acked-by: Nicolas Pitre <redacted>


Nicolas

Re: [PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

From: Will Deacon <hidden>
Date: 2012-12-03 16:55:07

On Mon, Dec 03, 2012 at 04:44:11PM +0000, Armando Visconti wrote:
On 11/29/2012 12:04 PM, Armando VISCONTI wrote:
quoted
This patch keeps disabled the strict alignment CP15 bit for
all armv6 and armv7 processor without the mmu. This behaviour
is now same as in the mmu case.

Signed-off-by: Armando Visconti<redacted>
---
  arch/arm/kernel/head-nommu.S |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 278cfc1..2c228a0 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -68,7 +68,7 @@ __after_proc_init:
  	 * CP15 system control register value returned in r0 from
  	 * the CPU init function.
  	 */
-#ifdef CONFIG_ALIGNMENT_TRAP
+#if defined(CONFIG_ALIGNMENT_TRAP)&&  __LINUX_ARM_ARCH__<  6
  	orr	r0, r0, #CR_A
  #else
  	bic	r0, r0, #CR_A
Any feedback on this simple patch?
Although this is correct, you still need some extra patches to avoid
unaligned accesses to strongly-ordered memory (given that we don't
currently have mainline support for the MPU). Take a look at my nommu/fixes
branch:

  https://git.kernel.org/?p=linux/kernel/git/will/linux.git;a=shortlog;h=refs/heads/nommu/fixes

I'm happy to post some of that if it's useful to you.

Will

Re: [PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

From: Russell King - ARM Linux <hidden>
Date: 2012-12-03 17:29:19

On Mon, Dec 03, 2012 at 05:44:11PM +0100, Armando Visconti wrote:
On 11/29/2012 12:04 PM, Armando VISCONTI wrote:
quoted
This patch keeps disabled the strict alignment CP15 bit for
all armv6 and armv7 processor without the mmu. This behaviour
is now same as in the mmu case.

Signed-off-by: Armando Visconti<redacted>
---
  arch/arm/kernel/head-nommu.S |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 278cfc1..2c228a0 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -68,7 +68,7 @@ __after_proc_init:
  	 * CP15 system control register value returned in r0 from
  	 * the CPU init function.
  	 */
-#ifdef CONFIG_ALIGNMENT_TRAP
+#if defined(CONFIG_ALIGNMENT_TRAP)&&  __LINUX_ARM_ARCH__<  6
  	orr	r0, r0, #CR_A
  #else
  	bic	r0, r0, #CR_A
Any feedback on this simple patch?
Well, it brings the nommu version into line with the mmu version, so
it's sensible.  Please put it in the patch system, thanks.

Re: [PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

From: Will Deacon <hidden>
Date: 2012-12-03 17:46:33

On Mon, Dec 03, 2012 at 05:25:53PM +0000, Russell King - ARM Linux wrote:
On Mon, Dec 03, 2012 at 05:44:11PM +0100, Armando Visconti wrote:
quoted
On 11/29/2012 12:04 PM, Armando VISCONTI wrote:
quoted
This patch keeps disabled the strict alignment CP15 bit for
all armv6 and armv7 processor without the mmu. This behaviour
is now same as in the mmu case.

Signed-off-by: Armando Visconti<redacted>
---
  arch/arm/kernel/head-nommu.S |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 278cfc1..2c228a0 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -68,7 +68,7 @@ __after_proc_init:
  	 * CP15 system control register value returned in r0 from
  	 * the CPU init function.
  	 */
-#ifdef CONFIG_ALIGNMENT_TRAP
+#if defined(CONFIG_ALIGNMENT_TRAP)&&  __LINUX_ARM_ARCH__<  6
  	orr	r0, r0, #CR_A
  #else
  	bic	r0, r0, #CR_A
Any feedback on this simple patch?
Well, it brings the nommu version into line with the mmu version, so
it's sensible.  Please put it in the patch system, thanks.
In which case, I'll definitely dust-off the patches to prevent unaligned
accesses to strongly-ordered memory because that results in good ol'
UNPREDICTABLE behaviour.

I think Uwe also requires some of the stuff there for his M3 port.

Will

Re: [PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

From: Armando Visconti <hidden>
Date: 2012-12-04 09:37:27

On 12/03/2012 06:46 PM, Will Deacon wrote:
On Mon, Dec 03, 2012 at 05:25:53PM +0000, Russell King - ARM Linux wrote:
quoted
On Mon, Dec 03, 2012 at 05:44:11PM +0100, Armando Visconti wrote:
quoted
On 11/29/2012 12:04 PM, Armando VISCONTI wrote:
quoted
This patch keeps disabled the strict alignment CP15 bit for
all armv6 and armv7 processor without the mmu. This behaviour
is now same as in the mmu case.

Signed-off-by: Armando Visconti<redacted>
---
   arch/arm/kernel/head-nommu.S |    2 +-
   1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 278cfc1..2c228a0 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -68,7 +68,7 @@ __after_proc_init:
   	 * CP15 system control register value returned in r0 from
   	 * the CPU init function.
   	 */
-#ifdef CONFIG_ALIGNMENT_TRAP
+#if defined(CONFIG_ALIGNMENT_TRAP)&&   __LINUX_ARM_ARCH__<   6
   	orr	r0, r0, #CR_A
   #else
   	bic	r0, r0, #CR_A
Any feedback on this simple patch?
Well, it brings the nommu version into line with the mmu version, so
it's sensible.  Please put it in the patch system, thanks.
Done!
In which case, I'll definitely dust-off the patches to prevent unaligned
accesses to strongly-ordered memory because that results in good ol'
UNPREDICTABLE behaviour.
Yes, we definetely need them.

Thx,
Arm

Re: [PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

From: Uwe Kleine-König <hidden>
Date: 2012-12-05 19:51:55

Hello,

On Mon, Dec 03, 2012 at 05:46:17PM +0000, Will Deacon wrote:
On Mon, Dec 03, 2012 at 05:25:53PM +0000, Russell King - ARM Linux wrote:
quoted
On Mon, Dec 03, 2012 at 05:44:11PM +0100, Armando Visconti wrote:
quoted
On 11/29/2012 12:04 PM, Armando VISCONTI wrote:
quoted
This patch keeps disabled the strict alignment CP15 bit for
all armv6 and armv7 processor without the mmu. This behaviour
is now same as in the mmu case.

Signed-off-by: Armando Visconti<redacted>
---
  arch/arm/kernel/head-nommu.S |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 278cfc1..2c228a0 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -68,7 +68,7 @@ __after_proc_init:
  	 * CP15 system control register value returned in r0 from
  	 * the CPU init function.
  	 */
-#ifdef CONFIG_ALIGNMENT_TRAP
+#if defined(CONFIG_ALIGNMENT_TRAP)&&  __LINUX_ARM_ARCH__<  6
  	orr	r0, r0, #CR_A
  #else
  	bic	r0, r0, #CR_A
Any feedback on this simple patch?
Well, it brings the nommu version into line with the mmu version, so
it's sensible.  Please put it in the patch system, thanks.
In which case, I'll definitely dust-off the patches to prevent unaligned
accesses to strongly-ordered memory because that results in good ol'
UNPREDICTABLE behaviour.

I think Uwe also requires some of the stuff there for his M3 port.
I didn't check more context than available in the patch and I also
didn't double-check the M3-docs, but AFAIK the M3 doesn't have a cp15
and I noopt this code out.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

Re: [PATCH] nommu: Enable the strict alignment (CR_A) bit only if ARCH < v6

From: Will Deacon <hidden>
Date: 2012-12-06 10:47:36

On Wed, Dec 05, 2012 at 07:51:34PM +0000, Uwe Kleine-K?nig wrote:
Hello,
Hi Uwe,
On Mon, Dec 03, 2012 at 05:46:17PM +0000, Will Deacon wrote:
quoted
I think Uwe also requires some of the stuff there for his M3 port.
I didn't check more context than available in the patch and I also
didn't double-check the M3-docs, but AFAIK the M3 doesn't have a cp15
and I noopt this code out.
I was thinking more about the word-at-a-time stuff, which relies on
efficient unaligned access for the dcache accesses.

Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help