2006-10-30 14:34:04

by Mark Lord

[permalink] [raw]
Subject: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.19-rc3-git7
# Mon Oct 30 09:23:22 2006
#
CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=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_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32

#
# General setup
#
CONFIG_LOCALVERSION="-ml"
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
# CONFIG_CPUSETS is not set
# CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# 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=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
CONFIG_STOP_MACHINE=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 is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"

#
# Processor type and features
#
CONFIG_SMP=y
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_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_MPENTIUM4=y
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# 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=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
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_NR_CPUS=2
# CONFIG_SCHED_SMT is not set
CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_PREEMPT is not set
# CONFIG_PREEMPT_BKL is not set
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_NONFATAL is not set
CONFIG_X86_MCE_P4THERMAL=y
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=m
# CONFIG_EFI_VARS is not set
CONFIG_DELL_RBU=m
CONFIG_DCDBAS=m
# 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 is not set
# CONFIG_HIGHPTE is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_EFI=y
CONFIG_IRQBALANCE=y
CONFIG_BOOT_IOREMAP=y
CONFIG_REGPARM=y
# CONFIG_SECCOMP is not set
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_KEXEC is not set
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x100000
# CONFIG_HOTPLUG_CPU is not set
CONFIG_COMPAT_VDSO=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SYSFS_DEPRECATED=y

#
# ACPI (Advanced Configuration and Power Interface) Support
#
CONFIG_ACPI=y
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
# CONFIG_ACPI_VIDEO is not set
# CONFIG_ACPI_HOTKEY is not set
CONFIG_ACPI_FAN=m
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_PROCESSOR=m
CONFIG_ACPI_THERMAL=m
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_IBM is not set
# CONFIG_ACPI_TOSHIBA is not set
# CONFIG_ACPI_CUSTOM_DSDT 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=y
CONFIG_CPU_FREQ_TABLE=m
# CONFIG_CPU_FREQ_DEBUG is not set
# CONFIG_CPU_FREQ_STAT is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m

#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=m
# CONFIG_X86_POWERNOW_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_ICH=m
CONFIG_X86_SPEEDSTEP_SMI=m
CONFIG_X86_P4_CLOCKMOD=m
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set

#
# shared options
#
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
CONFIG_X86_SPEEDSTEP_LIB=m
CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y

#
# 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_MULTITHREAD_PROBE is not set
# CONFIG_PCI_DEBUG is not set
# CONFIG_HT_IRQ is not set
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
CONFIG_SCx200=m
# CONFIG_SCx200HR_TIMER is not set

#
# 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=m
CONFIG_BINFMT_MISC=m

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
# CONFIG_NETDEBUG is not set
CONFIG_PACKET=m
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
CONFIG_NET_KEY=m
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
# 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=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set

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

#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DBG_MSG is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y

#
# 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=m
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# 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 is not set

#
# Network testing
#
CONFIG_NET_PKTGEN=m
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_IEEE80211 is not set
CONFIG_FIB_RULES=y

#
# Device Drivers
#

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

#
# Connector - unified userspace <-> kernelspace linker
#
CONFIG_CONNECTOR=m

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

#
# Parallel port support
#
# CONFIG_PARPORT is not set

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

#
# Protocols
#
CONFIG_ISAPNP=y
# CONFIG_PNPBIOS is not set
CONFIG_PNPACPI=y

#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD 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=y
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=64000
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD 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

#
# ATA/ATAPI/MFM/RLL support
#
# CONFIG_IDE is not set

#
# SCSI device support
#
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
# 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=y
# CONFIG_BLK_DEV_SR_VENDOR 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=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=m
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
CONFIG_SCSI_SAS_ATTRS=m
CONFIG_SCSI_SAS_LIBSAS=m
# CONFIG_SCSI_SAS_LIBSAS_DEBUG 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_7000FASST is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 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_IN2000 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_DTC3280 is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS 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_SYM53C416 is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_ULTRASTOR is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set

#
# Serial ATA (prod) and Parallel ATA (experimental) drivers
#
CONFIG_ATA=y
CONFIG_SATA_AHCI=y
# CONFIG_SATA_SVW is not set
CONFIG_ATA_PIIX=m
# 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 is not set
# CONFIG_SATA_VITESSE is not set
# 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_ISAPNP is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_LEGACY is not set
# CONFIG_PATA_TRIFLEX 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_QDI 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

#
# Old CD-ROM drivers (not SCSI, not IDE)
#
# CONFIG_CD_NO_IDESCSI is not set

#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID456=m
CONFIG_MD_RAID5_RESHAPE=y
CONFIG_MD_MULTIPATH=m
# CONFIG_MD_FAULTY is not set
CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_EMC=m

#
# 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=m

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

#
# Device Drivers
#
CONFIG_IEEE1394_PCILYNX=m
CONFIG_IEEE1394_OHCI1394=m

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

#
# I2O device support
#
# CONFIG_I2O is not set

#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
# 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=m
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set

#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set

#
# Ethernet (1000 Mbit)
#
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
CONFIG_DL2K=m
CONFIG_E1000=m
CONFIG_E1000_NAPI=y
# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
CONFIG_NS83820=m
CONFIG_HAMACHI=m
CONFIG_YELLOWFIN=m
CONFIG_R8169=m
# CONFIG_R8169_NAPI is not set
CONFIG_SIS190=m
CONFIG_SKGE=m
CONFIG_SKY2=m
CONFIG_SK98LIN=m
CONFIG_TIGON3=m
CONFIG_BNX2=m
CONFIG_QLA3XXX=m

#
# Ethernet (10000 Mbit)
#
# CONFIG_CHELSIO_T1 is not set
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
# CONFIG_MYRI10GE 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_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=m
CONFIG_NETPOLL=y
CONFIG_NETPOLL_RX=y
CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y

#
# 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=m
# CONFIG_KEYBOARD_LKKBD is not set
CONFIG_KEYBOARD_XTKBD=m
CONFIG_KEYBOARD_NEWTON=m
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_INPORT=m
CONFIG_MOUSE_ATIXL=y
CONFIG_MOUSE_LOGIBM=m
CONFIG_MOUSE_PC110PAD=m
# CONFIG_MOUSE_VSXXXAA is not set
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=m
CONFIG_JOYSTICK_A3D=m
CONFIG_JOYSTICK_ADI=m
CONFIG_JOYSTICK_COBRA=m
CONFIG_JOYSTICK_GF2K=m
CONFIG_JOYSTICK_GRIP=m
CONFIG_JOYSTICK_GRIP_MP=m
CONFIG_JOYSTICK_GUILLEMOT=m
CONFIG_JOYSTICK_INTERACT=m
CONFIG_JOYSTICK_SIDEWINDER=m
CONFIG_JOYSTICK_TMDC=m
CONFIG_JOYSTICK_IFORCE=m
# CONFIG_JOYSTICK_IFORCE_USB is not set
CONFIG_JOYSTICK_IFORCE_232=y
CONFIG_JOYSTICK_WARRIOR=m
CONFIG_JOYSTICK_MAGELLAN=m
CONFIG_JOYSTICK_SPACEORB=m
CONFIG_JOYSTICK_SPACEBALL=m
CONFIG_JOYSTICK_STINGER=m
# CONFIG_JOYSTICK_TWIDJOY is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_GUNZE=m
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=y
# CONFIG_INPUT_WISTRON_BTNS is not set
CONFIG_INPUT_UINPUT=m

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=m
CONFIG_SERIO_CT82C710=m
CONFIG_SERIO_PCIPS2=m
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
CONFIG_GAMEPORT=m
CONFIG_GAMEPORT_NS558=m
CONFIG_GAMEPORT_L4=m
CONFIG_GAMEPORT_EMU10K1=m
CONFIG_GAMEPORT_FM801=m

#
# 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=y
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_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256

#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_HW_RANDOM is not set
CONFIG_NVRAM=m
CONFIG_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set

#
# Ftape, the floppy tape device driver
#
CONFIG_AGP=y
CONFIG_AGP_ALI=m
CONFIG_AGP_ATI=m
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=y
CONFIG_AGP_NVIDIA=m
# 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 is not set
# CONFIG_MWAVE is not set
# CONFIG_SCx200_GPIO 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 is not set
CONFIG_HANGCHECK_TIMER=m

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

#
# I2C support
#
CONFIG_I2C=y
# CONFIG_I2C_CHARDEV is not set

#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_ALGOPCF is not set
# CONFIG_I2C_ALGOPCA is not set

#
# 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_NFORCE2 is not set
# CONFIG_I2C_OCORES 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 is not set
# CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set

#
# Miscellaneous I2C Chip support
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set

#
# 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 is not set
# CONFIG_HWMON_VID is not set

#
# Multimedia devices
#
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_VIDEO_V4L2=y

#
# Video Capture Adapters
#

#
# Video Capture Adapters
#
# CONFIG_VIDEO_ADV_DEBUG is not set
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
CONFIG_VIDEO_TVAUDIO=m
CONFIG_VIDEO_TDA7432=m
CONFIG_VIDEO_TDA9875=m
CONFIG_VIDEO_MSP3400=m
# CONFIG_VIDEO_VIVI is not set
CONFIG_VIDEO_BT848=m
# CONFIG_VIDEO_SAA6588 is not set
# CONFIG_VIDEO_PMS is not set
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_VIDEO_SAA5246A is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_TUNER_3036 is not set
# CONFIG_VIDEO_STRADIS is not set
# CONFIG_VIDEO_ZORAN is not set
# CONFIG_VIDEO_SAA7134 is not set
# CONFIG_VIDEO_MXB is not set
# CONFIG_VIDEO_DPC is not set
# CONFIG_VIDEO_HEXIUM_ORION is not set
# CONFIG_VIDEO_HEXIUM_GEMINI is not set
# CONFIG_VIDEO_CX88 is not set

#
# V4L USB devices
#
# CONFIG_VIDEO_PVRUSB2 is not set
# CONFIG_VIDEO_EM28XX is not set
# CONFIG_USB_VICAM is not set
# CONFIG_USB_IBMCAM is not set
# CONFIG_USB_KONICAWC is not set
# CONFIG_USB_QUICKCAM_MESSENGER is not set
# CONFIG_USB_ET61X251 is not set
# CONFIG_VIDEO_OVCAMCHIP is not set
# CONFIG_USB_W9968CF is not set
# CONFIG_USB_OV511 is not set
# CONFIG_USB_SE401 is not set
# CONFIG_USB_SN9C102 is not set
# CONFIG_USB_STV680 is not set
# CONFIG_USB_ZC0301 is not set
# CONFIG_USB_PWC is not set

#
# Radio Adapters
#
# CONFIG_RADIO_CADET is not set
# CONFIG_RADIO_RTRACK is not set
# CONFIG_RADIO_RTRACK2 is not set
# CONFIG_RADIO_AZTECH is not set
# CONFIG_RADIO_GEMTEK is not set
# CONFIG_RADIO_GEMTEK_PCI is not set
# CONFIG_RADIO_MAXIRADIO is not set
# CONFIG_RADIO_MAESTRO is not set
# CONFIG_RADIO_SF16FMI is not set
# CONFIG_RADIO_SF16FMR2 is not set
# CONFIG_RADIO_TERRATEC is not set
# CONFIG_RADIO_TRUST is not set
# CONFIG_RADIO_TYPHOON is not set
# CONFIG_RADIO_ZOLTRIX is not set
# CONFIG_USB_DSBR is not set

#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
CONFIG_VIDEO_TUNER=m
CONFIG_VIDEO_BUF=m
CONFIG_VIDEO_BTCX=m
CONFIG_VIDEO_IR=m
CONFIG_VIDEO_TVEEPROM=m
# CONFIG_USB_DABUSB is not set

#
# Graphics support
#
CONFIG_FIRMWARE_EDID=y
CONFIG_FB=y
# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
CONFIG_FB_VGA16=y
CONFIG_FB_VESA=y
# CONFIG_FB_IMAC is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_I810 is not set
CONFIG_FB_INTEL=y
# CONFIG_FB_INTEL_DEBUG is not set
CONFIG_FB_INTEL_I2C=y
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_CYBLA is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_GEODE is not set
# CONFIG_FB_VIRTUAL is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
CONFIG_VIDEO_SELECT=y
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y

#
# Logo configuration
#
# CONFIG_LOGO is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#
# Sound
#
# CONFIG_SOUND 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=m
# CONFIG_USB_DEBUG is not set

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

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

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

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

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

#
# USB Input Devices
#
CONFIG_USB_HID=m
CONFIG_USB_HIDINPUT=y
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set
CONFIG_USB_HIDDEV=y

#
# USB HID Boot Protocol drivers
#
CONFIG_USB_KBD=m
CONFIG_USB_MOUSE=m
# 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=m
CONFIG_USB_TOUCHSCREEN_EGALAX=y
CONFIG_USB_TOUCHSCREEN_PANJIT=y
CONFIG_USB_TOUCHSCREEN_3M=y
CONFIG_USB_TOUCHSCREEN_ITM=y
CONFIG_USB_TOUCHSCREEN_ETURBO=y
CONFIG_USB_TOUCHSCREEN_GUNZE=y
# CONFIG_USB_YEALINK is not set
# CONFIG_USB_XPAD is not set
CONFIG_USB_ATI_REMOTE=m
CONFIG_USB_ATI_REMOTE2=m
CONFIG_USB_KEYSPAN_REMOTE=m
# CONFIG_USB_APPLETOUCH is not set

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

#
# USB Network Adapters
#
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_CDCETHER=m
CONFIG_USB_NET_GL620A=m
CONFIG_USB_NET_NET1080=m
CONFIG_USB_NET_PLUSB=m
CONFIG_USB_NET_MCS7830=m
CONFIG_USB_NET_RNDIS_HOST=m
CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
CONFIG_USB_EPSON2888=y
CONFIG_USB_NET_ZAURUS=m
CONFIG_USB_MON=y

#
# USB port drivers
#

#
# USB Serial Converter support
#
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
# CONFIG_USB_SERIAL_AIRCABLE is not set
CONFIG_USB_SERIAL_AIRPRIME=m
CONFIG_USB_SERIAL_ARK3116=m
CONFIG_USB_SERIAL_BELKIN=m
CONFIG_USB_SERIAL_WHITEHEAT=m
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_FUNSOFT=m
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
CONFIG_USB_SERIAL_EDGEPORT=m
CONFIG_USB_SERIAL_EDGEPORT_TI=m
CONFIG_USB_SERIAL_GARMIN=m
CONFIG_USB_SERIAL_IPW=m
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
CONFIG_USB_SERIAL_KEYSPAN=m
# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
CONFIG_USB_SERIAL_KLSI=m
CONFIG_USB_SERIAL_KOBIL_SCT=m
CONFIG_USB_SERIAL_MCT_U232=m
CONFIG_USB_SERIAL_MOS7720=m
CONFIG_USB_SERIAL_MOS7840=m
CONFIG_USB_SERIAL_NAVMAN=m
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_SERIAL_HP4X=m
CONFIG_USB_SERIAL_SAFE=m
# CONFIG_USB_SERIAL_SAFE_PADDED is not set
CONFIG_USB_SERIAL_SIERRAWIRELESS=m
CONFIG_USB_SERIAL_TI=m
CONFIG_USB_SERIAL_CYBERJACK=m
CONFIG_USB_SERIAL_XIRCOM=m
CONFIG_USB_SERIAL_OPTION=m
CONFIG_USB_SERIAL_OMNINET=m
CONFIG_USB_EZUSB=y

#
# USB Miscellaneous drivers
#
CONFIG_USB_EMI62=m
CONFIG_USB_EMI26=m
CONFIG_USB_ADUTUX=m
# 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_LED is not set
CONFIG_USB_CYPRESS_CY7C63=m
CONFIG_USB_CYTHERM=m
CONFIG_USB_PHIDGET=m
CONFIG_USB_PHIDGETKIT=m
CONFIG_USB_PHIDGETMOTORCONTROL=m
CONFIG_USB_PHIDGETSERVO=m
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
CONFIG_USB_SISUSBVGA=m
# CONFIG_USB_SISUSBVGA_CON is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR 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=y

#
# Reporting subsystems
#
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_MM_EDAC=m
# CONFIG_EDAC_AMD76X is not set
CONFIG_EDAC_E7XXX=m
CONFIG_EDAC_E752X=m
CONFIG_EDAC_I82875P=m
CONFIG_EDAC_I82860=m
# CONFIG_EDAC_R82600 is not set
CONFIG_EDAC_POLL=y

#
# 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=y

#
# RTC drivers
#
CONFIG_RTC_DRV_X1205=m
CONFIG_RTC_DRV_DS1307=m
CONFIG_RTC_DRV_DS1553=m
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_DS1672=m
CONFIG_RTC_DRV_DS1742=m
CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_RS5C372=m
CONFIG_RTC_DRV_M48T86=m
CONFIG_RTC_DRV_TEST=m
CONFIG_RTC_DRV_V3020=m

#
# DMA Engine support
#
CONFIG_DMA_ENGINE=y

#
# DMA Clients
#
CONFIG_NET_DMA=y

#
# DMA Devices
#
CONFIG_INTEL_IOATDMA=m

#
# File systems
#
CONFIG_EXT2_FS=m
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=m
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4DEV_FS=m
CONFIG_EXT4DEV_FS_XATTR=y
CONFIG_EXT4DEV_FS_POSIX_ACL=y
CONFIG_EXT4DEV_FS_SECURITY=y
CONFIG_JBD=m
CONFIG_JBD_DEBUG=y
CONFIG_JBD2=m
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=m
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
CONFIG_ROMFS_FS=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m
# CONFIG_FUSE_FS is not set

#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set

#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set

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

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# 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 is not set
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
# CONFIG_NFSD_V4 is not set
CONFIG_NFSD_TCP=y
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
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 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set

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

#
# Distributed Lock Manager
#
CONFIG_DLM=m
# CONFIG_DLM_DEBUG is not set

#
# Instrumentation Support
#
# CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_RWSEMS=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set
CONFIG_DEBUG_LIST=y
# CONFIG_FRAME_POINTER is not set
CONFIG_UNWIND_INFO=y
CONFIG_STACK_UNWIND=y
CONFIG_FORCED_INLINING=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_RODATA is not set
# CONFIG_4KSTACKS is not set
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_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 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_ECB is not set
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
# CONFIG_CRYPTO_TWOFISH_586 is not set
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_AES_586 is not set
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
# CONFIG_CRYPTO_TEA is not set
CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
CONFIG_CRYPTO_TEST=m

#
# Hardware crypto devices
#
# CONFIG_CRYPTO_DEV_PADLOCK is not set

#
# Library routines
#
CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_PLIST=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_X86_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_KTIME_SCALAR=y


Attachments:
dot_config.txt (39.00 kB)

2006-10-30 14:41:38

by Jens Axboe

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

On Mon, Oct 30 2006, Mark Lord wrote:
> =================================
> [ INFO: inconsistent lock state ]
> 2.6.19-rc3-git7-ml #3
> ---------------------------------
> inconsistent {in-softirq-W} -> {softirq-on-W} usage.
> startproc/4046 [HC0[0]:SC0[0]:HE1:SE1] takes:
> (&q->__queue_lock){-+..}, at: [<c0219091>] cfq_set_request+0x351/0x3b0
> {in-softirq-W} state was registered at:
> [<c01376b1>] mark_lock+0x81/0x5f0
> [<c0138a90>] __lock_acquire+0x660/0xc10
> [<c013939d>] lock_acquire+0x5d/0x80
> [<c0361c59>] _spin_lock+0x29/0x40
> [<c029fa24>] scsi_device_unbusy+0x64/0x90
> [<c029a5bc>] scsi_finish_command+0x1c/0xa0
> [<c02115c2>] blk_done_softirq+0x62/0x70
> [<c0122a27>] __do_softirq+0x87/0x100
> [<c0122af5>] do_softirq+0x55/0x60
> [<c0122f3c>] ksoftirqd+0x7c/0xd0
> [<c0130f76>] kthread+0xf6/0x100
> [<c0103c6f>] kernel_thread_helper+0x7/0x18
> [<ffffffff>] 0xffffffff
> irq event stamp: 3331
> hardirqs last enabled at (3331): [<c016326d>] kmem_cache_alloc+0x6d/0xa0
> hardirqs last disabled at (3330): [<c016321f>] kmem_cache_alloc+0x1f/0xa0
> softirqs last enabled at (3012): [<c0122af5>] do_softirq+0x55/0x60
> softirqs last disabled at (2971): [<c0122af5>] do_softirq+0x55/0x60

Not sure what exactly is complained about here. The queue_lock must
always be grabbed with an irq disabling option, such as _irq or _irqsave
if potentially in interrupt context. I'm guessing it's the
scsi_device_unbusy() locking sequence that confuses it:

spin_lock_irqsave(shost->host_lock, flags);
...
spin_unlock(shost->host_lock);
spin_lock(sdev->request_queue->queue_lock);
...
spin_unlock_irqrestore(sdev->request_queue->queue_lock, flags);

which has always been considered safe, while not very pretty.

Ingo?

--
Jens Axboe

2006-10-30 14:57:26

by Arjan van de Ven

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state


> which has always been considered safe, while not very pretty.


actually it's different I think (based on a brief inspection of the
code, I could well be wrong):
get_request_wait() causes a get_request() call with a GFP_NOIO gfp_mask
which perculates upto cfq_set_request() as argument.
cfq_set_request() then calls the inline cfq_get_queue() (which isn't in
the backtrace due to inlining) which does
} else if (gfp_mask & __GFP_WAIT) {
/*
* Inform the allocator of the fact that we will
* just repeat this allocation if it fails, to allow
* the allocator to do whatever it needs to attempt to
* free memory.
*/
spin_unlock_irq(cfqd->queue->queue_lock);

which enables interrupts right smack in the middle of holding a whole
bunch of locks.....

so to me it looks like lockdep at least has the appearance of moaning
about a reasonably fishy situation...



--
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org


2006-10-30 15:43:09

by Jens Axboe

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

On Mon, Oct 30 2006, Arjan van de Ven wrote:
>
> > which has always been considered safe, while not very pretty.
>
>
> actually it's different I think (based on a brief inspection of the
> code, I could well be wrong):
> get_request_wait() causes a get_request() call with a GFP_NOIO gfp_mask
> which perculates upto cfq_set_request() as argument.
> cfq_set_request() then calls the inline cfq_get_queue() (which isn't in
> the backtrace due to inlining) which does
> } else if (gfp_mask & __GFP_WAIT) {
> /*
> * Inform the allocator of the fact that we will
> * just repeat this allocation if it fails, to allow
> * the allocator to do whatever it needs to attempt to
> * free memory.
> */
> spin_unlock_irq(cfqd->queue->queue_lock);
>
> which enables interrupts right smack in the middle of holding a whole
> bunch of locks.....

Where do you get 'a bunch' from? If you call get_request() with a
gfp_mask that includes __GFP_WAIT with a spinlock held, it's a bug. Just
as if you had called kmalloc() or similar with __GFP_WAIT set and
holding a lock. cfq even includes a warning check:

might_sleep_if(gfp_mask & __GFP_WAIT);

So there's no bug there, cfq even grabbed the lock on its own before
calling cfq_get_queue().

> so to me it looks like lockdep at least has the appearance of moaning
> about a reasonably fishy situation...

To me it looks more about lockdep complaining because it doesn't grok
the full picture. The question is how to shut it up.

--
Jens Axboe

2006-10-30 16:16:48

by Arjan van de Ven

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state


>
> > so to me it looks like lockdep at least has the appearance of moaning
> > about a reasonably fishy situation...
>
> To me it looks more about lockdep complaining because it doesn't grok
> the full picture. The question is how to shut it up.

ok that is quite possible. But I do think you read the original output
incorrectly so let me at least phrase it in english:


__queue_lock is used in softirq context like this:
[<c0361c59>] _spin_lock+0x29/0x40
[<c029fa24>] scsi_device_unbusy+0x64/0x90
[<c029a5bc>] scsi_finish_command+0x1c/0xa0
[<c02115c2>] blk_done_softirq+0x62/0x70
[<c0122a27>] __do_softirq+0x87/0x100
[<c0122af5>] do_softirq+0x55/0x60
[<c0122f3c>] ksoftirqd+0x7c/0xd0
[<c0130f76>] kthread+0xf6/0x100

which means that it always has to be taken _irq / _irqsave and one never
can enable interrupts while holding this lock. This backtrace is from
the first time the lock was taken in irq context.

Now a new situation has arisen that violates this constraint, and it
looks like this:


[<c0219091>] cfq_set_request+0x351/0x3b0
[<c020c7fc>] elv_set_request+0x1c/0x40
[<c020fcff>] get_request+0x23f/0x270
[<c0210537>] get_request_wait+0x27/0x120
[<c02107ca>] __make_request+0x5a/0x350
[<c020f40f>] generic_make_request+0x16f/0x220
[<c02117e4>] submit_bio+0x64/0x110

now cfq_set_request() uses several inlines which muddies the situation,
but lockdep claims one of them is not done correctly. (eg either it
takes the lock incorrectly or something does spin_unlock_irq while the
lock is held)


I get the impression you assumed lockdep was complaining about
scsi_device_unbusy; but it's not; that function is only referenced since
it's the first place since boot where the lock was taken in softirq
context... not because the violation is occuring there.



--
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org

2006-10-30 16:24:44

by Jens Axboe

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

On Mon, Oct 30 2006, Arjan van de Ven wrote:
>
> >
> > > so to me it looks like lockdep at least has the appearance of moaning
> > > about a reasonably fishy situation...
> >
> > To me it looks more about lockdep complaining because it doesn't grok
> > the full picture. The question is how to shut it up.
>
> ok that is quite possible. But I do think you read the original output
> incorrectly so let me at least phrase it in english:
>
>
> __queue_lock is used in softirq context like this:
> [<c0361c59>] _spin_lock+0x29/0x40
> [<c029fa24>] scsi_device_unbusy+0x64/0x90
> [<c029a5bc>] scsi_finish_command+0x1c/0xa0
> [<c02115c2>] blk_done_softirq+0x62/0x70
> [<c0122a27>] __do_softirq+0x87/0x100
> [<c0122af5>] do_softirq+0x55/0x60
> [<c0122f3c>] ksoftirqd+0x7c/0xd0
> [<c0130f76>] kthread+0xf6/0x100
>
> which means that it always has to be taken _irq / _irqsave and one never
> can enable interrupts while holding this lock. This backtrace is from
> the first time the lock was taken in irq context.
>
> Now a new situation has arisen that violates this constraint, and it
> looks like this:
>
>
> [<c0219091>] cfq_set_request+0x351/0x3b0
> [<c020c7fc>] elv_set_request+0x1c/0x40
> [<c020fcff>] get_request+0x23f/0x270
> [<c0210537>] get_request_wait+0x27/0x120
> [<c02107ca>] __make_request+0x5a/0x350
> [<c020f40f>] generic_make_request+0x16f/0x220
> [<c02117e4>] submit_bio+0x64/0x110
>
> now cfq_set_request() uses several inlines which muddies the situation,
> but lockdep claims one of them is not done correctly. (eg either it
> takes the lock incorrectly or something does spin_unlock_irq while the
> lock is held)

It's not really inlined trickery, the trace is exactly as printed. A few
things may be allocated from that path, so we pass gfp_mask around. I'll
double check it tonight, but I don't currently see what could be wrong.
Would lockdep complain about:

spin_lock_irqsave(lock, flags);
...
spin_unlock_irq(lock);
...
spin_lock_irq(lock);
...
spin_unlock_irqrestore(lock, flags);

? cfq will do that, but only if it knew that interrupts were currently
enabled when we originally made the _irqsave call (when __GFP_WAIT is
set).

> I get the impression you assumed lockdep was complaining about
> scsi_device_unbusy; but it's not; that function is only referenced since
> it's the first place since boot where the lock was taken in softirq
> context... not because the violation is occuring there.

Yeah, I read it in the reverse order. To be honest, the lockdep output
is not immediately parseable to me, I guess I need to read the
documentation.

--
Jens Axboe

2006-10-30 16:32:04

by Arjan van de Ven

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state


> >
> >
> > [<c0219091>] cfq_set_request+0x351/0x3b0
> > [<c020c7fc>] elv_set_request+0x1c/0x40
> > [<c020fcff>] get_request+0x23f/0x270
> > [<c0210537>] get_request_wait+0x27/0x120
> > [<c02107ca>] __make_request+0x5a/0x350
> > [<c020f40f>] generic_make_request+0x16f/0x220
> > [<c02117e4>] submit_bio+0x64/0x110
> >
> > now cfq_set_request() uses several inlines which muddies the situation,
> > but lockdep claims one of them is not done correctly. (eg either it
> > takes the lock incorrectly or something does spin_unlock_irq while the
> > lock is held)
>
> It's not really inlined trickery, the trace is exactly as printed.

what I meant is that cfq_set_request() calls a few inlines that also
take locks so it might be one of those instead

> A few
> things may be allocated from that path, so we pass gfp_mask around. I'll
> double check it tonight, but I don't currently see what could be wrong.
> Would lockdep complain about:
>
> spin_lock_irqsave(lock, flags);
> ...
> spin_unlock_irq(lock);
> ...
> spin_lock_irq(lock);
> ...
> spin_unlock_irqrestore(lock, flags);

this is fine for lockdep IF and only IF there is no "out lock" held
around this that requires irqs to be off. So if you do

spin_lock_irqsave(lock1, flags);
...
spin_lock_irqsave(lock2, flags);
spin_unlock_irq(lock2)
...

then lockdep WILL complain, and rightfully so, about a violation since
lock1 gets violated here ;)


--
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org

2006-10-30 17:50:48

by Jens Axboe

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

On Mon, Oct 30 2006, Arjan van de Ven wrote:
>
> > >
> > >
> > > [<c0219091>] cfq_set_request+0x351/0x3b0
> > > [<c020c7fc>] elv_set_request+0x1c/0x40
> > > [<c020fcff>] get_request+0x23f/0x270
> > > [<c0210537>] get_request_wait+0x27/0x120
> > > [<c02107ca>] __make_request+0x5a/0x350
> > > [<c020f40f>] generic_make_request+0x16f/0x220
> > > [<c02117e4>] submit_bio+0x64/0x110
> > >
> > > now cfq_set_request() uses several inlines which muddies the situation,
> > > but lockdep claims one of them is not done correctly. (eg either it
> > > takes the lock incorrectly or something does spin_unlock_irq while the
> > > lock is held)
> >
> > It's not really inlined trickery, the trace is exactly as printed.
>
> what I meant is that cfq_set_request() calls a few inlines that also
> take locks so it might be one of those instead

I looked over them, and cfq_cic_link() should use _irqsave() instead of
_irq() if called without __GFP_WAIT set. That doesn't happen in the
normal io path though, so I'm not sure that is it.

So if the bug is using spin_lock_irq() with interrupts already disabled,
iirc that would trigger a different warning...

> > A few
> > things may be allocated from that path, so we pass gfp_mask around. I'll
> > double check it tonight, but I don't currently see what could be wrong.
> > Would lockdep complain about:
> >
> > spin_lock_irqsave(lock, flags);
> > ...
> > spin_unlock_irq(lock);
> > ...
> > spin_lock_irq(lock);
> > ...
> > spin_unlock_irqrestore(lock, flags);
>
> this is fine for lockdep IF and only IF there is no "out lock" held
> around this that requires irqs to be off. So if you do
>
> spin_lock_irqsave(lock1, flags);
> ...
> spin_lock_irqsave(lock2, flags);
> spin_unlock_irq(lock2)
> ...
>
> then lockdep WILL complain, and rightfully so, about a violation since
> lock1 gets violated here ;)

Naturally, that is a bug fair and simple, nothing to do with lockdep.


diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 4bae64e..da9bddf 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1355,6 +1355,7 @@ cfq_cic_link(struct cfq_data *cfqd, stru
struct rb_node **p;
struct rb_node *parent;
struct cfq_io_context *__cic;
+ unsigned long flags;
void *k;

cic->ioc = ioc;
@@ -1384,9 +1385,9 @@ restart:
rb_link_node(&cic->rb_node, parent, p);
rb_insert_color(&cic->rb_node, &ioc->cic_root);

- spin_lock_irq(cfqd->queue->queue_lock);
+ spin_lock_irqsave(cfqd->queue->queue_lock, flags);
list_add(&cic->queue_list, &cfqd->cic_list);
- spin_unlock_irq(cfqd->queue->queue_lock);
+ spin_unlock_irqrestore(cfqd->queue->queue_lock, flags);
}

/*

--
Jens Axboe

2006-10-30 17:54:40

by Mark Lord

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

Jens Axboe wrote:
> I looked over them, and cfq_cic_link() should use _irqsave() instead of
> _irq() if called without __GFP_WAIT set. That doesn't happen in the
> normal io path though, so I'm not sure that is it.
>
> So if the bug is using spin_lock_irq() with interrupts already disabled,
> iirc that would trigger a different warning...
..

This seems 100% reproduceable here, so if there's any specific instrumentation
that might be useful, just let me know. Meanwhile I'll try Jen's patch (below).

-ml

>
> diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> index 4bae64e..da9bddf 100644
> --- a/block/cfq-iosched.c
> +++ b/block/cfq-iosched.c
> @@ -1355,6 +1355,7 @@ cfq_cic_link(struct cfq_data *cfqd, stru
> struct rb_node **p;
> struct rb_node *parent;
> struct cfq_io_context *__cic;
> + unsigned long flags;
> void *k;
>
> cic->ioc = ioc;
> @@ -1384,9 +1385,9 @@ restart:
> rb_link_node(&cic->rb_node, parent, p);
> rb_insert_color(&cic->rb_node, &ioc->cic_root);
>
> - spin_lock_irq(cfqd->queue->queue_lock);
> + spin_lock_irqsave(cfqd->queue->queue_lock, flags);
> list_add(&cic->queue_list, &cfqd->cic_list);
> - spin_unlock_irq(cfqd->queue->queue_lock);
> + spin_unlock_irqrestore(cfqd->queue->queue_lock, flags);
> }

2006-10-30 17:54:30

by Ingo Molnar

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state


* Jens Axboe <[email protected]> wrote:

> > > things may be allocated from that path, so we pass gfp_mask around. I'll
> > > double check it tonight, but I don't currently see what could be wrong.
> > > Would lockdep complain about:
> > >
> > > spin_lock_irqsave(lock, flags);
> > > ...
> > > spin_unlock_irq(lock);
> > > ...
> > > spin_lock_irq(lock);
> > > ...
> > > spin_unlock_irqrestore(lock, flags);
> >
> > this is fine for lockdep IF and only IF there is no "out lock" held
> > around this that requires irqs to be off. So if you do
> >
> > spin_lock_irqsave(lock1, flags);
> > ...
> > spin_lock_irqsave(lock2, flags);
> > spin_unlock_irq(lock2)
> > ...
> >
> > then lockdep WILL complain, and rightfully so, about a violation since
> > lock1 gets violated here ;)
>
> Naturally, that is a bug fair and simple, nothing to do with lockdep.

well, finding such locking bugs is the main purpose of lockdep, so there
is at least some connection i'd say ;-)

Ingo

2006-10-30 17:56:39

by Arjan van de Ven

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state


> > what I meant is that cfq_set_request() calls a few inlines that also
> > take locks so it might be one of those instead
>
> I looked over them, and cfq_cic_link() should use _irqsave() instead of
> _irq() if called without __GFP_WAIT set. That doesn't happen in the
> normal io path though, so I'm not sure that is it.
>
> So if the bug is using spin_lock_irq() with interrupts already disabled,
> iirc that would trigger a different warning...

it's not spin_lock_irq() that'll warn, but the unlock... :)

> Naturally, that is a bug fair and simple, nothing to do with lockdep.
>
>
> diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> index 4bae64e..da9bddf 100644
> --- a/block/cfq-iosched.c
> +++ b/block/cfq-iosched.c
> @@ -1355,6 +1355,7 @@ cfq_cic_link(struct cfq_data *cfqd, stru
> structirely reason rb_node **p;
> struct rb_node *parent;
> struct cfq_io_context *__cic;
> + unsigned long flags;
> void *k;
>
> cic->ioc = ioc;
> @@ -1384,9 +1385,9 @@ restart:
> rb_link_node(&cic->rb_node, parent, p);
> rb_insert_color(&cic->rb_node, &ioc->cic_root);
>
> - spin_lock_irq(cfqd->queue->queue_lock);
> + spin_lock_irqsave(cfqd->queue->queue_lock, flags);
> list_add(&cic->queue_list, &cfqd->cic_list);
> - spin_unlock_irq(cfqd->queue->queue_lock);
> + spin_unlock_irqrestore(cfqd->queue->queue_lock, flags);
> }

this looks entirely reasonable and correct

Acked-By: Arjan van de Ven <[email protected]>

--
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org

2006-10-30 17:58:43

by Ingo Molnar

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state


* Arjan van de Ven <[email protected]> wrote:

> > struct rb_node *parent;
> > struct cfq_io_context *__cic;
> > + unsigned long flags;
> > void *k;
> >
> > cic->ioc = ioc;
> > @@ -1384,9 +1385,9 @@ restart:
> > rb_link_node(&cic->rb_node, parent, p);
> > rb_insert_color(&cic->rb_node, &ioc->cic_root);
> >
> > - spin_lock_irq(cfqd->queue->queue_lock);
> > + spin_lock_irqsave(cfqd->queue->queue_lock, flags);
> > list_add(&cic->queue_list, &cfqd->cic_list);
> > - spin_unlock_irq(cfqd->queue->queue_lock);
> > + spin_unlock_irqrestore(cfqd->queue->queue_lock, flags);
> > }
>
> this looks entirely reasonable and correct
>
> Acked-By: Arjan van de Ven <[email protected]>

yep.

Acked-by: Ingo Molnar <[email protected]>

Ingo

2006-10-30 18:02:19

by Jens Axboe

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

On Mon, Oct 30 2006, Ingo Molnar wrote:
>
> * Jens Axboe <[email protected]> wrote:
>
> > > > things may be allocated from that path, so we pass gfp_mask around. I'll
> > > > double check it tonight, but I don't currently see what could be wrong.
> > > > Would lockdep complain about:
> > > >
> > > > spin_lock_irqsave(lock, flags);
> > > > ...
> > > > spin_unlock_irq(lock);
> > > > ...
> > > > spin_lock_irq(lock);
> > > > ...
> > > > spin_unlock_irqrestore(lock, flags);
> > >
> > > this is fine for lockdep IF and only IF there is no "out lock" held
> > > around this that requires irqs to be off. So if you do
> > >
> > > spin_lock_irqsave(lock1, flags);
> > > ...
> > > spin_lock_irqsave(lock2, flags);
> > > spin_unlock_irq(lock2)
> > > ...
> > >
> > > then lockdep WILL complain, and rightfully so, about a violation since
> > > lock1 gets violated here ;)
> >
> > Naturally, that is a bug fair and simple, nothing to do with lockdep.
>
> well, finding such locking bugs is the main purpose of lockdep, so there
> is at least some connection i'd say ;-)

Right, I'm totally with you on that one, I wasn't trying to state
otherwise :-)

But we've also had a class of lockdep complaints that simply need some
sort of annotation so that lockdep understands there's nothing wrong
with it.

--
Jens Axboe

2006-10-30 18:11:52

by Mark Lord

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

Mark Lord wrote:
> Jens Axboe wrote:
..
>> diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
>> index 4bae64e..da9bddf 100644
>> --- a/block/cfq-iosched.c
>> +++ b/block/cfq-iosched.c
..

It's still there. I also see it with the SLES10 kernel 2.6.16.21-0.8.


[ INFO: inconsistent lock state ]
2.6.19-rc3-git7-ml #3
---------------------------------
inconsistent {in-softirq-W} -> {softirq-on-W} usage.
startproc/4046 [HC0[0]:SC0[0]:HE1:SE1] takes:
(&q->__queue_lock){-+..}, at: [<c0219091>] cfq_set_request+0x351/0x3b0
{in-softirq-W} state was registered at:
[<c01376b1>] mark_lock+0x81/0x5f0
[<c0138a90>] __lock_acquire+0x660/0xc10
[<c013939d>] lock_acquire+0x5d/0x80
[<c0361c59>] _spin_lock+0x29/0x40
[<c029fa24>] scsi_device_unbusy+0x64/0x90
[<c029a5bc>] scsi_finish_command+0x1c/0xa0
[<c02115c2>] blk_done_softirq+0x62/0x70
[<c0122a27>] __do_softirq+0x87/0x100
[<c0122af5>] do_softirq+0x55/0x60
[<c0122f3c>] ksoftirqd+0x7c/0xd0
[<c0130f76>] kthread+0xf6/0x100
[<c0103c6f>] kernel_thread_helper+0x7/0x18
[<ffffffff>] 0xffffffff
irq event stamp: 3331
hardirqs last enabled at (3331): [<c016326d>] kmem_cache_alloc+0x6d/0xa0
hardirqs last disabled at (3330): [<c016321f>] kmem_cache_alloc+0x1f/0xa0
softirqs last enabled at (3012): [<c0122af5>] do_softirq+0x55/0x60
softirqs last disabled at (2971): [<c0122af5>] do_softirq+0x55/0x60

other info that might help us debug this:
no locks held by startproc/4046.

stack backtrace:
[<c0104042>] dump_trace+0x192/0x1c0
[<c0104088>] show_trace_log_lvl+0x18/0x30
[<c010483f>] show_trace+0xf/0x20
[<c01049a5>] dump_stack+0x15/0x20
[<c0137291>] print_usage_bug+0x251/0x270
[<c0137ae7>] mark_lock+0x4b7/0x5f0
[<c0138aae>] __lock_acquire+0x67e/0xc10
[<c013939d>] lock_acquire+0x5d/0x80
[<c0361c59>] _spin_lock+0x29/0x40
[<c0219091>] cfq_set_request+0x351/0x3b0
[<c020c7fc>] elv_set_request+0x1c/0x40
[<c020fcff>] get_request+0x23f/0x270
[<c0210537>] get_request_wait+0x27/0x120
[<c02107ca>] __make_request+0x5a/0x350
[<c020f40f>] generic_make_request+0x16f/0x220
[<c02117e4>] submit_bio+0x64/0x110
[<c018e969>] mpage_bio_submit+0x19/0x20
[<c018fe85>] mpage_readpages+0x105/0x140
[<c014d67f>] __do_page_cache_readahead+0x17f/0x260
[<c014d7d2>] blockable_page_cache_readahead+0x72/0xd0
[<c014da25>] page_cache_readahead+0x135/0x1e0
[<c01474ce>] do_generic_mapping_read+0x55e/0x5a0
[<c01496b1>] generic_file_aio_read+0x101/0x270
[<c01669b5>] do_sync_read+0xd5/0x120
[<c01672d1>] vfs_read+0xa1/0x160
[<c0167851>] sys_read+0x41/0x70
[<c0102f71>] sysenter_past_esp+0x56/0x8d
[<b7efd410>] 0xb7efd410
=======================

2006-10-30 18:15:09

by Jens Axboe

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

On Mon, Oct 30 2006, Mark Lord wrote:
> Mark Lord wrote:
> >Jens Axboe wrote:
> ..
> >>diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> >>index 4bae64e..da9bddf 100644
> >>--- a/block/cfq-iosched.c
> >>+++ b/block/cfq-iosched.c
> ..
>

I thought so. But at least we got an obscure bug fixed in the process
:-)

> [ INFO: inconsistent lock state ]
> 2.6.19-rc3-git7-ml #3
> ---------------------------------
> inconsistent {in-softirq-W} -> {softirq-on-W} usage.
> startproc/4046 [HC0[0]:SC0[0]:HE1:SE1] takes:
> (&q->__queue_lock){-+..}, at: [<c0219091>] cfq_set_request+0x351/0x3b0
> {in-softirq-W} state was registered at:
> [<c01376b1>] mark_lock+0x81/0x5f0
> [<c0138a90>] __lock_acquire+0x660/0xc10
> [<c013939d>] lock_acquire+0x5d/0x80
> [<c0361c59>] _spin_lock+0x29/0x40
> [<c029fa24>] scsi_device_unbusy+0x64/0x90
> [<c029a5bc>] scsi_finish_command+0x1c/0xa0
> [<c02115c2>] blk_done_softirq+0x62/0x70
> [<c0122a27>] __do_softirq+0x87/0x100
> [<c0122af5>] do_softirq+0x55/0x60
> [<c0122f3c>] ksoftirqd+0x7c/0xd0
> [<c0130f76>] kthread+0xf6/0x100
> [<c0103c6f>] kernel_thread_helper+0x7/0x18
> [<ffffffff>] 0xffffffff
> irq event stamp: 3331
> hardirqs last enabled at (3331): [<c016326d>] kmem_cache_alloc+0x6d/0xa0
> hardirqs last disabled at (3330): [<c016321f>] kmem_cache_alloc+0x1f/0xa0
> softirqs last enabled at (3012): [<c0122af5>] do_softirq+0x55/0x60
> softirqs last disabled at (2971): [<c0122af5>] do_softirq+0x55/0x60
>
> other info that might help us debug this:
> no locks held by startproc/4046.
>
> stack backtrace:
> [<c0104042>] dump_trace+0x192/0x1c0
> [<c0104088>] show_trace_log_lvl+0x18/0x30
> [<c010483f>] show_trace+0xf/0x20
> [<c01049a5>] dump_stack+0x15/0x20
> [<c0137291>] print_usage_bug+0x251/0x270
> [<c0137ae7>] mark_lock+0x4b7/0x5f0
> [<c0138aae>] __lock_acquire+0x67e/0xc10
> [<c013939d>] lock_acquire+0x5d/0x80
> [<c0361c59>] _spin_lock+0x29/0x40
> [<c0219091>] cfq_set_request+0x351/0x3b0

Can you do:

$ gdb vmlinux
l *cfq_set_request+0x351

assuming you built with DEBUG_INFO enabled.

--
Jens Axboe

2006-10-30 18:20:42

by Mark Lord

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

Mark Lord wrote:
>
>I also see it with the SLES10 kernel 2.6.16.21-0.8.
..

Obvious self-correction: not the same problem in the SLES10 kernel.
I just got confused juggling five kernels around. :)

But problem is still there in 2.6.19*.
Rebuilding kernel now with frame pointers and DEBUG_INFO enabled.

Cheers

2006-10-30 18:30:30

by Mark Lord

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

Jens Axboe wrote:
> Can you do:
>
> $ gdb vmlinux
> l *cfq_set_request+0x351
>
> assuming you built with DEBUG_INFO enabled.

Here it is again, from kernel with FRAME_POINTERS and DEBUG_INFO enabled:

=================================
[ INFO: inconsistent lock state ]
2.6.19-rc3-git7-ml #6
---------------------------------
inconsistent {in-softirq-W} -> {softirq-on-W} usage.
startproc/3964 [HC0[0]:SC0[0]:HE1:SE1] takes:
(&q->__queue_lock){-+..}, at: [<c021780e>] cfq_set_request+0x33e/0x3a0
{in-softirq-W} state was registered at:
[<c0137439>] mark_lock+0x79/0x600
[<c013880d>] __lock_acquire+0x64d/0xc20
[<c013914d>] lock_acquire+0x5d/0x80
[<c035ea8b>] _spin_lock+0x2b/0x40
[<c029ee87>] scsi_device_unbusy+0x67/0xa0
[<c029992c>] scsi_finish_command+0x1c/0xa0
[<c029f04f>] scsi_softirq_done+0xcf/0xf0
[<c020fc8b>] blk_done_softirq+0x6b/0x80
[<c0122732>] __do_softirq+0x92/0x110
[<c0122815>] do_softirq+0x65/0x70
[<c0122c85>] ksoftirqd+0x85/0xd0
[<c0130d48>] kthread+0xe8/0xf0
[<c0103c4b>] kernel_thread_helper+0x7/0x1c
[<ffffffff>] 0xffffffff
irq event stamp: 1927
hardirqs last enabled at (1927): [<c0162a15>] kmem_cache_alloc+0x75/0xb0
hardirqs last disabled at (1926): [<c01629c2>] kmem_cache_alloc+0x22/0xb0
softirqs last enabled at (0): [<c011b653>] copy_process+0x353/0x1290
softirqs last disabled at (0): [<00000000>] 0x0

other info that might help us debug this:
no locks held by startproc/3964.

stack backtrace:
[<c0104088>] dump_trace+0x1c8/0x200
[<c01040da>] show_trace_log_lvl+0x1a/0x30
[<c0104832>] show_trace+0x12/0x20
[<c0104999>] dump_stack+0x19/0x20
[<c0137053>] print_usage_bug+0x243/0x250
[<c0137962>] mark_lock+0x5a2/0x600
[<c0138832>] __lock_acquire+0x672/0xc20
[<c013914d>] lock_acquire+0x5d/0x80
[<c035ea8b>] _spin_lock+0x2b/0x40
[<c021780e>] cfq_set_request+0x33e/0x3a0
[<c020af3f>] elv_set_request+0x1f/0x50
[<c020e40d>] get_request+0x21d/0x250
[<c020ec4c>] get_request_wait+0x1c/0x100
[<c020eebd>] __make_request+0x5d/0x330
[<c020db44>] generic_make_request+0x174/0x230
[<c020fed0>] submit_bio+0x60/0x110
[<c018dcfc>] mpage_bio_submit+0x1c/0x30
[<c018f363>] mpage_readpages+0x103/0x140
[<c01aab49>] reiserfs_readpages+0x19/0x20
[<c014d511>] __do_page_cache_readahead+0x161/0x220
[<c014d632>] blockable_page_cache_readahead+0x62/0xc0
[<c014d86f>] page_cache_readahead+0x11f/0x1d0
[<c0147511>] do_generic_mapping_read+0x501/0x540
[<c01495a3>] generic_file_aio_read+0xf3/0x240
[<c0166020>] do_sync_read+0xd0/0x110
[<c01668e4>] vfs_read+0x94/0x160
[<c0166e2d>] sys_read+0x3d/0x70
[<c0102f4d>] sysenter_past_esp+0x56/0x8d
[<b7f84410>] 0xb7f84410
=======================

(gdb) l *cfq_set_request+0x33e
0xc021780e is in cfq_set_request (block/cfq-iosched.c:1224).
1219 if (unlikely(!cfqd))
1220 return;
1221
1222 spin_lock(cfqd->queue->queue_lock);
1223
1224 cfqq = cic->cfqq[ASYNC];
1225 if (cfqq) {
1226 struct cfq_queue *new_cfqq;
1227 new_cfqq = cfq_get_queue(cfqd, CFQ_KEY_ASYNC, cic->ioc->task,
1228 GFP_ATOMIC);


2006-10-30 18:35:43

by Mark Lord

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

And while we're at it:
>
> (gdb) l *cfq_set_request+0x33e
> 0xc021780e is in cfq_set_request (block/cfq-iosched.c:1224).
> 1219 if (unlikely(!cfqd))
> 1220 return;
> 1221
> 1222 spin_lock(cfqd->queue->queue_lock);
> 1223
> 1224 cfqq = cic->cfqq[ASYNC];
> 1225 if (cfqq) {
> 1226 struct cfq_queue *new_cfqq;
> 1227 new_cfqq = cfq_get_queue(cfqd, CFQ_KEY_ASYNC, cic->ioc->task,
> 1228 GFP_ATOMIC);

(gdb) l *scsi_device_unbusy+0x67
0xc029ee87 is in scsi_device_unbusy (drivers/scsi/scsi_lib.c:466).
461 (shost->host_failed || shost->host_eh_scheduled)))
462 scsi_eh_wakeup(shost);
463 spin_unlock(shost->host_lock);
464 spin_lock(sdev->request_queue->queue_lock);
465 sdev->device_busy--;
466 spin_unlock_irqrestore(sdev->request_queue->queue_lock, flags);
467 }
468
469 /*
470 * Called for single_lun devices on IO completion. Clear starget_sdev_user,

2006-10-30 18:45:24

by Arjan van de Ven

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state


> (gdb) l *cfq_set_request+0x33e
> 0xc021780e is in cfq_set_request (block/cfq-iosched.c:1224).
> 1219 if (unlikely(!cfqd))
> 1220 return;
> 1221
> 1222 spin_lock(cfqd->queue->queue_lock);

this looks interesting... and buggy ;)
(this is changed_ioprio() )

Jens?



2006-10-30 18:50:37

by Jens Axboe

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

On Mon, Oct 30 2006, Mark Lord wrote:
> (gdb) l *cfq_set_request+0x33e
> 0xc021780e is in cfq_set_request (block/cfq-iosched.c:1224).
> 1219 if (unlikely(!cfqd))
> 1220 return;
> 1221
> 1222 spin_lock(cfqd->queue->queue_lock);
> 1223
> 1224 cfqq = cic->cfqq[ASYNC];
> 1225 if (cfqq) {
> 1226 struct cfq_queue *new_cfqq;
> 1227 new_cfqq = cfq_get_queue(cfqd, CFQ_KEY_ASYNC,
> cic->ioc->task,
> 1228 GFP_ATOMIC);

Bingo, that's a lot better! So that's the real bug, I'm guessing this
got introduced when the ioprio stuff got juggled around recently. Pretty
straight forward, this should fix it for you.


diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index d3d7613..25c4e7e 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1215,11 +1215,12 @@ static inline void changed_ioprio(struct
{
struct cfq_data *cfqd = cic->key;
struct cfq_queue *cfqq;
+ unsigned long flags;

if (unlikely(!cfqd))
return;

- spin_lock(cfqd->queue->queue_lock);
+ spin_lock_irqsave(cfqd->queue->queue_lock, flags);

cfqq = cic->cfqq[ASYNC];
if (cfqq) {
@@ -1236,7 +1237,7 @@ static inline void changed_ioprio(struct
if (cfqq)
cfq_mark_cfqq_prio_changed(cfqq);

- spin_unlock(cfqd->queue->queue_lock);
+ spin_unlock_irqrestore(cfqd->queue->queue_lock, flags);
}

static void cfq_ioc_set_ioprio(struct io_context *ioc)

--
Jens Axboe

2006-10-30 18:55:16

by Jens Axboe

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

On Mon, Oct 30 2006, Arjan van de Ven wrote:
>
> > (gdb) l *cfq_set_request+0x33e
> > 0xc021780e is in cfq_set_request (block/cfq-iosched.c:1224).
> > 1219 if (unlikely(!cfqd))
> > 1220 return;
> > 1221
> > 1222 spin_lock(cfqd->queue->queue_lock);
>
> this looks interesting... and buggy ;)
> (this is changed_ioprio() )

Yeah it is, changed_ioprio() used to be called under local_irq_save(),
but it's not anymore.

--
Jens Axboe

2006-10-30 18:59:49

by Mark Lord

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

Jens Axboe wrote:
>
> Bingo, that's a lot better! So that's the real bug, I'm guessing this
> got introduced when the ioprio stuff got juggled around recently. Pretty
> straight forward, this should fix it for you.

And it does indeed fix it, thanks!

-ml

2006-10-30 19:02:43

by Jens Axboe

[permalink] [raw]
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state

On Mon, Oct 30 2006, Mark Lord wrote:
> Jens Axboe wrote:
> >
> >Bingo, that's a lot better! So that's the real bug, I'm guessing this
> >got introduced when the ioprio stuff got juggled around recently. Pretty
> >straight forward, this should fix it for you.
>
> And it does indeed fix it, thanks!

Cool, thanks for retesting Mark! Patch is sent upstream, so should
appear in the next snapshots and -rc.

--
Jens Axboe