2007-05-16 01:25:25

by Clemens Schwaighofer

[permalink] [raw]
Subject: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21.1
# Mon May 14 16:26:13 2007
#
CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32

#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y

#
# Block layer
#
CONFIG_BLOCK=y
CONFIG_LBD=y
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"

#
# Processor type and features
#
# CONFIG_TICK_ONESHOT is not set
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
# CONFIG_SMP is not set
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_PARAVIRT is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MCORE2 is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
CONFIG_MK8=y
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_X86_GENERIC is not set
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=y
# CONFIG_X86_MCE_P4THERMAL is not set
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set
CONFIG_MICROCODE=m
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m

#
# Firmware Drivers
#
# CONFIG_EDD is not set
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPARSEMEM_STATIC=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
# CONFIG_HIGHPTE is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_KEXEC is not set
CONFIG_CRASH_DUMP=y
CONFIG_PHYSICAL_START=0x1000000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x100000
# CONFIG_COMPAT_VDSO is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
CONFIG_PM_LEGACY=y
# CONFIG_PM_DEBUG is not set
# CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_SOFTWARE_SUSPEND=y
CONFIG_PM_STD_PARTITION="/dev/md2"

#
# ACPI (Advanced Configuration and Power Interface) Support
#
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
CONFIG_ACPI_SLEEP_PROC_SLEEP=y
CONFIG_ACPI_PROCFS=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_IBM is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set
# CONFIG_ACPI_SBS is not set

#
# APM (Advanced Power Management) BIOS Support
#
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
# CONFIG_PCIEPORTBUS is not set
# CONFIG_PCI_MSI is not set
# CONFIG_PCI_DEBUG is not set
CONFIG_HT_IRQ=y
CONFIG_ISA_DMA_API=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
CONFIG_K8_NB=y

#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set

#
# PCI Hotplug Support
#
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_MISC=y

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_NETDEBUG=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_TUNNEL=m
CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set

#
# IP: Virtual Server Configuration
#
# CONFIG_IP_VS is not set
CONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
# CONFIG_IPV6_ROUTER_PREF is not set
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
# CONFIG_IPV6_MIP6 is not set
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
CONFIG_INET6_XFRM_MODE_TUNNEL=m
CONFIG_INET6_XFRM_MODE_BEET=y
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
CONFIG_IPV6_SIT=y
# CONFIG_IPV6_TUNNEL is not set
# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK_ENABLED=m
CONFIG_NF_CONNTRACK_SUPPORT=y
# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
CONFIG_NF_CONNTRACK=m
# CONFIG_NF_CT_ACCT is not set
# CONFIG_NF_CONNTRACK_MARK is not set
# CONFIG_NF_CONNTRACK_EVENTS is not set
# CONFIG_NF_CT_PROTO_SCTP is not set
# CONFIG_NF_CONNTRACK_AMANDA is not set
# CONFIG_NF_CONNTRACK_FTP is not set
# CONFIG_NF_CONNTRACK_H323 is not set
# CONFIG_NF_CONNTRACK_IRC is not set
# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
# CONFIG_NF_CONNTRACK_PPTP is not set
# CONFIG_NF_CONNTRACK_SANE is not set
# CONFIG_NF_CONNTRACK_SIP is not set
# CONFIG_NF_CONNTRACK_TFTP is not set
# CONFIG_NF_CT_NETLINK is not set
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
CONFIG_NETFILTER_XT_TARGET_DSCP=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
# CONFIG_NETFILTER_XT_MATCH_STATE is not set
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set

#
# IP: Netfilter Configuration
#
# CONFIG_NF_CONNTRACK_IPV4 is not set
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m

#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_NF_CONNTRACK_IPV6 is not set
CONFIG_IP6_NF_QUEUE=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_OWNER=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_AH=m
# CONFIG_IP6_NF_MATCH_MH is not set
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_LOG=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_RAW=m

#
# DCCP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_DCCP is not set

#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set

#
# TIPC Configuration (EXPERIMENTAL)
#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
CONFIG_LLC=m
# CONFIG_LLC2 is not set
CONFIG_IPX=m
CONFIG_IPX_INTERN=y
CONFIG_ATALK=m
CONFIG_DEV_APPLETALK=m
CONFIG_IPDDP=m
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP_DECAP=y
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set

#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_FIFO=y
CONFIG_NET_SCH_CLK_JIFFIES=y
# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
# CONFIG_NET_SCH_CLK_CPU is not set

#
# Queueing/Scheduling
#
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=m

#
# Classification
#
CONFIG_NET_CLS=y
CONFIG_NET_CLS_BASIC=m
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_CLS_U32_MARK=y
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_EMATCH_NBYTE=m
CONFIG_NET_EMATCH_U32=m
CONFIG_NET_EMATCH_META=m
CONFIG_NET_EMATCH_TEXT=m
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=m
CONFIG_NET_ACT_GACT=m
CONFIG_GACT_PROB=y
CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_IPT=m
CONFIG_NET_ACT_PEDIT=m
CONFIG_NET_ACT_SIMP=m
CONFIG_NET_CLS_IND=y
CONFIG_NET_ESTIMATOR=y

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_IEEE80211 is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set

#
# Connector - unified userspace <-> kernelspace linker
#
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y

#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set

#
# Parallel port support
#
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
# CONFIG_PARPORT_SERIAL is not set
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_GSC is not set
CONFIG_PARPORT_AX88796=m
# CONFIG_PARPORT_1284 is not set
CONFIG_PARPORT_NOT_PC=y

#
# Plug and Play support
#
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set

#
# Protocols
#
CONFIG_PNPACPI=y

#
# Block devices
#
CONFIG_BLK_DEV_FD=y
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
# CONFIG_ATA_OVER_ETH is not set

#
# Misc devices
#
# CONFIG_IBM_ASM is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_SONY_LAPTOP is not set

#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_BLK_DEV_IDEACPI is not set
# CONFIG_IDE_TASK_IOCTL is not set

#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_IDEPNP is not set
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
# CONFIG_IDEDMA_ONLYDISK is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_IT8213 is not set
# CONFIG_BLK_DEV_IT821X is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
CONFIG_BLK_DEV_VIA82CXXX=y
# CONFIG_BLK_DEV_TC86C001 is not set
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
CONFIG_RAID_ATTRS=y
CONFIG_SCSI=y
CONFIG_SCSI_TGT=m
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not set

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set

#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set

#
# SCSI low-level drivers
#
# CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC94XX is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_ARCMSR is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_IMM is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SRP is not set

#
# Serial ATA (prod) and Parallel ATA (experimental) drivers
#
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
# CONFIG_SATA_AHCI is not set
# CONFIG_SATA_SVW is not set
# CONFIG_ATA_PIIX is not set
# CONFIG_SATA_MV is not set
# CONFIG_SATA_NV is not set
# CONFIG_PDC_ADMA is not set
# CONFIG_SATA_QSTOR is not set
# CONFIG_SATA_PROMISE is not set
# CONFIG_SATA_SX4 is not set
# CONFIG_SATA_SIL is not set
# CONFIG_SATA_SIL24 is not set
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_ULI is not set
CONFIG_SATA_VIA=y
# CONFIG_SATA_VITESSE is not set
# CONFIG_SATA_INIC162X is not set
CONFIG_SATA_ACPI=y
# CONFIG_PATA_ALI is not set
# CONFIG_PATA_AMD is not set
# CONFIG_PATA_ARTOP is not set
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_CMD64X is not set
# CONFIG_PATA_CS5520 is not set
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CS5535 is not set
# CONFIG_PATA_CYPRESS is not set
# CONFIG_PATA_EFAR is not set
# CONFIG_ATA_GENERIC is not set
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_MARVELL is not set
# CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set
# CONFIG_PATA_SERVERWORKS is not set
# CONFIG_PATA_PDC2027X is not set
# CONFIG_PATA_SIL680 is not set
# CONFIG_PATA_SIS is not set
# CONFIG_PATA_VIA is not set
# CONFIG_PATA_WINBOND is not set

#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set
CONFIG_MD_RAID1=y
# CONFIG_MD_RAID10 is not set
# CONFIG_MD_RAID456 is not set
# CONFIG_MD_MULTIPATH is not set
CONFIG_MD_FAULTY=m
# CONFIG_BLK_DEV_DM is not set

#
# Fusion MPT device support
#
# CONFIG_FUSION is not set
# CONFIG_FUSION_SPI is not set
# CONFIG_FUSION_FC is not set
# CONFIG_FUSION_SAS is not set

#
# IEEE 1394 (FireWire) support
#
CONFIG_IEEE1394=y

#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
CONFIG_IEEE1394_CONFIG_ROM_IP1394=y

#
# Device Drivers
#
# CONFIG_IEEE1394_PCILYNX is not set
CONFIG_IEEE1394_OHCI1394=y

#
# Protocol Drivers
#
# CONFIG_IEEE1394_VIDEO1394 is not set
CONFIG_IEEE1394_SBP2=m
CONFIG_IEEE1394_SBP2_PHYS_DMA=y
CONFIG_IEEE1394_ETH1394=m
# CONFIG_IEEE1394_DV1394 is not set
CONFIG_IEEE1394_RAWIO=y

#
# I2O device support
#
# CONFIG_I2O is not set

#
# Macintosh device drivers
#
# CONFIG_MAC_EMUMOUSEBTN is not set

#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_IFB=m
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_NET_SB1000 is not set

#
# ARCnet devices
#
# CONFIG_ARCNET is not set

#
# PHY device support
#
# CONFIG_PHYLIB is not set

#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set

#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_DGRS is not set
# CONFIG_EEPRO100 is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_SC92031 is not set
# CONFIG_NET_POCKET is not set

#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
# CONFIG_SK98LIN is not set
CONFIG_VIA_VELOCITY=y
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set

#
# Ethernet (10000 Mbit)
#
# CONFIG_CHELSIO_T1 is not set
# CONFIG_CHELSIO_T3 is not set
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
# CONFIG_MYRI10GE is not set
# CONFIG_NETXEN_NIC is not set

#
# Token Ring devices
#
# CONFIG_TR is not set

#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set

#
# Wan interfaces
#
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set

#
# ISDN subsystem
#
# CONFIG_ISDN is not set

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_WISTRON_BTNS is not set
# CONFIG_INPUT_ATLAS_BTNS is not set
CONFIG_INPUT_UINPUT=m

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
# CONFIG_SERIAL_8250_CONSOLE is not set
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
CONFIG_PRINTER=y
CONFIG_LP_CONSOLE=y
# CONFIG_PPDEV is not set
# CONFIG_TIPAR is not set

#
# IPMI
#
CONFIG_IPMI_HANDLER=m
CONFIG_IPMI_PANIC_EVENT=y
CONFIG_IPMI_PANIC_STRING=y
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
CONFIG_IPMI_WATCHDOG=m
CONFIG_IPMI_POWEROFF=m

#
# Watchdog Cards
#
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_NOWAYOUT=y

#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=m
# CONFIG_ACQUIRE_WDT is not set
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_ALIM1535_WDT is not set
# CONFIG_ALIM7101_WDT is not set
# CONFIG_SC520_WDT is not set
# CONFIG_EUROTECH_WDT is not set
# CONFIG_IB700_WDT is not set
# CONFIG_IBMASR is not set
# CONFIG_WAFER_WDT is not set
# CONFIG_I6300ESB_WDT is not set
# CONFIG_I8XX_TCO is not set
# CONFIG_ITCO_WDT is not set
# CONFIG_SC1200_WDT is not set
# CONFIG_PC87413_WDT is not set
# CONFIG_60XX_WDT is not set
# CONFIG_SBC8360_WDT is not set
# CONFIG_CPU5_WDT is not set
# CONFIG_SMSC37B787_WDT is not set
# CONFIG_W83627HF_WDT is not set
# CONFIG_W83697HF_WDT is not set
# CONFIG_W83877F_WDT is not set
# CONFIG_W83977F_WDT is not set
# CONFIG_MACHZ_WDT is not set
# CONFIG_SBC_EPX_C3_WATCHDOG is not set

#
# PCI-based Watchdog Cards
#
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set

#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_INTEL=m
CONFIG_HW_RANDOM_AMD=y
CONFIG_HW_RANDOM_GEODE=y
CONFIG_HW_RANDOM_VIA=y
# CONFIG_NVRAM is not set
CONFIG_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
CONFIG_AGP=y
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not set
CONFIG_AGP_AMD64=y
# CONFIG_AGP_INTEL is not set
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
# CONFIG_AGP_EFFICEON is not set
CONFIG_DRM=y
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
# CONFIG_DRM_RADEON is not set
CONFIG_DRM_MGA=y
# CONFIG_DRM_SIS is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not set
CONFIG_HPET=y
# CONFIG_HPET_RTC_IRQ is not set
CONFIG_HPET_MMAP=y
# CONFIG_HANGCHECK_TIMER is not set

#
# TPM devices
#
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set

#
# I2C support
#
CONFIG_I2C=m
CONFIG_I2C_CHARDEV=m

#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_ALGOPCF=m
CONFIG_I2C_ALGOPCA=m

#
# I2C Hardware Bus support
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
# CONFIG_I2C_AMD8111 is not set
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set
CONFIG_I2C_ISA=m
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_SAVAGE4 is not set
# CONFIG_SCx200_ACB is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_VIA is not set
CONFIG_I2C_VIAPRO=m
# CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set

#
# Miscellaneous I2C Chip support
#
CONFIG_SENSORS_DS1337=m
CONFIG_SENSORS_DS1374=m
CONFIG_SENSORS_EEPROM=m
CONFIG_SENSORS_PCF8574=m
CONFIG_SENSORS_PCA9539=m
CONFIG_SENSORS_PCF8591=m
CONFIG_SENSORS_MAX6875=m
CONFIG_I2C_DEBUG_CORE=y
CONFIG_I2C_DEBUG_ALGO=y
CONFIG_I2C_DEBUG_BUS=y
CONFIG_I2C_DEBUG_CHIP=y

#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set

#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set

#
# Hardware Monitoring support
#
CONFIG_HWMON=m
CONFIG_HWMON_VID=m
CONFIG_SENSORS_ABITUGURU=m
CONFIG_SENSORS_ADM1021=m
CONFIG_SENSORS_ADM1025=m
CONFIG_SENSORS_ADM1026=m
# CONFIG_SENSORS_ADM1029 is not set
CONFIG_SENSORS_ADM1031=m
CONFIG_SENSORS_ADM9240=m
CONFIG_SENSORS_K8TEMP=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS1621=m
# CONFIG_SENSORS_F71805F is not set
CONFIG_SENSORS_FSCHER=m
CONFIG_SENSORS_FSCPOS=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_GL520SM=m
CONFIG_SENSORS_IT87=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM75=m
CONFIG_SENSORS_LM77=m
CONFIG_SENSORS_LM78=m
CONFIG_SENSORS_LM80=m
CONFIG_SENSORS_LM83=m
CONFIG_SENSORS_LM85=m
CONFIG_SENSORS_LM87=m
CONFIG_SENSORS_LM90=m
CONFIG_SENSORS_LM92=m
CONFIG_SENSORS_MAX1619=m
CONFIG_SENSORS_PC87360=m
# CONFIG_SENSORS_PC87427 is not set
CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47M1=m
# CONFIG_SENSORS_SMSC47M192 is not set
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_VIA686A=m
CONFIG_SENSORS_VT1211=m
# CONFIG_SENSORS_VT8231 is not set
CONFIG_SENSORS_W83781D=m
# CONFIG_SENSORS_W83791D is not set
# CONFIG_SENSORS_W83792D is not set
# CONFIG_SENSORS_W83793 is not set
CONFIG_SENSORS_W83L785TS=m
CONFIG_SENSORS_W83627HF=m
CONFIG_SENSORS_W83627EHF=m
# CONFIG_SENSORS_HDAPS is not set
CONFIG_HWMON_DEBUG_CHIP=y

#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set

#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
# CONFIG_USB_DABUSB is not set

#
# Graphics support
#
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
# CONFIG_FB is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
# CONFIG_VIDEO_SELECT is not set
CONFIG_DUMMY_CONSOLE=y

#
# Sound
#
CONFIG_SOUND=y

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_SND_RAWMIDI=y
CONFIG_SND_SEQUENCER=y
# CONFIG_SND_SEQ_DUMMY is not set
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_SND_RTCTIMER is not set
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
CONFIG_SND_MPU401_UART=y
CONFIG_SND_AC97_CODEC=y
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_VIRMIDI is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_MTS64 is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set
# CONFIG_SND_PORTMAN2X4 is not set

#
# PCI devices
#
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
# CONFIG_SND_HDA_INTEL is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
CONFIG_SND_VIA82XX=y
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_AC97_POWER_SAVE is not set

#
# USB devices
#
# CONFIG_SND_USB_AUDIO is not set
# CONFIG_SND_USB_USX2Y is not set

#
# SoC audio support
#
# CONFIG_SND_SOC is not set

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
CONFIG_AC97_BUS=y

#
# HID Devices
#
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set

#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_OTG is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_SPLIT_ISO is not set
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_SL811_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
CONFIG_USB_PRINTER=y

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#

#
# may also be needed; see USB_STORAGE Help for more information
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set

#
# USB Input Devices
#
CONFIG_USB_HID=y
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_ACECAD is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_TOUCHSCREEN is not set
# CONFIG_USB_YEALINK is not set
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set
# CONFIG_USB_ATI_REMOTE2 is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set
# CONFIG_USB_GTCO is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_MON is not set

#
# USB port drivers
#
# CONFIG_USB_USS720 is not set

#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_BERRY_CHARGE is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGET is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set

#
# USB DSL modem support
#

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set

#
# MMC/SD Card support
#
# CONFIG_MMC is not set

#
# LED devices
#
# CONFIG_NEW_LEDS is not set

#
# LED drivers
#

#
# LED Triggers
#

#
# InfiniBand support
#
# CONFIG_INFINIBAND is not set

#
# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
#
# CONFIG_EDAC is not set

#
# Real Time Clock
#
CONFIG_RTC_LIB=m
CONFIG_RTC_CLASS=m

#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=m
CONFIG_RTC_INTF_PROC=m
CONFIG_RTC_INTF_DEV=m
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set

#
# RTC drivers
#
# CONFIG_RTC_DRV_CMOS is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_M48T86 is not set
CONFIG_RTC_DRV_TEST=m
# CONFIG_RTC_DRV_V3020 is not set

#
# DMA Engine support
#
# CONFIG_DMA_ENGINE is not set

#
# DMA Clients
#

#
# DMA Devices
#

#
# Auxiliary Display support
#
# CONFIG_KS0108 is not set

#
# Virtualization
#
# CONFIG_KVM is not set

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
CONFIG_REISERFS_CHECK=y
CONFIG_REISERFS_PROC_INFO=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
# CONFIG_REISERFS_FS_SECURITY is not set
CONFIG_JFS_FS=m
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
CONFIG_JFS_STATISTICS=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
CONFIG_XFS_SECURITY=y
CONFIG_XFS_POSIX_ACL=y
# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_QUOTA=y
# CONFIG_QFMT_V1 is not set
CONFIG_QFMT_V2=y
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=y
CONFIG_GENERIC_ACL=y

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_UDF_FS=y
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_VMCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
CONFIG_CONFIGFS_FS=y

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
CONFIG_HFS_FS=m
CONFIG_HFSPLUS_FS=m
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=y
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
CONFIG_RPCSEC_GSS_SPKM3=m
CONFIG_SMB_FS=y
# CONFIG_SMB_NLS_DEFAULT is not set
CONFIG_CIFS=y
CONFIG_CIFS_STATS=y
CONFIG_CIFS_STATS2=y
# CONFIG_CIFS_WEAK_PW_HASH is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_EXPERIMENTAL=y
CONFIG_CIFS_UPCALL=y
CONFIG_NCP_FS=m
CONFIG_NCPFS_PACKET_SIGNING=y
CONFIG_NCPFS_IOCTL_LOCKING=y
CONFIG_NCPFS_STRONG=y
CONFIG_NCPFS_NFS_NS=y
CONFIG_NCPFS_OS2_NS=y
CONFIG_NCPFS_SMALLDOS=y
CONFIG_NCPFS_NLS=y
CONFIG_NCPFS_EXTRAS=y
CONFIG_CODA_FS=m
CONFIG_CODA_FS_OLD_API=y
CONFIG_AFS_FS=m
CONFIG_RXRPC=m
# CONFIG_9P_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y

#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="UTF8"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_CODEPAGE_852=m
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
CONFIG_NLS_CODEPAGE_936=m
CONFIG_NLS_CODEPAGE_950=m
CONFIG_NLS_CODEPAGE_932=m
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
CONFIG_NLS_ISO8859_15=m
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=y

#
# Distributed Lock Manager
#
# CONFIG_DLM is not set

#
# Instrumentation Support
#
CONFIG_PROFILING=y
CONFIG_OPROFILE=y
# CONFIG_KPROBES is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_UNUSED_SYMBOLS=y
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=14
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_FRAME_POINTER is not set
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_FAULT_INJECTION is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set

#
# Page alloc debug is incompatible with Software Suspend on i386
#
# CONFIG_DEBUG_RODATA is not set
CONFIG_4KSTACKS=y
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
CONFIG_DOUBLEFAULT=y

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set

#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_XCBC=m
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
CONFIG_CRYPTO_TWOFISH_586=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_AES_586=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_TEST=m

#
# Hardware crypto devices
#
# CONFIG_CRYPTO_DEV_PADLOCK is not set
# CONFIG_CRYPTO_DEV_GEODE is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=y
CONFIG_CRC16=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_AUDIT_GENERIC=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_KTIME_SCALAR=y


Attachments:
linux-2.6.19.2-config (42.98 kB)
linux-2.6.20.6-config (43.76 kB)
linux-2.6.21.1-config (44.90 kB)
signature.asc (252.00 B)
OpenPGP digital signature
Download all attachments

2007-05-16 01:53:13

by Clemens Schwaighofer

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

[ 5955.558356] BUG: unable to handle kernel paging request at virtual address 182b10f7
[ 5955.558362] printing eip:
[ 5955.558363] 182b10f7
[ 5955.558365] *pde = 00000000
[ 5955.558367] Oops: 0000 [#1]
[ 5955.558369] PREEMPT
[ 5955.558370] Modules linked in: eeprom i2c_viapro i2c_core pcspkr k8temp hwmon eth1394
[ 5955.558377] CPU: 0
[ 5955.558378] EIP: 0060:[<182b10f7>] Not tainted VLI
[ 5955.558379] EFLAGS: 00010202 (2.6.21.1 #1)
[ 5955.558382] EIP is at 0x182b10f7
[ 5955.558385] eax: 80c7dcc1 ebx: f786bc00 ecx: 182b10f7 edx: 00000002
[ 5955.558388] esi: f7836200 edi: c2669f6c ebp: f780c88f esp: c2669f34
[ 5955.558390] ds: 007b es: 007b fs: 00d8 gs: 0000 ss: 0068
[ 5955.558393] Process pdflush (pid: 192, ti=c2669000 task=c268da90 task.ti=c2669000)
[ 5955.558395] Stack: c108a454 f7836284 00158443 0000024a f7836200 f783623c c2669f6c c147774c
[ 5955.558401] c108aa8b c2669fb8 00158925 0000bc01 c1053030 c1052c44 00000000 00000000
[ 5955.558406] c2669f94 000001b6 0000024a 00000000 00000000 00000000 00000000 00000025
[ 5955.558411] Call Trace:
[ 5955.558413] [<c108a454>] sync_sb_inodes+0x74/0x280
[ 5955.558419] [<c108aa8b>] writeback_inodes+0xab/0x110
[ 5955.558423] [<c1053030>] pdflush+0x0/0x220
[ 5955.558426] [<c1052c44>] wb_kupdate+0x74/0xe0
[ 5955.558430] [<c1053144>] pdflush+0x114/0x220
[ 5955.558433] [<c1052bd0>] wb_kupdate+0x0/0xe0
[ 5955.558436] [<c102fdd8>] kthread+0xa8/0xe0
[ 5955.558439] [<c102fd30>] kthread+0x0/0xe0
[ 5955.558442] [<c1004bff>] kernel_thread_helper+0x7/0x18
[ 5955.558446] =======================
[ 5955.558447] Code: Bad EIP value.
[ 5955.558449] EIP: [<182b10f7>] 0x182b10f7 SS:ESP 0068:c2669f34
[ 5955.558455] note: pdflush[192] exited with preempt_count 1


Attachments:
ooops.20070516-01 (1.72 kB)
signature.asc (252.00 B)
OpenPGP digital signature
Download all attachments

2007-05-16 01:58:33

by Andrew Morton

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

On Wed, 16 May 2007 09:24:54 +0900 Clemens Schwaighofer <[email protected]> wrote:

> I have re-occurring oopses and panics in those above kernels. The error
> is always the same. I have the last Kernel Panic as a picture here:
>
> http://dev.tequila.jp/clemens/R0010172.JPG
>
> The oops have the same error style like this Panic. I tried to capture
> one, but right after copying it into vim, I got a Panic. So next time I
> try to.
>
> I think it started with 2.6.19.2, I cannot remember I had any of those
> problems before. The box can work fine for about a week or more, or it
> looks up several times a day. I run a memtest for 10 h, but I had no errors.

shrink_dcache_memory->...sysfs_d_iput->BUG

BUG_ON(sd->s_dentry != dentry);

a number of people have hit that, on and off.

We were close to having a fix, I think, but then we decided that great
chunks of sysfs needed rewriting and I believe that we believe that this
great rewrite will fix this bug.

But alas, it's all too late for 2.6.22.

How frequently do you see these failures? If it's repeatable with any reliability
then it'd be great if you could test a patchset for us. It's at:

http://userweb.kernel.org/~akpm/cs.gz

that's a single patch against 2.6.21-rc1, containing the following patches, which
are from the forthcoming 2.6.21-rc1-mm1 lineup:

origin
gregkh-driver-uio
gregkh-driver-uio-documentation
gregkh-driver-uio-hilscher-cif-card-driver
gregkh-driver-idr-fix-obscure-bug-in-allocation-path
gregkh-driver-idr-separate-out-idr_mark_full
gregkh-driver-ida-implement-idr-based-id-allocator
gregkh-driver-sysfs-move-release_sysfs_dirent-to-dirc
gregkh-driver-sysfs-allocate-inode-number-using-ida
gregkh-driver-sysfs-make-sysfs_put-ignore-null-sd
gregkh-driver-sysfs-fix-error-handling-in-binattr-write
gregkh-driver-sysfs-flatten-cleanup-paths-in-sysfs_add_link-and-create_dir
gregkh-driver-sysfs-flatten-and-fix-sysfs_rename_dir-error-handling
gregkh-driver-sysfs-consolidate-sysfs_dirent-creation-functions
gregkh-driver-sysfs-add-sysfs_dirent-s_parent
gregkh-driver-sysfs-add-sysfs_dirent-s_name
gregkh-driver-sysfs-make-sysfs_dirent-s_element-a-union
gregkh-driver-sysfs-implement-kobj_sysfs_assoc_lock
gregkh-driver-sysfs-reimplement-symlink-using-sysfs_dirent-tree
gregkh-driver-sysfs-implement-bin_buffer
gregkh-driver-sysfs-implement-sysfs_dirent-active-reference-and-immediate-disconnect
gregkh-driver-sysfs-kill-attribute-file-orphaning
gregkh-driver-sysfs-separate-out-sysfs_attach_dentry
gregkh-driver-sysfs-reimplement-syfs_drop_dentry
gregkh-driver-sysfs-kill-unnecessary-attribute-owner
gregkh-driver-driver-core-make-devt_attr-and-uevent_attr-static
gregkh-driver-put_device-might_sleep
gregkh-driver-kobject-warn
gregkh-driver-warn-when-statically-allocated-kobjects-are-used
gregkh-driver-nozomi
fix-gregkh-driver-sysfs-fix-error-handling-in-binattr-write

Thanks.

2007-05-16 02:02:41

by Clemens Schwaighofer

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

On 05/16/2007 10:53 AM, Andrew Morton wrote:
>
>> I think it started with 2.6.19.2, I cannot remember I had any of those
>> problems before. The box can work fine for about a week or more, or it
>> looks up several times a day. I run a memtest for 10 h, but I had no errors.
>
> shrink_dcache_memory->...sysfs_d_iput->BUG
>
> BUG_ON(sd->s_dentry != dentry);
>
> a number of people have hit that, on and off.
>
> We were close to having a fix, I think, but then we decided that great
> chunks of sysfs needed rewriting and I believe that we believe that this
> great rewrite will fix this bug.
>
> But alas, it's all too late for 2.6.22.

Well, there is always hope for 2.6.23 :)

> How frequently do you see these failures? If it's repeatable with any reliability
> then it'd be great if you could test a patchset for us. It's at:
>
> http://userweb.kernel.org/~akpm/cs.gz
>
> that's a single patch against 2.6.21-rc1, containing the following patches, which
> are from the forthcoming 2.6.21-rc1-mm1 lineup:

I get this very frequently recently. I just got hit by another PANIC
which was probably the same issue. I will get this patch and try it out
and see if it helps for me.

--
[ Clemens Schwaighofer -----=====:::::~ ]
[ TEQUILA\ Japan IT Group ]
[ 6-17-2 Ginza Chuo-ku, Tokyo 104-8167, JAPAN ]
[ Tel: +81-(0)3-3545-7703 Fax: +81-(0)3-3545-7343 ]
[ http://www.tequila.co.jp ]


Attachments:
signature.asc (252.00 B)
OpenPGP digital signature

2007-05-16 02:46:17

by Clemens Schwaighofer

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

On 05/16/2007 10:53 AM, Andrew Morton wrote:

> How frequently do you see these failures? If it's repeatable with any reliability
> then it'd be great if you could test a patchset for us. It's at:
>
> http://userweb.kernel.org/~akpm/cs.gz
>
> that's a single patch against 2.6.21-rc1, containing the following patches, which
> are from the forthcoming 2.6.21-rc1-mm1 lineup:

(and those above are 2.6.22-rc1 of course)

well, I tried to apply those patches and when I compile I get this error:

CC net/ipv6/exthdrs.o
net/ipv6/exthdrs.c: In function ‘ipv6_rthdr_rcv’:
net/ipv6/exthdrs.c:390: error: ‘struct sk_buff’ has no member named ‘h’
net/ipv6/exthdrs.c:391: error: ‘struct sk_buff’ has no member named ‘h’
net/ipv6/exthdrs.c:391: error: ‘struct sk_buff’ has no member named ‘h’
net/ipv6/exthdrs.c:398: error: ‘struct sk_buff’ has no member named ‘h’
make[2]: *** [net/ipv6/exthdrs.o] Error 1
make[1]: *** [net/ipv6] Error 2
make: *** [net] Error 2

It's probably totally unrelated but sadly a showstopper for testing the
new sysfs patches,

--
[ Clemens Schwaighofer -----=====:::::~ ]
[ TEQUILA\ Japan IT Group ]
[ 6-17-2 Ginza Chuo-ku, Tokyo 104-8167, JAPAN ]
[ Tel: +81-(0)3-3545-7703 Fax: +81-(0)3-3545-7343 ]
[ http://www.tequila.co.jp ]


Attachments:
signature.asc (252.00 B)
OpenPGP digital signature

2007-05-16 03:23:23

by Andrew Morton

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

On Wed, 16 May 2007 11:46:00 +0900 Clemens Schwaighofer <[email protected]> wrote:

> On 05/16/2007 10:53 AM, Andrew Morton wrote:
>
> > How frequently do you see these failures? If it's repeatable with any reliability
> > then it'd be great if you could test a patchset for us. It's at:
> >
> > http://userweb.kernel.org/~akpm/cs.gz
> >
> > that's a single patch against 2.6.21-rc1, containing the following patches, which
> > are from the forthcoming 2.6.21-rc1-mm1 lineup:
>
> (and those above are 2.6.22-rc1 of course)
>
> well, I tried to apply those patches and when I compile I get this error:
>
> CC net/ipv6/exthdrs.o
> net/ipv6/exthdrs.c: In function ‘ipv6_rthdr_rcv’:
> net/ipv6/exthdrs.c:390: error: ‘struct sk_buff’ has no member named ‘h’
> net/ipv6/exthdrs.c:391: error: ‘struct sk_buff’ has no member named ‘h’
> net/ipv6/exthdrs.c:391: error: ‘struct sk_buff’ has no member named ‘h’
> net/ipv6/exthdrs.c:398: error: ‘struct sk_buff’ has no member named ‘h’
> make[2]: *** [net/ipv6/exthdrs.o] Error 1
> make[1]: *** [net/ipv6] Error 2
> make: *** [net] Error 2
>
> It's probably totally unrelated but sadly a showstopper for testing the
> new sysfs patches,

oh crap, sorry. Oh well.

Please test 2.6.22-rc1-mm1 which has all the fixes and is a damn fine
kernel. It's at
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc1/2.6.22-rc1-mm1/

The core patch is at ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc1/2.6.22-rc1-mm1/2.6.22-rc1-mm1.gz, and it's against 2.6.22-rc1.

Thanks.

2007-05-16 11:05:44

by Tejun Heo

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

Hello,

Andrew Morton wrote:
> On Wed, 16 May 2007 09:24:54 +0900 Clemens Schwaighofer <[email protected]> wrote:
>
>> I have re-occurring oopses and panics in those above kernels. The error
>> is always the same. I have the last Kernel Panic as a picture here:
>>
>> http://dev.tequila.jp/clemens/R0010172.JPG
>>
>> The oops have the same error style like this Panic. I tried to capture
>> one, but right after copying it into vim, I got a Panic. So next time I
>> try to.
>>
>> I think it started with 2.6.19.2, I cannot remember I had any of those
>> problems before. The box can work fine for about a week or more, or it
>> looks up several times a day. I run a memtest for 10 h, but I had no errors.
>
> shrink_dcache_memory->...sysfs_d_iput->BUG
>
> BUG_ON(sd->s_dentry != dentry);
>
> a number of people have hit that, on and off.

Yeah, I've been seeing that one. It should have been fixed with the big
fat patchset.

> We were close to having a fix, I think, but then we decided that great
> chunks of sysfs needed rewriting and I believe that we believe that this
> great rewrite will fix this bug.

How were we gonna fix it? If it isn't too complex, I can cook up a
patch for -stable series. The safest approach I can think of is making
dentries for attributes unreclaimable but those are made reclaimable for
good reasons. :-(

Thanks.

--
tejun

2007-05-16 15:34:31

by Andrew Morton

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

On Wed, 16 May 2007 13:05:19 +0200 Tejun Heo <[email protected]> wrote:

> Hello,
>
> Andrew Morton wrote:
> > On Wed, 16 May 2007 09:24:54 +0900 Clemens Schwaighofer <[email protected]> wrote:
> >
> >> I have re-occurring oopses and panics in those above kernels. The error
> >> is always the same. I have the last Kernel Panic as a picture here:
> >>
> >> http://dev.tequila.jp/clemens/R0010172.JPG
> >>
> >> The oops have the same error style like this Panic. I tried to capture
> >> one, but right after copying it into vim, I got a Panic. So next time I
> >> try to.
> >>
> >> I think it started with 2.6.19.2, I cannot remember I had any of those
> >> problems before. The box can work fine for about a week or more, or it
> >> looks up several times a day. I run a memtest for 10 h, but I had no errors.
> >
> > shrink_dcache_memory->...sysfs_d_iput->BUG
> >
> > BUG_ON(sd->s_dentry != dentry);
> >
> > a number of people have hit that, on and off.
>
> Yeah, I've been seeing that one. It should have been fixed with the big
> fat patchset.

Great - fingers crossed.

> > We were close to having a fix, I think, but then we decided that great
> > chunks of sysfs needed rewriting and I believe that we believe that this
> > great rewrite will fix this bug.
>
> How were we gonna fix it? If it isn't too complex, I can cook up a
> patch for -stable series.

Do we actually understand the causes?

> The safest approach I can think of is making
> dentries for attributes unreclaimable but those are made reclaimable for
> good reasons. :-(

Yeah, that was the google workaround. It's OK unless you happen to have
thousands of disks on an ia32 box.

2007-05-16 15:41:44

by Tejun Heo

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

Andrew Morton wrote:
>>> a number of people have hit that, on and off.
>> Yeah, I've been seeing that one. It should have been fixed with the big
>> fat patchset.
>
> Great - fingers crossed.
>
>>> We were close to having a fix, I think, but then we decided that great
>>> chunks of sysfs needed rewriting and I believe that we believe that this
>>> great rewrite will fix this bug.
>> How were we gonna fix it? If it isn't too complex, I can cook up a
>> patch for -stable series.
>
> Do we actually understand the causes?

Yeah, I think I do. Basically, the problem is that on-demand attach and
reclamation update sd->s_dentry but accesses to it aren't synchronized
properly. In the big fat patchset, first I tried to fix it by removing
sd->s_dentry completely which didn't work because of shadow nodes, so
the second try was to fix the synchronization which is in -mm now.

>> The safest approach I can think of is making
>> dentries for attributes unreclaimable but those are made reclaimable for
>> good reasons. :-(
>
> Yeah, that was the google workaround. It's OK unless you happen to have
> thousands of disks on an ia32 box.

I see. I thought there was different approach on fixing the problem.
I'll try to backport the synchronization fix but am afraid it can be too
risky for -stable. If it seems too risky, I'll send a patch to disable
reclamation.

--
tejun

2007-05-16 16:08:18

by Chuck Ebbert

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

Tejun Heo wrote:
>>> The safest approach I can think of is making
>>> dentries for attributes unreclaimable but those are made reclaimable for
>>> good reasons. :-(
>> Yeah, that was the google workaround. It's OK unless you happen to have
>> thousands of disks on an ia32 box.
>
> I see. I thought there was different approach on fixing the problem.
> I'll try to backport the synchronization fix but am afraid it can be too
> risky for -stable. If it seems too risky, I'll send a patch to disable
> reclamation.
>

Realistically, how can disabling the reclamation be worse than what's
there now?

2007-05-16 16:18:27

by Andrew Morton

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

On Wed, 16 May 2007 17:40:53 +0200 Tejun Heo <[email protected]> wrote:

> I see. I thought there was different approach on fixing the problem.
> I'll try to backport the synchronization fix but am afraid it can be too
> risky for -stable. If it seems too risky, I'll send a patch to disable
> reclamation.

OK. Sad. Maybe we add /proc/sys/fs/i-have-lots-of-disks-and-dont-mind-if-it-oopses
to enable the old behaviour.

2007-05-16 18:31:20

by Tejun Heo

[permalink] [raw]
Subject: [PATCH -stable] sysfs: disable reclamation by default

sd->s_dentry updates made by dentry/inode reclamation are racy and can
lead to BUG() or oops. This is already fixed in -mm and the fix is
scheduled to be merged into upstream for 2.6.23 but the fix
reimplements sysfs dentry dropping and is too risky for -stable
kernels.

This is an interim solution for -stable kernels. sysfs reclamation is
disabled by default and can be enabled by using sysfs.enable_reclaim
kernel parameter. Note that dentries are still created on demand, so
attribute and symlinks nodes aren't allocated on creation. They're
allocated on first lookup and deallocated when the sysfs node is
removed.

Signed-off-by: Tejun Heo <[email protected]>
---

Okay, I wasn't sure about the backport, so this is what I've come up
with. It's ugly but, as Chuck pointed out, anything is better than
oopsing.

Clemens, can you please test this one too?

If anyone has any better idea, feel free to override this one.

Thanks.

Documentation/kernel-parameters.txt | 8 ++++++++
fs/sysfs/Makefile | 3 ++-
fs/sysfs/dir.c | 11 +++++++++++
fs/sysfs/inode.c | 3 +++
fs/sysfs/sysfs.h | 1 +
5 files changed, 25 insertions(+), 1 deletion(-)

Index: tree0/fs/sysfs/dir.c
===================================================================
--- tree0.orig/fs/sysfs/dir.c
+++ tree0/fs/sysfs/dir.c
@@ -14,6 +14,13 @@

DECLARE_RWSEM(sysfs_rename_sem);

+/*
+ * sysfs dentry/inode reclaming has race conditions around
+ * sd->s_dentry. Disable it by default.
+ */
+int sysfs_enable_reclaim;
+module_param_named(enable_reclaim, sysfs_enable_reclaim, bool, 0444);
+
static void sysfs_d_iput(struct dentry * dentry, struct inode * inode)
{
struct sysfs_dirent * sd = dentry->d_fsdata;
@@ -289,6 +296,10 @@ static struct dentry * sysfs_lookup(stru
err = sysfs_attach_link(sd, dentry);
else
err = sysfs_attach_attr(sd, dentry);
+
+ if (err == 0 && !sysfs_enable_reclaim)
+ dget(dentry);
+
break;
}
}
Index: tree0/fs/sysfs/inode.c
===================================================================
--- tree0.orig/fs/sysfs/inode.c
+++ tree0/fs/sysfs/inode.c
@@ -266,6 +266,9 @@ void sysfs_drop_dentry(struct sysfs_dire
spin_unlock(&dentry->d_lock);
spin_unlock(&dcache_lock);
}
+
+ if (!sysfs_enable_reclaim)
+ dput(dentry);
}
}

Index: tree0/fs/sysfs/Makefile
===================================================================
--- tree0.orig/fs/sysfs/Makefile
+++ tree0/fs/sysfs/Makefile
@@ -2,5 +2,6 @@
# Makefile for the sysfs virtual filesystem
#

-obj-y := inode.o file.o dir.o symlink.o mount.o bin.o \
+obj-y := sysfs.o
+sysfs-objs := inode.o file.o dir.o symlink.o mount.o bin.o \
group.o
Index: tree0/Documentation/kernel-parameters.txt
===================================================================
--- tree0.orig/Documentation/kernel-parameters.txt
+++ tree0/Documentation/kernel-parameters.txt
@@ -1721,6 +1721,14 @@ and is between 256 and 4096 characters.
sym53c416= [HW,SCSI]
See header of drivers/scsi/sym53c416.c.

+ sysfs.enable_reclaim
+ Enable dentry and inode reclamation for
+ attribute and symlink nodes. This is buggy
+ and can cause oops or trigger BUG. Do not
+ enable unless you know what you're doing.
+ This kernel parameter will be removed after
+ reclamation is fixed.
+
sysrq_always_enabled
[KNL]
Ignore sysrq setting - this boot parameter will
Index: tree0/fs/sysfs/sysfs.h
===================================================================
--- tree0.orig/fs/sysfs/sysfs.h
+++ tree0/fs/sysfs/sysfs.h
@@ -12,6 +12,7 @@ struct sysfs_dirent {

extern struct vfsmount * sysfs_mount;
extern struct kmem_cache *sysfs_dir_cachep;
+extern int sysfs_enable_reclaim;

extern void sysfs_delete_inode(struct inode *inode);
extern struct inode * sysfs_new_inode(mode_t mode, struct sysfs_dirent *);

2007-05-17 12:06:19

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH -stable] sysfs: disable reclamation by default

On Wed, May 16, 2007 at 08:31:00PM +0200, Tejun Heo wrote:
> sd->s_dentry updates made by dentry/inode reclamation are racy and can
> lead to BUG() or oops. This is already fixed in -mm and the fix is
> scheduled to be merged into upstream for 2.6.23 but the fix
> reimplements sysfs dentry dropping and is too risky for -stable
> kernels.
>
> This is an interim solution for -stable kernels. sysfs reclamation is
> disabled by default and can be enabled by using sysfs.enable_reclaim
> kernel parameter. Note that dentries are still created on demand, so
> attribute and symlinks nodes aren't allocated on creation. They're
> allocated on first lookup and deallocated when the sysfs node is
> removed.

Ick, this is going to kill memory on big boxes (s390 and others) and I
don't really want to apply this it if at all possible.

Maneesh, any other thoughts?

thanks,

greg k-h

2007-05-17 17:39:21

by Maneesh Soni

[permalink] [raw]
Subject: Re: [PATCH -stable] sysfs: disable reclamation by default

On Thu, May 17, 2007 at 05:04:23AM -0700, Greg KH wrote:
> On Wed, May 16, 2007 at 08:31:00PM +0200, Tejun Heo wrote:
> > sd->s_dentry updates made by dentry/inode reclamation are racy and can
> > lead to BUG() or oops. This is already fixed in -mm and the fix is
> > scheduled to be merged into upstream for 2.6.23 but the fix
> > reimplements sysfs dentry dropping and is too risky for -stable
> > kernels.
> >

But was the synchronization fix tested by people facing the race? I still
don't understand the racy code path. The last google problem I saw had
s_dentry field as NULL.

> > This is an interim solution for -stable kernels. sysfs reclamation is
> > disabled by default and can be enabled by using sysfs.enable_reclaim
> > kernel parameter. Note that dentries are still created on demand, so
> > attribute and symlinks nodes aren't allocated on creation. They're
> > allocated on first lookup and deallocated when the sysfs node is
> > removed.
>
> Ick, this is going to kill memory on big boxes (s390 and others) and I
> don't really want to apply this it if at all possible.
>
At least not make it default. This might create boot issues with these
boxes.

> Maneesh, any other thoughts?
>
I actually wanted to investigate this oops but left it considering the
rework being done by Tejun. If this still make sense we can have some
more debug code stuffed there or get a crashdump (kdump) to get better
understanding of the race.

Thanks
Maneesh



--
Maneesh Soni
Linux Technology Center,
IBM India Systems and Technology Lab,
Bangalore, India

2007-05-17 17:50:01

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH -stable] sysfs: disable reclamation by default

Maneesh Soni wrote:
> On Thu, May 17, 2007 at 05:04:23AM -0700, Greg KH wrote:
>> On Wed, May 16, 2007 at 08:31:00PM +0200, Tejun Heo wrote:
>>> sd->s_dentry updates made by dentry/inode reclamation are racy and can
>>> lead to BUG() or oops. This is already fixed in -mm and the fix is
>>> scheduled to be merged into upstream for 2.6.23 but the fix
>>> reimplements sysfs dentry dropping and is too risky for -stable
>>> kernels.
>>>
>
> But was the synchronization fix tested by people facing the race? I still
> don't understand the racy code path. The last google problem I saw had
> s_dentry field as NULL.

Please take a look at the following message.

http://article.gmane.org/gmane.linux.kernel/521729

I could reproduce both races on my test machine fairly reliable with
parallel find, cat, mount/mount while repeatedly ins/rmmoding a libata
driver.

>>> This is an interim solution for -stable kernels. sysfs reclamation is
>>> disabled by default and can be enabled by using sysfs.enable_reclaim
>>> kernel parameter. Note that dentries are still created on demand, so
>>> attribute and symlinks nodes aren't allocated on creation. They're
>>> allocated on first lookup and deallocated when the sysfs node is
>>> removed.
>> Ick, this is going to kill memory on big boxes (s390 and others) and I
>> don't really want to apply this it if at all possible.
>>
> At least not make it default. This might create boot issues with these
> boxes.

Which makes oopsing the default. Fun! :-)

>> Maneesh, any other thoughts?
>>
> I actually wanted to investigate this oops but left it considering the
> rework being done by Tejun. If this still make sense we can have some
> more debug code stuffed there or get a crashdump (kdump) to get better
> understanding of the race.

The above message contains analysis of both races. I just ported the
fixes. I have a different test machine now and can't reproduce the
races with this one yet so I couldn't verify whether the patches
actually fix the problem. I'll post the patches anyway. If anyone can
reproduce these races, please verify the posted patches fix the problem.

Thanks.

--
tejun

2007-05-17 17:53:19

by Tejun Heo

[permalink] [raw]
Subject: [PATCH 1/2] sysfs: fix condition check in sysfs_drop_dentry()

The condition check doesn't make much sense as it basically always
succeeds. This causes NULL dereferencing on certain cases. It seems
that parentheses are put in the wrong place. Fix it.

DON'T APPLY JUST YET
---

Maneesh, is this correct?

fs/sysfs/inode.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: work/fs/sysfs/inode.c
===================================================================
--- work.orig/fs/sysfs/inode.c
+++ work/fs/sysfs/inode.c
@@ -250,7 +250,7 @@ void sysfs_drop_dentry(struct sysfs_dire
if (dentry) {
spin_lock(&dcache_lock);
spin_lock(&dentry->d_lock);
- if (!(d_unhashed(dentry) && dentry->d_inode)) {
+ if (!d_unhashed(dentry) && dentry->d_inode) {
inode = dentry->d_inode;
spin_lock(&inode->i_lock);
__iget(inode);

2007-05-17 17:59:58

by Tejun Heo

[permalink] [raw]
Subject: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry


Allowing attribute and symlink dentries to be reclaimed means
sd->s_dentry can change dynamically. However, updates to the field
are unsynchronized leading to race conditions. This patch adds
sysfs_lock and use it to synchronize updates to sd->s_dentry.

Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
is complex. sysfs_lock only protect sd->s_dentry pointer itself. The
validity of the dentry is protected by dcache_lock, so whether dentry
is alive or not can only be tested while holding both locks.

This is minimal backport of sysfs_drop_dentry() rewrite in devel
branch.

DONT APPLY JUST YET
---

Okay, here's minimal backport of synchronization fix. kobj
directories are left alone. sysfs_drop_dentry() modifications can be
made more efficient but are left that way on purpose.

fs/sysfs/dir.c | 29 ++++++++++++++++++++++++++---
fs/sysfs/inode.c | 28 ++++++++++++++++++++++++----
fs/sysfs/sysfs.h | 1 +
3 files changed, 51 insertions(+), 7 deletions(-)

Index: work/fs/sysfs/dir.c
===================================================================
--- work.orig/fs/sysfs/dir.c
+++ work/fs/sysfs/dir.c
@@ -13,14 +13,26 @@
#include "sysfs.h"

DECLARE_RWSEM(sysfs_rename_sem);
+spinlock_t sysfs_lock = SPIN_LOCK_UNLOCKED;

static void sysfs_d_iput(struct dentry * dentry, struct inode * inode)
{
struct sysfs_dirent * sd = dentry->d_fsdata;

if (sd) {
- BUG_ON(sd->s_dentry != dentry);
- sd->s_dentry = NULL;
+ /* sd->s_dentry is protected with sysfs_lock. This
+ * allows sysfs_drop_dentry() to dereference it.
+ */
+ spin_lock(&sysfs_lock);
+
+ /* The dentry might have been deleted or another
+ * lookup could have happened updating sd->s_dentry to
+ * point the new dentry. Ignore if it isn't pointing
+ * to this dentry.
+ */
+ if (sd->s_dentry == dentry)
+ sd->s_dentry = NULL;
+ spin_unlock(&sysfs_lock);
sysfs_put(sd);
}
iput(inode);
@@ -238,7 +250,10 @@ static int sysfs_attach_attr(struct sysf
}

dentry->d_fsdata = sysfs_get(sd);
+ /* protect sd->s_dentry against sysfs_d_iput */
+ spin_lock(&sysfs_lock);
sd->s_dentry = dentry;
+ spin_unlock(&sysfs_lock);
error = sysfs_create(dentry, (attr->mode & S_IALLUGO) | S_IFREG, init);
if (error) {
sysfs_put(sd);
@@ -260,7 +275,10 @@ static int sysfs_attach_link(struct sysf
int err = 0;

dentry->d_fsdata = sysfs_get(sd);
+ /* protect sd->s_dentry against sysfs_d_iput */
+ spin_lock(&sysfs_lock);
sd->s_dentry = dentry;
+ spin_unlock(&sysfs_lock);
err = sysfs_create(dentry, S_IFLNK|S_IRWXUGO, init_symlink);
if (!err) {
dentry->d_op = &sysfs_dentry_ops;
@@ -329,6 +347,7 @@ void sysfs_remove_subdir(struct dentry *

static void __sysfs_remove_dir(struct dentry *dentry)
{
+ LIST_HEAD(removed);
struct sysfs_dirent * parent_sd;
struct sysfs_dirent * sd, * tmp;

@@ -342,11 +361,15 @@ static void __sysfs_remove_dir(struct de
list_for_each_entry_safe(sd, tmp, &parent_sd->s_children, s_sibling) {
if (!sd->s_element || !(sd->s_type & SYSFS_NOT_PINNED))
continue;
+ list_move(&sd->s_sibling, &removed);
+ }
+ mutex_unlock(&dentry->d_inode->i_mutex);
+
+ list_for_each_entry_safe(sd, tmp, &removed, s_sibling) {
list_del_init(&sd->s_sibling);
sysfs_drop_dentry(sd, dentry);
sysfs_put(sd);
}
- mutex_unlock(&dentry->d_inode->i_mutex);

remove_dir(dentry);
/**
Index: work/fs/sysfs/inode.c
===================================================================
--- work.orig/fs/sysfs/inode.c
+++ work/fs/sysfs/inode.c
@@ -244,9 +244,23 @@ static inline void orphan_all_buffers(st
*/
void sysfs_drop_dentry(struct sysfs_dirent * sd, struct dentry * parent)
{
- struct dentry * dentry = sd->s_dentry;
+ struct dentry *dentry = NULL;
struct inode *inode;

+ /* We're not holding a reference to ->s_dentry dentry but the
+ * field will stay valid as long as sysfs_lock is held.
+ */
+ spin_lock(&sysfs_lock);
+ spin_lock(&dcache_lock);
+
+ /* dget dentry if it's still alive */
+ if (sd->s_dentry && sd->s_dentry->d_inode)
+ dentry = dget_locked(sd->s_dentry);
+
+ spin_unlock(&dcache_lock);
+ spin_unlock(&sysfs_lock);
+
+ /* drop dentry */
if (dentry) {
spin_lock(&dcache_lock);
spin_lock(&dentry->d_lock);
@@ -266,6 +280,8 @@ void sysfs_drop_dentry(struct sysfs_dire
spin_unlock(&dentry->d_lock);
spin_unlock(&dcache_lock);
}
+
+ dput(dentry);
}
}

@@ -289,13 +305,17 @@ int sysfs_hash_and_remove(struct dentry
continue;
if (!strcmp(sysfs_get_name(sd), name)) {
list_del_init(&sd->s_sibling);
- sysfs_drop_dentry(sd, dir);
- sysfs_put(sd);
found = 1;
break;
}
}
mutex_unlock(&dir->d_inode->i_mutex);

- return found ? 0 : -ENOENT;
+ if (!found)
+ return -ENOENT;
+
+ sysfs_drop_dentry(sd, dir);
+ sysfs_put(sd);
+
+ return 0;
}
Index: work/fs/sysfs/sysfs.h
===================================================================
--- work.orig/fs/sysfs/sysfs.h
+++ work/fs/sysfs/sysfs.h
@@ -32,6 +32,7 @@ extern const unsigned char * sysfs_get_n
extern void sysfs_drop_dentry(struct sysfs_dirent *sd, struct dentry *parent);
extern int sysfs_setattr(struct dentry *dentry, struct iattr *iattr);

+extern spinlock_t sysfs_lock;
extern struct rw_semaphore sysfs_rename_sem;
extern struct super_block * sysfs_sb;
extern const struct file_operations sysfs_dir_operations;

2007-05-17 18:16:31

by Tejun Heo

[permalink] [raw]
Subject: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry, take#2

Allowing attribute and symlink dentries to be reclaimed means
sd->s_dentry can change dynamically. However, updates to the field
are unsynchronized leading to race conditions. This patch adds
sysfs_lock and use it to synchronize updates to sd->s_dentry.

Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
is complex. sysfs_lock only protect sd->s_dentry pointer itself. The
validity of the dentry is protected by dcache_lock, so whether dentry
is alive or not can only be tested while holding both locks.

This is minimal backport of sysfs_drop_dentry() rewrite in devel
branch.

DONT APPLY JUST YET
---
Moving sysfs_drop_dentry() and sysfs_put() calls out of mutex isn't
necessary, so this is the minimal one but there shouldn't be
any difference functionality-wise.

fs/sysfs/dir.c | 22 ++++++++++++++++++++--
fs/sysfs/inode.c | 18 +++++++++++++++++-
fs/sysfs/sysfs.h | 1 +
3 files changed, 38 insertions(+), 3 deletions(-)

Index: work/fs/sysfs/dir.c
===================================================================
--- work.orig/fs/sysfs/dir.c
+++ work/fs/sysfs/dir.c
@@ -13,14 +13,26 @@
#include "sysfs.h"

DECLARE_RWSEM(sysfs_rename_sem);
+spinlock_t sysfs_lock = SPIN_LOCK_UNLOCKED;

static void sysfs_d_iput(struct dentry * dentry, struct inode * inode)
{
struct sysfs_dirent * sd = dentry->d_fsdata;

if (sd) {
- BUG_ON(sd->s_dentry != dentry);
- sd->s_dentry = NULL;
+ /* sd->s_dentry is protected with sysfs_lock. This
+ * allows sysfs_drop_dentry() to dereference it.
+ */
+ spin_lock(&sysfs_lock);
+
+ /* The dentry might have been deleted or another
+ * lookup could have happened updating sd->s_dentry to
+ * point the new dentry. Ignore if it isn't pointing
+ * to this dentry.
+ */
+ if (sd->s_dentry == dentry)
+ sd->s_dentry = NULL;
+ spin_unlock(&sysfs_lock);
sysfs_put(sd);
}
iput(inode);
@@ -238,7 +250,10 @@ static int sysfs_attach_attr(struct sysf
}

dentry->d_fsdata = sysfs_get(sd);
+ /* protect sd->s_dentry against sysfs_d_iput */
+ spin_lock(&sysfs_lock);
sd->s_dentry = dentry;
+ spin_unlock(&sysfs_lock);
error = sysfs_create(dentry, (attr->mode & S_IALLUGO) | S_IFREG, init);
if (error) {
sysfs_put(sd);
@@ -260,7 +275,10 @@ static int sysfs_attach_link(struct sysf
int err = 0;

dentry->d_fsdata = sysfs_get(sd);
+ /* protect sd->s_dentry against sysfs_d_iput */
+ spin_lock(&sysfs_lock);
sd->s_dentry = dentry;
+ spin_unlock(&sysfs_lock);
err = sysfs_create(dentry, S_IFLNK|S_IRWXUGO, init_symlink);
if (!err) {
dentry->d_op = &sysfs_dentry_ops;
Index: work/fs/sysfs/inode.c
===================================================================
--- work.orig/fs/sysfs/inode.c
+++ work/fs/sysfs/inode.c
@@ -244,9 +244,23 @@ static inline void orphan_all_buffers(st
*/
void sysfs_drop_dentry(struct sysfs_dirent * sd, struct dentry * parent)
{
- struct dentry * dentry = sd->s_dentry;
+ struct dentry *dentry = NULL;
struct inode *inode;

+ /* We're not holding a reference to ->s_dentry dentry but the
+ * field will stay valid as long as sysfs_lock is held.
+ */
+ spin_lock(&sysfs_lock);
+ spin_lock(&dcache_lock);
+
+ /* dget dentry if it's still alive */
+ if (sd->s_dentry && sd->s_dentry->d_inode)
+ dentry = dget_locked(sd->s_dentry);
+
+ spin_unlock(&dcache_lock);
+ spin_unlock(&sysfs_lock);
+
+ /* drop dentry */
if (dentry) {
spin_lock(&dcache_lock);
spin_lock(&dentry->d_lock);
@@ -266,6 +280,8 @@ void sysfs_drop_dentry(struct sysfs_dire
spin_unlock(&dentry->d_lock);
spin_unlock(&dcache_lock);
}
+
+ dput(dentry);
}
}

Index: work/fs/sysfs/sysfs.h
===================================================================
--- work.orig/fs/sysfs/sysfs.h
+++ work/fs/sysfs/sysfs.h
@@ -32,6 +32,7 @@ extern const unsigned char * sysfs_get_n
extern void sysfs_drop_dentry(struct sysfs_dirent *sd, struct dentry *parent);
extern int sysfs_setattr(struct dentry *dentry, struct iattr *iattr);

+extern spinlock_t sysfs_lock;
extern struct rw_semaphore sysfs_rename_sem;
extern struct super_block * sysfs_sb;
extern const struct file_operations sysfs_dir_operations;

2007-05-17 18:56:39

by Eric Sandeen

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

Andrew Morton wrote:
> On Wed, 16 May 2007 17:40:53 +0200 Tejun Heo <[email protected]> wrote:
>
>> I see. I thought there was different approach on fixing the problem.
>> I'll try to backport the synchronization fix but am afraid it can be too
>> risky for -stable. If it seems too risky, I'll send a patch to disable
>> reclamation.
>
> OK. Sad. Maybe we add /proc/sys/fs/i-have-lots-of-disks-and-dont-mind-if-it-oopses
> to enable the old behaviour.

Out of curiosity, is there a decent reproducer for this problem, or is
it just a few lucky individuals? :)

-Eric

2007-05-21 04:35:26

by Maneesh Soni

[permalink] [raw]
Subject: Re: [PATCH 1/2] sysfs: fix condition check in sysfs_drop_dentry()

On Thu, May 17, 2007 at 07:52:53PM +0200, Tejun Heo wrote:
> The condition check doesn't make much sense as it basically always
> succeeds. This causes NULL dereferencing on certain cases. It seems
> that parentheses are put in the wrong place. Fix it.
>
> DON'T APPLY JUST YET
> ---
>
> Maneesh, is this correct?
>
Yes.

> fs/sysfs/inode.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Index: work/fs/sysfs/inode.c
> ===================================================================
> --- work.orig/fs/sysfs/inode.c
> +++ work/fs/sysfs/inode.c
> @@ -250,7 +250,7 @@ void sysfs_drop_dentry(struct sysfs_dire
> if (dentry) {
> spin_lock(&dcache_lock);
> spin_lock(&dentry->d_lock);
> - if (!(d_unhashed(dentry) && dentry->d_inode)) {
> + if (!d_unhashed(dentry) && dentry->d_inode) {
> inode = dentry->d_inode;
> spin_lock(&inode->i_lock);
> __iget(inode);


Ack'ed

Thanks
Maneesh

--
Maneesh Soni
Linux Technology Center,
IBM India Systems and Technology Lab,
Bangalore, India

2007-05-21 04:38:40

by Maneesh Soni

[permalink] [raw]
Subject: Re: [PATCH -stable] sysfs: disable reclamation by default

On Thu, May 17, 2007 at 07:49:31PM +0200, Tejun Heo wrote:
> Maneesh Soni wrote:
> > On Thu, May 17, 2007 at 05:04:23AM -0700, Greg KH wrote:
> >> On Wed, May 16, 2007 at 08:31:00PM +0200, Tejun Heo wrote:
> >>> sd->s_dentry updates made by dentry/inode reclamation are racy and can
> >>> lead to BUG() or oops. This is already fixed in -mm and the fix is
> >>> scheduled to be merged into upstream for 2.6.23 but the fix
> >>> reimplements sysfs dentry dropping and is too risky for -stable
> >>> kernels.
> >>>
> >
> > But was the synchronization fix tested by people facing the race? I still
> > don't understand the racy code path. The last google problem I saw had
> > s_dentry field as NULL.
>
> Please take a look at the following message.
>
> http://article.gmane.org/gmane.linux.kernel/521729
>
> I could reproduce both races on my test machine fairly reliable with
> parallel find, cat, mount/mount while repeatedly ins/rmmoding a libata
> driver.
>
Thanks for the pointer.. earlier it got buried in the fat rework..


> >>> This is an interim solution for -stable kernels. sysfs reclamation is
> >>> disabled by default and can be enabled by using sysfs.enable_reclaim
> >>> kernel parameter. Note that dentries are still created on demand, so
> >>> attribute and symlinks nodes aren't allocated on creation. They're
> >>> allocated on first lookup and deallocated when the sysfs node is
> >>> removed.
> >> Ick, this is going to kill memory on big boxes (s390 and others) and I
> >> don't really want to apply this it if at all possible.
> >>
> > At least not make it default. This might create boot issues with these
> > boxes.
>
> Which makes oopsing the default. Fun! :-)
>
but.. avoid oops by not booting at all is more fun !! ;-)


> >> Maneesh, any other thoughts?
> >>
> > I actually wanted to investigate this oops but left it considering the
> > rework being done by Tejun. If this still make sense we can have some
> > more debug code stuffed there or get a crashdump (kdump) to get better
> > understanding of the race.
>
> The above message contains analysis of both races. I just ported the
> fixes. I have a different test machine now and can't reproduce the
> races with this one yet so I couldn't verify whether the patches
> actually fix the problem. I'll post the patches anyway. If anyone can
> reproduce these races, please verify the posted patches fix the problem.
>

I would prefer fixing the race instead of making attributes non-reclaimable.

Thanks
Maneesh



--
Maneesh Soni
Linux Technology Center,
IBM India Systems and Technology Lab,
Bangalore, India

2007-05-21 05:00:43

by Maneesh Soni

[permalink] [raw]
Subject: Re: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry, take#2

On Thu, May 17, 2007 at 08:16:10PM +0200, Tejun Heo wrote:
> Allowing attribute and symlink dentries to be reclaimed means
> sd->s_dentry can change dynamically. However, updates to the field
> are unsynchronized leading to race conditions. This patch adds
> sysfs_lock and use it to synchronize updates to sd->s_dentry.
>
> Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
> is complex. sysfs_lock only protect sd->s_dentry pointer itself. The
> validity of the dentry is protected by dcache_lock, so whether dentry
> is alive or not can only be tested while holding both locks.
>
> This is minimal backport of sysfs_drop_dentry() rewrite in devel
> branch.
>
> DONT APPLY JUST YET

Looks ok to me.. I have tested it it but unfortunately I couldn't
recreate the race without the patch also. It would be helpful if
people actually seeing the race, provide the test results.

Greg, please merge this one once we have some test results.

Regards,
Maneesh

> ---
> Moving sysfs_drop_dentry() and sysfs_put() calls out of mutex isn't
> necessary, so this is the minimal one but there shouldn't be
> any difference functionality-wise.
>
> fs/sysfs/dir.c | 22 ++++++++++++++++++++--
> fs/sysfs/inode.c | 18 +++++++++++++++++-
> fs/sysfs/sysfs.h | 1 +
> 3 files changed, 38 insertions(+), 3 deletions(-)
>
> Index: work/fs/sysfs/dir.c
> ===================================================================
> --- work.orig/fs/sysfs/dir.c
> +++ work/fs/sysfs/dir.c
> @@ -13,14 +13,26 @@
> #include "sysfs.h"
>
> DECLARE_RWSEM(sysfs_rename_sem);
> +spinlock_t sysfs_lock = SPIN_LOCK_UNLOCKED;
>
> static void sysfs_d_iput(struct dentry * dentry, struct inode * inode)
> {
> struct sysfs_dirent * sd = dentry->d_fsdata;
>
> if (sd) {
> - BUG_ON(sd->s_dentry != dentry);
> - sd->s_dentry = NULL;
> + /* sd->s_dentry is protected with sysfs_lock. This
> + * allows sysfs_drop_dentry() to dereference it.
> + */
> + spin_lock(&sysfs_lock);
> +
> + /* The dentry might have been deleted or another
> + * lookup could have happened updating sd->s_dentry to
> + * point the new dentry. Ignore if it isn't pointing
> + * to this dentry.
> + */
> + if (sd->s_dentry == dentry)
> + sd->s_dentry = NULL;
> + spin_unlock(&sysfs_lock);
> sysfs_put(sd);
> }
> iput(inode);
> @@ -238,7 +250,10 @@ static int sysfs_attach_attr(struct sysf
> }
>
> dentry->d_fsdata = sysfs_get(sd);
> + /* protect sd->s_dentry against sysfs_d_iput */
> + spin_lock(&sysfs_lock);
> sd->s_dentry = dentry;
> + spin_unlock(&sysfs_lock);
> error = sysfs_create(dentry, (attr->mode & S_IALLUGO) | S_IFREG, init);
> if (error) {
> sysfs_put(sd);
> @@ -260,7 +275,10 @@ static int sysfs_attach_link(struct sysf
> int err = 0;
>
> dentry->d_fsdata = sysfs_get(sd);
> + /* protect sd->s_dentry against sysfs_d_iput */
> + spin_lock(&sysfs_lock);
> sd->s_dentry = dentry;
> + spin_unlock(&sysfs_lock);
> err = sysfs_create(dentry, S_IFLNK|S_IRWXUGO, init_symlink);
> if (!err) {
> dentry->d_op = &sysfs_dentry_ops;
> Index: work/fs/sysfs/inode.c
> ===================================================================
> --- work.orig/fs/sysfs/inode.c
> +++ work/fs/sysfs/inode.c
> @@ -244,9 +244,23 @@ static inline void orphan_all_buffers(st
> */
> void sysfs_drop_dentry(struct sysfs_dirent * sd, struct dentry * parent)
> {
> - struct dentry * dentry = sd->s_dentry;
> + struct dentry *dentry = NULL;
> struct inode *inode;
>
> + /* We're not holding a reference to ->s_dentry dentry but the
> + * field will stay valid as long as sysfs_lock is held.
> + */
> + spin_lock(&sysfs_lock);
> + spin_lock(&dcache_lock);
> +
> + /* dget dentry if it's still alive */
> + if (sd->s_dentry && sd->s_dentry->d_inode)
> + dentry = dget_locked(sd->s_dentry);
> +
> + spin_unlock(&dcache_lock);
> + spin_unlock(&sysfs_lock);
> +
> + /* drop dentry */
> if (dentry) {
> spin_lock(&dcache_lock);
> spin_lock(&dentry->d_lock);
> @@ -266,6 +280,8 @@ void sysfs_drop_dentry(struct sysfs_dire
> spin_unlock(&dentry->d_lock);
> spin_unlock(&dcache_lock);
> }
> +
> + dput(dentry);
> }
> }
>
> Index: work/fs/sysfs/sysfs.h
> ===================================================================
> --- work.orig/fs/sysfs/sysfs.h
> +++ work/fs/sysfs/sysfs.h
> @@ -32,6 +32,7 @@ extern const unsigned char * sysfs_get_n
> extern void sysfs_drop_dentry(struct sysfs_dirent *sd, struct dentry *parent);
> extern int sysfs_setattr(struct dentry *dentry, struct iattr *iattr);
>
> +extern spinlock_t sysfs_lock;
> extern struct rw_semaphore sysfs_rename_sem;
> extern struct super_block * sysfs_sb;
> extern const struct file_operations sysfs_dir_operations;

--
Maneesh Soni
Linux Technology Center,
IBM India Systems and Technology Lab,
Bangalore, India

2007-05-21 16:10:10

by Eric Sandeen

[permalink] [raw]
Subject: Re: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry, take#2

Maneesh Soni wrote:

> Looks ok to me.. I have tested it it but unfortunately I couldn't
> recreate the race without the patch also. It would be helpful if
> people actually seeing the race, provide the test results.
>
> Greg, please merge this one once we have some test results.

I merged this back to RHEL4-era (2.6.9) kernels due to a report of this
problem on RHEL4. The tester could hit the sysfs_d_iput bug fairly
easily before, and has not seen it with this patch in place.

The other bug they were seeing even more often was the sysfs_readdir()
oops as we try to extract the inode number for regular sysfs files,
again due to transient vnodes. Is any fix for that problem being
considered for -stable? I had backported a simpler version of Tejun's
s_ino fix for the problem, without the ida complexity - and brought a
couple other small upstream fixes back to support that. If nothing has
yet been proposed for -stable, I can post that here.

Thanks,

-Eric

2007-05-21 16:15:29

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry, take#2

Eric Sandeen wrote:
> Maneesh Soni wrote:
>
>> Looks ok to me.. I have tested it it but unfortunately I couldn't
>> recreate the race without the patch also. It would be helpful if
>> people actually seeing the race, provide the test results.
>>
>> Greg, please merge this one once we have some test results.
>
> I merged this back to RHEL4-era (2.6.9) kernels due to a report of this
> problem on RHEL4. The tester could hit the sysfs_d_iput bug fairly
> easily before, and has not seen it with this patch in place.
>
> The other bug they were seeing even more often was the sysfs_readdir()
> oops as we try to extract the inode number for regular sysfs files,
> again due to transient vnodes. Is any fix for that problem being
> considered for -stable? I had backported a simpler version of Tejun's
> s_ino fix for the problem, without the ida complexity - and brought a
> couple other small upstream fixes back to support that. If nothing has
> yet been proposed for -stable, I can post that here.

I don't think any other fix has been proposed yet. Please post them.
That definitely needs fixing.

--
tejun

2007-05-22 22:40:57

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry, take#2

On Mon, May 21, 2007 at 10:31:01AM +0530, Maneesh Soni wrote:
> On Thu, May 17, 2007 at 08:16:10PM +0200, Tejun Heo wrote:
> > Allowing attribute and symlink dentries to be reclaimed means
> > sd->s_dentry can change dynamically. However, updates to the field
> > are unsynchronized leading to race conditions. This patch adds
> > sysfs_lock and use it to synchronize updates to sd->s_dentry.
> >
> > Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
> > is complex. sysfs_lock only protect sd->s_dentry pointer itself. The
> > validity of the dentry is protected by dcache_lock, so whether dentry
> > is alive or not can only be tested while holding both locks.
> >
> > This is minimal backport of sysfs_drop_dentry() rewrite in devel
> > branch.
> >
> > DONT APPLY JUST YET
>
> Looks ok to me.. I have tested it it but unfortunately I couldn't
> recreate the race without the patch also. It would be helpful if
> people actually seeing the race, provide the test results.
>
> Greg, please merge this one once we have some test results.

Can someone just resend it after those test results are in, with the
proper signed-off-by, so I know it's safe to apply?

thanks,

greg k-h

2007-05-23 08:21:53

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry, take#2

Greg KH wrote:
> On Mon, May 21, 2007 at 10:31:01AM +0530, Maneesh Soni wrote:
>> On Thu, May 17, 2007 at 08:16:10PM +0200, Tejun Heo wrote:
>>> Allowing attribute and symlink dentries to be reclaimed means
>>> sd->s_dentry can change dynamically. However, updates to the field
>>> are unsynchronized leading to race conditions. This patch adds
>>> sysfs_lock and use it to synchronize updates to sd->s_dentry.
>>>
>>> Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
>>> is complex. sysfs_lock only protect sd->s_dentry pointer itself. The
>>> validity of the dentry is protected by dcache_lock, so whether dentry
>>> is alive or not can only be tested while holding both locks.
>>>
>>> This is minimal backport of sysfs_drop_dentry() rewrite in devel
>>> branch.
>>>
>>> DONT APPLY JUST YET
>> Looks ok to me.. I have tested it it but unfortunately I couldn't
>> recreate the race without the patch also. It would be helpful if
>> people actually seeing the race, provide the test results.
>>
>> Greg, please merge this one once we have some test results.
>
> Can someone just resend it after those test results are in, with the
> proper signed-off-by, so I know it's safe to apply?

I'll resend with S-O-B after someone verifies it fixes the problem.

--
tejun

2007-06-08 14:35:43

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry, take#2

Tejun Heo wrote:
> Greg KH wrote:
>> On Mon, May 21, 2007 at 10:31:01AM +0530, Maneesh Soni wrote:
>>> On Thu, May 17, 2007 at 08:16:10PM +0200, Tejun Heo wrote:
>>>> Allowing attribute and symlink dentries to be reclaimed means
>>>> sd->s_dentry can change dynamically. However, updates to the field
>>>> are unsynchronized leading to race conditions. This patch adds
>>>> sysfs_lock and use it to synchronize updates to sd->s_dentry.
>>>>
>>>> Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
>>>> is complex. sysfs_lock only protect sd->s_dentry pointer itself. The
>>>> validity of the dentry is protected by dcache_lock, so whether dentry
>>>> is alive or not can only be tested while holding both locks.
>>>>
>>>> This is minimal backport of sysfs_drop_dentry() rewrite in devel
>>>> branch.
>>>>
>>>> DONT APPLY JUST YET
>>> Looks ok to me.. I have tested it it but unfortunately I couldn't
>>> recreate the race without the patch also. It would be helpful if
>>> people actually seeing the race, provide the test results.
>>>
>>> Greg, please merge this one once we have some test results.
>> Can someone just resend it after those test results are in, with the
>> proper signed-off-by, so I know it's safe to apply?
>
> I'll resend with S-O-B after someone verifies it fixes the problem.

Have been trying to reproduce the problem on the latest -rc but haven't
succeeded yet. It seems I lost my magic recipe for these races. Did
anyone succeed?

--
tejun

2007-06-09 06:50:18

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry, take#2

Tejun Heo wrote:
> Tejun Heo wrote:
>> Greg KH wrote:
>>> On Mon, May 21, 2007 at 10:31:01AM +0530, Maneesh Soni wrote:
>>>> On Thu, May 17, 2007 at 08:16:10PM +0200, Tejun Heo wrote:
>>>>> Allowing attribute and symlink dentries to be reclaimed means
>>>>> sd->s_dentry can change dynamically. However, updates to the field
>>>>> are unsynchronized leading to race conditions. This patch adds
>>>>> sysfs_lock and use it to synchronize updates to sd->s_dentry.
>>>>>
>>>>> Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
>>>>> is complex. sysfs_lock only protect sd->s_dentry pointer itself. The
>>>>> validity of the dentry is protected by dcache_lock, so whether dentry
>>>>> is alive or not can only be tested while holding both locks.
>>>>>
>>>>> This is minimal backport of sysfs_drop_dentry() rewrite in devel
>>>>> branch.
>>>>>
>>>>> DONT APPLY JUST YET
>>>> Looks ok to me.. I have tested it it but unfortunately I couldn't
>>>> recreate the race without the patch also. It would be helpful if
>>>> people actually seeing the race, provide the test results.
>>>>
>>>> Greg, please merge this one once we have some test results.
>>> Can someone just resend it after those test results are in, with the
>>> proper signed-off-by, so I know it's safe to apply?
>> I'll resend with S-O-B after someone verifies it fixes the problem.
>
> Have been trying to reproduce the problem on the latest -rc but haven't
> succeeded yet. It seems I lost my magic recipe for these races. Did
> anyone succeed?

Alright, overnight test finally hit the race condition. It takes me
much longer now but the race condition is definitely still there. I'll
verify each proposed patch and send it for 2.6.22 inclusion and if
they're accepted to -stable.

Thanks.

--
tejun

2007-06-10 16:16:41

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH 2/2] sysfs: fix race condition around sd->s_dentry, take#2

On Sat, Jun 09, 2007 at 03:49:46PM +0900, Tejun Heo wrote:
> Tejun Heo wrote:
> > Tejun Heo wrote:
> >> Greg KH wrote:
> >>> On Mon, May 21, 2007 at 10:31:01AM +0530, Maneesh Soni wrote:
> >>>> On Thu, May 17, 2007 at 08:16:10PM +0200, Tejun Heo wrote:
> >>>>> Allowing attribute and symlink dentries to be reclaimed means
> >>>>> sd->s_dentry can change dynamically. However, updates to the field
> >>>>> are unsynchronized leading to race conditions. This patch adds
> >>>>> sysfs_lock and use it to synchronize updates to sd->s_dentry.
> >>>>>
> >>>>> Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
> >>>>> is complex. sysfs_lock only protect sd->s_dentry pointer itself. The
> >>>>> validity of the dentry is protected by dcache_lock, so whether dentry
> >>>>> is alive or not can only be tested while holding both locks.
> >>>>>
> >>>>> This is minimal backport of sysfs_drop_dentry() rewrite in devel
> >>>>> branch.
> >>>>>
> >>>>> DONT APPLY JUST YET
> >>>> Looks ok to me.. I have tested it it but unfortunately I couldn't
> >>>> recreate the race without the patch also. It would be helpful if
> >>>> people actually seeing the race, provide the test results.
> >>>>
> >>>> Greg, please merge this one once we have some test results.
> >>> Can someone just resend it after those test results are in, with the
> >>> proper signed-off-by, so I know it's safe to apply?
> >> I'll resend with S-O-B after someone verifies it fixes the problem.
> >
> > Have been trying to reproduce the problem on the latest -rc but haven't
> > succeeded yet. It seems I lost my magic recipe for these races. Did
> > anyone succeed?
>
> Alright, overnight test finally hit the race condition. It takes me
> much longer now but the race condition is definitely still there. I'll
> verify each proposed patch and send it for 2.6.22 inclusion and if
> they're accepted to -stable.

Ok, thanks for doing this.

greg k-h

2007-06-29 03:51:20

by Clemens Schwaighofer

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

On 05/16/2007 09:24 AM, Clemens Schwaighofer wrote:
> Hi,

I had my system running up for about one month without any issues, and
then it happened again, same kernel oops, panic, end.

So I have upgraded to 2.6.22-rc4-mm2 in hope it might fix it, but I just
got another oops (uptime 4d) [see attached file]

my config hasn't changed in any way to the previous kernels.

--
[ Clemens Schwaighofer -----=====:::::~ ]
[ TEQUILA\ Japan IT Group ]
[ 6-17-2 Ginza Chuo-ku, Tokyo 104-8167, JAPAN ]
[ Tel: +81-(0)3-3545-7703 Fax: +81-(0)3-3545-7343 ]
[ http://www.tequila.co.jp ]


Attachments:
2.6.22-rc4-mm2.20070629.oops.log (7.84 kB)
signature.asc (252.00 B)
OpenPGP digital signature
Download all attachments

2007-06-29 06:12:59

by Satyam Sharma

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

Hi Clemens,

[ Cc:'ing Andrew, original thread at http://lkml.org/lkml/2007/5/15/354 ]

On 6/29/07, Clemens Schwaighofer <[email protected]> wrote:
> On 05/16/2007 09:24 AM, Clemens Schwaighofer wrote:
> > Hi,
>
> I had my system running up for about one month without any issues, and
> then it happened again, same kernel oops, panic, end.
>
> So I have upgraded to 2.6.22-rc4-mm2 in hope it might fix it, but I just
> got another oops (uptime 4d) [see attached file]

You "upgraded" from -stable series kernels (2.6.19.2 / 2.6.20.6 /
2.6.21.1) to a -mm kernel, which is anything but :-)

On the one hand, I really like that we're getting testers for -mm
kernels, but on the other hand, my good and honest side would
recommend you to install stable kernels (2.6.x.y versions) on
production systems, if you really care about uptimes.

> my config hasn't changed in any way to the previous kernels.

This doesn't look like the same oops you were getting persistently
with 2.6.21.1 ... you could try upgrading to 2.6.22-rc6 (without -mm)
too, if the oops in 2.6.21.1 was occurring too frequently in your setup;
possibly it has been resolved in the 22-rc series.

Satyam

[ Clemens' 2.6.22-rc4-mm2 oops below. ]


Jun 29 11:25:08 saturn kernel: [348308.690154] BUG: unable to handle
kernel NULL pointer dereference at virtual address 00000001
Jun 29 11:25:08 saturn kernel: [348308.690160] printing eip:
Jun 29 11:25:08 saturn kernel: [348308.690162] c108887c
Jun 29 11:25:08 saturn kernel: [348308.690163] *pde = 00000000
Jun 29 11:25:08 saturn kernel: [348308.690166] Oops: 0000 [#2]
Jun 29 11:25:08 saturn kernel: [348308.690167] PREEMPT
Jun 29 11:25:08 saturn kernel: [348308.690169] Modules linked in:
eeprom pcspkr i2c_viapro k8temp hwmon i2c_core
Jun 29 11:25:08 saturn kernel: [348308.690177] CPU: 0
Jun 29 11:25:08 saturn kernel: [348308.690177] EIP:
0060:[__d_lookup+108/336] Not tainted VLI
Jun 29 11:25:08 saturn kernel: [348308.690179] EFLAGS: 00010202
(2.6.22-rc4-mm2 #1)
Jun 29 11:25:08 saturn kernel: [348308.690185] EIP is at __d_lookup+0x6c/0x150
Jun 29 11:25:08 saturn kernel: [348308.690187] eax: 00000001 ebx:
00000001 ecx: 00000001 edx: 089c1579
Jun 29 11:25:08 saturn kernel: [348308.690190] esi: c6840ee8 edi:
c301d734 ebp: f786f080 esp: c6840e84
Jun 29 11:25:08 saturn kernel: [348308.690193] ds: 007b es: 007b
fs: 0000 gs: 0033 ss: 0068
Jun 29 11:25:08 saturn kernel: [348308.690196] Process nfsd (pid:
30536, ti=c6840000 task=c62bce90 task.ti=c6840000)
Jun 29 11:25:08 saturn kernel: [348308.690198] Stack: c301d734
089c1579 c6840edb 00000002 c6840ee8 ffffffff 00000005 c6840edb
Jun 29 11:25:08 saturn kernel: [348308.690205] 0000f9ec
c6840ee8 c301d734 c471ba84 c1088976 c7bbb090 c7bbb090 00000000
Jun 29 11:25:08 saturn kernel: [348308.690211] c10b49fc
c6840edb 0000000d c14914fb 00007793 332bce90 31313630 c5469900
Jun 29 11:25:08 saturn kernel: [348308.690217] Call Trace:
Jun 29 11:25:08 saturn kernel: [348308.690220] [d_lookup+22/64]
d_lookup+0x16/0x40
Jun 29 11:25:08 saturn kernel: [348308.690224]
[proc_flush_task+76/496] proc_flush_task+0x4c/0x1f0
Jun 29 11:25:08 saturn kernel: [348308.690229] [release_task+612/880]
release_task+0x264/0x370
Jun 29 11:25:08 saturn kernel: [348308.690234] [do_wait+1850/3072]
do_wait+0x73a/0xc00
Jun 29 11:25:08 saturn kernel: [348308.690239]
[_spin_unlock_irq+38/64] _spin_unlock_irq+0x26/0x40
Jun 29 11:25:08 saturn kernel: [348308.690243]
[default_wake_function+0/16] default_wake_function+0x0/0x10
Jun 29 11:25:08 saturn kernel: [348308.690247] [sys_wait4+49/64]
sys_wait4+0x31/0x40
Jun 29 11:25:08 saturn kernel: [348308.690251] [sys_waitpid+39/48]
sys_waitpid+0x27/0x30
Jun 29 11:25:08 saturn kernel: [348308.690255] [syscall_call+7/11]
syscall_call+0x7/0xb
Jun 29 11:25:08 saturn kernel: [348308.690259] =======================
Jun 29 11:25:08 saturn kernel: [348308.690260] INFO: lockdep is turned off.
Jun 29 11:25:08 saturn kernel: [348308.690262] Code: d3 e8 31 c3 23 1d
b4 d8 51 c1 b8 01 00 00 00 c1 e3 02 03 1d bc d8 51 c1 e8 e2 24 f9 ff
8b 1b 85 db 75 08 eb 44 85 c0 89 c3 74 3e <8b> 03 0f 18 00 90 8d 6b d8
8b 54 24 04 3b 55 34 75 e8 8b 34 24
Jun 29 11:25:08 saturn kernel: [348308.690289] EIP:
[__d_lookup+108/336] __d_lookup+0x6c/0x150 SS:ESP 0068:c6840e84
Jun 29 11:25:08 saturn kernel: [348308.690296] note: nfsd[30536]
exited with preempt_count 1
Jun 29 11:25:08 saturn kernel: [348308.690303] BUG: scheduling while
atomic: nfsd/0x10000002/30536
Jun 29 11:25:08 saturn kernel: [348308.690305] INFO: lockdep is turned off.
Jun 29 11:25:08 saturn kernel: [348308.690307] [schedule+1490/1744]
schedule+0x5d2/0x6d0
Jun 29 11:25:08 saturn kernel: [348308.690311]
[vt_console_print+106/688] vt_console_print+0x6a/0x2b0
Jun 29 11:25:08 saturn kernel: [348308.690316] [__cond_resched+18/48]
__cond_resched+0x12/0x30
Jun 29 11:25:08 saturn kernel: [348308.690319] [cond_resched+42/64]
cond_resched+0x2a/0x40
Jun 29 11:25:08 saturn kernel: [348308.690322] [unmap_vmas+1116/1184]
unmap_vmas+0x45c/0x4a0
Jun 29 11:25:08 saturn kernel: [348308.690327] [exit_mmap+105/256]
exit_mmap+0x69/0x100
Jun 29 11:25:08 saturn kernel: [348308.690331] [mmput+68/256] mmput+0x44/0x100
Jun 29 11:25:08 saturn kernel: [348308.690335] [do_exit+301/2224]
do_exit+0x12d/0x8b0
Jun 29 11:25:08 saturn kernel: [348308.690339] [__wake_up+56/80]
__wake_up+0x38/0x50
Jun 29 11:25:08 saturn kernel: [348308.690342] [die+574/576] die+0x23e/0x240
Jun 29 11:25:08 saturn kernel: [348308.690346]
[do_page_fault+724/1520] do_page_fault+0x2d4/0x5f0
Jun 29 11:25:08 saturn kernel: [348308.690349] [tcp_ack+2742/6960]
tcp_ack+0xab6/0x1b30
Jun 29 11:25:08 saturn kernel: [348308.690354] [do_page_fault+0/1520]
do_page_fault+0x0/0x5f0
Jun 29 11:25:08 saturn kernel: [348308.690357] [error_code+106/112]
error_code+0x6a/0x70
Jun 29 11:25:08 saturn kernel: [348308.690360] [__d_lookup+108/336]
__d_lookup+0x6c/0x150
Jun 29 11:25:08 saturn kernel: [348308.690364] [d_lookup+22/64]
d_lookup+0x16/0x40
Jun 29 11:25:08 saturn kernel: [348308.690367]
[proc_flush_task+76/496] proc_flush_task+0x4c/0x1f0
Jun 29 11:25:08 saturn kernel: [348308.690372] [release_task+612/880]
release_task+0x264/0x370
Jun 29 11:25:08 saturn kernel: [348308.690376] [do_wait+1850/3072]
do_wait+0x73a/0xc00
Jun 29 11:25:08 saturn kernel: [348308.690380]
[_spin_unlock_irq+38/64] _spin_unlock_irq+0x26/0x40
Jun 29 11:25:08 saturn kernel: [348308.690383]
[default_wake_function+0/16] default_wake_function+0x0/0x10
Jun 29 11:25:08 saturn kernel: [348308.690387] [sys_wait4+49/64]
sys_wait4+0x31/0x40
Jun 29 11:25:08 saturn kernel: [348308.690390] [sys_waitpid+39/48]
sys_waitpid+0x27/0x30
Jun 29 11:25:08 saturn kernel: [348308.690394] [syscall_call+7/11]
syscall_call+0x7/0xb
Jun 29 11:25:08 saturn kernel: [348308.690398] =======================
Jun 29 11:25:08 saturn kernel: [348308.690472] BUG: scheduling while
atomic: nfsd/0x10000002/30536
Jun 29 11:25:08 saturn kernel: [348308.690474] INFO: lockdep is turned off.
Jun 29 11:25:08 saturn kernel: [348308.690476] [schedule+1490/1744]
schedule+0x5d2/0x6d0
Jun 29 11:25:08 saturn kernel: [348308.690480]
[_atomic_dec_and_lock+22/96] _atomic_dec_and_lock+0x16/0x60
Jun 29 11:25:08 saturn kernel: [348308.690485]
[_atomic_dec_and_lock+49/96] _atomic_dec_and_lock+0x31/0x60
Jun 29 11:25:08 saturn kernel: [348308.690489] [__cond_resched+18/48]
__cond_resched+0x12/0x30
Jun 29 11:25:08 saturn kernel: [348308.690492] [cond_resched+42/64]
cond_resched+0x2a/0x40
Jun 29 11:25:08 saturn kernel: [348308.690495]
[put_files_struct+166/208] put_files_struct+0xa6/0xd0
Jun 29 11:25:08 saturn kernel: [348308.690499] [do_exit+363/2224]
do_exit+0x16b/0x8b0
Jun 29 11:25:08 saturn kernel: [348308.690503] [__wake_up+56/80]
__wake_up+0x38/0x50
Jun 29 11:25:08 saturn kernel: [348308.690506] [die+574/576] die+0x23e/0x240
Jun 29 11:25:08 saturn kernel: [348308.690510]
[do_page_fault+724/1520] do_page_fault+0x2d4/0x5f0
Jun 29 11:25:08 saturn kernel: [348308.690513] [tcp_ack+2742/6960]
tcp_ack+0xab6/0x1b30
Jun 29 11:25:08 saturn kernel: [348308.690517] [do_page_fault+0/1520]
do_page_fault+0x0/0x5f0
Jun 29 11:25:08 saturn kernel: [348308.690520] [error_code+106/112]
error_code+0x6a/0x70
Jun 29 11:25:08 saturn kernel: [348308.690524] [__d_lookup+108/336]
__d_lookup+0x6c/0x150
Jun 29 11:25:08 saturn kernel: [348308.690528] [d_lookup+22/64]
d_lookup+0x16/0x40
Jun 29 11:25:08 saturn kernel: [348308.690531]
[proc_flush_task+76/496] proc_flush_task+0x4c/0x1f0
Jun 29 11:25:08 saturn kernel: [348308.690535] [release_task+612/880]
release_task+0x264/0x370
Jun 29 11:25:08 saturn kernel: [348308.690539] [do_wait+1850/3072]
do_wait+0x73a/0xc00
Jun 29 11:25:08 saturn kernel: [348308.690543]
[_spin_unlock_irq+38/64] _spin_unlock_irq+0x26/0x40
Jun 29 11:25:08 saturn kernel: [348308.690547]
[default_wake_function+0/16] default_wake_function+0x0/0x10
Jun 29 11:25:08 saturn kernel: [348308.690551] [sys_wait4+49/64]
sys_wait4+0x31/0x40
Jun 29 11:25:08 saturn kernel: [348308.690554] [sys_waitpid+39/48]
sys_waitpid+0x27/0x30
Jun 29 11:25:08 saturn kernel: [348308.690558] [syscall_call+7/11]
syscall_call+0x7/0xb
Jun 29 11:25:08 saturn kernel: [348308.690561] =======================

2007-06-29 06:18:23

by Clemens Schwaighofer

[permalink] [raw]
Subject: Re: Oops and Panics in 2.6.21.1, 2.6.20.6 and 2.6.19.2

On 06/29/2007 03:12 PM, Satyam Sharma wrote:
> Hi Clemens,
>
> [ Cc:'ing Andrew, original thread at http://lkml.org/lkml/2007/5/15/354 ]
>
> On 6/29/07, Clemens Schwaighofer <[email protected]> wrote:
>> On 05/16/2007 09:24 AM, Clemens Schwaighofer wrote:
>> > Hi,
>>
>> I had my system running up for about one month without any issues, and
>> then it happened again, same kernel oops, panic, end.
>>
>> So I have upgraded to 2.6.22-rc4-mm2 in hope it might fix it, but I just
>> got another oops (uptime 4d) [see attached file]
>
> You "upgraded" from -stable series kernels (2.6.19.2 / 2.6.20.6 /
> 2.6.21.1) to a -mm kernel, which is anything but :-)

yeah, its sort of "last hope"

> On the one hand, I really like that we're getting testers for -mm
> kernels, but on the other hand, my good and honest side would
> recommend you to install stable kernels (2.6.x.y versions) on
> production systems, if you really care about uptimes.

thats fine. its just my workstation here. I would never ever do that on
any production box. I am too old to be that experimental :)

>> my config hasn't changed in any way to the previous kernels.
>
> This doesn't look like the same oops you were getting persistently
> with 2.6.21.1 ... you could try upgrading to 2.6.22-rc6 (without -mm)
> too, if the oops in 2.6.21.1 was occurring too frequently in your setup;
> possibly it has been resolved in the 22-rc series.

I will try that. thanks a lot for the tip (I upgraded to rc6-mm1, and I
will see if I get the oops again, or the other one ...)

> Satyam
>
> [ Clemens' 2.6.22-rc4-mm2 oops below. ]
>
>
> Jun 29 11:25:08 saturn kernel: [348308.690154] BUG: unable to handle
> kernel NULL pointer dereference at virtual address 00000001
> Jun 29 11:25:08 saturn kernel: [348308.690160] printing eip:
> Jun 29 11:25:08 saturn kernel: [348308.690162] c108887c
> Jun 29 11:25:08 saturn kernel: [348308.690163] *pde = 00000000
> Jun 29 11:25:08 saturn kernel: [348308.690166] Oops: 0000 [#2]
> Jun 29 11:25:08 saturn kernel: [348308.690167] PREEMPT
> Jun 29 11:25:08 saturn kernel: [348308.690169] Modules linked in:
> eeprom pcspkr i2c_viapro k8temp hwmon i2c_core
> Jun 29 11:25:08 saturn kernel: [348308.690177] CPU: 0
> Jun 29 11:25:08 saturn kernel: [348308.690177] EIP:
> 0060:[__d_lookup+108/336] Not tainted VLI
> Jun 29 11:25:08 saturn kernel: [348308.690179] EFLAGS: 00010202
> (2.6.22-rc4-mm2 #1)
> Jun 29 11:25:08 saturn kernel: [348308.690185] EIP is at
> __d_lookup+0x6c/0x150
> Jun 29 11:25:08 saturn kernel: [348308.690187] eax: 00000001 ebx:
> 00000001 ecx: 00000001 edx: 089c1579
> Jun 29 11:25:08 saturn kernel: [348308.690190] esi: c6840ee8 edi:
> c301d734 ebp: f786f080 esp: c6840e84
> Jun 29 11:25:08 saturn kernel: [348308.690193] ds: 007b es: 007b
> fs: 0000 gs: 0033 ss: 0068
> Jun 29 11:25:08 saturn kernel: [348308.690196] Process nfsd (pid:
> 30536, ti=c6840000 task=c62bce90 task.ti=c6840000)
> Jun 29 11:25:08 saturn kernel: [348308.690198] Stack: c301d734
> 089c1579 c6840edb 00000002 c6840ee8 ffffffff 00000005 c6840edb
> Jun 29 11:25:08 saturn kernel: [348308.690205] 0000f9ec
> c6840ee8 c301d734 c471ba84 c1088976 c7bbb090 c7bbb090 00000000
> Jun 29 11:25:08 saturn kernel: [348308.690211] c10b49fc
> c6840edb 0000000d c14914fb 00007793 332bce90 31313630 c5469900
> Jun 29 11:25:08 saturn kernel: [348308.690217] Call Trace:
> Jun 29 11:25:08 saturn kernel: [348308.690220] [d_lookup+22/64]
> d_lookup+0x16/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690224]
> [proc_flush_task+76/496] proc_flush_task+0x4c/0x1f0
> Jun 29 11:25:08 saturn kernel: [348308.690229] [release_task+612/880]
> release_task+0x264/0x370
> Jun 29 11:25:08 saturn kernel: [348308.690234] [do_wait+1850/3072]
> do_wait+0x73a/0xc00
> Jun 29 11:25:08 saturn kernel: [348308.690239]
> [_spin_unlock_irq+38/64] _spin_unlock_irq+0x26/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690243]
> [default_wake_function+0/16] default_wake_function+0x0/0x10
> Jun 29 11:25:08 saturn kernel: [348308.690247] [sys_wait4+49/64]
> sys_wait4+0x31/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690251] [sys_waitpid+39/48]
> sys_waitpid+0x27/0x30
> Jun 29 11:25:08 saturn kernel: [348308.690255] [syscall_call+7/11]
> syscall_call+0x7/0xb
> Jun 29 11:25:08 saturn kernel: [348308.690259] =======================
> Jun 29 11:25:08 saturn kernel: [348308.690260] INFO: lockdep is turned off.
> Jun 29 11:25:08 saturn kernel: [348308.690262] Code: d3 e8 31 c3 23 1d
> b4 d8 51 c1 b8 01 00 00 00 c1 e3 02 03 1d bc d8 51 c1 e8 e2 24 f9 ff
> 8b 1b 85 db 75 08 eb 44 85 c0 89 c3 74 3e <8b> 03 0f 18 00 90 8d 6b d8
> 8b 54 24 04 3b 55 34 75 e8 8b 34 24
> Jun 29 11:25:08 saturn kernel: [348308.690289] EIP:
> [__d_lookup+108/336] __d_lookup+0x6c/0x150 SS:ESP 0068:c6840e84
> Jun 29 11:25:08 saturn kernel: [348308.690296] note: nfsd[30536]
> exited with preempt_count 1
> Jun 29 11:25:08 saturn kernel: [348308.690303] BUG: scheduling while
> atomic: nfsd/0x10000002/30536
> Jun 29 11:25:08 saturn kernel: [348308.690305] INFO: lockdep is turned off.
> Jun 29 11:25:08 saturn kernel: [348308.690307] [schedule+1490/1744]
> schedule+0x5d2/0x6d0
> Jun 29 11:25:08 saturn kernel: [348308.690311]
> [vt_console_print+106/688] vt_console_print+0x6a/0x2b0
> Jun 29 11:25:08 saturn kernel: [348308.690316] [__cond_resched+18/48]
> __cond_resched+0x12/0x30
> Jun 29 11:25:08 saturn kernel: [348308.690319] [cond_resched+42/64]
> cond_resched+0x2a/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690322] [unmap_vmas+1116/1184]
> unmap_vmas+0x45c/0x4a0
> Jun 29 11:25:08 saturn kernel: [348308.690327] [exit_mmap+105/256]
> exit_mmap+0x69/0x100
> Jun 29 11:25:08 saturn kernel: [348308.690331] [mmput+68/256]
> mmput+0x44/0x100
> Jun 29 11:25:08 saturn kernel: [348308.690335] [do_exit+301/2224]
> do_exit+0x12d/0x8b0
> Jun 29 11:25:08 saturn kernel: [348308.690339] [__wake_up+56/80]
> __wake_up+0x38/0x50
> Jun 29 11:25:08 saturn kernel: [348308.690342] [die+574/576]
> die+0x23e/0x240
> Jun 29 11:25:08 saturn kernel: [348308.690346]
> [do_page_fault+724/1520] do_page_fault+0x2d4/0x5f0
> Jun 29 11:25:08 saturn kernel: [348308.690349] [tcp_ack+2742/6960]
> tcp_ack+0xab6/0x1b30
> Jun 29 11:25:08 saturn kernel: [348308.690354] [do_page_fault+0/1520]
> do_page_fault+0x0/0x5f0
> Jun 29 11:25:08 saturn kernel: [348308.690357] [error_code+106/112]
> error_code+0x6a/0x70
> Jun 29 11:25:08 saturn kernel: [348308.690360] [__d_lookup+108/336]
> __d_lookup+0x6c/0x150
> Jun 29 11:25:08 saturn kernel: [348308.690364] [d_lookup+22/64]
> d_lookup+0x16/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690367]
> [proc_flush_task+76/496] proc_flush_task+0x4c/0x1f0
> Jun 29 11:25:08 saturn kernel: [348308.690372] [release_task+612/880]
> release_task+0x264/0x370
> Jun 29 11:25:08 saturn kernel: [348308.690376] [do_wait+1850/3072]
> do_wait+0x73a/0xc00
> Jun 29 11:25:08 saturn kernel: [348308.690380]
> [_spin_unlock_irq+38/64] _spin_unlock_irq+0x26/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690383]
> [default_wake_function+0/16] default_wake_function+0x0/0x10
> Jun 29 11:25:08 saturn kernel: [348308.690387] [sys_wait4+49/64]
> sys_wait4+0x31/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690390] [sys_waitpid+39/48]
> sys_waitpid+0x27/0x30
> Jun 29 11:25:08 saturn kernel: [348308.690394] [syscall_call+7/11]
> syscall_call+0x7/0xb
> Jun 29 11:25:08 saturn kernel: [348308.690398] =======================
> Jun 29 11:25:08 saturn kernel: [348308.690472] BUG: scheduling while
> atomic: nfsd/0x10000002/30536
> Jun 29 11:25:08 saturn kernel: [348308.690474] INFO: lockdep is turned off.
> Jun 29 11:25:08 saturn kernel: [348308.690476] [schedule+1490/1744]
> schedule+0x5d2/0x6d0
> Jun 29 11:25:08 saturn kernel: [348308.690480]
> [_atomic_dec_and_lock+22/96] _atomic_dec_and_lock+0x16/0x60
> Jun 29 11:25:08 saturn kernel: [348308.690485]
> [_atomic_dec_and_lock+49/96] _atomic_dec_and_lock+0x31/0x60
> Jun 29 11:25:08 saturn kernel: [348308.690489] [__cond_resched+18/48]
> __cond_resched+0x12/0x30
> Jun 29 11:25:08 saturn kernel: [348308.690492] [cond_resched+42/64]
> cond_resched+0x2a/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690495]
> [put_files_struct+166/208] put_files_struct+0xa6/0xd0
> Jun 29 11:25:08 saturn kernel: [348308.690499] [do_exit+363/2224]
> do_exit+0x16b/0x8b0
> Jun 29 11:25:08 saturn kernel: [348308.690503] [__wake_up+56/80]
> __wake_up+0x38/0x50
> Jun 29 11:25:08 saturn kernel: [348308.690506] [die+574/576]
> die+0x23e/0x240
> Jun 29 11:25:08 saturn kernel: [348308.690510]
> [do_page_fault+724/1520] do_page_fault+0x2d4/0x5f0
> Jun 29 11:25:08 saturn kernel: [348308.690513] [tcp_ack+2742/6960]
> tcp_ack+0xab6/0x1b30
> Jun 29 11:25:08 saturn kernel: [348308.690517] [do_page_fault+0/1520]
> do_page_fault+0x0/0x5f0
> Jun 29 11:25:08 saturn kernel: [348308.690520] [error_code+106/112]
> error_code+0x6a/0x70
> Jun 29 11:25:08 saturn kernel: [348308.690524] [__d_lookup+108/336]
> __d_lookup+0x6c/0x150
> Jun 29 11:25:08 saturn kernel: [348308.690528] [d_lookup+22/64]
> d_lookup+0x16/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690531]
> [proc_flush_task+76/496] proc_flush_task+0x4c/0x1f0
> Jun 29 11:25:08 saturn kernel: [348308.690535] [release_task+612/880]
> release_task+0x264/0x370
> Jun 29 11:25:08 saturn kernel: [348308.690539] [do_wait+1850/3072]
> do_wait+0x73a/0xc00
> Jun 29 11:25:08 saturn kernel: [348308.690543]
> [_spin_unlock_irq+38/64] _spin_unlock_irq+0x26/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690547]
> [default_wake_function+0/16] default_wake_function+0x0/0x10
> Jun 29 11:25:08 saturn kernel: [348308.690551] [sys_wait4+49/64]
> sys_wait4+0x31/0x40
> Jun 29 11:25:08 saturn kernel: [348308.690554] [sys_waitpid+39/48]
> sys_waitpid+0x27/0x30
> Jun 29 11:25:08 saturn kernel: [348308.690558] [syscall_call+7/11]
> syscall_call+0x7/0xb
> Jun 29 11:25:08 saturn kernel: [348308.690561] =======================


--
[ Clemens Schwaighofer -----=====:::::~ ]
[ TEQUILA\ Japan IT Group ]
[ 6-17-2 Ginza Chuo-ku, Tokyo 104-8167, JAPAN ]
[ Tel: +81-(0)3-3545-7703 Fax: +81-(0)3-3545-7343 ]
[ http://www.tequila.co.jp ]


Attachments:
signature.asc (252.00 B)
OpenPGP digital signature