Sync from 5.4 branch
[people/xl0/gpxe-arm.git] / LOG
1 Major changes from 1.0 to 1.1
2
3 + Everywhere: Can compile two versions of the code, under gcc or bcc
4 (Bruce Evan's cc), so that 16-bit boot PROMs can be made. See
5 netboot-16/README.16 for more details.
6
7 + Everywhere: Removed duplicate defines, e.g. everybody defined their
8 own ID for ethernet address size (6). Put IDs for magic numbers in
9 various places.  Still some inconsistency, ETH_ and ETHER_ are used.
10
11 + Everywhere: Added prototypes of functions to netboot.h.  Removed
12 unused variables.
13
14 + Makefiles: Rewritten.
15
16 + netboot.h: Added define for TFTP_MAX_PACKET = 512. Increased TIMEOUT
17 for tftp packets to 180 (about 10 seconds) so that tftp servers would
18 be able to retransmit blocks.
19
20 + main.c: Rewrote tftp(). Original was intended to get only one block
21 and the strain on the structure due to modifications was showing.
22 Increased config_buffer size to TFTP_MAX_PACKET+1 to avoid special
23 casing data length=512.
24
25 + linuxloader.c: Cleaned up the code in some places, especially
26 linux_tftp.  Moved the bootp reply block into bss space instead of a
27 fixed location such as 0x90000.
28
29 + ns8390.c: Removed one bug regarding packet length. packetlen was
30 wrongly shortened when packets wraparound the ring buffer.
31
32 + 3c509.c: Changed some of the gotos to returns.  Removed ARP code since
33 that's already done elsewhere.  Removed interrupt enable and Rx early
34 notification (we can't do anything with the packet until it's complete
35 anyway).
36
37 Major changes from 1.1 to 1.2
38
39 + Small bug in makerom.c. Extra semicolon shortened for loop and made
40 double checking code invalid.
41
42 + Added version identification to startup string.
43
44 + Gathered external declarations into netboot.h.
45
46 + New compile time option for netboot-32. If INT19H is not defined,
47 then boot ROM takes control as soon as BIOS scans it. This may solve
48 the problem of some BIOSes not calling the boot ROM at INT19H. This
49 may be when disks are detected by the BIOS, i.e. the machine is not
50 truly diskless.
51
52 + Added a new program, test.c, for making test ROMs to verify that
53 the BIOS recognises the ROM.
54
55 + New directory contrib contains contributed code. Currently contains
56 masq by Gerd Knorr: make a boot floppy without DOS
57 comboot-1.0 by Adam J. Richter: also make a boot floppy without DOS.
58
59 + New mknbi-1.4 from Gero Kuhlmann and Markus Gutschke. This one handles
60 the new bzImage format.
61
62 Bumped up version to 2.0 because we are so listed in the Linux 2.0
63 distribution and this would avoid confusion.
64
65 Major changes from 2.0 to 2.1
66
67 + Added LSM for transname-patch to contrib.
68
69 + Added patch for serial console from Claus Heine
70 <claus AT momo PERIOD math PERIOD rwth-aachen PERIOD de>.
71
72 + Claus Heine contributed patches to the 2.0.21/22 kernel sources to
73 allow NFS swap.
74
75 + Markus Gutschke provided fixes to start2.S so that main can return to
76 the ROM code if user doesn't want to ROM boot.
77
78 + Added code to main.c to timeout on the prompt and assume Y or N
79 for the answer. Timeout and answer configurable.
80
81 + Made NE1/2000 probe addresses configurable from Makefile. Fixed up
82 autoscan code.
83
84 + Made NFS_BOOT a configurable option. By undefining it, only tagged
85 file load is supported but ROMs are under 8k.
86
87 + ROMSIZE is not used by makerom now. -s flag controls size of ROM
88 at runtime.  So don't need to recompile makerom if ROMSIZE changes.
89
90 + Updated netboot-16 for the latest dev tools from the Linux-MT
91 project. Use the size.c from there.
92
93 + Got rid of _main() in main.c, instead using #ifdef ELF in start2.S.
94 ELF is preferred now anyway.
95
96 + Changed bcompare to standard bcmp and reversed sense of result.
97 Reason: to use standard library if available, e.g. Netboot-16.
98
99 + Common Makefile for 32 bit and 16 versions, with differences in
100 Config files.
101
102 Major changes from 2.1 to 2.2
103
104 + New device driver for the Crystal Semiconductor CS89x0 chipset family.
105   (because of legal problems, this code is currently in the "contrib"
106   directory.)
107
108 + Added support for loading BOOTP extension files (c.f. RFC1533).
109
110 + If we have to go thru a gateway, then use the one that has been used for
111   the BOOTP daemon. If the BOOTP daemon is directly accessible, then use
112   the first entry in the "gw" gateway list instead.
113
114 + For all retries, back off according to RFC951 by randomizing the timeouts
115   and exponentially increasing them until an average of one minute is
116   reached.
117
118 + Warn if code will not fit into chosen ROM size. Happens only if the
119   autosizing in the Makefile somehow fails.
120
121 + Modified the code for enabling the A20 gate; this could increase
122   compatibility, but I still have to hear from users.
123
124 + The copyright message will now reflect, which features have been
125   enabled at compile time.
126
127 + Added support for selecting different boot images from a menu. As a side
128   effect, this can be used to upgrade the ROM without having to burn a new
129   image (c.f. README.VendorTags).
130
131 + Display a "message of the day" that is provided by the BOOTP daemon.
132
133 + The sanity check for detecting a Linux kernel was too strong to properly
134   recognize a 2.1.x kernel; this has been fixed.
135
136 + Trys to negotiate for 1432 octect blocks, if the TFTP daemon knows
137   about RFC1783.
138
139 + We can optionally boot from local disk, if the BOOTP server cannot
140   be contacted.
141
142 + Restructured directories: got rid of netboot-freebsd to reduce confusion
143   with Gero Kuhlmann's netboot, moved documentation to doc and renamed
144   directories to be more in line with Unix conventions. Edited documentation.
145
146 + Created a dispatch table for NIC routines so that we can include one
147   or more drivers in one binary. Renamed all entry points in the driver
148   sources. Created two new files, config.c, which holds the dispatch
149   table and can be conditionally compiled; and nic.c which contains the
150   extern variables referenced by the drivers.
151
152 + Automatically decide what size ROM is needed by doing a size and then
153   choosing the correct startup object. Currently caters for 8k, 16k and
154   32k ROMs.
155
156 + Optionally include a simple interpreter for ANSI escape sequences. This
157   allows for fancier boot menus.
158
159 + Remove patches directory which is mostly relevant to 1.x kernels only.
160   Everybody should use 2.x kernels now. If for some reason you need those
161   patches, get an older release of etherboot.
162
163 + Fix Makefile to work even if . not on PATH.
164
165 + Sadly, 32 bit ROMs are now > 8kb. We will try to reduce the size by
166   conditionals in a later release. For now, use version 2.1 if your NIC
167   won't take > 8kb ROMs.
168
169 + Release as 3.0b1 because of the large amount of changes.
170
171 + Fixed a few problems with the code for ANSI escape sequences and
172   added optional support for displaying graphics.
173
174 + Optional support for password protected boot images.
175
176 + Optional support for booting from block devices (floppy, hd).
177
178 + The bootp server can pass additional parameters to the loaded kernel
179   image (currently, this only  applies to Linux)  and the user can  be
180   allowed to edit a commandline; the latter is optionally protected by
181   a password scheme.
182
183 + Set the warm-boot flag when the main routine is entered.
184
185 + Release as 3.0b2
186
187 + Added code for updating the FlashCard EPROM over the network
188   (contrib/flashimg).
189
190 + Added very simple code for turning a ROM image into a network loadable image.
191   This is useful for debugging, but some users without flash EPROMs might
192   appreciate the possibility to load a fully fledged image from a very basic
193   configuration.
194
195 + Optional support for compressing the ROM images. Please read
196   doc/COPYING.compressor before using this feature.
197
198 + Sync'd our source tree with Gero's netboot-0.5; this means that you now need
199   the as86 from the ELKs project in order to recompile all of the files. This
200   should not affect normal usage, though.
201
202 + Added "mknbi-blkdev" for booting from local block devices.
203
204 + Fixed some bugs in ppmtoansi.c and bootmenu.c
205
206 + Renamed reference compressor implementation to compressor.exp otherwise
207   make tries to use it and it should not be turned on by default.
208
209 + Zero'ing BSS in 16-bit version has to be done to _end, not to A0000
210   because it's executing in a segment, not in flat address space in 16
211   bit mode.
212
213 + Ken Yap contributed a quick and dirty Perl script for people who use
214   netboot to test ELKS.  So far I'm the only one I know of; maybe the
215   others are silent. :-(
216
217 + Release as 3.0
218
219 Major changes from 3.0 to 3.1
220
221 + 4 versions of etherboot can be built for a NIC: .com for testing and
222   .rom for burning into EPROM, and corresponding compressed versions:
223   .lzcom and .lzrom.
224
225 + The loaders are now separate programs which are prepended to the
226   etherboot binary. This allows them (plain and uncompressing versions) to
227   be maintained separately and gives a bit more RAM to the etherboot code.
228
229 + No need to define ROMSIZE in the build. makerom automatically discovers
230   the ROM size needed and fills in the size field in the ROM. This
231   simplifies the build procedure.
232
233 + 16 bit versions use the same loaders as the 32 bit version. Also fixed
234   two bugs in the 16 bit versions: (1) a non-8086 instruction in zloader,
235   (2) setting warm-boot flag in main which zapped some code.
236
237 + Fixed a documentation bug on the ANSI escape sequences.
238
239 + Include netboot-0.5.3 distribution from Gero Kuhlmann.
240
241 + Included some contributions from Dickon.Reed AT cl PERIOD cam PERIOD
242 ac PERIOD uk: Running display of Kbytes loaded, line of delimiters after
243 loading complete, a temporary hack to address timing problems with the
244 3C509, and some Makefile cleanup. The first two changes need to be
245 enabled in Config with defines.
246
247 + mknbi-blkdev seems to have been left out by Gero Kuhlmann. Add to
248   contrib directory. You probably have to make a symlink to it from
249   the netboot-0.5.2 directory.
250
251 + Release as 3.1
252
253 Major changes from 3.1 to 3.2
254
255 + 16 bit version now can load to extended memory, if it exists. On
256   a 8086/8 this will silently fail.
257
258 + Cleaned up interface between main body of code and NIC drivers. No
259   global variables referenced in NIC driver, everything is passed
260   through a structure. Only the probe function is visible outside,
261   pointers to the others are returned in the structure.
262
263 + Implemented autoprobe for 3c503. Also simplifies code at same time.
264
265 + Removed ARP response code in ns8390.c. Don't think we need to respond
266   to ARP requests because other machines will do gratuituous ARP when
267   boot code sends out bootp request. Are there cases where this is not
268   true? Gateways?
269
270 + Added 1 second timeout to routine that clears the keyboard buffer
271   in case there is no keyboard.
272
273 + Added a skeleton driver that can be used as a template for new NIC
274   drivers.
275
276 + ./lzhuf in Makefile so that it will run even if . is not on path.
277
278 + Fixed comboot to work on 286s also. Won't work yet on 8086/8.
279
280 + Fixed mknbi-blkdev to configure properly under netboot-0.7.
281
282 + Added David Munro's PCI code adapted from Linux. Currently has entries
283   for PCI NE2000 clones. Generalised it to probe other PCI cards later on.
284
285 + Moved twiddle() outside NIC driver except where used to provide a delay.
286
287 + Fixed bug in Makefile spotted by Ton Biegstraaten. Should prepend
288   ZLOADER to make all.lzcom, not LOADER.
289
290 + Charlie Brady donated a NE2100 (LANCE) card, so Ken Yap wrote a driver
291   for it. Should work for other LANCE (7990, etc) based cards with some
292   modifications.
293
294 + Markus Gutschke wrote rom-scan, and it is in contrib/.
295
296 + Hack rom-scan.c so that a DOS version can be compiled.
297
298 + Removed all.* targets from Makefile. The NIC specific loaders should be
299   used in preference as the all.* loaders can run out of memory.
300
301 + Added a disable routine to dispatch table so that cards can be turned
302   off before the loaded code is executed.
303
304 + Make INT19H the default.
305
306 + Rogier Wolff persuaded AW computer systems to contribute the Intel
307   EtherExpressPro 100 driver. The binary to hex converter in contrib/
308   is also from Rogier Wolff. Part of the work is sponsored by BitWizard
309   NL (www.bitwizard.nl).
310
311 + Distribute with a subset of netboot-0.7.2 that doesn't have the bootrom
312   portion.
313
314 + Release as 3.2.
315
316 Major changes from 3.2 to 4.0
317
318 + Merged in Vlad Lungu's patches for DHCP support, ifdef'ed by DHCP_SUPPORT.
319
320 + XID matching fix also provided by Vlad Lungu.
321
322 + Merged in William Arbaugh's patches to make eepro driver work properly.
323
324 + Add to contrib/ better bin2intelhex from Jean Marc Lacroix.
325
326 + Patches from Jim Hague (thanks!) for the following:
327
328 * Added PIO mode for 3c503 to ns8390.c. Changed the card detection to
329   detect shared memory or PIO and use the selected one, and removed
330   a jumper check that failed on the Bull (no jumpers).
331
332 * Added more #ifdefs to ns8390.c to include only code relevant to the
333   card being compiled, and removed unnecessary run-time card vendor
334   behaviour branches - it's all now #ifdefd.
335
336 * Added a -3 parameter to makerom to set the last two bytes to 0x80.
337   These are the values they have in the 3Com Etherboot image that was
338   in the Bull. (Also on the 3c503 card I have - Ken.) Also altered the
339   Makefile to add this parameter when building a 3c503 image.
340
341 * Modifies lzhuf.c, objdump86.c & size86.c to work on either-endian systems.
342
343 * Adds a -DT503_AUI config paramter to let you choose AUI or BNC on
344   3c503s.  Previously it defaulted to AUI, and you had to change the
345   code to alter it.
346
347 * Changed the BCC include directory to /usr/bcc/include. If you use the
348   BCC include files they don't define u_char, u_short etc. I've added
349   these into linuxdef.h, ifdef'd on BCC.
350
351 * Adds a trivial Linux 3c503 driver patch to the contrib directory
352   to let it spot these 'ere Bull things.
353
354 + Charlie Brady confirmed that the Lance driver works with PCI so there
355 is a new lancepci driver now.
356
357 + Removed support for NFS_BOOT; only TFTP booting supported now.
358
359 + Removed support for linear images; only tagged images supported now.
360
361 + Removed PRIORIZEBOOTPKERNEL and BOOTPKERNELONLY. Bootp reply must
362 specify kernel name.
363
364 + Bug fix for 16 bit version of 3c509 driver: sign bit propagation bug.
365
366 + Revert to non-pausing versions of out[bw] and inb for NEx000 driver
367 because of reports of timimg problems on some cards.
368
369 + New driver for NI6510. Just a simple tweak of the lance driver for
370 different ID bytes and different register offsets. According to the
371 NI6510 driver in Linux, the NI6510 Etherblaster is more like the NE2100
372 and would be detected by the NE2100 driver. So use that one instead.
373
374 + New drivers for 3c507 and NI5210, both of which use the i82586 chip. It
375 works properly for both now. I needed to have enough receive buffers to
376 make sure i82586 never goes into an out of resources state. 3c507 driver
377 has one quirk, it only responds after second bootp request. I seem to
378 remember something about this problem of losing the first packet after
379 initialisation in early Linux discussions.  I am also now convinced
380 that Intel designers have weird minds. BTW, NI5210 driver assumes 8k
381 RAM because if you put the ROM on the NIC you can only have 8k RAM. If
382 you are putting the ROM off-board and you want 16k, well, talk to me.
383
384 + Call nic_disable routine just before jumping to loaded image. This
385 does nothing in most drivers, but may have side effects as the nic_reset
386 routine used to be called instead.
387
388 + One of those "why I didn't think of it before" ideas: A modified version
389 of comboot, called floppyload, that is prepended to the .rom image rather
390 than the .com image and then both written raw to a floppy for testing the
391 bootrom. All we have to do is jump to an entry point in (z)loader that
392 skips the INT19H stuff. Relocation will happen automatically.  Now the
393 .com images and comboot are superfluous, unless one is masochistic enough
394 to want to try to test under DOS.
395
396 Added .fd0 targets to Makefile. Saying make <card>.fd0 will make
397 floppyload.bin and <card>.rom, and cat both to /dev/fd0. Naturally the
398 drive must be writable and you must have a floppy in the drive.
399
400 + New driver for Tiara (Fujitsu EtherStar). This was one of the easiest
401 drivers to write. But the chip apparently has some quirks; there is no
402 Linux driver for it in the standard distribution and the email address
403 of someone who wrote an alpha driver is invalid. Perhaps I'll bump into
404 an AT1700 (which has a similar chip) one day and be able to reuse a lot
405 of the code.
406
407 + Updated contrib/mkelksnbi for ELKS 0.0.68.
408
409 + Confirmed that the SMC8216 driver works. 8416 not tested, it's a PnP
410 card. Can anybody confirm this?
411
412 + New contributed software: p910nd, a tiny printer daemon suitable for
413 diskless hosts.
414
415 + Made ANSIESC work for Etherboot/16.
416
417 + Fixed Makefile and Config.* so that it works with old binutils.
418
419 + Included a subset of netboot-0.7.3.
420
421 + Released as version 4.0.
422
423 Changes between 4.0 and 4.1
424
425 + Patches by Andrew Coulthurst for eepro100b.
426
427 + Patches by Doug Ambrisko for booting Windows95 after answering N to
428 the boot from network question. Added conditional code to cope with
429 broken DHCP server and TAG 128.
430
431 + Put version and driver identifier at end of ROM image if it fits,
432 to help identify ROMs in future.
433
434 + Capture ROM segment address and length to help choose between multiple
435 NICs later.
436
437 + Don't clear all of memory because it will destroy return address
438 on stack.
439
440 + Changes to comboot-1.2 (although obsolete) to run on 8088s.
441
442 + New version 0.2 of p910nd, a non-spooling printer daemon.
443
444 + Patches by Alex Harin to prepended loaders and makerom to generate PnP
445 ready ROMs. Modified makerom to automatically detect PnP and PCI headers
446 and do the right thing. Added option to change the vendor and device IDs.
447
448 + Augmented documentation for 2.1 and above kernels. Kernel now wants to
449 mount /tftpboot/<hostname in bootptab> rather than /tftpboot/<ip address>
450 as the root FS.
451
452 + Changed all the outb* and outw calls in drivers (except eepro) to be
453 OUTB* and OUTW, then defined macros to translate to out[bp]* for both
454 Etherboot/32 and Etherboot/16, instead of pasting macros from Linux
455 include files because apparently they've changed in 2.1. At the same
456 time reversed the arguments in start16.S for outb and outw to match the
457 Linux convention. Unfortunately the out[bw] usage came that way from
458 FreeBSD. Someday I'll reverse the arguments in the C files properly.
459 For any new driver writers, you should use the Linux order now.
460
461 + New contributed utility, disnbi for decoding and extracting network
462 boot images.
463
464 + Martin Atkins contributed mntnbi for mounting DOS NBIs.
465
466 + Peter Dobcsanyi contributed vendor and device IDs for the Netvin
467 NE2000/PCI clone.
468
469 + adam AT mudlist PERIOD eorbit PERIOD net contributed RARP code as
470 alternative to BOOTP/DHCP. Activated by RARP_NOT_BOOTP define.
471
472 + Added link to Claus-Justus Heine's NFS swap Web page and updated the
473 contrib directory.
474
475 + Disabled max packet length check in ns8390.c. Caused spurious Bogus
476 packet messages in some cases and doesn't seem that useful a sanity
477 check anyway.
478
479 + Daniel Engstrom contributed a SMC9000 driver.
480
481 + Didier Poirot contributed an Etherpower II (EPIC 100) driver.
482
483 + Added bug fix by Attila Bogár for bootmenu.c and patch to main.c to
484 remove looping menus on failure. Also code for ARP replies and TFTP
485 block retransmit (#ifdefed because controversial).
486
487 + Code cleanup of tftp and tftpd also by Attila Bogár.
488
489 + Nathan R. Neulinger fixed a bug with block being declared short instead
490 of u_short in tftpd.c, which limited transfers to 32k blocks. Fixed
491 problem with field tu_block being declared as signed short in many
492 platforms by including fixed version of tftp.h. Fixed tftp also for
493 good measure.
494
495 + New mini-HOWTO on a "ssh terminal".
496
497 + Andreas Mack pointed out that eepro100 doesn't compile on 2.1 and
498 2.2 kernels. Removed unnecessary include of bios32.h and reliance on
499 definition of virt_to_bus in kernel headers in eepro100.c, epic100.c
500 and lance.c.
501
502 + David Sharp contributed a Tulip driver written for FreeBSD netboot.
503 Ken Yap ported to Etherboot. Not tested yet because no hardware.
504
505 + Replaced references to arptable[ARP_CLIENT].node to nic->node_addr in
506 eepro100.c and epic100.c as they should be.
507
508 + Greg Beeley of LightSys Technology Services contributed a 3c905b
509 driver. Be sure to read the release notes in 3c905b.txt.
510
511 + Günter Knauf suggested making the prompt strings more generic and to
512 put a newline after the answer. Beware, N now means Network boot and
513 not No to network boot.
514
515 + Alex Nemirovsky contributed some patches for BIOSes that use an extended
516 space at the top of 640k. Also some code for BIOSes that don't implement
517 BIOS32 correctly or at all.
518
519 + Use PCI extension BIOS header only for PCI cards, all others use legacy
520 extension BIOS header.
521
522 + Klaus Espenlaub contributed various cleanup patches to the code.  Also
523 introduced Rainer Bawidamann's code, see next paragraph.
524
525 + Rainer Bawidamann contributed a Realtek 8139 driver.
526
527 + Simplified rules for building .bin files, use -b of as86 so we
528 don't need ld86 or objdump86 now. But later found that a fixed as86 is
529 required. So supply preassembled binaries. The keen hackers can get the
530 fixed tools.
531
532 + Georg Baum contributed a Schneider & Koch G16 driver. Only the
533 32 bit version works at the moment; even though the 16 bit version
534 compiles, it won't work because the current code assumes flat memory
535 addressing. Anybody who needs the 16 bit version should feel free to
536 fix it.
537
538 + Reduce size of ROM image loaded by floppyboot.bin from 64kB to 32kB
539 for a slight speedup in loading. None of the images are even 32kB anyway.
540
541 + Updated some of the documents in doc/sgml.
542
543 + Klaus Espenlaub sent in a totally revamped start32.S, using the code16
544 and code32 directives in recent GNU as (so if this file won't assemble
545 maybe your as version is not recent enough). Also patches to the menu
546 handling code.
547
548 + jluke AT deakin PERIOD edu PERIOD au sent in a fix for the WD/SMC8013
549 long ago which I finally got around to verifying.
550
551 + start16.o and start32.o are supplied for those people who have problems
552 compiling start*.S with as/as86.
553
554 Released as Etherboot-4.2.0
555
556 + One line fix to 3c509b by Greg Beeley for Wake-On-LAN support.
557
558 + Added patches by Klaus Espenlaub that I forgot.
559
560 + Made AS_PSEUDOS not the default, assume that people have sufficiently
561 up-to-date GNU as. If not they can uncomment that line.
562
563 Released as Etherboot-4.2.1
564
565 + Disable 3c509 after loading finished or port may be unusable.
566
567 + Woops, forgot to up the version's last digit in the last release.
568
569 + Stephan Bauer sent in a device ID for config.c for 21142 chip Tulips.
570
571 + Ifdef out input overrun recovery code (it's really only needed for
572 NE2000s) and use SHMEM by default for 3c503s to bring the ROM size down
573 below 8kB.
574
575 + Added code to start32.S to detect < 386 and exit so it doesn't hang
576 the computer. Doesn't print a message yet.
577
578 + Changed README.sgml to recommend that TFTP use a separate directory
579 from NFS, /tftpdir. Added sample configuration file for DHCPD and caveat
580 about the name of the root directory when using DHCPD.
581
582 + Revamped atnetboot.sgml: use mtools most of the time, write about a
583 few example applications.
584
585 + Quick Perl script for converting bootptab to dhcpd.conf.
586
587 Released as Etherboot-4.2.2
588
589 + Forgot to put new version of src/start32.o. Not urgent though, the
590 extra code only guards against Etherboot/32 being executed on < 386.
591
592 + Supply version preassembled start32.o with ANSIESC and FLOPPY defined
593 for those with a deficient as. Define dummy handleansi routine in
594 ansiesc.c so that it will still link even if this start32.o is used.
595
596 + Edited *.asm so that they can be assembled by either as86 (ELKS version)
597 or nasm.
598
599 + Changed Makefile so that one can choose between no as86, as86 or nasm.
600
601 + Added Mark Burazin's conditional code for Compex RL2000 PCI NIC.
602
603 + Increase delay during probe phase to 10ms as 1ms is too low for some
604 3c509 boards.  Donald Becker's Linux driver hints that > 2ms is needed
605 to be safe. Also call t509_disable in case board was active.
606
607 + Update README.sgml date and version.
608
609 Released as Etherboot 4.2.3.
610
611 + rtl8139.c: Reduce the number of transmit buffers to reduce footprint.
612 Remove polling loop in *_loop(), caller already does the looping.
613
614 + main.c: Fix code indentation in bootp().
615
616 + Small corrections to documentation.
617
618 Released as Etherboot 4.2.4.
619
620 + Matthias Meixner found a longstanding bug in rtl8139.c where it was
621 testing the wrong bit for the existence of a packet in the buffer.
622
623 + Added paragraph to documentation about caveats for hosting NFS root
624 on a different architecture.
625
626 Released as Etherboot 4.2.5.
627
628 + Updated mklnim for RH6.0 which uses a different floppy image and
629 requires 'network' to be appended to kernel parameters.
630
631 + Reversed sense of #ifdef DHCP_SUPPORT to #ifndef NO_DHCP_SUPPORT and
632 so forth, i.e. the default is with DHCP support.
633
634 + Suggest reducing options for rtl8139 driver to minimise footprint in
635 release notes.
636
637 + Jim McQuillan provided changes to support the SMC1211, which uses the
638 RTL8139 chip.
639
640 + Changed lret in start32.S to int $0x19 so that it doesn't depend on
641 the return location being there.
642
643 Released as Etherboot 4.2.6
644
645 + Succeeded in booting FreeDOS with the kernel in the tagged image rather
646 than on the ramdisk, i.e. the boot process jumps directly to the kernel
647 in memory. The utility is mkfreedosnbi in contrib/.
648
649 + Additions to the documentation.
650
651 Released as Etherboot 4.2.7
652
653 + Matt Hortman pointed out that the BIOS clock value returned by INT1AH
654 rolls over at midnight, causing delay loops that cross midnight to
655 fail. Fix was to keep track of midnight crossings in currticks so that
656 currticks' return value is monotonically increasing.
657
658 + Added paragraph to documentation about editing PCI vendor and device
659 IDs in Makefile if needed.
660
661 + Merged in FreeBSD support code supplied by Doug Ambrisko. Thanks!
662
663 Released as Etherboot 4.2.8
664
665 + Cleaned up the FreeBSD support in osloader.c. Symbols to use in Config
666 are to select image type, not FreeBSD specific now.
667
668 + Added simple signature checking code in floppyload.asm in case somebody
669 forgets to append a ROM image or tries to load a non-ROM image.
670
671 + Merged in 3c90x and multiple PCI bus support by Steve Smith. Thanks!
672
673 + Included NT-Diskless-Terminal HOWTO by Pavel Tkatchouk.
674
675 + Included snapshot of H. Peter Anvin's rewrite of tftp.
676
677 + Combined tftp and tftpd directories, and touched up Makefile to reflect
678 normal Linux install directories.
679
680 Released as Etherboot 4.2.9
681
682 + NT-Diskless-Terminal HOWTO renamed to Diskless-From-NT.
683
684 + One line fix to mknbi-dos to recognise FAT16 filesystems as legal.
685 Updated first.S in mknbi-dos so that it can be assembled by nasm and is
686 also suitable for FreeDOS with the right define. Still backward compatible
687 with as86. Bug fix at line starting getnm3:.
688
689 + Updated first.S in mknbi-linux so that it can be assembled by nasm also.
690
691 + Locate bootp data block at 0x93C00-0x93FFF to free up 1024+ bytes in
692 [0x98000-0x9FFFF]. Etherboot/32 only, business as usual for Etherboot/16.
693
694 + Patch from Attila Bogár to make CONGESTED a compile option for
695 TFTP_TIMEOUT. Also corrected spelling of his name in README.
696
697 + Fixed start32.S to assemble correctly with gas version 2.95. Must
698 define GAS295 in CFLAGS.
699
700 + Add contrib/3c90xutil containing a utility for handling 3c90x EEPROMs
701 in situ.
702
703 + Update p910nd to 0.3. client.pl now checks if hostname is known and
704 uses more convenient routines from Socket module.
705
706 + Moved the Flashcard directory into a separate package as it's of
707 limited interest.
708
709 Released as Etherboot 4.2.10
710
711 + Fixed bug introduced in 4.2.10 in code for handling bootp extension
712 files.
713
714 + Change in 3c90x.c so that it can compile under FreeBSD.
715
716 + Patch to tulip.c from Nick Lopez to handle Macronix 98715 (Tulip clone).
717
718 Released as Etherboot 4.2.11
719
720 + Prefer RFC1533_GATEWAY to giaddr for routing tftp packets.
721
722 + Print out both relay address and gateway address.
723
724 + Stored arptable ipaddrs in network byte order. Makes everything simpler
725 and we can get rid of convert_ipaddr. Now %I in printf and inet_ntoa
726 have to deal with NBO. We reduce the footprint by ~100 bytes.
727
728 + Renamed setip to more standard inet_ntoa and change argument type to
729 suit, using in_addr.
730
731 + Replaced bcmp by memcmp, bzero by memset, and bcopy by memcpy. Allows
732 us to use optimised versions in inline assembler.
733
734 + Replaced OUTB and OUTW by outb and outw with arguments reversed.
735 Finally all the out macros are the same form as for Linux.
736
737 + Replaced \r\n and \n\r in output strings with \n since putchar
738 now prints \r before \n. Then changed printf("\n") to putchar('\n').
739 Like Unix convention for strings now.
740
741 + Got rid of test.c and Makefile rules connected with it.
742
743 + Added patch to eepro100.c by Matt Hortman to correct PCI latency.
744
745 + Merged in Marty Connor's ntulip.c. Now supports Macronix 98715 and
746 Linksys LNE100TX.
747
748 Released as Etherboot 4.2.12
749
750 + Anders Larsen contributed mkQNXnbi, for generating tagged images from
751 QNX kernels.
752
753 + Bernd Wiebelt contributed code to request vendor tags in DHCP.
754
755 + Fixed more bugs introduced in 4.2.10 in code for handling bootp
756 extension files.
757
758 Released as Etherboot 4.2.13
759
760 + Marty Connor reduced RTL8139 footprint by using only one transmit
761 buffer instead of 4. Now RTL8139 is reliable.
762
763 + Moved initialised data declaration from ns8390.h to ns8390.c.
764
765 + Contributed utilities for wake-on-LAN: wol.c (Bob Edwards) and wake.pl.
766
767 + Makefile for 3c90xutil/romutil.c. -O is essential when compiling.
768
769 + Happy year 2000!
770
771 Released as Etherboot 4.4.0
772
773 + VIA-Rhine driver contributed by Paolo Marini. Footprint reduced by
774 Marty Connor.
775
776 + Netgear FA310TX (Tulip clone, LC82C168 chip) support added by Marty
777 Connor.
778
779 + Support for 3C905C added by Marty Connor.
780
781 + mklnim updated to support SuSE 6.x also.
782
783 Released as Etherboot 4.4.1
784
785 + New configuration file scheme to specify what ROMs are built.
786
787 + Adam Fritzler contributed 3c529 (MCA version of 3c509) support in
788 driver.
789
790 + Marty Connor wrote a version of 3c90xutil/romutil for 905C NICs.
791
792 + Günter Knauf contributed a wake on LAN CGI script.
793
794 + Notes in contrib/eepro100notes on how to flash the EEPROM.
795
796 + Happy Australia Day, 2000-01-26.
797
798 Released as Etherboot 4.4.2
799
800 + hwilmer AT gmx PERIOD de found a probe error in 3c507.c, shouldn't
801 mask memory size with 0xffffL, this fails with 64kB memory.  Also
802 changed to use real-time-clock to timeout on initialisation of i82586
803 rather than relying on decrementing a variable (which is CPU speed
804 dependent).
805
806 + James Pearson pointed out that ~ should be escaped as &tilde; in
807 vendortags.sgml. Also cleaned up the 8-bit characters while I was at it.
808
809 + Günter Knauf pointed out that if ASK_BOOT is defined, then key input
810 echos twice. Also, CR doesn't select the default. Problem was that getchar
811 converts all \r to \n then main.c was testing against \r instead of \n,
812 and also that getchar() was echoing when it should leave it to the caller.
813 Deleted code from getchar() and made it a function with no arguments.
814 Also sent me a new version of mp-form.pl with mp-form.txt. Also suggested
815 the good idea that the gateway and relay fields not be displayed if they
816 are not used.
817
818 + Bob Edwards sent in patches to ntulip.c to autodetect 100 Mb media
819 for 21142/3 NICs.
820
821 + Okuji Yoshinori found a small bug in main.c: for (retry1 = 0; retry < ..
822 Don't know what effect it had.
823
824 + Klaus Espenlaub sent patches which make the RTL8139 driver more
825 reliable, see notes in rtl8139.c.
826
827 + Russ Nelson gave permission to release cs89x0 driver with Etherboot.
828 It's normally under GPL. Moved cs89x0 driver to src directory, removed
829 cs89x0.sgml.
830
831 + Clarified copyrights of files in distribution.
832
833 Released as Etherboot 4.4.3
834
835 + Klaus Espenlaub sent in some patches to overcome the 64K block rollover
836 problem in tftp.
837
838 + Bob Edwards, Paul Mackerras and Marty Connor worked out fixes to
839 ntulip.c to handle 21142/3 Tulips properly.
840
841 + Karsten Tinnefeld sent in a Makefile fragment for doc/sgml/Makefile
842 to generate DVI and PS files using sgml2latex.
843
844 + tulip.* renamed to otulip.*, ntulip.* renamed to tulip.*
845
846 + Added FAQ and Writing an Etherboot Driver sections to README.
847
848 + Woops, if and of swapped in dd command in atnetboot.sgml.
849
850 Released as Etherboot 4.4.4
851
852 + FUKUHARA Makoto supplied a patch for 4.4.4 for FreeBSD ELF booting
853 with large tftp blocks which I missed putting in.
854
855 + Small patch by Marty Connor to tulip.c to handle fast Tulips better.
856
857 + Wrote small loader to load images from .com files.
858
859 + Shusuke Nisiyama contributed a 3c595 (and may work for 3c590) driver.
860
861 Released as Etherboot 4.4.5
862
863 A major reorganisation by Klaus Espenlaub. Here are his notes, verbatim:
864
865 The biggest change is the almost rewritten Makefiles (both in src and in
866 doc - the one in doc is still reasonably simple).  If you want to get
867 an overview - basically one Makefile now builds both /16 and /32 ROMs.
868 This involves quite a few make variables (similarly in Config), but it
869 should be mostly self-explaining.  I also converted the suffix rules to
870 pattern rules, because it is the only way to keep the build directories
871 for /16 and /32 apart.
872
873 Generally all /32 code is compiled in bin32, all /16 code is compiled
874 in bin16, and the code that works for both is in bin.
875
876 The names (object files, images, but NOT the final ROMs) used during
877 the build process for some PCI cards have changed (especially lancepci
878 and nepci).
879
880 I eliminated the driver.a file by adding yet more ugly code to genrules.pl
881 (no, I'm not very proud of the code I added there - I hate perl, but
882 at least it works), which now generates all sorts of make rules and
883 dependency information.  This eliminates the redundant recompile of all
884 other drivers if you specified a specific target at the make command line.
885
886 There are now automatic checks for the generated ROM size (3K safety
887 margin are used to allow for 1K BIOS EBDA and 2K stack).  This should
888 avoid most of the cases in which the stack overwrites code and/or data,
889 causing strange crashes.
890
891 On to the real code - I rewrote both the ELF and a.out loading (the
892 blocksize is now properly handled for all formats), and now most of the
893 code is identical.  Someone might want to merge the two.  I verified that
894 both a.out and ELF FreeBSD loading still works by booting the FreeBSD
895 2.2.8 and 3.4 install kernels (the ELF kernel you gave me didn't work
896 for whatever reason).  Actually I tested everything except NBI, but that
897 code is completely unchanged.
898
899 I eliminated config.h and created cards.h - just have a look and you
900 should get the idea.  The PCI/ISA prototype matching hack is now buried
901 in there.  All PCI drivers (and skel.c) have been converted to the new
902 include file.
903
904 The only file that is really new is nfs.c, which contains the code where
905 I started my journey.
906
907 The loader code is now merged into one file for both the normal and
908 compressed case.  Some bugs have been fixed along the way (the normal
909 loader copied too much data, potentially crashing the machine).  BTW: I
910 removed the block copy from comboot, because the first thing the loader
911 code does is - to copy the code to the right place.  Also copying it to
912 0x80000 prevents compressed ROMs (though there is no way in the Makefile
913 to create such a beast).  Also the stack changing code was wrong -
914 the overflow handling is missing: 0x9fxxxx-0x800000 is truncated to
915 fit in the 16 bit register, which is not quite what one would expect.
916 The stack pointer must be in the same segment, so for overflows just
917 load 0.  Anyway, we don't need a new stack for 4 bytes (the return
918 address).  Also the shifts won't work on an 8086/8088.  The ROM segment
919 and length code is also done once more in loader.S.  Finally the org
920 0x100 didn't work with my version of as86 - it prepended 256 null bytes.
921 Don't get me wrong - I see that comboot was just a quick and dirty hack.
922 It's now working...
923
924 I also fixed floppyload to read exactly the right amount of data (not
925 up to 65520 bytes more like the Linux code did) and ripped out some
926 unused code.
927
928 3c509.c: includes fixed, const added, static added, removed redundant code
929
930 3c90x.c: includes fixed, const added, shortened messages to save space,
931 made the transceiver selection bootrom fix optional (default: off),
932 updated 3c90x.txt
933
934 ansiesc.c: de-tftpified (now uses "download")
935
936 config.c: moved the driver prototypes to separate file, added a few const
937
938 cs89x0.c: ansified, const added, fixed timeout handling
939
940 eepro100.c: includes fixed, const added, static added, USE_INTERNAL_BUFFER
941 hack, passing globals as a parameter removed, timeout handling fixed,
942 comments fixed
943
944 epic100.c: comments fixed, const added, static added, USE_INTERNAL_BUFFER
945 hack, removed unused variables, changed debug code to use macro instead
946 of variable, allow broadcasts to be received (after all how did it
947 work before???)
948
949 etherboot.h: dual/serial console "cleanups", added NFS support, fixed
950 INTERNAL_BOOTP_DATA for pathologic cases, removed prototype within comment
951 (how did that end up there?), moved prototypes for config.c code here,
952 added consts all over the place
953
954 floppy.c: added static, changed cleanup code
955
956 floppyload.S: renamed from .asm
957
958 genrules.pl: I didn't write this :)
959
960 i82586.c: fixed includes, added const
961
962 lance.c: fixed DMA for PCI cards, removed leftovers from Linux driver,
963 USE_INTERNAL_BUFFER hack
964
965 linux-asm-io.h: added prototypes
966
967 linux-asm-string.h: added prototypes
968
969 loader.S: renamed from loader.asm, more comments see elsewhere in
970 this mail
971
972 loader.inc: removed
973
974 main.c: includes fixed, static and const added, Etherboot/32 now prints
975 relocaddr, hooks for NFS support, drain the Rx queue in some strategic
976 places (after sleep), changed interface to await_reply: timeout handling,
977 new cleanup code
978
979 misc.c: ansified, twiddle code changed, strcasecmp enabled for
980 Etherboot/16 (smaller than the 16 bit libc version), clear A20 before
981 kernel is started (only for NBI), dual console fixes, removed bogus
982 comment about interrupt enabling using iskey()
983
984 nic.h: include guard added, added const
985
986 ns8390.c: fixed includes for PCI version, added const, ansified, renamed
987 internal functions
988
989 osdep.h: removed #include <asm/byteorder.h> - probably all #ifdef
990 __linux__ and __FreeBSD__ may be removed now.
991
992 osloader.c: see elsewhere in this mail. removed loads of debugging code.
993
994 otulip.c: removed unused variables, USE_INTERNAL_BUFFER hack, ansified,
995 added const
996
997 otultip.h: added const
998
999 pci.c: fixed signed comparison
1000
1001 pci.h: include guard added, const added
1002
1003 rtl8139.c: static added, const added, globals are no longer passes as
1004 parameters, fixed probe loop
1005
1006 serial.S: removed the Makefile hack to calculate the divisor and replace
1007 it by a CPP hack
1008
1009 sk_g16.c: added static/const
1010
1011 skel.c: updated
1012
1013 smc9000.c: fixed includes, added const, fixed timeout, removed unused
1014 variables
1015
1016 start16.S: changed stack pointer reloading
1017
1018 start32.S: cleaned up GAS295 support, fixed CPU detection, fixed memsize
1019 for > 64MB, added basememsize()
1020
1021 tiara.c: fixed includes, added const, removed unused variable
1022
1023 tulip.c: fixed includes, added const, decreased oversized frame tolerance,
1024 USE_INTERNAL_BUFFER hack, converted to C comments, fixed prototypes,
1025 removed unused variable
1026
1027 via-rhine.c: fixed includes, converted to C comments, removed unused
1028 functions, fixed timeout, USE_INTERNAL_BUFFER hack, removed unused
1029 variable, const added
1030
1031 lzhuf.c was modified not to output ':' characters, because I find it
1032 useful to search for them in a make log to spot all error messages.
1033
1034 Finally all symlinks have gone
1035
1036 I fixed sgml/vendortags.sgml (maybe it's more a workaround): sgml2txt
1037 didn't like the ~~' sequence and ignored a whole line, making the .txt
1038 file incomplete.  Also freebsd.txt was converted to sgml.
1039
1040 My standard patch to netboot-0.8.1/configure (to remove the "unknown") is
1041 again in place - how is this file created? By hand?  I added serial/dual
1042 console support to mknbi-linux.
1043
1044 Oh, and something I almost forgot: Etherboot now works under VMware.
1045 VMware has a rather large EBDA (3K instead of 1K like most other
1046 BIOS versions), so one might have to sacrifice a few nifty options.
1047 Note that the Makefile check cannot detect this - maybe we should add a
1048 runtime check, too?  One thing that doesn't work with VMware is the "Boot
1049 Local" stuff - it's not terribly useful if you have to boot from disk,
1050 but it shouldn't crash the machine (I've seen several triple faults,
1051 depending on RELOCADDR and the stack usage).  I tracked it down to the
1052 fact that VMware crashes on int 0x19 if the memory area 0x98000-0x9f3ff
1053 is overwritten.  If one changes RELOCADDR to 0x8f000, everything works
1054 nicely.  Someone should report the bug to VMware.  Also proper boot ROM
1055 support should be added to VMware and they should upgrade the virtual
1056 card to 100Mbps (don't laugh - they limit the bandwidth to 10Mbps even
1057 if you have a real 100Mbps card!).  Maybe one could even use the flash
1058 utility for the recent AMD PCnet cards...
1059
1060 Released as Etherboot 4.5.5
1061
1062 + More fixes from Klaus Espenlaub, based on bug reports by Doug Ambrisko
1063 and others. Small cleanups in tulip.c. He also added a BACKOFF_LIMIT
1064 parameter to the exponential backoff for retry intervals.
1065
1066 + Christoph Willing sent in a fix for PCI NE2000s which forces 16-bit
1067 transfer mode for PCI. This might make it work on some PCI NE2000s that
1068 failed before, please test if you can.
1069
1070 + Moved commercial links off main web page into web page of its own.
1071
1072 + Merged in TRY_FLOPPY_FIRST code from <as AT bart PERIOD nl>.
1073
1074 Released as Etherboot 4.5.6
1075
1076 + Frank Mehnert spotted a bug in tulip.c where the sole transmit buffer
1077 was not tagged as the last one in the chain.
1078
1079 + Hacked serial.S to check if a serial interface is present and to disable
1080 the routines if not, so that Etherboot does not hang on a machine without
1081 a serial interface, even if the option has been compiled in.
1082
1083 + Wrote mkromnbi for making a network bootable image from a ROM image
1084 (for using Etherboot to test another Etherboot driver).
1085
1086 + Krzysztof Halasa found a small bug in nfs.c in the handling of BOOTP
1087 extension files.
1088
1089 + Some instructions on adding Etherboot to a main BIOS were contributed
1090 by Dirk von Suchodoletz.
1091
1092 + Some commentary on cbrom.exe versions posted by Rapp Informatik Systeme
1093 GmbH to the Netboot mailing list included.
1094
1095 Released as Etherboot 4.5.7
1096
1097 + Patrick Auge pointed out that -DT503_SHMEM option should be not used
1098 by default, as the comments say.
1099
1100 + Heinrich Rebehn pointed out that the documentation needed to be updated
1101 for the new bin32 and bin16 prefixes for targets.
1102
1103 + Christoph Plattner found that node_addr in struct nic should be unsigned
1104 char * or problems occur in the handling of the MAC address in cs89x0.c.
1105
1106 + Greg Hudson pointed out that inet_ntoa is misnamed, it should be
1107 inet_aton.
1108
1109 + Vsevolod Sipakoff suggested that the probe address list for NE2000
1110 should match that of Linux. Done, with the deletion of 0x360 which often
1111 conflicts with the parallel port at 0x378.
1112
1113 + Created mknbi, a Perl utility that replaces mknbi-dos, mknbi-linux,
1114 mkfreedosnbi, and mkromnbi. Removed mk{freedos,rom,elks}nbi/ from
1115 contrib/.  (ELKS has its own tagged image creation method now.)
1116
1117 + Removed obsolete/ from contrib/.
1118
1119 Released as Etherboot 4.5.8
1120
1121 + Some small enhancements to mknbi. Merged in disnbi and mklnim. Changed
1122 version to 1.0.
1123
1124 + netboot-0.8.1 directories distributed separately now.
1125
1126 Released as Etherboot 4.6.0
1127
1128 + Nick Lopez discovered that the Davicom 9102 is Yet Another Tulip Clone
1129 and a few appropriate initialisations will make it work.
1130
1131 + Matthew Reimer sent in patches for contrib/3c90xutil.c/bromutil.c to
1132 compile and run under FreeBSD.
1133
1134 + Krzysztof Halasa found that the number of buffers in epic100.c needed
1135 to be raised to 2 each for operation at 10 Mb for the PCI EtherPower
1136 9432B-TX using the SMC 83C171.
1137
1138 + Klaus Espenlaub fixed the root path handling in main.c, it wasn't
1139 requesting option 17 in DHCP. Also removed one prototype warning in
1140 tftp().
1141
1142 + Daniel Shane sent in code for for adding identifiers to a DHCP request,
1143 using a user specified DHCP option. The patch is in contrib/dhcpid.
1144
1145 + Bug fix in mknbi-1.0 for the ipaddrs=rom option, warnings about badly
1146 formed specification to ipaddrs= or unresolvable names.
1147
1148 Released as Etherboot 4.6.1
1149
1150 + Stuart Lynne sent in patches to allow - to mean reuse kernel filename
1151 in menu specifications. Also fixed DHCP request to ask for tags 129 and
1152 130 (Ken added this), as the mknbi man page promised.
1153
1154 + Fixed URL for Richard Ferri's LUI.
1155
1156 + Added URL for Gregory R. Warnes' ClusterNFS.
1157
1158 + Changed RFC2132_MAX_SIZE option in main.c to allow maximum size DHCP
1159 replies.
1160
1161 + Matthias Schniedermeyer submitted an optional feature to use numbers
1162 instead of letters for bootmenu entries.
1163
1164 + Brought some FAQs up to date with mknbi-1.0.
1165
1166 + Wrote perl script mklrpnb for making netboot image from Linux Router
1167 Project floppy.  Tested on Coyote Linux (based on LRP).
1168
1169 Released as Etherboot 4.6.2
1170
1171 + Re-enabled tulip.c:tulip_disable() code.
1172
1173 + Minor fix to SHOW_NUMERIC code in bootmenu.c.
1174
1175 + Minor spelling corrections to vendortags.sgml.
1176
1177 + andreas.kabel AT slac PERIOD stanford PERIOD edu pointed out that to
1178 be RFC951 compliant, the broadcast BOOTP request near line 705 of main.c
1179 should use port BOOTP_CLIENT and thus stand a better chance of going
1180 through firewalls.
1181
1182 + Christoph Plattner found that the 16 bit bus width fix for NEPCI cards
1183 introduced in 4.5.6 breaks operation for other NEPCI cards. So now the
1184 #define symbol is NS8390_FORCE_16BIT, to be used when the NIC requires
1185 16 bit bus width but Etherboot guesses wrong. This needs to be fixed
1186 later to autodetect adapter bus width.
1187
1188 + Shusuke Nisiyama sent me the PCI IDs for 3C595 NICs so that ROM images
1189 could be generated for them.
1190
1191 + Jim McQuillan sent in modifications to tulip.c to reject bad packets.
1192
1193 + Klaus Espenlaub suggested changing the filename substition macro in the
1194 IDENT16 and IDENT32 strings to $(@F) so that only the filename portion of
1195 the pathname is inserted.  Otherwise the contributed romid program breaks.
1196
1197 + Added author ident and copyright status to contrib/bin2intelhex.c.simple
1198 at Rogier Wolff's request.
1199
1200 + Günter Knauff sent updates to romid and mp-form.
1201
1202 Released as Etherboot 4.6.3
1203
1204 + Marty Connor contributed patches to tulip.c to support the LinkSys
1205 LNE100TX v4 NICs.
1206
1207 + Added rmrd.com to mknbi-1.0 directory.
1208
1209 + Added experimental changes to allow RELOCADDR to be changed to 0x88000
1210 to avoid Disk On Chip drivers. See RELNOTES and Makefile for details.
1211
1212 Released as Etherboot 4.6.4
1213
1214 + Chris Johns found a long-standing bug in first-linux.S. ES would
1215 sometimes != CS, making the ramdisk moving fail.
1216
1217 + Made --harddisk work for mknbi-fdos.
1218
1219 Released as Etherboot 4.6.5
1220
1221 + Bug in mknbi-dos, last sector omitted in ramdisk image.
1222
1223 + Use ceil() for computing number of rootdir sectors.
1224
1225 + --harddisk now works for mknbi-dos also.
1226
1227 + Should work on FAT16 partitions now.
1228
1229 + New driver for Winbond W89C840 by Igor V. Kovalenko.
1230
1231 + Modification to loader.S by Steve Smith for some PCI BIOSes that don't
1232 handle INT19H well.
1233
1234 + Small bug in osloader.c, j not defined in two places if DELIMITERLINES
1235 defined.
1236
1237 Released as Etherboot 4.7.6 (developmental)
1238
1239 + All the changes from 4.6.5 to 4.6.6 back propagated except for the
1240 loader.S change.
1241
1242 + Removed -nostdlib from ld flags. Seems to be a vestige from when we
1243 were calling gcc as it's not an ld option.
1244
1245 Released as Etherboot 4.6.6
1246
1247 + Contributed one-line patch to allow booting from SCSI disks also (sd).
1248
1249 + Grzegorz Jablonski sent in a fix for long-standing bug in loader.S that
1250 prevented booting on some BIOSes.
1251
1252 + More updates to documentation.
1253
1254 Released as Etherboot 4.6.7
1255
1256 + Rick Kennell pointed out that there is another place in main.c where
1257 the DHCP request is sent with a source port of 0, which may not elicit
1258 replies from some DHCP servers or pass gateways. Changed to
1259 BOOTP_CLIENT.
1260
1261 + Depca driver finally works.
1262
1263 + Changed unsigned int len; to int len; in 3c595.c transmit routine
1264 which was generating a warning from gcc.
1265
1266 + Removed warning about ljmp indirect without * in start32.S by putting
1267 in the *. Checked that generated code has not changed by comparing
1268 binaries. Later: But only for gas 2.9.5 and above, gas 2.9.1 doesn't
1269 like *.
1270
1271 + Wanted to do the same for the lcall's in pci.c but discovered that
1272 gas 2.9.1 chokes on *, and as I don't want to introduce more #ifdefs
1273 into pci.c, we'll just live with the warnings until gas 2.9.1 is dead
1274 or the incorrect syntax is rejected by a current gas release.
1275
1276 + Reversed #define so that GAS291 indicates gas 2.9.1. Rationale: gas
1277 2.10 probably behaves like gas 2.9.5 so the default should be the new
1278 behaviour.
1279
1280 + NI5010 driver finally works. Weird NIC, has only 2kB memory on board
1281 so if you don't switch to the receiver immediately after transmitting
1282 you will lose the reply packet. (This is a very ancient board, I was
1283 doing the driver for kicks.)
1284
1285 + Implemented a low-overhead timer routine for implementing timeouts in
1286 drivers. This timer should be used instead of hacks with integer loops
1287 (which are CPU speed dependent) or calling currticks(), which has
1288 relatively high overhead because it reads the BIOS timer, and has a
1289 resolution of only 1/18th of a second.  Timer 2 of the 8254 timer chip
1290 can be loaded with an unsigned 16-bit value that will be decremented at
1291 about 1193 counts per ms (constant TICKS_PER_MS in timer.h). So the
1292 maximum timeout that can be implemented with a single call is about 54
1293 ms. Call load_timer(u16) to load and start the timer (0 == 65536). Call
1294 int timer2_running() to check if it is still active. timer2_running can
1295 be interleaved with other tests, e.g. on the NIC hardware registers.
1296 When the timer runs down to 0, it will return 0. If you just need to
1297 delay a short time, call waiton_timer2(u16) to load and delay that many
1298 ticks.
1299
1300 + Removed slowdownio() from sources. It's called in only one place and
1301 is followed by a call to currticks() which will result in a large delay
1302 anyway. It's also not clear if the strategy in slowdownio (a couple of
1303 local jumps) will even work on fast CPUs with instruction caches.
1304
1305 + Removed support for %i (alias for %d) in printf. Nobody uses it, if
1306 they do they should just edit the format string to use %d, and removing
1307 it means one less non-standard format in printf; we have %X, %b and %I
1308 as it is.
1309
1310 + Simplified currticks() by accessing BIOS variables directly instead of
1311 calling timeofday BIOS interrupt.
1312
1313 Released as Etherboot 4.6.8
1314
1315 + I'm pissed off with the inconsistency between gas 2.9.1 and gas 2.9.5
1316 re ljmp * (indirect jump). Some assemblers claiming to be 2.9.5 dislike
1317 the * (RH6.2's is one). I'm going to just make it ljmp and live with the
1318 warning message until the gas 2.9.1 syntax is totally dead.
1319
1320 + Various fixes from Klaus Espenlaub: Fix for NFS booting from *BSD
1321 platforms, fix for Lance driver, interrupt was being turned on, fix for
1322 serial.S and code cleanups.
1323
1324 + Paul Robertson of Locsoft found that if the top half of %esp contains
1325 garbage just before the first call to real_to_prot in start32.S, it can
1326 affect booting on some BIOSes. Inserted andl to clear top half.
1327
1328 + Sleep for 2 seconds after failure to load file to avoid pounding the
1329 server if the file does not exist and thus shutting down the tftp
1330 service (inetd has rather poor rate controls).
1331
1332 + Shredda of gmx.de reported a discrepancy between the Macronix MX98715
1333 device IDs used in pci.h and NIC. Marty Connor has ruled that the id in
1334 NIC is a typo.  If booting works from floppy but not from ROM, this may
1335 be the reason.
1336
1337 Released as Etherboot 4.6.9
1338
1339 + Oops, a brown paper bag bug in start32.S. Forgot that the currticks()
1340 needs interrupts enabled to work. Calling the BIOS allowed interrupts to
1341 happen by going into real mode (interrupts are disabled in protected
1342 mode). So inserted prot_to_real and real_to_prot pair inside
1343 currticks().
1344
1345 Released as Etherboot 4.6.10
1346
1347 + Marty Connor and Gary Byers of thinguin.org contributed a LILO prefix
1348 file that makes the Etherboot image look like a Linux kernel to LILO and
1349 thus bootable from the LILO prompt.
1350
1351 + Ifdefed out code in mknbi that falls back to the tftp directory for
1352 root-path. The result is that the options passed to the kernel specifies
1353 the tftp directory as nfsroot even if there is no root-path option in
1354 the DHCP or BOOT server configuration. This interacts badly with recent
1355 Linux kernels which actually pay attention to the root-path handed down
1356 and use that as nfsroot. People who were expecting the diskless kernel
1357 to use the default /tftpboot/<name of client> as nfsroot would have been
1358 surprised to find it trying to use the tftp directory (which often
1359 happens to be /tftpboot, although I recommend that it be different, to
1360 improve security).
1361
1362 + Eric Biederman found an off-by-one bug in the ELF loader.
1363
1364 + Christoph Plattner pointed out that the comments for COMCONSOLE in
1365 Config are wrong, the serial port is at 3F8, not 378.
1366
1367 + A couple of updates to wol.c and wake.pl by Günter Knauff.
1368
1369 + The Davicom 9009 and 9102 driver was contributed by Sten Wang of
1370 Davicom. It will be merged into tulip.c later.
1371
1372 + Implement eepro100_disable. There have been reports of memory
1373 corruption after Etherboot has handed over to the booted image due to
1374 the live controller.
1375
1376 + Matt Hortman reported a new Intel NIC, 82559ER, with different IDs.
1377 Added to file NIC.
1378
1379 + Ranjan Parthasarathy reported another Tulip clone from ST Micro with
1380 different IDs.  Added to file NIC.
1381
1382 Released as Etherboot 4.6.11
1383
1384 + Stefan Lesicnik sent in a report from Intel which explains what is
1385 probably wrong with the PnP header. BEV should point to the mainline
1386 vector, not to the part that installs the INT19H vector.
1387
1388 + Hopefully finally fixed DHCP option limit problem. It was requesting
1389 large packets but not parsing them fully due to the length limit passed
1390 into decode_rfc1533(). Thanks to shredda for testing this.
1391
1392 + Added the # modifier to printf, it prefixes 0x to %x and %X making
1393 printf formats shorter throughout. 0x%[xX] changed to %#[xX] in lots of
1394 files.  Now if only I could make b,x,X the standard hhx,hx,x and get rid
1395 of I.
1396
1397 + Andreas Neuhaus provided patches for multiple rx buffers for lance.c
1398 which made it work again with VMware.
1399
1400 + Perl script to convert floppyfw floppies to netbootable images.
1401
1402 + Marty Connor made some small changes to liloprefix and Makefile to
1403 make the LILO images SYSLINUX bootable also.
1404
1405 + Make the default return value for _poll in skel.c 0 so that when
1406 driver writers implement _transmit first, it will not hang on garbage
1407 return values from _poll when it's called to flush the input queue
1408 before the first transmit.
1409
1410 + EEPRO/10 driver now works. µs timer routines came in useful.
1411
1412 + Anders Larsen sent in a patch to 3c90x.txt which makes it clearer.
1413
1414 + Added more stuff to the documentation.
1415
1416 + Fixed bug in mknbi that always did the equivalent of --ipaddrs=rom
1417 no matter what. Also removed undef from my variable list in TruncFD.pm
1418 so that it won't have problems with Perl interpreters.
1419
1420 Released as Etherboot 4.6.12
1421
1422 + Jim McQuillan sent in a patch for first-linux.S where it was assuming
1423 the argument in tag 129 (additional parameters) is a null terminated
1424 string, when it's a length counted string. A new routine, addkarg was
1425 created to handle this.
1426
1427 + eepro100 should handle newer NICs with 256 byte EEPROMs now. This
1428 includes the onboard NICs on some motherboards, see file NIC. Thanks to
1429 Stephan Lauffer for helping with the fixes. WARNING: This code may have
1430 a bug that causes the onboard EEPROM to be corrupted. We believe we have
1431 found and removed the bug but please proceed with care.
1432
1433 + DHCPDISCOVER was sending out one byte too many for PARAM_LIST.
1434
1435 + In DHCPDISCOVER send "Etherboot" in VENDOR_CLASS_ID option (60).  Will
1436 add code later to check for "Etherboot" in vendor encapsulated options.
1437
1438 + Used µs timer routines in 3c509 for more accurate timing and hence
1439 better hardware detection. Use COMMAND_IN_PROGRESS bit to detect
1440 transmit complete instead of waiting for a fixed amount of time. Get rid
1441 of eth_vendor and associated tests, it doesn't serve any useful purpose
1442 since the driver was modularised long ago and the 3c509 detection status
1443 is stored outside of the driver now. Got rid of some unused global
1444 statics in 3c509.c, leftovers when the drivers were monolithic. Wait 2
1445 seconds after enabling TP interface to give it time to come up. This
1446 allows us to get rid of T509HACK in main.c.
1447
1448 + Get rid of eth_vendor and associated tests in cs89x0.c, same reasons
1449 as for 3c509.c.
1450
1451 + Moved the rest of the VENDOR_ and FLAG_ defines into ns8390.h, as
1452 ns8390.c is the only file that uses them now.
1453
1454 + Use lower 32 bits of node address + current time for xid (network byte
1455 order). More likely to be distinct from other clients than just the
1456 current time, which is similar for all clients booted at about the same
1457 time.
1458
1459 + Support for 16-bit code has been removed.  XTs and ATs are pretty much
1460 dead now and in fact many Etherboot/16 drivers have been broken for a
1461 while but nobody noticed. This should make some of the code easier to
1462 maintain.  If you really wanted 16 bit support, use an older version of
1463 Etherboot, maybe 4.4 or something like that, not sure when things
1464 started breaking for 16 bit mode.
1465
1466 + Should not store IP and UDP headers at BOOTP_DATA_ADDRESS. Redefined
1467 bootp_t without IP and UDP headers. Now requested size of bootp packet
1468 matches storage available. Do not add sizeof(iphdr) + sizeof(udphdr) to
1469 bootp pointer in start32.S:xstart now. start16.S:xstart was broken
1470 because it did not do this addition but nobody noticed.
1471
1472 + Removed array kernel_buf, saving 128 bytes and replaced with
1473 KERNEL_BUF, a pointer into the bp_file of the bootp_reply structure at
1474 BOOTP_DATA_ADDR. Note: this depends on the server not sending Option
1475 Overload which would use the sname and file fields for options, but we
1476 don't request this option so it shouldn't.  Removed char *kernel,
1477 instead check KERNEL_BUF[0] just before booting and if null, use
1478 fallback filename.  (This is needed for future extensions to booting
1479 protocol.)
1480
1481 + Define a shorter tftpreq_t type for making requests instead of using a
1482 full sized tftp_t packet to reduce stack usage.
1483
1484 + Defined macros for htonl/htons/ntohl/ntohs for cases where the operand
1485 is a constant, saving a function call.
1486
1487 + Started on first32.c, a protected mode 32-bit version of
1488 first-linux.S, which should be far easier to read and maintain. Will
1489 boot basic Linux kernels correctly but doesn't handle ramdisk or
1490 kernel arguments yet.
1491
1492 + Updated nfs-swap documentation in contrib/nfs-swap to point to
1493 Claus-Justus Heine's new web page.
1494
1495 Released as Etherboot 4.7.13 (development)
1496
1497 + Added more IDs for eepro100 variants taken from the Linux 2.2.18
1498 source. Should handle the EEPROM properly now, a few defines were wrong
1499 in 4.7.13.  Loop counter timeouts in eepro100.c replaced with hardware
1500 timeouts.  Don't loop waiting for packet in _poll, return 0 immediately.
1501
1502 + first32.linux works. Does kernel arguments and ramdisk but doesn't do
1503 appended parameters from menu selections, which should be replaced by a
1504 more elegant menu scheme anyway.  Needed gateA20 routines in
1505 mknbi-1.1/first32.c otherwise cannot access extended memory.
1506 first32.linux should be able to handle memory > 64 MB, which the old one
1507 couldn't.  Support for first32pm call protocol added.
1508
1509 + 3c595.c changed to use hardware timer for delays. Transmit routine
1510 waits for a fixed period after transmitting. Changed to check
1511 S_COMMAND_IN_PROGRESS bit. It also contains some of the same unused
1512 variables as 3c509.c and mentions 3c509 in some comments. Cleaned up.
1513
1514 + Hmm, how come this wasn't fixed long ago? Should discard BOOTP/DHCP
1515 replies that are not to broadcast or own MAC address. I guess xid caught
1516 practically all of the non-matching packets. (Later: Actually the NIC
1517 should filter out packets we don't want, but leave test in anyway, it's
1518 the last test.)
1519
1520 + Removed last vestiges of ETHERBOOT32 and ETHERBOOT16.
1521
1522 + ETHER_ADDR_SIZE => ETH_ALEN, ETHER_HDR_SIZE => ETH_HLEN,
1523 ETHER_MIN_PACKET => ETH_ZLEN, ETHER_MAX_PACKET => ETH_FRAME_LEN.  More
1524 Linuxy and therefore more familiar to programmers.
1525
1526 + Cleared up confusion with 60/64 and 1514/1518 for minimum and maximum
1527 frame sizes. Practically always the right numbers are 60/1514, except
1528 that some chips count the FCS in the receive length, then we have to use
1529 64/1518.
1530
1531 + Make __swap32 and __swap16 inline routines available globally as
1532 swap32 and swap16. eepro.c can use swap16 instead of making up one.
1533
1534 + Make aui field in nic.h an int since it will be padded to a longword
1535 boundary anyway and call it flags so that other drivers can use it for
1536 their own purposes. Currently only 3c503 uses it to indicate AUI xcvr.
1537
1538 + Make sprintf return number of characters written instead of a pointer
1539 to the last char written to be more consistent with standard C.
1540
1541 Released as Etherboot 4.7.14 (development)
1542
1543 + Thanks to Mark VandeWettering for the start of HomePNA (networking
1544 over phone lines) support for the AMD 79C978.
1545
1546 + Bug fixed in first32.c handling of (ip|nfsroot)=X where X is not rom.
1547
1548 + first32pm.linux works. No need to go into real mode to call first32pm
1549 and then it goes back to protected mode. Paves the way for extension
1550 routines to Etherboot.  Implement program returns to loader flag in
1551 header field.  Added option to mknbi to specify this.
1552
1553 + first32*.linux: Check tag 128 present and correct before appending tag
1554 129. Also tag 129 should be appended to parameters before substitutions.
1555
1556 + Merged cleanup_net into cleanup since they are always called together.
1557
1558 + Floppy booting doesn't need to be passed BOOTP_DATA_ADDR.
1559
1560 + Clean up variables associated with tagged image loading in osloader.c.
1561
1562 Released as Etherboot 4.7.15 (development)
1563
1564 + Duplicated 3c900 PCI IDs under 3c595 as some NICs apparently detect
1565 and work with the 3c595 driver but not the 3c90x driver, according to a
1566 report from Dirk Pfau. (The 3c90x series has two modes of operation,
1567 programmed I/O mode descended from the 3c509, good only for 10 Mb
1568 operation, and bus mastering mode, essential for 100 Mb operation. For
1569 network booting, either mode is acceptable.)
1570
1571 + Removed auto from kernel parameters; it's the default already.
1572
1573 + Use hardware timer instead of loop counter for transmit timeout in
1574 3c90x.c.
1575
1576 + Define a jmpbuf type for setjmp and longjmp. Trim size to 7 longs,
1577 that's all that's needed. Standardise the return values from longjmp:
1578 -2: loader error, -1: timeout or ESC, 0...: various meanings to
1579 Etherboot main loader.
1580
1581 + Ansify function headers in bootmenu.c.
1582
1583 + Make _int10 return ax | (bx << 16) as result so that these can be
1584 accessed more efficiently in the following statements.
1585
1586 + Make handleansi take unsigned int instead of unsigned char as
1587 argument, otherwise extra code will be generated to handle this
1588 according to ANSI rules.  (Quite significant saving of 55 bytes.) Rename
1589 it ansi_putc for clarity.
1590
1591 + Prefix getc, putc and ischar with console_ to make things clearer and
1592 to avoid confusion with the Unix getc, putc.
1593
1594 + Add menu as a target to mknbi. Started source code for menu extension.
1595 Successfully transferred control to menu at 0x10000 and back. ANSI
1596 colour controls work, at least. Return end needs more work.
1597
1598 + Started on ELF support in mknbi.
1599
1600 Released as Etherboot 4.7.16 (development)
1601
1602 + Added atftp 0.2 (ftp://ftp.mamalinux.com/pub/atftp/) to contrib/.
1603 Supposedly contains a tftpd that runs multithreaded, which may help
1604 people having problems with *inetd shutting down tftpds that spawn too
1605 fast.
1606
1607 + Added a few more Tulip entries to config.c and NIC, not all of them
1608 have been confirmed working.
1609
1610 + Got ELF format creation in mkelf-linux working now. At least one empty
1611 section header is required to make a valid ELF file.
1612
1613 + Added code to support non-MULTIBOOT ELF when IMAGE_ELF is selected but
1614 IMAGE_MULTIBOOT is not.  Booting from images created by mkelf-linux
1615 now works!
1616
1617 + TAGGED_IMAGE is now not always selected. It's just the fallback if
1618 none of TAGGED_IMAGE, AOUT_IMAGE or ELF_IMAGE is selected. Therefore you
1619 must explicitly select TAGGED_IMAGE if you want it, and you have
1620 selected AOUT_IMAGE or ELF_IMAGE.  Startup banner line displays all
1621 image formats accepted.
1622
1623 + exit() in mknbi/start32.S should copy argument to %eax first.
1624
1625 + Images with 0xAA55 in bytes 510-511 are no longer accepted, which
1626 should reject invalid formats now, e.g. Linux kernel images, which have
1627 a boot sector in the first block. Strictly this does not conform to the
1628 original netboot spec by Jamie Honan, which specifies that non-tagged,
1629 linear images starting from 0x10000 are allowed, but that format is
1630 pretty useless now. Any decent loading scheme needs a roadmap to the
1631 blocks in the downloaded file, which is what tagged, a.out, or ELF
1632 images provide in the header. Q: What is config_buffer in main.c for?
1633 Nothing else seems to use it. Is it a relic of non-tagged images?
1634
1635 + Clean up lots of obsolete prototypes in etherboot.h. Ansify lots of
1636 function headers in main.c. Make lots of functions and variables in
1637 main.c static.  Make bootmenu.c:getoptvalue() static.
1638
1639 + Simple external menu program works!
1640
1641 + More documentation cleanup, notably editing the compile options to
1642 match what has been done.
1643
1644 Released as Etherboot 4.7.17 (development)
1645
1646 + Marty Connor did it again! He found a long standing bug in the PnP ROM
1647 header which caused it not to be recognised by BIOSes. Now Etherboot ROM
1648 images are PnP compliant. I hacked makerom.c to fill in the offset of
1649 the ident string for the device string so that the BIOS can even print
1650 out "Etherboot" and the device ident on boot up.
1651
1652 + Made demo menu program a bit more elaborate with timeout.
1653
1654 + Igor V. Kovalenko fixed the Winbond W89C840 driver to use the hardware
1655 timer instead of CPU counter loops. Now none of the Etherboot drivers
1656 rely on CPU speed dependent loops.
1657
1658 + Small fix to contrib/p910nd.c to not use getprotobyname which requires
1659 libnss_files.so, which may not be installed in all environments.
1660
1661 + Small change to contrib/mkffwnb to allow the user to choose ELF format
1662 (by editing one line) instead of tagged format.
1663
1664 + Patch to atftp-0.2 to make it accept a filename if the directory is a
1665 prefix of the filename. This is needed so that valid absolute pathnames
1666 will work. Patch sent to atftp authors.
1667
1668 + Added support for filtering out replies which do not include a Vendor
1669 Class Identifier of "Etherboot" in the Vendor Encapsulated Options. This
1670 can be used to select only the DHCP servers which we want to get
1671 addresses from and reject the rest.  Select the compile option
1672 -DREQUIRE_VCI_ETHERBOOT. This requires ISC DHCPD 2 or 3 AFAIK.  (It's
1673 not documented in DHCPD 2, but it works.) Other DHCP servers may support
1674 VEO. (It's a RFC2132 option.)
1675
1676 + Jim Thomas suggested a way, other than creating /fastboot, of
1677 preventing fsck from running on NFS root, ln -s /bin/true
1678 /sbin/fsck.nfs. Not verified but should work. Added to documentation.
1679
1680 Released as Etherboot 4.7.18 (development)
1681
1682 + Pavel Tkatchouk verifies that lance.c can handle PCnet-FAST III
1683 79c973. Added a new entry to lance.c and NIC. NIC entry not verified
1684 yet.
1685
1686 + Enhanced disnbi to decode ELF images too.
1687
1688 + Arrgh! There are old BIOSes that rely on the wrong order of the bytes
1689 in the device identifier in the PCIR and PnP structures. Wrote a Perl
1690 program swapdevids.pl to swap these bytes. Apply this to image file just
1691 before programming the EPROM.
1692
1693 + Marty Connor suggested that the specs state that for PnP ROMs the
1694 unsuccessful return from boot should be int 0x18 rather than int 0x19.
1695 Using int 0x19, selecting L for local device doesn't work. Fixes needed
1696 in both loader.S and start32.S (get lret to work properly, instead of
1697 doing an int 0x19 directly, involved saving ss and sp in real mode
1698 instead of in protected mode).
1699
1700 + Wrote a Perl program disrom.pl to display key structures of a ROM
1701 image.
1702
1703 + Added call to binmode() in various Perl utilities so they should work
1704 under other OSes.
1705
1706 + Added check in makerom.c to warn if 55 AA not found at start of image.
1707 It seems some people don't read the warning not to use the Linux
1708 supplied as86.
1709
1710 + It seems Z is a recent addition to pack/unpack formats in Perl and
1711 even a Perl as recent as 5.004 doesn't implement it. Change Z5 in
1712 mknbi.pl and TruncFD.pm to a5 since we only need to compare it against
1713 'FAT12' and 'FAT16'.
1714
1715 + Some errors found in osloader.c in the #ifdef IMAGE_MULTIBOOT
1716 sections.  kernel should be KERNEL_BUF and union info should have
1717 unsigned short s[256];. Also kernel -> KERNEL_BUF for IMAGE_FREEBSD,
1718 obviously few FREEBSD users have tried compiling it.
1719
1720 + Explain in docs that .com and .(lz)lilo images can be generated and
1721 touch briefly on how to use them.
1722
1723 + Donald Christensen contributed translations of floppyload.S and
1724 loader.S to gas syntax. Currently they are in contrib/gassyntax/.  They
1725 potentially allow us to throw away as86 and/or nasm and use GNU tools
1726 throughout, but I have to do some work on them: 1. I have to check what
1727 versions of gas accept the syntax, the 16-bit mode in gas was a recent
1728 enhancement; 2. I have to put back the #ifdef PCI_PNP_HEADER into
1729 loader.S and also bring it up to date to the recent patches.
1730 floppyload.S should be usable as is.
1731
1732 Released as Etherboot 4.7.19 (development)
1733
1734 + Donald Christensen completed the translation of loader.S and all the
1735 other .S files in the src directory that previously required as86 or
1736 nasm. No more futzing around with precompiled versions. Yipee!
1737
1738 + Luigi Rizzo contributed a slightly hacked FreeBSD loader that works on
1739 floppy or hard disk. See boot1a.s for details. Makefile rules edited.
1740 Targets renamed .dsk and .lzdsk to indicate they're not floppy specific
1741 now. Documentation updated. I note that the loader is smart enough to
1742 figure out exactly how many sectors have to be read.
1743
1744 + Renamed comload.S to comprefix.S which describes it better.
1745
1746 + mknbi tools split out into separate package for independent
1747 development.
1748
1749 + Use A32 instead of Z32 in unpack format in disrom.pl in case we
1750 encounter old Perl versions (< 5.005).
1751
1752 + Vendor Class Identifier string that's sent out is now of the form
1753 Etherboot-x.y (13 bytes long).
1754
1755 + Reduced size of ee_data in davicom.c to 32 bytes because we only need
1756 to access the MAC address in bytes 20:25.
1757
1758 + Changed type of formal arguments to pci.[ch] routines to unsigned int
1759 except for the last argument, because in ANSI C parameter passing is
1760 like assignment and extra dummy variables and code may need to be
1761 generated if the formal argument type is not the the same size as the
1762 actual argument that gets pushed on the stack. Not insignificant
1763 overhead, reduction from 1853 to 1727 bytes due to change. Changed devfn
1764 and bus members of struct pci_device to unsigned char to enforce limit
1765 on type. Surprisingly this reduced the size further to 1667 bytes.
1766 Probably the compilier could do more optimisations after the last
1767 change.
1768
1769 + Some drivers hardwired 0 for bus number in calls to pcibios_*
1770 functions. Changed to pci->bus, which is set in scan_bus. Only
1771 people with NICs not on bus 0 would have noticed.
1772
1773 + Found a couple more old-style pre-ANSI C function declarations. Turned
1774 on -ansi and -pedantic for kicks and fixed some non-ANSIness, e.g.
1775 // comment in #define, text after #endif, casting memcpy arguments to
1776 void *, using void * instead of char *. Some char declarations changed
1777 to unsigned char.
1778
1779 Released as Etherboot 4.7.20 (development)
1780
1781 + I changed my mind. I think the format in disrom.pl should be Z32,
1782 otherwise it displays binary characters after the valid part of the
1783 string. For people with Perl < 5.005, please upgrade.
1784
1785 + Moved RELOC down to 0x94000. Turned on USE_INTERNAL_BUFFER by default.
1786 Unless BOOTP_DATA_AT_0x93C00 is defined, use internal bootp strucutre.
1787 This gets Etherboot out of the area just below 0x10000 and the area from
1788 0x93C00-0x93FFF. DHCP packets can now be as large as the Ethernet
1789 payload. Later on, first32.c and the parameter area could expand a bit.
1790 In lance.c had to reduce RX_RING_SIZE (by reducing LANCE_LOG_RX_BUFFERS)
1791 from 16 to 4 to fit the driver. I'd like to hear feedback from lance
1792 users. Is 24kB of receive buffers really needed given that Etherboot
1793 uses stop-wait protocols?
1794
1795 + Doug Ambrisko sent in some patches for FreeBSD: a correction for one
1796 typo I missed and changes to make compilation under FreeBSD easier.
1797
1798 + Michael Sinz contributed patches to allow the FreeBSD loading code to
1799 load debugging symbols also.
1800
1801 + Marty Connor contributed a SiS900 driver. Also pointed out that if
1802 ASK_BOOT <= 0, the prompt and read shouldn't even happen. Conditional
1803 code reworked.
1804
1805 + Split documentation into user manual and developer manual. Added
1806 material.
1807
1808 Released as Etherboot 4.7.21 (development)
1809
1810 + Preston Wilson pointed out that ds.internic.net should be replaced by
1811 www.ietf.org in documentation URLs. Also RFC1090 should be RFC1094
1812 (NFS).
1813
1814 + Marty Connor pointed out some broken links due to the split in
1815 documentation. Also comments don't match code in lance.c for change just
1816 above. Also passed on a bug found by a user of rom-o-matic.net where
1817 tftp was not defined when ANSIESC was defined. My mistake, I made it a
1818 static function when it needs to be exported to ansiesc.c.
1819
1820 + Christoph Plattner found that the Etherboot startup messes up the
1821 flags while testing for a 386+. This doesn't affect Etherboot but it can
1822 cause the loaded operating system to crash. Fix: pushf before and popf
1823 after the CPU model testing.
1824
1825 + Jean-Jacques Michel contributed patches to the via-rhine.c driver to
1826 make it work for the VT6102 model as used on some DFE530-TX Rev.A3 NICs.
1827
1828 + Luigi Rizzo sent in a fixed boot1a.s that actually works on HDs now.
1829
1830 + Stefan Furtmayr sent in a list of URLs to TFTP servers for NT. Added
1831 to directory contrib/Diskless-From-NT.
1832
1833 + Paul Whittaker contributed a HOWTO in HTML format on booting with NT
1834 as the server.  Added to directory contrib/Diskless-From-NT.
1835
1836 + CJ pointed out that the advertised message size is > 1500 bytes.
1837 Define MAX_BOOTP_EXTLEN so that the size of the structure matches the
1838 Ethernet payload size.
1839
1840 Released as Etherboot 4.7.22 (development)
1841
1842 + Reintroduce the old Via-Rhine PCI IDs into file NIC and give the
1843 corresponding ROM images -old suffixes, in case some people are using
1844 the old chips.
1845
1846 + Peter Kögel contributed patches to the SiS900 driver to make it work
1847 for the SiS630e and SiS730s.
1848
1849 + Charles Dobson pointed out that when booting from a PnP BIOS, the code
1850 should not hook or restore the INT19H entry point.  Put hooking code
1851 inside #ifndef PCI_PNP_HEADER and changed entry point in PnP structure
1852 from start19h to blockmove.
1853
1854 + I have one report that gas 2.91 doesn't assemble loader.S because it
1855 can't handle all the 16-bit code. Since the benefits of using gas for
1856 all assembly code are great, and gas 2.95 has been out there for a long
1857 time, I regretfully say to affected users: upgrade your tools. Otherwise
1858 there may be a workaround by specifying the opcodes literally.  I leave
1859 it to interested parties to try. If you do this, put in an #ifdef
1860 GAS291, naturally.
1861
1862 + Updated contrib/tftp-hpa to 0.16 from ftp.kernel.org.
1863
1864 Released as Etherboot 4.7.23 (development)
1865
1866 + Rename nepci entry in file NIC to rtl8029 to avoid giving the
1867 impression that nepci will work for all PCI NE2000 clones. Make the
1868 issue of PCI IDs in ROMs clearer in documentation, both in the
1869 configuration and troubleshooting sections.
1870
1871 + Tania Oka and Hyun-Joon Cha at about the same time found that
1872 implementing the rtl_disable() routine in rtl8139.c stopped random
1873 crashes in Linux later. It is important to disable the NIC after network
1874 loading.
1875
1876 + Implemented _disable() routine in w89c840, 3c90x and via-rhine drivers
1877 too. Don't know how to do it for epic100.
1878
1879 + p910nd-0.4 in contrib/ has -f device option now to specify other
1880 printer ports, e.g.  USB.
1881
1882 + Robb Main found a bug with the #ifdef logic in loader.S. This may fix
1883 problems with BIOS detection.
1884
1885 Released as Etherboot 4.7.24 (development)
1886
1887 + Paolo Marini sent in some code to make it work on his bare metal (no
1888 standard BIOS or peripherals) platform. This may be a useful starting
1889 point for some applications. See contrib/baremetal/.
1890
1891 + Eric W. Biederman contributed a Perl script in
1892 contrib/award_plugin_roms/ to list flash BIOS plugin components.
1893
1894 + Marty Connor rewrote the Tulip driver to handle many more variants.
1895
1896 + For PCI ROMs loader.S can now detect if it's being called from a PnP
1897 BIOS and choose to hook INT19H if not.
1898
1899 + Pass struct *rom_info in priv_data to probe routine. This is to allow
1900 drivers to decide, based on the ROM address, which one of multiple
1901 instances of identical network adaptors to activate. Started on 3c509
1902 code to use this but need to understand 3c509 contention resolution
1903 mechanism first.
1904
1905 + Link src/lzhuf.c to contrib/compressor/lzhuf.c so that we don't need
1906 to refer to contrib/compressor/lzhuf.c anymore in Makefile.
1907
1908 Released as Etherboot 4.7.25 (development)
1909
1910 + Minor documentation edits, merged in NIC entries for newly supported
1911 Tulip variants from Marty Connor.
1912
1913 + One last minute change, Robb Main suggested calling cs89x0_reset()
1914 from cs89x0_disable() to shutdown the hardware cleanly.
1915
1916 + Updated tftp-hpa to 0.17.
1917
1918 + Slight mod to lzhuf.c to make compression statistics report shorter.
1919
1920 Released as Etherboot 5.0.0 (production)
1921
1922 + Donald Christensen found a small bug in osloader.c. Not all context
1923 was cleared on tftp restart which caused restarted tftp loads to fail.
1924
1925 + Correct a small error in setting %sp when not running at 0x9xxxx.
1926 Now relocation to 0x84000 works.
1927
1928 + Marty Connor added a generic Tulip entry and renamed the Macronix
1929 entries because PHP doesn't like strings starting with digits (for
1930 rom-o-matic.net).
1931
1932 + In loader.S, move code to save ROM segment and length to before jump
1933 to new segment, otherwise if MOVEROM is defined, then the ROM segment is
1934 always 0x8000. In etherboot.h, define an inline function to say if a ROM
1935 address is ok to boot from. Allow if < 0xC0000 or matches assigned ROM
1936 address of NIC.
1937
1938 + Thomas Kessler found a bug in vendortags.sgml re option-NNN tags in
1939 dhcpd.conf, the wrong syntax was presented. However on trying the
1940 option-NNN syntax documented in the dhcp-options man page, it was
1941 discovered that option option-NNN is no longer supported in the old way
1942 in recent versions of ISC dhcpd v3; a new syntax should be used. Added
1943 note to vendortags.sgml to warn users.
1944
1945 + Incorporated changes suggested by Hannu Martikka to #define
1946 DEFAULT_KERNELPATH in etherboot.h for rarp(), and display the TFTP
1947 server address before filename in Loading: message.
1948
1949 + Split off documentation into separate package in anticipation of
1950 production/development series split. Moved previous LOG to top level.
1951 Moved distribution section of index.html into separate web page so that
1952 index.html will be less ephemeral.
1953
1954 Released as Etherboot 5.0.1 (production)
1955
1956 + Arkadiusz Miskiewicz pointed out that --oformat should be used instead
1957 of -oformat as old ld accepts both while new ld requires --oformat.
1958
1959 + contrib/{tftp-hpa,atftp} are distributed separately from the
1960 distribution page to make them easy to update.
1961
1962 + Eric Biederman contributed many small changes in the code to improve
1963 the behaviour in exceptions and generally improve the code structure:
1964
1965 1) Cleanup etherboot restarting.  There is now only one place that needs
1966 to test for EMERGENCYBOOTDISK.
1967
1968 2) Change pci.c as I have suggested.  It is setup to scan every possible
1969 pci bus until it finds an etherboot card.
1970
1971 3) Change osloader.c so that if an image that can return, but isn't
1972 supposed to it restarts etherboot with -2 instead of the returned value.
1973
1974 4) Rewrites the delay logic so that we compute how long we should sleep,
1975 and then sleep the whole time in await_reply so in a congested networks
1976 we don't miss slow packets.
1977
1978 5) divides load into load & load_configuration.  This removes the need
1979 for the weird bootp_completed variable.  And makes it a little more
1980 explicit what we are doing.
1981
1982 6) add an interruptible_sleep function so that we can sleep and still
1983 process keystrokes.
1984
1985 7) rewrites the restart logic:
1986    - renames jmp_bootmenu to restart_etherboot.
1987    - removes bootmenu (The function isn't)
1988    - It explicitly does an eth_reset & eth_probe pair to reinitialize
1989      the interface.  This should help if someone has plugged the
1990 interface into a different switch since booting started.
1991    - moves ASK_BOOT and TRY_FLOPPY_FIRST into their own functions.
1992    - On every restart calls ask_boot and try_floppy_first.  Allowing you
1993      to change your mind on how you want to boot after network booting
1994 starts.
1995
1996 8) In cleanup calls both eth_disable (to disable the interface) &
1997 eth_reset to make certain the interface can be initialized from linux.
1998 (If nothing else this should cause more hidden bugs to show up).
1999
2000 9) Restart etherboot when downloading a bootfile fails, instead of just
2001 looping trying to get that file.  Allowing typos in dhcpd.conf to be
2002 corrected without having to reboot the client machine running etherboot.
2003
2004 Released as Etherboot 5.1.0 (development)
2005
2006 + All the changes from 5.1.0 carried over except calling eth_reset()
2007 from cleanup().
2008
2009 + Marty Connor, funded by Sicom System (http://www.sicompos.com/), wrote
2010 a driver for NICs based on the National Semiconductor DP83815, e.g.
2011 Netgear FA311/FA312. Also independently created by Jason McMullan just
2012 at the time Marty released his driver. Thanks for the effort Jason;
2013 great minds think alike. Both are based on Donald Becker's Linux driver,
2014 of course.
2015
2016 + Doug Ambrisko contributed a patch to take environment bindings for
2017 FreeBSD kernels from a BOOTP/DHCP option or config variable.
2018
2019 + Dax Kelson contributed an example of an ISC DHCP config file that uses
2020 Vendor Class Identifier to tailor the response to Etherboot clients.
2021 Also discovered that the Etherboot VCI should also be sent in the
2022 DHCPREQUEST message, in addition to the DHCPDISCOVER message.  Note that
2023 the DHCP server must be set to non authorititative if you have an
2024 authoritative server running already or it will interfere with that
2025 one's operation.
2026
2027 + Peter Lister and Vasil Vasilev contributed changes to generate .pxe
2028 images bootable via PXE.
2029
2030 + Eric Biederman added code to 3c90x.c to enable the NIC: set up
2031 busmastering and set the latency timer in case the NIC is not already
2032 set correctly, and fixed a couple of related bugs in eepro100.c.
2033 Verified that the 3c90x driver works for the 3c980.
2034
2035 + Moved strncmp from osdep.h to linux-asm-string.h. Use the general
2036 version using string ops, not the deprecated 486 version (what was I
2037 thinking).  Also added strlen, needed for FreeBSD patch above.
2038
2039 + Thanks to gcc 3.0, found and corrected a couple of C constructs of
2040 undefined semantics in rtl8139.c and lance.c of the form: i = ++i &
2041 MASK;
2042
2043 + In Config/CFLAGS32: changed -m386 to prefered form, -mcpu=i386,
2044 changed -O2 to -Os, and added -ffreestanding. These changes allow
2045 warning-free compilation under gcc 3.0. Only mimimal testing has been
2046 done with gcc 3.0 compiled binaries, we hope there are no problems but
2047 don't throw away your gcc 2.9.5 yet.
2048
2049 + Added an .org 0 to loader.S just before _start. May or may not fix
2050 alleged assembly problem with gas 2.11.
2051
2052 + Cosmetic change: in boot1a.s replaced "loaded" with "done\r\n" so that
2053 Etherboot messages start at beginning of line.
2054
2055 + More improvements to contrib/mkffwnb.
2056
2057 Released as Etherboot 5.0.2 (production)
2058
2059 + Added missing rules in genrules.pl for .pxe and .lzpxe images.
2060
2061 + Peter Lister unified pxeloader.S into loader.S. pxeloader.S not
2062 required now. Also fixed .lzpxe.
2063
2064 + Added missing int i; declaration in try_floppy_first().
2065
2066 + Load %edx with dev just before calling xstart in floppy.c:bootdisk()
2067 so that %dl will have device number, just like entry from BIOS.
2068
2069 + Merged in Eric Biederman's patches to build .ebi images that run under
2070 LinuxBIOS. To make an image, edit Config to enable the EBI options (and
2071 disable TAGGED_IMAGE), then make bin32/driver.ebi, where driver is the
2072 name of a supported PCI NIC.
2073
2074 Released as Etherboot 5.1.1 (development)
2075
2076 + The rotating bar progress display has been replaced by a sequence of
2077 dots, one for each transmitted packet. This is kinder to dumb displays,
2078 e.g. serial terminals, and gives a better feel for how the loading is
2079 going. If you want the rotating bar, use -DBAR_PROGRESS.
2080
2081 + In loader.S change .fill 0x18-(.-_start) to .org 0x18. Might help
2082 people having errors assembling it.
2083
2084 + Do Jong Gwan found a 3Com 980 with PCI ID 0x9805. Added to config.c
2085 and NIC. Added for good measure 0x7646 which is listed as 3CSOHO100-TX
2086 in Linux kernel 3c59x.c.
2087
2088 + Add a rule to the Makefile to check for gcc 2.96, which is buggy, and
2089 tell the user to use kgcc instead if found.
2090
2091 + Till Straumann added long-needed code to warn when fragmented packets
2092 seen (encountered on a wireless link) and to do UDP packet checksumming.
2093
2094 + A trio of patches from Klaus Espenlaub, to fix a lance ring pointer
2095 error in lance.c, to fix a format error in the multiboot call in
2096 osloader.c and a patch to enable powersaving while waiting (good for
2097 compute clusters and VMware), this one requiring the new option
2098 -DPOWERSAVE in compiles.
2099
2100 + While we are adding compile options, -DFLOPPY has been renamed to
2101 -DCAN_BOOT_DISK as FLOPPY has been a misnomer ever since the ability to
2102 boot /dev/hdX and /dev/sdX was added.
2103
2104 + Spurred by correspondence from Till Straumann and Klaus Espenlaub,
2105 hacked printf to not require a buffer. Now printf output can be
2106 arbitrarily long as it no longer needs a buffer to assemble the
2107 characters before sending to putchar; it outputs on the spot for
2108 non-format chars and %s items, and at the end of the item for non-%s
2109 items.
2110
2111 + DRIVER AND EXTENSION WRITERS NOTE! (s)printf formats have been changed
2112 to be a subset of those in glibc to reduce confusion. The changes are %x
2113 -> %hX, %b -> %hhX, and %I -> %@. Lower case x formats are also
2114 available now. The only variances from glibc are %@ for dotted quad IP
2115 addresses (formerly %I; %I is now used), %! for 6 byte Ethernet
2116 addresses, and that printf returns void. Thanks to Klaus Espenlaub for
2117 assistance on this, after adding the %! format, he cleaned up all of the
2118 Ethernet address display code in the drivers.
2119
2120 + More cleanup patches from Klaus Espenlaub (he's better than lint;
2121 people who have used Bell Labs Unix will know what lint is). Changes
2122 noted here for posterity.
2123
2124 3c509.c: consistent non-use of # modifier for debugging output
2125 3c595.c: consistent non-use of # modifier for debugging output
2126 3c90x.c: use optimal %x variant, PCI bus/function numbers are always small
2127 Config: Replace a TAB by two spaces inside the descriptions
2128 eepro100.c: 6->ETH_ALEN, PCI bus/function numbers are always small
2129 floppy.c: optimal %x variant
2130 genrules.pl: consistent use of TAB characters
2131 i82586.c: the ENET address printing patch for the EXOS205 got lost somehow....
2132 main.c: cleanup of the UDP_CHECKSUM comment some editor messed up, make the
2133     assembly fragment use the normal formatting, fix the register assignment
2134     specification for the %bx register to use the "b" constraint instead of
2135     "bx" - the x makes no sense...
2136 natsemi.c: %X case fix...
2137 ns8390.c: optimal %x variant
2138 pci.c: fix bad Linux port (most messages truncated the hex values)
2139 sis900.c: a value read with inl() should probably(!) be printed with %X
2140 start32.S: move around the #endifs a little
2141 timer.c: fix space/tab characters
2142 via-rhine.c: all values "printed" inside the comments are 32 bit integers
2143 wd89c840.c: PCI bus/function numbers are always small
2144
2145 Released as Etherboot 5.0.3 (production)
2146
2147 + New version of contrib/Diskless-From-NT/furtmayer.html. I mangled the
2148 previous version by forgetting to extract with metamail so it was still
2149 quotable-printable encoded.
2150
2151 + Renamed do_printf to vsprintf because that's the standard function it
2152 has the same signature as.
2153
2154 + More patches from Klaus Espenlaub. In his own words:
2155
2156 The patch to add UDP checksums for transmitted packets is attached.
2157 Just don't be surprised if some packet sniffer tells you that the
2158 checksum for the NFS_LOOKUP packets are wrong and that the filename is
2159 truncated.  It's a bug in the sniffer, not in Etherboot.
2160
2161 Oh, and the small change in udpchksum() almost makes up for the
2162 increased code size.
2163
2164 I also rewrote the NFS code to use pointers instead of array accesses.
2165 This reduced the code size by 124 bytes.  Patch attached.
2166
2167 The last patch in this mail fixes misc things: a typo in misc.c
2168 (DOT_PROGRESS instead of BAR_PROGRESS), and twiddle() is only called if
2169 the packet type is IP.  This makes the output nicer - the dots are also
2170 printed in some non-approriate places for ARP reply packets.  The
2171 important packets are IP anyway.
2172
2173 + The option BOOTP_DATA_AT_0x93C00 is deprecated, in preparation for
2174 expanding the parameter area and the first32.c area.
2175
2176 + Marty Connor found a typo in index.html, should be: Etherboot can work
2177 with..., not Ethernet can work with... Ooops.
2178
2179 + Eric Biederman tried a patch of Preston Wilson's and discovered that
2180 DI should be prefixed by ES in the test for a PnP BIOS in loader.S to be
2181 sure.  Furthermore some BIOSes are not fully compliant and we need an
2182 #ifndef PNP_BUT_NOT_BBS_COMPLIANT to work around that.
2183
2184 + Oops, there's no entry in config.c for the DFE530TX+ even though
2185 there's one in NIC.
2186
2187 Released as Etherboot 5.0.4 (production)
2188
2189 + Fixed a struct alignment (8-byte constraint) problem in lance.c caused
2190 by the introduction of the rx_idx field by moving rx_idx to the end of
2191 the struct. Found by Rizsanyi Zsolt. Klaus Espenlaub also suggested
2192 increasing all the Rx buffers by 4 bytes because of the checksum stored
2193 at the end.
2194
2195 + Fred Gray contributed changes in tulip.c to check for a duplex
2196 connection and to modify the controller register if so. Marty fixed an
2197 unassigned to "negotiated" variable.
2198
2199 + Mark G of Inprimis Technologies contributed another FA311 (National
2200 Semiconductor DP83815) driver, also based on the Donald Becker Linux
2201 driver.
2202
2203 + Armin Schindler contributed a patch to allow booting LynxOS KDI
2204 images.
2205
2206 + Moved code to set PCI busmastering and reasonable latency to a routine
2207 in pci.c and added calls to this routine from all PCI drivers.
2208
2209 + New files for contrib/mkffwnb for version 1.9.11 and 1.9.16.
2210
2211 + Removed BOOTP_DATA_AT_0x93Cxx option.
2212
2213 + Convert epic100 driver to use hardware timer for transmit timeout and
2214 remove polling loop from receive routine.
2215
2216 + Steve Tilden pointed out that BOOT_INT18H is a LCONFIG option, not a
2217 CFLAGS32 option. Put note under option documentation and also added a
2218 commented-out example in Config. Steve also contributed a patch¸ in
2219 contrib/auto-default, which autoboots from the next device if a disk is
2220 detected.
2221
2222 + PNP_BUT_NOT_BBS_COMPLIANT option renamed to BBS_BUT_NOT_PNP_COMPLIANT.
2223
2224 + Merged in Vasil Vasilev's changes to loader.S to release memory taken
2225 by PXE properly.
2226
2227 + E820 memory detection routines added by Eric Biederman. May increase
2228 size of bss segment and push large drivers, e.g. Tulip, nearer to limit,
2229 please report.
2230
2231 + Default to -DCONGESTED in Config, may help on busy networks.
2232
2233 + Add Holtek HT80232 to list of NE2000 PCI clones.
2234
2235 + Remove prohibition on loading < 0x10000 in ELF images since by default
2236 drivers don't use memory < 0x10000 any more, with 48kB to run in.
2237
2238 + Put define of ETH_MAX_MTU in etherboot.h inside #ifndef so that it can
2239 be overriden from Makefile.
2240
2241 + Gustavo Junior Alves added .cvsignore files for src/bin and src/bin32.
2242
2243 + Short note on how to make tomsrtbt netbootable in contrib/tomsrtbt.
2244
2245 This release is dedicated to the memory of my mother (July 1917 -
2246 November 2001) [Ken Yap].
2247
2248 Released as Etherboot 5.0.5 (production)
2249
2250 + Changes to enable fa311too driver which were overlooked in 5.0.5.
2251
2252 + Chien-Yu Chen sent in patches to support the SiS630ET. Independently,
2253 Doug Ambrisko made the same changes. Marty Connor tidied the patches.
2254
2255 + In misc.c, when enabling/disabling Gate A20, call int 0x15 with
2256 ax=0x240x to do handling first, and if that is not supported, fall back
2257 to using the keyboard controller. Hopefully this will solve Gate A20
2258 problems for recent BIOSes.
2259
2260 + Add missing entry to config.c for the Macronix 98713 (device ID
2261 0x512). But latest report is that it doesn't transmit. Anybody wanna
2262 debug?
2263
2264 + Omit test for pointer to $PnP string for ISA NIC images, it may
2265 trigger false recognition of a PnP ROM. Just use legacy mode.
2266
2267 + Merged in Christopher Li's Intel E1000 gigabit Ethernet driver.
2268
2269 + RISKO Gergely found that the ADMTek Comet 983 works with the tulip
2270 driver if you provide the right PCI IDs.
2271
2272 + Rohit Jalan contributed patches to support FreeBSD booting via PXE.
2273 (genrules.pl needed hacking to make it ignore the system includes in
2274 osdep.h.)  Anybody want to see if it can be made to support pxelinux?
2275 [Glanced at it and I think general PXE support may be hard, you may need
2276 an Etherboot specific secondary loader. - Ken]
2277
2278 + Merged in Eric Biederman's patches to allow trying all PCI devices.
2279
2280 + From Eric Biederman: A small patch to allow the serial port parameters
2281 to be unchanged at activation.  Major changes to start32.S to merge
2282 LinuxBIOS support.  New files for LinuxBIOS support.  PCBIOS specific
2283 functions split out into pcbios.S. Massive clean up of PCI subsystem
2284 logic.
2285
2286 + Jean-Jacques Michel sent in a fix for via-rhine.c to make sure the
2287 transmit is finished before returning from the _transmit routine.
2288 Also found a bug in gcc 3.0.3 that affected rtl8139.c. Moving the
2289 assignment to nstype in _transmit two lines up avoids it.
2290
2291 + Based on the experience of Yedidyah Bar-David, in eepro100.c,
2292 increased udelay around line 533 after getting MAC address to
2293 udelay(10000).
2294
2295 + Added PCI IDs for RTL8129, which can use the rtl8139 driver.
2296
2297 + Added PCI IDs for 3Com905 with device ID 0x9058. Confirmed working by
2298 Fabio Papa.
2299
2300 + Added PCI IDs for D-Link 528, which is a PCI NE2000 clone.
2301
2302 + Philip R. Auld found a block number rollover bug due to promotion to
2303 signed in main.c.
2304
2305 + Luigi Rizzo sent in a patch to nfs.c to implement an adaptive timeout.
2306
2307 + New config files for floppyfw-1.9.19 in contrib/mkffwnb/.
2308
2309 + Glenn McKechnie contributed a Perl script for making a netbootable
2310 image from the Dachstein LRP firewall distribution floppy. It's in
2311 contrib/mklrpnb/
2312
2313 + At the request of Greg Beeley, who got irate mail from kernel NIC
2314 developers, put in a warning in the Makefile about the 3c90x XCVR
2315 options which may affect later operation with the Linux driver. For you
2316 tinkerers out there, if you don't know what you're doing, please read
2317 3c90x.txt over and over again until you understand what those options
2318 do. If you don't understand, please ask on the Etherboot mailing list.
2319 And don't complain to the kernel developers, it's nothing to do with
2320 them. If you must change the XCVR options on a board, please document it
2321 prominently on the board so that those who come after you won't
2322 encounter strange behaviour and complain to the kernel developers.
2323 Greg also supplied a patch to 3c90x.c to print a warning message.
2324
2325 Released as Etherboot 5.0.6 (production)
2326
2327 + Andrew Bettison sent in a patch and the explanation: Here's a patch
2328 for some changes I made to Etherboot-5.0.6 because it didn't work with a
2329 SMC EtherEZ in an old PCI/ISA bybrid bus system.  The ISA shared memory
2330 isn't accessible on many such systems, so the only way to do I/O to the
2331 card is in Programmed I/O mode.  I studied the Linux 2.2.19 driver
2332 (drivers/net/smc-ultra.c) and hacked what I figured was equivalent code
2333 into src/ns8390.c, and it eventually worked.  All my new code is enabled
2334 with -DWD-790_PIO.
2335
2336 + Small error in the ADMTEK Comet 983 IDs fixed.
2337
2338 + Michael Rendell sent in patches for 3c90x.c to get the MAC address
2339 from location 10 of the EEPROM onwards, like the Linux driver does. Some
2340 905s have the MAC address at both 0 and 10 which is why it worked for
2341 some boards.
2342
2343 + Michael Brown sent in drivers for 3 wireless NICs based in the prism2
2344 chipset, and a small patch to rtl8139.c to abort detection on no link.
2345
2346 + Rewrote makerom.c in Perl to give makerom.pl.
2347
2348 + Rewrite genrules.pl to parse a new NIC format.
2349
2350 + Timothy Legge contributed a 3c515 driver. Requires a ISA PnP BIOS.
2351
2352 + Modified call to int15h/e801 in pcbios.S to check for return values in
2353 CX, DX in case BIOS doesn't return them in AX, BX.
2354
2355 + Richard Chan sent in PCI IDs for another Intel EEPRO100 product.
2356 Omigawd will they ever run out of EEPRO100 model numbers. :-)
2357
2358 + Changed location of setup header from 0x97e000 to 0x93e000 in
2359 mkQNXnbi.c for recent Etherboot versions.
2360
2361 + Renamed membase to addr1 to reflect its lack of predefined meaning in
2362 PCI config space. Should do similar to ioaddr, but too much work.
2363
2364 + Samuel Clememts found another Intel EEPRO100 device ID, 0x1039.
2365
2366 + Updated instructions in contrib/tomsrtbt for latest 2.0.103 release.
2367
2368 + Folded in changes by Michael Brown to send PCI and ISA IDs to the
2369 server and to encapsulate Etherboot specific options. Changed scheme to
2370 send fixed binary structure instead of variable length string.
2371
2372 + Bug in sis900.c, wrongly classifies revisions 0x81 and 0x82 because
2373 first test catches too many revisions. Changed to match the Linux
2374 driver.
2375
2376 + Fotis Andritsopoulos found a small bug in cs89x0.h, TX_AFTER_ALL
2377 should be 0x0C0.
2378
2379 + Great idea by Eric Biederman. Ignore DHCP offers with zero server
2380 IP, or null filename unless DEFAULT_BOOTFILE is defined. This will
2381 ignore most Windows DHCP servers.
2382
2383 + Patrik Weiskircher sent in a patch for rtl8139.c to bring it up to
2384 date with the Linux driver.
2385
2386 Released as Etherboot 5.0.7 (production)
2387
2388 + Multicast support and LOTS of other changes by Eric Biederman.
2389
2390 + Builtin menuing has been removed.
2391
2392 + Patches for FreeBSD by Doug Ambrisko.
2393
2394 Released as Etherboot 5.1.2 (development)
2395
2396 + Fix syntax errors in nfs.c.
2397
2398 + Patch for tagged image loading by Miles Nordin.
2399
2400 + Patches for new eepr100 variant by Georg Baum.
2401
2402 + Fixes for typos by Adam Sulmicki.
2403
2404 + Fixes by Eric.
2405
2406 Released as Etherboot 5.1.3 (development)
2407
2408 + Eric rearranged files for multiple platforms, including Itanium.
2409
2410 Released as Etherboot 5.1.4 (development)
2411
2412 + Lots of fixes to drivers, see CVS for details.
2413
2414 Released as Etherboot 5.1.5 (development)
2415
2416 + Eric added support for the AMD Hammer.
2417
2418 + Geert Stappers found a VIA6105 (via-rhine.c) with id 0x3106.
2419
2420 Released as Etherboot 5.1.6 (development)
2421
2422 + Broadcomm TG3 support by Eric Biederman.
2423
2424 + Georg Baum found that the start16.S prefix was missing from the LILO
2425 and PXE images, those formats were broken. He also migrated the PCI IDs
2426 into the driver files. Those formats should work again.
2427
2428 + Reworked genrules.pl. Family declarations now in here document inside
2429 genrules.pl. NIC is now an output file, for use by rom-o-matic.
2430
2431 Released as Etherboot 5.1.7 (development)
2432
2433 + Fixed various syntax errors that made the source not compile with some
2434 configurations.
2435
2436 + Hacked boot1a.s to take count of number of blocks to boot from book
2437 block itself in new scheme.
2438
2439 + Dave Airlie found a patch for an old bug in eepro100 driver on Linux
2440 that applies to Etherboot driver too.
2441
2442 + Add use bytes; pragma to Perl scripts to avoid problems with UTF-8
2443 handling of input data.
2444
2445 + Replace boot1a.s with floppyload.S which has no problems loading large
2446 binaries. Lose the ability to boot from disk partition. Use LILO or
2447 something similar.
2448
2449 + Morten Kristiansen sent in a patch to handle another variant of the
2450 SiS 900.
2451
2452 + Fix for eepro100 timing problem by Georg Baum.
2453
2454 + Add use bytes; to Eric's Perl scripts too.
2455
2456 + Additional fix to mask interrupts after PortPartialReset by Georg
2457 Baum that might help with booting DOS.
2458
2459 + Sundance driver contributed by Timothy Legge.
2460
2461 Released as Etherboot 5.1.8 (development)
2462
2463 + Fix for correct SMC8416 detection.
2464
2465 + Alignment bug fix for the 3c90x driver contributed by Neil Newell.
2466
2467 + Robb Main found a bug in appending the MACHINE_INFO to the DHCP request.
2468
2469 + SONE Takeshi fixed the Multiboot structure.
2470
2471 + Patch from Axel Dittrich to allow timeout to be changed to a fixed
2472 value for peer-to-peer setups where the exponential backoff is not
2473 suitable.
2474
2475 + Tlan driver contributed by Timothy Legge.
2476
2477 + Support for symlinks on NFS mounts by Anselm Martin Hoffmeister.
2478
2479 + Experimental safe booting code by Anselm Martin Hoffmeister.
2480
2481 + Run Etherboot in an even megabyte so that unsetting A20 won't kill it.
2482 Experimental UNDI driver by Michael Brown.
2483
2484 Released as Etherboot 5.1.9 (5.2 release candidate 1)
2485
2486 + 82562EZ ID provided by Samuel Clements.
2487
2488 + Rename Local option as Quit, because that's what it really is.
2489
2490 + Should prepend start16.bin to .com images, they didn't work and nobody
2491 noticed.
2492
2493 + PM stack was getting clobbered by zeroing of BSS, move to own segment
2494 in etherboot.lds. Move %ss out of the way of Etherboot in comprefix.S.
2495 Now Q works from .zrom and sort of from .com (DOS is odd after return).
2496
2497 + Make ASK_PROMPT reflect the device options available.
2498
2499 + Removed many outdated comments and updated others.
2500
2501 Released as Etherboot 5.1.10 (5.2 release candidate 2)
2502
2503 + Make floppyload.S and liloprefix.S call instead of jmp to the image so
2504 that the return calls int 0x19, which is somewhat better than
2505 hyperspace.
2506
2507 + Put http://etherboot.org in prompt and ID string.
2508
2509 Released as Etherboot 5.2.0 (production)
2510
2511 + Print F? if no filename in DHCP offer.
2512
2513 + Make lance.c throw a compile error if -DRELOCATE is used.
2514
2515 + pcnet32 driver ported by Timothy Legge.
2516
2517 + Reinstate boot1a.s in arch/i386/prefix. The binary may have some uses;
2518 it boots with vmware although the image fails later in the emulation.
2519
2520 Released as Etherboot 5.2.1 (production)
2521
2522 CVSed as Etherboot 5.3 (development)
2523
2524 + Break out etherboot.h into multiple files along protocol lines.
2525
2526 + Georg Baum's conversion of a more recent version of the Linux e1000
2527 driver.
2528
2529 + Add mini-slamd to contrib/, it was missed during 5.2 release.
2530
2531 + Timothy Legge enabled multicast for a bunch of drivers. Tested with
2532 mini-slamd.
2533
2534 Released as Etherboot 5.3.0 (development)
2535
2536 + Timothy Legge rewrite proto_tftm.c, got multicast working with atftp
2537 and enabled multicast for the Tulip.
2538
2539 Released as Etherboot 5.3.1 (development)
2540
2541 + Günter Knauf sent in a new version of romid that handles the new
2542 and old IDENT format.
2543
2544 + Cai Qiang fixed the WINCE loader. It needs to handle > 512 byte packets
2545 and also the buffer has to be static. Also submitted a driver for VGA
2546 which can be activated by CONSOLE_DIRECT_VGA.
2547
2548 + Improved tg3 driver by Eric Biederman. New define in etherboot.h:
2549 VALID_LINK_TIMEOUT.
2550
2551 + Timothy Legge and I fixed up various ISA drivers to be less noisy
2552 when probing, from information provided by Paolo Salvan, so that the
2553 super etherboot image is more useful.
2554
2555 + Proof of concept of a TFTP to HTTP proxy in contrib/t2hproxy/.
2556
2557 Released as Etherboot 5.3.2 (development)
2558
2559 + Multicast support for the ns8390 (NE, WD, etc) added by Timothy Legge.
2560
2561 + Provide config access to alternate DHCP/BOOTP ports. The macro
2562 ALTERNATE_DHCP_PORTS_1067_1068 switches to ports 1067 and 1068.
2563
2564 + UNDI driver by Michael Brown.
2565
2566 Released as Etherboot 5.3.3 (development)
2567
2568 + More UNDI improvements by Michael Brown.
2569
2570 + Michael Brown pointed out error in ASK_BOOT behaviour. Make it match
2571 documentation. < 0 or undefined means no prompt,  = 0 means wait
2572 forever, > 0 means wait that many seconds.
2573
2574 + Start of PCMCIA subsystem by Anselm Martin Hoffmeister.
2575
2576 + Port to Hyperstone architecture (big-endian) by Yannis Mitsos and
2577 George Thanos at NTUA, Greece.
2578
2579 + Timothy Legge got the epic100 driver working again, was not working
2580 when 5.2 released. Also implemented multicasting. Also tentatively
2581 fixed the tg3 driver.
2582
2583 + Use Perl script to make .z?lilo images.
2584
2585 + Added an .iso Makefile rule. This requires newer BIOSes as it
2586 uses no floppy emulation mode.
2587
2588 + Guard Kuo sent in a patch for the via-rhine driver not being
2589 reset properly, Timothy Legge improved it based in the Linux driver.
2590
2591 Released as Etherboot 5.3.4 (development)
2592
2593 + David D. Smith, with help from Georg Baum, sent in a patch for the
2594 eepro100 driver which might help unjam the NIC when the receiver has
2595 suspended reception.
2596
2597 + Timothy Legge and Eric Biederman fixed a bug in the tg3 driver which
2598 caused some models to not receive DHCP replies.
2599
2600 Released as Etherboot 5.3.5 (development)
2601
2602 + Timothy Legge ported the Linux Realtek 8169 driver.
2603
2604 + Michael Brown removed irritating A20 status change messages.
2605
2606 + Sis900, w89c840 and tg3 drivers fixed by Timothy Legge. R8169 driver
2607 needs family entry in genrules.pl.
2608
2609 + Revert to normal way of assigning string to DEFAULT_BOOTFILE as
2610 tricky stringify macro falls foul of C++ // comments in gcc 3.x.
2611
2612 Released as Etherboot 5.3.6 (development)
2613
2614 + Don't include ISA .o files for etherboot-pci.
2615
2616 + Doug Ambrisko fixed bugs in the FreeBSD loader.
2617
2618 + Anders Nystrom provided a tiny via-rhine patch
2619
2620 + Introduce new define DEFAULT_PROTO_NFS for those who were used to
2621 using DOWNLOAD_PROTO_NFS in 5.0 for NFS booting.
2622
2623 + Reverse sort PCI drivers so that 3c90x is tried ahead of 3c595.
2624
2625 + Updated e1000 driver by Georg Baum.
2626
2627 + New PCI IDs for 3c90x and tulip drivers. Typos in 3c90x and tg3
2628 drivers corrected.
2629
2630 + Georg Baum fixed the 3c503 
2631
2632 + Fixed Typos which caused compiling with RARP_NOT_BOOTP to fail
2633
2634 + Fixed IMAGE_FREEBSD bugs
2635
2636 + Cleanup of driver output (pcnet32, r8169, sundance, tlan)
2637
2638 + Minor updates to the Config file comments
2639
2640 + arch/i386/prefix/boot1a.S is no longer maintained
2641
2642 + Added make rule for a floppy emulation ISO boot image
2643
2644 + Timothy Legge updated proto_tftm to make it easier to maintain and
2645   fix some issues
2646
2647 + Timothy Legge contributed a forcedeth driver for the NVidia Force
2648   NIC.
2649
2650 + Timothy Legge contributed a ns83820 driver for National
2651   Semiconductor 83820 based NICS
2652
2653 + Ken Yap added support for creating .liso output type which is an iso
2654   image with legacy floppy support
2655
2656 + Michael Brown improved memory allocation, 16/32 mode swapping, and
2657   did various code cleanups
2658
2659 + Michael Brown added High-Level PXE API support (pxelinux) to Etherboot
2660
2661 Released as Etherboot 5.3.7 (development)
2662
2663 + Timothy Legge Fixed an issue in the e1000 driver with 82544 and
2664   newer devices that support port I/O.  Enabled port io for the reset.
2665   Without the patch the e1000 could not reliably boot Linux on some
2666   cards.  Thanks to James Pearson, Georg Baum and Marty Connor for
2667   help resolving this issue.
2668
2669 + Michael Brown added lots of PXE code to complete implementation. He
2670   also did a warnings purge of the core.
2671
2672 + Marty Connor did warnings purge of the network drivers.
2673
2674 + Anselm Martin Hoffmeister contributed DNS resolution code.
2675
2676 + Lots of driver PXEifications and cleanups from Timothy Legge and
2677   Marty Connor
2678
2679 + Makefile and genrules fixes from Michael Brown and Marty Connor
2680
2681 + BPBATCH workaround from Timothy Legge and Michael Brown
2682
2683 + Timothy Legge improved image format detection logic.
2684
2685 Released as Etherboot 5.3.8 (development)
2686
2687 + Update to lance.c chip_table from Helge Wagner
2688
2689 + Fixes to attributes to prevent gcc from optimising away seemingly
2690 unused functions and variables that are actually referenced from asm
2691 or in the linking stage. (Ken Yap)
2692
2693 + Removed non-relocation support, relocation is now always active.
2694 Removed lance.c driver as this will not work with relocation. 32-bit
2695 Lance NIC users should use pcnet32. (Ken Yap)
2696
2697 + Migrated SAFEBOOT to a patch set. This proof-of-concept code is
2698 incomplete and needs more work before becoming mainstream. (Ken Yap)
2699
2700 Released as Etherboot 5.3.9 (development)
2701
2702 + Patch from Tim Fletcher for another eepro100 model.
2703
2704 + Patch from Jeremy Jackson to make DNS query recursive and fix sign and
2705 casting issues in dns_resover.c.
2706
2707 + Paolo Salvan experimented with using isolinux for non-emulation
2708 images and contributed the first cut at the code for geniso.
2709
2710 + Fix for relocation issue with prism2_pci driver
2711
2712 + Small patch to support 3Com tulip version from Jacek Kalinski
2713
2714 + Dag Lem provided a new pci_id for the eepro100 Intel "82801EB/ER 
2715 (ICH5/ICH5R)"
2716
2717 + Small patch to support 3Com tulip version from Jacek Kalinski
2718
2719 + Yinghai Lu contributed a large patch to add filo, bText and usb 
2720 support:
2721         btext console: In LinuxBIOS, for the VGA, we only can 
2722         enable display chipframe buffer and write char to framebuffer 
2723         to get output in CRT.
2724         
2725         FILO: originally it is standalone boot program and 
2726         author is TakeshiSone.
2727
2728         Boot from SATA disk.
2729
2730         Boot from USB disk (OHCI and UHCI).  USB boot is from Steven 
2731         James 's baremetal in LinuxBIOS, moved to FILO and added the 
2732         OHCI support to it 
2733
2734 + armnommu arch support by Tobias Lorenz.
2735
2736 + Driver updates/cleanup: rtl8139, sis900, tlan 
2737
2738 + Updates to via-rhine based on input from Guard Kuo from Via Networking 
2739 Technologies, Inc
2740
2741 + Update p910nd (port 9100+n printer daemon) to latest version
2742
2743 + Fixed some bugs to enable compilation for gcc 3.4.x.
2744
2745 Released as Etherboot 5.3.10 aka 5.4RC1 (development)
2746
2747 + Changes to segment scheme to make large compressed images work.
2748
2749 + .zelf images can be built now but still don't run properly. .zrom
2750 images may be broken.
2751
2752 + Start of a .exe prefix which should allow payloads > 64kB.
2753
2754 Released as Etherboot 5.3.11 aka 5.4RC2 (development)
2755
2756 + Left out in last release's LOG: accepted patch from Jan Kiszka
2757 fixing default TFTP blocksize.
2758
2759 + Fixed .z?rom image generation, they work now.
2760
2761 + Patch from Jan Kiszka for for multiple receive buffers in eepro100
2762 driver.
2763
2764 + Fixed 961507 Not so nice 'F?' message when no file name received
2765
2766 + Small fixes to e1000 and via-rhine drivers.
2767
2768 + New mtd80x.c driver contributed by Erdem Guven
2769
2770 + New dmfe.c driver for Davicom based cards contributed by Timothy Legge
2771
2772 + Added new definitions of site DHCP options in preparation for 5.4.
2773
2774 + Removed etherboot(-pci)?.* rule because there are too many drivers and
2775 the image will no longer fit in memory. I don't want to choose a subset
2776 of drivers as everybody will have different preferences. So I'm going to
2777 piss off everybody equally by deleting the rule. Use the multiple driver
2778 rule (driver1--driver2--...) and select your own subset of drivers.
2779
2780 Released as Etherboot 5.3.12 aka 5.4RC3 (development)
2781
2782 + Changes to Makefile.main and Config to collect FILO objects in
2783 filolib.a.  This allows FILO to be excluded from compilation and linking
2784 with one Makefile define.
2785
2786 + Reverse site DHCP option changes, should apply for official
2787 assignment.
2788
2789 + RIS filename patch which seems to work for many people.
2790
2791 + Thanks to the help of Daniel Nilsson, tracked down and fixed a bug
2792 where the tftp code did not fall back to 512 byte blocks when an OACK
2793 was NOT received.
2794
2795 + Removed dead code related to CAN_BOOT_DISK.
2796
2797 + Clarified that BOOT_DISK and BOOT_FLOPPY options only work with
2798 LinuxBIOS and are not replacements for PCBIOS functions.
2799
2800 + Renamed EMERGENCYDISKBOOT to EXIT_IF_NO_OFFER.
2801
2802 + Builtin menuing DHCP options are gone.
2803
2804 + Paolo Salvan submitted changes to arch/i386/Makefile to make .com
2805 images compressed.
2806
2807 + Eric Biedermann made .*elf images work again and cleaned up the build
2808 procedure in the process. The hardwired virtual RELOCADDR is no more,
2809 the virtual base is 0. He also added code to display which protocols are
2810 compiled into the image.
2811
2812 Released as Etherboot 5.3.13 aka 5.4RC4 (development)
2813
2814 + Lots of fixes by Eric Biederman.  Symbols for protected mode segment
2815 and prefix segments separated.  Multiple ASM statements combined to
2816 ensure compiler keeps them intact.  Allocate real mode stack if none in
2817 use.  Protect low memory interrupt vectors. Makefile rules for various
2818 prefixes factored. Dynamic relocatable image support.
2819
2820 + Fixes by Michael Brown. Cleanup of PXE and UNDI code.
2821
2822 + Patch to Tulip driver for missing PCI ID.
2823
2824 + Fixes to genrules.pl by Kenneth Sumrall.
2825
2826 Released as Etherboot 5.3.14 aka 5.4RC5 (development)
2827
2828 + Small ARMNOMMU architecture fixes by Toby Lorenz.
2829
2830 + Patch to Tulip driver for additional PCI ID by Ramesh Chander.
2831
2832 + Proxy DHCP support, catrom.pl script, flat real mode support, and
2833 e1000 fixes by Michael Brown.
2834
2835 + New PHY support for tg3.c by Timothy Legge.
2836
2837 + FS Protocol support by Radim Kolar.
2838
2839 + FILO config changes by YHLu.
2840
2841 + Support for compilation on AMD64 for i386. makerom.pl fixed not to
2842 change product string pointer if one already exists.
2843
2844 Released as Etherboot 5.3.15 aka 5.4RC6 (development)
2845
2846 + Minor additions and amendments to acknowledgements.
2847
2848 + Added Doug Ambrisko's FreeBSD patch to freebsd_loader.c. Doesn't
2849 hurt FreeBSD 4 and seems to help FreeBSD 5 get further in booting.
2850 Should not affect other image types since it modifies only one file.
2851 The part of the patch relating to osloader.c was already present.
2852
2853 Released as Etherboot 5.4.0 (production)
2854
2855 + Added PCI ID for Fujistu Siemens Futro C200 by Martin Vogt
2856
2857 + Liu Tao contributed a driver for the AMD8111 based on the Linux 
2858 driver
2859
2860 + Till Straumann patch for Sporadic eepro(10)  RX problems after reboot
2861
2862 + Hermann Gausterer sent a patch to support additional Broadcom PHYs
2863
2864 + Timothy Legge updated the forcedeth driver to the latest Linux version
2865 2.6.10 (untested and broken)
2866
2867 + YhLu fixed the updated forcedeth driver so that it worked and confirmed 
2868 that it supports the Gigabit nVidia NICs
2869
2870 + Timothy Legge fixed relocation issues with the eepro driver