diff options
Diffstat (limited to 'qemu/roms/openbios/utils/devbios/README.bios')
-rw-r--r-- | qemu/roms/openbios/utils/devbios/README.bios | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/qemu/roms/openbios/utils/devbios/README.bios b/qemu/roms/openbios/utils/devbios/README.bios new file mode 100644 index 000000000..45bd9a809 --- /dev/null +++ b/qemu/roms/openbios/utils/devbios/README.bios @@ -0,0 +1,256 @@ +NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! + +/dev/bios is obsolete and no longer under development. Please adapt all +changes to the "flashrom" utility of LinuxBIOS. This utility can be found +at LinuxBIOSv2/utils/flashrom in the LinuxBIOS v2 repository. LinuxBIOS +is available at http://www.linuxbios.org/ + +I'm also looking for volunteers to port all features available in /dev/bios +to flashrom so /dev/bios can be dropped from the OpenBIOS tree. These features +include + +- block information about flash chips +- block wise writing of flash chips +- lots of supported flash chips and vendors. + +If you have questions, contact Stefan Reinauer <stepan@coresystems.de> + +NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! + + +/dev/bios documentation 2002/02/19 + +Table of contents +------------------ + + 1. What is /dev/bios? + 2. What hardware/software do I need to run /dev/bios? + 3. Where to get the latest release of /dev/bios + 4. How to get /dev/bios work + 5. Writing to the devices + 6. About PCI chipsets (ix86 only) + 7. About APM Powermanagement (ix86 only) + 8. About different flashchips. + 9. Hints for BIOS flashing + +If you want better information on this driver, read the ChangeLog, +mail me or read the source, Luke :-) + +1. What is /dev/bios? +---------------------- + +This is a kernel driver for different kinds of (Flash)BIOSs that are +available in today's hardware. + +There are well known BIOSs for + - System BIOS (resides at 0xe0000 on Intel PCs) + - graphics hardware + - SCSI host adapters + - networking interfaces with 'BOOT ROM' + - ... + +While in former times these BIOSs were implemented by using ROM or +EPROM (both can't be updated without opening your computer) today's +PC hardware is often delivered with so called FLASH ROMs. These +can simply be updated by software. This driver has the approach to +make Linux read and write flash roms. + +One word before you read ahead: This is still alpha software and +writing to your flash roms may destroy them. So if you notice anything +strange, don't even think about going on, but write some mail to: + + Stefan Reinauer <stepan@openbios.org> + +Please note that I am not responsible in any way for what you +do with this code or for what this code does with your computer. + +2. What hardware/software do I need to run /dev/bios? +------------------------------------------------------ + +Currently this driver supports ix86 (mainly Pentium, +PPro, PII/III, Athlon, but some 486s), Itanium and Alpha +architecture. +It supports all flash chips from 32k to 2M (theoretically). +Minimum kernel version is v2.2.x, but it's wise to use a +2.4.x kernel. + +3. Where to get the latest release of /dev/bios? +------------------------------------------------- + +/dev/bios was recently integrated into the OpenBIOS CVS +tree for easier maintainance. General information can be +found on the /dev/bios status page: +http://www.freiburg.linux.de/OpenBIOS/status/devbios.html +Latest releases of /dev/bios can be found at the download page: +http://www.freiburg.linux.de/OpenBIOS/dev/download.html +Latest development trees of /dev/bios can be found in the +OpenBIOS CVS. For information how to access it, go to +http://www.freiburg.linux.de/OpenBIOS/dev/cvs.html + +4. How do I get /dev/bios work +------------------------------- + +Create the system bios device with + + mknod /dev/bios c 104 0 + +Now you can add devices for the other BIOSs (often known as option +roms) in your Computer, i.e. like this: + + mknod /dev/gfxbios c 104 1 + mknod /dev/hddbios c 104 2 + mknod /dev/netbios c 104 3 + +The order of the devices may vary on your computer, maybe you even don't +have a flash bios on your network card or on your scsi host adapter. You will +have to decide this after playing around a bit. + +Now you have to compile and insert the kernel driver module: + + cd devbios + make clean && make + insmod bios.o + +Now you have a new device, /dev/bios and, if you have +your kernel configured to have the /proc/ interface, +you have a status file /proc/bios. + +Since this driver is in an early state, you should have +a look at dmesg very often. + +5. Writing to the devices +-------------------------- + +If you insert bios.o without any options, you are not able +to write any of the devices. To enable writing, you should +use + insmod bios.o write=1 + +Writing is now possible with i.e. + dd if=yourbios.bin of=/dev/bios bs=128k count=1 +or + dd if=yourbios.bin of=/dev/bios bs=256k count=1 + +depending on the size of your flash chip. + +You can use 'cat' for flashing as well. Note: Many flashchips are +sectored and the whole sector has to be rewritten, the 4k clusters +of cat may be very slow (and an 112 kb sector has to be written 28 +times completely instead of 1 time with dd) + +Make sure that your file "yourbios.bin" is a valid bios image for +your motherboard and that it is not pkzipped or exe-pkzipped. +(Usually, a 128kb bios images consist of 112kb lha-compressed data, +2*4kb ESCD and DMI (PnP) Data and an 8 kb emergency boot block.) + +Writing to /dev/bios does not work for many chips right now. Write +accesses are ignored in this case. If you want an unsupported flash +rom supported, please mail me. +WARNING: Setting an unsupported chip to "supported" without changing +the rest of the code will *very likely* destroy the contents of your +chip. + +On machines with an AWARD bios you can test whether writing works +safely by only deleting the ESCD/DMI memory on the flash chip. +This data is rewritten by the bios when empty, corrupted or when +you put in a new expansion device. In that case you should see a +message stating "Updating ESCD" during the next boot. + +Please have a close look at the size of your flash chip. For 128k +flash chips, try + + dd if=/dev/zero of=/dev/bios bs=4096 seek=28 count=2 + +For 256k flash chips, you _MUST_ use the following line instead, +or your system bios is going byebye: + + dd if=/dev/zero of=/dev/bios bs=4096 seek=56 count=2 + +Attention: I found other machines with their ESCD memory in the +first sectors of the flash chip. These are afaics 512k+ chips +often connected via a firmware hub. +Behaviour of other BIOSs may be similar, but I can't give you +any warranty it works. + +NOTE: If you listen to music from your soundcard while flashing, +you may get errors like this: + Sound: DMA (output) timed out - IRQ/DRQ config error? + +Second, sound switches off while flashing. This is because all +IRQs are blocked while the write procedure to ensure it doesn't +get disturbed by any other hardware. + +6. About PCI chipsets +---------------------- + +Because this driver uses direct PCI accesses to switch shadowing +and write protection of the bios off on PC architecture, each PCI +chipset (or at least chipset group) has to be implemented and +tested seperately. Successfully tested PCI chipsets are + + * Intel 430HX/TX, 440BX/ZX, 460, 8x0 + * UMC 486 (8881F/8886A) + * VIA (M)VP3 + * AMD Irongate and others + * ServerWorks chipsets + * NSC CS5530 (geode companion) + +Any success/error reports are highly welcome. If you need a certain +system type supported, contact me. + + +7. About APM Power Management (ix86 only) +------------------------------------------ + +This driver is known to cause kernel oopses with some of the chipset +drivers when APM is enabled. Reason is that the flash chip is mapped +to the low bios address space which makes the unpacked bios image vanish +so all pointers to APM functions are invalid. +Nowadays most of the chipset drivers only map the high bios area, so +this problem should not occur on any but old UMC/SiS chipsets. If you +encounter oopses while reading/probing flash devices, disable power +management before any write attempts. To achieve so, please pass "apm=off" +as a kernel option, if your kernel is compiled with APM support. + + + +8. About different flashchips +------------------------------ + +Flash chips, /dev/bios has been successfully tested (writing) on: + + * Winbond 29EE011 + * Intel 28F008(SA) + * Atmel AT29C512 + * SST 29EE010, 39SF020 + +It *should* work, if you see a "Supported: yes" in /proc/bios, but +I am not responsible in any way for what you do.. Please be careful. +Please report any working flash chips so that this list can be completed. +Currently many more flash chips than mentioned here will work. +If you need a certain flash device supported, contact me. + +9. Hints for BIOS-Flashing +--------------------------- + +* Always try to write to the ESCD/DMI Memory before you overwrite the rest + of a bios (ix86) If you get ANY errors in dmesg output, DO NOT CONTINUE! +* Always "diff" the new bios with the written image before rebooting +* You may use comp, a little utility in the devbios source tree instead + of diff. It has a nicer output for binary files. +* on Intel, only write the first 120k of an image to the System ROM, this keeps + the emergency bootblock working. + +************** FINAL NOTE ***************************** + +If you want to help this project, send me + + * /proc/bios-output + * dmesg-output (after insmodding the driver) + * your system-configuration + (e.g. output of lspci or /proc/bus/pci/devices) + * any comments + * any ideas + + Stefan Reinauer <stepan@openbios.org> + |