1menu "Linux Kernel Tools"
2
3# No prompt, this is sourced by linux/Config.in as this
4# is no real package and really belongs to the kernel.
5config BR2_PACKAGE_LINUX_TOOLS
6	bool
7
8config BR2_PACKAGE_LINUX_TOOLS_CPUPOWER
9	bool "cpupower"
10	depends on !BR2_STATIC_LIBS
11	select BR2_PACKAGE_LINUX_TOOLS
12	select BR2_PACKAGE_PCIUTILS
13	help
14	  cpupower is a collection of tools to examine and tune power
15	  saving related features of your processor.
16
17comment "cpupower needs a toolchain w/ dynamic library"
18	depends on BR2_STATIC_LIBS
19
20config BR2_PACKAGE_LINUX_TOOLS_GPIO
21	bool "gpio"
22	select BR2_PACKAGE_LINUX_TOOLS
23	help
24	  gpio is a collection of tools to get information about,
25	  control and monitor gpios present on system.
26
27	  These tools use new gpio ABI which will deprecate sysfs gpio
28	  interface in the future.
29
30	  These tools are available only from kernel version 4.8.
31
32config BR2_PACKAGE_LINUX_TOOLS_IIO
33	bool "iio"
34	select BR2_PACKAGE_LINUX_TOOLS
35	help
36	  iio is a collection of tools to get information about,
37	  control and monitor iio devices present on system.
38
39	  These tools are available only from kernel version 4.7.
40
41config BR2_PACKAGE_LINUX_TOOLS_MM
42	bool "mm"
43	select BR2_PACKAGE_LINUX_TOOLS
44	help
45	  mm is a toolset for testing/monitoring/tracing vm/pages/slabs
46	  objects.
47
48	  - page_owner_sort: userspace helper to sort the output of
49	  /sys/kernel/debug/page_owner, which helps to know who
50	  allocates the page from kernel context
51
52	  - slabinfo: the tool which gets reports about slabs, for
53	  example show empty slabs, modify of slab debug options at
54	  runtime, display all information about a slabcache
55
56	  - page-types: a handy tool for querying page flags
57
58	  These tools are available only from kernel version 3.4.
59
60config BR2_PACKAGE_LINUX_TOOLS_PCI
61	bool "pci"
62	select BR2_PACKAGE_LINUX_TOOLS
63	help
64	  pcitest is a tool for testing capabilities related to a
65	  PCI Endpoint (only works with specific Endpoints).
66
67	  These tools are available only from kernel version 4.20.
68
69comment "perf needs a toolchain w/ dynamic library, threads"
70	depends on BR2_TOOLCHAIN_HAS_SYNC_4
71	depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS
72
73config BR2_PACKAGE_LINUX_TOOLS_PERF
74	bool "perf"
75	depends on BR2_TOOLCHAIN_HAS_SYNC_4
76	depends on !BR2_STATIC_LIBS # dlfcn.h
77	depends on BR2_TOOLCHAIN_HAS_THREADS
78	select BR2_PACKAGE_LINUX_TOOLS
79	help
80	  perf (sometimes "Perf Events" or perf tools, originally
81	  "Performance Counters for Linux") - is a performance
82	  analyzing tool in Linux, available from kernel version
83	  2.6.31. User-space controlling utility, called 'perf' has
84	  git-like interface with subcommands. It is capable of
85	  statistical profiling of entire system (both kernel and user
86	  code), single CPU or severals threads.
87
88	  This will build and install the userspace 'perf'
89	  command.
90
91	  Your kernel must have CONFIG_PERF_EVENTS enabled to use perf
92	  profiling. Buildroot automatically enables this in the kernel
93	  configuration.
94
95	  https://perf.wiki.kernel.org/
96
97if BR2_PACKAGE_LINUX_TOOLS_PERF
98
99config BR2_PACKAGE_LINUX_TOOLS_PERF_SCRIPTS
100	bool "enable installation of perf scripts"
101	help
102	  Enable the installation of the perf scripts under
103	  /usr/libexec/perf-core/ which is necessary for running "perf
104	  tests"
105
106config BR2_PACKAGE_LINUX_TOOLS_PERF_TUI
107	bool "enable perf TUI"
108	depends on BR2_USE_MMU # slang
109	select BR2_PACKAGE_SLANG
110	help
111	  Enable the TUI interface for perf which requires a TTY and
112	  enables zooming into DSOs and threads as well as other
113	  features.
114
115config BR2_PACKAGE_LINUX_TOOLS_PERF_NEEDS_HOST_PYTHON3
116	bool "perf need python3 to build"
117	select BR2_PACKAGE_HOST_PYTHON3
118	help
119	  Starting with linux 6.0, parts of the perf source code
120	  is generated by running a python3 script.
121
122endif
123
124config BR2_PACKAGE_LINUX_TOOLS_RTLA
125	bool "rtla"
126	depends on BR2_TOOLCHAIN_HAS_THREADS # libtracefs
127	depends on !BR2_STATIC_LIBS # libtracefs
128	select BR2_PACKAGE_LINUX_TOOLS
129	select BR2_PACKAGE_LIBTRACEFS
130	help
131	  These tracers allow performing latency analysis, for which the
132	  rtla tool provides wrapper commands to visualize and extract
133	  latency traces and reports.
134
135	  rtla includes three tracers, which have been introduced in
136	  different kernel versions:
137	    - Linux 5.19 introduced the osnoise and timerlat tracers,
138	    - Linux 6.3 introduced the hwnoise tracer
139
140	  osnoise and timerlat are always installed, while hwnoise is
141	  installed if your kernel is recent enough.
142
143	  Note: rtla in kernels before 5.19 had additional dependencies,
144	  not available in Buildroot, so only rtla in kernels 5.19
145	  onwards is actually supported in Buildroot.
146
147comment "rtla needs a toolchain w/ threads, dynamic library"
148	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
149
150config BR2_PACKAGE_LINUX_TOOLS_SELFTESTS
151	bool"selftests"
152	depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash
153	depends on BR2_USE_MMU  # bash
154	depends on !BR2_STATIC_LIBS
155	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # util-linux schedutils
156	select BR2_PACKAGE_LINUX_TOOLS
157	select BR2_PACKAGE_BASH # runtime
158	select BR2_PACKAGE_NCURSES
159	select BR2_PACKAGE_NCURSES_TARGET_PROGS # runtime (tput)
160	select BR2_PACKAGE_KMOD
161	select BR2_PACKAGE_KMOD_TOOLS # runtime (modprobe -n)
162	select BR2_PACKAGE_POPT
163	select BR2_PACKAGE_LIBCAP_NG
164	select BR2_PACKAGE_UTIL_LINUX
165	select BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS # runtime (taskset)
166	select BR2_PACKAGE_OPENSSL if BR2_x86_64
167	help
168	  Build and install (to /usr/lib/kselftests) kernel selftests.
169
170	  Use of this option implies you know the process of using and
171	  compiling the kernel selftests. The Makefile to build and
172	  install these is very noisy and may appear to cause your
173	  build to fail for strange reasons.
174
175	  This is very much a use at your risk option and may not work
176	  for every setup or every architecture.
177
178comment "selftests needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS and a toolchain w/ dynamic library and headers >= 3.14"
179	depends on BR2_USE_MMU
180	depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS || \
181		BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
182
183config BR2_PACKAGE_LINUX_TOOLS_USBTOOLS
184	bool "USB test programs"
185	select BR2_PACKAGE_LINUX_TOOLS
186	help
187	  Build and install the USB test tools.
188
189	  These tools exist since Linux 2.6.35, but Buildroot can build
190	  them only with kernel versions 5.9 and later.
191
192if BR2_PACKAGE_LINUX_TOOLS_USBTOOLS
193
194config BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_TESTUSB
195	bool "testusb"
196	help
197	  testusb issues ioctls to perform the tests implemented by the
198	  kernel driver.  It can generate a variety of transfer
199	  patterns.
200
201	  See http://www.linux-usb.org/usbtest/
202
203config BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_FFSTEST
204	bool "ffs-test"
205	help
206	  User mode filesystem api for usb composite function
207endif
208
209config BR2_PACKAGE_LINUX_TOOLS_TMON
210	bool "tmon"
211	depends on BR2_TOOLCHAIN_HAS_THREADS
212	select BR2_PACKAGE_LINUX_TOOLS
213	select BR2_PACKAGE_NCURSES
214	help
215	  tmon is a terminal-based tool (using curses) that allows the
216	  user to access thermal information about the system.
217
218comment "tmon needs a toolchain w/ threads"
219	depends on !BR2_TOOLCHAIN_HAS_THREADS
220
221config BR2_PACKAGE_LINUX_TOOLS_HV
222	bool "hv"
223	depends on BR2_i386 || BR2_x86_64
224	select BR2_PACKAGE_LINUX_TOOLS
225	select BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON if !BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE
226	help
227	  Microsoft HyperV integration services
228
229	  Relevant kernel configuration options: CONFIG_HYPERV,
230	  CONFIG_HYPERV_UTILS.
231
232if BR2_PACKAGE_LINUX_TOOLS_HV
233
234config BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE
235	bool
236
237config BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON
238	bool "hypervkvpd (hv_kvp_daemon)"
239	help
240	  HyperV uses hypervkvpd (Key/Value Pair daemon) to retrieve
241	  status information from your virtualized guest OS
242
243config BR2_PACKAGE_LINUX_TOOLS_HV_FCOPY_DAEMON
244	bool "hypervfcopyd (hv_fcopy_daemon)"
245	select BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE
246	help
247	  HyperV uses hypervfcopyd (File Copy daemon) to easily transfer
248	  files to and from your virtualized guest OS
249
250config BR2_PACKAGE_LINUX_TOOLS_HV_VSS_DAEMON
251	bool "hypervvssd (hv_vss_daemon)"
252	select BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE
253	help
254	  HyperV uses hypervvssd (Volume Snapshot Service daemon) to
255	  freeze your filesystems during snapshots and backups
256
257endif # BR2_PACKAGE_LINUX_TOOLS_HV
258
259endmenu
260