Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / utils / devbios / README.bios
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 <stepan@coresystems.de>
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 <stepan@openbios.org>
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 <stepan@openbios.org>
256