- Many fixes from the floor as usual
- New "edu" device (v1->v2: fix 32-bit compilation) - Disabling HLE and RTM on Haswell & Broadwell - kvm_stat updates - Added --enable-modules to Travis, in preparation for switching the default -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQEcBAABAgAGBQJUxiioAAoJEL/70l94x66D+zQIAKVq9DPm4RNJ2/c2nt6phAVr 6Z5yB+TMf4BKFORwVkionvIOEqOC0pdm3oo93/XH7DTsN7pFg7rdwJl+ADESgvl6 +tpUbrgjZuCuNQNXy/mjx0EJQUmTk8/x+a054hSo6XNvs2ZM9HjaKNX3ojS6pG1J mhIH4cjGPMCwu2hgm2mho/1zdIs4Qk3xT8Uzfq8i5gES14YX0Fmt93idUn3DRs7m zHdzHWr0JmXfZweNDdPgsfGO6g+NnwgGUOqeGY4Ucmurkepk9ViCaaJP7lOnuRhT 52isayOrfrZsSLm5xxwtSUjmgbxzlOEit1b8jLzpHb5b9b+LJiCtuJnN7vwHb34= =jgup -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging - Many fixes from the floor as usual - New "edu" device (v1->v2: fix 32-bit compilation) - Disabling HLE and RTM on Haswell & Broadwell - kvm_stat updates - Added --enable-modules to Travis, in preparation for switching the default # gpg: Signature made Mon 26 Jan 2015 11:44:40 GMT using RSA key ID 78C7AE83 # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain 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 * remotes/bonzini/tags/for-upstream: kvm_stat: Add RESET support for perf event ioctl target-i386: Disable HLE and RTM on Haswell & Broadwell sparse: Fix build with sparse on .S files exec: fix madvise of NULL pointer .travis.yml: Add "--enable-modules" apic: do not dereference pointer before it is checked for NULL kvm_stat: Print errno when syscall to perf_event_open() fails kvm_stat: Update exit reasons to the latest defintion kvm_stat: Add aarch64 support hw: misc, add educational driver vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* qemu-timer: introduce timer_deinit qemu-timer: add timer_init and timer_init_ns/us/ms target-i386: make xmm_regs 512-bit wide target-i386: use vmstate_offset_sub_array for AVX registers tests/multiboot: Add test for modules multiboot: Fix offset of bootloader name tests/multiboot: Update reference output pc: fix KVM features in pc-1.3 and earlier machine types Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
0c28d0d07f
54 changed files with 944 additions and 192 deletions
|
|
@ -359,6 +359,16 @@ extern const VMStateInfo vmstate_info_bitmap;
|
|||
.offset = vmstate_offset_array(_s, _f, _type*, _n), \
|
||||
}
|
||||
|
||||
#define VMSTATE_STRUCT_SUB_ARRAY(_field, _state, _start, _num, _version, _vmsd, _type) { \
|
||||
.name = (stringify(_field)), \
|
||||
.version_id = (_version), \
|
||||
.num = (_num), \
|
||||
.vmsd = &(_vmsd), \
|
||||
.size = sizeof(_type), \
|
||||
.flags = VMS_STRUCT|VMS_ARRAY, \
|
||||
.offset = vmstate_offset_sub_array(_state, _field, _type, _start), \
|
||||
}
|
||||
|
||||
#define VMSTATE_STRUCT_ARRAY_TEST(_field, _state, _num, _test, _version, _vmsd, _type) { \
|
||||
.name = (stringify(_field)), \
|
||||
.num = (_num), \
|
||||
|
|
@ -642,17 +652,29 @@ extern const VMStateInfo vmstate_info_bitmap;
|
|||
#define VMSTATE_FLOAT64(_f, _s) \
|
||||
VMSTATE_FLOAT64_V(_f, _s, 0)
|
||||
|
||||
#define VMSTATE_TIMER_TEST(_f, _s, _test) \
|
||||
#define VMSTATE_TIMER_PTR_TEST(_f, _s, _test) \
|
||||
VMSTATE_POINTER_TEST(_f, _s, _test, vmstate_info_timer, QEMUTimer *)
|
||||
|
||||
#define VMSTATE_TIMER_V(_f, _s, _v) \
|
||||
#define VMSTATE_TIMER_PTR_V(_f, _s, _v) \
|
||||
VMSTATE_POINTER(_f, _s, _v, vmstate_info_timer, QEMUTimer *)
|
||||
|
||||
#define VMSTATE_TIMER_PTR(_f, _s) \
|
||||
VMSTATE_TIMER_PTR_V(_f, _s, 0)
|
||||
|
||||
#define VMSTATE_TIMER_PTR_ARRAY(_f, _s, _n) \
|
||||
VMSTATE_ARRAY_OF_POINTER(_f, _s, _n, 0, vmstate_info_timer, QEMUTimer *)
|
||||
|
||||
#define VMSTATE_TIMER_TEST(_f, _s, _test) \
|
||||
VMSTATE_SINGLE_TEST(_f, _s, _test, 0, vmstate_info_timer, QEMUTimer)
|
||||
|
||||
#define VMSTATE_TIMER_V(_f, _s, _v) \
|
||||
VMSTATE_SINGLE(_f, _s, _v, vmstate_info_timer, QEMUTimer)
|
||||
|
||||
#define VMSTATE_TIMER(_f, _s) \
|
||||
VMSTATE_TIMER_V(_f, _s, 0)
|
||||
|
||||
#define VMSTATE_TIMER_ARRAY(_f, _s, _n) \
|
||||
VMSTATE_ARRAY_OF_POINTER(_f, _s, _n, 0, vmstate_info_timer, QEMUTimer *)
|
||||
VMSTATE_ARRAY(_f, _s, _n, 0, vmstate_info_timer, QEMUTimer)
|
||||
|
||||
#define VMSTATE_BOOL_ARRAY_V(_f, _s, _n, _v) \
|
||||
VMSTATE_ARRAY(_f, _s, _n, _v, vmstate_info_bool, bool)
|
||||
|
|
|
|||
|
|
@ -427,6 +427,79 @@ void timer_init_tl(QEMUTimer *ts,
|
|||
QEMUTimerList *timer_list, int scale,
|
||||
QEMUTimerCB *cb, void *opaque);
|
||||
|
||||
/**
|
||||
* timer_init:
|
||||
* @type: the clock to associate with the timer
|
||||
* @scale: the scale value for the timer
|
||||
* @cb: the callback to call when the timer expires
|
||||
* @opaque: the opaque pointer to pass to the callback
|
||||
*
|
||||
* Initialize a timer with the given scale on the default timer list
|
||||
* associated with the clock.
|
||||
*
|
||||
* You need not call an explicit deinit call. Simply make
|
||||
* sure it is not on a list with timer_del.
|
||||
*/
|
||||
static inline void timer_init(QEMUTimer *ts, QEMUClockType type, int scale,
|
||||
QEMUTimerCB *cb, void *opaque)
|
||||
{
|
||||
timer_init_tl(ts, main_loop_tlg.tl[type], scale, cb, opaque);
|
||||
}
|
||||
|
||||
/**
|
||||
* timer_init_ns:
|
||||
* @type: the clock to associate with the timer
|
||||
* @cb: the callback to call when the timer expires
|
||||
* @opaque: the opaque pointer to pass to the callback
|
||||
*
|
||||
* Initialize a timer with nanosecond scale on the default timer list
|
||||
* associated with the clock.
|
||||
*
|
||||
* You need not call an explicit deinit call. Simply make
|
||||
* sure it is not on a list with timer_del.
|
||||
*/
|
||||
static inline void timer_init_ns(QEMUTimer *ts, QEMUClockType type,
|
||||
QEMUTimerCB *cb, void *opaque)
|
||||
{
|
||||
timer_init(ts, type, SCALE_NS, cb, opaque);
|
||||
}
|
||||
|
||||
/**
|
||||
* timer_init_us:
|
||||
* @type: the clock to associate with the timer
|
||||
* @cb: the callback to call when the timer expires
|
||||
* @opaque: the opaque pointer to pass to the callback
|
||||
*
|
||||
* Initialize a timer with microsecond scale on the default timer list
|
||||
* associated with the clock.
|
||||
*
|
||||
* You need not call an explicit deinit call. Simply make
|
||||
* sure it is not on a list with timer_del.
|
||||
*/
|
||||
static inline void timer_init_us(QEMUTimer *ts, QEMUClockType type,
|
||||
QEMUTimerCB *cb, void *opaque)
|
||||
{
|
||||
timer_init(ts, type, SCALE_US, cb, opaque);
|
||||
}
|
||||
|
||||
/**
|
||||
* timer_init_ms:
|
||||
* @type: the clock to associate with the timer
|
||||
* @cb: the callback to call when the timer expires
|
||||
* @opaque: the opaque pointer to pass to the callback
|
||||
*
|
||||
* Initialize a timer with millisecond scale on the default timer list
|
||||
* associated with the clock.
|
||||
*
|
||||
* You need not call an explicit deinit call. Simply make
|
||||
* sure it is not on a list with timer_del.
|
||||
*/
|
||||
static inline void timer_init_ms(QEMUTimer *ts, QEMUClockType type,
|
||||
QEMUTimerCB *cb, void *opaque)
|
||||
{
|
||||
timer_init(ts, type, SCALE_MS, cb, opaque);
|
||||
}
|
||||
|
||||
/**
|
||||
* timer_new_tl:
|
||||
* @timer_list: the timer list to attach the timer to
|
||||
|
|
@ -521,6 +594,17 @@ static inline QEMUTimer *timer_new_ms(QEMUClockType type, QEMUTimerCB *cb,
|
|||
return timer_new(type, SCALE_MS, cb, opaque);
|
||||
}
|
||||
|
||||
/**
|
||||
* timer_deinit:
|
||||
* @ts: the timer to be de-initialised
|
||||
*
|
||||
* Deassociate the timer from any timerlist. You should
|
||||
* call timer_del before. After this call, any further
|
||||
* timer_del call cannot cause dangling pointer accesses
|
||||
* even if the previously used timerlist is freed.
|
||||
*/
|
||||
void timer_deinit(QEMUTimer *ts);
|
||||
|
||||
/**
|
||||
* timer_free:
|
||||
* @ts: the timer
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue