diff mbox series

[v2,04/15] tests: acpi: q35: test for x2APIC entries in SRAT

Message ID 20210902113551.461632-5-imammedo@redhat.com (mailing list archive)
State New, archived
Headers show
Series tests: acpi: add x2apic and various iommu tests | expand

Commit Message

Igor Mammedov Sept. 2, 2021, 11:35 a.m. UTC
Set -smp 1,maxcpus=288 to test for ACPI code that
deal with CPUs with large APIC ID (>255).

PS:
Test requires KVM and in-kernel irqchip support,
so skip test if KVM is not available.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v3:
  - add dedicated test instead of abusing 'numamem' one
  - add 'kvm' prefix to the test name
      ("Michael S. Tsirkin" <mst@redhat.com>)
v2:
  - switch to qtest_has_accel() API

CC: thuth@redhat.com
CC: lvivier@redhat.com
---
 tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Michael S. Tsirkin Oct. 18, 2021, 9:31 p.m. UTC | #1
On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:
> Set -smp 1,maxcpus=288 to test for ACPI code that
> deal with CPUs with large APIC ID (>255).
> 
> PS:
> Test requires KVM and in-kernel irqchip support,
> so skip test if KVM is not available.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> v3:
>   - add dedicated test instead of abusing 'numamem' one
>   - add 'kvm' prefix to the test name
>       ("Michael S. Tsirkin" <mst@redhat.com>)
> v2:
>   - switch to qtest_has_accel() API
> 
> CC: thuth@redhat.com
> CC: lvivier@redhat.com
> ---
>  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> index 51d3a4e239..1f6779da87 100644
> --- a/tests/qtest/bios-tables-test.c
> +++ b/tests/qtest/bios-tables-test.c
> @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
>      free_test_data(&data);
>  }
>  
> +static void test_acpi_q35_kvm_xapic(void)
> +{
> +    test_data data;
> +
> +    memset(&data, 0, sizeof(data));
> +    data.machine = MACHINE_Q35;
> +    data.variant = ".xapic";
> +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> +                  " -numa node -numa node,memdev=ram0"
> +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> +    free_test_data(&data);
> +}
> +
>  static void test_acpi_q35_tcg_nosmm(void)
>  {
>      test_data data;


This causes an annoying message each time I run it:

qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)

what gives?


> @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
>  int main(int argc, char *argv[])
>  {
>      const char *arch = qtest_get_arch();
> +    const bool has_kvm = qtest_has_accel("kvm");
>      int ret;
>  
>      g_test_init(&argc, &argv, NULL);
> @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
>          if (strcmp(arch, "x86_64") == 0) {
>              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
>          }
> +        if (has_kvm) {
> +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> +        }
>      } else if (strcmp(arch, "aarch64") == 0) {
>          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
>          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> -- 
> 2.27.0
Igor Mammedov Oct. 19, 2021, 9:48 a.m. UTC | #2
On Mon, 18 Oct 2021 17:31:33 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:
> > Set -smp 1,maxcpus=288 to test for ACPI code that
> > deal with CPUs with large APIC ID (>255).
> > 
> > PS:
> > Test requires KVM and in-kernel irqchip support,
> > so skip test if KVM is not available.
> > 
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > v3:
> >   - add dedicated test instead of abusing 'numamem' one
> >   - add 'kvm' prefix to the test name
> >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > v2:
> >   - switch to qtest_has_accel() API
> > 
> > CC: thuth@redhat.com
> > CC: lvivier@redhat.com
> > ---
> >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> >  1 file changed, 17 insertions(+)
> > 
> > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > index 51d3a4e239..1f6779da87 100644
> > --- a/tests/qtest/bios-tables-test.c
> > +++ b/tests/qtest/bios-tables-test.c
> > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> >      free_test_data(&data);
> >  }
> >  
> > +static void test_acpi_q35_kvm_xapic(void)
> > +{
> > +    test_data data;
> > +
> > +    memset(&data, 0, sizeof(data));
> > +    data.machine = MACHINE_Q35;
> > +    data.variant = ".xapic";
> > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > +                  " -numa node -numa node,memdev=ram0"
> > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > +    free_test_data(&data);
> > +}
> > +
> >  static void test_acpi_q35_tcg_nosmm(void)
> >  {
> >      test_data data;  
> 
> 
> This causes an annoying message each time I run it:
> 
> qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> 
> what gives?

it depends on kernel, see kvm_recommended_vcpus().

We probably should bump it on upstream kernel side
(it's much more than that in RHEL8).

Is there anything that prevents bumping upstream kernel limits?

> > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> >  int main(int argc, char *argv[])
> >  {
> >      const char *arch = qtest_get_arch();
> > +    const bool has_kvm = qtest_has_accel("kvm");
> >      int ret;
> >  
> >      g_test_init(&argc, &argv, NULL);
> > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> >          if (strcmp(arch, "x86_64") == 0) {
> >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> >          }
> > +        if (has_kvm) {
> > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > +        }
> >      } else if (strcmp(arch, "aarch64") == 0) {
> >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > -- 
> > 2.27.0  
>
Michael S. Tsirkin Oct. 19, 2021, 10:23 a.m. UTC | #3
On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:
> On Mon, 18 Oct 2021 17:31:33 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:
> > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > deal with CPUs with large APIC ID (>255).
> > > 
> > > PS:
> > > Test requires KVM and in-kernel irqchip support,
> > > so skip test if KVM is not available.
> > > 
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > ---
> > > v3:
> > >   - add dedicated test instead of abusing 'numamem' one
> > >   - add 'kvm' prefix to the test name
> > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > v2:
> > >   - switch to qtest_has_accel() API
> > > 
> > > CC: thuth@redhat.com
> > > CC: lvivier@redhat.com
> > > ---
> > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > >  1 file changed, 17 insertions(+)
> > > 
> > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > index 51d3a4e239..1f6779da87 100644
> > > --- a/tests/qtest/bios-tables-test.c
> > > +++ b/tests/qtest/bios-tables-test.c
> > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > >      free_test_data(&data);
> > >  }
> > >  
> > > +static void test_acpi_q35_kvm_xapic(void)
> > > +{
> > > +    test_data data;
> > > +
> > > +    memset(&data, 0, sizeof(data));
> > > +    data.machine = MACHINE_Q35;
> > > +    data.variant = ".xapic";
> > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > +                  " -numa node -numa node,memdev=ram0"
> > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > +    free_test_data(&data);
> > > +}
> > > +
> > >  static void test_acpi_q35_tcg_nosmm(void)
> > >  {
> > >      test_data data;  
> > 
> > 
> > This causes an annoying message each time I run it:
> > 
> > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > 
> > what gives?
> 
> it depends on kernel, see kvm_recommended_vcpus().
> 
> We probably should bump it on upstream kernel side
> (it's much more than that in RHEL8).
> 
> Is there anything that prevents bumping upstream kernel limits?

what should we do with the annoying warning though?


> > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > >  int main(int argc, char *argv[])
> > >  {
> > >      const char *arch = qtest_get_arch();
> > > +    const bool has_kvm = qtest_has_accel("kvm");
> > >      int ret;
> > >  
> > >      g_test_init(&argc, &argv, NULL);
> > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > >          if (strcmp(arch, "x86_64") == 0) {
> > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > >          }
> > > +        if (has_kvm) {
> > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > +        }
> > >      } else if (strcmp(arch, "aarch64") == 0) {
> > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > -- 
> > > 2.27.0  
> >
Igor Mammedov Oct. 19, 2021, 11:36 a.m. UTC | #4
On Tue, 19 Oct 2021 06:23:40 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:
> > On Mon, 18 Oct 2021 17:31:33 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:  
> > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > deal with CPUs with large APIC ID (>255).
> > > > 
> > > > PS:
> > > > Test requires KVM and in-kernel irqchip support,
> > > > so skip test if KVM is not available.
> > > > 
> > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > ---
> > > > v3:
> > > >   - add dedicated test instead of abusing 'numamem' one
> > > >   - add 'kvm' prefix to the test name
> > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > v2:
> > > >   - switch to qtest_has_accel() API
> > > > 
> > > > CC: thuth@redhat.com
> > > > CC: lvivier@redhat.com
> > > > ---
> > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > >  1 file changed, 17 insertions(+)
> > > > 
> > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > index 51d3a4e239..1f6779da87 100644
> > > > --- a/tests/qtest/bios-tables-test.c
> > > > +++ b/tests/qtest/bios-tables-test.c
> > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > >      free_test_data(&data);
> > > >  }
> > > >  
> > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > +{
> > > > +    test_data data;
> > > > +
> > > > +    memset(&data, 0, sizeof(data));
> > > > +    data.machine = MACHINE_Q35;
> > > > +    data.variant = ".xapic";
> > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > +                  " -numa node -numa node,memdev=ram0"
> > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > +    free_test_data(&data);
> > > > +}
> > > > +
> > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > >  {
> > > >      test_data data;    
> > > 
> > > 
> > > This causes an annoying message each time I run it:
> > > 
> > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > 
> > > what gives?  
> > 
> > it depends on kernel, see kvm_recommended_vcpus().
> > 
> > We probably should bump it on upstream kernel side
> > (it's much more than that in RHEL8).
> > 
> > Is there anything that prevents bumping upstream kernel limits?  
> 
> what should we do with the annoying warning though?

I'd leave it alone.
What do you suggest?
 
 
> > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > >  int main(int argc, char *argv[])
> > > >  {
> > > >      const char *arch = qtest_get_arch();
> > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > >      int ret;
> > > >  
> > > >      g_test_init(&argc, &argv, NULL);
> > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > >          if (strcmp(arch, "x86_64") == 0) {
> > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > >          }
> > > > +        if (has_kvm) {
> > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > +        }
> > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > -- 
> > > > 2.27.0    
> > >   
>
Michael S. Tsirkin Oct. 19, 2021, 11:44 a.m. UTC | #5
On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:
> On Tue, 19 Oct 2021 06:23:40 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:
> > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:  
> > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > deal with CPUs with large APIC ID (>255).
> > > > > 
> > > > > PS:
> > > > > Test requires KVM and in-kernel irqchip support,
> > > > > so skip test if KVM is not available.
> > > > > 
> > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > ---
> > > > > v3:
> > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > >   - add 'kvm' prefix to the test name
> > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > v2:
> > > > >   - switch to qtest_has_accel() API
> > > > > 
> > > > > CC: thuth@redhat.com
> > > > > CC: lvivier@redhat.com
> > > > > ---
> > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > >  1 file changed, 17 insertions(+)
> > > > > 
> > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > index 51d3a4e239..1f6779da87 100644
> > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > >      free_test_data(&data);
> > > > >  }
> > > > >  
> > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > +{
> > > > > +    test_data data;
> > > > > +
> > > > > +    memset(&data, 0, sizeof(data));
> > > > > +    data.machine = MACHINE_Q35;
> > > > > +    data.variant = ".xapic";
> > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > +    free_test_data(&data);
> > > > > +}
> > > > > +
> > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > >  {
> > > > >      test_data data;    
> > > > 
> > > > 
> > > > This causes an annoying message each time I run it:
> > > > 
> > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > 
> > > > what gives?  
> > > 
> > > it depends on kernel, see kvm_recommended_vcpus().
> > > 
> > > We probably should bump it on upstream kernel side
> > > (it's much more than that in RHEL8).
> > > 
> > > Is there anything that prevents bumping upstream kernel limits?  
> > 
> > what should we do with the annoying warning though?
> 
> I'd leave it alone.
> What do you suggest?
>  

reduce the value so a typical system does not trigger it?

> > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > >  int main(int argc, char *argv[])
> > > > >  {
> > > > >      const char *arch = qtest_get_arch();
> > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > >      int ret;
> > > > >  
> > > > >      g_test_init(&argc, &argv, NULL);
> > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > >          }
> > > > > +        if (has_kvm) {
> > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > +        }
> > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > -- 
> > > > > 2.27.0    
> > > >   
> >
Igor Mammedov Oct. 20, 2021, 8:16 a.m. UTC | #6
On Tue, 19 Oct 2021 07:44:38 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:
> > On Tue, 19 Oct 2021 06:23:40 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:  
> > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > >     
> > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:    
> > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > 
> > > > > > PS:
> > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > so skip test if KVM is not available.
> > > > > > 
> > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > ---
> > > > > > v3:
> > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > >   - add 'kvm' prefix to the test name
> > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > v2:
> > > > > >   - switch to qtest_has_accel() API
> > > > > > 
> > > > > > CC: thuth@redhat.com
> > > > > > CC: lvivier@redhat.com
> > > > > > ---
> > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > >  1 file changed, 17 insertions(+)
> > > > > > 
> > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > >      free_test_data(&data);
> > > > > >  }
> > > > > >  
> > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > +{
> > > > > > +    test_data data;
> > > > > > +
> > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > +    data.machine = MACHINE_Q35;
> > > > > > +    data.variant = ".xapic";
> > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > +    free_test_data(&data);
> > > > > > +}
> > > > > > +
> > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > >  {
> > > > > >      test_data data;      
> > > > > 
> > > > > 
> > > > > This causes an annoying message each time I run it:
> > > > > 
> > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > 
> > > > > what gives?    
> > > > 
> > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > 
> > > > We probably should bump it on upstream kernel side
> > > > (it's much more than that in RHEL8).
> > > > 
> > > > Is there anything that prevents bumping upstream kernel limits?    
> > > 
> > > what should we do with the annoying warning though?  
> > 
> > I'd leave it alone.
> > What do you suggest?
> >    
> 
> reduce the value so a typical system does not trigger it?

it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
and 288 value additionally tests max limits

> 
> > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > >  int main(int argc, char *argv[])
> > > > > >  {
> > > > > >      const char *arch = qtest_get_arch();
> > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > >      int ret;
> > > > > >  
> > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > >          }
> > > > > > +        if (has_kvm) {
> > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > +        }
> > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > -- 
> > > > > > 2.27.0      
> > > > >     
> > >   
>
Michael S. Tsirkin Oct. 20, 2021, 8:18 a.m. UTC | #7
On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:
> On Tue, 19 Oct 2021 07:44:38 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:
> > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:  
> > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >     
> > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:    
> > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > 
> > > > > > > PS:
> > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > so skip test if KVM is not available.
> > > > > > > 
> > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > ---
> > > > > > > v3:
> > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > >   - add 'kvm' prefix to the test name
> > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > v2:
> > > > > > >   - switch to qtest_has_accel() API
> > > > > > > 
> > > > > > > CC: thuth@redhat.com
> > > > > > > CC: lvivier@redhat.com
> > > > > > > ---
> > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > 
> > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > >      free_test_data(&data);
> > > > > > >  }
> > > > > > >  
> > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > +{
> > > > > > > +    test_data data;
> > > > > > > +
> > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > +    data.variant = ".xapic";
> > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > +    free_test_data(&data);
> > > > > > > +}
> > > > > > > +
> > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > >  {
> > > > > > >      test_data data;      
> > > > > > 
> > > > > > 
> > > > > > This causes an annoying message each time I run it:
> > > > > > 
> > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > 
> > > > > > what gives?    
> > > > > 
> > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > 
> > > > > We probably should bump it on upstream kernel side
> > > > > (it's much more than that in RHEL8).
> > > > > 
> > > > > Is there anything that prevents bumping upstream kernel limits?    
> > > > 
> > > > what should we do with the annoying warning though?  
> > > 
> > > I'd leave it alone.
> > > What do you suggest?
> > >    
> > 
> > reduce the value so a typical system does not trigger it?
> 
> it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> and 288 value additionally tests max limits

Add a flag to disable the warning while running this specific test?

> > 
> > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > >  int main(int argc, char *argv[])
> > > > > > >  {
> > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > >      int ret;
> > > > > > >  
> > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > >          }
> > > > > > > +        if (has_kvm) {
> > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > +        }
> > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > -- 
> > > > > > > 2.27.0      
> > > > > >     
> > > >   
> >
Igor Mammedov Oct. 20, 2021, 8:53 a.m. UTC | #8
On Wed, 20 Oct 2021 04:18:07 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:
> > On Tue, 19 Oct 2021 07:44:38 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:  
> > > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > >     
> > > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:    
> > > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > >       
> > > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:      
> > > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > > 
> > > > > > > > PS:
> > > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > > so skip test if KVM is not available.
> > > > > > > > 
> > > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > > ---
> > > > > > > > v3:
> > > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > > >   - add 'kvm' prefix to the test name
> > > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > > v2:
> > > > > > > >   - switch to qtest_has_accel() API
> > > > > > > > 
> > > > > > > > CC: thuth@redhat.com
> > > > > > > > CC: lvivier@redhat.com
> > > > > > > > ---
> > > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > > 
> > > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > > >      free_test_data(&data);
> > > > > > > >  }
> > > > > > > >  
> > > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > > +{
> > > > > > > > +    test_data data;
> > > > > > > > +
> > > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > > +    data.variant = ".xapic";
> > > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > > +    free_test_data(&data);
> > > > > > > > +}
> > > > > > > > +
> > > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > > >  {
> > > > > > > >      test_data data;        
> > > > > > > 
> > > > > > > 
> > > > > > > This causes an annoying message each time I run it:
> > > > > > > 
> > > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > > 
> > > > > > > what gives?      
> > > > > > 
> > > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > > 
> > > > > > We probably should bump it on upstream kernel side
> > > > > > (it's much more than that in RHEL8).
> > > > > > 
> > > > > > Is there anything that prevents bumping upstream kernel limits?      
> > > > > 
> > > > > what should we do with the annoying warning though?    
> > > > 
> > > > I'd leave it alone.
> > > > What do you suggest?
> > > >      
> > > 
> > > reduce the value so a typical system does not trigger it?  
> > 
> > it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> > and 288 value additionally tests max limits  
> 
> Add a flag to disable the warning while running this specific test?

if it were qtest accel, it would be trivial but
I'm not aware of something similar for tcg/kvm mode.
Do you suggest to add to QEMU a CLI option for that?



> 
> > >   
> > > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > > >  int main(int argc, char *argv[])
> > > > > > > >  {
> > > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > > >      int ret;
> > > > > > > >  
> > > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > > >          }
> > > > > > > > +        if (has_kvm) {
> > > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > > +        }
> > > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > > -- 
> > > > > > > > 2.27.0        
> > > > > > >       
> > > > >     
> > >   
>
Thomas Huth Oct. 20, 2021, 8:58 a.m. UTC | #9
On 20/10/2021 10.53, Igor Mammedov wrote:
> On Wed, 20 Oct 2021 04:18:07 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
>> On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:
>>> On Tue, 19 Oct 2021 07:44:38 -0400
>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>>    
>>>> On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:
>>>>> On Tue, 19 Oct 2021 06:23:40 -0400
>>>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>>>>      
>>>>>> On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:
>>>>>>> On Mon, 18 Oct 2021 17:31:33 -0400
>>>>>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>>>>>>        
>>>>>>>> On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:
>>>>>>>>> Set -smp 1,maxcpus=288 to test for ACPI code that
>>>>>>>>> deal with CPUs with large APIC ID (>255).
>>>>>>>>>
>>>>>>>>> PS:
>>>>>>>>> Test requires KVM and in-kernel irqchip support,
>>>>>>>>> so skip test if KVM is not available.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>>>>>>>>> ---
>>>>>>>>> v3:
>>>>>>>>>    - add dedicated test instead of abusing 'numamem' one
>>>>>>>>>    - add 'kvm' prefix to the test name
>>>>>>>>>        ("Michael S. Tsirkin" <mst@redhat.com>)
>>>>>>>>> v2:
>>>>>>>>>    - switch to qtest_has_accel() API
>>>>>>>>>
>>>>>>>>> CC: thuth@redhat.com
>>>>>>>>> CC: lvivier@redhat.com
>>>>>>>>> ---
>>>>>>>>>   tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
>>>>>>>>>   1 file changed, 17 insertions(+)
>>>>>>>>>
>>>>>>>>> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
>>>>>>>>> index 51d3a4e239..1f6779da87 100644
>>>>>>>>> --- a/tests/qtest/bios-tables-test.c
>>>>>>>>> +++ b/tests/qtest/bios-tables-test.c
>>>>>>>>> @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
>>>>>>>>>       free_test_data(&data);
>>>>>>>>>   }
>>>>>>>>>   
>>>>>>>>> +static void test_acpi_q35_kvm_xapic(void)
>>>>>>>>> +{
>>>>>>>>> +    test_data data;
>>>>>>>>> +
>>>>>>>>> +    memset(&data, 0, sizeof(data));
>>>>>>>>> +    data.machine = MACHINE_Q35;
>>>>>>>>> +    data.variant = ".xapic";
>>>>>>>>> +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
>>>>>>>>> +                  " -numa node -numa node,memdev=ram0"
>>>>>>>>> +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
>>>>>>>>> +    free_test_data(&data);
>>>>>>>>> +}
>>>>>>>>> +
>>>>>>>>>   static void test_acpi_q35_tcg_nosmm(void)
>>>>>>>>>   {
>>>>>>>>>       test_data data;
>>>>>>>>
>>>>>>>>
>>>>>>>> This causes an annoying message each time I run it:
>>>>>>>>
>>>>>>>> qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
>>>>>>>>
>>>>>>>> what gives?
>>>>>>>
>>>>>>> it depends on kernel, see kvm_recommended_vcpus().
>>>>>>>
>>>>>>> We probably should bump it on upstream kernel side
>>>>>>> (it's much more than that in RHEL8).
>>>>>>>
>>>>>>> Is there anything that prevents bumping upstream kernel limits?
>>>>>>
>>>>>> what should we do with the annoying warning though?
>>>>>
>>>>> I'd leave it alone.
>>>>> What do you suggest?
>>>>>       
>>>>
>>>> reduce the value so a typical system does not trigger it?
>>>
>>> it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
>>> and 288 value additionally tests max limits
>>
>> Add a flag to disable the warning while running this specific test?
> 
> if it were qtest accel, it would be trivial but
> I'm not aware of something similar for tcg/kvm mode.
> Do you suggest to add to QEMU a CLI option for that?

I think you can still use qtest_enabled(), even if -accel kvm has been 
specified on top?

  Thomas
Igor Mammedov Oct. 20, 2021, 9:43 a.m. UTC | #10
On Wed, 20 Oct 2021 10:58:55 +0200
Thomas Huth <thuth@redhat.com> wrote:

> On 20/10/2021 10.53, Igor Mammedov wrote:
> > On Wed, 20 Oct 2021 04:18:07 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> >> On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:  
> >>> On Tue, 19 Oct 2021 07:44:38 -0400
> >>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >>>      
> >>>> On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:  
> >>>>> On Tue, 19 Oct 2021 06:23:40 -0400
> >>>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >>>>>        
> >>>>>> On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:  
> >>>>>>> On Mon, 18 Oct 2021 17:31:33 -0400
> >>>>>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >>>>>>>          
> >>>>>>>> On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:  
> >>>>>>>>> Set -smp 1,maxcpus=288 to test for ACPI code that
> >>>>>>>>> deal with CPUs with large APIC ID (>255).
> >>>>>>>>>
> >>>>>>>>> PS:
> >>>>>>>>> Test requires KVM and in-kernel irqchip support,
> >>>>>>>>> so skip test if KVM is not available.
> >>>>>>>>>
> >>>>>>>>> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> >>>>>>>>> ---
> >>>>>>>>> v3:
> >>>>>>>>>    - add dedicated test instead of abusing 'numamem' one
> >>>>>>>>>    - add 'kvm' prefix to the test name
> >>>>>>>>>        ("Michael S. Tsirkin" <mst@redhat.com>)
> >>>>>>>>> v2:
> >>>>>>>>>    - switch to qtest_has_accel() API
> >>>>>>>>>
> >>>>>>>>> CC: thuth@redhat.com
> >>>>>>>>> CC: lvivier@redhat.com
> >>>>>>>>> ---
> >>>>>>>>>   tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> >>>>>>>>>   1 file changed, 17 insertions(+)
> >>>>>>>>>
> >>>>>>>>> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> >>>>>>>>> index 51d3a4e239..1f6779da87 100644
> >>>>>>>>> --- a/tests/qtest/bios-tables-test.c
> >>>>>>>>> +++ b/tests/qtest/bios-tables-test.c
> >>>>>>>>> @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> >>>>>>>>>       free_test_data(&data);
> >>>>>>>>>   }
> >>>>>>>>>   
> >>>>>>>>> +static void test_acpi_q35_kvm_xapic(void)
> >>>>>>>>> +{
> >>>>>>>>> +    test_data data;
> >>>>>>>>> +
> >>>>>>>>> +    memset(&data, 0, sizeof(data));
> >>>>>>>>> +    data.machine = MACHINE_Q35;
> >>>>>>>>> +    data.variant = ".xapic";
> >>>>>>>>> +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> >>>>>>>>> +                  " -numa node -numa node,memdev=ram0"
> >>>>>>>>> +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> >>>>>>>>> +    free_test_data(&data);
> >>>>>>>>> +}
> >>>>>>>>> +
> >>>>>>>>>   static void test_acpi_q35_tcg_nosmm(void)
> >>>>>>>>>   {
> >>>>>>>>>       test_data data;  
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> This causes an annoying message each time I run it:
> >>>>>>>>
> >>>>>>>> qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> >>>>>>>>
> >>>>>>>> what gives?  
> >>>>>>>
> >>>>>>> it depends on kernel, see kvm_recommended_vcpus().
> >>>>>>>
> >>>>>>> We probably should bump it on upstream kernel side
> >>>>>>> (it's much more than that in RHEL8).
> >>>>>>>
> >>>>>>> Is there anything that prevents bumping upstream kernel limits?  
> >>>>>>
> >>>>>> what should we do with the annoying warning though?  
> >>>>>
> >>>>> I'd leave it alone.
> >>>>> What do you suggest?
> >>>>>         
> >>>>
> >>>> reduce the value so a typical system does not trigger it?  
> >>>
> >>> it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> >>> and 288 value additionally tests max limits  
> >>
> >> Add a flag to disable the warning while running this specific test?  
> > 
> > if it were qtest accel, it would be trivial but
> > I'm not aware of something similar for tcg/kvm mode.
> > Do you suggest to add to QEMU a CLI option for that?  
> 
> I think you can still use qtest_enabled(), even if -accel kvm has been 
> specified on top?
I don't see how
   accel/qtest/qtest.c:    ac->allowed = &qtest_allowed;
   ...
   accel_init_machine(): *(acc->allowed) = true;

>   Thomas
>
Michael S. Tsirkin Oct. 20, 2021, 9:46 a.m. UTC | #11
On Wed, Oct 20, 2021 at 10:53:48AM +0200, Igor Mammedov wrote:
> On Wed, 20 Oct 2021 04:18:07 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:
> > > On Tue, 19 Oct 2021 07:44:38 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:  
> > > > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >     
> > > > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:    
> > > > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > >       
> > > > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:      
> > > > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > > > 
> > > > > > > > > PS:
> > > > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > > > so skip test if KVM is not available.
> > > > > > > > > 
> > > > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > > > ---
> > > > > > > > > v3:
> > > > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > > > >   - add 'kvm' prefix to the test name
> > > > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > > > v2:
> > > > > > > > >   - switch to qtest_has_accel() API
> > > > > > > > > 
> > > > > > > > > CC: thuth@redhat.com
> > > > > > > > > CC: lvivier@redhat.com
> > > > > > > > > ---
> > > > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > > > 
> > > > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > > > >      free_test_data(&data);
> > > > > > > > >  }
> > > > > > > > >  
> > > > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > > > +{
> > > > > > > > > +    test_data data;
> > > > > > > > > +
> > > > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > > > +    data.variant = ".xapic";
> > > > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > > > +    free_test_data(&data);
> > > > > > > > > +}
> > > > > > > > > +
> > > > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > > > >  {
> > > > > > > > >      test_data data;        
> > > > > > > > 
> > > > > > > > 
> > > > > > > > This causes an annoying message each time I run it:
> > > > > > > > 
> > > > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > > > 
> > > > > > > > what gives?      
> > > > > > > 
> > > > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > > > 
> > > > > > > We probably should bump it on upstream kernel side
> > > > > > > (it's much more than that in RHEL8).
> > > > > > > 
> > > > > > > Is there anything that prevents bumping upstream kernel limits?      
> > > > > > 
> > > > > > what should we do with the annoying warning though?    
> > > > > 
> > > > > I'd leave it alone.
> > > > > What do you suggest?
> > > > >      
> > > > 
> > > > reduce the value so a typical system does not trigger it?  
> > > 
> > > it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> > > and 288 value additionally tests max limits  
> > 
> > Add a flag to disable the warning while running this specific test?
> 
> if it were qtest accel, it would be trivial but
> I'm not aware of something similar for tcg/kvm mode.
> Do you suggest to add to QEMU a CLI option for that?

Yea, like "x-kvm-dont-warn-about-recommended-cpu-limit".



> 
> 
> > 
> > > >   
> > > > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > > > >  int main(int argc, char *argv[])
> > > > > > > > >  {
> > > > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > > > >      int ret;
> > > > > > > > >  
> > > > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > > > >          }
> > > > > > > > > +        if (has_kvm) {
> > > > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > > > +        }
> > > > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > > > -- 
> > > > > > > > > 2.27.0        
> > > > > > > >       
> > > > > >     
> > > >   
> >
Igor Mammedov Oct. 20, 2021, 10:01 a.m. UTC | #12
On Wed, 20 Oct 2021 05:46:40 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Wed, Oct 20, 2021 at 10:53:48AM +0200, Igor Mammedov wrote:
> > On Wed, 20 Oct 2021 04:18:07 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:  
> > > > On Tue, 19 Oct 2021 07:44:38 -0400
> > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > >     
> > > > > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:    
> > > > > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > >       
> > > > > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:      
> > > > > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > > >         
> > > > > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:        
> > > > > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > > > > 
> > > > > > > > > > PS:
> > > > > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > > > > so skip test if KVM is not available.
> > > > > > > > > > 
> > > > > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > > > > ---
> > > > > > > > > > v3:
> > > > > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > > > > >   - add 'kvm' prefix to the test name
> > > > > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > > > > v2:
> > > > > > > > > >   - switch to qtest_has_accel() API
> > > > > > > > > > 
> > > > > > > > > > CC: thuth@redhat.com
> > > > > > > > > > CC: lvivier@redhat.com
> > > > > > > > > > ---
> > > > > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > > > > 
> > > > > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > > > > >      free_test_data(&data);
> > > > > > > > > >  }
> > > > > > > > > >  
> > > > > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > > > > +{
> > > > > > > > > > +    test_data data;
> > > > > > > > > > +
> > > > > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > > > > +    data.variant = ".xapic";
> > > > > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > > > > +    free_test_data(&data);
> > > > > > > > > > +}
> > > > > > > > > > +
> > > > > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > > > > >  {
> > > > > > > > > >      test_data data;          
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > This causes an annoying message each time I run it:
> > > > > > > > > 
> > > > > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > > > > 
> > > > > > > > > what gives?        
> > > > > > > > 
> > > > > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > > > > 
> > > > > > > > We probably should bump it on upstream kernel side
> > > > > > > > (it's much more than that in RHEL8).
> > > > > > > > 
> > > > > > > > Is there anything that prevents bumping upstream kernel limits?        
> > > > > > > 
> > > > > > > what should we do with the annoying warning though?      
> > > > > > 
> > > > > > I'd leave it alone.
> > > > > > What do you suggest?
> > > > > >        
> > > > > 
> > > > > reduce the value so a typical system does not trigger it?    
> > > > 
> > > > it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> > > > and 288 value additionally tests max limits    
> > > 
> > > Add a flag to disable the warning while running this specific test?  
> > 
> > if it were qtest accel, it would be trivial but
> > I'm not aware of something similar for tcg/kvm mode.
> > Do you suggest to add to QEMU a CLI option for that?  
> 
> Yea, like "x-kvm-dont-warn-about-recommended-cpu-limit".

I'd make it more generic "x-used-with-qtest",
but if we can get away without CLI option somehow,
I'd prefer that. Maybe we can (ab)use some env var
to detect that we are running under qtest?




> 
> 
> 
> > 
> >   
> > >   
> > > > >     
> > > > > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > > > > >  int main(int argc, char *argv[])
> > > > > > > > > >  {
> > > > > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > > > > >      int ret;
> > > > > > > > > >  
> > > > > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > > > > >          }
> > > > > > > > > > +        if (has_kvm) {
> > > > > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > > > > +        }
> > > > > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > > > > -- 
> > > > > > > > > > 2.27.0          
> > > > > > > > >         
> > > > > > >       
> > > > >     
> > >   
>
Michael S. Tsirkin Oct. 20, 2021, 10:03 a.m. UTC | #13
On Wed, Oct 20, 2021 at 12:01:49PM +0200, Igor Mammedov wrote:
> On Wed, 20 Oct 2021 05:46:40 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Wed, Oct 20, 2021 at 10:53:48AM +0200, Igor Mammedov wrote:
> > > On Wed, 20 Oct 2021 04:18:07 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:  
> > > > > On Tue, 19 Oct 2021 07:44:38 -0400
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >     
> > > > > > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:    
> > > > > > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > >       
> > > > > > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:      
> > > > > > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > > > >         
> > > > > > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:        
> > > > > > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > > > > > 
> > > > > > > > > > > PS:
> > > > > > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > > > > > so skip test if KVM is not available.
> > > > > > > > > > > 
> > > > > > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > > > > > ---
> > > > > > > > > > > v3:
> > > > > > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > > > > > >   - add 'kvm' prefix to the test name
> > > > > > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > > > > > v2:
> > > > > > > > > > >   - switch to qtest_has_accel() API
> > > > > > > > > > > 
> > > > > > > > > > > CC: thuth@redhat.com
> > > > > > > > > > > CC: lvivier@redhat.com
> > > > > > > > > > > ---
> > > > > > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > > > > > 
> > > > > > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > > > > > >      free_test_data(&data);
> > > > > > > > > > >  }
> > > > > > > > > > >  
> > > > > > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > > > > > +{
> > > > > > > > > > > +    test_data data;
> > > > > > > > > > > +
> > > > > > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > > > > > +    data.variant = ".xapic";
> > > > > > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > > > > > +    free_test_data(&data);
> > > > > > > > > > > +}
> > > > > > > > > > > +
> > > > > > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > > > > > >  {
> > > > > > > > > > >      test_data data;          
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > This causes an annoying message each time I run it:
> > > > > > > > > > 
> > > > > > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > > > > > 
> > > > > > > > > > what gives?        
> > > > > > > > > 
> > > > > > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > > > > > 
> > > > > > > > > We probably should bump it on upstream kernel side
> > > > > > > > > (it's much more than that in RHEL8).
> > > > > > > > > 
> > > > > > > > > Is there anything that prevents bumping upstream kernel limits?        
> > > > > > > > 
> > > > > > > > what should we do with the annoying warning though?      
> > > > > > > 
> > > > > > > I'd leave it alone.
> > > > > > > What do you suggest?
> > > > > > >        
> > > > > > 
> > > > > > reduce the value so a typical system does not trigger it?    
> > > > > 
> > > > > it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> > > > > and 288 value additionally tests max limits    
> > > > 
> > > > Add a flag to disable the warning while running this specific test?  
> > > 
> > > if it were qtest accel, it would be trivial but
> > > I'm not aware of something similar for tcg/kvm mode.
> > > Do you suggest to add to QEMU a CLI option for that?  
> > 
> > Yea, like "x-kvm-dont-warn-about-recommended-cpu-limit".
> 
> I'd make it more generic "x-used-with-qtest",
> but if we can get away without CLI option somehow,
> I'd prefer that. Maybe we can (ab)use some env var
> to detect that we are running under qtest?

Ugh. An option is way cleaner.

> 
> 
> 
> > 
> > 
> > 
> > > 
> > >   
> > > >   
> > > > > >     
> > > > > > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > > > > > >  int main(int argc, char *argv[])
> > > > > > > > > > >  {
> > > > > > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > > > > > >      int ret;
> > > > > > > > > > >  
> > > > > > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > > > > > >          }
> > > > > > > > > > > +        if (has_kvm) {
> > > > > > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > > > > > +        }
> > > > > > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > > > > > -- 
> > > > > > > > > > > 2.27.0          
> > > > > > > > > >         
> > > > > > > >       
> > > > > >     
> > > >   
> >
diff mbox series

Patch

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 51d3a4e239..1f6779da87 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1033,6 +1033,19 @@  static void test_acpi_q35_tcg_numamem(void)
     free_test_data(&data);
 }
 
+static void test_acpi_q35_kvm_xapic(void)
+{
+    test_data data;
+
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_Q35;
+    data.variant = ".xapic";
+    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
+                  " -numa node -numa node,memdev=ram0"
+                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
+    free_test_data(&data);
+}
+
 static void test_acpi_q35_tcg_nosmm(void)
 {
     test_data data;
@@ -1506,6 +1519,7 @@  static void test_acpi_oem_fields_virt(void)
 int main(int argc, char *argv[])
 {
     const char *arch = qtest_get_arch();
+    const bool has_kvm = qtest_has_accel("kvm");
     int ret;
 
     g_test_init(&argc, &argv, NULL);
@@ -1561,6 +1575,9 @@  int main(int argc, char *argv[])
         if (strcmp(arch, "x86_64") == 0) {
             qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
         }
+        if (has_kvm) {
+            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
+        }
     } else if (strcmp(arch, "aarch64") == 0) {
         qtest_add_func("acpi/virt", test_acpi_virt_tcg);
         qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);