* [PATCH V2] Skip unnecessary pte makeup when clearing it
@ 2012-01-30 1:43 bill4carson at gmail.com
0 siblings, 0 replies; 5+ messages in thread
From: bill4carson at gmail.com @ 2012-01-30 1:43 UTC (permalink / raw)
To: linux-arm-kernel
If we are only about to clear a hardware pte entry, then pte makeup code is
unnecessary for cpu_v7_set_pte_ext and armv6_set_pte_ext, so just skip it.
Signeed-off-by: Bill Carson <bill4carson@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>
Cc: arm-mail-list <linux-arm-kernel@lists.infradead.org>
Changes for V2:
- Use "1f" instead of "set_pte" as label
- Build/bootup test with thumb mode
- checkpatch script shows:
total: 0 errors, 0 warnings, 44 lines checked
./0001-Skip-unnecessary-pte-makeup-when-clearing-it.patch has no obvious style problems and is ready for submission.
arch/arm/mm/proc-macros.S | 10 +++++-----
arch/arm/mm/proc-v7-2level.S | 10 +++++-----
2 files changed, 10 insertions(+), 10 deletions(-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH V2] Skip unnecessary pte makeup when clearing it
@ 2012-01-30 1:47 bill4carson at gmail.com
2012-01-30 1:47 ` [PATCH] " bill4carson at gmail.com
0 siblings, 1 reply; 5+ messages in thread
From: bill4carson at gmail.com @ 2012-01-30 1:47 UTC (permalink / raw)
To: linux-arm-kernel
If we are only about to clear a hardware pte entry, then pte makeup code is
unnecessary for cpu_v7_set_pte_ext and armv6_set_pte_ext, so just skip it.
Signeed-off-by: Bill Carson <bill4carson@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>
Cc: arm-mail-list <linux-arm-kernel@lists.infradead.org>
Changes for V2:
- Use "1f" instead of "set_pte" as label
- Build/bootup test with thumb mode
- checkpatch script shows:
total: 0 errors, 0 warnings, 44 lines checked
./0001-Skip-unnecessary-pte-makeup-when-clearing-it.patch has no obvious style problems and is ready for submission.
arch/arm/mm/proc-macros.S | 10 +++++-----
arch/arm/mm/proc-v7-2level.S | 10 +++++-----
2 files changed, 10 insertions(+), 10 deletions(-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] Skip unnecessary pte makeup when clearing it.
2012-01-30 1:47 [PATCH V2] Skip unnecessary pte makeup when clearing it bill4carson at gmail.com
@ 2012-01-30 1:47 ` bill4carson at gmail.com
2012-01-30 7:58 ` Uwe Kleine-König
0 siblings, 1 reply; 5+ messages in thread
From: bill4carson at gmail.com @ 2012-01-30 1:47 UTC (permalink / raw)
To: linux-arm-kernel
From: Bill Carson <bill4carson@gmail.com>
If we are only about to clear a hardware pte entry, then pte makeup code is
unnecessary for cpu_v7_set_pte_ext and armv6_set_pte_ext, so just skip it.
Signed-off-by: Bill Carson <bill4carson@gmail.com>
---
arch/arm/mm/proc-macros.S | 10 +++++-----
arch/arm/mm/proc-v7-2level.S | 10 +++++-----
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S
index 2d8ff3a..907b524 100644
--- a/arch/arm/mm/proc-macros.S
+++ b/arch/arm/mm/proc-macros.S
@@ -138,6 +138,10 @@
.macro armv6_set_pte_ext pfx
str r1, [r0], #2048 @ linux version
+ tst r1, #L_PTE_YOUNG
+ tstne r1, #L_PTE_PRESENT
+ moveq r3, #0
+ beq 1f
bic r3, r1, #0x000003fc
bic r3, r3, #PTE_TYPE_MASK
orr r3, r3, r2
@@ -163,11 +167,7 @@
orrne r3, r3, #PTE_EXT_XN
orr r3, r3, r2
-
- tst r1, #L_PTE_YOUNG
- tstne r1, #L_PTE_PRESENT
- moveq r3, #0
-
+1:
str r3, [r0]
mcr p15, 0, r0, c7, c10, 1 @ flush_pte
.endm
diff --git a/arch/arm/mm/proc-v7-2level.S b/arch/arm/mm/proc-v7-2level.S
index 3a4b3e7..869bebc 100644
--- a/arch/arm/mm/proc-v7-2level.S
+++ b/arch/arm/mm/proc-v7-2level.S
@@ -76,6 +76,10 @@ ENTRY(cpu_v7_set_pte_ext)
#ifdef CONFIG_MMU
str r1, [r0] @ linux version
+ tst r1, #L_PTE_YOUNG
+ tstne r1, #L_PTE_PRESENT
+ moveq r3, #0
+ beq 1f
bic r3, r1, #0x000003f0
bic r3, r3, #PTE_TYPE_MASK
orr r3, r3, r2
@@ -98,11 +102,7 @@ ENTRY(cpu_v7_set_pte_ext)
tst r1, #L_PTE_XN
orrne r3, r3, #PTE_EXT_XN
-
- tst r1, #L_PTE_YOUNG
- tstne r1, #L_PTE_PRESENT
- moveq r3, #0
-
+1:
ARM( str r3, [r0, #2048]! )
THUMB( add r0, r0, #2048 )
THUMB( str r3, [r0] )
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] Skip unnecessary pte makeup when clearing it.
2012-01-30 1:47 ` [PATCH] " bill4carson at gmail.com
@ 2012-01-30 7:58 ` Uwe Kleine-König
2012-01-30 8:29 ` bill4carson
0 siblings, 1 reply; 5+ messages in thread
From: Uwe Kleine-König @ 2012-01-30 7:58 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Jan 30, 2012 at 09:47:51AM +0800, bill4carson at gmail.com wrote:
> From: Bill Carson <bill4carson@gmail.com>
>
> If we are only about to clear a hardware pte entry, then pte makeup code is
> unnecessary for cpu_v7_set_pte_ext and armv6_set_pte_ext, so just skip it.
>
> Signed-off-by: Bill Carson <bill4carson@gmail.com>
> ---
> arch/arm/mm/proc-macros.S | 10 +++++-----
> arch/arm/mm/proc-v7-2level.S | 10 +++++-----
> 2 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S
> index 2d8ff3a..907b524 100644
> --- a/arch/arm/mm/proc-macros.S
> +++ b/arch/arm/mm/proc-macros.S
> @@ -138,6 +138,10 @@
> .macro armv6_set_pte_ext pfx
> str r1, [r0], #2048 @ linux version
>
> + tst r1, #L_PTE_YOUNG
> + tstne r1, #L_PTE_PRESENT
> + moveq r3, #0
> + beq 1f
> bic r3, r1, #0x000003fc
> bic r3, r3, #PTE_TYPE_MASK
> orr r3, r3, r2
> @@ -163,11 +167,7 @@
> orrne r3, r3, #PTE_EXT_XN
>
> orr r3, r3, r2
> -
> - tst r1, #L_PTE_YOUNG
> - tstne r1, #L_PTE_PRESENT
> - moveq r3, #0
> -
> +1:
> str r3, [r0]
> mcr p15, 0, r0, c7, c10, 1 @ flush_pte
> .endm
> diff --git a/arch/arm/mm/proc-v7-2level.S b/arch/arm/mm/proc-v7-2level.S
> index 3a4b3e7..869bebc 100644
> --- a/arch/arm/mm/proc-v7-2level.S
> +++ b/arch/arm/mm/proc-v7-2level.S
> @@ -76,6 +76,10 @@ ENTRY(cpu_v7_set_pte_ext)
> #ifdef CONFIG_MMU
> str r1, [r0] @ linux version
>
> + tst r1, #L_PTE_YOUNG
> + tstne r1, #L_PTE_PRESENT
> + moveq r3, #0
> + beq 1f
This double tab looks wrong. Other than that I think the patch is OK.
Note I don't have a clue about ptes but your changes are a logical nop.
Best regards
Uwe
> bic r3, r1, #0x000003f0
> bic r3, r3, #PTE_TYPE_MASK
> orr r3, r3, r2
> @@ -98,11 +102,7 @@ ENTRY(cpu_v7_set_pte_ext)
>
> tst r1, #L_PTE_XN
> orrne r3, r3, #PTE_EXT_XN
> -
> - tst r1, #L_PTE_YOUNG
> - tstne r1, #L_PTE_PRESENT
> - moveq r3, #0
> -
> +1:
> ARM( str r3, [r0, #2048]! )
> THUMB( add r0, r0, #2048 )
> THUMB( str r3, [r0] )
--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] Skip unnecessary pte makeup when clearing it.
2012-01-30 7:58 ` Uwe Kleine-König
@ 2012-01-30 8:29 ` bill4carson
0 siblings, 0 replies; 5+ messages in thread
From: bill4carson @ 2012-01-30 8:29 UTC (permalink / raw)
To: linux-arm-kernel
On 2012?01?30? 15:58, Uwe Kleine-K?nig wrote:
> On Mon, Jan 30, 2012 at 09:47:51AM +0800, bill4carson at gmail.com wrote:
>> From: Bill Carson<bill4carson@gmail.com>
>>
>> If we are only about to clear a hardware pte entry, then pte makeup code is
>> unnecessary for cpu_v7_set_pte_ext and armv6_set_pte_ext, so just skip it.
>>
>> Signed-off-by: Bill Carson<bill4carson@gmail.com>
>> ---
>> arch/arm/mm/proc-macros.S | 10 +++++-----
>> arch/arm/mm/proc-v7-2level.S | 10 +++++-----
>> 2 files changed, 10 insertions(+), 10 deletions(-)
>>
>> diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S
>> index 2d8ff3a..907b524 100644
>> --- a/arch/arm/mm/proc-macros.S
>> +++ b/arch/arm/mm/proc-macros.S
>> @@ -138,6 +138,10 @@
>> .macro armv6_set_pte_ext pfx
>> str r1, [r0], #2048 @ linux version
>>
>> + tst r1, #L_PTE_YOUNG
>> + tstne r1, #L_PTE_PRESENT
>> + moveq r3, #0
>> + beq 1f
>> bic r3, r1, #0x000003fc
>> bic r3, r3, #PTE_TYPE_MASK
>> orr r3, r3, r2
>> @@ -163,11 +167,7 @@
>> orrne r3, r3, #PTE_EXT_XN
>>
>> orr r3, r3, r2
>> -
>> - tst r1, #L_PTE_YOUNG
>> - tstne r1, #L_PTE_PRESENT
>> - moveq r3, #0
>> -
>> +1:
>> str r3, [r0]
>> mcr p15, 0, r0, c7, c10, 1 @ flush_pte
>> .endm
>> diff --git a/arch/arm/mm/proc-v7-2level.S b/arch/arm/mm/proc-v7-2level.S
>> index 3a4b3e7..869bebc 100644
>> --- a/arch/arm/mm/proc-v7-2level.S
>> +++ b/arch/arm/mm/proc-v7-2level.S
>> @@ -76,6 +76,10 @@ ENTRY(cpu_v7_set_pte_ext)
>> #ifdef CONFIG_MMU
>> str r1, [r0] @ linux version
>>
>> + tst r1, #L_PTE_YOUNG
>> + tstne r1, #L_PTE_PRESENT
>> + moveq r3, #0
>> + beq 1f
> This double tab looks wrong. Other than that I think the patch is OK.
> Note I don't have a clue about ptes but your changes are a logical nop.
>
Thanks for your feedback :)
I will fix that double tab soon, as for "your changes are a logical nop"
it does not change any code substantially, changing the sequence does
not help when setup an page mapping, but it take a short path when clearing
an existing pte, thus gives better performance.
> Best regards
> Uwe
>
>> bic r3, r1, #0x000003f0
>> bic r3, r3, #PTE_TYPE_MASK
>> orr r3, r3, r2
>> @@ -98,11 +102,7 @@ ENTRY(cpu_v7_set_pte_ext)
>>
>> tst r1, #L_PTE_XN
>> orrne r3, r3, #PTE_EXT_XN
>> -
>> - tst r1, #L_PTE_YOUNG
>> - tstne r1, #L_PTE_PRESENT
>> - moveq r3, #0
>> -
>> +1:
>> ARM( str r3, [r0, #2048]! )
>> THUMB( add r0, r0, #2048 )
>> THUMB( str r3, [r0] )
--
I am a slow learner
but I will keep trying to fight for my dreams!
--bill
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-01-30 8:29 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-30 1:47 [PATCH V2] Skip unnecessary pte makeup when clearing it bill4carson at gmail.com
2012-01-30 1:47 ` [PATCH] " bill4carson at gmail.com
2012-01-30 7:58 ` Uwe Kleine-König
2012-01-30 8:29 ` bill4carson
-- strict thread matches above, loose matches on Subject: below --
2012-01-30 1:43 [PATCH V2] " bill4carson at gmail.com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).