Annotation of qemu/roms/openbios/utils/devbios/README.bios, revision 1.1.1.1

1.1       root        1: NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE!
                      2: 
                      3: /dev/bios is obsolete and no longer under development. Please adapt all 
                      4: changes to the "flashrom" utility of LinuxBIOS. This utility can be found
                      5: at LinuxBIOSv2/utils/flashrom in the LinuxBIOS v2 repository. LinuxBIOS
                      6: is available at http://www.linuxbios.org/
                      7: 
                      8: I'm also looking for volunteers to port all features available in /dev/bios
                      9: to flashrom so /dev/bios can be dropped from the OpenBIOS tree. These features
                     10: include
                     11: 
                     12: - block information about flash chips
                     13: - block wise writing of flash chips
                     14: - lots of supported flash chips and vendors.
                     15: 
                     16: If you have questions, contact Stefan Reinauer <[email protected]>
                     17: 
                     18: NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE! NOTE!
                     19: 
                     20: 
                     21: /dev/bios documentation                                                  2002/02/19
                     22: 
                     23: Table of contents
                     24: ------------------
                     25: 
                     26:   1. What is /dev/bios?
                     27:   2. What hardware/software do I need to run /dev/bios?
                     28:   3. Where to get the latest release of /dev/bios
                     29:   4. How to get /dev/bios work
                     30:   5. Writing to the devices
                     31:   6. About PCI chipsets (ix86 only)
                     32:   7. About APM Powermanagement (ix86 only)
                     33:   8. About different flashchips.
                     34:   9. Hints for BIOS flashing
                     35: 
                     36: If you want better information on this driver, read the ChangeLog,
                     37: mail me or read the source, Luke :-)
                     38: 
                     39: 1. What is /dev/bios?
                     40: ----------------------
                     41: 
                     42: This is a kernel driver for different kinds of (Flash)BIOSs that are
                     43: available in today's hardware.
                     44: 
                     45: There are well known BIOSs for
                     46:  - System BIOS (resides at 0xe0000 on Intel PCs)
                     47:  - graphics hardware
                     48:  - SCSI host adapters
                     49:  - networking interfaces with 'BOOT ROM'
                     50:  - ...
                     51: 
                     52: While in former times these BIOSs were implemented by using ROM or
                     53: EPROM (both can't be updated without opening your computer) today's
                     54: PC hardware is often delivered with so called FLASH ROMs. These
                     55: can simply be updated by software. This driver has the approach to
                     56: make Linux read and write flash roms.
                     57: 
                     58: One word before you read ahead: This is still alpha software and
                     59: writing to your flash roms may destroy them. So if you notice anything
                     60: strange, don't even think about going on, but write some mail to:
                     61: 
                     62:                Stefan Reinauer <[email protected]>
                     63: 
                     64: Please note that I am not responsible in any way for what you
                     65: do with this code or for what this code does with your computer.
                     66: 
                     67: 2. What hardware/software do I need to run /dev/bios?
                     68: ------------------------------------------------------
                     69: 
                     70: Currently this driver supports ix86 (mainly Pentium,
                     71: PPro, PII/III, Athlon, but some 486s), Itanium and Alpha 
                     72: architecture.
                     73: It supports all flash chips from 32k to 2M (theoretically). 
                     74: Minimum kernel version is v2.2.x, but it's wise to use a
                     75: 2.4.x kernel.
                     76: 
                     77: 3. Where to get the latest release of /dev/bios?
                     78: -------------------------------------------------
                     79: 
                     80: /dev/bios was recently integrated into the OpenBIOS CVS
                     81: tree for easier maintainance. General information can be
                     82: found on the /dev/bios status page:
                     83: http://www.freiburg.linux.de/OpenBIOS/status/devbios.html
                     84: Latest releases of /dev/bios can be found at the download page:
                     85: http://www.freiburg.linux.de/OpenBIOS/dev/download.html
                     86: Latest development trees of /dev/bios can be found in the
                     87: OpenBIOS CVS. For information how to access it, go to
                     88: http://www.freiburg.linux.de/OpenBIOS/dev/cvs.html
                     89: 
                     90: 4. How do I get /dev/bios work
                     91: -------------------------------
                     92: 
                     93: Create the system bios device with
                     94: 
                     95:        mknod /dev/bios c 104 0
                     96: 
                     97: Now you can add devices for the other BIOSs (often known as option
                     98: roms) in your Computer, i.e. like this:
                     99: 
                    100:        mknod /dev/gfxbios c 104 1
                    101:        mknod /dev/hddbios c 104 2
                    102:        mknod /dev/netbios c 104 3
                    103: 
                    104: The order of the devices may vary on your computer, maybe you even don't
                    105: have a flash bios on your network card or on your scsi host adapter. You will
                    106: have to decide this after playing  around a bit.
                    107: 
                    108: Now you have to compile and insert the kernel driver module:
                    109: 
                    110:        cd devbios
                    111:        make clean && make
                    112:        insmod bios.o
                    113: 
                    114: Now you have a new device, /dev/bios and, if you have
                    115: your kernel configured to have the /proc/ interface,
                    116: you have a status file /proc/bios.
                    117: 
                    118: Since this driver is in an early state, you should have
                    119: a look at dmesg very often.
                    120: 
                    121: 5. Writing to the devices
                    122: --------------------------
                    123: 
                    124: If you insert bios.o without any options, you are not able
                    125: to write any of the devices. To enable writing, you should
                    126: use
                    127:        insmod bios.o write=1
                    128: 
                    129: Writing is now possible with i.e.
                    130:    dd if=yourbios.bin of=/dev/bios bs=128k count=1
                    131: or 
                    132:    dd if=yourbios.bin of=/dev/bios bs=256k count=1
                    133: 
                    134: depending on the size of your flash chip.
                    135: 
                    136: You can use 'cat' for flashing as well. Note: Many flashchips are
                    137: sectored and the whole sector has to be rewritten, the 4k clusters
                    138: of cat may be very slow (and an 112 kb sector has to be written 28
                    139: times completely instead of 1 time with dd)
                    140: 
                    141: Make sure that your file "yourbios.bin" is a valid bios image for
                    142: your motherboard and that it is not pkzipped or exe-pkzipped.
                    143: (Usually, a 128kb bios images consist of 112kb lha-compressed data,
                    144: 2*4kb ESCD and DMI (PnP) Data and an 8 kb emergency boot block.)
                    145: 
                    146: Writing to /dev/bios does not work for many chips right now. Write
                    147: accesses are ignored in this case. If you want an unsupported flash 
                    148: rom supported, please mail me. 
                    149: WARNING: Setting an unsupported chip to "supported" without changing
                    150: the rest of the code will *very likely* destroy the contents of your 
                    151: chip.
                    152: 
                    153: On machines with an AWARD bios you can test whether writing works
                    154: safely by only deleting the ESCD/DMI memory on the flash chip.
                    155: This data is rewritten by the bios when empty, corrupted or when
                    156: you put in a new expansion device. In that case you should see a
                    157: message stating "Updating ESCD" during the next boot.
                    158: 
                    159: Please have a close look at the size of your flash chip. For 128k 
                    160: flash chips, try
                    161: 
                    162:        dd if=/dev/zero of=/dev/bios bs=4096 seek=28 count=2
                    163: 
                    164: For 256k flash chips, you _MUST_ use the following line instead, 
                    165: or your system bios is going byebye:
                    166: 
                    167:        dd if=/dev/zero of=/dev/bios bs=4096 seek=56 count=2
                    168: 
                    169: Attention: I found other machines with their ESCD memory in the
                    170: first sectors of the flash chip. These are afaics 512k+ chips
                    171: often connected via a firmware hub.
                    172: Behaviour of other BIOSs may be similar, but I can't give you
                    173: any warranty it works.
                    174: 
                    175: NOTE: If you listen to music from your soundcard while flashing,
                    176: you may get errors like this:
                    177:        Sound: DMA (output) timed out - IRQ/DRQ config error?
                    178:        
                    179: Second, sound switches off while flashing. This is because all
                    180: IRQs are blocked while the write procedure to ensure it doesn't
                    181: get disturbed by any other hardware.
                    182: 
                    183: 6. About PCI chipsets
                    184: ----------------------
                    185: 
                    186: Because this driver uses direct PCI accesses to switch shadowing
                    187: and write protection of the bios off on PC architecture, each PCI
                    188: chipset (or at least chipset group) has to be implemented and 
                    189: tested seperately. Successfully tested PCI chipsets are
                    190: 
                    191:        * Intel 430HX/TX, 440BX/ZX, 460, 8x0
                    192:        * UMC 486 (8881F/8886A)
                    193:        * VIA (M)VP3
                    194:        * AMD Irongate and others
                    195:        * ServerWorks chipsets
                    196:        * NSC CS5530 (geode companion)
                    197: 
                    198: Any success/error reports are highly welcome. If you need a certain
                    199: system type supported, contact me.
                    200: 
                    201: 
                    202: 7. About APM Power Management (ix86 only)
                    203: ------------------------------------------
                    204: 
                    205: This driver is known to cause kernel oopses with some of the chipset 
                    206: drivers when APM is enabled. Reason is that the flash chip is mapped
                    207: to the low bios address space which makes the unpacked bios image vanish
                    208: so all pointers to APM functions are invalid. 
                    209: Nowadays most of the chipset drivers only map the high bios area, so
                    210: this problem should not occur on any but old UMC/SiS chipsets. If you
                    211: encounter oopses while reading/probing flash devices, disable power 
                    212: management before any write attempts. To achieve so, please pass "apm=off" 
                    213: as a kernel option, if your kernel is compiled with APM support.
                    214: 
                    215: 
                    216: 
                    217: 8. About different flashchips
                    218: ------------------------------
                    219: 
                    220: Flash chips, /dev/bios has been successfully tested (writing) on:
                    221: 
                    222:        * Winbond 29EE011
                    223:         * Intel 28F008(SA)
                    224:        * Atmel AT29C512
                    225:        * SST 29EE010, 39SF020
                    226: 
                    227: It *should* work, if you see a "Supported: yes"  in /proc/bios, but 
                    228: I am not responsible in any way for what you do.. Please be careful.
                    229: Please report any working flash chips so that this list can be completed.
                    230: Currently many more flash chips than mentioned here will work.
                    231: If you need a certain flash device supported, contact me.
                    232: 
                    233: 9. Hints for BIOS-Flashing
                    234: ---------------------------
                    235: 
                    236: * Always try to write to the ESCD/DMI Memory before you overwrite the rest
                    237:   of a bios (ix86) If you get ANY errors in dmesg output, DO NOT CONTINUE!
                    238: * Always "diff" the new bios with the written image before rebooting
                    239: * You may use comp, a little utility in the devbios source tree instead
                    240:   of diff. It has a nicer output for binary files.
                    241: * on Intel, only write the first 120k of an image to the System ROM, this keeps
                    242:   the emergency bootblock working.
                    243: 
                    244: ************** FINAL NOTE *****************************
                    245: 
                    246: If you want to help this project, send me 
                    247: 
                    248:  * /proc/bios-output
                    249:  * dmesg-output (after insmodding the driver)
                    250:  * your system-configuration 
                    251:    (e.g. output of lspci or /proc/bus/pci/devices)
                    252:  * any comments
                    253:  * any ideas
                    254: 
                    255:                        Stefan Reinauer <[email protected]>
                    256: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.