On 20/03/2017 15:56, Peter Maydell wrote: > On 20 March 2017 at 14:45, Paolo Bonzini <pbonz...@redhat.com> wrote: >> These commands are useful when testing machine-check passthrough. >> gpa2hva is useful to inject a MADV_HWPOISON madvise from gdb, while >> gpa2hpa is useful to inject an error with the mce-inject kernel >> module. >> >> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >> --- >> hmp-commands.hx | 32 ++++++++++++++++++ >> monitor.c | 101 >> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 133 insertions(+) >> >> diff --git a/hmp-commands.hx b/hmp-commands.hx >> index 8819281..0aca984 100644 >> --- a/hmp-commands.hx >> +++ b/hmp-commands.hx >> @@ -526,6 +526,38 @@ Dump 80 16 bit values at the start of the video memory. >> ETEXI > > I have some comments which feel kind of nit-picky, but since this > is a public-facing HMP API I think they need attention since we only > get one chance to get it right. > >> { >> + .name = "gpa2hva", >> + .args_type = "addr:l", >> + .params = "addr", >> + .help = "print the host virtual address corresponding to a >> guest physical address", >> + .cmd = hmp_gpa2hva, >> + }, > > How does this work for guest CPUs which have more than one physical > address space (eg ARM TrustZone)? There's no ability here to specify > the secure/nonsecure transaction attribute that you need to distinguish > which kind of guest physical address you're talking about. > > The command also doesn't let you specify which CPU you care about, > which is bad because they don't all have to have the same address map.
It just uses address_space_memory currently. I can make it use the current CPU address space too, similar to x and xp; it's the same for my own use. > The documentation should also say what happens if the guest physaddr > doesn't correspond to RAM. An error? :) >> +#ifdef CONFIG_LINUX >> + { >> + .name = "gpa2hpa", >> + .args_type = "addr:l", >> + .params = "addr", >> + .help = "print the host physical address corresponding to a >> guest physical address", >> + .cmd = hmp_gpa2hpa, >> + }, >> +#endif >> + >> +STEXI >> +@item gpa2hpa @var{addr} >> +@findex gpa2hpa >> +Print the host physical address at which the guest's physical address >> @var{addr} >> +is mapped. > > ...what if you're on a system where host RAM exists at multiple host > physical addresses? It gives whatever the host OS thinks it's the corresponding host physical address. It's what happens to be in the page tables for the HVA. > What if the RAM happens to be paged out? > (Plus the remarks for gpa2hva apply.) Another error? :) Paolo