Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Nov 2016 00:33:57 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        Adrian Chadd <adrian.chadd@gmail.com>,  "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>,  "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>,  "src-committers@freebsd.org" <src-committers@freebsd.org>,  "freebsd-mips@freebsd.org" <freebsd-mips@freebsd.org>
Subject:   Re: svn commit: r307626 - head/sys/ufs/ffs
Message-ID:  <CANCZdfpC6smeNSPKzpbX8aAnF8CZ%2BSEFQmQ74jqvWUVXrttM%2BQ@mail.gmail.com>
In-Reply-To: <20161113071911.GF54029@kib.kiev.ua>
References:  <201610191109.u9JB9TTC002727@repo.freebsd.org> <CAJ-Vmom5rYe89m7bch4qoHHq3X2e67pPk_7G2aRGrjSPNp5mzg@mail.gmail.com> <20161113065851.GD54029@kib.kiev.ua> <CANCZdfreg9wD-2pdGtzgeO86BptSE4M7LnLFTC09K3RHyHR8cQ@mail.gmail.com> <20161113071911.GF54029@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Nov 13, 2016 at 12:19 AM, Konstantin Belousov
<kostikbel@gmail.com> wrote:
> On Sun, Nov 13, 2016 at 12:12:02AM -0700, Warner Losh wrote:
>> On Sat, Nov 12, 2016 at 11:58 PM, Konstantin Belousov
>> <kostikbel@gmail.com> wrote:
>> > On Sat, Nov 12, 2016 at 03:19:13PM -0800, Adrian Chadd wrote:
>> >> hi!
>> >>
>> >> This broke freebsd on mips24k.
>> >>
>> >> BAD_PAGE_FAULT: pid 1 tid 100001 (init), uid 0: pc 0x4002a4 got a read
>> >> fault (type 0x2) at 0
>> >> Trapframe Register Dump:
>> >>     zero: 0    at: 0    v0: 0    v1: 0
>> >>     a0: 0x7fffeecc    a1: 0    a2: 0    a3: 0
>> >>     t0: 0    t1: 0    t2: 0    t3: 0
>> >>     t4: 0    t5: 0    t6: 0    t7: 0
>> >>     t8: 0    t9: 0x400260    s0: 0x10    s1: 0x2
>> >>     s2: 0x7fffeed0    s3: 0    s4: 0    s5: 0
>> >>     s6: 0    s7: 0    k0: 0    k1: 0
>> >>     gp: 0x4d55d0    sp: 0x7ffeee90    s8: 0    ra: 0
>> >>     sr: 0xfc13    mullo: 0    mulhi: 0    badvaddr: 0
>> >>     cause: 0x8    pc: 0x4002a4
>> >> Page table info for pc address 0x4002a4: pde = 0x809be000, pte = 0xa001acda
>> >> Dumping 4 words starting at pc address 0x4002a4:
>> >> 8c420000 14400003 00908021 8f828024
>> >> Page table info for bad address 0: pde = 0, pte = 0
>> > MIPS24k has split I/D caches, and both are VIPT, am I right ?
>> > I was not able to find the handling of cache aliasing in mips/pmap.c.
>> >
>> > Still, I am curious whether setting the loader tunable vfs.buf_pager_relbuf
>> > to 1 change anything.
>>
>> MIPS caches are such that creating two virtual mappings to the same
>> physical page will cause corruption. It's simply not allowed, at least
>> for the class of MIPS machines I used to bring up the port originally.
>
> Yes, caches are VIPT on 24k, according to the "MIPS32(R) 24K(R)
> Processor Core Family Software User's Manual " rev 3.11.  My question is,
> how is that handled in the mips pmap.c.  I was not able to locate
> the alias detection and prevention code, or e.g. switching to uncached mode
> for the page when aliasing is detected, after browsing pmap.

Aliases are not permitted. IIRC, there's no code that detects this
condition. One must simply never ever have multiple cached mappings of
a page at once. A quick glance at the code doesn't locate anything.

> Does FreeBSD/mips run with the caches enabled ?

Yes. The implementation is easier w/o caches enabled, but the
performance sucks too bad to even contemplate it except for debugging.

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfpC6smeNSPKzpbX8aAnF8CZ%2BSEFQmQ74jqvWUVXrttM%2BQ>