Subject: Re: micro-code and PCI
To: Steven Grunza <steven_grunza@ieee.org>
From: Eduardo Horvath <eeh@turbolinux.com>
List: tech-kern
Date: 07/27/2000 09:21:17
On Thu, 27 Jul 2000, Steven Grunza wrote:

> I'm writing a driver for a PCI board that requires microcode to be
> downloaded to it.  Has any kind of standard been created for doing
> this?  Mainly, where should the microcode be kept (/sys/dev/pci,
> /sys/microcode, ???).

Most of the microcode is currently in src/sys/dev/microcode.

> Also, I need to have the board DMA the micro-code from host memory. 
> Should the driver be given the name of the micro-code by the userland
> program or should the userland program open the file and pass the
> driver a pointer to the memory?  If the userland program passes a
> pointer to memory, it would seem that the driver will need to
> allocate wired memory, copy the data from userland, and then start
> the DMA.

Usually, microcode is compiled into the kernel.  How big is this microcode
image?

> If any one knows of a board (not necessarily PCI) that uses microcode
> downloaded from a file on the host's disk drive, let me know and I'll
> go read the code....

isp requires microcode, as well as the siop driver.

If you're debugging microcode I have found it useful to give the driver a
device node so you can copy the microcode to the driver when you build a
new image and don't have to rebuild and reboot the kernel.  But I don't
think this is a good idea for production code.  It's a huge security hole.

Eduardo Horvath