From: torvalds@transmeta.com (Linus Torvalds)
To: linux-kernel@vger.kernel.org
Subject: Re: Transmeta and Linux-2.4.0-test12-pre3
Date: 1 Dec 2000 21:09:25 -0800 [thread overview]
Message-ID: <90a065$5ai$1@penguin.transmeta.com> (raw)
In-Reply-To: <200012020409.UAA04058@adam.yggdrasil.com>
In article <200012020409.UAA04058@adam.yggdrasil.com>,
Adam J. Richter <adam@yggdrasil.com> wrote:
>
> Well, alas, it appears that linux-2.4.0-test12-pre3 freezes hard
>while reading the base address registers of the first PCI device
>(the "host bridge"). Actually, I think the problem is some kind of
>system management interrupt occuring at about this time, since the
>exact point where the printk's stop gets earlier as I add more
>printk's.
This is due to a Linux bug, where we disable the northbridge while we do
the PCI window probes.
[ I actually suspected for a while that we'd messed up at Transmeta, but
after talking with and double-checking the PCI specs, it turns out
that Linux really was at fault. Oh, well. Whichever way I turn, I'm
always to blame ;) ]
What happens is that the Sony notebook has Legacy USB support on in the
BIOS, which causes USB DMA events several thousand times a second. When
Linux does PCI probing, Linux will turn off the MEM and IO bits in the
PCI command register of the device it probes. It so happens that
according to the PCI spec, turning off the MEM bit of the host bridge
(aka "northbridge") disconnects the host from the PCI bus.
A few microseconds later a USB legacy DMA event comes in, but now the
host bridge no longer forwards the DMA between the PCI bus and memory,
and the machine hangs. Oops.
The simplest (working) solution is to remove the jiggering with the PCI
command register IO and MEM bits in drivers/pci/pci.c: pci_read_bases().
The proper fix (which we discussed with Martin Mares and Richard
Henderson) is actually to do the full bus enumeration first, _without_
doing any window probes (and thus without having to muck with the IO and
MEM bits in the command register), and when we find the offending USB
controller that the BIOS has left active, we kill it off first (we
already have this in the PCI quirks section, it's just that the PCI
quirks get executed too late to fix this problem as it is now).
> One sin that I am committing in these builds is that I am bulding
>them under gcc-2.95.2, although I do not think this is the sort of
>behavior that an optimizer bug is likely to produce.
Nope, this is completely unrelated.
> If anyone out there is using Linux 2.4.0-test on a Sony
>PictureBook PCG-C1VN (the Transmeta version), I would be interested in
>at least trying to build from your .config file.
>
> Memo to Transmeta management: buy Linus a PictureBook. :-)
Actually, I have one, and have had one for about two weeks, but because
of the newest (human) addition to the Torvalds family I didn't have any
time to debug this until the day before yesterday.
NOTE! Getting the 2.4.x kernel up and running is the easy part. The
machine also has a very recent ATI Rage Mobility chip in it, and you
need the newest XFree86 CVS snapshot to make it work (along with a
one-liner patch from me, unless that has already made it into the CVS
tree by now).
Even then XFree86 does something bad with DPMS, and will lock up the
graphics chipset when it tries to shut down the flat panel display.
Solution: don't enable DPMS is XF86Config. That's an XFree86 problem,
but happily easily worked around.
Oh, and there's a UHCI driver bug that will bite you (again because the
machine has legacy USB enabled by default - and unlike almost every
other laptop out there, Sony didn't allow USB legacy code to be turned
off in the BIOS setup), so unless you've applied the USB patches from
the USB mailing list you'll just hang there instead.
Anyway, I do have this machine working now, although not everything is
to my liking. Unlike older picture-books, for example, this one has a
WinModem. Ugh. And the sound chip is supported, but only by the ALSA
driver (the OSS version is too broken to be used).
But the camera is cool, and works beautifully (once you get XFree86
happy) thanks to Andrew Tridgell. (If I could just coax the X server
into giving my a YUV overlay I could play DVD's with this thing).
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2000-12-02 5:41 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-12-02 4:09 Transmeta and Linux-2.4.0-test12-pre3 Adam J. Richter
2000-12-02 4:55 ` H. Peter Anvin
2000-12-02 5:45 ` Can CMS be upgraded? -- " Miles Lane
2000-12-02 5:09 ` Linus Torvalds [this message]
2000-12-02 7:27 ` Linus Torvalds
2000-12-02 9:55 ` Transmeta and Linux-2.4.0-test12-pre3 [slightly off-topic] Ion Badulescu
2000-12-03 3:01 ` Linus Torvalds
2000-12-03 3:00 ` how to compile redhat6.0 kernel Mourad Lakhdar
2000-12-03 3:25 ` Paul Schulz
2000-12-03 14:40 ` Pete Keller
2000-12-02 13:04 ` Transmeta and Linux-2.4.0-test12-pre3 Alan Cox
2000-12-03 8:23 ` Linus Torvalds
2000-12-02 20:08 ` Aaron Lehmann
2000-12-02 22:35 ` Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='90a065$5ai$1@penguin.transmeta.com' \
--to=torvalds@transmeta.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox