]>
Commit | Line | Data |
---|---|---|
bca6b067 BVA |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | ||
3 | #ifndef _BLOCK_BLK_PM_H_ | |
4 | #define _BLOCK_BLK_PM_H_ | |
5 | ||
6 | #include <linux/pm_runtime.h> | |
7 | ||
8 | #ifdef CONFIG_PM | |
52abca64 | 9 | static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q) |
154b00d5 | 10 | { |
52abca64 AS |
11 | if (!q->dev || !blk_queue_pm_only(q)) |
12 | return 1; /* Nothing to do */ | |
13 | if (pm && q->rpm_status != RPM_SUSPENDED) | |
14 | return 1; /* Request allowed */ | |
15 | pm_request_resume(q->dev); | |
16 | return 0; | |
154b00d5 BVA |
17 | } |
18 | ||
19 | static inline void blk_pm_mark_last_busy(struct request *rq) | |
20 | { | |
21 | if (rq->q->dev && !(rq->rq_flags & RQF_PM)) | |
22 | pm_runtime_mark_last_busy(rq->q->dev); | |
23 | } | |
24 | ||
bca6b067 BVA |
25 | static inline void blk_pm_requeue_request(struct request *rq) |
26 | { | |
0d945c1f | 27 | lockdep_assert_held(&rq->q->queue_lock); |
154b00d5 | 28 | |
bca6b067 BVA |
29 | if (rq->q->dev && !(rq->rq_flags & RQF_PM)) |
30 | rq->q->nr_pending--; | |
31 | } | |
32 | ||
33 | static inline void blk_pm_add_request(struct request_queue *q, | |
34 | struct request *rq) | |
35 | { | |
0d945c1f | 36 | lockdep_assert_held(&q->queue_lock); |
154b00d5 BVA |
37 | |
38 | if (q->dev && !(rq->rq_flags & RQF_PM)) | |
39 | q->nr_pending++; | |
bca6b067 BVA |
40 | } |
41 | ||
42 | static inline void blk_pm_put_request(struct request *rq) | |
43 | { | |
0d945c1f | 44 | lockdep_assert_held(&rq->q->queue_lock); |
154b00d5 BVA |
45 | |
46 | if (rq->q->dev && !(rq->rq_flags & RQF_PM)) | |
47 | --rq->q->nr_pending; | |
bca6b067 BVA |
48 | } |
49 | #else | |
52abca64 | 50 | static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q) |
154b00d5 | 51 | { |
52abca64 | 52 | return 1; |
154b00d5 BVA |
53 | } |
54 | ||
55 | static inline void blk_pm_mark_last_busy(struct request *rq) | |
56 | { | |
57 | } | |
58 | ||
bca6b067 BVA |
59 | static inline void blk_pm_requeue_request(struct request *rq) |
60 | { | |
61 | } | |
62 | ||
63 | static inline void blk_pm_add_request(struct request_queue *q, | |
64 | struct request *rq) | |
65 | { | |
66 | } | |
67 | ||
68 | static inline void blk_pm_put_request(struct request *rq) | |
69 | { | |
70 | } | |
71 | #endif | |
72 | ||
73 | #endif /* _BLOCK_BLK_PM_H_ */ |