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/?