[PATCH 2/9] drm/print: add drm_debug_enabled()

Jani Nikula jani.nikula at intel.com
Mon Sep 16 08:53:24 UTC 2019


On Fri, 13 Sep 2019, Eric Engestrom <eric.engestrom at intel.com> wrote:
> On Friday, 2019-09-13 14:51:39 +0300, Jani Nikula wrote:
>> Add helper to check if a drm debug category is enabled. Convert drm core
>> to use it. No functional changes.
>> 
>> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>> ---
>>  drivers/gpu/drm/drm_atomic_uapi.c     | 2 +-
>>  drivers/gpu/drm/drm_dp_mst_topology.c | 6 +++---
>>  drivers/gpu/drm/drm_edid.c            | 2 +-
>>  drivers/gpu/drm/drm_edid_load.c       | 2 +-
>>  drivers/gpu/drm/drm_mipi_dbi.c        | 4 ++--
>>  drivers/gpu/drm/drm_print.c           | 4 ++--
>>  drivers/gpu/drm/drm_vblank.c          | 6 +++---
>>  include/drm/drm_print.h               | 5 +++++
>>  8 files changed, 18 insertions(+), 13 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
>> index 5a5b42db6f2a..6576cd997cbd 100644
>> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>> @@ -1406,7 +1406,7 @@ int drm_mode_atomic_ioctl(struct drm_device *dev,
>>  	} else if (arg->flags & DRM_MODE_ATOMIC_NONBLOCK) {
>>  		ret = drm_atomic_nonblocking_commit(state);
>>  	} else {
>> -		if (unlikely(drm_debug & DRM_UT_STATE))
>> +		if (unlikely(drm_debug_enabled(DRM_UT_STATE)))
>>  			drm_atomic_print_state(state);
>>  
>>  		ret = drm_atomic_commit(state);
>> diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
>> index 97216099a718..f47c5b6b51f7 100644
>> --- a/drivers/gpu/drm/drm_dp_mst_topology.c
>> +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
>> @@ -1180,7 +1180,7 @@ static int drm_dp_mst_wait_tx_reply(struct drm_dp_mst_branch *mstb,
>>  		}
>>  	}
>>  out:
>> -	if (unlikely(ret == -EIO && drm_debug & DRM_UT_DP)) {
>> +	if (unlikely(ret == -EIO && drm_debug_enabled(DRM_UT_DP))) {
>>  		struct drm_printer p = drm_debug_printer(DBG_PREFIX);
>>  
>>  		drm_dp_mst_dump_sideband_msg_tx(&p, txmsg);
>> @@ -2321,7 +2321,7 @@ static int process_single_tx_qlock(struct drm_dp_mst_topology_mgr *mgr,
>>  	idx += tosend + 1;
>>  
>>  	ret = drm_dp_send_sideband_msg(mgr, up, chunk, idx);
>> -	if (unlikely(ret && drm_debug & DRM_UT_DP)) {
>> +	if (unlikely(ret && drm_debug_enabled(DRM_UT_DP))) {
>>  		struct drm_printer p = drm_debug_printer(DBG_PREFIX);
>>  
>>  		drm_printf(&p, "sideband msg failed to send\n");
>> @@ -2388,7 +2388,7 @@ static void drm_dp_queue_down_tx(struct drm_dp_mst_topology_mgr *mgr,
>>  	mutex_lock(&mgr->qlock);
>>  	list_add_tail(&txmsg->next, &mgr->tx_msg_downq);
>>  
>> -	if (unlikely(drm_debug & DRM_UT_DP)) {
>> +	if (unlikely(drm_debug_enabled(DRM_UT_DP))) {
>>  		struct drm_printer p = drm_debug_printer(DBG_PREFIX);
>>  
>>  		drm_dp_mst_dump_sideband_msg_tx(&p, txmsg);
>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
>> index 12c783f4d956..58dad4d24cd4 100644
>> --- a/drivers/gpu/drm/drm_edid.c
>> +++ b/drivers/gpu/drm/drm_edid.c
>> @@ -1551,7 +1551,7 @@ static void connector_bad_edid(struct drm_connector *connector,
>>  {
>>  	int i;
>>  
>> -	if (connector->bad_edid_counter++ && !(drm_debug & DRM_UT_KMS))
>> +	if (connector->bad_edid_counter++ && !drm_debug_enabled(DRM_UT_KMS))
>>  		return;
>>  
>>  	dev_warn(connector->dev->dev,
>> diff --git a/drivers/gpu/drm/drm_edid_load.c b/drivers/gpu/drm/drm_edid_load.c
>> index d38b3b255926..37d8ba3ddb46 100644
>> --- a/drivers/gpu/drm/drm_edid_load.c
>> +++ b/drivers/gpu/drm/drm_edid_load.c
>> @@ -175,7 +175,7 @@ static void *edid_load(struct drm_connector *connector, const char *name,
>>  	u8 *edid;
>>  	int fwsize, builtin;
>>  	int i, valid_extensions = 0;
>> -	bool print_bad_edid = !connector->bad_edid_counter || (drm_debug & DRM_UT_KMS);
>> +	bool print_bad_edid = !connector->bad_edid_counter || drm_debug_enabled(DRM_UT_KMS);
>>  
>>  	builtin = match_string(generic_edid_name, GENERIC_EDIDS, name);
>>  	if (builtin >= 0) {
>> diff --git a/drivers/gpu/drm/drm_mipi_dbi.c b/drivers/gpu/drm/drm_mipi_dbi.c
>> index f8154316a3b0..ccfb5b33c5e3 100644
>> --- a/drivers/gpu/drm/drm_mipi_dbi.c
>> +++ b/drivers/gpu/drm/drm_mipi_dbi.c
>> @@ -783,7 +783,7 @@ static int mipi_dbi_spi1e_transfer(struct mipi_dbi *dbi, int dc,
>>  	int i, ret;
>>  	u8 *dst;
>>  
>> -	if (drm_debug & DRM_UT_DRIVER)
>> +	if (drm_debug_enabled(DRM_UT_DRIVER))
>>  		pr_debug("[drm:%s] dc=%d, max_chunk=%zu, transfers:\n",
>>  			 __func__, dc, max_chunk);
>>  
>> @@ -907,7 +907,7 @@ static int mipi_dbi_spi1_transfer(struct mipi_dbi *dbi, int dc,
>>  	max_chunk = dbi->tx_buf9_len;
>>  	dst16 = dbi->tx_buf9;
>>  
>> -	if (drm_debug & DRM_UT_DRIVER)
>> +	if (drm_debug_enabled(DRM_UT_DRIVER))
>>  		pr_debug("[drm:%s] dc=%d, max_chunk=%zu, transfers:\n",
>>  			 __func__, dc, max_chunk);
>>  
>> diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c
>> index c9b57012d412..a7c89ec5ff26 100644
>> --- a/drivers/gpu/drm/drm_print.c
>> +++ b/drivers/gpu/drm/drm_print.c
>> @@ -264,7 +264,7 @@ void drm_dev_dbg(const struct device *dev, unsigned int category,
>>  	struct va_format vaf;
>>  	va_list args;
>>  
>> -	if (!(drm_debug & category))
>> +	if (!drm_debug_enabled(category))
>>  		return;
>>  
>>  	va_start(args, format);
>> @@ -287,7 +287,7 @@ void drm_dbg(unsigned int category, const char *format, ...)
>>  	struct va_format vaf;
>>  	va_list args;
>>  
>> -	if (!(drm_debug & category))
>> +	if (!drm_debug_enabled(category))
>>  		return;
>>  
>>  	va_start(args, format);
>> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
>> index 9c6899758bc9..4f7962b6427b 100644
>> --- a/drivers/gpu/drm/drm_vblank.c
>> +++ b/drivers/gpu/drm/drm_vblank.c
>> @@ -332,7 +332,7 @@ u64 drm_crtc_accurate_vblank_count(struct drm_crtc *crtc)
>>  	u64 vblank;
>>  	unsigned long flags;
>>  
>> -	WARN_ONCE(drm_debug & DRM_UT_VBL && !dev->driver->get_vblank_timestamp,
>> +	WARN_ONCE(drm_debug_enabled(DRM_UT_VBL) && !dev->driver->get_vblank_timestamp,
>>  		  "This function requires support for accurate vblank timestamps.");
>>  
>>  	spin_lock_irqsave(&dev->vblank_time_lock, flags);
>> @@ -706,7 +706,7 @@ bool drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev,
>>  	 */
>>  	*vblank_time = ktime_sub_ns(etime, delta_ns);
>>  
>> -	if ((drm_debug & DRM_UT_VBL) == 0)
>> +	if (!drm_debug_enabled(DRM_UT_VBL))
>>  		return true;
>>  
>>  	ts_etime = ktime_to_timespec64(etime);
>> @@ -1352,7 +1352,7 @@ void drm_vblank_restore(struct drm_device *dev, unsigned int pipe)
>>  	assert_spin_locked(&dev->vblank_time_lock);
>>  
>>  	vblank = &dev->vblank[pipe];
>> -	WARN_ONCE((drm_debug & DRM_UT_VBL) && !vblank->framedur_ns,
>> +	WARN_ONCE(drm_debug_enabled(DRM_UT_VBL) && !vblank->framedur_ns,
>>  		  "Cannot compute missed vblanks without frame duration\n");
>>  	framedur_ns = vblank->framedur_ns;
>>  
>> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
>> index e5c421abce48..e13f901312a4 100644
>> --- a/include/drm/drm_print.h
>> +++ b/include/drm/drm_print.h
>> @@ -294,6 +294,11 @@ static inline struct drm_printer drm_err_printer(const char *prefix)
>>  #define DRM_UT_LEASE		0x80
>>  #define DRM_UT_DP		0x100
>>  
>> +static inline bool drm_debug_enabled(unsigned int category)
>> +{
>> +	return drm_debug & category;
>
> Worth making that `return unlikely(drm_debug & category);` to make sure
> the preloaded path is always to skip the debug stuff?

If that would let us drop the unlikely() wrapping from the various users
of this function, agreed, it would be great.

However I'm not at all certain unlikely() here will propagate like
that. I just don't know. Do you?

BR,
Jani.


>
>> +}
>> +
>>  __printf(3, 4)
>>  void drm_dev_printk(const struct device *dev, const char *level,
>>  		    const char *format, ...);
>> -- 
>> 2.20.1
>> 
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the dri-devel mailing list