|
|
1.1 root 1: /* 1.1.1.6 ! root 2: * Cisco 7200/3600 simulation platform. 1.1 root 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). 1.1.1.6 ! root 1557: ! 1558: 10-Oct-2006 ! 1559: ----------- ! 1560: - 0.2.6-RC1 release. ! 1561: - NM-16ESW: implemented ARL count. Fixed the MAC address table display ! 1562: problems. ! 1563: ! 1564: 11-Oct-2006 ! 1565: ----------- ! 1566: - C3600: fixed NVRAM configuration export. ! 1567: - Merged a patch for Solaris/x86 from Damjan Marion. ! 1568: - Cleaned the EEPROM stuff to have something more generic. ! 1569: - NM-16ESW: base MAC address is now automatically generated. ! 1570: ! 1571: 12-Oct-2006 ! 1572: ----------- ! 1573: - NM-16ESW: added support to discard input packets. ! 1574: ! 1575: 13-Oct-2006 ! 1576: ----------- ! 1577: - NM-16ESW: modified the discard support to let BPDU packets arrive to ! 1578: the CPU. ! 1579: - Added online setup of idle-pc through the hypervisor command ! 1580: "vm set_idle_pc_online <vm_name> <cpu_id>". ! 1581: - Values computed for idle-pc are now stored in the virtual MIPS CPU ! 1582: and can be known through the hypervisor command ! 1583: "vm show_idle_pc_prop <vm_name> <cpu_id>". ! 1584: ! 1585: 15-Oct-2006 ! 1586: ----------- ! 1587: - Added a timer module. ! 1588: - NM-16ESW: added an ARL ager that removes expired MAC addresses. ! 1589: ! 1590: 18-Oct-2006 ! 1591: ----------- ! 1592: - Added hypervisor commands to tune idle-pc parameters ! 1593: ("vm set_idle_max" and "vm set_idle_sleep_time"). ! 1594: - Centralized NM/PA EEPROM to have common definitions for platforms ! 1595: with the same type of network interfaces. ! 1596: - 0.2.6-RC2 release.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.