Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Feb 2010 22:45:37 +0530
From:      "C. Jayachandran" <c.jayachandran@gmail.com>
To:        Randall Stewart <rrs@lakerest.net>
Cc:        Jayachandran C <jayachandranc@netlogicmicro.com>, Harrison Zou <hzou@netlogicmicro.com>, Warner Losh <imp@freebsd.org>, freebsd-mips@freebsd.org
Subject:   Re: RMI status
Message-ID:  <98a59be81002110915l2fa64189g28f13f8ad39c9584@mail.gmail.com>
In-Reply-To: <A718B150-C815-414E-947D-9FD94830DD7D@lakerest.net>
References:  <5709963B-3F83-44FE-991F-A3227A2052DC@lakerest.net> <98a59be81002110655y60ab4e8cj473f4b6ecf6f5ae4@mail.gmail.com> <A718B150-C815-414E-947D-9FD94830DD7D@lakerest.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Feb 11, 2010 at 9:08 PM, Randall Stewart <rrs@lakerest.net> wrote:
>>
>> I usually try buildworld with '-j16' to stress the system, I got the
>> crash after a few hours of buildworld. Anyway I will update to the
>> latest trunk, remove my local changes and see if I get the same issue.
>> If I can get it to crash consistently on my setup, I'll do some more
>> work on this.
>
> Ahh.. I don't use a -jN since there is only one core
> currently... That would use more memory... maybe running
> the kernel out of memory below the magic 512Meg mark. If that
> happens things will break...
>

I think you are right - I added the following patch (probably
whitespace damaged) to trap this case and it certainly seems to get
pages above 256M before it crashed(on XLR the default bootloader maps
physmem from 0-256M after that is IO and flash mapping).

Index: sys/mips/mips/pmap.c
===================================================================
--- sys/mips/mips/pmap.c        (revision 203767)
+++ sys/mips/mips/pmap.c        (working copy)
@@ -1049,6 +1049,9 @@

        pmap->pm_segtab = (pd_entry_t *)
            MIPS_PHYS_TO_CACHED(VM_PAGE_TO_PHYS(ptdpg));
+       if (VM_PAGE_TO_PHYS(ptdpg) > 0x10000000)
+               printf("PM segtab pa=%lx va=%lx\n",
(u_long)VM_PAGE_TO_PHYS(ptdpg),
+                                (u_long)pmap->pm_segtab);
        if ((ptdpg->flags & PG_ZERO) == 0)
                bzero(pmap->pm_segtab, PAGE_SIZE);

@@ -1116,6 +1119,8 @@

        ptepa = VM_PAGE_TO_PHYS(m);
        pteva = MIPS_PHYS_TO_CACHED(ptepa);
+       if (ptepa > 0x10000000)
+               printf("Bad page allocated ptepa=%lx pteva %lx\n",
(u_long)ptepa, (u_long)pteva);
        pmap->pm_segtab[ptepindex] = (pd_entry_t)pteva;

        /*

got the following prints:

Bad page allocated ptepa=3f401000 pteva bf401000
Bad page allocated ptepa=3f402000 pteva bf402000
Bad page allocated ptepa=3f403000 pteva bf403000
PM segtab pa=3f404000 va=bf404000
Bad page allocated ptepa=3f405000 pteva bf405000
Bad page allocated ptepa=3f406000 pteva bf406000
Bad page allocated ptepa=3f407000 pteva bf407000
Bad page allocated ptepa=3f408000 pteva bf408000
Bad page allocated ptepa=3f409000 pteva bf409000
PM segtab pa=3f40a000 va=bf40a000
Bad page allocated ptepa=3f40b000 pteva bf40b000
Bad page allocated ptepa=3f40c000 pteva bf40c000
Bad page allocated ptepa=3f40d000 pteva bf40d000
Bad page allocated ptepa=3f40e000 pteva bf40e000

I am checking things again to see I haven't missed anything.
JC.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?98a59be81002110915l2fa64189g28f13f8ad39c9584>