lkml.org 
[lkml]   [1999]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [linux-fbdev] Re: atyfb with 2.3.30 ond x86
On 10 Dec 1999, Peter Samuelson wrote:

>
> [Jim Nance <jnance@nortelnetworks.com>]
> > I think there is some sort of spec that wants the init code to be
> > written in forth so you can make a PCI card that will work on both
> > the Mac and the PC. I have not heard much about it lately so I don't
> > know if anyone does this or not.
>
> Sounds like Open Firmware. It was designed for *exactly* this problem:
> initializing a peripheral at boot time on multiple platforms. I don't
> know who all jumped on that bandwagon but a lot of PowerPC people did
> (I know of PowerMacs and some RS/6000s). Intel platforms (surprise!)
> never bothered....
>
> Peter

But they do! They started the idea back in the '60s with the check-summed
PROMS for "feature" cards. At 2k addresses, starting at A0000, a header
of:
0xaa55 (id)
0xnn (checksum length / 256)
entry point.

If such a header was found by POST, a call to offset 3 in the PROM
would allow the PROM code to get control, initialize the special device,
set vectors into the interrupt table, then return to POST. This is
how, even today, screen cards and SCSI cards are initialized.

The problem is that the PROM stuff is 'real-mode' OFFSET:SEGMENT stuff.
It was not designed for 32-bit execution. If you are satisfied with
booting DOS, you will find that everything is already initialized for
you if the "feature-card" has a built-in BIOS.

With Linux and other 32-bit (later 64-bit) OSs, the hardware is still
initialized upon startup until Linux gets control. Then its own drivers
access the devices without using the 16-bit BIOS even if present.

The main BIOS at 0xf0000 usually has bugs. Linux does a lot to work
around the bugs. In particular, the amount of memory reported is often
wrong. In fact, when the board BIOSs were written, it is unlikely that
they were ever even tested at the amounts of memory available now. Look
at the BIOS date shown upon startup on most boards for a "brand-new"
board. It's usually several years old. Two years ago, you couldn't get
RAM 'sticks' of the size available now. Two years ago, four filled P100
RAM sockets provided only 128 x 4 = 512 megabytes of RAM. Surely the
BIOS was never tested at the 1 - 4 gigabytes available now.

Cheers,
Dick Johnson

Penguin : Linux version 2.3.13 on an i686 machine (400.59 BogoMips).
Warning : The end of the world as we know it requires a new calendar.
Seconds : 1846189 (until Y2K)


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:55    [W:0.058 / U:0.036 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site