Annotation of cf/ChangeLog, revision 1.1.1.5

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.