|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.