diff mbox

[RFC,v2,15/34] HACK: monitor: Comment out TCG profile ops

Message ID CAEgOgz5xwb1oONVrb7uYmZ0jR1s8omxEgprBwT95WmWi3XSiGw@mail.gmail.com
State New
Headers show

Commit Message

Peter Crosthwaite July 11, 2015, 8:26 p.m. UTC
On Mon, Jun 1, 2015 at 1:03 AM, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
>
> On 31/05/2015 08:11, Peter Crosthwaite wrote:
>> Not dealing with this problem as of this RFC, but comments on how
>> to solve it welcome. The approach adopted by this series is to
>> implement multi-arch as multiple translators, so a single global
>> TCG profiler is now ill-defined.
>
> Probably some kind of tcg-common.c?  The counts can be added together
> for all CPUs, and hence moved out of tcg_ctx.
>
> Also for example tcg/tcg-opc.h should only depend on
> TCG_TARGET_REG_BITS, i.e. not on the arch.  Hence tcg_op_defs should
> also be arch-independent.
>

it is. Due to disas/tci.c's usages of tcg_op_defs this has been pulled
to tcg-common.c.

tcg_table_op_count and tcg_dump_op_count could go with it, but we are
left with a harder problem with dump_exec_info which reaches into the
tcg_ctx. So dump_exec_info is converted to a CPU_HOOK using the
monitor CPU as context. This means you will get the TCG stats for
tcg_ctx for the current CPU only.

To keep the semantics consistent, I have done the same for
dump_opcount_info. So both are CPU hooks:

 static void hmp_info_history(Monitor *mon, const QDict *qdict)

Regards,
Peter

P.S. Your macro CPU_HOOK suggestion has allowed me to remove all the
stub implementations of hook functions, making it scarily easy to add
new hooks.

> Paolo
>
>> Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
>> ---
>>  monitor.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/monitor.c b/monitor.c
>> index 1a17cf3..f3ee785 100644
>> --- a/monitor.c
>> +++ b/monitor.c
>> @@ -1036,13 +1036,17 @@ static void hmp_info_registers(Monitor *mon, const QDict *qdict)
>>
>>  static void hmp_info_jit(Monitor *mon, const QDict *qdict)
>>  {
>> +#if 0
>>      dump_exec_info((FILE *)mon, monitor_fprintf);
>> +#endif
>>      dump_drift_info((FILE *)mon, monitor_fprintf);
>>  }
>>
>>  static void hmp_info_opcount(Monitor *mon, const QDict *qdict)
>>  {
>> +#if 0
>>      dump_opcount_info((FILE *)mon, monitor_fprintf);
>> +#endif
>>  }
>>
>>  static void hmp_info_history(Monitor *mon, const QDict *qdict)
>>
>
diff mbox

Patch

--- a/monitor.c
+++ b/monitor.c
@@ -962,13 +962,13 @@  static void hmp_info_registers(Monitor *mon,
const QDict *qdict)

 static void hmp_info_jit(Monitor *mon, const QDict *qdict)
 {
-    dump_exec_info((FILE *)mon, monitor_fprintf);
+    CPU_HOOK(mon_get_cpu(), dump_exec_info)((FILE *)mon, monitor_fprintf);
     dump_drift_info((FILE *)mon, monitor_fprintf);
 }

 static void hmp_info_opcount(Monitor *mon, const QDict *qdict)
 {
-    dump_opcount_info((FILE *)mon, monitor_fprintf);
+    CPU_HOOK(mon_get_cpu(), dump_opcount_info)((FILE *)mon, monitor_fprintf);
 }