Home | History | Annotate | Download | only in ltp
      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