linux/drivers/cpufreq
Linus Torvalds 23b5d045ae tracing: Updates for v7.2:
- Remove a redundant IS_ERR() check
 
   trace_pipe_open() already checks for IS_ERR() and does it again in the
   return path. Remove the return check.
 
 - Export seq_buf_putmem_hex() to allow kunit tests against them
 
   To add Kunit tests on seq_buf_putmem_hex(), it needs to be exported.
 
 - Replace strcat() and strcpy() with seq_buf() logic
 
   The code for synthetic events uses a series of strcat() and strcpy() which
   can be error prone. Replace them with seq_buf() logic that does all the
   necessary bound checking.
 
 - Add a lockdep rcu_is_watching() to trace_##event##_enabled() call
 
   The trace_##event##_enabled() is a static branch that is true if the
   "event" is enabled. But this can hide bugs if this logic is in a location
   where RCU is disabled and not "watching". It would only trigger if lockdep
   is enabled and the event is enabled.
 
   Add a "rcu_is_watching()" warning if lockdep is enabled in that helper
   function to trigger regardless if the event is enabled or not.
 
 - Remove the local variable in the trace_printk() macro
 
   For name space integrity, remove the _______STR variable in the
   trace_printk() macro for using the sizeof() macro directly.
 
 - Use guard()s for the trace_recursion_record.c file
 
 - Fix typo in a comment of eventfs_callback() kerneldoc
 
 - Use trace_call__##event() in events called within trace_##event##_enabled()
 
   A couple of events are called within an if block guarded by
   trace_##event##_enabled(). That is a static key that is only enabled when
   the event is enabled. The trace_call_##event() calls the tracepoint code
   directly without adding a redundant static key for that check.
 
 - Allow perf to read synthetic events
 
   Currently, perf does not have the ability to enable a synthetic event. If
   it does, it will either cause a kernel warning or error with "No such
   device". Synthetic events are not much different than kprobes and perf can
   handle fine with a few modifications.
 
 - Replace printk(KERN_WARNING ...) with pr_warn()
 
 - Replace krealloc() on an array with krealloc_array()
 
 - Fix README file path name for synthetic events
 
 - Change tracing_map tracing_map_array to use a flexible array
 
   Instead of allocating a separate pointer to hold the pages field of
   tracing_map_array, allocate the pages field as a flexible array when
   allocating the structure.
 
 - Fold trace_iterator_increment() into trace_find_next_entry_inc()
 
   The function trace_iterator_increment() was only used by
   trace_find_next_entry_inc(). It's not big enough to be a helper function
   for one user. Fold it into its caller.
 
 - Make field_var_str field a flexible array of hist_elt_data
 
   Instead of allocating a separate pointer for the field_var_str array of
   the hist_elt_data structure, allocate it as a flexible array when
   allocating the structure.
 
 - Disable KCOV for trace_irqsoff.c
 
   Like trace_preemptirq.c, trace_irqsoff.c has code that will crash when
   KCOV is enabled on ARM. The irqsoff tracing can be called on ARM because
   the irqsoff tracing code can be run from early interrupt code and produce
   coverage unrelated to syscall inputs.
 
 - Fix warning in __unregister_ftrace_function() called by perf
 
   Perf calls unregister_ftrace_function() without checking if its ftrace_ops
   has already been unregistered. There's an error path where on clean up it
   will unregister the ftrace_ops even if it wasn't registered and causes a
   warning.
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYKADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCajHGbRQccm9zdGVkdEBn
 b29kbWlzLm9yZwAKCRAp5XQQmuv6qqP/AP4nv/Tmv6T7vxMzL7dY/WJ0xT2xkW7Z
 tlejy1AM/RBaTAEAkkgdDNhIAJwxCxsmY6/Zr1mRWzaF7O4kX94KYFcBHww=
 =7nyZ
 -----END PGP SIGNATURE-----

Merge tag 'trace-v7.2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace

Pull tracing updates from Steven Rostedt:

 - Remove a redundant IS_ERR() check

   trace_pipe_open() already checks for IS_ERR() and does it again in
   the return path. Remove the return check.

 - Export seq_buf_putmem_hex() to allow kunit tests against them

   To add Kunit tests on seq_buf_putmem_hex(), it needs to be exported.

 - Replace strcat() and strcpy() with seq_buf() logic

   The code for synthetic events uses a series of strcat() and strcpy()
   which can be error prone. Replace them with seq_buf() logic that does
   all the necessary bound checking.

 - Add a lockdep rcu_is_watching() to trace_##event##_enabled() call

   The trace_##event##_enabled() is a static branch that is true if the
   "event" is enabled. But this can hide bugs if this logic is in a
   location where RCU is disabled and not "watching". It would only
   trigger if lockdep is enabled and the event is enabled.

   Add a "rcu_is_watching()" warning if lockdep is enabled in that
   helper function to trigger regardless if the event is enabled or not.

 - Remove the local variable in the trace_printk() macro

   For name space integrity, remove the _______STR variable in the
   trace_printk() macro for using the sizeof() macro directly.

 - Use guard()s for the trace_recursion_record.c file

 - Fix typo in a comment of eventfs_callback() kerneldoc

 - Use trace_call__##event() in events within trace_##event##_enabled()

   A couple of events are called within an if block guarded by
   trace_##event##_enabled(). That is a static key that is only enabled
   when the event is enabled. The trace_call_##event() calls the
   tracepoint code directly without adding a redundant static key for
   that check.

 - Allow perf to read synthetic events

   Currently, perf does not have the ability to enable a synthetic
   event. If it does, it will either cause a kernel warning or error
   with "No such device". Synthetic events are not much different than
   kprobes and perf can handle fine with a few modifications.

 - Replace printk(KERN_WARNING ...) with pr_warn()

 - Replace krealloc() on an array with krealloc_array()

 - Fix README file path name for synthetic events

 - Change tracing_map tracing_map_array to use a flexible array

   Instead of allocating a separate pointer to hold the pages field of
   tracing_map_array, allocate the pages field as a flexible array when
   allocating the structure.

 - Fold trace_iterator_increment() into trace_find_next_entry_inc()

   The function trace_iterator_increment() was only used by
   trace_find_next_entry_inc(). It's not big enough to be a helper
   function for one user. Fold it into its caller.

 - Make field_var_str field a flexible array of hist_elt_data

   Instead of allocating a separate pointer for the field_var_str array
   of the hist_elt_data structure, allocate it as a flexible array when
   allocating the structure.

 - Disable KCOV for trace_irqsoff.c

   Like trace_preemptirq.c, trace_irqsoff.c has code that will crash
   when KCOV is enabled on ARM. The irqsoff tracing can be called on ARM
   because the irqsoff tracing code can be run from early interrupt code
   and produce coverage unrelated to syscall inputs.

 - Fix warning in __unregister_ftrace_function() called by perf

   Perf calls unregister_ftrace_function() without checking if its
   ftrace_ops has already been unregistered. There's an error path where
   on clean up it will unregister the ftrace_ops even if it wasn't
   registered and causes a warning.

* tag 'trace-v7.2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
  perf/ftrace: Fix WARNING in __unregister_ftrace_function
  tracing: Disable KCOV instrumentation for trace_irqsoff.o
  tracing: Turn hist_elt_data field_var_str into a flexible array
  tracing: Move trace_iterator_increment() into trace_find_next_entry_inc()
  tracing: Simplify pages allocation for tracing_map logic
  tracing: Fix README path for synthetic_events
  tracing: Use krealloc_array() for trace option array growth
  tracing/branch: Use pr_warn() instead of printk(KERN_WARNING)
  tracing: Allow perf to read synthetic events
  HID: Use trace_call__##name() at guarded tracepoint call sites
  cpufreq: amd-pstate: Use trace_call__##name() at guarded tracepoint call site
  tracefs: Fix typo in a comment of eventfs_callback() kerneldoc
  tracing: Switch trace_recursion_record.c code over to use guard()
  tracing: Remove local variable for argument detection from trace_printk()
  tracepoint: Add lockdep rcu_is_watching() check to trace_##name##_enabled()
  tracing: Bound synthetic-field strings with seq_buf
  seq_buf: Export seq_buf_putmem_hex() and add KUnit tests
  tracing: Remove redundant IS_ERR() check in trace_pipe_open()
2026-06-18 20:53:00 -07:00
..
acpi-cpufreq.c cpufreq: acpi-cpufreq: use DMI max speed when CPPC is unavailable 2026-03-25 14:29:05 +01:00
airoha-cpufreq.c cpufreq: airoha: Convert to of_machine_get_match() 2026-03-13 17:00:04 -05:00
amd_freq_sensitivity.c x86/msr: Switch rdmsr_on_cpu() users to rdmsrq_on_cpu() 2026-06-08 10:01:49 +02:00
amd-pstate-trace.c
amd-pstate-trace.h amd-pstate: Introduce a tracepoint trace_amd_pstate_cppc_req2() 2026-04-02 11:28:31 -05:00
amd-pstate-ut.c cpufreq/amd-pstate-ut: Disable dynamic_epp after the mode switch 2026-05-26 12:39:28 +02:00
amd-pstate.c tracing: Updates for v7.2: 2026-06-18 20:53:00 -07:00
amd-pstate.h cpufreq/amd-pstate: drop stale @epp_cached kdoc 2026-05-26 10:03:15 -05:00
apple-soc-cpufreq.c cpufreq: apple-soc: Use FIELD_MODIFY() 2026-05-05 09:29:21 +05:30
armada-8k-cpufreq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
armada-37xx-cpufreq.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
bmips-cpufreq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
brcmstb-avs-cpufreq.c cpufreq: brcmstb-avs: Use scope-based cleanup helper 2025-08-29 11:28:27 +05:30
cppc_cpufreq.c cpufreq: Remove driver default policy->min/max init 2026-06-08 18:42:14 +02:00
cpufreq_conservative.c cpufreq: conservative: Simplify frequency limit handling 2026-05-22 18:41:24 +02:00
cpufreq_governor_attr_set.c
cpufreq_governor.c Updates for the NOHZ subsystem: 2026-06-15 13:48:52 +05:30
cpufreq_governor.h Merge back earlier cpufreq material for 7.1 2026-03-27 11:57:31 +01:00
cpufreq_ondemand.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
cpufreq_ondemand.h cpufreq: ondemand: Update the efficient idle check for Intel extended Families 2025-09-10 12:25:08 +02:00
cpufreq_performance.c
cpufreq_powersave.c
cpufreq_stats.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
cpufreq_userspace.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
cpufreq-dt-platdev.c cpufreq: Add QCS8300 to cpufreq-dt-platdev blocklist 2026-03-17 14:21:32 +05:30
cpufreq-dt.c cpufreq: Make drivers using CPUFREQ_ETERNAL specify transition latency 2025-10-01 13:56:24 +02:00
cpufreq-dt.h cpufreq: dt: Add register helper 2025-07-09 13:41:33 +05:30
cpufreq-nforce2.c cpufreq: Remove driver default policy->min/max init 2026-06-08 18:42:14 +02:00
cpufreq.c Updates for the NOHZ subsystem: 2026-06-15 13:48:52 +05:30
davinci-cpufreq.c cpufreq: davinci: Stop setting cpufreq_driver->attr field 2025-02-07 09:45:12 +05:30
e_powersaver.c Convert 'alloc_flex' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
freq_table.c cpufreq: Remove driver default policy->min/max init 2026-06-08 18:42:14 +02:00
gx-suspmod.c cpufreq: Remove driver default policy->min/max init 2026-06-08 18:42:14 +02:00
highbank-cpufreq.c
imx-cpufreq-dt.c
imx6q-cpufreq.c cpufreq: Make drivers using CPUFREQ_ETERNAL specify transition latency 2025-10-01 13:56:24 +02:00
intel_pstate.c cpufreq: Remove driver default policy->min/max init 2026-06-08 18:42:14 +02:00
Kconfig cpufreq: clean up dead code in Kconfig 2026-04-01 15:58:01 +02:00
Kconfig.arm cpufreq: qcom: Unify user-visible "Qualcomm" name 2026-05-05 08:15:34 +05:30
Kconfig.powerpc cpufreq: ppc_cbe: Remove powerpc Cell driver 2025-02-26 21:15:09 +05:30
Kconfig.x86 x86/cpu updates for v7.2: 2026-06-15 15:25:17 +05:30
kirkwood-cpufreq.c cpufreq: kirkwood: Stop setting cpufreq_driver->attr field 2025-02-07 09:45:12 +05:30
longhaul.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
longhaul.h
longrun.c treewide: Explicitly include the x86 CPUID headers 2026-05-06 14:29:59 +02:00
loongson2_cpufreq.c cpufreq: loongson: Stop setting cpufreq_driver->attr field 2025-02-07 09:45:12 +05:30
loongson3_cpufreq.c cpufreq: loongson: Set .set_boost directly 2025-02-07 09:45:15 +05:30
Makefile cpufreq: elanfreq: Drop support for AMD Elan SC4* 2026-05-22 18:42:19 +02:00
mediatek-cpufreq-hw.c cpufreq: Make drivers using CPUFREQ_ETERNAL specify transition latency 2025-10-01 13:56:24 +02:00
mediatek-cpufreq.c cpufreq: mediatek: Simplify with of_machine_get_match_data() 2025-11-26 19:42:21 -06:00
mvebu-cpufreq.c cpufreq: Init cpufreq only for present CPUs 2025-03-17 11:29:18 +05:30
p4-clockmod.c x86/msr: Switch wrmsr_on_cpu() users to wrmsrq_on_cpu() 2026-06-08 10:01:49 +02:00
pasemi-cpufreq.c cpufreq: pasemi: Stop setting cpufreq_driver->attr field 2025-02-07 09:45:12 +05:30
pcc-cpufreq.c cpufreq: Remove driver default policy->min/max init 2026-06-08 18:42:14 +02:00
pmac32-cpufreq.c cpufreq: pmac: Stop setting cpufreq_driver->attr field 2025-02-07 09:45:13 +05:30
pmac64-cpufreq.c cpufreq: pmac: Stop setting cpufreq_driver->attr field 2025-02-07 09:45:13 +05:30
powernow-k6.c cpufreq: powernow: Stop setting cpufreq_driver->attr field 2025-02-07 09:45:13 +05:30
powernow-k7.c treewide: Explicitly include the x86 CPUID headers 2026-05-06 14:29:59 +02:00
powernow-k7.h
powernow-k8.c treewide: Explicitly include the x86 CPUID headers 2026-05-06 14:29:59 +02:00
powernow-k8.h
powernv-cpufreq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
powernv-trace.h PM: cpufreq: powernv/tracing: Move powernv_throttle trace event 2025-07-21 16:40:56 -04:00
pxa2xx-cpufreq.c
pxa3xx-cpufreq.c cpufreq: Remove driver default policy->min/max init 2026-06-08 18:42:14 +02:00
qcom-cpufreq-hw.c cpufreq: qcom: Add cpufreq scaling support for Qualcomm Shikra SoC 2026-06-08 10:58:07 +05:30
qcom-cpufreq-nvmem.c cpufreq: qcom-nvmem: Convert to of_machine_get_match() 2026-03-13 17:00:04 -05:00
qoriq-cpufreq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
raspberrypi-cpufreq.c
rcpufreq_dt.rs rust: platform: make Driver trait lifetime-parameterized 2026-05-27 16:23:31 +02:00
s3c64xx-cpufreq.c cpufreq: s3c64xx: Fix compilation warning 2025-01-23 20:47:32 +01:00
s5pv210-cpufreq.c cpufreq: s5pv210: Simplify with scoped for each OF child loop 2026-02-03 20:58:13 -06:00
sa1110-cpufreq.c
scmi-cpufreq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
scpi-cpufreq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
sh-cpufreq.c cpufreq: Remove driver default policy->min/max init 2026-06-08 18:42:14 +02:00
sparc-us2e-cpufreq.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
sparc-us3-cpufreq.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
spear-cpufreq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
speedstep-centrino.c x86/msr: Switch wrmsr_on_cpu() users to wrmsrq_on_cpu() 2026-06-08 10:01:49 +02:00
speedstep-ich.c cpufreq: speedstep: Stop setting cpufreq_driver->attr field 2025-02-07 09:45:14 +05:30
speedstep-lib.c treewide: Explicitly include the x86 CPUID headers 2026-05-06 14:29:59 +02:00
speedstep-lib.h cpufreq: speedstep-lib: Use int type to store negative error codes 2025-09-05 20:28:46 +02:00
speedstep-smi.c cpufreq: speedstep: Stop setting cpufreq_driver->attr field 2025-02-07 09:45:14 +05:30
sti-cpufreq.c
sun50i-cpufreq-nvmem.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
tegra20-cpufreq.c
tegra124-cpufreq.c drivers: cpufreq: add Tegra114 support 2025-07-15 08:37:35 +05:30
tegra186-cpufreq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
tegra194-cpufreq.c cpufreq: tegra194: Rename Tegra239 to Tegra238 2026-03-03 09:46:04 +05:30
ti-cpufreq.c cpufreq: ti: Add EPROBE_DEFER for K3 SoCs 2026-06-08 11:16:42 +05:30
vexpress-spc-cpufreq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
virtual-cpufreq.c cpufreq: Remove driver default policy->min/max init 2026-06-08 18:42:14 +02:00