blk-pm.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _BLOCK_BLK_PM_H_
  3. #define _BLOCK_BLK_PM_H_
  4. #include <linux/pm_runtime.h>
  5. #ifdef CONFIG_PM
  6. static inline void blk_pm_request_resume(struct request_queue *q)
  7. {
  8. if (q->dev && (q->rpm_status == RPM_SUSPENDED ||
  9. q->rpm_status == RPM_SUSPENDING))
  10. pm_request_resume(q->dev);
  11. }
  12. static inline void blk_pm_mark_last_busy(struct request *rq)
  13. {
  14. if (rq->q->dev && !(rq->rq_flags & RQF_PM))
  15. pm_runtime_mark_last_busy(rq->q->dev);
  16. }
  17. static inline void blk_pm_requeue_request(struct request *rq)
  18. {
  19. lockdep_assert_held(&rq->q->queue_lock);
  20. if (rq->q->dev && !(rq->rq_flags & RQF_PM))
  21. rq->q->nr_pending--;
  22. }
  23. static inline void blk_pm_add_request(struct request_queue *q,
  24. struct request *rq)
  25. {
  26. lockdep_assert_held(&q->queue_lock);
  27. if (q->dev && !(rq->rq_flags & RQF_PM))
  28. q->nr_pending++;
  29. }
  30. static inline void blk_pm_put_request(struct request *rq)
  31. {
  32. lockdep_assert_held(&rq->q->queue_lock);
  33. if (rq->q->dev && !(rq->rq_flags & RQF_PM))
  34. --rq->q->nr_pending;
  35. }
  36. #else
  37. static inline void blk_pm_request_resume(struct request_queue *q)
  38. {
  39. }
  40. static inline void blk_pm_mark_last_busy(struct request *rq)
  41. {
  42. }
  43. static inline void blk_pm_requeue_request(struct request *rq)
  44. {
  45. }
  46. static inline void blk_pm_add_request(struct request_queue *q,
  47. struct request *rq)
  48. {
  49. }
  50. static inline void blk_pm_put_request(struct request *rq)
  51. {
  52. }
  53. #endif
  54. #endif /* _BLOCK_BLK_PM_H_ */