From: Jesper Nilsson <Jesper.Nilsson@axis.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Paul Mundt <lethal@linux-sh.org>,
"magnus.damm@gmail.com" <magnus.damm@gmail.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"jayakumar.lkml@gmail.com" <jayakumar.lkml@gmail.com>
Subject: Re: [PATCH] cris: add pgprot_noncached
Date: Tue, 23 Jun 2009 21:20:41 +0200 [thread overview]
Message-ID: <20090623192041.GH12383@axis.com> (raw)
In-Reply-To: <200906231455.31499.arnd@arndb.de>
On Tue, Jun 23, 2009 at 02:55:30PM +0200, Arnd Bergmann wrote:
> On cris, the high address bit controls caching, which means that
> we can add a pgprot_noncached() macro that sets this bit in the
> address.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>
> ---
>
> Jesper, does this patch make any sense to you? I could well
> be misunderstanding how cris works.
No, this looks good to me.
Do you want me to grab it for the CRIS tree or do you want
to keep it as a series?
> arch/cris/include/arch-v10/arch/mmu.h | 9 +++++----
> arch/cris/include/arch-v32/arch/mmu.h | 10 ++++++----
> arch/cris/include/asm/pgtable.h | 2 ++
> 3 files changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/arch/cris/include/arch-v10/arch/mmu.h b/arch/cris/include/arch-v10/arch/mmu.h
> index df84f17..e829e5a 100644
> --- a/arch/cris/include/arch-v10/arch/mmu.h
> +++ b/arch/cris/include/arch-v10/arch/mmu.h
> @@ -33,10 +33,10 @@ typedef struct
>
> /* CRIS PTE bits (see R_TLB_LO in the register description)
> *
> - * Bit: 31-13 12-------4 3 2 1 0
> - * ________________________________________________
> - * | pfn | reserved | global | valid | kernel | we |
> - * |_____|__________|________|_______|________|_____|
> + * Bit: 31 30-13 12-------4 3 2 1 0
> + * _______________________________________________________
> + * | cache |pfn | reserved | global | valid | kernel | we |
> + * |_______|____|__________|________|_______|________|_____|
> *
> * (pfn = physical frame number)
> */
> @@ -53,6 +53,7 @@ typedef struct
> #define _PAGE_VALID (1<<2) /* page is valid */
> #define _PAGE_SILENT_READ (1<<2) /* synonym */
> #define _PAGE_GLOBAL (1<<3) /* global page - context is ignored */
> +#define _PAGE_NO_CACHE (1<<31) /* part of the uncached memory map */
>
> /* Bits the HW doesn't care about but the kernel uses them in SW */
>
> diff --git a/arch/cris/include/arch-v32/arch/mmu.h b/arch/cris/include/arch-v32/arch/mmu.h
> index 6bcdc3f..a05b033 100644
> --- a/arch/cris/include/arch-v32/arch/mmu.h
> +++ b/arch/cris/include/arch-v32/arch/mmu.h
> @@ -28,10 +28,10 @@ typedef struct
> /*
> * CRISv32 PTE bits:
> *
> - * Bit: 31-13 12-5 4 3 2 1 0
> - * +-----+------+--------+-------+--------+-------+---------+
> - * | pfn | zero | global | valid | kernel | write | execute |
> - * +-----+------+--------+-------+--------+-------+---------+
> + * Bit: 31 30-13 12-5 4 3 2 1 0
> + * +-------+-----+------+--------+-------+--------+-------+---------+
> + * | cache | pfn | zero | global | valid | kernel | write | execute |
> + * +-------+-----+------+--------+-------+--------+-------+---------+
> */
>
> /*
> @@ -45,6 +45,8 @@ typedef struct
> #define _PAGE_VALID (1 << 3) /* Page is valid. */
> #define _PAGE_SILENT_READ (1 << 3) /* Same as above. */
> #define _PAGE_GLOBAL (1 << 4) /* Global page. */
> +#define _PAGE_NO_CACHE (1 <<31) /* part of the uncached memory map */
> +
>
> /*
> * The hardware doesn't care about these bits, but the kernel uses them in
> diff --git a/arch/cris/include/asm/pgtable.h b/arch/cris/include/asm/pgtable.h
> index 50aa974..1fcce00 100644
> --- a/arch/cris/include/asm/pgtable.h
> +++ b/arch/cris/include/asm/pgtable.h
> @@ -197,6 +197,8 @@ static inline pte_t __mk_pte(void * page, pgprot_t pgprot)
> static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
> { pte_val(pte) = (pte_val(pte) & _PAGE_CHG_MASK) | pgprot_val(newprot); return pte; }
>
> +#define pgprot_noncached(prot) __pgprot((pgprot_val(prot) | _PAGE_NO_CACHE))
> +
>
> /* pte_val refers to a page in the 0x4xxxxxxx physical DRAM interval
> * __pte_page(pte_val) refers to the "virtual" DRAM interval
/^JN - Jesper Nilsson
--
Jesper Nilsson -- jesper.nilsson@axis.com
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2009-06-23 19:20 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-14 13:28 [PATCH][RFC] mm: uncached vma support with writenotify Magnus Damm
2009-06-15 3:32 ` Paul Mundt
2009-06-22 22:15 ` Andrew Morton
2009-06-23 12:40 ` Arnd Bergmann
2009-06-23 12:41 ` [PATCH] asm-generic: add dummy pgprot_noncached() Arnd Bergmann
2009-06-23 12:55 ` Paul Mundt
2009-06-23 13:00 ` xtensa: add pgprot_noncached Arnd Bergmann
2009-06-23 13:07 ` m32r: define pgprot_noncached Arnd Bergmann
2009-06-23 12:55 ` [PATCH] cris: add pgprot_noncached Arnd Bergmann
2009-06-23 19:20 ` Jesper Nilsson [this message]
2009-06-23 20:07 ` Arnd Bergmann
2009-06-23 20:23 ` Jesper Nilsson
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=20090623192041.GH12383@axis.com \
--to=jesper.nilsson@axis.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=jayakumar.lkml@gmail.com \
--cc=lethal@linux-sh.org \
--cc=linux-mm@kvack.org \
--cc=magnus.damm@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 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).