On 8/5/20 12:12 PM, Claudio Fontana wrote: > Hi Philippe, > > could you take a look if this series already addresses the issue? > > https://lists.gnu.org/archive/html/qemu-devel/2020-08/msg00067.html
I had tagged this series as "after-release" review and hadn't looked at it yet :) > > Everything icount related is already moved to softmmu and made TCG only. Good. I was looking for a surgical change for 5.1, but I think it is too late to have the WHPX CI running now (Thomas?). So we'll probably ignore my surgical series and proceed with yours when 5.2 development window opens. > > I will post a new version of the series today with a couple changes; > > the series could then be ready if HVF is already ready with its > synchronize_state implementation? Otherwise we'd have to hold back the HVF > patch. > > Thanks! > > Claudio > > > On 8/5/20 12:01 PM, Philippe Mathieu-Daudé wrote: >> 'icount' feature is only meaningful when using softmmu. >> Move it out of the globally used exec.c, and define it as >> 'false' in user-mode emulation. >> >> Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> >> --- >> include/sysemu/cpus.h | 4 ++++ >> exec.c | 4 ---- >> softmmu/cpus.c | 7 +++++++ >> 3 files changed, 11 insertions(+), 4 deletions(-) >> >> diff --git a/include/sysemu/cpus.h b/include/sysemu/cpus.h >> index 3c1da6a018..d8442aa9f0 100644 >> --- a/include/sysemu/cpus.h >> +++ b/include/sysemu/cpus.h >> @@ -11,9 +11,13 @@ void pause_all_vcpus(void); >> void cpu_stop_current(void); >> void cpu_ticks_init(void); >> >> +#if !defined(CONFIG_USER_ONLY) >> void configure_icount(QemuOpts *opts, Error **errp); >> extern int use_icount; >> extern int icount_align_option; >> +#else >> +#define use_icount false >> +#endif >> >> /* drift information for info jit command */ >> extern int64_t max_delay; >> diff --git a/exec.c b/exec.c >> index 6f381f98e2..a89ffa93c1 100644 >> --- a/exec.c >> +++ b/exec.c >> @@ -102,10 +102,6 @@ uintptr_t qemu_host_page_size; >> intptr_t qemu_host_page_mask; >> >> #if !defined(CONFIG_USER_ONLY) >> -/* 0 = Do not count executed instructions. >> - 1 = Precise instruction counting. >> - 2 = Adaptive rate instruction counting. */ >> -int use_icount; >> >> typedef struct PhysPageEntry PhysPageEntry; >> >> diff --git a/softmmu/cpus.c b/softmmu/cpus.c >> index a802e899ab..a4772034c0 100644 >> --- a/softmmu/cpus.c >> +++ b/softmmu/cpus.c >> @@ -81,6 +81,13 @@ >> >> #endif /* CONFIG_LINUX */ >> >> +/* >> + * 0 = Do not count executed instructions. >> + * 1 = Precise instruction counting. >> + * 2 = Adaptive rate instruction counting. >> + */ >> +int use_icount; >> + >> static QemuMutex qemu_global_mutex; >> >> int64_t max_delay; >> >