* [Qemu-devel] [PULL v2 00/34] Misc patches for 2016-06-01 @ 2017-06-01 16:03 Paolo Bonzini 2017-06-01 16:03 ` [Qemu-devel] [PULL 06/34] qtest: add rtc periodic timer test Paolo Bonzini 2017-06-01 16:03 ` [Qemu-devel] [PULL 34/34] cpus: reset throttle_thread_scheduled after sleep Paolo Bonzini 0 siblings, 2 replies; 4+ messages in thread From: Paolo Bonzini @ 2017-06-01 16:03 UTC (permalink / raw) To: qemu-devel The following changes since commit 56821559f0ba682fe6b367815572e6f974d329ab: Merge remote-tracking branch 'dgilbert/tags/pull-hmp-20170517' into staging (2017-05-18 13:36:15 +0100) are available in the git repository at: git://github.com/bonzini/qemu.git tags/for-upstream for you to fetch changes up to f3c3ad2dc98c6610152355f6a4de1445efc87421: cpus: reset throttle_thread_scheduled after sleep (2017-06-01 18:01:05 +0200) ---------------------------------------------------------------- * virtio-scsi use-after-free fix (Fam) * vhost-user-scsi support (Felipe) * SMM fixes and improvements for TCG (myself, Mihail) * irqchip and AddressSpaceDispatch cleanups and fixes (Peter) * Coverity fix (Stefano) * NBD cleanups and fixes (Vladimir, Eric, myself) * RTC accuracy improvements and code cleanups (Guangrong+Yunfang) * socket error reporting improvement (Daniel) * GDB XML description for SSE registers (Abdallah) * kvmclock update fix (Denis) * SMM memory savings (Gonglei) * -cpu 486 fix (Paolo) * various bugfixes (Roman, Peter, myself, Thomas) * rtc-test improvement (Guangrong) * migration throttling fix (Felipe) ---------------------------------------------------------------- Fixed patchew build failure, added another patch. Abdallah Bouassida (1): target/i386: Add GDB XML description for SSE registers Daniel P. Berrange (1): sockets: improve error reporting if UNIX socket path is too long Denis Plotnikov (1): kvmclock: update system_time_msr address forcibly Eric Blake (1): nbd: Fully initialize client in case of failed negotiation Fam Zheng (1): virtio-scsi: Unset hotplug handler when unrealize Felipe Franciosi (3): vhost-user-scsi: Introduce vhost-user-scsi host device vhost-user-scsi: Introduce a vhost-user-scsi sample application cpus: reset throttle_thread_scheduled after sleep Gonglei (1): kvm: don't register smram_listener when smm is off Mihail Abakumov (1): i386: fix read/write cr with icount option Paolo Bonzini (5): target/i386: enable A20 automatically in system management mode target/i386: use multiple CPU AddressSpaces linuxboot_dma: compile for i486 edu: fix memory leak on msi_broken platforms nbd: make it thread-safe, fix qcow2 over nbd Peter Xu (5): kvm: irqchip: trace changes on msi add/remove msix: trace control bit write op kvm: irqchip: skip update msi when disabled exec: simplify phys_page_find() params exec: fix address_space_get_iotlb_entry page mask Roman Pen (1): i386/kvm: do not zero out segment flags if segment is unusable or not present Stefano Stabellini (1): Check the return value of fcntl in qemu_set_cloexec Tai Yunfang (1): mc146818rtc: precisely count the clock for periodic timer Thomas Huth (1): hw/core: nmi.c can be compiled as common-obj nowadays Vladimir Sementsov-Ogievskiy (5): nbd: strict nbd_wr_syncv nbd: read_sync and friends: return 0 on success nbd: add errp parameter to nbd_wr_syncv() nbd: add errp to read_sync, write_sync and drop_sync nbd/client.c: use errp instead of LOG Xiao Guangrong (5): mc146818rtc: update periodic timer only if it is needed mc146818rtc: ensure LOST_TICK_POLICY_SLEW is only enabled on TARGET_I386 mc146818rtc: drop unnecessary '#ifdef TARGET_I386' mc146818rtc: embrace all x86 specific code qtest: add rtc periodic timer test .gitignore | 1 + Makefile | 3 + Makefile.objs | 4 + block/nbd-client.c | 41 +- configure | 4 +- contrib/libvhost-user/libvhost-user.h | 11 +- contrib/vhost-user-scsi/Makefile.objs | 1 + contrib/vhost-user-scsi/vhost-user-scsi.c | 886 ++++++++++++++++++++++++++++++ cpus.c | 2 +- default-configs/pci.mak | 1 + default-configs/s390x-softmmu.mak | 1 + exec.c | 27 +- gdb-xml/i386-32bit-sse.xml | 52 ++ gdb-xml/i386-32bit.xml | 14 + gdb-xml/i386-64bit-sse.xml | 60 ++ gdb-xml/i386-64bit.xml | 14 + hw/core/Makefile.objs | 2 +- hw/i386/kvm/clock.c | 3 + hw/misc/edu.c | 12 +- hw/pci/msix.c | 11 +- hw/pci/trace-events | 3 + hw/scsi/Makefile.objs | 1 + hw/scsi/vhost-scsi-common.c | 1 - hw/scsi/vhost-user-scsi.c | 211 +++++++ hw/scsi/virtio-scsi.c | 3 + hw/timer/mc146818rtc.c | 203 ++++--- hw/virtio/virtio-pci.c | 54 ++ hw/virtio/virtio-pci.h | 11 + include/block/nbd.h | 8 +- include/hw/timer/mc146818rtc_regs.h | 20 + include/hw/virtio/vhost-user-scsi.h | 35 ++ include/hw/virtio/virtio-scsi.h | 2 + kvm-all.c | 8 +- nbd/client.c | 125 ++--- nbd/common.c | 23 +- nbd/nbd-internal.h | 40 +- nbd/server.c | 100 ++-- pc-bios/linuxboot_dma.bin | Bin 1536 -> 1536 bytes pc-bios/optionrom/Makefile | 1 + qemu-nbd.c | 5 +- target/i386/arch_memory_mapping.c | 18 +- target/i386/cpu.c | 23 +- target/i386/cpu.h | 20 +- target/i386/helper.c | 96 ++-- target/i386/kvm.c | 36 +- target/i386/machine.c | 4 - target/i386/smm_helper.c | 18 - target/i386/translate.c | 12 + tests/qemu-iotests/083.out | 2 + tests/rtc-test.c | 49 ++ trace-events | 3 +- util/oslib-posix.c | 4 +- util/qemu-sockets.c | 68 ++- 53 files changed, 1956 insertions(+), 401 deletions(-) create mode 100644 contrib/vhost-user-scsi/Makefile.objs create mode 100644 contrib/vhost-user-scsi/vhost-user-scsi.c create mode 100644 gdb-xml/i386-32bit-sse.xml create mode 100644 gdb-xml/i386-32bit.xml create mode 100644 gdb-xml/i386-64bit-sse.xml create mode 100644 gdb-xml/i386-64bit.xml create mode 100644 hw/scsi/vhost-user-scsi.c create mode 100644 include/hw/virtio/vhost-user-scsi.h -- 2.13.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PULL 06/34] qtest: add rtc periodic timer test 2017-06-01 16:03 [Qemu-devel] [PULL v2 00/34] Misc patches for 2016-06-01 Paolo Bonzini @ 2017-06-01 16:03 ` Paolo Bonzini 2017-06-01 16:03 ` [Qemu-devel] [PULL 34/34] cpus: reset throttle_thread_scheduled after sleep Paolo Bonzini 1 sibling, 0 replies; 4+ messages in thread From: Paolo Bonzini @ 2017-06-01 16:03 UTC (permalink / raw) To: qemu-devel; +Cc: Xiao Guangrong From: Xiao Guangrong <xiaoguangrong@tencent.com> It tests the accuracy of rtc periodic timer which is recently improved & fixed by commit 7ffcb539a3 ("mc146818rtc: precisely count the clock for periodic timer", 2017-05-19). Signed-off-by: Xiao Guangrong <xiaoguangrong@tencent.com> Message-Id: <20170527025301.23499-1-xiaoguangrong@tencent.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- hw/timer/mc146818rtc.c | 15 +++--------- include/hw/timer/mc146818rtc_regs.h | 20 +++++++++++++++ tests/rtc-test.c | 49 +++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 12 deletions(-) diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c index 542cd09bc1..1b8d3d7d4c 100644 --- a/hw/timer/mc146818rtc.c +++ b/hw/timer/mc146818rtc.c @@ -120,7 +120,7 @@ static void rtc_coalesced_timer_update(RTCState *s) /* divide each RTC interval to 2 - 8 smaller intervals */ int c = MIN(s->irq_coalesced, 7) + 1; int64_t next_clock = qemu_clock_get_ns(rtc_clock) + - muldiv64(s->period / c, NANOSECONDS_PER_SECOND, RTC_CLOCK_RATE); + periodic_clock_to_ns(s->period / c); timer_mod(s->coalesced_timer, next_clock); } } @@ -178,16 +178,8 @@ static uint32_t rtc_periodic_clock_ticks(RTCState *s) } period_code = s->cmos_data[RTC_REG_A] & 0x0f; - if (!period_code) { - return 0; - } - - if (period_code <= 2) { - period_code += 7; - } - /* period in 32 Khz cycles */ - return 1 << (period_code - 1); + return periodic_period_to_clock(period_code); } /* @@ -260,8 +252,7 @@ periodic_timer_update(RTCState *s, int64_t current_time, uint32_t old_period) assert(lost_clock >= 0 && lost_clock <= period); next_irq_clock = cur_clock + period - lost_clock; - s->next_periodic_time = muldiv64(next_irq_clock, NANOSECONDS_PER_SECOND, - RTC_CLOCK_RATE) + 1; + s->next_periodic_time = periodic_clock_to_ns(next_irq_clock) + 1; timer_mod(s->periodic_timer, s->next_periodic_time); } else { s->irq_coalesced = 0; diff --git a/include/hw/timer/mc146818rtc_regs.h b/include/hw/timer/mc146818rtc_regs.h index 6ede6c832e..c62f17bf2d 100644 --- a/include/hw/timer/mc146818rtc_regs.h +++ b/include/hw/timer/mc146818rtc_regs.h @@ -65,4 +65,24 @@ #define REG_C_AF 0x20 #define REG_C_MASK 0x70 +static inline uint32_t periodic_period_to_clock(int period_code) +{ + if (!period_code) { + return 0; + } + + if (period_code <= 2) { + period_code += 7; + } + /* period in 32 Khz cycles */ + return 1 << (period_code - 1); +} + +#define RTC_CLOCK_RATE 32768 + +static inline int64_t periodic_clock_to_ns(int64_t clocks) +{ + return muldiv64(clocks, NANOSECONDS_PER_SECOND, RTC_CLOCK_RATE); +} + #endif diff --git a/tests/rtc-test.c b/tests/rtc-test.c index a086efd120..e78f701afb 100644 --- a/tests/rtc-test.c +++ b/tests/rtc-test.c @@ -14,6 +14,7 @@ #include "qemu/osdep.h" #include "libqtest.h" +#include "qemu/timer.h" #include "hw/timer/mc146818rtc_regs.h" static uint8_t base = 0x70; @@ -542,6 +543,52 @@ static void register_b_set_flag(void) g_assert_cmpint(cmos_read(RTC_CENTURY), ==, 0x20); } +#define RTC_PERIOD_CODE1 13 /* 8 Hz */ +#define RTC_PERIOD_CODE2 15 /* 2 Hz */ + +#define RTC_PERIOD_TEST_NR 50 + +static uint64_t wait_periodic_interrupt(uint64_t real_time) +{ + while (!get_irq(RTC_ISA_IRQ)) { + real_time = clock_step_next(); + } + + g_assert((cmos_read(RTC_REG_C) & REG_C_PF) != 0); + return real_time; +} + +static void periodic_timer(void) +{ + int i; + uint64_t period_clocks, period_time, start_time, real_time; + + /* disable all interrupts. */ + cmos_write(RTC_REG_B, cmos_read(RTC_REG_B) & + ~(REG_B_PIE | REG_B_AIE | REG_B_UIE)); + cmos_write(RTC_REG_A, RTC_PERIOD_CODE1); + /* enable periodic interrupt after properly configure the period. */ + cmos_write(RTC_REG_B, cmos_read(RTC_REG_B) | REG_B_PIE); + + start_time = real_time = clock_step_next(); + + for (i = 0; i < RTC_PERIOD_TEST_NR; i++) { + cmos_write(RTC_REG_A, RTC_PERIOD_CODE1); + real_time = wait_periodic_interrupt(real_time); + cmos_write(RTC_REG_A, RTC_PERIOD_CODE2); + real_time = wait_periodic_interrupt(real_time); + } + + period_clocks = periodic_period_to_clock(RTC_PERIOD_CODE1) + + periodic_period_to_clock(RTC_PERIOD_CODE2); + period_clocks *= RTC_PERIOD_TEST_NR; + period_time = periodic_clock_to_ns(period_clocks); + + real_time -= start_time; + g_assert_cmpint(ABS((int64_t)(real_time - period_time)), <=, + NANOSECONDS_PER_SECOND * 0.5); +} + int main(int argc, char **argv) { QTestState *s = NULL; @@ -564,6 +611,8 @@ int main(int argc, char **argv) qtest_add_func("/rtc/set-year/1980", set_year_1980); qtest_add_func("/rtc/misc/register_b_set_flag", register_b_set_flag); qtest_add_func("/rtc/misc/fuzz-registers", fuzz_registers); + qtest_add_func("/rtc/periodic/interrupt", periodic_timer); + ret = g_test_run(); if (s) { -- 2.13.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PULL 34/34] cpus: reset throttle_thread_scheduled after sleep 2017-06-01 16:03 [Qemu-devel] [PULL v2 00/34] Misc patches for 2016-06-01 Paolo Bonzini 2017-06-01 16:03 ` [Qemu-devel] [PULL 06/34] qtest: add rtc periodic timer test Paolo Bonzini @ 2017-06-01 16:03 ` Paolo Bonzini 1 sibling, 0 replies; 4+ messages in thread From: Paolo Bonzini @ 2017-06-01 16:03 UTC (permalink / raw) To: qemu-devel; +Cc: Felipe Franciosi, Malcolm Crossley From: Felipe Franciosi <felipe@nutanix.com> Currently, the throttle_thread_scheduled flag is reset back to 0 before sleeping (as part of the throttling logic). Given that throttle_timer (well, any timer) may tick with a slight delay, it so happens that under heavy throttling (ie. close or on CPU_THROTTLE_PCT_MAX) the tick may schedule a further cpu_throttle_thread() work item after the flag reset, but before the previous sleep completed. This results on the vCPU thread sleeping continuously for potentially several seconds in a row. The chances of that happening can be drastically minimised by resetting the flag after the sleep. Signed-off-by: Felipe Franciosi <felipe@nutanix.com> Signed-off-by: Malcolm Crossley <malcolm@nutanix.com> Message-Id: <1495229390-18909-1-git-send-email-felipe@nutanix.com> Acked-by: Jason J. Herne <jjherne@linux.vnet.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- cpus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpus.c b/cpus.c index 516e5cbac1..f42eebda91 100644 --- a/cpus.c +++ b/cpus.c @@ -677,9 +677,9 @@ static void cpu_throttle_thread(CPUState *cpu, run_on_cpu_data opaque) sleeptime_ns = (long)(throttle_ratio * CPU_THROTTLE_TIMESLICE_NS); qemu_mutex_unlock_iothread(); - atomic_set(&cpu->throttle_thread_scheduled, 0); g_usleep(sleeptime_ns / 1000); /* Convert ns to us for usleep call */ qemu_mutex_lock_iothread(); + atomic_set(&cpu->throttle_thread_scheduled, 0); } static void cpu_throttle_timer_tick(void *opaque) -- 2.13.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PULL v2 00/34] Misc patches for 2016-06-01 @ 2017-06-01 17:07 Paolo Bonzini 2017-06-01 17:07 ` [Qemu-devel] [PULL 34/34] cpus: reset throttle_thread_scheduled after sleep Paolo Bonzini 0 siblings, 1 reply; 4+ messages in thread From: Paolo Bonzini @ 2017-06-01 17:07 UTC (permalink / raw) To: qemu-devel The following changes since commit 56821559f0ba682fe6b367815572e6f974d329ab: Merge remote-tracking branch 'dgilbert/tags/pull-hmp-20170517' into staging (2017-05-18 13:36:15 +0100) are available in the git repository at: git://github.com/bonzini/qemu.git tags/for-upstream for you to fetch changes up to f3c3ad2dc98c6610152355f6a4de1445efc87421: cpus: reset throttle_thread_scheduled after sleep (2017-06-01 18:01:05 +0200) ---------------------------------------------------------------- * virtio-scsi use-after-free fix (Fam) * vhost-user-scsi support (Felipe) * SMM fixes and improvements for TCG (myself, Mihail) * irqchip and AddressSpaceDispatch cleanups and fixes (Peter) * Coverity fix (Stefano) * NBD cleanups and fixes (Vladimir, Eric, myself) * RTC accuracy improvements and code cleanups (Guangrong+Yunfang) * socket error reporting improvement (Daniel) * GDB XML description for SSE registers (Abdallah) * kvmclock update fix (Denis) * SMM memory savings (Gonglei) * -cpu 486 fix (Paolo) * various bugfixes (Roman, Peter, myself, Thomas) * rtc-test improvement (Guangrong) * migration throttling fix (Felipe) ---------------------------------------------------------------- Fixed patchew build failure, added another patch. Abdallah Bouassida (1): target/i386: Add GDB XML description for SSE registers Daniel P. Berrange (1): sockets: improve error reporting if UNIX socket path is too long Denis Plotnikov (1): kvmclock: update system_time_msr address forcibly Eric Blake (1): nbd: Fully initialize client in case of failed negotiation Fam Zheng (1): virtio-scsi: Unset hotplug handler when unrealize Felipe Franciosi (3): vhost-user-scsi: Introduce vhost-user-scsi host device vhost-user-scsi: Introduce a vhost-user-scsi sample application cpus: reset throttle_thread_scheduled after sleep Gonglei (1): kvm: don't register smram_listener when smm is off Mihail Abakumov (1): i386: fix read/write cr with icount option Paolo Bonzini (5): target/i386: enable A20 automatically in system management mode target/i386: use multiple CPU AddressSpaces linuxboot_dma: compile for i486 edu: fix memory leak on msi_broken platforms nbd: make it thread-safe, fix qcow2 over nbd Peter Xu (5): kvm: irqchip: trace changes on msi add/remove msix: trace control bit write op kvm: irqchip: skip update msi when disabled exec: simplify phys_page_find() params exec: fix address_space_get_iotlb_entry page mask Roman Pen (1): i386/kvm: do not zero out segment flags if segment is unusable or not present Stefano Stabellini (1): Check the return value of fcntl in qemu_set_cloexec Tai Yunfang (1): mc146818rtc: precisely count the clock for periodic timer Thomas Huth (1): hw/core: nmi.c can be compiled as common-obj nowadays Vladimir Sementsov-Ogievskiy (5): nbd: strict nbd_wr_syncv nbd: read_sync and friends: return 0 on success nbd: add errp parameter to nbd_wr_syncv() nbd: add errp to read_sync, write_sync and drop_sync nbd/client.c: use errp instead of LOG Xiao Guangrong (5): mc146818rtc: update periodic timer only if it is needed mc146818rtc: ensure LOST_TICK_POLICY_SLEW is only enabled on TARGET_I386 mc146818rtc: drop unnecessary '#ifdef TARGET_I386' mc146818rtc: embrace all x86 specific code qtest: add rtc periodic timer test .gitignore | 1 + Makefile | 3 + Makefile.objs | 4 + block/nbd-client.c | 41 +- configure | 4 +- contrib/libvhost-user/libvhost-user.h | 11 +- contrib/vhost-user-scsi/Makefile.objs | 1 + contrib/vhost-user-scsi/vhost-user-scsi.c | 886 ++++++++++++++++++++++++++++++ cpus.c | 2 +- default-configs/pci.mak | 1 + default-configs/s390x-softmmu.mak | 1 + exec.c | 27 +- gdb-xml/i386-32bit-sse.xml | 52 ++ gdb-xml/i386-32bit.xml | 14 + gdb-xml/i386-64bit-sse.xml | 60 ++ gdb-xml/i386-64bit.xml | 14 + hw/core/Makefile.objs | 2 +- hw/i386/kvm/clock.c | 3 + hw/misc/edu.c | 12 +- hw/pci/msix.c | 11 +- hw/pci/trace-events | 3 + hw/scsi/Makefile.objs | 1 + hw/scsi/vhost-scsi-common.c | 1 - hw/scsi/vhost-user-scsi.c | 211 +++++++ hw/scsi/virtio-scsi.c | 3 + hw/timer/mc146818rtc.c | 203 ++++--- hw/virtio/virtio-pci.c | 54 ++ hw/virtio/virtio-pci.h | 11 + include/block/nbd.h | 8 +- include/hw/timer/mc146818rtc_regs.h | 20 + include/hw/virtio/vhost-user-scsi.h | 35 ++ include/hw/virtio/virtio-scsi.h | 2 + kvm-all.c | 8 +- nbd/client.c | 125 ++--- nbd/common.c | 23 +- nbd/nbd-internal.h | 40 +- nbd/server.c | 100 ++-- pc-bios/linuxboot_dma.bin | Bin 1536 -> 1536 bytes pc-bios/optionrom/Makefile | 1 + qemu-nbd.c | 5 +- target/i386/arch_memory_mapping.c | 18 +- target/i386/cpu.c | 23 +- target/i386/cpu.h | 20 +- target/i386/helper.c | 96 ++-- target/i386/kvm.c | 36 +- target/i386/machine.c | 4 - target/i386/smm_helper.c | 18 - target/i386/translate.c | 12 + tests/qemu-iotests/083.out | 2 + tests/rtc-test.c | 49 ++ trace-events | 3 +- util/oslib-posix.c | 4 +- util/qemu-sockets.c | 68 ++- 53 files changed, 1956 insertions(+), 401 deletions(-) create mode 100644 contrib/vhost-user-scsi/Makefile.objs create mode 100644 contrib/vhost-user-scsi/vhost-user-scsi.c create mode 100644 gdb-xml/i386-32bit-sse.xml create mode 100644 gdb-xml/i386-32bit.xml create mode 100644 gdb-xml/i386-64bit-sse.xml create mode 100644 gdb-xml/i386-64bit.xml create mode 100644 hw/scsi/vhost-user-scsi.c create mode 100644 include/hw/virtio/vhost-user-scsi.h -- 2.13.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PULL 34/34] cpus: reset throttle_thread_scheduled after sleep 2017-06-01 17:07 [Qemu-devel] [PULL v2 00/34] Misc patches for 2016-06-01 Paolo Bonzini @ 2017-06-01 17:07 ` Paolo Bonzini 0 siblings, 0 replies; 4+ messages in thread From: Paolo Bonzini @ 2017-06-01 17:07 UTC (permalink / raw) To: qemu-devel; +Cc: Felipe Franciosi, Malcolm Crossley From: Felipe Franciosi <felipe@nutanix.com> Currently, the throttle_thread_scheduled flag is reset back to 0 before sleeping (as part of the throttling logic). Given that throttle_timer (well, any timer) may tick with a slight delay, it so happens that under heavy throttling (ie. close or on CPU_THROTTLE_PCT_MAX) the tick may schedule a further cpu_throttle_thread() work item after the flag reset, but before the previous sleep completed. This results on the vCPU thread sleeping continuously for potentially several seconds in a row. The chances of that happening can be drastically minimised by resetting the flag after the sleep. Signed-off-by: Felipe Franciosi <felipe@nutanix.com> Signed-off-by: Malcolm Crossley <malcolm@nutanix.com> Message-Id: <1495229390-18909-1-git-send-email-felipe@nutanix.com> Acked-by: Jason J. Herne <jjherne@linux.vnet.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- cpus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpus.c b/cpus.c index 516e5cbac1..f42eebda91 100644 --- a/cpus.c +++ b/cpus.c @@ -677,9 +677,9 @@ static void cpu_throttle_thread(CPUState *cpu, run_on_cpu_data opaque) sleeptime_ns = (long)(throttle_ratio * CPU_THROTTLE_TIMESLICE_NS); qemu_mutex_unlock_iothread(); - atomic_set(&cpu->throttle_thread_scheduled, 0); g_usleep(sleeptime_ns / 1000); /* Convert ns to us for usleep call */ qemu_mutex_lock_iothread(); + atomic_set(&cpu->throttle_thread_scheduled, 0); } static void cpu_throttle_timer_tick(void *opaque) -- 2.13.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-06-01 17:07 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-06-01 16:03 [Qemu-devel] [PULL v2 00/34] Misc patches for 2016-06-01 Paolo Bonzini 2017-06-01 16:03 ` [Qemu-devel] [PULL 06/34] qtest: add rtc periodic timer test Paolo Bonzini 2017-06-01 16:03 ` [Qemu-devel] [PULL 34/34] cpus: reset throttle_thread_scheduled after sleep Paolo Bonzini -- strict thread matches above, loose matches on Subject: below -- 2017-06-01 17:07 [Qemu-devel] [PULL v2 00/34] Misc patches for 2016-06-01 Paolo Bonzini 2017-06-01 17:07 ` [Qemu-devel] [PULL 34/34] cpus: reset throttle_thread_scheduled after sleep Paolo Bonzini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).