Merge tag 'optee-rcu-sched-trace-for-v5.11' of git://git.linaro.org/people/jens.wikla...
[linux-2.6-microblaze.git] / block / blk-pm.h
index a8564ea..a2283cc 100644 (file)
@@ -6,11 +6,14 @@
 #include <linux/pm_runtime.h>
 
 #ifdef CONFIG_PM
-static inline void blk_pm_request_resume(struct request_queue *q)
+static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q)
 {
-       if (q->dev && (q->rpm_status == RPM_SUSPENDED ||
-                      q->rpm_status == RPM_SUSPENDING))
-               pm_request_resume(q->dev);
+       if (!q->dev || !blk_queue_pm_only(q))
+               return 1;       /* Nothing to do */
+       if (pm && q->rpm_status != RPM_SUSPENDED)
+               return 1;       /* Request allowed */
+       pm_request_resume(q->dev);
+       return 0;
 }
 
 static inline void blk_pm_mark_last_busy(struct request *rq)
@@ -21,7 +24,7 @@ static inline void blk_pm_mark_last_busy(struct request *rq)
 
 static inline void blk_pm_requeue_request(struct request *rq)
 {
-       lockdep_assert_held(rq->q->queue_lock);
+       lockdep_assert_held(&rq->q->queue_lock);
 
        if (rq->q->dev && !(rq->rq_flags & RQF_PM))
                rq->q->nr_pending--;
@@ -30,7 +33,7 @@ static inline void blk_pm_requeue_request(struct request *rq)
 static inline void blk_pm_add_request(struct request_queue *q,
                                      struct request *rq)
 {
-       lockdep_assert_held(q->queue_lock);
+       lockdep_assert_held(&q->queue_lock);
 
        if (q->dev && !(rq->rq_flags & RQF_PM))
                q->nr_pending++;
@@ -38,14 +41,15 @@ static inline void blk_pm_add_request(struct request_queue *q,
 
 static inline void blk_pm_put_request(struct request *rq)
 {
-       lockdep_assert_held(rq->q->queue_lock);
+       lockdep_assert_held(&rq->q->queue_lock);
 
        if (rq->q->dev && !(rq->rq_flags & RQF_PM))
                --rq->q->nr_pending;
 }
 #else
-static inline void blk_pm_request_resume(struct request_queue *q)
+static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q)
 {
+       return 1;
 }
 
 static inline void blk_pm_mark_last_busy(struct request *rq)