[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v15 07/10] tb-stats: Adding info [tb-list|tb] commands to HMP
From: |
Wu, Fei |
Subject: |
Re: [PATCH v15 07/10] tb-stats: Adding info [tb-list|tb] commands to HMP (WIP) |
Date: |
Mon, 12 Jun 2023 17:11:23 +0800 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.11.2 |
On 6/12/2023 3:17 PM, Richard Henderson wrote:
> On 6/12/23 03:44, Wu, Fei wrote:
>> On 6/7/2023 8:24 PM, Fei Wu wrote:
>>> +void hmp_info_tb(Monitor *mon, const QDict *qdict)
>>> +{
>>> + const int id = qdict_get_int(qdict, "id");
>>> + g_autoptr(GString) buf = g_string_new("");
>>> +
>>> + if (!tcg_enabled()) {
>>> + monitor_printf(mon, "Only available with accel=tcg\n");
>>> + return;
>>> + }
>>> +
>>> + TBStatistics *tbs = get_tbstats_by_id(id);
>>> + if (tbs == NULL) {
>>> + monitor_printf(mon, "TB %d information is not recorded\n", id);
>>> + return;
>>> + }
>>> +
>>> + monitor_printf(mon, "\n------------------------------\n\n");
>>> +
>>> + int valid_tb_num = dump_tb_info(buf, tbs, id);
>>> + monitor_printf(mon, "%s", buf->str);
>>> +
>>> + if (valid_tb_num > 0) {
>>> + unsigned num_inst = tbs->code.num_guest_inst /
>>> tbs->translations.total;
>>> +
>>> + monitor_printf(mon, "\n----------------n\n");
>>> + // FIXME: cannot disas
>>> + monitor_disas(mon, mon_get_cpu(mon), tbs->phys_pc, num_inst,
>>> true);
>>> + monitor_printf(mon, "\n------------------------------\n\n");
>>> + }
>>> +}
>>> +
>> So far the following methods are candidates for monitor_disas:
>>
>> 1. still use ram_addr_t for tbs->phys_pc, and extend monitor_disas to
>> support disassemble ram_addr_t by using qemu_map_ram_ptr(NULL, ram_addr)
>> to convert it to hva first
>>
>> 2. use gpa for tbs->phys_pc, there is no need to change monitor_disas,
>> but add another parameter for get_page_addr_code_hostp() to return extra
>> gpa, probe_access_internal() has already returned CPUTLBEntryFull, so
>> it's plain to get gpa here.
>
> No, we need the ram_addr_t for dirty-page handling in order to detect
> self-modifying code. Leave tb->phys_pc alone.
>
I mean return both ram_addr_t and gpa from get_page_addr_code_hostp(),
tb->phys_pc will not be changed, I'm not going to change tbs->phys_pc
either (like #3), the extra gpa will be saved in tbs for 'info tb' purpose.
In short, no change on phys_pc, but add gpa to tbs, sounds good?
Thanks,
Fei.
>
> r~
>
>>
>> 3. record gpa in another field of tbs, and keep tbs->phys_pc as it is,
>> this is just a variation of #2.
>>
>> I'm inclined to use method #2. I think gpa carries more information for
>> debugging than ram_addr_t, guest can map gpa to the executable file
>> etc., but it has little knowledge of ram_addr_t.
>>
>> What do you suggest?
>>
>> Thanks,
>> Fei.
>>
>
- [PATCH v15 00/10] TCG code quality tracking, Fei Wu, 2023/06/07
- [PATCH v15 01/10] accel/tcg: remove CONFIG_PROFILER, Fei Wu, 2023/06/07
- [PATCH v15 02/10] accel/tcg: introduce TBStatistics structure, Fei Wu, 2023/06/07
- [PATCH v15 03/10] accel: collecting TB execution count, Fei Wu, 2023/06/07
- [PATCH v15 04/10] accel/tcg: add jit stats to TBStatistics, Fei Wu, 2023/06/07
- [PATCH v15 05/10] monitor: adding tb_stats hmp command, Fei Wu, 2023/06/07
- [PATCH v15 07/10] tb-stats: Adding info [tb-list|tb] commands to HMP (WIP), Fei Wu, 2023/06/07
- [PATCH v15 06/10] tb-stats: reset the tracked TBs on a tb_flush, Fei Wu, 2023/06/07
- [PATCH v15 09/10] tb-stats: dump hot TBs at the end of the execution, Fei Wu, 2023/06/07
- [PATCH v15 08/10] debug: add -d tb_stats to control TBStatistics, Fei Wu, 2023/06/07
- [PATCH v15 10/10] docs: add tb-stats how to, Fei Wu, 2023/06/07
- Re: [PATCH v15 00/10] TCG code quality tracking, Wu, Fei, 2023/06/12
- Re: [PATCH v15 00/10] TCG code quality tracking, Wu, Fei, 2023/06/12