mirror of https://gitee.com/openkylin/qemu.git
Pull request trivial patches 20200919
-----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAl9mUVcSHGxhdXJlbnRA dml2aWVyLmV1AAoJEPMMOL0/L748c5IP/2Jh7HuM5LpGuhca81zCnUxIHnnfXLpR YXbRsD/q4VrCe9WxFZeyul1zcCpV4BnLNqsWA2PH44at+vcvCuXLU9vVzar1SMTh pAwuXc4qGkV4zttLzzYwkimQLxHl1Cy7RtoLJB7GjLj0A/VBvD7Z2cO2KSF4EOzU KQAHcIm8WYWjZy8lx5ZrCvq5KkPHMK+XvVxD+v/gXVWzU23wFMVJwhzi2PXqetRe RnAFA8tF3xlvXTJmeqqN277Otv6WLnANe1rjr/w4j5tUINaaiAX/gWkrwcFZprjo 1p0E3o8ztrtql7B8DWH+xWLeFUpq3Qd9Ztp4ujFmpWQysbCZ6BWFocAz+v4Dd0F3 luJP0e8X5hQAzJiu9aucOKpnUHaieWamo5J+5pWezTGB0wNYgnhRDp2LAefadV+I WmDjIWtZZ3Je48qT0bGzh+p8ZSqGQx/a5xx6eXr7MdlNhiWIV/evqotU2MoLnO7d QhQevHlk7nxayk3laVA4nTwJRdtEN8zfbuAB+gMZZvR11yBNrBm6q7oMNhkuP0QV glcta70RE7Nfa4TZaFzEzrjiF6V0k0+TtGY0VPB/0xjtCepiwOuoVbEjSe4arJ7Z 1LkGY45Rdaas8yqWwZGAjbFWTkke85v+S8g2lCj/HihgfPf585uRZVPhJ9sIGc9w JcWyaIFsgHh8 =MxMx -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-for-5.2-pull-request' into staging Pull request trivial patches 20200919 # gpg: Signature made Sat 19 Sep 2020 19:43:35 BST # gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C # gpg: issuer "laurent@vivier.eu" # gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full] # gpg: aka "Laurent Vivier <laurent@vivier.eu>" [full] # gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full] # Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C * remotes/vivier2/tags/trivial-branch-for-5.2-pull-request: contrib/: fix some comment spelling errors qapi/: fix some comment spelling errors disas/: fix some comment spelling errors linux-user/: fix some comment spelling errors util/: fix some comment spelling errors scripts/: fix some comment spelling errors docs/: fix some comment spelling errors migration/: fix some comment spelling errors qemu/: fix some comment spelling errors scripts/git.orderfile: Display meson files along with buildsys ones hw/timer/hpet: Fix debug format strings hw/timer/hpet: Remove unused functions hpet_ram_readb, hpet_ram_readw meson: remove empty else and duplicated gio deps manual: escape backslashes in "parsed-literal" blocks ui/spice-input: Remove superfluous forward declaration hw/ppc/ppc4xx_pci: Replace magic value by the PCI_NUM_PINS definition hw/gpio/max7310: Remove impossible check Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
834b9273d5
|
@ -241,7 +241,7 @@ version 0.8.0:
|
|||
version 0.7.2:
|
||||
|
||||
- x86_64 fixes (Win2000 and Linux 2.6 boot in 32 bit)
|
||||
- merge self modifying code handling in dirty ram page mecanism.
|
||||
- merge self modifying code handling in dirty ram page mechanism.
|
||||
- MIPS fixes (Ralf Baechle)
|
||||
- better user net performances
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ static inline int handle_cpu_signal(uintptr_t pc, siginfo_t *info,
|
|||
* use that value directly. Within cpu_restore_state_from_tb, we
|
||||
* assume PC comes from GETPC(), as used by the helper functions,
|
||||
* so we adjust the address by -GETPC_ADJ to form an address that
|
||||
* is within the call insn, so that the address does not accidentially
|
||||
* is within the call insn, so that the address does not accidentally
|
||||
* match the beginning of the next guest insn. However, when the
|
||||
* pc comes from the signal frame it points to the actual faulting
|
||||
* host memory insn and not the return from a call insn.
|
||||
|
|
|
@ -1674,7 +1674,7 @@ static AudioState *audio_init(Audiodev *dev, const char *name)
|
|||
head = audio_handle_legacy_opts();
|
||||
/*
|
||||
* In case of legacy initialization, all Audiodevs in the list will have
|
||||
* the same configuration (except the driver), so it does't matter which
|
||||
* the same configuration (except the driver), so it doesn't matter which
|
||||
* one we chose. We need an Audiodev to set up AudioState before we can
|
||||
* init a driver. Also note that dev at this point is still in the
|
||||
* list.
|
||||
|
|
2
block.c
2
block.c
|
@ -2602,7 +2602,7 @@ static void bdrv_replace_child_noperm(BdrvChild *child,
|
|||
|
||||
/*
|
||||
* Updates @child to change its reference to point to @new_bs, including
|
||||
* checking and applying the necessary permisson updates both to the old node
|
||||
* checking and applying the necessary permission updates both to the old node
|
||||
* and to @new_bs.
|
||||
*
|
||||
* NULL is passed as @new_bs for removing the reference before freeing @child.
|
||||
|
|
|
@ -3415,7 +3415,7 @@ EOF
|
|||
xfs="yes"
|
||||
else
|
||||
if test "$xfs" = "yes" ; then
|
||||
feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
|
||||
feature_not_found "xfs" "Install xfsprogs/xfslibs devel"
|
||||
fi
|
||||
xfs=no
|
||||
fi
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
# in the gitdm sample-config directory.
|
||||
#
|
||||
# This file contains associations parameters regarding filetypes
|
||||
# (documentation, develompent, multimedia, images...)
|
||||
# (documentation, development, multimedia, images...)
|
||||
#
|
||||
# format:
|
||||
# filetype <type> <regex> [<comment>]
|
||||
|
@ -59,8 +59,8 @@ filetype code \.s$ # Assembly
|
|||
filetype code \.S$ # Assembly
|
||||
filetype code \.asm$ # Assembly
|
||||
filetype code \.awk$ # awk
|
||||
filetype code ^common$ # script fragements
|
||||
filetype code ^common.*$ # script fragements
|
||||
filetype code ^common$ # script fragments
|
||||
filetype code ^common.*$ # script fragments
|
||||
filetype code (qom|qmp)-\w+$ # python script fragments
|
||||
|
||||
#
|
||||
|
|
|
@ -174,7 +174,7 @@ int ivshmem_client_notify_all_vects(const IvshmemClient *client,
|
|||
const IvshmemClientPeer *peer);
|
||||
|
||||
/**
|
||||
* Broadcat a notification to all vectors of all peers
|
||||
* Broadcast a notification to all vectors of all peers
|
||||
*
|
||||
* @client: The ivshmem client
|
||||
*
|
||||
|
|
|
@ -684,7 +684,7 @@ vu_add_mem_reg(VuDev *dev, VhostUserMsg *vmsg) {
|
|||
|
||||
/*
|
||||
* If we are in postcopy mode and we receive a u64 payload with a 0 value
|
||||
* we know all the postcopy client bases have been recieved, and we
|
||||
* we know all the postcopy client bases have been received, and we
|
||||
* should start generating faults.
|
||||
*/
|
||||
if (track_ramblocks &&
|
||||
|
@ -973,7 +973,7 @@ vu_set_mem_table_exec(VuDev *dev, VhostUserMsg *vmsg)
|
|||
for (i = 0; i < dev->max_queues; i++) {
|
||||
if (dev->vq[i].vring.desc) {
|
||||
if (map_ring(dev, &dev->vq[i])) {
|
||||
vu_panic(dev, "remaping queue %d during setmemtable", i);
|
||||
vu_panic(dev, "remapping queue %d during setmemtable", i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -424,7 +424,7 @@ typedef struct VuVirtqElement {
|
|||
* @remove_watch: a remove_watch callback
|
||||
* @iface: a VuDevIface structure with vhost-user device callbacks
|
||||
*
|
||||
* Intializes a VuDev vhost-user context.
|
||||
* Initializes a VuDev vhost-user context.
|
||||
*
|
||||
* Returns: true on success, false on failure.
|
||||
**/
|
||||
|
|
|
@ -2021,7 +2021,7 @@ print_insn_hppa (bfd_vma memaddr, disassemble_info *info)
|
|||
fput_fp_reg (GET_FIELD (insn, 6, 10), info);
|
||||
break;
|
||||
|
||||
/* 'fA' will not generate a space before the regsiter
|
||||
/* 'fA' will not generate a space before the register
|
||||
name. Normally that is fine. Except that it
|
||||
causes problems with xmpyu which has no FP format
|
||||
completer. */
|
||||
|
|
|
@ -70,7 +70,7 @@ struct floatformat
|
|||
unsigned int exp_start;
|
||||
unsigned int exp_len;
|
||||
/* Bias added to a "true" exponent to form the biased exponent. It
|
||||
is intentionally signed as, otherwize, -exp_bias can turn into a
|
||||
is intentionally signed as, otherwise, -exp_bias can turn into a
|
||||
very large number (e.g., given the exp_bias of 0x3fff and a 64
|
||||
bit long, the equation (long)(1 - exp_bias) evaluates to
|
||||
4294950914) instead of -16382). */
|
||||
|
@ -479,7 +479,7 @@ struct m68k_opcode_alias
|
|||
and remaining 3 bits of register shifted 9 bits in first word.
|
||||
Indicate upper/lower in 1 bit shifted 7 bits in second word.
|
||||
Use with `R' or `u' format.
|
||||
n `m' withouth upper/lower indication. (For M[S]ACx; 4 bits split
|
||||
n `m' without upper/lower indication. (For M[S]ACx; 4 bits split
|
||||
with MSB shifted 6 bits in first word and remaining 3 bits of
|
||||
register shifted 9 bits in first word. No upper/lower
|
||||
indication is done.) Use with `R' or `u' format.
|
||||
|
@ -854,7 +854,7 @@ fetch_arg (unsigned char *buffer,
|
|||
|
||||
/* Check if an EA is valid for a particular code. This is required
|
||||
for the EMAC instructions since the type of source address determines
|
||||
if it is a EMAC-load instruciton if the EA is mode 2-5, otherwise it
|
||||
if it is a EMAC-load instruction if the EA is mode 2-5, otherwise it
|
||||
is a non-load EMAC instruction and the bits mean register Ry.
|
||||
A similar case exists for the movem instructions where the register
|
||||
mask is interpreted differently for different EAs. */
|
||||
|
@ -1080,7 +1080,7 @@ print_indexed (int basereg,
|
|||
|
||||
/* Returns number of bytes "eaten" by the operand, or
|
||||
return -1 if an invalid operand was found, or -2 if
|
||||
an opcode tabe error was found.
|
||||
an opcode table error was found.
|
||||
ADDR is the pc for this arg to be relative to. */
|
||||
|
||||
static int
|
||||
|
|
|
@ -5226,7 +5226,7 @@ operand_value_powerpc (const struct powerpc_operand *operand,
|
|||
if ((operand->flags & PPC_OPERAND_SIGNED) != 0)
|
||||
{
|
||||
/* BITM is always some number of zeros followed by some
|
||||
number of ones, followed by some numer of zeros. */
|
||||
number of ones, followed by some number of zeros. */
|
||||
unsigned long top = operand->bitm;
|
||||
/* top & -top gives the rightmost 1 bit, so this
|
||||
fills in any trailing zeros. */
|
||||
|
|
|
@ -91,7 +91,7 @@ the heartbeat stops responding, the secondary node will trigger a failover
|
|||
as soon as it determines the absence.
|
||||
|
||||
COLO disk Manager:
|
||||
When primary VM writes data into image, the colo disk manger captures this data
|
||||
When primary VM writes data into image, the colo disk manager captures this data
|
||||
and sends it to secondary VM's which makes sure the context of secondary VM's
|
||||
image is consistent with the context of primary VM 's image.
|
||||
For more details, please refer to docs/block-replication.txt.
|
||||
|
@ -146,12 +146,12 @@ in test procedure.
|
|||
|
||||
== Test procedure ==
|
||||
Note: Here we are running both instances on the same host for testing,
|
||||
change the IP Addresses if you want to run it on two hosts. Initally
|
||||
change the IP Addresses if you want to run it on two hosts. Initially
|
||||
127.0.0.1 is the Primary Host and 127.0.0.2 is the Secondary Host.
|
||||
|
||||
== Startup qemu ==
|
||||
1. Primary:
|
||||
Note: Initally, $imagefolder/primary.qcow2 needs to be copied to all hosts.
|
||||
Note: Initially, $imagefolder/primary.qcow2 needs to be copied to all hosts.
|
||||
You don't need to change any IP's here, because 0.0.0.0 listens on any
|
||||
interface. The chardev's with 127.0.0.1 IP's loopback to the local qemu
|
||||
instance.
|
||||
|
|
|
@ -62,7 +62,7 @@ Rules support the following attributes:
|
|||
|
||||
errno - the numeric errno value to return when a request matches this rule.
|
||||
The errno values depend on the host since the numeric values are not
|
||||
standarized in the POSIX specification.
|
||||
standardized in the POSIX specification.
|
||||
|
||||
sector - (optional) a sector number that the request must overlap in order to
|
||||
match this rule
|
||||
|
|
|
@ -625,7 +625,7 @@ It can be issued immediately after migration is started or any
|
|||
time later on. Issuing it after the end of a migration is harmless.
|
||||
|
||||
Blocktime is a postcopy live migration metric, intended to show how
|
||||
long the vCPU was in state of interruptable sleep due to pagefault.
|
||||
long the vCPU was in state of interruptible sleep due to pagefault.
|
||||
That metric is calculated both for all vCPUs as overlapped value, and
|
||||
separately for each vCPU. These values are calculated on destination
|
||||
side. To enable postcopy blocktime calculation, enter following
|
||||
|
|
|
@ -471,7 +471,7 @@ the warning.
|
|||
A few important files for suppressing warnings are:
|
||||
|
||||
tests/tsan/suppressions.tsan - Has TSan warnings we wish to suppress at runtime.
|
||||
The comment on each supression will typically indicate why we are
|
||||
The comment on each suppression will typically indicate why we are
|
||||
suppressing it. More information on the file format can be found here:
|
||||
|
||||
https://github.com/google/sanitizers/wiki/ThreadSanitizerSuppressions
|
||||
|
|
|
@ -55,7 +55,7 @@ without any sub-directory path prefix. eg io/channel-buffer.c would do
|
|||
#include "trace.h"
|
||||
|
||||
To access the 'io/trace.h' file. While it is possible to include a trace.h
|
||||
file from outside a source files' own sub-directory, this is discouraged in
|
||||
file from outside a source file's own sub-directory, this is discouraged in
|
||||
general. It is strongly preferred that all events be declared directly in
|
||||
the sub-directory that uses them. The only exception is where there are some
|
||||
shared trace events defined in the top level directory trace-events file.
|
||||
|
|
|
@ -484,7 +484,7 @@ Bitmaps can generally be modified at any time, but certain operations often
|
|||
only make sense when paired directly with other commands. When a VM is paused,
|
||||
it's easy to ensure that no guest writes occur between individual QMP
|
||||
commands. When a VM is running, this is difficult to accomplish with
|
||||
individual QMP commands that may allow guest writes to occur inbetween each
|
||||
individual QMP commands that may allow guest writes to occur between each
|
||||
command.
|
||||
|
||||
For example, using only individual QMP commands, we could:
|
||||
|
|
|
@ -57,7 +57,7 @@ Depending on the use case, you may choose different scenarios:
|
|||
- Everything the same UID
|
||||
|
||||
- Convenient for developers
|
||||
- Improved reliability - crash of one part doens't take
|
||||
- Improved reliability - crash of one part doesn't take
|
||||
out entire VM
|
||||
- No security benefit over traditional QEMU, unless additional
|
||||
unless additional controls such as SELinux or AppArmor are
|
||||
|
@ -87,7 +87,7 @@ For example, to allow only ``qemu`` user to talk to ``qemu-helper``
|
|||
</policy>
|
||||
|
||||
|
||||
dbus-daemon can also perfom SELinux checks based on the security
|
||||
dbus-daemon can also perform SELinux checks based on the security
|
||||
context of the source and the target. For example, ``virtiofs_t``
|
||||
could be allowed to send a message to ``svirt_t``, but ``virtiofs_t``
|
||||
wouldn't be allowed to send a message to ``virtiofs_t``.
|
||||
|
|
|
@ -53,5 +53,5 @@ the operation of that feature.
|
|||
* 2.12: NBD_CMD_BLOCK_STATUS for "base:allocation"
|
||||
* 3.0: NBD_OPT_STARTTLS with TLS Pre-Shared Keys (PSK),
|
||||
NBD_CMD_BLOCK_STATUS for "qemu:dirty-bitmap:", NBD_CMD_CACHE
|
||||
* 4.2: NBD_FLAG_CAN_MULTI_CONN for sharable read-only exports,
|
||||
* 4.2: NBD_FLAG_CAN_MULTI_CONN for shareable read-only exports,
|
||||
NBD_CMD_FLAG_FAST_ZERO
|
||||
|
|
|
@ -66,7 +66,7 @@ VhostUserGpuCursorPos
|
|||
|
||||
:scanout-id: ``u32``, the scanout where the cursor is located
|
||||
|
||||
:x/y: ``u32``, the cursor postion
|
||||
:x/y: ``u32``, the cursor position
|
||||
|
||||
VhostUserGpuCursorUpdate
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
|
@ -464,7 +464,7 @@ the ``VHOST_USER_SET_MEM_TABLE`` request. For invalidation events, the
|
|||
(3), the I/O virtual address and the size. On success, the slave is
|
||||
expected to reply with a zero payload, non-zero otherwise.
|
||||
|
||||
The slave relies on the slave communcation channel (see :ref:`Slave
|
||||
The slave relies on the slave communication channel (see :ref:`Slave
|
||||
communication <slave_communication>` section below) to send IOTLB miss
|
||||
and access failure events, by sending ``VHOST_USER_SLAVE_IOTLB_MSG``
|
||||
requests to the master with a ``struct vhost_iotlb_msg`` as
|
||||
|
@ -1450,7 +1450,7 @@ vhost-user backends can provide various devices & services and may
|
|||
need to be configured manually depending on the use case. However, it
|
||||
is a good idea to follow the conventions listed here when
|
||||
possible. Users, QEMU or libvirt, can then rely on some common
|
||||
behaviour to avoid heterogenous configuration and management of the
|
||||
behaviour to avoid heterogeneous configuration and management of the
|
||||
backend programs and facilitate interoperability.
|
||||
|
||||
Each backend installed on a host system should come with at least one
|
||||
|
|
|
@ -261,7 +261,7 @@ qemu_rdma_exchange_send(header, data, optional response header & data):
|
|||
of the connection (described below).
|
||||
|
||||
All of the remaining command types (not including 'ready')
|
||||
described above all use the aformentioned two functions to do the hard work:
|
||||
described above all use the aforementioned two functions to do the hard work:
|
||||
|
||||
1. After connection setup, RAMBlock information is exchanged using
|
||||
this protocol before the actual migration begins. This information includes
|
||||
|
|
|
@ -371,7 +371,7 @@ ibm,dynamic-memory
|
|||
|
||||
This property describes the dynamically reconfigurable memory. It is a
|
||||
property encoded array that has an integer N, the number of LMBs followed
|
||||
by N LMB list entires.
|
||||
by N LMB list entries.
|
||||
|
||||
Each LMB list entry consists of the following elements:
|
||||
|
||||
|
@ -390,7 +390,7 @@ Each LMB list entry consists of the following elements:
|
|||
ibm,dynamic-memory-v2
|
||||
|
||||
This property describes the dynamically reconfigurable memory. This is
|
||||
an alternate and newer way to describe dyanamically reconfigurable memory.
|
||||
an alternate and newer way to describe dynamically reconfigurable memory.
|
||||
It is a property encoded array that has an integer N (the number of
|
||||
LMB set entries) followed by N LMB set entries. There is an LMB set entry
|
||||
for each sequential group of LMBs that share common attributes.
|
||||
|
|
|
@ -46,7 +46,7 @@ default mode. ``dual`` means that both modes XICS **and** XIVE are
|
|||
supported and if the guest OS supports XIVE, this mode will be
|
||||
selected.
|
||||
|
||||
The choosen interrupt mode is activated after a reconfiguration done
|
||||
The chosen interrupt mode is activated after a reconfiguration done
|
||||
in a machine reset.
|
||||
|
||||
KVM negotiation
|
||||
|
@ -158,7 +158,7 @@ XIVE Device tree properties
|
|||
---------------------------
|
||||
|
||||
The properties for the PAPR interrupt controller node when the *XIVE
|
||||
native exploitation mode* is selected shoud contain:
|
||||
native exploitation mode* is selected should contain:
|
||||
|
||||
- ``device_type``
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ Boot options
|
|||
------------
|
||||
|
||||
The Aspeed machines can be started using the -kernel option to load a
|
||||
Linux kernel or from a firmare image which can be downloaded from the
|
||||
Linux kernel or from a firmware image which can be downloaded from the
|
||||
OpenPOWER jenkins :
|
||||
|
||||
https://openpower.xyz/
|
||||
|
|
|
@ -79,7 +79,7 @@ Creating sound card devices and vnc without ``audiodev=`` property (since 4.2)
|
|||
|
||||
When not using the deprecated legacy audio config, each sound card
|
||||
should specify an ``audiodev=`` property. Additionally, when using
|
||||
vnc, you should specify an ``audiodev=`` propery if you plan to
|
||||
vnc, you should specify an ``audiodev=`` property if you plan to
|
||||
transmit audio through the VNC protocol.
|
||||
|
||||
Creating sound card devices using ``-soundhw`` (since 5.1)
|
||||
|
@ -111,7 +111,7 @@ Splitting RAM by default between NUMA nodes has the same issues as ``mem``
|
|||
parameter described above with the difference that the role of the user plays
|
||||
QEMU using implicit generic or board specific splitting rule.
|
||||
Use ``memdev`` with *memory-backend-ram* backend or ``mem`` (if
|
||||
it's supported by used machine type) to define mapping explictly instead.
|
||||
it's supported by used machine type) to define mapping explicitly instead.
|
||||
|
||||
``-mem-path`` fallback to RAM (since 4.1)
|
||||
'''''''''''''''''''''''''''''''''''''''''
|
||||
|
@ -541,10 +541,10 @@ The ``[hub_id name]`` parameter tuple of the 'hostfwd_add' and
|
|||
Guest Emulator ISAs
|
||||
-------------------
|
||||
|
||||
RISC-V ISA privledge specification version 1.09.1 (removed in 5.1)
|
||||
RISC-V ISA privilege specification version 1.09.1 (removed in 5.1)
|
||||
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
The RISC-V ISA privledge specification version 1.09.1 has been removed.
|
||||
The RISC-V ISA privilege specification version 1.09.1 has been removed.
|
||||
QEMU supports both the newer version 1.10.0 and the ratified version 1.11.0, these
|
||||
should be used instead of the 1.09.1 version.
|
||||
|
||||
|
|
|
@ -25,8 +25,8 @@ These are specified using a special URL syntax.
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
|qemu_system| -iscsi initiator-name=iqn.2001-04.com.example:my-initiator \
|
||||
-cdrom iscsi://192.0.2.1/iqn.2001-04.com.example/2 \
|
||||
|qemu_system| -iscsi initiator-name=iqn.2001-04.com.example:my-initiator \\
|
||||
-cdrom iscsi://192.0.2.1/iqn.2001-04.com.example/2 \\
|
||||
-drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1
|
||||
|
||||
Example (CHAP username/password via URL):
|
||||
|
@ -39,8 +39,8 @@ These are specified using a special URL syntax.
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
LIBISCSI_CHAP_USERNAME="user" \
|
||||
LIBISCSI_CHAP_PASSWORD="password" \
|
||||
LIBISCSI_CHAP_USERNAME="user" \\
|
||||
LIBISCSI_CHAP_PASSWORD="password" \\
|
||||
|qemu_system| -drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1
|
||||
|
||||
``NBD``
|
||||
|
|
|
@ -10,7 +10,7 @@ xmega6 and xmega7.
|
|||
|
||||
As for now it supports few Arduino boards for educational and testing purposes.
|
||||
These boards use a ATmega controller, which model is limited to USART & 16-bit
|
||||
timer devices, enought to run FreeRTOS based applications (like
|
||||
timer devices, enough to run FreeRTOS based applications (like
|
||||
https://github.com/seharris/qemu-avr-tests/blob/master/free-rtos/Demo/AVR_ATMega2560_GCC/demo.elf
|
||||
).
|
||||
|
||||
|
@ -30,7 +30,7 @@ AVR cpu
|
|||
|
||||
telnet localhost 5678
|
||||
|
||||
- Debugging wit GDB debugger::
|
||||
- Debugging with GDB debugger::
|
||||
|
||||
qemu-system-avr -machine mega2560 -bios demo.elf -s -S
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ Options
|
|||
I/O timeout in seconds. The default depends on cache= option.
|
||||
|
||||
* writeback|no_writeback -
|
||||
Enable/disable writeback cache. The cache alows the FUSE client to buffer
|
||||
Enable/disable writeback cache. The cache allows the FUSE client to buffer
|
||||
and merge write requests. The default is ``no_writeback``.
|
||||
|
||||
* xattr|no_xattr -
|
||||
|
|
|
@ -518,7 +518,7 @@ static void statfs_to_prstatfs(ProxyStatFS *pr_stfs, struct statfs *stfs)
|
|||
|
||||
/*
|
||||
* Gets stat/statfs information and packs in out_iovec structure
|
||||
* on success returns number of bytes packed in out_iovec struture
|
||||
* on success returns number of bytes packed in out_iovec structure
|
||||
* otherwise returns -errno
|
||||
*/
|
||||
static int do_stat(int type, struct iovec *iovec, struct iovec *out_iovec)
|
||||
|
|
|
@ -1267,7 +1267,7 @@ ERST
|
|||
},
|
||||
SRST
|
||||
``drive_backup``
|
||||
Start a point-in-time copy of a block device to a specificed target.
|
||||
Start a point-in-time copy of a block device to a specified target.
|
||||
ERST
|
||||
|
||||
{
|
||||
|
|
|
@ -8,9 +8,7 @@
|
|||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "hw/hw.h"
|
||||
#include "hw/i2c/i2c.h"
|
||||
#include "hw/hw.h"
|
||||
#include "hw/irq.h"
|
||||
#include "migration/vmstate.h"
|
||||
#include "qemu/log.h"
|
||||
|
@ -173,8 +171,7 @@ static const VMStateDescription vmstate_max7310 = {
|
|||
static void max7310_gpio_set(void *opaque, int line, int level)
|
||||
{
|
||||
MAX7310State *s = (MAX7310State *) opaque;
|
||||
if (line >= ARRAY_SIZE(s->handler) || line < 0)
|
||||
hw_error("bad GPIO line");
|
||||
assert(line >= 0 && line < ARRAY_SIZE(s->handler));
|
||||
|
||||
if (level)
|
||||
s->level |= s->direction & (1 << line);
|
||||
|
|
|
@ -54,7 +54,7 @@ struct PPC4xxPCIState {
|
|||
|
||||
struct PCIMasterMap pmm[PPC4xx_PCI_NR_PMMS];
|
||||
struct PCITargetMap ptm[PPC4xx_PCI_NR_PTMS];
|
||||
qemu_irq irq[4];
|
||||
qemu_irq irq[PCI_NUM_PINS];
|
||||
|
||||
MemoryRegion container;
|
||||
MemoryRegion iomem;
|
||||
|
|
|
@ -417,20 +417,6 @@ static void hpet_del_timer(HPETTimer *t)
|
|||
update_irq(t, 0);
|
||||
}
|
||||
|
||||
#ifdef HPET_DEBUG
|
||||
static uint32_t hpet_ram_readb(void *opaque, hwaddr addr)
|
||||
{
|
||||
printf("qemu: hpet_read b at %" PRIx64 "\n", addr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint32_t hpet_ram_readw(void *opaque, hwaddr addr)
|
||||
{
|
||||
printf("qemu: hpet_read w at %" PRIx64 "\n", addr);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static uint64_t hpet_ram_read(void *opaque, hwaddr addr,
|
||||
unsigned size)
|
||||
{
|
||||
|
@ -510,7 +496,8 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
|
|||
HPETState *s = opaque;
|
||||
uint64_t old_val, new_val, val, index;
|
||||
|
||||
DPRINTF("qemu: Enter hpet_ram_writel at %" PRIx64 " = %#x\n", addr, value);
|
||||
DPRINTF("qemu: Enter hpet_ram_writel at %" PRIx64 " = 0x%" PRIx64 "\n",
|
||||
addr, value);
|
||||
index = addr;
|
||||
old_val = hpet_ram_read(opaque, addr, 4);
|
||||
new_val = value;
|
||||
|
@ -520,7 +507,7 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
|
|||
uint8_t timer_id = (addr - 0x100) / 0x20;
|
||||
HPETTimer *timer = &s->timer[timer_id];
|
||||
|
||||
DPRINTF("qemu: hpet_ram_writel timer_id = %#x\n", timer_id);
|
||||
DPRINTF("qemu: hpet_ram_writel timer_id = 0x%x\n", timer_id);
|
||||
if (timer_id > s->num_timers) {
|
||||
DPRINTF("qemu: timer id out of range\n");
|
||||
return;
|
||||
|
@ -652,8 +639,8 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
|
|||
}
|
||||
s->hpet_counter =
|
||||
(s->hpet_counter & 0xffffffff00000000ULL) | value;
|
||||
DPRINTF("qemu: HPET counter written. ctr = %#x -> %" PRIx64 "\n",
|
||||
value, s->hpet_counter);
|
||||
DPRINTF("qemu: HPET counter written. ctr = 0x%" PRIx64 " -> "
|
||||
"%" PRIx64 "\n", value, s->hpet_counter);
|
||||
break;
|
||||
case HPET_COUNTER + 4:
|
||||
if (hpet_enabled(s)) {
|
||||
|
@ -661,8 +648,8 @@ static void hpet_ram_write(void *opaque, hwaddr addr,
|
|||
}
|
||||
s->hpet_counter =
|
||||
(s->hpet_counter & 0xffffffffULL) | (((uint64_t)value) << 32);
|
||||
DPRINTF("qemu: HPET counter + 4 written. ctr = %#x -> %" PRIx64 "\n",
|
||||
value, s->hpet_counter);
|
||||
DPRINTF("qemu: HPET counter + 4 written. ctr = 0x%" PRIx64 " -> "
|
||||
"%" PRIx64 "\n", value, s->hpet_counter);
|
||||
break;
|
||||
default:
|
||||
DPRINTF("qemu: invalid hpet_ram_writel\n");
|
||||
|
|
|
@ -5626,7 +5626,7 @@ static const uShort LNnn[90] = {
|
|||
/* would certainly save at least one if it were made ten times */
|
||||
/* bigger, too (for truncated fractions 0.100 through 0.999). */
|
||||
/* However, for most practical evaluations, at least four or five */
|
||||
/* iterations will be neede -- so this would only speed up by */
|
||||
/* iterations will be needed -- so this would only speed up by */
|
||||
/* 20-25% and that probably does not justify increasing the table */
|
||||
/* size. */
|
||||
/* */
|
||||
|
|
|
@ -78,7 +78,7 @@ struct target_sve_context {
|
|||
struct target_aarch64_ctx head;
|
||||
uint16_t vl;
|
||||
uint16_t reserved[3];
|
||||
/* The actual SVE data immediately follows. It is layed out
|
||||
/* The actual SVE data immediately follows. It is laid out
|
||||
* according to TARGET_SVE_SIG_{Z,P}REG_OFFSET, based off of
|
||||
* the original struct pointer.
|
||||
*/
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#define UNAME_MACHINE "cris"
|
||||
#define UNAME_MINIMUM_RELEASE "2.6.32"
|
||||
|
||||
/* pt_regs not only specifices the format in the user-struct during
|
||||
/* pt_regs not only specifies the format in the user-struct during
|
||||
* ptrace but is also the frame format used in the kernel prologue/epilogues
|
||||
* themselves
|
||||
*/
|
||||
|
@ -32,7 +32,7 @@ struct target_pt_regs {
|
|||
unsigned long spc;
|
||||
unsigned long ccs;
|
||||
unsigned long srp;
|
||||
unsigned long erp; /* This is actually the debugged process' PC */
|
||||
unsigned long erp; /* This is actually the debugged process's PC */
|
||||
/* For debugging purposes; saved only when needed. */
|
||||
unsigned long exs;
|
||||
unsigned long eda;
|
||||
|
|
|
@ -43,7 +43,7 @@ struct flat_hdr {
|
|||
abi_ulong reloc_count; /* Number of relocation records */
|
||||
abi_ulong flags;
|
||||
abi_ulong build_date; /* When the program/library was built */
|
||||
abi_ulong filler[5]; /* Reservered, set to zero */
|
||||
abi_ulong filler[5]; /* Reserved, set to zero */
|
||||
};
|
||||
|
||||
#define FLAT_FLAG_RAM 0x0001 /* load program entirely into RAM */
|
||||
|
|
|
@ -442,7 +442,7 @@ static int load_flat_file(struct linux_binprm * bprm,
|
|||
indx_len = (indx_len + 15) & ~(abi_ulong)15;
|
||||
|
||||
/*
|
||||
* Alloate the address space.
|
||||
* Allocate the address space.
|
||||
*/
|
||||
probe_guest_base(bprm->filename, 0,
|
||||
text_len + data_len + extra + indx_len);
|
||||
|
@ -794,7 +794,7 @@ int load_flt_binary(struct linux_binprm *bprm, struct image_info *info)
|
|||
#error here
|
||||
for (i = MAX_SHARED_LIBS-1; i>0; i--) {
|
||||
if (libinfo[i].loaded) {
|
||||
/* Push previos first to call address */
|
||||
/* Push previous first to call address */
|
||||
--sp;
|
||||
if (put_user_ual(start_addr, sp))
|
||||
return -EFAULT;
|
||||
|
|
|
@ -84,7 +84,7 @@ safe_syscall_end:
|
|||
|
||||
/* code path when we didn't execute the syscall */
|
||||
0: addi 3, 0, -TARGET_ERESTARTSYS
|
||||
ld 14, 16(1) /* restore r14 to its orginal value */
|
||||
ld 14, 16(1) /* restore r14 to its original value */
|
||||
blr
|
||||
.cfi_endproc
|
||||
|
||||
|
|
|
@ -481,7 +481,7 @@ _syscall4(int, sys_prlimit64, pid_t, pid, int, resource,
|
|||
|
||||
|
||||
#if defined(TARGET_NR_timer_create)
|
||||
/* Maxiumum of 32 active POSIX timers allowed at any one time. */
|
||||
/* Maximum of 32 active POSIX timers allowed at any one time. */
|
||||
static timer_t g_posix_timers[32] = { 0, } ;
|
||||
|
||||
static inline int next_free_host_timer(void)
|
||||
|
@ -8180,7 +8180,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
|||
switch(num) {
|
||||
case TARGET_NR_exit:
|
||||
/* In old applications this may be used to implement _exit(2).
|
||||
However in threaded applictions it is used for thread termination,
|
||||
However in threaded applications it is used for thread termination,
|
||||
and _exit_group is used for application termination.
|
||||
Do thread termination if we have more then one thread. */
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ void failover_request_active(Error **errp)
|
|||
{
|
||||
if (failover_set_state(FAILOVER_STATUS_NONE,
|
||||
FAILOVER_STATUS_REQUIRE) != FAILOVER_STATUS_NONE) {
|
||||
error_setg(errp, "COLO failover is already actived");
|
||||
error_setg(errp, "COLO failover is already activated");
|
||||
return;
|
||||
}
|
||||
failover_bh = qemu_bh_new(colo_failover_bh, NULL);
|
||||
|
|
|
@ -632,7 +632,7 @@ out:
|
|||
/*
|
||||
* It is safe to unregister notifier after failover finished.
|
||||
* Besides, colo_delay_timer and colo_checkpoint_sem can't be
|
||||
* released befor unregister notifier, or there will be use-after-free
|
||||
* released before unregister notifier, or there will be use-after-free
|
||||
* error.
|
||||
*/
|
||||
colo_compare_unregister_notifier(&packets_compare_notifier);
|
||||
|
|
|
@ -731,7 +731,7 @@ static void multifd_new_send_channel_async(QIOTask *task, gpointer opaque)
|
|||
qemu_sem_post(&p->sem_sync);
|
||||
/*
|
||||
* Although multifd_send_thread is not created, but main migration
|
||||
* thread neet to judge whether it is running, so we need to mark
|
||||
* thread needs to judge whether it is running, so we need to mark
|
||||
* its status.
|
||||
*/
|
||||
p->quit = true;
|
||||
|
@ -1042,7 +1042,7 @@ bool multifd_recv_all_channels_created(void)
|
|||
|
||||
/*
|
||||
* Try to receive all multifd channels to get ready for the migration.
|
||||
* - Return true and do not set @errp when correctly receving all channels;
|
||||
* - Return true and do not set @errp when correctly receiving all channels;
|
||||
* - Return false and do not set @errp when correctly receiving the current one;
|
||||
* - Return false and set @errp when failing to receive the current channel.
|
||||
*/
|
||||
|
|
|
@ -237,7 +237,7 @@ release_ufd:
|
|||
* request_ufd_features: this function should be called only once on a newly
|
||||
* opened ufd, subsequent calls will lead to error.
|
||||
*
|
||||
* Returns: true on succes
|
||||
* Returns: true on success
|
||||
*
|
||||
* @ufd: fd obtained from userfaultfd syscall
|
||||
* @features: bit mask see UFFD_API_FEATURES
|
||||
|
@ -807,7 +807,7 @@ static void mark_postcopy_blocktime_end(uintptr_t addr)
|
|||
|
||||
low_time_offset = get_low_time_offset(dc);
|
||||
/* lookup cpu, to clear it,
|
||||
* that algorithm looks straighforward, but it's not
|
||||
* that algorithm looks straightforward, but it's not
|
||||
* optimal, more optimal algorithm is keeping tree or hash
|
||||
* where key is address value is a list of */
|
||||
for (i = 0; i < smp_cpus; i++) {
|
||||
|
|
|
@ -161,7 +161,7 @@ struct PostCopyFD {
|
|||
*/
|
||||
void postcopy_register_shared_ufd(struct PostCopyFD *pcfd);
|
||||
void postcopy_unregister_shared_ufd(struct PostCopyFD *pcfd);
|
||||
/* Call each of the shared 'waker's registerd telling them of
|
||||
/* Call each of the shared 'waker's registered telling them of
|
||||
* availability of a block.
|
||||
*/
|
||||
int postcopy_notify_shared_wake(RAMBlock *rb, uint64_t offset);
|
||||
|
|
|
@ -256,7 +256,7 @@ int64_t ramblock_recv_bitmap_send(QEMUFile *file,
|
|||
/*
|
||||
* Always use little endian when sending the bitmap. This is
|
||||
* required that when source and destination VMs are not using the
|
||||
* same endianess. (Note: big endian won't work.)
|
||||
* same endianness. (Note: big endian won't work.)
|
||||
*/
|
||||
bitmap_to_le(le_bitmap, block->receivedmap, nbits);
|
||||
|
||||
|
@ -275,7 +275,7 @@ int64_t ramblock_recv_bitmap_send(QEMUFile *file,
|
|||
qemu_put_buffer(file, (const uint8_t *)le_bitmap, size);
|
||||
/*
|
||||
* Mark as an end, in case the middle part is screwed up due to
|
||||
* some "misterious" reason.
|
||||
* some "mysterious" reason.
|
||||
*/
|
||||
qemu_put_be64(file, RAMBLOCK_RECV_BITMAP_ENDING);
|
||||
qemu_fflush(file);
|
||||
|
@ -718,7 +718,7 @@ static int save_xbzrle_page(RAMState *rs, uint8_t **current_data,
|
|||
/*
|
||||
* Reaching here means the page has hit the xbzrle cache, no matter what
|
||||
* encoding result it is (normal encoding, overflow or skipping the page),
|
||||
* count the page as encoded. This is used to caculate the encoding rate.
|
||||
* count the page as encoded. This is used to calculate the encoding rate.
|
||||
*
|
||||
* Example: 2 pages (8KB) being encoded, first page encoding generates 2KB,
|
||||
* 2nd page turns out to be skipped (i.e. no new bytes written to the
|
||||
|
@ -3705,7 +3705,7 @@ int ram_dirty_bitmap_reload(MigrationState *s, RAMBlock *block)
|
|||
|
||||
/*
|
||||
* Note: see comments in ramblock_recv_bitmap_send() on why we
|
||||
* need the endianess convertion, and the paddings.
|
||||
* need the endianness conversion, and the paddings.
|
||||
*/
|
||||
local_size = ROUND_UP(local_size, 8);
|
||||
|
||||
|
@ -3743,7 +3743,7 @@ int ram_dirty_bitmap_reload(MigrationState *s, RAMBlock *block)
|
|||
}
|
||||
|
||||
/*
|
||||
* Endianess convertion. We are during postcopy (though paused).
|
||||
* Endianness conversion. We are during postcopy (though paused).
|
||||
* The dirty bitmap won't change. We can directly modify it.
|
||||
*/
|
||||
bitmap_from_le(block->bmap, le_bitmap, nbits);
|
||||
|
|
|
@ -1509,7 +1509,7 @@ static int qemu_rdma_wait_comp_channel(RDMAContext *rdma)
|
|||
} else {
|
||||
/* This is the source side, we're in a separate thread
|
||||
* or destination prior to migration_fd_process_incoming()
|
||||
* after postcopy, the destination also in a seprate thread.
|
||||
* after postcopy, the destination also in a separate thread.
|
||||
* we can't yield; so we have to poll the fd.
|
||||
* But we need to be able to handle 'cancel' or an error
|
||||
* without hanging forever.
|
||||
|
@ -2266,7 +2266,7 @@ static inline int qemu_rdma_buffer_mergable(RDMAContext *rdma,
|
|||
* chunk, then start a new chunk and flush() the old chunk.
|
||||
* 3. To keep the hardware busy, we also group chunks into batches
|
||||
* and only require that a batch gets acknowledged in the completion
|
||||
* qeueue instead of each individual chunk.
|
||||
* queue instead of each individual chunk.
|
||||
*/
|
||||
static int qemu_rdma_write(QEMUFile *f, RDMAContext *rdma,
|
||||
uint64_t block_offset, uint64_t offset,
|
||||
|
@ -3148,7 +3148,7 @@ static size_t qemu_rdma_save_page(QEMUFile *f, void *opaque,
|
|||
if (size > 0) {
|
||||
/*
|
||||
* Add this page to the current 'chunk'. If the chunk
|
||||
* is full, or the page doen't belong to the current chunk,
|
||||
* is full, or the page doesn't belong to the current chunk,
|
||||
* an actual RDMA write will occur and a new chunk will be formed.
|
||||
*/
|
||||
ret = qemu_rdma_write(f, rdma, block_offset, offset, size);
|
||||
|
@ -4101,7 +4101,7 @@ void rdma_start_outgoing_migration(void *opaque,
|
|||
goto err;
|
||||
}
|
||||
|
||||
/* RDMA postcopy need a seprate queue pair for return path */
|
||||
/* RDMA postcopy need a separate queue pair for return path */
|
||||
if (migrate_postcopy()) {
|
||||
rdma_return_path = qemu_rdma_data_init(host_port, errp);
|
||||
|
||||
|
|
|
@ -2795,7 +2795,7 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
|
|||
|
||||
if (!has_live) {
|
||||
/* live default to true so old version of Xen tool stack can have a
|
||||
* successfull live migration */
|
||||
* successful live migration */
|
||||
live = true;
|
||||
}
|
||||
|
||||
|
@ -2818,7 +2818,7 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
|
|||
* "xen-save-devices-state" and in case of migration failure, libxl
|
||||
* would call "cont".
|
||||
* So call bdrv_inactivate_all (release locks) here to let the other
|
||||
* side of the migration take controle of the images.
|
||||
* side of the migration take control of the images.
|
||||
*/
|
||||
if (live && !saved_vm_running) {
|
||||
ret = bdrv_inactivate_all();
|
||||
|
|
|
@ -1795,7 +1795,7 @@
|
|||
#
|
||||
# @block-backend: corresponds to BlockBackend
|
||||
#
|
||||
# @block-job: corresonds to BlockJob
|
||||
# @block-job: corresponds to BlockJob
|
||||
#
|
||||
# @block-driver: corresponds to BlockDriverState
|
||||
#
|
||||
|
@ -2067,7 +2067,7 @@
|
|||
# @target: name of the destination dirty bitmap
|
||||
#
|
||||
# @bitmaps: name(s) of the source dirty bitmap(s) at @node and/or fully
|
||||
# specifed BlockDirtyBitmap elements. The latter are supported
|
||||
# specified BlockDirtyBitmap elements. The latter are supported
|
||||
# since 4.1.
|
||||
#
|
||||
# Since: 4.0
|
||||
|
|
|
@ -336,7 +336,7 @@
|
|||
# written into added active keyslots
|
||||
#
|
||||
# @old-secret: Optional (for deactivation only)
|
||||
# If given will deactive all keyslots that
|
||||
# If given will deactivate all keyslots that
|
||||
# match password located in QCryptoSecret with this ID
|
||||
#
|
||||
# @iter-time: Optional (for activation only)
|
||||
|
@ -354,7 +354,7 @@
|
|||
# keyslot to deactivate
|
||||
#
|
||||
# @secret: Optional. The ID of a QCryptoSecret object providing the
|
||||
# password to use to retrive current master key.
|
||||
# password to use to retrieve current master key.
|
||||
# Defaults to the same secret that was used to open the image
|
||||
#
|
||||
#
|
||||
|
|
|
@ -1188,7 +1188,7 @@ static int64_t find_nonzero(const uint8_t *buf, int64_t n)
|
|||
* 'pnum' is set to the number of sectors (including and immediately following
|
||||
* the first one) that are known to be in the same allocated/unallocated state.
|
||||
* The function will try to align the end offset to alignment boundaries so
|
||||
* that the request will at least end aligned and consequtive requests will
|
||||
* that the request will at least end aligned and consecutive requests will
|
||||
* also start at an aligned offset.
|
||||
*/
|
||||
static int is_allocated_sectors(const uint8_t *buf, int n, int *pnum,
|
||||
|
|
108
qemu-options.hx
108
qemu-options.hx
|
@ -373,9 +373,9 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
|qemu_system| \
|
||||
-add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \
|
||||
-add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \
|
||||
|qemu_system| \\
|
||||
-add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \\
|
||||
-add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \\
|
||||
-drive file=/dev/fdset/2,index=0,media=disk
|
||||
ERST
|
||||
|
||||
|
@ -1338,9 +1338,9 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
|qemu_system| \
|
||||
-add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \
|
||||
-add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \
|
||||
|qemu_system| \\
|
||||
-add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \\
|
||||
-add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \\
|
||||
-drive file=/dev/fdset/2,index=0,media=disk
|
||||
|
||||
You can connect a CDROM to the slave of ide0:
|
||||
|
@ -2593,7 +2593,7 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
|qemu_system| -hda linux.img -boot n -device e1000,netdev=n1 \
|
||||
|qemu_system| -hda linux.img -boot n -device e1000,netdev=n1 \\
|
||||
-netdev user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0
|
||||
|
||||
``smb=dir[,smbserver=addr]``
|
||||
|
@ -2703,15 +2703,15 @@ SRST
|
|||
|
||||
#launch a QEMU instance with two NICs, each one connected
|
||||
#to a TAP device
|
||||
|qemu_system| linux.img \
|
||||
-netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0 \
|
||||
|qemu_system| linux.img \\
|
||||
-netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0 \\
|
||||
-netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
#launch a QEMU instance with the default network helper to
|
||||
#connect a TAP device to bridge br0
|
||||
|qemu_system| linux.img -device virtio-net-pci,netdev=n1 \
|
||||
|qemu_system| linux.img -device virtio-net-pci,netdev=n1 \\
|
||||
-netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper"
|
||||
|
||||
``-netdev bridge,id=id[,br=bridge][,helper=helper]``
|
||||
|
@ -2749,12 +2749,12 @@ SRST
|
|||
.. parsed-literal::
|
||||
|
||||
# launch a first QEMU instance
|
||||
|qemu_system| linux.img \
|
||||
-device e1000,netdev=n1,mac=52:54:00:12:34:56 \
|
||||
|qemu_system| linux.img \\
|
||||
-device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
|
||||
-netdev socket,id=n1,listen=:1234
|
||||
# connect the network of this instance to the network of the first instance
|
||||
|qemu_system| linux.img \
|
||||
-device e1000,netdev=n2,mac=52:54:00:12:34:57 \
|
||||
|qemu_system| linux.img \\
|
||||
-device e1000,netdev=n2,mac=52:54:00:12:34:57 \\
|
||||
-netdev socket,id=n2,connect=127.0.0.1:1234
|
||||
|
||||
``-netdev socket,id=id[,fd=h][,mcast=maddr:port[,localaddr=addr]]``
|
||||
|
@ -2776,16 +2776,16 @@ SRST
|
|||
.. parsed-literal::
|
||||
|
||||
# launch one QEMU instance
|
||||
|qemu_system| linux.img \
|
||||
-device e1000,netdev=n1,mac=52:54:00:12:34:56 \
|
||||
|qemu_system| linux.img \\
|
||||
-device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
|
||||
-netdev socket,id=n1,mcast=230.0.0.1:1234
|
||||
# launch another QEMU instance on same "bus"
|
||||
|qemu_system| linux.img \
|
||||
-device e1000,netdev=n2,mac=52:54:00:12:34:57 \
|
||||
|qemu_system| linux.img \\
|
||||
-device e1000,netdev=n2,mac=52:54:00:12:34:57 \\
|
||||
-netdev socket,id=n2,mcast=230.0.0.1:1234
|
||||
# launch yet another QEMU instance on same "bus"
|
||||
|qemu_system| linux.img \
|
||||
-device e1000,netdev=n3,mac=52:54:00:12:34:58 \
|
||||
|qemu_system| linux.img \\
|
||||
-device e1000,netdev=n3,mac=52:54:00:12:34:58 \\
|
||||
-netdev socket,id=n3,mcast=230.0.0.1:1234
|
||||
|
||||
Example (User Mode Linux compat.):
|
||||
|
@ -2793,8 +2793,8 @@ SRST
|
|||
.. parsed-literal::
|
||||
|
||||
# launch QEMU instance (note mcast address selected is UML's default)
|
||||
|qemu_system| linux.img \
|
||||
-device e1000,netdev=n1,mac=52:54:00:12:34:56 \
|
||||
|qemu_system| linux.img \\
|
||||
-device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
|
||||
-netdev socket,id=n1,mcast=239.192.168.1:1102
|
||||
# launch UML
|
||||
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
|
||||
|
@ -2803,8 +2803,8 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
|qemu_system| linux.img \
|
||||
-device e1000,netdev=n1,mac=52:54:00:12:34:56 \
|
||||
|qemu_system| linux.img \\
|
||||
-device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
|
||||
-netdev socket,id=n1,mcast=239.192.168.1:1102,localaddr=1.2.3.4
|
||||
|
||||
``-netdev l2tpv3,id=id,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport],txsession=txsession[,rxsession=rxsession][,ipv6][,udp][,cookie64][,counter][,pincounter][,txcookie=txcookie][,rxcookie=rxcookie][,offset=offset]``
|
||||
|
@ -2860,9 +2860,9 @@ SRST
|
|||
|
||||
# Setup tunnel on linux host using raw ip as encapsulation
|
||||
# on 1.2.3.4
|
||||
ip l2tp add tunnel remote 4.3.2.1 local 1.2.3.4 tunnel_id 1 peer_tunnel_id 1 \
|
||||
ip l2tp add tunnel remote 4.3.2.1 local 1.2.3.4 tunnel_id 1 peer_tunnel_id 1 \\
|
||||
encap udp udp_sport 16384 udp_dport 16384
|
||||
ip l2tp add session tunnel_id 1 name vmtunnel0 session_id \
|
||||
ip l2tp add session tunnel_id 1 name vmtunnel0 session_id \\
|
||||
0xFFFFFFFF peer_session_id 0xFFFFFFFF
|
||||
ifconfig vmtunnel0 mtu 1500
|
||||
ifconfig vmtunnel0 up
|
||||
|
@ -2872,7 +2872,7 @@ SRST
|
|||
# on 4.3.2.1
|
||||
# launch QEMU instance - if your network has reorder or is very lossy add ,pincounter
|
||||
|
||||
|qemu_system| linux.img -device e1000,netdev=n1 \
|
||||
|qemu_system| linux.img -device e1000,netdev=n1 \\
|
||||
-netdev l2tpv3,id=n1,src=4.2.3.1,dst=1.2.3.4,udp,srcport=16384,dstport=16384,rxsession=0xffffffff,txsession=0xffffffff,counter
|
||||
|
||||
``-netdev vde,id=id[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]``
|
||||
|
@ -4627,8 +4627,8 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
# |qemu_system| \
|
||||
-object tls-cipher-suites,id=mysuite0,priority=@SYSTEM \
|
||||
# |qemu_system| \\
|
||||
-object tls-cipher-suites,id=mysuite0,priority=@SYSTEM \\
|
||||
-fw_cfg name=etc/edk2/https/ciphers,gen_id=mysuite0
|
||||
|
||||
``-object filter-buffer,id=id,netdev=netdevid,interval=t[,queue=all|rx|tx][,status=on|off][,position=head|tail|id=<id>][,insert=behind|before]``
|
||||
|
@ -4791,10 +4791,10 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
# |qemu_system| \
|
||||
[...] \
|
||||
-object cryptodev-backend-builtin,id=cryptodev0 \
|
||||
-device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
|
||||
# |qemu_system| \\
|
||||
[...] \\
|
||||
-object cryptodev-backend-builtin,id=cryptodev0 \\
|
||||
-device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \\
|
||||
[...]
|
||||
|
||||
``-object cryptodev-vhost-user,id=id,chardev=chardevid[,queues=queues]``
|
||||
|
@ -4810,11 +4810,11 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
# |qemu_system| \
|
||||
[...] \
|
||||
-chardev socket,id=chardev0,path=/path/to/socket \
|
||||
-object cryptodev-vhost-user,id=cryptodev0,chardev=chardev0 \
|
||||
-device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
|
||||
# |qemu_system| \\
|
||||
[...] \\
|
||||
-chardev socket,id=chardev0,path=/path/to/socket \\
|
||||
-object cryptodev-vhost-user,id=cryptodev0,chardev=chardev0 \\
|
||||
-device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \\
|
||||
[...]
|
||||
|
||||
``-object secret,id=id,data=string,format=raw|base64[,keyid=secretid,iv=string]``
|
||||
|
@ -4892,9 +4892,9 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
# |qemu_system| \
|
||||
-object secret,id=secmaster0,format=base64,file=key.b64 \
|
||||
-object secret,id=sec0,keyid=secmaster0,format=base64,\
|
||||
# |qemu_system| \\
|
||||
-object secret,id=secmaster0,format=base64,file=key.b64 \\
|
||||
-object secret,id=sec0,keyid=secmaster0,format=base64,\\
|
||||
data=$SECRET,iv=$(<iv.b64)
|
||||
|
||||
``-object sev-guest,id=id,cbitpos=cbitpos,reduced-phys-bits=val,[sev-device=string,policy=policy,handle=handle,dh-cert-file=file,session-file=file]``
|
||||
|
@ -4941,10 +4941,10 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
# |qemu_system_x86| \
|
||||
......
|
||||
-object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5 \
|
||||
-machine ...,memory-encryption=sev0
|
||||
# |qemu_system_x86| \\
|
||||
...... \\
|
||||
-object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5 \\
|
||||
-machine ...,memory-encryption=sev0 \\
|
||||
.....
|
||||
|
||||
``-object authz-simple,id=id,identity=string``
|
||||
|
@ -4962,9 +4962,9 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
# |qemu_system| \
|
||||
...
|
||||
-object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,O=Example Org,,L=London,,ST=London,,C=GB' \
|
||||
# |qemu_system| \\
|
||||
... \\
|
||||
-object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,O=Example Org,,L=London,,ST=London,,C=GB' \\
|
||||
...
|
||||
|
||||
Note the use of quotes due to the x509 distinguished name
|
||||
|
@ -5013,9 +5013,9 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
# |qemu_system| \
|
||||
...
|
||||
-object authz-simple,id=auth0,filename=/etc/qemu/vnc-sasl.acl,refresh=yes
|
||||
# |qemu_system| \\
|
||||
... \\
|
||||
-object authz-simple,id=auth0,filename=/etc/qemu/vnc-sasl.acl,refresh=yes \\
|
||||
...
|
||||
|
||||
``-object authz-pam,id=id,service=string``
|
||||
|
@ -5032,9 +5032,9 @@ SRST
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
# |qemu_system| \
|
||||
...
|
||||
-object authz-pam,id=auth0,service=qemu-vnc
|
||||
# |qemu_system| \\
|
||||
... \\
|
||||
-object authz-pam,id=auth0,service=qemu-vnc \\
|
||||
...
|
||||
|
||||
There would then be a corresponding config file for PAM at
|
||||
|
|
|
@ -33,7 +33,7 @@ QDict *qdict_new(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* tdb_hash(): based on the hash agorithm from gdbm, via tdb
|
||||
* tdb_hash(): based on the hash algorithm from gdbm, via tdb
|
||||
* (from module-init-tools)
|
||||
*/
|
||||
static unsigned int tdb_hash(const char *name)
|
||||
|
|
|
@ -1870,7 +1870,7 @@ sub process {
|
|||
substr($s, 0, length($c), '');
|
||||
|
||||
# Make sure we remove the line prefixes as we have
|
||||
# none on the first line, and are going to readd them
|
||||
# none on the first line, and are going to re-add them
|
||||
# where necessary.
|
||||
$s =~ s/\n./\n/gs;
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
# Does the following:
|
||||
# - Header files without a recognizable header guard are skipped.
|
||||
# - Clean up any untidy header guards in-place. Warn if the cleanup
|
||||
# renames guard symbols, and explain how to find occurences of these
|
||||
# renames guard symbols, and explain how to find occurrences of these
|
||||
# symbols that may have to be updated manually.
|
||||
# - Warn about duplicate header guard symbols. To make full use of
|
||||
# this warning, you should clean up *all* headers in one run.
|
||||
|
|
|
@ -94,7 +94,7 @@ def str_indent(c):
|
|||
|
||||
|
||||
def str_fields(fields):
|
||||
"""Return a string uniquely identifing FIELDS"""
|
||||
"""Return a string uniquely identifying FIELDS"""
|
||||
r = ''
|
||||
for n in sorted(fields.keys()):
|
||||
r += '_' + n
|
||||
|
@ -814,7 +814,7 @@ def parse_generic(lineno, parent_pat, name, toks):
|
|||
arg = None
|
||||
fmt = None
|
||||
for t in toks:
|
||||
# '&Foo' gives a format an explcit argument set.
|
||||
# '&Foo' gives a format an explicit argument set.
|
||||
if re.fullmatch(re_arg_ident, t):
|
||||
tt = t[1:]
|
||||
if arg:
|
||||
|
@ -903,7 +903,7 @@ def parse_generic(lineno, parent_pat, name, toks):
|
|||
elif not (is_format and width == 0) and width != insnwidth:
|
||||
error(lineno, 'definition has {0} bits'.format(width))
|
||||
|
||||
# Do not check for fields overlaping fields; one valid usage
|
||||
# Do not check for fields overlapping fields; one valid usage
|
||||
# is to be able to duplicate fields via import.
|
||||
fieldmask = 0
|
||||
for f in flds.values():
|
||||
|
|
|
@ -18,6 +18,7 @@ docs/*
|
|||
configure
|
||||
Makefile*
|
||||
*.mak
|
||||
meson.build
|
||||
|
||||
# qapi schema
|
||||
qapi/*.json
|
||||
|
|
|
@ -69,7 +69,7 @@ mkdir -p "$DEST_DIR/lib/" # Copy the shared libraries here
|
|||
|
||||
if ! make "-j$(nproc)" qemu-fuzz-i386; then
|
||||
fatal "Build failed. Please specify a compiler with fuzzing support"\
|
||||
"using the \$CC and \$CXX environemnt variables"\
|
||||
"using the \$CC and \$CXX environment variables"\
|
||||
"\nFor example: CC=clang CXX=clang++ $0"
|
||||
fi
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ def error(*lines):
|
|||
def out(*lines, **kwargs):
|
||||
"""Write a set of output lines.
|
||||
|
||||
You can use kwargs as a shorthand for mapping variables when formating all
|
||||
You can use kwargs as a shorthand for mapping variables when formatting all
|
||||
the strings in lines.
|
||||
"""
|
||||
lines = [ l % kwargs for l in lines ]
|
||||
|
|
|
@ -125,7 +125,7 @@ static int pr_manager_helper_initialize(PRManagerHelper *pr_mgr,
|
|||
qio_channel_set_delay(QIO_CHANNEL(sioc), false);
|
||||
pr_mgr->ioc = QIO_CHANNEL(sioc);
|
||||
|
||||
/* A simple feature negotation protocol, even though there is
|
||||
/* A simple feature negotiation protocol, even though there is
|
||||
* no optional feature right now.
|
||||
*/
|
||||
r = pr_manager_helper_read(pr_mgr, &flags, sizeof(flags), errp);
|
||||
|
|
|
@ -36,7 +36,6 @@ typedef struct QemuSpiceKbd {
|
|||
|
||||
static void kbd_push_key(SpiceKbdInstance *sin, uint8_t frag);
|
||||
static uint8_t kbd_get_leds(SpiceKbdInstance *sin);
|
||||
static void kbd_leds(void *opaque, int l);
|
||||
|
||||
static const SpiceKbdInterface kbd_interface = {
|
||||
.base.type = SPICE_INTERFACE_KEYBOARD,
|
||||
|
|
|
@ -436,7 +436,7 @@ int qemu_unlink(const char *name)
|
|||
* Set errno if fewer than `count' bytes are written.
|
||||
*
|
||||
* This function don't work with non-blocking fd's.
|
||||
* Any of the possibilities with non-bloking fd's is bad:
|
||||
* Any of the possibilities with non-blocking fd's is bad:
|
||||
* - return a short write (then name is wrong)
|
||||
* - busy wait adding (errno == EAGAIN) to the loop
|
||||
*/
|
||||
|
|
|
@ -131,7 +131,7 @@ void qemu_progress_end(void)
|
|||
/*
|
||||
* Report progress.
|
||||
* @delta is how much progress we made.
|
||||
* If @max is zero, @delta is an absolut value of the total job done.
|
||||
* If @max is zero, @delta is an absolute value of the total job done.
|
||||
* Else, @delta is a progress delta since the last call, as a fraction
|
||||
* of @max. I.e. the delta is @delta * @max / 100. This allows
|
||||
* relative accounting of functions which may be a different fraction of
|
||||
|
|
|
@ -416,7 +416,7 @@ static struct addrinfo *inet_parse_connect_saddr(InetSocketAddress *saddr,
|
|||
|
||||
/* At least FreeBSD and OS-X 10.6 declare AI_V4MAPPED but
|
||||
* then don't implement it in their getaddrinfo(). Detect
|
||||
* this and retry without the flag since that's preferrable
|
||||
* this and retry without the flag since that's preferable
|
||||
* to a fatal error
|
||||
*/
|
||||
if (rc == EAI_BADFLAGS &&
|
||||
|
|
|
@ -289,7 +289,7 @@ void qemu_event_wait(QemuEvent *ev)
|
|||
ResetEvent(ev->event);
|
||||
|
||||
/* Tell qemu_event_set that there are waiters. No need to retry
|
||||
* because there cannot be a concurent busy->free transition.
|
||||
* because there cannot be a concurrent busy->free transition.
|
||||
* After the CAS, the event will be either set or busy.
|
||||
*/
|
||||
if (atomic_cmpxchg(&ev->value, EV_FREE, EV_BUSY) == EV_SET) {
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
* it anymore.
|
||||
*
|
||||
* Writers check for concurrent resizes by comparing ht->map before and after
|
||||
* acquiring their bucket lock. If they don't match, a resize has occured
|
||||
* acquiring their bucket lock. If they don't match, a resize has occurred
|
||||
* while the bucket spinlock was being acquired.
|
||||
*
|
||||
* Related Work:
|
||||
|
|
|
@ -28,7 +28,7 @@ qemu_file_monitor_add_watch(void *mon, const char *dirpath, const char *filename
|
|||
qemu_file_monitor_remove_watch(void *mon, const char *dirpath, int64_t id) "File monitor %p remove watch dir='%s' id=%" PRId64
|
||||
qemu_file_monitor_new(void *mon, int fd) "File monitor %p created fd=%d"
|
||||
qemu_file_monitor_enable_watch(void *mon, const char *dirpath, int id) "File monitor %p enable watch dir='%s' id=%u"
|
||||
qemu_file_monitor_disable_watch(void *mon, const char *dirpath, int id) "Fle monitor %p disable watch dir='%s' id=%u"
|
||||
qemu_file_monitor_disable_watch(void *mon, const char *dirpath, int id) "File monitor %p disable watch dir='%s' id=%u"
|
||||
qemu_file_monitor_event(void *mon, const char *dirpath, const char *filename, int mask, unsigned int id) "File monitor %p event dir='%s' file='%s' mask=0x%x id=%u"
|
||||
qemu_file_monitor_dispatch(void *mon, const char *dirpath, const char *filename, int ev, void *cb, void *opaque, int64_t id) "File monitor %p dispatch dir='%s' file='%s' ev=%d cb=%p opaque=%p id=%" PRId64
|
||||
|
||||
|
|
Loading…
Reference in New Issue