* [PULL 01/25] mtest2make.py: teach suite name that are just "PROJECT"
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
@ 2023-04-21 9:32 ` Paolo Bonzini
2023-04-21 9:32 ` [PULL 02/25] build-sys: prevent meson from downloading wrapped subprojects Paolo Bonzini
` (24 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:32 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
A subproject test may be simply in the "PROJECT" suite (such as
"qemu-common" with the following patches)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230302131848.1527460-2-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
scripts/mtest2make.py | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py
index 0fe81efbbcec..179dd5487182 100644
--- a/scripts/mtest2make.py
+++ b/scripts/mtest2make.py
@@ -51,10 +51,11 @@ def process_tests(test, targets, suites):
test_suites = test['suite'] or ['default']
for s in test_suites:
- # The suite name in the introspection info is "PROJECT:SUITE"
- s = s.split(':')[1]
- if s == 'slow' or s == 'thorough':
- continue
+ # The suite name in the introspection info is "PROJECT" or "PROJECT:SUITE"
+ if ':' in s:
+ s = s.split(':')[1]
+ if s == 'slow' or s == 'thorough':
+ continue
if s.endswith('-slow'):
s = s[:-5]
suites[s].speeds.append('slow')
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 02/25] build-sys: prevent meson from downloading wrapped subprojects
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
2023-04-21 9:32 ` [PULL 01/25] mtest2make.py: teach suite name that are just "PROJECT" Paolo Bonzini
@ 2023-04-21 9:32 ` Paolo Bonzini
2023-04-21 9:32 ` [PULL 03/25] build-sys: add slirp.wrap Paolo Bonzini
` (23 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:32 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
The following patches are going to introduce meson wrap dependencies,
which is a solution to download and build missing dependencies.
The QEMU build-system would do network access with no way to avoid the
fallback. As a start, hardcode "--wrap-mode=nodownload" in configure, so
that wraps would be used only after a conscious decision of the user to
use "meson subprojects download" (before running configure).
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230302131848.1527460-3-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/configure b/configure
index 800b5850f402..6ed66ec6abda 100755
--- a/configure
+++ b/configure
@@ -2615,6 +2615,10 @@ if test "$skip_meson" = no; then
rm -rf meson-private meson-info meson-logs
+ # Prevent meson from automatically downloading wrapped subprojects when missing.
+ # You can use 'meson subprojects download' before running configure.
+ meson_option_add "--wrap-mode=nodownload"
+
# Built-in options
test "$bindir" != "bin" && meson_option_add "-Dbindir=$bindir"
test "$default_feature" = no && meson_option_add -Dauto_features=disabled
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 03/25] build-sys: add slirp.wrap
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
2023-04-21 9:32 ` [PULL 01/25] mtest2make.py: teach suite name that are just "PROJECT" Paolo Bonzini
2023-04-21 9:32 ` [PULL 02/25] build-sys: prevent meson from downloading wrapped subprojects Paolo Bonzini
@ 2023-04-21 9:32 ` Paolo Bonzini
2023-04-21 9:32 ` [PULL 04/25] nvme: remove constant argument to tracepoint Paolo Bonzini
` (22 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:32 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
This allows to build with --enable-slirp / -D slirp=enabled, even when
libslirp is not installed on the system. "meson subprojects download"
will pull it from git in that case.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230302131848.1527460-4-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
.gitignore | 2 ++
subprojects/slirp.wrap | 6 ++++++
2 files changed, 8 insertions(+)
create mode 100644 subprojects/slirp.wrap
diff --git a/.gitignore b/.gitignore
index 61fa39967b54..1ea59f481921 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,5 @@ GTAGS
*.swp
*.patch
*.gcov
+
+/subprojects/slirp
diff --git a/subprojects/slirp.wrap b/subprojects/slirp.wrap
new file mode 100644
index 000000000000..ace4f26102f5
--- /dev/null
+++ b/subprojects/slirp.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://gitlab.freedesktop.org/slirp/libslirp
+revision = 15c52d697529eb3e78c5d8aa324d61715bce33b6
+
+[provide]
+slirp = libslirp_dep
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 04/25] nvme: remove constant argument to tracepoint
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (2 preceding siblings ...)
2023-04-21 9:32 ` [PULL 03/25] build-sys: add slirp.wrap Paolo Bonzini
@ 2023-04-21 9:32 ` Paolo Bonzini
2023-04-21 9:32 ` [PULL 05/25] vnc: avoid underflow when accessing user-provided address Paolo Bonzini
` (21 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:32 UTC (permalink / raw)
To: qemu-devel
The last argument to -pci_nvme_err_startfail_virt_state is always "OFFLINE"
due to the enclosing "if" condition requiring !sctrl->scs. Reported by
Coverity.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/nvme/ctrl.c | 4 +---
hw/nvme/trace-events | 2 +-
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index ac24eeb5ed5a..f59dfe1cbe96 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -7158,9 +7158,7 @@ static int nvme_start_ctrl(NvmeCtrl *n)
if (pci_is_vf(PCI_DEVICE(n)) && !sctrl->scs) {
trace_pci_nvme_err_startfail_virt_state(le16_to_cpu(sctrl->nvi),
- le16_to_cpu(sctrl->nvq),
- sctrl->scs ? "ONLINE" :
- "OFFLINE");
+ le16_to_cpu(sctrl->nvq));
return -1;
}
if (unlikely(n->cq[0])) {
diff --git a/hw/nvme/trace-events b/hw/nvme/trace-events
index 7f7837e1a281..9afddf3b951c 100644
--- a/hw/nvme/trace-events
+++ b/hw/nvme/trace-events
@@ -187,7 +187,7 @@ pci_nvme_err_startfail_asqent_sz_zero(void) "nvme_start_ctrl failed because the
pci_nvme_err_startfail_acqent_sz_zero(void) "nvme_start_ctrl failed because the admin completion queue size is zero"
pci_nvme_err_startfail_zasl_too_small(uint32_t zasl, uint32_t pagesz) "nvme_start_ctrl failed because zone append size limit %"PRIu32" is too small, needs to be >= %"PRIu32""
pci_nvme_err_startfail(void) "setting controller enable bit failed"
-pci_nvme_err_startfail_virt_state(uint16_t vq, uint16_t vi, const char *state) "nvme_start_ctrl failed due to ctrl state: vi=%u vq=%u %s"
+pci_nvme_err_startfail_virt_state(uint16_t vq, uint16_t vi) "nvme_start_ctrl failed due to ctrl state: vi=%u vq=%u"
pci_nvme_err_invalid_mgmt_action(uint8_t action) "action=0x%"PRIx8""
pci_nvme_err_ignored_mmio_vf_offline(uint64_t addr, unsigned size) "addr 0x%"PRIx64" size %d"
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 05/25] vnc: avoid underflow when accessing user-provided address
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (3 preceding siblings ...)
2023-04-21 9:32 ` [PULL 04/25] nvme: remove constant argument to tracepoint Paolo Bonzini
@ 2023-04-21 9:32 ` Paolo Bonzini
2023-04-21 9:32 ` [PULL 06/25] tests: bios-tables-test: replace memset with initializer Paolo Bonzini
` (20 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:32 UTC (permalink / raw)
To: qemu-devel
If hostlen is zero, there is a possibility that addrstr[hostlen - 1]
underflows and, if a closing bracked is there, hostlen - 2 is passed
to g_strndup() on the next line. If websocket==false then
addrstr[0] would be a colon, but if websocket==true this could in
principle happen.
Fix it by checking hostlen.
Reported by Coverity.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
ui/vnc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index bbd8b6baaeca..9d8a24dd8a69 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -3751,7 +3751,7 @@ static int vnc_display_get_address(const char *addrstr,
addr->type = SOCKET_ADDRESS_TYPE_INET;
inet = &addr->u.inet;
- if (addrstr[0] == '[' && addrstr[hostlen - 1] == ']') {
+ if (hostlen && addrstr[0] == '[' && addrstr[hostlen - 1] == ']') {
inet->host = g_strndup(addrstr + 1, hostlen - 2);
} else {
inet->host = g_strndup(addrstr, hostlen);
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 06/25] tests: bios-tables-test: replace memset with initializer
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (4 preceding siblings ...)
2023-04-21 9:32 ` [PULL 05/25] vnc: avoid underflow when accessing user-provided address Paolo Bonzini
@ 2023-04-21 9:32 ` Paolo Bonzini
2023-04-21 9:32 ` [PULL 07/25] configure: Avoid -Werror=maybe-uninitialized Paolo Bonzini
` (19 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:32 UTC (permalink / raw)
To: qemu-devel; +Cc: Michael S . Tsirkin
Coverity complains that memset() writes over a const field. Use
an initializer instead, so that the const field is left to zero.
Tests that have to write the const field already use an initializer
for the whole struct, here I am choosing the smallest possible
patch (which is not that small already).
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/qtest/bios-tables-test.c | 123 ++++++++++++---------------------
1 file changed, 43 insertions(+), 80 deletions(-)
diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 873358943784..464f87382e23 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -438,10 +438,9 @@ static void test_acpi_asl(test_data *data)
{
int i;
AcpiSdtTable *sdt, *exp_sdt;
- test_data exp_data;
+ test_data exp_data = {};
gboolean exp_err, err, all_tables_match = true;
- memset(&exp_data, 0, sizeof(exp_data));
exp_data.tables = load_expected_aml(data);
dump_aml_files(data, false);
for (i = 0; i < data->tables->len; ++i) {
@@ -853,12 +852,11 @@ static uint8_t base_required_struct_types[] = {
static void test_acpi_piix4_tcg(void)
{
- test_data data;
+ test_data data = {};
/* Supplying -machine accel argument overrides the default (qtest).
* This is to make guest actually run.
*/
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -868,9 +866,8 @@ static void test_acpi_piix4_tcg(void)
static void test_acpi_piix4_tcg_bridge(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".bridge";
data.required_struct_types = base_required_struct_types;
@@ -906,9 +903,8 @@ static void test_acpi_piix4_tcg_bridge(void)
static void test_acpi_piix4_no_root_hotplug(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".roothp";
data.required_struct_types = base_required_struct_types;
@@ -923,9 +919,8 @@ static void test_acpi_piix4_no_root_hotplug(void)
static void test_acpi_piix4_no_bridge_hotplug(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".hpbridge";
data.required_struct_types = base_required_struct_types;
@@ -940,9 +935,8 @@ static void test_acpi_piix4_no_bridge_hotplug(void)
static void test_acpi_piix4_no_acpi_pci_hotplug(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".hpbrroot";
data.required_struct_types = base_required_struct_types;
@@ -962,9 +956,8 @@ static void test_acpi_piix4_no_acpi_pci_hotplug(void)
static void test_acpi_q35_tcg(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -994,9 +987,8 @@ static void test_acpi_q35_tcg_core_count2(void)
static void test_acpi_q35_tcg_bridge(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".bridge";
data.required_struct_types = base_required_struct_types;
@@ -1009,9 +1001,8 @@ static void test_acpi_q35_tcg_bridge(void)
static void test_acpi_q35_tcg_no_acpi_hotplug(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".noacpihp";
data.required_struct_types = base_required_struct_types;
@@ -1105,9 +1096,8 @@ static void test_acpi_q35_tcg_mmio64(void)
static void test_acpi_piix4_tcg_cphp(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".cphp";
test_acpi_one("-smp 2,cores=3,sockets=2,maxcpus=6"
@@ -1121,9 +1111,8 @@ static void test_acpi_piix4_tcg_cphp(void)
static void test_acpi_q35_tcg_cphp(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".cphp";
test_acpi_one(" -smp 2,cores=3,sockets=2,maxcpus=6"
@@ -1141,9 +1130,8 @@ static uint8_t ipmi_required_struct_types[] = {
static void test_acpi_q35_tcg_ipmi(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".ipmibt";
data.required_struct_types = ipmi_required_struct_types;
@@ -1156,9 +1144,8 @@ static void test_acpi_q35_tcg_ipmi(void)
static void test_acpi_q35_tcg_smbus_ipmi(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".ipmismbus";
data.required_struct_types = ipmi_required_struct_types;
@@ -1171,12 +1158,11 @@ static void test_acpi_q35_tcg_smbus_ipmi(void)
static void test_acpi_piix4_tcg_ipmi(void)
{
- test_data data;
+ test_data data = {};
/* Supplying -machine accel argument overrides the default (qtest).
* This is to make guest actually run.
*/
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".ipmikcs";
data.required_struct_types = ipmi_required_struct_types;
@@ -1189,9 +1175,8 @@ static void test_acpi_piix4_tcg_ipmi(void)
static void test_acpi_q35_tcg_memhp(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".memhp";
test_acpi_one(" -m 128,slots=3,maxmem=1G"
@@ -1205,9 +1190,8 @@ static void test_acpi_q35_tcg_memhp(void)
static void test_acpi_piix4_tcg_memhp(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".memhp";
test_acpi_one(" -m 128,slots=3,maxmem=1G"
@@ -1221,9 +1205,8 @@ static void test_acpi_piix4_tcg_memhp(void)
static void test_acpi_piix4_tcg_nosmm(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".nosmm";
test_acpi_one("-machine smm=off", &data);
@@ -1232,9 +1215,8 @@ static void test_acpi_piix4_tcg_nosmm(void)
static void test_acpi_piix4_tcg_smm_compat(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".smm-compat";
test_acpi_one("-global PIIX4_PM.smm-compat=on", &data);
@@ -1243,9 +1225,8 @@ static void test_acpi_piix4_tcg_smm_compat(void)
static void test_acpi_piix4_tcg_smm_compat_nosmm(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".smm-compat-nosmm";
test_acpi_one("-global PIIX4_PM.smm-compat=on -machine smm=off", &data);
@@ -1254,9 +1235,8 @@ static void test_acpi_piix4_tcg_smm_compat_nosmm(void)
static void test_acpi_piix4_tcg_nohpet(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.machine_param = ",hpet=off";
data.variant = ".nohpet";
@@ -1266,9 +1246,8 @@ static void test_acpi_piix4_tcg_nohpet(void)
static void test_acpi_q35_tcg_numamem(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".numamem";
test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
@@ -1278,9 +1257,8 @@ static void test_acpi_q35_tcg_numamem(void)
static void test_acpi_q35_kvm_xapic(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".xapic";
test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
@@ -1291,9 +1269,8 @@ static void test_acpi_q35_kvm_xapic(void)
static void test_acpi_q35_tcg_nosmm(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".nosmm";
test_acpi_one("-machine smm=off", &data);
@@ -1302,9 +1279,8 @@ static void test_acpi_q35_tcg_nosmm(void)
static void test_acpi_q35_tcg_smm_compat(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".smm-compat";
test_acpi_one("-global ICH9-LPC.smm-compat=on", &data);
@@ -1313,9 +1289,8 @@ static void test_acpi_q35_tcg_smm_compat(void)
static void test_acpi_q35_tcg_smm_compat_nosmm(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".smm-compat-nosmm";
test_acpi_one("-global ICH9-LPC.smm-compat=on -machine smm=off", &data);
@@ -1324,9 +1299,8 @@ static void test_acpi_q35_tcg_smm_compat_nosmm(void)
static void test_acpi_q35_tcg_nohpet(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.machine_param = ",hpet=off";
data.variant = ".nohpet";
@@ -1336,9 +1310,8 @@ static void test_acpi_q35_tcg_nohpet(void)
static void test_acpi_q35_kvm_dmar(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".dmar";
test_acpi_one("-machine kernel-irqchip=split -accel kvm"
@@ -1348,9 +1321,8 @@ static void test_acpi_q35_kvm_dmar(void)
static void test_acpi_q35_tcg_ivrs(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".ivrs";
data.tcg_only = true,
@@ -1360,9 +1332,8 @@ static void test_acpi_q35_tcg_ivrs(void)
static void test_acpi_piix4_tcg_numamem(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.variant = ".numamem";
test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
@@ -1379,7 +1350,7 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
machine, tpm_if);
char *tmp_path = g_dir_make_tmp(tmp_dir_name, NULL);
TPMTestState test;
- test_data data;
+ test_data data = {};
GThread *thread;
const char *suffix = tpm_version == TPM_VERSION_2_0 ? "tpm2" : "tpm12";
char *args, *variant = g_strdup_printf(".%s.%s", tpm_if, suffix);
@@ -1399,7 +1370,6 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
thread = g_thread_new(NULL, tpm_emu_ctrl_thread, &test);
tpm_emu_test_wait_cond(&test);
- memset(&data, 0, sizeof(data));
data.machine = machine;
data.variant = variant;
@@ -1434,9 +1404,8 @@ static void test_acpi_q35_tcg_tpm12_tis(void)
static void test_acpi_tcg_dimm_pxm(const char *machine)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = machine;
data.variant = ".dimmpxm";
test_acpi_one(" -machine nvdimm=on,nvdimm-persistence=cpu"
@@ -1504,7 +1473,6 @@ static void test_acpi_virt_tcg_memhp(void)
static void test_acpi_microvm_prepare(test_data *data)
{
- memset(data, 0, sizeof(*data));
data->machine = "microvm";
data->required_struct_types = NULL; /* no smbios */
data->required_struct_types_len = 0;
@@ -1513,7 +1481,7 @@ static void test_acpi_microvm_prepare(test_data *data)
static void test_acpi_microvm_tcg(void)
{
- test_data data;
+ test_data data = {};
test_acpi_microvm_prepare(&data);
test_acpi_one(" -machine microvm,acpi=on,ioapic2=off,rtc=off",
@@ -1523,7 +1491,7 @@ static void test_acpi_microvm_tcg(void)
static void test_acpi_microvm_usb_tcg(void)
{
- test_data data;
+ test_data data = {};
test_acpi_microvm_prepare(&data);
data.variant = ".usb";
@@ -1534,7 +1502,7 @@ static void test_acpi_microvm_usb_tcg(void)
static void test_acpi_microvm_rtc_tcg(void)
{
- test_data data;
+ test_data data = {};
test_acpi_microvm_prepare(&data);
data.variant = ".rtc";
@@ -1545,7 +1513,7 @@ static void test_acpi_microvm_rtc_tcg(void)
static void test_acpi_microvm_pcie_tcg(void)
{
- test_data data;
+ test_data data = {};
test_acpi_microvm_prepare(&data);
data.variant = ".pcie";
@@ -1557,7 +1525,7 @@ static void test_acpi_microvm_pcie_tcg(void)
static void test_acpi_microvm_ioapic2_tcg(void)
{
- test_data data;
+ test_data data = {};
test_acpi_microvm_prepare(&data);
data.variant = ".ioapic2";
@@ -1622,9 +1590,8 @@ static void test_acpi_virt_tcg_pxb(void)
static void test_acpi_tcg_acpi_hmat(const char *machine)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = machine;
data.variant = ".acpihmat";
test_acpi_one(" -machine hmat=on"
@@ -1721,9 +1688,8 @@ static void test_acpi_virt_tcg_acpi_hmat(void)
static void test_acpi_q35_tcg_acpi_hmat_noinitiator(void)
{
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.variant = ".acpihmat-noinitiator";
test_acpi_one(" -machine hmat=on"
@@ -1772,9 +1738,8 @@ static void test_acpi_erst(const char *machine)
{
gchar *tmp_path = g_dir_make_tmp("qemu-test-erst.XXXXXX", NULL);
gchar *params;
- test_data data;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = machine;
data.variant = ".acpierst";
params = g_strdup_printf(
@@ -1802,7 +1767,7 @@ static void test_acpi_microvm_acpi_erst(void)
{
gchar *tmp_path = g_dir_make_tmp("qemu-test-erst.XXXXXX", NULL);
gchar *params;
- test_data data;
+ test_data data = {};
test_acpi_microvm_prepare(&data);
data.variant = ".pcie";
@@ -2003,10 +1968,9 @@ static void test_oem_fields(test_data *data)
static void test_acpi_piix4_oem_fields(void)
{
- test_data data;
char *args;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_PC;
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -2022,10 +1986,9 @@ static void test_acpi_piix4_oem_fields(void)
static void test_acpi_q35_oem_fields(void)
{
- test_data data;
char *args;
+ test_data data = {};
- memset(&data, 0, sizeof(data));
data.machine = MACHINE_Q35;
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -2041,7 +2004,7 @@ static void test_acpi_q35_oem_fields(void)
static void test_acpi_microvm_oem_fields(void)
{
- test_data data;
+ test_data data = {};
char *args;
test_acpi_microvm_prepare(&data);
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 07/25] configure: Avoid -Werror=maybe-uninitialized
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (5 preceding siblings ...)
2023-04-21 9:32 ` [PULL 06/25] tests: bios-tables-test: replace memset with initializer Paolo Bonzini
@ 2023-04-21 9:32 ` Paolo Bonzini
2023-04-21 9:32 ` [PULL 08/25] target/i386: Avoid unreachable variable declaration in mmu_translate() Paolo Bonzini
` (18 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:32 UTC (permalink / raw)
To: qemu-devel; +Cc: Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
The configure script used to compile some code which dereferences memory
with ubsan to verify the compiler can link with ubsan library which
detects dereferencing of uninitialized memory. However, as the
dereferenced memory was allocated in the same code, GCC can statically
detect the unitialized memory dereference and emit maybe-uninitialized
warning. If -Werror is set, this becomes an error, and the configure
script incorrectly thinks the error indicates the compiler cannot use
ubsan.
Fix this error by replacing the code with another function which adds
1 to a signed integer argument. This brings in ubsan to detect if it
causes signed integer overflow. As the value of the argument cannot be
statically determined, the new function is also immune to compiler
warnings.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20230405070030.23148-1-akihiko.odaki@daynix.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/configure b/configure
index 6ed66ec6abda..22b8553b8d70 100755
--- a/configure
+++ b/configure
@@ -1749,13 +1749,9 @@ if test "$sanitizers" = "yes" ; then
# detect the static linking issue of ubsan, see also:
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
cat > $TMPC << EOF
-#include <stdlib.h>
-int main(void) {
- void *tmp = malloc(10);
- if (tmp != NULL) {
- return *(int *)(tmp + 2);
- }
- return 1;
+int main(int argc, char **argv)
+{
+ return argc + 1;
}
EOF
if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 08/25] target/i386: Avoid unreachable variable declaration in mmu_translate()
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (6 preceding siblings ...)
2023-04-21 9:32 ` [PULL 07/25] configure: Avoid -Werror=maybe-uninitialized Paolo Bonzini
@ 2023-04-21 9:32 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 09/25] lasi: fix RTC migration Paolo Bonzini
` (17 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:32 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell
From: Peter Maydell <peter.maydell@linaro.org>
Coverity complains (CID 1507880) that the declaration "int error_code;"
in mmu_translate() is unreachable code. Since this is only a declaration,
this isn't actually a bug, but:
* it's a bear-trap for future changes, because if it was changed to
include an initialization 'int error_code = foo;' then the
initialization wouldn't actually happen (being dead code)
* it's against our coding style, which wants declarations to be
at the start of blocks
* it means that anybody reading the code has to go and look up
exactly what the C rules are for skipping over variable declarations
using a goto
Move the declaration to the top of the function.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20230406155946.3362077-1-peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
target/i386/tcg/sysemu/excp_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
index e87f90dbe3c7..b5f0abffa3de 100644
--- a/target/i386/tcg/sysemu/excp_helper.c
+++ b/target/i386/tcg/sysemu/excp_helper.c
@@ -147,6 +147,7 @@ static bool mmu_translate(CPUX86State *env, const TranslateParams *in,
hwaddr pte_addr, paddr;
uint32_t pkr;
int page_size;
+ int error_code;
restart_all:
rsvd_mask = ~MAKE_64BIT_MASK(0, env_archcpu(env)->phys_bits);
@@ -467,7 +468,6 @@ do_check_protect_pse36:
out->page_size = page_size;
return true;
- int error_code;
do_fault_rsvd:
error_code = PG_ERROR_RSVD_MASK;
goto do_fault_cont;
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 09/25] lasi: fix RTC migration
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (7 preceding siblings ...)
2023-04-21 9:32 ` [PULL 08/25] target/i386: Avoid unreachable variable declaration in mmu_translate() Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 10/25] coverity: update COMPONENTS.md Paolo Bonzini
` (16 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel
Migrate rtc_ref (which only needs to be 32-bit because it is summed to
a 32-bit register), which requires bumping the migration version.
The HPPA machine does not have versioned machine types so it is okay
to block migration to old versions of QEMU.
While at it, drop the write-only field rtc from LasiState.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/misc/lasi.c | 4 ++--
include/hw/misc/lasi.h | 3 +--
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/hw/misc/lasi.c b/hw/misc/lasi.c
index 23a7634a8c3a..ff9dc893ae65 100644
--- a/hw/misc/lasi.c
+++ b/hw/misc/lasi.c
@@ -194,7 +194,7 @@ static const MemoryRegionOps lasi_chip_ops = {
static const VMStateDescription vmstate_lasi = {
.name = "Lasi",
- .version_id = 1,
+ .version_id = 2,
.minimum_version_id = 1,
.fields = (VMStateField[]) {
VMSTATE_UINT32(irr, LasiState),
@@ -204,6 +204,7 @@ static const VMStateDescription vmstate_lasi = {
VMSTATE_UINT32(iar, LasiState),
VMSTATE_UINT32(errlog, LasiState),
VMSTATE_UINT32(amr, LasiState),
+ VMSTATE_UINT32_V(rtc_ref, LasiState, 2),
VMSTATE_END_OF_LIST()
}
};
@@ -233,7 +234,6 @@ static void lasi_reset(DeviceState *dev)
s->iar = 0xFFFB0000 + 3; /* CPU_HPA + 3 */
/* Real time clock (RTC), it's only one 32-bit counter @9000 */
- s->rtc = time(NULL);
s->rtc_ref = 0;
}
diff --git a/include/hw/misc/lasi.h b/include/hw/misc/lasi.h
index ecc7065ce858..0a8c7352be21 100644
--- a/include/hw/misc/lasi.h
+++ b/include/hw/misc/lasi.h
@@ -69,8 +69,7 @@ struct LasiState {
uint32_t errlog;
uint32_t amr;
- uint32_t rtc;
- time_t rtc_ref;
+ uint32_t rtc_ref;
MemoryRegion this_mem;
};
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 10/25] coverity: update COMPONENTS.md
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (8 preceding siblings ...)
2023-04-21 9:33 ` [PULL 09/25] lasi: fix RTC migration Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 11/25] target/mips: tcg: detect out-of-bounds accesses to cpu_gpr and cpu_gpr_hi Paolo Bonzini
` (15 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel
Hexagon is split into two components because it has hundreds of false positives
in the generated files.
capstone and slirp have been removed.
hw/nvme is added to block.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
scripts/coverity-scan/COMPONENTS.md | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/scripts/coverity-scan/COMPONENTS.md b/scripts/coverity-scan/COMPONENTS.md
index 639dcee45a01..7c48e0f1d215 100644
--- a/scripts/coverity-scan/COMPONENTS.md
+++ b/scripts/coverity-scan/COMPONENTS.md
@@ -12,6 +12,9 @@ avr
cris
~ (/qemu)?((/include)?/hw/cris/.*|/target/cris/.*)
+hexagon-gen (component should be ignored in analysis)
+ ~ (/qemu)?(/target/hexagon/.*generated.*)
+
hexagon
~ (/qemu)?(/target/hexagon/.*)
@@ -64,14 +67,11 @@ audio
~ (/qemu)?((/include)?/(audio|hw/audio)/.*)
block
- ~ (/qemu)?(/block.*|(/include?)(/hw)?/(block|storage-daemon)/.*|(/include)?/hw/ide/.*|/qemu-(img|io).*|/util/(aio|async|thread-pool).*)
+ ~ (/qemu)?(/block.*|(/include?)/(block|storage-daemon)/.*|(/include)?/hw/(block|ide|nvme)/.*|/qemu-(img|io).*|/util/(aio|async|thread-pool).*)
char
~ (/qemu)?(/qemu-char\.c|/include/sysemu/char\.h|(/include)?/hw/char/.*)
-capstone
- ~ (/qemu)?(/capstone/.*)
-
crypto
~ (/qemu)?((/include)?/crypto/.*|/hw/.*/crypto.*)
@@ -108,9 +108,6 @@ qemu-ga
scsi
~ (/qemu)?(/scsi/.*|/hw/scsi/.*|/include/hw/scsi/.*)
-slirp (component should be ignored in analysis)
- ~ (/qemu)?(/slirp/.*)
-
tcg
~ (/qemu)?(/accel/tcg/.*|/replay/.*|/(.*/)?softmmu.*)
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 11/25] target/mips: tcg: detect out-of-bounds accesses to cpu_gpr and cpu_gpr_hi
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (9 preceding siblings ...)
2023-04-21 9:33 ` [PULL 10/25] coverity: update COMPONENTS.md Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 12/25] qapi-gen: mark coroutine QMP command functions as coroutine_fn Paolo Bonzini
` (14 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson
In some cases (for example gen_compute_branch_nm in
nanomips_translate.c.inc) registers can be unused
on some paths and a negative value is passed in that case:
gen_compute_branch_nm(ctx, OPC_BPOSGE32, 4, -1, -2,
imm << 1);
To avoid an out of bounds access in those cases, introduce
assertions.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
target/mips/tcg/translate.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
index 1fb4ef712729..999fbb7cc1c0 100644
--- a/target/mips/tcg/translate.c
+++ b/target/mips/tcg/translate.c
@@ -1223,6 +1223,7 @@ static const char regnames_LO[][4] = {
/* General purpose registers moves. */
void gen_load_gpr(TCGv t, int reg)
{
+ assert(reg >= 0 && reg <= ARRAY_SIZE(cpu_gpr));
if (reg == 0) {
tcg_gen_movi_tl(t, 0);
} else {
@@ -1232,6 +1233,7 @@ void gen_load_gpr(TCGv t, int reg)
void gen_store_gpr(TCGv t, int reg)
{
+ assert(reg >= 0 && reg <= ARRAY_SIZE(cpu_gpr));
if (reg != 0) {
tcg_gen_mov_tl(cpu_gpr[reg], t);
}
@@ -1240,6 +1242,7 @@ void gen_store_gpr(TCGv t, int reg)
#if defined(TARGET_MIPS64)
void gen_load_gpr_hi(TCGv_i64 t, int reg)
{
+ assert(reg >= 0 && reg <= ARRAY_SIZE(cpu_gpr_hi));
if (reg == 0) {
tcg_gen_movi_i64(t, 0);
} else {
@@ -1249,6 +1252,7 @@ void gen_load_gpr_hi(TCGv_i64 t, int reg)
void gen_store_gpr_hi(TCGv_i64 t, int reg)
{
+ assert(reg >= 0 && reg <= ARRAY_SIZE(cpu_gpr_hi));
if (reg != 0) {
tcg_gen_mov_i64(cpu_gpr_hi[reg], t);
}
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 12/25] qapi-gen: mark coroutine QMP command functions as coroutine_fn
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (10 preceding siblings ...)
2023-04-21 9:33 ` [PULL 11/25] target/mips: tcg: detect out-of-bounds accesses to cpu_gpr and cpu_gpr_hi Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 13/25] io: mark mixed functions that can suspend Paolo Bonzini
` (13 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Markus Armbruster
Coroutine commands have to be declared as coroutine_fn, but the
marker does not show up in the qapi-comands-* headers; likewise, the
marshaling function calls the command and therefore must be coroutine_fn.
Static analysis would want coroutine_fn to match between prototype and
declaration, because in principle coroutines might be compiled to a
completely different calling convention. So we would like to add the
marker to the header.
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
scripts/qapi/commands.py | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git a/scripts/qapi/commands.py b/scripts/qapi/commands.py
index 79c5e5c3a989..a079378d1b8d 100644
--- a/scripts/qapi/commands.py
+++ b/scripts/qapi/commands.py
@@ -41,11 +41,13 @@
def gen_command_decl(name: str,
arg_type: Optional[QAPISchemaObjectType],
boxed: bool,
- ret_type: Optional[QAPISchemaType]) -> str:
+ ret_type: Optional[QAPISchemaType],
+ coroutine: bool) -> str:
return mcgen('''
-%(c_type)s qmp_%(c_name)s(%(params)s);
+%(c_type)s %(coroutine_fn)sqmp_%(c_name)s(%(params)s);
''',
c_type=(ret_type and ret_type.c_type()) or 'void',
+ coroutine_fn='coroutine_fn ' if coroutine else '',
c_name=c_name(name),
params=build_params(arg_type, boxed, 'Error **errp'))
@@ -157,16 +159,21 @@ def gen_marshal_output(ret_type: QAPISchemaType) -> str:
c_type=ret_type.c_type(), c_name=ret_type.c_name())
-def build_marshal_proto(name: str) -> str:
- return ('void qmp_marshal_%s(QDict *args, QObject **ret, Error **errp)'
- % c_name(name))
+def build_marshal_proto(name: str,
+ coroutine: bool) -> str:
+ return ('void %(coroutine_fn)sqmp_marshal_%(c_name)s(%(params)s)' % {
+ 'coroutine_fn': 'coroutine_fn ' if coroutine else '',
+ 'c_name': c_name(name),
+ 'params': 'QDict *args, QObject **ret, Error **errp',
+ })
-def gen_marshal_decl(name: str) -> str:
+def gen_marshal_decl(name: str,
+ coroutine: bool) -> str:
return mcgen('''
%(proto)s;
''',
- proto=build_marshal_proto(name))
+ proto=build_marshal_proto(name, coroutine))
def gen_trace(name: str) -> str:
@@ -181,7 +188,8 @@ def gen_marshal(name: str,
arg_type: Optional[QAPISchemaObjectType],
boxed: bool,
ret_type: Optional[QAPISchemaType],
- gen_tracing: bool) -> str:
+ gen_tracing: bool,
+ coroutine: bool) -> str:
have_args = boxed or (arg_type and not arg_type.is_empty())
if have_args:
assert arg_type is not None
@@ -195,7 +203,7 @@ def gen_marshal(name: str,
bool ok = false;
Visitor *v;
''',
- proto=build_marshal_proto(name))
+ proto=build_marshal_proto(name, coroutine))
if ret_type:
ret += mcgen('''
@@ -387,10 +395,11 @@ def visit_command(self,
self._genh, self._genc):
self._genc.add(gen_marshal_output(ret_type))
with ifcontext(ifcond, self._genh, self._genc):
- self._genh.add(gen_command_decl(name, arg_type, boxed, ret_type))
- self._genh.add(gen_marshal_decl(name))
+ self._genh.add(gen_command_decl(name, arg_type, boxed,
+ ret_type, coroutine))
+ self._genh.add(gen_marshal_decl(name, coroutine))
self._genc.add(gen_marshal(name, arg_type, boxed, ret_type,
- self._gen_tracing))
+ self._gen_tracing, coroutine))
if self._gen_tracing:
self._gen_trace_events.add(gen_trace(name))
with self._temp_module('./init'):
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 13/25] io: mark mixed functions that can suspend
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (11 preceding siblings ...)
2023-04-21 9:33 ` [PULL 12/25] qapi-gen: mark coroutine QMP command functions as coroutine_fn Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 14/25] migration: " Paolo Bonzini
` (12 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel
There should be no paths from a coroutine_fn to aio_poll, however in
practice coroutine_mixed_fn will call aio_poll in the !qemu_in_coroutine()
path. By marking mixed functions, we can track accurately the call paths
that execute entirely in coroutine context, and find more missing
coroutine_fn markers. This results in more accurate checks that
coroutine code does not end up blocking.
If the marking were extended transitively to all functions that call
these ones, static analysis could be done much more efficiently.
However, this is a start and makes it possible to use vrc's path-based
searches to find potential bugs where coroutine_fns call blocking functions.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/io/channel.h | 78 ++++++++++++++++++++++----------------------
io/channel.c | 78 ++++++++++++++++++++++----------------------
2 files changed, 78 insertions(+), 78 deletions(-)
diff --git a/include/io/channel.h b/include/io/channel.h
index 153fbd29049f..446a566e5e1b 100644
--- a/include/io/channel.h
+++ b/include/io/channel.h
@@ -301,10 +301,10 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
* Returns: 1 if all bytes were read, 0 if end-of-file
* occurs without data, or -1 on error
*/
-int qio_channel_readv_all_eof(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- Error **errp);
+int coroutine_mixed_fn qio_channel_readv_all_eof(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ Error **errp);
/**
* qio_channel_readv_all:
@@ -328,10 +328,10 @@ int qio_channel_readv_all_eof(QIOChannel *ioc,
*
* Returns: 0 if all bytes were read, or -1 on error
*/
-int qio_channel_readv_all(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- Error **errp);
+int coroutine_mixed_fn qio_channel_readv_all(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ Error **errp);
/**
@@ -353,10 +353,10 @@ int qio_channel_readv_all(QIOChannel *ioc,
*
* Returns: 0 if all bytes were written, or -1 on error
*/
-int qio_channel_writev_all(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- Error **errp);
+int coroutine_mixed_fn qio_channel_writev_all(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ Error **errp);
/**
* qio_channel_readv:
@@ -437,10 +437,10 @@ ssize_t qio_channel_write(QIOChannel *ioc,
* Returns: 1 if all bytes were read, 0 if end-of-file occurs
* without data, or -1 on error
*/
-int qio_channel_read_all_eof(QIOChannel *ioc,
- char *buf,
- size_t buflen,
- Error **errp);
+int coroutine_mixed_fn qio_channel_read_all_eof(QIOChannel *ioc,
+ char *buf,
+ size_t buflen,
+ Error **errp);
/**
* qio_channel_read_all:
@@ -457,10 +457,10 @@ int qio_channel_read_all_eof(QIOChannel *ioc,
*
* Returns: 0 if all bytes were read, or -1 on error
*/
-int qio_channel_read_all(QIOChannel *ioc,
- char *buf,
- size_t buflen,
- Error **errp);
+int coroutine_mixed_fn qio_channel_read_all(QIOChannel *ioc,
+ char *buf,
+ size_t buflen,
+ Error **errp);
/**
* qio_channel_write_all:
@@ -476,10 +476,10 @@ int qio_channel_read_all(QIOChannel *ioc,
*
* Returns: 0 if all bytes were written, or -1 on error
*/
-int qio_channel_write_all(QIOChannel *ioc,
- const char *buf,
- size_t buflen,
- Error **errp);
+int coroutine_mixed_fn qio_channel_write_all(QIOChannel *ioc,
+ const char *buf,
+ size_t buflen,
+ Error **errp);
/**
* qio_channel_set_blocking:
@@ -812,11 +812,11 @@ void qio_channel_set_aio_fd_handler(QIOChannel *ioc,
* occurs without data, or -1 on error
*/
-int qio_channel_readv_full_all_eof(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- int **fds, size_t *nfds,
- Error **errp);
+int coroutine_mixed_fn qio_channel_readv_full_all_eof(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ int **fds, size_t *nfds,
+ Error **errp);
/**
* qio_channel_readv_full_all:
@@ -838,11 +838,11 @@ int qio_channel_readv_full_all_eof(QIOChannel *ioc,
* Returns: 0 if all bytes were read, or -1 on error
*/
-int qio_channel_readv_full_all(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- int **fds, size_t *nfds,
- Error **errp);
+int coroutine_mixed_fn qio_channel_readv_full_all(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ int **fds, size_t *nfds,
+ Error **errp);
/**
* qio_channel_writev_full_all:
@@ -872,11 +872,11 @@ int qio_channel_readv_full_all(QIOChannel *ioc,
* Returns: 0 if all bytes were written, or -1 on error
*/
-int qio_channel_writev_full_all(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- int *fds, size_t nfds,
- int flags, Error **errp);
+int coroutine_mixed_fn qio_channel_writev_full_all(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ int *fds, size_t nfds,
+ int flags, Error **errp);
/**
* qio_channel_flush:
diff --git a/io/channel.c b/io/channel.c
index a8c7f1164901..375a130a398d 100644
--- a/io/channel.c
+++ b/io/channel.c
@@ -109,27 +109,27 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
}
-int qio_channel_readv_all_eof(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- Error **errp)
+int coroutine_mixed_fn qio_channel_readv_all_eof(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ Error **errp)
{
return qio_channel_readv_full_all_eof(ioc, iov, niov, NULL, NULL, errp);
}
-int qio_channel_readv_all(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- Error **errp)
+int coroutine_mixed_fn qio_channel_readv_all(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ Error **errp)
{
return qio_channel_readv_full_all(ioc, iov, niov, NULL, NULL, errp);
}
-int qio_channel_readv_full_all_eof(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- int **fds, size_t *nfds,
- Error **errp)
+int coroutine_mixed_fn qio_channel_readv_full_all_eof(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ int **fds, size_t *nfds,
+ Error **errp)
{
int ret = -1;
struct iovec *local_iov = g_new(struct iovec, niov);
@@ -215,11 +215,11 @@ next_iter:
return ret;
}
-int qio_channel_readv_full_all(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- int **fds, size_t *nfds,
- Error **errp)
+int coroutine_mixed_fn qio_channel_readv_full_all(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ int **fds, size_t *nfds,
+ Error **errp)
{
int ret = qio_channel_readv_full_all_eof(ioc, iov, niov, fds, nfds, errp);
@@ -234,19 +234,19 @@ int qio_channel_readv_full_all(QIOChannel *ioc,
return ret;
}
-int qio_channel_writev_all(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- Error **errp)
+int coroutine_mixed_fn qio_channel_writev_all(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ Error **errp)
{
return qio_channel_writev_full_all(ioc, iov, niov, NULL, 0, 0, errp);
}
-int qio_channel_writev_full_all(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- int *fds, size_t nfds,
- int flags, Error **errp)
+int coroutine_mixed_fn qio_channel_writev_full_all(QIOChannel *ioc,
+ const struct iovec *iov,
+ size_t niov,
+ int *fds, size_t nfds,
+ int flags, Error **errp)
{
int ret = -1;
struct iovec *local_iov = g_new(struct iovec, niov);
@@ -325,30 +325,30 @@ ssize_t qio_channel_write(QIOChannel *ioc,
}
-int qio_channel_read_all_eof(QIOChannel *ioc,
- char *buf,
- size_t buflen,
- Error **errp)
+int coroutine_mixed_fn qio_channel_read_all_eof(QIOChannel *ioc,
+ char *buf,
+ size_t buflen,
+ Error **errp)
{
struct iovec iov = { .iov_base = buf, .iov_len = buflen };
return qio_channel_readv_all_eof(ioc, &iov, 1, errp);
}
-int qio_channel_read_all(QIOChannel *ioc,
- char *buf,
- size_t buflen,
- Error **errp)
+int coroutine_mixed_fn qio_channel_read_all(QIOChannel *ioc,
+ char *buf,
+ size_t buflen,
+ Error **errp)
{
struct iovec iov = { .iov_base = buf, .iov_len = buflen };
return qio_channel_readv_all(ioc, &iov, 1, errp);
}
-int qio_channel_write_all(QIOChannel *ioc,
- const char *buf,
- size_t buflen,
- Error **errp)
+int coroutine_mixed_fn qio_channel_write_all(QIOChannel *ioc,
+ const char *buf,
+ size_t buflen,
+ Error **errp)
{
struct iovec iov = { .iov_base = (char *)buf, .iov_len = buflen };
return qio_channel_writev_all(ioc, &iov, 1, errp);
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 14/25] migration: mark mixed functions that can suspend
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (12 preceding siblings ...)
2023-04-21 9:33 ` [PULL 13/25] io: mark mixed functions that can suspend Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 15/25] monitor: " Paolo Bonzini
` (11 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel
There should be no paths from a coroutine_fn to aio_poll, however in
practice coroutine_mixed_fn will call aio_poll in the !qemu_in_coroutine()
path. By marking mixed functions, we can track accurately the call paths
that execute entirely in coroutine context, and find more missing
coroutine_fn markers. This results in more accurate checks that
coroutine code does not end up blocking.
If the marking were extended transitively to all functions that call
these ones, static analysis could be done much more efficiently.
However, this is a start and makes it possible to use vrc's path-based
searches to find potential bugs where coroutine_fns call blocking functions.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/migration/qemu-file-types.h | 4 ++--
migration/qemu-file.c | 14 +++++++-------
migration/qemu-file.h | 6 +++---
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/include/migration/qemu-file-types.h b/include/migration/qemu-file-types.h
index 2867e3da84ab..1436f9ce92f3 100644
--- a/include/migration/qemu-file-types.h
+++ b/include/migration/qemu-file-types.h
@@ -35,7 +35,7 @@ void qemu_put_byte(QEMUFile *f, int v);
void qemu_put_be16(QEMUFile *f, unsigned int v);
void qemu_put_be32(QEMUFile *f, unsigned int v);
void qemu_put_be64(QEMUFile *f, uint64_t v);
-size_t qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size);
+size_t coroutine_mixed_fn qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size);
int qemu_get_byte(QEMUFile *f);
@@ -161,7 +161,7 @@ static inline void qemu_get_sbe64s(QEMUFile *f, int64_t *pv)
qemu_get_be64s(f, (uint64_t *)pv);
}
-size_t qemu_get_counted_string(QEMUFile *f, char buf[256]);
+size_t coroutine_mixed_fn qemu_get_counted_string(QEMUFile *f, char buf[256]);
void qemu_put_counted_string(QEMUFile *f, const char *name);
diff --git a/migration/qemu-file.c b/migration/qemu-file.c
index 102ab3b4392c..ee04240a21ba 100644
--- a/migration/qemu-file.c
+++ b/migration/qemu-file.c
@@ -392,7 +392,7 @@ size_t ram_control_save_page(QEMUFile *f, ram_addr_t block_offset,
* case if the underlying file descriptor gives a short read, and that can
* happen even on a blocking fd.
*/
-static ssize_t qemu_fill_buffer(QEMUFile *f)
+static ssize_t coroutine_mixed_fn qemu_fill_buffer(QEMUFile *f)
{
int len;
int pending;
@@ -585,7 +585,7 @@ void qemu_file_skip(QEMUFile *f, int size)
* return as many as it managed to read (assuming blocking fd's which
* all current QEMUFile are)
*/
-size_t qemu_peek_buffer(QEMUFile *f, uint8_t **buf, size_t size, size_t offset)
+size_t coroutine_mixed_fn qemu_peek_buffer(QEMUFile *f, uint8_t **buf, size_t size, size_t offset)
{
ssize_t pending;
size_t index;
@@ -633,7 +633,7 @@ size_t qemu_peek_buffer(QEMUFile *f, uint8_t **buf, size_t size, size_t offset)
* return as many as it managed to read (assuming blocking fd's which
* all current QEMUFile are)
*/
-size_t qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size)
+size_t coroutine_mixed_fn qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size)
{
size_t pending = size;
size_t done = 0;
@@ -674,7 +674,7 @@ size_t qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size)
* Note: Since **buf may get changed, the caller should take care to
* keep a pointer to the original buffer if it needs to deallocate it.
*/
-size_t qemu_get_buffer_in_place(QEMUFile *f, uint8_t **buf, size_t size)
+size_t coroutine_mixed_fn qemu_get_buffer_in_place(QEMUFile *f, uint8_t **buf, size_t size)
{
if (size < IO_BUF_SIZE) {
size_t res;
@@ -696,7 +696,7 @@ size_t qemu_get_buffer_in_place(QEMUFile *f, uint8_t **buf, size_t size)
* Peeks a single byte from the buffer; this isn't guaranteed to work if
* offset leaves a gap after the previous read/peeked data.
*/
-int qemu_peek_byte(QEMUFile *f, int offset)
+int coroutine_mixed_fn qemu_peek_byte(QEMUFile *f, int offset)
{
int index = f->buf_index + offset;
@@ -713,7 +713,7 @@ int qemu_peek_byte(QEMUFile *f, int offset)
return f->buf[index];
}
-int qemu_get_byte(QEMUFile *f)
+int coroutine_mixed_fn qemu_get_byte(QEMUFile *f)
{
int result;
@@ -894,7 +894,7 @@ int qemu_put_qemu_file(QEMUFile *f_des, QEMUFile *f_src)
* else 0
* (Note a 0 length string will return 0 either way)
*/
-size_t qemu_get_counted_string(QEMUFile *f, char buf[256])
+size_t coroutine_fn qemu_get_counted_string(QEMUFile *f, char buf[256])
{
size_t len = qemu_get_byte(f);
size_t res = qemu_get_buffer(f, (uint8_t *)buf, len);
diff --git a/migration/qemu-file.h b/migration/qemu-file.h
index 9d0155a2a12e..d16cd504482a 100644
--- a/migration/qemu-file.h
+++ b/migration/qemu-file.h
@@ -108,8 +108,8 @@ bool qemu_file_is_writable(QEMUFile *f);
#include "migration/qemu-file-types.h"
-size_t qemu_peek_buffer(QEMUFile *f, uint8_t **buf, size_t size, size_t offset);
-size_t qemu_get_buffer_in_place(QEMUFile *f, uint8_t **buf, size_t size);
+size_t coroutine_mixed_fn qemu_peek_buffer(QEMUFile *f, uint8_t **buf, size_t size, size_t offset);
+size_t coroutine_mixed_fn qemu_get_buffer_in_place(QEMUFile *f, uint8_t **buf, size_t size);
ssize_t qemu_put_compression_data(QEMUFile *f, z_stream *stream,
const uint8_t *p, size_t size);
int qemu_put_qemu_file(QEMUFile *f_des, QEMUFile *f_src);
@@ -119,7 +119,7 @@ int qemu_put_qemu_file(QEMUFile *f_des, QEMUFile *f_src);
* is; you aren't guaranteed to be able to peak to +n bytes unless you've
* previously peeked +n-1.
*/
-int qemu_peek_byte(QEMUFile *f, int offset);
+int coroutine_mixed_fn qemu_peek_byte(QEMUFile *f, int offset);
void qemu_file_skip(QEMUFile *f, int size);
/*
* qemu_file_credit_transfer:
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 15/25] monitor: mark mixed functions that can suspend
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (13 preceding siblings ...)
2023-04-21 9:33 ` [PULL 14/25] migration: " Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 16/25] target/i386: Change wrong XFRM value in SGX CPUID leaf Paolo Bonzini
` (10 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel
There should be no paths from a coroutine_fn to aio_poll, however in
practice coroutine_mixed_fn will call aio_poll in the !qemu_in_coroutine()
path. By marking mixed functions, we can track accurately the call paths
that execute entirely in coroutine context, and find more missing
coroutine_fn markers. This results in more accurate checks that
coroutine code does not end up blocking.
If the marking were extended transitively to all functions that call
these ones, static analysis could be done much more efficiently.
However, this is a start and makes it possible to use vrc's path-based
searches to find potential bugs where coroutine_fns call blocking functions.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/qapi/qmp/dispatch.h | 4 ++--
qapi/qmp-dispatch.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/qapi/qmp/dispatch.h b/include/qapi/qmp/dispatch.h
index 1e4240fd0dbc..f2e956813a14 100644
--- a/include/qapi/qmp/dispatch.h
+++ b/include/qapi/qmp/dispatch.h
@@ -55,8 +55,8 @@ bool qmp_command_available(const QmpCommand *cmd, Error **errp);
const char *qmp_command_name(const QmpCommand *cmd);
bool qmp_has_success_response(const QmpCommand *cmd);
QDict *qmp_error_response(Error *err);
-QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
- bool allow_oob, Monitor *cur_mon);
+QDict *coroutine_mixed_fn qmp_dispatch(const QmpCommandList *cmds, QObject *request,
+ bool allow_oob, Monitor *cur_mon);
bool qmp_is_oob(const QDict *dict);
typedef void (*qmp_cmd_callback_fn)(const QmpCommand *cmd, void *opaque);
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
index 0990873ec8ec..555528b6bbd3 100644
--- a/qapi/qmp-dispatch.c
+++ b/qapi/qmp-dispatch.c
@@ -134,8 +134,8 @@ static void do_qmp_dispatch_bh(void *opaque)
* Runs outside of coroutine context for OOB commands, but in coroutine
* context for everything else.
*/
-QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
- bool allow_oob, Monitor *cur_mon)
+QDict *coroutine_mixed_fn qmp_dispatch(const QmpCommandList *cmds, QObject *request,
+ bool allow_oob, Monitor *cur_mon)
{
Error *err = NULL;
bool oob;
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 16/25] target/i386: Change wrong XFRM value in SGX CPUID leaf
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (14 preceding siblings ...)
2023-04-21 9:33 ` [PULL 15/25] monitor: " Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 17/25] block-backend: remove qatomic_mb_read() Paolo Bonzini
` (9 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Yang Zhong, Kai Huang
From: Yang Zhong <yang.zhong@linux.intel.com>
The previous patch wrongly replaced FEAT_XSAVE_XCR0_{LO|HI} with
FEAT_XSAVE_XSS_{LO|HI} in CPUID(EAX=12,ECX=1):{ECX,EDX}. As a result,
SGX enclaves only supported SSE and x87 feature (xfrm=0x3).
Fixes: 301e90675c3f ("target/i386: Enable support for XSAVES based features")
Signed-off-by: Yang Zhong <yang.zhong@linux.intel.com>
Reviewed-by: Yang Weijiang <weijiang.yang@intel.com>
Reviewed-by: Kai Huang <kai.huang@intel.com>
Message-Id: <20230406064041.420039-1-yang.zhong@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
target/i386/cpu.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 6576287e5b6c..f083ff4335ac 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -5718,8 +5718,8 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
} else {
*eax &= env->features[FEAT_SGX_12_1_EAX];
*ebx &= 0; /* ebx reserve */
- *ecx &= env->features[FEAT_XSAVE_XSS_LO];
- *edx &= env->features[FEAT_XSAVE_XSS_HI];
+ *ecx &= env->features[FEAT_XSAVE_XCR0_LO];
+ *edx &= env->features[FEAT_XSAVE_XCR0_HI];
/* FP and SSE are always allowed regardless of XSAVE/XCR0. */
*ecx |= XSTATE_FP_MASK | XSTATE_SSE_MASK;
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 17/25] block-backend: remove qatomic_mb_read()
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (15 preceding siblings ...)
2023-04-21 9:33 ` [PULL 16/25] target/i386: Change wrong XFRM value in SGX CPUID leaf Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 18/25] postcopy-ram: do not use qatomic_mb_read Paolo Bonzini
` (8 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi
There is already a barrier in AIO_WAIT_WHILE_INTERNAL(), thus the
qatomic_mb_read() is not adding anything.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
block/block-backend.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/block/block-backend.c b/block/block-backend.c
index 55efc735b442..5566ea059d55 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -1845,7 +1845,7 @@ void blk_drain(BlockBackend *blk)
/* We may have -ENOMEDIUM completions in flight */
AIO_WAIT_WHILE(blk_get_aio_context(blk),
- qatomic_mb_read(&blk->in_flight) > 0);
+ qatomic_read(&blk->in_flight) > 0);
if (bs) {
bdrv_drained_end(bs);
@@ -1867,7 +1867,7 @@ void blk_drain_all(void)
aio_context_acquire(ctx);
/* We may have -ENOMEDIUM completions in flight */
- AIO_WAIT_WHILE(ctx, qatomic_mb_read(&blk->in_flight) > 0);
+ AIO_WAIT_WHILE(ctx, qatomic_read(&blk->in_flight) > 0);
aio_context_release(ctx);
}
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 18/25] postcopy-ram: do not use qatomic_mb_read
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (16 preceding siblings ...)
2023-04-21 9:33 ` [PULL 17/25] block-backend: remove qatomic_mb_read() Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 19/25] qemu-coroutine: remove qatomic_mb_read() Paolo Bonzini
` (7 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel
It does not even pair with a qatomic_mb_set(), so it is clearer to use
load-acquire in this case; they are synonyms.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
migration/postcopy-ram.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
index 93f39f8e06b8..7d24dac39728 100644
--- a/migration/postcopy-ram.c
+++ b/migration/postcopy-ram.c
@@ -1500,7 +1500,7 @@ static PostcopyState incoming_postcopy_state;
PostcopyState postcopy_state_get(void)
{
- return qatomic_mb_read(&incoming_postcopy_state);
+ return qatomic_load_acquire(&incoming_postcopy_state);
}
/* Set the state and return the old state */
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 19/25] qemu-coroutine: remove qatomic_mb_read()
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (17 preceding siblings ...)
2023-04-21 9:33 ` [PULL 18/25] postcopy-ram: do not use qatomic_mb_read Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 20/25] docs: explain effect of smp_read_barrier_depends() on modern architectures Paolo Bonzini
` (6 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi
Replace with an explicit barrier and a comment.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
util/qemu-coroutine.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/util/qemu-coroutine.c b/util/qemu-coroutine.c
index 849452369201..17a88f65053e 100644
--- a/util/qemu-coroutine.c
+++ b/util/qemu-coroutine.c
@@ -127,9 +127,13 @@ void qemu_aio_coroutine_enter(AioContext *ctx, Coroutine *co)
Coroutine *to = QSIMPLEQ_FIRST(&pending);
CoroutineAction ret;
- /* Cannot rely on the read barrier for to in aio_co_wake(), as there are
- * callers outside of aio_co_wake() */
- const char *scheduled = qatomic_mb_read(&to->scheduled);
+ /*
+ * Read to before to->scheduled; pairs with qatomic_cmpxchg in
+ * qemu_co_sleep(), aio_co_schedule() etc.
+ */
+ smp_read_barrier_depends();
+
+ const char *scheduled = qatomic_read(&to->scheduled);
QSIMPLEQ_REMOVE_HEAD(&pending, co_queue_next);
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 20/25] docs: explain effect of smp_read_barrier_depends() on modern architectures
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (18 preceding siblings ...)
2023-04-21 9:33 ` [PULL 19/25] qemu-coroutine: remove qatomic_mb_read() Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 21/25] nbd: a BlockExport always has a BlockBackend Paolo Bonzini
` (5 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi
The documentation for smp_read_barrier_depends() does not mention the architectures
for which it is an optimization, for example ARM and PPC. As a result, it is not
clear to the reader why one would use it. Relegate Alpha to a footnote together
with other architectures where it is equivalent to smp_rmb().
Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
docs/devel/atomics.rst | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/docs/devel/atomics.rst b/docs/devel/atomics.rst
index 81ec26be1771..248076375bfe 100644
--- a/docs/devel/atomics.rst
+++ b/docs/devel/atomics.rst
@@ -220,10 +220,9 @@ They come in six kinds:
retrieves the address to which the second load will be directed),
the processor will guarantee that the first LOAD will appear to happen
before the second with respect to the other components of the system.
- However, this is not always true---for example, it was not true on
- Alpha processors. Whenever this kind of access happens to shared
- memory (that is not protected by a lock), a read barrier is needed,
- and ``smp_read_barrier_depends()`` can be used instead of ``smp_rmb()``.
+ Therefore, unlike ``smp_rmb()`` or ``qatomic_load_acquire()``,
+ ``smp_read_barrier_depends()`` can be just a compiler barrier on
+ weakly-ordered architectures such as Arm or PPC[#]_.
Note that the first load really has to have a _data_ dependency and not
a control dependency. If the address for the second load is dependent
@@ -231,6 +230,10 @@ They come in six kinds:
than actually loading the address itself, then it's a _control_
dependency and a full read barrier or better is required.
+.. [#] The DEC Alpha is an exception, because ``smp_read_barrier_depends()``
+ needs a processor barrier. On strongly-ordered architectures such
+ as x86 or s390, ``smp_rmb()`` and ``qatomic_load_acquire()`` can
+ also be compiler barriers only.
Memory barriers and ``qatomic_load_acquire``/``qatomic_store_release`` are
mostly used when a data structure has one thread that is always a writer
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 21/25] nbd: a BlockExport always has a BlockBackend
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (19 preceding siblings ...)
2023-04-21 9:33 ` [PULL 20/25] docs: explain effect of smp_read_barrier_depends() on modern architectures Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 22/25] coverity: unify Fedora dockerfiles Paolo Bonzini
` (4 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Eric Blake
exp->common.blk cannot be NULL, nbd_export_delete() is only called (through
a bottom half) from blk_exp_unref() and in turn that can only happen
after blk_exp_add() has asserted exp->blk != NULL.
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
nbd/server.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/nbd/server.c b/nbd/server.c
index 3d8d0d81df22..4f5c42f84d9e 100644
--- a/nbd/server.c
+++ b/nbd/server.c
@@ -1847,15 +1847,13 @@ static void nbd_export_delete(BlockExport *blk_exp)
g_free(exp->description);
exp->description = NULL;
- if (exp->common.blk) {
- if (exp->eject_notifier_blk) {
- notifier_remove(&exp->eject_notifier);
- blk_unref(exp->eject_notifier_blk);
- }
- blk_remove_aio_context_notifier(exp->common.blk, blk_aio_attached,
- blk_aio_detach, exp);
- blk_set_disable_request_queuing(exp->common.blk, false);
+ if (exp->eject_notifier_blk) {
+ notifier_remove(&exp->eject_notifier);
+ blk_unref(exp->eject_notifier_blk);
}
+ blk_remove_aio_context_notifier(exp->common.blk, blk_aio_attached,
+ blk_aio_detach, exp);
+ blk_set_disable_request_queuing(exp->common.blk, false);
for (i = 0; i < exp->nr_export_bitmaps; i++) {
bdrv_dirty_bitmap_set_busy(exp->export_bitmaps[i], false);
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 22/25] coverity: unify Fedora dockerfiles
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (20 preceding siblings ...)
2023-04-21 9:33 ` [PULL 21/25] nbd: a BlockExport always has a BlockBackend Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 23/25] configure: Honour cross-prefix when finding ObjC compiler Paolo Bonzini
` (3 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel
The Fedora CI and coverity runs are using a slightly different set of
packages. Copy most of the content over from tests/docker while
keeping the commands at the end that unpack the tools.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20230331174844.376300-1-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
scripts/coverity-scan/coverity-scan.docker | 250 ++++++++++++---------
1 file changed, 145 insertions(+), 105 deletions(-)
diff --git a/scripts/coverity-scan/coverity-scan.docker b/scripts/coverity-scan/coverity-scan.docker
index 6f60a52d2315..a349578526da 100644
--- a/scripts/coverity-scan/coverity-scan.docker
+++ b/scripts/coverity-scan/coverity-scan.docker
@@ -15,112 +15,152 @@
# The work of actually doing the build is handled by the
# run-coverity-scan script.
-FROM fedora:30
-ENV PACKAGES \
- alsa-lib-devel \
- bc \
- brlapi-devel \
- bzip2 \
- bzip2-devel \
- ccache \
- clang \
- curl \
- cyrus-sasl-devel \
- dbus-daemon \
- device-mapper-multipath-devel \
- findutils \
- gcc \
- gcc-c++ \
- gettext \
- git \
- glib2-devel \
- glusterfs-api-devel \
- gnutls-devel \
- gtk3-devel \
- hostname \
- libaio-devel \
- libasan \
- libattr-devel \
- libblockdev-mpath-devel \
- libcap-devel \
- libcap-ng-devel \
- libcurl-devel \
- libepoxy-devel \
- libfdt-devel \
- libgbm-devel \
- libiscsi-devel \
- libjpeg-devel \
- libpmem-devel \
- libnfs-devel \
- libpng-devel \
- librbd-devel \
- libseccomp-devel \
- libssh-devel \
- libubsan \
- libudev-devel \
- libusbx-devel \
- libzstd-devel \
- llvm \
- lzo-devel \
- make \
- mingw32-bzip2 \
- mingw32-curl \
- mingw32-glib2 \
- mingw32-gmp \
- mingw32-gnutls \
- mingw32-gtk3 \
- mingw32-libjpeg-turbo \
- mingw32-libpng \
- mingw32-libtasn1 \
- mingw32-nettle \
- mingw32-nsis \
- mingw32-pixman \
- mingw32-pkg-config \
- mingw32-SDL2 \
- mingw64-bzip2 \
- mingw64-curl \
- mingw64-glib2 \
- mingw64-gmp \
- mingw64-gnutls \
- mingw64-gtk3 \
- mingw64-libjpeg-turbo \
- mingw64-libpng \
- mingw64-libtasn1 \
- mingw64-nettle \
- mingw64-pixman \
- mingw64-pkg-config \
- mingw64-SDL2 \
- ncurses-devel \
- nettle-devel \
- numactl-devel \
- perl \
- perl-Test-Harness \
- pixman-devel \
- pulseaudio-libs-devel \
- python3 \
- python3-sphinx \
- PyYAML \
- rdma-core-devel \
- SDL2-devel \
- snappy-devel \
- sparse \
- spice-server-devel \
- systemd-devel \
- systemtap-sdt-devel \
- tar \
- usbredir-devel \
- virglrenderer-devel \
- vte291-devel \
- wget \
- which \
- xen-devel \
- xfsprogs-devel \
- zlib-devel
-ENV QEMU_CONFIGURE_OPTS --python=/usr/bin/python3
+FROM registry.fedoraproject.org/fedora:37
-RUN dnf install -y $PACKAGES
-RUN rpm -q $PACKAGES | sort > /packages.txt
-ENV PATH $PATH:/usr/libexec/python3-sphinx/
+RUN dnf install -y nosync && \
+ echo -e '#!/bin/sh\n\
+if test -d /usr/lib64\n\
+then\n\
+ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
+else\n\
+ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
+fi\n\
+exec "$@"' > /usr/bin/nosync && \
+ chmod +x /usr/bin/nosync && \
+ nosync dnf update -y && \
+ nosync dnf install -y \
+ SDL2-devel \
+ SDL2_image-devel \
+ alsa-lib-devel \
+ bash \
+ bc \
+ bison \
+ brlapi-devel \
+ bzip2 \
+ bzip2-devel \
+ ca-certificates \
+ capstone-devel \
+ ccache \
+ clang \
+ ctags \
+ cyrus-sasl-devel \
+ daxctl-devel \
+ dbus-daemon \
+ device-mapper-multipath-devel \
+ diffutils \
+ findutils \
+ flex \
+ fuse3-devel \
+ gcc \
+ gcc-c++ \
+ gcovr \
+ genisoimage \
+ gettext \
+ git \
+ glib2-devel \
+ glib2-static \
+ glibc-langpack-en \
+ glibc-static \
+ glusterfs-api-devel \
+ gnutls-devel \
+ gtk3-devel \
+ hostname \
+ jemalloc-devel \
+ json-c-devel \
+ libaio-devel \
+ libasan \
+ libattr-devel \
+ libbpf-devel \
+ libcacard-devel \
+ libcap-ng-devel \
+ libcmocka-devel \
+ libcurl-devel \
+ libdrm-devel \
+ libepoxy-devel \
+ libfdt-devel \
+ libffi-devel \
+ libgcrypt-devel \
+ libiscsi-devel \
+ libjpeg-devel \
+ libnfs-devel \
+ libpmem-devel \
+ libpng-devel \
+ librbd-devel \
+ libseccomp-devel \
+ libselinux-devel \
+ libslirp-devel \
+ libssh-devel \
+ libtasn1-devel \
+ libubsan \
+ liburing-devel \
+ libusbx-devel \
+ libzstd-devel \
+ llvm \
+ lttng-ust-devel \
+ lzo-devel \
+ make \
+ mesa-libgbm-devel \
+ meson \
+ ncurses-devel \
+ nettle-devel \
+ ninja-build \
+ nmap-ncat \
+ numactl-devel \
+ openssh-clients \
+ pam-devel \
+ pcre-static \
+ pixman-devel \
+ pkgconfig \
+ pulseaudio-libs-devel \
+ python3 \
+ python3-PyYAML \
+ python3-numpy \
+ python3-opencv \
+ python3-pillow \
+ python3-pip \
+ python3-sphinx \
+ python3-sphinx_rtd_theme \
+ rdma-core-devel \
+ rpm \
+ sed \
+ snappy-devel \
+ socat \
+ sparse \
+ spice-protocol \
+ spice-server-devel \
+ systemd-devel \
+ systemtap-sdt-devel \
+ tar \
+ tesseract \
+ tesseract-langpack-eng \
+ usbredir-devel \
+ util-linux \
+ virglrenderer-devel \
+ vte291-devel \
+ which \
+ xen-devel \
+ xfsprogs-devel \
+ zlib-devel \
+ zlib-static \
+ zstd && \
+ nosync dnf autoremove -y && \
+ nosync dnf clean all -y && \
+ rpm -qa | sort > /packages.txt && \
+ mkdir -p /usr/libexec/ccache-wrappers && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/c++ && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+ENV QEMU_CONFIGURE_OPTS --meson=internal
+
+RUN dnf install -y curl wget
ENV COVERITY_TOOL_BASE=/coverity-tools
COPY coverity_tool.tgz coverity_tool.tgz
RUN mkdir -p /coverity-tools/coverity_tool && cd /coverity-tools/coverity_tool && tar xf /coverity_tool.tgz
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 23/25] configure: Honour cross-prefix when finding ObjC compiler
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (21 preceding siblings ...)
2023-04-21 9:33 ` [PULL 22/25] coverity: unify Fedora dockerfiles Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 24/25] tests: libvirt-ci: Update to commit '2fa24dce8bc' Paolo Bonzini
` (2 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell
From: Peter Maydell <peter.maydell@linaro.org>
Currently when configure picks an ObjectiveC compiler it doesn't pay
attention to the cross-prefix. This isn't a big deal in practice,
because we only use ObjC on macos and you can't cross-compile to
macos. But it's a bit inconsistent.
Rearrange the handling of objcc in configure so that we do the
same thing that we do with cc and cxx. This means that the logic
for picking the ObjC compiler goes from:
if --objcc is specified, use that
otherwise if clang is available, use that
otherwise use $cc
to:
if --objcc is specified, use that
otherwise if --cross-prefix is specified, use ${cross_prefix}clang
otherwise if clang is available, use that
otherwise use $cc
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1185
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20230418161554.744834-1-peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/configure b/configure
index 22b8553b8d70..77c03315f820 100755
--- a/configure
+++ b/configure
@@ -316,6 +316,8 @@ for opt do
;;
--cxx=*) CXX="$optarg"
;;
+ --objcc=*) objcc="$optarg"
+ ;;
--cpu=*) cpu="$optarg"
;;
--extra-cflags=*)
@@ -361,6 +363,21 @@ else
cxx="${CXX-${cross_prefix}g++}"
fi
+# Preferred ObjC compiler:
+# $objcc (if set, i.e. via --objcc option)
+# ${cross_prefix}clang (if cross-prefix specified)
+# clang (if available)
+# $cc
+if test -z "${objcc}${cross_prefix}"; then
+ if has clang; then
+ objcc=clang
+ else
+ objcc="$cc"
+ fi
+else
+ objcc="${objcc-${cross_prefix}clang}"
+fi
+
ar="${AR-${cross_prefix}ar}"
as="${AS-${cross_prefix}as}"
ccas="${CCAS-$cc}"
@@ -647,13 +664,6 @@ do
fi
done
-# Default objcc to clang if available, otherwise use CC
-if has clang; then
- objcc=clang
-else
- objcc="$cc"
-fi
-
if test "$mingw32" = "yes" ; then
EXESUF=".exe"
# MinGW needs -mthreads for TLS and macro _MT.
@@ -713,7 +723,7 @@ for opt do
;;
--cxx=*)
;;
- --objcc=*) objcc="$optarg"
+ --objcc=*)
;;
--make=*) make="$optarg"
;;
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 24/25] tests: libvirt-ci: Update to commit '2fa24dce8bc'
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (22 preceding siblings ...)
2023-04-21 9:33 ` [PULL 23/25] configure: Honour cross-prefix when finding ObjC compiler Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-21 9:33 ` [PULL 25/25] tests: lcitool: Switch to OpenSUSE Leap 15.4 Paolo Bonzini
2023-04-22 7:31 ` [PULL 00/25] First batch of misc patches for QEMU 8.1 Richard Henderson
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Krempa
From: Peter Krempa <pkrempa@redhat.com>
Update to commit which has fixes needed for OpenSUSE 15.4 and
re-generate output files.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Message-Id: <bd11b5954d3dd1e989699370af2b9e2e0c77194a.1681735482.git.pkrempa@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/dockerfiles/centos8.docker | 1 -
tests/docker/dockerfiles/debian-amd64-cross.docker | 4 ++--
tests/docker/dockerfiles/debian-arm64-cross.docker | 4 ++--
tests/docker/dockerfiles/debian-armel-cross.docker | 4 ++--
tests/docker/dockerfiles/debian-armhf-cross.docker | 4 ++--
tests/docker/dockerfiles/debian-mips64el-cross.docker | 4 ++--
tests/docker/dockerfiles/debian-mipsel-cross.docker | 4 ++--
tests/docker/dockerfiles/debian-ppc64el-cross.docker | 4 ++--
tests/docker/dockerfiles/debian-s390x-cross.docker | 4 ++--
tests/docker/dockerfiles/fedora-win32-cross.docker | 5 ++---
tests/docker/dockerfiles/fedora-win64-cross.docker | 5 ++---
tests/docker/dockerfiles/fedora.docker | 5 ++---
tests/docker/dockerfiles/opensuse-leap.docker | 1 -
tests/lcitool/libvirt-ci | 2 +-
14 files changed, 23 insertions(+), 28 deletions(-)
diff --git a/tests/docker/dockerfiles/centos8.docker b/tests/docker/dockerfiles/centos8.docker
index 7e3a6217ae2d..1a6a9087c11f 100644
--- a/tests/docker/dockerfiles/centos8.docker
+++ b/tests/docker/dockerfiles/centos8.docker
@@ -100,7 +100,6 @@ RUN dnf distro-sync -y && \
python38-setuptools \
python38-wheel \
rdma-core-devel \
- rpm \
sed \
snappy-devel \
socat \
diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/docker/dockerfiles/debian-amd64-cross.docker
index afb1cbd04638..2e7eb445f161 100644
--- a/tests/docker/dockerfiles/debian-amd64-cross.docker
+++ b/tests/docker/dockerfiles/debian-amd64-cross.docker
@@ -148,7 +148,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \
- echo "[binaries]\n\
+ printf "[binaries]\n\
c = '/usr/bin/x86_64-linux-gnu-gcc'\n\
ar = '/usr/bin/x86_64-linux-gnu-gcc-ar'\n\
strip = '/usr/bin/x86_64-linux-gnu-strip'\n\
@@ -158,7 +158,7 @@ pkgconfig = '/usr/bin/x86_64-linux-gnu-pkg-config'\n\
system = 'linux'\n\
cpu_family = 'x86_64'\n\
cpu = 'x86_64'\n\
-endian = 'little'" > /usr/local/share/meson/cross/x86_64-linux-gnu && \
+endian = 'little'\n" > /usr/local/share/meson/cross/x86_64-linux-gnu && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
mkdir -p /usr/libexec/ccache-wrappers && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-linux-gnu-c++ && \
diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker
index b4f7a7f903ee..f558770f845a 100644
--- a/tests/docker/dockerfiles/debian-arm64-cross.docker
+++ b/tests/docker/dockerfiles/debian-arm64-cross.docker
@@ -147,7 +147,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \
- echo "[binaries]\n\
+ printf "[binaries]\n\
c = '/usr/bin/aarch64-linux-gnu-gcc'\n\
ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'\n\
strip = '/usr/bin/aarch64-linux-gnu-strip'\n\
@@ -157,7 +157,7 @@ pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'\n\
system = 'linux'\n\
cpu_family = 'aarch64'\n\
cpu = 'aarch64'\n\
-endian = 'little'" > /usr/local/share/meson/cross/aarch64-linux-gnu && \
+endian = 'little'\n" > /usr/local/share/meson/cross/aarch64-linux-gnu && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
mkdir -p /usr/libexec/ccache-wrappers && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-c++ && \
diff --git a/tests/docker/dockerfiles/debian-armel-cross.docker b/tests/docker/dockerfiles/debian-armel-cross.docker
index 4b4191f82474..f3d7e07cce5a 100644
--- a/tests/docker/dockerfiles/debian-armel-cross.docker
+++ b/tests/docker/dockerfiles/debian-armel-cross.docker
@@ -146,7 +146,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \
- echo "[binaries]\n\
+ printf "[binaries]\n\
c = '/usr/bin/arm-linux-gnueabi-gcc'\n\
ar = '/usr/bin/arm-linux-gnueabi-gcc-ar'\n\
strip = '/usr/bin/arm-linux-gnueabi-strip'\n\
@@ -156,7 +156,7 @@ pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'\n\
system = 'linux'\n\
cpu_family = 'arm'\n\
cpu = 'arm'\n\
-endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabi && \
+endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabi && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
mkdir -p /usr/libexec/ccache-wrappers && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-c++ && \
diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker
index c9b6b2e56377..531c556ad5aa 100644
--- a/tests/docker/dockerfiles/debian-armhf-cross.docker
+++ b/tests/docker/dockerfiles/debian-armhf-cross.docker
@@ -147,7 +147,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \
- echo "[binaries]\n\
+ printf "[binaries]\n\
c = '/usr/bin/arm-linux-gnueabihf-gcc'\n\
ar = '/usr/bin/arm-linux-gnueabihf-gcc-ar'\n\
strip = '/usr/bin/arm-linux-gnueabihf-strip'\n\
@@ -157,7 +157,7 @@ pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'\n\
system = 'linux'\n\
cpu_family = 'arm'\n\
cpu = 'armhf'\n\
-endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabihf && \
+endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabihf && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
mkdir -p /usr/libexec/ccache-wrappers && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-c++ && \
diff --git a/tests/docker/dockerfiles/debian-mips64el-cross.docker b/tests/docker/dockerfiles/debian-mips64el-cross.docker
index cfe4f9a0d7fb..816dbd29113f 100644
--- a/tests/docker/dockerfiles/debian-mips64el-cross.docker
+++ b/tests/docker/dockerfiles/debian-mips64el-cross.docker
@@ -144,7 +144,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \
- echo "[binaries]\n\
+ printf "[binaries]\n\
c = '/usr/bin/mips64el-linux-gnuabi64-gcc'\n\
ar = '/usr/bin/mips64el-linux-gnuabi64-gcc-ar'\n\
strip = '/usr/bin/mips64el-linux-gnuabi64-strip'\n\
@@ -154,7 +154,7 @@ pkgconfig = '/usr/bin/mips64el-linux-gnuabi64-pkg-config'\n\
system = 'linux'\n\
cpu_family = 'mips64'\n\
cpu = 'mips64el'\n\
-endian = 'little'" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64 && \
+endian = 'little'\n" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64 && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
mkdir -p /usr/libexec/ccache-wrappers && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-c++ && \
diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker
index 8e521fc9eec9..b115b29af3d6 100644
--- a/tests/docker/dockerfiles/debian-mipsel-cross.docker
+++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker
@@ -144,7 +144,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \
- echo "[binaries]\n\
+ printf "[binaries]\n\
c = '/usr/bin/mipsel-linux-gnu-gcc'\n\
ar = '/usr/bin/mipsel-linux-gnu-gcc-ar'\n\
strip = '/usr/bin/mipsel-linux-gnu-strip'\n\
@@ -154,7 +154,7 @@ pkgconfig = '/usr/bin/mipsel-linux-gnu-pkg-config'\n\
system = 'linux'\n\
cpu_family = 'mips'\n\
cpu = 'mipsel'\n\
-endian = 'little'" > /usr/local/share/meson/cross/mipsel-linux-gnu && \
+endian = 'little'\n" > /usr/local/share/meson/cross/mipsel-linux-gnu && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
mkdir -p /usr/libexec/ccache-wrappers && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-c++ && \
diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker
index b1b8277f3f32..301bddb5367a 100644
--- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker
+++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker
@@ -146,7 +146,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \
- echo "[binaries]\n\
+ printf "[binaries]\n\
c = '/usr/bin/powerpc64le-linux-gnu-gcc'\n\
ar = '/usr/bin/powerpc64le-linux-gnu-gcc-ar'\n\
strip = '/usr/bin/powerpc64le-linux-gnu-strip'\n\
@@ -156,7 +156,7 @@ pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'\n\
system = 'linux'\n\
cpu_family = 'ppc64'\n\
cpu = 'powerpc64le'\n\
-endian = 'little'" > /usr/local/share/meson/cross/powerpc64le-linux-gnu && \
+endian = 'little'\n" > /usr/local/share/meson/cross/powerpc64le-linux-gnu && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
mkdir -p /usr/libexec/ccache-wrappers && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-c++ && \
diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker
index af39568ce53f..5d27c91c171a 100644
--- a/tests/docker/dockerfiles/debian-s390x-cross.docker
+++ b/tests/docker/dockerfiles/debian-s390x-cross.docker
@@ -145,7 +145,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
eatmydata apt-get autoremove -y && \
eatmydata apt-get autoclean -y && \
mkdir -p /usr/local/share/meson/cross && \
- echo "[binaries]\n\
+ printf "[binaries]\n\
c = '/usr/bin/s390x-linux-gnu-gcc'\n\
ar = '/usr/bin/s390x-linux-gnu-gcc-ar'\n\
strip = '/usr/bin/s390x-linux-gnu-strip'\n\
@@ -155,7 +155,7 @@ pkgconfig = '/usr/bin/s390x-linux-gnu-pkg-config'\n\
system = 'linux'\n\
cpu_family = 's390x'\n\
cpu = 's390x'\n\
-endian = 'big'" > /usr/local/share/meson/cross/s390x-linux-gnu && \
+endian = 'big'\n" > /usr/local/share/meson/cross/s390x-linux-gnu && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
mkdir -p /usr/libexec/ccache-wrappers && \
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-c++ && \
diff --git a/tests/docker/dockerfiles/fedora-win32-cross.docker b/tests/docker/dockerfiles/fedora-win32-cross.docker
index 1fc4c987f751..e7966ec7fd28 100644
--- a/tests/docker/dockerfiles/fedora-win32-cross.docker
+++ b/tests/docker/dockerfiles/fedora-win32-cross.docker
@@ -7,14 +7,14 @@
FROM registry.fedoraproject.org/fedora:37
RUN dnf install -y nosync && \
- echo -e '#!/bin/sh\n\
+ printf '#!/bin/sh\n\
if test -d /usr/lib64\n\
then\n\
export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
else\n\
export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
fi\n\
-exec "$@"' > /usr/bin/nosync && \
+exec "$@"\n' > /usr/bin/nosync && \
chmod +x /usr/bin/nosync && \
nosync dnf update -y && \
nosync dnf install -y \
@@ -50,7 +50,6 @@ exec "$@"' > /usr/bin/nosync && \
python3-pip \
python3-sphinx \
python3-sphinx_rtd_theme \
- rpm \
sed \
socat \
sparse \
diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker b/tests/docker/dockerfiles/fedora-win64-cross.docker
index 39a0617a9dcf..86c3a8f2ac04 100644
--- a/tests/docker/dockerfiles/fedora-win64-cross.docker
+++ b/tests/docker/dockerfiles/fedora-win64-cross.docker
@@ -7,14 +7,14 @@
FROM registry.fedoraproject.org/fedora:37
RUN dnf install -y nosync && \
- echo -e '#!/bin/sh\n\
+ printf '#!/bin/sh\n\
if test -d /usr/lib64\n\
then\n\
export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
else\n\
export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
fi\n\
-exec "$@"' > /usr/bin/nosync && \
+exec "$@"\n' > /usr/bin/nosync && \
chmod +x /usr/bin/nosync && \
nosync dnf update -y && \
nosync dnf install -y \
@@ -50,7 +50,6 @@ exec "$@"' > /usr/bin/nosync && \
python3-pip \
python3-sphinx \
python3-sphinx_rtd_theme \
- rpm \
sed \
socat \
sparse \
diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker
index e030c5fb1e4a..b698b7595de1 100644
--- a/tests/docker/dockerfiles/fedora.docker
+++ b/tests/docker/dockerfiles/fedora.docker
@@ -7,14 +7,14 @@
FROM registry.fedoraproject.org/fedora:37
RUN dnf install -y nosync && \
- echo -e '#!/bin/sh\n\
+ printf '#!/bin/sh\n\
if test -d /usr/lib64\n\
then\n\
export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
else\n\
export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
fi\n\
-exec "$@"' > /usr/bin/nosync && \
+exec "$@"\n' > /usr/bin/nosync && \
chmod +x /usr/bin/nosync && \
nosync dnf update -y && \
nosync dnf install -y \
@@ -110,7 +110,6 @@ exec "$@"' > /usr/bin/nosync && \
python3-sphinx \
python3-sphinx_rtd_theme \
rdma-core-devel \
- rpm \
sed \
snappy-devel \
socat \
diff --git a/tests/docker/dockerfiles/opensuse-leap.docker b/tests/docker/dockerfiles/opensuse-leap.docker
index 8e9500e44318..28f153b77b56 100644
--- a/tests/docker/dockerfiles/opensuse-leap.docker
+++ b/tests/docker/dockerfiles/opensuse-leap.docker
@@ -93,7 +93,6 @@ RUN zypper update -y && \
python39-pip \
python39-setuptools \
rdma-core-devel \
- rpm \
sed \
snappy-devel \
sndio-devel \
diff --git a/tests/lcitool/libvirt-ci b/tests/lcitool/libvirt-ci
index 232f41f160d4..2fa24dce8bc2 160000
--- a/tests/lcitool/libvirt-ci
+++ b/tests/lcitool/libvirt-ci
@@ -1 +1 @@
-Subproject commit 232f41f160d4567b8c82dd52aa96c2bc3a5b75c1
+Subproject commit 2fa24dce8bc2d0d57b02b111dbdbd24e25d4ae95
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* [PULL 25/25] tests: lcitool: Switch to OpenSUSE Leap 15.4
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (23 preceding siblings ...)
2023-04-21 9:33 ` [PULL 24/25] tests: libvirt-ci: Update to commit '2fa24dce8bc' Paolo Bonzini
@ 2023-04-21 9:33 ` Paolo Bonzini
2023-04-22 7:31 ` [PULL 00/25] First batch of misc patches for QEMU 8.1 Richard Henderson
25 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2023-04-21 9:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Krempa, Daniel P . Berrangé
From: Peter Krempa <pkrempa@redhat.com>
Since OpenSUSE Leap 15 counts as a single major release of an LTS distribution,
lcitool has changed the target name to remove the minor version. Adjust the
mappings and refresh script.
This also updates the dockerfile to 15.4, since the 15.3 version is EOL now:
https://get.opensuse.org/leap/15.3
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <a408b7f241ac59e5944db6ae2360a792305c36e0.1681735482.git.pkrempa@redhat.com>
[Adjust for target name change and reword commit message. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/docker/dockerfiles/opensuse-leap.docker | 4 +--
tests/lcitool/libvirt-ci | 2 +-
tests/lcitool/mappings.yml | 36 +++++++++----------
tests/lcitool/refresh | 2 +-
...suse-leap-153.yml => opensuse-leap-15.yml} | 0
5 files changed, 22 insertions(+), 22 deletions(-)
rename tests/lcitool/targets/{opensuse-leap-153.yml => opensuse-leap-15.yml} (100%)
diff --git a/tests/docker/dockerfiles/opensuse-leap.docker b/tests/docker/dockerfiles/opensuse-leap.docker
index 28f153b77b56..afb9f5419f5c 100644
--- a/tests/docker/dockerfiles/opensuse-leap.docker
+++ b/tests/docker/dockerfiles/opensuse-leap.docker
@@ -1,10 +1,10 @@
# THIS FILE WAS AUTO-GENERATED
#
-# $ lcitool dockerfile --layers all opensuse-leap-153 qemu
+# $ lcitool dockerfile --layers all opensuse-leap-15 qemu
#
# https://gitlab.com/libvirt/libvirt-ci
-FROM registry.opensuse.org/opensuse/leap:15.3
+FROM registry.opensuse.org/opensuse/leap:15.4
RUN zypper update -y && \
zypper install -y \
diff --git a/tests/lcitool/libvirt-ci b/tests/lcitool/libvirt-ci
index 2fa24dce8bc2..85487e140415 160000
--- a/tests/lcitool/libvirt-ci
+++ b/tests/lcitool/libvirt-ci
@@ -1 +1 @@
-Subproject commit 2fa24dce8bc2d0d57b02b111dbdbd24e25d4ae95
+Subproject commit 85487e140415b2ac54b01a9a6b600fd7c21edc2f
diff --git a/tests/lcitool/mappings.yml b/tests/lcitool/mappings.yml
index e4719e45516c..454963f07b86 100644
--- a/tests/lcitool/mappings.yml
+++ b/tests/lcitool/mappings.yml
@@ -1,71 +1,71 @@
mappings:
flake8:
CentOSStream8:
- OpenSUSELeap153:
+ OpenSUSELeap15:
meson:
CentOSStream8:
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3:
CentOSStream8: python38
- OpenSUSELeap153: python39-base
+ OpenSUSELeap15: python39-base
python3-PyYAML:
CentOSStream8: python38-PyYAML
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3-devel:
CentOSStream8: python38-devel
- OpenSUSELeap153: python39-devel
+ OpenSUSELeap15: python39-devel
python3-docutils:
CentOSStream8:
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3-numpy:
CentOSStream8: python38-numpy
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3-opencv:
CentOSStream8:
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3-pillow:
CentOSStream8:
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3-pip:
CentOSStream8: python38-pip
- OpenSUSELeap153: python39-pip
+ OpenSUSELeap15: python39-pip
python3-pillow:
CentOSStream8:
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3-selinux:
CentOSStream8:
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3-setuptools:
CentOSStream8: python38-setuptools
- OpenSUSELeap153: python39-setuptools
+ OpenSUSELeap15: python39-setuptools
python3-sphinx:
CentOSStream8:
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3-sphinx-rtd-theme:
CentOSStream8:
- OpenSUSELeap153:
+ OpenSUSELeap15:
python3-venv:
CentOSStream8: python38
- OpenSUSELeap153: python39-base
+ OpenSUSELeap15: python39-base
python3-wheel:
CentOSStream8: python38-wheel
- OpenSUSELeap153: python39-pip
+ OpenSUSELeap15: python39-pip
pypi_mappings:
# Request more recent version
@@ -74,4 +74,4 @@ pypi_mappings:
# Drop packages that need devel headers
python3-numpy:
- OpenSUSELeap153:
+ OpenSUSELeap15:
diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh
index c0d7ad551649..33ef1282dac4 100755
--- a/tests/lcitool/refresh
+++ b/tests/lcitool/refresh
@@ -120,7 +120,7 @@ try:
generate_dockerfile("debian-amd64", "debian-11",
trailer="".join(debian11_extras))
generate_dockerfile("fedora", "fedora-37")
- generate_dockerfile("opensuse-leap", "opensuse-leap-153")
+ generate_dockerfile("opensuse-leap", "opensuse-leap-15")
generate_dockerfile("ubuntu2004", "ubuntu-2004")
generate_dockerfile("ubuntu2204", "ubuntu-2204")
diff --git a/tests/lcitool/targets/opensuse-leap-153.yml b/tests/lcitool/targets/opensuse-leap-15.yml
similarity index 100%
rename from tests/lcitool/targets/opensuse-leap-153.yml
rename to tests/lcitool/targets/opensuse-leap-15.yml
--
2.40.0
^ permalink raw reply related [flat|nested] 27+ messages in thread* Re: [PULL 00/25] First batch of misc patches for QEMU 8.1
2023-04-21 9:32 [PULL 00/25] First batch of misc patches for QEMU 8.1 Paolo Bonzini
` (24 preceding siblings ...)
2023-04-21 9:33 ` [PULL 25/25] tests: lcitool: Switch to OpenSUSE Leap 15.4 Paolo Bonzini
@ 2023-04-22 7:31 ` Richard Henderson
25 siblings, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2023-04-22 7:31 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 4/21/23 10:32, Paolo Bonzini wrote:
> The following changes since commit 2d82c32b2ceaca3dc3da5e36e10976f34bfcb598:
>
> Open 8.1 development tree (2023-04-20 10:05:25 +0100)
>
> are available in the Git repository at:
>
> https://gitlab.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to 5f9efbbcf6fc77e583254389124437d981ad76b9:
>
> tests: lcitool: Switch to OpenSUSE Leap 15.4 (2023-04-20 11:17:36 +0200)
>
> ----------------------------------------------------------------
> * Optional use of Meson wrap for slirp
> * Coverity fixes
> * Avoid -Werror=maybe-uninitialized
> * Mark coroutine QMP command functions as coroutine_fn
> * Mark functions that suspend as coroutine_mixed_fn
> * target/i386: Fix SGX CPUID leaf
> * First batch of qatomic_mb_read() removal
> * Small atomic.rst improvement
> * NBD cleanup
> * Update libvirt-ci submodule
Applied, thanks. Please update https://wiki.qemu.org/ChangeLog/8.1 as appropriate.
r~
^ permalink raw reply [flat|nested] 27+ messages in thread