2011-11-28

Bochs v2.5 Final

EmuCR:Bochs Bochs v2.5 Final is released. Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS. Currently, Bochs can be compiled to emulate a 386, 486, Pentium/PentiumII/PentiumIII/Pentium4 or x86-64 CPU including optional MMX, SSEx and 3DNow! instructions.

Bochs is capable of running most Operating Systems inside the emulation including Linux, DOS, Windows® 95/98 and Windows® NT/2000/XP or Windows Vista. Bochs was written by Kevin Lawton and is currently maintained by this project.

Bochs can be compiled and used in a variety of modes, some which are still in development. The 'typical' use of bochs is to provide complete x86 PC emulation, including the x86 processor, hardware devices, and memory. This allows you to run OS's and software within the emulator on your workstation, much like you have a machine inside of a machine. For instance, let's say your workstation is a Unix/X11 workstation, but you want to run Win'95 applications. Bochs will allow you to run Win 95 and associated software on your Unix/X11 workstation, displaying a window on your workstation, simulating a monitor on a PC.

Bochs v2.5 Final Changelog:
Changes in 2.5 (November 27, 2011):

Bochs repository moved to the SVN version control !Brief summary :

! Fully configurable CPU to emulate with a single .bochsrc option !
- 10% (ST) to 50% (SMP) CPU emulation speedup !
- Implemented support for new x86 ISA extensions, Bochs is aligned with
latest published Intel Architecture Manual (rev 040, AVX rev 011):
- XSAVEOPT, AVX/AVX2/FMA/F16C, BMI1/BMI2, SMEP, INVPCID, TSC-Deadline
- VMX: VMX Preemption Timer, Pause Loop Exiting and VM Functions
- Implemented support for AMD SSE4A/XOP/FMA4/TBM instruction sets
- Networking: introduced new networking module 'slirp'
- Harddrive: fixed buffer overflow causing Bochs crash in LBA48 mode
- VGA: Added PCI ROM support to cirrus and pcivga and moved ROM loading
for the ISA case to the vga code (SeaBIOS now usable by Bochs)
- Sound: ported ES1370 soundcard emulation from Qemu
- Continuing configure rework, check for more removed configure and .bochsrc
options and their replacements !
- LGPL'd VGABIOS updated to version 0.7a

Detailed change log :

- CPU
- Now you can configure CPU to emulate using a single .bochsrc option !
The option selects CPU configuration to emulate from pre-defined list
of supported configurations. When this option is used, Bochs CPU emulation
engine is automatically configured to emulate a specific real hardware CPU,
including exact CPUID matching reference hardware. Check .bochsrc example
or check user manual for list of supported configurations and more details.
* It is also possible to choose the CPU to emulate from Bochs command line
using command line interface to .bochsrc: "cpu::model "
* Query for supported CPU models using command line option: -help cpu.

- 10% emulation speedup with handlers chaining optimization implemented. The
feature is enabled by default when configure with --enable-all-optimizations
option, to disable handlers chaining speedups configure with
--disable-handlers-chaining
- New way of CPUs scheduling in SMP mode brings up to 50% speedup to the
SMP emulation. New implementation uses dynamic CPU quantum value and takes
full advantage of the trace cache. Each emulated processor will execute
the whole trace before switching to the next processor.
* It is also safe to use large (up to 16 instructions) quantum values for
the SMP emulation now and improve performance even further.

- Implemented Supervisor Mode Execution Protection (SMEP), the feature can
be enabled using .bochsrc CPUID option.
- Added support for XSAVEOPT instruction, the instruction can be enabled
using .bochsrc CPUID option.
- Added support for AVX and AVX2 instructions emulation, to enable configure
with --enable-avx option. When compiled in, AVX still has to be enabled
using .bochsrc CPUID option.
- Added emulation of AVX float16 convert instructions, the feature can be
enabled using .bochsrc CPUID option.
- Added support for AVX2 FMA instructions emulation. The implementation
was ported (with few bugfixes) from QEMU patch by Peter Maydell.
The FMA instructions support can be enabled using .bochsrc CPUID option.
- Added support for Bit Manipulation Instructions (BMI1/BMI2) emulation.
The BMI instructions support can be enabled using .bochsrc CPUID option.
- Added support for AMD SSE4A/XOP/FMA4/TBM extensions emulation, the
instructions can be enabled using .bochsrc CPUID option.
- Implemented VMX preemption timer VMEXIT control (patch by Jianan Hao)
- Implemented Pause-Loop Exiting Secondary VMEXIT control.
- Implemented VM Functions support and EPTP-Switching VM Function.
- Added INVPCID instruction emulation support.
- Added APIC timer TSC-Deadline mode emulation support.
- Now you could disable x86-64 from .bochsrc so it become possible to
emulate 32-bit CPUs using Bochs binary compiled with x86-64 support.
- Updated/fixed instrumentation callbacks.
- Bugfixes for CPU emulation correctness and stability.

- Bochs Internal Debugger and Debugger GUI
- Bochs disassembler fixes / new instructions support.
- Fixed timer breakpoint handling in Bochs internal debugger.
- Fixed bug in Bochs internal debugger 'show off' command.
- Added Bochs internal debugger command 'vmexitbp' to set breakpoint on
VMX guest VMEXIT (patch by Jianan Hao). Type 'vmexitbp' in debugger
command window to switch it on/off (similar to modebp).
- Fixed linear to physical address translation by Bochs internal debugger
for EPT unrestricted guest (VMX guest with paging disabled under EPT)
- Fixed bug in GUI debugger SSE registers display.
- Correctly display current CPU mode in GUI debugger status bar.
- Turn off the mouse capture when the internal debugger or gdbstub enter
the input loop.

- Memory
- Added new configure option which enables RAM file backing for large guest
memory with a smaller amount host memory, without causing a panic when
host memory is exhausted (patch by Gary Cameron). To enable configure with
--enable-large-ramfile option.

- Configure and compile
- Fixed Bochs manifest for Win64 compilation using Microsoft Visual Studio
command line compiler.
- Added ability to configure CPUID family through .bochsrc.
The default family value determined by configure option --enable-cpu-level.
- Added ability to configure CPUID model through .bochsrc.
The default model value is 3.
- Added ability to configure x2apic support through .bochsrc.
The APIC configuration could be selected using new CPUID .bochsrc APIC option.
Possible configurations are: "legacy", "xapic" and "x2apic".
Configure option --enable-x2apic and Bochs 2.4.6 .bochsrc XAPIC option are
deprecated and should not be used anymore.
- Configure option --enable-vbe is deprecated and should not be used anymore.
The VBE support is always automatically compiled in, in order to enable
VBE support the .bochsrc option "vga: extension=" has to be set to "vbe".
If PCI is present, the "pcivga" device can be assigned to PCI slot.
- Configure option --enable-acpi is deprecated and should not be used anymore.
The ACPI support is always automatically compiled in if PCI is compiled in.
The ACPI still could be disabled using .bochsrc 'plugin_ctrl' option.
- Removed --enable-trace-cache configure option. The option will be always ON
for any Bochs configuration.
- Compile in MONITOR/MWAIT support by default for all cpu-level=6 configurations.
- added support for MSVC DLL plugins with a separate workspace package.
VS2008Ex can now create a BOCHS.EXE with a set of plugin DLLs.
TODO: nmake still cannot create plugin DLLs.
- removed some outdated / unmaintained parts from the Bochs code: BeOS host
support, plex86 support, networking module 'arpback', text snapshot check
feature.

- I/O Devices
- Networking
- new networking module 'slirp' (user mode networking using Slirp and a
builtin DHCP server)
- Hard drive / cdrom
- fixed buffer overflow causing Bochs crash in LBA48 mode
- implemented ATA commands "READ NATIVE MAX ADDRESS" and
"READ NATIVE MAX ADDRESS EXT"
- Sound
- ported ES1370 soundcard emulation from Qemu, to enable configure with
the option --enable-es1370
- sound input implemented in the sound lowlevel modules for Windows and
Linux (ALSA / OSS)
- PCI
- added framework for PCI ROM support
- new bochsrc option 'pci' replaces the 'i440fxsupport' option. The 'chipset'
parameter for now only accepts the value 'i440fx'.
- VGA
- added PCI ROM support to cirrus and pcivga and moved ROM loading for the ISA
case to the vga code (SeaBIOS now usable by Bochs)
- log prefix now depends on the selected extension (new prefix BXVGA for
Bochs VBE support)
- USB
- experimental USB xHCI support (written by Ben Lunt)

- LGPL'd VGABIOS updated to version 0.7a
- implemented vgabios functions with AX=0x112x (patch by Hugo Mercier)
- fixed DAC palette in 8 bpp VBE and Cirrus modes (using the same palette
as VGA mode 0x13)
- VBE: added HDTV resolutions (patch by Tristan Schmelcher)
- VBE: added PCI ROM signature and data structure

- ROM BIOS
- Report memory above 4GB to BIOS (patch by Sebastian Herbszt)
- added PCI ROM init code for BIOS-bochs-latest
(WARNING: legacy BIOS no longer works with a PCI display adapter)

- GUI and display libraries
- new parameter 'update_freq' for the 'vga' bochsrc option replaces the
'vga_update_interval' option
- vga update frequency now uses host timing if the realtime synchronization
is enabled with the "clock" option (FIXME: it should always be used -
independent from the "clock" setting)
- Implemented graphics mode snapshot for VBE, Cirrus and standard VGA modes.
CGA modes are not supported yet.
- added 'x' display library option 'nokeyrepeat' to turn off keyboard repeat

- Config interface
- win32paramdlg: dialog size now adjusted to support larger label text
- win32paramdlg: added tooltip support using the parameter description

- SF patches applied
[3412431] Enabling raw devices as hdimage by affiss
[3435049] rombios: fix package size in pointing device flags 2 by Sebastian Herbszt
[3426460] [PATCH] PIC: remove never-executed code by Christian Inci
[3370604] Ctrl-Break support for the bochs BIOS by Nikolay Nikolov
[3302668] VMX preemption timer by Jianan Hao
[3327510] Fix wrong address translation in debugger by Jianan Hao
[3323758] Ctrl-Break support for the Win32 gui by Nikolay Nikolov
[3316785] Ctrl-Break support for the X11 gui by Nikolay Nikolov
[3298173] Breakpoint on VMEXIT event by Jianan Hao
[3295737] Fix CopyHost*WordLittleEndian macros by Heikki Lindholm
[3289448] optimized powerpc byte swapping by Heikki Lindholm
[3292581] Core Audio first aid by Heikki Lindholm
[3205979] Compilation fixes for OpenBSD by Brad Smith
[3290979] acpi/muldiv64 endian bug by Heikki Lindholm
[3289459] Mac OS X audio missing framework dependency by Heikki Lindholm
[3267459] fix xrandr related crash by Heikki Lindholm
[3190995] add eth backend based on Slirp by Heikki Lindholm

- these S.F. bugs were closed/fixed
[3365456] block device dimensions problem
[3441564] interrupts vectors 0x67 should also be NULL ! cf: 2902118
[2829847] Mouse locked during magic-break
[3418621] release mouse when debugger breakpoint was hit
[1947077] sb command bug
[2802677] Unable to install Cirrus SVGA driver in guest Windows ME
[3422638] large ramfile support broken on anything but Linux
[3312237] stepN command might be not working properly
[3392760] Bochs does not compile with linux3.0
[3403746] segfault crash with sparse disk images
[3062054] Problems with BIOS pointing device services (int 15h)
[3277639] incompatible colours in palette
[1788739] Abort on large memory setting
[3012207] Int 13h FN 48h incorrect return values
[3363289] holding shift key causes capslock hang
[1819639] Two incompatible crc32 modules
[3324111] configure for VCPP.NET issues
[3190970] Installing linux causes a crash in pci_ide
[3077616] Fedora 13 installation fails on Bochs 2.4.5
[3294671] ./configure --enable-pci --disable-cdrom
[3303818] wrong memory size is reported to GRUB (e820 problem?)
[3297475] trace cache disabled mode will miss SMC
[3170157] BIOS32 PCI service wrong length
[3025030] PIT mistakenly connected to IRQ0 IOAPIC instead of IRQ2
[3266738] GUI debugger does not update CPU mode correctly
[3292571] SB16 doesn't reinit correctly
[3175168] Cirrus CL-GD5446 emulation incorrect
[3260134] Failed to compile when trace cache disabled
[3197425] Error compile with vmx in vs2008/2010 and for correct x64

- these S.F. feature requests were closed/implemented
[3424738] Legacy BIOS int13 AL=17/18h diskette issue
[1197067] Screenshot for graphical
[2800839] VMX-preemption timer
[1507519] configurable CPUID
[579002] Allow user to specify architecture
[1228567] CPU option

Download: Bochs v2.5 Final
Source: Here

0 Comments

Post a Comment