mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
* QemuMutex tracing improvements (Alex)
* ram_addr_t optimization (David) * SCSI fixes (Fam, Stefan, me) * do {} while (0) fixes (Eric) * KVM fix for PMU (Jan) * memory leak fixes from ASAN (Marc-André) * migration fix for HPET, icount, loadvm (Maria, Pavel) * hflags fixes (me, Tao) * block/iscsi uninitialized variable (Peter L.) * full support for GMainContexts in character devices (Peter Xu) * more boot-serial-test (Thomas) * Memory leak fix (Zhecheng) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQEcBAABAgAGBQJaXgkRAAoJEL/70l94x66DA3EIAI8z8Y+1NAmbLqiHhrrN9Ji/ b8EHQ8wf0pwwrHuRVKYZvKUU8yvp/CRIoVWZwfeGjRbZC+l7l+BAwdOx42Bj/dUW VopNzcJMu3s5SNwoYLvs01OjhciBYNXWTXBkIiErwurF0Ow7oYR7trkLwOw0veSO L4qFAGoIBI/7b6BZ3YRQXshhzdSQ6dvHrDness2V1c0crLG+yhvjKJ8PJ2tJyNZO DbsrCd7hS6e6liSUqdLj9XgRySFj9R5kgjaLjckjg1SC6kmhLN9hyke8iXgH7uvz WGnRPmKjKexFHVYgR0rRFlazcQclAczHuIi/OZe0HLi6trg2YKBkolMaQLQdgfk= =HTyS -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging * QemuMutex tracing improvements (Alex) * ram_addr_t optimization (David) * SCSI fixes (Fam, Stefan, me) * do {} while (0) fixes (Eric) * KVM fix for PMU (Jan) * memory leak fixes from ASAN (Marc-André) * migration fix for HPET, icount, loadvm (Maria, Pavel) * hflags fixes (me, Tao) * block/iscsi uninitialized variable (Peter L.) * full support for GMainContexts in character devices (Peter Xu) * more boot-serial-test (Thomas) * Memory leak fix (Zhecheng) # gpg: Signature made Tue 16 Jan 2018 14:15:45 GMT # gpg: using RSA key 0xBFFBD25F78C7AE83 # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" # 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: (51 commits) scripts/analyse-locks-simpletrace.py: script to analyse lock times util/qemu-thread-*: add qemu_lock, locked and unlock trace events cpu: flush TB cache when loading VMState block/iscsi: fix initialization of iTask in iscsi_co_get_block_status find_ram_offset: Align ram_addr_t allocation on long boundaries find_ram_offset: Add comments and tracing cpu_physical_memory_sync_dirty_bitmap: Another alignment fix checkpatch: Enforce proper do/while (0) style maint: Fix macros with broken 'do/while(0); ' usage tests: Avoid 'do/while(false); ' in vhost-user-bridge chardev: Clean up previous patch indentation chardev: Use goto/label instead of do/break/while(0) mips: Tweak location of ';' in macros net: Drop unusual use of do { } while (0); irq: fix memory leak cpus: unify qemu_*_wait_io_event icount: fixed saving/restoring of icount warp timers scripts/qemu-gdb/timers.py: new helper to dump timer state scripts/qemu-gdb: add simple tcg lock status helper target-i386: update hflags on Hypervisor.framework ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
c1d5b9add7
90 changed files with 900 additions and 415 deletions
|
@ -256,6 +256,9 @@ Chardev *qemu_chardev_new(const char *id, const char *typename,
|
|||
|
||||
extern int term_escape_char;
|
||||
|
||||
GSource *qemu_chr_timeout_add_ms(Chardev *chr, guint ms,
|
||||
GSourceFunc func, void *private);
|
||||
|
||||
/* console.c */
|
||||
void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend, Error **errp);
|
||||
|
||||
|
|
|
@ -391,9 +391,10 @@ uint64_t cpu_physical_memory_sync_dirty_bitmap(RAMBlock *rb,
|
|||
uint64_t num_dirty = 0;
|
||||
unsigned long *dest = rb->bmap;
|
||||
|
||||
/* start address is aligned at the start of a word? */
|
||||
/* start address and length is aligned at the start of a word? */
|
||||
if (((word * BITS_PER_LONG) << TARGET_PAGE_BITS) ==
|
||||
(start + rb->offset)) {
|
||||
(start + rb->offset) &&
|
||||
!(length & ((BITS_PER_LONG << TARGET_PAGE_BITS) - 1))) {
|
||||
int k;
|
||||
int nr = BITS_TO_LONGS(length >> TARGET_PAGE_BITS);
|
||||
unsigned long * const *src;
|
||||
|
|
|
@ -2,7 +2,11 @@
|
|||
#define HW_COMPAT_H
|
||||
|
||||
#define HW_COMPAT_2_11 \
|
||||
/* empty */
|
||||
{\
|
||||
.driver = "hpet",\
|
||||
.property = "hpet-offset-saved",\
|
||||
.value = "false",\
|
||||
},
|
||||
|
||||
#define HW_COMPAT_2_10 \
|
||||
{\
|
||||
|
|
|
@ -59,5 +59,6 @@ ReadLineState *readline_init(ReadLinePrintfFunc *printf_func,
|
|||
ReadLineFlushFunc *flush_func,
|
||||
void *opaque,
|
||||
ReadLineCompletionFunc *completion_finder);
|
||||
void readline_free(ReadLineState *rs);
|
||||
|
||||
#endif /* READLINE_H */
|
||||
|
|
|
@ -22,9 +22,31 @@ typedef struct QemuThread QemuThread;
|
|||
|
||||
void qemu_mutex_init(QemuMutex *mutex);
|
||||
void qemu_mutex_destroy(QemuMutex *mutex);
|
||||
void qemu_mutex_lock(QemuMutex *mutex);
|
||||
int qemu_mutex_trylock(QemuMutex *mutex);
|
||||
void qemu_mutex_unlock(QemuMutex *mutex);
|
||||
int qemu_mutex_trylock_impl(QemuMutex *mutex, const char *file, const int line);
|
||||
void qemu_mutex_lock_impl(QemuMutex *mutex, const char *file, const int line);
|
||||
void qemu_mutex_unlock_impl(QemuMutex *mutex, const char *file, const int line);
|
||||
|
||||
#define qemu_mutex_lock(mutex) \
|
||||
qemu_mutex_lock_impl(mutex, __FILE__, __LINE__)
|
||||
#define qemu_mutex_trylock(mutex) \
|
||||
qemu_mutex_trylock_impl(mutex, __FILE__, __LINE__)
|
||||
#define qemu_mutex_unlock(mutex) \
|
||||
qemu_mutex_unlock_impl(mutex, __FILE__, __LINE__)
|
||||
|
||||
static inline void (qemu_mutex_lock)(QemuMutex *mutex)
|
||||
{
|
||||
qemu_mutex_lock(mutex);
|
||||
}
|
||||
|
||||
static inline int (qemu_mutex_trylock)(QemuMutex *mutex)
|
||||
{
|
||||
return qemu_mutex_trylock(mutex);
|
||||
}
|
||||
|
||||
static inline void (qemu_mutex_unlock)(QemuMutex *mutex)
|
||||
{
|
||||
qemu_mutex_unlock(mutex);
|
||||
}
|
||||
|
||||
/* Prototypes for other functions are in thread-posix.h/thread-win32.h. */
|
||||
void qemu_rec_mutex_init(QemuRecMutex *mutex);
|
||||
|
@ -39,7 +61,16 @@ void qemu_cond_destroy(QemuCond *cond);
|
|||
*/
|
||||
void qemu_cond_signal(QemuCond *cond);
|
||||
void qemu_cond_broadcast(QemuCond *cond);
|
||||
void qemu_cond_wait(QemuCond *cond, QemuMutex *mutex);
|
||||
void qemu_cond_wait_impl(QemuCond *cond, QemuMutex *mutex,
|
||||
const char *file, const int line);
|
||||
|
||||
#define qemu_cond_wait(cond, mutex) \
|
||||
qemu_cond_wait_impl(cond, mutex, __FILE__, __LINE__)
|
||||
|
||||
static inline void (qemu_cond_wait)(QemuCond *cond, QemuMutex *mutex)
|
||||
{
|
||||
qemu_cond_wait(cond, mutex);
|
||||
}
|
||||
|
||||
void qemu_sem_init(QemuSemaphore *sem, int init);
|
||||
void qemu_sem_post(QemuSemaphore *sem);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue