Richard Henderson
7fb7c42394
target/i386: Remove user-only i/o stubs
...
With the previous patch for check_io, we now have enough for
the compiler to dead-code eliminate all of the i/o helpers.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-51-richard.henderson@linaro.org >
2021-05-19 12:17:23 -05:00
Richard Henderson
d76b9c6f07
target/i386: Move helper_check_io to sysemu
...
The we never allow i/o from user-only, and the tss check
that helper_check_io does will always fail. Use an ifdef
within gen_check_io and return false, indicating that an
exception is known to be raised.
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-50-richard.henderson@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
e497803556
target/i386: Create helper_check_io
...
Drop helper_check_io[bwl] and expose their common
subroutine to tcg directly.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20210514151342.384376-49-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
1bca40fe42
target/i386: Pass in port to gen_check_io
...
Pass in a pre-truncated TCGv_i32 value. We were doing the
truncation of EDX in multiple places, now only once per insn.
While all callers use s->tmp2_i32, for cleanliness of the
subroutine, use a parameter anyway.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-48-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
bc2e436d7c
target/i386: Tidy gen_check_io
...
Get cur_eip from DisasContext. Do not require the caller
to use svm_is_rep; get prefix from DisasContext. Use the
proper symbolic constants for SVM_IOIO_*.
While we're touching all call sites, return bool in
preparation for gen_check_io raising #GP.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-47-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
244843b757
target/i386: Exit tb after wrmsr
...
At minimum, wrmsr can change efer, which affects HF_LMA.
Cc: qemu-stable@nongnu.org
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-46-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
f7803b7759
target/i386: Eliminate user stubs for read/write_crN, rd/wrmsr
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-45-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
35e5a5d5cb
target/i386: Unify invlpg, invlpga
...
Use a single helper, flush_page, to do the work.
Use gen_svm_check_intercept.
Perform the zero-extension for invlpga inline.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-43-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
4ea2449b58
target/i386: Move invlpg, hlt, monitor, mwait to sysemu
...
These instructions are all privileged.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-42-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
7eff2e7c65
target/i386: Cleanup read_crN, write_crN, lmsw
...
Pull the svm intercept check into the translator.
Pull the entire implementation of lmsw into the translator.
Push the check for CR8LEG into the regno validation switch.
Unify the gen_io_start check between read/write.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210514151342.384376-40-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
b53605dbd2
target/i386: Remove pc_start argument to gen_svm_check_intercept
...
When exiting helper_svm_check_intercept via exception, cpu_vmexit
calls cpu_restore_state, which will recover eip and cc_op via unwind.
Therefore we do not need to store eip or cc_op before the call.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-38-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
d051ea04d0
target/i386: Tidy svm_check_intercept from tcg
...
The param argument to helper_svm_check_intercept_param is always 0;
eliminate it and rename to helper_svm_check_intercept. Fold
gen_svm_check_intercept_param into gen_svm_check_intercept.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-37-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
ed3c4739e9
target/i386: Simplify gen_debug usage
...
Both invocations pass the start of the current instruction,
which is available as s->base.pc_next. The function sets
is_jmp, so we can eliminate a second setting.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-36-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
b82055aece
target/i386: Mark some helpers as noreturn
...
Any helper that always raises an exception or interrupt,
or simply exits to the main loop, can be so marked.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-35-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
8d6806c7dd
target/i386: Eliminate SVM helpers for user-only
...
Use STUB_HELPER to ensure that such calls are always eliminated.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-34-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
e6aeb948bb
target/i386: Implement skinit in translate.c
...
Our sysemu implementation is a stub. We can already intercept
instructions for vmexit, and raising #UD is trivial.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-33-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
b322b3afc1
target/i386: Assert !GUEST for user-only
...
For user-only, we do not need to check for VMM intercept.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-32-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
5d2238896a
target/i386: Assert !SVME for user-only
...
Most of the VMM instructions are already disabled for user-only,
by being usable only from ring 0.
The spec is intentionally loose for VMMCALL, allowing the VMM to
define syscalls for user-only. However, we're not emulating any
VMM, so VMMCALL can just raise #UD unconditionally.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210514151342.384376-31-richard.henderson@linaro.org >
2021-05-19 12:16:48 -05:00
Richard Henderson
9f55e5a947
target/i386: Add stub generator for helper_set_dr
...
This removes an ifdef from the middle of disas_insn,
and ensures that the branch is not reachable.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-30-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
a6f62100a8
target/i386: Reorder DisasContext members
...
Sort all of the single-byte members to the same area
of the structure, eliminating 8 bytes of padding.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-29-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
3236c2ade2
target/i386: Fix the comment for repz_opt
...
After fixing a typo in the comment, fixup for CODING_STYLE.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210514151342.384376-28-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
305d08e512
target/i386: Reduce DisasContext jmp_opt, repz_opt to bool
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-27-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
c1de1a1ace
target/i386: Leave TF in DisasContext.flags
...
It's just as easy to clear the flag with AND than assignment.
In two cases the test for the bit can be folded together with
the test for HF_INHIBIT_IRQ_MASK.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-26-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
5862579473
target/i386: Reduce DisasContext popl_esp_hack and rip_offset to uint8_t
...
Both of these fields store the size of a single memory access,
so the range of values is 0-8.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-25-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
a77ca425d7
target/i386: Reduce DisasContext.vex_[lv] to uint8_t
...
Currently, vex_l is either {0,1}; if in the future we implement
AVX-512, the max value will be 2. In vex_v we store a register
number. This is 0-15 for SSE, and 0-31 for AVX-512.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-24-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
a8b9b657a0
target/i386: Reduce DisasContext.prefix to uint8_t
...
The highest bit in this set is 0x40 (PREFIX_REX).
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-23-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
c651f3a3cb
target/i386: Reduce DisasContext.override to int8_t
...
The range of values is -1 (none) to 5 (R_GS).
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-22-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
c6ad6f44ed
target/i386: Reduce DisasContext.flags to uint32_t
...
The value comes from tb->flags, which is uint32_t.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-21-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
0046060e5d
target/i386: Remove DisasContext.f_st as unused
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-20-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
8ab1e4860b
target/i386: Move rex_w into DisasContext
...
Treat this flag exactly like we treat the other rex bits.
The -1 initialization is unused; the two tests are > 0 and == 1,
so the value can be reduced to a bool.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-19-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
bbdb4237c5
target/i386: Move rex_r into DisasContext
...
Treat this flag exactly like we treat rex_b and rex_x.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-18-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
915ffe89a5
target/i386: Tidy REX_B, REX_X definition
...
Change the storage from int to uint8_t since the value is in {0,8}.
For x86_64 add 0 in the macros to (1) promote the type back to int,
and (2) make the macro an rvalue.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-17-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
1e92b7275c
target/i386: Introduce REX_PREFIX
...
The existing flag, x86_64_hregs, does not accurately describe
its setting. It is true if and only if a REX prefix has been
seen. Yes, that affects the "h" regs, but that's secondary.
Add PREFIX_REX and include this bit in s->prefix. Add REX_PREFIX
so that the check folds away when x86_64 is compiled out.
Fold away the reg >= 8 check, because bit 3 of the register
number comes from the REX prefix in the first place.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-16-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
beedb93c04
target/i386: Assert !ADDSEG for x86_64 user-only
...
LMA disables traditional segmentation, exposing a flat address space.
This means that ADDSEG is off.
Since we're adding an accessor macro, pull the value directly out
of flags otherwise.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-15-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
73e90dc458
target/i386: Assert LMA for x86_64 user-only
...
LMA is a pre-requisite for CODE64, so there is no way to disable it
for x86_64-linux-user, and there is no way to enable it for i386.
Since we're adding an accessor macro, pull the value directly out
of flags when we're not assuming a constant.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-14-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
eec7d0f838
target/i386: Assert CODE64 for x86_64 user-only
...
For x86_64 user-only, there is no way to leave 64-bit mode.
Without x86_64, there is no way to enter 64-bit mode. There is
an existing macro to aid with that; simply place it in the right
place in the ifdef chain.
Since we're adding an accessor macro, pull the value directly out
of flags when we're not assuming a constant.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-13-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
b40a47a17f
target/i386: Assert SS32 for x86_64 user-only
...
For user-only, SS32 == !VM86, because we are never in
real-mode. Since we cannot enter vm86 mode for x86_64
user-only, SS32 is always set.
Since we're adding an accessor macro, pull the value
directly out of flags otherwise.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-12-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
9996dcfd67
target/i386: Assert CODE32 for x86_64 user-only
...
For user-only, CODE32 == !VM86, because we are never in real-mode.
Since we cannot enter vm86 mode for x86_64 user-only, CODE32 is
always set.
Since we're adding an accessor macro, pull the value directly out
of flags otherwise.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-11-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
f8a35846d5
target/i386: Assert !VM86 for x86_64 user-only
...
For i386-linux-user, we can enter vm86 mode via the vm86(2) syscall.
That syscall explicitly returns to 32-bit mode, and the syscall does
not exist for a 64-bit x86_64 executable.
Since we're adding an accessor macro, pull the value directly out of
flags otherwise.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-10-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
0ab011cca0
target/i386: Assert IOPL is 0 for user-only
...
On real hardware, the linux kernel has the iopl(2) syscall which
can set IOPL to 3, to allow e.g. the xserver to briefly disable
interrupts while programming the graphics card.
However, QEMU cannot and does not implement this syscall, so the
IOPL is never changed from 0. Which means that all of the checks
vs CPL <= IOPL are false for user-only.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-9-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
01b9d8c1b2
target/i386: Assert CPL is 3 for user-only
...
A user-mode executable always runs in ring 3.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-8-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
d75f912927
target/i386: Assert PE is set for user-only
...
A user-mode executable is never in real-mode. Since we're adding
an accessor macro, pull the value directly out of flags for sysemu.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-7-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
ca7874c2fa
target/i386: Split out check_iopl
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-6-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
aa9f21b1f0
target/i386: Split out check_vm86_iopl
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-5-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
e048f3d6b9
target/i386: Unify code paths for IRET
...
In vm86 mode, we use the same helper as real-mode, but with
an extra check for IOPL. All non-exceptional paths set EFLAGS.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-4-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
bc19f5052d
target/i386: Split out check_cpl0
...
Split out the check for CPL != 0 and the raising of #GP.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-3-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
6bd9958645
target/i386: Split out gen_exception_gpf
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-2-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Claudio Fontana
6d8d1a031a
i386: move TCG bpt_helper into sysemu/
...
for user-mode, assert that the hidden IOBPT flags are not set
while attempting to generate io_bpt helpers.
Signed-off-by: Claudio Fontana <cfontana@suse.de >
Cc: Paolo Bonzini <pbonzini@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210322132800.7470-14-cfontana@suse.de >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2021-05-10 15:41:51 -04:00
Claudio Fontana
a93b55ec22
i386: split smm helper (sysemu)
...
smm is only really useful for sysemu, split in two modules
around the CONFIG_USER_ONLY, in order to remove the ifdef
and use the build system instead.
add cpu_abort() when detecting attempts to enter SMM mode via
SMI interrupt in user-mode, and assert that the cpu is not
in SMM mode while translating RSM instructions.
Signed-off-by: Claudio Fontana <cfontana@suse.de >
Cc: Paolo Bonzini <pbonzini@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210322132800.7470-12-cfontana@suse.de >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2021-05-10 15:41:51 -04:00
Richard Henderson
10b8eb94c0
target/i386: Verify memory operand for lcall and ljmp
...
These two opcodes only allow a memory operand.
Lacking the check for a register operand, we used the A0 temp
without initialization, which led to a tcg abort.
Buglink: https://bugs.launchpad.net/qemu/+bug/1921138
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210324164650.128608-1-richard.henderson@linaro.org >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2021-04-01 09:40:45 +02:00