[PATCH] memory: dump HPA and access type of ramblocks

Ted Chen posted 1 patch 1 year, 5 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20221205120712.269013-1-znscnchen@gmail.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>, David Hildenbrand <david@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>
softmmu/physmem.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
[PATCH] memory: dump HPA and access type of ramblocks
Posted by Ted Chen 1 year, 5 months ago
It's convenient to dump HVA and RW/RO status of a ramblock in "info ramblock"
for debug purpose.

Before:
            Offset               Used              Total
0x0000000000000000 0x0000000400000000 0x0000000400000000

After:
            Offset               Used              Total                HVA  RO
0x0000000000000000 0x0000000400000000 0x0000000400000000 0x00007f12ebe00000  rw

Signed-off-by: Ted Chen <znscnchen@gmail.com>
---
 softmmu/physmem.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/softmmu/physmem.c b/softmmu/physmem.c
index 1b606a3002..fed4dfb72c 100644
--- a/softmmu/physmem.c
+++ b/softmmu/physmem.c
@@ -1316,15 +1316,21 @@ GString *ram_block_format(void)
     GString *buf = g_string_new("");
 
     RCU_READ_LOCK_GUARD();
-    g_string_append_printf(buf, "%24s %8s  %18s %18s %18s\n",
-                           "Block Name", "PSize", "Offset", "Used", "Total");
+    g_string_append_printf(buf, "%24s %8s  %18s %18s %18s %18s %3s\n",
+                           "Block Name", "PSize", "Offset", "Used", "Total",
+                           "HVA", "RO");
+
     RAMBLOCK_FOREACH(block) {
         psize = size_to_str(block->page_size);
         g_string_append_printf(buf, "%24s %8s  0x%016" PRIx64 " 0x%016" PRIx64
-                               " 0x%016" PRIx64 "\n", block->idstr, psize,
+                               " 0x%016" PRIx64 " 0x%016" PRIx64 " %3s\n",
+                               block->idstr, psize,
                                (uint64_t)block->offset,
                                (uint64_t)block->used_length,
-                               (uint64_t)block->max_length);
+                               (uint64_t)block->max_length,
+                               (uint64_t)block->host,
+                               block->mr->readonly ? "ro" : "rw");
+
         g_free(psize);
     }
 
-- 
2.34.1
Re: [PATCH] memory: dump HPA and access type of ramblocks
Posted by Peter Xu 1 year, 4 months ago
Since I applied this twice already to my local trees, let me ping for Ted
to make sure it's not lost..

On Mon, Dec 05, 2022 at 08:07:12PM +0800, Ted Chen wrote:
> It's convenient to dump HVA and RW/RO status of a ramblock in "info ramblock"
> for debug purpose.
> 
> Before:
>             Offset               Used              Total
> 0x0000000000000000 0x0000000400000000 0x0000000400000000
> 
> After:
>             Offset               Used              Total                HVA  RO
> 0x0000000000000000 0x0000000400000000 0x0000000400000000 0x00007f12ebe00000  rw
> 
> Signed-off-by: Ted Chen <znscnchen@gmail.com>
> ---
>  softmmu/physmem.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/softmmu/physmem.c b/softmmu/physmem.c
> index 1b606a3002..fed4dfb72c 100644
> --- a/softmmu/physmem.c
> +++ b/softmmu/physmem.c
> @@ -1316,15 +1316,21 @@ GString *ram_block_format(void)
>      GString *buf = g_string_new("");
>  
>      RCU_READ_LOCK_GUARD();
> -    g_string_append_printf(buf, "%24s %8s  %18s %18s %18s\n",
> -                           "Block Name", "PSize", "Offset", "Used", "Total");
> +    g_string_append_printf(buf, "%24s %8s  %18s %18s %18s %18s %3s\n",
> +                           "Block Name", "PSize", "Offset", "Used", "Total",
> +                           "HVA", "RO");
> +
>      RAMBLOCK_FOREACH(block) {
>          psize = size_to_str(block->page_size);
>          g_string_append_printf(buf, "%24s %8s  0x%016" PRIx64 " 0x%016" PRIx64
> -                               " 0x%016" PRIx64 "\n", block->idstr, psize,
> +                               " 0x%016" PRIx64 " 0x%016" PRIx64 " %3s\n",
> +                               block->idstr, psize,
>                                 (uint64_t)block->offset,
>                                 (uint64_t)block->used_length,
> -                               (uint64_t)block->max_length);
> +                               (uint64_t)block->max_length,
> +                               (uint64_t)block->host,
> +                               block->mr->readonly ? "ro" : "rw");
> +
>          g_free(psize);
>      }
>  
> -- 
> 2.34.1
> 

-- 
Peter Xu
Re: [PATCH] memory: dump HPA and access type of ramblocks
Posted by Ted Chen 1 year, 2 months ago
Thanks, Peter.

hi Paolo,
A gentle ping:)
May I know what's your opinion to this patch? Any concern or further improvement required?

Thanks
Ted

On Fri, Jan 06, 2023 at 01:01:03PM -0500, Peter Xu wrote:
> Since I applied this twice already to my local trees, let me ping for Ted
> to make sure it's not lost..
> 
> On Mon, Dec 05, 2022 at 08:07:12PM +0800, Ted Chen wrote:
> > It's convenient to dump HVA and RW/RO status of a ramblock in "info ramblock"
> > for debug purpose.
> > 
> > Before:
> >             Offset               Used              Total
> > 0x0000000000000000 0x0000000400000000 0x0000000400000000
> > 
> > After:
> >             Offset               Used              Total                HVA  RO
> > 0x0000000000000000 0x0000000400000000 0x0000000400000000 0x00007f12ebe00000  rw
> > 
> > Signed-off-by: Ted Chen <znscnchen@gmail.com>
> > ---
> >  softmmu/physmem.c | 14 ++++++++++----
> >  1 file changed, 10 insertions(+), 4 deletions(-)
> > 
> > diff --git a/softmmu/physmem.c b/softmmu/physmem.c
> > index 1b606a3002..fed4dfb72c 100644
> > --- a/softmmu/physmem.c
> > +++ b/softmmu/physmem.c
> > @@ -1316,15 +1316,21 @@ GString *ram_block_format(void)
> >      GString *buf = g_string_new("");
> >  
> >      RCU_READ_LOCK_GUARD();
> > -    g_string_append_printf(buf, "%24s %8s  %18s %18s %18s\n",
> > -                           "Block Name", "PSize", "Offset", "Used", "Total");
> > +    g_string_append_printf(buf, "%24s %8s  %18s %18s %18s %18s %3s\n",
> > +                           "Block Name", "PSize", "Offset", "Used", "Total",
> > +                           "HVA", "RO");
> > +
> >      RAMBLOCK_FOREACH(block) {
> >          psize = size_to_str(block->page_size);
> >          g_string_append_printf(buf, "%24s %8s  0x%016" PRIx64 " 0x%016" PRIx64
> > -                               " 0x%016" PRIx64 "\n", block->idstr, psize,
> > +                               " 0x%016" PRIx64 " 0x%016" PRIx64 " %3s\n",
> > +                               block->idstr, psize,
> >                                 (uint64_t)block->offset,
> >                                 (uint64_t)block->used_length,
> > -                               (uint64_t)block->max_length);
> > +                               (uint64_t)block->max_length,
> > +                               (uint64_t)block->host,
> > +                               block->mr->readonly ? "ro" : "rw");
> > +
> >          g_free(psize);
> >      }
> >  
> > -- 
> > 2.34.1
> > 
> 
> -- 
> Peter Xu
>
Re: [PATCH] memory: dump HPA and access type of ramblocks
Posted by Philippe Mathieu-Daudé 1 year, 1 month ago
On 1/3/23 13:07, Ted Chen wrote:
> Thanks, Peter.
> 
> hi Paolo,
> A gentle ping:)
> May I know what's your opinion to this patch? Any concern or further improvement required?

Merged as commit dbc6ae9c3b (fixing format string on 32-bit hosts).
Re: [PATCH] memory: dump HPA and access type of ramblocks
Posted by Peter Xu 1 year, 5 months ago
On Mon, Dec 05, 2022 at 08:07:12PM +0800, Ted Chen wrote:
> It's convenient to dump HVA and RW/RO status of a ramblock in "info ramblock"
> for debug purpose.
> 
> Before:
>             Offset               Used              Total
> 0x0000000000000000 0x0000000400000000 0x0000000400000000
> 
> After:
>             Offset               Used              Total                HVA  RO
> 0x0000000000000000 0x0000000400000000 0x0000000400000000 0x00007f12ebe00000  rw
> 
> Signed-off-by: Ted Chen <znscnchen@gmail.com>

Reviewed-by: Peter Xu <peterx@redhat.com>

-- 
Peter Xu
Re: [PATCH] memory: dump HPA and access type of ramblocks
Posted by David Hildenbrand 1 year, 5 months ago
On 05.12.22 13:07, Ted Chen wrote:
> It's convenient to dump HVA and RW/RO status of a ramblock in "info ramblock"
> for debug purpose.
> 
> Before:
>              Offset               Used              Total
> 0x0000000000000000 0x0000000400000000 0x0000000400000000
> 
> After:
>              Offset               Used              Total                HVA  RO
> 0x0000000000000000 0x0000000400000000 0x0000000400000000 0x00007f12ebe00000  rw
> 
> Signed-off-by: Ted Chen <znscnchen@gmail.com>
> ---
>   softmmu/physmem.c | 14 ++++++++++----
>   1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/softmmu/physmem.c b/softmmu/physmem.c
> index 1b606a3002..fed4dfb72c 100644
> --- a/softmmu/physmem.c
> +++ b/softmmu/physmem.c
> @@ -1316,15 +1316,21 @@ GString *ram_block_format(void)
>       GString *buf = g_string_new("");
>   
>       RCU_READ_LOCK_GUARD();
> -    g_string_append_printf(buf, "%24s %8s  %18s %18s %18s\n",
> -                           "Block Name", "PSize", "Offset", "Used", "Total");
> +    g_string_append_printf(buf, "%24s %8s  %18s %18s %18s %18s %3s\n",
> +                           "Block Name", "PSize", "Offset", "Used", "Total",
> +                           "HVA", "RO");
> +
>       RAMBLOCK_FOREACH(block) {
>           psize = size_to_str(block->page_size);
>           g_string_append_printf(buf, "%24s %8s  0x%016" PRIx64 " 0x%016" PRIx64
> -                               " 0x%016" PRIx64 "\n", block->idstr, psize,
> +                               " 0x%016" PRIx64 " 0x%016" PRIx64 " %3s\n",
> +                               block->idstr, psize,
>                                  (uint64_t)block->offset,
>                                  (uint64_t)block->used_length,
> -                               (uint64_t)block->max_length);
> +                               (uint64_t)block->max_length,
> +                               (uint64_t)block->host,
> +                               block->mr->readonly ? "ro" : "rw");
> +
>           g_free(psize);
>       }
>   

Reviewed-by: David Hildenbrand <david@redhat.com>

-- 
Thanks,

David / dhildenb
Re: [PATCH] memory: dump HPA and access type of ramblocks
Posted by Philippe Mathieu-Daudé 1 year, 5 months ago
On 5/12/22 13:07, Ted Chen wrote:
> It's convenient to dump HVA and RW/RO status of a ramblock in "info ramblock"
> for debug purpose.
> 
> Before:
>              Offset               Used              Total
> 0x0000000000000000 0x0000000400000000 0x0000000400000000
> 
> After:
>              Offset               Used              Total                HVA  RO
> 0x0000000000000000 0x0000000400000000 0x0000000400000000 0x00007f12ebe00000  rw
> 
> Signed-off-by: Ted Chen <znscnchen@gmail.com>
> ---
>   softmmu/physmem.c | 14 ++++++++++----
>   1 file changed, 10 insertions(+), 4 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>