'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é <philmd@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;
--
2.21.3
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 Everything icount related is already moved to softmmu and made TCG only. 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é <philmd@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; >
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é <philmd@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; >> >
On 8/5/20 3:01 AM, 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é <philmd@redhat.com> > --- > include/sysemu/cpus.h | 4 ++++ > exec.c | 4 ---- > softmmu/cpus.c | 7 +++++++ > 3 files changed, 11 insertions(+), 4 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
© 2016 - 2026 Red Hat, Inc.