* [PATCH 0/2] BMIPS: trivial fixes
@ 2015-03-26 4:55 Florian Fainelli
2015-03-26 4:55 ` [PATCH 1/2] MIPS: BMIPS: Flush the readahead cache after DMA Florian Fainelli
2015-03-26 4:55 ` [PATCH 2/2] MIPS: BMIPS: restrict DTB selection to BMIPS_GENERIC Florian Fainelli
0 siblings, 2 replies; 5+ messages in thread
From: Florian Fainelli @ 2015-03-26 4:55 UTC (permalink / raw)
To: linux-mips; +Cc: ralf, cernekee, jaedon.shin, Florian Fainelli
Hi Ralf,
First patch is a respin of http://patchwork.linux-mips.org/patch/8848/ to fix
the build on MIPS64 platforms that you reported.
Second patch prevents a "choice" to be leaking to other MIPS platforms.
This is against upstream-sfr.git/mips-for-linux-next.
Thanks!
Florian Fainelli (1):
MIPS: BMIPS: restrict DTB selection to BMIPS_GENERIC
Kevin Cernekee (1):
MIPS: BMIPS: Flush the readahead cache after DMA
arch/mips/bmips/Kconfig | 4 ++++
arch/mips/include/asm/bmips.h | 2 +-
arch/mips/mm/dma-default.c | 15 +++++++++++++++
3 files changed, 20 insertions(+), 1 deletion(-)
--
2.1.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] MIPS: BMIPS: Flush the readahead cache after DMA
2015-03-26 4:55 [PATCH 0/2] BMIPS: trivial fixes Florian Fainelli
@ 2015-03-26 4:55 ` Florian Fainelli
2015-03-27 12:04 ` Ralf Baechle
2015-03-26 4:55 ` [PATCH 2/2] MIPS: BMIPS: restrict DTB selection to BMIPS_GENERIC Florian Fainelli
1 sibling, 1 reply; 5+ messages in thread
From: Florian Fainelli @ 2015-03-26 4:55 UTC (permalink / raw)
To: linux-mips; +Cc: ralf, cernekee, jaedon.shin, Florian Fainelli
From: Kevin Cernekee <cernekee@gmail.com>
BMIPS 3300/435x/438x CPUs have a readahead cache that is separate from
the L1/L2. During a DMA operation, accesses adjacent to a DMA buffer
may cause parts of the DMA buffer to be prefetched into the RAC. To
avoid possible coherency problems, flush the RAC upon DMA completion.
Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: Jaedon Shin <jaedon.shin@gmail.com>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/mips/include/asm/bmips.h | 2 +-
arch/mips/mm/dma-default.c | 15 +++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/arch/mips/include/asm/bmips.h b/arch/mips/include/asm/bmips.h
index 30939b02e3ff..866cdbecebbf 100644
--- a/arch/mips/include/asm/bmips.h
+++ b/arch/mips/include/asm/bmips.h
@@ -40,7 +40,7 @@
#define BMIPS_NMI_RESET_VEC 0x80000000
#define BMIPS_WARM_RESTART_VEC 0x80000380
-#define ZSCM_REG_BASE 0x97000000
+#define ZSCM_REG_BASE 0x97000000UL
#if !defined(__ASSEMBLY__)
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index af5f046e627e..38ee47acf06b 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -18,6 +18,7 @@
#include <linux/highmem.h>
#include <linux/dma-contiguous.h>
+#include <asm/bmips.h>
#include <asm/cache.h>
#include <asm/cpu-type.h>
#include <asm/io.h>
@@ -69,6 +70,20 @@ static inline struct page *dma_addr_to_page(struct device *dev,
*/
static inline int cpu_needs_post_dma_flush(struct device *dev)
{
+ if (boot_cpu_type() == CPU_BMIPS3300 ||
+ boot_cpu_type() == CPU_BMIPS4350 ||
+ boot_cpu_type() == CPU_BMIPS4380) {
+ void __iomem *cbr = BMIPS_GET_CBR();
+ u32 cfg;
+
+ /* Flush stale data out of the readahead cache */
+ cfg = __raw_readl(cbr + BMIPS_RAC_CONFIG);
+ __raw_writel(cfg | 0x100, cbr + BMIPS_RAC_CONFIG);
+ __raw_readl(cbr + BMIPS_RAC_CONFIG);
+
+ return 0;
+ }
+
return !plat_device_is_coherent(dev) &&
(boot_cpu_type() == CPU_R10000 ||
boot_cpu_type() == CPU_R12000 ||
--
2.1.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] MIPS: BMIPS: restrict DTB selection to BMIPS_GENERIC
2015-03-26 4:55 [PATCH 0/2] BMIPS: trivial fixes Florian Fainelli
2015-03-26 4:55 ` [PATCH 1/2] MIPS: BMIPS: Flush the readahead cache after DMA Florian Fainelli
@ 2015-03-26 4:55 ` Florian Fainelli
1 sibling, 0 replies; 5+ messages in thread
From: Florian Fainelli @ 2015-03-26 4:55 UTC (permalink / raw)
To: linux-mips; +Cc: ralf, cernekee, jaedon.shin, Florian Fainelli
Since we are always sourcing arch/mips/bmips/Kconfig and there is no
dependency on BMIPS_GENERIC, we will offer building BMIPS-related DTBs
while this is not relevant for the other MIPS platforms.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/mips/bmips/Kconfig | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/mips/bmips/Kconfig b/arch/mips/bmips/Kconfig
index 6ffc42cbb846..f35c84c019df 100644
--- a/arch/mips/bmips/Kconfig
+++ b/arch/mips/bmips/Kconfig
@@ -1,3 +1,5 @@
+if BMIPS_GENERIC
+
choice
prompt "Built-in device tree"
help
@@ -56,3 +58,5 @@ config DT_BCM97425SVMB
select BUILTIN_DTB
endchoice
+
+endif
--
2.1.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] MIPS: BMIPS: Flush the readahead cache after DMA
2015-03-26 4:55 ` [PATCH 1/2] MIPS: BMIPS: Flush the readahead cache after DMA Florian Fainelli
@ 2015-03-27 12:04 ` Ralf Baechle
2015-03-27 21:34 ` Kevin Cernekee
0 siblings, 1 reply; 5+ messages in thread
From: Ralf Baechle @ 2015-03-27 12:04 UTC (permalink / raw)
To: Florian Fainelli; +Cc: linux-mips, cernekee, jaedon.shin
On Wed, Mar 25, 2015 at 09:55:14PM -0700, Florian Fainelli wrote:
> From: Kevin Cernekee <cernekee@gmail.com>
>
> BMIPS 3300/435x/438x CPUs have a readahead cache that is separate from
> the L1/L2. During a DMA operation, accesses adjacent to a DMA buffer
> may cause parts of the DMA buffer to be prefetched into the RAC. To
> avoid possible coherency problems, flush the RAC upon DMA completion.
>
> Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
> Signed-off-by: Jaedon Shin <jaedon.shin@gmail.com>
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ---
> arch/mips/include/asm/bmips.h | 2 +-
> arch/mips/mm/dma-default.c | 15 +++++++++++++++
> 2 files changed, 16 insertions(+), 1 deletion(-)
I'm not keen on including platform-specific files that may blow up on
another platform. So what I suggest instead is something like rewriting
cpu_needs_post_dma_flush() to invoke a platform-specific hook function
plat_post_dma_flush() which would be defined in <asm/dma-coherence.h>
rsp. <mach/dma-coherence.h>.
I'm going to whip up something.
Ralf
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] MIPS: BMIPS: Flush the readahead cache after DMA
2015-03-27 12:04 ` Ralf Baechle
@ 2015-03-27 21:34 ` Kevin Cernekee
0 siblings, 0 replies; 5+ messages in thread
From: Kevin Cernekee @ 2015-03-27 21:34 UTC (permalink / raw)
To: Ralf Baechle; +Cc: Florian Fainelli, Linux MIPS Mailing List, Jaedon Shin
On Fri, Mar 27, 2015 at 5:04 AM, Ralf Baechle <ralf@linux-mips.org> wrote:
> On Wed, Mar 25, 2015 at 09:55:14PM -0700, Florian Fainelli wrote:
>
>> From: Kevin Cernekee <cernekee@gmail.com>
>>
>> BMIPS 3300/435x/438x CPUs have a readahead cache that is separate from
>> the L1/L2. During a DMA operation, accesses adjacent to a DMA buffer
>> may cause parts of the DMA buffer to be prefetched into the RAC. To
>> avoid possible coherency problems, flush the RAC upon DMA completion.
>>
>> Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
>> Signed-off-by: Jaedon Shin <jaedon.shin@gmail.com>
>> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
>> ---
>> arch/mips/include/asm/bmips.h | 2 +-
>> arch/mips/mm/dma-default.c | 15 +++++++++++++++
>> 2 files changed, 16 insertions(+), 1 deletion(-)
>
> I'm not keen on including platform-specific files that may blow up on
> another platform. So what I suggest instead is something like rewriting
> cpu_needs_post_dma_flush() to invoke a platform-specific hook function
> plat_post_dma_flush() which would be defined in <asm/dma-coherence.h>
> rsp. <mach/dma-coherence.h>.
>
> I'm going to whip up something.
Hi Ralf,
Regarding this patch:
http://git.linux-mips.org/cgit/ralf/upstream-sfr.git/commit/?id=47df84c7341a4816b69b784b01fce304a15777a2
The same change is also needed for mach-bcm63xx (in-tree) and
mach-brcmstb (out-of-tree). Somewhat confusingly, mach-bmips is a
"Generic BMIPS kernel" but it isn't the only platform which uses BMIPS
processors that have readahead caches.
I am hoping that someday mach-bmips will have support for all
mach-bcm63xx and mach-brcmstb platforms/peripherals, but we aren't
quite there yet.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-03-27 21:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-26 4:55 [PATCH 0/2] BMIPS: trivial fixes Florian Fainelli
2015-03-26 4:55 ` [PATCH 1/2] MIPS: BMIPS: Flush the readahead cache after DMA Florian Fainelli
2015-03-27 12:04 ` Ralf Baechle
2015-03-27 21:34 ` Kevin Cernekee
2015-03-26 4:55 ` [PATCH 2/2] MIPS: BMIPS: restrict DTB selection to BMIPS_GENERIC Florian Fainelli
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.