# By Chao Yu (415) and others # Via Greg Kroah-Hartman (53) and others * google/common/deprecated/android-4.4: ANDROID: regression introduced override_creds=off ANDROID: sched: Disallow WALT with CFS bandwidth control ANDROID: fiq_debugger: remove ANDROID: Add a tracepoint for mapping inode to full path ANDROID: fix binder change in merge of 4.4.183 UPSTREAM: net-ipv6-ndisc: add support for RFC7710 RA Captive Portal Identifier f2fs: use EINVAL for superblock with invalid magic f2fs: fix to read source block before invalidating it f2fs: remove redundant check from f2fs_setflags_common() f2fs: use generic checking and prep function for FS_IOC_SETFLAGS ANDROID: overlayfs: Fix a regression in commitb24be4acdANDROID: xfrm: remove in_compat_syscall() checks ANDROID: enable CONFIG_RTC_DRV_TEST on cuttlefish BACKPORT: binder: Set end of SG buffer area properly. ANDROID: overlayfs ovl_create_of_link regression f2fs: improve print log in f2fs_sanity_check_ckpt() f2fs: avoid out-of-range memory access f2fs: fix to avoid long latency during umount f2fs: allow all the users to pin a file f2fs: support swap file w/ DIO f2fs: allocate blocks for pinned file f2fs: fix is_idle() check for discard type f2fs: add a rw_sem to cover quota flag changes f2fs: set SBI_NEED_FSCK for xattr corruption case f2fs: use generic EFSBADCRC/EFSCORRUPTED f2fs: Use DIV_ROUND_UP() instead of open-coding f2fs: print kernel message if filesystem is inconsistent f2fs: introduce f2fs_<level> macros to wrap f2fs_printk() f2fs: avoid get_valid_blocks() for cleanup f2fs: ioctl for removing a range from F2FS f2fs: only set project inherit bit for directory f2fs: separate f2fs i_flags from fs_flags and ext4 i_flags ANDROID: Fixes to locking around handle_lmk_event ANDROID: Avoid taking multiple locks in handle_lmk_event ANDROID: kernel: cgroup: cpuset: Clear cpus_requested for empty buf ANDROID: kernel: cgroup: cpuset: Add missing allocation of cpus_requested in alloc_trial_cpuset f2fs: Add option to limit required GC for checkpoint=disable f2fs: Fix accounting for unusable blocks f2fs: Fix root reserved on remount f2fs: Lower threshold for disable_cp_again f2fs: fix sparse warning f2fs: fix f2fs_show_options to show nodiscard mount option f2fs: add error prints for debugging mount failure f2fs: fix to do sanity check on segment bitmap of LFS curseg f2fs: add missing sysfs entries in documentation f2fs: fix to avoid deadloop if data_flush is on f2fs: always assume that the device is idle under gc_urgent f2fs: add bio cache for IPU f2fs: allow ssr block allocation during checkpoint=disable period f2fs: fix to check layout on last valid checkpoint park UPSTREAM: binder: check for overflow when alloc for security context BACKPORT: binder: fix race between munmap() and direct reclaim f2fs: link f2fs quota ops for sysfile fs: sdcardfs: Add missing option to show_options ANDROID: cuttlefish_defconfig: Disable DEVTMPFS ANDROID: Move from clang r349610 to r353983c. f2fs: fix to avoid accessing xattr across the boundary f2fs: fix to avoid potential race on sbi->unusable_block_count access/update f2fs: add tracepoint for f2fs_filemap_fault() f2fs: introduce DATA_GENERIC_ENHANCE f2fs: fix to handle error in f2fs_disable_checkpoint() f2fs: remove redundant check in f2fs_file_write_iter() f2fs: fix to be aware of readonly device in write_checkpoint() f2fs: fix to skip recovery on readonly device f2fs: fix to consider multiple device for readonly check f2fs: relocate chksum_offset for large_nat_bitmap feature f2fs: allow unfixed f2fs_checkpoint.checksum_offset f2fs: Replace spaces with tab f2fs: insert space before the open parenthesis '(' f2fs: allow address pointer number of dnode aligning to specified size f2fs: introduce f2fs_read_single_page() for cleanup f2fs: mark is_extension_exist() inline f2fs: fix to set FI_UPDATE_WRITE correctly f2fs: fix to avoid panic in f2fs_inplace_write_data() f2fs: fix to do sanity check on valid block count of segment f2fs: fix to do sanity check on valid node/block count f2fs: fix to avoid panic in do_recover_data() f2fs: fix to do sanity check on free nid f2fs: fix to do checksum even if inode page is uptodate f2fs: fix to avoid panic in f2fs_remove_inode_page() f2fs: fix to clear dirty inode in error path of f2fs_iget() f2fs: remove new blank line of f2fs kernel message f2fs: fix wrong __is_meta_io() macro f2fs: fix to avoid panic in dec_valid_node_count() f2fs: fix to avoid panic in dec_valid_block_count() f2fs: fix to use inline space only if inline_xattr is enable f2fs: fix to retrieve inline xattr space f2fs: fix error path of recovery f2fs: fix to avoid deadloop in foreground GC f2fs: data: fix warning Using plain integer as NULL pointer f2fs: add tracepoint for f2fs_file_write_iter() f2fs: add comment for conditional compilation statement f2fs: fix potential recursive call when enabling data_flush f2fs: improve discard handling with multi-device volumes f2fs: Reduce zoned block device memory usage f2fs: Fix use of number of devices ANDROID: Communicates LMK events to userland where they can be logged Make arm64 serial port config compatible with crosvm Fix merge issue with 4.4.178 Fix merge issue with 4.4.177 ANDROID: cuttlefish_defconfig: Enable CONFIG_OVERLAY_FS ANDROID: drop CONFIG_INPUT_KEYCHORD from cuttlefish and ranchu UPSTREAM: virt_wifi: Remove REGULATORY_WIPHY_SELF_MANAGED UPSTREAM: net: socket: set sock->sk to NULL after calling proto_ops::release() Revert "ANDROID: arm: process: Add display of memory around registers when displaying regs." f2fs: set pin_file under CAP_SYS_ADMIN f2fs: fix to avoid deadlock in f2fs_read_inline_dir() f2fs: fix to adapt small inline xattr space in __find_inline_xattr() f2fs: fix to do sanity check with inode.i_inline_xattr_size f2fs: give some messages for inline_xattr_size f2fs: don't trigger read IO for beyond EOF page f2fs: fix to add refcount once page is tagged PG_private f2fs: remove wrong comment in f2fs_invalidate_page() f2fs: fix to use kvfree instead of kzfree f2fs: print more parameters in trace_f2fs_map_blocks f2fs: trace f2fs_ioc_shutdown f2fs: fix to avoid deadlock of atomic file operations f2fs: fix to dirty inode for i_mode recovery f2fs: give random value to i_generation f2fs: no need to take page lock in readdir f2fs: fix to update iostat correctly in IPU path f2fs: fix encrypted page memory leak f2fs: make fault injection covering __submit_flush_wait() f2fs: fix to retry fill_super only if recovery failed f2fs: silence VM_WARN_ON_ONCE in mempool_alloc f2fs: correct spelling mistake f2fs: fix wrong #endif f2fs: don't clear CP_QUOTA_NEED_FSCK_FLAG f2fs: don't allow negative ->write_io_size_bits f2fs: fix to check inline_xattr_size boundary correctly ANDROID: mnt: Propagate remount correctly ANDROID: cuttlefish_defconfig: Add support for AC97 audio ANDROID: overlayfs: override_creds=off option bypass creator_cred FROMGIT: binder: create node flag to request sender's security context Revert "f2fs: fix to avoid deadlock of atomic file operations" Revert "f2fs: fix to check inline_xattr_size boundary correctly" BACKPORT: userfaultfd: shmem/hugetlbfs: only allow to register VM_MAYWRITE vmas ANDROID: cuttlefish_defconfig: Enable DEBUG_SET_MODULE_RONX ANDROID: Move from clang r346389b to r349610. UPSTREAM: virt_wifi: fix error return code in virt_wifi_newlink() ion: Disable ION_HEAP_TYPE_SYSTEM_CONTIG UPSTREAM: binder: filter out nodes when showing binder procs f2fs: do not use mutex lock in atomic context f2fs: fix potential data inconsistence of checkpoint f2fs: fix to avoid deadlock of atomic file operations f2fs: fix to check inline_xattr_size boundary correctly f2fs: jump to label 'free_node_inode' when failing from d_make_root() f2fs: fix to document inline_xattr_size option f2fs: fix to data block override node segment by mistake f2fs: fix typos in code comments f2fs: sync filesystem after roll-forward recovery fs: export evict_inodes f2fs: flush quota blocks after turnning it off f2fs: avoid null pointer exception in dcc_info f2fs: don't wake up too frequently, if there is lots of IOs f2fs: try to keep CP_TRIMMED_FLAG after successful umount f2fs: add quick mode of checkpoint=disable for QA f2fs: run discard jobs when put_super f2fs: fix to set sbi dirty correctly f2fs: UBSAN: set boolean value iostat_enable correctly f2fs: add brackets for macros f2fs: check if file namelen exceeds max value f2fs: fix to trigger fsck if dirent.name_len is zero f2fs: no need to check return value of debugfs_create functions f2fs: export FS_NOCOW_FL flag to user f2fs: check inject_rate validity during configuring f2fs: remove set but not used variable 'err' f2fs: fix compile warnings: 'struct *' declared inside parameter list f2fs: change error code to -ENOMEM from -EINVAL ANDROID: cuttlefish_defconfig: Enable CONFIG_RTC_HCTOSYS UPSTREAM: dm: do not allow readahead to limit IO size UPSTREAM: readahead: stricter check for bdi io_pages UPSTREAM: mm: don't cap request size based on read-ahead setting ANDROID: Fix cuttlefish redundant vsock connection. UPSTREAM: loop: drop caches if offset or block_size are changed UPSTREAM: virtio: new feature to detect IOMMU device quirk UPSTREAM: vring: Use the DMA API on Xen UPSTREAM: virtio_ring: Support DMA APIs UPSTREAM: vring: Introduce vring_use_dma_api() ANDROID: cuttlefish_defconfig: Enable vsock options UPSTREAM: vhost/vsock: fix reset orphans race with close timeout UPSTREAM: vhost/vsock: fix use-after-free in network stack callers UPSTREAM: vhost: correctly check the iova range when waking virtqueue UPSTREAM: vhost: synchronize IOTLB message with dev cleanup UPSTREAM: vhost: fix info leak due to uninitialized memory UPSTREAM: vhost: fix vhost_vq_access_ok() log check UPSTREAM: vhost: validate log when IOTLB is enabled UPSTREAM: vhost_net: add missing lock nesting notation UPSTREAM: vhost: use mutex_lock_nested() in vhost_dev_lock_vqs() UPSTREAM: vhost/vsock: fix uninitialized vhost_vsock->guest_cid UPSTREAM: vhost_net: correctly check tx avail during rx busy polling UPSTREAM: vsock: use new wait API for vsock_stream_sendmsg() UPSTREAM: vsock: cancel packets when failing to connect UPSTREAM: vhost-vsock: add pkt cancel capability UPSTREAM: vsock: track pkt owner vsock UPSTREAM: vhost: fix initialization for vq->is_le UPSTREAM: vhost/vsock: handle vhost_vq_init_access() error UPSTREAM: vsock: lookup and setup guest_cid inside vhost_vsock_lock UPSTREAM: vhost-vsock: fix orphan connection reset UPSTREAM: vsock/virtio: fix src/dst cid format UPSTREAM: VSOCK: Don't dec ack backlog twice for rejected connections UPSTREAM: vhost/vsock: drop space available check for TX vq UPSTREAM: virtio-vsock: fix include guard typo UPSTREAM: vhost/vsock: fix vhost virtio_vsock_pkt use-after-free UPSTREAM: VSOCK: Use kvfree() BACKPORT: vhost: split out vringh Kconfig UPSTREAM: vhost: drop vringh dependency UPSTREAM: vhost: drop vringh dependency UPSTREAM: vhost: detect 32 bit integer wrap around UPSTREAM: VSOCK: Add Makefile and Kconfig UPSTREAM: VSOCK: Introduce vhost_vsock.ko UPSTREAM: VSOCK: Introduce virtio_transport.ko BACKPORT: VSOCK: Introduce virtio_vsock_common.ko UPSTREAM: VSOCK: defer sock removal to transports UPSTREAM: VSOCK: transport-specific vsock_transport functions UPSTREAM: vsock: make listener child lock ordering explicit UPSTREAM: vhost: new device IOTLB API BACKPORT: vhost: convert pre sorted vhost memory array to interval tree UPSTREAM: vhost: introduce vhost memory accessors UPSTREAM: vhost_net: stop polling socket during rx processing UPSTREAM: VSOCK: constify vsock_transport structure UPSTREAM: vhost: lockless enqueuing UPSTREAM: vhost: simplify work flushing UPSTREAM: VSOCK: Only check error on skb_recv_datagram when skb is NULL BACKPORT: AF_VSOCK: Shrink the area influenced by prepare_to_wait UPSTREAM: vhost_net: basic polling support UPSTREAM: vhost: introduce vhost_vq_avail_empty() UPSTREAM: vhost: introduce vhost_has_work() UPSTREAM: vhost: rename vhost_init_used() UPSTREAM: vhost: rename cross-endian helpers UPSTREAM: vhost: fix error path in vhost_init_used() UPSTREAM: virtio: make find_vqs() checkpatch.pl-friendly UPSTREAM: net: move napi_hash[] into read mostly section ANDROID: cuttlefish_defconfig: remove DM_VERITY_HASH_PREFETCH_MIN_SIZE Revert "ANDROID: dm verity: add minimum prefetch size" ANDROID: f2fs: Complement "android_fs" tracepoint of read path f2fs: don't access node/meta inode mapping after iput f2fs: wait on atomic writes to count F2FS_CP_WB_DATA f2fs: sanity check of xattr entry size f2fs: fix use-after-free issue when accessing sbi->stat_info f2fs: check PageWriteback flag for ordered case f2fs: fix validation of the block count in sanity_check_raw_super f2fs: fix missing unlock(sbi->gc_mutex) f2fs: clean up structure extent_node f2fs: fix block address for __check_sit_bitmap f2fs: fix sbi->extent_list corruption issue f2fs: clean up checkpoint flow f2fs: flush stale issued discard candidates f2fs: correct wrong spelling, issing_* f2fs: use kvmalloc, if kmalloc is failed f2fs: remove redundant comment of unused wio_mutex f2fs: fix to reorder set_page_dirty and wait_on_page_writeback f2fs: clear PG_writeback if IPU failed f2fs: add an ioctl() to explicitly trigger fsck later f2fs: avoid frequent costly fsck triggers f2fs: fix m_may_create to make OPU DIO write correctly f2fs: fix to update new block address correctly for OPU f2fs: adjust trace print in f2fs_get_victim() to cover all paths f2fs: fix to allow node segment for GC by ioctl path f2fs: make "f2fs_fault_name[]" const char * f2fs: read page index before freeing f2fs: fix wrong return value of f2fs_acl_create f2fs: avoid build warn of fall_through f2fs: fix race between write_checkpoint and write_begin f2fs: check memory boundary by insane namelen f2fs: only flush the single temp bio cache which owns the target page f2fs: fix out-place-update DIO write f2fs: fix to be aware discard/preflush/dio command in is_idle() f2fs: add to account direct IO f2fs: move dir data flush to write checkpoint process f2fs: change segment to section in f2fs_ioc_gc_range f2fs: export migration_granularity sysfs entry f2fs: support subsectional garbage collection f2fs: introduce __is_large_section() for cleanup f2fs: clean up f2fs_sb_has_##feature_name f2fs: remove codes of unused wio_mutex f2fs: fix count of seg_freed to make sec_freed correct f2fs: fix to account preflush command for noflush_merge mode f2fs: avoid GC causing encrypted file corrupted ANDROID: cuttlefish_defconfig: Enable VIRTIO_INPUT ANDROID: Revert fs/squashfs back to linux-4.4.y ANDROID: uid_sys_stats: Copy task_struct comm field to bigger buffer ANDROID: cuttlefish_defconfig: Enable VIRT_WIFI FROMGIT, BACKPORT: mac80211-next: rtnetlink wifi simulation device ANDROID: Move from clang r328903 to r346389b. UPSTREAM: binder: fix race that allows malicious free of live buffer ANDROID: arm64 defconfig / build config for cuttlefish ANDROID: Kbuild, LLVMLinux: allow overriding clang target triple Revert "ANDROID: Kbuild, LLVMLinux: allow overriding clang target triple" ANDROID: sdcardfs: Add option to not link obb ANDROID: sdcardfs: Add sandbox UPSTREAM: seccomp: Fix tracer exit notifications during fatal signals UPSTREAM: arm64/ptrace: run seccomp after ptrace UPSTREAM: arm/ptrace: run seccomp after ptrace BACKPORT: x86/ptrace: run seccomp after ptrace UPSTREAM: seccomp: recheck the syscall after RET_TRACE UPSTREAM: seccomp: remove 2-phase API BACKPORT: x86/entry: Get rid of two-phase syscall entry work BACKPORT: seccomp: Add a seccomp_data parameter secure_computing() BACKPORT: x86/entry/64: Always run ptregs-using syscalls on the slow path UPSTREAM: x86/syscalls: Add syscall entry qualifiers UPSTREAM: x86/syscalls: Move compat syscall entry handling into syscalltbl.sh UPSTREAM: x86/syscalls: Remove __SYSCALL_COMMON and __SYSCALL_X32 UPSTREAM: x86/syscalls: Refactor syscalltbl.sh Makefile: Tidy up 4.4.165 merge ANDROID: zram: set comp_len to PAGE_SIZE when page is huge BACKPORT: xfrm: Allow Output Mark to be Updated Using UPDSA ANDROID: sdcardfs: Add option to drop unused dentries f2fs: guarantee journalled quota data by checkpoint f2fs: cleanup dirty pages if recover failed f2fs: fix data corruption issue with hardware encryption f2fs: fix to recover inode->i_flags of inode block during POR f2fs: spread f2fs_set_inode_flags() f2fs: fix to spread clear_cold_data() Revert "f2fs: fix to clear PG_checked flag in set_page_dirty()" f2fs: account read IOs and use IO counts for is_idle f2fs: fix to account IO correctly for cgroup writeback f2fs: fix to account IO correctly f2fs: remove request_list check in is_idle() f2fs: allow to mount, if quota is failed f2fs: update REQ_TIME in f2fs_cross_rename() f2fs: do not update REQ_TIME in case of error conditions f2fs: remove unneeded disable_nat_bits() f2fs: remove unused sbi->trigger_ssr_threshold f2fs: shrink sbi->sb_lock coverage in set_file_temperature() f2fs: fix to recover cold bit of inode block during POR f2fs: submit cached bio to avoid endless PageWriteback f2fs: checkpoint disabling f2fs: clear PageError on the read path f2fs: allow out-place-update for direct IO in LFS mode f2fs: refactor ->page_mkwrite() flow Revert: "f2fs: check last page index in cached bio to decide submission" f2fs: support superblock checksum f2fs: add to account skip count of background GC f2fs: add to account meta IO f2fs: keep lazytime on remount f2fs: fix missing up_read f2fs: return correct errno in f2fs_gc f2fs: avoid f2fs_bug_on if f2fs_get_meta_page_nofail got EIO f2fs: mark inode dirty explicitly in recover_inode() f2fs: fix to recover inode's crtime during POR f2fs: fix to recover inode's i_gc_failures during POR f2fs: fix to recover inode's i_flags during POR f2fs: fix to recover inode's project id during POR f2fs: update i_size after DIO completion f2fs: report ENOENT correctly in f2fs_rename f2fs: fix remount problem of option io_bits f2fs: fix to recover inode's uid/gid during POR f2fs: avoid infinite loop in f2fs_alloc_nid f2fs: add new idle interval timing for discard and gc paths f2fs: split IO error injection according to RW f2fs: add SPDX license identifiers f2fs: surround fault_injection related option parsing using CONFIG_F2FS_FAULT_INJECTION f2fs: avoid sleeping under spin_lock f2fs: plug readahead IO in readdir() f2fs: fix to do sanity check with current segment number f2fs: fix memory leak of percpu counter in fill_super() f2fs: fix memory leak of write_io in fill_super() f2fs: cache NULL when both default_acl and acl are NULL f2fs: fix to flush all dirty inodes recovered in readonly fs f2fs: report error if quota off error during umount f2fs: submit bio after shutdown f2fs: avoid wrong decrypted data from disk Revert "f2fs: use printk_ratelimited for f2fs_msg" f2fs: fix unnecessary periodic wakeup of discard thread when dev is busy f2fs: fix to avoid NULL pointer dereference on se->discard_map f2fs: add additional sanity check in f2fs_acl_from_disk() Revert "BACKPORT, FROMLIST: fscrypt: add Speck128/256 support" Build fix for076c36fce1. Revert "BACKPORT, FROMGIT: crypto: speck - add support for the Speck block cipher" Revert "FROMGIT: crypto: speck - export common helpers" Revert "BACKPORT, FROMGIT: crypto: arm/speck - add NEON-accelerated implementation of Speck-XTS" Revert "BACKPORT, FROMGIT: crypto: speck - add test vectors for Speck128-XTS" Revert "BACKPORT, FROMGIT: crypto: speck - add test vectors for Speck64-XTS" Revert "BACKPORT, FROMLIST: crypto: arm64/speck - add NEON-accelerated implementation of Speck-XTS" Revert "fscrypt: add Speck128/256 support" UPSTREAM: loop: Add LOOP_SET_BLOCK_SIZE in compat ioctl BACKPORT: block/loop: set hw_sectors UPSTREAM: loop: add ioctl for changing logical block size ANDROID: usb: gadget: f_mtp: Return error if count is negative ANDROID: x86_64_cuttlefish_defconfig: disable CONFIG_MEMORY_STATE_TIME ANDROID: sdcardfs: Change current->fs under lock ANDROID: sdcardfs: Don't use OVERRIDE_CRED macro Revert "f2fs: use timespec64 for inode timestamps" ANDROID: restrict store of prefer_idle as boolean BACKPORT: arm/syscalls: Optimize address limit check UPSTREAM: syscalls: Use CHECK_DATA_CORRUPTION for addr_limit_user_check BACKPORT: arm64/syscalls: Check address limit on user-mode return BACKPORT: x86/syscalls: Check address limit on user-mode return BACKPORT: lkdtm: add bad USER_DS test UPSTREAM: bug: switch data corruption check to __must_check BACKPORT: lkdtm: Add tests for struct list corruption UPSTREAM: bug: Provide toggle for BUG on data corruption UPSTREAM: list: Split list_del() debug checking into separate function UPSTREAM: rculist: Consolidate DEBUG_LIST for list_add_rcu() BACKPORT: list: Split list_add() debug checking into separate function FROMLIST: ANDROID: binder: Add BINDER_GET_NODE_INFO_FOR_REF ioctl. f2fs: readahead encrypted block during GC f2fs: avoid fi->i_gc_rwsem[WRITE] lock in f2fs_gc f2fs: fix performance issue observed with multi-thread sequential read f2fs: fix to skip verifying block address for non-regular inode f2fs: rework fault injection handling to avoid a warning f2fs: support fault_type mount option f2fs: fix to return success when trimming meta area f2fs: fix use-after-free of dicard command entry f2fs: support discard submission error injection f2fs: split discard command in prior to block layer f2fs: wake up gc thread immediately when gc_urgent is set f2fs: fix incorrect range->len in f2fs_trim_fs() f2fs: refresh recent accessed nat entry in lru list f2fs: fix avoid race between truncate and background GC f2fs: avoid race between zero_range and background GC f2fs: fix to do sanity check with block address in main area v2 f2fs: fix to do sanity check with inline flags f2fs: fix to reset i_gc_failures correctly f2fs: fix invalid memory access f2fs: fix to avoid broken of dnode block list f2fs: use true and false for boolean values f2fs: fix to do sanity check with cp_pack_start_sum f2fs: avoid f2fs_bug_on() in cp_error case f2fs: fix to clear PG_checked flag in set_page_dirty() f2fs: fix to active page in lru list for read path f2fs: don't keep meta pages used for block migration f2fs: fix to restrict mount condition when without CONFIG_QUOTA f2fs: quota: do not mount as RDWR without QUOTA if quota feature enabled f2fs: quota: fix incorrect comments f2fs: add proc entry to show victim_secmap bitmap f2fs: let checkpoint flush dnode page of regular f2fs: issue discard align to section in LFS mode f2fs: don't allow any writes on aborted atomic writes f2fs: restrict setting up inode.i_advise f2fs: fix wrong kernel message when recover fsync data on ro fs f2fs: clean up ioctl interface naming f2fs: clean up with f2fs_is_{atomic,volatile}_file() f2fs: clean up with f2fs_encrypted_inode() f2fs: clean up with get_current_nat_page f2fs: kill EXT_TREE_VEC_SIZE f2fs: avoid duplicated permission check for "trusted." xattrs f2fs: fix to propagate error from __get_meta_page() f2fs: fix to do sanity check with i_extra_isize f2fs: blk_finish_plug of submit_bio in lfs mode f2fs: do not set free of current section f2fs: Keep alloc_valid_block_count in sync f2fs: issue small discard by LBA order f2fs: stop issuing discard immediately if there is queued IO f2fs: clean up with IS_INODE() f2fs: detect bug_on in f2fs_wait_discard_bios f2fs: fix defined but not used build warnings f2fs: enable real-time discard by default f2fs: fix to detect looped node chain correctly f2fs: fix to do sanity check with block address in main area f2fs: fix to skip GC if type in SSA and SIT is inconsistent f2fs: try grabbing node page lock aggressively in sync scenario f2fs: show the fsync_mode=nobarrier mount option f2fs: check the right return value of memory alloc function f2fs: Replace strncpy with memcpy f2fs: avoid the global name 'fault_name' f2fs: fix to do sanity check with reserved blkaddr of inline inode f2fs: fix to do sanity check with node footer and iblocks f2fs: Allocate and stat mem used by free nid bitmap more accurately f2fs: fix to do sanity check with user_block_count f2fs: fix to do sanity check with extra_attr feature f2fs: fix to correct return value of f2fs_trim_fs f2fs: fix to do sanity check with {sit,nat}_ver_bitmap_bytesize f2fs: fix to do sanity check with secs_per_zone f2fs: disable f2fs_check_rb_tree_consistence f2fs: introduce and spread verify_blkaddr f2fs: use timespec64 for inode timestamps f2fs: fix to wait on page writeback before updating page f2fs: assign REQ_RAHEAD to bio for ->readpages f2fs: fix a hungtask problem caused by congestion_wait f2fs: Fix uninitialized return in f2fs_ioc_shutdown() f2fs: don't issue discard commands in online discard is on f2fs: fix to propagate return value of scan_nat_page() f2fs: support in-memory inode checksum when checking consistency f2fs: fix error path of fill_super f2fs: relocate readdir_ra configure initialization f2fs: move s_res{u,g}id initialization to default_options() f2fs: don't acquire orphan ino during recovery f2fs: avoid potential deadlock in f2fs_sbi_store f2fs: indicate shutdown f2fs to allow unmount successfully f2fs: keep meta pages in cp_error state f2fs: do checkpoint in kill_sb f2fs: allow wrong configured dio to buffered write f2fs: flush journal nat entries for nat_bits during unmount BACKPORT: arm64/vdso: Fix nsec handling for CLOCK_MONOTONIC_RAW ANDROID: arm64: mm: fix 4.4.154 merge BACKPORT: zram: drop max_zpage_size and use zs_huge_class_size() BACKPORT: zsmalloc: introduce zs_huge_class_size() ANDROID: tracing: fix race condition reading saved tgids ANDROID: x86_64_cuttlefish_defconfig: Enable lz4 compression for zram UPSTREAM: drivers/block/zram/zram_drv.c: fix bug storing backing_dev BACKPORT: zram: introduce zram memory tracking BACKPORT: zram: record accessed second BACKPORT: zram: mark incompressible page as ZRAM_HUGE UPSTREAM: zram: correct flag name of ZRAM_ACCESS UPSTREAM: zram: Delete gendisk before cleaning up the request queue UPSTREAM: drivers/block/zram/zram_drv.c: make zram_page_end_io() static BACKPORT: zram: set BDI_CAP_STABLE_WRITES once UPSTREAM: zram: fix null dereference of handle UPSTREAM: zram: add config and doc file for writeback feature BACKPORT: zram: read page from backing device BACKPORT: zram: write incompressible pages to backing device BACKPORT: zram: identify asynchronous IO's return value BACKPORT: zram: add free space management in backing device UPSTREAM: zram: add interface to specif backing device UPSTREAM: zram: rename zram_decompress_page to __zram_bvec_read UPSTREAM: zram: inline zram_compress UPSTREAM: zram: clean up duplicated codes in __zram_bvec_write ANDROID: x86_64_cuttlefish_defconfig: Enable zram and zstd BACKPORT: crypto: zstd - Add zstd support UPSTREAM: zram: add zstd to the supported algorithms list UPSTREAM: lib: Add zstd modules UPSTREAM: lib: Add xxhash module UPSTREAM: zram: rework copy of compressor name in comp_algorithm_store() UPSTREAM: zram: constify attribute_group structures. UPSTREAM: zram: count same page write as page_stored UPSTREAM: zram: reduce load operation in page_same_filled UPSTREAM: zram: use zram_free_page instead of open-coded UPSTREAM: zram: introduce zram data accessor UPSTREAM: zram: remove zram_meta structure UPSTREAM: zram: use zram_slot_lock instead of raw bit_spin_lock op BACKPORT: zram: partial IO refactoring BACKPORT: zram: handle multiple pages attached bio's bvec UPSTREAM: zram: fix operator precedence to get offset BACKPORT: zram: extend zero pages to same element pages BACKPORT: zram: remove waitqueue for IO done UPSTREAM: zram: remove obsolete sysfs attrs UPSTREAM: zram: support BDI_CAP_STABLE_WRITES UPSTREAM: zram: revalidate disk under init_lock BACKPORT: mm: support anonymous stable page UPSTREAM: zram: use __GFP_MOVABLE for memory allocation UPSTREAM: zram: drop gfp_t from zcomp_strm_alloc() UPSTREAM: zram: add more compression algorithms UPSTREAM: zram: delete custom lzo/lz4 UPSTREAM: zram: cosmetic: cleanup documentation UPSTREAM: zram: use crypto api to check alg availability BACKPORT: zram: switch to crypto compress API UPSTREAM: zram: rename zstrm find-release functions UPSTREAM: zram: introduce per-device debug_stat sysfs node UPSTREAM: zram: remove max_comp_streams internals UPSTREAM: zram: user per-cpu compression streams BACKPORT: zsmalloc: require GFP in zs_malloc() UPSTREAM: zram/zcomp: do not zero out zcomp private pages UPSTREAM: zram: pass gfp from zcomp frontend to backend UPSTREAM: socket: close race condition between sock_close() and sockfs_setattr() ANDROID: Refresh x86_64_cuttlefish_defconfig kernel/sys.c: fix merge error with 4.4.144 ANDROID: sdcardfs: Check stacked filesystem depth Fix backport of "tcp: detect malicious patterns in tcp_collapse_ofo_queue()" tcp: detect malicious patterns in tcp_collapse_ofo_queue() tcp: avoid collapses in tcp_prune_queue() if possible treewide: Use array_size in f2fs_kvzalloc() treewide: Use array_size() in f2fs_kzalloc() treewide: Use array_size() in f2fs_kmalloc() overflow.h: Add allocation size calculation helpers f2fs: fix to clear FI_VOLATILE_FILE correctly f2fs: let sync node IO interrupt async one f2fs: don't change wbc->sync_mode f2fs: fix to update mtime correctly fs: f2fs: insert space around that ':' and ', ' fs: f2fs: add missing blank lines after declarations fs: f2fs: changed variable type of offset "unsigned" to "loff_t" f2fs: clean up symbol namespace f2fs: make set_de_type() static f2fs: make __f2fs_write_data_pages() static f2fs: fix to avoid accessing cross the boundary f2fs: fix to let caller retry allocating block address disable loading f2fs module on PAGE_SIZE > 4KB f2fs: fix error path of move_data_page f2fs: don't drop dentry pages after fs shutdown f2fs: fix to avoid race during access gc_thread pointer f2fs: clean up with clear_radix_tree_dirty_tag f2fs: fix to don't trigger writeback during recovery f2fs: clear discard_wake earlier f2fs: let discard thread wait a little longer if dev is busy f2fs: avoid stucking GC due to atomic write f2fs: introduce sbi->gc_mode to determine the policy f2fs: keep migration IO order in LFS mode f2fs: fix to wait page writeback during revoking atomic write f2fs: Fix deadlock in shutdown ioctl f2fs: detect synchronous writeback more earlier mm: remove nr_pages argument from pagevec_lookup_{,range}_tag() ceph: use pagevec_lookup_range_nr_tag() mm: add variant of pagevec_lookup_range_tag() taking number of pages mm: use pagevec_lookup_range_tag() in write_cache_pages() mm: use pagevec_lookup_range_tag() in __filemap_fdatawait_range() nilfs2: use pagevec_lookup_range_tag() gfs2: use pagevec_lookup_range_tag() f2fs: use find_get_pages_tag() for looking up single page f2fs: simplify page iteration loops f2fs: use pagevec_lookup_range_tag() ext4: use pagevec_lookup_range_tag() ceph: use pagevec_lookup_range_tag() btrfs: use pagevec_lookup_range_tag() mm: implement find_get_pages_range_tag() f2fs: clean up with is_valid_blkaddr() f2fs: fix to initialize min_mtime with ULLONG_MAX f2fs: fix to let checkpoint guarantee atomic page persistence f2fs: fix to initialize i_current_depth according to inode type Revert "f2fs: add ovp valid_blocks check for bg gc victim to fg_gc" f2fs: don't drop any page on f2fs_cp_error() case f2fs: fix spelling mistake: "extenstion" -> "extension" f2fs: enhance sanity_check_raw_super() to avoid potential overflows f2fs: treat volatile file's data as hot one f2fs: introduce release_discard_addr() for cleanup f2fs: fix potential overflow f2fs: rename dio_rwsem to i_gc_rwsem f2fs: move mnt_want_write_file after range check f2fs: fix missing clear FI_NO_PREALLOC in some error case f2fs: enforce fsync_mode=strict for renamed directory f2fs: sanity check for total valid node blocks f2fs: sanity check on sit entry f2fs: avoid bug_on on corrupted inode f2fs: give message and set need_fsck given broken node id f2fs: clean up commit_inmem_pages() f2fs: do not check F2FS_INLINE_DOTS in recover f2fs: remove duplicated dquot_initialize and fix error handling f2fs: stop issue discard if something wrong with f2fs f2fs: fix return value in f2fs_ioc_commit_atomic_write f2fs: allocate hot_data for atomic write more strictly f2fs: check if inmem_pages list is empty correctly f2fs: fix race in between GC and atomic open f2fs: change le32 to le16 of f2fs_inode->i_extra_size f2fs: check cur_valid_map_mir & raw_sit block count when flush sit entries f2fs: correct return value of f2fs_trim_fs f2fs: fix to show missing bits in FS_IOC_GETFLAGS f2fs: remove unneeded F2FS_PROJINHERIT_FL f2fs: don't use GFP_ZERO for page caches f2fs: issue all big range discards in umount process f2fs: remove redundant block plug f2fs: remove unmatched zero_user_segment when convert inline dentry f2fs: introduce private inode status mapping fscrypt: log the crypto algorithm implementations crypto: api - Add crypto_type_has_alg helper crypto: skcipher - Add low-level skcipher interface crypto: skcipher - Add helper to retrieve driver name crypto: skcipher - Add default key size helper fscrypt: add Speck128/256 support fscrypt: only derive the needed portion of the key fscrypt: separate key lookup from key derivation fscrypt: use a common logging function fscrypt: remove internal key size constants fscrypt: remove unnecessary check for non-logon key type fscrypt: make fscrypt_operations.max_namelen an integer fscrypt: drop empty name check from fname_decrypt() fscrypt: drop max_namelen check from fname_decrypt() fscrypt: don't special-case EOPNOTSUPP from fscrypt_get_encryption_info() fscrypt: don't clear flags on crypto transform fscrypt: remove stale comment from fscrypt_d_revalidate() fscrypt: remove error messages for skcipher_request_alloc() failure fscrypt: remove unnecessary NULL check when allocating skcipher fscrypt: clean up after fscrypt_prepare_lookup() conversions fscrypt: use unbound workqueue for decryption f2fs: run fstrim asynchronously if runtime discard is on f2fs: turn down IO priority of discard from background f2fs: don't split checkpoint in fstrim f2fs: issue discard commands proactively in high fs utilization f2fs: add fsync_mode=nobarrier for non-atomic files f2fs: let fstrim issue discard commands in lower priority f2fs: avoid fsync() failure caused by EAGAIN in writepage() f2fs: clear PageError on writepage - part 2 f2fs: check cap_resource only for data blocks Revert "f2fs: introduce f2fs_set_page_dirty_nobuffer" f2fs: clear PageError on writepage f2fs: call unlock_new_inode() before d_instantiate() f2fs: refactor read path to allow multiple postprocessing steps fscrypt: allow synchronous bio decryption f2fs: remain written times to update inode during fsync f2fs: make assignment of t->dentry_bitmap more readable f2fs: truncate preallocated blocks in error case f2fs: fix a wrong condition in f2fs_skip_inode_update f2fs: reserve bits for fs-verity f2fs: Add a segment type check in inplace write f2fs: no need to initialize zero value for GFP_F2FS_ZERO f2fs: don't track new nat entry in nat set f2fs: clean up with F2FS_BLK_ALIGN f2fs: check blkaddr more accuratly before issue a bio f2fs: Set GF_NOFS in read_cache_page_gfp while doing f2fs_quota_read f2fs: introduce a new mount option test_dummy_encryption f2fs: introduce F2FS_FEATURE_LOST_FOUND feature f2fs: release locks before return in f2fs_ioc_gc_range() f2fs: align memory boundary for bitops f2fs: remove unneeded set_cold_node() f2fs: add nowait aio support f2fs: wrap all options with f2fs_sb_info.mount_opt f2fs: Don't overwrite all types of node to keep node chain f2fs: introduce mount option for fsync mode f2fs: fix to restore old mount option in ->remount_fs f2fs: wrap sb_rdonly with f2fs_readonly f2fs: avoid selinux denial on CAP_SYS_RESOURCE f2fs: support hot file extension f2fs: fix to avoid race in between atomic write and background GC f2fs: do gc in greedy mode for whole range if gc_urgent mode is set f2fs: issue discard aggressively in the gc_urgent mode f2fs: set readdir_ra by default f2fs: add auto tuning for small devices f2fs: add mount option for segment allocation policy f2fs: don't stop GC if GC is contended f2fs: expose extension_list sysfs entry f2fs: fix to set KEEP_SIZE bit in f2fs_zero_range f2fs: introduce sb_lock to make encrypt pwsalt update exclusive f2fs: remove redundant initialization of pointer 'p' f2fs: flush cp pack except cp pack 2 page at first f2fs: clean up f2fs_sb_has_xxx functions f2fs: remove redundant check of page type when submit bio f2fs: fix to handle looped node chain during recovery f2fs: handle quota for orphan inodes f2fs: support passing down write hints to block layer with F2FS policy f2fs: support passing down write hints given by users to block layer f2fs: fix to clear CP_TRIMMED_FLAG f2fs: support large nat bitmap f2fs: fix to check extent cache in f2fs_drop_extent_tree f2fs: restrict inline_xattr_size configuration f2fs: fix heap mode to reset it back f2fs: fix potential corruption in area before F2FS_SUPER_OFFSET fscrypt: fix build with pre-4.6 gcc versions fscrypt: fix up fscrypt_fname_encrypted_size() for internal use fscrypt: define fscrypt_fname_alloc_buffer() to be for presented names fscrypt: calculate NUL-padding length in one place only fscrypt: move fscrypt_symlink_data to fscrypt_private.h fscrypt: remove fscrypt_fname_usr_to_disk() f2fs: switch to fscrypt_get_symlink() f2fs: switch to fscrypt ->symlink() helper functions fscrypt: new helper function - fscrypt_get_symlink() fscrypt: new helper functions for ->symlink() fscrypt: trim down fscrypt.h includes fscrypt: move fscrypt_is_dot_dotdot() to fs/crypto/fname.c fscrypt: move fscrypt_valid_enc_modes() to fscrypt_private.h fscrypt: move fscrypt_operations declaration to fscrypt_supp.h fscrypt: split fscrypt_dummy_context_enabled() into supp/notsupp versions fscrypt: move fscrypt_ctx declaration to fscrypt_supp.h fscrypt: move fscrypt_info_cachep declaration to fscrypt_private.h fscrypt: move fscrypt_control_page() to supp/notsupp headers fscrypt: move fscrypt_has_encryption_key() to supp/notsupp headers f2fs: don't put dentry page in pagecache into highmem f2fs: support inode creation time f2fs: rebuild sit page from sit info in mem f2fs: stop issuing discard if fs is readonly f2fs: clean up duplicated assignment in init_discard_policy f2fs: use GFP_F2FS_ZERO for cleanup f2fs: allow to recover node blocks given updated checkpoint f2fs: recover some i_inline flags f2fs: correct removexattr behavior for null valued extended attribute f2fs: drop page cache after fs shutdown f2fs: stop gc/discard thread after fs shutdown f2fs: hanlde error case in f2fs_ioc_shutdown f2fs: split need_inplace_update f2fs: fix to update last_disk_size correctly f2fs: kill F2FS_INLINE_XATTR_ADDRS for cleanup f2fs: clean up error path of fill_super f2fs: avoid hungtask when GC encrypted block if io_bits is set f2fs: allow quota to use reserved blocks f2fs: fix to drop all inmem pages correctly f2fs: speed up defragment on sparse file f2fs: support F2FS_IOC_PRECACHE_EXTENTS f2fs: add an ioctl to disable GC for specific file f2fs: prevent newly created inode from being dirtied incorrectly f2fs: support FIEMAP_FLAG_XATTR f2fs: fix to cover f2fs_inline_data_fiemap with inode_lock f2fs: check node page again in write end io f2fs: fix to caclulate required free section correctly f2fs: handle newly created page when revoking inmem pages f2fs: add resgid and resuid to reserve root blocks f2fs: implement cgroup writeback support f2fs: remove unused pend_list_tag f2fs: avoid high cpu usage in discard thread f2fs: make local functions static f2fs: add reserved blocks for root user f2fs: check segment type in __f2fs_replace_block f2fs: update inode info to inode page for new file f2fs: show precise # of blocks that user/root can use f2fs: clean up unneeded declaration f2fs: continue to do direct IO if we only preallocate partial blocks f2fs: enable quota at remount from r to w f2fs: skip stop_checkpoint for user data writes f2fs: fix missing error number for xattr operation f2fs: recover directory operations by fsync f2fs: return error during fill_super f2fs: fix an error case of missing update inode page f2fs: fix potential hangtask in f2fs_trace_pid f2fs: no need return value in restore summary process f2fs: use unlikely for release case f2fs: don't return value in truncate_data_blocks_range f2fs: clean up f2fs_map_blocks f2fs: clean up hash codes f2fs: fix error handling in fill_super f2fs: spread f2fs_k{m,z}alloc f2fs: inject fault to kvmalloc f2fs: inject fault to kzalloc f2fs: remove a redundant conditional expression f2fs: apply write hints to select the type of segment for direct write f2fs: switch to fscrypt_prepare_setattr() f2fs: switch to fscrypt_prepare_lookup() f2fs: switch to fscrypt_prepare_rename() f2fs: switch to fscrypt_prepare_link() f2fs: switch to fscrypt_file_open() f2fs: remove repeated f2fs_bug_on f2fs: remove an excess variable f2fs: fix lock dependency in between dio_rwsem & i_mmap_sem f2fs: remove unused parameter f2fs: still write data if preallocate only partial blocks f2fs: introduce sysfs readdir_ra to readahead inode block in readdir f2fs: fix concurrent problem for updating free bitmap f2fs: remove unneeded memory footprint accounting f2fs: no need to read nat block if nat_block_bitmap is set f2fs: reserve nid resource for quota sysfile fscrypt: resolve some cherry-pick bugs fscrypt: move to generic async completion crypto: introduce crypto wait for async op fscrypt: lock mutex before checking for bounce page pool fscrypt: new helper function - fscrypt_prepare_setattr() fscrypt: new helper function - fscrypt_prepare_lookup() fscrypt: new helper function - fscrypt_prepare_rename() fscrypt: new helper function - fscrypt_prepare_link() fscrypt: new helper function - fscrypt_file_open() fscrypt: new helper function - fscrypt_require_key() fscrypt: remove unneeded empty fscrypt_operations structs fscrypt: remove ->is_encrypted() fscrypt: switch from ->is_encrypted() to IS_ENCRYPTED() fs, fscrypt: add an S_ENCRYPTED inode flag fscrypt: clean up include file mess fscrypt: fix dereference of NULL user_key_payload fscrypt: make ->dummy_context() return bool f2fs: deny accessing encryption policy if encryption is off f2fs: inject fault in inc_valid_node_count f2fs: fix to clear FI_NO_PREALLOC f2fs: expose quota information in debugfs f2fs: separate nat entry mem alloc from nat_tree_lock f2fs: validate before set/clear free nat bitmap f2fs: avoid opened loop codes in __add_ino_entry f2fs: apply write hints to select the type of segments for buffered write f2fs: introduce scan_curseg_cache for cleanup f2fs: optimize the way of traversing free_nid_bitmap f2fs: keep scanning until enough free nids are acquired f2fs: trace checkpoint reason in fsync() f2fs: keep isize once block is reserved cross EOF f2fs: avoid race in between GC and block exchange f2fs: save a multiplication for last_nid calculation f2fs: fix summary info corruption f2fs: remove dead code in update_meta_page f2fs: remove unneeded semicolon f2fs: don't bother with inode->i_version f2fs: check curseg space before foreground GC f2fs: use rw_semaphore to protect SIT cache f2fs: support quota sys files f2fs: add quota_ino feature infra f2fs: optimize __update_nat_bits f2fs: modify for accurate fggc node io stat Revert "f2fs: handle dirty segments inside refresh_sit_entry" f2fs: add a function to move nid f2fs: export SSR allocation threshold f2fs: give correct trimmed blocks in fstrim f2fs: support bio allocation error injection f2fs: support get_page error injection f2fs: add missing sysfs description f2fs: support soft block reservation f2fs: handle error case when adding xattr entry f2fs: support flexible inline xattr size f2fs: show current cp state f2fs: add missing quota_initialize f2fs: show # of dirty segments via sysfs f2fs: stop all the operations by cp_error flag f2fs: remove several redundant assignments f2fs: avoid using timespec f2fs: fix to correct no_fggc_candidate Revert "f2fs: return wrong error number on f2fs_quota_write" f2fs: remove obsolete pointer for truncate_xattr_node f2fs: retry ENOMEM for quota_read|write f2fs: limit # of inmemory pages f2fs: update ctx->pos correctly when hitting hole in directory f2fs: relocate readahead codes in readdir() f2fs: allow readdir() to be interrupted f2fs: trace f2fs_readdir f2fs: trace f2fs_lookup f2fs: skip searching non-exist range in truncate_hole f2fs: expose some sectors to user in inline data or dentry case f2fs: avoid stale fi->gdirty_list pointer f2fs/crypto: drop crypto key at evict_inode only f2fs: fix to avoid race when accessing last_disk_size f2fs: Fix bool initialization/comparison f2fs: give up CP_TRIMMED_FLAG if it drops discards f2fs: trace f2fs_remove_discard f2fs: reduce cmd_lock coverage in __issue_discard_cmd f2fs: split discard policy f2fs: wrap discard policy f2fs: support issuing/waiting discard in range f2fs: fix to flush multiple device in checkpoint f2fs: enhance multiple device flush f2fs: fix to show ino management cache size correctly f2fs: drop FI_UPDATE_WRITE tag after f2fs_issue_flush f2fs: obsolete ALLOC_NID_LIST list f2fs: convert inline data for direct I/O & FI_NO_PREALLOC f2fs: allow readpages with NULL file pointer f2fs: show flush list status in sysfs f2fs: introduce read_xattr_block f2fs: introduce read_inline_xattr Revert "f2fs: reuse nids more aggressively" Revert "f2fs: node segment is prior to data segment selected victim" f2fs: fix potential panic during fstrim f2fs: hurry up to issue discard after io interruption f2fs: fix to show correct discard_granularity in sysfs f2fs: detect dirty inode in evict_inode f2fs: clear radix tree dirty tag of pages whose dirty flag is cleared f2fs: speed up gc_urgent mode with SSR f2fs: better to wait for fstrim completion f2fs: avoid race in between read xattr & write xattr f2fs: make get_lock_data_page to handle encrypted inode f2fs: use generic terms used for encrypted block management f2fs: introduce f2fs_encrypted_file for clean-up Revert "f2fs: add a new function get_ssr_cost" f2fs: constify super_operations f2fs: fix to wake up all sleeping flusher f2fs: avoid race in between atomic_read & atomic_inc f2fs: remove unneeded parameter of change_curseg f2fs: update i_flags correctly f2fs: don't check inode's checksum if it was dirtied or writebacked f2fs: don't need to update inode checksum for recovery f2fs: trigger fdatasync for non-atomic_write file f2fs: fix to avoid race in between aio and gc f2fs: wake up discard_thread iff there is a candidate f2fs: return error when accessing insane flie offset f2fs: trigger normal fsync for non-atomic_write file f2fs: clear FI_HOT_DATA correctly f2fs: fix out-of-order execution in f2fs_issue_flush f2fs: issue discard commands if gc_urgent is set f2fs: introduce discard_granularity sysfs entry f2fs: remove unused function overprovision_sections f2fs: check hot_data for roll-forward recovery f2fs: add tracepoint for f2fs_gc f2fs: retry to revoke atomic commit in -ENOMEM case f2fs: let fill_super handle roll-forward errors f2fs: merge equivalent flags F2FS_GET_BLOCK_[READ|DIO] f2fs: support journalled quota f2fs: fix potential overflow when adjusting GC cycle f2fs: avoid unneeded sync on quota file f2fs: introduce gc_urgent mode for background GC f2fs: use IPU for cold files f2fs: fix the size value in __check_sit_bitmap f2fs: add app/fs io stat f2fs: do not change the valid_block value if cur_valid_map was wrongly set or cleared f2fs: update cur_valid_map_mir together with cur_valid_map f2fs: use printk_ratelimited for f2fs_msg f2fs: expose features to sysfs entry f2fs: support inode checksum f2fs: return wrong error number on f2fs_quota_write f2fs: provide f2fs_balance_fs to __write_node_page f2fs: introduce f2fs_statfs_project f2fs: don't need to wait for node writes for atomic write f2fs: avoid naming confusion of sysfs init f2fs: support project quota f2fs: record quota during dot{,dot} recovery f2fs: enhance on-disk inode structure scalability f2fs: make max inline size changeable f2fs: add ioctl to expose current features f2fs: make background threads of f2fs being aware of freezing f2fs: don't give partially written atomic data from process crash f2fs: give a try to do atomic write in -ENOMEM case f2fs: preserve i_mode if __f2fs_set_acl() fails f2fs: alloc new nids for xattr block in recovery f2fs: spread struct f2fs_dentry_ptr for inline path f2fs: remove unused input parameter f2fs: avoid cpu lockup f2fs: include seq_file.h for sysfs.c f2fs: Don't clear SGID when inheriting ACLs f2fs: remove extra inode_unlock() in error path fscrypt: add support for AES-128-CBC fscrypt: inline fscrypt_free_filename() f2fs: make more close to v4.13-rc1 f2fs: support plain user/group quota f2fs: avoid deadlock caused by lock order of page and lock_op f2fs: use spin_{,un}lock_irq{save,restore} f2fs: relax migratepage for atomic written page f2fs: don't count inode block in in-memory inode.i_blocks Revert "f2fs: fix to clean previous mount option when remount_fs" f2fs: do not set LOST_PINO for renamed dir f2fs: do not set LOST_PINO for newly created dir f2fs: skip ->writepages for {mete,node}_inode during recovery f2fs: introduce __check_sit_bitmap f2fs: stop gc/discard thread in prior during umount f2fs: introduce reserved_blocks in sysfs f2fs: avoid redundant f2fs_flush after remount f2fs: report # of free inodes more precisely f2fs: add ioctl to do gc with target block address f2fs: don't need to check encrypted inode for partial truncation f2fs: measure inode.i_blocks as generic filesystem f2fs: set CP_TRIMMED_FLAG correctly f2fs: require key for truncate(2) of encrypted file f2fs: move sysfs code from super.c to fs/f2fs/sysfs.c f2fs: clean up sysfs codes f2fs: fix wrong error number of fill_super f2fs: fix to show injection rate in ->show_options f2fs: Fix a return value in case of error in 'f2fs_fill_super' f2fs: use proper variable name f2fs: fix to avoid panic when encountering corrupt node f2fs: don't track newly allocated nat entry in list f2fs: add f2fs_bug_on in __remove_discard_cmd f2fs: introduce __wait_one_discard_bio f2fs: dax: fix races between page faults and truncating pages f2fs: simplify the way of calulating next nat address f2fs: sanity check size of nat and sit cache f2fs: fix a panic caused by NULL flush_cmd_control f2fs: remove the unnecessary cast for PTR_ERR f2fs: remove false-positive bug_on f2fs: Do not issue small discards in LFS mode f2fs: don't bother checking for encryption key in ->write_iter() f2fs: don't bother checking for encryption key in ->mmap() f2fs: wait discard IO completion without cmd_lock held f2fs: wake up all waiters in f2fs_submit_discard_endio f2fs: show more info if fail to issue discard f2fs: introduce io_list for serialize data/node IOs f2fs: split wio_mutex f2fs: combine huge num of discard rb tree consistence checks f2fs: fix a bug caused by NULL extent tree f2fs: try to freeze in gc and discard threads f2fs: add a new function get_ssr_cost f2fs: declare load_free_nid_bitmap static f2fs: avoid f2fs_lock_op for IPU writes f2fs: split bio cache f2fs: use fio instead of multiple parameters f2fs: remove unnecessary read cases in merged IO flow f2fs: use f2fs_submit_page_bio for ra_meta_pages f2fs: make sure f2fs_gc returns consistent errno f2fs: load inode's flag from disk f2fs: sanity check checkpoint segno and blkoff f2fs, block_dump: give WRITE direction to submit_bio fscrypt: correct collision claim for digested names f2fs: switch to using fscrypt_match_name() fscrypt: introduce helper function for filename matching fscrypt: fix context consistency check when key(s) unavailable fscrypt: Move key structure and constants to uapi fscrypt: remove fscrypt_symlink_data_len() fscrypt: remove unnecessary checks for NULL operations fscrypt: eliminate ->prepare_context() operation fscrypt: remove broken support for detecting keyring key revocation fscrypt: avoid collisions when presenting long encrypted filenames f2fs: check entire encrypted bigname when finding a dentry f2fs: sync f2fs_lookup() with ext4_lookup() f2fs: fix a mount fail for wrong next_scan_nid f2fs: relocate inode_{,un}lock in F2FS_IOC_SETFLAGS f2fs: show available_nids in f2fs/status f2fs: flush dirty nats periodically f2fs: introduce CP_TRIMMED_FLAG to avoid unneeded discard f2fs: allow cpc->reason to indicate more than one reason f2fs: release cp and dnode lock before IPU f2fs: shrink size of struct discard_cmd f2fs: don't hold cmd_lock during waiting discard command f2fs: nullify fio->encrypted_page for each writes f2fs: sanity check segment count f2fs: introduce valid_ipu_blkaddr to clean up f2fs: lookup extent cache first under IPU scenario f2fs: reconstruct code to write a data page f2fs: introduce __wait_discard_cmd f2fs: introduce __issue_discard_cmd f2fs: enable small discard by default f2fs: delay awaking discard thread f2fs: seperate read nat page from nat_tree_lock f2fs: fix multiple f2fs_add_link() having same name for inline dentry f2fs: skip encrypted inode in ASYNC IPU policy f2fs: fix out-of free segments f2fs: improve definition of statistic macros f2fs: assign allocation hint for warm/cold data f2fs: fix _IOW usage f2fs: add ioctl to flush data from faster device to cold area f2fs: introduce async IPU policy f2fs: add undiscard blocks stat f2fs: unlock cp_rwsem early for IPU writes f2fs: introduce __check_rb_tree_consistence f2fs: trace __submit_discard_cmd f2fs: in prior to issue big discard f2fs: clean up discard_cmd_control structure f2fs: use rb-tree to track pending discard commands f2fs: avoid dirty node pages in check_only recovery f2fs: fix not to set fsync/dentry mark f2fs: allocate hot_data for atomic writes f2fs: give time to flush dirty pages for checkpoint f2fs: fix fs corruption due to zero inode page f2fs: shrink blk plug region f2fs: extract rb-tree operation infrastructure f2fs: avoid frequent checkpoint during f2fs_gc f2fs: clean up some macros in terms of GET_SEGNO f2fs: clean up get_valid_blocks with consistent parameter f2fs: use segment number for get_valid_blocks f2fs: guard macro variables with braces f2fs: fix comment on f2fs_flush_merged_bios() after86531d6bf2fs: prevent waiter encountering incorrect discard states f2fs: introduce f2fs_wait_discard_bios f2fs: split discard_cmd_list Revert "f2fs: put allocate_segment after refresh_sit_entry" f2fs: split make_dentry_ptr() into block and inline versions f2fs: submit bio of in-place-update pages f2fs: remove the redundant variable definition f2fs: avoid IO split due to mixed WB_SYNC_ALL and WB_SYNC_NONE f2fs: write small sized IO to hot log f2fs: use bitmap in discard_entry f2fs: clean up destroy_discard_cmd_control f2fs: count discard command entry f2fs: show issued flush/discard count f2fs: relax node version check for victim data in gc f2fs: start SSR much eariler to avoid FG_GC f2fs: allocate node and hot data in the beginning of partition f2fs: fix wrong max cost initialization f2fs: allow write page cache when writting cp f2fs: don't reserve additional space in xattr block f2fs: clean up xattr operation f2fs: don't track volatile file in dirty inode list f2fs: show the max number of volatile operations f2fs: fix race condition in between free nid allocator/initializer f2fs: use set_page_private marcro in f2fs_trace_pid f2fs: fix recording invalid last_victim f2fs: more reasonable mem_size calculating of ino_entry f2fs: calculate the f2fs_stat_info into base_mem f2fs: avoid stat_inc_atomic_write for non-atomic file f2fs: sanity check of crc_offset from raw checkpoint f2fs: cleanup the disk level filename updating f2fs: cover update_free_nid_bitmap with nid_list_lock f2fs: fix bad prefetchw of NULL page f2fs: clear FI_DATA_EXIST flag in truncate_inline_inode f2fs: move mnt_want_write_file after arguments checking f2fs: check new size by inode_newsize_ok in f2fs_insert_range f2fs: avoid copy date to user-space if move file range fail f2fs: drop duplicate new_size assign in f2fs_zero_range f2fs: adjust the way of calculating nat block f2fs: add fault injection on f2fs_truncate f2fs: check range before defragment f2fs: use parameter max_items instead of PIDVEC_SIZE f2fs: add a punch discard command function f2fs: allocate a bio for discarding when actually issuing it f2fs: skip writeback meta pages if cp_mutex acquire failed f2fs: show more precise message on orphan recovery failure f2fs: remove dead macro PGOFS_OF_NEXT_DNODE f2fs: drop duplicate radix tree lookup of nat_entry_set f2fs: make sure trace all f2fs_issue_flush f2fs: don't allow volatile writes for non-regular file f2fs: don't allow atomic writes for not regular files f2fs: fix stale ATOMIC_WRITTEN_PAGE private pointer f2fs: build stat_info before orphan inode recovery f2fs: fix the fault of calculating blkstart twice f2fs: fix the fault of checking F2FS_LINK_MAX for rename inode f2fs: don't allow to get pino when filename is encrypted f2fs: fix wrong error injection for evict_inode f2fs: le32_to_cpu for ckpt->cp_pack_total_block_count f2fs: le16_to_cpu for xattr->e_value_size f2fs: don't need to invalidate wrong node page f2fs: fix an error return value in truncate_partial_data_page f2fs: combine nat_bits and free_nid_bitmap cache f2fs: skip scanning free nid bitmap of full NAT blocks f2fs: use __set{__clear}_bit_le f2fs: update_free_nid_bitmap() can be static f2fs: __update_nat_bits() can be static f2fs: le16_to_cpu for xattr->e_value_size f2fs: don't overwrite node block by SSR f2fs: don't need to invalidate wrong node page f2fs: fix an error return value in truncate_partial_data_page fscrypt: catch up to v4.11-rc1 f2fs: avoid to flush nat journal entries f2fs: avoid to issue redundant discard commands f2fs: fix a plint compile warning f2fs: add f2fs_drop_inode tracepoint f2fs: Fix zoned block device support f2fs: remove redundant set_page_dirty() f2fs: fix to enlarge size of write_io_dummy mempool f2fs: fix memory leak of write_io_dummy mempool during umount f2fs: fix to update F2FS_{CP_}WB_DATA count correctly f2fs: use MAX_FREE_NIDS for the free nids target f2fs: introduce free nid bitmap f2fs: new helper cur_cp_crc() getting crc in f2fs_checkpoint f2fs: update the comment of default nr_pages to skipping f2fs: drop the duplicate pval in f2fs_getxattr f2fs: Don't update the xattr data that same as the exist f2fs: kill __is_extent_same f2fs: avoid bggc->fggc when enough free segments are avaliable after cp f2fs: select target segment with closer temperature in SSR mode f2fs: show simple call stack in fault injection message fscrypt: catch fscrypto_get_policy in v4.10-rc6 f2fs: use __clear_bit_le f2fs: no need lock_op in f2fs_write_inline_data f2fs: add bitmaps for empty or full NAT blocks f2fs: replace rw semaphore extent_tree_lock with mutex lock f2fs: avoid m_flags overlay when allocating more data blocks f2fs: remove unsafe bitmap checking f2fs: init local extent_info to avoid stale stack info in tp f2fs: remove unnecessary condition check for write_checkpoint in f2fs_gc f2fs: do SSR for node segments more aggresively f2fs: check discard alignment only for SEQWRITE zones f2fs: wait for discard completion after submission f2fs: much larger batched trim_fs job f2fs: avoid very large discard command f2fs: find data segments across all the types f2fs: do SSR in higher priority f2fs: do SSR for data when there is enough free space f2fs: node segment is prior to data segment selected victim f2fs: put allocate_segment after refresh_sit_entry f2fs: add ovp valid_blocks check for bg gc victim to fg_gc f2fs: do not wait for writeback in write_begin f2fs: replace __get_victim by dirty_segments in FG_GC f2fs: fix multiple f2fs_add_link() calls having same name f2fs: show actual device info in tracepoints f2fs: use SSR for warm node as well f2fs: enable inline_xattr by default f2fs: introduce noinline_xattr mount option f2fs: avoid reading NAT page by get_node_info f2fs: remove build_free_nids() during checkpoint f2fs: change recovery policy of xattr node block f2fs: super: constify fscrypt_operations structure f2fs: show checkpoint version at mount time f2fs: remove preflush for nobarrier case f2fs: check last page index in cached bio to decide submission f2fs: check io submission more precisely f2fs: fix trim_fs assignment Revert "f2fs: remove batched discard in f2fs_trim_fs" f2fs: fix missing bio_alloc(1) f2fs: call internal __write_data_page directly f2fs: avoid out-of-order execution of atomic writes f2fs: move write_node_page above fsync_node_pages f2fs: move flush tracepoint f2fs: show # of APPEND and UPDATE inodes f2fs: fix 446 coding style warnings in f2fs.h f2fs: fix 3 coding style errors in f2fs.h f2fs: declare missing static function f2fs: show the fault injection mount option f2fs: fix null pointer dereference when issuing flush in ->fsync f2fs: fix to avoid overflow when left shifting page offset f2fs: enhance lookup xattr f2fs: fix a dead loop in f2fs_fiemap() f2fs: do not preallocate blocks which has wrong buffer f2fs: show # of on-going flush and discard bios f2fs: add a kernel thread to issue discard commands asynchronously f2fs: factor out discard command info into discard_cmd_control f2fs: remove batched discard in f2fs_trim_fs f2fs: reorganize stat information f2fs: clean up flush/discard command namings f2fs: check in-memory sit version bitmap f2fs: check in-memory nat version bitmap f2fs: check in-memory block bitmap f2fs: introduce FI_ATOMIC_COMMIT f2fs: clean up with list_{first, last}_entry f2fs: return fs_trim if there is no candidate f2fs: avoid needless checkpoint in f2fs_trim_fs f2fs: relax async discard commands more f2fs: drop exist_data for inline_data when truncated to 0 f2fs: don't allow encrypted operations without keys f2fs: show the max number of atomic operations f2fs: get io size bit from mount option f2fs: support IO alignment for DATA and NODE writes f2fs: add submit_bio tracepoint f2fs: reassign new segment for mode=lfs f2fs: fix a missing discard prefree segments f2fs: use rb_entry_safe f2fs: add a case of no need to read a page in write begin f2fs: fix a problem of using memory after free f2fs: remove unneeded condition f2fs: don't cache nat entry if out of memory f2fs: remove unused values in recover_fsync_data f2fs: support async discard based on v4.9 f2fs: resolve op and op_flags confilcts f2fs: remove wrong backported codes f2fs: fix a missing size change in f2fs_setattr fs/super.c: fix race between freeze_super() and thaw_super() scripts/tags.sh: catch 4.9-rc6 f2fs: fix to access nullified flush_cmd_control pointer f2fs: free meta pages if sanity check for ckpt is failed f2fs: detect wrong layout f2fs: call sync_fs when f2fs is idle Revert "f2fs: use percpu_counter for # of dirty pages in inode" f2fs: return AOP_WRITEPAGE_ACTIVATE for writepage f2fs: do not activate auto_recovery for fallocated i_size f2fs: fix 32-bit build f2fs: set ->owner for debugfs status file's file_operations f2fs: fix incorrect free inode count in ->statfs f2fs: drop duplicate header timer.h f2fs: fix wrong AUTO_RECOVER condition f2fs: do not recover i_size if it's valid f2fs: fix fdatasync f2fs: fix to account total free nid correctly f2fs: fix an infinite loop when flush nodes in cp f2fs: don't wait writeback for datas during checkpoint f2fs: fix wrong written_valid_blocks counting f2fs: avoid BG_GC in f2fs_balance_fs f2fs: fix redundant block allocation f2fs: use err for f2fs_preallocate_blocks f2fs: support multiple devices f2fs: allow dio read for LFS mode f2fs: revert segment allocation for direct IO f2fs: return directly if block has been removed from the victim Revert "f2fs: do not recover from previous remained wrong dnodes" f2fs: remove checkpoint in f2fs_freeze f2fs: assign segments correctly for direct_io f2fs: fix wrong i_atime recovery f2fs: record inode updating status correctly f2fs: Trace reset zone events f2fs: Reset sequential zones on zoned block devices f2fs: Cache zoned block devices zone type f2fs: Do not allow adaptive mode for host-managed zoned block devices f2fs: Always enable discard for zoned blocks devices f2fs: Suppress discard warning message for zoned block devices f2fs: Check zoned block feature for host-managed zoned block devices f2fs: Use generic zoned block device terminology f2fs: Add missing break in switch-case f2fs: avoid infinite loop in the EIO case on recover_orphan_inodes f2fs: report error of f2fs_fill_dentries fs/crypto: catch up 4.9-rc6 f2fs: hide a maybe-uninitialized warning f2fs: remove percpu_count due to performance regression f2fs: make clean inodes when flushing inode page f2fs: keep dirty inodes selectively for checkpoint f2fs: Replace CURRENT_TIME_SEC with current_time() for inode timestamps f2fs: use BIO_MAX_PAGES for bio allocation f2fs: declare static function for __build_free_nids f2fs: call f2fs_balance_fs for setattr f2fs: count dirty inodes to flush node pages during checkpoint f2fs: avoid casted negative value as shrink count f2fs: don't interrupt free nids building during nid allocation f2fs: clean up free nid list operations f2fs: split free nid list f2fs: clear nlink if fail to add_link f2fs: fix sparse warnings f2fs: fix error handling in fsync_node_pages f2fs: fix to update largest extent under lock f2fs: be aware of extent beyond EOF in fiemap f2fs: don't miss any f2fs_balance_fs cases f2fs: add missing f2fs_balance_fs in f2fs_zero_range f2fs: give a chance to detach from dirty list f2fs: fix to release discard entries during checkpoint f2fs: exclude free nids building and allocation f2fs: fix to determine start_cp_addr by sbi->cur_cp_pack f2fs: fix overflow due to condition check order posix_acl: Clear SGID bit when setting file permissions f2fs: fix wrong sum_page pointer in f2fs_gc f2fs: backport from (4c1fad64 - Merge tag 'for-f2fs-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs) Conflicts: Makefile arch/arm64/configs/cuttlefish_defconfig arch/arm64/kernel/vdso.c arch/arm64/kernel/vdso/gettimeofday.S arch/x86/configs/x86_64_cuttlefish_defconfig build.config.cuttlefish.aarch64 build.config.cuttlefish.x86_64 drivers/base/power/main.c drivers/block/loop.c drivers/block/zram/zram_drv.c drivers/block/zram/zram_drv.h drivers/net/wireless/virt_wifi.c drivers/staging/android/lowmemorykiller.c drivers/vhost/vsock.c fs/ext4/crypto.c fs/ext4/crypto_key.c fs/f2fs/checkpoint.c fs/f2fs/data.c fs/f2fs/dir.c fs/f2fs/f2fs.h fs/f2fs/file.c fs/f2fs/inline.c fs/f2fs/inode.c fs/f2fs/node.c fs/f2fs/recovery.c fs/f2fs/segment.c fs/f2fs/segment.h fs/f2fs/super.c fs/overlayfs/inode.c fs/sdcardfs/super.c fs/squashfs/block.c fs/squashfs/lz4_wrapper.c include/linux/bug.h include/linux/f2fs_fs.h include/linux/msm_mdp.h include/linux/swap.h include/linux/virtio_vsock.h kernel/cpu.c kernel/trace/trace.c lib/Kconfig.debug lib/list_debug.c mm/zsmalloc.c net/vmw_vsock/virtio_transport_common.c Change-Id: Ic475eba811d0e6973a374771d68f31b15865efcc
2057 lines
69 KiB
Plaintext
2057 lines
69 KiB
Plaintext
menu "printk and dmesg options"
|
|
|
|
config PRINTK_TIME
|
|
bool "Show timing information on printks"
|
|
depends on PRINTK
|
|
help
|
|
Selecting this option causes time stamps of the printk()
|
|
messages to be added to the output of the syslog() system
|
|
call and at the console.
|
|
|
|
The timestamp is always recorded internally, and exported
|
|
to /dev/kmsg. This flag just specifies if the timestamp should
|
|
be included, not that the timestamp is recorded.
|
|
|
|
The behavior is also controlled by the kernel command line
|
|
parameter printk.time=1. See Documentation/kernel-parameters.txt
|
|
|
|
config PRINTK_CPU_ID
|
|
bool "Show CPU number on printks"
|
|
default y
|
|
depends on PRINTK
|
|
help
|
|
Selecting this option adds CPU number to printk() messages.
|
|
It can be turned off by writing 0 to printk module parameter cpu.
|
|
|
|
config PRINTK_PID
|
|
bool "Show process ID on printks"
|
|
default y
|
|
depends on PRINTK
|
|
help
|
|
Selecting this option adds process ID to printk() messages.
|
|
It can be turned off by writing 0 to printk module parameter pid.
|
|
|
|
config MESSAGE_LOGLEVEL_DEFAULT
|
|
int "Default message log level (1-7)"
|
|
range 1 7
|
|
default "4"
|
|
help
|
|
Default log level for printk statements with no specified priority.
|
|
|
|
This was hard-coded to KERN_WARNING since at least 2.6.10 but folks
|
|
that are auditing their logs closely may want to set it to a lower
|
|
priority.
|
|
|
|
config BOOT_PRINTK_DELAY
|
|
bool "Delay each boot printk message by N milliseconds"
|
|
depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
|
|
help
|
|
This build option allows you to read kernel boot messages
|
|
by inserting a short delay after each one. The delay is
|
|
specified in milliseconds on the kernel command line,
|
|
using "boot_delay=N".
|
|
|
|
It is likely that you would also need to use "lpj=M" to preset
|
|
the "loops per jiffie" value.
|
|
See a previous boot log for the "lpj" value to use for your
|
|
system, and then set "lpj=M" before setting "boot_delay=N".
|
|
NOTE: Using this option may adversely affect SMP systems.
|
|
I.e., processors other than the first one may not boot up.
|
|
BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect
|
|
what it believes to be lockup conditions.
|
|
|
|
config DYNAMIC_DEBUG
|
|
bool "Enable dynamic printk() support"
|
|
default n
|
|
depends on PRINTK
|
|
depends on DEBUG_FS
|
|
help
|
|
|
|
Compiles debug level messages into the kernel, which would not
|
|
otherwise be available at runtime. These messages can then be
|
|
enabled/disabled based on various levels of scope - per source file,
|
|
function, module, format string, and line number. This mechanism
|
|
implicitly compiles in all pr_debug() and dev_dbg() calls, which
|
|
enlarges the kernel text size by about 2%.
|
|
|
|
If a source file is compiled with DEBUG flag set, any
|
|
pr_debug() calls in it are enabled by default, but can be
|
|
disabled at runtime as below. Note that DEBUG flag is
|
|
turned on by many CONFIG_*DEBUG* options.
|
|
|
|
Usage:
|
|
|
|
Dynamic debugging is controlled via the 'dynamic_debug/control' file,
|
|
which is contained in the 'debugfs' filesystem. Thus, the debugfs
|
|
filesystem must first be mounted before making use of this feature.
|
|
We refer the control file as: <debugfs>/dynamic_debug/control. This
|
|
file contains a list of the debug statements that can be enabled. The
|
|
format for each line of the file is:
|
|
|
|
filename:lineno [module]function flags format
|
|
|
|
filename : source file of the debug statement
|
|
lineno : line number of the debug statement
|
|
module : module that contains the debug statement
|
|
function : function that contains the debug statement
|
|
flags : '=p' means the line is turned 'on' for printing
|
|
format : the format used for the debug statement
|
|
|
|
From a live system:
|
|
|
|
nullarbor:~ # cat <debugfs>/dynamic_debug/control
|
|
# filename:lineno [module]function flags format
|
|
fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
|
|
fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
|
|
fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
|
|
|
|
Example usage:
|
|
|
|
// enable the message at line 1603 of file svcsock.c
|
|
nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
// enable all the messages in file svcsock.c
|
|
nullarbor:~ # echo -n 'file svcsock.c +p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
// enable all the messages in the NFS server module
|
|
nullarbor:~ # echo -n 'module nfsd +p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
// enable all 12 messages in the function svc_process()
|
|
nullarbor:~ # echo -n 'func svc_process +p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
// disable all 12 messages in the function svc_process()
|
|
nullarbor:~ # echo -n 'func svc_process -p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
See Documentation/dynamic-debug-howto.txt for additional information.
|
|
|
|
endmenu # "printk and dmesg options"
|
|
|
|
menu "Compile-time checks and compiler options"
|
|
|
|
config DEBUG_INFO
|
|
bool "Compile the kernel with debug info"
|
|
depends on DEBUG_KERNEL && !COMPILE_TEST
|
|
help
|
|
If you say Y here the resulting kernel image will include
|
|
debugging info resulting in a larger kernel image.
|
|
This adds debug symbols to the kernel and modules (gcc -g), and
|
|
is needed if you intend to use kernel crashdump or binary object
|
|
tools like crash, kgdb, LKCD, gdb, etc on the kernel.
|
|
Say Y here only if you plan to debug the kernel.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_INFO_REDUCED
|
|
bool "Reduce debugging information"
|
|
depends on DEBUG_INFO
|
|
help
|
|
If you say Y here gcc is instructed to generate less debugging
|
|
information for structure types. This means that tools that
|
|
need full debugging information (like kgdb or systemtap) won't
|
|
be happy. But if you merely need debugging information to
|
|
resolve line numbers there is no loss. Advantage is that
|
|
build directory object sizes shrink dramatically over a full
|
|
DEBUG_INFO build and compile times are reduced too.
|
|
Only works with newer gcc versions.
|
|
|
|
config DEBUG_INFO_SPLIT
|
|
bool "Produce split debuginfo in .dwo files"
|
|
depends on DEBUG_INFO && !FRV
|
|
help
|
|
Generate debug info into separate .dwo files. This significantly
|
|
reduces the build directory size for builds with DEBUG_INFO,
|
|
because it stores the information only once on disk in .dwo
|
|
files instead of multiple times in object files and executables.
|
|
In addition the debug information is also compressed.
|
|
|
|
Requires recent gcc (4.7+) and recent gdb/binutils.
|
|
Any tool that packages or reads debug information would need
|
|
to know about the .dwo files and include them.
|
|
Incompatible with older versions of ccache.
|
|
|
|
config DEBUG_INFO_DWARF4
|
|
bool "Generate dwarf4 debuginfo"
|
|
depends on DEBUG_INFO
|
|
help
|
|
Generate dwarf4 debug info. This requires recent versions
|
|
of gcc and gdb. It makes the debug information larger.
|
|
But it significantly improves the success of resolving
|
|
variables in gdb on optimized code.
|
|
|
|
config GDB_SCRIPTS
|
|
bool "Provide GDB scripts for kernel debugging"
|
|
depends on DEBUG_INFO
|
|
help
|
|
This creates the required links to GDB helper scripts in the
|
|
build directory. If you load vmlinux into gdb, the helper
|
|
scripts will be automatically imported by gdb as well, and
|
|
additional functions are available to analyze a Linux kernel
|
|
instance. See Documentation/gdb-kernel-debugging.txt for further
|
|
details.
|
|
|
|
config ENABLE_WARN_DEPRECATED
|
|
bool "Enable __deprecated logic"
|
|
default y
|
|
help
|
|
Enable the __deprecated logic in the kernel build.
|
|
Disable this to suppress the "warning: 'foo' is deprecated
|
|
(declared at kernel/power/somefile.c:1234)" messages.
|
|
|
|
config ENABLE_MUST_CHECK
|
|
bool "Enable __must_check logic"
|
|
default y
|
|
help
|
|
Enable the __must_check logic in the kernel build. Disable this to
|
|
suppress the "warning: ignoring return value of 'foo', declared with
|
|
attribute warn_unused_result" messages.
|
|
|
|
config FRAME_WARN
|
|
int "Warn for stack frames larger than (needs gcc 4.4)"
|
|
range 0 8192
|
|
default 2048 if GCC_PLUGIN_LATENT_ENTROPY
|
|
default 1024 if !64BIT
|
|
default 2048 if 64BIT
|
|
help
|
|
Tell gcc to warn at build time for stack frames larger than this.
|
|
Setting this too low will cause a lot of warnings.
|
|
Setting it to 0 disables the warning.
|
|
Requires gcc 4.4
|
|
|
|
config STRIP_ASM_SYMS
|
|
bool "Strip assembler-generated symbols during link"
|
|
default n
|
|
help
|
|
Strip internal assembler-generated symbols during a link (symbols
|
|
that look like '.Lxxx') so they don't pollute the output of
|
|
get_wchan() and suchlike.
|
|
|
|
config READABLE_ASM
|
|
bool "Generate readable assembler code"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Disable some compiler optimizations that tend to generate human unreadable
|
|
assembler output. This may make the kernel slightly slower, but it helps
|
|
to keep kernel developers who have to stare a lot at assembler listings
|
|
sane.
|
|
|
|
config UNUSED_SYMBOLS
|
|
bool "Enable unused/obsolete exported symbols"
|
|
default y if X86
|
|
help
|
|
Unused but exported symbols make the kernel needlessly bigger. For
|
|
that reason most of these unused exports will soon be removed. This
|
|
option is provided temporarily to provide a transition period in case
|
|
some external kernel module needs one of these symbols anyway. If you
|
|
encounter such a case in your module, consider if you are actually
|
|
using the right API. (rationale: since nobody in the kernel is using
|
|
this in a module, there is a pretty good chance it's actually the
|
|
wrong interface to use). If you really need the symbol, please send a
|
|
mail to the linux kernel mailing list mentioning the symbol and why
|
|
you really need it, and what the merge plan to the mainline kernel for
|
|
your module is.
|
|
|
|
config PAGE_OWNER
|
|
bool "Track page owner"
|
|
depends on DEBUG_KERNEL && STACKTRACE_SUPPORT
|
|
select DEBUG_FS
|
|
select STACKTRACE
|
|
select PAGE_EXTENSION
|
|
help
|
|
This keeps track of what call chain is the owner of a page, may
|
|
help to find bare alloc_page(s) leaks. Even if you include this
|
|
feature on your build, it is disabled in default. You should pass
|
|
"page_owner=on" to boot parameter in order to enable it. Eats
|
|
a fair amount of memory if enabled. See tools/vm/page_owner_sort.c
|
|
for user-space helper.
|
|
|
|
If unsure, say N.
|
|
|
|
config PAGE_OWNER_ENABLE_DEFAULT
|
|
bool "Enable Track page owner by default"
|
|
depends on PAGE_OWNER
|
|
---help---
|
|
Enable track page owner by default? This value
|
|
can be overridden by page_owner_disabled=off|on.
|
|
|
|
config DEBUG_FS
|
|
bool "Debug Filesystem"
|
|
help
|
|
debugfs is a virtual file system that kernel developers use to put
|
|
debugging files into. Enable this option to be able to read and
|
|
write to these files.
|
|
|
|
For detailed documentation on the debugfs API, see
|
|
Documentation/DocBook/filesystems.
|
|
|
|
If unsure, say N.
|
|
|
|
config HEADERS_CHECK
|
|
bool "Run 'make headers_check' when building vmlinux"
|
|
depends on !UML
|
|
help
|
|
This option will extract the user-visible kernel headers whenever
|
|
building the kernel, and will run basic sanity checks on them to
|
|
ensure that exported files do not attempt to include files which
|
|
were not exported, etc.
|
|
|
|
If you're making modifications to header files which are
|
|
relevant for userspace, say 'Y', and check the headers
|
|
exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in
|
|
your build tree), to make sure they're suitable.
|
|
|
|
config DEBUG_SECTION_MISMATCH
|
|
bool "Enable full Section mismatch analysis"
|
|
help
|
|
The section mismatch analysis checks if there are illegal
|
|
references from one section to another section.
|
|
During linktime or runtime, some sections are dropped;
|
|
any use of code/data previously in these sections would
|
|
most likely result in an oops.
|
|
In the code, functions and variables are annotated with
|
|
__init,, etc. (see the full list in include/linux/init.h),
|
|
which results in the code/data being placed in specific sections.
|
|
The section mismatch analysis is always performed after a full
|
|
kernel build, and enabling this option causes the following
|
|
additional steps to occur:
|
|
- Add the option -fno-inline-functions-called-once to gcc commands.
|
|
When inlining a function annotated with __init in a non-init
|
|
function, we would lose the section information and thus
|
|
the analysis would not catch the illegal reference.
|
|
This option tells gcc to inline less (but it does result in
|
|
a larger kernel).
|
|
- Run the section mismatch analysis for each module/built-in.o file.
|
|
When we run the section mismatch analysis on vmlinux.o, we
|
|
lose valueble information about where the mismatch was
|
|
introduced.
|
|
Running the analysis for each module/built-in.o file
|
|
tells where the mismatch happens much closer to the
|
|
source. The drawback is that the same mismatch is
|
|
reported at least twice.
|
|
- Enable verbose reporting from modpost in order to help resolve
|
|
the section mismatches that are reported.
|
|
|
|
config SECTION_MISMATCH_WARN_ONLY
|
|
bool "Make section mismatch errors non-fatal"
|
|
default y
|
|
help
|
|
If you say N here, the build process will fail if there are any
|
|
section mismatch, instead of just throwing warnings.
|
|
|
|
If unsure, say Y.
|
|
|
|
#
|
|
# Select this config option from the architecture Kconfig, if it
|
|
# is preferred to always offer frame pointers as a config
|
|
# option on the architecture (regardless of KERNEL_DEBUG):
|
|
#
|
|
config ARCH_WANT_FRAME_POINTERS
|
|
bool
|
|
help
|
|
|
|
config FRAME_POINTER
|
|
bool "Compile the kernel with frame pointers"
|
|
depends on DEBUG_KERNEL && \
|
|
(CRIS || M68K || FRV || UML || \
|
|
AVR32 || SUPERH || BLACKFIN || MN10300 || METAG) || \
|
|
ARCH_WANT_FRAME_POINTERS
|
|
default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
|
|
help
|
|
If you say Y here the resulting kernel image will be slightly
|
|
larger and slower, but it gives very useful debugging information
|
|
in case of kernel bugs. (precise oopses/stacktraces/warnings)
|
|
|
|
config DEBUG_FORCE_WEAK_PER_CPU
|
|
bool "Force weak per-cpu definitions"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
s390 and alpha require percpu variables in modules to be
|
|
defined weak to work around addressing range issue which
|
|
puts the following two restrictions on percpu variable
|
|
definitions.
|
|
|
|
1. percpu symbols must be unique whether static or not
|
|
2. percpu variables can't be defined inside a function
|
|
|
|
To ensure that generic code follows the above rules, this
|
|
option forces all percpu variables to be defined as weak.
|
|
|
|
endmenu # "Compiler options"
|
|
|
|
config MAGIC_SYSRQ
|
|
bool "Magic SysRq key"
|
|
depends on !UML
|
|
help
|
|
If you say Y here, you will have some control over the system even
|
|
if the system crashes for example during kernel debugging (e.g., you
|
|
will be able to flush the buffer cache to disk, reboot the system
|
|
immediately or dump some status information). This is accomplished
|
|
by pressing various keys while holding SysRq (Alt+PrintScreen). It
|
|
also works on a serial console (on PC hardware at least), if you
|
|
send a BREAK and then within 5 seconds a command keypress. The
|
|
keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
|
|
unless you really know what this hack does.
|
|
|
|
config MAGIC_SYSRQ_DEFAULT_ENABLE
|
|
hex "Enable magic SysRq key functions by default"
|
|
depends on MAGIC_SYSRQ
|
|
default 0x1
|
|
help
|
|
Specifies which SysRq key functions are enabled by default.
|
|
This may be set to 1 or 0 to enable or disable them all, or
|
|
to a bitmask as described in Documentation/sysrq.txt.
|
|
|
|
config DEBUG_KERNEL
|
|
bool "Kernel debugging"
|
|
help
|
|
Say Y here if you are developing drivers or trying to debug and
|
|
identify kernel problems.
|
|
|
|
menu "Memory Debugging"
|
|
|
|
source mm/Kconfig.debug
|
|
|
|
config DEBUG_OBJECTS
|
|
bool "Debug object operations"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
kernel to track the life time of various objects and validate
|
|
the operations on those objects.
|
|
|
|
config DEBUG_OBJECTS_SELFTEST
|
|
bool "Debug objects selftest"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
This enables the selftest of the object debug code.
|
|
|
|
config DEBUG_OBJECTS_FREE
|
|
bool "Debug objects in freed memory"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
This enables checks whether a k/v free operation frees an area
|
|
which contains an object which has not been deactivated
|
|
properly. This can make kmalloc/kfree-intensive workloads
|
|
much slower.
|
|
|
|
config DEBUG_OBJECTS_TIMERS
|
|
bool "Debug timer objects"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
timer routines to track the life time of timer objects and
|
|
validate the timer operations.
|
|
|
|
config DEBUG_OBJECTS_WORK
|
|
bool "Debug work objects"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
work queue routines to track the life time of work objects and
|
|
validate the work operations.
|
|
|
|
config DEBUG_OBJECTS_RCU_HEAD
|
|
bool "Debug RCU callbacks objects"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
Enable this to turn on debugging of RCU list heads (call_rcu() usage).
|
|
|
|
config DEBUG_OBJECTS_PERCPU_COUNTER
|
|
bool "Debug percpu counter objects"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
percpu counter routines to track the life time of percpu counter
|
|
objects and validate the percpu counter operations.
|
|
|
|
config DEBUG_OBJECTS_ENABLE_DEFAULT
|
|
int "debug_objects bootup default value (0-1)"
|
|
range 0 1
|
|
default "1"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
Debug objects boot parameter default value
|
|
|
|
config DEBUG_SLAB
|
|
bool "Debug slab memory allocations"
|
|
depends on DEBUG_KERNEL && SLAB && !KMEMCHECK
|
|
help
|
|
Say Y here to have the kernel do limited verification on memory
|
|
allocation as well as poisoning memory on free to catch use of freed
|
|
memory. This can make kmalloc/kfree-intensive workloads much slower.
|
|
|
|
config DEBUG_SLAB_LEAK
|
|
bool "Memory leak debugging"
|
|
depends on DEBUG_SLAB
|
|
|
|
config SLUB_DEBUG_ON
|
|
bool "SLUB debugging on by default"
|
|
depends on SLUB && SLUB_DEBUG && !KMEMCHECK
|
|
default n
|
|
help
|
|
Boot with debugging on by default. SLUB boots by default with
|
|
the runtime debug capabilities switched off. Enabling this is
|
|
equivalent to specifying the "slub_debug" parameter on boot.
|
|
There is no support for more fine grained debug control like
|
|
possible with slub_debug=xxx. SLUB debugging may be switched
|
|
off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
|
|
"slub_debug=-".
|
|
|
|
config SLUB_STATS
|
|
default n
|
|
bool "Enable SLUB performance statistics"
|
|
depends on SLUB && SYSFS
|
|
help
|
|
SLUB statistics are useful to debug SLUBs allocation behavior in
|
|
order find ways to optimize the allocator. This should never be
|
|
enabled for production use since keeping statistics slows down
|
|
the allocator by a few percentage points. The slabinfo command
|
|
supports the determination of the most active slabs to figure
|
|
out which slabs are relevant to a particular load.
|
|
Try running: slabinfo -DA
|
|
|
|
config HAVE_DEBUG_KMEMLEAK
|
|
bool
|
|
|
|
config DEBUG_KMEMLEAK
|
|
bool "Kernel memory leak detector"
|
|
depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK
|
|
select DEBUG_FS
|
|
select STACKTRACE if STACKTRACE_SUPPORT
|
|
select KALLSYMS
|
|
select CRC32
|
|
help
|
|
Say Y here if you want to enable the memory leak
|
|
detector. The memory allocation/freeing is traced in a way
|
|
similar to the Boehm's conservative garbage collector, the
|
|
difference being that the orphan objects are not freed but
|
|
only shown in /sys/kernel/debug/kmemleak. Enabling this
|
|
feature will introduce an overhead to memory
|
|
allocations. See Documentation/kmemleak.txt for more
|
|
details.
|
|
|
|
Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
|
|
of finding leaks due to the slab objects poisoning.
|
|
|
|
In order to access the kmemleak file, debugfs needs to be
|
|
mounted (usually at /sys/kernel/debug).
|
|
|
|
config DEBUG_KMEMLEAK_EARLY_LOG_SIZE
|
|
int "Maximum kmemleak early log entries"
|
|
depends on DEBUG_KMEMLEAK
|
|
range 200 40000
|
|
default 16000
|
|
help
|
|
Kmemleak must track all the memory allocations to avoid
|
|
reporting false positives. Since memory may be allocated or
|
|
freed before kmemleak is initialised, an early log buffer is
|
|
used to store these actions. If kmemleak reports "early log
|
|
buffer exceeded", please increase this value.
|
|
|
|
config DEBUG_KMEMLEAK_TEST
|
|
tristate "Simple test for the kernel memory leak detector"
|
|
depends on DEBUG_KMEMLEAK && m
|
|
help
|
|
This option enables a module that explicitly leaks memory.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_KMEMLEAK_DEFAULT_OFF
|
|
bool "Default kmemleak to off"
|
|
depends on DEBUG_KMEMLEAK
|
|
help
|
|
Say Y here to disable kmemleak by default. It can then be enabled
|
|
on the command line via kmemleak=on.
|
|
|
|
config DEBUG_STACK_USAGE
|
|
bool "Stack utilization instrumentation"
|
|
depends on DEBUG_KERNEL && !IA64 && !PARISC && !METAG
|
|
help
|
|
Enables the display of the minimum amount of free stack which each
|
|
task has ever had available in the sysrq-T and sysrq-P debug output.
|
|
|
|
This option will slow down process creation somewhat.
|
|
|
|
config DEBUG_VM
|
|
bool "Debug VM"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on extended checks in the virtual-memory system
|
|
that may impact performance.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_VM_VMACACHE
|
|
bool "Debug VMA caching"
|
|
depends on DEBUG_VM
|
|
help
|
|
Enable this to turn on VMA caching debug information. Doing so
|
|
can cause significant overhead, so only enable it in non-production
|
|
environments.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_VM_RB
|
|
bool "Debug VM red-black trees"
|
|
depends on DEBUG_VM
|
|
help
|
|
Enable VM red-black tree debugging information and extra validations.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_VIRTUAL
|
|
bool "Debug VM translations"
|
|
depends on DEBUG_KERNEL && X86
|
|
help
|
|
Enable some costly sanity checks in virtual to page code. This can
|
|
catch mistakes with virt_to_page() and friends.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_NOMMU_REGIONS
|
|
bool "Debug the global anon/private NOMMU mapping region tree"
|
|
depends on DEBUG_KERNEL && !MMU
|
|
help
|
|
This option causes the global tree of anonymous and private mapping
|
|
regions to be regularly checked for invalid topology.
|
|
|
|
config DEBUG_MEMORY_INIT
|
|
bool "Debug memory initialisation" if EXPERT
|
|
default !EXPERT
|
|
help
|
|
Enable this for additional checks during memory initialisation.
|
|
The sanity checks verify aspects of the VM such as the memory model
|
|
and other information provided by the architecture. Verbose
|
|
information will be printed at KERN_DEBUG loglevel depending
|
|
on the mminit_loglevel= command-line option.
|
|
|
|
If unsure, say Y
|
|
|
|
config MEMORY_NOTIFIER_ERROR_INJECT
|
|
tristate "Memory hotplug notifier error injection module"
|
|
depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION
|
|
help
|
|
This option provides the ability to inject artificial errors to
|
|
memory hotplug notifier chain callbacks. It is controlled through
|
|
debugfs interface under /sys/kernel/debug/notifier-error-inject/memory
|
|
|
|
If the notifier call chain should be failed with some events
|
|
notified, write the error code to "actions/<notifier event>/error".
|
|
|
|
Example: Inject memory hotplug offline error (-12 == -ENOMEM)
|
|
|
|
# cd /sys/kernel/debug/notifier-error-inject/memory
|
|
# echo -12 > actions/MEM_GOING_OFFLINE/error
|
|
# echo offline > /sys/devices/system/memory/memoryXXX/state
|
|
bash: echo: write error: Cannot allocate memory
|
|
|
|
To compile this code as a module, choose M here: the module will
|
|
be called memory-notifier-error-inject.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_PER_CPU_MAPS
|
|
bool "Debug access to per_cpu maps"
|
|
depends on DEBUG_KERNEL
|
|
depends on SMP
|
|
help
|
|
Say Y to verify that the per_cpu map being accessed has
|
|
been set up. This adds a fair amount of code to kernel memory
|
|
and decreases performance.
|
|
|
|
Say N if unsure.
|
|
|
|
config DEBUG_HIGHMEM
|
|
bool "Highmem debugging"
|
|
depends on DEBUG_KERNEL && HIGHMEM
|
|
help
|
|
This option enables additional error checking for high memory
|
|
systems. Disable for production systems.
|
|
|
|
config HAVE_DEBUG_STACKOVERFLOW
|
|
bool
|
|
|
|
config DEBUG_STACKOVERFLOW
|
|
bool "Check for stack overflows"
|
|
depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
|
|
---help---
|
|
Say Y here if you want to check for overflows of kernel, IRQ
|
|
and exception stacks (if your architecture uses them). This
|
|
option will show detailed messages if free stack space drops
|
|
below a certain limit.
|
|
|
|
These kinds of bugs usually occur when call-chains in the
|
|
kernel get too deep, especially when interrupts are
|
|
involved.
|
|
|
|
Use this in cases where you see apparently random memory
|
|
corruption, especially if it appears in 'struct thread_info'
|
|
|
|
If in doubt, say "N".
|
|
|
|
source "lib/Kconfig.kmemcheck"
|
|
|
|
source "lib/Kconfig.kasan"
|
|
|
|
endmenu # "Memory Debugging"
|
|
|
|
config ARCH_HAS_KCOV
|
|
bool
|
|
help
|
|
KCOV does not have any arch-specific code, but currently it is enabled
|
|
only for x86_64. KCOV requires testing on other archs, and most likely
|
|
disabling of instrumentation for some early boot code.
|
|
|
|
config KCOV
|
|
bool "Code coverage for fuzzing"
|
|
depends on ARCH_HAS_KCOV
|
|
select DEBUG_FS
|
|
help
|
|
KCOV exposes kernel code coverage information in a form suitable
|
|
for coverage-guided fuzzing (randomized testing).
|
|
|
|
If RANDOMIZE_BASE is enabled, PC values will not be stable across
|
|
different machines and across reboots. If you need stable PC values,
|
|
disable RANDOMIZE_BASE.
|
|
|
|
For more details, see Documentation/kcov.txt.
|
|
|
|
config DEBUG_SHIRQ
|
|
bool "Debug shared IRQ handlers"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to generate a spurious interrupt as soon as a shared
|
|
interrupt handler is registered, and just before one is deregistered.
|
|
Drivers ought to be able to handle interrupts coming in at those
|
|
points; some don't and need to be caught.
|
|
|
|
menu "Debug Lockups and Hangs"
|
|
|
|
config LOCKUP_DETECTOR
|
|
bool "Detect Hard and Soft Lockups"
|
|
depends on DEBUG_KERNEL && !S390
|
|
help
|
|
Say Y here to enable the kernel to act as a watchdog to detect
|
|
hard and soft lockups.
|
|
|
|
Softlockups are bugs that cause the kernel to loop in kernel
|
|
mode for more than 20 seconds, without giving other tasks a
|
|
chance to run. The current stack trace is displayed upon
|
|
detection and the system will stay locked up.
|
|
|
|
Hardlockups are bugs that cause the CPU to loop in kernel mode
|
|
for more than 10 seconds, without letting other interrupts have a
|
|
chance to run. The current stack trace is displayed upon detection
|
|
and the system will stay locked up.
|
|
|
|
The overhead should be minimal. A periodic hrtimer runs to
|
|
generate interrupts and kick the watchdog task every 4 seconds.
|
|
An NMI is generated every 10 seconds or so to check for hardlockups.
|
|
If NMIs are not available on the platform, every 12 seconds the
|
|
hrtimer interrupt on one cpu will be used to check for hardlockups
|
|
on the next cpu.
|
|
|
|
The frequency of hrtimer and NMI events and the soft and hard lockup
|
|
thresholds can be controlled through the sysctl watchdog_thresh.
|
|
|
|
config HARDLOCKUP_DETECTOR_NMI
|
|
def_bool y
|
|
depends on LOCKUP_DETECTOR && !HAVE_NMI_WATCHDOG
|
|
depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI
|
|
|
|
config HARDLOCKUP_DETECTOR_OTHER_CPU
|
|
def_bool y
|
|
depends on LOCKUP_DETECTOR && SMP
|
|
depends on !HARDLOCKUP_DETECTOR_NMI && !HAVE_NMI_WATCHDOG
|
|
|
|
config HARDLOCKUP_DETECTOR
|
|
def_bool y
|
|
depends on HARDLOCKUP_DETECTOR_NMI || HARDLOCKUP_DETECTOR_OTHER_CPU
|
|
|
|
config BOOTPARAM_HARDLOCKUP_PANIC
|
|
bool "Panic (Reboot) On Hard Lockups"
|
|
depends on HARDLOCKUP_DETECTOR
|
|
help
|
|
Say Y here to enable the kernel to panic on "hard lockups",
|
|
which are bugs that cause the kernel to loop in kernel
|
|
mode with interrupts disabled for more than 10 seconds (configurable
|
|
using the watchdog_thresh sysctl).
|
|
|
|
Say N if unsure.
|
|
|
|
config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
|
|
int
|
|
depends on HARDLOCKUP_DETECTOR
|
|
range 0 1
|
|
default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
|
|
default 1 if BOOTPARAM_HARDLOCKUP_PANIC
|
|
|
|
config BOOTPARAM_SOFTLOCKUP_PANIC
|
|
bool "Panic (Reboot) On Soft Lockups"
|
|
depends on LOCKUP_DETECTOR
|
|
help
|
|
Say Y here to enable the kernel to panic on "soft lockups",
|
|
which are bugs that cause the kernel to loop in kernel
|
|
mode for more than 20 seconds (configurable using the watchdog_thresh
|
|
sysctl), without giving other tasks a chance to run.
|
|
|
|
The panic can be used in combination with panic_timeout,
|
|
to cause the system to reboot automatically after a
|
|
lockup has been detected. This feature is useful for
|
|
high-availability systems that have uptime guarantees and
|
|
where a lockup must be resolved ASAP.
|
|
|
|
Say N if unsure.
|
|
|
|
config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
|
|
int
|
|
depends on LOCKUP_DETECTOR
|
|
range 0 1
|
|
default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
|
|
default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
|
|
|
|
config DETECT_HUNG_TASK
|
|
bool "Detect Hung Tasks"
|
|
depends on DEBUG_KERNEL
|
|
default LOCKUP_DETECTOR
|
|
help
|
|
Say Y here to enable the kernel to detect "hung tasks",
|
|
which are bugs that cause the task to be stuck in
|
|
uninterruptible "D" state indefinitiley.
|
|
|
|
When a hung task is detected, the kernel will print the
|
|
current stack trace (which you should report), but the
|
|
task will stay in uninterruptible state. If lockdep is
|
|
enabled then all held locks will also be reported. This
|
|
feature has negligible overhead.
|
|
|
|
config DEFAULT_HUNG_TASK_TIMEOUT
|
|
int "Default timeout for hung task detection (in seconds)"
|
|
depends on DETECT_HUNG_TASK
|
|
default 120
|
|
help
|
|
This option controls the default timeout (in seconds) used
|
|
to determine when a task has become non-responsive and should
|
|
be considered hung.
|
|
|
|
It can be adjusted at runtime via the kernel.hung_task_timeout_secs
|
|
sysctl or by writing a value to
|
|
/proc/sys/kernel/hung_task_timeout_secs.
|
|
|
|
A timeout of 0 disables the check. The default is two minutes.
|
|
Keeping the default should be fine in most cases.
|
|
|
|
config BOOTPARAM_HUNG_TASK_PANIC
|
|
bool "Panic (Reboot) On Hung Tasks"
|
|
depends on DETECT_HUNG_TASK
|
|
help
|
|
Say Y here to enable the kernel to panic on "hung tasks",
|
|
which are bugs that cause the kernel to leave a task stuck
|
|
in uninterruptible "D" state.
|
|
|
|
The panic can be used in combination with panic_timeout,
|
|
to cause the system to reboot automatically after a
|
|
hung task has been detected. This feature is useful for
|
|
high-availability systems that have uptime guarantees and
|
|
where a hung tasks must be resolved ASAP.
|
|
|
|
Say N if unsure.
|
|
|
|
config BOOTPARAM_HUNG_TASK_PANIC_VALUE
|
|
int
|
|
depends on DETECT_HUNG_TASK
|
|
range 0 1
|
|
default 0 if !BOOTPARAM_HUNG_TASK_PANIC
|
|
default 1 if BOOTPARAM_HUNG_TASK_PANIC
|
|
|
|
config WQ_WATCHDOG
|
|
bool "Detect Workqueue Stalls"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Say Y here to enable stall detection on workqueues. If a
|
|
worker pool doesn't make forward progress on a pending work
|
|
item for over a given amount of time, 30s by default, a
|
|
warning message is printed along with dump of workqueue
|
|
state. This can be configured through kernel parameter
|
|
"workqueue.watchdog_thresh" and its sysfs counterpart.
|
|
|
|
endmenu # "Debug lockups and hangs"
|
|
|
|
config PANIC_ON_OOPS
|
|
bool "Panic on Oops"
|
|
help
|
|
Say Y here to enable the kernel to panic when it oopses. This
|
|
has the same effect as setting oops=panic on the kernel command
|
|
line.
|
|
|
|
This feature is useful to ensure that the kernel does not do
|
|
anything erroneous after an oops which could result in data
|
|
corruption or other issues.
|
|
|
|
Say N if unsure.
|
|
|
|
config PANIC_ON_OOPS_VALUE
|
|
int
|
|
range 0 1
|
|
default 0 if !PANIC_ON_OOPS
|
|
default 1 if PANIC_ON_OOPS
|
|
|
|
config PANIC_ON_WARN_DEFAULT_ENABLE
|
|
bool "Panic on warn"
|
|
default n
|
|
help
|
|
Say Y here to enable the kernel to panic when detect warnings. This
|
|
has the same effect as setting panic_on_warn on the kernel command
|
|
line.
|
|
|
|
config PANIC_TIMEOUT
|
|
int "panic timeout"
|
|
default 0
|
|
help
|
|
Set the timeout value (in seconds) until a reboot occurs when the
|
|
the kernel panics. If n = 0, then we wait forever. A timeout
|
|
value n > 0 will wait n seconds before rebooting, while a timeout
|
|
value n < 0 will reboot immediately.
|
|
|
|
config SCHED_DEBUG
|
|
bool "Collect scheduler debugging info"
|
|
depends on DEBUG_KERNEL && PROC_FS
|
|
default y
|
|
help
|
|
If you say Y here, the /proc/sched_debug file will be provided
|
|
that can help debug the scheduler. The runtime overhead of this
|
|
option is minimal.
|
|
|
|
config SCHED_INFO
|
|
bool
|
|
default n
|
|
|
|
config PANIC_ON_RT_THROTTLING
|
|
bool "Panic on RT throttling"
|
|
help
|
|
Say Y here to enable the kernel to panic when a realtime
|
|
runqueue is throttled. This may be useful for detecting
|
|
and debugging RT throttling issues.
|
|
|
|
Say N if unsure.
|
|
|
|
config SCHEDSTATS
|
|
bool "Collect scheduler statistics"
|
|
depends on DEBUG_KERNEL && PROC_FS
|
|
select SCHED_INFO
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
scheduler and related routines to collect statistics about
|
|
scheduler behavior and provide them in /proc/schedstat. These
|
|
stats may be useful for both tuning and debugging the scheduler
|
|
If you aren't debugging the scheduler or trying to tune a specific
|
|
application, you can say N to avoid the very slight overhead
|
|
this adds.
|
|
|
|
config SCHED_STACK_END_CHECK
|
|
bool "Detect stack corruption on calls to schedule()"
|
|
depends on DEBUG_KERNEL
|
|
default n
|
|
help
|
|
This option checks for a stack overrun on calls to schedule().
|
|
If the stack end location is found to be over written always panic as
|
|
the content of the corrupted region can no longer be trusted.
|
|
This is to ensure no erroneous behaviour occurs which could result in
|
|
data corruption or a sporadic crash at a later stage once the region
|
|
is examined. The runtime overhead introduced is minimal.
|
|
|
|
config DEBUG_TIMEKEEPING
|
|
bool "Enable extra timekeeping sanity checking"
|
|
help
|
|
This option will enable additional timekeeping sanity checks
|
|
which may be helpful when diagnosing issues where timekeeping
|
|
problems are suspected.
|
|
|
|
This may include checks in the timekeeping hotpaths, so this
|
|
option may have a (very small) performance impact to some
|
|
workloads.
|
|
|
|
If unsure, say N.
|
|
|
|
config TIMER_STATS
|
|
bool "Collect kernel timers statistics"
|
|
depends on DEBUG_KERNEL && PROC_FS
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
timer routines to collect statistics about kernel timers being
|
|
reprogrammed. The statistics can be read from /proc/timer_stats.
|
|
The statistics collection is started by writing 1 to /proc/timer_stats,
|
|
writing 0 stops it. This feature is useful to collect information
|
|
about timer usage patterns in kernel and userspace. This feature
|
|
is lightweight if enabled in the kernel config but not activated
|
|
(it defaults to deactivated on bootup and will only be activated
|
|
if some application like powertop activates it explicitly).
|
|
|
|
config DEBUG_TASK_STACK_SCAN_OFF
|
|
bool "Disable kmemleak task stack scan by default"
|
|
depends on DEBUG_KMEMLEAK
|
|
help
|
|
Say Y here to disable kmemleak task stack scan by default
|
|
at compile time. It can be enabled later if required by
|
|
writing to the debugfs entry :
|
|
echo "stack=on" > /sys/kernel/debug/kmemleak.
|
|
|
|
config DEBUG_MODULE_SCAN_OFF
|
|
bool "Disable module memory scan for leaks by default"
|
|
depends on DEBUG_KMEMLEAK
|
|
help
|
|
Say Y here to disable scanning kernel modules area list
|
|
by default for memory leaks. Module scan an potentially
|
|
run with irq/preemption disabled for considerable amount
|
|
of time.
|
|
|
|
config DEBUG_PREEMPT
|
|
bool "Debug preemptible kernel"
|
|
depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
|
|
default y
|
|
help
|
|
If you say Y here then the kernel will use a debug variant of the
|
|
commonly used smp_processor_id() function and will print warnings
|
|
if kernel code uses it in a preemption-unsafe way. Also, the kernel
|
|
will detect preemption count underflows.
|
|
|
|
menu "Lock Debugging (spinlocks, mutexes, etc...)"
|
|
|
|
config DEBUG_RT_MUTEXES
|
|
bool "RT Mutex debugging, deadlock detection"
|
|
depends on DEBUG_KERNEL && RT_MUTEXES
|
|
help
|
|
This allows rt mutex semantics violations and rt mutex related
|
|
deadlocks (lockups) to be detected and reported automatically.
|
|
|
|
config DEBUG_SPINLOCK
|
|
bool "Spinlock and rw-lock debugging: basic checks"
|
|
depends on DEBUG_KERNEL
|
|
select UNINLINE_SPIN_UNLOCK
|
|
help
|
|
Say Y here and build SMP to catch missing spinlock initialization
|
|
and certain other kinds of spinlock errors commonly made. This is
|
|
best used in conjunction with the NMI watchdog so that spinlock
|
|
deadlocks are also debuggable.
|
|
|
|
choice
|
|
prompt "Perform Action on spinlock bug"
|
|
depends on DEBUG_SPINLOCK
|
|
|
|
default DEBUG_SPINLOCK_BITE_ON_BUG
|
|
|
|
config DEBUG_SPINLOCK_BITE_ON_BUG
|
|
bool "Cause a Watchdog Bite on Spinlock bug"
|
|
depends on QCOM_WATCHDOG_V2
|
|
help
|
|
On a spinlock bug, cause a watchdog bite so that we can get the precise
|
|
state of the system captured at the time of spin dump. This is mutually
|
|
exclusive with the below DEBUG_SPINLOCK_PANIC_ON_BUG config.
|
|
|
|
config DEBUG_SPINLOCK_PANIC_ON_BUG
|
|
bool "Cause a Kernel Panic on Spinlock bug"
|
|
help
|
|
On a spinlock bug, cause a kernel panic so that we can get the complete
|
|
information about the system at the time of spin dump in the dmesg.
|
|
This is mutually exclusive with the above DEBUG_SPINLOCK_BITE_ON_BUG.
|
|
endchoice
|
|
|
|
config DEBUG_MUTEXES
|
|
bool "Mutex debugging: basic checks"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
This feature allows mutex semantics violations to be detected and
|
|
reported.
|
|
|
|
config DEBUG_WW_MUTEX_SLOWPATH
|
|
bool "Wait/wound mutex debugging: Slowpath testing"
|
|
depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
|
|
select DEBUG_LOCK_ALLOC
|
|
select DEBUG_SPINLOCK
|
|
select DEBUG_MUTEXES
|
|
help
|
|
This feature enables slowpath testing for w/w mutex users by
|
|
injecting additional -EDEADLK wound/backoff cases. Together with
|
|
the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
|
|
will test all possible w/w mutex interface abuse with the
|
|
exception of simply not acquiring all the required locks.
|
|
Note that this feature can introduce significant overhead, so
|
|
it really should not be enabled in a production or distro kernel,
|
|
even a debug kernel. If you are a driver writer, enable it. If
|
|
you are a distro, do not.
|
|
|
|
config DEBUG_LOCK_ALLOC
|
|
bool "Lock debugging: detect incorrect freeing of live locks"
|
|
depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
|
|
select DEBUG_SPINLOCK
|
|
select DEBUG_MUTEXES
|
|
select LOCKDEP
|
|
help
|
|
This feature will check whether any held lock (spinlock, rwlock,
|
|
mutex or rwsem) is incorrectly freed by the kernel, via any of the
|
|
memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
|
|
vfree(), etc.), whether a live lock is incorrectly reinitialized via
|
|
spin_lock_init()/mutex_init()/etc., or whether there is any lock
|
|
held during task exit.
|
|
|
|
config PROVE_LOCKING
|
|
bool "Lock debugging: prove locking correctness"
|
|
depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
|
|
select LOCKDEP
|
|
select DEBUG_SPINLOCK
|
|
select DEBUG_MUTEXES
|
|
select DEBUG_LOCK_ALLOC
|
|
select TRACE_IRQFLAGS
|
|
default n
|
|
help
|
|
This feature enables the kernel to prove that all locking
|
|
that occurs in the kernel runtime is mathematically
|
|
correct: that under no circumstance could an arbitrary (and
|
|
not yet triggered) combination of observed locking
|
|
sequences (on an arbitrary number of CPUs, running an
|
|
arbitrary number of tasks and interrupt contexts) cause a
|
|
deadlock.
|
|
|
|
In short, this feature enables the kernel to report locking
|
|
related deadlocks before they actually occur.
|
|
|
|
The proof does not depend on how hard and complex a
|
|
deadlock scenario would be to trigger: how many
|
|
participant CPUs, tasks and irq-contexts would be needed
|
|
for it to trigger. The proof also does not depend on
|
|
timing: if a race and a resulting deadlock is possible
|
|
theoretically (no matter how unlikely the race scenario
|
|
is), it will be proven so and will immediately be
|
|
reported by the kernel (once the event is observed that
|
|
makes the deadlock theoretically possible).
|
|
|
|
If a deadlock is impossible (i.e. the locking rules, as
|
|
observed by the kernel, are mathematically correct), the
|
|
kernel reports nothing.
|
|
|
|
NOTE: this feature can also be enabled for rwlocks, mutexes
|
|
and rwsems - in which case all dependencies between these
|
|
different locking variants are observed and mapped too, and
|
|
the proof of observed correctness is also maintained for an
|
|
arbitrary combination of these separate locking variants.
|
|
|
|
For more details, see Documentation/locking/lockdep-design.txt.
|
|
|
|
config LOCKDEP
|
|
bool
|
|
depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
|
|
select STACKTRACE
|
|
select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390 && !MICROBLAZE && !ARC && !SCORE
|
|
select KALLSYMS
|
|
select KALLSYMS_ALL
|
|
|
|
config LOCK_STAT
|
|
bool "Lock usage statistics"
|
|
depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
|
|
select LOCKDEP
|
|
select DEBUG_SPINLOCK
|
|
select DEBUG_MUTEXES
|
|
select DEBUG_LOCK_ALLOC
|
|
default n
|
|
help
|
|
This feature enables tracking lock contention points
|
|
|
|
For more details, see Documentation/locking/lockstat.txt
|
|
|
|
This also enables lock events required by "perf lock",
|
|
subcommand of perf.
|
|
If you want to use "perf lock", you also need to turn on
|
|
CONFIG_EVENT_TRACING.
|
|
|
|
CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
|
|
(CONFIG_LOCKDEP defines "acquire" and "release" events.)
|
|
|
|
config DEBUG_LOCKDEP
|
|
bool "Lock dependency engine debugging"
|
|
depends on DEBUG_KERNEL && LOCKDEP
|
|
help
|
|
If you say Y here, the lock dependency engine will do
|
|
additional runtime checks to debug itself, at the price
|
|
of more runtime overhead.
|
|
|
|
config DEBUG_ATOMIC_SLEEP
|
|
bool "Sleep inside atomic section checking"
|
|
select PREEMPT_COUNT
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
If you say Y here, various routines which may sleep will become very
|
|
noisy if they are called inside atomic sections: when a spinlock is
|
|
held, inside an rcu read side critical section, inside preempt disabled
|
|
sections, inside an interrupt, etc...
|
|
|
|
config DEBUG_LOCKING_API_SELFTESTS
|
|
bool "Locking API boot-time self-tests"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Say Y here if you want the kernel to run a short self-test during
|
|
bootup. The self-test checks whether common types of locking bugs
|
|
are detected by debugging mechanisms or not. (if you disable
|
|
lock debugging then those bugs wont be detected of course.)
|
|
The following locking APIs are covered: spinlocks, rwlocks,
|
|
mutexes and rwsems.
|
|
|
|
config LOCK_TORTURE_TEST
|
|
tristate "torture tests for locking"
|
|
depends on DEBUG_KERNEL
|
|
select TORTURE_TEST
|
|
default n
|
|
help
|
|
This option provides a kernel module that runs torture tests
|
|
on kernel locking primitives. The kernel module may be built
|
|
after the fact on the running kernel to be tested, if desired.
|
|
|
|
Say Y here if you want kernel locking-primitive torture tests
|
|
to be built into the kernel.
|
|
Say M if you want these torture tests to build as a module.
|
|
Say N if you are unsure.
|
|
|
|
endmenu # lock debugging
|
|
|
|
config TRACE_IRQFLAGS
|
|
bool
|
|
help
|
|
Enables hooks to interrupt enabling and disabling for
|
|
either tracing or lock debugging.
|
|
|
|
config STACKTRACE
|
|
bool "Stack backtrace support"
|
|
depends on STACKTRACE_SUPPORT
|
|
help
|
|
This option causes the kernel to create a /proc/pid/stack for
|
|
every process, showing its current stack trace.
|
|
It is also used by various kernel debugging features that require
|
|
stack trace generation.
|
|
|
|
config DEBUG_KOBJECT
|
|
bool "kobject debugging"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
If you say Y here, some extra kobject debugging messages will be sent
|
|
to the syslog.
|
|
|
|
config DEBUG_KOBJECT_RELEASE
|
|
bool "kobject release debugging"
|
|
depends on DEBUG_OBJECTS_TIMERS
|
|
help
|
|
kobjects are reference counted objects. This means that their
|
|
last reference count put is not predictable, and the kobject can
|
|
live on past the point at which a driver decides to drop it's
|
|
initial reference to the kobject gained on allocation. An
|
|
example of this would be a struct device which has just been
|
|
unregistered.
|
|
|
|
However, some buggy drivers assume that after such an operation,
|
|
the memory backing the kobject can be immediately freed. This
|
|
goes completely against the principles of a refcounted object.
|
|
|
|
If you say Y here, the kernel will delay the release of kobjects
|
|
on the last reference count to improve the visibility of this
|
|
kind of kobject release bug.
|
|
|
|
config HAVE_DEBUG_BUGVERBOSE
|
|
bool
|
|
|
|
config DEBUG_BUGVERBOSE
|
|
bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
|
|
depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
|
|
default y
|
|
help
|
|
Say Y here to make BUG() panics output the file name and line number
|
|
of the BUG call as well as the EIP and oops trace. This aids
|
|
debugging but costs about 70-100K of memory.
|
|
|
|
config DEBUG_LIST
|
|
bool "Debug linked list manipulation"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on extended checks in the linked-list
|
|
walking routines.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_PI_LIST
|
|
bool "Debug priority linked list manipulation"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on extended checks in the priority-ordered
|
|
linked-list (plist) walking routines. This checks the entire
|
|
list multiple times during each manipulation.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_SG
|
|
bool "Debug SG table operations"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on checks on scatter-gather tables. This can
|
|
help find problems with drivers that do not properly initialize
|
|
their sg tables.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_NOTIFIERS
|
|
bool "Debug notifier call chains"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on sanity checking for notifier call chains.
|
|
This is most useful for kernel developers to make sure that
|
|
modules properly unregister themselves from notifier chains.
|
|
This is a relatively cheap check but if you care about maximum
|
|
performance, say N.
|
|
|
|
config DEBUG_CREDENTIALS
|
|
bool "Debug credential management"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on some debug checking for credential
|
|
management. The additional code keeps track of the number of
|
|
pointers from task_structs to any given cred struct, and checks to
|
|
see that this number never exceeds the usage count of the cred
|
|
struct.
|
|
|
|
Furthermore, if SELinux is enabled, this also checks that the
|
|
security pointer in the cred struct is never seen to be invalid.
|
|
|
|
If unsure, say N.
|
|
|
|
menu "RCU Debugging"
|
|
|
|
config PROVE_RCU
|
|
def_bool PROVE_LOCKING
|
|
|
|
config PROVE_RCU_REPEATEDLY
|
|
bool "RCU debugging: don't disable PROVE_RCU on first splat"
|
|
depends on PROVE_RCU
|
|
default n
|
|
help
|
|
By itself, PROVE_RCU will disable checking upon issuing the
|
|
first warning (or "splat"). This feature prevents such
|
|
disabling, allowing multiple RCU-lockdep warnings to be printed
|
|
on a single reboot.
|
|
|
|
Say Y to allow multiple RCU-lockdep warnings per boot.
|
|
|
|
Say N if you are unsure.
|
|
|
|
config SPARSE_RCU_POINTER
|
|
bool "RCU debugging: sparse-based checks for pointer usage"
|
|
default n
|
|
help
|
|
This feature enables the __rcu sparse annotation for
|
|
RCU-protected pointers. This annotation will cause sparse
|
|
to flag any non-RCU used of annotated pointers. This can be
|
|
helpful when debugging RCU usage. Please note that this feature
|
|
is not intended to enforce code cleanliness; it is instead merely
|
|
a debugging aid.
|
|
|
|
Say Y to make sparse flag questionable use of RCU-protected pointers
|
|
|
|
Say N if you are unsure.
|
|
|
|
config TORTURE_TEST
|
|
tristate
|
|
default n
|
|
|
|
config RCU_TORTURE_TEST
|
|
tristate "torture tests for RCU"
|
|
depends on DEBUG_KERNEL
|
|
select TORTURE_TEST
|
|
select SRCU
|
|
select TASKS_RCU
|
|
default n
|
|
help
|
|
This option provides a kernel module that runs torture tests
|
|
on the RCU infrastructure. The kernel module may be built
|
|
after the fact on the running kernel to be tested, if desired.
|
|
|
|
Say Y here if you want RCU torture tests to be built into
|
|
the kernel.
|
|
Say M if you want the RCU torture tests to build as a module.
|
|
Say N if you are unsure.
|
|
|
|
config RCU_TORTURE_TEST_RUNNABLE
|
|
bool "torture tests for RCU runnable by default"
|
|
depends on RCU_TORTURE_TEST = y
|
|
default n
|
|
help
|
|
This option provides a way to build the RCU torture tests
|
|
directly into the kernel without them starting up at boot
|
|
time. You can use /proc/sys/kernel/rcutorture_runnable
|
|
to manually override this setting. This /proc file is
|
|
available only when the RCU torture tests have been built
|
|
into the kernel.
|
|
|
|
Say Y here if you want the RCU torture tests to start during
|
|
boot (you probably don't).
|
|
Say N here if you want the RCU torture tests to start only
|
|
after being manually enabled via /proc.
|
|
|
|
config RCU_TORTURE_TEST_SLOW_PREINIT
|
|
bool "Slow down RCU grace-period pre-initialization to expose races"
|
|
depends on RCU_TORTURE_TEST
|
|
help
|
|
This option delays grace-period pre-initialization (the
|
|
propagation of CPU-hotplug changes up the rcu_node combining
|
|
tree) for a few jiffies between initializing each pair of
|
|
consecutive rcu_node structures. This helps to expose races
|
|
involving grace-period pre-initialization, in other words, it
|
|
makes your kernel less stable. It can also greatly increase
|
|
grace-period latency, especially on systems with large numbers
|
|
of CPUs. This is useful when torture-testing RCU, but in
|
|
almost no other circumstance.
|
|
|
|
Say Y here if you want your system to crash and hang more often.
|
|
Say N if you want a sane system.
|
|
|
|
config RCU_TORTURE_TEST_SLOW_PREINIT_DELAY
|
|
int "How much to slow down RCU grace-period pre-initialization"
|
|
range 0 5
|
|
default 3
|
|
depends on RCU_TORTURE_TEST_SLOW_PREINIT
|
|
help
|
|
This option specifies the number of jiffies to wait between
|
|
each rcu_node structure pre-initialization step.
|
|
|
|
config RCU_TORTURE_TEST_SLOW_INIT
|
|
bool "Slow down RCU grace-period initialization to expose races"
|
|
depends on RCU_TORTURE_TEST
|
|
help
|
|
This option delays grace-period initialization for a few
|
|
jiffies between initializing each pair of consecutive
|
|
rcu_node structures. This helps to expose races involving
|
|
grace-period initialization, in other words, it makes your
|
|
kernel less stable. It can also greatly increase grace-period
|
|
latency, especially on systems with large numbers of CPUs.
|
|
This is useful when torture-testing RCU, but in almost no
|
|
other circumstance.
|
|
|
|
Say Y here if you want your system to crash and hang more often.
|
|
Say N if you want a sane system.
|
|
|
|
config RCU_TORTURE_TEST_SLOW_INIT_DELAY
|
|
int "How much to slow down RCU grace-period initialization"
|
|
range 0 5
|
|
default 3
|
|
depends on RCU_TORTURE_TEST_SLOW_INIT
|
|
help
|
|
This option specifies the number of jiffies to wait between
|
|
each rcu_node structure initialization.
|
|
|
|
config RCU_TORTURE_TEST_SLOW_CLEANUP
|
|
bool "Slow down RCU grace-period cleanup to expose races"
|
|
depends on RCU_TORTURE_TEST
|
|
help
|
|
This option delays grace-period cleanup for a few jiffies
|
|
between cleaning up each pair of consecutive rcu_node
|
|
structures. This helps to expose races involving grace-period
|
|
cleanup, in other words, it makes your kernel less stable.
|
|
It can also greatly increase grace-period latency, especially
|
|
on systems with large numbers of CPUs. This is useful when
|
|
torture-testing RCU, but in almost no other circumstance.
|
|
|
|
Say Y here if you want your system to crash and hang more often.
|
|
Say N if you want a sane system.
|
|
|
|
config RCU_TORTURE_TEST_SLOW_CLEANUP_DELAY
|
|
int "How much to slow down RCU grace-period cleanup"
|
|
range 0 5
|
|
default 3
|
|
depends on RCU_TORTURE_TEST_SLOW_CLEANUP
|
|
help
|
|
This option specifies the number of jiffies to wait between
|
|
each rcu_node structure cleanup operation.
|
|
|
|
config RCU_CPU_STALL_TIMEOUT
|
|
int "RCU CPU stall timeout in seconds"
|
|
depends on RCU_STALL_COMMON
|
|
range 3 300
|
|
default 21
|
|
help
|
|
If a given RCU grace period extends more than the specified
|
|
number of seconds, a CPU stall warning is printed. If the
|
|
RCU grace period persists, additional CPU stall warnings are
|
|
printed at more widely spaced intervals.
|
|
|
|
config RCU_STALL_WATCHDOG_BITE
|
|
bool "RCU stall induce watchdog bite"
|
|
depends on RCU_STALL_COMMON && QCOM_WATCHDOG_V2
|
|
help
|
|
Induce watchdog bite if RCU grace period extends more than
|
|
specified no of seconds instead of just warning messages.
|
|
This helps to collect ram dumps and cpu context for
|
|
postmortem analysis. Generally if a given RCU grace period
|
|
extends more than the specified number of seconds,
|
|
a CPU stall warning is printed.
|
|
|
|
config RCU_TRACE
|
|
bool "Enable tracing for RCU"
|
|
depends on DEBUG_KERNEL
|
|
select TRACE_CLOCK
|
|
help
|
|
This option provides tracing in RCU which presents stats
|
|
in debugfs for debugging RCU implementation.
|
|
|
|
Say Y here if you want to enable RCU tracing
|
|
Say N if you are unsure.
|
|
|
|
config RCU_EQS_DEBUG
|
|
bool "Provide debugging asserts for adding NO_HZ support to an arch"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
This option provides consistency checks in RCU's handling of
|
|
NO_HZ. These checks have proven quite helpful in detecting
|
|
bugs in arch-specific NO_HZ code.
|
|
|
|
Say N here if you need ultimate kernel/user switch latencies
|
|
Say Y if you are unsure
|
|
|
|
endmenu # "RCU Debugging"
|
|
|
|
config DEBUG_BLOCK_EXT_DEVT
|
|
bool "Force extended block device numbers and spread them"
|
|
depends on DEBUG_KERNEL
|
|
depends on BLOCK
|
|
default n
|
|
help
|
|
BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
|
|
SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
|
|
YOU ARE DOING. Distros, please enable this and fix whatever
|
|
is broken.
|
|
|
|
Conventionally, block device numbers are allocated from
|
|
predetermined contiguous area. However, extended block area
|
|
may introduce non-contiguous block device numbers. This
|
|
option forces most block device numbers to be allocated from
|
|
the extended space and spreads them to discover kernel or
|
|
userland code paths which assume predetermined contiguous
|
|
device number allocation.
|
|
|
|
Note that turning on this debug option shuffles all the
|
|
device numbers for all IDE and SCSI devices including libata
|
|
ones, so root partition specified using device number
|
|
directly (via rdev or root=MAJ:MIN) won't work anymore.
|
|
Textual device names (root=/dev/sdXn) will continue to work.
|
|
|
|
Say N if you are unsure.
|
|
|
|
config NOTIFIER_ERROR_INJECTION
|
|
tristate "Notifier error injection"
|
|
depends on DEBUG_KERNEL
|
|
select DEBUG_FS
|
|
help
|
|
This option provides the ability to inject artificial errors to
|
|
specified notifier chain callbacks. It is useful to test the error
|
|
handling of notifier call chain failures.
|
|
|
|
Say N if unsure.
|
|
|
|
config CPU_NOTIFIER_ERROR_INJECT
|
|
tristate "CPU notifier error injection module"
|
|
depends on HOTPLUG_CPU && NOTIFIER_ERROR_INJECTION
|
|
help
|
|
This option provides a kernel module that can be used to test
|
|
the error handling of the cpu notifiers by injecting artificial
|
|
errors to CPU notifier chain callbacks. It is controlled through
|
|
debugfs interface under /sys/kernel/debug/notifier-error-inject/cpu
|
|
|
|
If the notifier call chain should be failed with some events
|
|
notified, write the error code to "actions/<notifier event>/error".
|
|
|
|
Example: Inject CPU offline error (-1 == -EPERM)
|
|
|
|
# cd /sys/kernel/debug/notifier-error-inject/cpu
|
|
# echo -1 > actions/CPU_DOWN_PREPARE/error
|
|
# echo 0 > /sys/devices/system/cpu/cpu1/online
|
|
bash: echo: write error: Operation not permitted
|
|
|
|
To compile this code as a module, choose M here: the module will
|
|
be called cpu-notifier-error-inject.
|
|
|
|
If unsure, say N.
|
|
|
|
config PM_NOTIFIER_ERROR_INJECT
|
|
tristate "PM notifier error injection module"
|
|
depends on PM && NOTIFIER_ERROR_INJECTION
|
|
default m if PM_DEBUG
|
|
help
|
|
This option provides the ability to inject artificial errors to
|
|
PM notifier chain callbacks. It is controlled through debugfs
|
|
interface /sys/kernel/debug/notifier-error-inject/pm
|
|
|
|
If the notifier call chain should be failed with some events
|
|
notified, write the error code to "actions/<notifier event>/error".
|
|
|
|
Example: Inject PM suspend error (-12 = -ENOMEM)
|
|
|
|
# cd /sys/kernel/debug/notifier-error-inject/pm/
|
|
# echo -12 > actions/PM_SUSPEND_PREPARE/error
|
|
# echo mem > /sys/power/state
|
|
bash: echo: write error: Cannot allocate memory
|
|
|
|
To compile this code as a module, choose M here: the module will
|
|
be called pm-notifier-error-inject.
|
|
|
|
If unsure, say N.
|
|
|
|
config OF_RECONFIG_NOTIFIER_ERROR_INJECT
|
|
tristate "OF reconfig notifier error injection module"
|
|
depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
|
|
help
|
|
This option provides the ability to inject artificial errors to
|
|
OF reconfig notifier chain callbacks. It is controlled
|
|
through debugfs interface under
|
|
/sys/kernel/debug/notifier-error-inject/OF-reconfig/
|
|
|
|
If the notifier call chain should be failed with some events
|
|
notified, write the error code to "actions/<notifier event>/error".
|
|
|
|
To compile this code as a module, choose M here: the module will
|
|
be called of-reconfig-notifier-error-inject.
|
|
|
|
If unsure, say N.
|
|
|
|
config FAULT_INJECTION
|
|
bool "Fault-injection framework"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Provide fault-injection framework.
|
|
For more details, see Documentation/fault-injection/.
|
|
|
|
config FAILSLAB
|
|
bool "Fault-injection capability for kmalloc"
|
|
depends on FAULT_INJECTION
|
|
depends on SLAB || SLUB
|
|
help
|
|
Provide fault-injection capability for kmalloc.
|
|
|
|
config FAIL_PAGE_ALLOC
|
|
bool "Fault-injection capabilitiy for alloc_pages()"
|
|
depends on FAULT_INJECTION
|
|
help
|
|
Provide fault-injection capability for alloc_pages().
|
|
|
|
config FAIL_MAKE_REQUEST
|
|
bool "Fault-injection capability for disk IO"
|
|
depends on FAULT_INJECTION && BLOCK
|
|
help
|
|
Provide fault-injection capability for disk IO.
|
|
|
|
config FAIL_IO_TIMEOUT
|
|
bool "Fault-injection capability for faking disk interrupts"
|
|
depends on FAULT_INJECTION && BLOCK
|
|
help
|
|
Provide fault-injection capability on end IO handling. This
|
|
will make the block layer "forget" an interrupt as configured,
|
|
thus exercising the error handling.
|
|
|
|
Only works with drivers that use the generic timeout handling,
|
|
for others it wont do anything.
|
|
|
|
config FAIL_MMC_REQUEST
|
|
bool "Fault-injection capability for MMC IO"
|
|
select DEBUG_FS
|
|
depends on FAULT_INJECTION && MMC
|
|
help
|
|
Provide fault-injection capability for MMC IO.
|
|
This will make the mmc core return data errors. This is
|
|
useful to test the error handling in the mmc block device
|
|
and to test how the mmc host driver handles retries from
|
|
the block device.
|
|
|
|
config UFS_FAULT_INJECTION
|
|
bool "Fault-injection capability for UFS IO"
|
|
select DEBUG_FS
|
|
depends on FAULT_INJECTION && SCSI_UFSHCD
|
|
help
|
|
Provide fault-injection capability for UFS IO.
|
|
This will make the UFS host controller driver to randomly
|
|
abort ongoing commands in the host controller, update OCS
|
|
field according to the injected fatal error and can also
|
|
forcefully hang the command indefinitely till upper layer
|
|
timeout occurs. This is useful to test error handling in
|
|
the UFS contoller driver and test how the driver handles
|
|
the retries from block/SCSI mid layer.
|
|
|
|
config FAIL_FUTEX
|
|
bool "Fault-injection capability for futexes"
|
|
select DEBUG_FS
|
|
depends on FAULT_INJECTION && FUTEX
|
|
help
|
|
Provide fault-injection capability for futexes.
|
|
|
|
config FAULT_INJECTION_DEBUG_FS
|
|
bool "Debugfs entries for fault-injection capabilities"
|
|
depends on FAULT_INJECTION && SYSFS && DEBUG_FS
|
|
help
|
|
Enable configuration of fault-injection capabilities via debugfs.
|
|
|
|
config FAULT_INJECTION_STACKTRACE_FILTER
|
|
bool "stacktrace filter for fault-injection capabilities"
|
|
depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
|
|
depends on !X86_64
|
|
select STACKTRACE
|
|
select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !SCORE
|
|
help
|
|
Provide stacktrace filter for fault-injection capabilities
|
|
|
|
config LATENCYTOP
|
|
bool "Latency measuring infrastructure"
|
|
depends on HAVE_LATENCYTOP_SUPPORT
|
|
depends on DEBUG_KERNEL
|
|
depends on STACKTRACE_SUPPORT
|
|
depends on PROC_FS
|
|
select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC
|
|
select KALLSYMS
|
|
select KALLSYMS_ALL
|
|
select STACKTRACE
|
|
select SCHEDSTATS
|
|
select SCHED_DEBUG
|
|
help
|
|
Enable this option if you want to use the LatencyTOP tool
|
|
to find out which userspace is blocking on what kernel operations.
|
|
|
|
config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
|
|
bool
|
|
|
|
config DEBUG_STRICT_USER_COPY_CHECKS
|
|
bool "Strict user copy size checks"
|
|
depends on ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
|
|
depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING
|
|
help
|
|
Enabling this option turns a certain set of sanity checks for user
|
|
copy operations into compile time failures.
|
|
|
|
The copy_from_user() etc checks are there to help test if there
|
|
are sufficient security checks on the length argument of
|
|
the copy operation, by having gcc prove that the argument is
|
|
within bounds.
|
|
|
|
If unsure, say N.
|
|
|
|
source kernel/trace/Kconfig
|
|
|
|
menu "Runtime Testing"
|
|
|
|
config LKDTM
|
|
tristate "Linux Kernel Dump Test Tool Module"
|
|
depends on DEBUG_FS
|
|
depends on BLOCK
|
|
default n
|
|
help
|
|
This module enables testing of the different dumping mechanisms by
|
|
inducing system failures at predefined crash points.
|
|
If you don't need it: say N
|
|
Choose M here to compile this code as a module. The module will be
|
|
called lkdtm.
|
|
|
|
Documentation on how to use the module can be found in
|
|
Documentation/fault-injection/provoke-crashes.txt
|
|
|
|
config TEST_LIST_SORT
|
|
bool "Linked list sorting test"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on 'list_sort()' function test. This test is
|
|
executed only once during system boot, so affects only boot time.
|
|
|
|
If unsure, say N.
|
|
|
|
config KPROBES_SANITY_TEST
|
|
bool "Kprobes sanity tests"
|
|
depends on DEBUG_KERNEL
|
|
depends on KPROBES
|
|
default n
|
|
help
|
|
This option provides for testing basic kprobes functionality on
|
|
boot. A sample kprobe, jprobe and kretprobe are inserted and
|
|
verified for functionality.
|
|
|
|
Say N if you are unsure.
|
|
|
|
config BACKTRACE_SELF_TEST
|
|
tristate "Self test for the backtrace code"
|
|
depends on DEBUG_KERNEL
|
|
default n
|
|
help
|
|
This option provides a kernel module that can be used to test
|
|
the kernel stack backtrace code. This option is not useful
|
|
for distributions or general kernels, but only for kernel
|
|
developers working on architecture code.
|
|
|
|
Note that if you want to also test saved backtraces, you will
|
|
have to enable STACKTRACE as well.
|
|
|
|
Say N if you are unsure.
|
|
|
|
config RBTREE_TEST
|
|
tristate "Red-Black tree test"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
A benchmark measuring the performance of the rbtree library.
|
|
Also includes rbtree invariant checks.
|
|
|
|
config INTERVAL_TREE_TEST
|
|
tristate "Interval tree test"
|
|
depends on m && DEBUG_KERNEL
|
|
select INTERVAL_TREE
|
|
help
|
|
A benchmark measuring the performance of the interval tree library
|
|
|
|
config PERCPU_TEST
|
|
tristate "Per cpu operations test"
|
|
depends on m && DEBUG_KERNEL
|
|
help
|
|
Enable this option to build test module which validates per-cpu
|
|
operations.
|
|
|
|
If unsure, say N.
|
|
|
|
config ATOMIC64_SELFTEST
|
|
bool "Perform an atomic64_t self-test at boot"
|
|
help
|
|
Enable this option to test the atomic64_t functions at boot.
|
|
|
|
If unsure, say N.
|
|
|
|
config ASYNC_RAID6_TEST
|
|
tristate "Self test for hardware accelerated raid6 recovery"
|
|
depends on ASYNC_RAID6_RECOV
|
|
select ASYNC_MEMCPY
|
|
---help---
|
|
This is a one-shot self test that permutes through the
|
|
recovery of all the possible two disk failure scenarios for a
|
|
N-disk array. Recovery is performed with the asynchronous
|
|
raid6 recovery routines, and will optionally use an offload
|
|
engine if one is available.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_HEXDUMP
|
|
tristate "Test functions located in the hexdump module at runtime"
|
|
|
|
config TEST_STRING_HELPERS
|
|
tristate "Test functions located in the string_helpers module at runtime"
|
|
|
|
config TEST_KSTRTOX
|
|
tristate "Test kstrto*() family of functions at runtime"
|
|
|
|
config TEST_PRINTF
|
|
tristate "Test printf() family of functions at runtime"
|
|
|
|
config TEST_RHASHTABLE
|
|
tristate "Perform selftest on resizable hash table"
|
|
default n
|
|
help
|
|
Enable this option to test the rhashtable functions at boot.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_HASH
|
|
tristate "Perform selftest on hash functions"
|
|
default n
|
|
help
|
|
Enable this option to test the kernel's siphash (<linux/siphash.h>)
|
|
hash functions on boot (or module load).
|
|
|
|
This is intended to help people writing architecture-specific
|
|
optimized versions. If unsure, say N.
|
|
|
|
endmenu # runtime tests
|
|
|
|
config PROVIDE_OHCI1394_DMA_INIT
|
|
bool "Remote debugging over FireWire early on boot"
|
|
depends on PCI && X86
|
|
help
|
|
If you want to debug problems which hang or crash the kernel early
|
|
on boot and the crashing machine has a FireWire port, you can use
|
|
this feature to remotely access the memory of the crashed machine
|
|
over FireWire. This employs remote DMA as part of the OHCI1394
|
|
specification which is now the standard for FireWire controllers.
|
|
|
|
With remote DMA, you can monitor the printk buffer remotely using
|
|
firescope and access all memory below 4GB using fireproxy from gdb.
|
|
Even controlling a kernel debugger is possible using remote DMA.
|
|
|
|
Usage:
|
|
|
|
If ohci1394_dma=early is used as boot parameter, it will initialize
|
|
all OHCI1394 controllers which are found in the PCI config space.
|
|
|
|
As all changes to the FireWire bus such as enabling and disabling
|
|
devices cause a bus reset and thereby disable remote DMA for all
|
|
devices, be sure to have the cable plugged and FireWire enabled on
|
|
the debugging host before booting the debug target for debugging.
|
|
|
|
This code (~1k) is freed after boot. By then, the firewire stack
|
|
in charge of the OHCI-1394 controllers should be used instead.
|
|
|
|
See Documentation/debugging-via-ohci1394.txt for more information.
|
|
|
|
config BUILD_DOCSRC
|
|
bool "Build targets in Documentation/ tree"
|
|
depends on HEADERS_CHECK
|
|
help
|
|
This option attempts to build objects from the source files in the
|
|
kernel Documentation/ tree.
|
|
|
|
Say N if you are unsure.
|
|
|
|
config DMA_API_DEBUG
|
|
bool "Enable debugging of DMA-API usage"
|
|
depends on HAVE_DMA_API_DEBUG
|
|
help
|
|
Enable this option to debug the use of the DMA API by device drivers.
|
|
With this option you will be able to detect common bugs in device
|
|
drivers like double-freeing of DMA mappings or freeing mappings that
|
|
were never allocated.
|
|
|
|
This also attempts to catch cases where a page owned by DMA is
|
|
accessed by the cpu in a way that could cause data corruption. For
|
|
example, this enables cow_user_page() to check that the source page is
|
|
not undergoing DMA.
|
|
|
|
This option causes a performance degradation. Use only if you want to
|
|
debug device drivers and dma interactions.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_LKM
|
|
tristate "Test module loading with 'hello world' module"
|
|
default n
|
|
depends on m
|
|
help
|
|
This builds the "test_module" module that emits "Hello, world"
|
|
on printk when loaded. It is designed to be used for basic
|
|
evaluation of the module loading subsystem (for example when
|
|
validating module verification). It lacks any extra dependencies,
|
|
and will not normally be loaded by the system unless explicitly
|
|
requested by name.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_USER_COPY
|
|
tristate "Test user/kernel boundary protections"
|
|
default n
|
|
depends on m
|
|
help
|
|
This builds the "test_user_copy" module that runs sanity checks
|
|
on the copy_to/from_user infrastructure, making sure basic
|
|
user/kernel boundary testing is working. If it fails to load,
|
|
a regression has been detected in the user/kernel memory boundary
|
|
protections.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_BPF
|
|
tristate "Test BPF filter functionality"
|
|
default n
|
|
depends on m && NET
|
|
help
|
|
This builds the "test_bpf" module that runs various test vectors
|
|
against the BPF interpreter or BPF JIT compiler depending on the
|
|
current setting. This is in particular useful for BPF JIT compiler
|
|
development, but also to run regression tests against changes in
|
|
the interpreter code. It also enables test stubs for eBPF maps and
|
|
verifier used by user space verifier testsuite.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_FIRMWARE
|
|
tristate "Test firmware loading via userspace interface"
|
|
default n
|
|
depends on FW_LOADER
|
|
help
|
|
This builds the "test_firmware" module that creates a userspace
|
|
interface for testing firmware loading. This can be used to
|
|
control the triggering of firmware loading without needing an
|
|
actual firmware-using device. The contents can be rechecked by
|
|
userspace.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_UDELAY
|
|
tristate "udelay test driver"
|
|
default n
|
|
help
|
|
This builds the "udelay_test" module that helps to make sure
|
|
that udelay() is working properly.
|
|
|
|
If unsure, say N.
|
|
|
|
config MEMTEST
|
|
bool "Memtest"
|
|
depends on HAVE_MEMBLOCK
|
|
---help---
|
|
This option adds a kernel parameter 'memtest', which allows memtest
|
|
to be set.
|
|
memtest=0, mean disabled; -- default
|
|
memtest=1, mean do 1 test pattern;
|
|
...
|
|
memtest=17, mean do 17 test patterns.
|
|
If you are unsure how to answer this question, answer N.
|
|
|
|
config MEMTEST_ENABLE_DEFAULT
|
|
int "Enable Memtest pattern test by default? (0-17)"
|
|
range 0 17
|
|
default "0"
|
|
depends on MEMTEST
|
|
help
|
|
This option helps to select Memtest to be enabled through
|
|
kernel defconfig options. Alternatively it can be enabled
|
|
using memtest=<patterns> kernel command line.
|
|
|
|
Default value is kept as "0" so that it is kept as disabled.
|
|
To enable enter any value between 1-17 range.
|
|
|
|
config TEST_STATIC_KEYS
|
|
tristate "Test static keys"
|
|
default n
|
|
depends on m
|
|
help
|
|
Test the static key interfaces.
|
|
|
|
If unsure, say N.
|
|
|
|
config PANIC_ON_DATA_CORRUPTION
|
|
bool "Cause a Kernel Panic When Data Corruption is detected"
|
|
help
|
|
Select this option to upgrade warnings for potentially
|
|
recoverable data corruption scenarios to system-halting panics,
|
|
for easier detection and debug.
|
|
|
|
config BUG_ON_DATA_CORRUPTION
|
|
bool "Trigger a BUG when data corruption is detected"
|
|
select CONFIG_DEBUG_LIST
|
|
help
|
|
Select this option if the kernel should BUG when it encounters
|
|
data corruption in kernel memory structures when they get checked
|
|
for validity.
|
|
|
|
If unsure, say N.
|
|
|
|
config CC_WERROR
|
|
bool "Treat all compile warnings as errors"
|
|
default n
|
|
help
|
|
Select this option to set compiler warnings as errors,
|
|
to prevent easily-fixable problems from creeping into
|
|
the codebase.
|
|
|
|
If unsure, say N.
|
|
|
|
source "samples/Kconfig"
|
|
|
|
source "lib/Kconfig.kgdb"
|
|
|
|
source "lib/Kconfig.ubsan"
|
|
|