All of lore.kernel.org
 help / color / mirror / Atom feed
* kernel/trace/trace_osnoise.c:1471:2: warning: %d in format string (no. 1) requires 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint]
@ 2022-01-09 17:39 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-01-09 17:39 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Daniel Bristot de Oliveira <bristot@redhat.com>
CC: "Steven Rostedt (VMware)" <rostedt@goodmis.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   4634129ad9fdc89d10b597fc6f8f4336fb61e105
commit: 498627b4ac85780b9962ed9b5c5abbefd884ef8e trace/osnoise: Fix return value on osnoise_init_hotplug_support
date:   7 months ago
:::::: branch date: 17 hours ago
:::::: commit date: 7 months ago
compiler: arc-elf-gcc (GCC) 11.2.0

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


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> kernel/trace/trace_osnoise.c:1611:8: warning: snprintf format string requires 2 parameters but only 1 is given. [wrongPrintfScanfArgNum]
    len = snprintf(NULL, 0, "%*pbln", cpumask_pr_args(&osnoise_cpumask)) + 1;
          ^
   kernel/trace/trace_osnoise.c:1618:8: warning: snprintf format string requires 2 parameters but only 1 is given. [wrongPrintfScanfArgNum]
    len = snprintf(mask_str, len, "%*pbln", cpumask_pr_args(&osnoise_cpumask));
          ^

vim +1471 kernel/trace/trace_osnoise.c

c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1453  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1454  /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1455   * start_kthread - Start a workload tread
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1456   */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1457  static int start_kthread(unsigned int cpu)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1458  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1459  	struct task_struct *kthread;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1460  	void *main = osnoise_main;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1461  	char comm[24];
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1462  
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1463  #ifdef CONFIG_TIMERLAT_TRACER
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1464  	if (osnoise_data.timerlat_tracer) {
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1465  		snprintf(comm, 24, "timerlat/%d", cpu);
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1466  		main = timerlat_main;
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1467  	} else {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1468  		snprintf(comm, 24, "osnoise/%d", cpu);
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1469  	}
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1470  #else
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22 @1471  	snprintf(comm, 24, "osnoise/%d", cpu);
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1472  #endif
a955d7eac1779b Daniel Bristot de Oliveira 2021-06-22  1473  	kthread = kthread_create_on_cpu(main, NULL, cpu, comm);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1474  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1475  	if (IS_ERR(kthread)) {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1476  		pr_err(BANNER "could not start sampling thread\n");
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1477  		stop_per_cpu_kthreads();
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1478  		return -ENOMEM;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1479  	}
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1480  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1481  	per_cpu(per_cpu_osnoise_var, cpu).kthread = kthread;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1482  	wake_up_process(kthread);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1483  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1484  	return 0;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1485  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1486  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1487  /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1488   * start_per_cpu_kthread - Kick off per-cpu osnoise sampling kthreads
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1489   *
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1490   * This starts the kernel thread that will look for osnoise on many
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1491   * cpus.
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1492   */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1493  static int start_per_cpu_kthreads(struct trace_array *tr)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1494  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1495  	struct cpumask *current_mask = &save_cpumask;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1496  	int retval;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1497  	int cpu;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1498  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1499  	get_online_cpus();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1500  	/*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1501  	 * Run only on CPUs in which trace and osnoise are allowed to run.
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1502  	 */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1503  	cpumask_and(current_mask, tr->tracing_cpumask, &osnoise_cpumask);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1504  	/*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1505  	 * And the CPU is online.
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1506  	 */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1507  	cpumask_and(current_mask, cpu_online_mask, current_mask);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1508  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1509  	for_each_possible_cpu(cpu)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1510  		per_cpu(per_cpu_osnoise_var, cpu).kthread = NULL;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1511  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1512  	for_each_cpu(cpu, current_mask) {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1513  		retval = start_kthread(cpu);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1514  		if (retval) {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1515  			stop_per_cpu_kthreads();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1516  			return retval;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1517  		}
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1518  	}
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1519  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1520  	put_online_cpus();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1521  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1522  	return 0;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1523  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1524  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1525  #ifdef CONFIG_HOTPLUG_CPU
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1526  static void osnoise_hotplug_workfn(struct work_struct *dummy)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1527  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1528  	struct trace_array *tr = osnoise_trace;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1529  	unsigned int cpu = smp_processor_id();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1530  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1531  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1532  	mutex_lock(&trace_types_lock);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1533  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1534  	if (!osnoise_busy)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1535  		goto out_unlock_trace;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1536  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1537  	mutex_lock(&interface_lock);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1538  	get_online_cpus();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1539  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1540  	if (!cpumask_test_cpu(cpu, &osnoise_cpumask))
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1541  		goto out_unlock;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1542  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1543  	if (!cpumask_test_cpu(cpu, tr->tracing_cpumask))
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1544  		goto out_unlock;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1545  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1546  	start_kthread(cpu);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1547  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1548  out_unlock:
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1549  	put_online_cpus();
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1550  	mutex_unlock(&interface_lock);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1551  out_unlock_trace:
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1552  	mutex_unlock(&trace_types_lock);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1553  }
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1554  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1555  static DECLARE_WORK(osnoise_hotplug_work, osnoise_hotplug_workfn);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1556  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1557  /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1558   * osnoise_cpu_init - CPU hotplug online callback function
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1559   */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1560  static int osnoise_cpu_init(unsigned int cpu)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1561  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1562  	schedule_work_on(cpu, &osnoise_hotplug_work);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1563  	return 0;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1564  }
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1565  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1566  /*
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1567   * osnoise_cpu_die - CPU hotplug offline callback function
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1568   */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1569  static int osnoise_cpu_die(unsigned int cpu)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1570  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1571  	stop_kthread(cpu);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1572  	return 0;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1573  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1574  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1575  static void osnoise_init_hotplug_support(void)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1576  {
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1577  	int ret;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1578  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1579  	ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "trace/osnoise:online",
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1580  				osnoise_cpu_init, osnoise_cpu_die);
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1581  	if (ret < 0)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1582  		pr_warn(BANNER "Error to init cpu hotplug support\n");
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1583  
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1584  	return;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1585  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1586  #else /* CONFIG_HOTPLUG_CPU */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1587  static void osnoise_init_hotplug_support(void)
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1588  {
498627b4ac8578 Daniel Bristot de Oliveira 2021-06-28  1589  	return;
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1590  }
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1591  #endif /* CONFIG_HOTPLUG_CPU */
c8895e271f7994 Daniel Bristot de Oliveira 2021-06-22  1592  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1593  /*
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1594   * osnoise_cpus_read - Read function for reading the "cpus" file
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1595   * @filp: The active open file structure
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1596   * @ubuf: The userspace provided buffer to read value into
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1597   * @cnt: The maximum number of bytes to read
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1598   * @ppos: The current "file" position
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1599   *
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1600   * Prints the "cpus" output into the user-provided buffer.
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1601   */
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1602  static ssize_t
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1603  osnoise_cpus_read(struct file *filp, char __user *ubuf, size_t count,
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1604  		  loff_t *ppos)
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1605  {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1606  	char *mask_str;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1607  	int len;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1608  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1609  	mutex_lock(&interface_lock);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1610  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22 @1611  	len = snprintf(NULL, 0, "%*pbl\n", cpumask_pr_args(&osnoise_cpumask)) + 1;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1612  	mask_str = kmalloc(len, GFP_KERNEL);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1613  	if (!mask_str) {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1614  		count = -ENOMEM;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1615  		goto out_unlock;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1616  	}
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1617  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1618  	len = snprintf(mask_str, len, "%*pbl\n", cpumask_pr_args(&osnoise_cpumask));
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1619  	if (len >= count) {
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1620  		count = -EINVAL;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1621  		goto out_free;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1622  	}
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1623  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1624  	count = simple_read_from_buffer(ubuf, count, ppos, mask_str, len);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1625  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1626  out_free:
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1627  	kfree(mask_str);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1628  out_unlock:
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1629  	mutex_unlock(&interface_lock);
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1630  
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1631  	return count;
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1632  }
bce29ac9ce0bb0 Daniel Bristot de Oliveira 2021-06-22  1633  

:::::: The code at line 1471 was first introduced by commit
:::::: a955d7eac1779b437ceb24fc352026a2cbcec140 trace: Add timerlat tracer

:::::: TO: Daniel Bristot de Oliveira <bristot@redhat.com>
:::::: CC: Steven Rostedt (VMware) <rostedt@goodmis.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 2+ messages in thread
* kernel/trace/trace_osnoise.c:1471:2: warning: %d in format string (no. 1) requires 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint]
@ 2021-08-20 17:11 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-08-20 17:11 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Daniel Bristot de Oliveira <bristot@redhat.com>
CC: "Steven Rostedt (VMware)" <rostedt@goodmis.org>

Hi Daniel,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d992fe5318d8d7af9510b879439a3c7f283da442
commit: 498627b4ac85780b9962ed9b5c5abbefd884ef8e trace/osnoise: Fix return value on osnoise_init_hotplug_support
date:   8 weeks ago
:::::: branch date: 19 hours ago
:::::: commit date: 8 weeks ago
compiler: or1k-linux-gcc (GCC) 11.2.0

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


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> kernel/trace/trace_osnoise.c:1611:8: warning: snprintf format string requires 2 parameters but only 1 is given. [wrongPrintfScanfArgNum]
    len = snprintf(NULL, 0, "%*pbln", cpumask_pr_args(&osnoise_cpumask)) + 1;
          ^
   kernel/trace/trace_osnoise.c:1618:8: warning: snprintf format string requires 2 parameters but only 1 is given. [wrongPrintfScanfArgNum]
    len = snprintf(mask_str, len, "%*pbln", cpumask_pr_args(&osnoise_cpumask));
          ^

vim +1471 kernel/trace/trace_osnoise.c

c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1453  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1454  /*
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1455   * start_kthread - Start a workload tread
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1456   */
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1457  static int start_kthread(unsigned int cpu)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1458  {
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1459  	struct task_struct *kthread;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1460  	void *main = osnoise_main;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1461  	char comm[24];
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1462  
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22  1463  #ifdef CONFIG_TIMERLAT_TRACER
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22  1464  	if (osnoise_data.timerlat_tracer) {
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22  1465  		snprintf(comm, 24, "timerlat/%d", cpu);
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22  1466  		main = timerlat_main;
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22  1467  	} else {
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1468  		snprintf(comm, 24, "osnoise/%d", cpu);
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22  1469  	}
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22  1470  #else
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22 @1471  	snprintf(comm, 24, "osnoise/%d", cpu);
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22  1472  #endif
a955d7eac1779b4 Daniel Bristot de Oliveira 2021-06-22  1473  	kthread = kthread_create_on_cpu(main, NULL, cpu, comm);
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1474  
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1475  	if (IS_ERR(kthread)) {
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1476  		pr_err(BANNER "could not start sampling thread\n");
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1477  		stop_per_cpu_kthreads();
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1478  		return -ENOMEM;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1479  	}
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1480  
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1481  	per_cpu(per_cpu_osnoise_var, cpu).kthread = kthread;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1482  	wake_up_process(kthread);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1483  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1484  	return 0;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1485  }
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1486  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1487  /*
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1488   * start_per_cpu_kthread - Kick off per-cpu osnoise sampling kthreads
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1489   *
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1490   * This starts the kernel thread that will look for osnoise on many
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1491   * cpus.
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1492   */
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1493  static int start_per_cpu_kthreads(struct trace_array *tr)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1494  {
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1495  	struct cpumask *current_mask = &save_cpumask;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1496  	int retval;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1497  	int cpu;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1498  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1499  	get_online_cpus();
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1500  	/*
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1501  	 * Run only on CPUs in which trace and osnoise are allowed to run.
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1502  	 */
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1503  	cpumask_and(current_mask, tr->tracing_cpumask, &osnoise_cpumask);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1504  	/*
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1505  	 * And the CPU is online.
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1506  	 */
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1507  	cpumask_and(current_mask, cpu_online_mask, current_mask);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1508  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1509  	for_each_possible_cpu(cpu)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1510  		per_cpu(per_cpu_osnoise_var, cpu).kthread = NULL;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1511  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1512  	for_each_cpu(cpu, current_mask) {
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1513  		retval = start_kthread(cpu);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1514  		if (retval) {
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1515  			stop_per_cpu_kthreads();
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1516  			return retval;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1517  		}
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1518  	}
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1519  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1520  	put_online_cpus();
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1521  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1522  	return 0;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1523  }
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1524  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1525  #ifdef CONFIG_HOTPLUG_CPU
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1526  static void osnoise_hotplug_workfn(struct work_struct *dummy)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1527  {
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1528  	struct trace_array *tr = osnoise_trace;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1529  	unsigned int cpu = smp_processor_id();
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1530  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1531  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1532  	mutex_lock(&trace_types_lock);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1533  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1534  	if (!osnoise_busy)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1535  		goto out_unlock_trace;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1536  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1537  	mutex_lock(&interface_lock);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1538  	get_online_cpus();
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1539  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1540  	if (!cpumask_test_cpu(cpu, &osnoise_cpumask))
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1541  		goto out_unlock;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1542  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1543  	if (!cpumask_test_cpu(cpu, tr->tracing_cpumask))
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1544  		goto out_unlock;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1545  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1546  	start_kthread(cpu);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1547  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1548  out_unlock:
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1549  	put_online_cpus();
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1550  	mutex_unlock(&interface_lock);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1551  out_unlock_trace:
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1552  	mutex_unlock(&trace_types_lock);
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1553  }
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1554  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1555  static DECLARE_WORK(osnoise_hotplug_work, osnoise_hotplug_workfn);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1556  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1557  /*
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1558   * osnoise_cpu_init - CPU hotplug online callback function
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1559   */
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1560  static int osnoise_cpu_init(unsigned int cpu)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1561  {
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1562  	schedule_work_on(cpu, &osnoise_hotplug_work);
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1563  	return 0;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1564  }
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1565  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1566  /*
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1567   * osnoise_cpu_die - CPU hotplug offline callback function
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1568   */
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1569  static int osnoise_cpu_die(unsigned int cpu)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1570  {
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1571  	stop_kthread(cpu);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1572  	return 0;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1573  }
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1574  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1575  static void osnoise_init_hotplug_support(void)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1576  {
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1577  	int ret;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1578  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1579  	ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "trace/osnoise:online",
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1580  				osnoise_cpu_init, osnoise_cpu_die);
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1581  	if (ret < 0)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1582  		pr_warn(BANNER "Error to init cpu hotplug support\n");
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1583  
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1584  	return;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1585  }
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1586  #else /* CONFIG_HOTPLUG_CPU */
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1587  static void osnoise_init_hotplug_support(void)
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1588  {
498627b4ac85780 Daniel Bristot de Oliveira 2021-06-28  1589  	return;
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1590  }
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1591  #endif /* CONFIG_HOTPLUG_CPU */
c8895e271f7994a Daniel Bristot de Oliveira 2021-06-22  1592  
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1593  /*
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1594   * osnoise_cpus_read - Read function for reading the "cpus" file
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1595   * @filp: The active open file structure
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1596   * @ubuf: The userspace provided buffer to read value into
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1597   * @cnt: The maximum number of bytes to read
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1598   * @ppos: The current "file" position
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1599   *
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1600   * Prints the "cpus" output into the user-provided buffer.
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1601   */
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1602  static ssize_t
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1603  osnoise_cpus_read(struct file *filp, char __user *ubuf, size_t count,
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1604  		  loff_t *ppos)
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1605  {
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1606  	char *mask_str;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1607  	int len;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1608  
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1609  	mutex_lock(&interface_lock);
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1610  
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22 @1611  	len = snprintf(NULL, 0, "%*pbl\n", cpumask_pr_args(&osnoise_cpumask)) + 1;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1612  	mask_str = kmalloc(len, GFP_KERNEL);
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1613  	if (!mask_str) {
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1614  		count = -ENOMEM;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1615  		goto out_unlock;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1616  	}
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1617  
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1618  	len = snprintf(mask_str, len, "%*pbl\n", cpumask_pr_args(&osnoise_cpumask));
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1619  	if (len >= count) {
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1620  		count = -EINVAL;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1621  		goto out_free;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1622  	}
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1623  
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1624  	count = simple_read_from_buffer(ubuf, count, ppos, mask_str, len);
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1625  
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1626  out_free:
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1627  	kfree(mask_str);
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1628  out_unlock:
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1629  	mutex_unlock(&interface_lock);
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1630  
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1631  	return count;
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1632  }
bce29ac9ce0bb0b Daniel Bristot de Oliveira 2021-06-22  1633  

:::::: The code at line 1471 was first introduced by commit
:::::: a955d7eac1779b437ceb24fc352026a2cbcec140 trace: Add timerlat tracer

:::::: TO: Daniel Bristot de Oliveira <bristot@redhat.com>
:::::: CC: Steven Rostedt (VMware) <rostedt@goodmis.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-01-09 17:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-09 17:39 kernel/trace/trace_osnoise.c:1471:2: warning: %d in format string (no. 1) requires 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint] kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-08-20 17:11 kernel test robot

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.