On 07/19/2013 12:42 AM, Manuel Lauss wrote:
On 07/18/2013 11:34 PM, Manuel Lauss wrote:
My goal is to run a standard Debian kernel and its octeon variant on
the Ubiquity EdgeRouter Lite. The ERLite needs a couple of patches
to boot and work (octeon-ethernet patch, octeon-usb driver) but these
are already merged 3.11 and I'll file Debian bugs to enable those
1: e.g. http://packages.debian.org/sid/linux-image-3.10-1-octeon
However, when trying to boot a standard Debian kernel in the ERLite I
get a 7s delay followed by an oops for a Data bus error on
and ending up with a panic. It looks like the kernel is built with
CONFIG_SERIO_I8042=y. The Octeon machine Debian owns prints "i8042: No
controller found" but works nevertheless. This isn't the case with the
ERLite; I tried 3.2 & 3.10 and got the same oops which went away as
as I disabled CONFIG_SERIO_I8042.
Are there even any octeon machines with i8042 anyway? Should I request
for the setting to be disabled irrespective of this bug?
Yes. There is a rare board called NAC38 that was produced by ASUS
in a 1U chassis. I don't think it is important to support this, so
the best thing seems to be not to enable SERIO_I8042
I think the real bug here is that IO space does not get properly
initialized on Octeon when there is no PCI? So any drivers trying to
probe IO space will produce some interesting results.
This is not specific to Octeon, I've seen it on Alchemy as well. A lot of
drivers, coming from x86, simply assume that x86-Port-IO space is
always available without having to map it first. I'd say it's a bug in
the various drivers.
Drivers don't have to map I/O space in any way, it's a complete nonsense.
isn't that what ioport_map is for?
ioport_map() permits to use ioread*()/iowrite*(). in*()/out*() don't need
it. It's a job of the arch platform code to map I/O ports into specific memory
range if true I/O space doesn't exist.