From: David Gibson <david@gibson.dropbear.id.au>
To: Allen Curtis <acurtis@onz.com>
Cc: Matt Porter <porter@cox.net>, Andrew May <acmay@acmay.homeip.net>,
linuxppc-embedded@lists.linuxppc.org
Subject: Re: very minor 405GP and 405GPr PCI difference
Date: Wed, 9 Oct 2002 12:10:31 +1000 [thread overview]
Message-ID: <20021009021031.GP32555@zax> (raw)
In-Reply-To: <NCBBIINEHIPFGJPLBEIFOEPEDMAA.acurtis@onz.com>
On Mon, Oct 07, 2002 at 11:19:31PM -0700, Allen Curtis wrote:
>
> > As Matt says, this would fall out naturally from a better control
> > structure. Howeever, I tend to think that leaving things like this to
> > the bootloader/firmware is a bad idea:
> >
> > The kernel has to know how PCI addresses are mapped anyway, so this
> > becomes yet another point at which the kernel and firmware are bound
> > together. Why should the kernel have code to deal with umpteen
> > different cases of how PCI might have been set up, or not set up by
> > the firmware/bootloader, when it can just take control of the host
> > bridge and reprogram it how it wants? Once the debugging cruft comes
> > out, it should only be a couple of hundred bytes of code.
>
> I believe that there are many cases where the kernel code is much too
> aggressive with configuration. Personally I believe that all BIOS code
> should totally initialize the processor state so you always have a known
> starting point. (whether you boot Linux or not) Many times I have had to
> track down where the kernel thinks it "knows" the proper configuration and
> unravels the work done by the BIOS. I am not sure how to solve this problem
> but I believe the kernel should attempt to detect and use a configuration
> before reconfiguring any hardware. I have implemented this technique in our
> UART and Ethernet configuration stuff on the 8260 with good success.
This is a nice idea in principle, but IMO it is flawed in practice.
The unfortunate truth is that firmwares are all too frequently broken
in one or more ways (this is not only true for embedded - think APM or
ACPI, or the many buggy OF implementations). So we need code to
handle (at least some) cases where the firmware setup is incomplete,
or the firmware provides incorrect information. Worse, in many cases
a new revision of the firmware will remove some bugs but add some new
ones - which mean workarounds tailored to doing a minimum fixup for a
particular BIOS are very fragile.
Given that, how much is really to be gained by carefully tailoring a
kernel to the brokenness or lack thereof of a particular platform's
firmware - as opposed to just always handling the setup ourselves,
putting the device into a known state.
Incidentally the case of a UART is quite different from PCI: you can
use a UART without knowing how it is configured, that way you can
leave the selection of baud rate (for example) up to firmware
configuration and just use its setup - i.e. in this case there is a
tangible benefit from leaving the work up to the firmware. In the
case of PCI we have to know what the windows are in order to use the
device, so we must know precisely how the firmware has set the bridge
up, in which case why don't we just set it up that way ourselves.
--
David Gibson | For every complex problem there is a
david@gibson.dropbear.id.au | solution which is simple, neat and
| wrong.
http://www.ozlabs.org/people/dgibson
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
next prev parent reply other threads:[~2002-10-09 2:10 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-27 12:27 very minor 405GP and 405GPr PCI difference Ralph Blach
2002-09-30 4:01 ` David Gibson
2002-10-01 5:21 ` David Gibson
2002-10-01 8:37 ` "David Müller (ELSOFT AG)"
2002-10-02 1:42 ` David Gibson
2002-10-02 4:26 ` Allen Curtis
2002-10-02 5:34 ` David Gibson
2002-10-02 17:03 ` Matt Porter
2002-10-03 1:10 ` David Gibson
2002-10-03 15:14 ` Matt Porter
2002-10-04 2:48 ` David Gibson
2002-10-04 18:33 ` Todd Poynor
2002-10-08 4:17 ` David Gibson
2002-10-08 19:39 ` Todd Poynor
2002-10-09 2:14 ` David Gibson
[not found] ` <20021 <20021023040850.GC1198@zax>
2002-10-24 23:50 ` Ralph Blach
2002-10-25 1:19 ` David Gibson
2002-10-02 7:46 ` "David Müller (ELSOFT AG)"
2002-10-03 1:12 ` David Gibson
2002-10-03 8:28 ` "David Müller (ELSOFT AG)"
2002-10-06 5:23 ` Andrew May
2002-10-07 1:31 ` Matt Porter
2002-10-08 4:14 ` David Gibson
2002-10-08 5:21 ` Andrew May
2002-10-08 14:56 ` Matt Porter
2002-10-08 17:31 ` Andrew May
2002-10-08 18:20 ` Matt Porter
2002-10-09 1:58 ` David Gibson
2002-10-09 10:35 ` Kenneth Johansson
2002-10-09 15:21 ` Allen Curtis
2002-10-11 19:37 ` Andrew May
2002-10-14 1:20 ` David Gibson
2002-10-08 6:19 ` Allen Curtis
2002-10-08 15:18 ` Matt Porter
2002-10-09 2:10 ` David Gibson [this message]
2002-10-22 21:55 ` Todd Poynor
2002-10-23 4:08 ` David Gibson
-- strict thread matches above, loose matches on Subject: below --
2002-10-23 13:10 Ralph Blach
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=20021009021031.GP32555@zax \
--to=david@gibson.dropbear.id.au \
--cc=acmay@acmay.homeip.net \
--cc=acurtis@onz.com \
--cc=linuxppc-embedded@lists.linuxppc.org \
--cc=porter@cox.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.