From: Dave Martin <dave.martin@linaro.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Nicolas Pitre <nicolas.pitre@linaro.org>,
Colin Cross <ccross@android.com>,
Santosh Shilimkar <santosh.shilimkar@ti.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Amit Kucheria <amit.kucheria@linaro.org>,
Wenzeng Chen <wzch@marvell.com>
Subject: Re: [RFC PATCH 1/6] ARM: mm: define LoUIS API for cache maintenance ops
Date: Thu, 13 Sep 2012 15:02:20 +0100 [thread overview]
Message-ID: <20120913140220.GF2470@linaro.org> (raw)
In-Reply-To: <20120913130334.GI28448@n2100.arm.linux.org.uk>
On Thu, Sep 13, 2012 at 02:03:34PM +0100, Russell King - ARM Linux wrote:
> On Thu, Sep 13, 2012 at 12:39:49PM +0100, Dave Martin wrote:
> > We could introduce something like CONFIG_ARM_HAVE_CACHEFLUSH_LOUIS, and
> > do:
> >
> > <asm/glue-cache.h>
> > #ifndef MULTI_CACHE
> > #ifdef CONFIG_HAVE_ARM_CACHEFLUSH_LOUIS
> > #define __cpuc_flush_kern_cache_louis __glue(_CACHE,_flush_kern_cache_louis)
> > #else
> > #define __cpuc_flush_kern_cache_louis __glue(_CACHE,_flush_kern_all)
> > #endif
> > #endif
> >
> > <asm/cacheflush.h>
> > #ifdef MULTI_CACHE
> > #define flush_cache_louis() cpu_cache.flush_kern_cache_louis()
> > #else
> > #define flush_cache_louis() __cpuc_flush_kern_cache_louis()
> > #endif
>
> No, this is stupidly complicated and is fragile. Just alias the
> functions, like we do in cache-v4wt.S:
>
> .globl v4wt_dma_flush_range
> .equ v4wt_dma_flush_range, v4wt_dma_inv_range
>
> except, you'll need:
>
> .globl v4wt_flush_kern_cache_louis
> .equ v4wt_flush_kern_cache_louis, v4wt_flush_kern_cache_all
>
> You can do it automatically, using the attached sedscript and this bit
> of shell:
>
> $ for f in $(grep -l define_cache_functions arch/arm/mm/*.S ); do
> sed -if sedscript $f
> git add $f
> done
> $ git commit -s
>
> Do that first, and then go over those which you need to add a real
> flush_kern_cache_louis function to.
Sure, that works better.
I was trying to think of a more localised way to do it, but the result
was admittedly rather ugly (and not that localised once we select
HAVE_ARM_CACHEFLUSH_LOUIS all over the place).
Cheers
---Dave
> 1,/__INITDATA\|define struct cpu_cache_fns/ {
> /ENTRY.*flush_kern_cache_all/ {
> h
> s/.*(\([^_]*\)_.*/\t.globl\t\1_flush_kern_cache_louis\n\t.equ\t\1_flush_kern_cache_louis, \1_flush_kern_cache_all\n/
> x
> }
> /__INITDATA\|define struct cpu_cache_fns/ {
> H
> g
> }
> }
WARNING: multiple messages have this Message-ID (diff)
From: dave.martin@linaro.org (Dave Martin)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 1/6] ARM: mm: define LoUIS API for cache maintenance ops
Date: Thu, 13 Sep 2012 15:02:20 +0100 [thread overview]
Message-ID: <20120913140220.GF2470@linaro.org> (raw)
In-Reply-To: <20120913130334.GI28448@n2100.arm.linux.org.uk>
On Thu, Sep 13, 2012 at 02:03:34PM +0100, Russell King - ARM Linux wrote:
> On Thu, Sep 13, 2012 at 12:39:49PM +0100, Dave Martin wrote:
> > We could introduce something like CONFIG_ARM_HAVE_CACHEFLUSH_LOUIS, and
> > do:
> >
> > <asm/glue-cache.h>
> > #ifndef MULTI_CACHE
> > #ifdef CONFIG_HAVE_ARM_CACHEFLUSH_LOUIS
> > #define __cpuc_flush_kern_cache_louis __glue(_CACHE,_flush_kern_cache_louis)
> > #else
> > #define __cpuc_flush_kern_cache_louis __glue(_CACHE,_flush_kern_all)
> > #endif
> > #endif
> >
> > <asm/cacheflush.h>
> > #ifdef MULTI_CACHE
> > #define flush_cache_louis() cpu_cache.flush_kern_cache_louis()
> > #else
> > #define flush_cache_louis() __cpuc_flush_kern_cache_louis()
> > #endif
>
> No, this is stupidly complicated and is fragile. Just alias the
> functions, like we do in cache-v4wt.S:
>
> .globl v4wt_dma_flush_range
> .equ v4wt_dma_flush_range, v4wt_dma_inv_range
>
> except, you'll need:
>
> .globl v4wt_flush_kern_cache_louis
> .equ v4wt_flush_kern_cache_louis, v4wt_flush_kern_cache_all
>
> You can do it automatically, using the attached sedscript and this bit
> of shell:
>
> $ for f in $(grep -l define_cache_functions arch/arm/mm/*.S ); do
> sed -if sedscript $f
> git add $f
> done
> $ git commit -s
>
> Do that first, and then go over those which you need to add a real
> flush_kern_cache_louis function to.
Sure, that works better.
I was trying to think of a more localised way to do it, but the result
was admittedly rather ugly (and not that localised once we select
HAVE_ARM_CACHEFLUSH_LOUIS all over the place).
Cheers
---Dave
> 1,/__INITDATA\|define struct cpu_cache_fns/ {
> /ENTRY.*flush_kern_cache_all/ {
> h
> s/.*(\([^_]*\)_.*/\t.globl\t\1_flush_kern_cache_louis\n\t.equ\t\1_flush_kern_cache_louis, \1_flush_kern_cache_all\n/
> x
> }
> /__INITDATA\|define struct cpu_cache_fns/ {
> H
> g
> }
> }
next prev parent reply other threads:[~2012-09-13 14:02 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-13 10:20 [RFC PATCH 0/6] ARM: augment cache flushing API Lorenzo Pieralisi
2012-09-13 10:20 ` Lorenzo Pieralisi
2012-09-13 10:20 ` [RFC PATCH 1/6] ARM: mm: define LoUIS API for cache maintenance ops Lorenzo Pieralisi
2012-09-13 10:20 ` Lorenzo Pieralisi
2012-09-13 11:39 ` Dave Martin
2012-09-13 11:39 ` Dave Martin
2012-09-13 13:03 ` Russell King - ARM Linux
2012-09-13 13:03 ` Russell King - ARM Linux
2012-09-13 14:02 ` Dave Martin [this message]
2012-09-13 14:02 ` Dave Martin
2012-09-13 12:36 ` Russell King - ARM Linux
2012-09-13 12:36 ` Russell King - ARM Linux
2012-09-13 12:57 ` Lorenzo Pieralisi
2012-09-13 12:57 ` Lorenzo Pieralisi
2012-09-13 10:20 ` [RFC PATCH 2/6] ARM: mm: add v7 cache LoUIS API implementation Lorenzo Pieralisi
2012-09-13 10:20 ` Lorenzo Pieralisi
2012-09-13 10:20 ` [RFC PATCH 3/6] ARM: mm: add v7 dcache level API Lorenzo Pieralisi
2012-09-13 10:20 ` Lorenzo Pieralisi
2012-09-13 10:20 ` [RFC PATCH 4/6] ARM: kernel: update cpu_suspend code to use cache LoUIS operations Lorenzo Pieralisi
2012-09-13 10:20 ` Lorenzo Pieralisi
2012-09-13 12:53 ` Dave Martin
2012-09-13 12:53 ` Dave Martin
2012-09-13 13:01 ` Shilimkar, Santosh
2012-09-13 13:01 ` Shilimkar, Santosh
2012-09-13 13:08 ` Russell King - ARM Linux
2012-09-13 13:08 ` Russell King - ARM Linux
2012-09-13 13:18 ` Shilimkar, Santosh
2012-09-13 13:18 ` Shilimkar, Santosh
2012-09-13 14:28 ` Lorenzo Pieralisi
2012-09-13 14:28 ` Lorenzo Pieralisi
2012-09-13 14:18 ` Lorenzo Pieralisi
2012-09-13 14:18 ` Lorenzo Pieralisi
2012-09-13 10:20 ` [RFC PATCH 5/6] ARM: kernel: update __cpu_disable to use cache LoUIS maintenance API Lorenzo Pieralisi
2012-09-13 10:20 ` Lorenzo Pieralisi
2012-09-13 10:20 ` [RFC PATCH 6/6] ARM: mm: update __v7_setup() to the new LoUIS cache " Lorenzo Pieralisi
2012-09-13 10:20 ` Lorenzo Pieralisi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120913140220.GF2470@linaro.org \
--to=dave.martin@linaro.org \
--cc=amit.kucheria@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=ccross@android.com \
--cc=daniel.lezcano@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=lorenzo.pieralisi@arm.com \
--cc=nicolas.pitre@linaro.org \
--cc=santosh.shilimkar@ti.com \
--cc=will.deacon@arm.com \
--cc=wzch@marvell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.