All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ralf Baechle <ralf@linux-mips.org>
To: Shane McDonald <mcdonald.shane@gmail.com>
Cc: figo zhang <figo1802@gmail.com>, linux-mips@linux-mips.org
Subject: Re: how i can know the linux-mips implememt cache strategy?
Date: Sat, 21 Nov 2009 23:31:17 +0000	[thread overview]
Message-ID: <20091121233117.GA12502@linux-mips.org> (raw)
In-Reply-To: <b2b2f2320911210718j5909c151s3286f715d0ab39db@mail.gmail.com>

On Sat, Nov 21, 2009 at 09:18:26AM -0600, Shane McDonald wrote:

> > The kernel will always use cache stategy 3 for non-coherent systems and
> > caching strategy 5 for cache coherent systems.  These two select the most
> > aggressive caching strategy on all processors and that's what gives the
> > best performance.
> 
> OK, dumb question -- how is this implemented?  Poking through the code,
> it looks to me that the cache strategy used comes from the K0 field of the
> coprocessor 0 Config register, which I think is whatever gets set up by
> the bootloader, or if that wasn't done, the default value of that
> field for the processor.

The K0 field's value after reset is undefined btw.  The kernel assumes that
the firmware on a particular platforms knows the the right values and
just uses it.

> See function coherency_setup() in arch/mips/mm/c-r4k.c:
> 
>         if (cca < 0 || cca > 7)
>                 cca = read_c0_config() & CONF_CM_CMASK;
>         _page_cachable_default = cca << _CACHE_SHIFT;
> 
> This can be overridden on the kernel command line with the "cca" parameter,

This is a special feature for MTI's multi-core product.  Tbh, I can't quite
recall why it was added but I have faint memories of this being required
to work around a miss-features in early revisions of PMON for it.  In the
best spirit of free software the cca= command line argument however is
available for anybody to shoot themselves into their feet.  It'd probably
be quite interesting to try a few benchmarks.

> but as Ralf said in
> http://www.linux-mips.org/archives/linux-mips/2008-06/msg00186.html,
> "passing a CCA value on the command line is nothing a user should
> ever, ever have to do".

Because users almost certainly don't understand the implications.  I mean
having to know ISA interrupts was stupid yet comparably trivial ...

> I can see how this was implemented in 2.6.25, but commit 3513369
> [MIPS] Allow setting of the cache attribute at run time, seems to have changed
> from the behaviour Ralf described.

  Ralf

      reply	other threads:[~2009-11-21 23:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-18  2:59 how i can know the linux-mips implememt cache strategy? figo zhang
2009-11-18 11:44 ` Ralf Baechle
2009-11-21 15:18   ` Shane McDonald
2009-11-21 23:31     ` Ralf Baechle [this message]

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=20091121233117.GA12502@linux-mips.org \
    --to=ralf@linux-mips.org \
    --cc=figo1802@gmail.com \
    --cc=linux-mips@linux-mips.org \
    --cc=mcdonald.shane@gmail.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.