1 --------------------------------- 2 Enable CODE COVERAGE for your Kernel: 3 --------------------------------- 4 1) Apply kernel-gcov patch(s) against the corresponding Kernel. They are available here: 5 http://ltp.cvs.sourceforge.net/viewvc/ltp/utils/analysis/gcov-kernel/linux-2.*.*-gcov.patch?view=log, 6 2) Also enable the following options in your .config file before building the kernel 7 CONFIG_GCOV_PROFILE=y 8 CONFIG_GCOV_ALL=y 9 CONFIG_GCOV_PROC=m 10 CONFIG_GCOV_HAMMER=y 11 12 --------------------------------- 13 Enabling Kernel Configuration to test Containers/Namespaces 14 --------------------------------- 15 CONFIG_NAMESPACES=y 16 CONFIG_UTS_NS=y 17 CONFIG_IPC_NS=y 18 CONFIG_USER_NS=y 19 CONFIG_PID_NS=y 20 CONFIG_NET_NS=y 21 CONFIG_VETH=y 22 CONFIG_MACVLAN=y 23 24 The IPC namespaces do not automatically enable IPC, so you may 25 also want to have: 26 27 CONFIG_SYSVIPC=y 28 CONFIG_SYSVIPC_SYSCTL=y 29 CONFIG_POSIX_MQUEUE=y 30 31 --------------------------------- 32 Enabling Kernel Configuration to test Controllers 33 --------------------------------- 34 CONFIG_CGROUPS=y 35 CONFIG_CGROUP_DEBUG=y 36 CONFIG_CGROUP_NS=y 37 CONFIG_GROUP_SCHED=y 38 CONFIG_FAIR_GROUP_SCHED=y 39 CONFIG_RT_GROUP_SCHED=y 40 CONFIG_CGROUP_SCHED=y 41 CONFIG_CGROUP_MEM_RES_CTLR=y 42 CONFIG_LOCKDEP=y 43 --------------------------------- 44 Enabling Kernel Configuration to test Power Management features 45 --------------------------------- 46 CONFIG_CPU_FREQ=y 47 CONFIG_CPU_FREQ_TABLE=y 48 CONFIG_CPU_FREQ_DEBUG=y 49 CONFIG_CPU_FREQ_STAT=y 50 CONFIG_CPU_FREQ_STAT_DETAILS=y 51 CONFIG_CPU_IDLE=y 52 CONFIG_CPU_IDLE_GOV_LADDER=y 53 CONFIG_CPU_IDLE_GOV_MENU=y 54 CONFIG_SCHED_MC=y 55 CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 56 CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y 57 CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y 58 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y 59 CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y 60 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y 61 CONFIG_CPU_FREQ_GOV_POWERSAVE=y 62 CONFIG_CPU_FREQ_GOV_USERSPACE=y 63 CONFIG_CPU_FREQ_GOV_ONDEMAND=y 64 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y 65 --------------------------------- 66 Enabling Kernel Configuration to test filecaps security feature 67 --------------------------------- 68 CONFIG_SECURITY_FILE_CAPABILITIES=y 69 --------------------------------- 70 Enabling Kernel Configuration to test SELinux security feature 71 --------------------------------- 72 Your Kernel should have been built with the following options to 73 test SELinux: 74 75 CONFIG_SECURITY=y 76 CONFIG_SECURITY_NETWORK=y 77 CONFIG_SECURITY_NETWORK_XFRM=y 78 79 CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 80 This has to be set to a positive value if you want to test this check. 81 Fedora kernels set it to 65536. 82 83 CONFIG_SECURITY_SELINUX=y 84 CONFIG_SECURITY_SELINUX_BOOTPARAM=y 85 CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 86 CONFIG_SECURITY_SELINUX_DEVELOP=y 87 CONFIG_SECURITY_SELINUX_AVC_STATS=y 88 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 89 CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT=y 90 91 CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX=y 92 You don't want this one unless you are running Fedora 3 or 4. 93 On anything newer, it will cause unnecessary policy expansion. 94 95 CONFIG_SECURITY_SMACK=y 96 CONFIG_SECURITY_SELINUX=y 97 98 By default, if you boot with multiple LSMs compiled into the kernel, the 99 kernel won't boot succesfully - there can be only one (aside from 100 explicit internal "stacking" e.g. as is done for combining SELinux or 101 Smack with capabilities). Unless you use the security= option to select 102 one at boot. SELinux and Smack will honor the security= option. 103 --------------------------------- 104 --------------------------------- 105 Enabling Kernel Configuration to test SMACK security feature 106 --------------------------------- 107 CONFIG_NETLABEL=y 108 CONFIG_SECURITY=y 109 CONFIG_SECURITY_NETWORK=y 110 CONFIG_SECURITY_SMACK=y 111 CONFIG_SECURITY_SELINUX should not be set 112 113 For more information to build/install/run these tests, look through: 114 ltp/testcases/kernel/security/smack/README 115 --------------------------------- 116 --------------------------------- 117 Enablement for Enhancement to kexec/kdump for implementing the following features: 118 - Backup/restore memory used by the original kernel before/after kexec. 119 - Save/restore CPU state before/after kexec. 120 Now, only the i386 architecture is supported. More from the following git logs: 121 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3ab83521378268044a448113c6aa9a9e245f4d2f, 122 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=89081d17f7bb81d89fa1aa9b70f821c5cf4d39e9, 123 --------------------------------- 124 CONFIG_X86_32=y 125 CONFIG_RELOCATABLE=y 126 CONFIG_KEXEC=y 127 CONFIG_CRASH_DUMP=y 128 CONFIG_PM=y 129 CONFIG_HIBERNATION=y 130 CONFIG_KEXEC_JUMP=y 131 --------------------------------- 132 Enabling HOTPLUG for your Kernels 133 --------------------------------- 134 CONFIG_HOTPLUG=y 135 CONFIG_HOTPLUG_CPU=y 136 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 137 CONFIG_ACPI_HOTPLUG_CPU=y 138 CONFIG_HOTPLUG_PCI_PCIE=y 139 CONFIG_HOTPLUG_PCI=y 140 CONFIG_HOTPLUG_PCI_FAKE=y 141 CONFIG_HOTPLUG_PCI_COMPAQ=y 142 CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y 143 CONFIG_HOTPLUG_PCI_IBM=y 144 CONFIG_HOTPLUG_PCI_ACPI=y 145 CONFIG_HOTPLUG_PCI_ACPI_IBM=y 146 CONFIG_HOTPLUG_PCI_CPCI=y 147 CONFIG_HOTPLUG_PCI_CPCI_ZT5550=y 148 CONFIG_HOTPLUG_PCI_CPCI_GENERIC=y 149 CONFIG_HOTPLUG_PCI_SHPC=y 150 --------------------------------- 151 Video For Linux Two API testing Requirements: 152 You need to have a video device (i.e. webcam, tuner card, etc.) connected to your system and available under /dev/video0. If you don't have any hardware device available, you can still test the "Virtual Video Driver". To compile this you need to compile your kernel with CONFIG_VIDEO_VIVI=m under: 153 -> Device Drivers 154 -> Multimedia devices 155 -> Video For Linux 156 -> Video capture adapters 157 -> Virtual Video Driver 158 159 The tests also require CUnit Framework to be installed before compiling the tests. Download & Install the same from: 160 http://sourceforge.net/projects/cunit/ 161 --------------------------------- 162 --------------------------------- 163 Native language support (nls) testsuite requirements 164 ---------------------------------------------------- 165 CONFIG_NLS=m 166 CONFIG_BLOCK=y 167 --------------------------------- 168 Enabling Controller area network (CAN) protocol support for your Kernels 169 --------------------------------- 170 CONFIG_NET=y 171 CONFIG_CAN=m 172 CONFIG_CAN_RAW=m 173 CONFIG_CAN_BCM=m 174 # CAN Device Drivers 175 CONFIG_CAN_VCAN=m 176 --------------------------------- 177 Enabling Fault Injection Support for your kernel (version 2.6.29). 178 Please check with the original kernel for the fault injection 179 types it supports. Following supports will be available: 180 181 /sys/kernel/debug/fail_io_timeout/interval 182 /sys/kernel/debug/fail_io_timeout/probability 183 /sys/kernel/debug/fail_io_timeout/reject-end 184 /sys/kernel/debug/fail_io_timeout/reject-start 185 /sys/kernel/debug/fail_io_timeout/require-end 186 /sys/kernel/debug/fail_io_timeout/require-start 187 /sys/kernel/debug/fail_io_timeout/space 188 /sys/kernel/debug/fail_io_timeout/stacktrace-depth 189 /sys/kernel/debug/fail_io_timeout/task-filter 190 /sys/kernel/debug/fail_io_timeout/times 191 /sys/kernel/debug/fail_io_timeout/verbose 192 193 /sys/kernel/debug/fail_make_request/interval 194 /sys/kernel/debug/fail_make_request/probability 195 /sys/kernel/debug/fail_make_request/reject-end 196 /sys/kernel/debug/fail_make_request/reject-start 197 /sys/kernel/debug/fail_make_request/require-end 198 /sys/kernel/debug/fail_make_request/require-start 199 /sys/kernel/debug/fail_make_request/space 200 /sys/kernel/debug/fail_make_request/stacktrace-depth 201 /sys/kernel/debug/fail_make_request/task-filter 202 /sys/kernel/debug/fail_make_request/times 203 /sys/kernel/debug/fail_make_request/verbose 204 205 /sys/kernel/debug/fail_page_alloc/ignore-gfp-highmem 206 /sys/kernel/debug/fail_page_alloc/ignore-gfp-wait 207 /sys/kernel/debug/fail_page_alloc/interval 208 /sys/kernel/debug/fail_page_alloc/min-order 209 /sys/kernel/debug/fail_page_alloc/probability 210 /sys/kernel/debug/fail_page_alloc/reject-end 211 /sys/kernel/debug/fail_page_alloc/reject-start 212 /sys/kernel/debug/fail_page_alloc/require-end 213 /sys/kernel/debug/fail_page_alloc/require-start 214 /sys/kernel/debug/fail_page_alloc/space 215 /sys/kernel/debug/fail_page_alloc/stacktrace-depth 216 /sys/kernel/debug/fail_page_alloc/task-filter 217 /sys/kernel/debug/fail_page_alloc/times 218 /sys/kernel/debug/fail_page_alloc/verbose 219 220 /sys/kernel/debug/failslab/ignore-gfp-wait 221 /sys/kernel/debug/failslab/interval 222 /sys/kernel/debug/failslab/probability 223 /sys/kernel/debug/failslab/reject-end 224 /sys/kernel/debug/failslab/reject-start 225 /sys/kernel/debug/failslab/require-end 226 /sys/kernel/debug/failslab/require-start 227 /sys/kernel/debug/failslab/space 228 /sys/kernel/debug/failslab/stacktrace-depth 229 /sys/kernel/debug/failslab/task-filter 230 /sys/kernel/debug/failslab/times 231 /sys/kernel/debug/failslab/verbose 232 233 when the below kernel config options are set: 234 235 CONFIG_FAULT_INJECTION=y 236 CONFIG_DEBUG_KERNEL=y 237 CONFIG_FAILSLAB=y (Fault-injection capability for kmalloc) 238 (CONFIG_SLAB=y || CONFIG_SLUB=y) if CONFIG_FAILSLAB=y 239 CONFIG_FAIL_PAGE_ALLOC=y (Fault-injection capabilitiy for alloc_pages()) 240 CONFIG_FAIL_MAKE_REQUEST=y (Fault-injection capability for disk IO) 241 CONFIG_BLOCK=y if CONFIG_FAIL_MAKE_REQUEST=y 242 CONFIG_FAIL_IO_TIMEOUT=y (Faul-injection capability for faking disk interrupts) 243 CONFIG_BLOCK=y if CONFIG_FAIL_IO_TIMEOUT=y 244 CONFIG_FAULT_INJECTION_DEBUG_FS=y (Debugfs entries for fault-injection capabilities) 245 (CONFIG_SYSFS=y && CONFIG_DEBUG_FS=y) if CONFIG_FAULT_INJECTION_DEBUG_FS=y 246 CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y (stacktrace filter for fault-injection capabilities) 247 (CONFIG_FAULT_INJECTION_DEBUG_FS=y && CONFIG_STACKTRACE_SUPPORT=y && !CONFIG_X86_64) if 248 CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y 249 250 For more information on Fault injection, please refer to: 251 linux-2.6/Documentation/fault-injection/fault-injection.txt, 252 253 You should also have made the following entries in your /etc/fstab file 254 once the kernel is booted with the above CONFIG options set: 255 256 debugfs /sys/kernel/debug/ debugfs 257 258 # How the Kernel Fault Injection works for LTP ? 259 260 1) Build Kernel with all the above possible kernel CONFIG Options, 261 2) Create the above entry in /etc/fstab file, 262 3) Reboot in the new kernel, 263 4) Goto LTPROOT. Build and Install LTP as per ltp/INSTALL file, 264 5) Choose your own test(or default) to run with fault injection as follows: 265 ./runltp -f <command_file> -F <LOOPS>,<FAULT_PROBABILITY> 266 267 The algorithm functions like: 268 loop (for each testcase) 269 begin 270 execute_testcase(inside_stable_kernel) 271 begin 272 insert_fault_into_kernel() 273 loop X Times 274 begin 275 execute_testcase(inside_fault_kernel) 276 end 277 restore_kernel_to_normal() 278 end 279 end 280 281 # External TODOs: 282 1) Add or modify testcases when relevant kernel functionality changes. 283 --------------------------------- 284 285 --------------------------------- 286 Enabling Kernel Configuration to test ext4 new features 287 --------------------------------- 288 CONFIG_EXT4_FS=y 289 CONFIG_EXT4DEV_COMPAT=y 290 CONFIG_EXT4_FS_XATTR=y 291 CONFIG_EXT4_FS_POSIX_ACL=y 292 CONFIG_EXT4_FS_SECURITY=y 293 294 Beside that, the following packages are necessary. 295 e2fsprogs 296 e2fsprogs-devel 297 e2fsprogs-libs 298 And the version of packages must be 1.41.4 or above. 299 300 For more information to build/install/run these tests, look through: 301 ltp/testcases/kernel/fs/ext4-new-features/README 302 --------------------------------- 303