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