lazy_mmu_mode_kunit.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. #include <kunit/test.h>
  3. #include <linux/pgtable.h>
  4. MODULE_IMPORT_NS("EXPORTED_FOR_KUNIT_TESTING");
  5. static void expect_not_active(struct kunit *test)
  6. {
  7. KUNIT_EXPECT_FALSE(test, is_lazy_mmu_mode_active());
  8. }
  9. static void expect_active(struct kunit *test)
  10. {
  11. KUNIT_EXPECT_TRUE(test, is_lazy_mmu_mode_active());
  12. }
  13. static void lazy_mmu_mode_active(struct kunit *test)
  14. {
  15. expect_not_active(test);
  16. lazy_mmu_mode_enable();
  17. expect_active(test);
  18. {
  19. /* Nested section */
  20. lazy_mmu_mode_enable();
  21. expect_active(test);
  22. lazy_mmu_mode_disable();
  23. expect_active(test);
  24. }
  25. {
  26. /* Paused section */
  27. lazy_mmu_mode_pause();
  28. expect_not_active(test);
  29. {
  30. /* No effect (paused) */
  31. lazy_mmu_mode_enable();
  32. expect_not_active(test);
  33. lazy_mmu_mode_disable();
  34. expect_not_active(test);
  35. lazy_mmu_mode_pause();
  36. expect_not_active(test);
  37. lazy_mmu_mode_resume();
  38. expect_not_active(test);
  39. }
  40. lazy_mmu_mode_resume();
  41. expect_active(test);
  42. }
  43. lazy_mmu_mode_disable();
  44. expect_not_active(test);
  45. }
  46. static struct kunit_case lazy_mmu_mode_test_cases[] = {
  47. KUNIT_CASE(lazy_mmu_mode_active),
  48. {}
  49. };
  50. static struct kunit_suite lazy_mmu_mode_test_suite = {
  51. .name = "lazy_mmu_mode",
  52. .test_cases = lazy_mmu_mode_test_cases,
  53. };
  54. kunit_test_suite(lazy_mmu_mode_test_suite);
  55. MODULE_DESCRIPTION("Tests for the lazy MMU mode");
  56. MODULE_LICENSE("GPL");