All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/base/power/runtime-test.c:22 pm_runtime_depth_test() warn: pm_runtime_get_sync() also returns 1 on success
@ 2026-01-09 11:02 ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2026-01-09 10:36 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Brian Norris <briannorris@chromium.org>
CC: "Rafael J. Wysocki" <rjw@rjwysocki.net>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   623fb9912f6af600cda3b6bd166ac738c1115ef4
commit: 7f7acd193ba8aaa8ed07cfadc335bb17a991fd42 PM: runtime: Add basic kunit tests for API contracts
date:   3 months ago
:::::: branch date: 8 hours ago
:::::: commit date: 3 months ago
config: x86_64-randconfig-161-20260109 (https://download.01.org/0day-ci/archive/20260109/202601091832.YueBSiOb-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch version: v0.5.0-8985-g2614ff1a

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202601091832.YueBSiOb-lkp@intel.com/

New smatch warnings:
drivers/base/power/runtime-test.c:22 pm_runtime_depth_test() warn: pm_runtime_get_sync() also returns 1 on success
drivers/base/power/runtime-test.c:78 pm_runtime_idle_test() warn: pm_runtime_get_sync() also returns 1 on success
drivers/base/power/runtime-test.c:182 pm_runtime_error_test() warn: pm_runtime_get_sync() also returns 1 on success

Old smatch warnings:
drivers/base/power/runtime-test.c:185 pm_runtime_error_test() warn: pm_runtime_get_sync() also returns 1 on success

vim +22 drivers/base/power/runtime-test.c

7f7acd193ba8aa Brian Norris 2025-09-25   12  
7f7acd193ba8aa Brian Norris 2025-09-25   13  static void pm_runtime_depth_test(struct kunit *test)
7f7acd193ba8aa Brian Norris 2025-09-25   14  {
7f7acd193ba8aa Brian Norris 2025-09-25   15  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aa Brian Norris 2025-09-25   16  
7f7acd193ba8aa Brian Norris 2025-09-25   17  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aa Brian Norris 2025-09-25   18  
7f7acd193ba8aa Brian Norris 2025-09-25   19  	pm_runtime_enable(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   20  
7f7acd193ba8aa Brian Norris 2025-09-25   21  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  @22  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   23  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   24  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_get_sync(dev)); /* "already active" */
7f7acd193ba8aa Brian Norris 2025-09-25   25  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   26  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   27  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   28  }
7f7acd193ba8aa Brian Norris 2025-09-25   29  
7f7acd193ba8aa Brian Norris 2025-09-25   30  /* Test pm_runtime_put() and friends when already suspended. */
7f7acd193ba8aa Brian Norris 2025-09-25   31  static void pm_runtime_already_suspended_test(struct kunit *test)
7f7acd193ba8aa Brian Norris 2025-09-25   32  {
7f7acd193ba8aa Brian Norris 2025-09-25   33  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aa Brian Norris 2025-09-25   34  
7f7acd193ba8aa Brian Norris 2025-09-25   35  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aa Brian Norris 2025-09-25   36  
7f7acd193ba8aa Brian Norris 2025-09-25   37  	pm_runtime_enable(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   38  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   39  
7f7acd193ba8aa Brian Norris 2025-09-25   40  	pm_runtime_get_noresume(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   41  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_barrier(dev)); /* no wakeup needed */
7f7acd193ba8aa Brian Norris 2025-09-25   42  	pm_runtime_put(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   43  
7f7acd193ba8aa Brian Norris 2025-09-25   44  	pm_runtime_get_noresume(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   45  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_put_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   46  
7f7acd193ba8aa Brian Norris 2025-09-25   47  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_suspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   48  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   49  	KUNIT_EXPECT_EQ(test, 1, pm_request_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   50  
7f7acd193ba8aa Brian Norris 2025-09-25   51  	pm_runtime_get_noresume(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   52  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_put_sync_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   53  
7f7acd193ba8aa Brian Norris 2025-09-25   54  	pm_runtime_get_noresume(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   55  	pm_runtime_put_autosuspend(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   56  
7f7acd193ba8aa Brian Norris 2025-09-25   57  	/* Grab 2 refcounts */
7f7acd193ba8aa Brian Norris 2025-09-25   58  	pm_runtime_get_noresume(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   59  	pm_runtime_get_noresume(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   60  	/* The first put() sees usage_count 1 */
7f7acd193ba8aa Brian Norris 2025-09-25   61  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   62  	/* The second put() sees usage_count 0 but tells us "already suspended". */
7f7acd193ba8aa Brian Norris 2025-09-25   63  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_put_sync_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   64  
7f7acd193ba8aa Brian Norris 2025-09-25   65  	/* Should have remained suspended the whole time. */
7f7acd193ba8aa Brian Norris 2025-09-25   66  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   67  }
7f7acd193ba8aa Brian Norris 2025-09-25   68  
7f7acd193ba8aa Brian Norris 2025-09-25   69  static void pm_runtime_idle_test(struct kunit *test)
7f7acd193ba8aa Brian Norris 2025-09-25   70  {
7f7acd193ba8aa Brian Norris 2025-09-25   71  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aa Brian Norris 2025-09-25   72  
7f7acd193ba8aa Brian Norris 2025-09-25   73  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aa Brian Norris 2025-09-25   74  
7f7acd193ba8aa Brian Norris 2025-09-25   75  	pm_runtime_enable(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   76  
7f7acd193ba8aa Brian Norris 2025-09-25   77  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  @78  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   79  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   80  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   81  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   82  	pm_runtime_put_noidle(dev);
7f7acd193ba8aa Brian Norris 2025-09-25   83  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   84  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   85  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   86  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   87  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_request_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   88  }
7f7acd193ba8aa Brian Norris 2025-09-25   89  
7f7acd193ba8aa Brian Norris 2025-09-25   90  static void pm_runtime_disabled_test(struct kunit *test)
7f7acd193ba8aa Brian Norris 2025-09-25   91  {
7f7acd193ba8aa Brian Norris 2025-09-25   92  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aa Brian Norris 2025-09-25   93  
7f7acd193ba8aa Brian Norris 2025-09-25   94  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aa Brian Norris 2025-09-25   95  
7f7acd193ba8aa Brian Norris 2025-09-25   96  	/* Never called pm_runtime_enable() */
7f7acd193ba8aa Brian Norris 2025-09-25   97  	KUNIT_EXPECT_FALSE(test, pm_runtime_enabled(dev));
7f7acd193ba8aa Brian Norris 2025-09-25   98  
7f7acd193ba8aa Brian Norris 2025-09-25   99  	/* "disabled" is treated as "active" */
7f7acd193ba8aa Brian Norris 2025-09-25  100  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  101  	KUNIT_EXPECT_FALSE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  102  
7f7acd193ba8aa Brian Norris 2025-09-25  103  	/*
7f7acd193ba8aa Brian Norris 2025-09-25  104  	 * Note: these "fail", but they still acquire/release refcounts, so
7f7acd193ba8aa Brian Norris 2025-09-25  105  	 * keep them balanced.
7f7acd193ba8aa Brian Norris 2025-09-25  106  	 */
7f7acd193ba8aa Brian Norris 2025-09-25  107  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_get(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  108  	pm_runtime_put(dev);
7f7acd193ba8aa Brian Norris 2025-09-25  109  
7f7acd193ba8aa Brian Norris 2025-09-25  110  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_get_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  111  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_put_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  112  
7f7acd193ba8aa Brian Norris 2025-09-25  113  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_get(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  114  	pm_runtime_put_autosuspend(dev);
7f7acd193ba8aa Brian Norris 2025-09-25  115  
7f7acd193ba8aa Brian Norris 2025-09-25  116  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_resume_and_get(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  117  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  118  	KUNIT_EXPECT_EQ(test, -EACCES, pm_request_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  119  	KUNIT_EXPECT_EQ(test, -EACCES, pm_request_resume(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  120  	KUNIT_EXPECT_EQ(test, -EACCES, pm_request_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  121  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_suspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  122  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_resume(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  123  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  124  
7f7acd193ba8aa Brian Norris 2025-09-25  125  	/* Still disabled */
7f7acd193ba8aa Brian Norris 2025-09-25  126  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  127  	KUNIT_EXPECT_FALSE(test, pm_runtime_enabled(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  128  }
7f7acd193ba8aa Brian Norris 2025-09-25  129  
7f7acd193ba8aa Brian Norris 2025-09-25  130  static void pm_runtime_error_test(struct kunit *test)
7f7acd193ba8aa Brian Norris 2025-09-25  131  {
7f7acd193ba8aa Brian Norris 2025-09-25  132  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aa Brian Norris 2025-09-25  133  
7f7acd193ba8aa Brian Norris 2025-09-25  134  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aa Brian Norris 2025-09-25  135  
7f7acd193ba8aa Brian Norris 2025-09-25  136  	pm_runtime_enable(dev);
7f7acd193ba8aa Brian Norris 2025-09-25  137  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  138  
7f7acd193ba8aa Brian Norris 2025-09-25  139  	/* Fake a .runtime_resume() error */
7f7acd193ba8aa Brian Norris 2025-09-25  140  	dev->power.runtime_error = -EIO;
7f7acd193ba8aa Brian Norris 2025-09-25  141  
7f7acd193ba8aa Brian Norris 2025-09-25  142  	/*
7f7acd193ba8aa Brian Norris 2025-09-25  143  	 * Note: these "fail", but they still acquire/release refcounts, so
7f7acd193ba8aa Brian Norris 2025-09-25  144  	 * keep them balanced.
7f7acd193ba8aa Brian Norris 2025-09-25  145  	 */
7f7acd193ba8aa Brian Norris 2025-09-25  146  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_get(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  147  	pm_runtime_put(dev);
7f7acd193ba8aa Brian Norris 2025-09-25  148  
7f7acd193ba8aa Brian Norris 2025-09-25  149  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_get_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  150  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_put_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  151  
7f7acd193ba8aa Brian Norris 2025-09-25  152  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_get(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  153  	pm_runtime_put_autosuspend(dev);
7f7acd193ba8aa Brian Norris 2025-09-25  154  
7f7acd193ba8aa Brian Norris 2025-09-25  155  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_get(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  156  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_put_sync_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  157  
7f7acd193ba8aa Brian Norris 2025-09-25  158  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_resume_and_get(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  159  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  160  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_request_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  161  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_request_resume(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  162  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_request_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  163  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_suspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  164  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_resume(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  165  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  166  
7f7acd193ba8aa Brian Norris 2025-09-25  167  	/* Error is still pending */
7f7acd193ba8aa Brian Norris 2025-09-25  168  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  169  	KUNIT_EXPECT_EQ(test, -EIO, dev->power.runtime_error);
7f7acd193ba8aa Brian Norris 2025-09-25  170  	/* Clear error */
7f7acd193ba8aa Brian Norris 2025-09-25  171  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_set_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  172  	KUNIT_EXPECT_EQ(test, 0, dev->power.runtime_error);
7f7acd193ba8aa Brian Norris 2025-09-25  173  	/* Still suspended */
7f7acd193ba8aa Brian Norris 2025-09-25  174  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  175  
7f7acd193ba8aa Brian Norris 2025-09-25  176  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  177  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_barrier(dev)); /* resume was pending */
7f7acd193ba8aa Brian Norris 2025-09-25  178  	pm_runtime_put(dev);
7f7acd193ba8aa Brian Norris 2025-09-25  179  	pm_runtime_suspend(dev); /* flush the put(), to suspend */
7f7acd193ba8aa Brian Norris 2025-09-25  180  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  181  
7f7acd193ba8aa Brian Norris 2025-09-25 @182  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  183  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  184  
7f7acd193ba8aa Brian Norris 2025-09-25  185  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  186  	pm_runtime_put_autosuspend(dev);
7f7acd193ba8aa Brian Norris 2025-09-25  187  
7f7acd193ba8aa Brian Norris 2025-09-25  188  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_resume_and_get(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  189  
7f7acd193ba8aa Brian Norris 2025-09-25  190  	/*
7f7acd193ba8aa Brian Norris 2025-09-25  191  	 * The following should all return -EAGAIN (usage is non-zero) or 1
7f7acd193ba8aa Brian Norris 2025-09-25  192  	 * (already resumed).
7f7acd193ba8aa Brian Norris 2025-09-25  193  	 */
7f7acd193ba8aa Brian Norris 2025-09-25  194  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  195  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_request_idle(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  196  	KUNIT_EXPECT_EQ(test, 1, pm_request_resume(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  197  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_request_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  198  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_suspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  199  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_resume(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  200  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_autosuspend(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  201  
7f7acd193ba8aa Brian Norris 2025-09-25  202  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  203  
7f7acd193ba8aa Brian Norris 2025-09-25  204  	/* Suspended again */
7f7acd193ba8aa Brian Norris 2025-09-25  205  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aa Brian Norris 2025-09-25  206  }
7f7acd193ba8aa Brian Norris 2025-09-25  207  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 4+ messages in thread
* drivers/base/power/runtime-test.c:22 pm_runtime_depth_test() warn: pm_runtime_get_sync() also returns 1 on success
@ 2026-04-23  7:09 kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2026-04-23  7:09 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Brian Norris <briannorris@chromium.org>
CC: "Rafael J. Wysocki" <rjw@rjwysocki.net>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   2e68039281932e6dc37718a1ea7cbb8e2cda42e6
commit: 7f7acd193ba8aaa8ed07cfadc335bb17a991fd42 PM: runtime: Add basic kunit tests for API contracts
date:   7 months ago
:::::: branch date: 9 hours ago
:::::: commit date: 7 months ago
config: i386-randconfig-141-20260423 (https://download.01.org/0day-ci/archive/20260423/202604231405.qMiX1YBJ-lkp@intel.com/config)
compiler: gcc-13 (Debian 13.3.0-16) 13.3.0
smatch: v0.5.0-9007-gcf3ea02b

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 7f7acd193ba8 ("PM: runtime: Add basic kunit tests for API contracts")
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202604231405.qMiX1YBJ-lkp@intel.com/

New smatch warnings:
drivers/base/power/runtime-test.c:22 pm_runtime_depth_test() warn: pm_runtime_get_sync() also returns 1 on success
drivers/base/power/runtime-test.c:78 pm_runtime_idle_test() warn: pm_runtime_get_sync() also returns 1 on success
drivers/base/power/runtime-test.c:182 pm_runtime_error_test() warn: pm_runtime_get_sync() also returns 1 on success

Old smatch warnings:
drivers/base/power/runtime-test.c:185 pm_runtime_error_test() warn: pm_runtime_get_sync() also returns 1 on success

vim +22 drivers/base/power/runtime-test.c

7f7acd193ba8aaa Brian Norris 2025-09-25   12  
7f7acd193ba8aaa Brian Norris 2025-09-25   13  static void pm_runtime_depth_test(struct kunit *test)
7f7acd193ba8aaa Brian Norris 2025-09-25   14  {
7f7acd193ba8aaa Brian Norris 2025-09-25   15  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aaa Brian Norris 2025-09-25   16  
7f7acd193ba8aaa Brian Norris 2025-09-25   17  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   18  
7f7acd193ba8aaa Brian Norris 2025-09-25   19  	pm_runtime_enable(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   20  
7f7acd193ba8aaa Brian Norris 2025-09-25   21  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  @22  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   23  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   24  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_get_sync(dev)); /* "already active" */
7f7acd193ba8aaa Brian Norris 2025-09-25   25  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   26  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   27  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   28  }
7f7acd193ba8aaa Brian Norris 2025-09-25   29  
7f7acd193ba8aaa Brian Norris 2025-09-25   30  /* Test pm_runtime_put() and friends when already suspended. */
7f7acd193ba8aaa Brian Norris 2025-09-25   31  static void pm_runtime_already_suspended_test(struct kunit *test)
7f7acd193ba8aaa Brian Norris 2025-09-25   32  {
7f7acd193ba8aaa Brian Norris 2025-09-25   33  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aaa Brian Norris 2025-09-25   34  
7f7acd193ba8aaa Brian Norris 2025-09-25   35  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   36  
7f7acd193ba8aaa Brian Norris 2025-09-25   37  	pm_runtime_enable(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   38  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   39  
7f7acd193ba8aaa Brian Norris 2025-09-25   40  	pm_runtime_get_noresume(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   41  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_barrier(dev)); /* no wakeup needed */
7f7acd193ba8aaa Brian Norris 2025-09-25   42  	pm_runtime_put(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   43  
7f7acd193ba8aaa Brian Norris 2025-09-25   44  	pm_runtime_get_noresume(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   45  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_put_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   46  
7f7acd193ba8aaa Brian Norris 2025-09-25   47  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_suspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   48  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   49  	KUNIT_EXPECT_EQ(test, 1, pm_request_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   50  
7f7acd193ba8aaa Brian Norris 2025-09-25   51  	pm_runtime_get_noresume(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   52  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_put_sync_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   53  
7f7acd193ba8aaa Brian Norris 2025-09-25   54  	pm_runtime_get_noresume(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   55  	pm_runtime_put_autosuspend(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   56  
7f7acd193ba8aaa Brian Norris 2025-09-25   57  	/* Grab 2 refcounts */
7f7acd193ba8aaa Brian Norris 2025-09-25   58  	pm_runtime_get_noresume(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   59  	pm_runtime_get_noresume(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   60  	/* The first put() sees usage_count 1 */
7f7acd193ba8aaa Brian Norris 2025-09-25   61  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   62  	/* The second put() sees usage_count 0 but tells us "already suspended". */
7f7acd193ba8aaa Brian Norris 2025-09-25   63  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_put_sync_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   64  
7f7acd193ba8aaa Brian Norris 2025-09-25   65  	/* Should have remained suspended the whole time. */
7f7acd193ba8aaa Brian Norris 2025-09-25   66  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   67  }
7f7acd193ba8aaa Brian Norris 2025-09-25   68  
7f7acd193ba8aaa Brian Norris 2025-09-25   69  static void pm_runtime_idle_test(struct kunit *test)
7f7acd193ba8aaa Brian Norris 2025-09-25   70  {
7f7acd193ba8aaa Brian Norris 2025-09-25   71  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aaa Brian Norris 2025-09-25   72  
7f7acd193ba8aaa Brian Norris 2025-09-25   73  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   74  
7f7acd193ba8aaa Brian Norris 2025-09-25   75  	pm_runtime_enable(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   76  
7f7acd193ba8aaa Brian Norris 2025-09-25   77  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  @78  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   79  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   80  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   81  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   82  	pm_runtime_put_noidle(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   83  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   84  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   85  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   86  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   87  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_request_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   88  }
7f7acd193ba8aaa Brian Norris 2025-09-25   89  
7f7acd193ba8aaa Brian Norris 2025-09-25   90  static void pm_runtime_disabled_test(struct kunit *test)
7f7acd193ba8aaa Brian Norris 2025-09-25   91  {
7f7acd193ba8aaa Brian Norris 2025-09-25   92  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aaa Brian Norris 2025-09-25   93  
7f7acd193ba8aaa Brian Norris 2025-09-25   94  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aaa Brian Norris 2025-09-25   95  
7f7acd193ba8aaa Brian Norris 2025-09-25   96  	/* Never called pm_runtime_enable() */
7f7acd193ba8aaa Brian Norris 2025-09-25   97  	KUNIT_EXPECT_FALSE(test, pm_runtime_enabled(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25   98  
7f7acd193ba8aaa Brian Norris 2025-09-25   99  	/* "disabled" is treated as "active" */
7f7acd193ba8aaa Brian Norris 2025-09-25  100  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  101  	KUNIT_EXPECT_FALSE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  102  
7f7acd193ba8aaa Brian Norris 2025-09-25  103  	/*
7f7acd193ba8aaa Brian Norris 2025-09-25  104  	 * Note: these "fail", but they still acquire/release refcounts, so
7f7acd193ba8aaa Brian Norris 2025-09-25  105  	 * keep them balanced.
7f7acd193ba8aaa Brian Norris 2025-09-25  106  	 */
7f7acd193ba8aaa Brian Norris 2025-09-25  107  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_get(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  108  	pm_runtime_put(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25  109  
7f7acd193ba8aaa Brian Norris 2025-09-25  110  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_get_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  111  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_put_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  112  
7f7acd193ba8aaa Brian Norris 2025-09-25  113  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_get(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  114  	pm_runtime_put_autosuspend(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25  115  
7f7acd193ba8aaa Brian Norris 2025-09-25  116  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_resume_and_get(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  117  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  118  	KUNIT_EXPECT_EQ(test, -EACCES, pm_request_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  119  	KUNIT_EXPECT_EQ(test, -EACCES, pm_request_resume(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  120  	KUNIT_EXPECT_EQ(test, -EACCES, pm_request_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  121  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_suspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  122  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_resume(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  123  	KUNIT_EXPECT_EQ(test, -EACCES, pm_runtime_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  124  
7f7acd193ba8aaa Brian Norris 2025-09-25  125  	/* Still disabled */
7f7acd193ba8aaa Brian Norris 2025-09-25  126  	KUNIT_EXPECT_TRUE(test, pm_runtime_active(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  127  	KUNIT_EXPECT_FALSE(test, pm_runtime_enabled(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  128  }
7f7acd193ba8aaa Brian Norris 2025-09-25  129  
7f7acd193ba8aaa Brian Norris 2025-09-25  130  static void pm_runtime_error_test(struct kunit *test)
7f7acd193ba8aaa Brian Norris 2025-09-25  131  {
7f7acd193ba8aaa Brian Norris 2025-09-25  132  	struct device *dev = kunit_device_register(test, DEVICE_NAME);
7f7acd193ba8aaa Brian Norris 2025-09-25  133  
7f7acd193ba8aaa Brian Norris 2025-09-25  134  	KUNIT_ASSERT_PTR_NE(test, NULL, dev);
7f7acd193ba8aaa Brian Norris 2025-09-25  135  
7f7acd193ba8aaa Brian Norris 2025-09-25  136  	pm_runtime_enable(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25  137  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  138  
7f7acd193ba8aaa Brian Norris 2025-09-25  139  	/* Fake a .runtime_resume() error */
7f7acd193ba8aaa Brian Norris 2025-09-25  140  	dev->power.runtime_error = -EIO;
7f7acd193ba8aaa Brian Norris 2025-09-25  141  
7f7acd193ba8aaa Brian Norris 2025-09-25  142  	/*
7f7acd193ba8aaa Brian Norris 2025-09-25  143  	 * Note: these "fail", but they still acquire/release refcounts, so
7f7acd193ba8aaa Brian Norris 2025-09-25  144  	 * keep them balanced.
7f7acd193ba8aaa Brian Norris 2025-09-25  145  	 */
7f7acd193ba8aaa Brian Norris 2025-09-25  146  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_get(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  147  	pm_runtime_put(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25  148  
7f7acd193ba8aaa Brian Norris 2025-09-25  149  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_get_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  150  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_put_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  151  
7f7acd193ba8aaa Brian Norris 2025-09-25  152  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_get(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  153  	pm_runtime_put_autosuspend(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25  154  
7f7acd193ba8aaa Brian Norris 2025-09-25  155  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_get(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  156  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_put_sync_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  157  
7f7acd193ba8aaa Brian Norris 2025-09-25  158  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_resume_and_get(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  159  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  160  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_request_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  161  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_request_resume(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  162  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_request_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  163  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_suspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  164  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_resume(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  165  	KUNIT_EXPECT_EQ(test, -EINVAL, pm_runtime_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  166  
7f7acd193ba8aaa Brian Norris 2025-09-25  167  	/* Error is still pending */
7f7acd193ba8aaa Brian Norris 2025-09-25  168  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  169  	KUNIT_EXPECT_EQ(test, -EIO, dev->power.runtime_error);
7f7acd193ba8aaa Brian Norris 2025-09-25  170  	/* Clear error */
7f7acd193ba8aaa Brian Norris 2025-09-25  171  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_set_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  172  	KUNIT_EXPECT_EQ(test, 0, dev->power.runtime_error);
7f7acd193ba8aaa Brian Norris 2025-09-25  173  	/* Still suspended */
7f7acd193ba8aaa Brian Norris 2025-09-25  174  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  175  
7f7acd193ba8aaa Brian Norris 2025-09-25  176  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  177  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_barrier(dev)); /* resume was pending */
7f7acd193ba8aaa Brian Norris 2025-09-25  178  	pm_runtime_put(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25  179  	pm_runtime_suspend(dev); /* flush the put(), to suspend */
7f7acd193ba8aaa Brian Norris 2025-09-25  180  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  181  
7f7acd193ba8aaa Brian Norris 2025-09-25 @182  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  183  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  184  
7f7acd193ba8aaa Brian Norris 2025-09-25  185  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_get_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  186  	pm_runtime_put_autosuspend(dev);
7f7acd193ba8aaa Brian Norris 2025-09-25  187  
7f7acd193ba8aaa Brian Norris 2025-09-25  188  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_resume_and_get(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  189  
7f7acd193ba8aaa Brian Norris 2025-09-25  190  	/*
7f7acd193ba8aaa Brian Norris 2025-09-25  191  	 * The following should all return -EAGAIN (usage is non-zero) or 1
7f7acd193ba8aaa Brian Norris 2025-09-25  192  	 * (already resumed).
7f7acd193ba8aaa Brian Norris 2025-09-25  193  	 */
7f7acd193ba8aaa Brian Norris 2025-09-25  194  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  195  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_request_idle(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  196  	KUNIT_EXPECT_EQ(test, 1, pm_request_resume(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  197  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_request_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  198  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_suspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  199  	KUNIT_EXPECT_EQ(test, 1, pm_runtime_resume(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  200  	KUNIT_EXPECT_EQ(test, -EAGAIN, pm_runtime_autosuspend(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  201  
7f7acd193ba8aaa Brian Norris 2025-09-25  202  	KUNIT_EXPECT_EQ(test, 0, pm_runtime_put_sync(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  203  
7f7acd193ba8aaa Brian Norris 2025-09-25  204  	/* Suspended again */
7f7acd193ba8aaa Brian Norris 2025-09-25  205  	KUNIT_EXPECT_TRUE(test, pm_runtime_suspended(dev));
7f7acd193ba8aaa Brian Norris 2025-09-25  206  }
7f7acd193ba8aaa Brian Norris 2025-09-25  207  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-04-23  7:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-09 10:36 drivers/base/power/runtime-test.c:22 pm_runtime_depth_test() warn: pm_runtime_get_sync() also returns 1 on success kernel test robot
2026-01-09 11:02 ` Dan Carpenter
2026-01-09 18:39 ` Brian Norris
  -- strict thread matches above, loose matches on Subject: below --
2026-04-23  7:09 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.