* [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
* [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
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).