[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] XTF: tests SPEC_CTRL added bits
On Tue, Jan 30, 2024 at 11:42:43AM +0100, Jan Beulich wrote: > On 30.01.2024 11:27, Roger Pau Monne wrote: > > Dummy set/clear tests for additional spec_ctrl bits. > > --- > > docs/all-tests.dox | 2 + > > tests/test/Makefile | 9 ++++ > > tests/test/main.c | 100 ++++++++++++++++++++++++++++++++++++++++++++ > > 3 files changed, 111 insertions(+) > > create mode 100644 tests/test/Makefile > > create mode 100644 tests/test/main.c > > I'm puzzled: Why "test"? That doesn't describe in any way what this test > is about. That's just my place holder for random XTF stuff. I don't intend this to be committed. > > --- /dev/null > > +++ b/tests/test/Makefile > > @@ -0,0 +1,9 @@ > > +include $(ROOT)/build/common.mk > > + > > +NAME := test > > +CATEGORY := utility > > +TEST-ENVS := hvm32 pv64 > > Any reason for this limitation? Just wanted a PV and an HVM context. > > --- /dev/null > > +++ b/tests/test/main.c > > @@ -0,0 +1,100 @@ > > +/** > > + * @file tests/test/main.c > > + * @ref test-test > > + * > > + * @page test-test test > > + * > > + * @todo Docs for test-test > > + * > > + * @see tests/test/main.c > > + */ > > +#include <xtf.h> > > + > > +#define MSR_SPEC_CTRL 0x00000048 > > +#define SPEC_CTRL_IPRED_DIS_U (_AC(1, ULL) << 3) > > +#define SPEC_CTRL_IPRED_DIS_S (_AC(1, ULL) << 4) > > +#define SPEC_CTRL_RRSBA_DIS_U (_AC(1, ULL) << 5) > > +#define SPEC_CTRL_RRSBA_DIS_S (_AC(1, ULL) << 6) > > +#define SPEC_CTRL_DDP_DIS_U (_AC(1, ULL) << 8) > > +#define SPEC_CTRL_BHI_DIS_S (_AC(1, ULL) << 10) > > + > > +const char test_title[] = "SPEC_CTRL"; > > + > > +static void update_spec_ctrl(uint64_t mask, bool set) > > +{ > > + uint64_t spec_ctrl = rdmsr(MSR_SPEC_CTRL); > > + > > + if ( set ) > > + spec_ctrl |= mask; > > + else > > + spec_ctrl &= ~mask; > > + > > + wrmsr(MSR_SPEC_CTRL, spec_ctrl); > > +} > > + > > +static void assert_spec_ctrl(uint64_t mask, bool set) > > +{ > > + uint64_t spec_ctrl = rdmsr(MSR_SPEC_CTRL); > > + > > + if ( (spec_ctrl & mask) != (set ? mask : 0) ) > > + { > > + xtf_failure("SPEC_CTRL expected: %#" PRIx64 " got: %#" PRIx64 "\n", > > + set ? (spec_ctrl | mask) : (spec_ctrl & ~mask), > > + spec_ctrl); > > + xtf_exit(); > > + } > > +} > > + > > +static void test_loop(uint64_t mask) > > +{ > > + update_spec_ctrl(mask, true); > > + assert_spec_ctrl(mask, true); > > + /* Ensure context switch to Xen. */ > > + hypercall_yield(); > > I'm afraid yielding doesn't guarantee context switching in Xen, It will ensure a vmexit/trap, which is what I was after here. Maybe the comment should be "Trap into Xen." or some such. It wasn't about ensuring VM context switching. Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |