diff mbox

hmp-commands: use long for begin and length in dump-guest-memory

Message ID 20180619044835.18795-1-sjitindarsingh@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Suraj Jitindar Singh June 19, 2018, 4:48 a.m. UTC
The dump-guest-memory command is used to dump an area of guest memory
to a file, the piece of memory is specified by a begin address and
a length. These parameters are specified as ints and thus have a maximum
value of 4GB. This means you can't dump the guest memory past the first
4GB and instead get:
(qemu) dump-guest-memory tmp 0x100000000 0x100000000
'dump-guest-memory' has failed: integer is for 32-bit values
Try "help dump-guest-memory" for more information

This limitation is imposed in monitor_parse_arguments() since they are
both ints. hmp_dump_guest_memory() uses 64 bit quantities to store both
the begin and length values. Thus specify begin and length as long so
that the entire guest memory space can be dumped.

Signed-off-by: Suraj Jitindar Singh <sjtindarsingh@gmail.com>
---
 hmp-commands.hx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Suraj Jitindar Singh June 19, 2018, 4:51 a.m. UTC | #1
On Tue, 2018-06-19 at 14:48 +1000, Suraj Jitindar Singh wrote:
> The dump-guest-memory command is used to dump an area of guest memory
> to a file, the piece of memory is specified by a begin address and
> a length. These parameters are specified as ints and thus have a
> maximum
> value of 4GB. This means you can't dump the guest memory past the
> first
> 4GB and instead get:
> (qemu) dump-guest-memory tmp 0x100000000 0x100000000
> 'dump-guest-memory' has failed: integer is for 32-bit values
> Try "help dump-guest-memory" for more information
> 
> This limitation is imposed in monitor_parse_arguments() since they
> are
> both ints. hmp_dump_guest_memory() uses 64 bit quantities to store
> both
> the begin and length values. Thus specify begin and length as long so
> that the entire guest memory space can be dumped.
> 
> Signed-off-by: Suraj Jitindar Singh <sjtindarsingh@gmail.com>
s/sjtindarsingh@gmail.com/sjitindarsingh@gmail.com

woops...
> ---
>  hmp-commands.hx | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index 0734fea931..3b5c1f65db 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -1116,7 +1116,7 @@ ETEXI
>  
>      {
>          .name       = "dump-guest-memory",
> -        .args_type  = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-
> s,filename:F,begin:i?,length:i?",
> +        .args_type  = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-
> s,filename:F,begin:l?,length:l?",
>          .params     = "[-p] [-d] [-z|-l|-s] filename [begin
> length]",
>          .help       = "dump guest memory into file
> 'filename'.\n\t\t\t"
>                        "-p: do paging to get guest's memory
> mapping.\n\t\t\t"
Dr. David Alan Gilbert June 19, 2018, 10:25 a.m. UTC | #2
* Suraj Jitindar Singh (sjitindarsingh@gmail.com) wrote:
> The dump-guest-memory command is used to dump an area of guest memory
> to a file, the piece of memory is specified by a begin address and
> a length. These parameters are specified as ints and thus have a maximum
> value of 4GB. This means you can't dump the guest memory past the first
> 4GB and instead get:
> (qemu) dump-guest-memory tmp 0x100000000 0x100000000
> 'dump-guest-memory' has failed: integer is for 32-bit values
> Try "help dump-guest-memory" for more information
> 
> This limitation is imposed in monitor_parse_arguments() since they are
> both ints. hmp_dump_guest_memory() uses 64 bit quantities to store both
> the begin and length values. Thus specify begin and length as long so
> that the entire guest memory space can be dumped.
> 
> Signed-off-by: Suraj Jitindar Singh <sjtindarsingh@gmail.com>
> ---
>  hmp-commands.hx | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index 0734fea931..3b5c1f65db 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -1116,7 +1116,7 @@ ETEXI
>  
>      {
>          .name       = "dump-guest-memory",
> -        .args_type  = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:i?,length:i?",
> +        .args_type  = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:l?,length:l?",
>          .params     = "[-p] [-d] [-z|-l|-s] filename [begin length]",
>          .help       = "dump guest memory into file 'filename'.\n\t\t\t"
>                        "-p: do paging to get guest's memory mapping.\n\t\t\t"

OK, so hmp_dump_guest_memory in hmp.c already uses int64_t for both,
as does the qmp_dump_guest_memory it calls; so this looks OK.

Can you repost this please with the correct sign off that I see you
tried to fix in the following mail; best if we get it in the one mail.

Dave

> -- 
> 2.13.6
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
Suraj Jitindar Singh June 20, 2018, 12:33 a.m. UTC | #3
On Tue, 2018-06-19 at 11:25 +0100, Dr. David Alan Gilbert wrote:
> * Suraj Jitindar Singh (sjitindarsingh@gmail.com) wrote:
> > The dump-guest-memory command is used to dump an area of guest
> > memory
> > to a file, the piece of memory is specified by a begin address and
> > a length. These parameters are specified as ints and thus have a
> > maximum
> > value of 4GB. This means you can't dump the guest memory past the
> > first
> > 4GB and instead get:
> > (qemu) dump-guest-memory tmp 0x100000000 0x100000000
> > 'dump-guest-memory' has failed: integer is for 32-bit values
> > Try "help dump-guest-memory" for more information
> > 
> > This limitation is imposed in monitor_parse_arguments() since they
> > are
> > both ints. hmp_dump_guest_memory() uses 64 bit quantities to store
> > both
> > the begin and length values. Thus specify begin and length as long
> > so
> > that the entire guest memory space can be dumped.
> > 
> > Signed-off-by: Suraj Jitindar Singh <sjtindarsingh@gmail.com>
> > ---
> >  hmp-commands.hx | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/hmp-commands.hx b/hmp-commands.hx
> > index 0734fea931..3b5c1f65db 100644
> > --- a/hmp-commands.hx
> > +++ b/hmp-commands.hx
> > @@ -1116,7 +1116,7 @@ ETEXI
> >  
> >      {
> >          .name       = "dump-guest-memory",
> > -        .args_type  = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-
> > s,filename:F,begin:i?,length:i?",
> > +        .args_type  = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-
> > s,filename:F,begin:l?,length:l?",
> >          .params     = "[-p] [-d] [-z|-l|-s] filename [begin
> > length]",
> >          .help       = "dump guest memory into file
> > 'filename'.\n\t\t\t"
> >                        "-p: do paging to get guest's memory
> > mapping.\n\t\t\t"
> 
> OK, so hmp_dump_guest_memory in hmp.c already uses int64_t for both,
> as does the qmp_dump_guest_memory it calls; so this looks OK.
> 
> Can you repost this please with the correct sign off that I see you
> tried to fix in the following mail; best if we get it in the one
> mail.

Of course. Done :)

> 
> Dave
> 
> > -- 
> > 2.13.6
> > 
> 
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff mbox

Patch

diff --git a/hmp-commands.hx b/hmp-commands.hx
index 0734fea931..3b5c1f65db 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1116,7 +1116,7 @@  ETEXI
 
     {
         .name       = "dump-guest-memory",
-        .args_type  = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:i?,length:i?",
+        .args_type  = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:l?,length:l?",
         .params     = "[-p] [-d] [-z|-l|-s] filename [begin length]",
         .help       = "dump guest memory into file 'filename'.\n\t\t\t"
                       "-p: do paging to get guest's memory mapping.\n\t\t\t"