2015-11-21 09:15:29

by Geliang Tang

[permalink] [raw]
Subject: [PATCH] drm/mm: rewrite drm_mm_for_each_hole

When backwards is 0, __drm_mm_for_each_hole is same as
drm_mm_for_each_hole. So I rewrite drm_mm_for_each_hole
by using __drm_mm_for_each_hole.

Signed-off-by: Geliang Tang <[email protected]>
---
include/drm/drm_mm.h | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
index 0de6290..ef52fcf 100644
--- a/include/drm/drm_mm.h
+++ b/include/drm/drm_mm.h
@@ -199,14 +199,6 @@ static inline u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node)
* The __drm_mm_for_each_hole version is similar, but with added support for
* going backwards.
*/
-#define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \
- for (entry = list_entry((mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
- &entry->hole_stack != &(mm)->hole_stack ? \
- hole_start = drm_mm_hole_node_start(entry), \
- hole_end = drm_mm_hole_node_end(entry), \
- 1 : 0; \
- entry = list_entry(entry->hole_stack.next, struct drm_mm_node, hole_stack))
-
#define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \
for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
&entry->hole_stack != &(mm)->hole_stack ? \
@@ -215,6 +207,9 @@ static inline u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node)
1 : 0; \
entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack))

+#define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \
+ __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, 0)
+
/*
* Basic range manager support (drm_mm.c)
*/
--
2.5.0


2015-11-21 10:25:15

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH] drm/mm: rewrite drm_mm_for_each_hole

Hi Geliang,

[auto build test WARNING on drm/drm-next]
[also build test WARNING on v4.4-rc1 next-20151120]

url: https://github.com/0day-ci/linux/commits/Geliang-Tang/drm-mm-rewrite-drm_mm_for_each_hole/20151121-171903
base: git://people.freedesktop.org/~airlied/linux.git drm-next
reproduce: make htmldocs

All warnings (new ones prefixed by >>):

drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged'
drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt'
>> include/drm/drm_mm.h:208: warning: No description found for parameter 'backwards'
include/drm/drm_crtc.h:310: warning: No description found for parameter 'mode_blob'
include/drm/drm_crtc.h:737: warning: No description found for parameter 'tile_blob_ptr'
include/drm/drm_crtc.h:776: warning: No description found for parameter 'rotation'
include/drm/drm_crtc.h:872: warning: No description found for parameter 'mutex'
include/drm/drm_crtc.h:872: warning: No description found for parameter 'helper_private'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tile_idr'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'delayed_event'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'edid_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'dpms_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'path_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tile_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'plane_type_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'rotation_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_src_x'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_src_y'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_src_w'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_src_h'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_x'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_y'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_w'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_h'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_fb_id'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_id'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_active'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_mode_id'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'dvi_i_subconnector_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'dvi_i_select_subconnector_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_subconnector_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_select_subconnector_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_mode_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_left_margin_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_right_margin_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_top_margin_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_bottom_margin_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_brightness_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_contrast_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_flicker_reduction_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_overscan_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_saturation_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_hue_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'scaling_mode_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'aspect_ratio_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'dirty_info_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'suggested_x_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'suggested_y_property'
include/drm/drm_crtc.h:1157: warning: No description found for parameter 'allow_fb_modifiers'
include/drm/drm_fb_helper.h:148: warning: No description found for parameter 'connector_info'
include/drm/drm_dp_helper.h:713: warning: No description found for parameter 'i2c_nack_count'
include/drm/drm_dp_helper.h:713: warning: No description found for parameter 'i2c_defer_count'
drivers/gpu/drm/drm_dp_mst_topology.c:2227: warning: No description found for parameter 'connector'
include/drm/drm_dp_mst_helper.h:97: warning: No description found for parameter 'cached_edid'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'max_dpcd_transaction_bytes'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'sink_count'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'total_slots'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'avail_slots'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'total_pbn'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'qlock'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_msg_downq'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_msg_upq'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_down_in_progress'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_up_in_progress'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'payload_lock'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'proposed_vcpis'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'payloads'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'payload_mask'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'vcpi_mask'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_waitq'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'work'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_work'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'destroy_connector_list'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'destroy_connector_lock'
include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'destroy_connector_work'
drivers/gpu/drm/drm_dp_mst_topology.c:2227: warning: No description found for parameter 'connector'
drivers/gpu/drm/drm_irq.c:173: warning: No description found for parameter 'flags'
include/drm/drmP.h:168: warning: No description found for parameter 'fmt'
include/drm/drmP.h:184: warning: No description found for parameter 'fmt'
include/drm/drmP.h:202: warning: No description found for parameter 'fmt'
include/drm/drmP.h:247: warning: No description found for parameter 'dev'
include/drm/drmP.h:247: warning: No description found for parameter 'data'
include/drm/drmP.h:247: warning: No description found for parameter 'file_priv'
include/drm/drmP.h:280: warning: No description found for parameter 'ioctl'
include/drm/drmP.h:280: warning: No description found for parameter '_func'
include/drm/drmP.h:280: warning: No description found for parameter '_flags'
include/drm/drmP.h:353: warning: cannot understand function prototype: 'struct drm_lock_data '
include/drm/drmP.h:406: warning: cannot understand function prototype: 'struct drm_driver '
include/drm/drmP.h:656: warning: cannot understand function prototype: 'struct drm_info_list '
include/drm/drmP.h:666: warning: cannot understand function prototype: 'struct drm_info_node '
include/drm/drmP.h:676: warning: cannot understand function prototype: 'struct drm_minor '
include/drm/drmP.h:724: warning: cannot understand function prototype: 'struct drm_device '
drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged'
drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt'
drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged'
drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt'
drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged'
drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt'
drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged'
drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt'
drivers/gpu/drm/i915/i915_gem.c:421: warning: No description found for parameter 'dev'
drivers/gpu/drm/i915/i915_gem.c:421: warning: No description found for parameter 'data'
drivers/gpu/drm/i915/i915_gem.c:421: warning: No description found for parameter 'file'

vim +/backwards +208 include/drm/drm_mm.h

e18c0412 Daniel Vetter 2014-01-23 192 * internally and will not reflect a real drm_mm_node for the very first hole.
e18c0412 Daniel Vetter 2014-01-23 193 * Hence users of this iterator may not access it.
e18c0412 Daniel Vetter 2014-01-23 194 *
e18c0412 Daniel Vetter 2014-01-23 195 * Implementation Note:
e18c0412 Daniel Vetter 2014-01-23 196 * We need to inline list_for_each_entry in order to be able to set hole_start
e18c0412 Daniel Vetter 2014-01-23 197 * and hole_end on each iteration while keeping the macro sane.
62347f9e Lauri Kasanen 2014-04-02 198 *
62347f9e Lauri Kasanen 2014-04-02 199 * The __drm_mm_for_each_hole version is similar, but with added support for
62347f9e Lauri Kasanen 2014-04-02 200 * going backwards.
9e8944ab Chris Wilson 2012-11-15 201 */
62347f9e Lauri Kasanen 2014-04-02 202 #define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \
62347f9e Lauri Kasanen 2014-04-02 203 for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
62347f9e Lauri Kasanen 2014-04-02 204 &entry->hole_stack != &(mm)->hole_stack ? \
62347f9e Lauri Kasanen 2014-04-02 205 hole_start = drm_mm_hole_node_start(entry), \
62347f9e Lauri Kasanen 2014-04-02 206 hole_end = drm_mm_hole_node_end(entry), \
62347f9e Lauri Kasanen 2014-04-02 207 1 : 0; \
62347f9e Lauri Kasanen 2014-04-02 @208 entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack))
62347f9e Lauri Kasanen 2014-04-02 209
59c70d8d Geliang Tang 2015-11-21 210 #define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \
59c70d8d Geliang Tang 2015-11-21 211 __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, 0)
59c70d8d Geliang Tang 2015-11-21 212
249d6048 Jerome Glisse 2009-04-08 213 /*
249d6048 Jerome Glisse 2009-04-08 214 * Basic range manager support (drm_mm.c)
249d6048 Jerome Glisse 2009-04-08 215 */
e18c0412 Daniel Vetter 2014-01-23 216 int drm_mm_reserve_node(struct drm_mm *mm, struct drm_mm_node *node);

:::::: The code at line 208 was first introduced by commit
:::::: 62347f9e0f81d50e9b0923ec8a192f60ab7a1801 drm: Add support for two-ended allocation, v3

:::::: TO: Lauri Kasanen <[email protected]>
:::::: CC: Dave Airlie <[email protected]>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation


Attachments:
(No filename) (12.37 kB)
.config.gz (5.98 kB)
Download all attachments

2015-11-21 14:05:43

by Geliang Tang

[permalink] [raw]
Subject: [PATCH v2] drm/mm: rewrite drm_mm_for_each_hole

When backwards is 0, __drm_mm_for_each_hole is same as
drm_mm_for_each_hole. So I rewrite drm_mm_for_each_hole
by using __drm_mm_for_each_hole.

Signed-off-by: Geliang Tang <[email protected]>
---
Changes in v2:
- fix make htmldocs warning
---
include/drm/drm_mm.h | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
index 0de6290..a58cc6c 100644
--- a/include/drm/drm_mm.h
+++ b/include/drm/drm_mm.h
@@ -180,6 +180,14 @@ static inline u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node)
&(mm)->head_node.node_list, \
node_list)

+#define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \
+ for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
+ &entry->hole_stack != &(mm)->hole_stack ? \
+ hole_start = drm_mm_hole_node_start(entry), \
+ hole_end = drm_mm_hole_node_end(entry), \
+ 1 : 0; \
+ entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack))
+
/**
* drm_mm_for_each_hole - iterator to walk over all holes
* @entry: drm_mm_node used internally to track progress
@@ -200,20 +208,7 @@ static inline u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node)
* going backwards.
*/
#define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \
- for (entry = list_entry((mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
- &entry->hole_stack != &(mm)->hole_stack ? \
- hole_start = drm_mm_hole_node_start(entry), \
- hole_end = drm_mm_hole_node_end(entry), \
- 1 : 0; \
- entry = list_entry(entry->hole_stack.next, struct drm_mm_node, hole_stack))
-
-#define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \
- for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
- &entry->hole_stack != &(mm)->hole_stack ? \
- hole_start = drm_mm_hole_node_start(entry), \
- hole_end = drm_mm_hole_node_end(entry), \
- 1 : 0; \
- entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack))
+ __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, 0)

/*
* Basic range manager support (drm_mm.c)
--
2.5.0

2015-11-23 09:05:51

by Daniel Vetter

[permalink] [raw]
Subject: Re: [PATCH v2] drm/mm: rewrite drm_mm_for_each_hole

On Sat, Nov 21, 2015 at 10:04:04PM +0800, Geliang Tang wrote:
> When backwards is 0, __drm_mm_for_each_hole is same as
> drm_mm_for_each_hole. So I rewrite drm_mm_for_each_hole
> by using __drm_mm_for_each_hole.
>
> Signed-off-by: Geliang Tang <[email protected]>

Applied to drm-misc, thanks.
-Daniel

> ---
> Changes in v2:
> - fix make htmldocs warning
> ---
> include/drm/drm_mm.h | 23 +++++++++--------------
> 1 file changed, 9 insertions(+), 14 deletions(-)
>
> diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
> index 0de6290..a58cc6c 100644
> --- a/include/drm/drm_mm.h
> +++ b/include/drm/drm_mm.h
> @@ -180,6 +180,14 @@ static inline u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node)
> &(mm)->head_node.node_list, \
> node_list)
>
> +#define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \
> + for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
> + &entry->hole_stack != &(mm)->hole_stack ? \
> + hole_start = drm_mm_hole_node_start(entry), \
> + hole_end = drm_mm_hole_node_end(entry), \
> + 1 : 0; \
> + entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack))
> +
> /**
> * drm_mm_for_each_hole - iterator to walk over all holes
> * @entry: drm_mm_node used internally to track progress
> @@ -200,20 +208,7 @@ static inline u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node)
> * going backwards.
> */
> #define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \
> - for (entry = list_entry((mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
> - &entry->hole_stack != &(mm)->hole_stack ? \
> - hole_start = drm_mm_hole_node_start(entry), \
> - hole_end = drm_mm_hole_node_end(entry), \
> - 1 : 0; \
> - entry = list_entry(entry->hole_stack.next, struct drm_mm_node, hole_stack))
> -
> -#define __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, backwards) \
> - for (entry = list_entry((backwards) ? (mm)->hole_stack.prev : (mm)->hole_stack.next, struct drm_mm_node, hole_stack); \
> - &entry->hole_stack != &(mm)->hole_stack ? \
> - hole_start = drm_mm_hole_node_start(entry), \
> - hole_end = drm_mm_hole_node_end(entry), \
> - 1 : 0; \
> - entry = list_entry((backwards) ? entry->hole_stack.prev : entry->hole_stack.next, struct drm_mm_node, hole_stack))
> + __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, 0)
>
> /*
> * Basic range manager support (drm_mm.c)
> --
> 2.5.0
>
>
> _______________________________________________
> dri-devel mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch