gru: cleanup gru inline functions
Jack Steiner [Wed, 17 Jun 2009 23:28:31 +0000 (16:28 -0700)]
Cleanup of GRU inline functions to eliminate unnecessary inline code.
Update function descriptions.

Signed-off-by: Jack Steiner <steiner@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

drivers/misc/sgi-gru/gru_instructions.h

index eb9140d..3c9c066 100644 (file)
@@ -623,9 +623,11 @@ static inline int gru_get_cb_substatus(void *cb)
        return cbs->isubstatus;
 }
 
-/* Check the status of a CB. If the CB is in UPM mode, call the
- * OS to handle the UPM status.
- * Returns the CB status field value (0 for normal completion)
+/*
+ * User interface to check an instruction status. UPM and exceptions
+ * are handled automatically. However, this function does NOT wait
+ * for an active instruction to complete.
+ *
  */
 static inline int gru_check_status(void *cb)
 {
@@ -633,34 +635,31 @@ static inline int gru_check_status(void *cb)
        int ret;
 
        ret = cbs->istatus;
-       if (ret == CBS_CALL_OS)
+       if (ret != CBS_ACTIVE)
                ret = gru_check_status_proc(cb);
        return ret;
 }
 
-/* Wait for CB to complete.
- * Returns the CB status field value (0 for normal completion)
+/*
+ * User interface (via inline function) to wait for an instruction
+ * to complete. Completion status (IDLE or EXCEPTION is returned
+ * to the user. Exception due to hardware errors are automatically
+ * retried before returning an exception.
+ *
  */
 static inline int gru_wait(void *cb)
 {
-       struct gru_control_block_status *cbs = (void *)cb;
-       int ret = cbs->istatus;
-
-       if (ret != CBS_IDLE)
-               ret = gru_wait_proc(cb);
-       return ret;
+       return gru_wait_proc(cb);
 }
 
-/* Wait for CB to complete. Aborts program if error. (Note: error does NOT
+/*
+ * Wait for CB to complete. Aborts program if error. (Note: error does NOT
  * mean TLB mis - only fatal errors such as memory parity error or user
  * bugs will cause termination.
  */
 static inline void gru_wait_abort(void *cb)
 {
-       struct gru_control_block_status *cbs = (void *)cb;
-
-       if (cbs->istatus != CBS_IDLE)
-               gru_wait_abort_proc(cb);
+       gru_wait_abort_proc(cb);
 }