-
Notifications
You must be signed in to change notification settings - Fork 97
/
Copy pathChangeLog
3038 lines (2560 loc) · 99.3 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* Cisco router simulation platform.
*/
15-Aug-2005, the project is starting.
18-Aug-2005
-----------
- Added support for: sll, addu/subu.
- Fixed bugs with b... branch instructions (bad computation of new pc).
- Added patch recording for blocks.
- A sequence of MIPS instructions (without memory access instructions)
from IOS was successfully run ! (need to check correctness).
22-Aug-2005
-----------
- Implemented a basic memory subsystem with an mmaped file.
- Added memory access instructions (lb,lbu,lh,lhu,lw,lwu,ld,sb,sh,sw,sd).
- Added a cross-compiled test program.
23-Aug-2005
-----------
- Fixed slti, sltiu, slt instructions.
- Fixed memory endianness.
- Fixed host memory addressing (bad haddr computation).
24-Aug-2005
-----------
- Added a generic memory address lookup function.
- Added a minimal ELF loader.
28-Aug-2005
-----------
- ELF loader now loads files page per page.
- Added device support (with RAM support).
- Added MTS32 support for mapping of 4 Kb pages.
- Added MTS32 support for device mapping in kernel mode and generic
virtual to physical mapping (preparation for TLB).
- Added a dummy console driver.
- Added mult,multu,div,divu instructions.
29-Aug-2005
-----------
- Added a Red-Black trees module.
- Block locator uses RB tree module.
- It is now possible to run a program with multiple functions!
- ELF loader now support multiple program headers and entry point is
now used.
- Fixed x86 buffer adjustment.
- Modified console to be at the same address than c7200 DUART (to test
microcode).
- Memory access functions now update PC.
- Added sra, srl, sllv, srlv, srav instructions.
30-Aug-2005
-----------
- Added dsrl32, dsll32, dsra, dsrav, dsra32 instructions.
- Added bgtz, blez, bgez instructions.
- Fixed sltu instruction.
- ELF Entry point is now sign-extended.
- Added blezl, bgtzl instructions.
- Fixed the MIPS scanner to use unsigned 64-bits integers for addresses.
- Added unknown opcode management (basic, it just print the unhandled
opcode value and continues).
- Added cache instruction.
- Added bltzal, bltzall, bgezal, bgezall instructions.
31-Aug-2005
-----------
- Added System coprocessor (CP0) definitions.
- Added tlbr instruction.
- Added basic tlbwi instruction (doesn't change the MTS mappings now).
- Added dmfc0, dmtc0, mfc0, mtc0 instructions.
- Added TLB dump functions.
- Added dummy pref/prefi instructions.
- Added basic exception trigger.
- Added syscall, break instructions.
01-Sep-2005
-----------
- Fixed exception trigger.
- Added dmfc1, dmtc1, mfc1, mtc1, sdc1 instructions.
- Fixed the break instruction.
- Modified the memory handling to be more friendly with instructions
like sdc1 and for more safety in case of badly written device drivers.
- Added ldc1 instruction.
02-Sep-2005
-----------
- Fixed sltiu/sltu instructions that were doing signed comparisons
instead of unsigned comparisons (mis-use of jit).
- Added lwr/lwl, swr/swl, ldl/ldr, sdr/sdl, ll/sc instructions
(not tested).
- Added PCI bus management.
- Added GT64010 (PCI controller) device.
- Added DEC 21050 (PCI bridge) device.
- Added NVRAM.
03-Sep-2005
-----------
- Beginning of work on IRQs.
04-Sep-2005
-----------
- Timer IRQ should be OK.
- Added C7200 bay management and Midplane FPGA.
- Fixed the JR instruction which was broken in a case like that:
lwu k1,0(k1)
jr k1
move k1,zero
05-Sep-2005
-----------
- Fixed jalr (as jr) instruction.
- Added RAM "aliasing".
- Added SRAM management.
- Fixed NVRAM size.
- Fixed ldr, swl/swr instructions.
- Added c7200 IOcard.
- Count register is now properly handled.
- Added basic functions to set/clear interrupts.
- Modified the console driver to trigger DUART interrupt.
- IOS now starts!
06-Sep-2005
-----------
- Added "move" virtual instruction. It correspond to "addu" with rt=0.
Here it avoids an useless add.
- Added b/bal virtual instructions.
- Packed NVRAM.
08-Sep-2005
-----------
- Added Dallas DS1620 temperature sensors.
- Added voltage sensors.
- Power supplies are now faked.
- IOS Environmental Monitor doesn't try to shutdown the router anymore!
- Device list is now displayed at startup.
18-Sep-2005
-----------
- Added Address Error Load/Save, TLB Load/Save exceptions.
TODO: Branch Delay Slot management.
- Modified the default value in config register in CP0 to set appropriate
cache sizes. Now it is possible to boot compressed images directly!
- Added the teq/teqi instructions.
- Hmm, seen some IOS images (k9?) that seem to use the FPU (CP1). This
does not prevent the image to boot, but some features will probably
be not functional.
19-Sep-2005
-----------
- Tweaked the console driver to generate a dummy interrupt. It avoids
the console problems.
- Fixed the serial driver mueslix PCI vendor/device code.
- The midplane FPGA now returns voltages based on virtual PA EEPROM
presence. Up to 6 PA-8T were successfully emulated!
20-Sep-2005
-----------
- Included amd64-codegen.h with a (near empty) translator.
- Some code factorization.
21-Sep-2005
-----------
- Added CPU state save/restore on disk.
- Sending SIGQUIT to the process dumps the MIPS64 VM state on disk.
(only CPU state is saved for now).
Device state is not saved, so this does not work with booted IOS images
for now (it works for an IOS image being self-decompressing, though).
- Some code cleanups.
23-Sep-2005
-----------
- Fixed "Dirty" bit in TLB entries.
- Extended the number of TLB entries from 48 to 64.
- Added tlbp instruction.
- Modified the nmc93c46 eeprom driver to allow more than 32 bytes reading.
24-Sep-2005
-----------
- Added a symbol table loader.
26-Sep-2005
-----------
- Added support for writing in PCI registers
- Added a RAW file loader.
- Added "add" instruction (without exception support).
07-Oct-2005
-----------
- Continued work on SMP support.
08-Oct-2005
-----------
- Replaced memory operations with fastcalls instead of asmlinkage functions.
- Continued work on SMP support. Now it should be complete, except for
LL/SC instructions.
10-Oct-2005
-----------
- A lot of work on amd64 jit compiler.
- The memory management should be 64-bit compliant now.
17-Oct-2005
-----------
- Fixed a bug in SRA instruction in amd64 jit code. Dynamips is now working
on amd64!
26-Oct-2005
-----------
- Created a virtual device giving the VM parameters.
- Added command line parsing (patch from Nicolas Szalay).
- Fixed ERET instruction (LLbit clearing was lacking).
- Fixed BREAK instruction (x86/amd64).
- Fixed 2 GB limit for log file.
- Fixed clobbered registers in x86 translation.
28-Oct-2005
-----------
- Added a non-JIT mode (not completely working now)
- Added "-j" flag on the command line to disable JIT.
- Fixed some stupid bugs in shift operations.
31-Oct-2005
-----------
- Thanks to the great help of mtve, we have a working DEC21140 Ethernet
driver and now the virtual C7200 can see the real world!!!
01-Nov-2005
-----------
- Beginning of a NETIO module to handle network I/O with external world.
- Studied (a bit) the PA-8T controller on a real router.
- It is now possible to set the base MAC address of the router
using the "-m" flag.
- Improved logging
- The dec21140 code is generalized and it is now possible to have a
PA-FE-TX in any slot.
02-Nov-2005
-----------
- Fixed some problems with the NVRAM when it is empty ;
- Added a "net_io.c" module that is an abstraction layer
for network communications (TAP, Unix sockets...)
- Added the "virtual" MIPS "li" instruction which
is in fact "addiu reg,zero,value". This permits to have
a more optimized JIT code.
- Code factorization in the DEC21140 module.
- mtve (aka "Mtv Europe") sent a patch for much better console handling,
merge is planned on 03-Nov.
- Added a "PA driver" framework.
03-Nov-2005
-----------
- The console is better handled: special keys are working, and there
is a FIFO buffer to avoid character loss (added a "dev_vtty.c" module).
- Merging with Mtve patch, that cleans NETIO module and adds features
to the console.
- Added a clock divisor hack, but it is not completely working.
todo: implement a command line option for this.
08-Nov-2005
-----------
- Mtve added tcp client/server NETIO.
- The clock divisor is now working! It is set by the "-k" command line
option.
- Fixed the csr5 register handling in DEC21140 driver code.
13-Nov-2005
-----------
- A lot of cosmetic changes from Mtve.
- Modified the infrastructure to allow the use of CPU groups
that share a certain number of devices (per-CPU device array).
All device drivers have been modified to handle this.
- Took a look at LSI ATMizer II+, which is the circuit used on
PA-A3-OC3 boards. The ATMizer is based on a MIPS CPU, so it should
be possible to emulate it.
- Added a per-CPU dedicated thread.
23-Nov-2005
-----------
- The PA-A1 ATM stuff is working!!!
24-Nov-2005
-----------
- Fixed a bug in the PA-A1 driver in TX buffer chaining.
25-Nov-2005
-----------
- Address bus masking, which clears bits 32 and 33 of physical addresses.
It avoids the use of device aliasing.
- Fixed the DEC21140 TX part which was incomplete.
29-Nov-2005
-----------
- There are still bugs in big packet forwarding. This is probably the ATM
driver (added more debugging info).
- Fabien Devaux wrote a README explaining the command line options.
30-Nov-2005
-----------
- Code cleanup in the net_io module.
- Added the "ptask" (periodic tasks) module, this is mainly for TX ring
scanning of network devices.
01-Dec-2005
-----------
- Added a memory logger (FIFO of 10 accesses), this was useful to debug the
PA-A1 RX problem.
- Fixed a RX buffer chaining problem in PA-A1.
02-Dec-2005
-----------
- Added support for PA-A1 reset ("clear int", "shut/no shut").
- Optimized the IRQ handling (irq_pending flag in CPU structure
is used as a "cache").
05-Dec-2005
-----------
- Optimized the cp0 count/compare process for the x86_64 platform
(unfortunately, this doesn't work for the x86 platform).
06-Dec-2005
-----------
- Modified the NVRAM handling to allow calendar emulation ("sh calendar" is
now working).
12-Dec-2005
-----------
- Added support for the NPE-400.
- Playing with the PA-POS-2OC3 (called "Charlotte" by Cisco).
15-Dec-2005
-----------
- Added teq/teqi instructions to the x86_64 jit.
20-Dec-2005
-----------
- Added a Virtual ATM switch fabric to emulate an ATM backbone.
22-Dec-2005
-----------
- Final release for 0.2.2 train (0.2.2i).
23-Dec-2005
-----------
- Starting 0.2.3 train (0.2.3a)
- Added proper NPE-150 support.
- Added bit-bucket support (zeroed memory zone).
- Added NPE type selection.
24-Dec-2005
-----------
- Added beginning of support for NPE-300 (endianness problems with PCI
controllers ?)
28-Dec-2005
-----------
- Fixed the endianness problem with the NPE-300.
- Added NPE300-IO-FE.
31-Dec-2005
-----------
- Added CLI option to load a symbol file.
- Moved JIT code from dynamips.c to mips64_jit.c
- Added support for NPE-100.
- Updated the README file for NPE type selection.
- Suppressed the annoying message "%%Error: Unrecognized I/O card in bay 0"
03-Jan-2006
-----------
- The bit clearing in physical addresses was done stupidly.
Only the bit 33 is used to bypass L2 caching.
Re-introduced SRAM aliasing.
PHY address 0x100000000 is in fact for PCI I/O space.
- Began to play with the Cirrus Logic PD6729.
- Added Bootflash based on Intel 28F008SA chips (1 Mb)
- Fixed the alignment error occuring with "show version".
04-Jan-2006
-----------
- Better understanding of Flash SIMM register with bank number and bank
size: modified the Flash SIMM code to handle a 8 Mb flash in 1 bank
(emulation of Intel 28F016SA chip) which should be sufficient to store
crashinfo files or misc files like configs,...
- Added ROM remote logging capabilities (with remote emulator control).
05-Jan-2006
-----------
- Integrated HEC and AAL5 field computation functions found at:
http://cell-relay.indiana.edu/cell-relay/publications/software/CRC/
(Author is Charles Michael Heard).
- Added HEC field management to the virtual ATM switch fabric.
- Added HEC and AAL5 CRC fields to the TX part of the TNETA1570 driver.
06-Jan-2006
-----------
- Added block timestamping, to evaluate use of JIT blocks and eventually
enhance algorithm of block classifying.
- Added a flag to the virtual devices to prevent use of MMAPed zones
by MTS (used by NVRAM driver).
- Added functions to extract IOS configuration from NVRAM.
Pressing "Ctrl-] + c" nows write configuration to disk at any time.
08-Jan-2006
-----------
- Added support for PEM (NPE-B) EEPROM. It will probably allow support
of NPE-175/NPE-225.
09-Jan-2006
-----------
- Added support for NPE-175/NPE-225 and added NPEB-IO-FE.
10-Jan-2006
-----------
- Enhancements to the remote console over TCP port.
- Port to the Cygwin environment, allowing the emulator to run on Windows
machines!
11-Jan-2006
-----------
- Added a feature to push an IOS configuration into NVRAM ("-C" command line
option).
- Added enhanced checks to the NVRAM config export.
- Added a variant of udp_connect() function for systems that do not support
RFC 2553.
- Added support for AUX port (TCP port).
12-Jan-2006
-----------
- Better memory logger.
- Added breakpoint capabilities.
- Fixed a segfault occuring on some IOS images with x86_64 JIT.
(modified the minimum remaining size in JIT buffer adjustment).
13-Jan-2006
-----------
- The ROM is now embedded in the source code (added an utility to convert
ELF file to C code). It is possible to use an alternate ROM using the
"-R" option.
- Enhanced the MTS lookups to allow use of embedded ROM for code execution.
15-Jan-2006
-----------
- Added PCI I/O space management.
- Added a fake Cirrus Logic PD6729 PCI-to-PCMCIA host adapter.
- Cleanups in NPE initialization code.
- Fixed some bridge problems with the NPE-300.
- Code factorization in the C7200 initialization module.
- Generalization of C7200-IO-FE driver for all NPE types.
- Added Fault History support.
- Added chassis selection (standard or VXR)
- Finally found the bug in the non-jit emulation code! It was a cast problem
in mult/multu instructions.
16-Jan-2006
-----------
- Added generic hash tables.
- Added "instruction lookup tables" (ILT), which greatly improve performance
of non-JIT mode.
- Added instruction statistics for the non-JIT mode ("Ctrl-] + j")
17-Jan-2006
-----------
- Added a port for non-x86 hosts. The emulator ran successfully on a
Tru64 Unix box (Alpha CPU)! It should also be able to compile and run
on MacOS X (PowerPC).
24-Jan-2006
-----------
- Added support for DMA channels on Galileo GT64k controllers since it seems
that they may be used by IOS (NPE-400 for sure, other NPE?).
25-Jan-2006
-----------
- Added Linux Raw Ethernet driver to the NetIO infrastructure.
- Hmm, I'm probably missing something in the DMA/SRAM interaction and
endianness...
26-Jan-2006
-----------
- The DMA problem is finally fixed, in fact the SRAM can be accessed with
byte-swapping.
- Added an unicast limiter to the DEC21140, to receive only trafic directed
to the virtual machine (+ multicast/broadcast). This is done by analyzing
the setup frames (MAC address filter).
27-Jan-2006
-----------
- The Linux Raw Ethernet driver needs promiscuous mode to be enabled to
receive appropriate packets, added the required code.
- Added endianness definitions, and replaced hton[sl]/ntoh[sl] by the new
definitions (for exchanges between VM and host).
28-Jan-2006
-----------
- Added parser infrastructure.
29-Jan-2006
-----------
- Added a virtual bridge system.
- Release 0.2.3b
31-Jan-2006
-----------
- Fixed a stupid bug in DMA handling, which in certain conditions can
cause an infinite loop.
01-Feb-2006
-----------
- Added an "instruction block hash" which avoids lookups in the instruction
red-black tree. The IBH table takes only 16 Kb of memory.
- Added CRC-12 and CRC-16 functions for future use.
- Added a "gen_eth" NetIO driver, which allow to access ethernet interfaces
in a portable way (tested on Linux and Cygwin).
- Fixes to the PowerPC build on Darwin thanks to Olivier Cahagne.
- Minor cosmetic changes to display supported/unsupported PA and NPE.
- Release 0.2.3c
06-Feb-2006
-----------
- Added working Serial interfaces (PA-4T+) !
- Bug: CDP not working with serial interfaces ("debug cdp events" reports
a checksum problem).
07-Feb-2006
-----------
- Started the 0.2.4 release.
- Modified the command line parser to allow many NIO per PA (for example
for serials).
- A lot of code cleanups in the C7200 initialization.
- Added PA-8T support.
- To fix: CDP with Serial interfaces: using cp_len (instead of cp_len+4)
in packet rx fixes the problem but breaks IP. Probably something related
to padding, see how a CDP packet is sent (special flag in tx ring ?)
- Added virtual "beqz" instruction.
- Added the "-X" option, allowing to use host memory directly instead of
mapping a file to simulate RAM (faster).
- Beginning of code reorganization to allow multiple instance contexts.
08-Feb-2006
-----------
- Added a basic virtual Frame-Relay switch. Unfortunately, LMI must be
implemented to maintain links up.
- Finally found the problem related to CDP! It was simply a padding problem.
09-Feb-2006
-----------
- Add support of promiscuous mode for the DEC21140 "unicast limiter":
promiscuous mode is used in bridging configurations.
- Fixed another bug with the serial interfaces: it seems that there is
a "length substractor" for the txring.
10-Feb-2006
-----------
- Played a little with the PA-POS-OC3, without success.
14-Feb-2006
-----------
- Finally implemented the basic LMI stuff (only ANSI Annex D). Fortunately,
IOS rocks and uses auto-detection, so no extra configuration is needed.
- Integrated a Makefile patch from Max Khon for FreeBSD.
- Updated documentation.
- Release 0.2.4.
15-Feb-2006
-----------
- Fixed a cosmetic bug when displaying MAC address at startup.
- Fixed a stupid bug in "srav" instruction in x86_64 JIT code. The
arithmetic shift operation was done on a 64-bit basic instead of 32-bit,
causing bad propagation of the sign-bit.
- Added support for multiple instances (no CLI present yet).
17-Feb-2006
-----------
- Fixed 2 bugs in Frame-Relay switch: a crash occured when receiving
a packet gave an error, and if many DLCI with the same ID on different
interfaces were used, only one was announced on one interface.
18-Feb-2006
-----------
- Began work on advanced configuration parsing (instances).
19-Feb-2006
-----------
- Is the count/compare mechanism pertinent ?
23-Feb-2006
-----------
- Continued work on advanced config parsing (instances,NIO).
- Added registry infrastructure.
- Fixed some mistakes in documentation.
28-Feb-2006
-----------
- Continued work on advanced config parsing (NIO).
- Added an IRQ counter.
- Continued debugging on recurrent crashes problem.
- Added proper checks to mts32_raw_lookup (at least it avoids the
coredump...)
- Added display of all CP0 registers (except TLB).
02-Mar-2006
-----------
- Hardened a little the IRQ subsystem, but this doesn't fix the problem.
- Added a debugging mode to track jumps to address 0 (x86_64 only!).
- Fixed the teq/teqi instructions in amd64/x86 modes that were buggy.
04-Mar-2006
-----------
- Added some assembly optimized routines for x86 hosts.
- Fixed a stupid bug in mts32_raw_lookup (op_size and op_type were
swapped).
06-Mar-2006
-----------
- Added Unix and Null NETIO types for config files.
- Fixes for incorrect behavior in virtual memory access routines, in
case of exception.
08-Mar-2006
-----------
- Removed the configuration file parsing, in favor of a remote control
system for use with the dynagen project.
09-Mar-2006
-----------
- Added basic hypervisor infrastructure.
- Added basic NIO code to the hypervisor commands.
10-Mar-2006
-----------
- Added the hypervisor NIO code.
- Added Frame-Relay and ATM switches to the hypervisor commands.
11-Mar-2006
-----------
- Played (successfully) with OIR (Online Insertion and Removal). OIR
will require device deletion...
12-Mar-2006
-----------
- Fixed EEPROM code which used global variables.
- Added the necessary code for basic OIR.
- Added PCI device removal.
15-Mar-2006
-----------
- A lot of work on C3600 integration (although it is not functional).
- Added a basic ns16552 driver.
17-Mar-2006
-----------
- Added some hypervisor commands for PA setup and OIR.
20-Mar-2006
-----------
- Hardened the Mueslix driver: after OIR, a "no shut" on a new interface
crashed the virtual router. Now, IRQ status is managed appropriately.
24-Mar-2006
-----------
- Added ptask (periodic task) removal.
- Added a basic (nearly empty) C3600 IO FPGA chip.
25-Mar-2006
-----------
- Added a NIO RX multiplexer.
- Added NIO unset operation for PA.
26-Mar-2006
-----------
- Modified the virtual ATM/Frame-Relay switches and NIO bridge to use
the new NIO RX multiplexer.
- Added the NIO bridges to the hypervisor commands.
- Fixed a stupid bug in hypervisor ATM/FR switch command, the VC were
badly parsed.
- Fixed a memory leak in the hypervisor module (tokens not freed).
27-Mar-2006
-----------
- Added appropriate locks to the ATM and Frame-Relay switches.
- Added VC removal for ATM and Frame-Relay switches.
28-Mar-2006
-----------
- Added registry management to the ATM/FR switches and NIO bridge.
30-Mar-2006
-----------
- Added a refcount system to the NIO RX multiplexer.
31-Mar-2006
-----------
- Added NIO removal for NIO bridges.
- Added NIO bridge removal.
- Modified the NIO bridge code to use the registry infrastructure.
- Same as above, for ATM and Frame-Relay switches.
03-Apr-2006
-----------
- Added the required infrastructure for online removal.
- Added hypervisor commands for PA removal and to display C7200 hardware.
- Fixed a bug in PCI device removal.
- It's now possible to change cards on the fly!
- The Mueslix driver was incorrectly modified: the TX ring scanner must
run even if the NIO is not defined.
- Modified the DEC21140 driver to report a Link Down when the NIO is not
defined.
04-Apr-2006
-----------
- Added packet dump (for debugging) to NetIO receive/send operations.
08-Apr-2006
-----------
- The SMP bug seems to be fixed! The irq_cause field is now manipulated
atomically (inline asm for x86 and x86_64, pthread mutex on other
machines).
12-Apr-2006
-----------
- Added a VM abstraction layer (for different platforms).
- Fix of X86 assembly file for Cygwin.
- The IOS config file is now saved with a specific filename from the
VM instance.
13-Apr-2006
-----------
- Added per-instance logfile.
14-Apr-2006
-----------
- Fixed a stupid bug in non-JIT mode with IRQs.
17-Apr-2006
-----------
- bugfix: "null" NIO creation didn't record the NIO in registry.
- bugfix: mueslix logging.
- bugfix: adding an NIO to the RX listener list (bad double linked-list)
- bugfix: bad fgets() use in NIO bridge and ATM/FR switches.
18-Apr-2006
-----------
- bugfix: the same NIO could be recorded many times in the NIO RX
multiplexer due to bad design in NIO adding.
19-Apr-2006
-----------
- Beginning of work on AMD Am79c971 ethernet controller (used by PA-4E
and PA-8E).
20-Apr-2006
-----------
- The emulation of AMD Am79c971 seems to be working very well.
- Modified the physical memory dump function to use the VM log file.
21-Apr-2006
-----------
- Modified the PA-4E/PA-8E EEPROM definitions to work with VXR midplanes.
- PA-4E is now usable.
23-Apr-2006
-----------
- Added "shutdown" operation for PA-4E/PA-8E drivers.
24-Apr-2006
-----------
- Enhanced lock file management (with POSIX locks).
- The devices are now dependent from VMs instead of being dependent
of CPU groups. This makes a lot of things cleaner.
27-Apr-2006
-----------
- Added IRQ clearing with GT64K (DMA transfers).
- Study of GT64120 controller to understand address decoding process.
28-Apr-2006
-----------
- Fixed a bug with NPE-175/NPE-225 PEM EEPROM selection.
- The NPE-400 is now able to support 512 Mb of DRAM! (the supplemental
memory is in fact considered as IO memory)
- Added a safety check with RAM size.
- The CPU identifier (PRID register) is now fixed depending on the NPE
board.
01-May-2006
-----------
- Modified device subsystem to order devices by physical addresses,
optimized dev_lookup/dev_lookup_next.
- Added infrastructure for various object cleanup.
- Added "shutdown" code for SRAM, NVRAM, Bootflash, Zero, remote control
devices.
- Added CPU deletion support (incomplete).
02-May-2006
-----------
- Added PCI bus removal.
- Added "shutdown" code for GT64010 and GT64120.
- Added CFC0/CTC0 instructions (R7000) and handling for associated
registers. TODO: customized vector spacing.
04-May-2006
-----------
- Introduction of the new MTS64 subsystem!
- Note: incorrect uses of assert(), especially in insn_lookup.c module.
05-May-2006
-----------
- Added a free list of chunks for MTS64 + some basic optimizations.
- Added basic PCI/HT stuff for SB-1 processor (dev_sb1_pci.c module).
- Added AP1011 (Sturgeon HyperTransport-PCI Bridge) device.
- Fixed masks for MFC0/MTC0 instructions, and added new definition for MFC0
to access set 1.
- Fixed incorrect uses of assert().
07-May-2006
-----------
- Modified the console handling to be more efficient.
- Added global invalidation of the MTS64 cache.
08-May-2006
-----------
- Added selective invalidation of the MTS64 cache (for TLB management).
- Added MTS64 statistics.
- Modified the MTS64 hash settings. Origin: shift: 12, hash_bits: 16.
Replaced by shift: 16, hash_bits: 12 -> more efficient and consumes
less memory! (logical since IOS uses large TLB entries).
- Modified cp0 module to use an abstraction layer for MTS access, allowing
32 or 64 bit modes.
09-May-2006
-----------
- Fixed MTS64 on x86_64 machines.
- The clock divisor can now be set per VM and with an hypervisor command.
10-May-2006
-----------
- Added "shutdown" code for RAM and ROM devices.
- Added VM object dump ("Ctrl-] + o")
11-May-2006
-----------
- Bugfix: missing initialization of the address length parameter of accept()
in the main hypervisor module.
- Bugfix: missing initialization of registry memory pool (noticed with
Valgrind).
- Added NPE and midplane selections to the hypervisor.
12-May-2006
-----------
- Added NIO deletion to the hypervisor.
- Fixed status message in hypervisor for object deletion.
- Added "sub" instruction (without exception support).
14-May-2006
-----------
- Fixed CPU state change. It is now possible to reboot at any time using
"Ctrl-] + k".
- Added VTTY deletion.
- Added "c7200 stop" command to the hypervisor (not finished).
- The memory-mapped devices of port adapters are now enabled dynamically,
depending on the PCI BAR (Base Address Registers) settings. This avoids
use of hardcoded values.
- Integrated a patch from Philipp Brenner, which fixes ELF loading problem
on Cygwin when default text file type is set to DOS. Many thanks to him.
(symptom was: "load_elf_image: elf_begin: I/O error: raw read")
15-May-2006
-----------
- Added "c7200 set_config" and "c7200 set_mac_addr" hypervisor commands.
- Fixed a stupid bug in PCI bus removal.
- Added more complete shutdown code.
16-May-2006
-----------
- Fixed uninitialized MTS64 allocated entries (seen with Valgrind).
- Added missing unmapping of memory-mapped files (reported by Greg).
- The VTTY shutdown doesn't close stdin anymore (causing terminal
problems at exit).
- Fixed the shutdown procedure, added VM_STATUS_SHUTDOWN as status
for a VM. Adapted the virtual CPU synchronization.
17-May-2006
-----------
- Some basic work on the hypervisor main modules (cleanup).
19-May-2006
-----------
- bugfix: base MAC address setup broken (reported by Greg).
- Added global deletion of: ATM/FR switches, NetIO bridges, NetIO
descriptors, C7200 instances ...
- Added "hypervisor reset" command to go back to a clean state.
20-May-2006
-----------
- Modified the CPU synchronization system which was not working correctly.
21-May-2006
-----------
- bugfix: NIO unset in PA-4T+/PA-8T driver.
- Added C7200 PA cleanup code.
22-May-2006
-----------
- Better handling of PA/NIO removal.
- Base MAC addresses are now generated automatically if not specified.
("cafe.<instance_id>.0000")
23-May-2006
-----------
- Added "VDE" NetIO type to connect to UML switches / Virtual Distributed
Ethernet switches.
- Some cleanups in NetIO code.
- Added shutdown code for MTS32/MTS64 (not used yet).
24-May-2006
-----------
- Minor optimizations for non-JIT mode.
- bugfix: crash when dumping instruction block tree (JIT).
- Some memory leak fixes (again with Valgrind, definitely this tool rocks).
TOFIX: * clpd6729 + PCI I/O space (to check carefully).
* IO/supplemental memory created with dev_create_ram().
- Use of MTS shutdown code.
25-May-2006
-----------
- The compressed IOS images were not booting anymore: fixed the MIPS config
register at startup (reported by Davide Brini).
- Minor code cleanup for MIPS CPU reset.
- I/O and supplemental memory are now created with dev_ram_init().
- bugfix: in PA shutdown code, the driver shutdown operation was called
even if the driver was not initialized.
- bugfix: order of memory freeing in c7200_free_instance() wasn't good,
producing a segfault (seen on windows machines).
26-May-2006
-----------
- Played with the PA-POS-OC3 driver, it seems that it is working. Need
to check if the TX ring guess is correct (ie, with "routing" conditions).
27-May-2006
-----------
- PA-POS-OC3: Fixed the TX ring part to work with multiple buffers. There
is still a problem with buffer addresses (doesn't work with platforms
using SRAM).
29-May-2006
-----------
- Playing with ISDN emulation (PA-4B), and Munich32 chip. Interfaces
are only visible for now.
30-May-2006
-----------
- Moved VM lockfile deletion to VM instance freeing function.
- Ugly hack to allow the POS driver to work with SRAM-based platforms.
- Added support for "VDE" NIO in hypervisor.
- Beginning of hypervisor documentation (README.hypervisor).
31-May-2006
-----------
- Removed "c7200 trigger_oir" hypervisor command which was redundant.
01-Jun-2006
-----------
- bugfix: fixed some reference counting leaks with default ATM and
Frame-Relay switches and NIO bridge.
- bugfix: DLCI were not announced in ascending order in LMI packets.
- studied a bit how to use larger bootflash sizes.
02-Jun-2006
-----------
- DEC21140: Added multicast flag management for received frames.
- Debugging of ISL problem reported by Valentin.
- Added CRC-32 functions to the appropriate module.
03-Jun-2006
-----------
- ISL is now working with DEC21140. It seems that to handle ISL, another
chip (FPGA ?) is present on PA-FE-TX and C7200-IO-FE to add the second
FCS field.
- Added basic disassembly code (need to do something more generic).
04-Jun-2006
-----------
- Added virtual instruction "bnez" (basic optimization).
- Added RM7000 "mul" instruction (not tested).
- Added teq/teqi instructions to non-JIT mode.
05-Jun-2006
-----------
- Added output packet exclusion to PCAP module (not possible with WinPCAP
though).
- Enhanced packet filtering in dec21140 emulation (for Windows users).
- bugfix: stupid cast problem in bootflash code preventing proper unmapping.
(seen with /proc/<pid>/maps on Linux).
- Added debugging message for device removal.
- bugfix: memory not freed / file not closed with ELF loader.
- bugfix: config register keeping the "ignore config" flag between instance
reloads.