* New Sapphire Rapids model support
* x86 bugfixes * Prepare to drop support for Python 3.6 -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmP87gcUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroM+TAf/TcRrukw+FXUs0Ld3AadRY6g3xV2x n1VIfkMC2Bp1LVOS1W9aw7V6jPg8KMAV9SCQJjsVtyB5E9yPQg+/w7UgexqISYQG 7NK3jDXmslSGIHNHh4qH9xAjQGjw/6e7N/gyWP+99vHPwZSbFJT6k7KP0/3O9yCu /9KINq8AvvGbfW5m2d/umV1v1Gq4KwXkTa5uVIOciDMJtaA0QjADHg1MqsHPzBUP F4du5BbuMaJkgQgJV5zsn7W9NnEQt1XzSug1c/vp2vyqEV00L4TjL9BzTqsTEBtS KjUcQif5R5a+o8QRND9j8f74xjFpOR/nAEleNsfo6iwZQwWAiBQZ8ETsew== =2aMG -----END PGP SIGNATURE----- Merge tag 'for-upstream-8.0' of https://gitlab.com/bonzini/qemu into staging * New Sapphire Rapids model support * x86 bugfixes * Prepare to drop support for Python 3.6 # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmP87gcUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroM+TAf/TcRrukw+FXUs0Ld3AadRY6g3xV2x # n1VIfkMC2Bp1LVOS1W9aw7V6jPg8KMAV9SCQJjsVtyB5E9yPQg+/w7UgexqISYQG # 7NK3jDXmslSGIHNHh4qH9xAjQGjw/6e7N/gyWP+99vHPwZSbFJT6k7KP0/3O9yCu # /9KINq8AvvGbfW5m2d/umV1v1Gq4KwXkTa5uVIOciDMJtaA0QjADHg1MqsHPzBUP # F4du5BbuMaJkgQgJV5zsn7W9NnEQt1XzSug1c/vp2vyqEV00L4TjL9BzTqsTEBtS # KjUcQif5R5a+o8QRND9j8f74xjFpOR/nAEleNsfo6iwZQwWAiBQZ8ETsew== # =2aMG # -----END PGP SIGNATURE----- # gpg: Signature made Mon 27 Feb 2023 17:53:11 GMT # 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] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream-8.0' of https://gitlab.com/bonzini/qemu: i386: Add new CPU model SapphireRapids target/i386: KVM: allow fast string operations if host supports them target/i386: add FZRM, FSRS, FSRC target/i386: add FSRM to TCG MAINTAINERS: Cover RCU documentation ci, docker: update CentOS and OpenSUSE Python to non-EOL versions docs/devel: update and clarify lcitool instructions lcitool: update submodule configure: Look for auxiliary Python installations configure: protect against escaping venv when running Meson meson: stop looking for 'sphinx-build-3' meson: Avoid duplicates in generated config-poison.h again target/i386: Fix BZHI instruction Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
33dc95d032
@ -2816,6 +2816,8 @@ F: qapi/run-state.json
|
|||||||
Read, Copy, Update (RCU)
|
Read, Copy, Update (RCU)
|
||||||
M: Paolo Bonzini <pbonzini@redhat.com>
|
M: Paolo Bonzini <pbonzini@redhat.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: docs/devel/lockcnt.txt
|
||||||
|
F: docs/devel/rcu.txt
|
||||||
F: include/qemu/rcu*.h
|
F: include/qemu/rcu*.h
|
||||||
F: tests/unit/rcutorture.c
|
F: tests/unit/rcutorture.c
|
||||||
F: tests/unit/test-rcu-*.c
|
F: tests/unit/test-rcu-*.c
|
||||||
|
82
configure
vendored
82
configure
vendored
@ -596,20 +596,43 @@ esac
|
|||||||
|
|
||||||
: ${make=${MAKE-make}}
|
: ${make=${MAKE-make}}
|
||||||
|
|
||||||
# We prefer python 3.x. A bare 'python' is traditionally
|
|
||||||
# python 2.x, but some distros have it as python 3.x, so
|
|
||||||
# we check that too
|
|
||||||
python=
|
|
||||||
explicit_python=no
|
|
||||||
for binary in "${PYTHON-python3}" python
|
|
||||||
do
|
|
||||||
if has "$binary"
|
|
||||||
then
|
|
||||||
python=$(command -v "$binary")
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
|
check_py_version() {
|
||||||
|
# We require python >= 3.6.
|
||||||
|
# NB: a True python conditional creates a non-zero return code (Failure)
|
||||||
|
"$1" -c 'import sys; sys.exit(sys.version_info < (3,6))'
|
||||||
|
}
|
||||||
|
|
||||||
|
python=
|
||||||
|
first_python=
|
||||||
|
if test -z "${PYTHON}"; then
|
||||||
|
explicit_python=no
|
||||||
|
# A bare 'python' is traditionally python 2.x, but some distros
|
||||||
|
# have it as python 3.x, so check in both places.
|
||||||
|
for binary in python3 python python3.11 python3.10 python3.9 python3.8 python3.7 python3.6; do
|
||||||
|
if has "$binary"; then
|
||||||
|
python=$(command -v "$binary")
|
||||||
|
if check_py_version "$python"; then
|
||||||
|
# This one is good.
|
||||||
|
first_python=
|
||||||
|
break
|
||||||
|
else
|
||||||
|
first_python=$python
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
# Same as above, but only check the environment variable.
|
||||||
|
has "${PYTHON}" || error_exit "The PYTHON environment variable does not point to an executable"
|
||||||
|
python=$(command -v "$PYTHON")
|
||||||
|
explicit_python=yes
|
||||||
|
if check_py_version "$python"; then
|
||||||
|
# This one is good.
|
||||||
|
first_python=
|
||||||
|
else
|
||||||
|
first_python=$first_python
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Check for ancillary tools used in testing
|
# Check for ancillary tools used in testing
|
||||||
genisoimage=
|
genisoimage=
|
||||||
@ -1034,25 +1057,44 @@ rm -f ./*/config-devices.mak.d
|
|||||||
|
|
||||||
if test -z "$python"
|
if test -z "$python"
|
||||||
then
|
then
|
||||||
error_exit "Python not found. Use --python=/path/to/python"
|
# If first_python is set, there was a binary somewhere even though
|
||||||
|
# it was not suitable. Use it for the error message.
|
||||||
|
if test -n "$first_python"; then
|
||||||
|
error_exit "Cannot use '$first_python', Python >= 3.6 is required." \
|
||||||
|
"Use --python=/path/to/python to specify a supported Python."
|
||||||
|
else
|
||||||
|
error_exit "Python not found. Use --python=/path/to/python"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! has "$make"
|
if ! has "$make"
|
||||||
then
|
then
|
||||||
error_exit "GNU make ($make) not found"
|
error_exit "GNU make ($make) not found"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Note that if the Python conditional here evaluates True we will exit
|
if ! check_py_version "$python"; then
|
||||||
# with status 1 which is a shell 'false' value.
|
|
||||||
if ! $python -c 'import sys; sys.exit(sys.version_info < (3,6))'; then
|
|
||||||
error_exit "Cannot use '$python', Python >= 3.6 is required." \
|
error_exit "Cannot use '$python', Python >= 3.6 is required." \
|
||||||
"Use --python=/path/to/python to specify a supported Python."
|
"Use --python=/path/to/python to specify a supported Python."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Suppress writing compiled files
|
# Resolve PATH + suppress writing compiled files
|
||||||
python="$python -B"
|
python="$(command -v "$python") -B"
|
||||||
|
|
||||||
|
has_meson() {
|
||||||
|
local python_dir=$(dirname "$python")
|
||||||
|
# PEP405: pyvenv.cfg is either adjacent to the Python executable
|
||||||
|
# or one directory above
|
||||||
|
if test -f $python_dir/pyvenv.cfg || test -f $python_dir/../pyvenv.cfg; then
|
||||||
|
# Ensure that Meson and Python come from the same virtual environment
|
||||||
|
test -x "$python_dir/meson" &&
|
||||||
|
test "$(command -v meson)" -ef "$python_dir/meson"
|
||||||
|
else
|
||||||
|
has meson
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
if test -z "$meson"; then
|
if test -z "$meson"; then
|
||||||
if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.61.5; then
|
if test "$explicit_python" = no && has_meson && version_ge "$(meson --version)" 0.61.5; then
|
||||||
meson=meson
|
meson=meson
|
||||||
elif test "$git_submodules_action" != 'ignore' ; then
|
elif test "$git_submodules_action" != 'ignore' ; then
|
||||||
meson=git
|
meson=git
|
||||||
|
@ -429,49 +429,61 @@ using the ``lcitool`` program provided by the ``libvirt-ci`` project:
|
|||||||
|
|
||||||
https://gitlab.com/libvirt/libvirt-ci
|
https://gitlab.com/libvirt/libvirt-ci
|
||||||
|
|
||||||
In that project, there is a ``mappings.yml`` file defining the distro native
|
``libvirt-ci`` contains an ``lcitool`` program as well as a list of
|
||||||
package names for a wide variety of third party projects. This is processed
|
mappings to distribution package names for a wide variety of third
|
||||||
in combination with a project defined list of build pre-requisites to determine
|
party projects. ``lcitool`` applies the mappings to a list of build
|
||||||
the list of native packages to install on each distribution. This can be used
|
pre-requisites in ``tests/lcitool/projects/qemu.yml``, determines the
|
||||||
to generate dockerfiles, VM package lists and Cirrus CI variables needed to
|
list of native packages to install on each distribution, and uses them
|
||||||
setup build environments across OS distributions with a consistent set of
|
to generate build environments (dockerfiles and Cirrus CI variable files)
|
||||||
packages present.
|
that are consistent across OS distribution.
|
||||||
|
|
||||||
When preparing a patch series that adds a new build pre-requisite to QEMU,
|
|
||||||
updates to various lcitool data files may be required.
|
|
||||||
|
|
||||||
|
|
||||||
Adding new build pre-requisites
|
Adding new build pre-requisites
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
When preparing a patch series that adds a new build
|
||||||
|
pre-requisite to QEMU, the prerequisites should to be added to
|
||||||
|
``tests/lcitool/projects/qemu.yml`` in order to make the dependency
|
||||||
|
available in the CI build environments.
|
||||||
|
|
||||||
In the simple case where the pre-requisite is already known to ``libvirt-ci``
|
In the simple case where the pre-requisite is already known to ``libvirt-ci``
|
||||||
the following steps are needed
|
the following steps are needed:
|
||||||
|
|
||||||
* Edit ``tests/lcitool/projects/qemu.yml`` and add the pre-requisite
|
* Edit ``tests/lcitool/projects/qemu.yml`` and add the pre-requisite
|
||||||
|
|
||||||
* Run ``make lcitool-refresh`` to re-generate all relevant build environment
|
* Run ``make lcitool-refresh`` to re-generate all relevant build environment
|
||||||
manifests
|
manifests
|
||||||
|
|
||||||
In some cases ``libvirt-ci`` will not know about the build pre-requisite and
|
It may be that ``libvirt-ci`` does not know about the new pre-requisite.
|
||||||
thus some extra preparation steps will be required first
|
If that is the case, some extra preparation steps will be required
|
||||||
|
first to contribute the mapping to the ``libvirt-ci`` project:
|
||||||
|
|
||||||
* Fork the ``libvirt-ci`` project on gitlab
|
* Fork the ``libvirt-ci`` project on gitlab
|
||||||
|
|
||||||
* Edit the ``mappings.yml`` change to add an entry for the new build
|
* Add an entry for the new build prerequisite to
|
||||||
prerequisite, listing its native package name on as many OS distros
|
``lcitool/facts/mappings.yml``, listing its native package name on as
|
||||||
as practical.
|
many OS distros as practical. Run ``python -m pytest --regenerate-output``
|
||||||
|
and check that the changes are correct.
|
||||||
|
|
||||||
* Commit the ``mappings.yml`` change and submit a merge request to
|
* Commit the ``mappings.yml`` change together with the regenerated test
|
||||||
the ``libvirt-ci`` project, noting in the description that this
|
files, and submit a merge request to the ``libvirt-ci`` project.
|
||||||
is a new build pre-requisite desired for use with QEMU
|
Please note in the description that this is a new build pre-requisite
|
||||||
|
desired for use with QEMU.
|
||||||
|
|
||||||
* CI pipeline will run to validate that the changes to ``mappings.yml``
|
* CI pipeline will run to validate that the changes to ``mappings.yml``
|
||||||
are correct, by attempting to install the newly listed package on
|
are correct, by attempting to install the newly listed package on
|
||||||
all OS distributions supported by ``libvirt-ci``.
|
all OS distributions supported by ``libvirt-ci``.
|
||||||
|
|
||||||
* Once the merge request is accepted, go back to QEMU and update
|
* Once the merge request is accepted, go back to QEMU and update
|
||||||
the ``libvirt-ci`` submodule to point to a commit that contains
|
the ``tests/lcitool/libvirt-ci`` submodule to point to a commit that
|
||||||
the ``mappings.yml`` update.
|
contains the ``mappings.yml`` update. Then add the prerequisite and
|
||||||
|
run ``make lcitool-refresh``.
|
||||||
|
|
||||||
|
For enterprise distros that default to old, end-of-life versions of the
|
||||||
|
Python runtime, QEMU uses a separate set of mappings that work with more
|
||||||
|
recent versions. These can be found in ``tests/lcitool/mappings.yml``.
|
||||||
|
Modifying this file should not be necessary unless the new pre-requisite
|
||||||
|
is a Python library or tool.
|
||||||
|
|
||||||
|
|
||||||
Adding new OS distros
|
Adding new OS distros
|
||||||
@ -498,18 +510,20 @@ Assuming there is agreement to add a new OS distro then
|
|||||||
|
|
||||||
* Fork the ``libvirt-ci`` project on gitlab
|
* Fork the ``libvirt-ci`` project on gitlab
|
||||||
|
|
||||||
* Add metadata under ``guests/lcitool/lcitool/ansible/group_vars/``
|
* Add metadata under ``lcitool/facts/targets/`` for the new OS
|
||||||
for the new OS distro. There might be code changes required if
|
distro. There might be code changes required if the OS distro
|
||||||
the OS distro uses a package format not currently known. The
|
uses a package format not currently known. The ``libvirt-ci``
|
||||||
``libvirt-ci`` maintainers can advise on this when the issue
|
maintainers can advise on this when the issue is filed.
|
||||||
is file.
|
|
||||||
|
|
||||||
* Edit the ``mappings.yml`` change to update all the existing package
|
* Edit the ``lcitool/facts/mappings.yml`` change to add entries for
|
||||||
entries, providing details of the new OS distro
|
the new OS, listing the native package names for as many packages
|
||||||
|
as practical. Run ``python -m pytest --regenerate-output`` and
|
||||||
|
check that the changes are correct.
|
||||||
|
|
||||||
* Commit the ``mappings.yml`` change and submit a merge request to
|
* Commit the changes to ``lcitool/facts`` and the regenerated test
|
||||||
the ``libvirt-ci`` project, noting in the description that this
|
files, and submit a merge request to the ``libvirt-ci`` project.
|
||||||
is a new build pre-requisite desired for use with QEMU
|
Please note in the description that this is a new build pre-requisite
|
||||||
|
desired for use with QEMU
|
||||||
|
|
||||||
* CI pipeline will run to validate that the changes to ``mappings.yml``
|
* CI pipeline will run to validate that the changes to ``mappings.yml``
|
||||||
are correct, by attempting to install the newly listed package on
|
are correct, by attempting to install the newly listed package on
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
if get_option('sphinx_build') == ''
|
sphinx_build = find_program(get_option('sphinx_build'),
|
||||||
sphinx_build = find_program(['sphinx-build-3', 'sphinx-build'],
|
required: get_option('docs'))
|
||||||
required: get_option('docs'))
|
|
||||||
else
|
|
||||||
sphinx_build = find_program(get_option('sphinx_build'),
|
|
||||||
required: get_option('docs'))
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Check if tools are available to build documentation.
|
# Check if tools are available to build documentation.
|
||||||
build_docs = false
|
build_docs = false
|
||||||
|
@ -12,7 +12,7 @@ option('pkgversion', type : 'string', value : '',
|
|||||||
description: 'use specified string as sub-version of the package')
|
description: 'use specified string as sub-version of the package')
|
||||||
option('smbd', type : 'string', value : '',
|
option('smbd', type : 'string', value : '',
|
||||||
description: 'Path to smbd for slirp networking')
|
description: 'Path to smbd for slirp networking')
|
||||||
option('sphinx_build', type : 'string', value : '',
|
option('sphinx_build', type : 'string', value : 'sphinx-build',
|
||||||
description: 'Use specified sphinx-build for building document')
|
description: 'Use specified sphinx-build for building document')
|
||||||
option('iasl', type : 'string', value : '',
|
option('iasl', type : 'string', value : '',
|
||||||
description: 'Path to ACPI disassembler')
|
description: 'Path to ACPI disassembler')
|
||||||
|
@ -13,4 +13,4 @@ exec sed -n \
|
|||||||
-e 's///' \
|
-e 's///' \
|
||||||
-e 's/ .*//' \
|
-e 's/ .*//' \
|
||||||
-e 's/^/#pragma GCC poison /p' \
|
-e 's/^/#pragma GCC poison /p' \
|
||||||
-e '}' "$@"
|
-e '}' "$@" | sort -u
|
||||||
|
@ -55,6 +55,7 @@ meson_options_help() {
|
|||||||
printf "%s\n" ' --localstatedir=VALUE Localstate data directory [/var/local]'
|
printf "%s\n" ' --localstatedir=VALUE Localstate data directory [/var/local]'
|
||||||
printf "%s\n" ' --mandir=VALUE Manual page directory [share/man]'
|
printf "%s\n" ' --mandir=VALUE Manual page directory [share/man]'
|
||||||
printf "%s\n" ' --sphinx-build=VALUE Use specified sphinx-build for building document'
|
printf "%s\n" ' --sphinx-build=VALUE Use specified sphinx-build for building document'
|
||||||
|
printf "%s\n" ' [sphinx-build]'
|
||||||
printf "%s\n" ' --sysconfdir=VALUE Sysconf data directory [etc]'
|
printf "%s\n" ' --sysconfdir=VALUE Sysconf data directory [etc]'
|
||||||
printf "%s\n" ' --tls-priority=VALUE Default TLS protocol/cipher priority string'
|
printf "%s\n" ' --tls-priority=VALUE Default TLS protocol/cipher priority string'
|
||||||
printf "%s\n" ' [NORMAL]'
|
printf "%s\n" ' [NORMAL]'
|
||||||
|
@ -661,8 +661,9 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
|
|||||||
#define TCG_7_0_ECX_FEATURES (CPUID_7_0_ECX_UMIP | CPUID_7_0_ECX_PKU | \
|
#define TCG_7_0_ECX_FEATURES (CPUID_7_0_ECX_UMIP | CPUID_7_0_ECX_PKU | \
|
||||||
/* CPUID_7_0_ECX_OSPKE is dynamic */ \
|
/* CPUID_7_0_ECX_OSPKE is dynamic */ \
|
||||||
CPUID_7_0_ECX_LA57 | CPUID_7_0_ECX_PKS | CPUID_7_0_ECX_VAES)
|
CPUID_7_0_ECX_LA57 | CPUID_7_0_ECX_PKS | CPUID_7_0_ECX_VAES)
|
||||||
#define TCG_7_0_EDX_FEATURES 0
|
#define TCG_7_0_EDX_FEATURES CPUID_7_0_EDX_FSRM
|
||||||
#define TCG_7_1_EAX_FEATURES 0
|
#define TCG_7_1_EAX_FEATURES (CPUID_7_1_EAX_FZRM | CPUID_7_1_EAX_FSRS | \
|
||||||
|
CPUID_7_1_EAX_FSRC)
|
||||||
#define TCG_APM_FEATURES 0
|
#define TCG_APM_FEATURES 0
|
||||||
#define TCG_6_EAX_FEATURES CPUID_6_EAX_ARAT
|
#define TCG_6_EAX_FEATURES CPUID_6_EAX_ARAT
|
||||||
#define TCG_XSAVE_FEATURES (CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XGETBV1)
|
#define TCG_XSAVE_FEATURES (CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XGETBV1)
|
||||||
@ -872,8 +873,8 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
|
|||||||
.feat_names = {
|
.feat_names = {
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL,
|
||||||
"avx-vnni", "avx512-bf16", NULL, NULL,
|
"avx-vnni", "avx512-bf16", NULL, NULL,
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, "fzrm", "fsrs",
|
||||||
NULL, NULL, NULL, NULL,
|
"fsrc", NULL, NULL, NULL,
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL,
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL,
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL,
|
||||||
@ -3467,6 +3468,135 @@ static const X86CPUDefinition builtin_x86_defs[] = {
|
|||||||
{ /* end of list */ }
|
{ /* end of list */ }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.name = "SapphireRapids",
|
||||||
|
.level = 0x20,
|
||||||
|
.vendor = CPUID_VENDOR_INTEL,
|
||||||
|
.family = 6,
|
||||||
|
.model = 143,
|
||||||
|
.stepping = 4,
|
||||||
|
/*
|
||||||
|
* please keep the ascending order so that we can have a clear view of
|
||||||
|
* bit position of each feature.
|
||||||
|
*/
|
||||||
|
.features[FEAT_1_EDX] =
|
||||||
|
CPUID_FP87 | CPUID_VME | CPUID_DE | CPUID_PSE | CPUID_TSC |
|
||||||
|
CPUID_MSR | CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC |
|
||||||
|
CPUID_SEP | CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV |
|
||||||
|
CPUID_PAT | CPUID_PSE36 | CPUID_CLFLUSH | CPUID_MMX | CPUID_FXSR |
|
||||||
|
CPUID_SSE | CPUID_SSE2,
|
||||||
|
.features[FEAT_1_ECX] =
|
||||||
|
CPUID_EXT_SSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSSE3 |
|
||||||
|
CPUID_EXT_FMA | CPUID_EXT_CX16 | CPUID_EXT_PCID | CPUID_EXT_SSE41 |
|
||||||
|
CPUID_EXT_SSE42 | CPUID_EXT_X2APIC | CPUID_EXT_MOVBE |
|
||||||
|
CPUID_EXT_POPCNT | CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_AES |
|
||||||
|
CPUID_EXT_XSAVE | CPUID_EXT_AVX | CPUID_EXT_F16C | CPUID_EXT_RDRAND,
|
||||||
|
.features[FEAT_8000_0001_EDX] =
|
||||||
|
CPUID_EXT2_SYSCALL | CPUID_EXT2_NX | CPUID_EXT2_PDPE1GB |
|
||||||
|
CPUID_EXT2_RDTSCP | CPUID_EXT2_LM,
|
||||||
|
.features[FEAT_8000_0001_ECX] =
|
||||||
|
CPUID_EXT3_LAHF_LM | CPUID_EXT3_ABM | CPUID_EXT3_3DNOWPREFETCH,
|
||||||
|
.features[FEAT_8000_0008_EBX] =
|
||||||
|
CPUID_8000_0008_EBX_WBNOINVD,
|
||||||
|
.features[FEAT_7_0_EBX] =
|
||||||
|
CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_HLE |
|
||||||
|
CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 |
|
||||||
|
CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCID | CPUID_7_0_EBX_RTM |
|
||||||
|
CPUID_7_0_EBX_AVX512F | CPUID_7_0_EBX_AVX512DQ |
|
||||||
|
CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | CPUID_7_0_EBX_SMAP |
|
||||||
|
CPUID_7_0_EBX_AVX512IFMA | CPUID_7_0_EBX_CLFLUSHOPT |
|
||||||
|
CPUID_7_0_EBX_CLWB | CPUID_7_0_EBX_AVX512CD | CPUID_7_0_EBX_SHA_NI |
|
||||||
|
CPUID_7_0_EBX_AVX512BW | CPUID_7_0_EBX_AVX512VL,
|
||||||
|
.features[FEAT_7_0_ECX] =
|
||||||
|
CPUID_7_0_ECX_AVX512_VBMI | CPUID_7_0_ECX_UMIP | CPUID_7_0_ECX_PKU |
|
||||||
|
CPUID_7_0_ECX_AVX512_VBMI2 | CPUID_7_0_ECX_GFNI |
|
||||||
|
CPUID_7_0_ECX_VAES | CPUID_7_0_ECX_VPCLMULQDQ |
|
||||||
|
CPUID_7_0_ECX_AVX512VNNI | CPUID_7_0_ECX_AVX512BITALG |
|
||||||
|
CPUID_7_0_ECX_AVX512_VPOPCNTDQ | CPUID_7_0_ECX_LA57 |
|
||||||
|
CPUID_7_0_ECX_RDPID | CPUID_7_0_ECX_BUS_LOCK_DETECT,
|
||||||
|
.features[FEAT_7_0_EDX] =
|
||||||
|
CPUID_7_0_EDX_FSRM | CPUID_7_0_EDX_SERIALIZE |
|
||||||
|
CPUID_7_0_EDX_TSX_LDTRK | CPUID_7_0_EDX_AMX_BF16 |
|
||||||
|
CPUID_7_0_EDX_AVX512_FP16 | CPUID_7_0_EDX_AMX_TILE |
|
||||||
|
CPUID_7_0_EDX_AMX_INT8 | CPUID_7_0_EDX_SPEC_CTRL |
|
||||||
|
CPUID_7_0_EDX_ARCH_CAPABILITIES | CPUID_7_0_EDX_SPEC_CTRL_SSBD,
|
||||||
|
.features[FEAT_ARCH_CAPABILITIES] =
|
||||||
|
MSR_ARCH_CAP_RDCL_NO | MSR_ARCH_CAP_IBRS_ALL |
|
||||||
|
MSR_ARCH_CAP_SKIP_L1DFL_VMENTRY | MSR_ARCH_CAP_MDS_NO |
|
||||||
|
MSR_ARCH_CAP_PSCHANGE_MC_NO | MSR_ARCH_CAP_TAA_NO,
|
||||||
|
.features[FEAT_XSAVE] =
|
||||||
|
CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC |
|
||||||
|
CPUID_XSAVE_XGETBV1 | CPUID_XSAVE_XSAVES | CPUID_D_1_EAX_XFD,
|
||||||
|
.features[FEAT_6_EAX] =
|
||||||
|
CPUID_6_EAX_ARAT,
|
||||||
|
.features[FEAT_7_1_EAX] =
|
||||||
|
CPUID_7_1_EAX_AVX_VNNI | CPUID_7_1_EAX_AVX512_BF16 |
|
||||||
|
CPUID_7_1_EAX_FZRM | CPUID_7_1_EAX_FSRS | CPUID_7_1_EAX_FSRC,
|
||||||
|
.features[FEAT_VMX_BASIC] =
|
||||||
|
MSR_VMX_BASIC_INS_OUTS | MSR_VMX_BASIC_TRUE_CTLS,
|
||||||
|
.features[FEAT_VMX_ENTRY_CTLS] =
|
||||||
|
VMX_VM_ENTRY_LOAD_DEBUG_CONTROLS | VMX_VM_ENTRY_IA32E_MODE |
|
||||||
|
VMX_VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL |
|
||||||
|
VMX_VM_ENTRY_LOAD_IA32_PAT | VMX_VM_ENTRY_LOAD_IA32_EFER,
|
||||||
|
.features[FEAT_VMX_EPT_VPID_CAPS] =
|
||||||
|
MSR_VMX_EPT_EXECONLY |
|
||||||
|
MSR_VMX_EPT_PAGE_WALK_LENGTH_4 | MSR_VMX_EPT_PAGE_WALK_LENGTH_5 |
|
||||||
|
MSR_VMX_EPT_WB | MSR_VMX_EPT_2MB | MSR_VMX_EPT_1GB |
|
||||||
|
MSR_VMX_EPT_INVEPT | MSR_VMX_EPT_AD_BITS |
|
||||||
|
MSR_VMX_EPT_INVEPT_SINGLE_CONTEXT | MSR_VMX_EPT_INVEPT_ALL_CONTEXT |
|
||||||
|
MSR_VMX_EPT_INVVPID | MSR_VMX_EPT_INVVPID_SINGLE_ADDR |
|
||||||
|
MSR_VMX_EPT_INVVPID_SINGLE_CONTEXT |
|
||||||
|
MSR_VMX_EPT_INVVPID_ALL_CONTEXT |
|
||||||
|
MSR_VMX_EPT_INVVPID_SINGLE_CONTEXT_NOGLOBALS,
|
||||||
|
.features[FEAT_VMX_EXIT_CTLS] =
|
||||||
|
VMX_VM_EXIT_SAVE_DEBUG_CONTROLS |
|
||||||
|
VMX_VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL |
|
||||||
|
VMX_VM_EXIT_ACK_INTR_ON_EXIT | VMX_VM_EXIT_SAVE_IA32_PAT |
|
||||||
|
VMX_VM_EXIT_LOAD_IA32_PAT | VMX_VM_EXIT_SAVE_IA32_EFER |
|
||||||
|
VMX_VM_EXIT_LOAD_IA32_EFER | VMX_VM_EXIT_SAVE_VMX_PREEMPTION_TIMER,
|
||||||
|
.features[FEAT_VMX_MISC] =
|
||||||
|
MSR_VMX_MISC_STORE_LMA | MSR_VMX_MISC_ACTIVITY_HLT |
|
||||||
|
MSR_VMX_MISC_VMWRITE_VMEXIT,
|
||||||
|
.features[FEAT_VMX_PINBASED_CTLS] =
|
||||||
|
VMX_PIN_BASED_EXT_INTR_MASK | VMX_PIN_BASED_NMI_EXITING |
|
||||||
|
VMX_PIN_BASED_VIRTUAL_NMIS | VMX_PIN_BASED_VMX_PREEMPTION_TIMER |
|
||||||
|
VMX_PIN_BASED_POSTED_INTR,
|
||||||
|
.features[FEAT_VMX_PROCBASED_CTLS] =
|
||||||
|
VMX_CPU_BASED_VIRTUAL_INTR_PENDING |
|
||||||
|
VMX_CPU_BASED_USE_TSC_OFFSETING | VMX_CPU_BASED_HLT_EXITING |
|
||||||
|
VMX_CPU_BASED_INVLPG_EXITING | VMX_CPU_BASED_MWAIT_EXITING |
|
||||||
|
VMX_CPU_BASED_RDPMC_EXITING | VMX_CPU_BASED_RDTSC_EXITING |
|
||||||
|
VMX_CPU_BASED_CR3_LOAD_EXITING | VMX_CPU_BASED_CR3_STORE_EXITING |
|
||||||
|
VMX_CPU_BASED_CR8_LOAD_EXITING | VMX_CPU_BASED_CR8_STORE_EXITING |
|
||||||
|
VMX_CPU_BASED_TPR_SHADOW | VMX_CPU_BASED_VIRTUAL_NMI_PENDING |
|
||||||
|
VMX_CPU_BASED_MOV_DR_EXITING | VMX_CPU_BASED_UNCOND_IO_EXITING |
|
||||||
|
VMX_CPU_BASED_USE_IO_BITMAPS | VMX_CPU_BASED_MONITOR_TRAP_FLAG |
|
||||||
|
VMX_CPU_BASED_USE_MSR_BITMAPS | VMX_CPU_BASED_MONITOR_EXITING |
|
||||||
|
VMX_CPU_BASED_PAUSE_EXITING |
|
||||||
|
VMX_CPU_BASED_ACTIVATE_SECONDARY_CONTROLS,
|
||||||
|
.features[FEAT_VMX_SECONDARY_CTLS] =
|
||||||
|
VMX_SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES |
|
||||||
|
VMX_SECONDARY_EXEC_ENABLE_EPT | VMX_SECONDARY_EXEC_DESC |
|
||||||
|
VMX_SECONDARY_EXEC_RDTSCP |
|
||||||
|
VMX_SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE |
|
||||||
|
VMX_SECONDARY_EXEC_ENABLE_VPID | VMX_SECONDARY_EXEC_WBINVD_EXITING |
|
||||||
|
VMX_SECONDARY_EXEC_UNRESTRICTED_GUEST |
|
||||||
|
VMX_SECONDARY_EXEC_APIC_REGISTER_VIRT |
|
||||||
|
VMX_SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY |
|
||||||
|
VMX_SECONDARY_EXEC_RDRAND_EXITING |
|
||||||
|
VMX_SECONDARY_EXEC_ENABLE_INVPCID |
|
||||||
|
VMX_SECONDARY_EXEC_ENABLE_VMFUNC | VMX_SECONDARY_EXEC_SHADOW_VMCS |
|
||||||
|
VMX_SECONDARY_EXEC_RDSEED_EXITING | VMX_SECONDARY_EXEC_ENABLE_PML |
|
||||||
|
VMX_SECONDARY_EXEC_XSAVES,
|
||||||
|
.features[FEAT_VMX_VMFUNC] =
|
||||||
|
MSR_VMX_VMFUNC_EPT_SWITCHING,
|
||||||
|
.xlevel = 0x80000008,
|
||||||
|
.model_id = "Intel Xeon Processor (SapphireRapids)",
|
||||||
|
.versions = (X86CPUVersionDefinition[]) {
|
||||||
|
{ .version = 1 },
|
||||||
|
{ /* end of list */ },
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.name = "Denverton",
|
.name = "Denverton",
|
||||||
.level = 21,
|
.level = 21,
|
||||||
@ -5622,7 +5752,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x1D: {
|
case 0x1D: {
|
||||||
/* AMX TILE */
|
/* AMX TILE, for now hardcoded for Sapphire Rapids*/
|
||||||
*eax = 0;
|
*eax = 0;
|
||||||
*ebx = 0;
|
*ebx = 0;
|
||||||
*ecx = 0;
|
*ecx = 0;
|
||||||
@ -5643,7 +5773,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x1E: {
|
case 0x1E: {
|
||||||
/* AMX TMUL */
|
/* AMX TMUL, for now hardcoded for Sapphire Rapids */
|
||||||
*eax = 0;
|
*eax = 0;
|
||||||
*ebx = 0;
|
*ebx = 0;
|
||||||
*ecx = 0;
|
*ecx = 0;
|
||||||
|
@ -881,10 +881,14 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWord w,
|
|||||||
#define CPUID_7_0_EDX_TSX_LDTRK (1U << 16)
|
#define CPUID_7_0_EDX_TSX_LDTRK (1U << 16)
|
||||||
/* Architectural LBRs */
|
/* Architectural LBRs */
|
||||||
#define CPUID_7_0_EDX_ARCH_LBR (1U << 19)
|
#define CPUID_7_0_EDX_ARCH_LBR (1U << 19)
|
||||||
|
/* AMX_BF16 instruction */
|
||||||
|
#define CPUID_7_0_EDX_AMX_BF16 (1U << 22)
|
||||||
/* AVX512_FP16 instruction */
|
/* AVX512_FP16 instruction */
|
||||||
#define CPUID_7_0_EDX_AVX512_FP16 (1U << 23)
|
#define CPUID_7_0_EDX_AVX512_FP16 (1U << 23)
|
||||||
/* AMX tile (two-dimensional register) */
|
/* AMX tile (two-dimensional register) */
|
||||||
#define CPUID_7_0_EDX_AMX_TILE (1U << 24)
|
#define CPUID_7_0_EDX_AMX_TILE (1U << 24)
|
||||||
|
/* AMX_INT8 instruction */
|
||||||
|
#define CPUID_7_0_EDX_AMX_INT8 (1U << 25)
|
||||||
/* Speculation Control */
|
/* Speculation Control */
|
||||||
#define CPUID_7_0_EDX_SPEC_CTRL (1U << 26)
|
#define CPUID_7_0_EDX_SPEC_CTRL (1U << 26)
|
||||||
/* Single Thread Indirect Branch Predictors */
|
/* Single Thread Indirect Branch Predictors */
|
||||||
@ -900,6 +904,13 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWord w,
|
|||||||
#define CPUID_7_1_EAX_AVX_VNNI (1U << 4)
|
#define CPUID_7_1_EAX_AVX_VNNI (1U << 4)
|
||||||
/* AVX512 BFloat16 Instruction */
|
/* AVX512 BFloat16 Instruction */
|
||||||
#define CPUID_7_1_EAX_AVX512_BF16 (1U << 5)
|
#define CPUID_7_1_EAX_AVX512_BF16 (1U << 5)
|
||||||
|
/* Fast Zero REP MOVS */
|
||||||
|
#define CPUID_7_1_EAX_FZRM (1U << 10)
|
||||||
|
/* Fast Short REP STOS */
|
||||||
|
#define CPUID_7_1_EAX_FSRS (1U << 11)
|
||||||
|
/* Fast Short REP CMPS/SCAS */
|
||||||
|
#define CPUID_7_1_EAX_FSRC (1U << 12)
|
||||||
|
|
||||||
/* XFD Extend Feature Disabled */
|
/* XFD Extend Feature Disabled */
|
||||||
#define CPUID_D_1_EAX_XFD (1U << 4)
|
#define CPUID_D_1_EAX_XFD (1U << 4)
|
||||||
|
|
||||||
|
@ -352,7 +352,7 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
|
|||||||
{
|
{
|
||||||
struct kvm_cpuid2 *cpuid;
|
struct kvm_cpuid2 *cpuid;
|
||||||
uint32_t ret = 0;
|
uint32_t ret = 0;
|
||||||
uint32_t cpuid_1_edx;
|
uint32_t cpuid_1_edx, unused;
|
||||||
uint64_t bitmask;
|
uint64_t bitmask;
|
||||||
|
|
||||||
cpuid = get_supported_cpuid(s);
|
cpuid = get_supported_cpuid(s);
|
||||||
@ -399,10 +399,20 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
|
|||||||
} else if (function == 6 && reg == R_EAX) {
|
} else if (function == 6 && reg == R_EAX) {
|
||||||
ret |= CPUID_6_EAX_ARAT; /* safe to allow because of emulated APIC */
|
ret |= CPUID_6_EAX_ARAT; /* safe to allow because of emulated APIC */
|
||||||
} else if (function == 7 && index == 0 && reg == R_EBX) {
|
} else if (function == 7 && index == 0 && reg == R_EBX) {
|
||||||
|
/* Not new instructions, just an optimization. */
|
||||||
|
uint32_t ebx;
|
||||||
|
host_cpuid(7, 0, &unused, &ebx, &unused, &unused);
|
||||||
|
ret |= ebx & CPUID_7_0_EBX_ERMS;
|
||||||
|
|
||||||
if (host_tsx_broken()) {
|
if (host_tsx_broken()) {
|
||||||
ret &= ~(CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_HLE);
|
ret &= ~(CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_HLE);
|
||||||
}
|
}
|
||||||
} else if (function == 7 && index == 0 && reg == R_EDX) {
|
} else if (function == 7 && index == 0 && reg == R_EDX) {
|
||||||
|
/* Not new instructions, just an optimization. */
|
||||||
|
uint32_t edx;
|
||||||
|
host_cpuid(7, 0, &unused, &unused, &unused, &edx);
|
||||||
|
ret |= edx & CPUID_7_0_EDX_FSRM;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Linux v4.17-v4.20 incorrectly return ARCH_CAPABILITIES on SVM hosts.
|
* Linux v4.17-v4.20 incorrectly return ARCH_CAPABILITIES on SVM hosts.
|
||||||
* We can detect the bug by checking if MSR_IA32_ARCH_CAPABILITIES is
|
* We can detect the bug by checking if MSR_IA32_ARCH_CAPABILITIES is
|
||||||
@ -411,6 +421,11 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
|
|||||||
if (!has_msr_arch_capabs) {
|
if (!has_msr_arch_capabs) {
|
||||||
ret &= ~CPUID_7_0_EDX_ARCH_CAPABILITIES;
|
ret &= ~CPUID_7_0_EDX_ARCH_CAPABILITIES;
|
||||||
}
|
}
|
||||||
|
} else if (function == 7 && index == 1 && reg == R_EAX) {
|
||||||
|
/* Not new instructions, just an optimization. */
|
||||||
|
uint32_t eax;
|
||||||
|
host_cpuid(7, 1, &eax, &unused, &unused, &unused);
|
||||||
|
ret |= eax & (CPUID_7_1_EAX_FZRM | CPUID_7_1_EAX_FSRS | CPUID_7_1_EAX_FSRC);
|
||||||
} else if (function == 0xd && index == 0 &&
|
} else if (function == 0xd && index == 0 &&
|
||||||
(reg == R_EAX || reg == R_EDX)) {
|
(reg == R_EAX || reg == R_EDX)) {
|
||||||
/*
|
/*
|
||||||
|
@ -1147,20 +1147,20 @@ static void gen_BLSR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
|
|||||||
static void gen_BZHI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
|
static void gen_BZHI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
|
||||||
{
|
{
|
||||||
MemOp ot = decode->op[0].ot;
|
MemOp ot = decode->op[0].ot;
|
||||||
TCGv bound;
|
TCGv bound = tcg_constant_tl(ot == MO_64 ? 63 : 31);
|
||||||
|
TCGv zero = tcg_constant_tl(0);
|
||||||
|
TCGv mone = tcg_constant_tl(-1);
|
||||||
|
|
||||||
tcg_gen_ext8u_tl(s->T1, cpu_regs[s->vex_v]);
|
tcg_gen_ext8u_tl(s->T1, s->T1);
|
||||||
bound = tcg_constant_tl(ot == MO_64 ? 63 : 31);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note that since we're using BMILG (in order to get O
|
* Note that since we're using BMILG (in order to get O
|
||||||
* cleared) we need to store the inverse into C.
|
* cleared) we need to store the inverse into C.
|
||||||
*/
|
*/
|
||||||
tcg_gen_setcond_tl(TCG_COND_LT, cpu_cc_src, s->T1, bound);
|
tcg_gen_setcond_tl(TCG_COND_LEU, cpu_cc_src, s->T1, bound);
|
||||||
tcg_gen_movcond_tl(TCG_COND_GT, s->T1, s->T1, bound, bound, s->T1);
|
|
||||||
|
|
||||||
tcg_gen_movi_tl(s->A0, -1);
|
tcg_gen_shl_tl(s->A0, mone, s->T1);
|
||||||
tcg_gen_shl_tl(s->A0, s->A0, s->T1);
|
tcg_gen_movcond_tl(TCG_COND_LEU, s->A0, s->T1, bound, s->A0, zero);
|
||||||
tcg_gen_andc_tl(s->T0, s->T0, s->A0);
|
tcg_gen_andc_tl(s->T0, s->T0, s->A0);
|
||||||
|
|
||||||
gen_op_update1_cc(s);
|
gen_op_update1_cc(s);
|
||||||
|
@ -61,7 +61,7 @@ RUN apk update && \
|
|||||||
liburing-dev \
|
liburing-dev \
|
||||||
libusb-dev \
|
libusb-dev \
|
||||||
linux-pam-dev \
|
linux-pam-dev \
|
||||||
llvm11 \
|
llvm \
|
||||||
lttng-ust-dev \
|
lttng-ust-dev \
|
||||||
lzo-dev \
|
lzo-dev \
|
||||||
make \
|
make \
|
||||||
|
@ -82,7 +82,6 @@ RUN dnf distro-sync -y && \
|
|||||||
lzo-devel \
|
lzo-devel \
|
||||||
make \
|
make \
|
||||||
mesa-libgbm-devel \
|
mesa-libgbm-devel \
|
||||||
meson \
|
|
||||||
ncurses-devel \
|
ncurses-devel \
|
||||||
nettle-devel \
|
nettle-devel \
|
||||||
ninja-build \
|
ninja-build \
|
||||||
@ -94,13 +93,12 @@ RUN dnf distro-sync -y && \
|
|||||||
pixman-devel \
|
pixman-devel \
|
||||||
pkgconfig \
|
pkgconfig \
|
||||||
pulseaudio-libs-devel \
|
pulseaudio-libs-devel \
|
||||||
python3 \
|
python38 \
|
||||||
python3-PyYAML \
|
python38-PyYAML \
|
||||||
python3-numpy \
|
python38-numpy \
|
||||||
python3-pillow \
|
python38-pip \
|
||||||
python3-pip \
|
python38-setuptools \
|
||||||
python3-sphinx \
|
python38-wheel \
|
||||||
python3-sphinx_rtd_theme \
|
|
||||||
rdma-core-devel \
|
rdma-core-devel \
|
||||||
rpm \
|
rpm \
|
||||||
sed \
|
sed \
|
||||||
@ -128,8 +126,14 @@ RUN dnf distro-sync -y && \
|
|||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||||
|
|
||||||
|
RUN /usr/bin/pip3.8 install \
|
||||||
|
meson==0.63.2 \
|
||||||
|
pillow \
|
||||||
|
sphinx \
|
||||||
|
sphinx-rtd-theme
|
||||||
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||||
ENV LANG "en_US.UTF-8"
|
ENV LANG "en_US.UTF-8"
|
||||||
ENV MAKE "/usr/bin/make"
|
ENV MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3"
|
ENV PYTHON "/usr/bin/python3.8"
|
||||||
|
@ -79,6 +79,7 @@ RUN nosync dnf install -y \
|
|||||||
mingw32-glib2 \
|
mingw32-glib2 \
|
||||||
mingw32-gnutls \
|
mingw32-gnutls \
|
||||||
mingw32-gtk3 \
|
mingw32-gtk3 \
|
||||||
|
mingw32-libepoxy \
|
||||||
mingw32-libgcrypt \
|
mingw32-libgcrypt \
|
||||||
mingw32-libjpeg-turbo \
|
mingw32-libjpeg-turbo \
|
||||||
mingw32-libpng \
|
mingw32-libpng \
|
||||||
|
@ -80,6 +80,7 @@ RUN nosync dnf install -y \
|
|||||||
mingw64-glib2 \
|
mingw64-glib2 \
|
||||||
mingw64-gnutls \
|
mingw64-gnutls \
|
||||||
mingw64-gtk3 \
|
mingw64-gtk3 \
|
||||||
|
mingw64-libepoxy \
|
||||||
mingw64-libgcrypt \
|
mingw64-libgcrypt \
|
||||||
mingw64-libjpeg-turbo \
|
mingw64-libjpeg-turbo \
|
||||||
mingw64-libpng \
|
mingw64-libpng \
|
||||||
|
@ -89,16 +89,9 @@ RUN zypper update -y && \
|
|||||||
pam-devel \
|
pam-devel \
|
||||||
pcre-devel-static \
|
pcre-devel-static \
|
||||||
pkgconfig \
|
pkgconfig \
|
||||||
python3-Pillow \
|
python39-base \
|
||||||
python3-PyYAML \
|
python39-pip \
|
||||||
python3-Sphinx \
|
python39-setuptools \
|
||||||
python3-base \
|
|
||||||
python3-numpy \
|
|
||||||
python3-opencv \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-sphinx_rtd_theme \
|
|
||||||
python3-wheel \
|
|
||||||
rdma-core-devel \
|
rdma-core-devel \
|
||||||
rpm \
|
rpm \
|
||||||
sed \
|
sed \
|
||||||
@ -129,10 +122,15 @@ RUN zypper update -y && \
|
|||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||||
|
|
||||||
RUN /usr/bin/pip3 install meson==0.56.0
|
RUN /usr/bin/pip3.9 install \
|
||||||
|
PyYAML \
|
||||||
|
meson==0.63.2 \
|
||||||
|
pillow \
|
||||||
|
sphinx \
|
||||||
|
sphinx-rtd-theme
|
||||||
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||||
ENV LANG "en_US.UTF-8"
|
ENV LANG "en_US.UTF-8"
|
||||||
ENV MAKE "/usr/bin/make"
|
ENV MAKE "/usr/bin/make"
|
||||||
ENV NINJA "/usr/bin/ninja"
|
ENV NINJA "/usr/bin/ninja"
|
||||||
ENV PYTHON "/usr/bin/python3"
|
ENV PYTHON "/usr/bin/python3.9"
|
||||||
|
@ -138,7 +138,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||||
|
|
||||||
RUN /usr/bin/pip3 install meson==0.56.0
|
RUN /usr/bin/pip3 install meson==0.63.2
|
||||||
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||||
ENV LANG "en_US.UTF-8"
|
ENV LANG "en_US.UTF-8"
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 319a534c220f53fc8670254cac25d6f662c82112
|
Subproject commit 1c3e16cae38407d0782dc94080d1104106456fa4
|
77
tests/lcitool/mappings.yml
Normal file
77
tests/lcitool/mappings.yml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
mappings:
|
||||||
|
flake8:
|
||||||
|
CentOSStream8:
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
meson:
|
||||||
|
CentOSStream8:
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3:
|
||||||
|
CentOSStream8: python38
|
||||||
|
OpenSUSELeap153: python39-base
|
||||||
|
|
||||||
|
python3-PyYAML:
|
||||||
|
CentOSStream8: python38-PyYAML
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3-devel:
|
||||||
|
CentOSStream8: python38-devel
|
||||||
|
OpenSUSELeap153: python39-devel
|
||||||
|
|
||||||
|
python3-docutils:
|
||||||
|
CentOSStream8:
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3-numpy:
|
||||||
|
CentOSStream8: python38-numpy
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3-opencv:
|
||||||
|
CentOSStream8:
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3-pillow:
|
||||||
|
CentOSStream8:
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3-pip:
|
||||||
|
CentOSStream8: python38-pip
|
||||||
|
OpenSUSELeap153: python39-pip
|
||||||
|
|
||||||
|
python3-pillow:
|
||||||
|
CentOSStream8:
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3-selinux:
|
||||||
|
CentOSStream8:
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3-setuptools:
|
||||||
|
CentOSStream8: python38-setuptools
|
||||||
|
OpenSUSELeap153: python39-setuptools
|
||||||
|
|
||||||
|
python3-sphinx:
|
||||||
|
CentOSStream8:
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3-sphinx-rtd-theme:
|
||||||
|
CentOSStream8:
|
||||||
|
OpenSUSELeap153:
|
||||||
|
|
||||||
|
python3-venv:
|
||||||
|
CentOSStream8: python38
|
||||||
|
OpenSUSELeap153: python39-base
|
||||||
|
|
||||||
|
python3-wheel:
|
||||||
|
CentOSStream8: python38-wheel
|
||||||
|
OpenSUSELeap153: python39-pip
|
||||||
|
|
||||||
|
pypi_mappings:
|
||||||
|
# Request more recent version
|
||||||
|
meson:
|
||||||
|
default: meson==0.63.2
|
||||||
|
|
||||||
|
# Drop packages that need devel headers
|
||||||
|
python3-numpy:
|
||||||
|
OpenSUSELeap153:
|
3
tests/lcitool/targets/centos-stream-8.yml
Normal file
3
tests/lcitool/targets/centos-stream-8.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
paths:
|
||||||
|
pip3: /usr/bin/pip3.8
|
||||||
|
python: /usr/bin/python3.8
|
3
tests/lcitool/targets/opensuse-leap-153.yml
Normal file
3
tests/lcitool/targets/opensuse-leap-153.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
paths:
|
||||||
|
pip3: /usr/bin/pip3.9
|
||||||
|
python: /usr/bin/python3.9
|
@ -123,6 +123,9 @@ int main(int argc, char *argv[]) {
|
|||||||
result = bzhiq(mask, 0x1f);
|
result = bzhiq(mask, 0x1f);
|
||||||
assert(result == (mask & ~(-1 << 30)));
|
assert(result == (mask & ~(-1 << 30)));
|
||||||
|
|
||||||
|
result = bzhiq(mask, 0x40);
|
||||||
|
assert(result == mask);
|
||||||
|
|
||||||
result = rorxq(0x2132435465768798, 8);
|
result = rorxq(0x2132435465768798, 8);
|
||||||
assert(result == 0x9821324354657687);
|
assert(result == 0x9821324354657687);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user