At 2026-05-28 23:24:56, "Philippe Mathieu-Daudé" <[email protected]> wrote:
>Hi,
>
>On 24/5/26 14:41, [email protected] wrote:
>> When booting an i386 guest, the `info tlb` command
>> may walk the entire page table hierarchy and emit
>> an enormous amount of output (as many as 800+ million
>> entries under my test).
>> It will take dozens of minutes to print all the info,
>> because each monitor print function will holds 'mon_lock'.
>> This effectively hangs the qemu monitor, and even leading
>> to program exit due to timeout.
>>
>> So it may be better to show only the first 32 entries
>> and the last entry by default.
>>
>> And if full output is required, the user can redirect
>> the output to a file by specifying a file name, e.g.:
>> `info tlb xxx.txt`.
>>
>> Signed-off-by: Alano Song <[email protected]>
>> ---
>> hmp-commands-info.hx | 10 +-
>> target/i386/monitor.c | 230 ++++++++++++++++++++++++++++++++++--------
>> 2 files changed, 195 insertions(+), 45 deletions(-)
>>
>> diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
>> index 82134eb6c2..33b4604d11 100644
>> --- a/hmp-commands-info.hx
>> +++ b/hmp-commands-info.hx
>> @@ -188,17 +188,19 @@ ERST
>>
>> {
>> .name = "tlb",
>> - .args_type = "",
>> - .params = "",
>> - .help = "show virtual to physical memory mappings",
>> + .args_type = "file:s?",
>> + .params = "[file]",
>> + .help = "show virtual to physical memory mappings (optionally
>> save to file)",
>> .cmd = hmp_info_tlb,
>> .arch_bitmask = QEMU_ARCH_I386 | QEMU_ARCH_SH4 | QEMU_ARCH_SPARC \
>> | QEMU_ARCH_PPC | QEMU_ARCH_XTENSA |
>> QEMU_ARCH_M68K,
>> },
>>
>> SRST
>> - ``info tlb``
>> + ``info tlb`` [*file*]
>> Show virtual to physical memory mappings.
>> + If *file* is specified, the output is saved to the given file
>> + instead of being printed to the monitor.
>> ERST
>
>What about passing count or range by argument instead, keeping the
>default behavior?
Hi, Philippe:
Your suggestion is good,
I can add several options,
so that users can control the output range and count.
And just as I described earlier, we should modify the default behavior:
only print the first 32 entries and the last entry.
so that users can know the range while avoiding
the output of all the entries (there are too many).
Alano.