Re: [PATCH v2 4/5] nitro_enclaves: test: Use kunit_test_suite() macro

Paraschiv, Andra-Irina
2022-06-21T15:58:12Z

On 21.06.2022 11:53, David Gow wrote:
>
> The kunit_test_suite() macro previously conflicted with module_init,
> making it unsuitable for use in the nitro_enclaves test. Now that it's
> fixed, we can use it instead of a custom call into internal KUnit
> functions to run the test.
>
> As a side-effect, this means that the test results are properly included
> with other suites when built-in. To celebrate, enable the test by
> default when KUNIT_ALL_TESTS is set (and NITRO_ENCLAVES enabled).
>
> The nitro_enclave tests can now be run via kunit_tool with:
> ./tools/testing/kunit/kunit.py run --arch=x86_64 \
> --kconfig_add CONFIG_PCI=y --kconfig_add CONFIG_SMP=y \
> --kconfig_add CONFIG_HOTPLUG_CPU=y \
> --kconfig_add CONFIG_VIRT_DRIVERS=y \
> --kconfig_add CONFIG_NITRO_ENCLAVES=y \
> 'ne_misc_dev_test'
>
> (This is a pretty long command, so it may be worth adding a .kunitconfig
> file at some point, instead.)
>
> Acked-by: Paraschiv, Andra-Irina <andraprs@amazon.com>
> Signed-off-by: David Gow <davidgow@google.com>
> ---
>
> Changes since v1:
> https://lore.kernel.org/linux-kselftest/20220618090310.1174932-5-davidgow@google.com/
> - Move the mistakenly-added thunderbolt Kconfig to the previous patch
> (Thanks Andra)
> - Add Andra's Acked-by tag.
>
> ---
> drivers/virt/nitro_enclaves/Kconfig | 5 ++--
> drivers/virt/nitro_enclaves/ne_misc_dev.c | 27 -------------------
> .../virt/nitro_enclaves/ne_misc_dev_test.c | 5 +---
> 3 files changed, 4 insertions(+), 33 deletions(-)

Reviewed-by: Andra Paraschiv <andraprs@amazon.com>

Thank you, David, for the patch updates.

Added Greg to the list of mail recipients, to be aware of this patch
changes, given that the Nitro Enclaves kernel driver is tracked via the
char-misc tree.

Thanks,
Andra

>
> diff --git a/drivers/virt/nitro_enclaves/Kconfig b/drivers/virt/nitro_enclaves/Kconfig
> index 2d3d98158121..ce91add81401 100644
> --- a/drivers/virt/nitro_enclaves/Kconfig
> +++ b/drivers/virt/nitro_enclaves/Kconfig
> @@ -16,8 +16,9 @@ config NITRO_ENCLAVES
> The module will be called nitro_enclaves.
>
> config NITRO_ENCLAVES_MISC_DEV_TEST
> - bool "Tests for the misc device functionality of the Nitro Enclaves"
> - depends on NITRO_ENCLAVES && KUNIT=y
> + bool "Tests for the misc device functionality of the Nitro Enclaves" if !KUNIT_ALL_TESTS
> + depends on NITRO_ENCLAVES && KUNIT
> + default KUNIT_ALL_TESTS
> help
> Enable KUnit tests for the misc device functionality of the Nitro
> Enclaves. Select this option only if you will boot the kernel for
> diff --git a/drivers/virt/nitro_enclaves/ne_misc_dev.c b/drivers/virt/nitro_enclaves/ne_misc_dev.c
> index 20c881b6a4b6..241b94f62e56 100644
> --- a/drivers/virt/nitro_enclaves/ne_misc_dev.c
> +++ b/drivers/virt/nitro_enclaves/ne_misc_dev.c
> @@ -1759,35 +1759,10 @@ static long ne_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
>
> #if defined(CONFIG_NITRO_ENCLAVES_MISC_DEV_TEST)
> #include "ne_misc_dev_test.c"
> -
> -static inline int ne_misc_dev_test_init(void)
> -{
> - return __kunit_test_suites_init(ne_misc_dev_test_suites);
> -}
> -
> -static inline void ne_misc_dev_test_exit(void)
> -{
> - __kunit_test_suites_exit(ne_misc_dev_test_suites);
> -}
> -#else
> -static inline int ne_misc_dev_test_init(void)
> -{
> - return 0;
> -}
> -
> -static inline void ne_misc_dev_test_exit(void)
> -{
> -}
> #endif
>
> static int __init ne_init(void)
> {
> - int rc = 0;
> -
> - rc = ne_misc_dev_test_init();
> - if (rc < 0)
> - return rc;
> -
> mutex_init(&ne_cpu_pool.mutex);
>
> return pci_register_driver(&ne_pci_driver);
> @@ -1798,8 +1773,6 @@ static void __exit ne_exit(void)
> pci_unregister_driver(&ne_pci_driver);
>
> ne_teardown_cpu_pool();
> -
> - ne_misc_dev_test_exit();
> }
>
> module_init(ne_init);
> diff --git a/drivers/virt/nitro_enclaves/ne_misc_dev_test.c b/drivers/virt/nitro_enclaves/ne_misc_dev_test.c
> index 265797bed0ea..74df43b925be 100644
> --- a/drivers/virt/nitro_enclaves/ne_misc_dev_test.c
> +++ b/drivers/virt/nitro_enclaves/ne_misc_dev_test.c
> @@ -151,7 +151,4 @@ static struct kunit_suite ne_misc_dev_test_suite = {
> .test_cases = ne_misc_dev_test_cases,
> };
>
> -static struct kunit_suite *ne_misc_dev_test_suites[] = {
> - &ne_misc_dev_test_suite,
> - NULL
> -};
> +kunit_test_suite(ne_misc_dev_test_suite);
> --
> 2.37.0.rc0.104.g0611611a94-goog
>

Amazon Development Center (Romania) S.R.L. registered office: 27A Sf. Lazar Street, UBC5, floor 2, Iasi, Iasi County, 700045, Romania. Registered in Romania. Registration number J22/2621/2005.