QEMU With E2K User Support
Go to file
Bin Meng 0b2f78e524 roms: opensbi: Upgrade from v0.6 to v0.7
Upgrade OpenSBI from v0.6 to v0.7 and the pre-built bios images.

The v0.7 release includes the following commits:

f64f4b9 lib: Add a new platform feature to bringup secondary harts
b677a9b lib: Implement hart hotplug
5b48240 lib: Add possible hart status values
e3f69fc lib: Implement Hart State Management (HSM) SBI extension
6704216 lib: Check MSIP bit after returning from WFI
82ae8e8 makefile: Do setup of the install target more flexible
e1a5b73 platform: sifive: fu540: allow sv32 as an mmu-type
8c83fb2 lib: Fix return type of sbi_hsm_hart_started()
00d332b include: Move bits related defines and macros to sbi_bitops.h
a148996 include: sbi_bitops: More useful bit operations
4a603eb platform: kendryte/k210: Set per-HART stack size to 8KB
678c3c3 include: sbi_scratch: Set per-HART scratch size to 4KB
2abc55b lib: Sort build objects in alphabetical order
6e87507 platform: ae350: Sort build objects in alphabetical order
650c0e5 lib: sbi: Fix coding style issues
078686d lib: serial: Fix coding style issues
3226bd9 lib: Simple bitmap library
c741abc include: Simple hartmask library
d6d7e18 lib: sbi_init: Don't allow HARTID greater than SBI_HARTMASK_MAX_BITS
a4a6a81 lib: Introduce SBI_TLB_INFO_INIT() helper macro
d963164 lib: sbi_tlb: Use sbi_hartmask in sbi_tlb_info
71d2b83 lib: Move all coldboot wait APIs to sbi_init.c
2b945fc lib: sbi_init: Use hartmask for coldboot wait
44ce5b9 include: Remove disabled_hart_mask from sbi_platform
2db381f lib: Introduce sbi_hsm_hart_started_mask() API
61f7768 lib: sbi_ecall_legacy: Use sbi_hsm_hart_started_mask() API
466fecb lib: sbi_system: Use sbi_hsm_hart_started_mask() API
9aad831 lib: sbi_ipi: Use sbi_hsm_hart_started_mask() API
eede1aa lib: sbi_hart: Remove HART available mask and related APIs
757bb44 docs: Remove out-of-date documentation
86d37bb lib: sbi: Fix misaligned trap handling
ffdc858 platform: ariane-fpga: Change license for ariane-fpga from GPL-2.0 to BSD-2
4b2f594 sbi: Add definitions for true/false
0cfe49a libfdt: Add INT32_MAX and UINT32_MAX in libfdt_env.h
baac7e0 libfdt: Upgrade to v1.5.1 release
f92147c include: Make sbi_hart_id_to_scratch() as macro
eeae3d9 firmware: fw_base: Optimize _hartid_to_scratch() implementation
16e7071 lib: sbi_hsm: Optimize sbi_hsm_hart_get_state() implementation
823345e include: Make sbi_current_hartid() as macro in riscv_asm.h
9aabba2 Makefile: Fix distclean make target
9275ed3 platform: ariane-fpga: Set per-HART stack size to 8KB
2343efd platform: Set per-HART stack size to 8KB in the template platform codes
72a0628 platform: Use one unified per-HART stack size macro for all platforms
327ba36 scripts: Cover sifive/fu540 in the 32-bit build
5fbcd62 lib: sbi: Update pmp_get() to return decoded size directly
dce8846 libfdt: Compile fdt_addresses.c
fcb1ded lib: utils: Add a fdt_reserved_memory_fixup() helper
666be6d platform: Clean up include header files
6af5576 lib: utils: Move PLIC DT fix up codes to fdt_helper.c
e846ce1 platform: andes/ae350: Fix up DT for reserved memory
8135520 platform: ariane-fpga: Fix up DT for reserved memory
c9a5268 platform: qemu/virt: Fix up DT for reserved memory
6f9bb83 platform: sifive/fu540: Fix up DT for reserved memory
1071f05 platform: sifive/fu540: Remove "stdout-path" fix-up
dd9439f lib: utils: Add a fdt_cpu_fixup() helper
3f1c847 platform: sifive/fu540: Replace cpu0 node fix-up with the new helper
db6a2b5 lib: utils: Add a general device tree fix-up helper
3f8d754 platform: Update to call general DT fix-up helper
87a7ef7 lib: sbi_scratch: Introduce HART id to scratch table
e23d3ba include: Simplify HART id to scratch macro
19bd531 lib: sbi_hsm: Simplify hart_get_state() and hart_started() APIs
3ebfe0e lib: sbi_tlb: Simplify sbi_tlb_entry_process() function
209134d lib: Handle failure of sbi_hartid_to_scratch() API
bd6ef02 include: sbi_platform: Improve sbi_platform_hart_disabled() API
c9f60fc lib: sbi_scratch: Don't set hartid_to_scratch table for disabled HART
680b098 lib: sbi_hsm: Don't use sbi_platform_hart_count() API
db187d6 lib: sbi_hsm: Remove scratch parameter from hart_started_mask() API
814f38d lib: sbi_hsm: Don't use sbi_platform_hart_disabled() API
75eec9d lib: Don't use sbi_platform_hart_count() API
c51f02c include: sbi_platform: Introduce HART index to HART id table
315a877 platform: sifive/fu540: Remove FU540_ENABLED_HART_MASK option
a0c88dd lib: Fix sbi_ecall_register_extension to prevent extension IDs overlap
9a74a64 lib: Check MSIP bit after returning from WFI
5968894 platform: Move ariane standalone fpga project to its own project
ed265b4 platform: fpga/ariane: Remove redundant plic address macros
fb84879 platform: Add OpenPiton platform support
d1d6560 platform: fpga/common: Add a fdt parsing helper functions
040e4e2 lib: utils: Move fdt fixup helper routines to a different file
4c37451 platform: openpiton: Read the device configurations from device tree
4d93586 lib: prevent coldboot_lottery from overflowing
550ba88 scripts: Extend create-binary-archive.sh for unified binary tar ball
160c885 lib: utils: Improve fdt_cpu_fixup() implementation
1de66d1 lib: Optimize unpriv load/store implementation
626467c lib: Remove scratch parameter from unpriv load/store functions
cb78a48 lib: sbi_trap: Remove scratch parameter from sbi_trap_redirect()
d11c79c lib: sbi_emulate_csr: Remove scratch and hartid parameter
5a7bd0c lib: sbi_illegal_insn: Remove mcause, scratch and hartid parameters
fe37d7d lib: sbi_misaligned_ldst: Remove mcause, scratch and hartid parameters
7487116 lib: sbi_ecall: Remove mcause, scratch and hartid parameters
40b221b lib: sbi_trap: Simplify sbi_trap_handler() API
7b211ff include: sbi_platform: Remove priv parameter from hart_start() callback
5b6957e include: Use more consistent name for atomic xchg() and cmpxchg()
dd0f21c lib: sbi_scratch: Introduce sbi_scratch_last_hartid() API
54b2779 include: sbi_tlb: Remove scratch parameter from sbi_tlb_request()
9e52a45 include: sbi_ipi: Remove scratch parameter from most functions
ec0d80f include: sbi_system: Remove scratch parameter and redundant functions
0a28ea5 include: sbi_timer: Remove scratch parameter from most funcitons
648507a include: sbi_console: Remove scratch parameter from sbi_dprintf()
e5a7f55 platform: thead/c910: Use HSM extension to boot secondary cores
f281de8 lib: irqchip/plic: Fix maximum priority threshold value
6c7922e lib: Support vector extension
615587c docs: Update README about supported SBI versions
66d0184 lib: Allow overriding SBI implementation ID
9f1b72c include: Bump-up version to 0.7

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
2020-04-29 13:16:38 -07:00
.github .github: Enable repo-lockdown bot to refuse GitHub pull requests 2020-04-07 16:19:18 +01:00
.gitlab-ci.d gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries 2020-03-16 17:03:50 -07:00
accel tcg: Remove softmmu code_gen_buffer fixed address 2020-03-28 14:09:44 -07:00
audio dsoundaudio: dsound_get_buffer_in should honor *size 2020-04-06 13:29:53 +02:00
authz
backends cryptodev: Fix cryptodev_builtin_cleanup() error API violation 2020-04-29 08:01:52 +02:00
block block/file-posix: Fix check_cache_dropped() error handling 2020-04-29 08:01:52 +02:00
bsd-user misc: Replace zero-length arrays with flexible array member (automatic) 2020-03-16 22:07:42 +01:00
capstone@22ead3e0bf
chardev chardev: Improve error report by calling error_setg_win32() 2020-03-09 13:36:15 +01:00
contrib vhost-user-gpu: Release memory returned by vu_queue_pop() with free() 2020-04-15 19:00:39 +01:00
crypto luks: extract qcrypto_block_calculate_payload_offset() 2020-03-11 12:42:29 +01:00
default-configs Add rx-softmmu 2020-03-19 17:58:05 +01:00
disas
docs Deprecate KVM support for AArch32 2020-04-14 17:20:22 +01:00
dtc@88f18909db
dump various: Remove suspicious '\' character outside of #define in C code 2020-04-29 08:01:51 +02:00
fpu softfloat: Fix BAD_SHIFT from normalizeFloatx80Subnormal 2020-04-07 16:19:49 +01:00
fsdev virtfs-proxy-helper: Make the helper_opts[] array const 2020-03-09 15:59:31 +01:00
gdb-xml target/rx: CPU definitions 2020-03-19 17:58:05 +01:00
hw riscv: sifive_e: Support changing CPU type 2020-04-29 13:16:37 -07:00
include riscv/sifive_u: Add a serial property to the sifive_u machine 2020-04-29 13:16:36 -07:00
io io: Fix qio_channel_socket_close() error handling 2020-04-29 08:01:52 +02:00
libdecnumber
linux-headers linux-headers: update 2020-02-26 18:57:07 +01:00
linux-user linux-user/riscv: fix up struct target_ucontext definition 2020-04-29 13:16:37 -07:00
migration migration/colo: Fix qmp_xen_colo_do_checkpoint() error handling 2020-04-29 08:01:52 +02:00
monitor migration: use "" instead of (null) for tls-authz 2020-03-25 12:31:38 +00:00
nbd nbd/server: use bdrv_dirty_bitmap_next_dirty_area 2020-03-18 14:03:46 -04:00
net net/colo-compare.c: Expose "expired_scan_cycle" to users 2020-03-31 21:14:35 +08:00
pc-bios roms: opensbi: Upgrade from v0.6 to v0.7 2020-04-29 13:16:38 -07:00
plugins lockable: add QemuRecMutex support 2020-03-17 15:18:45 +01:00
po
python/qemu python/qemu: Kill QEMU process if 'quit' doesn't work 2020-03-21 22:37:32 +00:00
qapi qmp: fix leak on callbacks that return both value and error 2020-04-02 14:55:46 -04:00
qga qga: Fix qmp_guest_suspend_{disk, ram}() error handling 2020-04-29 08:01:52 +02:00
qobject json: Fix check for unbalanced right curly brace 2020-04-07 13:10:11 +02:00
qom object-add: don't create return value if failed 2020-04-02 14:56:10 -04:00
replay
roms roms: opensbi: Upgrade from v0.6 to v0.7 2020-04-29 13:16:38 -07:00
scripts kernel-doc: Use c:struct for Sphinx 3.0 and later 2020-04-14 17:15:33 +01:00
scsi scsi/qemu-pr-helper: Fix out-of-bounds access to trnptid_list[] 2020-03-16 22:07:24 +01:00
slirp@2faae0f778 slirp: update to fix CVE-2020-1983 2020-04-21 18:39:20 +01:00
softmmu qemu-option: pass NULL rather than 0 to the id of qemu_opts_set() 2020-04-29 08:01:52 +02:00
storage-daemon qemu-storage-daemon: Add --monitor option 2020-03-06 17:21:28 +01:00
stubs hmp: Fail gracefully if chardev is already in use 2020-03-06 17:21:28 +01:00
target target/riscv: Add a sifive-e34 cpu type 2020-04-29 13:16:37 -07:00
tcg tcg/mips: mips sync* encode error 2020-04-12 14:07:07 -07:00
tests libqos: Give get_machine_allocator() internal linkage 2020-04-29 08:01:52 +02:00
tools/virtiofsd tools/virtiofsd/passthrough_ll: Fix double close() 2020-03-25 12:31:38 +00:00
trace tracing: only allow -trace to override -D if set 2020-02-25 20:20:23 +00:00
ui ui/input-linux: Do not ignore ioctl() return value 2020-03-25 09:55:03 +01:00
util qemu-img: Move is_valid_option_list() to qemu-img.c and rewrite 2020-04-29 08:01:52 +02:00
.cirrus.yml
.dir-locals.el
.editorconfig
.exrc
.gdbinit
.gitignore docs: Stop building qemu-doc 2020-03-06 11:06:55 +00:00
.gitlab-ci-edk2.yml
.gitlab-ci-opensbi.yml gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries 2020-03-16 17:03:50 -07:00
.gitlab-ci.yml gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries 2020-03-16 17:03:50 -07:00
.gitmodules
.gitpublish
.mailmap MAINTAINERS: Adjust maintainer's email 2020-03-17 13:51:24 +01:00
.patchew.yml
.readthedocs.yml
.shippable.yml
.travis.yml .travis.yml: Cache acceptance-test assets 2020-04-06 20:03:14 +02:00
arch_init.c Add rx-softmmu 2020-03-19 17:58:05 +01:00
balloon.c
block.c block: fix bdrv_root_attach_child forget to unref child_bs 2020-03-27 14:47:23 +01:00
blockdev-nbd.c blockdev-nbd: Boxed argument type for nbd-server-add 2020-03-06 17:21:28 +01:00
blockdev.c job: take each job's lock individually in job_txn_apply 2020-04-07 14:34:47 +02:00
blockjob.c job: refactor progress to separate object 2020-03-11 12:42:30 +01:00
bootdevice.c
Changelog
CODING_STYLE.rst
configure configure: disable PIE for Windows builds 2020-04-15 11:38:23 +01:00
COPYING
COPYING.LIB
cpus-common.c
cpus.c cpus: Proper range-checking for -icount shift=N 2020-04-29 08:01:52 +02:00
device_tree.c device_tree: Add info message when dumping dtb to file 2020-03-20 14:55:44 -07:00
disas.c
dma-helpers.c
exec-vary.c
exec.c exec: Fix for qemu_ram_resize() callback 2020-04-13 06:55:54 -04:00
gdbstub.c gdbstub: fix compiler complaining 2020-04-07 16:19:49 +01:00
gitdm.config
hmp-commands-info.hx Update comments in .hx files that mention Texinfo 2020-03-12 11:14:05 +00:00
hmp-commands.hx Update comments in .hx files that mention Texinfo 2020-03-12 11:14:05 +00:00
ioport.c
iothread.c
job-qmp.c job: take each job's lock individually in job_txn_apply 2020-04-07 14:34:47 +02:00
job.c job: take each job's lock individually in job_txn_apply 2020-04-07 14:34:47 +02:00
Kconfig.host
LICENSE
MAINTAINERS scripts/run-coverity-scan: Script to run Coverity Scan build 2020-04-14 09:44:31 +01:00
Makefile Makefile: Drop unused, broken target recurse-fuzz 2020-04-29 08:01:52 +02:00
Makefile.objs aspeed/smc: Add some tracing 2020-03-12 16:01:37 +00:00
Makefile.target update syscall numbers to linux 5.5 (with scripts) 2020-03-20 16:00:21 +00:00
memory_ldst.inc.c
memory_mapping.c
memory.c memory: Simplify memory_region_init_rom_nomigrate() to ease review 2020-03-17 15:18:46 +01:00
module-common.c
os-posix.c
os-win32.c
qdev-monitor.c virtio, pc: fixes, features 2020-02-27 19:15:15 +00:00
qemu-bridge-helper.c
qemu-edid.c
qemu-img-cmds.hx
qemu-img.c qemu-img: Reject broken -o "" 2020-04-29 08:01:52 +02:00
qemu-io-cmds.c
qemu-io.c
qemu-keymap.c
qemu-nbd.c
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx docs: Improve our gdbstub documentation 2020-04-14 13:15:40 +01:00
qemu-seccomp.c
qemu-storage-daemon.c qemu-storage-daemon: Add --monitor option 2020-03-06 17:21:28 +01:00
qemu.nsi qemu.nsi: Install Sphinx documentation 2020-03-09 16:45:00 +00:00
qemu.sasl
qtest.c qtest: fix fuzzer-related 80-char limit violations 2020-03-06 10:33:26 +00:00
README.rst
replication.c
replication.h
rules.mak build-sys: Move the print-variable rule to rules.mak 2020-03-09 15:59:31 +01:00
thunk.c
tpm.c
trace-events
VERSION Open 5.1 development tree 2020-04-29 15:07:10 +01:00
version.rc

===========
QEMU README
===========

QEMU is a generic and open source machine & userspace emulator and
virtualizer.

QEMU is capable of emulating a complete machine in software without any
need for hardware virtualization support. By using dynamic translation,
it achieves very good performance. QEMU can also integrate with the Xen
and KVM hypervisors to provide emulated hardware while allowing the
hypervisor to manage the CPU. With hypervisor support, QEMU can achieve
near native performance for CPUs. When QEMU emulates CPUs directly it is
capable of running operating systems made for one machine (e.g. an ARMv7
board) on a different machine (e.g. an x86_64 PC board).

QEMU is also capable of providing userspace API virtualization for Linux
and BSD kernel interfaces. This allows binaries compiled against one
architecture ABI (e.g. the Linux PPC64 ABI) to be run on a host using a
different architecture ABI (e.g. the Linux x86_64 ABI). This does not
involve any hardware emulation, simply CPU and syscall emulation.

QEMU aims to fit into a variety of use cases. It can be invoked directly
by users wishing to have full control over its behaviour and settings.
It also aims to facilitate integration into higher level management
layers, by providing a stable command line interface and monitor API.
It is commonly invoked indirectly via the libvirt library when using
open source applications such as oVirt, OpenStack and virt-manager.

QEMU as a whole is released under the GNU General Public License,
version 2. For full licensing details, consult the LICENSE file.


Building
========

QEMU is multi-platform software intended to be buildable on all modern
Linux platforms, OS-X, Win32 (via the Mingw64 toolchain) and a variety
of other UNIX targets. The simple steps to build QEMU are:


.. code-block:: shell

  mkdir build
  cd build
  ../configure
  make

Additional information can also be found online via the QEMU website:

* `<https://qemu.org/Hosts/Linux>`_
* `<https://qemu.org/Hosts/Mac>`_
* `<https://qemu.org/Hosts/W32>`_


Submitting patches
==================

The QEMU source code is maintained under the GIT version control system.

.. code-block:: shell

   git clone https://git.qemu.org/git/qemu.git

When submitting patches, one common approach is to use 'git
format-patch' and/or 'git send-email' to format & send the mail to the
qemu-devel@nongnu.org mailing list. All patches submitted must contain
a 'Signed-off-by' line from the author. Patches should follow the
guidelines set out in the CODING_STYLE.rst file.

Additional information on submitting patches can be found online via
the QEMU website

* `<https://qemu.org/Contribute/SubmitAPatch>`_
* `<https://qemu.org/Contribute/TrivialPatches>`_

The QEMU website is also maintained under source control.

.. code-block:: shell

  git clone https://git.qemu.org/git/qemu-web.git

* `<https://www.qemu.org/2017/02/04/the-new-qemu-website-is-up/>`_

A 'git-publish' utility was created to make above process less
cumbersome, and is highly recommended for making regular contributions,
or even just for sending consecutive patch series revisions. It also
requires a working 'git send-email' setup, and by default doesn't
automate everything, so you may want to go through the above steps
manually for once.

For installation instructions, please go to

*  `<https://github.com/stefanha/git-publish>`_

The workflow with 'git-publish' is:

.. code-block:: shell

  $ git checkout master -b my-feature
  $ # work on new commits, add your 'Signed-off-by' lines to each
  $ git publish

Your patch series will be sent and tagged as my-feature-v1 if you need to refer
back to it in the future.

Sending v2:

.. code-block:: shell

  $ git checkout my-feature # same topic branch
  $ # making changes to the commits (using 'git rebase', for example)
  $ git publish

Your patch series will be sent with 'v2' tag in the subject and the git tip
will be tagged as my-feature-v2.

Bug reporting
=============

The QEMU project uses Launchpad as its primary upstream bug tracker. Bugs
found when running code built from QEMU git or upstream released sources
should be reported via:

* `<https://bugs.launchpad.net/qemu/>`_

If using QEMU via an operating system vendor pre-built binary package, it
is preferable to report bugs to the vendor's own bug tracker first. If
the bug is also known to affect latest upstream code, it can also be
reported via launchpad.

For additional information on bug reporting consult:

* `<https://qemu.org/Contribute/ReportABug>`_


Contact
=======

The QEMU community can be contacted in a number of ways, with the two
main methods being email and IRC

* `<mailto:qemu-devel@nongnu.org>`_
* `<https://lists.nongnu.org/mailman/listinfo/qemu-devel>`_
* #qemu on irc.oftc.net

Information on additional methods of contacting the community can be
found online via the QEMU website:

* `<https://qemu.org/Contribute/StartHere>`_