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
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
20 No decisions about this yet.
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
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
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
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.
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
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
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
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 :
100 --with-cpu-pentium-mmx
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
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.
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).
126 8. Random thoughts on disk emulation improvements :
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.
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.
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.
148 The pnic device is present in CVS, but the status is unknown.
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
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.
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
168 The new version 0.6a of the LGPL'd VGABIOS has minimal support for the video
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.
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.
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
202 The config options handling has been rewritten to a parameter tree.
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
214 17. lowlevel serial support for Windows.
215 Volker is currently working on this.
217 Not yet complete (transmit works, receive is losing data).
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.
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.
238 There is some progress, but still a lot of work to do.
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
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.
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