From: Ralf Baechle <ralf@linux-mips.org>
To: Rojhalat Ibrahim <ibrahim@schenk.isar.de>
Cc: linux-mips@linux-mips.org
Subject: Re: More than 512MB of memory
Date: Tue, 8 Feb 2005 00:17:42 +0000 [thread overview]
Message-ID: <20050208001742.GA15336@linux-mips.org> (raw)
In-Reply-To: <42072264.6000001@schenk.isar.de>
On Mon, Feb 07, 2005 at 09:10:12AM +0100, Rojhalat Ibrahim wrote:
> With a slightly extended patch it actually works. But afterwards
> I get a lot of Illegal instructions and Segmentation faults, where
> there shouldn't be any. Below is the patch I used.
> --- linux/arch/mips/mm/c-r4k.c 2005-01-03 10:23:27.000000000 +0100
> +++ linux-2.6.10/arch/mips/mm/c-r4k.c 2005-02-07 09:04:27.000000000 +0100
> @@ -566,9 +566,17 @@
>
> if (!cpu_has_ic_fills_f_dc) {
> unsigned long addr = (unsigned long) page_address(page);
> - r4k_blast_dcache_page(addr);
> + if (addr)
> + r4k_blast_dcache_page(addr);
> + else
> + r4k_blast_dcache();
> if (!cpu_icache_snoops_remote_store)
> - r4k_blast_scache_page(addr);
> + {
> + if (addr)
> + r4k_blast_scache_page(addr);
> + else
> + r4k_blast_scache();
> + }
> ClearPageDcacheDirty(page);
> }
Blowing away the entire S-cache is extreme overkill. We really want to
avoid this if possible as it'll have serious performance impact. As for
the RM9000 that means we have a struct page pointer, therefore we know
the physical address of the page and can perform a selective flush on the
second level cache. See below for a patch which tries that.
Obviously this one only tries to optimize performance a bit further but
doesn't really solve the remaining problem.
Ralf
Index: arch/mips/mm/c-r4k.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/mm/c-r4k.c,v
retrieving revision 1.101
diff -u -r1.101 c-r4k.c
--- arch/mips/mm/c-r4k.c 7 Feb 2005 21:53:39 -0000 1.101
+++ arch/mips/mm/c-r4k.c 8 Feb 2005 00:18:17 -0000
@@ -566,9 +566,21 @@
if (!cpu_has_ic_fills_f_dc) {
unsigned long addr = (unsigned long) page_address(page);
- r4k_blast_dcache_page(addr);
- if (!cpu_icache_snoops_remote_store)
- r4k_blast_scache_page(addr);
+
+ if (addr)
+ r4k_blast_dcache_page(addr);
+ else
+ r4k_blast_dcache();
+
+ if (!cpu_icache_snoops_remote_store) {
+ if (addr)
+ r4k_blast_scache_page(addr);
+ else {
+ addr = page_to_pfn(page) << PAGE_SHIFT;
+ addr = CKSEG + (addr & ~((1UL << 24) - 1));
+ r4k_blast_scache_page_indexed(addr);
+ }
+ }
ClearPageDcacheDirty(page);
}
next prev parent reply other threads:[~2005-02-08 0:23 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-18 14:44 More than 512MB of memory Rojhalat Ibrahim
2005-01-18 15:49 ` Manish Lachwani
2005-01-18 17:13 ` Rojhalat Ibrahim
2005-02-03 15:35 ` Ralf Baechle
2005-02-03 18:20 ` Manish Lachwani
2005-02-04 0:01 ` Ralf Baechle
2005-02-04 0:40 ` Ralf Baechle
2005-02-07 8:10 ` Rojhalat Ibrahim
2005-02-08 0:17 ` Ralf Baechle [this message]
2005-02-08 9:57 ` Rojhalat Ibrahim
2005-02-09 0:06 ` Ralf Baechle
2005-02-09 8:06 ` Rojhalat Ibrahim
2005-02-10 13:40 ` Ralf Baechle
2005-02-10 14:54 ` Rojhalat Ibrahim
2005-02-10 15:10 ` Rojhalat Ibrahim
2005-02-09 15:41 ` Rojhalat Ibrahim
2005-02-09 18:14 ` Ralf Baechle
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=20050208001742.GA15336@linux-mips.org \
--to=ralf@linux-mips.org \
--cc=ibrahim@schenk.isar.de \
--cc=linux-mips@linux-mips.org \
/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