All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH] drm/mst: Fix up u64 division
Date: Sat, 09 Nov 2019 06:12:54 +0800	[thread overview]
Message-ID: <201911090652.CPRCCFGQ%lkp@intel.com> (raw)
In-Reply-To: <20191106173622.15573-1-sean@poorly.run>

[-- Attachment #1: Type: text/plain, Size: 6189 bytes --]

Hi Sean,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on next-20191108]
[cannot apply to v5.4-rc6]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Sean-Paul/drm-mst-Fix-up-u64-division/20191109-040829
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 7.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.4.0 make.cross ARCH=m68k 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/drm_dp_mst_topology.c: In function '__topology_ref_save':
   drivers/gpu/drm/drm_dp_mst_topology.c:1424:6: error: implicit declaration of function 'stack_trace_save'; did you mean 'stack_depot_save'? [-Werror=implicit-function-declaration]
     n = stack_trace_save(stack_entries, ARRAY_SIZE(stack_entries), 1);
         ^~~~~~~~~~~~~~~~
         stack_depot_save
   drivers/gpu/drm/drm_dp_mst_topology.c: In function '__dump_topology_ref_history':
   drivers/gpu/drm/drm_dp_mst_topology.c:1513:3: error: implicit declaration of function 'stack_trace_snprint'; did you mean 'acpi_trace_point'? [-Werror=implicit-function-declaration]
      stack_trace_snprint(buf, PAGE_SIZE, entries, nr_entries, 4);
      ^~~~~~~~~~~~~~~~~~~
      acpi_trace_point
>> drivers/gpu/drm/drm_dp_mst_topology.c:1515:46: warning: format '%u' expects argument of type 'unsigned int', but argument 6 has type 'long unsigned int' [-Wformat=]
      drm_printf(&p, "  %d %ss (last at %5llu.%06u):\n%s",
                                              ~~~^
                                              %06lu
   cc1: some warnings being treated as errors

vim +1515 drivers/gpu/drm/drm_dp_mst_topology.c

  1412	
  1413	static noinline void
  1414	__topology_ref_save(struct drm_dp_mst_topology_mgr *mgr,
  1415			    struct drm_dp_mst_topology_ref_history *history,
  1416			    enum drm_dp_mst_topology_ref_type type)
  1417	{
  1418		struct drm_dp_mst_topology_ref_entry *entry = NULL;
  1419		depot_stack_handle_t backtrace;
  1420		ulong stack_entries[STACK_DEPTH];
  1421		uint n;
  1422		int i;
  1423	
> 1424		n = stack_trace_save(stack_entries, ARRAY_SIZE(stack_entries), 1);
  1425		backtrace = stack_depot_save(stack_entries, n, GFP_KERNEL);
  1426		if (!backtrace)
  1427			return;
  1428	
  1429		/* Try to find an existing entry for this backtrace */
  1430		for (i = 0; i < history->len; i++) {
  1431			if (history->entries[i].backtrace == backtrace) {
  1432				entry = &history->entries[i];
  1433				break;
  1434			}
  1435		}
  1436	
  1437		/* Otherwise add one */
  1438		if (!entry) {
  1439			struct drm_dp_mst_topology_ref_entry *new;
  1440			int new_len = history->len + 1;
  1441	
  1442			new = krealloc(history->entries, sizeof(*new) * new_len,
  1443				       GFP_KERNEL);
  1444			if (!new)
  1445				return;
  1446	
  1447			entry = &new[history->len];
  1448			history->len = new_len;
  1449			history->entries = new;
  1450	
  1451			entry->backtrace = backtrace;
  1452			entry->type = type;
  1453			entry->count = 0;
  1454		}
  1455		entry->count++;
  1456		entry->ts_nsec = ktime_get_ns();
  1457	}
  1458	
  1459	static int
  1460	topology_ref_history_cmp(const void *a, const void *b)
  1461	{
  1462		const struct drm_dp_mst_topology_ref_entry *entry_a = a, *entry_b = b;
  1463	
  1464		if (entry_a->ts_nsec > entry_b->ts_nsec)
  1465			return 1;
  1466		else if (entry_a->ts_nsec < entry_b->ts_nsec)
  1467			return -1;
  1468		else
  1469			return 0;
  1470	}
  1471	
  1472	static inline const char *
  1473	topology_ref_type_to_str(enum drm_dp_mst_topology_ref_type type)
  1474	{
  1475		if (type == DRM_DP_MST_TOPOLOGY_REF_GET)
  1476			return "get";
  1477		else
  1478			return "put";
  1479	}
  1480	
  1481	static void
  1482	__dump_topology_ref_history(struct drm_dp_mst_topology_ref_history *history,
  1483				    void *ptr, const char *type_str)
  1484	{
  1485		struct drm_printer p = drm_debug_printer(DBG_PREFIX);
  1486		char *buf = kzalloc(PAGE_SIZE, GFP_KERNEL);
  1487		int i;
  1488	
  1489		if (!buf)
  1490			return;
  1491	
  1492		if (!history->len)
  1493			goto out;
  1494	
  1495		/* First, sort the list so that it goes from oldest to newest
  1496		 * reference entry
  1497		 */
  1498		sort(history->entries, history->len, sizeof(*history->entries),
  1499		     topology_ref_history_cmp, NULL);
  1500	
  1501		drm_printf(&p, "%s (%p) topology count reached 0, dumping history:\n",
  1502			   type_str, ptr);
  1503	
  1504		for (i = 0; i < history->len; i++) {
  1505			const struct drm_dp_mst_topology_ref_entry *entry =
  1506				&history->entries[i];
  1507			ulong *entries;
  1508			uint nr_entries;
  1509			u64 ts_nsec = entry->ts_nsec;
  1510			u64 rem_nsec = do_div(ts_nsec, 1000000000);
  1511	
  1512			nr_entries = stack_depot_fetch(entry->backtrace, &entries);
  1513			stack_trace_snprint(buf, PAGE_SIZE, entries, nr_entries, 4);
  1514	
> 1515			drm_printf(&p, "  %d %ss (last at %5llu.%06u):\n%s",
  1516				   entry->count,
  1517				   topology_ref_type_to_str(entry->type),
  1518				   ts_nsec, do_div(rem_nsec, 1000), buf);
  1519		}
  1520	
  1521		/* Now free the history, since this is the only time we expose it */
  1522		kfree(history->entries);
  1523	out:
  1524		kfree(buf);
  1525	}
  1526	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 51345 bytes --]

      parent reply	other threads:[~2019-11-08 22:12 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-06 17:36 [PATCH] drm/mst: Fix up u64 division Sean Paul
2019-11-06 18:28 ` Ville Syrjälä
2019-11-06 19:41   ` Sean Paul
2019-11-06 20:14     ` Ville Syrjälä
2019-11-06 20:22       ` Sean Paul
2019-11-08 22:12 ` kbuild test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201911090652.CPRCCFGQ%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.