--------------------------------- Enable CODE COVERAGE for your Kernel: --------------------------------- 1) Apply kernel-gcov patch(s) against the corresponding Kernel. They are available here: http://ltp.cvs.sourceforge.net/viewvc/ltp/utils/analysis/gcov-kernel/linux-2.*.*-gcov.patch?view=log, 2) Also enable the following options in your .config file before building the kernel CONFIG_GCOV_PROFILE=y CONFIG_GCOV_ALL=y CONFIG_GCOV_PROC=m CONFIG_GCOV_HAMMER=y --------------------------------- Enabling Kernel Configuration to test Containers/Namespaces --------------------------------- CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_VETH=y CONFIG_MACVLAN=y The IPC namespaces do not automatically enable IPC, so you may also want to have: CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y --------------------------------- Enabling Kernel Configuration to test Controllers --------------------------------- CONFIG_CGROUPS=y CONFIG_CGROUP_DEBUG=y CONFIG_CGROUP_NS=y CONFIG_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_RT_GROUP_SCHED=y CONFIG_CGROUP_SCHED=y CONFIG_CGROUP_MEM_RES_CTLR=y CONFIG_LOCKDEP=y --------------------------------- Enabling Kernel Configuration to test Power Management features --------------------------------- CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_DEBUG=y CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT_DETAILS=y CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y CONFIG_SCHED_MC=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y --------------------------------- Enabling Kernel Configuration to test filecaps security feature --------------------------------- CONFIG_SECURITY_FILE_CAPABILITIES=y --------------------------------- Enabling Kernel Configuration to test SELinux security feature --------------------------------- Your Kernel should have been built with the following options to test SELinux: CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_NETWORK_XFRM=y CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 This has to be set to a positive value if you want to test this check. Fedora kernels set it to 65536. CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 CONFIG_SECURITY_SELINUX_DEVELOP=y CONFIG_SECURITY_SELINUX_AVC_STATS=y CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT=y CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX=y You don't want this one unless you are running Fedora 3 or 4. On anything newer, it will cause unnecessary policy expansion. CONFIG_SECURITY_SMACK=y CONFIG_SECURITY_SELINUX=y By default, if you boot with multiple LSMs compiled into the kernel, the kernel won't boot succesfully - there can be only one (aside from explicit internal "stacking" e.g. as is done for combining SELinux or Smack with capabilities). Unless you use the security= option to select one at boot. SELinux and Smack will honor the security= option. --------------------------------- --------------------------------- Enabling Kernel Configuration to test SMACK security feature --------------------------------- CONFIG_NETLABEL=y CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_SMACK=y CONFIG_SECURITY_SELINUX should not be set For more information to build/install/run these tests, look through: ltp/testcases/kernel/security/smack/README --------------------------------- --------------------------------- Enablement for Enhancement to kexec/kdump for implementing the following features: - Backup/restore memory used by the original kernel before/after kexec. - Save/restore CPU state before/after kexec. Now, only the i386 architecture is supported. More from the following git logs: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3ab83521378268044a448113c6aa9a9e245f4d2f, http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=89081d17f7bb81d89fa1aa9b70f821c5cf4d39e9, --------------------------------- CONFIG_X86_32=y CONFIG_RELOCATABLE=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y CONFIG_PM=y CONFIG_HIBERNATION=y CONFIG_KEXEC_JUMP=y --------------------------------- Enabling HOTPLUG for your Kernels --------------------------------- CONFIG_HOTPLUG=y CONFIG_HOTPLUG_CPU=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_HOTPLUG_PCI_PCIE=y CONFIG_HOTPLUG_PCI=y CONFIG_HOTPLUG_PCI_FAKE=y CONFIG_HOTPLUG_PCI_COMPAQ=y CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y CONFIG_HOTPLUG_PCI_IBM=y CONFIG_HOTPLUG_PCI_ACPI=y CONFIG_HOTPLUG_PCI_ACPI_IBM=y CONFIG_HOTPLUG_PCI_CPCI=y CONFIG_HOTPLUG_PCI_CPCI_ZT5550=y CONFIG_HOTPLUG_PCI_CPCI_GENERIC=y CONFIG_HOTPLUG_PCI_SHPC=y --------------------------------- Video For Linux Two API testing Requirements: 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: -> Device Drivers -> Multimedia devices -> Video For Linux -> Video capture adapters -> Virtual Video Driver The tests also require CUnit Framework to be installed before compiling the tests. Download & Install the same from: http://sourceforge.net/projects/cunit/ --------------------------------- --------------------------------- Native language support (nls) testsuite requirements ---------------------------------------------------- CONFIG_NLS=m CONFIG_BLOCK=y --------------------------------- Enabling Controller area network (CAN) protocol support for your Kernels --------------------------------- CONFIG_NET=y CONFIG_CAN=m CONFIG_CAN_RAW=m CONFIG_CAN_BCM=m # CAN Device Drivers CONFIG_CAN_VCAN=m --------------------------------- Enabling Fault Injection Support for your kernel (version 2.6.29). Please check with the original kernel for the fault injection types it supports. Following supports will be available: /sys/kernel/debug/fail_io_timeout/interval /sys/kernel/debug/fail_io_timeout/probability /sys/kernel/debug/fail_io_timeout/reject-end /sys/kernel/debug/fail_io_timeout/reject-start /sys/kernel/debug/fail_io_timeout/require-end /sys/kernel/debug/fail_io_timeout/require-start /sys/kernel/debug/fail_io_timeout/space /sys/kernel/debug/fail_io_timeout/stacktrace-depth /sys/kernel/debug/fail_io_timeout/task-filter /sys/kernel/debug/fail_io_timeout/times /sys/kernel/debug/fail_io_timeout/verbose /sys/kernel/debug/fail_make_request/interval /sys/kernel/debug/fail_make_request/probability /sys/kernel/debug/fail_make_request/reject-end /sys/kernel/debug/fail_make_request/reject-start /sys/kernel/debug/fail_make_request/require-end /sys/kernel/debug/fail_make_request/require-start /sys/kernel/debug/fail_make_request/space /sys/kernel/debug/fail_make_request/stacktrace-depth /sys/kernel/debug/fail_make_request/task-filter /sys/kernel/debug/fail_make_request/times /sys/kernel/debug/fail_make_request/verbose /sys/kernel/debug/fail_page_alloc/ignore-gfp-highmem /sys/kernel/debug/fail_page_alloc/ignore-gfp-wait /sys/kernel/debug/fail_page_alloc/interval /sys/kernel/debug/fail_page_alloc/min-order /sys/kernel/debug/fail_page_alloc/probability /sys/kernel/debug/fail_page_alloc/reject-end /sys/kernel/debug/fail_page_alloc/reject-start /sys/kernel/debug/fail_page_alloc/require-end /sys/kernel/debug/fail_page_alloc/require-start /sys/kernel/debug/fail_page_alloc/space /sys/kernel/debug/fail_page_alloc/stacktrace-depth /sys/kernel/debug/fail_page_alloc/task-filter /sys/kernel/debug/fail_page_alloc/times /sys/kernel/debug/fail_page_alloc/verbose /sys/kernel/debug/failslab/ignore-gfp-wait /sys/kernel/debug/failslab/interval /sys/kernel/debug/failslab/probability /sys/kernel/debug/failslab/reject-end /sys/kernel/debug/failslab/reject-start /sys/kernel/debug/failslab/require-end /sys/kernel/debug/failslab/require-start /sys/kernel/debug/failslab/space /sys/kernel/debug/failslab/stacktrace-depth /sys/kernel/debug/failslab/task-filter /sys/kernel/debug/failslab/times /sys/kernel/debug/failslab/verbose when the below kernel config options are set: CONFIG_FAULT_INJECTION=y CONFIG_DEBUG_KERNEL=y CONFIG_FAILSLAB=y (Fault-injection capability for kmalloc) (CONFIG_SLAB=y || CONFIG_SLUB=y) if CONFIG_FAILSLAB=y CONFIG_FAIL_PAGE_ALLOC=y (Fault-injection capabilitiy for alloc_pages()) CONFIG_FAIL_MAKE_REQUEST=y (Fault-injection capability for disk IO) CONFIG_BLOCK=y if CONFIG_FAIL_MAKE_REQUEST=y CONFIG_FAIL_IO_TIMEOUT=y (Faul-injection capability for faking disk interrupts) CONFIG_BLOCK=y if CONFIG_FAIL_IO_TIMEOUT=y CONFIG_FAULT_INJECTION_DEBUG_FS=y (Debugfs entries for fault-injection capabilities) (CONFIG_SYSFS=y && CONFIG_DEBUG_FS=y) if CONFIG_FAULT_INJECTION_DEBUG_FS=y CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y (stacktrace filter for fault-injection capabilities) (CONFIG_FAULT_INJECTION_DEBUG_FS=y && CONFIG_STACKTRACE_SUPPORT=y && !CONFIG_X86_64) if CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y For more information on Fault injection, please refer to: linux-2.6/Documentation/fault-injection/fault-injection.txt, You should also have made the following entries in your /etc/fstab file once the kernel is booted with the above CONFIG options set: debugfs /sys/kernel/debug/ debugfs # How the Kernel Fault Injection works for LTP ? 1) Build Kernel with all the above possible kernel CONFIG Options, 2) Create the above entry in /etc/fstab file, 3) Reboot in the new kernel, 4) Goto LTPROOT. Build and Install LTP as per ltp/INSTALL file, 5) Choose your own test(or default) to run with fault injection as follows: ./runltp -f <command_file> -F <LOOPS>,<FAULT_PROBABILITY> The algorithm functions like: loop (for each testcase) begin execute_testcase(inside_stable_kernel) begin insert_fault_into_kernel() loop X Times begin execute_testcase(inside_fault_kernel) end restore_kernel_to_normal() end end # External TODOs: 1) Add or modify testcases when relevant kernel functionality changes. --------------------------------- --------------------------------- Enabling Kernel Configuration to test ext4 new features --------------------------------- CONFIG_EXT4_FS=y CONFIG_EXT4DEV_COMPAT=y CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y Beside that, the following packages are necessary. e2fsprogs e2fsprogs-devel e2fsprogs-libs And the version of packages must be 1.41.4 or above. For more information to build/install/run these tests, look through: ltp/testcases/kernel/fs/ext4-new-features/README ---------------------------------