* Fix off-by-one in MODE SELECT commands
* extend --extra-*flags behavior to meson-based tests * allow using snappy in static builds * i386 TCG fixes * fix build failure when libgbm is not available -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmGJB/gUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroM0+gf/STwGM2h7I/1V/rAQnLzpA4Y9iMwB urMjz5rBqSpBSvyxA83JAj7a/6V70U+gm+03Nh4zdKyvKKzVmsSHtLU6EbZFUy5y +agY6AoB/3VLIWSf8zJ5KsxLS3r030mvu6XBbs94AEDbQ5O4YjO+Tb5r/dIOVhJb W1B59cPvkSmmBoFnJe2/CNcHf0AMDQ96ge2su+Sx909Lyo94r6kibFb1bkjep/ke 0f21o3nAXSN/GBoZutLyZvMdEpwddrYwjVIyV2zCKL2XjTVXDKIphHM2iLyJxNli mnsQY51ZVdNkNAVy76nUWQ4+nJ/kT8Dhcl+6kWvI373PgokmEVpgZ0QKHQ== =GH6j -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging * Fix off-by-one in MODE SELECT commands * extend --extra-*flags behavior to meson-based tests * allow using snappy in static builds * i386 TCG fixes * fix build failure when libgbm is not available # gpg: Signature made Mon 08 Nov 2021 12:20:24 PM CET # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] * remotes/bonzini/tags/for-upstream: ui/gtk-egl: Fix build failure when libgbm is not available configure: ignore preexisting QEMU_*FLAGS envvars configure: propagate --extra-cflags and --extra-ldflags to meson compile tests configure: preserve CFLAGS, CXXFLAGS and LDFLAGS in config.status configure: simplify calls to meson_quote docs: adjust for demise of scripts/create_config meson: perform snappy test with the C++ compiler if used hw/scsi/scsi-disk: MODE_PAGE_ALLS not allowed in MODE SELECT commands target-i386: mmu: fix handling of noncanonical virtual addresses target-i386: mmu: use pg_mode instead of HF_LMA_MASK Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
5e10ccc270
46
configure
vendored
46
configure
vendored
@ -158,7 +158,7 @@ update_cxxflags() {
|
||||
# Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
|
||||
# options which some versions of GCC's C++ compiler complain about
|
||||
# because they only make sense for C programs.
|
||||
QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS"
|
||||
QEMU_CXXFLAGS="-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS"
|
||||
CONFIGURE_CXXFLAGS=$(echo "$CONFIGURE_CFLAGS" | sed s/-std=gnu11/-std=gnu++11/)
|
||||
for arg in $QEMU_CFLAGS; do
|
||||
case $arg in
|
||||
@ -174,14 +174,14 @@ update_cxxflags() {
|
||||
|
||||
compile_object() {
|
||||
local_cflags="$1"
|
||||
do_cc $CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
|
||||
do_cc $CFLAGS $EXTRA_CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
|
||||
}
|
||||
|
||||
compile_prog() {
|
||||
local_cflags="$1"
|
||||
local_ldflags="$2"
|
||||
do_cc $CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC \
|
||||
$LDFLAGS $CONFIGURE_LDFLAGS $QEMU_LDFLAGS $local_ldflags
|
||||
do_cc $CFLAGS $EXTRA_CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC \
|
||||
$LDFLAGS $EXTRA_LDFLAGS $CONFIGURE_LDFLAGS $QEMU_LDFLAGS $local_ldflags
|
||||
}
|
||||
|
||||
# symbolically link $1 to $2. Portable version of "ln -sf".
|
||||
@ -286,6 +286,10 @@ for opt do
|
||||
esac
|
||||
done
|
||||
|
||||
EXTRA_CFLAGS=""
|
||||
EXTRA_CXXFLAGS=""
|
||||
EXTRA_LDFLAGS=""
|
||||
|
||||
xen_ctrl_version="$default_feature"
|
||||
xfs="$default_feature"
|
||||
membarrier="$default_feature"
|
||||
@ -394,13 +398,13 @@ for opt do
|
||||
;;
|
||||
--cpu=*) cpu="$optarg"
|
||||
;;
|
||||
--extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
|
||||
QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg"
|
||||
--extra-cflags=*)
|
||||
EXTRA_CFLAGS="$EXTRA_CFLAGS $optarg"
|
||||
EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS $optarg"
|
||||
;;
|
||||
--extra-cxxflags=*) EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS $optarg"
|
||||
;;
|
||||
--extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
|
||||
;;
|
||||
--extra-ldflags=*) QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg"
|
||||
EXTRA_LDFLAGS="$optarg"
|
||||
--extra-ldflags=*) EXTRA_LDFLAGS="$EXTRA_LDFLAGS $optarg"
|
||||
;;
|
||||
--enable-debug-info) debug_info="yes"
|
||||
;;
|
||||
@ -461,11 +465,13 @@ sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
|
||||
# left shift of signed integers is well defined and has the expected
|
||||
# 2s-complement style results. (Both clang and gcc agree that it
|
||||
# provides these semantics.)
|
||||
QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
|
||||
QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv"
|
||||
QEMU_CFLAGS="-Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
|
||||
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
|
||||
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
|
||||
|
||||
QEMU_LDFLAGS=
|
||||
|
||||
# Flags that are needed during configure but later taken care of by Meson
|
||||
CONFIGURE_CFLAGS="-std=gnu11 -Wall"
|
||||
CONFIGURE_LDFLAGS=
|
||||
@ -1346,8 +1352,8 @@ Advanced options (experts only):
|
||||
build time
|
||||
--cxx=CXX use C++ compiler CXX [$cxx]
|
||||
--objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
|
||||
--extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
|
||||
--extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
|
||||
--extra-cflags=CFLAGS append extra C compiler flags CFLAGS
|
||||
--extra-cxxflags=CXXFLAGS append extra C++ compiler flags CXXFLAGS
|
||||
--extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
|
||||
--cross-cc-ARCH=CC use compiler when building ARCH guest test cases
|
||||
--cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
|
||||
@ -3402,7 +3408,7 @@ EOF
|
||||
|
||||
update_cxxflags
|
||||
|
||||
if do_cxx $CXXFLAGS $CONFIGURE_CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
|
||||
if do_cxx $CXXFLAGS $EXTRA_CXXFLAGS $CONFIGURE_CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
|
||||
# C++ compiler $cxx works ok with C compiler $cc
|
||||
:
|
||||
else
|
||||
@ -3894,6 +3900,7 @@ echo "TOPSRC_DIR=$source_path" >> $config_mak
|
||||
if test "$skip_meson" = no; then
|
||||
cross="config-meson.cross.new"
|
||||
meson_quote() {
|
||||
test $# = 0 && return
|
||||
echo "'$(echo $* | sed "s/ /','/g")'"
|
||||
}
|
||||
|
||||
@ -3908,10 +3915,10 @@ if test "$skip_meson" = no; then
|
||||
|
||||
test -z "$cxx" && echo "link_language = 'c'" >> $cross
|
||||
echo "[built-in options]" >> $cross
|
||||
echo "c_args = [${CFLAGS:+$(meson_quote $CFLAGS)}]" >> $cross
|
||||
echo "cpp_args = [${CXXFLAGS:+$(meson_quote $CXXFLAGS)}]" >> $cross
|
||||
echo "c_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
|
||||
echo "cpp_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
|
||||
echo "c_args = [$(meson_quote $CFLAGS $EXTRA_CFLAGS)]" >> $cross
|
||||
echo "cpp_args = [$(meson_quote $CXXFLAGS $EXTRA_CXXFLAGS)]" >> $cross
|
||||
echo "c_link_args = [$(meson_quote $CFLAGS $LDFLAGS $EXTRA_CFLAGS $EXTRA_LDFLAGS)]" >> $cross
|
||||
echo "cpp_link_args = [$(meson_quote $CXXFLAGS $LDFLAGS $EXTRA_CXXFLAGS $EXTRA_LDFLAGS)]" >> $cross
|
||||
echo "[binaries]" >> $cross
|
||||
echo "c = [$(meson_quote $cc $CPU_CFLAGS)]" >> $cross
|
||||
test -n "$cxx" && echo "cpp = [$(meson_quote $cxx $CPU_CFLAGS)]" >> $cross
|
||||
@ -4056,9 +4063,12 @@ preserve_env AR
|
||||
preserve_env AS
|
||||
preserve_env CC
|
||||
preserve_env CPP
|
||||
preserve_env CFLAGS
|
||||
preserve_env CXX
|
||||
preserve_env CXXFLAGS
|
||||
preserve_env INSTALL
|
||||
preserve_env LD
|
||||
preserve_env LDFLAGS
|
||||
preserve_env LD_LIBRARY_PATH
|
||||
preserve_env LIBTOOL
|
||||
preserve_env MAKE
|
||||
|
@ -464,11 +464,10 @@ Built by Meson:
|
||||
scripts/make_device_config.sh program, feeding it the
|
||||
default-configs/$TARGET-NAME file as input.
|
||||
|
||||
``config-host.h``, ``$TARGET-NAME/config-target.h``, ``$TARGET-NAME/config-devices.h``
|
||||
These files are used by source code to determine what features
|
||||
are enabled. They are generated from the contents of the corresponding
|
||||
``*.h`` files using the scripts/create_config program. This extracts
|
||||
relevant variables and formats them as C preprocessor macros.
|
||||
``config-host.h``, ``$TARGET_NAME-config-target.h``, ``$TARGET_NAME-config-devices.h``
|
||||
These files are used by source code to determine what features are
|
||||
enabled. They are generated from the contents of the corresponding
|
||||
``*.mak`` files using Meson's ``configure_file()`` function.
|
||||
|
||||
``build.ninja``
|
||||
The build rules.
|
||||
|
@ -1087,6 +1087,7 @@ static int mode_sense_page(SCSIDiskState *s, int page, uint8_t **p_outbuf,
|
||||
uint8_t *p = *p_outbuf + 2;
|
||||
int length;
|
||||
|
||||
assert(page < ARRAY_SIZE(mode_sense_valid));
|
||||
if ((mode_sense_valid[page] & (1 << s->qdev.type)) == 0) {
|
||||
return -1;
|
||||
}
|
||||
@ -1428,6 +1429,11 @@ static int scsi_disk_check_mode_select(SCSIDiskState *s, int page,
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* MODE_PAGE_ALLS is only valid for MODE SENSE commands */
|
||||
if (page == MODE_PAGE_ALLS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
p = mode_current;
|
||||
memset(mode_current, 0, inlen + 2);
|
||||
len = mode_sense_page(s, page, &p, 0);
|
||||
|
@ -197,6 +197,10 @@ add_project_arguments('-iquote', '.',
|
||||
link_language = meson.get_external_property('link_language', 'cpp')
|
||||
if link_language == 'cpp'
|
||||
add_languages('cpp', required: true, native: false)
|
||||
cxx = meson.get_compiler('cpp')
|
||||
linker = cxx
|
||||
else
|
||||
linker = cc
|
||||
endif
|
||||
if host_machine.system() == 'darwin'
|
||||
add_languages('objc', required: false, native: false)
|
||||
@ -1109,7 +1113,7 @@ if not get_option('snappy').auto() or have_system
|
||||
required: get_option('snappy'),
|
||||
kwargs: static_kwargs)
|
||||
endif
|
||||
if snappy.found() and not cc.links('''
|
||||
if snappy.found() and not linker.links('''
|
||||
#include <snappy-c.h>
|
||||
int main(void) { snappy_max_compressed_length(4096); return 0; }''', dependencies: snappy)
|
||||
snappy = not_found
|
||||
|
@ -90,19 +90,10 @@ static int mmu_translate(CPUState *cs, hwaddr addr, MMUTranslateFunc get_hphys_f
|
||||
target_ulong pdpe_addr;
|
||||
|
||||
#ifdef TARGET_X86_64
|
||||
if (env->hflags & HF_LMA_MASK) {
|
||||
if (pg_mode & PG_MODE_LMA) {
|
||||
bool la57 = pg_mode & PG_MODE_LA57;
|
||||
uint64_t pml5e_addr, pml5e;
|
||||
uint64_t pml4e_addr, pml4e;
|
||||
int32_t sext;
|
||||
|
||||
/* test virtual address sign extension */
|
||||
sext = la57 ? (int64_t)addr >> 56 : (int64_t)addr >> 47;
|
||||
if (get_hphys_func && sext != 0 && sext != -1) {
|
||||
env->error_code = 0;
|
||||
cs->exception_index = EXCP0D_GPF;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (la57) {
|
||||
pml5e_addr = ((cr3 & ~0xfff) +
|
||||
@ -287,7 +278,7 @@ do_check_protect_pse36:
|
||||
*prot |= PAGE_EXEC;
|
||||
}
|
||||
|
||||
if (!(env->hflags & HF_LMA_MASK)) {
|
||||
if (!(pg_mode & PG_MODE_LMA)) {
|
||||
pkr = 0;
|
||||
} else if (ptep & PG_USER_MASK) {
|
||||
pkr = pg_mode & PG_MODE_PKE ? env->pkru : 0;
|
||||
@ -423,6 +414,18 @@ static int handle_mmu_fault(CPUState *cs, vaddr addr, int size,
|
||||
page_size = 4096;
|
||||
} else {
|
||||
pg_mode = get_pg_mode(env);
|
||||
if (pg_mode & PG_MODE_LMA) {
|
||||
int32_t sext;
|
||||
|
||||
/* test virtual address sign extension */
|
||||
sext = (int64_t)addr >> (pg_mode & PG_MODE_LA57 ? 56 : 47);
|
||||
if (sext != 0 && sext != -1) {
|
||||
env->error_code = 0;
|
||||
cs->exception_index = EXCP0D_GPF;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
error_code = mmu_translate(cs, addr, get_hphys, env->cr[3], is_write1,
|
||||
mmu_idx, pg_mode,
|
||||
&paddr, &page_size, &prot);
|
||||
|
@ -155,10 +155,12 @@ void gd_egl_refresh(DisplayChangeListener *dcl)
|
||||
surface_gl_destroy_texture(vc->gfx.gls, vc->gfx.ds);
|
||||
surface_gl_create_texture(vc->gfx.gls, vc->gfx.ds);
|
||||
}
|
||||
#ifdef CONFIG_GBM
|
||||
if (vc->gfx.guest_fb.dmabuf) {
|
||||
egl_dmabuf_release_texture(vc->gfx.guest_fb.dmabuf);
|
||||
gd_egl_scanout_dmabuf(dcl, vc->gfx.guest_fb.dmabuf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
graphic_hw_update(dcl->con);
|
||||
|
Loading…
Reference in New Issue
Block a user