qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH 6/6] memory: Have address_space_create() re-use global &a


From: Peter Maydell
Subject: Re: [RFC PATCH 6/6] memory: Have address_space_create() re-use global &address_space_memory
Date: Thu, 19 Aug 2021 15:34:12 +0100

On Thu, 19 Aug 2021 at 15:21, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
>
> We already have a global AddressSpace created along with the
> global get_system_memory(): address_space_memory. Return it
> directly instead of creating the same AS with a different name.
>

> diff --git a/softmmu/memory.c b/softmmu/memory.c
> index 16a2b518d8d..e4506b5a0d5 100644
> --- a/softmmu/memory.c
> +++ b/softmmu/memory.c
> @@ -2941,6 +2941,10 @@ AddressSpace *address_space_create(MemoryRegion *root, 
> const char *name)
>  {
>      AddressSpace *as;
>
> +    if (root == get_system_memory()) {
> +        return &address_space_memory;
> +    }

But most ASes aren't set up with address_space_create().
This doesn't do anything for the common case where the
AS is initialized with address_space_init().

This also seems to me to be the tail wagging the dog. If we think
'info mtree' has too much duplicate information (which it certainly
does) then we should make mtree_info() smarter about reducing that
duplication. Off the top of my head, we could change the code that
prints ASes to do something like:

   hashtable = an empty hashtable;
   QEMU_FOREACH(as, ...) {
       qemu_printf("address-space: %s\n", as->name);
       name = lookup as->root in hashtable;
       if (name) {
           qemu_printf("...same as address-space %s\n", name);
           continue;
       }
       add (as->root, as->name) to hashtable;
       mtree_print_mr(as->root...);
       qemu_printf("\n");
   }

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]