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 12/12/2018 11:01 AM, Jim Mattson wrote:
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'?

Using the full word is better, but I used 'align' to save some space :). If you feel strongly about it, I will change it.

I will move the parameter 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?

The two parameters are semantically different even though both are using PAGE_SIZE.  That's why I didn't parameterize the address parameter.

         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