***** WHATS-IN-DILEKS-LINUX-KERNEL.txt *****

##### LOCALMODCONFIG-ED "SMALL" LINUX-KERNEL OPTIONS FROM DILEKS

INFO: BASE KERNEL-CONFIG: From Ubuntu-kernel v3.x


##### HARDWARE (here: Samsung Ultrabook NP530U3B-A01DE)

### HARDWARE MMC/SD/SDIO

CONFIG_MMC=y       <--- common
CONFIG_MMC_BLOCK=m <--- card drivers
CONFIG_MMC_SDHCI=m <--- host controller drivers


### HARDWARE USB

CONFIG_BT_HCIBTUSB=m     <--- bluetooth support
CONFIG_USB_HID=m         <--- mouse and keyboard support
CONFIG_USB_PRINTER=m     <--- printer support
CONFIG_USB_STORAGE=m     <--- mass-storage support
CONFIG_USB_VIDEO_CLASS=m <--- video-camera support

### HARDWARE USB/NET/WWAN: HUAWEI E173 3G/UMTS/HSPA INTERNET STICK (requires ppp options)

CONFIG_USB_USBNET=m        <--- usb networking
CONFIG_USB_NET_CDCETHER=m  <--- usb-wwan (net) configuration
CONFIG_USB_SERIAL_WWAN=m   <--- usb-wwan (serial) configuration
CONFIG_USB_SERIAL_OPTION=m <--- usb-serial driver called "option"


##### NETWORKING

### NETWORKING (bufferbloat with codel)

CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_CODEL=m
CONFIG_NET_SCH_FQ_CODEL=m

### NETWORKING (ppp options)

CONFIG_PPP=y
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_FILTER=y
CONFIG_PPP_MPPE=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m


##### FILESYSTEMS

### FILESYSTEMS (builtin: ext4 | fat | vfat)

CONFIG_EXT4_FS=y
CONFIG_EXT4_ENCRYPTION=y <--- Linux >= v4.2

CONFIG_FAT_FS=y

CONFIG_VFAT_FS=y

### FILESYSTEMS (as-modules: btrfs (EXPERIMENTAL) | ntfs | overlayfs | squashfs | xfs)

CONFIG_BTRFS_FS=m
CONFIG_BTRFS_FS_POSIX_ACL=y

CONFIG_NTFS_FS=m

CONFIG_OVERLAYFS_FS=m

CONFIG_SQUASHFS=m

CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_XFS_RT=y

### FILESYSTEMS (charset encoding)

CONFIG_FAT_DEFAULT_CODEPAGE=437          <--- codepage layout (MS-DOS)
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" <--- character set "latin-1"

CONFIG_NLS_ISO8859_1=m                   <--- UTF-8 (NTFS)

### FILESYSTEMS (CD-ROM/DVD)

CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_UDF_FS=m
CONFIG_UDF_NLS=y


##### INIT (cpu/task time and stats accounting)

CONFIG_TICK_CPU_ACCOUNTING=y     <--- Simple tick based cputime accounting (DEFAULT: Debian kernels)

CONFIG_VIRT_CPU_ACCOUNTING_GEN=y <--- Full dynticks cputime accounting (DEFAULT: Ubuntu and dileks kernels)
CONFIG_VIRT_CPU_ACCOUNTING=y
CONFIG_CONTEXT_TRACKING=y        <--- PREREQ for full dynticks cputime accounting
CONFIG_CONTEXT_TRACKING_FORCE=n  <--- CAUTION: See Ubuntu-kernel BUG LP #1349028 ("not for production systems")


##### KVM

CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_DEBUG_FS=y


##### DEBUG-OPTIONS

CONFIG_DEBUG_BUGVERBOSE=y       <--- common

CONFIG_SLUB=y                   <--- SLUB (DEFAULT: Ubuntu kernels)
CONFIG_SLUB_DEBUG=y             <--- SLUG debug

CONFIG_SLAB=y                   <--- SLAB (DEFAULT: Debian and dileks kernels)
CONFIG_DEBUG_SLAB=y             <--- SLAB debug

CONFIG_DEBUG_OBJECTS_RCU_HEAD=y <--- RCU
CONFIG_DEBUG_OBJECTS=y          <--- PREREQ for RCU

CONFIG_DEBUG_SPINLOCK=y         <--- spinlock

CONFIG_DEBUG_MUTEXES=y          <--- mutexes

CONFIG_DEBUG_LOCKDEP=y               <--- lockdep
CONFIG_PROVE_LOCKING=y		     <--- Useful in combination with lockdep debugging
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y <--- Useful in combination with locking/lockdep debugging

CONFIG_PM_DEBUG=y               <--- power-mamagement

CONFIG_EXT4_DEBUG=y             <--- Ext4-FS
CONFIG_JBD2_DEBUG=y             <--- JBD2 (journaling) depends on Ext4-FS

CONFIG_USB_DEBUG=y              <--- USB
CONFIG_USB_MON=m                <--- usbmon (see Documentation/usb/usbmon.txt)

CONFIG_TRACING=y                <--- TraceFS filesystem (Linux >= v4.1)

CONFIG_TRACE_IRQFLAGS=y         <--- Enables hooks to interrupt enabling and disabling for either tracing or lock debugging
CONFIG_IRQSOFF_TRACER=y         <--- Interrupts-off Latency Tracer (depends on CONFIG_TRACE_IRQFLAGS_SUPPORT)

CONFIG_PCIEASPM_DEBUG=y         <--- PCI Express ASPM debug


##### LLVMLINUX (CLANG)

CONFIG_PARAVIRT=n		<--- XXX: DANGEROUS (-> Steven Rostedt)
CONFIG_FTRACE=n			<--- Bogus X86 asm code (see PaX email)


##### TOOLS

CONFIG_X86_MSR=m		<--- PREREQ for turbostat (see tools/power/x86/turbostat)


-dileks // 17-OCT-2016: Add vendor, model and revision to hardware section (here: Samsung Ultrabook NP530U3B-A01DE)
-dileks // 30-MAR-2016: Add a new section tools with CONFIG_X86_MSR=m (turbostat), added CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
-dileks // 07-MAR-2016: Add CONFIG_FTRACE=n creates bogus X86 asm code when using llvmlinux/clang
-dileks // 29-FEB-2016: Add CONFIG_PCIEASPM_DEBUG=y, collect all tracing options at one single place
-dileks // 26-DEC-2015: Fix some typos
-dileks // 12-OCT-2015: Add CONFIG_PROVE_LOCKING=y (useful in combination with lockdep debugging)
-dileks // 04-OCT-2015: Add a new llvmlinux section 
-dileks // 27-SEP-2015: Add TraceFS filesystem and options to trace IRQ-flags, add important notes about context-tracking
-dileks // 06-SEP-2015: Add KVM options (QEMU), add CONFIG_PPP_MPPE=m and CONFIG_PPP_SYNC_TTY=m to ppp options
-dileks // 11-JUN-2015: Add Ext4-Encryption, refresh FILESYSTEMS and DEBUG-OPTIONS sections and cleanups
-dileks // 16-NOV-2014: Add options to run a Huawei E173 USB 3G Internet stick with ppp options
-dileks // 17-SEP-2013: Rename document, mention base kernel-config and some minor cleanup
-dileks // 24-APR-2013: Add USB debugging and usbmon (kernel-module)
-dileks // 20-APR-2013: More options and reorder items
-dileks // 26-JAN-2013: Initial version
