drm: move drm_can_sleep() to drm_util.h
authorSam Ravnborg <sam@ravnborg.org>
Sat, 12 Jan 2019 19:32:44 +0000 (20:32 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 14 Jan 2019 09:58:37 +0000 (10:58 +0100)
Move drm_can_sleep() out of drmP.h to allow users
to get rid of the drmP.h include.

There was no header file that was a good match for this helper function.
So add this to drm_util with the relevant includes.

Add include of drm_util.h to all users.

v2:
- Update comments to use kernel-doc style (Daniel)
- Add FIXME to drm_can_sleep and add note that this
  function should not be used in new code (Daniel)

v3:
- Fix kernel-doc syntax (Daniel)
- Plug drm_util.h into drm-internels.rst (Daniel)

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Sean Paul <sean@poorly.run>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: "David (ChunMing) Zhou" <David1.Zhou@amd.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Eric Anholt <eric@anholt.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20190112193251.20450-2-sam@ravnborg.org
14 files changed:
Documentation/gpu/drm-internals.rst
drivers/gpu/drm/amd/amdgpu/atom.c
drivers/gpu/drm/ast/ast_fb.c
drivers/gpu/drm/cirrus/cirrus_fbdev.c
drivers/gpu/drm/drm_flip_work.c
drivers/gpu/drm/mgag200/mgag200_fb.c
drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c
drivers/gpu/drm/omapdrm/omap_fbdev.c
drivers/gpu/drm/qxl/qxl_cmd.c
drivers/gpu/drm/radeon/atom.c
drivers/gpu/drm/radeon/radeon_legacy_encoders.c
drivers/gpu/drm/vc4/vc4_drv.h
include/drm/drmP.h
include/drm/drm_util.h

index 9090fabf3f7a2c0e134a5185cf114eaf4d342394..2caf21effd281d28805a64a27f921235e489ba66 100644 (file)
@@ -233,6 +233,15 @@ Printer
 .. kernel-doc:: drivers/gpu/drm/drm_print.c
    :export:
 
+Utilities
+---------
+
+.. kernel-doc:: include/drm/drm_util.h
+   :doc: drm utils
+
+.. kernel-doc:: include/drm/drm_util.h
+   :internal:
+
 
 Legacy Support Code
 ===================
index e9934de1b9cf8127eb2b770e4301d6ee90c98223..dd30f4e61a8cd97c73c06dc756177dbc33a79d52 100644 (file)
@@ -27,6 +27,8 @@
 #include <linux/slab.h>
 #include <asm/unaligned.h>
 
+#include <drm/drm_util.h>
+
 #define ATOM_DEBUG
 
 #include "atom.h"
index 75f867d000315f9953904e9613a87223dc0494ac..2c9f8dd9733a404354085db8d5347df2eefc300d 100644 (file)
@@ -39,7 +39,9 @@
 #include <drm/drmP.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_fb_helper.h>
+#include <drm/drm_util.h>
 #include <drm/drm_crtc_helper.h>
+
 #include "ast_drv.h"
 
 static void ast_dirty_update(struct ast_fbdev *afbdev,
index 3d0a3958d083beef1bf4263affa97d1d5a59f2b7..39df62acac69d3c200910fd973e9933cde3b4b8d 100644 (file)
@@ -10,6 +10,7 @@
  */
 #include <linux/module.h>
 #include <drm/drmP.h>
+#include <drm/drm_util.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_crtc_helper.h>
 
index 12dea16f22a843bd5012ef46b5690e983ed94b12..3da3bf5af40543bca1ff06da352ad038e7257d8e 100644 (file)
@@ -22,6 +22,7 @@
  */
 
 #include <drm/drmP.h>
+#include <drm/drm_util.h>
 #include <drm/drm_flip_work.h>
 
 /**
index 30726c9fe28c810486a127c3dfbd92c07836b2e3..6893934b26c0387a390540b770ec1e49252902bb 100644 (file)
@@ -12,6 +12,7 @@
  */
 #include <linux/module.h>
 #include <drm/drmP.h>
+#include <drm/drm_util.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_crtc_helper.h>
 
index 7cebcb2b3a379246e55faef1dcce6657d2ec3a3a..6153514db04c2a209c7d08b756ec1397e532c8b5 100644 (file)
@@ -16,6 +16,7 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <drm/drm_util.h>
 
 #include "mdp5_kms.h"
 #include "mdp5_smp.h"
index aee99194499f1675be7e160b96241f1f62dbbcd1..851c59f07eb1fc3c73d5f03599b78b0e67c2b49e 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #include <drm/drm_crtc.h>
+#include <drm/drm_util.h>
 #include <drm/drm_fb_helper.h>
 
 #include "omap_drv.h"
index dffc5093ff16b96cbd8f6f4ee0b99670f8032303..2e100f644236b6e4289b026e66428435b2a30b7b 100644 (file)
@@ -25,6 +25,8 @@
 
 /* QXL cmd/ring handling */
 
+#include <drm/drm_util.h>
+
 #include "qxl_drv.h"
 #include "qxl_object.h"
 
index e55cbeee7a5376bb8008042dd53a160bc6e06f95..ac98ad5618700d54564cfb51cba5d25f4b8b9464 100644 (file)
@@ -27,6 +27,8 @@
 #include <linux/slab.h>
 #include <asm/unaligned.h>
 
+#include <drm/drm_util.h>
+
 #define ATOM_DEBUG
 
 #include "atom.h"
index 222a1fa41d7c96c2e1853fcddfd3f6d64f56a196..7e3257e8fd5604f72366aa8febc8e0de1198d920 100644 (file)
@@ -24,6 +24,7 @@
  *          Alex Deucher
  */
 #include <drm/drmP.h>
+#include <drm/drm_util.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/radeon_drm.h>
 #include "radeon.h"
index c24b078f05939817ff0f94dba61ed6491eefd4a1..2c635f001c711b03b83614d1fba7fbe472b094dc 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/mm_types.h>
 #include <linux/reservation.h>
 #include <drm/drmP.h>
+#include <drm/drm_util.h>
 #include <drm/drm_encoder.h>
 #include <drm/drm_gem_cma_helper.h>
 #include <drm/drm_atomic.h>
index 9e47c8dc6b87ba39fdd8b34fb82f45bbc96a0dd3..bc4cb3732407757d72b299b24ae935fe69a583ce 100644 (file)
@@ -94,14 +94,6 @@ struct dma_buf_attachment;
 struct pci_dev;
 struct pci_controller;
 
-/* returns true if currently okay to sleep */
-static inline bool drm_can_sleep(void)
-{
-       if (in_atomic() || in_dbg_master() || irqs_disabled())
-               return false;
-       return true;
-}
-
 #if defined(CONFIG_DRM_DEBUG_SELFTEST_MODULE)
 #define EXPORT_SYMBOL_FOR_TESTS_ONLY(x) EXPORT_SYMBOL(x)
 #else
index 88abdca89baadb91e0a17b3ee40cf9bd52f93e5c..f776a55e5508dd0b05dc41b436c0ef76430ad50a 100644 (file)
 #ifndef _DRM_UTIL_H_
 #define _DRM_UTIL_H_
 
-/* helper for handling conditionals in various for_each macros */
+/**
+ * DOC: drm utils
+ *
+ * Macros and inline functions that does not naturally belong in other places
+ */
+
+#include <linux/irqflags.h>
+#include <linux/preempt.h>
+#include <linux/kgdb.h>
+#include <linux/smp.h>
+
+/**
+ * for_each_if - helper for handling conditionals in various for_each macros
+ * @condition: The condition to check
+ *
+ * Typical use::
+ *
+ *     #define for_each_foo_bar(x, y) \'
+ *             list_for_each_entry(x, y->list, head) \'
+ *                     for_each_if(x->something == SOMETHING)
+ *
+ * The for_each_if() macro makes the use of for_each_foo_bar() less error
+ * prone.
+ */
 #define for_each_if(condition) if (!(condition)) {} else
 
+/**
+ * drm_can_sleep - returns true if currently okay to sleep
+ *
+ * This function shall not be used in new code.
+ * The check for running in atomic context may not work - see linux/preempt.h.
+ *
+ * FIXME: All users of drm_can_sleep should be removed (see todo.rst)
+ *
+ * Returns:
+ * True if kgdb is active or we are in an atomic context or irqs are disabled
+ */
+static inline bool drm_can_sleep(void)
+{
+       if (in_atomic() || in_dbg_master() || irqs_disabled())
+               return false;
+       return true;
+}
+
 #endif