mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
* NetBSD NVMM support
* RateLimit mutex * Prepare for Meson 0.57 upgrade -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmCROukUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroOFXgf/ThwuBCbwC6pwoHpZzFXHdJRXIqHa iKTqjCLymz9NQBRTaMeG5CWjXl4o9syHLzEXLQxuQaynHK8AjbyeMSllBVLzBUme TU9AY3qwLShRJm3XGXkuUilFE+IR8FXWFgrTOsZXgbT+JQlkCgiuhCRqfAcDEgi/ F5SNqlMzPNvF6G0FY9DFBBkoKF4YWROx25SgNl3fxgWwC94px/a22BXTVpOxaClZ HE/H+kbJH5sD2dOJR5cqbgFg7eBemNdxO3tSbR6WoP9pcvVPx0Dgh5hUJb5+pUXY fV5O5zZ+CdyNjWM4yAHg0y8kOlnqrLwv7pH+NdqWFaWiZ9uCSrVFR13ejQ== =sKO4 -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/bonzini-gitlab/tags/for-upstream' into staging * NetBSD NVMM support * RateLimit mutex * Prepare for Meson 0.57 upgrade # gpg: Signature made Tue 04 May 2021 13:15:37 BST # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * remotes/bonzini-gitlab/tags/for-upstream: glib-compat: accept G_TEST_SLOW environment variable gitlab-ci: use --meson=internal for CFI jobs configure: handle meson options that have changed type configure: reindent meson invocation slirp: add configure option to disable smbd ratelimit: protect with a mutex Add NVMM Accelerator: add maintainers for NetBSD/NVMM Add NVMM accelerator: acceleration enlightenments Add NVMM accelerator: x86 CPU support Add NVMM accelerator: configure and build logic oslib-win32: do not rely on macro to get redefined function name Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
4cc10cae64
21 changed files with 1561 additions and 59 deletions
|
@ -100,6 +100,23 @@ g_unix_get_passwd_entry_qemu(const gchar *user_name, GError **error)
|
|||
}
|
||||
#endif /* G_OS_UNIX */
|
||||
|
||||
static inline bool
|
||||
qemu_g_test_slow(void)
|
||||
{
|
||||
static int cached = -1;
|
||||
if (cached == -1) {
|
||||
cached = g_test_slow() || getenv("G_TEST_SLOW") != NULL;
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
#undef g_test_slow
|
||||
#undef g_test_thorough
|
||||
#undef g_test_quick
|
||||
#define g_test_slow() qemu_g_test_slow()
|
||||
#define g_test_thorough() qemu_g_test_slow()
|
||||
#define g_test_quick() (!qemu_g_test_slow())
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,9 +14,11 @@
|
|||
#ifndef QEMU_RATELIMIT_H
|
||||
#define QEMU_RATELIMIT_H
|
||||
|
||||
#include "qemu/lockable.h"
|
||||
#include "qemu/timer.h"
|
||||
|
||||
typedef struct {
|
||||
QemuMutex lock;
|
||||
int64_t slice_start_time;
|
||||
int64_t slice_end_time;
|
||||
uint64_t slice_quota;
|
||||
|
@ -40,6 +42,7 @@ static inline int64_t ratelimit_calculate_delay(RateLimit *limit, uint64_t n)
|
|||
int64_t now = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
|
||||
double delay_slices;
|
||||
|
||||
QEMU_LOCK_GUARD(&limit->lock);
|
||||
assert(limit->slice_quota && limit->slice_ns);
|
||||
|
||||
if (limit->slice_end_time < now) {
|
||||
|
@ -65,9 +68,20 @@ static inline int64_t ratelimit_calculate_delay(RateLimit *limit, uint64_t n)
|
|||
return limit->slice_end_time - now;
|
||||
}
|
||||
|
||||
static inline void ratelimit_init(RateLimit *limit)
|
||||
{
|
||||
qemu_mutex_init(&limit->lock);
|
||||
}
|
||||
|
||||
static inline void ratelimit_destroy(RateLimit *limit)
|
||||
{
|
||||
qemu_mutex_destroy(&limit->lock);
|
||||
}
|
||||
|
||||
static inline void ratelimit_set_speed(RateLimit *limit, uint64_t speed,
|
||||
uint64_t slice_ns)
|
||||
{
|
||||
QEMU_LOCK_GUARD(&limit->lock);
|
||||
limit->slice_ns = slice_ns;
|
||||
limit->slice_quota = MAX(((double)speed * slice_ns) / 1000000000ULL, 1);
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "sysemu/kvm.h"
|
||||
#include "sysemu/hvf.h"
|
||||
#include "sysemu/whpx.h"
|
||||
#include "sysemu/nvmm.h"
|
||||
|
||||
void cpu_synchronize_state(CPUState *cpu);
|
||||
void cpu_synchronize_post_reset(CPUState *cpu);
|
||||
|
|
26
include/sysemu/nvmm.h
Normal file
26
include/sysemu/nvmm.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright (c) 2018-2019 Maxime Villard, All rights reserved.
|
||||
*
|
||||
* NetBSD Virtual Machine Monitor (NVMM) accelerator support.
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#ifndef QEMU_NVMM_H
|
||||
#define QEMU_NVMM_H
|
||||
|
||||
#include "config-host.h"
|
||||
#include "qemu-common.h"
|
||||
|
||||
#ifdef CONFIG_NVMM
|
||||
|
||||
int nvmm_enabled(void);
|
||||
|
||||
#else /* CONFIG_NVMM */
|
||||
|
||||
#define nvmm_enabled() (0)
|
||||
|
||||
#endif /* CONFIG_NVMM */
|
||||
|
||||
#endif /* CONFIG_NVMM */
|
Loading…
Add table
Add a link
Reference in a new issue