sparc64/141918: [ehci] ehci_interrupt: unrecoverable error,
controller halted (sparc64)
Manuel Tobias Schiller
mala at hinterbergen.de
Tue Apr 3 08:40:03 UTC 2012
The following reply was made to PR sparc64/141918; it has been noted by GNATS.
From: Manuel Tobias Schiller <mala at hinterbergen.de>
To: Marius Strobl <marius at alchemy.franken.de>
Cc: bug-followup at FreeBSD.org
Subject: Re: sparc64/141918: [ehci] ehci_interrupt: unrecoverable error,
controller halted (sparc64)
Date: Tue, 3 Apr 2012 10:37:14 +0200
--Sig_/LIPyAG/wO3sJYsP6CnQl2.=
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable
On Mon, 2 Apr 2012 10:43:14 +0200
Manuel Tobias Schiller <mala at hinterbergen.de> wrote:
> On Mon, 2 Apr 2012 01:00:56 +0200
> Manuel Tobias Schiller <mala at hinterbergen.de> wrote:
>=20
> > On Sun, 1 Apr 2012 12:41:24 +0200
> > Marius Strobl <marius at alchemy.franken.de> wrote:
> >=20
> > > Well, the individual patches shouldn't make things worse except for
> > > the second one causing more memory to be used so I'd suggest to
> > > combine them. If in the end things actually work we still can check
> > > what changes are needed for that.
> > > Looking at the Linux USB code, the FreeBSD one doesn't some to honor
> > > some DMA constraints and at least for the alignment it's actually
> > > hard to follow what value eventually is used. One thing that stands
> > > out is that for EHCI, the boundary is 4096. This is most easily
> > > fixed by defining USB_PAGE_SIZE to 4096 in sys/dev/usb/usb_busdma.h.
> > >=20
> > > Marius
> >=20
> > Ok, the second patch on its own doesn't appear to work either, so I'm
> > trying the combination of patches now. By the way: defining
> > USB_PAGE_SIZE to 4096 in sys/dev/usb/usb_busdma.h is a bad idea - the
> > kernel panics with a backtrace pointing into the mmu-related code.
> > Probably has to do with sparc64 mmu only supporting 8k pages, so I'm
> > not terribly surprised... Ok, I'm waiting for the next make
> > buildkernel to finish, and I'll let you know what comes out.
> >=20
> > Manuel
>=20
> Ok, I also tested a kernel with both patches, and the issue persists. Do
> you have something else to try?
>=20
> Manuel
>
Hi Marius,
I did a bit of code reading (/usr/src/sys/dev/usb/controller/ehci.c near
line 1494), and I realised that the "unrecoverable error" message should
only be triggered if the EHCI status register has the EHCI_STS_HCH bit
set - according to the status word dump in my log, it is not set (just
after the "unrecoverable error" message). The register dump re-reads the
status register from the hardware. Could it be that some controllers have
a glitch or something on that particular bit, and we better re-read the
status register before we conclude that the controller "really wanted to
set that bit"?
I can also see that the bit is set in the original bug report. I don't
know if that machine is just faster (and the bit has not had the time to
clear yet), or if we're talking about two different problems here...
(This observation might also indicate that small delay loop has to put
in before I re-read the status register - we'll have to see...)
I'm building a kernel with that modification, but I'd be interested in
a second opinion nevertheless...
Cheers,
Manuel
--=20
Homepage: http://www.hinterbergen.de/mala
OpenPGP: 0xA330353E (DSA) or 0xD87D188C (RSA)
--Sig_/LIPyAG/wO3sJYsP6CnQl2.=
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iQGcBAEBAgAGBQJPera6AAoJEEPbVOqHHK4gOjkL/iKagzBm/KtB2K/lY882sK8L
vkEnj4Ch5OjiauR/vWFIby23RSLJLqDGi15HCS7Ke7hEDDQjc6PhkbKfbHszIgQB
MCaNbIWh+AAwGb0MXuMyCy2s9eDPwf7QULEyzg9Ib1RaXa2Ty5kSQny3qsxKRC8y
ab+e+qFjKuqx+etzZQAc+qdYHZ/CgdoyXzrdr92CG1sjsywrcRYKzJIiBYoPbEfv
kDhRpu0w2OuSD0Z5CMH8LAZsGWnOGwJHKotOUcp4kaat7CwqjamLfuKRjnqzEcK7
mDvuUYLuq9LwrgqfhwgLltjhQ0Zogs61AizRtyw3MeAQ6OjalbcNnBGhOzEVakZm
tSGYgEulLySN/U4VCF5Dc01rMQ1nFUov1SsENhyfPkHpwHwqURGZC2W0NYbM/13/
wyK1waHulwFXk2XSyjpOlY5n8IrwYRp+SGKGM4mzWjwSfiFGmM0r8IOmpCVxbTPL
ZE1fECnn7sjehI+GSuYbQgtgTawr+r0VF9Mr8hbyzg==
=6AsC
-----END PGP SIGNATURE-----
--Sig_/LIPyAG/wO3sJYsP6CnQl2.=--
More information about the freebsd-sparc64
mailing list