mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
* target/i386: improved EPYC models
* more removal of mb_read/mb_set * bump _WIN32_WINNT to the Windows 8 API * fix for modular builds with --disable-system -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmRZK7wUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroObngf8D6A5l1QQAnImRrZAny6HZV/9xseD 9QhkUW3fxXlUhb8tXomv2BlT8h9GzLIN6aWvcCotT+xK3kAX7mRcYKgPMr9CYL7y vev/hh+B6RY1CJ/xPT09/BMVjkj50AL0O/OuWMhcQ5nCO7F2sdMjMrsYqqeZcjYf zx9RTX7gVGt+wWFHxgCgdfL0kfgzexK55YuZU0vLzcA+pYsZWoEfW+fKBIf4rzDV r9M6mDBUkHBQ0rIVC3QFloAXnYb1JrpeqqL2i2qwhAkLz8LyGqk3lZF20hE/04im XZcZjWO5pxAxIEPeTken+2x1n8tn2BLkMtvwJdV5TpvICCFRtPZlbH79qw== =rXLN -----END PGP SIGNATURE----- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * target/i386: improved EPYC models * more removal of mb_read/mb_set * bump _WIN32_WINNT to the Windows 8 API * fix for modular builds with --disable-system # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmRZK7wUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroObngf8D6A5l1QQAnImRrZAny6HZV/9xseD # 9QhkUW3fxXlUhb8tXomv2BlT8h9GzLIN6aWvcCotT+xK3kAX7mRcYKgPMr9CYL7y # vev/hh+B6RY1CJ/xPT09/BMVjkj50AL0O/OuWMhcQ5nCO7F2sdMjMrsYqqeZcjYf # zx9RTX7gVGt+wWFHxgCgdfL0kfgzexK55YuZU0vLzcA+pYsZWoEfW+fKBIf4rzDV # r9M6mDBUkHBQ0rIVC3QFloAXnYb1JrpeqqL2i2qwhAkLz8LyGqk3lZF20hE/04im # XZcZjWO5pxAxIEPeTken+2x1n8tn2BLkMtvwJdV5TpvICCFRtPZlbH79qw== # =rXLN # -----END PGP SIGNATURE----- # gpg: Signature made Mon 08 May 2023 06:05:00 PM BST # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [undefined] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: meson: leave unnecessary modules out of the build docs: clarify --without-default-devices target/i386: Add EPYC-Genoa model to support Zen 4 processor series target/i386: Add VNMI and automatic IBRS feature bits target/i386: Add missing feature bits in EPYC-Milan model target/i386: Add feature bits for CPUID_Fn80000021_EAX target/i386: Add a couple of feature bits in 8000_0008_EBX target/i386: Add new EPYC CPU versions with updated cache_info target/i386: allow versioned CPUs to specify new cache_info include/qemu/osdep.h: Bump _WIN32_WINNT to the Windows 8 API MAINTAINERS: add stanza for Kconfig files tb-maint: do not use mb_read/mb_set call_rcu: stop using mb_set/mb_read test-aio-multithread: simplify test_multi_co_schedule test-aio-multithread: do not use mb_read/mb_set for simple flags rcu: remove qatomic_mb_set, expand comments Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
577e648bdb
10 changed files with 479 additions and 51 deletions
|
@ -107,8 +107,7 @@ static void test_lifecycle(void)
|
|||
/* aio_co_schedule test. */
|
||||
|
||||
static Coroutine *to_schedule[NUM_CONTEXTS];
|
||||
|
||||
static bool now_stopping;
|
||||
static bool stop[NUM_CONTEXTS];
|
||||
|
||||
static int count_retry;
|
||||
static int count_here;
|
||||
|
@ -136,6 +135,7 @@ static bool schedule_next(int n)
|
|||
|
||||
static void finish_cb(void *opaque)
|
||||
{
|
||||
stop[id] = true;
|
||||
schedule_next(id);
|
||||
}
|
||||
|
||||
|
@ -143,13 +143,19 @@ static coroutine_fn void test_multi_co_schedule_entry(void *opaque)
|
|||
{
|
||||
g_assert(to_schedule[id] == NULL);
|
||||
|
||||
while (!qatomic_mb_read(&now_stopping)) {
|
||||
/*
|
||||
* The next iteration will set to_schedule[id] again, but once finish_cb
|
||||
* is scheduled there is no guarantee that it will actually be woken up,
|
||||
* so at that point it must not go to sleep.
|
||||
*/
|
||||
while (!stop[id]) {
|
||||
int n;
|
||||
|
||||
n = g_test_rand_int_range(0, NUM_CONTEXTS);
|
||||
schedule_next(n);
|
||||
|
||||
qatomic_mb_set(&to_schedule[id], qemu_coroutine_self());
|
||||
/* finish_cb can run here. */
|
||||
qemu_coroutine_yield();
|
||||
g_assert(to_schedule[id] == NULL);
|
||||
}
|
||||
|
@ -161,7 +167,6 @@ static void test_multi_co_schedule(int seconds)
|
|||
int i;
|
||||
|
||||
count_here = count_other = count_retry = 0;
|
||||
now_stopping = false;
|
||||
|
||||
create_aio_contexts();
|
||||
for (i = 0; i < NUM_CONTEXTS; i++) {
|
||||
|
@ -171,10 +176,10 @@ static void test_multi_co_schedule(int seconds)
|
|||
|
||||
g_usleep(seconds * 1000000);
|
||||
|
||||
qatomic_mb_set(&now_stopping, true);
|
||||
/* Guarantee that each AioContext is woken up from its last wait. */
|
||||
for (i = 0; i < NUM_CONTEXTS; i++) {
|
||||
ctx_run(i, finish_cb, NULL);
|
||||
to_schedule[i] = NULL;
|
||||
g_assert(to_schedule[i] == NULL);
|
||||
}
|
||||
|
||||
join_aio_contexts();
|
||||
|
@ -199,10 +204,11 @@ static uint32_t atomic_counter;
|
|||
static uint32_t running;
|
||||
static uint32_t counter;
|
||||
static CoMutex comutex;
|
||||
static bool now_stopping;
|
||||
|
||||
static void coroutine_fn test_multi_co_mutex_entry(void *opaque)
|
||||
{
|
||||
while (!qatomic_mb_read(&now_stopping)) {
|
||||
while (!qatomic_read(&now_stopping)) {
|
||||
qemu_co_mutex_lock(&comutex);
|
||||
counter++;
|
||||
qemu_co_mutex_unlock(&comutex);
|
||||
|
@ -236,7 +242,7 @@ static void test_multi_co_mutex(int threads, int seconds)
|
|||
|
||||
g_usleep(seconds * 1000000);
|
||||
|
||||
qatomic_mb_set(&now_stopping, true);
|
||||
qatomic_set(&now_stopping, true);
|
||||
while (running > 0) {
|
||||
g_usleep(100000);
|
||||
}
|
||||
|
@ -327,7 +333,7 @@ static void mcs_mutex_unlock(void)
|
|||
|
||||
static void test_multi_fair_mutex_entry(void *opaque)
|
||||
{
|
||||
while (!qatomic_mb_read(&now_stopping)) {
|
||||
while (!qatomic_read(&now_stopping)) {
|
||||
mcs_mutex_lock();
|
||||
counter++;
|
||||
mcs_mutex_unlock();
|
||||
|
@ -355,7 +361,7 @@ static void test_multi_fair_mutex(int threads, int seconds)
|
|||
|
||||
g_usleep(seconds * 1000000);
|
||||
|
||||
qatomic_mb_set(&now_stopping, true);
|
||||
qatomic_set(&now_stopping, true);
|
||||
while (running > 0) {
|
||||
g_usleep(100000);
|
||||
}
|
||||
|
@ -383,7 +389,7 @@ static QemuMutex mutex;
|
|||
|
||||
static void test_multi_mutex_entry(void *opaque)
|
||||
{
|
||||
while (!qatomic_mb_read(&now_stopping)) {
|
||||
while (!qatomic_read(&now_stopping)) {
|
||||
qemu_mutex_lock(&mutex);
|
||||
counter++;
|
||||
qemu_mutex_unlock(&mutex);
|
||||
|
@ -411,7 +417,7 @@ static void test_multi_mutex(int threads, int seconds)
|
|||
|
||||
g_usleep(seconds * 1000000);
|
||||
|
||||
qatomic_mb_set(&now_stopping, true);
|
||||
qatomic_set(&now_stopping, true);
|
||||
while (running > 0) {
|
||||
g_usleep(100000);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue