[PATCH for-5.0] arm:virt: fix broken IPA range with KVM enabled

Igor Mammedov posted 1 patch 4 years ago
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test checkpatch passed
Test FreeBSD passed
Test asan passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200326112829.19989-1-imammedo@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>
softmmu/vl.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
[PATCH for-5.0] arm:virt: fix broken IPA range with KVM enabled
Posted by Igor Mammedov 4 years ago
Commit a1b18df9a4848, broke virt_kvm_type() logic, which depends on
maxram_size, ram_size, ram_slots being parsed/set on machine instance
at the time accelerator (KVM) is initialized.

set_memory_options() part was already reverted by commit 2a7b18a3205b,
so revert remaining initialization of above machine fields to make
virt_kvm_type() work as it used to.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reported-by: Auger Eric <eric.auger@redhat.com>
---
 softmmu/vl.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/softmmu/vl.c b/softmmu/vl.c
index 814537bb42..132c6e73dc 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -4137,6 +4137,9 @@ void qemu_init(int argc, char **argv, char **envp)
     machine_opts = qemu_get_machine_opts();
     qemu_opt_foreach(machine_opts, machine_set_property, current_machine,
                      &error_fatal);
+    current_machine->ram_size = ram_size;
+    current_machine->maxram_size = maxram_size;
+    current_machine->ram_slots = ram_slots;
 
     /*
      * Note: uses machine properties such as kernel-irqchip, must run
@@ -4315,10 +4318,6 @@ void qemu_init(int argc, char **argv, char **envp)
         }
     }
 
-    current_machine->ram_size = ram_size;
-    current_machine->maxram_size = maxram_size;
-    current_machine->ram_slots = ram_slots;
-
     parse_numa_opts(current_machine);
 
     if (machine_class->default_ram_id && current_machine->ram_size &&
-- 
2.18.1


Re: [PATCH for-5.0] arm:virt: fix broken IPA range with KVM enabled
Posted by Auger Eric 4 years ago
Hi Igor,

On 3/26/20 12:28 PM, Igor Mammedov wrote:
> Commit a1b18df9a4848, broke virt_kvm_type() logic, which depends on
> maxram_size, ram_size, ram_slots being parsed/set on machine instance
> at the time accelerator (KVM) is initialized.
> 
> set_memory_options() part was already reverted by commit 2a7b18a3205b,
> so revert remaining initialization of above machine fields to make
> virt_kvm_type() work as it used to.
Oh I did not notice set_memory_options() change was already reverted.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> Reported-by: Auger Eric <eric.auger@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>


> ---
>  softmmu/vl.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/softmmu/vl.c b/softmmu/vl.c
> index 814537bb42..132c6e73dc 100644
> --- a/softmmu/vl.c
> +++ b/softmmu/vl.c
> @@ -4137,6 +4137,9 @@ void qemu_init(int argc, char **argv, char **envp)
>      machine_opts = qemu_get_machine_opts();
>      qemu_opt_foreach(machine_opts, machine_set_property, current_machine,
>                       &error_fatal);
> +    current_machine->ram_size = ram_size;
> +    current_machine->maxram_size = maxram_size;
> +    current_machine->ram_slots = ram_slots;

Nit: Before configure_accelerators() call there is a comment stating
that configure_accelerators uses machine properties and must be called
after machine_set_property. Maybe we should add it also uses memory
properties and should be called after set_memory_options. This may avoid
other changes of the same style.

Thanks

Eric
>  
>      /*
>       * Note: uses machine properties such as kernel-irqchip, must run
> @@ -4315,10 +4318,6 @@ void qemu_init(int argc, char **argv, char **envp)
>          }
>      }
>  
> -    current_machine->ram_size = ram_size;
> -    current_machine->maxram_size = maxram_size;
> -    current_machine->ram_slots = ram_slots;
> -
>      parse_numa_opts(current_machine);
>  
>      if (machine_class->default_ram_id && current_machine->ram_size &&
>