* HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8
@ 2008-04-11 18:37 Enrico Demarin
2008-04-13 7:51 ` Patrick McHardy
2008-04-13 12:10 ` Jarek Poplawski
0 siblings, 2 replies; 19+ messages in thread
From: Enrico Demarin @ 2008-04-11 18:37 UTC (permalink / raw)
To: netdev
[-- Attachment #1: Type: text/plain, Size: 55200 bytes --]
Hi everyone,
I stumbled by chance in a deadlock condition using HTB and the ingress
scheduler at the same time.
- The bug seems to have been introduced in 2.6.23 and forward ( 2.6.22
works fine )
- Tested up to 2.6.25-rc8
I found a temporary workaround ( the ingress didnt have a reason to be
there in first place , just omitting it from the script avoids the
condition ), but it would be nice to have a proper fix. Let me know if
more data/testing is needed.
- Enrico
Server Configuration:
---------------------
Centos 4.6 , DELL R200
Vanilla SMP Kernel 2.6.25-rc8 ( see below for configuration )
Network configuration:
-----------------------
eth0 - Simulated WAN ( 192.168.1.8/24 )
eth1 - LAN ( 10.2.0.1/16 )
Crasher script
------------------------
#!/bin/sh
#set -x
iptables -F -t filter
iptables -F -t mangle
iptables -F -t nat
iptables -X -t filter
iptables -X -t mangle
iptables -X -t nat
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# enable forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# enable nat from 10.2.0.0/16
iptables -t nat -I POSTROUTING -o eth0 -s 10.2.0.0/16 -j MASQUERADE
# init htb
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 1500kbit ceil
1500kbit quantum 1514 prio 0
tc class add dev eth0 parent 1:1 classid 1:301 htb rate 1500kbit ceil
1500kbit quantum 1514 prio 0
#----------- comment the next two lines to avoid the crash
tc qdisc del dev eth0 ingress
tc qdisc add dev eth0 ingress
#-----------
while true ; do
tc filter del dev eth0 parent 1:0 protocol ip prio 2
tc class del dev eth0 classid 1:1000
# crash happens here, kernel stuck in the previous tc command
tc class add dev eth0 parent 1:301 classid 1:1000 htb rate 1000kbit ceil
1000kbit prio 1 quantum 1514
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 0x1000 fw
flowid 1:1000
iptables -t mangle -I FORWARD -o eth0 --source 10.2.0.0/16 -j MARK
--set-mark 0x1000
echo -e ".\c"
sleep 1
done
How to test
-----------
On a client connected to the LAN , with 10.2.0.1 as a gateway, start an
iperf session as follow ( an iperf -s is running on the host 192.168.1.1 )
iperf -c 192.168.1.1 -t 2000 -i 1
On the server, run the crasher script as the client continues running
the iperf test the server should freeze almost instantly. After a while
the console spits out the following:
Kernel message
--------------
BUG: soft lockup - CPU#0 stuck for 61s!
[tc:5667]
Pid: 5667, comm: tc Not tainted (2.6.25-rc8
#1)
EIP: 0060:[<c0282564>] EFLAGS: 00000287 CPU:
0
EIP is at qdisc_lookup+0x21/0x4b
EAX: f7261224 EBX: f7261000 ECX: f0de6300 EDX:
f0de634c
ESI: ffff0000 EDBUG: soft lockup - CPU#0 stuck for 61s!
[tc:5667]
Pid: 5667, comm: tc Not tainted (2.6.25-rc8
#1)
EIP: 0060:[<c0282564>] EFLAGS: 00000287 CPU:
0
EIP is at qdisc_lookup+0x21/0x4b
EAX: f7261224 EBX: f7261000 ECX: f0de6300 EDX:
f0de634c
ESI: ffff0000 EDI: f8ac4120 EBP:
DS: 007b ES: 007b FS: 00d8 GS: 0033 SS:
0068
CR0: 80050033 CR2: 003c30d0 CR3: 36f09000 CR4:
000006d0
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3:
00000000
DR6: ffff0ff0 DR7: 00000400
[<c02828a4>]
qdisc_tree_decrease_qlen+0x24/0x6f
[<f8b07c28>] htb_delete+0x97/0x12b
[sch_htb]
[<c02835cf>]
tc_ctl_tclass+0x1b4/0x231
[<c028341b>] ?
tc_ctl_tclass+0x0/0x231
[<c027ea92>]
rtnetlink_rcv_msg+0x181/0x18d
[<c027e911>] ?
rtnetlink_rcv_msg+0x0/0x18d
[<c02887f7>]
netlink_rcv_skb+0x38/0x83
[<c027eab5>] rtnetlink_rcv+0
[<c028767f>]
netlink_unicast+0x127/0x177
[<c0287ebf>]
netlink_sendmsg+0x241/0x250
[<c026aee1>] sock_sendmsg+0xb8/0xcf
[<c026b08b>] ? sock_recvmsg+0xc2/0xda
[<c012ca68>] ?
autoremove_wake_function+0x0/0x33
[<c01dd0cd>] ?
copy_from_user+0x3b/0x5e
[<c0271f34>] ? verify_iovec+0x40/0x74
[<c026c403>] sys_sendmsg+0x175/0x1dc
[<c0156cc1>] ? __do_fault+0x2d2/0x326
[<c0149554>] ? unlock_page+0x25/0x28
[<c0156cd5>] ? __do_fault+0x2e6/0x326
[<c0112a8b>] ?
do_page_fault+0x1c0/0x406
[<c01369c7>] ? __lock_release+0
[<c026c780>]
sys_socketcall+0x164/0x17f
[<c01358ad>] ?
trace_hardirqs_on+0xe1/0x102
[<c01036fe>]
sysenter_past_esp+0x5f/0xa5
=======================
BUG: soft lockup - CPU#1 stuck for 61s!
[ksoftirqd/1:7]
Pid: 7, comm: ksoftirqd/1 Not tainted (2.6.25-rc8
#1)
EIP: 0060:[<c010845f>] EFLAGS: 00000246 CPU:
1
EIP is at native_read_tsc+0xe/0x13
EAX: 16ae9694 EBX: 16ae9628 ECX: 00000001 EDX:
00000175
ESI: 00000001 EDI: f7261200 EBP: c0425de8 ESP:
c0425de8
DS: 007b ES: 007b FS: 00d8 GS: 0000 SS:
0068
CR0: 8005003b CR2: 003e37b0 CR3: 00421000 CR4:
000006d0
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3:
00000000
DR6: ffff0ff0 DR7: 00000400
[<c01dc78a>] delay_tsc+0x15/0x1f
[<c01dc7ac>] __delay+0x9/0xb
[<c01df94f>]
__spin_lock_debug+0x56/0xab
[<c01dfa0d>] _raw_spin_lock+0x69/0x7e
[<c02d4185>] _spin_lock+0x20/0x25
[<c027520e>] ? dev_queue_xmit+0x171/0x2c1
[<c027520e>] dev_queue_xmit+0x171/0x2c1
[<c028a4b5>] ? nf_hook_slow+0xcf/0xda
[<c0291f76>] ip_finish_output+0x1fc/0x237
[<c0292373>] ip_output+0x83/0x88
[<c0290a2f>] ip_forward_finish+0x2f/0x32
[<c0290c5c>] ip_forward+0x22a/0x27a
[<c028fbb3>] ip_rcv_finish+0x29d/0x2bc
[<c028fde4>] ip_rcv+0x212/0x23e
[<c0275861>] netif_receive_skb+0x28b/0x2be
[<f899446b>] e1000_clean_rx_irq+0x3b7/0x468 [e1000]
[<f8993d66>] e1000_clean+0x60/0xd8 [e1000]
[<c0275a38>] net_rx_action+0x72/0x14c
[<c0120b25>] __do_softirq+0x73/0xe6
[<c0105b43>] do_softirq+0x5d/0xbd
[<c0121000>] ksoftirqd+0x5b/0xc1
[<c0120fa5>] ? ksoftirqd+0x0/0xc1
[<c012c606>] kthread+0x37/0x59
[<c012c5cf>] ? kthread+0x0/0x59
[<c010440f>] kernel_thread_helper+0x7/0x10
=======================
Kernel configuration
--------------------
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.25-rc8
# Fri Apr 11 12:55:58 2008
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
# CONFIG_GENERIC_LOCKBREAK is not set
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_FAST_CMPXCHG_LOCAL=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_GENERIC_GPIO is not set
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set
CONFIG_ARCH_HAS_CPU_RELAX=y
# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set
CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set
CONFIG_ARCH_SUPPORTS_AOUT=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_X86_SMP=y
CONFIG_X86_32_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_KTIME_SCALAR=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# CONFIG_TASKSTATS is not set
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_TREE=y
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=17
# CONFIG_CGROUPS is not set
CONFIG_GROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
# CONFIG_RELAY is not set
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_COMPAT_BRK=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
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
CONFIG_BLOCK=y
CONFIG_LBD=y
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set
# CONFIG_BLK_DEV_BSG 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"
CONFIG_CLASSIC_RCU=y
#
# Processor type and features
#
# CONFIG_TICK_ONESHOT is not set
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
# CONFIG_X86_PC is not set
# 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=y
# CONFIG_X86_ES7000 is not set
# CONFIG_X86_RDC321X is not set
# CONFIG_X86_VSMP is not set
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
CONFIG_X86_CYCLONE_TIMER=y
# 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=y
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# 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_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_GENERIC_CPU is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_X86_XADD=y
CONFIG_X86_PPRO_FENCE=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=4
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
# CONFIG_IOMMU_HELPER is not set
CONFIG_NR_CPUS=4
# CONFIG_SCHED_SMT is not set
CONFIG_SCHED_MC=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT 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
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=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 is not set
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_HIGHPTE=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_IRQBALANCE=y
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_SCHED_HRTICK is not set
# CONFIG_KEXEC is not set
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x100000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x100000
# CONFIG_HOTPLUG_CPU is not set
CONFIG_COMPAT_VDSO=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
# Power management options
#
# CONFIG_PM is not set
#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set
# CONFIG_CPU_IDLE is not set
#
# Bus options (PCI etc.)
#
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_DOMAINS=y
# CONFIG_PCIEPORTBUS is not set
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
CONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not set
CONFIG_HT_IRQ=y
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set
#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_MISC=y
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not set
CONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not set
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_VERBOSE=y
# CONFIG_IP_PNP 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=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
# CONFIG_INET_LRO is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IP_VS is not set
CONFIG_IPV6=m
CONFIG_IPV6_PRIVACY=y
CONFIG_IPV6_ROUTER_PREF=y
# CONFIG_IPV6_ROUTE_INFO is not set
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_MIP6=m
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=m
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
CONFIG_IPV6_SIT=m
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
# CONFIG_NETWORK_SECMARK is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y
#
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK_QUEUE is not set
# CONFIG_NETFILTER_NETLINK_LOG is not set
CONFIG_NF_CONNTRACK=m
CONFIG_NF_CT_ACCT=y
CONFIG_NF_CONNTRACK_MARK=y
# CONFIG_NF_CONNTRACK_EVENTS is not set
CONFIG_NF_CT_PROTO_GRE=m
CONFIG_NF_CT_PROTO_SCTP=m
# CONFIG_NF_CT_PROTO_UDPLITE is not set
# CONFIG_NF_CONNTRACK_AMANDA is not set
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
CONFIG_NF_CONNTRACK_PPTP=m
# CONFIG_NF_CONNTRACK_SANE is not set
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
# CONFIG_NF_CT_NETLINK is not set
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
CONFIG_NETFILTER_XT_TARGET_DSCP=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
CONFIG_NETFILTER_XT_TARGET_RATEEST=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
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_OWNER=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TIME=m
CONFIG_NETFILTER_XT_MATCH_U32=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
#
# IP: Netfilter Configuration
#
CONFIG_NF_CONNTRACK_IPV4=m
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=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_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_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_TFTP=m
# CONFIG_NF_NAT_AMANDA is not set
CONFIG_NF_NAT_PPTP=m
CONFIG_NF_NAT_H323=m
CONFIG_NF_NAT_SIP=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_TARGET_CLUSTERIP=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
#
CONFIG_NF_CONNTRACK_IPV6=m
# CONFIG_IP6_NF_QUEUE is not set
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_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_MH=m
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
#
# Bridge: Netfilter Configuration
#
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_T_NAT=m
CONFIG_BRIDGE_EBT_802_3=m
CONFIG_BRIDGE_EBT_AMONG=m
CONFIG_BRIDGE_EBT_ARP=m
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_LIMIT=m
CONFIG_BRIDGE_EBT_MARK=m
CONFIG_BRIDGE_EBT_PKTTYPE=m
CONFIG_BRIDGE_EBT_STP=m
CONFIG_BRIDGE_EBT_VLAN=m
CONFIG_BRIDGE_EBT_ARPREPLY=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_MARK_T=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
# CONFIG_BRIDGE_EBT_ULOG is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
CONFIG_BRIDGE=m
CONFIG_VLAN_8021Q=m
# CONFIG_DECNET is not set
CONFIG_LLC=m
# CONFIG_LLC2 is not set
# 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
CONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#
# CONFIG_NET_SCH_CBQ is not set
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
# CONFIG_NET_SCH_PRIO is not set
# CONFIG_NET_SCH_RR is not set
# CONFIG_NET_SCH_RED is not set
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
# CONFIG_NET_SCH_TBF is not set
# CONFIG_NET_SCH_GRED is not set
# CONFIG_NET_SCH_DSMARK is not set
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=m
#
# Classification
#
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not set
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 is not set
# CONFIG_NET_CLS_RSVP6 is not set
# CONFIG_NET_CLS_FLOW is not set
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 is not set
CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_IPT=m
# CONFIG_NET_ACT_NAT is not set
CONFIG_NET_ACT_PEDIT=m
# CONFIG_NET_ACT_SIMP is not set
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
CONFIG_FIB_RULES=y
#
# Wireless
#
# CONFIG_CFG80211 is not set
# CONFIG_WIRELESS_EXT is not set
# CONFIG_MAC80211 is not set
# CONFIG_IEEE80211 is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PARPORT_SERIAL=m
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_GSC is not set
# CONFIG_PARPORT_AX88796 is not set
CONFIG_PARPORT_1284=y
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set
#
# Protocols
#
# CONFIG_ISAPNP is not set
# CONFIG_PNPBIOS is not set
# CONFIG_PNPACPI is not set
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_FD=m
# CONFIG_BLK_DEV_XD is not set
# 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 is not set
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=16384
# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_MISC_DEVICES=y
# CONFIG_IBM_ASM is not set
# CONFIG_PHANTOM is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_ENCLOSURE_SERVICES is not set
CONFIG_HAVE_IDE=y
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide/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_IDECD_VERBOSE_ERRORS=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
CONFIG_BLK_DEV_IDESCSI=m
# CONFIG_IDE_TASK_IOCTL is not set
CONFIG_IDE_PROC_FS=y
#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_PLATFORM is not set
CONFIG_BLK_DEV_CMD640=y
# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
# CONFIG_BLK_DEV_IDEPNP is not set
CONFIG_BLK_DEV_IDEDMA_SFF=y
#
# PCI IDE chipsets support
#
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_PCIBUS_ORDER=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set
CONFIG_BLK_DEV_RZ1000=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
# 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=y
# 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=y
# 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=y
CONFIG_BLK_DEV_SIIMAGE=y
# 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
#
# Other IDE chipsets support
#
#
# Note: most of these also require special kernel boot parameters
#
# CONFIG_BLK_DEV_4DRIVES is not set
# CONFIG_BLK_DEV_ALI14XX is not set
# CONFIG_BLK_DEV_DTC2278 is not set
# CONFIG_BLK_DEV_HT6560B is not set
# CONFIG_BLK_DEV_QD65XX is not set
# CONFIG_BLK_DEV_UMC8672 is not set
CONFIG_BLK_DEV_IDEDMA=y
CONFIG_IDE_ARCH_OBSOLETE_INIT=y
# CONFIG_BLK_DEV_HD is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=m
CONFIG_SCSI_NETLINK=y
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
# 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=y
CONFIG_SCSI_LOGGING=y
# CONFIG_SCSI_SCAN_ASYNC is not set
CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=m
CONFIG_SCSI_SAS_ATTRS=m
CONFIG_SCSI_SAS_LIBSAS=m
CONFIG_SCSI_SAS_ATA=y
CONFIG_SCSI_SAS_HOST_SMP=y
CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# 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=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
CONFIG_AIC7XXX_RESET_DELAY_MS=5000
CONFIG_AIC7XXX_DEBUG_ENABLE=y
CONFIG_AIC7XXX_DEBUG_MASK=0
CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
CONFIG_SCSI_AIC7XXX_OLD=m
# 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=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
CONFIG_MEGARAID_LEGACY=m
CONFIG_MEGARAID_SAS=m
# CONFIG_SCSI_HPTIOP is not set
CONFIG_SCSI_BUSLOGIC=m
# CONFIG_SCSI_OMIT_FLASHPOINT 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_PPA is not set
# CONFIG_SCSI_IMM is not set
# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_STEX is not set
CONFIG_SCSI_SYM53C8XX_2=m
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
CONFIG_SCSI_SYM53C8XX_MMIO=y
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_PAS16 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
# CONFIG_SCSI_SRP is not set
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_SATA_AHCI=m
# 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=m
CONFIG_SATA_SX4=m
# 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_SATA_INIC162X 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_CMD640_PCI 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_CS5536 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_LEGACY 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_NINJA32 is not set
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_NS87415 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
# CONFIG_PATA_WINBOND_VLB is not set
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
# CONFIG_MD_RAID0 is not set
CONFIG_MD_RAID1=m
# CONFIG_MD_RAID10 is not set
# CONFIG_MD_RAID456 is not set
CONFIG_MD_MULTIPATH=m
# CONFIG_MD_FAULTY is not set
CONFIG_BLK_DEV_DM=y
# CONFIG_DM_DEBUG is not set
# CONFIG_DM_CRYPT is not set
# CONFIG_DM_SNAPSHOT is not set
# CONFIG_DM_MIRROR is not set
# CONFIG_DM_ZERO is not set
# CONFIG_DM_MULTIPATH is not set
# CONFIG_DM_DELAY is not set
# CONFIG_DM_UEVENT is not set
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
CONFIG_FUSION_SAS=m
CONFIG_FUSION_MAX_SGE=40
CONFIG_FUSION_CTL=m
# CONFIG_FUSION_LOGGING is not set
#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
# CONFIG_IFB is not set
CONFIG_DUMMY=m
CONFIG_BONDING=m
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
# CONFIG_VETH is not set
# CONFIG_NET_SB1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_PHYLIB is not set
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=y
# CONFIG_EL1 is not set
# CONFIG_EL2 is not set
# CONFIG_ELPLUS is not set
# CONFIG_EL16 is not set
# CONFIG_EL3 is not set
# CONFIG_3C515 is not set
CONFIG_VORTEX=m
CONFIG_TYPHOON=m
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
CONFIG_NET_TULIP=y
# CONFIG_DE2104X is not set
CONFIG_TULIP=m
# CONFIG_TULIP_MWI is not set
# CONFIG_TULIP_MMIO is not set
# CONFIG_TULIP_NAPI is not set
# CONFIG_DE4X5 is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_DM9102 is not set
# CONFIG_ULI526X 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_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 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_AC3200 is not set
# CONFIG_APRICOT is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_CS89x0 is not set
CONFIG_EEPRO100=m
CONFIG_E100=m
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
CONFIG_8139CP=m
CONFIG_8139TOO=m
CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_R6040 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
CONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
CONFIG_E1000=m
CONFIG_E1000_NAPI=y
# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
# CONFIG_E1000E is not set
# CONFIG_E1000E_ENABLED is not set
# CONFIG_IP1000 is not set
# CONFIG_IGB 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 is not set
CONFIG_TIGON3=m
# CONFIG_BNX2 is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
CONFIG_NETDEV_10000=y
# CONFIG_CHELSIO_T1 is not set
# CONFIG_CHELSIO_T3 is not set
# CONFIG_IXGBE is not set
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
# CONFIG_MYRI10GE is not set
# CONFIG_NETXEN_NIC is not set
# CONFIG_NIU is not set
# CONFIG_MLX4_CORE is not set
# CONFIG_TEHUTI is not set
# CONFIG_BNX2X is not set
# CONFIG_TR is not set
#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 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 is not set
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
# CONFIG_PPP_BSDCOMP is not set
# CONFIG_PPP_MPPE is not set
CONFIG_PPPOE=m
# CONFIG_PPPOL2TP is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=m
# CONFIG_NET_FC is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set
#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
# CONFIG_INPUT_POLLDEV is not set
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
# 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 is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=y
# CONFIG_INPUT_WISTRON_BTNS is not set
# CONFIG_INPUT_ATI_REMOTE is not set
# CONFIG_INPUT_ATI_REMOTE2 is not set
# CONFIG_INPUT_KEYSPAN_REMOTE is not set
# CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set
# CONFIG_INPUT_UINPUT is not set
#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
# 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=y
# CONFIG_COMPUTONE is not set
# CONFIG_ROCKETPORT is not set
# CONFIG_CYCLADES is not set
# CONFIG_DIGIEPCA is not set
# CONFIG_ESPSERIAL is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
# CONFIG_ISI is not set
# CONFIG_SYNCLINK is not set
# CONFIG_SYNCLINKMP is not set
# CONFIG_SYNCLINK_GT is not set
# CONFIG_N_HDLC is not set
# CONFIG_RISCOM8 is not set
# CONFIG_SPECIALIX is not set
# CONFIG_SX is not set
# CONFIG_RIO is not set
# CONFIG_STALDRV is not set
# CONFIG_NOZOMI is not set
#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=64
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
# CONFIG_SERIAL_8250_MANY_PORTS is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y
#
# 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 is not set
CONFIG_PRINTER=m
CONFIG_LP_CONSOLE=y
# CONFIG_PPDEV is not set
CONFIG_IPMI_HANDLER=m
# CONFIG_IPMI_PANIC_EVENT is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
CONFIG_IPMI_WATCHDOG=m
CONFIG_IPMI_POWEROFF=m
CONFIG_HW_RANDOM=m
CONFIG_HW_RANDOM_INTEL=m
# CONFIG_HW_RANDOM_AMD is not set
# CONFIG_HW_RANDOM_GEODE is not set
# CONFIG_HW_RANDOM_VIA 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
# 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=y
CONFIG_MAX_RAW_DEVS=8192
CONFIG_HANGCHECK_TIMER=m
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
# CONFIG_I2C is not set
#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_THERMAL is not set
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=m
CONFIG_ACQUIRE_WDT=m
CONFIG_ADVANTECH_WDT=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
CONFIG_SC520_WDT=m
CONFIG_EUROTECH_WDT=m
CONFIG_IB700_WDT=m
# CONFIG_IBMASR is not set
CONFIG_WAFER_WDT=m
# CONFIG_I6300ESB_WDT is not set
# CONFIG_ITCO_WDT is not set
# CONFIG_IT8712F_WDT is not set
# CONFIG_HP_WATCHDOG is not set
CONFIG_SC1200_WDT=m
# CONFIG_PC87413_WDT is not set
# CONFIG_60XX_WDT is not set
# CONFIG_SBC8360_WDT is not set
# CONFIG_SBC7240_WDT is not set
CONFIG_CPU5_WDT=m
# CONFIG_SMSC37B787_WDT is not set
CONFIG_W83627HF_WDT=m
# CONFIG_W83697HF_WDT is not set
CONFIG_W83877F_WDT=m
# CONFIG_W83977F_WDT is not set
CONFIG_MACHZ_WDT=m
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
#
# ISA-based Watchdog Cards
#
CONFIG_PCWATCHDOG=m
# CONFIG_MIXCOMWD is not set
CONFIG_WDT=m
# CONFIG_WDT_501 is not set
#
# PCI-based Watchdog Cards
#
CONFIG_PCIPCWATCHDOG=m
CONFIG_WDTPCI=m
CONFIG_WDT_501_PCI=y
#
# USB-based Watchdog Cards
#
CONFIG_USBPCWATCHDOG=m
#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DVB_CORE is not set
# CONFIG_DAB is not set
#
# Graphics support
#
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
# CONFIG_FB is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
CONFIG_VIDEO_SELECT=y
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
#
# Sound
#
# CONFIG_SOUND is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
CONFIG_HID_DEBUG=y
# CONFIG_HIDRAW 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=y
CONFIG_USB_SUPPORT=y
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
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not set
#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=m
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
#
# 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 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_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_MON is not set
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
CONFIG_USB_SERIAL=m
CONFIG_USB_EZUSB=y
CONFIG_USB_SERIAL_GENERIC=y
# CONFIG_USB_SERIAL_AIRCABLE is not set
# CONFIG_USB_SERIAL_AIRPRIME is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
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 is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
CONFIG_USB_SERIAL_FUNSOFT=m
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not set
# CONFIG_USB_SERIAL_IR is not set
CONFIG_USB_SERIAL_EDGEPORT=m
CONFIG_USB_SERIAL_EDGEPORT_TI=m
CONFIG_USB_SERIAL_GARMIN=m
# CONFIG_USB_SERIAL_IPW is not set
# CONFIG_USB_SERIAL_IUU is not set
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
CONFIG_USB_SERIAL_KEYSPAN=m
CONFIG_USB_SERIAL_KEYSPAN_MPR=y
CONFIG_USB_SERIAL_KEYSPAN_USA28=y
CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
CONFIG_USB_SERIAL_KEYSPAN_USA19=y
CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
CONFIG_USB_SERIAL_MCT_U232=m
CONFIG_USB_SERIAL_MOS7720=m
CONFIG_USB_SERIAL_MOS7840=m
# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=m
# CONFIG_USB_SERIAL_OTI6858 is not set
# CONFIG_USB_SERIAL_HP4X is not set
# CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
CONFIG_USB_SERIAL_TI=m
# CONFIG_USB_SERIAL_CYBERJACK is not set
CONFIG_USB_SERIAL_XIRCOM=m
# CONFIG_USB_SERIAL_OPTION is not set
# CONFIG_USB_SERIAL_OMNINET is not set
# CONFIG_USB_SERIAL_DEBUG 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
# CONFIG_USB_GADGET is not set
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
#
# Conflicting RTC option has been selected, check GEN_RTC and RTC
#
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set
#
# SPI RTC drivers
#
#
# Platform RTC drivers
#
CONFIG_RTC_DRV_CMOS=y
# CONFIG_RTC_DRV_DS1511 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_V3020 is not set
#
# on-CPU RTC drivers
#
# CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set
#
# Userspace I/O
#
# CONFIG_UIO is not set
#
# Firmware Drivers
#
CONFIG_EDD=m
CONFIG_DELL_RBU=m
CONFIG_DCDBAS=m
CONFIG_DMIID=y
#
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# 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_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# 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_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_QUOTA=y
# CONFIG_QUOTA_NETLINK_INTERFACE is not set
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QFMT_V1 is not set
CONFIG_QFMT_V2=y
CONFIG_QUOTACTL=y
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=m
# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_UDF_FS=m
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="ascii"
# 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 is not set
# CONFIG_HUGETLB_PAGE is not set
# CONFIG_CONFIGFS_FS is not set
#
# 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=m
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_NFS_FS is not set
# CONFIG_NFSD 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
#
# 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=y
CONFIG_MINIX_SUBPARTITION=y
CONFIG_SOLARIS_X86_PARTITION=y
CONFIG_UNIXWARE_DISKLABEL=y
# 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
# CONFIG_SYSV68_PARTITION is not set
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=y
# CONFIG_NLS_CODEPAGE_852 is not set
# 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 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# 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=y
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 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=y
# CONFIG_DLM is not set
#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
CONFIG_ENABLE_WARN_DEPRECATED=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_DETECT_SOFTLOCKUP=y
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS 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_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
CONFIG_FRAME_POINTER=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_SAMPLES is not set
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_DEBUG_RODATA is not set
# CONFIG_DEBUG_NX_TEST is not set
CONFIG_4KSTACKS=y
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
CONFIG_DOUBLEFAULT=y
CONFIG_IO_DELAY_TYPE_0X80=0
CONFIG_IO_DELAY_TYPE_0XED=1
CONFIG_IO_DELAY_TYPE_UDELAY=2
CONFIG_IO_DELAY_TYPE_NONE=3
CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=0
# CONFIG_CPA_DEBUG is not set
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_BLKCIPHER=m
# CONFIG_CRYPTO_SEQIV is not set
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_GF128MUL is not set
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_XTS is not set
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_FCRYPT is not set
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=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_SALSA20_586 is not set
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
CONFIG_CRYPTO_AUTHENC=m
# CONFIG_CRYPTO_LZO is not set
# CONFIG_CRYPTO_HW is not set
CONFIG_HAVE_KVM=y
# CONFIG_VIRTUALIZATION is not set
#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
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_HAS_DMA=y
[-- Attachment #2: enrico.vcf --]
[-- Type: text/x-vcard, Size: 275 bytes --]
begin:vcard
fn:Enrico Demarin
n:Demarin;Enrico
org:Superclick Networks;R&D
adr:;;10222 St Michel;Montreal;QC;H1H5H1;Canada
email;internet:enrico@superclick.com
title:Director
tel;work:514-847-0333x246
x-mozilla-html:FALSE
url:http://www.superclick.com
version:2.1
end:vcard
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8
2008-04-11 18:37 HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8 Enrico Demarin
@ 2008-04-13 7:51 ` Patrick McHardy
2008-04-13 19:20 ` Enrico Demarin
2008-04-13 12:10 ` Jarek Poplawski
1 sibling, 1 reply; 19+ messages in thread
From: Patrick McHardy @ 2008-04-13 7:51 UTC (permalink / raw)
To: Enrico Demarin; +Cc: netdev
Enrico Demarin wrote:
> Kernel message
> --------------
>
> BUG: soft lockup - CPU#0 stuck for 61s!
> [tc:5667]
> Pid: 5667, comm: tc Not tainted (2.6.25-rc8
> #1) EIP:
> 0060:[<c0282564>] EFLAGS: 00000287 CPU:
> 0 EIP is at
> qdisc_lookup+0x21/0x4b EAX: f7261224
> EBX: f7261000 ECX: f0de6300 EDX:
> f0de634c ESI:
> ffff0000 EDBUG: soft lockup - CPU#0 stuck for 61s!
> ...
This is unfortunately almost unreadable. Please resend the message
as attachment.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8
2008-04-11 18:37 HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8 Enrico Demarin
2008-04-13 7:51 ` Patrick McHardy
@ 2008-04-13 12:10 ` Jarek Poplawski
2008-04-14 20:26 ` [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop Jarek Poplawski
1 sibling, 1 reply; 19+ messages in thread
From: Jarek Poplawski @ 2008-04-13 12:10 UTC (permalink / raw)
To: Enrico Demarin; +Cc: netdev, Patrick McHardy
Enrico Demarin wrote, On 04/11/2008 08:37 PM:
> Hi everyone,
>
> I stumbled by chance in a deadlock condition using HTB and the ingress
> scheduler at the same time.
>
> - The bug seems to have been introduced in 2.6.23 and forward ( 2.6.22
> works fine )
> - Tested up to 2.6.25-rc8
>
> I found a temporary workaround ( the ingress didnt have a reason to be
> there in first place , just omitting it from the script avoids the
> condition ), but it would be nice to have a proper fix. Let me know if
> more data/testing is needed.
Hi,
It's a very nice test and results, but alas I don't have 3 boxes
around, so I wonder if you could try this debugging patch below?
I think one of possible reasons could be a qdisc with the same
handle and parent ids, like ingress, but I can't see how it could
be referenced by your htb classes yet...
Thanks,
Jarek P.
---
net/sched/sch_api.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 15b91a9..de52b17 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -386,11 +386,18 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
if (n == 0)
return;
while ((parentid = sch->parent)) {
+ struct Qdisc *sch_old = sch;
+
sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid));
if (sch == NULL) {
WARN_ON(parentid != TC_H_ROOT);
return;
}
+ if (sch == sch_old) {
+ printk("qdisc loop: %p, %x\n", sch, sch->parent);
+ return;
+ }
+
cops = sch->ops->cl_ops;
if (cops->qlen_notify) {
cl = cops->get(sch, parentid);
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8
2008-04-13 7:51 ` Patrick McHardy
@ 2008-04-13 19:20 ` Enrico Demarin
2008-04-14 7:14 ` Patrick McHardy
2008-04-14 7:51 ` Patrick McHardy
0 siblings, 2 replies; 19+ messages in thread
From: Enrico Demarin @ 2008-04-13 19:20 UTC (permalink / raw)
To: Patrick McHardy; +Cc: netdev
[-- Attachment #1: Type: text/plain, Size: 804 bytes --]
Hi Patrick,
here it is, hope it will work out this time
- Enrico
Patrick McHardy wrote:
> Enrico Demarin wrote:
>> Kernel message
>> --------------
>>
>> BUG: soft lockup - CPU#0 stuck for 61s!
>> [tc:5667] Pid: 5667,
>> comm: tc Not tainted (2.6.25-rc8
>> #1) EIP:
>> 0060:[<c0282564>] EFLAGS: 00000287 CPU:
>> 0 EIP is at
>> qdisc_lookup+0x21/0x4b EAX: f7261224
>> EBX: f7261000 ECX: f0de6300 EDX:
>> f0de634c ESI:
>> ffff0000 EDBUG: soft lockup - CPU#0 stuck for 61s!
> > ...
>
> This is unfortunately almost unreadable. Please resend the message
> as attachment.
>
[-- Attachment #2: lockup.txt --]
[-- Type: text/plain, Size: 5435 bytes --]
BUG: soft lockup - CPU#0 stuck for 61s! [tc:5667]
Pid: 5667, comm: tc Not tainted (2.6.25-rc8 #1)
EIP: 0060:[<c0282564>] EFLAGS: 00000287 CPU: 0
EIP is at qdisc_lookup+0x21/0x4b
EAX: f7261224 EBX: f7261000 ECX: f0de6300 EDX: f0de634c
ESI: ffff0000 EDBUG: soft lockup - CPU#0 stuck for 61s! [tc:5667]
Pid: 5667, comm: tc Not tainted (2.6.25-rc8 #1)
EIP: 0060:[<c0282564>] EFLAGS: 00000287 CPU: 0
EIP is at qdisc_lookup+0x21/0x4b
EAX: f7261224 EBX: f7261000 ECX: f0de6300 EDX: f0de634c
ESI: ffff0000 EDI: f8ac4120 EBP:
DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
CR0: 80050033 CR2: 003c30d0 CR3: 36f09000 CR4: 000006d0
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
DR6: ffff0ff0 DR7: 00000400
[<c02828a4>] qdisc_tree_decrease_qlen+0x24/0x6f
[<f8b07c28>] htb_delete+0x97/0x12b [sch_htb]
[<c02835cf>] tc_ctl_tclass+0x1b4/0x231
[<c028341b>] ? tc_ctl_tclass+0x0/0x231
[<c027ea92>] rtnetlink_rcv_msg+0x181/0x18d
[<c027e911>] ? rtnetlink_rcv_msg+0x0/0x18d
[<c02887f7>] netlink_rcv_skb+0x38/0x83
[<c027eab5>] rtnetlink_rcv+0
[<c028767f>] netlink_unicast+0x127/0x177
[<c0287ebf>] netlink_sendmsg+0x241/0x250
[<c026aee1>] sock_sendmsg+0xb8/0xcf
[<c026b08b>] ? sock_recvmsg+0xc2/0xda
[<c012ca68>] ? autoremove_wake_function+0x0/0x33
[<c01dd0cd>] ? copy_from_user+0x3b/0x5e
[<c0271f34>] ? verify_iovec+0x40/0x74
[<c026c403>] sys_sendmsg+0x175/0x1dc
[<c0156cc1>] ? __do_fault+0x2d2/0x326
[<c0149554>] ? unlock_page+0x25/0x28
[<c0156cd5>] ? __do_fault+0x2e6/0x326
[<c0112a8b>] ? do_page_fault+0x1c0/0x406
[<c01369c7>] ? __lock_release+0
[<c026c780>] sys_socketcall+0x164/0x17f
[<c01358ad>] ? trace_hardirqs_on+0xe1/0x102
[<c01036fe>] sysenter_past_esp+0x5f/0xa5
=======================
BUG: soft lockup - CPU#1 stuck for 61s! [ksoftirqd/1:7]
Pid: 7, comm: ksoftirqd/1 Not tainted (2.6.25-rc8 #1)
EIP: 0060:[<c010845f>] EFLAGS: 00000246 CPU: 1
EIP is at native_read_tsc+0xe/0x13
EAX: 16ae9694 EBX: 16ae9628 ECX: 00000001 EDX: 00000175
ESI: 00000001 EDI: f7261200 EBP: c0425de8 ESP: c0425de8
DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
CR0: 8005003b CR2: 003e37b0 CR3: 00421000 CR4: 000006d0
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
DR6: ffff0ff0 DR7: 00000400
[<c01dc78a>] delay_tsc+0x15/0x1f
[<c01dc7ac>] __delay+0x9/0xb
[<c01df94f>] __spin_lock_debug+0x56/0xab
[<c01dfa0d>] _raw_spin_lock+0x69/0x7e
[<c02d4185>] _spin_lock+0x20/0x25
[<c027520e>] ? dev_queue_xmit+0x171/0x2c1
[<c027520e>] dev_queue_xmit+0x171/0x2c1
[<c028a4b5>] ? nf_hook_slow+0xcf/0xda
[<c0291f76>] ip_finish_output+0x1fc/0x237
[<c0292373>] ip_output+0x83/0x88
[<c0290a2f>] ip_forward_finish+0x2f/0x32
[<c0290c5c>] ip_forward+0x22a/0x27a
[<c028fbb3>] ip_rcv_finish+0x29d/0x2bc
[<c028fde4>] ip_rcv+0x212/0x23e
[<c0275861>] netif_receive_skb+0x28b/0x2be
[<f899446b>] e1000_clean_rx_irq+0x3b7/0x468 [e1000]
[<f8993d66>] e1000_clean+0x60/0xd8 [e1000]
[<c0275a38>] net_rx_action+0x72/0x14c
[<c0120b25>] __do_softirq+0x73/0xe6
[<c0105b43>] do_softirq+0x5d/0xbd
[<c0121000>] ksoftirqd+0x5b/0xc1
[<c0120fa5>] ? ksoftirqd+0x0/0xc1
[<c012c606>] kthread+0x37/0x59
[<c012c5cf>] ? kthread+0x0/0x59
[<c010440f>] kernel_thread_helper+0x7/0x10
=======================
[-- Attachment #3: enrico.vcf --]
[-- Type: text/x-vcard, Size: 275 bytes --]
begin:vcard
fn:Enrico Demarin
n:Demarin;Enrico
org:Superclick Networks;R&D
adr:;;10222 St Michel;Montreal;QC;H1H5H1;Canada
email;internet:enrico@superclick.com
title:Director
tel;work:514-847-0333x246
x-mozilla-html:FALSE
url:http://www.superclick.com
version:2.1
end:vcard
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8
2008-04-13 19:20 ` Enrico Demarin
@ 2008-04-14 7:14 ` Patrick McHardy
2008-04-14 7:15 ` Patrick McHardy
2008-04-14 7:51 ` Patrick McHardy
1 sibling, 1 reply; 19+ messages in thread
From: Patrick McHardy @ 2008-04-14 7:14 UTC (permalink / raw)
To: Enrico Demarin; +Cc: netdev
[-- Attachment #1: Type: text/plain, Size: 145 bytes --]
Enrico Demarin wrote:
> Hi Patrick,
>
> here it is, hope it will work out this time
Thanks. Could you try whether this patch fixes it please?
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 619 bytes --]
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c
index 66148cc..4c7ffb1 100644
--- a/net/sched/sch_htb.c
+++ b/net/sched/sch_htb.c
@@ -1398,7 +1398,7 @@ static int htb_change_class(struct Qdisc *sch, u32 classid,
/* create leaf qdisc early because it uses kmalloc(GFP_KERNEL)
so that can't be used inside of sch_tree_lock
-- thanks to Karlis Peisenieks */
- new_q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, classid);
+ new_q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, parent);
sch_tree_lock(sch);
if (parent && !parent->level) {
unsigned int qlen = parent->un.leaf.q->q.qlen;
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8
2008-04-14 7:14 ` Patrick McHardy
@ 2008-04-14 7:15 ` Patrick McHardy
2008-04-14 7:20 ` Patrick McHardy
0 siblings, 1 reply; 19+ messages in thread
From: Patrick McHardy @ 2008-04-14 7:15 UTC (permalink / raw)
To: Enrico Demarin; +Cc: netdev
[-- Attachment #1: Type: text/plain, Size: 222 bytes --]
Patrick McHardy wrote:
> Enrico Demarin wrote:
>> Hi Patrick,
>>
>> here it is, hope it will work out this time
>
> Thanks. Could you try whether this patch fixes it please?
That one was broken, this one should work.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 636 bytes --]
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c
index 66148cc..fa6b1ad 100644
--- a/net/sched/sch_htb.c
+++ b/net/sched/sch_htb.c
@@ -1398,7 +1398,8 @@ static int htb_change_class(struct Qdisc *sch, u32 classid,
/* create leaf qdisc early because it uses kmalloc(GFP_KERNEL)
so that can't be used inside of sch_tree_lock
-- thanks to Karlis Peisenieks */
- new_q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, classid);
+ new_q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops,
+ parent->classid);
sch_tree_lock(sch);
if (parent && !parent->level) {
unsigned int qlen = parent->un.leaf.q->q.qlen;
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8
2008-04-14 7:15 ` Patrick McHardy
@ 2008-04-14 7:20 ` Patrick McHardy
0 siblings, 0 replies; 19+ messages in thread
From: Patrick McHardy @ 2008-04-14 7:20 UTC (permalink / raw)
To: Enrico Demarin; +Cc: netdev
Patrick McHardy wrote:
> Patrick McHardy wrote:
>> Enrico Demarin wrote:
>>> Hi Patrick,
>>>
>>> here it is, hope it will work out this time
>>
>> Thanks. Could you try whether this patch fixes it please?
>
>
> That one was broken, this one should work.
Actually both don't fix the problem, sorry. Will retry
after another coffee :)
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8
2008-04-13 19:20 ` Enrico Demarin
2008-04-14 7:14 ` Patrick McHardy
@ 2008-04-14 7:51 ` Patrick McHardy
1 sibling, 0 replies; 19+ messages in thread
From: Patrick McHardy @ 2008-04-14 7:51 UTC (permalink / raw)
To: Enrico Demarin; +Cc: netdev
[-- Attachment #1: Type: text/plain, Size: 228 bytes --]
Enrico Demarin wrote:
> Hi Patrick,
>
> here it is, hope it will work out this time
I can't figure out the problem. Could you retry using
this patch? It should hopefully show us on which class
qdisc_decrease_qlen is looping.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 412 bytes --]
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c
index 66148cc..40d05c5 100644
--- a/net/sched/sch_htb.c
+++ b/net/sched/sch_htb.c
@@ -1171,6 +1171,7 @@ static void htb_qlen_notify(struct Qdisc *sch, unsigned long arg)
{
struct htb_class *cl = (struct htb_class *)arg;
+ printk("htb_qlen_notify classid=%x\n", cl->classid);
if (cl->un.leaf.q->q.qlen == 0)
htb_deactivate(qdisc_priv(sch), cl);
}
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-13 12:10 ` Jarek Poplawski
@ 2008-04-14 20:26 ` Jarek Poplawski
2008-04-14 20:28 ` Patrick McHardy
0 siblings, 1 reply; 19+ messages in thread
From: Jarek Poplawski @ 2008-04-14 20:26 UTC (permalink / raw)
To: David Miller; +Cc: Enrico Demarin, netdev, Patrick McHardy
On Sun, Apr 13, 2008 at 02:10:31PM +0200, Jarek Poplawski wrote:
> Enrico Demarin wrote, On 04/11/2008 08:37 PM:
...
> > I stumbled by chance in a deadlock condition using HTB and the ingress
> > scheduler at the same time.
...
> I think one of possible reasons could be a qdisc with the same
> handle and parent ids, like ingress, but I can't see how it could
> be referenced by your htb classes yet...
I think I got it! Enrico wrote to me he will not be able to test
before monday, but IMHO this fix is obvious here...
Regards,
Jarek P.
--------------->
[NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
TC_H_MAJ(parentid) for root classes is the same as for ingress, and if
ingress qdisc is created qdisc_lookup() returns its pointer (without
ingress NULL is returned). After this all qdisc_lookups give the same,
and we get endless loop. (I don't know how this could hide for so
long - it should trigger with every leaf class deleted if it's qdisc
isn't empty.)
After this fix qdisc_lookup() is omitted both for ingress and root
parents, but looking for root is only wasting a little time here...
Many thanks to Enrico Demarin for finding a test for catching this
bug, which probably bothered quite a lot of admins.
Reported-by: Enrico Demarin <enrico@superclick.com>,
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Cc: Patrick McHardy <kaber@trash.net>
---
net/sched/sch_api.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 15b91a9..c40773c 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -386,6 +386,9 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
if (n == 0)
return;
while ((parentid = sch->parent)) {
+ if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS))
+ return;
+
sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid));
if (sch == NULL) {
WARN_ON(parentid != TC_H_ROOT);
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-14 20:26 ` [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop Jarek Poplawski
@ 2008-04-14 20:28 ` Patrick McHardy
2008-04-14 22:11 ` David Miller
0 siblings, 1 reply; 19+ messages in thread
From: Patrick McHardy @ 2008-04-14 20:28 UTC (permalink / raw)
To: Jarek Poplawski; +Cc: David Miller, Enrico Demarin, netdev
Jarek Poplawski wrote:
> [NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
>
> TC_H_MAJ(parentid) for root classes is the same as for ingress, and if
> ingress qdisc is created qdisc_lookup() returns its pointer (without
> ingress NULL is returned). After this all qdisc_lookups give the same,
> and we get endless loop. (I don't know how this could hide for so
> long - it should trigger with every leaf class deleted if it's qdisc
> isn't empty.)
>
> After this fix qdisc_lookup() is omitted both for ingress and root
> parents, but looking for root is only wasting a little time here...
> Many thanks to Enrico Demarin for finding a test for catching this
> bug, which probably bothered quite a lot of admins.
>
Good catch, I agree that this is the reason for sure.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-14 20:28 ` Patrick McHardy
@ 2008-04-14 22:11 ` David Miller
2008-04-15 5:32 ` Jarek Poplawski
0 siblings, 1 reply; 19+ messages in thread
From: David Miller @ 2008-04-14 22:11 UTC (permalink / raw)
To: kaber; +Cc: jarkao2, enrico, netdev
From: Patrick McHardy <kaber@trash.net>
Date: Mon, 14 Apr 2008 22:28:52 +0200
> Jarek Poplawski wrote:
> > [NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
> >
> > TC_H_MAJ(parentid) for root classes is the same as for ingress, and if
> > ingress qdisc is created qdisc_lookup() returns its pointer (without
> > ingress NULL is returned). After this all qdisc_lookups give the same,
> > and we get endless loop. (I don't know how this could hide for so
> > long - it should trigger with every leaf class deleted if it's qdisc
> > isn't empty.)
> >
> > After this fix qdisc_lookup() is omitted both for ingress and root
> > parents, but looking for root is only wasting a little time here...
> > Many thanks to Enrico Demarin for finding a test for catching this
> > bug, which probably bothered quite a lot of admins.
> >
>
> Good catch, I agree that this is the reason for sure.
I'll take that as an ACK :-)
Applied, thanks everyone!
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-14 22:11 ` David Miller
@ 2008-04-15 5:32 ` Jarek Poplawski
2008-04-15 12:37 ` Patrick McHardy
0 siblings, 1 reply; 19+ messages in thread
From: Jarek Poplawski @ 2008-04-15 5:32 UTC (permalink / raw)
To: David Miller; +Cc: kaber, enrico, netdev
On Mon, Apr 14, 2008 at 03:11:02PM -0700, David Miller wrote:
...
> > Jarek Poplawski wrote:
...
> > > After this fix qdisc_lookup() is omitted both for ingress and root
> > > parents, but looking for root is only wasting a little time here...
...Actually, there is yet a possibility that somebody uses ffff:
handle for a qdisc (not ingress), which could make here a little
difference, so this place could be improved for this case (even
with something like my earlier debugging patch in this thread,
which BTW could be a safety for maybe some other quirks here),
but it seems it would be better to discourage using this handle
for anything but ingress.
Jarek P.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-15 5:32 ` Jarek Poplawski
@ 2008-04-15 12:37 ` Patrick McHardy
2008-04-15 13:00 ` Jarek Poplawski
0 siblings, 1 reply; 19+ messages in thread
From: Patrick McHardy @ 2008-04-15 12:37 UTC (permalink / raw)
To: Jarek Poplawski; +Cc: David Miller, enrico, netdev
Jarek Poplawski wrote:
> On Mon, Apr 14, 2008 at 03:11:02PM -0700, David Miller wrote:
> ...
>>> Jarek Poplawski wrote:
> ...
>>>> After this fix qdisc_lookup() is omitted both for ingress and root
>>>> parents, but looking for root is only wasting a little time here...
>
> ...Actually, there is yet a possibility that somebody uses ffff:
> handle for a qdisc (not ingress), which could make here a little
> difference, so this place could be improved for this case (even
> with something like my earlier debugging patch in this thread,
> which BTW could be a safety for maybe some other quirks here),
> but it seems it would be better to discourage using this handle
> for anything but ingress.
I don't think we should do that, it would be preferable to
compare the entire handle instead of just the major to avoid
this.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-15 12:37 ` Patrick McHardy
@ 2008-04-15 13:00 ` Jarek Poplawski
2008-04-15 13:09 ` Patrick McHardy
0 siblings, 1 reply; 19+ messages in thread
From: Jarek Poplawski @ 2008-04-15 13:00 UTC (permalink / raw)
To: Patrick McHardy; +Cc: David Miller, enrico, netdev
On Tue, Apr 15, 2008 at 02:37:32PM +0200, Patrick McHardy wrote:
> Jarek Poplawski wrote:
>> On Mon, Apr 14, 2008 at 03:11:02PM -0700, David Miller wrote:
>> ...
>>>> Jarek Poplawski wrote:
>> ...
>>>>> After this fix qdisc_lookup() is omitted both for ingress and root
>>>>> parents, but looking for root is only wasting a little time here...
>>
>> ...Actually, there is yet a possibility that somebody uses ffff:
>> handle for a qdisc (not ingress), which could make here a little
>> difference, so this place could be improved for this case (even
>> with something like my earlier debugging patch in this thread,
>> which BTW could be a safety for maybe some other quirks here),
>> but it seems it would be better to discourage using this handle
>> for anything but ingress.
>
>
> I don't think we should do that, it would be preferable to
> compare the entire handle instead of just the major to avoid
> this.
Probably you are right... I guess you could handle this?
Regards,
Jarek P.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-15 13:00 ` Jarek Poplawski
@ 2008-04-15 13:09 ` Patrick McHardy
2008-04-15 13:10 ` Patrick McHardy
2008-04-15 17:41 ` Jarek Poplawski
0 siblings, 2 replies; 19+ messages in thread
From: Patrick McHardy @ 2008-04-15 13:09 UTC (permalink / raw)
To: Jarek Poplawski; +Cc: David Miller, enrico, netdev
[-- Attachment #1: Type: text/plain, Size: 1184 bytes --]
Jarek Poplawski wrote:
> On Tue, Apr 15, 2008 at 02:37:32PM +0200, Patrick McHardy wrote:
>> Jarek Poplawski wrote:
>>> On Mon, Apr 14, 2008 at 03:11:02PM -0700, David Miller wrote:
>>> ...
>>>>> Jarek Poplawski wrote:
>>> ...
>>>>>> After this fix qdisc_lookup() is omitted both for ingress and root
>>>>>> parents, but looking for root is only wasting a little time here...
>>> ...Actually, there is yet a possibility that somebody uses ffff:
>>> handle for a qdisc (not ingress), which could make here a little
>>> difference, so this place could be improved for this case (even
>>> with something like my earlier debugging patch in this thread,
>>> which BTW could be a safety for maybe some other quirks here),
>>> but it seems it would be better to discourage using this handle
>>> for anything but ingress.
>>
>> I don't think we should do that, it would be preferable to
>> compare the entire handle instead of just the major to avoid
>> this.
>
> Probably you are right... I guess you could handle this?
On second thought I agree with you, the behaviour is inconsistent
and FFFF: shouldn't be used as major, otherwise the major doesn't
uniquely identify a qdisc anymore.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 437 bytes --]
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index fc8708a..c486e9d 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -386,7 +386,7 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
if (n == 0)
return;
while ((parentid = sch->parent)) {
- if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS))
+ if (parentid == TC_H_INGRESS)
return;
sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid));
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-15 13:09 ` Patrick McHardy
@ 2008-04-15 13:10 ` Patrick McHardy
2008-04-15 17:41 ` Jarek Poplawski
1 sibling, 0 replies; 19+ messages in thread
From: Patrick McHardy @ 2008-04-15 13:10 UTC (permalink / raw)
To: Jarek Poplawski; +Cc: David Miller, enrico, netdev
Patrick McHardy wrote:
> Jarek Poplawski wrote:
>>> I don't think we should do that, it would be preferable to
>>> compare the entire handle instead of just the major to avoid
>>> this.
>>
>> Probably you are right... I guess you could handle this?
>
>
> On second thought I agree with you, the behaviour is inconsistent
> and FFFF: shouldn't be used as major, otherwise the major doesn't
> uniquely identify a qdisc anymore.
>
> diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
> index fc8708a..c486e9d 100644
> --- a/net/sched/sch_api.c
> +++ b/net/sched/sch_api.c
That patch shouldn't have been there, please ignore :)
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-15 13:09 ` Patrick McHardy
2008-04-15 13:10 ` Patrick McHardy
@ 2008-04-15 17:41 ` Jarek Poplawski
2008-04-15 18:25 ` Jarek Poplawski
1 sibling, 1 reply; 19+ messages in thread
From: Jarek Poplawski @ 2008-04-15 17:41 UTC (permalink / raw)
To: Patrick McHardy; +Cc: David Miller, enrico, netdev
On Tue, Apr 15, 2008 at 03:09:53PM +0200, Patrick McHardy wrote:
...
> On second thought I agree with you, the behaviour is inconsistent
> and FFFF: shouldn't be used as major, otherwise the major doesn't
> uniquely identify a qdisc anymore.
Like ingress vs. root handle? I think it's more about additional
checks (and good memory).
> diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
> index fc8708a..c486e9d 100644
> --- a/net/sched/sch_api.c
> +++ b/net/sched/sch_api.c
> @@ -386,7 +386,7 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
> if (n == 0)
> return;
> while ((parentid = sch->parent)) {
> - if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS))
> + if (parentid == TC_H_INGRESS)
Maybe like this?:
+ if (parentid == TC_H_ROOT || parentid == TC_H_INGRESS)
> return;
>
> sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid));
Jarek P.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-15 17:41 ` Jarek Poplawski
@ 2008-04-15 18:25 ` Jarek Poplawski
2008-04-15 19:29 ` Jarek Poplawski
0 siblings, 1 reply; 19+ messages in thread
From: Jarek Poplawski @ 2008-04-15 18:25 UTC (permalink / raw)
To: Patrick McHardy; +Cc: David Miller, enrico, netdev
On Tue, Apr 15, 2008 at 07:41:44PM +0200, Jarek Poplawski wrote:
> On Tue, Apr 15, 2008 at 03:09:53PM +0200, Patrick McHardy wrote:
> ...
> > On second thought I agree with you, the behaviour is inconsistent
> > and FFFF: shouldn't be used as major, otherwise the major doesn't
> > uniquely identify a qdisc anymore.
>
> Like ingress vs. root handle? I think it's more about additional
> checks (and good memory).
...That's why better discourage...
>
> > diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
> > index fc8708a..c486e9d 100644
> > --- a/net/sched/sch_api.c
> > +++ b/net/sched/sch_api.c
> > @@ -386,7 +386,7 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
> > if (n == 0)
> > return;
> > while ((parentid = sch->parent)) {
> > - if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS))
> > + if (parentid == TC_H_INGRESS)
>
> Maybe like this?:
> + if (parentid == TC_H_ROOT || parentid == TC_H_INGRESS)
Still wrong! Rather this:
while ((parentid = sch->parent)) {
if (parentid == TC_H_ROOT)
return;
sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid));
if (!sch || sch->parentid == TC_H_INGRESS) {
...
Jarek P.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
2008-04-15 18:25 ` Jarek Poplawski
@ 2008-04-15 19:29 ` Jarek Poplawski
0 siblings, 0 replies; 19+ messages in thread
From: Jarek Poplawski @ 2008-04-15 19:29 UTC (permalink / raw)
To: Patrick McHardy; +Cc: David Miller, enrico, netdev
On Tue, Apr 15, 2008 at 08:25:41PM +0200, Jarek Poplawski wrote:
> On Tue, Apr 15, 2008 at 07:41:44PM +0200, Jarek Poplawski wrote:
> > On Tue, Apr 15, 2008 at 03:09:53PM +0200, Patrick McHardy wrote:
...
> > > diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
> > > index fc8708a..c486e9d 100644
> > > --- a/net/sched/sch_api.c
> > > +++ b/net/sched/sch_api.c
> > > @@ -386,7 +386,7 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
> > > if (n == 0)
> > > return;
> > > while ((parentid = sch->parent)) {
> > > - if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS))
> > > + if (parentid == TC_H_INGRESS)
> >
> > Maybe like this?:
> > + if (parentid == TC_H_ROOT || parentid == TC_H_INGRESS)
>
> Still wrong! Rather this:
>
> while ((parentid = sch->parent)) {
> if (parentid == TC_H_ROOT)
> return;
...Hmm... it seems to be enough?! (At least with current ingress
functionality.)
>
> sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid));
> if (!sch || sch->parentid == TC_H_INGRESS) {
> ...
...and here WARN_ON() instead of if (): root is never looked up, so we
can't get NULL nor ingress here; if we have non-ingress ffff:0000
we'll get it (and ingress can't co-exist).
Jarek P.
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2008-04-15 19:30 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-11 18:37 HTB and ingress scheduler SMP Soft Lockup in 2.6.23-2.6.25-rc8 Enrico Demarin
2008-04-13 7:51 ` Patrick McHardy
2008-04-13 19:20 ` Enrico Demarin
2008-04-14 7:14 ` Patrick McHardy
2008-04-14 7:15 ` Patrick McHardy
2008-04-14 7:20 ` Patrick McHardy
2008-04-14 7:51 ` Patrick McHardy
2008-04-13 12:10 ` Jarek Poplawski
2008-04-14 20:26 ` [PATCH][NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop Jarek Poplawski
2008-04-14 20:28 ` Patrick McHardy
2008-04-14 22:11 ` David Miller
2008-04-15 5:32 ` Jarek Poplawski
2008-04-15 12:37 ` Patrick McHardy
2008-04-15 13:00 ` Jarek Poplawski
2008-04-15 13:09 ` Patrick McHardy
2008-04-15 13:10 ` Patrick McHardy
2008-04-15 17:41 ` Jarek Poplawski
2008-04-15 18:25 ` Jarek Poplawski
2008-04-15 19:29 ` Jarek Poplawski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).