Re: [kvm-unit-test v2 2/4] KVM nVMX: test_vmcs_page_* functions need to accept alignment size as a parameter

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

 



On Tue, Dec 11, 2018 at 5:29 PM Krish Sadhukhan
<krish.sadhukhan@xxxxxxxxxx> wrote:
>
> .. because not all alignments fall on page size boundary.
>
> Signed-off-by: Krish Sadhukhan <krish.sadhukhan@xxxxxxxxxx>
> Reviewed-by: Mihai Carabas <mihai.carabas@xxxxxxxxxx>
> ---
>  x86/vmx_tests.c | 40 ++++++++++++++++++++++------------------
>  1 file changed, 22 insertions(+), 18 deletions(-)
>
> diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c
> index bdd23df..3e6babe 100644
> --- a/x86/vmx_tests.c
> +++ b/x86/vmx_tests.c
> @@ -3463,16 +3463,17 @@ static void test_vmcs_addr(const char *name,
>                            enum Encoding encoding,
>                            bool ignored,
>                            bool xfail_beyond_mapped_ram,
> -                          u64 addr)
> +                          u64 addr,
> +                          u64 align)
>  {
>         bool xfail =
>                 (xfail_beyond_mapped_ram &&
> -                addr > fwcfg_get_u64(FW_CFG_RAM_SIZE) - PAGE_SIZE &&
> +                addr > fwcfg_get_u64(FW_CFG_RAM_SIZE) - align &&
>                  addr < (1ul << cpuid_maxphyaddr()));
>
>         report_prefix_pushf("%s = %lx", name, addr);
>         vmcs_write(encoding, addr);
> -       test_vmx_controls(ignored || (IS_ALIGNED(addr, PAGE_SIZE) &&
> +       test_vmx_controls(ignored || (IS_ALIGNED(addr, align) &&
>                                   addr < (1ul << cpuid_maxphyaddr())),
>                           xfail);
>         report_prefix_pop();
> @@ -3485,25 +3486,26 @@ static void test_vmcs_addr(const char *name,
>  static void test_vmcs_addr_values(const char *name,
>                                   enum Encoding encoding,
>                                   bool ignored,
> -                                 bool xfail_beyond_mapped_ram)
> +                                 bool xfail_beyond_mapped_ram,
> +                                 u64 align)
s/align/alignment/, and move before 'ignored'?
>  {
>         unsigned i;
>         u64 orig_val = vmcs_read(encoding);
>
>         for (i = 0; i < 64; i++)
>                 test_vmcs_addr(name, encoding, ignored,
> -                              xfail_beyond_mapped_ram, 1ul << i);
> +                              xfail_beyond_mapped_ram, 1ul << i, align);
>
>         test_vmcs_addr(name, encoding, ignored,
> -                      xfail_beyond_mapped_ram, PAGE_SIZE - 1);
> +                      xfail_beyond_mapped_ram, PAGE_SIZE - 1, align);
Should PAGE_SIZE, here and below, be changed to align?
>         test_vmcs_addr(name, encoding, ignored,
> -                      xfail_beyond_mapped_ram, PAGE_SIZE);
> +                      xfail_beyond_mapped_ram, PAGE_SIZE, align);
>         test_vmcs_addr(name, encoding, ignored,
>                        xfail_beyond_mapped_ram,
> -                     (1ul << cpuid_maxphyaddr()) - PAGE_SIZE);
> +                     (1ul << cpuid_maxphyaddr()) - PAGE_SIZE, align);
>         test_vmcs_addr(name, encoding, ignored,
>                        xfail_beyond_mapped_ram,
> -                      -1ul);
> +                      -1ul, align);
>
>         vmcs_write(encoding, orig_val);
>  }
> @@ -3516,7 +3518,7 @@ static void test_vmcs_addr_reference(u32 control_bit, enum Encoding field,
>                                      const char *field_name,
>                                      const char *control_name,
>                                      bool xfail_beyond_mapped_ram,
> -                                    bool control_primary)
> +                                    bool control_primary, u64 align)
s/align/alignment/?



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux