- added release tag for 2.3.7 to user doc
[bochs-mirror.git] / TODO
blobb165125a3044df1490ef4355f872f3756f06360e
1 This is the "roadmap" posted in the mailing list, augmented by
2 comments from the mailing list and the irc chat.
3 Anybody is welcome to work on any of these issues. Some of
4 these items are rather simple and can be implemented by single
5 individuals. Other items are quite complex and development needs
6 to be coordonated. So, if you want to contribute, please drop
7 us a note in the mailing list, so you can get help or exchange
8 ideas.
9 Christophe Bothamy.
11 0. Donations
12 Source Forge recently set up a donation system for hosted projects.
13 Should we accept donations ? What could we do with the money ?
14 - give to EFF, FSF or other
15 - fund Kevin to continue the work on plex86 so we can use it
16 - bounties for somebody write optimized win9x/NT/XFree/linux/*BSD
17   drivers for our vga/net/ide cards
18 - other ?
19 Status in Bochs 2.3:
20 No decisions about this yet.
22 1. Speed
23 Speed (well lack of) is one of the biggest criticism made by users
24 who'd like to see Bochs run as fast as Virtual PC.
25 Paths we can explore to get more speed :
26 4.1 virtualization : plex86
27 4.2 dynamic translation : qemu, patch from h.johansson
28 Status:
29 Some work has been done for Bochs 2.3.6 but still long way is ahead.
31 2. Plugin architecture
32 2.1 The plugin architecture can be reworked if we want to support
33 multiple similar devices like seral net or vga cards.
34 We currently have two "types" of plugins: "core" and "optional".
35 Maybe we could add "classes" of plugins. The current version of
36 Bochs supports the classes "display_library" and "io_device".
37 New classes can be "config_interface", "net_lowlevel" and
38 "sound_lowlevel"
39 2.2 Stanislav wrote :
40 Plugin architecture should be rewritten like real plugin architecture s.t.
41 Bochs VGA plugin for example will be real plugin. I mean that replacement
42 of plugin dll in already compiled Bochs will replace Bochs VGA card and
43 the new card will be detected automatically.
44 This will allow for example developing of plugins separately from Bochs.
45 2.3 Michael Brown wrote :
46 If the configuration interface is to be reworked, could we also make it so
47 that plugins are self-contained, rather than needing to pollute config.cc
48 with code for defining and parsing plugin-specific options
49 Status:
50 A little bit of the basic work is done now: The config parameter handling has
51 been rewritten to a parameter tree and user-defined bochsrc options are now
52 supported. The main plugin architecture rewrite is not done yet.
54 3. PCI host<->guest proxy
55 Being able to use a real pci device from inside Bochs would be a
56 great feature of Bochs. It would ease reverse engineering of non
57 documented cards, or one could even use a real spare vga card.
58 Frank Cornellis has done a great job on this subject, and we began
59 integrating his changes.
60 Status:
61 The pcidev device is present in CVS and it has been updated for the new PCI
62 infrastructure, but the new code is untested yet.
64 4. Subdirectories in iodev
65 The iodev directory contains the various implemented iodevice.
66 With the new pci devices, new harddrives and new net access methods,
67 it could be interesting to add new subdirectories like :
68 iodev/video/... --> for standard vga and new card emulation
69 iodev/disks/... --> for the ata/atapi classes, hd/cd classes and host accesses
70 iodev/net/...   --> for ne2k and host net access
71 isa and pci devices would be mixed in the directories, but this should
72 be manageable.
73 Status:
74 Not done yet.
76 5 multithreading. Conn Clark wrote :
77 Threading might be nice too, for those of us who have SMP/SMT machines.
78 I have a patch from Mathis (who hangs out on the IRC channel all the
79 time) that puts the video card interface in its own thread. It has
80 troubles though that I have not resolved. It may also be easier to debug
81 a threaded peripheral.
82 I also think that it might be possible to thread a chunk of the CPU
83 emulation to improve performance on a SMP/SMT machine. Specificaly
84 write_virtual_dword, write_virtual_word, write_virtual_byte, etc...
85 might just be able to be threaded. I think the threading overhead might
86 be less than the protection and address translation code. We would have
87 to try it to find out. I'm also sure there can be some nasty hurdles to
88 overcome.
89 Status:
90 Third party proup started a para-Bochs project exacly to reach above goals,
91 some beta version is already released.
92 The home page of the project: http://grid.hust.edu.cn/cluster/VirtualMachine/index.html
94 6. CPU
95 6.1 This was asked in the ml, and I believe it's a good idea to provide
96 a configure switch to set the cpu model, for example :
97 --with-cpu-386
98 --with-cpu-486dx
99 --with-cpu-pentium
100 --with-cpu-pentium-mmx
101 --with-cpu-k6-iii
102 --with-cpu-amd64
103 and so on. The main difficulty here is to set up the list of features
104 by cpu model. I started such a list, available at
105 http://cbothamy.free.fr/projects/bochs/CPU_Features.sxc
106 The configure script will then set up constants on features to compile in,
107 ISA, FPU, MMX, 3DNOW, SSE, etc... Most of the feature flags already
108 exists in config.h, so this should be easy. It would also be a good
109 idea to clean up the cpuid function beased on those flags.
110 We also have to keep in mind that some features are also enablable
111 by the guest os.
112 Please note the all features are still not supported/complete in Bochs.
113 6.2 Stanislav thinks that configure --with-cpu-pentium-mmx --enable-cpu-level-4
114 would create lots of conflicts in the generated config.h. He suggests
115 that we should write an external GUI configure script that would propose
116 standard or custom cpus and would detect conflicts.
117 Status:
118 Not done yet.
120 7. VGA
121 For SVGA emulation we have Bochs VBE and the Cirrus adapter. We should have
122 a look at the voodoo3 (specs http://v3tv.sourceforge.net/docs.php).
123 Status:
124 Not done yet.
126 8. Random thoughts on disk emulation improvements :
127 8.1 lba48 support
128 8.2 autodetection of disk size / geometry
129 8.3 uml cow disk image support
130 8.4 compressed disk image support
131 8.5 extend redolog-disk specification to add coherency check of the flat
132 image file, by storing its fstat-mtime field in the redolog.
133 Status:
134 Autodetection now works for all image types created with bximage and vmware3
135 images. LBA48 and vmware4 disk images support was added in Bochs 2.3.5 release.
136 The other items are not done yet.
138 9. net
139 9.1 bootable ethernet rom ?
140 see etherboot, Micheal Brown wrote :
141 This already works; you can build an Etherboot rom image with the pnic
142 driver, specify it as an option ROM in bochsrc and it will boot.  I'm
143 using this extensively at the moment in Etherboot development.
144 In the Etherboot project's CVS, in the contrib/bochs directory, you can
145 find a working bochsrc file and an up-to-date README with step-by-step
146 instructions on getting this working.
147 Status:
148 The pnic device is present in CVS, but the status is unknown.
150 10. Bios
151 10.1 our bios is quite heavy on stack space (notably during int13 functions).
152 Some parts can be rewritten in assembler, to save stack space and
153 make code smaller.
154 Status:
155 New BIOS supporting ACPI was introduced in Bochs 2.3.5 release.
157 10.2 add "jump table placeholder" and log missing function calls in the bios.
158 Check completness with Ralf Brown interrupt list.
159 Status:
160 Not done yet.
162 11. LGPL VGABios
163 11.1 Video parameters table
164 There is a very nice parameter table in 3dfx banshee document
165 http://www2.lm-sensors.nu/~lm78/pdfs/Banshee_2d_spec.PDF
166 see also http://www.xyzzy.claranet.de/dos/vgacrt.c
167 Status:
168 The new version 0.6a of the LGPL'd VGABIOS has minimal support for the video
169 parameter table.
171 12. Optimized Guest drivers still needed : VGA, IDE, NET
172 We have a specific VGA driver for winNT/2K, but still
173 lack drivers for other OSes.
174 Status:
175 Not done yet.
177 13. USB support
178 Ben Lunt has been working on USB support. The USB mouse and keypad code
179 is present in Bochs and almost stable. USB flash disk support has been
180 started and the runtime device change support should be completed.
181 Status:
182 Under construction.
184 14. Config file and dynamic menu
185 14.1 Benjamen R. Meyer wrote :
186 I think we should rework the .bochsrc file to be more standard across all
187 devices. I like how the USB configuration is done in it, and think we should
188 put something similar together for everything else. In otherwords, create
189 something that can be easily used for everything, and make it easier to
190 configure in the process.
191 From what I can tell right now, most of the configuration lines are randomly
192 thrown together as each gets implemented or added, instead of having
193 something that is based on a standard approach to the configuration.
194 The result should be something that would be able to easily auto-configured
195 by another program (a configuration editor?) with minimal changes necessary
196 when new devices/features are added.
197 14.2  Franck Cornelis wrote : the config system needs some work...
198 e.g. the main menu is static while it could be generated at run-time...
199 the main menu text lives somewhere in a file... while it should be generated
200 at run-time by iterating the main menu objects
201 Status:
202 The config options handling has been rewritten to a parameter tree.
204 15. Save/Restore
205 Save/restore of config and log options and the hardware state is supported
206 in all Bochs configurations. Harddisk images are not handled yet.
208 16. add to the roadmap that we should find some ideas to check
209 correctness of instructions emulation, especially system instructions.
210 arithmetic instructions could be validated with simply random testing
211 Status:
212 Not done yet.
214 17. lowlevel serial support for Windows.
215 Volker is currently working on this.
216 Status:
217 Not yet complete (transmit works, receive is losing data).
219 18. Parallel port
220 Conn Clark wrote :
221 I would like to see better parallel port support so I can use a dongle.
222 This is something I would find very useful as it would mean I wouldn't
223 have to boot back into windows ever again. I also recognize that this
224 may require a kernel module be written, which is beyond my current
225 skills.  I know others will find this useful as I have had to tell a
226 few people that their parallel port driven peripherals that require a
227 bidirectional parallel port won't work.
228 Status:
229 Not done yet.
231 19. Patches / Bug reports
232 There are dozens of patches floating around. Some are outdated,
233 don't apply cleanly, are obsolete/unneeded. We could try to do
234 some clean-up, and keep only relevent ones.
235 We should also clean up the SF bug tracker. Some bugreports are
236 very old and we asked for more information with no response.
237 Status:
238 There is some progress, but still a lot of work to do.
240 20. Positions
241 If you want to help without coding, here are available positions :
242 20.1 Webmaster : update website (Jan Bruun Andersen offered to help)
243 22.2 patch coordonator : look at incoming patches (sourceforge and
244 mailing list) and upload / update in the cvs patches directory.
245 20.3 platform maintainers for macos / win32
246 20.4 disk image maintainer : create and maintain our collection
247 of disk images. Usually, only the configuration file needs to be
248 updated, and old bios files have to be removed.  Some packages
249 still contain very old bios files, they should definitely have
250 to be removed.
251 Status:
252 More active developers are needed to do the things described above.
254 21. Bochs demo cd/dvd
255 With version 2.1, it is now technically possible to use disk images
256 on a read-only media, with a journal files on a read/write media.
257 It would be great to create a demo cd/dvd with executables for
258 supported platforms, configuration files and read-only disk
259 images, the journal files would be written in a temporary
260 directory on the harddisk.
261 Status:
262 Not done yet.
264 22. Other CPU architectures : arm, ppc
265 This has been asked in the mailing list. I'm not really
266 interested, but other people might be. Should we propose to
267 host the new CPUs code in our source tree, or should we let
268 people fork ?
269 Status:
270 Not done yet.