|
|
1.1 root 1: /*
2: * Cisco 7200 (Predator) simulation platform.
3: */
4:
5: 15-Aug-2005, the project is starting.
6:
7: 18-Aug-2005
8: -----------
9: - Added support for: sll, addu/subu.
10: - Fixed bugs with b... branch instructions (bad computation of new pc).
11: - Added patch recording for blocks.
12: - A sequence of MIPS instructions (without memory access instructions)
13: from IOS was successfully run ! (need to check correctness).
14:
15: 22-Aug-2005
16: -----------
17: - Implemented a basic memory subsystem with an mmaped file.
18: - Added memory access instructions (lb,lbu,lh,lhu,lw,lwu,ld,sb,sh,sw,sd).
19: - Added a cross-compiled test program.
20:
21: 23-Aug-2005
22: -----------
23: - Fixed slti, sltiu, slt instructions.
24: - Fixed memory endianness.
25: - Fixed host memory addressing (bad haddr computation).
26:
27: 24-Aug-2005
28: -----------
29: - Added a generic memory address lookup function.
30: - Added a minimal ELF loader.
31:
32: 28-Aug-2005
33: -----------
34: - ELF loader now loads files page per page.
35: - Added device support (with RAM support).
36: - Added MTS32 support for mapping of 4 Kb pages.
37: - Added MTS32 support for device mapping in kernel mode and generic
38: virtual to physical mapping (preparation for TLB).
39: - Added a dummy console driver.
40: - Added mult,multu,div,divu instructions.
41:
42: 29-Aug-2005
43: -----------
44: - Added a Red-Black trees module.
45: - Block locator uses RB tree module.
46: - It is now possible to run a program with multiple functions!
47: - ELF loader now support multiple program headers and entry point is
48: now used.
49: - Fixed x86 buffer adjustment.
50: - Modified console to be at the same address than c7200 DUART (to test
51: microcode).
52: - Memory access functions now update PC.
53: - Added sra, srl, sllv, srlv, srav instructions.
54:
55: 30-Aug-2005
56: -----------
57: - Added dsrl32, dsll32, dsra, dsrav, dsra32 instructions.
58: - Added bgtz, blez, bgez instructions.
59: - Fixed sltu instruction.
60: - ELF Entry point is now sign-extended.
61: - Added blezl, bgtzl instructions.
62: - Fixed the MIPS scanner to use unsigned 64-bits integers for addresses.
63: - Added unknown opcode management (basic, it just print the unhandled
64: opcode value and continues).
65: - Added cache instruction.
66: - Added bltzal, bltzall, bgezal, bgezall instructions.
67:
68: 31-Aug-2005
69: -----------
70: - Added System coprocessor (CP0) definitions.
71: - Added tlbr instruction.
72: - Added basic tlbwi instruction (doesn't change the MTS mappings now).
73: - Added dmfc0, dmtc0, mfc0, mtc0 instructions.
74: - Added TLB dump functions.
75: - Added dummy pref/prefi instructions.
76: - Added basic exception trigger.
77: - Added syscall, break instructions.
78:
79: 01-Sep-2005
80: -----------
81: - Fixed exception trigger.
82: - Added dmfc1, dmtc1, mfc1, mtc1, sdc1 instructions.
83: - Fixed the break instruction.
84: - Modified the memory handling to be more friendly with instructions
85: like sdc1 and for more safety in case of badly written device drivers.
86: - Added ldc1 instruction.
87:
88: 02-Sep-2005
89: -----------
90: - Fixed sltiu/sltu instructions that were doing signed comparisons
91: instead of unsigned comparisons (mis-use of jit).
92: - Added lwr/lwl, swr/swl, ldl/ldr, sdr/sdl, ll/sc instructions
93: (not tested).
94: - Added PCI bus management.
95: - Added GT64010 (PCI controller) device.
96: - Added DEC 21050 (PCI bridge) device.
97: - Added NVRAM.
98:
99: 03-Sep-2005
100: -----------
101: - Beginning of work on IRQs.
102:
103: 04-Sep-2005
104: -----------
105: - Timer IRQ should be OK.
106: - Added C7200 bay management and Midplane FPGA.
107: - Fixed the JR instruction which was broken in a case like that:
108: lwu k1,0(k1)
109: jr k1
110: move k1,zero
111:
112: 05-Sep-2005
113: -----------
114: - Fixed jalr (as jr) instruction.
115: - Added RAM "aliasing".
116: - Added SRAM management.
117: - Fixed NVRAM size.
118: - Fixed ldr, swl/swr instructions.
119: - Added c7200 IOcard.
120: - Count register is now properly handled.
121: - Added basic functions to set/clear interrupts.
122: - Modified the console driver to trigger DUART interrupt.
123: - IOS now starts!
124:
125: 06-Sep-2005
126: -----------
127: - Added "move" virtual instruction. It correspond to "addu" with rt=0.
128: Here it avoids an useless add.
129: - Added b/bal virtual instructions.
130: - Packed NVRAM.
131:
132: 08-Sep-2005
133: -----------
134: - Added Dallas DS1620 temperature sensors.
135: - Added voltage sensors.
136: - Power supplies are now faked.
137: - IOS Environmental Monitor doesn't try to shutdown the router anymore!
138: - Device list is now displayed at startup.
139:
140: 18-Sep-2005
141: -----------
142: - Added Address Error Load/Save, TLB Load/Save exceptions.
143: TODO: Branch Delay Slot management.
144: - Modified the default value in config register in CP0 to set appropriate
145: cache sizes. Now it is possible to boot compressed images directly!
146: - Added the teq/teqi instructions.
147: - Hmm, seen some IOS images (k9?) that seem to use the FPU (CP1). This
148: does not prevent the image to boot, but some features will probably
149: be not functional.
150:
151: 19-Sep-2005
152: -----------
153: - Tweaked the console driver to generate a dummy interrupt. It avoids
154: the console problems.
155: - Fixed the serial driver mueslix PCI vendor/device code.
156: - The midplane FPGA now returns voltages based on virtual PA EEPROM
157: presence. Up to 6 PA-8T were successfully emulated!
158:
159: 20-Sep-2005
160: -----------
161: - Included amd64-codegen.h with a (near empty) translator.
162: - Some code factorization.
163:
164: 21-Sep-2005
165: -----------
166: - Added CPU state save/restore on disk.
167: - Sending SIGQUIT to the process dumps the MIPS64 VM state on disk.
168: (only CPU state is saved for now).
169: Device state is not saved, so this does not work with booted IOS images
170: for now (it works for an IOS image being self-decompressing, though).
171: - Some code cleanups.
172:
173: 23-Sep-2005
174: -----------
175: - Fixed "Dirty" bit in TLB entries.
176: - Extended the number of TLB entries from 48 to 64.
177: - Added tlbp instruction.
178: - Modified the nmc93c46 eeprom driver to allow more than 32 bytes reading.
179:
180: 24-Sep-2005
181: -----------
182: - Added a symbol table loader.
183:
184: 26-Sep-2005
185: -----------
186: - Added support for writing in PCI registers
187: - Added a RAW file loader.
188: - Added "add" instruction (without exception support).
189:
190: 07-Oct-2005
191: -----------
192: - Continued work on SMP support.
193:
194: 08-Oct-2005
195: -----------
196: - Replaced memory operations with fastcalls instead of asmlinkage functions.
197: - Continued work on SMP support. Now it should be complete, except for
198: LL/SC instructions.
199:
200: 10-Oct-2005
201: -----------
202: - A lot of work on amd64 jit compiler.
203: - The memory management should be 64-bit compliant now.
204:
205: 17-Oct-2005
206: -----------
1.1.1.4 root 207: - Fixed a bug in SRA instruction in amd64 jit code. Dynamips is now working
1.1 root 208: on amd64!
209:
210: 26-Oct-2005
211: -----------
212: - Created a virtual device giving the VM parameters.
213: - Added command line parsing (patch from Nicolas Szalay).
214: - Fixed ERET instruction (LLbit clearing was lacking).
215: - Fixed BREAK instruction (x86/amd64).
216: - Fixed 2 GB limit for log file.
217: - Fixed clobbered registers in x86 translation.
218:
219: 28-Oct-2005
220: -----------
221: - Added a non-JIT mode (not completely working now)
222: - Added "-j" flag on the command line to disable JIT.
223: - Fixed some stupid bugs in shift operations.
224:
225: 31-Oct-2005
226: -----------
227: - Thanks to the great help of mtve, we have a working DEC21140 Ethernet
228: driver and now the virtual C7200 can see the real world!!!
229:
230: 01-Nov-2005
231: -----------
232: - Beginning of a NETIO module to handle network I/O with external world.
233: - Studied (a bit) the PA-8T controller on a real router.
234: - It is now possible to set the base MAC address of the router
235: using the "-m" flag.
236: - Improved logging
237: - The dec21140 code is generalized and it is now possible to have a
238: PA-FE-TX in any slot.
239:
240: 02-Nov-2005
241: -----------
242: - Fixed some problems with the NVRAM when it is empty ;
243: - Added a "net_io.c" module that is an abstraction layer
244: for network communications (TAP, Unix sockets...)
245: - Added the "virtual" MIPS "li" instruction which
246: is in fact "addiu reg,zero,value". This permits to have
247: a more optimized JIT code.
248: - Code factorization in the DEC21140 module.
249: - mtve (aka "Mtv Europe") sent a patch for much better console handling,
250: merge is planned on 03-Nov.
251: - Added a "PA driver" framework.
252:
253: 03-Nov-2005
254: -----------
255: - The console is better handled: special keys are working, and there
256: is a FIFO buffer to avoid character loss (added a "dev_vtty.c" module).
257: - Merging with Mtve patch, that cleans NETIO module and adds features
258: to the console.
259: - Added a clock divisor hack, but it is not completely working.
260: todo: implement a command line option for this.
261:
262: 08-Nov-2005
263: -----------
264: - Mtve added tcp client/server NETIO.
265: - The clock divisor is now working! It is set by the "-k" command line
266: option.
267: - Fixed the csr5 register handling in DEC21140 driver code.
268:
269: 13-Nov-2005
270: -----------
271: - A lot of cosmetic changes from Mtve.
272: - Modified the infrastructure to allow the use of CPU groups
273: that share a certain number of devices (per-CPU device array).
274: All device drivers have been modified to handle this.
275: - Took a look at LSI ATMizer II+, which is the circuit used on
276: PA-A3-OC3 boards. The ATMizer is based on a MIPS CPU, so it should
277: be possible to emulate it.
278: - Added a per-CPU dedicated thread.
279:
280: 23-Nov-2005
281: -----------
282: - The PA-A1 ATM stuff is working!!!
283:
284: 24-Nov-2005
285: -----------
286: - Fixed a bug in the PA-A1 driver in TX buffer chaining.
287:
288: 25-Nov-2005
289: -----------
290: - Address bus masking, which clears bits 32 and 33 of physical addresses.
291: It avoids the use of device aliasing.
292: - Fixed the DEC21140 TX part which was incomplete.
293:
294: 29-Nov-2005
295: -----------
296: - There are still bugs in big packet forwarding. This is probably the ATM
297: driver (added more debugging info).
298: - Fabien Devaux wrote a README explaining the command line options.
299:
300: 30-Nov-2005
301: -----------
302: - Code cleanup in the net_io module.
303: - Added the "ptask" (periodic tasks) module, this is mainly for TX ring
304: scanning of network devices.
305:
306: 01-Dec-2005
307: -----------
308: - Added a memory logger (FIFO of 10 accesses), this was useful to debug the
309: PA-A1 RX problem.
310: - Fixed a RX buffer chaining problem in PA-A1.
311:
312: 02-Dec-2005
313: -----------
314: - Added support for PA-A1 reset ("clear int", "shut/no shut").
315: - Optimized the IRQ handling (irq_pending flag in CPU structure
316: is used as a "cache").
317:
318: 05-Dec-2005
319: -----------
320: - Optimized the cp0 count/compare process for the x86_64 platform
321: (unfortunately, this doesn't work for the x86 platform).
322:
323: 06-Dec-2005
324: -----------
325: - Modified the NVRAM handling to allow calendar emulation ("sh calendar" is
326: now working).
327:
328: 12-Dec-2005
329: -----------
330: - Added support for the NPE-400.
331: - Playing with the PA-POS-2OC3 (called "Charlotte" by Cisco).
332:
333: 15-Dec-2005
334: -----------
335: - Added teq/teqi instructions to the x86_64 jit.
336:
337: 20-Dec-2005
338: -----------
339: - Added a Virtual ATM switch fabric to emulate an ATM backbone.
340:
341: 22-Dec-2005
342: -----------
343: - Final release for 0.2.2 train (0.2.2i).
344:
345: 23-Dec-2005
346: -----------
347: - Starting 0.2.3 train (0.2.3a)
348: - Added proper NPE-150 support.
349: - Added bit-bucket support (zeroed memory zone).
350: - Added NPE type selection.
351:
352: 24-Dec-2005
353: -----------
354: - Added beginning of support for NPE-300 (endianness problems with PCI
355: controllers ?)
356:
357: 28-Dec-2005
358: -----------
359: - Fixed the endianness problem with the NPE-300.
360: - Added NPE300-IO-FE.
361:
362: 31-Dec-2005
363: -----------
364: - Added CLI option to load a symbol file.
365: - Moved JIT code from dynamips.c to mips64_jit.c
366: - Added support for NPE-100.
367: - Updated the README file for NPE type selection.
368: - Suppressed the annoying message "%%Error: Unrecognized I/O card in bay 0"
369:
370: 03-Jan-2006
371: -----------
372: - The bit clearing in physical addresses was done stupidly.
373: Only the bit 33 is used to bypass L2 caching.
374: Re-introduced SRAM aliasing.
375: PHY address 0x100000000 is in fact for PCI I/O space.
376: - Began to play with the Cirrus Logic PD6729.
377: - Added Bootflash based on Intel 28F008SA chips (1 Mb)
378: - Fixed the alignment error occuring with "show version".
379:
380: 04-Jan-2006
381: -----------
382: - Better understanding of Flash SIMM register with bank number and bank
383: size: modified the Flash SIMM code to handle a 8 Mb flash in 1 bank
384: (emulation of Intel 28F016SA chip) which should be sufficient to store
385: crashinfo files or misc files like configs,...
386: - Added ROM remote logging capabilities (with remote emulator control).
387:
388: 05-Jan-2006
389: -----------
390: - Integrated HEC and AAL5 field computation functions found at:
391: http://cell-relay.indiana.edu/cell-relay/publications/software/CRC/
392: (Author is Charles Michael Heard).
393: - Added HEC field management to the virtual ATM switch fabric.
394: - Added HEC and AAL5 CRC fields to the TX part of the TNETA1570 driver.
395:
396: 06-Jan-2006
397: -----------
1.1.1.4 root 398: - Added block timestamping, to evaluate use of JIT blocks and eventually
1.1 root 399: enhance algorithm of block classifying.
400: - Added a flag to the virtual devices to prevent use of MMAPed zones
401: by MTS (used by NVRAM driver).
402: - Added functions to extract IOS configuration from NVRAM.
403: Pressing "Ctrl-] + c" nows write configuration to disk at any time.
404:
405: 08-Jan-2006
406: -----------
1.1.1.4 root 407: - Added support for PEM (NPE-B) EEPROM. It will probably allow support
1.1 root 408: of NPE-175/NPE-225.
409:
410: 09-Jan-2006
411: -----------
412: - Added support for NPE-175/NPE-225 and added NPEB-IO-FE.
413:
414: 10-Jan-2006
415: -----------
416: - Enhancements to the remote console over TCP port.
417: - Port to the Cygwin environment, allowing the emulator to run on Windows
418: machines!
419:
420: 11-Jan-2006
421: -----------
422: - Added a feature to push an IOS configuration into NVRAM ("-C" command line
423: option).
424: - Added enhanced checks to the NVRAM config export.
425: - Added a variant of udp_connect() function for systems that do not support
426: RFC 2553.
427: - Added support for AUX port (TCP port).
428:
429: 12-Jan-2006
430: -----------
431: - Better memory logger.
432: - Added breakpoint capabilities.
433: - Fixed a segfault occuring on some IOS images with x86_64 JIT.
434: (modified the minimum remaining size in JIT buffer adjustment).
435:
436: 13-Jan-2006
437: -----------
438: - The ROM is now embedded in the source code (added an utility to convert
439: ELF file to C code). It is possible to use an alternate ROM using the
440: "-R" option.
441: - Enhanced the MTS lookups to allow use of embedded ROM for code execution.
442:
443: 15-Jan-2006
444: -----------
445: - Added PCI I/O space management.
446: - Added a fake Cirrus Logic PD6729 PCI-to-PCMCIA host adapter.
447: - Cleanups in NPE initialization code.
448: - Fixed some bridge problems with the NPE-300.
449: - Code factorization in the C7200 initialization module.
450: - Generalization of C7200-IO-FE driver for all NPE types.
451: - Added Fault History support.
452: - Added chassis selection (standard or VXR)
453: - Finally found the bug in the non-jit emulation code! It was a cast problem
454: in mult/multu instructions.
455:
456: 16-Jan-2006
457: -----------
458: - Added generic hash tables.
459: - Added "instruction lookup tables" (ILT), which greatly improve performance
460: of non-JIT mode.
461: - Added instruction statistics for the non-JIT mode ("Ctrl-] + j")
462:
463: 17-Jan-2006
464: -----------
465: - Added a port for non-x86 hosts. The emulator ran successfully on a
466: Tru64 Unix box (Alpha CPU)! It should also be able to compile and run
467: on MacOS X (PowerPC).
468:
469: 24-Jan-2006
470: -----------
471: - Added support for DMA channels on Galileo GT64k controllers since it seems
1.1.1.4 root 472: that they may be used by IOS (NPE-400 for sure, other NPE?).
1.1 root 473:
474: 25-Jan-2006
475: -----------
476: - Added Linux Raw Ethernet driver to the NetIO infrastructure.
477: - Hmm, I'm probably missing something in the DMA/SRAM interaction and
478: endianness...
479:
480: 26-Jan-2006
481: -----------
482: - The DMA problem is finally fixed, in fact the SRAM can be accessed with
483: byte-swapping.
484: - Added an unicast limiter to the DEC21140, to receive only trafic directed
485: to the virtual machine (+ multicast/broadcast). This is done by analyzing
486: the setup frames (MAC address filter).
487:
488: 27-Jan-2006
489: -----------
490: - The Linux Raw Ethernet driver needs promiscuous mode to be enabled to
491: receive appropriate packets, added the required code.
492: - Added endianness definitions, and replaced hton[sl]/ntoh[sl] by the new
493: definitions (for exchanges between VM and host).
494:
495: 28-Jan-2006
496: -----------
497: - Added parser infrastructure.
498:
499: 29-Jan-2006
500: -----------
501: - Added a virtual bridge system.
502: - Release 0.2.3b
503:
1.1.1.2 root 504: 31-Jan-2006
505: -----------
506: - Fixed a stupid bug in DMA handling, which in certain conditions can
507: cause an infinite loop.
508:
509: 01-Feb-2006
510: -----------
511: - Added an "instruction block hash" which avoids lookups in the instruction
512: red-black tree. The IBH table takes only 16 Kb of memory.
513: - Added CRC-12 and CRC-16 functions for future use.
514: - Added a "gen_eth" NetIO driver, which allow to access ethernet interfaces
515: in a portable way (tested on Linux and Cygwin).
516: - Fixes to the PowerPC build on Darwin thanks to Olivier Cahagne.
517: - Minor cosmetic changes to display supported/unsupported PA and NPE.
518: - Release 0.2.3c
1.1.1.3 root 519:
520: 06-Feb-2006
521: -----------
522: - Added working Serial interfaces (PA-4T+) !
523: - Bug: CDP not working with serial interfaces ("debug cdp events" reports
524: a checksum problem).
525:
526: 07-Feb-2006
527: -----------
528: - Started the 0.2.4 release.
529: - Modified the command line parser to allow many NIO per PA (for example
530: for serials).
531: - A lot of code cleanups in the C7200 initialization.
532: - Added PA-8T support.
533: - To fix: CDP with Serial interfaces: using cp_len (instead of cp_len+4)
534: in packet rx fixes the problem but breaks IP. Probably something related
535: to padding, see how a CDP packet is sent (special flag in tx ring ?)
536: - Added virtual "beqz" instruction.
537: - Added the "-X" option, allowing to use host memory directly instead of
538: mapping a file to simulate RAM (faster).
539: - Beginning of code reorganization to allow multiple instance contexts.
540:
541: 08-Feb-2006
542: -----------
543: - Added a basic virtual Frame-Relay switch. Unfortunately, LMI must be
544: implemented to maintain links up.
545: - Finally found the problem related to CDP! It was simply a padding problem.
546:
547: 09-Feb-2006
548: -----------
549: - Add support of promiscuous mode for the DEC21140 "unicast limiter":
550: promiscuous mode is used in bridging configurations.
551: - Fixed another bug with the serial interfaces: it seems that there is
552: a "length substractor" for the txring.
553:
554: 10-Feb-2006
555: -----------
556: - Played a little with the PA-POS-OC3, without success.
557:
558: 14-Feb-2006
559: -----------
560: - Finally implemented the basic LMI stuff (only ANSI Annex D). Fortunately,
561: IOS rocks and uses auto-detection, so no extra configuration is needed.
562: - Integrated a Makefile patch from Max Khon for FreeBSD.
563: - Updated documentation.
564: - Release 0.2.4.
1.1.1.4 root 565:
566: 15-Feb-2006
567: -----------
568: - Fixed a cosmetic bug when displaying MAC address at startup.
569: - Fixed a stupid bug in "srav" instruction in x86_64 JIT code. The
570: arithmetic shift operation was done on a 64-bit basic instead of 32-bit,
571: causing bad propagation of the sign-bit.
572: - Added support for multiple instances (no CLI present yet).
573:
574: 17-Feb-2006
575: -----------
576: - Fixed 2 bugs in Frame-Relay switch: a crash occured when receiving
577: a packet gave an error, and if many DLCI with the same ID on different
578: interfaces were used, only one was announced on one interface.
579:
580: 18-Feb-2006
581: -----------
582: - Began work on advanced configuration parsing (instances).
583:
584: 19-Feb-2006
585: -----------
586: - Is the count/compare mechanism pertinent ?
587:
588: 23-Feb-2006
589: -----------
590: - Continued work on advanced config parsing (instances,NIO).
591: - Added registry infrastructure.
592: - Fixed some mistakes in documentation.
593:
594: 28-Feb-2006
595: -----------
596: - Continued work on advanced config parsing (NIO).
597: - Added an IRQ counter.
598: - Continued debugging on recurrent crashes problem.
599: - Added proper checks to mts32_raw_lookup (at least it avoids the
600: coredump...)
601: - Added display of all CP0 registers (except TLB).
602:
603: 02-Mar-2006
604: -----------
605: - Hardened a little the IRQ subsystem, but this doesn't fix the problem.
606: - Added a debugging mode to track jumps to address 0 (x86_64 only!).
607: - Fixed the teq/teqi instructions in amd64/x86 modes that were buggy.
608:
609: 04-Mar-2006
610: -----------
611: - Added some assembly optimized routines for x86 hosts.
612: - Fixed a stupid bug in mts32_raw_lookup (op_size and op_type were
613: swapped).
614:
615: 06-Mar-2006
616: -----------
617: - Added Unix and Null NETIO types for config files.
618: - Fixes for incorrect behavior in virtual memory access routines, in
619: case of exception.
620:
621: 08-Mar-2006
622: -----------
623: - Removed the configuration file parsing, in favor of a remote control
624: system for use with the dynagen project.
625:
626: 09-Mar-2006
627: -----------
628: - Added basic hypervisor infrastructure.
629: - Added basic NIO code to the hypervisor commands.
630:
631: 10-Mar-2006
632: -----------
633: - Added the hypervisor NIO code.
634: - Added Frame-Relay and ATM switches to the hypervisor commands.
635:
636: 11-Mar-2006
637: -----------
638: - Played (successfully) with OIR (Online Insertion and Removal). OIR
639: will require device deletion...
640:
641: 12-Mar-2006
642: -----------
643: - Fixed EEPROM code which used global variables.
644: - Added the necessary code for basic OIR.
645: - Added PCI device removal.
646:
647: 15-Mar-2006
648: -----------
649: - A lot of work on C3600 integration (although it is not functional).
650: - Added a basic ns16552 driver.
651:
652: 17-Mar-2006
653: -----------
654: - Added some hypervisor commands for PA setup and OIR.
655:
656: 20-Mar-2006
657: -----------
658: - Hardened the Mueslix driver: after OIR, a "no shut" on a new interface
659: crashed the virtual router. Now, IRQ status is managed appropriately.
660:
661: 24-Mar-2006
662: -----------
663: - Added ptask (periodic task) removal.
664: - Added a basic (nearly empty) C3600 IO FPGA chip.
665:
666: 25-Mar-2006
667: -----------
668: - Added a NIO RX multiplexer.
669: - Added NIO unset operation for PA.
670:
671: 26-Mar-2006
672: -----------
673: - Modified the virtual ATM/Frame-Relay switches and NIO bridge to use
674: the new NIO RX multiplexer.
675: - Added the NIO bridges to the hypervisor commands.
676: - Fixed a stupid bug in hypervisor ATM/FR switch command, the VC were
677: badly parsed.
678: - Fixed a memory leak in the hypervisor module (tokens not freed).
679:
680: 27-Mar-2006
681: -----------
682: - Added appropriate locks to the ATM and Frame-Relay switches.
683: - Added VC removal for ATM and Frame-Relay switches.
684:
685: 28-Mar-2006
686: -----------
687: - Added registry management to the ATM/FR switches and NIO bridge.
688:
689: 30-Mar-2006
690: -----------
691: - Added a refcount system to the NIO RX multiplexer.
692:
693: 31-Mar-2006
694: -----------
695: - Added NIO removal for NIO bridges.
696: - Added NIO bridge removal.
697: - Modified the NIO bridge code to use the registry infrastructure.
698: - Same as above, for ATM and Frame-Relay switches.
699:
700: 03-Apr-2006
701: -----------
702: - Added the required infrastructure for online removal.
703: - Added hypervisor commands for PA removal and to display C7200 hardware.
704: - Fixed a bug in PCI device removal.
705: - It's now possible to change cards on the fly!
706: - The Mueslix driver was incorrectly modified: the TX ring scanner must
707: run even if the NIO is not defined.
708: - Modified the DEC21140 driver to report a Link Down when the NIO is not
709: defined.
710:
711: 04-Apr-2006
712: -----------
713: - Added packet dump (for debugging) to NetIO receive/send operations.
714:
715: 08-Apr-2006
716: -----------
717: - The SMP bug seems to be fixed! The irq_cause field is now manipulated
718: atomically (inline asm for x86 and x86_64, pthread mutex on other
719: machines).
720:
721: 12-Apr-2006
722: -----------
723: - Added a VM abstraction layer (for different platforms).
724: - Fix of X86 assembly file for Cygwin.
725: - The IOS config file is now saved with a specific filename from the
726: VM instance.
727:
728: 13-Apr-2006
729: -----------
730: - Added per-instance logfile.
731:
732: 14-Apr-2006
733: -----------
734: - Fixed a stupid bug in non-JIT mode with IRQs.
735:
736: 17-Apr-2006
737: -----------
738: - bugfix: "null" NIO creation didn't record the NIO in registry.
739: - bugfix: mueslix logging.
740: - bugfix: adding an NIO to the RX listener list (bad double linked-list)
741: - bugfix: bad fgets() use in NIO bridge and ATM/FR switches.
742:
743: 18-Apr-2006
744: -----------
745: - bugfix: the same NIO could be recorded many times in the NIO RX
746: multiplexer due to bad design in NIO adding.
747:
748: 19-Apr-2006
749: -----------
750: - Beginning of work on AMD Am79c971 ethernet controller (used by PA-4E
751: and PA-8E).
752:
753: 20-Apr-2006
754: -----------
755: - The emulation of AMD Am79c971 seems to be working very well.
756: - Modified the physical memory dump function to use the VM log file.
757:
758: 21-Apr-2006
759: -----------
760: - Modified the PA-4E/PA-8E EEPROM definitions to work with VXR midplanes.
761: - PA-4E is now usable.
762:
763: 23-Apr-2006
764: -----------
765: - Added "shutdown" operation for PA-4E/PA-8E drivers.
766:
767: 24-Apr-2006
768: -----------
769: - Enhanced lock file management (with POSIX locks).
770: - The devices are now dependent from VMs instead of being dependent
771: of CPU groups. This makes a lot of things cleaner.
772:
773: 27-Apr-2006
774: -----------
775: - Added IRQ clearing with GT64K (DMA transfers).
776: - Study of GT64120 controller to understand address decoding process.
777:
778: 28-Apr-2006
779: -----------
780: - Fixed a bug with NPE-175/NPE-225 PEM EEPROM selection.
781: - The NPE-400 is now able to support 512 Mb of DRAM! (the supplemental
782: memory is in fact considered as IO memory)
783: - Added a safety check with RAM size.
784: - The CPU identifier (PRID register) is now fixed depending on the NPE
785: board.
786:
787: 01-May-2006
788: -----------
789: - Modified device subsystem to order devices by physical addresses,
790: optimized dev_lookup/dev_lookup_next.
791: - Added infrastructure for various object cleanup.
792: - Added "shutdown" code for SRAM, NVRAM, Bootflash, Zero, remote control
793: devices.
794: - Added CPU deletion support (incomplete).
795:
796: 02-May-2006
797: -----------
798: - Added PCI bus removal.
799: - Added "shutdown" code for GT64010 and GT64120.
800: - Added CFC0/CTC0 instructions (R7000) and handling for associated
801: registers. TODO: customized vector spacing.
802:
803: 04-May-2006
804: -----------
805: - Introduction of the new MTS64 subsystem!
806: - Note: incorrect uses of assert(), especially in insn_lookup.c module.
807:
808: 05-May-2006
809: -----------
810: - Added a free list of chunks for MTS64 + some basic optimizations.
811: - Added basic PCI/HT stuff for SB-1 processor (dev_sb1_pci.c module).
812: - Added AP1011 (Sturgeon HyperTransport-PCI Bridge) device.
813: - Fixed masks for MFC0/MTC0 instructions, and added new definition for MFC0
814: to access set 1.
815: - Fixed incorrect uses of assert().
816:
817: 07-May-2006
818: -----------
819: - Modified the console handling to be more efficient.
820: - Added global invalidation of the MTS64 cache.
821:
822: 08-May-2006
823: -----------
824: - Added selective invalidation of the MTS64 cache (for TLB management).
825: - Added MTS64 statistics.
826: - Modified the MTS64 hash settings. Origin: shift: 12, hash_bits: 16.
827: Replaced by shift: 16, hash_bits: 12 -> more efficient and consumes
828: less memory! (logical since IOS uses large TLB entries).
829: - Modified cp0 module to use an abstraction layer for MTS access, allowing
830: 32 or 64 bit modes.
831:
832: 09-May-2006
833: -----------
834: - Fixed MTS64 on x86_64 machines.
835: - The clock divisor can now be set per VM and with an hypervisor command.
836:
837: 10-May-2006
838: -----------
839: - Added "shutdown" code for RAM and ROM devices.
840: - Added VM object dump ("Ctrl-] + o")
841:
842: 11-May-2006
843: -----------
844: - Bugfix: missing initialization of the address length parameter of accept()
845: in the main hypervisor module.
846: - Bugfix: missing initialization of registry memory pool (noticed with
847: Valgrind).
848: - Added NPE and midplane selections to the hypervisor.
849:
850: 12-May-2006
851: -----------
852: - Added NIO deletion to the hypervisor.
853: - Fixed status message in hypervisor for object deletion.
854: - Added "sub" instruction (without exception support).
855:
856: 14-May-2006
857: -----------
858: - Fixed CPU state change. It is now possible to reboot at any time using
859: "Ctrl-] + k".
860: - Added VTTY deletion.
861: - Added "c7200 stop" command to the hypervisor (not finished).
862: - The memory-mapped devices of port adapters are now enabled dynamically,
863: depending on the PCI BAR (Base Address Registers) settings. This avoids
864: use of hardcoded values.
865: - Integrated a patch from Philipp Brenner, which fixes ELF loading problem
866: on Cygwin when default text file type is set to DOS. Many thanks to him.
867: (symptom was: "load_elf_image: elf_begin: I/O error: raw read")
868:
869: 15-May-2006
870: -----------
871: - Added "c7200 set_config" and "c7200 set_mac_addr" hypervisor commands.
872: - Fixed a stupid bug in PCI bus removal.
873: - Added more complete shutdown code.
874:
875: 16-May-2006
876: -----------
877: - Fixed uninitialized MTS64 allocated entries (seen with Valgrind).
878: - Added missing unmapping of memory-mapped files (reported by Greg).
879: - The VTTY shutdown doesn't close stdin anymore (causing terminal
880: problems at exit).
881: - Fixed the shutdown procedure, added VM_STATUS_SHUTDOWN as status
882: for a VM. Adapted the virtual CPU synchronization.
883:
884: 17-May-2006
885: -----------
886: - Some basic work on the hypervisor main modules (cleanup).
887:
888: 19-May-2006
889: -----------
890: - bugfix: base MAC address setup broken (reported by Greg).
891: - Added global deletion of: ATM/FR switches, NetIO bridges, NetIO
892: descriptors, C7200 instances ...
893: - Added "hypervisor reset" command to go back to a clean state.
894:
895: 20-May-2006
896: -----------
897: - Modified the CPU synchronization system which was not working correctly.
898:
899: 21-May-2006
900: -----------
901: - bugfix: NIO unset in PA-4T+/PA-8T driver.
902: - Added C7200 PA cleanup code.
903:
904: 22-May-2006
905: -----------
906: - Better handling of PA/NIO removal.
907: - Base MAC addresses are now generated automatically if not specified.
908: ("cafe.<instance_id>.0000")
909:
910: 23-May-2006
911: -----------
912: - Added "VDE" NetIO type to connect to UML switches / Virtual Distributed
913: Ethernet switches.
914: - Some cleanups in NetIO code.
915: - Added shutdown code for MTS32/MTS64 (not used yet).
916:
917: 24-May-2006
918: -----------
919: - Minor optimizations for non-JIT mode.
920: - bugfix: crash when dumping instruction block tree (JIT).
921: - Some memory leak fixes (again with Valgrind, definitely this tool rocks).
922: TOFIX: * clpd6729 + PCI I/O space (to check carefully).
923: * IO/supplemental memory created with dev_create_ram().
924: - Use of MTS shutdown code.
925:
926: 25-May-2006
927: -----------
928: - The compressed IOS images were not booting anymore: fixed the MIPS config
929: register at startup (reported by Davide Brini).
930: - Minor code cleanup for MIPS CPU reset.
931: - I/O and supplemental memory are now created with dev_ram_init().
932: - bugfix: in PA shutdown code, the driver shutdown operation was called
933: even if the driver was not initialized.
934: - bugfix: order of memory freeing in c7200_free_instance() wasn't good,
935: producing a segfault (seen on windows machines).
936:
937: 26-May-2006
938: -----------
939: - Played with the PA-POS-OC3 driver, it seems that it is working. Need
940: to check if the TX ring guess is correct (ie, with "routing" conditions).
941:
942: 27-May-2006
943: -----------
944: - PA-POS-OC3: Fixed the TX ring part to work with multiple buffers. There
945: is still a problem with buffer addresses (doesn't work with platforms
946: using SRAM).
947:
948: 29-May-2006
949: -----------
950: - Playing with ISDN emulation (PA-4B), and Munich32 chip. Interfaces
951: are only visible for now.
952:
953: 30-May-2006
954: -----------
955: - Moved VM lockfile deletion to VM instance freeing function.
956: - Ugly hack to allow the POS driver to work with SRAM-based platforms.
957: - Added support for "VDE" NIO in hypervisor.
958: - Beginning of hypervisor documentation (README.hypervisor).
959:
960: 31-May-2006
961: -----------
962: - Removed "c7200 trigger_oir" hypervisor command which was redundant.
963:
964: 01-Jun-2006
965: -----------
966: - bugfix: fixed some reference counting leaks with default ATM and
967: Frame-Relay switches and NIO bridge.
968: - bugfix: DLCI were not announced in ascending order in LMI packets.
969: - studied a bit how to use larger bootflash sizes.
970:
971: 02-Jun-2006
972: -----------
973: - DEC21140: Added multicast flag management for received frames.
974: - Debugging of ISL problem reported by Valentin.
975: - Added CRC-32 functions to the appropriate module.
976:
977: 03-Jun-2006
978: -----------
979: - ISL is now working with DEC21140. It seems that to handle ISL, another
980: chip (FPGA ?) is present on PA-FE-TX and C7200-IO-FE to add the second
981: FCS field.
982: - Added basic disassembly code (need to do something more generic).
983:
984: 04-Jun-2006
985: -----------
986: - Added virtual instruction "bnez" (basic optimization).
987: - Added RM7000 "mul" instruction (not tested).
988: - Added teq/teqi instructions to non-JIT mode.
989:
990: 05-Jun-2006
991: -----------
992: - Added output packet exclusion to PCAP module (not possible with WinPCAP
993: though).
994: - Enhanced packet filtering in dec21140 emulation (for Windows users).
995: - bugfix: stupid cast problem in bootflash code preventing proper unmapping.
996: (seen with /proc/<pid>/maps on Linux).
997: - Added debugging message for device removal.
998: - bugfix: memory not freed / file not closed with ELF loader.
999: - bugfix: config register keeping the "ignore config" flag between instance
1000: reloads.
1001: - Added "c7200 set_conf_reg" hypervisor command.
1002: - ==> pre19
1003: - Experiment: Pending IRQ are now checked only at jump instructions.
1004:
1005: 06-Jun-2006
1006: -----------
1007: - bugfix: bootflash not working anymore with previous bugfix.
1008: - Some optimizations for Program Counter (PC) handling in JIT mode.
1009: - Some optimizations for non-JIT mode (use of fastcalls).
1010: - Added a performance counter.
1011:
1012: 07-Jun-2006
1013: -----------
1014: - Added configuration saving command for hypervisor
1015: ("hypervisor save_config <file>")
1016: - The SB-1 DUART is working, allowing NPE-G1 console to work :)
1017: - Environmental monitor working with NPE-G1.
1018: - NPE-G1 next priorities: Ethernet (because it delays boot) and NVRAM
1019: (seems to be at a different address?)
1020:
1021: 08-Jun-2006
1022: -----------
1023: - NVRAM is now ok on NPE-G1 (it is at a different physical address).
1024:
1025: 13-Jun-2006
1026: -----------
1027: - Optimizations on fast lw/sw operations (x86 only for now).
1028: - Changed offset size for branches (x86_jump32 instead of x86_jump8).
1029:
1030: 14-Jun-2006
1031: -----------
1032: - Base MAC address now generated from PID and instance ID.
1033:
1034: 15-Jun-2006
1035: -----------
1036: - Optimizations on fast lw/sw operations (x86_64).
1037: - bugfix: fixed console problems when using TCP mode on Windows platforms
1038: (Telnet, Putty). It just requires to ignore LF (Line Feed) character
1039: (BTS entry #4)
1040:
1041: 16-Jun-2006
1042: -----------
1043: - bugfix: importing config to NVRAM was broken (device lookup was done on
1044: "cacheable" devices only in physmem* functions) (BTS entry #5)
1045:
1046: 17-Jun-2006
1047: -----------
1048: - bugfix: memory not freed when using host memory to emulate virtual RAM.
1049: (BTS entry #8).
1050: - Minor enhancements to clpd6729 driver.
1051:
1052: 19-Jun-2006
1053: -----------
1054: - Included a patch from Peter Ross ([email protected]) which allows
1055: to bind console and AUX ports to real serial ports. Many thanks to him.
1056:
1057: 20-Jun-2006
1058: -----------
1059: - Playing with the PCMCIA stuff (especially CIS)
1060:
1061: 21-Jun-2006
1062: -----------
1063: - Continuing on PCMCIA.
1064:
1065: 22-Jun-2006
1066: -----------
1067: - The PCMCIA ATA disk is working, although the ATA command set is not
1068: completely implemented.
1069:
1070: 23-Jun-2006
1071: -----------
1072: - Added virtual ethernet switch module.
1073: - bugfix: linux_eth file descriptor was not used correctly with NIO RXL.
1074: - Modified the ELF loader to use all sections.
1075:
1076: 26-Jun-2006
1077: -----------
1078: - Modified the NIO RX handling (packet receiving is done in NIO module).
1079:
1080: 27-Jun-2006
1081: -----------
1082: - bugfix: PA-4E/PA-8E not working with IOS 12.0T (incorrect device length).
1083: (BTS entry #17).
1084: - Some cleanups (untested though) in ATM and Frame-Relay switch modules
1085: (locking).
1086:
1087: 29-Jun-2006
1088: -----------
1089: - Added support for 2nd ATA disk.
1090: - Added command line options for disk0: and disk1: ATA devices.
1091: By default, disk0: has a capacity of 64 Mb, disk1: is not defined.
1092: - Added hypervisor commands "c7200 set_disk0" and "c7200 set_disk1".
1093: - Fixed some mistakes and typos in documentation.
1094:
1095: 30-Jun-2006
1096: -----------
1097: - Factorized code of fast memory operations to have something cleaner.
1098:
1099: 02-Jul-2006
1100: -----------
1101: - Modified the JIT compiler to translate pages instead of "blocks"
1102: (improves performance).
1103:
1104: 03-Jul-2006
1105: -----------
1106: - Some code cleanup for the new JIT compiler.
1107: - bugfix: PA-4T+/PA-8T not working with IOS 12.0T (incorrect device length).
1108: (BTS entry #23).
1109: - Added JIT flush to limit the memory used for translation. At this time,
1110: this is basic, we count the number of translated pages and we flush when
1111: this number reaches a threshold (512 pages seems to be a good value).
1112: - Integrated a patch from Philipp Brenner (BTS entry #21)
1113: Description: "In standard mode it intercepts SIGINT and sends a CTRL+C
1114: (0x03) to the target's vtty_con buffer, while in hypervisor mode it
1115: gracefully shuts down the hypervisor which causes the application to
1116: quit."
1117:
1118: 04-Jul-2006
1119: -----------
1120: - Fixed a stupid bug in mts_cache (phys_page boundary not checked).
1121: - Optimized JIT flushing and insn block allocation.
1122: - Changed the maximum number of translated pages to 2048, which seems to
1123: be a more adequate value.
1124:
1125: 05-Jul-2006
1126: -----------
1127: - Added an "exec zone" which is a pool of host executable pages. This
1128: zone is limited by default to 64 Mb for Linux/Unix and 16 Mb for Cygwin.
1129: When the zone is fully used, the JIT structures are flushed (removed the
1130: maximum number of translated pages).
1131: Now, there is no need to disable ExecShield or similar systems.
1132: - Added explicit error message when failing to open an ELF file.
1133: - Fixed getopt_long() usage.
1134: - Added CLI option "--exec-area <size>" to define exec zone size for the
1135: default VM.
1136:
1137: 06-Jul-2006
1138: -----------
1139: - Added "tlbwr" (TLB Write Random) instruction and coprocessor 0 random
1140: register management.
1141: - Added "c7200 set_exec_area" hypervisor command.
1142: - Allowed the hypervisor to run on Windows 2000 machines (ip_listen()
1143: version is now ok for non-rfc2553 systems).
1144:
1145: 07-Jul-2006
1146: -----------
1147: - Added command line help for "--exec-area" option.
1148: - Updated documentation.
1149:
1150: 11-Jul-2006
1151: -----------
1152: - bugfix: missing pointer cleanup in c7200_pa_shutdown() (BTS entry #30)
1153: - bugfix: incomplete shutdown code for NIO (little memory leak + no
1154: freeing code for NIO with null type).
1155: - bugfix: memory leak in udp_connect() + incorrect error checking.
1156: - Added cleanup code for general log file.
1157: - bugfix: memory leak in hypervisor command execution.
1158: - Added logging for hypervisor commands.
1159: - Invalid instructions in delay slots are now properly handled by the JIT
1160: compiler (error message + CPU stop).
1161:
1162: 13-Jul-2006
1163: -----------
1164: - Added an idle loop detector (--idle-pc CLI option + "Ctrl-] + i" key)
1165: - Added "c7200 set_idle_pc" hypervisor command.
1166:
1167: 14-Jul-2006
1168: -----------
1169: - Updated documentation.
1170: - Checked the idle loop system on Windows and Linux x86_64, seems to be
1171: working correctly.
1172: - Added idle loop system to non-JIT mode.
1173: - Fixed a bug in "cache" instruction when used in non-JIT mode.
1174:
1175: 16-Jul-2006
1176: -----------
1177: - Integrated a patch from Peter Ross ([email protected]) for the
1178: Makefile.
1179:
1180: 17-Jul-2006
1181: -----------
1182: - bugfix: no empty mips64_emit_invalid_delay_slot() function for non-JIT
1183: build.
1184: - Added definition for mmap() MAP_ANONYMOUS flag for systems where only
1185: MAP_ANON is defined.
1186: - Accurate Timer IRQ (added --timer-itv parameter for tuning).
1187:
1188: 18-Jul-2006
1189: -----------
1190: - Fixed inter-pages jumps in delay slots (reported by nula)
1191: - Added a check preventing to run the idle-pc feature when an idle-pc value
1192: is already defined (since it would give biased results).
1193: - bugfix: VTTY list not locked in vtty_create()
1194: - bugfix: ensure the CPU is running before incrementing pending timer IRQs.
1195: - Added a checklist for minimal C7200 hardware components. It checks good
1196: init of ram, rom, nvram and zero devices.
1197:
1198: 19-Jul-2006
1199: -----------
1200: - Some work on JIT tuning (flush).
1201:
1202: 20-Jul-2006
1203: -----------
1204: - Better info logging for VTTY and C7200 modules.
1205: - Added a debug level for VMs.
1206:
1207: 21-Jul-2006
1208: -----------
1209: - Various code cleanups.
1210: - Added "c7200 set_debug_level" hypervisor command and "--vm-debug" command
1211: line option. Now, by default, less details are printed.
1212: - Fixed a bug with select() on Cygwin platform: before, only 64 FDs
1213: could be used.
1214:
1215: 24-Jul-2006
1216: -----------
1217: - bugfix: accept_fd was not closed in VTTY module (BTS entry #42)
1218: - bugfix: properly handle CR/LF in configuration files (FR, ATM, ...)
1219: (BTS entry #36)
1220: - bugfix: accept fd not correctly printed in log file.
1221: - Added a mini-parser for hypervisor: allows directory with blanks, ...
1222: - bugfix: bad use of setsockopt() in the hypervisor.
1223:
1224: 25-Jul-2006
1225: -----------
1226: - Added the capability to use Null NetIO with the hypervisor
1227: ("nio create_null" command).
1228: - Added a FIFO NetIO for intra-hypervisor communications.
1229: - Merged a patch from Peter Ross for incorrect idle-pc parsing with 64-bit
1230: values.
1231: - Non-JIT mode optimization for instruction fetch (although it could be
1232: enhanced again).
1233: - Various code cleanups.
1234:
1235: 26-Jul-2006
1236: -----------
1237: - Added "ethsw clear_mac_addr_table" to clear MAC address table of a
1238: virtual ethernet switch.
1239: - Added "ethsw show_mac_addr_table" to show all MAC addresses learnt by
1240: a virtual ethernet switch.
1241: - Fixed a potential bug with jalr/jr instructions, where the stack is used
1242: to save the return PC. If the instruction in the delay slot returned
1243: directly to the jit main loop (exception,...), the stack would be in
1244: an inconsistent state. This fix is also required for Darwin/x86.
1245:
1246: 27-Jul-2006
1247: -----------
1248: - Stack alignment for Darwin/x86 in memop functions and unknown opcode
1249: handling.
1250: - The Darwin/x86 build requires -mdynamic-no-pic as compilation option.
1251: - Fixed some inline assembly mistakes with "lock" prefix.
1252: - The Darwin/x86 port seems to be working correctly.
1253: - Fixed the amd64 version of "jr" instruction similarly to the x86 version
1254: (no problem with "jalr" in this case).
1255:
1256: 29-Jul-2006
1257: -----------
1258: - Merged a patch from Peter Ross ([email protected]):
1259: * disable dynamips escape commands for serial
1260: * support receipt of char 0x00
1261: * force the device to into raw mode (cfmakeraw)
1262: * include additional uart register addresses in c7200 iofpga switch.
1263: The README is also updated.
1264: - Fixed some sign problems in VTTY module.
1265:
1266: 31-Jul-2006
1267: -----------
1268: - Merged a parch from Peter Ross for correct handling of Ctrl-C when
1269: a TCP console is used.
1270: - Code cleanup (JIT usage flag per VM, ...)
1271: - C3600: implemented a working ns16552 console driver.
1272: - C3600: fixed clpd6719 driver.
1273: - C3600: working environmental monitor.
1274: - C3600: changed default RAM to 128 Mb.
1275: - Fixed clobbered registers on AMD64 platform ("r14" was missing).
1276:
1277: 01-Aug-2006
1278: -----------
1279: - Added command line support for C3600 instances.
1280: - C3600: added appropriate deletion code.
1281: - C3600: added mainboard EEPROM support.
1282: - C3600: added bootflash of 8 Mb.
1283: - C3600: analyzed triggering of various IRQs.
1284:
1285: 03-Aug-2006
1286: -----------
1287: - C3600: added NM EEPROM support, slot activation now depends on the NM
1288: state.
1289: - Fixed nmc93c46 EEPROM code to set the data out bit to a high value when
1290: not reading data (was required for C3600 NM EEPROM) + various bug-fixes
1291: and cleanups.
1292:
1293: 04-Aug-2006
1294: -----------
1295: - C7200: some cleanups in PA function naming.
1296: - C7200: code refactoring for PA drivers.
1297: - C7200: ethernet stuff is now independent of dec21140 and am79c971 code.
1298: - C3600: added NM management stuff.
1299: - Mueslix serial stuff is now independent for C3600 and C7200.
1300: - C3600: added NM-1E, NM-1FE and NM-4T network modules.
1301: => problems: * no keepalive required for NM-1E/NM-1FE (media status ?)
1302: * NM-4T packet delivery failure when end of RX ring is hit.
1303:
1304: 06-Aug-2006
1305: -----------
1306: - Modified Am79c971 MII registers to keep the link up in FastEthernet mode.
1307: - Merged a patch from Peter Ross for Console and AUX ports optimizations
1308: (especially with TCP mode)
1309: * console and aux FILE streams
1310: * reimplement vtty_read_and_store() as state machine:
1311: - parse telnet escape codes, instead of forwarding them to router.
1312: - display instance and router name in xterm/vt title bar.
1313: - Modified the Mueslix driver to have something working for both C3600 and
1314: C7200 models. Added some debugging info.
1315: - C3600: better ethernet NM code.
1316: - C3600: Added NM-4E (4 ethernet ports) network module.
1317:
1318: 07-Aug-2006
1319: -----------
1320: - Fixed the remote control driver which incorrectly used static variables.
1321: - NVRAM address can now be known with the remote control driver.
1322: - Command line usage is now correctly displayed depending on the selected
1323: platform.
1324:
1325: 08-Aug-2006
1326: -----------
1327: - Some work on PA-4B (Munich32 chip).
1328:
1329: 09-Aug-2006
1330: -----------
1331: - Continuing on PA-4B (trying to understand TP3420).
1332:
1333: 10-Aug-2006
1334: -----------
1335: - C7200: Added PA Mgmt IRQ support (required for PA-4B, seen on a real
1336: c7200 with PA-4B offered by Vernon Missouri).
1337: - Added TP3420 definitions.
1338:
1339: 15-Aug-2006
1340: -----------
1341: - Continuing on PA-4B. Better understanding of the TX ring.
1342: Fixed interrupt queue management.
1343:
1344: 19-Aug-2006
1345: -----------
1346: - Added hv_vm.c module to handle generic VM operations.
1347: - Added hv_c3600.c module for the Cisco 3600 platform.
1348: - Fixed a bug in VTTY flushing.
1349:
1350: 20-Aug-2006
1351: -----------
1352: - Added code to gen_eth module for Cygwin to prevent WinPCAP from giving
1353: back transmitted packets. It requires WinPCAP 0.4-alpha1 or better.
1354: TODO: need to be tested!
1355:
1356: 21-Aug-2006
1357: -----------
1358: - Fixed C3660 boot. Trying to understand/discover the hardware.
1359: Environmental monitor should be ok.
1360:
1361: 24-Aug-2006
1362: -----------
1363: - Added NS16552 flush optimization (Peter Ross).
1364: - Fixed missing periodic task removal in NS16552.
1365:
1366: 26-Aug-2006
1367: -----------
1368: - C3660: * Better understanding of NM presence / EEPROM registers.
1369: * Analyzed registers used when a Net IRQ is triggered.
1370:
1371: 28-Aug-2006
1372: -----------
1373: - C3660: Network Modules are now working! Remaining stuff: OIR.
1374:
1375: 29-Aug-2006
1376: -----------
1377: - Added more generic code to handle Cisco EEPROM to change easily
1378: chassis MAC addresses.
1379: - Updated README with C3600 information.
1380: - Updated hypervisor documentation (README.hypervisor).
1381: - Added dated package build to the Makefile (make packdev)
1382: - Checked WinPCAP fix of 20-Aug-2006: working.
1383: - Added the capability for high priority IRQ (like NetIO IRQ) to break
1384: the idle loop. Great latency improvement with NetIO IRQ.
1385: - C3600: the DUART irq is now higly prioritized. It gives better console
1386: reactivity.
1387:
1388: 30-Aug-2006
1389: -----------
1390: - Huge performance improvement on dec21140 and am79c971 drivers, by
1391: transmitting up to 16 packets in one TX ring scan pass.
1392: - Added the same to Serial driver (untested).
1393: - Added "unicast limiter" feature to the am79c971 driver, similarly to the
1394: dec21140 driver. Not having this caused the virtual instances to see
1395: unrelated host traffic when using linux_eth/gen_eth NIO and consequently
1396: a bad performance was obtained. Thanks to Greg for noticing that.
1397: - Beginning of rework of PCI subsystem for PCI bridge support.
1398: (Greg noticed that with 12.2T releases, the PCI bus numbering is
1399: different for the C3660).
1400:
1401: 31-Aug-2006
1402: -----------
1403: - Finished the PCI subsystem rework.
1404: - C7200: Fixed PCI bridge use for midplanes (std: dec21050, vxr: dec21150).
1405:
1406: 01-Sep-2006
1407: -----------
1408: - Finally fixed the Serial problem on C3620 platform (hack in the driver
1409: to trigger interrupts differently).
1410: - Cleanup for VM PCI bus pool and C7200 "hidden" I/O bridge was missing.
1411:
1412: 03-Sep-2006
1413: -----------
1414: - Added safety checks to the PCI bus management.
1415: - Added a PLX9060 device (very basic for now).
1416: - Rewritten the PA-POS-OC3 driver to use the new PLX9060 driver.
1417: - Cleanup: removed use of c7200 bay info in drivers (everything uses
1418: PCI for configuration).
1419: - C7200: removed the bay module which contained static definitions of
1420: PCI bus, physical addresses for PA, ... Now everything is handled
1421: dynamically by the PCI subsystem and the remaining drivers (PA-4B,
1422: PA-POS-OC3) have been fixed.
1423: - C3600: removed PCI bus info from the bay module (due to PCI bridge new
1424: code).
1425:
1426: 04-Sep-2006
1427: -----------
1428: - Fixed some typos in comments.
1429: - Added a standalone utility to extract IOS configuration from an
1430: NVRAM file.
1431: - Removed pcireg.h (from NetBSD) which was just used for one definition.
1432: - Added a "COPYING" file for the GPLv2 licence.
1433:
1434: 05-Sep-2006
1435: -----------
1436: - Added basic packet filtering framework, to simulate packet loss or
1437: alteration.
1438: - Hypervisor commands now supports a variable number of parameters.
1439: - bugfix: doing a "sh run" and then pressing "Escape" was causing trouble
1440: to the VTTY (the state machine was in an incorrect state).
1441:
1442: 06-Sep-2006
1443: -----------
1444: - Removed erroneous special handling of intra-page jumps in delay slots.
1445: (problem with c3640 12.0(7)T IP+ image).
1446:
1447: 07-Sep-2006
1448: -----------
1449: - C3600: processors ID are now correct.
1450: - Avoid removing the JIT block of the caller with the "cache" instruction.
1451: - Added "hypervisor version" to allow clients (Dynagen) to know the current
1452: version.
1453: - Added missing explanation for "-P <platform>" command line parameter.
1454: - C7200: Fixed incorrect cleanup of IO PCI bridge.
1455:
1456: 08-Sep-2006
1457: -----------
1458: - Better code for VM error messages.
1459: - Fixed the write attempts to ROM at startup.
1460:
1461: 09-Sep-2006
1462: -----------
1463: - C3600: added support for io memory size, which prevents Smart Init
1464: from running (hypervisor command: c3600 set_iomem <router> <val>).
1465: - C3600: fixed incorrect handling of commands for this platform, which
1466: caused port 0 to be disabled when manipulating other ports.
1467:
1468: 11-Sep-2006
1469: -----------
1470: - Fixed loop overflow in idle pc computation.
1471: - Added base64 encoding/decoding module from Yannick Le Teigner.
1472: - Added hypervisor commands "vm push_config" and "vm extract_config"
1473: to manage IOS configurations. Extracting to base64 is ok (verified with
1474: a third party decoder:
1475: http://www.opinionatedgeek.com/dotnet/tools/Base64Decode/Default.aspx )
1476: - C3600: NVRAM checksum is now correctly computed.
1477:
1478: 12-Sep-2006
1479: -----------
1480: - Following a suggestion of Yannick Le Teigner, applied the optimization
1481: principle to PA-A1 card already used in dec21140, ... Latency is clearly
1482: better (on my system, this dropped from about 150ms to 50 ms).
1483:
1484: 14-Sep-2006
1485: -----------
1486: - Incorrect display of device name in PLX9060 driver.
1487: - Added manpages provided by Erik Wenzel ([email protected]). Many thanks
1488: to him for this and for his work on packaging for Debian.
1.1.1.5 ! root 1489: - Final 0.2.5 release.
! 1490: - C7200: Added missing NVRAM checksum.
! 1491:
! 1492: 15/21-Sep-2006
! 1493: -----------
! 1494: - Working on NM-16ESW.
! 1495:
! 1496: 22-Sep-2006
! 1497: -----------
! 1498: - NM-16ESW: interfaces are now up (handles specifically the appropriate
! 1499: MII register).
! 1500:
! 1501: 23/25-Sep-2006
! 1502: --------------
! 1503: - Still continuing on the NM-16ESW (first packets received/transmitted).
! 1504:
! 1505: 26-Sep-2006
! 1506: -----------
! 1507: - NM-16ESW: seems to be working! (although there are still a lot of things
! 1508: to do).
! 1509:
! 1510: 28-Sep-2006
! 1511: -----------
! 1512: - Added a hack to allow Ethernet NM to work correctly in 3620/3640
! 1513: (seen when directly attached to the real network with very few packets
! 1514: incoming).
! 1515: - NM-16ESW: proper support for tx ring scatter/gather support.
! 1516: - NM-16ESW: fixed a bug in ARL insertion.
! 1517: - NM-16ESW: send directly BPDU packets to the CPU.
! 1518:
! 1519: 29-Sep-2006
! 1520: -----------
! 1521: - NM-16ESW: added support for "trunks" (ie etherchannel).
! 1522: - Added "Ctrl+p" sequence key to dump Port Adapter / Network Module info
! 1523: (only NM-16ESW reports something at this time).
! 1524:
! 1525: 30-Sep-2006
! 1526: -----------
! 1527: - NM-16ESW: proper management of station movement (etherchannel is handled).
! 1528:
! 1529: 01-Oct-2006
! 1530: -----------
! 1531: - NM-16ESW: added register handling.
! 1532:
! 1533: 02-Oct-2006
! 1534: -----------
! 1535: - NM-16ESW: playing with the port mirroring feature.
! 1536:
! 1537: 04-Oct-2006
! 1538: -----------
! 1539: - Finally understood how to handle link status changes! Now,
! 1540: "shut"/"no shut" is working. Better understanding of MII registers
! 1541: in general.
! 1542:
! 1543: 05-Oct-2006
! 1544: -----------
! 1545: - Fixed bug described in BTS entry #65 (in the case where two virtual
! 1546: addresses point at the same physical address, the JIT can use
! 1547: inappropriate block). This was a "silent" bug.
! 1548:
! 1549: 07-Oct-2006
! 1550: -----------
! 1551: - Modified the hypervisor parser to allow long lines (to upload IOS configs).
! 1552:
! 1553: 09-Oct-2006
! 1554: -----------
! 1555: - NM-16ESW: added ingress and egress port mirroring (todo: BPDU and CDP
! 1556: packets shouldn't be replicated).
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.