[Intel-gfx] [PATCH v3] drm/core: Add drm_accurate_vblank_count, v3.
kbuild test robot
lkp at intel.com
Tue Apr 12 16:43:27 UTC 2016
Hi Maarten,
[auto build test WARNING on drm/drm-next]
[also build test WARNING on v4.6-rc3 next-20160412]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Maarten-Lankhorst/drm-core-Add-drm_accurate_vblank_count-v3/20160412-223507
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:2663: warning: No description found for parameter 'fmt'
include/drm/drm_crtc.h:364: warning: No description found for parameter 'mode_blob'
include/drm/drm_crtc.h:779: warning: No description found for parameter 'name'
include/drm/drm_crtc.h:1238: warning: No description found for parameter 'connector_id'
include/drm/drm_crtc.h:1238: warning: No description found for parameter 'tile_blob_ptr'
include/drm/drm_crtc.h:1277: warning: No description found for parameter 'rotation'
include/drm/drm_crtc.h:1539: warning: No description found for parameter 'name'
include/drm/drm_crtc.h:1539: warning: No description found for parameter 'mutex'
include/drm/drm_crtc.h:1539: warning: No description found for parameter 'helper_private'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tile_idr'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'connector_ida'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'delayed_event'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'edid_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'dpms_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'path_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tile_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'plane_type_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'rotation_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_src_x'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_src_y'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_src_w'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_src_h'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_crtc_x'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_crtc_y'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_crtc_w'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_crtc_h'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_fb_id'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_crtc_id'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_active'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'prop_mode_id'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'dvi_i_subconnector_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'dvi_i_select_subconnector_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_subconnector_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_select_subconnector_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_mode_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_left_margin_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_right_margin_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_top_margin_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_bottom_margin_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_brightness_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_contrast_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_flicker_reduction_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_overscan_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_saturation_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'tv_hue_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'scaling_mode_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'aspect_ratio_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'dirty_info_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'suggested_x_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'suggested_y_property'
include/drm/drm_crtc.h:2175: warning: No description found for parameter 'allow_fb_modifiers'
drivers/gpu/drm/drm_atomic_helper.c:2924: warning: No description found for parameter 'start'
drivers/gpu/drm/drm_atomic_helper.c:2924: warning: No description found for parameter 'start'
drivers/gpu/drm/drm_atomic_helper.c:2924: warning: No description found for parameter 'start'
drivers/gpu/drm/drm_atomic_helper.c:2924: warning: No description found for parameter 'start'
include/drm/drm_dp_helper.h:749: warning: No description found for parameter 'i2c_nack_count'
include/drm/drm_dp_helper.h:749: warning: No description found for parameter 'i2c_defer_count'
drivers/gpu/drm/drm_dp_mst_topology.c:2356: warning: No description found for parameter 'connector'
include/drm/drm_dp_mst_helper.h:92: warning: No description found for parameter 'cached_edid'
include/drm/drm_dp_mst_helper.h:92: warning: No description found for parameter 'has_audio'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'max_dpcd_transaction_bytes'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'sink_count'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'total_slots'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'avail_slots'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'total_pbn'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'qlock'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_msg_downq'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_down_in_progress'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'payload_lock'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'proposed_vcpis'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'payloads'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'payload_mask'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'vcpi_mask'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_waitq'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'work'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'tx_work'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'destroy_connector_list'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'destroy_connector_lock'
include/drm/drm_dp_mst_helper.h:466: warning: No description found for parameter 'destroy_connector_work'
drivers/gpu/drm/drm_dp_mst_topology.c:2356: warning: No description found for parameter 'connector'
drivers/gpu/drm/drm_irq.c:176: warning: No description found for parameter 'flags'
>> drivers/gpu/drm/drm_irq.c:316: warning: Excess function parameter 'tv_ret' description in 'drm_accurate_vblank_count'
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:362: warning: cannot understand function prototype: 'struct drm_lock_data '
include/drm/drmP.h:415: warning: cannot understand function prototype: 'struct drm_driver '
include/drm/drmP.h:672: warning: cannot understand function prototype: 'struct drm_info_list '
include/drm/drmP.h:682: warning: cannot understand function prototype: 'struct drm_info_node '
include/drm/drmP.h:692: warning: cannot understand function prototype: 'struct drm_minor '
include/drm/drmP.h:740: warning: cannot understand function prototype: 'struct drm_device '
drivers/gpu/drm/i915/intel_runtime_pm.c:2275: warning: No description found for parameter 'resume'
drivers/gpu/drm/i915/intel_runtime_pm.c:2275: warning: No description found for parameter 'resume'
drivers/gpu/drm/i915/i915_irq.c:2663: warning: No description found for parameter 'fmt'
drivers/gpu/drm/i915/i915_irq.c:2663: warning: No description found for parameter 'fmt'
drivers/gpu/drm/i915/i915_irq.c:2663: warning: No description found for parameter 'fmt'
drivers/gpu/drm/i915/i915_irq.c:2663: 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'
drivers/gpu/drm/i915/i915_gem.c:686: warning: No description found for parameter 'dev'
drivers/gpu/drm/i915/i915_gem.c:686: warning: No description found for parameter 'data'
drivers/gpu/drm/i915/i915_gem.c:686: warning: No description found for parameter 'file'
drivers/gpu/drm/i915/i915_gem.c:767: warning: No description found for parameter 'dev'
drivers/gpu/drm/i915/i915_gem.c:767: warning: No description found for parameter 'obj'
drivers/gpu/drm/i915/i915_gem.c:767: warning: No description found for parameter 'args'
drivers/gpu/drm/i915/i915_gem.c:767: warning: No description found for parameter 'file'
drivers/gpu/drm/i915/i915_gem.c:1029: warning: No description found for parameter 'dev'
drivers/gpu/drm/i915/i915_gem.c:1029: warning: No description found for parameter 'data'
drivers/gpu/drm/i915/i915_gem.c:1029: warning: No description found for parameter 'file'
drivers/gpu/drm/i915/i915_gem.c:1245: warning: No description found for parameter 'rps'
drivers/gpu/drm/i915/i915_gem.c:1459: warning: No description found for parameter 'req'
drivers/gpu/drm/i915/i915_gem.c:1494: warning: No description found for parameter 'obj'
drivers/gpu/drm/i915/i915_gem.c:1494: warning: No description found for parameter 'readonly'
drivers/gpu/drm/i915/i915_gem.c:1617: warning: No description found for parameter 'dev'
drivers/gpu/drm/i915/i915_gem.c:1617: warning: No description found for parameter 'data'
drivers/gpu/drm/i915/i915_gem.c:1617: warning: No description found for parameter 'file'
drivers/gpu/drm/i915/i915_gem.c:1680: warning: No description found for parameter 'dev'
drivers/gpu/drm/i915/i915_gem.c:1680: warning: No description found for parameter 'data'
drivers/gpu/drm/i915/i915_gem.c:1680: warning: No description found for parameter 'file'
drivers/gpu/drm/i915/i915_gem.c:1725: warning: No description found for parameter 'dev'
drivers/gpu/drm/i915/i915_gem.c:1725: warning: No description found for parameter 'data'
drivers/gpu/drm/i915/i915_gem.c:1725: warning: No description found for parameter 'file'
drivers/gpu/drm/i915/i915_gem.c:2013: warning: No description found for parameter 'dev'
drivers/gpu/drm/i915/i915_gem.c:2013: warning: No description found for parameter 'size'
drivers/gpu/drm/i915/i915_gem.c:2013: warning: No description found for parameter 'tiling_mode'
drivers/gpu/drm/i915/i915_gem.c:2013: warning: No description found for parameter 'fenced'
drivers/gpu/drm/i915/i915_gem.c:2013: warning: Excess function parameter 'obj' description in 'i915_gem_get_gtt_alignment'
drivers/gpu/drm/i915/i915_gem.c:2911: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/i915_gem.c:3037: warning: No description found for parameter 'obj'
drivers/gpu/drm/i915/i915_gem.c:3087: warning: No description found for parameter 'dev'
drivers/gpu/drm/i915/i915_gem.c:3087: warning: No description found for parameter 'data'
drivers/gpu/drm/i915/i915_gem.c:3087: warning: No description found for parameter 'file'
drivers/gpu/drm/i915/i915_gem.c:3087: warning: Excess function parameter 'DRM_IOCTL_ARGS' description in 'i915_gem_wait_ioctl'
drivers/gpu/drm/i915/i915_gem.c:3459: warning: No description found for parameter 'obj'
drivers/gpu/drm/i915/i915_gem.c:3459: warning: No description found for parameter 'vm'
drivers/gpu/drm/i915/i915_gem.c:3459: warning: No description found for parameter 'ggtt_view'
drivers/gpu/drm/i915/i915_gem.c:3459: warning: No description found for parameter 'alignment'
drivers/gpu/drm/i915/i915_gem.c:3459: warning: No description found for parameter 'flags'
drivers/gpu/drm/i915/i915_gem.c:3714: warning: No description found for parameter 'obj'
drivers/gpu/drm/i915/i915_gem.c:3714: warning: No description found for parameter 'write'
drivers/gpu/drm/i915/i915_gem.c:3789: warning: No description found for parameter 'obj'
drivers/gpu/drm/i915/i915_gem.c:3789: warning: No description found for parameter 'cache_level'
drivers/gpu/drm/i915/i915_gem.c:4063: warning: No description found for parameter 'obj'
drivers/gpu/drm/i915/i915_gem.c:4063: warning: No description found for parameter 'write'
drivers/gpu/drm/i915/i915_cmd_parser.c:748: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/i915_cmd_parser.c:748: warning: Excess function parameter 'ring' description in 'i915_cmd_parser_init_ring'
drivers/gpu/drm/i915/i915_cmd_parser.c:838: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/i915_cmd_parser.c:838: warning: Excess function parameter 'ring' description in 'i915_cmd_parser_fini_ring'
drivers/gpu/drm/i915/i915_cmd_parser.c:1034: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/i915_cmd_parser.c:1034: warning: Excess function parameter 'ring' description in 'i915_needs_cmd_parser'
drivers/gpu/drm/i915/i915_cmd_parser.c:1186: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/i915_cmd_parser.c:1186: warning: Excess function parameter 'ring' description in 'i915_parse_cmds'
drivers/gpu/drm/i915/i915_cmd_parser.c:748: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/i915_cmd_parser.c:748: warning: Excess function parameter 'ring' description in 'i915_cmd_parser_init_ring'
drivers/gpu/drm/i915/i915_cmd_parser.c:838: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/i915_cmd_parser.c:838: warning: Excess function parameter 'ring' description in 'i915_cmd_parser_fini_ring'
drivers/gpu/drm/i915/i915_cmd_parser.c:1034: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/i915_cmd_parser.c:1034: warning: Excess function parameter 'ring' description in 'i915_needs_cmd_parser'
drivers/gpu/drm/i915/i915_cmd_parser.c:1186: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/i915_cmd_parser.c:1186: warning: Excess function parameter 'ring' description in 'i915_parse_cmds'
drivers/gpu/drm/i915/intel_lrc.c:318: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/intel_lrc.c:318: warning: Excess function parameter 'ring' description in 'intel_lr_context_descriptor_update'
drivers/gpu/drm/i915/intel_lrc.c:355: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/intel_lrc.c:355: warning: Excess function parameter 'ring' description in 'intel_execlists_ctx_id'
drivers/gpu/drm/i915/intel_lrc.c:547: warning: No description found for parameter 'engine'
drivers/gpu/drm/i915/intel_lrc.c:547: warning: Excess function parameter 'ring' description in 'intel_lrc_irq_handler'
drivers/gpu/drm/i915/intel_lrc.c:951: warning: No description found for parameter 'params'
drivers/gpu/drm/i915/intel_lrc.c:951: warning: Excess function parameter 'dev' description in 'intel_execlists_submission'
drivers/gpu/drm/i915/intel_lrc.c:951: warning: Excess function parameter 'file' description in 'intel_execlists_submission'
drivers/gpu/drm/i915/intel_lrc.c:951: warning: Excess function parameter 'ring' description in 'intel_execlists_submission'
drivers/gpu/drm/i915/intel_lrc.c:951: warning: Excess function parameter 'ctx' description in 'intel_execlists_submission'
drivers/gpu/drm/i915/intel_lrc.c:951: warning: Excess function parameter 'batch_obj' description in 'intel_execlists_submission'
drivers/gpu/drm/i915/intel_lrc.c:951: warning: Excess function parameter 'exec_start' description in 'intel_execlists_submission'
drivers/gpu/drm/i915/intel_lrc.c:951: warning: Excess function parameter 'dispatch_flags' description in 'intel_execlists_submission'
drivers/gpu/drm/i915/intel_lrc.c:1334: warning: No description found for parameter 'engine'
vim +316 drivers/gpu/drm/drm_irq.c
170 *
171 * Note: caller must hold dev->vbl_lock since this reads & writes
172 * device vblank fields.
173 */
174 static void drm_update_vblank_count(struct drm_device *dev, unsigned int pipe,
175 unsigned long flags)
> 176 {
177 struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
178 u32 cur_vblank, diff;
179 bool rc;
180 struct timeval t_vblank;
181 int count = DRM_TIMESTAMP_MAXRETRIES;
182 int framedur_ns = vblank->framedur_ns;
183
184 /*
185 * Interrupts were disabled prior to this call, so deal with counter
186 * wrap if needed.
187 * NOTE! It's possible we lost a full dev->max_vblank_count + 1 events
188 * here if the register is small or we had vblank interrupts off for
189 * a long time.
190 *
191 * We repeat the hardware vblank counter & timestamp query until
192 * we get consistent results. This to prevent races between gpu
193 * updating its hardware counter while we are retrieving the
194 * corresponding vblank timestamp.
195 */
196 do {
197 cur_vblank = dev->driver->get_vblank_counter(dev, pipe);
198 rc = drm_get_last_vbltimestamp(dev, pipe, &t_vblank, flags);
199 } while (cur_vblank != dev->driver->get_vblank_counter(dev, pipe) && --count > 0);
200
201 if (dev->max_vblank_count != 0) {
202 /* trust the hw counter when it's around */
203 diff = (cur_vblank - vblank->last) & dev->max_vblank_count;
204 } else if (rc && framedur_ns) {
205 const struct timeval *t_old;
206 u64 diff_ns;
207
208 t_old = &vblanktimestamp(dev, pipe, vblank->count);
209 diff_ns = timeval_to_ns(&t_vblank) - timeval_to_ns(t_old);
210
211 /*
212 * Figure out how many vblanks we've missed based
213 * on the difference in the timestamps and the
214 * frame/field duration.
215 */
216 diff = DIV_ROUND_CLOSEST_ULL(diff_ns, framedur_ns);
217
218 if (diff == 0 && flags & DRM_CALLED_FROM_VBLIRQ)
219 DRM_DEBUG_VBL("crtc %u: Redundant vblirq ignored."
220 " diff_ns = %lld, framedur_ns = %d)\n",
221 pipe, (long long) diff_ns, framedur_ns);
222 } else {
223 /* some kind of default for drivers w/o accurate vbl timestamping */
224 diff = (flags & DRM_CALLED_FROM_VBLIRQ) != 0;
225 }
226
227 /*
228 * Within a drm_vblank_pre_modeset - drm_vblank_post_modeset
229 * interval? If so then vblank irqs keep running and it will likely
230 * happen that the hardware vblank counter is not trustworthy as it
231 * might reset at some point in that interval and vblank timestamps
232 * are not trustworthy either in that interval. Iow. this can result
233 * in a bogus diff >> 1 which must be avoided as it would cause
234 * random large forward jumps of the software vblank counter.
235 */
236 if (diff > 1 && (vblank->inmodeset & 0x2)) {
237 DRM_DEBUG_VBL("clamping vblank bump to 1 on crtc %u: diffr=%u"
238 " due to pre-modeset.\n", pipe, diff);
239 diff = 1;
240 }
241
242 /*
243 * FIMXE: Need to replace this hack with proper seqlocks.
244 *
245 * Restrict the bump of the software vblank counter to a safe maximum
246 * value of +1 whenever there is the possibility that concurrent readers
247 * of vblank timestamps could be active at the moment, as the current
248 * implementation of the timestamp caching and updating is not safe
249 * against concurrent readers for calls to store_vblank() with a bump
250 * of anything but +1. A bump != 1 would very likely return corrupted
251 * timestamps to userspace, because the same slot in the cache could
252 * be concurrently written by store_vblank() and read by one of those
253 * readers without the read-retry logic detecting the collision.
254 *
255 * Concurrent readers can exist when we are called from the
256 * drm_vblank_off() or drm_vblank_on() functions and other non-vblank-
257 * irq callers. However, all those calls to us are happening with the
258 * vbl_lock locked to prevent drm_vblank_get(), so the vblank refcount
259 * can't increase while we are executing. Therefore a zero refcount at
260 * this point is safe for arbitrary counter bumps if we are called
261 * outside vblank irq, a non-zero count is not 100% safe. Unfortunately
262 * we must also accept a refcount of 1, as whenever we are called from
263 * drm_vblank_get() -> drm_vblank_enable() the refcount will be 1 and
264 * we must let that one pass through in order to not lose vblank counts
265 * during vblank irq off - which would completely defeat the whole
266 * point of this routine.
267 *
268 * Whenever we are called from vblank irq, we have to assume concurrent
269 * readers exist or can show up any time during our execution, even if
270 * the refcount is currently zero, as vblank irqs are usually only
271 * enabled due to the presence of readers, and because when we are called
272 * from vblank irq we can't hold the vbl_lock to protect us from sudden
273 * bumps in vblank refcount. Therefore also restrict bumps to +1 when
274 * called from vblank irq.
275 */
276 if ((diff > 1) && (atomic_read(&vblank->refcount) > 1 ||
277 (flags & DRM_CALLED_FROM_VBLIRQ))) {
278 DRM_DEBUG_VBL("clamping vblank bump to 1 on crtc %u: diffr=%u "
279 "refcount %u, vblirq %u\n", pipe, diff,
280 atomic_read(&vblank->refcount),
281 (flags & DRM_CALLED_FROM_VBLIRQ) != 0);
282 diff = 1;
283 }
284
285 DRM_DEBUG_VBL("updating vblank count on crtc %u:"
286 " current=%u, diff=%u, hw=%u hw_last=%u\n",
287 pipe, vblank->count, diff, cur_vblank, vblank->last);
288
289 if (diff == 0) {
290 WARN_ON_ONCE(cur_vblank != vblank->last);
291 return;
292 }
293
294 /*
295 * Only reinitialize corresponding vblank timestamp if high-precision query
296 * available and didn't fail, or we were called from the vblank interrupt.
297 * Otherwise reinitialize delayed at next vblank interrupt and assign 0
298 * for now, to mark the vblanktimestamp as invalid.
299 */
300 if (!rc && (flags & DRM_CALLED_FROM_VBLIRQ) == 0)
301 t_vblank = (struct timeval) {0, 0};
302
303 store_vblank(dev, pipe, diff, &t_vblank, cur_vblank);
304 }
305
306 /**
307 * drm_accurate_vblank_count - retrieve the master vblank counter
308 * @crtc: which counter to retrieve
309 * @tv_ret: last time counter was updated
310 *
311 * This function is similar to @drm_crtc_vblank_count but this
312 * function interpolates to handle a race with vblank irq's.
313 */
314
315 u32 drm_accurate_vblank_count(struct drm_crtc *crtc)
> 316 {
317 struct drm_device *dev = crtc->dev;
318 u32 vblank, pipe = drm_crtc_index(crtc);
319 unsigned long flags;
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/octet-stream
Size: 6302 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20160413/a34d574c/attachment-0001.obj>
More information about the dri-devel
mailing list