Skip to content

Commit e33d61c

Browse files
committed
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
Bugfixes, and reworking of the atomics documentation. # gpg: Signature made Mon 13 Apr 2020 07:56:22 BST # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "[email protected]" # gpg: Good signature from "Paolo Bonzini <[email protected]>" [full] # gpg: aka "Paolo Bonzini <[email protected]>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * remotes/bonzini/tags/for-upstream: module: increase dirs array size by one memory: Do not allow direct write access to rom_device regions vl.c: error out if -mem-path is used together with -M memory-backend rcu: do not mention atomic_mb_read/set in documentation atomics: update documentation atomics: convert to reStructuredText oslib-posix: take lock before qemu_cond_broadcast piix: fix xenfv regression, add compat machine xenfv-4.2 Signed-off-by: Peter Maydell <[email protected]>
2 parents 792cb70 + 267514b commit e33d61c

File tree

12 files changed

+547
-447
lines changed

12 files changed

+547
-447
lines changed

docs/devel/atomics.rst

Lines changed: 507 additions & 0 deletions
Large diffs are not rendered by default.

docs/devel/atomics.txt

Lines changed: 0 additions & 403 deletions
This file was deleted.

docs/devel/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Contents:
1717
loads-stores
1818
memory
1919
migration
20+
atomics
2021
stable-process
2122
testing
2223
decodetree

docs/devel/rcu.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ The core RCU API is small:
132132

133133
typeof(*p) atomic_rcu_read(p);
134134

135-
atomic_rcu_read() is similar to atomic_mb_read(), but it makes
135+
atomic_rcu_read() is similar to atomic_load_acquire(), but it makes
136136
some assumptions on the code that calls it. This allows a more
137137
optimized implementation.
138138

@@ -154,7 +154,7 @@ The core RCU API is small:
154154

155155
void atomic_rcu_set(p, typeof(*p) v);
156156

157-
atomic_rcu_set() is also similar to atomic_mb_set(), and it also
157+
atomic_rcu_set() is similar to atomic_store_release(), though it also
158158
makes assumptions on the code that calls it in order to allow a more
159159
optimized implementation.
160160

hw/i386/pc_piix.c

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -948,13 +948,26 @@ DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa,
948948

949949

950950
#ifdef CONFIG_XEN
951-
static void xenfv_machine_options(MachineClass *m)
951+
static void xenfv_4_2_machine_options(MachineClass *m)
952952
{
953+
pc_i440fx_4_2_machine_options(m);
954+
m->desc = "Xen Fully-virtualized PC";
955+
m->max_cpus = HVM_MAX_VCPUS;
956+
m->default_machine_opts = "accel=xen";
957+
}
958+
959+
DEFINE_PC_MACHINE(xenfv_4_2, "xenfv-4.2", pc_xen_hvm_init,
960+
xenfv_4_2_machine_options);
961+
962+
static void xenfv_3_1_machine_options(MachineClass *m)
963+
{
964+
pc_i440fx_3_1_machine_options(m);
953965
m->desc = "Xen Fully-virtualized PC";
966+
m->alias = "xenfv";
954967
m->max_cpus = HVM_MAX_VCPUS;
955968
m->default_machine_opts = "accel=xen";
956969
}
957970

958-
DEFINE_PC_MACHINE(xenfv, "xenfv", pc_xen_hvm_init,
959-
xenfv_machine_options);
971+
DEFINE_PC_MACHINE(xenfv, "xenfv-3.1", pc_xen_hvm_init,
972+
xenfv_3_1_machine_options);
960973
#endif

include/exec/memory.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2351,8 +2351,8 @@ void address_space_write_cached_slow(MemoryRegionCache *cache,
23512351
static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write)
23522352
{
23532353
if (is_write) {
2354-
return memory_region_is_ram(mr) &&
2355-
!mr->readonly && !memory_region_is_ram_device(mr);
2354+
return memory_region_is_ram(mr) && !mr->readonly &&
2355+
!mr->rom_device && !memory_region_is_ram_device(mr);
23562356
} else {
23572357
return (memory_region_is_ram(mr) && !memory_region_is_ram_device(mr)) ||
23582358
memory_region_is_romd(mr);

softmmu/vl.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4315,6 +4315,11 @@ void qemu_init(int argc, char **argv, char **envp)
43154315
"explicitly specified 'memory-backend' property");
43164316
exit(EXIT_FAILURE);
43174317
}
4318+
if (mem_path) {
4319+
error_report("'-mem-path' can't be used together with"
4320+
"'-machine memory-backend'");
4321+
exit(EXIT_FAILURE);
4322+
}
43184323
ram_size = backend_size;
43194324
}
43204325

tests/qtest/device-introspect-test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ static void add_machine_test_case(const char *mname)
288288
char *path, *args;
289289

290290
/* Ignore blacklisted machines */
291-
if (g_str_equal("xenfv", mname) || g_str_equal("xenpv", mname)) {
291+
if (!memcmp("xenfv", mname, 5) || g_str_equal("xenpv", mname)) {
292292
return;
293293
}
294294

tests/qtest/qom-test.c

Lines changed: 8 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -15,35 +15,6 @@
1515
#include "qemu/cutils.h"
1616
#include "libqtest.h"
1717

18-
static const char *blacklist_x86[] = {
19-
"xenfv", "xenpv", NULL
20-
};
21-
22-
static const struct {
23-
const char *arch;
24-
const char **machine;
25-
} blacklists[] = {
26-
{ "i386", blacklist_x86 },
27-
{ "x86_64", blacklist_x86 },
28-
};
29-
30-
static bool is_blacklisted(const char *arch, const char *mach)
31-
{
32-
int i;
33-
const char **p;
34-
35-
for (i = 0; i < ARRAY_SIZE(blacklists); i++) {
36-
if (!strcmp(blacklists[i].arch, arch)) {
37-
for (p = blacklists[i].machine; *p; p++) {
38-
if (!strcmp(*p, mach)) {
39-
return true;
40-
}
41-
}
42-
}
43-
}
44-
return false;
45-
}
46-
4718
static void test_properties(QTestState *qts, const char *path, bool recurse)
4819
{
4920
char *child_path;
@@ -108,13 +79,16 @@ static void test_machine(gconstpointer data)
10879

10980
static void add_machine_test_case(const char *mname)
11081
{
111-
const char *arch = qtest_get_arch();
82+
char *path;
11283

113-
if (!is_blacklisted(arch, mname)) {
114-
char *path = g_strdup_printf("qom/%s", mname);
115-
qtest_add_data_func(path, g_strdup(mname), test_machine);
116-
g_free(path);
84+
/* Ignore blacklisted machines that have known problems */
85+
if (!memcmp("xenfv", mname, 5) || g_str_equal("xenpv", mname)) {
86+
return;
11787
}
88+
89+
path = g_strdup_printf("qom/%s", mname);
90+
qtest_add_data_func(path, g_strdup(mname), test_machine);
91+
g_free(path);
11892
}
11993

12094
int main(int argc, char **argv)

tests/qtest/test-hmp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ static void add_machine_test_case(const char *mname)
143143
char *path;
144144

145145
/* Ignore blacklisted machines that have known problems */
146-
if (!strcmp("xenfv", mname) || !strcmp("xenpv", mname)) {
146+
if (!memcmp("xenfv", mname, 5) || g_str_equal("xenpv", mname)) {
147147
return;
148148
}
149149

0 commit comments

Comments
 (0)