https://wiki.qemu.org/api.php?action=feedcontributions&user=Shorne&feedformat=atomQEMU - User contributions [en]2024-03-19T08:56:32ZUser contributionsMediaWiki 1.39.1https://wiki.qemu.org/index.php?title=ChangeLog/8.1&diff=11320ChangeLog/8.12023-05-19T23:21:48Z<p>Shorne: OpenRISC add fpu updates</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Removed features and incompatible changes ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features'] page for details of suggested replacement functionality.<br />
<br />
=== New deprecated options and features ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.<br />
<br />
* The "-singlestep" command line option is deprecated, as it was very misleadingly named. Its replacement is "-one-insn-per-tb" (for the user-mode emulator) or "-accel one-insn-per-tb=on" (for the system-mode emulator)<br />
<br />
=== 68k ===<br />
<br />
=== Alpha ===<br />
<br />
=== Arm ===<br />
<br />
* KVM VMs on a host which supports MTE (the Memory Tagging Extension) can now use MTE in the guest<br />
* New architectural features now emulated:<br />
** FEAT_PAN3 (Support for SCTLR_ELx.EPAN)<br />
* Pointer-authentication information is now reported to the gdbstub (a GDB 13 or later will produce better backtraces when pauth is in use by the guest)<br />
* Orangepi-PC, Cubieboard: Add Allwinner WDT watchdog emulation<br />
* mcimxd7-sabre, mcimx6ul-evk: The second ethernet controller PHY is now usable<br />
<br />
=== AVR ===<br />
<br />
=== Hexagon ===<br />
<br />
=== HPPA ===<br />
<br />
=== LoongArch ===<br />
<br />
=== Microblaze ===<br />
<br />
=== MIPS ===<br />
<br />
=== Nios2 ===<br />
<br />
=== OpenRISC ===<br />
* Allow FPCSR special purpose register to be accessed in user mode<br />
* Configure FPU to detecting tininess before rounding to align QEMU with architecture specification<br />
<br />
=== PowerPC ===<br />
<br />
=== Renesas RX ===<br />
<br />
=== Renesas SH ===<br />
<br />
=== RISC-V ===<br />
==== ISA and Extensions ====<br />
* Support subsets of code size reduction extension<br />
* A large collection of mstatus sum changes and cleanups<br />
* Zero init APLIC internal state<br />
* Implement query-cpu-definitions<br />
* Fix Guest Physical Address Translation<br />
* Make sure an exception is raised if a pte is malformed<br />
<br />
==== Machines ====<br />
* Add signature dump function for spike to run ACT tests<br />
* Add Ventana's Veyron V1 CPU<br />
<br />
==== Fixes and Misc ====<br />
* Fix invalid riscv,event-to-mhpmcounters entry<br />
* Fix itrigger when icount is used<br />
* Fix mstatus.MPP related support<br />
* Fix the H extension TVM trap<br />
* Restore the predicate() NULL check behavior<br />
<br />
=== s390x ===<br />
<br />
=== SPARC ===<br />
<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
<br />
=== Xtensa ===<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI / SMBIOS ====<br />
<br />
==== Audio ====<br />
<br />
==== Block devices ====<br />
<br />
==== Graphics ====<br />
<br />
==== I2C ====<br />
<br />
==== Input devices ====<br />
<br />
==== IPMI ====<br />
<br />
==== Multi-process QEMU ====<br />
<br />
==== Network devices ====<br />
<br />
==== NVDIMM ====<br />
<br />
==== NVMe ====<br />
<br />
==== PCI/PCIe ====<br />
<br />
==== SCSI ====<br />
<br />
==== SD card ====<br />
<br />
==== SMBIOS ====<br />
<br />
==== TPM ====<br />
* Added TPM TIS I2C device model<br />
<br />
==== USB ====<br />
<br />
==== VFIO ====<br />
<br />
==== virtio ====<br />
<br />
==== vDPA ====<br />
<br />
==== Xen ====<br />
<br />
==== fw_cfg ====<br />
<br />
==== 9pfs ====<br />
<br />
==== virtiofs ====<br />
<br />
==== Semihosting ====<br />
<br />
=== Audio ===<br />
<br />
* new PipeWire audio backend (<tt>-audiodev pipewire</tt>)<br />
<br />
=== Character devices ===<br />
<br />
* It's now possible to specify the input independently from the output with ''-chardev file'' (e.g. ''-chardev file,id=repro,path=/dev/null,input-path=input.txt'')<br />
<br />
=== Crypto subsystem ===<br />
<br />
=== Authorization subsystem ===<br />
<br />
=== GUI ===<br />
<br />
=== GDBStub ===<br />
<br />
=== TCG Plugins ===<br />
<br />
=== Host support ===<br />
<br />
=== Memory backends ===<br />
<br />
=== Migration ===<br />
<br />
=== Monitor ===<br />
<br />
==== QMP ====<br />
<br />
==== HMP ====<br />
<br />
=== Network ===<br />
<br />
=== Block device backends and tools ===<br />
<br />
=== Tracing ===<br />
<br />
=== Semihosting ===<br />
<br />
=== Miscellaneous ===<br />
<br />
== User-mode emulation ==<br />
<br />
=== build ===<br />
<br />
=== binfmt_misc ===<br />
<br />
=== Hexagon ===<br />
<br />
=== LoongArch ===<br />
<br />
=== Nios2 ===<br />
<br />
=== HPPA ===<br />
<br />
=== x86 ===<br />
<br />
=== Xtensa ===<br />
<br />
== TCG backends ==<br />
<br />
=== ARM ===<br />
<br />
== Guest agent ==<br />
<br />
== Build Information ==<br />
<br />
=== Build Dependencies ===<br />
* Starting with QEMU 8.1, only Python 3.8 and newer will be supported (3.7 might work but it is not included in any of the environments that we run CI with).<br />
* Either pip or ensurepip must now be installed to build QEMU. It is recommended to install distlib as well, but the build process tries to cope with its absence and it shouldn't be necessary.<br />
* The <tt>--meson</tt> and <tt>--sphinx-build</tt> options to configure have been removed. Meson and Sphinx will always be invoked through the Python interpreter specified (optionally) with <tt>--python</tt> or the <tt>$PYTHON</tt> environment variable; in order to use a host installation of Meson or Sphinx, the corresponding packages will have to be installed in the <tt>site-packages</tt> directory of that Python interpreter.<br />
* A new option <tt>--enable-pypi</tt> will direct configure to find missing Python build dependencies on PyPI. Right now, this only applies to Sphinx and only if <tt>--enable-docs</tt> was passed as well, but this may change in the future.<br />
* new pipewire audio backend requires libpipewire (currently >= 0.3.60)<br />
<br />
=== Windows ===<br />
<br />
=== Testing and CI ===<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/8.1]]</div>Shornehttps://wiki.qemu.org/index.php?title=ChangeLog/7.2&diff=10999ChangeLog/7.22022-09-07T11:46:49Z<p>Shorne: /* OpenRISC */</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features' ] page for details of suggested replacement functionality.<br />
<br />
=== New deprecated options and features ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.<br />
<br />
=== 68k ===<br />
<br />
=== Alpha ===<br />
<br />
=== Arm ===<br />
<br />
==== Machines ====<br />
<br />
=== AVR ===<br />
<br />
=== Hexagon ===<br />
<br />
=== HPPA ===<br />
<br />
=== LoongArch ===<br />
<br />
=== Microblaze ===<br />
<br />
=== MIPS ===<br />
<br />
=== Nios2 ===<br />
<br />
=== OpenRISC ===<br />
* Stability improvements<br />
* Performance improvements by supporting MTTCG<br />
* New '''virt''' platform is added to assist with CI and device testing<br />
<br />
=== PowerPC ===<br />
<br />
=== Renesas RX ===<br />
<br />
=== Renesas SH ===<br />
<br />
=== RISC-V ===<br />
<br />
==== ISA and Extensions ====<br />
<br />
==== Machines ====<br />
<br />
==== Fixes and Misc ====<br />
<br />
=== s390x ===<br />
<br />
=== SPARC ===<br />
<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
<br />
=== Xtensa ===<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI / SMBIOS ====<br />
<br />
==== Audio ====<br />
<br />
==== Block devices ====<br />
<br />
==== Graphics ====<br />
<br />
==== I2C ====<br />
===== Controllers =====<br />
<br />
===== Devices =====<br />
<br />
==== Input devices ====<br />
<br />
==== IPMI ====<br />
<br />
==== Multi-process QEMU ====<br />
<br />
==== Network devices ====<br />
<br />
==== NVDIMM ====<br />
<br />
==== NVMe ====<br />
<br />
===== Emulated NVMe Controller =====<br />
<br />
==== PCI/PCIe ====<br />
<br />
==== SCSI ====<br />
<br />
==== SD card ====<br />
<br />
==== SMBIOS ====<br />
<br />
==== TPM ====<br />
<br />
==== USB ====<br />
<br />
==== VFIO ====<br />
<br />
==== virtio ====<br />
<br />
==== Xen ====<br />
<br />
==== fw_cfg ====<br />
<br />
==== 9pfs ====<br />
<br />
==== virtiofs ====<br />
<br />
==== Semihosting ====<br />
<br />
=== Audio ===<br />
<br />
=== Character devices ===<br />
* UNIX socket support on Windows has been added<br />
<br />
=== Crypto subsystem ===<br />
<br />
=== Authorization subsystem ===<br />
<br />
=== GUI ===<br />
<br />
=== GDBStub ===<br />
<br />
=== TCG Plugins ===<br />
<br />
=== Host support ===<br />
<br />
=== Memory backends ===<br />
<br />
=== Migration ===<br />
<br />
=== Monitor ===<br />
<br />
==== QMP ====<br />
<br />
==== HMP ====<br />
<br />
=== Network ===<br />
<br />
=== Block device backends and tools ===<br />
=== Tracing ===<br />
<br />
=== Semihosting ===<br />
<br />
=== Miscellaneous ===<br />
<br />
== User-mode emulation ==<br />
<br />
=== build ===<br />
<br />
=== binfmt_misc ===<br />
<br />
=== Hexagon ===<br />
<br />
=== LoongArch ===<br />
<br />
=== Nios2 ===<br />
<br />
=== HPPA ===<br />
<br />
== TCG ==<br />
<br />
=== ARM ===<br />
<br />
== Guest agent ==<br />
<br />
== Build Information ==<br />
<br />
=== Python ===<br />
<br />
=== GIT submodules ===<br />
<br />
=== Container Based Builds ===<br />
<br />
=== VM Based Builds ===<br />
<br />
=== Build Dependencies ===<br />
* Python 3.7 or newer is now required.<br />
<br />
=== Windows ===<br />
<br />
=== Testing and CI ===<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/7.2]]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=10962Documentation/Platforms/OpenRISC2022-07-04T21:34:32Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on embedded systems.<br />
<br />
== Build Directions ==<br />
./configure --target-list='or1k-softmmu or1k-linux-user' && make<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]]. The test image may be gzipped, so be sure to gunzip it first.<br />
<br />
wget http://shorne.noip.me/downloads/or1k-linux-5.0.gz<br />
gunzip or1k-linux-5.0.gz<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel or1k-linux-5.0 -serial stdio -nographic -monitor none<br />
<br />
== Multicore emulation ==<br />
OpenRISC Linux and QEMU also have support for running with multiple CPU cores. This can be done with the '''-smp''' argument as seen in the following commands:<br />
<br />
wget http://shorne.noip.me/downloads/or1k-linux-5.0-smp.gz<br />
gunzip or1k-linux-5.0-smp.gz<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel or1k-linux-5.0-smp -serial stdio -nographic -monitor none -smp cpus=2<br />
<br />
== Networking emulation ==<br />
<br />
The <tt>or1k-sim</tt> will wire in an <tt>opencore_eth</tt> device at address <tt>0x92000000</tt> which can be used when the qemu '''-net''' option is provided. This device is supported by the Linux kernel's <tt>ethoc</tt> Ethernet driver. <br />
<br />
The below options can be added to the qemu command line to enable networking.<br />
<br />
-net nic -net tap,ifname=tap0,script=no,downscript=no<br />
<br />
Qemu has a default set of networking setup scripts you can use which will create a tunnel device for you, these have been disabled with the above ''script'' and ''downscript'' command line options. If we disable the qemu startup commands we will need to create our own tun and tap0 devices which can be done with the below commands.<br />
<br />
Note, this sets up the tap0 device to be on the '''10.8.0.0/24''' network. This matches the static setup found in the test image.<br />
<br />
IPRANGE=10.8.0<br />
echo "Setup tun device for QEmu networking, (may need sudo)..." <br />
<br />
# Make the tap0 dev node if it doesn't exist<br />
if [ ! -e /dev/net/tap0 ]; then<br />
sudo true<br />
sudo mknod /dev/net/tap0 c 10 200<br />
sudo chown $(whoami) /dev/net/tap0<br />
fi <br />
<br />
# Check that the tap0 network interface exists<br />
if [ ! -e /sys/class/net/tap0 ]; then<br />
sudo true<br />
if sudo which openvpn > /dev/null; then<br />
sudo openvpn --mktun --dev tap0 --user $(whoami)<br />
elif sudo which tunctl > /dev/null; then<br />
sudo tunctl -t tap0 -u $(whoami)<br />
else<br />
echo "Unable to find tool to create tap0 device!"<br />
exit 1<br />
fi<br />
fi<br />
<br />
# Check the tap0 device if configure and up<br />
if sudo which ifconfig > /dev/null; then<br />
if ! ifconfig tap0 | grep -q "UP" || ! ifconfig tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ifconfig tap0 $IPRANGE.100 netmask 255.255.255.0 up<br />
fi<br />
elif sudo which ip > /dev/null; then<br />
if ! ip addr show tap0 | grep -q "UP" || ! ip addr show tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ip addr add $IPRANGE.100/24 dev tap0<br />
sudo ip link set dev tap0 up<br />
fi<br />
else <br />
echo "Unable to find tool to configure tap0 address"<br />
exit 1<br />
fi<br />
<br />
The same setup can be achieved using qemu user mode networking on the '''10.8.0.0/24''' network.<br />
with the following command line option.<br />
<br />
-nic user,net=10.8.0.0/24,host=10.8.0.100,dns=10.8.0.3<br />
<br />
This sets the network address ranges to '''10.8.0.0/24'''. It then configures the host (gateway) address<br />
to the expected '''10.8.0.100''' address and a dns server at '''10.8.0.3'''.<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging QEMU can listen on a gdb stub port with the below options. Note, you can also use <tt>-S</tt> with the <tt>-gdb</tt> option to have QEMU wait for a gdb client connection before starting the boot process.<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|User mode]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:shorne@gmail.com Stafford Horne]</div>Shornehttps://wiki.qemu.org/index.php?title=ChangeLog/7.1&diff=10933ChangeLog/7.12022-05-15T23:59:38Z<p>Shorne: OpenRISC update - mention new serial devices</p>
<hr />
<div><br />
== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features' ] page for details of suggested replacement functionality<br />
<br />
* The <tt>--enable-fips</tt> option to QEMU system emulators has been removed<br />
* The <tt>-writeconfig</tt> option to QEMU system emulators has been removed<br />
* The PC speaker device cannot be created anymore with <tt>-soundhw pcspk</tt>. Use <tt>-audiodev ''backend'',id=audio0 -machine pcspk-audiodev=audio0</tt> instead.<br />
<br />
=== New deprecated options and features ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.<br />
<br />
Additional note: The QEMU project will drop the slirp submodule in future releases. The QEMU tarball won't embed the code for user mode networking in the future anymore, so that an external libslirp installation is required. Most OS distribution already ship a libslirp package nowadays (OpenBSD will start shipping it with the upcoming release 7.2), but if you are still using another OS distribution that does not provide a libslirp package yet, please send a note to the qemu-devel mailing list and ask your OS vendor to include such a package in the next release.<br />
<br />
=== 68k ===<br />
<br />
=== Alpha ===<br />
<br />
=== Arm ===<br />
<br />
* The following CPU architecture features are now emulated:<br />
** FEAT_TTL (Translation Table Level)<br />
** FEAT_BBM at level 2 (Translation table break-before-make levels)<br />
** FEAT_Debugv8p2 (Debug changes for v8.2)<br />
** FEAT_Debugv8p4 (Debug changes for v8.4)<br />
** FEAT_RAS (minimal version only)<br />
** FEAT_IESB (Implicit error synchronization event)<br />
** FEAT_CSV2 (Cache speculation variant 2)<br />
** FEAT_CSV2_2 (Cache speculation variant 2, version 2)<br />
** FEAT_CSV3 (Cache speculation variant 3)<br />
** FEAT_DGH (Data gathering hint)<br />
* The emulated SMMUv3 now advertises support for SMMUv3.2-BBML2<br />
* The xlnx-zynqmp SoC model now implements the 4 TTC timers<br />
* The versal machine now models the Cortex-R5s in the Real-Time Processing Unit (RPU) subsystem<br />
* The virt board now supports emulation of the GICv4.0<br />
* New Aspeed AST1030 SoC and eval board<br />
* New emulated CPU types:<br />
** Cortex-A76<br />
** Neoverse-N1<br />
<br />
=== AVR ===<br />
<br />
=== Hexagon ===<br />
<br />
=== HPPA ===<br />
<br />
* General code improvements and tidy-up<br />
* Fix performance issue with artist framebuffer (this makes the GTK UI usable)<br />
<br />
=== Microblaze ===<br />
<br />
=== MIPS ===<br />
<br />
=== Nios2 ===<br />
<br />
* Implement the Vectored Interrupt Controller (enable with <code>-machine 10m50-ghrd,vic=on</code>).<br />
* Implement shadow register sets, and enable them with the VIC.<br />
* Raise supervisor-only instruction exception for <code>ERET</code> and <code>BRET</code>.<br />
* Raise misaligned data exception for misaligned memory accesses.<br />
* Raise misaligned destination exception for misaligned branch addresses.<br />
* Raise division error exception for divide by zero and divide overflow (disable with <code>-cpu diverr_present=off</code>).<br />
<br />
=== OpenRISC ===<br />
<br />
* The or1k-sim machine now supports 4 16550A UART serial devices, expanded from 1.<br />
<br />
=== PowerPC ===<br />
<br />
=== Renesas RX ===<br />
<br />
* Fix the <code>clrpsw</code> and <code>setpsw</code> instructions with respect to changes to <code>PSW.U</code>.<br />
* Fix the <code>wait</code> instruction corrupting the PC and setting <code>PSW.I</code>.<br />
<br />
=== Renesas SH ===<br />
<br />
=== RISC-V ===<br />
<br />
* Add support for Ibex SPI to OpenTitan<br />
* Add support for privileged spec version 1.12.0<br />
* Use privileged spec version 1.12.0 for virt machine by default<br />
* Allow software access to MIP SEIP<br />
* Add initial support for the Sdtrig extension<br />
* Optimisations for vector extensions<br />
* Improvements to the misa ISA string<br />
* Add isa extenstion strings to the device tree<br />
* Don't allow `-bios` options with KVM machines<br />
* Fix NAPOT range computation overflow<br />
* Fix DT property mmu-type when CPU mmu option is disabled<br />
* Make RISC-V ACLINT mtime MMIO register writable<br />
* Add and enable native debug feature<br />
* Support 64bit fdt addresses<br />
* Support configuarable marchid, mvendorid, mipid CSR values<br />
* Add support for the Zbkb, Zbkc, Zbkx, Zknd/Zkne, Zknh, Zksed/Zksh and Zkr extensions<br />
* Fix incorrect PTE merge in walk_pte<br />
* Add TPM support to the virt board<br />
<br />
=== s390x ===<br />
<br />
* Fix condition code generation for the <code>ICMH</code> instruction.<br />
* Emulate the s390x Vector-Enhancements Facility 2 with TCG<br />
* Remove the old libopcode-based s390 disassembler (use Capstone instead)<br />
* Silence the warning about the msa5 feature when using the "max" CPU on s390x. The "max" CPU now matches the "qemu" CPU of the newest machine type.<br />
<br />
=== SPARC ===<br />
<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
<br />
=== Xtensa ===<br />
<br />
* Implement cache testing opcodes.<br />
* Add lx106 core.<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI / SMBIOS ====<br />
<br />
==== Audio ====<br />
<br />
==== Block devices ====<br />
<br />
==== Graphics ====<br />
<br />
==== I2C ====<br />
<br />
==== Input devices ====<br />
<br />
==== IPMI ====<br />
<br />
==== Multi-process QEMU ====<br />
<br />
==== Network devices ====<br />
<br />
==== NVDIMM ====<br />
<br />
==== NVMe ====<br />
<br />
===== Emulated NVMe Controller =====<br />
<br />
==== PCI/PCIe ====<br />
<br />
==== SCSI ====<br />
<br />
==== SD card ====<br />
<br />
==== SMBIOS ====<br />
<br />
==== TPM ====<br />
<br />
==== USB ====<br />
<br />
==== VFIO ====<br />
<br />
==== virtio ====<br />
<br />
==== Xen ====<br />
<br />
==== fw_cfg ====<br />
<br />
==== 9pfs ====<br />
<br />
* macOS: [https://github.com/qemu/qemu/commit/f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65 Several fixes] for recently (in QEMU 7.0) added 9p support for macOS hosts.<br />
<br />
==== virtiofs ====<br />
<br />
==== Semihosting ====<br />
<br />
=== Audio ===<br />
<br />
=== Character devices ===<br />
<br />
=== Crypto subsystem ===<br />
<br />
=== Authorization subsystem ===<br />
<br />
=== GUI ===<br />
<br />
=== GDBStub ===<br />
<br />
=== TCG Plugins ===<br />
<br />
=== Host support ===<br />
<br />
=== Memory backends ===<br />
<br />
=== Migration ===<br />
<br />
=== Monitor ===<br />
<br />
==== QMP ====<br />
* The ''block-export-add'' QMP command, when exporting an NBD image with dirty bitmaps, now supports passing a specific paired bitmap and node name, rather than a less-specific bitmap name that requires a search for the bitmap through a backing chain of nodes.<br />
<br />
==== HMP ====<br />
<br />
=== Network ===<br />
* QEMU can be compiled with the system slirp library even when using CFI. This requires libslirp 4.7.<br />
<br />
=== Block device backends and tools ===<br />
=== Tracing ===<br />
<br />
=== Miscellaneous ===<br />
* The ''-m'' and ''-boot'' options are also available via ''-M mem.*'' and ''-M boot.*''.<br />
<br />
== User-mode emulation ==<br />
<br />
=== binfmt_misc ===<br />
<br />
=== Hexagon ===<br />
<br />
=== Nios2 ===<br />
<br />
* Fix the <code>rt_sigreturn</code> system call.<br />
* Fix the <code>siginfo_t</code> data for <code>SIGSEGV</code>.<br />
<br />
== TCG ==<br />
<br />
=== ARM ===<br />
<br />
== Guest agent ==<br />
<br />
* guest-get-disks can now return NVMe SMART informations (on Linux)<br />
* Improve Solaris support<br />
<br />
== Build Information ==<br />
<br />
=== Python ===<br />
<br />
=== GIT submodules ===<br />
<br />
=== Container Based Builds ===<br />
<br />
=== VM Based Builds ===<br />
<br />
=== Build Dependencies ===<br />
* The minimum supported version of libslirp is 4.1.<br />
<br />
=== Windows ===<br />
<br />
=== Testing and CI ===<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/7.1]]</div>Shornehttps://wiki.qemu.org/index.php?title=ChangeLog/7.0&diff=10803ChangeLog/7.02022-02-28T21:12:43Z<p>Shorne: /* Machines */</p>
<hr />
<div><br />
== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features' ] page for details of suggested replacement functionality<br />
<br />
=== New deprecated options and features ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.<br />
<br />
=== 68k ===<br />
<br />
=== Alpha ===<br />
<br />
=== Arm ===<br />
<br />
* The virt board has gained a new control knob to disable passing a RNG seed in the DTB (dtb-kaslr-seed)<br />
* The AST2600 SoC now supports a dummy version of the i3c device<br />
* The virt board can now run guests with KVM on hosts with restricted IPA ranges<br />
* The virt board now supports virtio-mem-pci<br />
* The virt board now supports specifying the guest CPU topology<br />
* On the virt board, we now enable PAuth when using KVM or hvf and the host CPU supports it<br />
* xlnx-versal-virt now emulates the PMC SLCR<br />
* xlnx-versal-virt now emulates the OSPI flash memory controller<br />
* The Arm GICv3 ITS now emulates the previously missing MOVI and MOVALL commands<br />
* New board model: mori-bmc<br />
<br />
=== AVR ===<br />
<br />
=== Hexagon ===<br />
<br />
=== HPPA ===<br />
* Support up to 16 virtual CPUs<br />
* Improved artist graphics driver for HP-UX VDE, HP-UX CDE and Linux framebuffer<br />
* Mouse cursor focus and positioning now works much better under HP-UX X11 <br />
* Emulated TOC button can be triggered with "nmi" in the qemu monitor<br />
* Added support for Qemu SCSI boot order option <br />
* Possibility to change system HOSTID for HP-UX and Linux<br />
* Added firmware 16x32 pixel bitmap font for use on HDPI screens<br />
* Ability to choose serial or graphical console as default firmware console<br />
<br />
=== Microblaze ===<br />
<br />
=== MIPS ===<br />
<br />
=== Nios2 ===<br />
<br />
=== OpenRISC ===<br />
==== Machines ====<br />
* Support up to 4 cores up from 2 on the OpenRISC sim machine<br />
* Support loading an external initrd image on the OpenRISC sim machine<br />
* OpenRISC sim machine now automatically generates a device tree and passes it to the kernel<br />
<br />
=== PowerPC ===<br />
<br />
=== Renesas RX ===<br />
<br />
=== Renesas SH ===<br />
<br />
=== RISC-V ===<br />
==== Extensions ====<br />
* Add support for ratified 1.0 Vector extension<br />
* Support for the Zve64f and Zve32f extensions<br />
* Drop support for draft 0.7.1 Vector extension<br />
* Support Zfhmin and Zfh extensions<br />
* RISC-V KVM support<br />
* Mark Hypervisor extension as non experimental<br />
* Enable Hypervisor extension by default<br />
* Support for svnapot, svinval and svpbmt extensions<br />
* Experimental support for 128-bit CPUs<br />
* Initial support for XVentanaCondOps custom extension<br />
* stval and mtval support for illegal instructions<br />
* Support for the UXL field in xstatus<br />
<br />
==== Machines ====<br />
* OpenSBI binary loading support for the Spike machine<br />
* Improve kernel loading for non-Linux platforms<br />
* SiFive PDMA 64-bit support<br />
* Support 32 cores on the virt machine<br />
<br />
==== Fixes ====<br />
* Fix illegal instruction when PMP is disabled<br />
* Corrections for the Vector extension<br />
* Fixes for OpenTitan timer<br />
* Correction of OpenTitan PLIC stride length<br />
* Removal of OpenSBI ELFs<br />
* Fix trap cause for RV32 HS-mode CSR access from RV64 HS-mode<br />
<br />
=== s390x ===<br />
<br />
=== SPARC ===<br />
<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
<br />
==== KVM ====<br />
<br />
==== x86_64 ====<br />
<br />
==== AMD SEV ====<br />
<br />
=== Xtensa ===<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
<br />
==== Audio ====<br />
<br />
==== Block devices ====<br />
<br />
==== Graphics ====<br />
<br />
==== I2C ====<br />
<br />
==== Input devices ====<br />
<br />
==== IPMI ====<br />
<br />
==== Multi-process QEMU ====<br />
<br />
==== Network devices ====<br />
<br />
==== NVDIMM ====<br />
<br />
==== NVMe ====<br />
<br />
===== Emulated NVMe Controller =====<br />
<br />
==== PCI/PCIe ====<br />
<br />
==== SCSI ====<br />
<br />
==== SD card ====<br />
<br />
==== SMBIOS ====<br />
<br />
==== TPM ====<br />
<br />
==== USB ====<br />
<br />
<br />
==== VFIO ====<br />
<br />
==== virtio ====<br />
<br />
==== Xen ====<br />
<br />
==== fw_cfg ====<br />
<br />
==== 9pfs ====<br />
* [https://gitlab.com/qemu-project/qemu/-/commit/e64e27d5cb103b7764f1a05b6eda7e7fedd517c5 Fixed 9p server crash] ([https://gitlab.com/qemu-project/qemu/-/issues/841 issue #841]) that happened on some host systems due to incorrect (system dependant) handling of struct dirent size.<br />
<br />
==== virtiofs ====<br />
* Fix for CVE-2022-0358 - behaviour with supplementary groups and SGID directories<br />
* Improved security label support<br />
* The virtiofsd in qemu is now starting to be deprecated; please start using and contributing to [https://gitlab.com/virtio-fs/virtiofsd Rust virtiofsd]<br />
<br />
==== Semihosting ====<br />
<br />
=== Audio ===<br />
<br />
=== Character devices ===<br />
<br />
=== Crypto subsystem ===<br />
<br />
=== Authorization subsystem ===<br />
<br />
=== GUI ===<br />
<br />
=== GDBStub ===<br />
<br />
=== TCG Plugins ===<br />
* new coverage plugin in contrib which support drcov format traces<br />
<br />
=== Host support ===<br />
<br />
=== Memory backends ===<br />
<br />
=== Migration ===<br />
<br />
=== Monitor ===<br />
<br />
==== QMP ====<br />
<br />
==== HMP ====<br />
<br />
=== Network ===<br />
<br />
=== Block device backends and tools ===<br />
* A bug in caching block status has been fixed that was causing over-eager treatment of a format layer as all data rather than detecting holes, if an earlier block status query had merely been checking for which portions of the backing chain were allocated. While the bug did not affect guest-visible data, it caused some performance regressions, particularly noticeable and easy to trigger when using 'qemu-nbd --allocation-depth'.<br />
* The SSH driver supports sha256 fingerprints with pre-blockdev command line configuration syntax.<br />
* The SSH driver will print the actual fingerprint and its type when failing to validate a host key.<br />
<br />
=== Tracing ===<br />
<br />
=== Miscellaneous ===<br />
<br />
* The -sandbox 'spawn' filter, will now correctly block use of the clone syscall for spawnnig processes, while allowing thread creation<br />
* The -sandbox 'spawn' filter, will now entirely block use of the clone3 syscall entirely since there is no way to access its flags parameter from seccomp to distinguish thread vs process creation<br />
* The -sandbox 'spawn' filter, will now block setns, unshare and execveat syscalls since they are not desired.<br />
<br />
== User-mode emulation ==<br />
<br />
* fixed a bug that caused issues mapping the ARM commpage on 32 bit builds<br />
<br />
=== binfmt_misc ===<br />
<br />
=== Hexagon ===<br />
<br />
== TCG ==<br />
<br />
User-mode emulation (linux-user, bsd-user) will enforce guest alignment constraints and raise SIGBUS to the guest program as appropriate.<br />
<br />
=== ARM ===<br />
<br />
Support for for ARMv4 and ARMv5 hosts has been dropped. These older Arm versions do not have support for misaligned memory access; such support was added to ARMv6. Since ARMv5 is quite old, it is presumed that such systems do not have sufficient RAM to even run QEMU, and so practically speaking no systems are impacted.<br />
<br />
== Guest agent ==<br />
* Support Windows 11 for <code>guest-get-osinfo</code> command<br />
* Fix memory leaks in Windows <code>guest-get-fsinfo</code> command<br />
<br />
== Build Information ==<br />
<br />
=== Python ===<br />
<br />
=== GIT submodules ===<br />
<br />
=== Container Based Builds ===<br />
<br />
* a large number of containers are now updated by lcitool<br />
<br />
=== VM Based Builds ===<br />
<br />
=== Build Dependencies ===<br />
<br />
=== Windows ===<br />
<br />
=== Testing and CI ===<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/7.0]]</div>Shornehttps://wiki.qemu.org/index.php?title=ChangeLog/7.0&diff=10802ChangeLog/7.02022-02-28T21:12:28Z<p>Shorne: /* Machines */</p>
<hr />
<div><br />
== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features' ] page for details of suggested replacement functionality<br />
<br />
=== New deprecated options and features ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.<br />
<br />
=== 68k ===<br />
<br />
=== Alpha ===<br />
<br />
=== Arm ===<br />
<br />
* The virt board has gained a new control knob to disable passing a RNG seed in the DTB (dtb-kaslr-seed)<br />
* The AST2600 SoC now supports a dummy version of the i3c device<br />
* The virt board can now run guests with KVM on hosts with restricted IPA ranges<br />
* The virt board now supports virtio-mem-pci<br />
* The virt board now supports specifying the guest CPU topology<br />
* On the virt board, we now enable PAuth when using KVM or hvf and the host CPU supports it<br />
* xlnx-versal-virt now emulates the PMC SLCR<br />
* xlnx-versal-virt now emulates the OSPI flash memory controller<br />
* The Arm GICv3 ITS now emulates the previously missing MOVI and MOVALL commands<br />
* New board model: mori-bmc<br />
<br />
=== AVR ===<br />
<br />
=== Hexagon ===<br />
<br />
=== HPPA ===<br />
* Support up to 16 virtual CPUs<br />
* Improved artist graphics driver for HP-UX VDE, HP-UX CDE and Linux framebuffer<br />
* Mouse cursor focus and positioning now works much better under HP-UX X11 <br />
* Emulated TOC button can be triggered with "nmi" in the qemu monitor<br />
* Added support for Qemu SCSI boot order option <br />
* Possibility to change system HOSTID for HP-UX and Linux<br />
* Added firmware 16x32 pixel bitmap font for use on HDPI screens<br />
* Ability to choose serial or graphical console as default firmware console<br />
<br />
=== Microblaze ===<br />
<br />
=== MIPS ===<br />
<br />
=== Nios2 ===<br />
<br />
=== OpenRISC ===<br />
==== Machines ====<br />
* Support up to 4 cores up from 2 on the OpenRISC sim machine.<br />
* Support loading an external initrd image on the OpenRISC sim machine.<br />
* OpenRISC sim machine now automatically generates a device tree and passes it to the kernel.<br />
<br />
=== PowerPC ===<br />
<br />
=== Renesas RX ===<br />
<br />
=== Renesas SH ===<br />
<br />
=== RISC-V ===<br />
==== Extensions ====<br />
* Add support for ratified 1.0 Vector extension<br />
* Support for the Zve64f and Zve32f extensions<br />
* Drop support for draft 0.7.1 Vector extension<br />
* Support Zfhmin and Zfh extensions<br />
* RISC-V KVM support<br />
* Mark Hypervisor extension as non experimental<br />
* Enable Hypervisor extension by default<br />
* Support for svnapot, svinval and svpbmt extensions<br />
* Experimental support for 128-bit CPUs<br />
* Initial support for XVentanaCondOps custom extension<br />
* stval and mtval support for illegal instructions<br />
* Support for the UXL field in xstatus<br />
<br />
==== Machines ====<br />
* OpenSBI binary loading support for the Spike machine<br />
* Improve kernel loading for non-Linux platforms<br />
* SiFive PDMA 64-bit support<br />
* Support 32 cores on the virt machine<br />
<br />
==== Fixes ====<br />
* Fix illegal instruction when PMP is disabled<br />
* Corrections for the Vector extension<br />
* Fixes for OpenTitan timer<br />
* Correction of OpenTitan PLIC stride length<br />
* Removal of OpenSBI ELFs<br />
* Fix trap cause for RV32 HS-mode CSR access from RV64 HS-mode<br />
<br />
=== s390x ===<br />
<br />
=== SPARC ===<br />
<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
<br />
==== KVM ====<br />
<br />
==== x86_64 ====<br />
<br />
==== AMD SEV ====<br />
<br />
=== Xtensa ===<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
<br />
==== Audio ====<br />
<br />
==== Block devices ====<br />
<br />
==== Graphics ====<br />
<br />
==== I2C ====<br />
<br />
==== Input devices ====<br />
<br />
==== IPMI ====<br />
<br />
==== Multi-process QEMU ====<br />
<br />
==== Network devices ====<br />
<br />
==== NVDIMM ====<br />
<br />
==== NVMe ====<br />
<br />
===== Emulated NVMe Controller =====<br />
<br />
==== PCI/PCIe ====<br />
<br />
==== SCSI ====<br />
<br />
==== SD card ====<br />
<br />
==== SMBIOS ====<br />
<br />
==== TPM ====<br />
<br />
==== USB ====<br />
<br />
<br />
==== VFIO ====<br />
<br />
==== virtio ====<br />
<br />
==== Xen ====<br />
<br />
==== fw_cfg ====<br />
<br />
==== 9pfs ====<br />
* [https://gitlab.com/qemu-project/qemu/-/commit/e64e27d5cb103b7764f1a05b6eda7e7fedd517c5 Fixed 9p server crash] ([https://gitlab.com/qemu-project/qemu/-/issues/841 issue #841]) that happened on some host systems due to incorrect (system dependant) handling of struct dirent size.<br />
<br />
==== virtiofs ====<br />
* Fix for CVE-2022-0358 - behaviour with supplementary groups and SGID directories<br />
* Improved security label support<br />
* The virtiofsd in qemu is now starting to be deprecated; please start using and contributing to [https://gitlab.com/virtio-fs/virtiofsd Rust virtiofsd]<br />
<br />
==== Semihosting ====<br />
<br />
=== Audio ===<br />
<br />
=== Character devices ===<br />
<br />
=== Crypto subsystem ===<br />
<br />
=== Authorization subsystem ===<br />
<br />
=== GUI ===<br />
<br />
=== GDBStub ===<br />
<br />
=== TCG Plugins ===<br />
* new coverage plugin in contrib which support drcov format traces<br />
<br />
=== Host support ===<br />
<br />
=== Memory backends ===<br />
<br />
=== Migration ===<br />
<br />
=== Monitor ===<br />
<br />
==== QMP ====<br />
<br />
==== HMP ====<br />
<br />
=== Network ===<br />
<br />
=== Block device backends and tools ===<br />
* A bug in caching block status has been fixed that was causing over-eager treatment of a format layer as all data rather than detecting holes, if an earlier block status query had merely been checking for which portions of the backing chain were allocated. While the bug did not affect guest-visible data, it caused some performance regressions, particularly noticeable and easy to trigger when using 'qemu-nbd --allocation-depth'.<br />
* The SSH driver supports sha256 fingerprints with pre-blockdev command line configuration syntax.<br />
* The SSH driver will print the actual fingerprint and its type when failing to validate a host key.<br />
<br />
=== Tracing ===<br />
<br />
=== Miscellaneous ===<br />
<br />
* The -sandbox 'spawn' filter, will now correctly block use of the clone syscall for spawnnig processes, while allowing thread creation<br />
* The -sandbox 'spawn' filter, will now entirely block use of the clone3 syscall entirely since there is no way to access its flags parameter from seccomp to distinguish thread vs process creation<br />
* The -sandbox 'spawn' filter, will now block setns, unshare and execveat syscalls since they are not desired.<br />
<br />
== User-mode emulation ==<br />
<br />
* fixed a bug that caused issues mapping the ARM commpage on 32 bit builds<br />
<br />
=== binfmt_misc ===<br />
<br />
=== Hexagon ===<br />
<br />
== TCG ==<br />
<br />
User-mode emulation (linux-user, bsd-user) will enforce guest alignment constraints and raise SIGBUS to the guest program as appropriate.<br />
<br />
=== ARM ===<br />
<br />
Support for for ARMv4 and ARMv5 hosts has been dropped. These older Arm versions do not have support for misaligned memory access; such support was added to ARMv6. Since ARMv5 is quite old, it is presumed that such systems do not have sufficient RAM to even run QEMU, and so practically speaking no systems are impacted.<br />
<br />
== Guest agent ==<br />
* Support Windows 11 for <code>guest-get-osinfo</code> command<br />
* Fix memory leaks in Windows <code>guest-get-fsinfo</code> command<br />
<br />
== Build Information ==<br />
<br />
=== Python ===<br />
<br />
=== GIT submodules ===<br />
<br />
=== Container Based Builds ===<br />
<br />
* a large number of containers are now updated by lcitool<br />
<br />
=== VM Based Builds ===<br />
<br />
=== Build Dependencies ===<br />
<br />
=== Windows ===<br />
<br />
=== Testing and CI ===<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/7.0]]</div>Shornehttps://wiki.qemu.org/index.php?title=ChangeLog/7.0&diff=10801ChangeLog/7.02022-02-28T21:09:49Z<p>Shorne: /* OpenRISC */</p>
<hr />
<div><br />
== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features' ] page for details of suggested replacement functionality<br />
<br />
=== New deprecated options and features ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.<br />
<br />
=== 68k ===<br />
<br />
=== Alpha ===<br />
<br />
=== Arm ===<br />
<br />
* The virt board has gained a new control knob to disable passing a RNG seed in the DTB (dtb-kaslr-seed)<br />
* The AST2600 SoC now supports a dummy version of the i3c device<br />
* The virt board can now run guests with KVM on hosts with restricted IPA ranges<br />
* The virt board now supports virtio-mem-pci<br />
* The virt board now supports specifying the guest CPU topology<br />
* On the virt board, we now enable PAuth when using KVM or hvf and the host CPU supports it<br />
* xlnx-versal-virt now emulates the PMC SLCR<br />
* xlnx-versal-virt now emulates the OSPI flash memory controller<br />
* The Arm GICv3 ITS now emulates the previously missing MOVI and MOVALL commands<br />
* New board model: mori-bmc<br />
<br />
=== AVR ===<br />
<br />
=== Hexagon ===<br />
<br />
=== HPPA ===<br />
* Support up to 16 virtual CPUs<br />
* Improved artist graphics driver for HP-UX VDE, HP-UX CDE and Linux framebuffer<br />
* Mouse cursor focus and positioning now works much better under HP-UX X11 <br />
* Emulated TOC button can be triggered with "nmi" in the qemu monitor<br />
* Added support for Qemu SCSI boot order option <br />
* Possibility to change system HOSTID for HP-UX and Linux<br />
* Added firmware 16x32 pixel bitmap font for use on HDPI screens<br />
* Ability to choose serial or graphical console as default firmware console<br />
<br />
=== Microblaze ===<br />
<br />
=== MIPS ===<br />
<br />
=== Nios2 ===<br />
<br />
=== OpenRISC ===<br />
==== Machines ====<br />
* OpenRISC SIM SMP mode now supports up to 4 CPU cores up from 2.<br />
* OpenRISC SIM Now supports loading an external initrd image.<br />
* OpenRISC SIM Now will generate a device tree and pass it to the kernel.<br />
<br />
=== PowerPC ===<br />
<br />
=== Renesas RX ===<br />
<br />
=== Renesas SH ===<br />
<br />
=== RISC-V ===<br />
==== Extensions ====<br />
* Add support for ratified 1.0 Vector extension<br />
* Support for the Zve64f and Zve32f extensions<br />
* Drop support for draft 0.7.1 Vector extension<br />
* Support Zfhmin and Zfh extensions<br />
* RISC-V KVM support<br />
* Mark Hypervisor extension as non experimental<br />
* Enable Hypervisor extension by default<br />
* Support for svnapot, svinval and svpbmt extensions<br />
* Experimental support for 128-bit CPUs<br />
* Initial support for XVentanaCondOps custom extension<br />
* stval and mtval support for illegal instructions<br />
* Support for the UXL field in xstatus<br />
<br />
==== Machines ====<br />
* OpenSBI binary loading support for the Spike machine<br />
* Improve kernel loading for non-Linux platforms<br />
* SiFive PDMA 64-bit support<br />
* Support 32 cores on the virt machine<br />
<br />
==== Fixes ====<br />
* Fix illegal instruction when PMP is disabled<br />
* Corrections for the Vector extension<br />
* Fixes for OpenTitan timer<br />
* Correction of OpenTitan PLIC stride length<br />
* Removal of OpenSBI ELFs<br />
* Fix trap cause for RV32 HS-mode CSR access from RV64 HS-mode<br />
<br />
=== s390x ===<br />
<br />
=== SPARC ===<br />
<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
<br />
==== KVM ====<br />
<br />
==== x86_64 ====<br />
<br />
==== AMD SEV ====<br />
<br />
=== Xtensa ===<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
<br />
==== Audio ====<br />
<br />
==== Block devices ====<br />
<br />
==== Graphics ====<br />
<br />
==== I2C ====<br />
<br />
==== Input devices ====<br />
<br />
==== IPMI ====<br />
<br />
==== Multi-process QEMU ====<br />
<br />
==== Network devices ====<br />
<br />
==== NVDIMM ====<br />
<br />
==== NVMe ====<br />
<br />
===== Emulated NVMe Controller =====<br />
<br />
==== PCI/PCIe ====<br />
<br />
==== SCSI ====<br />
<br />
==== SD card ====<br />
<br />
==== SMBIOS ====<br />
<br />
==== TPM ====<br />
<br />
==== USB ====<br />
<br />
<br />
==== VFIO ====<br />
<br />
==== virtio ====<br />
<br />
==== Xen ====<br />
<br />
==== fw_cfg ====<br />
<br />
==== 9pfs ====<br />
* [https://gitlab.com/qemu-project/qemu/-/commit/e64e27d5cb103b7764f1a05b6eda7e7fedd517c5 Fixed 9p server crash] ([https://gitlab.com/qemu-project/qemu/-/issues/841 issue #841]) that happened on some host systems due to incorrect (system dependant) handling of struct dirent size.<br />
<br />
==== virtiofs ====<br />
* Fix for CVE-2022-0358 - behaviour with supplementary groups and SGID directories<br />
* Improved security label support<br />
* The virtiofsd in qemu is now starting to be deprecated; please start using and contributing to [https://gitlab.com/virtio-fs/virtiofsd Rust virtiofsd]<br />
<br />
==== Semihosting ====<br />
<br />
=== Audio ===<br />
<br />
=== Character devices ===<br />
<br />
=== Crypto subsystem ===<br />
<br />
=== Authorization subsystem ===<br />
<br />
=== GUI ===<br />
<br />
=== GDBStub ===<br />
<br />
=== TCG Plugins ===<br />
* new coverage plugin in contrib which support drcov format traces<br />
<br />
=== Host support ===<br />
<br />
=== Memory backends ===<br />
<br />
=== Migration ===<br />
<br />
=== Monitor ===<br />
<br />
==== QMP ====<br />
<br />
==== HMP ====<br />
<br />
=== Network ===<br />
<br />
=== Block device backends and tools ===<br />
* A bug in caching block status has been fixed that was causing over-eager treatment of a format layer as all data rather than detecting holes, if an earlier block status query had merely been checking for which portions of the backing chain were allocated. While the bug did not affect guest-visible data, it caused some performance regressions, particularly noticeable and easy to trigger when using 'qemu-nbd --allocation-depth'.<br />
* The SSH driver supports sha256 fingerprints with pre-blockdev command line configuration syntax.<br />
* The SSH driver will print the actual fingerprint and its type when failing to validate a host key.<br />
<br />
=== Tracing ===<br />
<br />
=== Miscellaneous ===<br />
<br />
* The -sandbox 'spawn' filter, will now correctly block use of the clone syscall for spawnnig processes, while allowing thread creation<br />
* The -sandbox 'spawn' filter, will now entirely block use of the clone3 syscall entirely since there is no way to access its flags parameter from seccomp to distinguish thread vs process creation<br />
* The -sandbox 'spawn' filter, will now block setns, unshare and execveat syscalls since they are not desired.<br />
<br />
== User-mode emulation ==<br />
<br />
* fixed a bug that caused issues mapping the ARM commpage on 32 bit builds<br />
<br />
=== binfmt_misc ===<br />
<br />
=== Hexagon ===<br />
<br />
== TCG ==<br />
<br />
User-mode emulation (linux-user, bsd-user) will enforce guest alignment constraints and raise SIGBUS to the guest program as appropriate.<br />
<br />
=== ARM ===<br />
<br />
Support for for ARMv4 and ARMv5 hosts has been dropped. These older Arm versions do not have support for misaligned memory access; such support was added to ARMv6. Since ARMv5 is quite old, it is presumed that such systems do not have sufficient RAM to even run QEMU, and so practically speaking no systems are impacted.<br />
<br />
== Guest agent ==<br />
* Support Windows 11 for <code>guest-get-osinfo</code> command<br />
* Fix memory leaks in Windows <code>guest-get-fsinfo</code> command<br />
<br />
== Build Information ==<br />
<br />
=== Python ===<br />
<br />
=== GIT submodules ===<br />
<br />
=== Container Based Builds ===<br />
<br />
* a large number of containers are now updated by lcitool<br />
<br />
=== VM Based Builds ===<br />
<br />
=== Build Dependencies ===<br />
<br />
=== Windows ===<br />
<br />
=== Testing and CI ===<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/7.0]]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=8464Documentation/Platforms/OpenRISC2019-03-25T10:54:24Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on embedded systems.<br />
<br />
== Build Directions ==<br />
./configure --target-list='or1k-softmmu or1k-linux-user' && make<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]]. The test image may be gzipped, so be sure to gunzip it first.<br />
<br />
wget http://shorne.noip.me/downloads/or1k-linux-5.0.gz<br />
gunzip or1k-linux-5.0.gz<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel or1k-linux-5.0 -serial stdio -nographic -monitor none<br />
<br />
== Multicore emulation ==<br />
OpenRISC Linux and QEMU also have support for running with multiple CPU cores. This can be done with the '''-smp''' argument as seen in the following commands:<br />
<br />
wget http://shorne.noip.me/downloads/or1k-linux-5.0-smp.gz<br />
gunzip or1k-linux-5.0-smp.gz<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel or1k-linux-5.0-smp -serial stdio -nographic -monitor none -smp cpus=2<br />
<br />
== Networking emulation ==<br />
<br />
The <tt>or1k-sim</tt> will wire in an <tt>opencore_eth</tt> device at address <tt>0x92000000</tt> which can be used when the qemu '''-net''' option is provided. This device is supported by the Linux kernel's <tt>ethoc</tt> Ethernet driver. <br />
<br />
The below options can be added to the qemu command line to enable networking.<br />
<br />
-net nic -net tap,ifname=tap0,script=no,downscript=no<br />
<br />
Qemu has a default set of networking setup scripts you can use which will create a tunnel device for you, these have been disabled with the above ''script'' and ''downscript'' command line options. If we disable the qemu startup commands we will need to create our own tun and tap0 devices which can be done with the below commands.<br />
<br />
Note, this sets up the tap0 device to be on the '''10.8.0.0/24''' network. This matches the static setup found in the test image.<br />
<br />
IPRANGE=10.8.0<br />
echo "Setup tun device for QEmu networking, (may need sudo)..." <br />
<br />
# Make the tap0 dev node if it doesn't exist<br />
if [ ! -e /dev/net/tap0 ]; then<br />
sudo true<br />
sudo mknod /dev/net/tap0 c 10 200<br />
sudo chown $(whoami) /dev/net/tap0<br />
fi <br />
<br />
# Check that the tap0 network interface exists<br />
if [ ! -e /sys/class/net/tap0 ]; then<br />
sudo true<br />
if sudo which openvpn > /dev/null; then<br />
sudo openvpn --mktun --dev tap0 --user $(whoami)<br />
elif sudo which tunctl > /dev/null; then<br />
sudo tunctl -t tap0 -u $(whoami)<br />
else<br />
echo "Unable to find tool to create tap0 device!"<br />
exit 1<br />
fi<br />
fi<br />
<br />
# Check the tap0 device if configure and up<br />
if sudo which ifconfig > /dev/null; then<br />
if ! ifconfig tap0 | grep -q "UP" || ! ifconfig tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ifconfig tap0 $IPRANGE.100 netmask 255.255.255.0 up<br />
fi<br />
elif sudo which ip > /dev/null; then<br />
if ! ip addr show tap0 | grep -q "UP" || ! ip addr show tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ip addr add $IPRANGE.100/24 dev tap0<br />
sudo ip link set dev tap0 up<br />
fi<br />
else <br />
echo "Unable to find tool to configure tap0 address"<br />
exit 1<br />
fi <br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging QEMU can listen on a gdb stub port with the below options. Note, you can also use <tt>-S</tt> with the <tt>-gdb</tt> option to have QEMU wait for a gdb client connection before starting the boot process.<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|User mode]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:shorne@gmail.com Stafford Horne]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=8463Documentation/Platforms/OpenRISC2019-03-24T06:39:22Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on embedded systems.<br />
<br />
== Build Directions ==<br />
./configure --target-list='or1k-softmmu or1k-linux-user' && make<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]]. The test image may be gzipped, so be sure to gunzip it first.<br />
<br />
wget http://shorne.noip.me/downloads/or1k-linux-5.0.gz<br />
gunzip or1k-linux-5.0.gz<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel or1k-linux-5.0 -serial stdio -nographic -monitor none<br />
<br />
== Multicore emulation ==<br />
OpenRISC Linux and QEMU also have support for running with multiple CPU cores. This can be done with the the '''-smp''' argument as seen in the following commands:<br />
<br />
wget http://shorne.noip.me/downloads/or1k-linux-5.0-smp.gz<br />
gunzip or1k-linux-5.0-smp.gz<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel or1k-linux-5.0-smp -serial stdio -nographic -monitor none -smp cpus=2<br />
<br />
== Networking emulation ==<br />
<br />
The <tt>or1k-sim</tt> will write in an <tt>opencore_eth</tt> device at address <tt>0x92000000</tt> when the qemu -net option is provided. This device is supported by the Linux kernel's <tt>ethoc</tt> Ethernet driver. <br />
<br />
The below options can be added to the qemu command line to enable networking.<br />
<br />
-net nic -net tap,ifname=tap0,script=no,downscript=no<br />
<br />
Qemu has a default set of networking setup scripts you can use which will create a tunnel device for you, these have been disabled with the above ''script'' and ''downscript'' command line options. If we disable the qemu startup commands we will need to create our own tun and tap0 devices which can be done with the below commands.<br />
<br />
Note, this sets up the tap0 device to be on the '''10.8.0.0/24''' network. This matches the static setup found in the test image.<br />
<br />
IPRANGE=10.8.0<br />
echo "Setup tun device for QEmu networking, (may need sudo)..." <br />
<br />
# Make the tap0 dev node if it doesn't exist<br />
if [ ! -e /dev/net/tap0 ]; then<br />
sudo true<br />
sudo mknod /dev/net/tap0 c 10 200<br />
sudo chown $(whoami) /dev/net/tap0<br />
fi <br />
<br />
# Check that the tap0 network interface exists<br />
if [ ! -e /sys/class/net/tap0 ]; then<br />
sudo true<br />
if sudo which openvpn > /dev/null; then<br />
sudo openvpn --mktun --dev tap0 --user $(whoami)<br />
elif sudo which tunctl > /dev/null; then<br />
sudo tunctl -t tap0 -u $(whoami)<br />
else<br />
echo "Unable to find tool to create tap0 device!"<br />
exit 1<br />
fi<br />
fi<br />
<br />
# Check the tap0 device if configure and up<br />
if sudo which ifconfig > /dev/null; then<br />
if ! ifconfig tap0 | grep -q "UP" || ! ifconfig tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ifconfig tap0 $IPRANGE.100 netmask 255.255.255.0 up<br />
fi<br />
elif sudo which ip > /dev/null; then<br />
if ! ip addr show tap0 | grep -q "UP" || ! ip addr show tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ip addr add $IPRANGE.100/24 dev tap0<br />
sudo ip link set dev tap0 up<br />
fi<br />
else <br />
echo "Unable to find tool to configure tap0 address"<br />
exit 1<br />
fi <br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging QEMU can listen on a gdb stub port with the below options. Note, you can also use <tt>-S</tt> with the <tt>-gdb</tt> option to have QEMU wait for a gdb client connection before starting the boot process.<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|User mode]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:shorne@gmail.com Stafford Horne]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=8462Documentation/Platforms/OpenRISC2019-03-24T06:37:33Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on embedded systems.<br />
<br />
== Build Directions ==<br />
./configure --target-list='or1k-softmmu or1k-linux-user' && make<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]]. The test image may be gzipped, so be sure to gunzip it first.<br />
<br />
wget http://shorne.noip.me/downloads/or1k-linux-5.0.gz<br />
gunzip or1k-linux-5.0.gz<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel or1k-linux-5.0 -serial stdio -nographic -monitor none<br />
<br />
== Multicore emulation ==<br />
OpenRISC Linux and QEMU also have support for running with multiple CPU cores. This can be done with the the '''-smp''' argument as seen in the following commands:<br />
<br />
wget http://shorne.noip.me/downloads/or1k-linux-5.0-smp.gz<br />
gunzip or1k-linux-5.0-smp.gz<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel or1k-linux-5.0 -serial stdio -nographic -monitor none -smp cpus=2<br />
<br />
== Networking emulation ==<br />
<br />
The <tt>or1k-sim</tt> will write in an <tt>opencore_eth</tt> device at address <tt>0x92000000</tt> when the qemu -net option is provided. This device is supported by the Linux kernel's <tt>ethoc</tt> Ethernet driver. <br />
<br />
The below options can be added to the qemu command line to enable networking.<br />
<br />
-net nic -net tap,ifname=tap0,script=no,downscript=no<br />
<br />
Qemu has a default set of networking setup scripts you can use which will create a tunnel device for you, these have been disabled with the above ''script'' and ''downscript'' command line options. If we disable the qemu startup commands we will need to create our own tun and tap0 devices which can be done with the below commands.<br />
<br />
Note, this sets up the tap0 device to be on the '''10.8.0.0/24''' network. This matches the static setup found in the test image.<br />
<br />
IPRANGE=10.8.0<br />
echo "Setup tun device for QEmu networking, (may need sudo)..." <br />
<br />
# Make the tap0 dev node if it doesn't exist<br />
if [ ! -e /dev/net/tap0 ]; then<br />
sudo true<br />
sudo mknod /dev/net/tap0 c 10 200<br />
sudo chown $(whoami) /dev/net/tap0<br />
fi <br />
<br />
# Check that the tap0 network interface exists<br />
if [ ! -e /sys/class/net/tap0 ]; then<br />
sudo true<br />
if sudo which openvpn > /dev/null; then<br />
sudo openvpn --mktun --dev tap0 --user $(whoami)<br />
elif sudo which tunctl > /dev/null; then<br />
sudo tunctl -t tap0 -u $(whoami)<br />
else<br />
echo "Unable to find tool to create tap0 device!"<br />
exit 1<br />
fi<br />
fi<br />
<br />
# Check the tap0 device if configure and up<br />
if sudo which ifconfig > /dev/null; then<br />
if ! ifconfig tap0 | grep -q "UP" || ! ifconfig tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ifconfig tap0 $IPRANGE.100 netmask 255.255.255.0 up<br />
fi<br />
elif sudo which ip > /dev/null; then<br />
if ! ip addr show tap0 | grep -q "UP" || ! ip addr show tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ip addr add $IPRANGE.100/24 dev tap0<br />
sudo ip link set dev tap0 up<br />
fi<br />
else <br />
echo "Unable to find tool to configure tap0 address"<br />
exit 1<br />
fi <br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging QEMU can listen on a gdb stub port with the below options. Note, you can also use <tt>-S</tt> with the <tt>-gdb</tt> option to have QEMU wait for a gdb client connection before starting the boot process.<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|User mode]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:shorne@gmail.com Stafford Horne]</div>Shornehttps://wiki.qemu.org/index.php?title=Testing/System_Images&diff=8461Testing/System Images2019-03-24T06:33:45Z<p>Shorne: </p>
<hr />
<div>== QEMU disk images ==<br />
<br />
Here is a collection of links to disk images which can be used to test system emulation.<br />
<br />
{| class="wikitable" border="1"<br />
! What<br />
! Comment<br />
|-<br />
| [http://odin.fdos.org/odin2005/odin1440.img odin1440.img]<br />
| FreeDOS floppy disk image from [http://odin.fdos.org/ ODIN] (Steve Nickolas)<br />
|-<br />
| [http://nopid.free.fr/small.ffs.bz2 small.ffs.bz2]<br />
| Small NetBSD Image (thanx to Nicolas Ollinger)<br />
|- <br />
| [http://shorne.noip.me/downloads/or1k-linux-5.0-smp.gz or1k-linux-5.0-smp.gz]<br />
| OpenRISC Linux 5.0 smp test image. Contains a vmlinux binary that includes an initramfs with busybox, network config and strace for testing <br />
|-<br />
| [http://www.uclinux.org/ports/coldfire/binary.html ColdFire binaries]<br />
| M68k binaries that can be used with the an5206 and mcf5208evb machines of QEMU<br />
|-<br />
| [https://people.debian.org/~aurel32/qemu/ Aurelien's images]<br />
| A collection of various Debian images for QEMU, e.g. for AMD64, ARM, MIPS, PPC, SH4 and SPARC<br />
|}<br />
<br />
Some other interesting images can be found on the [http://www.qemu-advent-calendar.org/ QEMU Advent Calendar] website.</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=8460Documentation/Platforms/OpenRISC2019-03-24T06:08:20Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on embedded systems.<br />
<br />
== Build Directions ==<br />
./configure --target-list='or1k-softmmu or1k-linux-user' && make<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]]. The test image may be gzipped, so be sure to gunzip it first.<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
== Networking emulation ==<br />
<br />
The <tt>or1k-sim</tt> will write in an <tt>opencore_eth</tt> device at address <tt>0x92000000</tt> when the qemu -net option is provided. This device is supported by the Linux kernel's <tt>ethoc</tt> Ethernet driver. <br />
<br />
The below options can be added to the qemu command line to enable networking.<br />
<br />
-net nic -net tap,ifname=tap0,script=no,downscript=no<br />
<br />
Qemu has a default set of networking setup scripts you can use which will create a tunnel device for you, these have been disabled with the above ''script'' and ''downscript'' command line options. If we disable the qemu startup commands we will need to create our own tun and tap0 devices which can be done with the below commands.<br />
<br />
Note, this sets up the tap0 device to be on the '''10.8.0.0/24''' network. This matches the static setup found in the test image.<br />
<br />
IPRANGE=10.8.0<br />
echo "Setup tun device for QEmu networking, (may need sudo)..." <br />
<br />
# Make the tap0 dev node if it doesn't exist<br />
if [ ! -e /dev/net/tap0 ]; then<br />
sudo true<br />
sudo mknod /dev/net/tap0 c 10 200<br />
sudo chown $(whoami) /dev/net/tap0<br />
fi <br />
<br />
# Check that the tap0 network interface exists<br />
if [ ! -e /sys/class/net/tap0 ]; then<br />
sudo true<br />
if sudo which openvpn > /dev/null; then<br />
sudo openvpn --mktun --dev tap0 --user $(whoami)<br />
elif sudo which tunctl > /dev/null; then<br />
sudo tunctl -t tap0 -u $(whoami)<br />
else<br />
echo "Unable to find tool to create tap0 device!"<br />
exit 1<br />
fi<br />
fi<br />
<br />
# Check the tap0 device if configure and up<br />
if sudo which ifconfig > /dev/null; then<br />
if ! ifconfig tap0 | grep -q "UP" || ! ifconfig tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ifconfig tap0 $IPRANGE.100 netmask 255.255.255.0 up<br />
fi<br />
elif sudo which ip > /dev/null; then<br />
if ! ip addr show tap0 | grep -q "UP" || ! ip addr show tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ip addr add $IPRANGE.100/24 dev tap0<br />
sudo ip link set dev tap0 up<br />
fi<br />
else <br />
echo "Unable to find tool to configure tap0 address"<br />
exit 1<br />
fi <br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging QEMU can listen on a gdb stub port with the below options. Note, you can also use <tt>-S</tt> with the <tt>-gdb</tt> option to have QEMU wait for a gdb client connection before starting the boot process.<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|User mode]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:shorne@gmail.com Stafford Horne]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=8459Documentation/Platforms/OpenRISC2019-03-24T06:06:51Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on embedded systems.<br />
<br />
== Build Directions ==<br />
./configure --target-list='or1k-softmmu or1k-linux-user' && make<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]]. The test image may be gzipped, so be sure to gunzip it first.<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
== Networking emulation ==<br />
<br />
The <tt>or1k-sim</tt> will write in an <tt>opencore_eth</tt> device at address <tt>0x92000000</tt> when the qemu -net option is provided. This device is supported by the Linux kernel's <tt>ethoc</tt> Ethernet driver. <br />
<br />
The below options can be added to the qemu command line to enable networking.<br />
<br />
-net nic -net tap,ifname=tap0,script=no,downscript=no<br />
<br />
Qemu has a default set of networking setup scripts you can use which will create a tunnel device for you, these have been disabled with the above ''script'' and ''downscript'' command line options. If we disable the qemu startup commands we will need to create our own tun and tap0 devices which can be done with the below commands:<br />
<br />
IPRANGE=10.8.0<br />
echo "Setup tun device for QEmu networking, (may need sudo)..." <br />
<br />
# Make the tap0 dev node if it doesn't exist<br />
if [ ! -e /dev/net/tap0 ]; then<br />
sudo true<br />
sudo mknod /dev/net/tap0 c 10 200<br />
sudo chown $(whoami) /dev/net/tap0<br />
fi <br />
<br />
# Check that the tap0 network interface exists<br />
if [ ! -e /sys/class/net/tap0 ]; then<br />
sudo true<br />
if sudo which openvpn > /dev/null; then<br />
sudo openvpn --mktun --dev tap0 --user $(whoami)<br />
elif sudo which tunctl > /dev/null; then<br />
sudo tunctl -t tap0 -u $(whoami)<br />
else<br />
echo "Unable to find tool to create tap0 device!"<br />
exit 1<br />
fi<br />
fi<br />
<br />
# Check the tap0 device if configure and up<br />
if sudo which ifconfig > /dev/null; then<br />
if ! ifconfig tap0 | grep -q "UP" || ! ifconfig tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ifconfig tap0 $IPRANGE.100 netmask 255.255.255.0 up<br />
fi<br />
elif sudo which ip > /dev/null; then<br />
if ! ip addr show tap0 | grep -q "UP" || ! ip addr show tap0 | grep -q "$IPRANGE.100"; then<br />
sudo true<br />
sudo ip addr add $IPRANGE.100/24 dev tap0<br />
sudo ip link set dev tap0 up<br />
fi<br />
else <br />
echo "Unable to find tool to configure tap0 address"<br />
exit 1<br />
fi <br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging QEMU can listen on a gdb stub port with the below options. Note, you can also use <tt>-S</tt> with the <tt>-gdb</tt> option to have QEMU wait for a gdb client connection before starting the boot process.<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|User mode]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:shorne@gmail.com Stafford Horne]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=7648Documentation/Platforms/OpenRISC2018-06-21T11:19:41Z<p>Shorne: add user to config target list, add some notes on debug</p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on embedded systems.<br />
<br />
== Build Directions ==<br />
./configure --target-list='or1k-softmmu or1k-linux-user' && make<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]]. The test image may be gzipped, so be sure to gunzip it first.<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
For networking support you can add the following options, note the <tt>open_eth</tt> option uses the kernel's <tt>ethoc</tt> Ethernet driver. <br />
<br />
-device open_eth -netdev tap,id=or1k<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging QEMU can listen on a gdb stub port with the below options. Note, you can also use <tt>-S</tt> with the <tt>-gdb</tt> option to have QEMU wait for a gdb client connection before starting the boot process.<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|User mode]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:shorne@gmail.com Stafford Horne]</div>Shornehttps://wiki.qemu.org/index.php?title=Testing/System_Images&diff=6869Testing/System Images2017-05-03T14:28:00Z<p>Shorne: </p>
<hr />
<div>== QEMU disk images ==<br />
<br />
Here is a collection of disk images which can be used to test system emulation.<br />
<br />
{| class="wikitable" border="1"<br />
! File<br />
! Comment<br />
|-<br />
| [http://wiki.qemu.org/download/linux-0.2.img.bz2 linux-0.2.img.bz2] (8 MB)<br />
| Small Linux disk image containing a 2.6.20 Linux kernel, X11 and various utilities to test QEMU<br />
|-<br />
| [http://odin.fdos.org/odin2005/odin1440.img odin1440.img]<br />
| FreeDOS floppy disk image from [http://odin.fdos.org/ ODIN] (Steve Nickolas)<br />
|-<br />
| [http://nopid.free.fr/small.ffs.bz2 small.ffs.bz2]<br />
| Small NetBSD Image (thanx to Nicolas Ollinger)<br />
|-<br />
| [http://wiki.qemu.org/download/minix204.tar.bz2 minix204.tar.bz2]<br />
| Minix 2.0.4 (thanx to TĂșlio Almeida Pexoto)<br />
|-<br />
| [http://wiki.qemu.org/download/efi-bios.tar.bz2 efi-bios.tar.bz2]<br />
| EFI BIOS for QEMU (thanx to Tristan Gingold)<br />
|-<br />
| [http://wiki.qemu.org/download/sparc-test-0.2.tar.gz sparc-test-0.2.tar.gz]<br />
| SPARC Linux 2.6 test kernel and initrd disk image<br />
|-<br />
| [http://wiki.qemu.org/download/arm-test-0.2.tar.gz arm-test-0.2.tar.gz]<br />
| ARM Linux 2.6 test kernel and initrd disk image (thanx to Paul Brook)<br />
|-<br />
| [http://wiki.qemu.org/download/mips-test-0.2.tar.gz mips-test-0.2.tar.gz]<br />
| MIPS Linux 2.6 test kernel and initrd disk image (thanx to Thiemo Seufer)<br />
|-<br />
| [http://wiki.qemu.org/download/mipsel-test-0.2.tar.gz mipsel-test-0.2.tar.gz]<br />
| MIPS little endian Linux 2.6 test kernel and initrd disk image (thanx to Thiemo Seufer)<br />
|-<br />
| [http://wiki.qemu.org/download/coldfire-test-0.1.tar.bz2 coldfire-test-0.1.tar.bz2]<br />
| Coldfire Linux 2.6 test kernel and initrd disk image (thanx to Paul Brook)<br />
|-<br />
| [http://wiki.qemu.org/download/sh-test-0.2.tar.bz2 sh-test-0.2.tar.bz2]<br />
| SH4 Linux 2.6 test kernel and initrd disk image (thanx to Shin-ichiro KAWASAKI)<br />
|-<br />
| [http://wiki.qemu.org/download/cris-axisdev88-img-linux2_6_33.tgz cris-axisdev88-img-linux2_6_33.tgz]<br />
| CRIS AXIS Devboard88 Linux 2.6 test image with selftesting testsuite (Edgar E. Iglesias)<br />
|-<br />
| [http://wiki.qemu.org/download/mb-s3adsp1800-linux-2_6_34.tgz mb-s3adsp1800-linux-2_6_34.tgz]<br />
| Microblaze S3ADSP1800 Linux 2.6 test image with selftesting testsuite (Edgar E. Iglesias)<br />
|-<br />
| [http://wiki.qemu.org/download/ppc-virtexml507-linux-2_6_34.tgz ppc-virtexml507-linux-2_6_34.tgz]<br />
| PPC-440 Virtex-ML507 Linux 2.6 test image (Edgar E. Iglesias)<br />
|-<br />
| [http://wiki.qemu.org/download/xtensa-dc232b_kernel_rootfs.tgz xtensa-dc232b_kernel_rootfs.tgz]<br />
| Xtensa Linux 2.6.29 test image (Max Filippov)<br />
|- <br />
| [http://shorne.noip.me/downloads/or1k-linux-4.10.gz or1k-linux-4.10.gz]<br />
| OpenRISC Linux 4.10 test image + initramfs with busybox, kselftest and strace for testing <br />
|}</div>Shornehttps://wiki.qemu.org/index.php?title=Planning&diff=6709Planning2017-03-16T11:56:27Z<p>Shorne: </p>
<hr />
<div>* Currently in development: [[Planning/2.9| 2.9]]<br />
* [{{PagesStartingWith|Planning/}} All planning pages]<br />
* [[Planning/ReleaseProcess|The release process]]<br />
* [[Planning/BugDay|Bug days]]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6663Documentation/Platforms/OpenRISC2017-02-25T22:58:19Z<p>Shorne: Oops, Ethoc is not out of tree</p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]].<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
For networking support you can add the following options, note the <tt>open_eth</tt> option uses the kernel's <tt>ethoc</tt> ethernet driver. <br />
<br />
-device open_eth -netdev tap,id=or1k<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging openrisc can listen on a gdb stub port with the following options<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|User mode]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:shorne@gmail.com Stafford Horne]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6656Documentation/Platforms/OpenRISC2017-02-25T06:06:06Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]].<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
For networking support you can add the following options, note the <tt>open_eth</tt> option requires an out of tree driver from [https://github.com/openrisc/linux openrisc/linux]. <br />
<br />
-device open_eth -netdev tap,id=or1k<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging openrisc can listen on a gdb stub port with the following options<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|User mode]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:shorne@gmail.com Stafford Horne]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6653Documentation/Platforms/OpenRISC2017-02-23T16:03:28Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following. If you are starting out you can download the OpenRISC test image from [[Testing/System_Images]].<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
For networking support you can add the following options, note the <tt>open_eth</tt> option requires an out of tree driver from [https://github.com/openrisc/linux openrisc/linux]. <br />
<br />
-device open_eth -netdev tap,id=or1k<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging openrisc can listen on a gdb stub port with the following options<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info to the file <tt>trace.txt</tt><br />
<br />
-D trace.txt -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|Use more]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:proljc@gmail.com Jia Liu]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6652Documentation/Platforms/OpenRISC2017-02-23T14:36:17Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following.<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
For networking support you can add the following options, note the <tt>open_eth</tt> option requires an out of tree driver from [https://github.com/openrisc/linux openrisc/linux]. <br />
<br />
-device open_eth -netdev tap,id=or1k<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging openrisc can listen on a gdb stub port with the following options<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info the a file <tt>z</tt><br />
<br />
-D z -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:openrisc-system-boot-screenshot.png|400px|Linux booting up]]<span style="margin:20px;"></span><br />
[[File:openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|Use more]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:proljc@gmail.com Jia Liu]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6651Documentation/Platforms/OpenRISC2017-02-23T14:35:30Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following.<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
For networking support you can add the following options, note the <tt>open_eth</tt> option requires an out of tree driver from [https://github.com/openrisc/linux openrisc/linux]. <br />
<br />
-device open_eth -netdev tap,id=or1k<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging openrisc can listen on a gdb stub port with the following options<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info the a file <tt>z</tt><br />
<br />
-D z -d in_asm,exec,int,op_opt<br />
<br />
== Pictures ==<br />
<br />
[[File:Openrisc-system-boot-screenshot.png|400px|Linux booting up]<span style="margin:20px;"></span><br />
[[File:Openrisc-system-commands-screenshot.png|400px|Linux command line execution]]<br><br><br />
[[File:openrisc-user-screenshot.png|400px|Use more]]<br><br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:proljc@gmail.com Jia Liu]</div>Shornehttps://wiki.qemu.org/index.php?title=File:Openrisc-system-boot-screenshot.png&diff=6650File:Openrisc-system-boot-screenshot.png2017-02-23T14:31:24Z<p>Shorne: </p>
<hr />
<div></div>Shornehttps://wiki.qemu.org/index.php?title=File:Openrisc-system-commands-screenshot.png&diff=6649File:Openrisc-system-commands-screenshot.png2017-02-23T14:31:07Z<p>Shorne: </p>
<hr />
<div></div>Shornehttps://wiki.qemu.org/index.php?title=File:Openrisc-user-screenshot.png&diff=6648File:Openrisc-user-screenshot.png2017-02-23T14:30:31Z<p>Shorne: </p>
<hr />
<div></div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6647Documentation/Platforms/OpenRISC2017-02-23T14:07:59Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following.<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
For networking support you can add the following options, note the <tt>open_eth</tt> option requires an out of tree driver from [https://github.com/openrisc/linux openrisc/linux]. <br />
<br />
-device open_eth -netdev tap,id=or1k<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging openrisc can listen on a gdb stub port with the following options<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info the a file <tt>z</tt><br />
<br />
-D z -d in_asm,exec,int,op_opt<br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:proljc@gmail.com Jia Liu]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6646Documentation/Platforms/OpenRISC2017-02-23T14:06:02Z<p>Shorne: add some debugging tips + network details back</p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following.<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
For networking support you can add the following options, note the =opencores_eth= option requires an out of tree driver from [https://github.com/openrisc/linux openrisc/linux]. <br />
<br />
-device open_eth -netdev tap,id=or1k<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Debugging Tips ==<br />
<br />
For debugging openrisc can listen on a gdb stub port with the following options<br />
<br />
-gdb tcp::10001<br />
<br />
To get good traces you can also add the following, this will output trace info the a file =z=<br />
<br />
-D z -d in_asm,exec,int,op_opt<br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:proljc@gmail.com Jia Liu]</div>Shornehttps://wiki.qemu.org/index.php?title=Testing/System_Images&diff=6645Testing/System Images2017-02-23T12:30:35Z<p>Shorne: </p>
<hr />
<div>== QEMU disk images ==<br />
<br />
Here is a collection of disk images which can be used to test system emulation.<br />
<br />
{| class="wikitable" border="1"<br />
! File<br />
! Comment<br />
|-<br />
| [http://wiki.qemu.org/download/linux-0.2.img.bz2 linux-0.2.img.bz2] (8 MB)<br />
| Small Linux disk image containing a 2.6.20 Linux kernel, X11 and various utilities to test QEMU<br />
|-<br />
| [http://odin.fdos.org/odin2005/odin1440.img odin1440.img]<br />
| FreeDOS floppy disk image from [http://odin.fdos.org/ ODIN] (Steve Nickolas)<br />
|-<br />
| [http://nopid.free.fr/small.ffs.bz2 small.ffs.bz2]<br />
| Small NetBSD Image (thanx to Nicolas Ollinger)<br />
|-<br />
| [http://wiki.qemu.org/download/minix204.tar.bz2 minix204.tar.bz2]<br />
| Minix 2.0.4 (thanx to TĂșlio Almeida Pexoto)<br />
|-<br />
| [http://wiki.qemu.org/download/efi-bios.tar.bz2 efi-bios.tar.bz2]<br />
| EFI BIOS for QEMU (thanx to Tristan Gingold)<br />
|-<br />
| [http://wiki.qemu.org/download/sparc-test-0.2.tar.gz sparc-test-0.2.tar.gz]<br />
| SPARC Linux 2.6 test kernel and initrd disk image<br />
|-<br />
| [http://wiki.qemu.org/download/arm-test-0.2.tar.gz arm-test-0.2.tar.gz]<br />
| ARM Linux 2.6 test kernel and initrd disk image (thanx to Paul Brook)<br />
|-<br />
| [http://wiki.qemu.org/download/mips-test-0.2.tar.gz mips-test-0.2.tar.gz]<br />
| MIPS Linux 2.6 test kernel and initrd disk image (thanx to Thiemo Seufer)<br />
|-<br />
| [http://wiki.qemu.org/download/mipsel-test-0.2.tar.gz mipsel-test-0.2.tar.gz]<br />
| MIPS little endian Linux 2.6 test kernel and initrd disk image (thanx to Thiemo Seufer)<br />
|-<br />
| [http://wiki.qemu.org/download/coldfire-test-0.1.tar.bz2 coldfire-test-0.1.tar.bz2]<br />
| Coldfire Linux 2.6 test kernel and initrd disk image (thanx to Paul Brook)<br />
|-<br />
| [http://wiki.qemu.org/download/sh-test-0.2.tar.bz2 sh-test-0.2.tar.bz2]<br />
| SH4 Linux 2.6 test kernel and initrd disk image (thanx to Shin-ichiro KAWASAKI)<br />
|-<br />
| [http://wiki.qemu.org/download/cris-axisdev88-img-linux2_6_33.tgz cris-axisdev88-img-linux2_6_33.tgz]<br />
| CRIS AXIS Devboard88 Linux 2.6 test image with selftesting testsuite (Edgar E. Iglesias)<br />
|-<br />
| [http://wiki.qemu.org/download/mb-s3adsp1800-linux-2_6_34.tgz mb-s3adsp1800-linux-2_6_34.tgz]<br />
| Microblaze S3ADSP1800 Linux 2.6 test image with selftesting testsuite (Edgar E. Iglesias)<br />
|-<br />
| [http://wiki.qemu.org/download/ppc-virtexml507-linux-2_6_34.tgz ppc-virtexml507-linux-2_6_34.tgz]<br />
| PPC-440 Virtex-ML507 Linux 2.6 test image (Edgar E. Iglesias)<br />
|-<br />
| [http://wiki.qemu.org/download/xtensa-dc232b_kernel_rootfs.tgz xtensa-dc232b_kernel_rootfs.tgz]<br />
| Xtensa Linux 2.6.29 test image (Max Filippov)<br />
|- <br />
| [http://shorne.noip.me/downloads/or1k-linux-4.10-rc7.gz or1k-linux-4.10-rc7.gz]<br />
| OpenRISC Linux 4.10 test image + initramfs with busybox, kselftest and strace for testing <br />
|}</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6644Documentation/Platforms/OpenRISC2017-02-23T12:23:41Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Full system emulation ==<br />
To boot linux you can run the following.<br />
<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
== User mode emulation ==<br />
<br />
Using QEMU user mode emulation we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Links ==<br />
* [https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br />
* [http://openrisc.io/ The OpenRISC project site]<br />
* [https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br />
* [https://github.com/openrisc/or1k-gcc/releases GCC toolchain releases and binaries]<br />
<br />
== Contacts ==<br />
Maintainer: [mailto:proljc@gmail.com Jia Liu]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms&diff=6643Documentation/Platforms2017-02-23T11:54:59Z<p>Shorne: fix openrisc as native line</p>
<hr />
<div>[[Category:User documentation]]<br />
<br />
Platforms available in QEMU:<br />
<br />
* [http://wiki.qemu.org/Documentation/Platforms/Alpha Alpha]<br />
* [[Documentation/Platforms/ARM|ARM]]<br />
* CRIS<br />
* [[Documentation/Platforms/PC|i386/x86-64]]<br />
* LatticeMico32<br />
* [[Documentation/Platforms/68k|68K]]<br />
* Microblaze<br />
* MIPS<br />
* Moxie<br />
* [[Documentation/Platforms/OpenRISC|OpenRISC]]<br />
* [[Documentation/Platforms/POWER|Power]]<br />
* [[Documentation/Platforms/PowerPC|PowerPC]]<br />
* [[Documentation/Platforms/SH4|SH4]]<br />
* [[Documentation/Platforms/SPARC|Sparc]]<br />
* [[Documentation/Platforms/S390X|s390x]]<br />
* TileGX<br />
* [[Documentation/Platforms/TriCore|TriCore]]<br />
* Unicore32<br />
* Xtensa<br />
* [{{PagesStartingWith|Documentation/Platforms/}} All platforms emulated by QEMU]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6642Documentation/Platforms/OpenRISC2017-02-23T11:52:15Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Suggested command-line ==<br />
To boot linux you can run<br />
<br />
qemu-system-or1k -m 1024 -nographic -kernel <kernel file> -net nic,model=opencores_eth -net tap,name=or1k<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
== Command line for user process ==<br />
<br />
Using qemu linux-user we can run and debug OpenRISC binaries on your host linux.<br />
<br />
$ cat main.c<br />
#include <stdio.h><br />
int main() {<br />
printf ("hello\n");<br />
return 0;<br />
}<br />
$ or1k-linux-musl-gcc main.c<br />
# Here $LDPATH/lib/ld-musl-or1k.so.1 is linked to or1k-linux-musl/lib/libc.so<br />
$ qemu-or1k -L $LDPATH ./a.out <br />
hello<br />
<br />
== Links ==<br />
[https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br><br />
[http://openrisc.io/ The OpenRISC project site]<br><br />
[https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br><br />
<br />
== Contacts ==<br />
Maintainer: [mailto:proljc@gmail.com Jia Liu]</div>Shornehttps://wiki.qemu.org/index.php?title=Documentation/Platforms/OpenRISC&diff=6641Documentation/Platforms/OpenRISC2017-02-23T11:39:10Z<p>Shorne: </p>
<hr />
<div>== Description ==<br />
OpenRISC is an open source processor architecture. While instruction sets like x86 are proprietary and owned by a single company, OpenRISC is free. Its main use is as a processor on an embedded system.<br />
<br />
== Suggested command-line ==<br />
qemu-system-or1k -m 1024 -nographic -kernel <kernel file> -net nic,model=opencores_eth -net tap,name=or1k<br />
qemu-system-or1k -cpu or1200 -M or1k-sim -kernel $LINUX/vmlinux -serial stdio -nographic -monitor none<br />
<br />
== Links ==<br />
[https://www.youtube.com/watch?v=dYcxLHf0Ez4 Video introducing OpenRISC]<br><br />
[http://openrisc.io/ The OpenRISC project site]<br><br />
[https://github.com/openrisc/doc/blob/master/openrisc-arch-1.1-rev0.pdf?raw=true OpenRISC 1000 specification]<br><br />
<br />
== Contacts ==<br />
Maintainer: [mailto:proljc@gmail.com Jia Liu]</div>Shornehttps://wiki.qemu.org/index.php?title=User:Shorne&diff=6640User:Shorne2017-02-23T11:08:05Z<p>Shorne: initial commit</p>
<hr />
<div>Stafford Horne - working on OpenRISC</div>Shorne