Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Dec 2015 21:02:23 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        "freebsd-mips@freebsd.org" <freebsd-mips@freebsd.org>
Subject:   L2 cache management and busdma - or, "damnit USB, who you not like me"
Message-ID:  <CAJ-Vmo=0E2%2B6=2JKROvw7i92qsrgoSnH0tDYSDLBk8s%2Bs6nEJQ@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
hi,

I've been poking at the ci20 port to bring it up to
self-booting/running, and this involves using USB1 as a rootfs. Yeah,
I know, ohci, but that's what I have for now.

Anyway, there was filesystem corruption, so I went digging into it and
found that we just weren't taking L2 cache line size into account when
doing the busdma bits. The JZ4780 SoC has 32 byte L1 lines, and 128
byte L2 lines. Oops!

So, two things are needed:

* for the ci20 port, which isn't in the mainline tree yet, we need to
use USB_HOST_ALIGN=128, and
* we need to teach the busdma code about the maximum line size, not
just the L1 line size.

Here's a diff that does the latter:

https://people.freebsd.org/~adrian/mips/mips-fix-dcache-busdma.diff

I'm going to test this out on my L1-only platforms (read: atheros) tomorrow.

Does anyone have any comments?

Thanks!


-a



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmo=0E2%2B6=2JKROvw7i92qsrgoSnH0tDYSDLBk8s%2Bs6nEJQ>