Message ID | 20220715095925.12881-1-vincent.stehle@laposte.net |
---|---|
State | Accepted |
Headers | show |
Series | support/testing: add test for msr-tools | expand |
Vincent, All, On 2022-07-15 11:59 +0200, Vincent Stehlé via buildroot spake thusly: > Add a simple test to verify that msr-tools are working. > > The test needs to build a custom x86_64 kernel with support for CPUID and > MSR. > > As the TSC_AUX MSR is emulated on qemu we can use it to test that a value > written with wrmsr can indeed be read back with rdmsr. > > Signed-off-by: Vincent Stehlé <vincent.stehle@laposte.net> Applied to master, thanks. [--SNIP--] > I have verified that this test works fine locally and on gitlab. Worked here too. > It is expected to have a trivial conflict with this previous patch[1] on the > DEVELOPERS file. Oh, the sneaky way to incite a maintainer to apply another patch! ;-) (I'll go there now) Regards, Yann E. MORIN. > Best regards, > Vincent. > > [1]: https://lists.buildroot.org/pipermail/buildroot/2022-July/646008.html > > > DEVELOPERS | 1 + > .../testing/tests/package/test_msr_tools.py | 50 +++++++++++++++++++ > .../tests/package/test_msr_tools/linux.config | 2 + > 3 files changed, 53 insertions(+) > create mode 100644 support/testing/tests/package/test_msr_tools.py > create mode 100644 support/testing/tests/package/test_msr_tools/linux.config > > diff --git a/DEVELOPERS b/DEVELOPERS > index 0afd697b6c..8753f0c17e 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -2917,6 +2917,7 @@ F: configs/uevm5432_defconfig > F: package/i7z/ > F: package/msr-tools/ > F: package/pixz/ > +F: support/testing/tests/package/test_msr_tools* > > N: Vinicius Tinti <viniciustinti@gmail.com> > F: package/python-thrift/ > diff --git a/support/testing/tests/package/test_msr_tools.py b/support/testing/tests/package/test_msr_tools.py > new file mode 100644 > index 0000000000..4d62742a5f > --- /dev/null > +++ b/support/testing/tests/package/test_msr_tools.py > @@ -0,0 +1,50 @@ > +import os > + > +import infra.basetest > + > + > +class TestMsrTools(infra.basetest.BRTest): > + config = \ > + """ > + BR2_x86_64=y > + BR2_x86_corei7=y > + BR2_TOOLCHAIN_EXTERNAL=y > + BR2_LINUX_KERNEL=y > + BR2_LINUX_KERNEL_CUSTOM_VERSION=y > + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55" > + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y > + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config" > + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" > + BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y > + BR2_PACKAGE_MSR_TOOLS=y > + BR2_TARGET_ROOTFS_CPIO=y > + # BR2_TARGET_ROOTFS_TAR is not set > + """.format( > + infra.filepath("tests/package/test_msr_tools/linux.config")) > + > + def test_run(self): > + kernel = os.path.join(self.builddir, "images", "bzImage") > + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") > + self.emulator.boot( > + arch="x86_64", > + kernel=kernel, kernel_cmdline=["console=ttyS0"], > + options=["-cpu", "Nehalem", "-m", "320", "-initrd", cpio_file] > + ) > + self.emulator.login() > + > + # CPU ID. > + cmd = "cpuid" > + self.assertRunOk(cmd) > + > + # Write MSR. > + # We write to TSC_AUX. > + cmd = "wrmsr 0xc0000103 0x1234567812345678" > + self.assertRunOk(cmd) > + > + # Read MSR. > + # We read back the TSC_AUX and we verify that we read back the correct > + # value. > + cmd = "rdmsr 0xc0000103" > + output, exit_code = self.emulator.run(cmd) > + self.assertEqual(exit_code, 0) > + self.assertEqual(output[0], "1234567812345678") > diff --git a/support/testing/tests/package/test_msr_tools/linux.config b/support/testing/tests/package/test_msr_tools/linux.config > new file mode 100644 > index 0000000000..8fe09db87b > --- /dev/null > +++ b/support/testing/tests/package/test_msr_tools/linux.config > @@ -0,0 +1,2 @@ > +CONFIG_X86_CPUID=y > +CONFIG_X86_MSR=y > -- > 2.35.1 > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
diff --git a/DEVELOPERS b/DEVELOPERS index 0afd697b6c..8753f0c17e 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2917,6 +2917,7 @@ F: configs/uevm5432_defconfig F: package/i7z/ F: package/msr-tools/ F: package/pixz/ +F: support/testing/tests/package/test_msr_tools* N: Vinicius Tinti <viniciustinti@gmail.com> F: package/python-thrift/ diff --git a/support/testing/tests/package/test_msr_tools.py b/support/testing/tests/package/test_msr_tools.py new file mode 100644 index 0000000000..4d62742a5f --- /dev/null +++ b/support/testing/tests/package/test_msr_tools.py @@ -0,0 +1,50 @@ +import os + +import infra.basetest + + +class TestMsrTools(infra.basetest.BRTest): + config = \ + """ + BR2_x86_64=y + BR2_x86_corei7=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config" + BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" + BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y + BR2_PACKAGE_MSR_TOOLS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/test_msr_tools/linux.config")) + + def test_run(self): + kernel = os.path.join(self.builddir, "images", "bzImage") + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot( + arch="x86_64", + kernel=kernel, kernel_cmdline=["console=ttyS0"], + options=["-cpu", "Nehalem", "-m", "320", "-initrd", cpio_file] + ) + self.emulator.login() + + # CPU ID. + cmd = "cpuid" + self.assertRunOk(cmd) + + # Write MSR. + # We write to TSC_AUX. + cmd = "wrmsr 0xc0000103 0x1234567812345678" + self.assertRunOk(cmd) + + # Read MSR. + # We read back the TSC_AUX and we verify that we read back the correct + # value. + cmd = "rdmsr 0xc0000103" + output, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + self.assertEqual(output[0], "1234567812345678") diff --git a/support/testing/tests/package/test_msr_tools/linux.config b/support/testing/tests/package/test_msr_tools/linux.config new file mode 100644 index 0000000000..8fe09db87b --- /dev/null +++ b/support/testing/tests/package/test_msr_tools/linux.config @@ -0,0 +1,2 @@ +CONFIG_X86_CPUID=y +CONFIG_X86_MSR=y
Add a simple test to verify that msr-tools are working. The test needs to build a custom x86_64 kernel with support for CPUID and MSR. As the TSC_AUX MSR is emulated on qemu we can use it to test that a value written with wrmsr can indeed be read back with rdmsr. Signed-off-by: Vincent Stehlé <vincent.stehle@laposte.net> --- Hi, I have verified that this test works fine locally and on gitlab. It is expected to have a trivial conflict with this previous patch[1] on the DEVELOPERS file. Best regards, Vincent. [1]: https://lists.buildroot.org/pipermail/buildroot/2022-July/646008.html DEVELOPERS | 1 + .../testing/tests/package/test_msr_tools.py | 50 +++++++++++++++++++ .../tests/package/test_msr_tools/linux.config | 2 + 3 files changed, 53 insertions(+) create mode 100644 support/testing/tests/package/test_msr_tools.py create mode 100644 support/testing/tests/package/test_msr_tools/linux.config