[Top] [All Lists]

Re: how i can know the linux-mips implememt cache strategy?

To: Ralf Baechle <>
Subject: Re: how i can know the linux-mips implememt cache strategy?
From: Shane McDonald <>
Date: Sat, 21 Nov 2009 09:18:26 -0600
Cc: figo zhang <>,
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=Bj61smTqktMIiy1XqrDVT2z1QcJeWp2rLR3qlWgzeZM=; b=t+YyuxfnTXmWMDw5tfs2V2wCJixaNpNcC8Jwzh7VIbTH70nI9XScnhCBULWGmCZLEl puluwDCiXubiI7c1pt2ltGv/YVR+3B4WgL+7ccIre/JwtMc4UYxy8nTH+nawx3/EfTcR JARl/8eHJr8pqwrSN3cvYoWKcJ8wBzev8PDvA=
Domainkey-signature: a=rsa-sha1; c=nofws;; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=gAyEh5zZcuHNcP9KFs/cHutV4FWXqO8anSrvp+KXSudw2hBkMSpKRxNfqs6/nw0yvJ JsrnfhYB3/7Ddmhx0fH/Vp57vFhhC+hXXD7nouAKkmepa1EwMAO1oVGUUM74y9XFkUG4 jBnkys5vc8j4Vs7Nm/OAFW3GIFKmd0jje033s=
In-reply-to: <>
Original-recipient: rfc822;
References: <> <>
On Wed, Nov 18, 2009 at 5:44 AM, Ralf Baechle <> 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.
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,
but as Ralf said in,
"passing a CCA value on the command line is nothing a user should
ever, ever have to do".

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.


<Prev in Thread] Current Thread [Next in Thread>