* Horrendous Audio Stutter - current git @ 2008-05-02 0:14 Parag Warudkar 2008-05-02 8:34 ` Peter Zijlstra 0 siblings, 1 reply; 49+ messages in thread From: Parag Warudkar @ 2008-05-02 0:14 UTC (permalink / raw) To: Ingo Molnar, a.p.zijlstra; +Cc: LKML Hi Ingo, Peter Under kernel compilation load (make -j8) audio is very much unusable on current linux-2.6.git - The stutter is so bad I can hardly tell what song I am listening to :) Even with make -j4 it still skips but not that badly. I am running Ubuntu Hardy (Pulseaudio) on a quad core machine and switching back to Ubuntu shipped kernel (2.6.24-16) resolves the issue totally. .config below. Revert of e22ecef1d2658ba54ed7d3fdb5d60829fb434c23 fixed similar issue. Parag # # Automatically generated make config: don't edit # Linux kernel version: 2.6.25 # Thu May 1 19:47:33 2008 # CONFIG_64BIT=y # CONFIG_X86_32 is not set CONFIG_X86_64=y CONFIG_X86=y CONFIG_DEFCONFIG_LIST="arch/x86/configs/x86_64_defconfig" # 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_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_RWSEM_GENERIC_SPINLOCK=y # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set # 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=y CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ZONE_DMA32=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_AUDIT_ARCH=y CONFIG_ARCH_SUPPORTS_AOUT=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_X86_SMP=y CONFIG_X86_64_SMP=y CONFIG_X86_HT=y CONFIG_X86_BIOS_REBOOT=y CONFIG_X86_TRAMPOLINE=y # CONFIG_KTIME_SCALAR is not set # # General setup # CONFIG_EXPERIMENTAL=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y # CONFIG_TASK_DELAY_ACCT is not set CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y 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=y # CONFIG_NAMESPACES is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_EMBEDDED=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_SYSCTL_SYSCALL_CHECK=y 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_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=y # CONFIG_MARKERS is not set CONFIG_OPROFILE=m CONFIG_HAVE_OPROFILE=y CONFIG_KPROBES=y CONFIG_KRETPROBES=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y # CONFIG_HAVE_DMA_ATTRS is not set 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 is not set CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y CONFIG_KMOD=y CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_BLK_DEV_IO_TRACE=y # CONFIG_BLK_DEV_BSG is not set CONFIG_BLOCK_COMPAT=y # # 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_PREEMPT_NOTIFIERS=y CONFIG_CLASSIC_RCU=y # # Processor type and features # CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 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_X86_RDC321X is not set # CONFIG_X86_VSMP is not set CONFIG_PARAVIRT_GUEST=y CONFIG_KVM_CLOCK=y CONFIG_KVM_GUEST=y CONFIG_PARAVIRT=y # CONFIG_MEMTEST_BOOTPARAM 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 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=y # CONFIG_GENERIC_CPU is not set CONFIG_X86_CPU=y CONFIG_X86_L1_CACHE_BYTES=64 CONFIG_X86_INTERNODE_CACHE_BYTES=64 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=6 CONFIG_X86_GOOD_APIC=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_P6_NOP=y CONFIG_X86_TSC=y CONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=64 CONFIG_X86_DEBUGCTLMSR=y CONFIG_HPET_TIMER=y CONFIG_DMI=y CONFIG_GART_IOMMU=y # CONFIG_CALGARY_IOMMU is not set CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y CONFIG_NR_CPUS=4 # 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_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_MCE=y CONFIG_X86_MCE_INTEL=y # CONFIG_X86_MCE_AMD is not set # CONFIG_I8K is not set CONFIG_MICROCODE=m CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=m CONFIG_X86_CPUID=m # CONFIG_NUMA is not set CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y # CONFIG_FLATMEM_MANUAL is not set # CONFIG_DISCONTIGMEM_MANUAL is not set CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y CONFIG_HAVE_MEMORY_PRESENT=y # CONFIG_SPARSEMEM_STATIC is not set CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y # # Memory hotplug is currently incompatible with Software Suspend # CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_RESOURCES_64BIT=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y CONFIG_MTRR=y CONFIG_X86_PAT=y # CONFIG_EFI is not set CONFIG_SECCOMP=y # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_HZ_300 is not set # CONFIG_HZ_1000 is not set CONFIG_HZ=250 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y CONFIG_PHYSICAL_START=0x200000 CONFIG_RELOCATABLE=y CONFIG_PHYSICAL_ALIGN=0x200000 CONFIG_HOTPLUG_CPU=y # CONFIG_COMPAT_VDSO is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # # Power management options # CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_PM=y CONFIG_PM_DEBUG=y # CONFIG_PM_VERBOSE is not set CONFIG_CAN_PM_TRACE=y # CONFIG_PM_TRACE_RTC is not set CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y CONFIG_HIBERNATION=y CONFIG_PM_STD_PARTITION="/dev/sdb1" CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y CONFIG_ACPI_PROCFS=y CONFIG_ACPI_PROCFS_POWER=y CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y CONFIG_ACPI_AC=m CONFIG_ACPI_BATTERY=m CONFIG_ACPI_BUTTON=m CONFIG_ACPI_VIDEO=m CONFIG_ACPI_FAN=m CONFIG_ACPI_DOCK=m CONFIG_ACPI_BAY=m CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m # CONFIG_ACPI_WMI is not set # CONFIG_ACPI_ASUS 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=m # CONFIG_ACPI_SBS 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=m CONFIG_CPU_FREQ_STAT_DETAILS=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE 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_K8=m CONFIG_X86_POWERNOW_K8_ACPI=y # CONFIG_X86_SPEEDSTEP_CENTRINO is not set # CONFIG_X86_P4_CLOCKMOD is not set # # shared options # # CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set # CONFIG_X86_SPEEDSTEP_LIB is not set CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y # # Bus options (PCI etc.) # CONFIG_PCI=y CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y CONFIG_PCI_DOMAINS=y # CONFIG_DMAR is not set CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m CONFIG_PCIEAER=y CONFIG_PCIEASPM=y # CONFIG_PCIEASPM_DEBUG 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_K8_NB=y CONFIG_PCCARD=m # CONFIG_PCMCIA_DEBUG is not set CONFIG_PCMCIA=m CONFIG_PCMCIA_LOAD_CIS=y CONFIG_PCMCIA_IOCTL=y CONFIG_CARDBUS=y # # PC-card bridges # CONFIG_YENTA=m CONFIG_YENTA_O2=y CONFIG_YENTA_RICOH=y CONFIG_YENTA_TI=y CONFIG_YENTA_ENE_TUNE=y CONFIG_YENTA_TOSHIBA=y CONFIG_PD6729=m CONFIG_I82092=m CONFIG_PCCARD_NONSTATIC=m CONFIG_HOTPLUG_PCI=m CONFIG_HOTPLUG_PCI_FAKE=m CONFIG_HOTPLUG_PCI_ACPI=m CONFIG_HOTPLUG_PCI_ACPI_IBM=m CONFIG_HOTPLUG_PCI_CPCI=y CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m CONFIG_HOTPLUG_PCI_SHPC=m # # Executable file formats / Emulations # CONFIG_BINFMT_ELF=y CONFIG_COMPAT_BINFMT_ELF=y CONFIG_BINFMT_MISC=m CONFIG_IA32_EMULATION=y CONFIG_IA32_AOUT=m CONFIG_COMPAT=y CONFIG_COMPAT_FOR_U64_ALIGNMENT=y CONFIG_SYSVIPC_COMPAT=y # # Networking # CONFIG_NET=y # # Networking options # 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_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=m CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y CONFIG_TCP_CONG_ADVANCED=y CONFIG_TCP_CONG_BIC=m CONFIG_TCP_CONG_CUBIC=m CONFIG_TCP_CONG_WESTWOOD=m CONFIG_TCP_CONG_HTCP=m CONFIG_TCP_CONG_HSTCP=m CONFIG_TCP_CONG_HYBLA=m CONFIG_TCP_CONG_VEGAS=m CONFIG_TCP_CONG_SCALABLE=m CONFIG_TCP_CONG_LP=m CONFIG_TCP_CONG_VENO=m CONFIG_TCP_CONG_YEAH=m CONFIG_TCP_CONG_ILLINOIS=m # CONFIG_DEFAULT_BIC is not set # CONFIG_DEFAULT_CUBIC is not set # CONFIG_DEFAULT_HTCP is not set # CONFIG_DEFAULT_VEGAS is not set # CONFIG_DEFAULT_WESTWOOD is not set CONFIG_DEFAULT_RENO=y CONFIG_DEFAULT_TCP_CONG="reno" CONFIG_TCP_MD5SIG=y CONFIG_IP_VS=m # CONFIG_IP_VS_DEBUG is not set CONFIG_IP_VS_TAB_BITS=12 # # IPVS transport protocol load balancing support # CONFIG_IP_VS_PROTO_TCP=y CONFIG_IP_VS_PROTO_UDP=y CONFIG_IP_VS_PROTO_ESP=y CONFIG_IP_VS_PROTO_AH=y # # IPVS scheduler # CONFIG_IP_VS_RR=m CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m CONFIG_IP_VS_WLC=m CONFIG_IP_VS_LBLC=m CONFIG_IP_VS_LBLCR=m CONFIG_IP_VS_DH=m CONFIG_IP_VS_SH=m CONFIG_IP_VS_SED=m CONFIG_IP_VS_NQ=m # # IPVS application helper # CONFIG_IP_VS_FTP=m CONFIG_IPV6=m CONFIG_IPV6_PRIVACY=y # CONFIG_IPV6_ROUTER_PREF 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 is not set CONFIG_INET6_XFRM_TUNNEL=m CONFIG_INET6_TUNNEL=m CONFIG_INET6_XFRM_MODE_TRANSPORT=m CONFIG_INET6_XFRM_MODE_TUNNEL=m CONFIG_INET6_XFRM_MODE_BEET=m CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m CONFIG_IPV6_SIT=m CONFIG_IPV6_NDISC_NODETYPE=y CONFIG_IPV6_TUNNEL=m # CONFIG_IPV6_MULTIPLE_TABLES is not set # CONFIG_IPV6_MROUTE is not set # CONFIG_NETLABEL is not set CONFIG_NETWORK_SECMARK=y CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set CONFIG_NETFILTER_ADVANCED=y CONFIG_BRIDGE_NETFILTER=y # # Core Netfilter Configuration # CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_NETLINK_QUEUE=m CONFIG_NETFILTER_NETLINK_LOG=m CONFIG_NF_CONNTRACK=m CONFIG_NF_CT_ACCT=y CONFIG_NF_CONNTRACK_MARK=y CONFIG_NF_CONNTRACK_SECMARK=y CONFIG_NF_CONNTRACK_EVENTS=y # CONFIG_NF_CT_PROTO_DCCP is not set CONFIG_NF_CT_PROTO_GRE=m CONFIG_NF_CT_PROTO_SCTP=m CONFIG_NF_CT_PROTO_UDPLITE=m CONFIG_NF_CONNTRACK_AMANDA=m CONFIG_NF_CONNTRACK_FTP=m CONFIG_NF_CONNTRACK_H323=m CONFIG_NF_CONNTRACK_IRC=m CONFIG_NF_CONNTRACK_NETBIOS_NS=m 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=m 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 is not set CONFIG_NETFILTER_XT_TARGET_TRACE=m CONFIG_NETFILTER_XT_TARGET_SECMARK=m CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m # CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set 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 is not set CONFIG_NETFILTER_XT_MATCH_LENGTH=m CONFIG_NETFILTER_XT_MATCH_LIMIT=m CONFIG_NETFILTER_XT_MATCH_MAC=m CONFIG_NETFILTER_XT_MATCH_MARK=m # CONFIG_NETFILTER_XT_MATCH_OWNER is not set 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 is not set 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_PROTO_UDPLITE=m CONFIG_NF_NAT_PROTO_SCTP=m CONFIG_NF_NAT_FTP=m CONFIG_NF_NAT_IRC=m CONFIG_NF_NAT_TFTP=m CONFIG_NF_NAT_AMANDA=m 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=m CONFIG_IP6_NF_IPTABLES=m CONFIG_IP6_NF_MATCH_RT=m CONFIG_IP6_NF_MATCH_OPTS=m CONFIG_IP6_NF_MATCH_FRAG=m CONFIG_IP6_NF_MATCH_HL=m CONFIG_IP6_NF_MATCH_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 # # DECnet: Netfilter Configuration # CONFIG_DECNET_NF_GRABULATOR=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=m # CONFIG_BRIDGE_EBT_NFLOG is not set CONFIG_IP_DCCP=m CONFIG_INET_DCCP_DIAG=m CONFIG_IP_DCCP_ACKVEC=y # # DCCP CCIDs Configuration (EXPERIMENTAL) # CONFIG_IP_DCCP_CCID2=m # CONFIG_IP_DCCP_CCID2_DEBUG is not set CONFIG_IP_DCCP_CCID3=m # CONFIG_IP_DCCP_CCID3_DEBUG is not set CONFIG_IP_DCCP_CCID3_RTO=100 CONFIG_IP_DCCP_TFRC_LIB=m # # DCCP Kernel Hacking # # CONFIG_IP_DCCP_DEBUG is not set CONFIG_NET_DCCPPROBE=m 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 CONFIG_TIPC=m # CONFIG_TIPC_ADVANCED is not set # CONFIG_TIPC_DEBUG is not set CONFIG_ATM=y CONFIG_ATM_CLIP=y # CONFIG_ATM_CLIP_NO_ICMP is not set CONFIG_ATM_LANE=m CONFIG_ATM_MPOA=m CONFIG_ATM_BR2684=m # CONFIG_ATM_BR2684_IPFILTER is not set CONFIG_BRIDGE=m CONFIG_VLAN_8021Q=m CONFIG_DECNET=m # CONFIG_DECNET_ROUTER is not set CONFIG_LLC=m CONFIG_LLC2=m CONFIG_IPX=m # CONFIG_IPX_INTERN is not set CONFIG_ATALK=m CONFIG_DEV_APPLETALK=m CONFIG_IPDDP=m CONFIG_IPDDP_ENCAP=y CONFIG_IPDDP_DECAP=y CONFIG_X25=m CONFIG_LAPB=m CONFIG_ECONET=m CONFIG_ECONET_AUNUDP=y CONFIG_ECONET_NATIVE=y CONFIG_WAN_ROUTER=m CONFIG_NET_SCHED=y # # Queueing/Scheduling # CONFIG_NET_SCH_CBQ=m CONFIG_NET_SCH_HTB=m CONFIG_NET_SCH_HFSC=m CONFIG_NET_SCH_ATM=m CONFIG_NET_SCH_PRIO=m CONFIG_NET_SCH_RR=m CONFIG_NET_SCH_RED=m CONFIG_NET_SCH_SFQ=m CONFIG_NET_SCH_TEQL=m CONFIG_NET_SCH_TBF=m CONFIG_NET_SCH_GRED=m CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_NETEM=m CONFIG_NET_SCH_INGRESS=m # # Classification # CONFIG_NET_CLS=y CONFIG_NET_CLS_BASIC=m CONFIG_NET_CLS_TCINDEX=m CONFIG_NET_CLS_ROUTE4=m CONFIG_NET_CLS_ROUTE=y CONFIG_NET_CLS_FW=m CONFIG_NET_CLS_U32=m # CONFIG_CLS_U32_PERF is not set CONFIG_CLS_U32_MARK=y CONFIG_NET_CLS_RSVP=m CONFIG_NET_CLS_RSVP6=m # 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=y CONFIG_NET_ACT_MIRRED=m CONFIG_NET_ACT_IPT=m CONFIG_NET_ACT_NAT=m CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_SIMP=m # CONFIG_NET_CLS_IND is not set CONFIG_NET_SCH_FIFO=y # # Network testing # CONFIG_NET_PKTGEN=m CONFIG_NET_TCPPROBE=m # CONFIG_HAMRADIO is not set # CONFIG_CAN is not set # CONFIG_IRDA is not set CONFIG_BT=m CONFIG_BT_L2CAP=m CONFIG_BT_SCO=m CONFIG_BT_RFCOMM=m CONFIG_BT_RFCOMM_TTY=y CONFIG_BT_BNEP=m CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m # # Bluetooth device drivers # CONFIG_BT_HCIUSB=m CONFIG_BT_HCIUSB_SCO=y CONFIG_BT_HCIBTSDIO=m CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_H4=y CONFIG_BT_HCIUART_BCSP=y CONFIG_BT_HCIUART_LL=y CONFIG_BT_HCIBCM203X=m CONFIG_BT_HCIBPA10X=m CONFIG_BT_HCIBFUSB=m CONFIG_BT_HCIDTL1=m CONFIG_BT_HCIBT3C=m CONFIG_BT_HCIBLUECARD=m CONFIG_BT_HCIBTUART=m CONFIG_BT_HCIVHCI=m CONFIG_AF_RXRPC=m # CONFIG_AF_RXRPC_DEBUG is not set CONFIG_RXKAD=m CONFIG_FIB_RULES=y # # Wireless # CONFIG_CFG80211=m CONFIG_NL80211=y CONFIG_WIRELESS_EXT=y CONFIG_MAC80211=m # # Rate control algorithm selection # CONFIG_MAC80211_RC_DEFAULT_PID=y # CONFIG_MAC80211_RC_DEFAULT_NONE is not set # # Selecting 'y' for an algorithm will # # # build the algorithm into mac80211. # CONFIG_MAC80211_RC_DEFAULT="pid" CONFIG_MAC80211_RC_PID=y # CONFIG_MAC80211_MESH is not set CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set # CONFIG_MAC80211_DEBUG is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m CONFIG_IEEE80211_CRYPT_CCMP=m CONFIG_IEEE80211_CRYPT_TKIP=m CONFIG_RFKILL=m CONFIG_RFKILL_INPUT=m CONFIG_RFKILL_LEDS=y # 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=m # CONFIG_MTD is not set CONFIG_PARPORT=m CONFIG_PARPORT_PC=m CONFIG_PARPORT_SERIAL=m CONFIG_PARPORT_PC_FIFO=y # CONFIG_PARPORT_PC_SUPERIO is not set CONFIG_PARPORT_PC_PCMCIA=m # CONFIG_PARPORT_GSC is not set CONFIG_PARPORT_AX88796=m CONFIG_PARPORT_1284=y CONFIG_PARPORT_NOT_PC=y CONFIG_PNP=y # CONFIG_PNP_DEBUG is not set # # Protocols # CONFIG_PNPACPI=y CONFIG_BLK_DEV=y CONFIG_BLK_DEV_FD=m CONFIG_PARIDE=m # # Parallel IDE high-level drivers # CONFIG_PARIDE_PD=m CONFIG_PARIDE_PCD=m CONFIG_PARIDE_PF=m CONFIG_PARIDE_PT=m CONFIG_PARIDE_PG=m # # Parallel IDE protocol modules # CONFIG_PARIDE_ATEN=m CONFIG_PARIDE_BPCK=m CONFIG_PARIDE_COMM=m CONFIG_PARIDE_DSTR=m CONFIG_PARIDE_FIT2=m CONFIG_PARIDE_FIT3=m CONFIG_PARIDE_EPAT=m # CONFIG_PARIDE_EPATC8 is not set CONFIG_PARIDE_EPIA=m CONFIG_PARIDE_FRIQ=m CONFIG_PARIDE_FRPW=m CONFIG_PARIDE_KBIC=m CONFIG_PARIDE_KTTI=m CONFIG_PARIDE_ON20=m CONFIG_PARIDE_ON26=m CONFIG_BLK_CPQ_DA=m CONFIG_BLK_CPQ_CISS_DA=m CONFIG_CISS_SCSI_TAPE=y CONFIG_BLK_DEV_DAC960=m CONFIG_BLK_DEV_UMEM=m # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=m CONFIG_BLK_DEV_CRYPTOLOOP=m CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_SX8=m # CONFIG_BLK_DEV_UB is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=65536 # CONFIG_BLK_DEV_XIP is not set CONFIG_CDROM_PKTCDVD=m CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set CONFIG_ATA_OVER_ETH=m CONFIG_VIRTIO_BLK=m # CONFIG_MISC_DEVICES is not set CONFIG_EEPROM_93CX6=m CONFIG_TIFM_CORE=m CONFIG_HAVE_IDE=y # CONFIG_IDE is not set # # SCSI device support # CONFIG_RAID_ATTRS=m CONFIG_SCSI=m 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=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=m # CONFIG_BLK_DEV_SR_VENDOR is not set CONFIG_CHR_DEV_SG=m CONFIG_CHR_DEV_SCH=m # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # CONFIG_SCSI_MULTI_LUN=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_LOGGING=y CONFIG_SCSI_SCAN_ASYNC=y CONFIG_SCSI_WAIT_SCAN=m # # SCSI Transports # CONFIG_SCSI_SPI_ATTRS=m CONFIG_SCSI_FC_ATTRS=m CONFIG_SCSI_FC_TGT_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 is not set CONFIG_SCSI_SRP_ATTRS=m CONFIG_SCSI_SRP_TGT_ATTRS=y CONFIG_SCSI_LOWLEVEL=y CONFIG_ISCSI_TCP=m CONFIG_BLK_DEV_3W_XXXX_RAID=m CONFIG_SCSI_3W_9XXX=m CONFIG_SCSI_ACARD=m CONFIG_SCSI_AACRAID=m CONFIG_SCSI_AIC7XXX=m CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 CONFIG_AIC7XXX_RESET_DELAY_MS=15000 CONFIG_AIC7XXX_DEBUG_ENABLE=y CONFIG_AIC7XXX_DEBUG_MASK=0 CONFIG_AIC7XXX_REG_PRETTY_PRINT=y # CONFIG_SCSI_AIC7XXX_OLD is not set CONFIG_SCSI_AIC79XX=m CONFIG_AIC79XX_CMDS_PER_DEVICE=32 CONFIG_AIC79XX_RESET_DELAY_MS=15000 CONFIG_AIC79XX_DEBUG_ENABLE=y CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_AIC79XX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC94XX=m # CONFIG_AIC94XX_DEBUG is not set CONFIG_SCSI_ADVANSYS=m CONFIG_SCSI_ARCMSR=m CONFIG_SCSI_ARCMSR_AER=y CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=m CONFIG_MEGARAID_MAILBOX=m CONFIG_MEGARAID_LEGACY=m CONFIG_MEGARAID_SAS=m CONFIG_SCSI_HPTIOP=m CONFIG_SCSI_BUSLOGIC=m CONFIG_SCSI_DMX3191D=m CONFIG_SCSI_EATA=m CONFIG_SCSI_EATA_TAGGED_QUEUE=y CONFIG_SCSI_EATA_LINKED_COMMANDS=y CONFIG_SCSI_EATA_MAX_TAGS=16 CONFIG_SCSI_FUTURE_DOMAIN=m CONFIG_SCSI_GDTH=m CONFIG_SCSI_IPS=m CONFIG_SCSI_INITIO=m CONFIG_SCSI_INIA100=m CONFIG_SCSI_PPA=m CONFIG_SCSI_IMM=m # CONFIG_SCSI_IZIP_EPP16 is not set # CONFIG_SCSI_IZIP_SLOW_CTR is not set # CONFIG_SCSI_MVSAS is not set CONFIG_SCSI_STEX=m 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=m # CONFIG_SCSI_IPR_TRACE is not set # CONFIG_SCSI_IPR_DUMP is not set CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m CONFIG_SCSI_DC395x=m CONFIG_SCSI_DC390T=m CONFIG_SCSI_DEBUG=m CONFIG_SCSI_SRP=m CONFIG_SCSI_LOWLEVEL_PCMCIA=y CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m CONFIG_ATA=m # CONFIG_ATA_NONSTANDARD is not set CONFIG_ATA_ACPI=y # CONFIG_SATA_PMP is not set CONFIG_SATA_AHCI=m CONFIG_SATA_SIL24=m # CONFIG_ATA_SFF is not set CONFIG_MD=y CONFIG_BLK_DEV_MD=m 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=m 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 CONFIG_DM_MULTIPATH_RDAC=m CONFIG_DM_MULTIPATH_HP=m # CONFIG_DM_DELAY is not set CONFIG_DM_UEVENT=y # CONFIG_FUSION is not set # # IEEE 1394 (FireWire) support # CONFIG_FIREWIRE=m CONFIG_FIREWIRE_OHCI=m CONFIG_FIREWIRE_OHCI_DEBUG=y CONFIG_FIREWIRE_SBP2=m # CONFIG_IEEE1394 is not set CONFIG_I2O=m CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y CONFIG_I2O_EXT_ADAPTEC=y CONFIG_I2O_EXT_ADAPTEC_DMA64=y CONFIG_I2O_CONFIG=m CONFIG_I2O_CONFIG_OLD_IOCTL=y CONFIG_I2O_BUS=m CONFIG_I2O_BLOCK=m CONFIG_I2O_SCSI=m CONFIG_I2O_PROC=m CONFIG_MACINTOSH_DRIVERS=y CONFIG_MAC_EMUMOUSEBTN=y CONFIG_NETDEVICES=y # CONFIG_NETDEVICES_MULTIQUEUE is not set CONFIG_IFB=m CONFIG_DUMMY=m CONFIG_BONDING=m CONFIG_MACVLAN=m # CONFIG_EQUALIZER is not set CONFIG_TUN=m CONFIG_VETH=m # CONFIG_NET_SB1000 is not set # CONFIG_ARCNET is not set # CONFIG_NET_ETHERNET is not set CONFIG_MII=m 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=m CONFIG_E1000E_ENABLED=y CONFIG_IP1000=m CONFIG_IGB=m # 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_VIA_VELOCITY is not set # CONFIG_TIGON3 is not set # CONFIG_BNX2 is not set # CONFIG_QLA3XXX is not set # CONFIG_ATL1 is not set # CONFIG_NETDEV_10000 is not set # CONFIG_TR is not set # # Wireless LAN # CONFIG_WLAN_PRE80211=y # CONFIG_STRIP is not set # CONFIG_PCMCIA_WAVELAN is not set # CONFIG_PCMCIA_NETWAVE is not set CONFIG_WLAN_80211=y # CONFIG_PCMCIA_RAYCS is not set # CONFIG_IPW2100 is not set # CONFIG_IPW2200 is not set # CONFIG_LIBERTAS is not set # CONFIG_AIRO is not set # CONFIG_HERMES is not set # CONFIG_ATMEL is not set # CONFIG_AIRO_CS is not set # CONFIG_PCMCIA_WL3501 is not set # CONFIG_PRISM54 is not set # CONFIG_USB_ZD1201 is not set # CONFIG_USB_NET_RNDIS_WLAN is not set # CONFIG_RTL8180 is not set # CONFIG_RTL8187 is not set # CONFIG_ADM8211 is not set # CONFIG_P54_COMMON is not set # CONFIG_ATH5K is not set # CONFIG_IWLWIFI is not set # CONFIG_IWLCORE is not set # CONFIG_IWLWIFI_LEDS is not set # CONFIG_IWL4965 is not set # CONFIG_IWL3945 is not set # CONFIG_HOSTAP is not set # CONFIG_B43 is not set # CONFIG_B43LEGACY is not set # CONFIG_ZD1211RW is not set CONFIG_RT2X00=m CONFIG_RT2X00_LIB=m CONFIG_RT2X00_LIB_PCI=m CONFIG_RT2X00_LIB_USB=m CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2X00_LIB_RFKILL=y CONFIG_RT2X00_LIB_LEDS=y CONFIG_RT2400PCI=m CONFIG_RT2400PCI_RFKILL=y # CONFIG_RT2400PCI_LEDS is not set CONFIG_RT2500PCI=m CONFIG_RT2500PCI_RFKILL=y CONFIG_RT2500PCI_LEDS=y CONFIG_RT61PCI=m CONFIG_RT61PCI_RFKILL=y CONFIG_RT61PCI_LEDS=y CONFIG_RT2500USB=m CONFIG_RT2500USB_LEDS=y CONFIG_RT73USB=m CONFIG_RT73USB_LEDS=y # CONFIG_RT2X00_DEBUG 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=m # CONFIG_USB_NET_AX8817X is not set CONFIG_USB_NET_CDCETHER=m CONFIG_USB_NET_DM9601=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_KC2190=y # CONFIG_USB_NET_ZAURUS is not set # CONFIG_NET_PCMCIA is not set # CONFIG_WAN is not set # CONFIG_ATM_DRIVERS is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set CONFIG_PLIP=m 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=m CONFIG_PPP_MPPE=m CONFIG_PPPOE=m CONFIG_PPPOATM=m CONFIG_PPPOL2TP=m CONFIG_SLIP=m CONFIG_SLIP_COMPRESSED=y CONFIG_SLHC=m CONFIG_SLIP_SMART=y CONFIG_SLIP_MODE_SLIP6=y CONFIG_NET_FC=y CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETPOLL=y # CONFIG_NETPOLL_TRAP is not set CONFIG_NET_POLL_CONTROLLER=y CONFIG_VIRTIO_NET=m # CONFIG_ISDN is not set # CONFIG_PHONE is not set # # Input device support # CONFIG_INPUT=y CONFIG_INPUT_FF_MEMLESS=m CONFIG_INPUT_POLLDEV=m # # 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=m CONFIG_INPUT_EVDEV=m CONFIG_INPUT_EVBUG=m # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y CONFIG_KEYBOARD_SUNKBD=m CONFIG_KEYBOARD_LKKBD=m CONFIG_KEYBOARD_XTKBD=m CONFIG_KEYBOARD_NEWTON=m CONFIG_KEYBOARD_STOWAWAY=m CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=m CONFIG_MOUSE_PS2_ALPS=y CONFIG_MOUSE_PS2_LOGIPS2PP=y CONFIG_MOUSE_PS2_SYNAPTICS=y CONFIG_MOUSE_PS2_LIFEBOOK=y CONFIG_MOUSE_PS2_TRACKPOINT=y # CONFIG_MOUSE_PS2_TOUCHKIT is not set CONFIG_MOUSE_SERIAL=m CONFIG_MOUSE_APPLETOUCH=m CONFIG_MOUSE_VSXXXAA=m 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=y 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=m # CONFIG_JOYSTICK_ZHENHUA is not set CONFIG_JOYSTICK_DB9=m CONFIG_JOYSTICK_GAMECON=m CONFIG_JOYSTICK_TURBOGRAFX=m CONFIG_JOYSTICK_JOYDUMP=m CONFIG_JOYSTICK_XPAD=m CONFIG_JOYSTICK_XPAD_FF=y CONFIG_JOYSTICK_XPAD_LEDS=y CONFIG_INPUT_TABLET=y CONFIG_TABLET_USB_ACECAD=m CONFIG_TABLET_USB_AIPTEK=m CONFIG_TABLET_USB_GTCO=m CONFIG_TABLET_USB_KBTAB=m CONFIG_TABLET_USB_WACOM=m CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_FUJITSU=m CONFIG_TOUCHSCREEN_GUNZE=m CONFIG_TOUCHSCREEN_ELO=m CONFIG_TOUCHSCREEN_MTOUCH=m CONFIG_TOUCHSCREEN_MK712=m CONFIG_TOUCHSCREEN_PENMOUNT=m CONFIG_TOUCHSCREEN_TOUCHRIGHT=m CONFIG_TOUCHSCREEN_TOUCHWIN=m CONFIG_TOUCHSCREEN_UCB1400=m # CONFIG_TOUCHSCREEN_WM97XX is not set CONFIG_TOUCHSCREEN_USB_COMPOSITE=m CONFIG_TOUCHSCREEN_USB_EGALAX=y CONFIG_TOUCHSCREEN_USB_PANJIT=y CONFIG_TOUCHSCREEN_USB_3M=y CONFIG_TOUCHSCREEN_USB_ITM=y CONFIG_TOUCHSCREEN_USB_ETURBO=y CONFIG_TOUCHSCREEN_USB_GUNZE=y CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y CONFIG_TOUCHSCREEN_USB_IRTOUCH=y CONFIG_TOUCHSCREEN_USB_IDEALTEK=y CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y CONFIG_TOUCHSCREEN_USB_GOTOP=y CONFIG_INPUT_MISC=y # CONFIG_INPUT_APANEL is not set CONFIG_INPUT_ATLAS_BTNS=m CONFIG_INPUT_ATI_REMOTE=m CONFIG_INPUT_ATI_REMOTE2=m CONFIG_INPUT_KEYSPAN_REMOTE=m CONFIG_INPUT_POWERMATE=m CONFIG_INPUT_YEALINK=m 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_PARKBD=m CONFIG_SERIO_PCIPS2=m CONFIG_SERIO_LIBPS2=y CONFIG_SERIO_RAW=m 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=y CONFIG_DEVKMEM=y CONFIG_SERIAL_NONSTANDARD=y CONFIG_COMPUTONE=m CONFIG_ROCKETPORT=m CONFIG_CYCLADES=m # CONFIG_CYZ_INTR is not set CONFIG_DIGIEPCA=m CONFIG_MOXA_INTELLIO=m # CONFIG_MOXA_SMARTIO is not set # CONFIG_ISI is not set CONFIG_SYNCLINK=m CONFIG_SYNCLINKMP=m CONFIG_SYNCLINK_GT=m CONFIG_N_HDLC=m # CONFIG_RISCOM8 is not set CONFIG_SPECIALIX=m # CONFIG_SPECIALIX_RTSCTS is not set CONFIG_SX=m CONFIG_RIO=m # CONFIG_RIO_OLDPCI is not set CONFIG_STALDRV=y # 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_CS=m CONFIG_SERIAL_8250_NR_UARTS=48 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_SHARE_IRQ=y # CONFIG_SERIAL_8250_DETECT_IRQ is not set CONFIG_SERIAL_8250_RSA=y # # Non-8250 serial port support # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_JSM=m CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 CONFIG_PRINTER=m # CONFIG_LP_CONSOLE is not set CONFIG_PPDEV=m 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=y CONFIG_HW_RANDOM_INTEL=m CONFIG_HW_RANDOM_AMD=m CONFIG_NVRAM=m CONFIG_R3964=m CONFIG_APPLICOM=m # # PCMCIA character devices # CONFIG_SYNCLINK_CS=m CONFIG_CARDMAN_4000=m CONFIG_CARDMAN_4040=m # CONFIG_IPWIRELESS is not set CONFIG_MWAVE=m CONFIG_PC8736x_GPIO=m CONFIG_NSC_GPIO=m CONFIG_RAW_DRIVER=m CONFIG_MAX_RAW_DEVS=256 CONFIG_HPET=y # CONFIG_HPET_RTC_IRQ is not set CONFIG_HPET_MMAP=y CONFIG_HANGCHECK_TIMER=m CONFIG_TCG_TPM=m CONFIG_TCG_TIS=m CONFIG_TCG_NSC=m CONFIG_TCG_ATMEL=m CONFIG_TCG_INFINEON=m CONFIG_TELCLOCK=m CONFIG_DEVPORT=y CONFIG_I2C=m CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=m CONFIG_I2C_ALGOBIT=m # # I2C Hardware Bus support # CONFIG_I2C_ALI1535=m CONFIG_I2C_ALI1563=m CONFIG_I2C_ALI15X3=m CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m CONFIG_I2C_AMD8111=m CONFIG_I2C_I801=m CONFIG_I2C_I810=m CONFIG_I2C_PIIX4=m CONFIG_I2C_NFORCE2=m CONFIG_I2C_OCORES=m CONFIG_I2C_PARPORT=m CONFIG_I2C_PARPORT_LIGHT=m CONFIG_I2C_PROSAVAGE=m CONFIG_I2C_SAVAGE4=m CONFIG_I2C_SIMTEC=m CONFIG_I2C_SIS5595=m CONFIG_I2C_SIS630=m CONFIG_I2C_SIS96X=m CONFIG_I2C_TAOS_EVM=m CONFIG_I2C_STUB=m CONFIG_I2C_TINY_USB=m CONFIG_I2C_VIA=m CONFIG_I2C_VIAPRO=m CONFIG_I2C_VOODOO3=m # CONFIG_I2C_PCA_PLATFORM is not set # # Miscellaneous I2C Chip support # CONFIG_DS1682=m CONFIG_SENSORS_EEPROM=m CONFIG_SENSORS_PCF8574=m # CONFIG_PCF8575 is not set CONFIG_SENSORS_PCF8591=m CONFIG_SENSORS_MAX6875=m CONFIG_SENSORS_TSL2550=m # 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 # CONFIG_SPI is not set CONFIG_W1=m # CONFIG_W1_CON is not set # # 1-wire Bus Masters # # CONFIG_W1_MASTER_MATROX is not set # CONFIG_W1_MASTER_DS2490 is not set # CONFIG_W1_MASTER_DS2482 is not set # # 1-wire Slaves # # CONFIG_W1_SLAVE_THERM is not set # CONFIG_W1_SLAVE_SMEM is not set # CONFIG_W1_SLAVE_DS2433 is not set CONFIG_W1_SLAVE_DS2760=m CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set CONFIG_PDA_POWER=m CONFIG_BATTERY_DS2760=m CONFIG_HWMON=y CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m CONFIG_SENSORS_ABITUGURU3=m CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m CONFIG_SENSORS_ADT7470=m # CONFIG_SENSORS_ADT7473 is not set CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_F71805F=m CONFIG_SENSORS_F71882FG=m CONFIG_SENSORS_F75375S=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m CONFIG_SENSORS_FSCHMD=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m CONFIG_SENSORS_CORETEMP=m CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m CONFIG_SENSORS_LM77=m CONFIG_SENSORS_LM78=m CONFIG_SENSORS_LM80=m CONFIG_SENSORS_LM83=m CONFIG_SENSORS_LM85=m CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m CONFIG_SENSORS_LM93=m CONFIG_SENSORS_MAX1619=m CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m # CONFIG_SENSORS_ADS7828 is not set CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_VIA686A=m CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m # CONFIG_SENSORS_W83L786NG is not set CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set CONFIG_THERMAL=y 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=m CONFIG_WAFER_WDT=m CONFIG_I6300ESB_WDT=m CONFIG_ITCO_WDT=m CONFIG_ITCO_VENDOR_SUPPORT=y CONFIG_IT8712F_WDT=m # CONFIG_HP_WATCHDOG is not set CONFIG_SC1200_WDT=m CONFIG_PC87413_WDT=m CONFIG_60XX_WDT=m CONFIG_SBC8360_WDT=m CONFIG_CPU5_WDT=m CONFIG_SMSC37B787_WDT=m CONFIG_W83627HF_WDT=m CONFIG_W83697HF_WDT=m CONFIG_W83877F_WDT=m CONFIG_W83977F_WDT=m CONFIG_MACHZ_WDT=m CONFIG_SBC_EPX_C3_WATCHDOG=m # # 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=m CONFIG_SSB_SPROM=y CONFIG_SSB_PCIHOST_POSSIBLE=y CONFIG_SSB_PCIHOST=y # CONFIG_SSB_B43_PCI_BRIDGE is not set CONFIG_SSB_PCMCIAHOST_POSSIBLE=y # CONFIG_SSB_PCMCIAHOST is not set # CONFIG_SSB_SILENT is not set # CONFIG_SSB_DEBUG is not set CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y CONFIG_SSB_DRIVER_PCICORE=y # # Multifunction device drivers # # CONFIG_MFD_SM501 is not set # CONFIG_HTC_PASIC3 is not set # # Multimedia devices # # # Multimedia core support # CONFIG_VIDEO_DEV=m CONFIG_VIDEO_V4L2_COMMON=m # CONFIG_VIDEO_ALLOW_V4L1 is not set CONFIG_VIDEO_V4L1_COMPAT=y # CONFIG_DVB_CORE is not set CONFIG_VIDEO_MEDIA=m # # Multimedia drivers # CONFIG_VIDEO_SAA7146=m CONFIG_VIDEO_SAA7146_VV=m CONFIG_MEDIA_TUNER=m # CONFIG_MEDIA_TUNER_CUSTOMIZE is not set CONFIG_MEDIA_TUNER_SIMPLE=m CONFIG_MEDIA_TUNER_TDA8290=m CONFIG_MEDIA_TUNER_TDA9887=m CONFIG_MEDIA_TUNER_TEA5761=m CONFIG_MEDIA_TUNER_TEA5767=m CONFIG_MEDIA_TUNER_MT20XX=m CONFIG_MEDIA_TUNER_XC2028=m CONFIG_MEDIA_TUNER_XC5000=m CONFIG_VIDEO_V4L2=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_DMA_SG=m CONFIG_VIDEOBUF_VMALLOC=m CONFIG_VIDEO_BTCX=m CONFIG_VIDEO_IR_I2C=m CONFIG_VIDEO_IR=m CONFIG_VIDEO_TVEEPROM=m CONFIG_VIDEO_CAPTURE_DRIVERS=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set # # Encoders/decoders and other helper chips # # # Audio decoders # CONFIG_VIDEO_TVAUDIO=m CONFIG_VIDEO_TDA7432=m CONFIG_VIDEO_TDA9840=m CONFIG_VIDEO_TDA9875=m CONFIG_VIDEO_TEA6415C=m CONFIG_VIDEO_TEA6420=m CONFIG_VIDEO_MSP3400=m # CONFIG_VIDEO_CS5345 is not set CONFIG_VIDEO_CS53L32A=m CONFIG_VIDEO_M52790=m CONFIG_VIDEO_TLV320AIC23B=m CONFIG_VIDEO_WM8775=m CONFIG_VIDEO_WM8739=m CONFIG_VIDEO_VP27SMPX=m # # Video decoders # CONFIG_VIDEO_OV7670=m CONFIG_VIDEO_TCM825X=m CONFIG_VIDEO_SAA711X=m # CONFIG_VIDEO_SAA717X is not set CONFIG_VIDEO_TVP5150=m # # Video and audio decoders # CONFIG_VIDEO_CX25840=m # # MPEG video encoders # CONFIG_VIDEO_CX2341X=m # # Video encoders # CONFIG_VIDEO_SAA7127=m # # Video improvement chips # CONFIG_VIDEO_UPD64031A=m CONFIG_VIDEO_UPD64083=m CONFIG_VIDEO_VIVI=m CONFIG_VIDEO_BT848=m CONFIG_VIDEO_SAA6588=m CONFIG_VIDEO_SAA5246A=m CONFIG_VIDEO_SAA5249=m CONFIG_VIDEO_SAA7134=m # CONFIG_VIDEO_SAA7134_ALSA is not set CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_HEXIUM_GEMINI=m CONFIG_VIDEO_CX88=m # CONFIG_VIDEO_CX88_ALSA is not set CONFIG_VIDEO_CX88_BLACKBIRD=m CONFIG_VIDEO_CAFE_CCIC=m CONFIG_V4L_USB_DRIVERS=y CONFIG_VIDEO_PVRUSB2=m CONFIG_VIDEO_PVRUSB2_SYSFS=y # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set CONFIG_VIDEO_EM28XX=m # CONFIG_VIDEO_EM28XX_ALSA is not set CONFIG_VIDEO_USBVISION=m CONFIG_USB_ET61X251=m CONFIG_USB_SN9C102=m CONFIG_USB_ZC0301=m CONFIG_USB_ZR364XX=m # CONFIG_USB_STKWEBCAM is not set # CONFIG_SOC_CAMERA is not set CONFIG_RADIO_ADAPTERS=y CONFIG_RADIO_GEMTEK_PCI=m CONFIG_RADIO_MAXIRADIO=m CONFIG_RADIO_MAESTRO=m CONFIG_USB_DSBR=m # CONFIG_USB_SI470X is not set CONFIG_DAB=y CONFIG_USB_DABUSB=m # # Graphics support # CONFIG_AGP=y CONFIG_AGP_AMD64=y CONFIG_AGP_INTEL=m CONFIG_AGP_SIS=m CONFIG_AGP_VIA=m CONFIG_DRM=m CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_I810=m CONFIG_DRM_I830=m CONFIG_DRM_I915=m CONFIG_DRM_MGA=m CONFIG_DRM_SIS=m CONFIG_DRM_VIA=m CONFIG_DRM_SAVAGE=m CONFIG_VGASTATE=m CONFIG_VIDEO_OUTPUT_CONTROL=m CONFIG_FB=y CONFIG_FIRMWARE_EDID=y CONFIG_FB_DDC=m CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set CONFIG_FB_SYS_FILLRECT=m CONFIG_FB_SYS_COPYAREA=m CONFIG_FB_SYS_IMAGEBLIT=m # CONFIG_FB_FOREIGN_ENDIAN is not set CONFIG_FB_SYS_FOPS=m CONFIG_FB_DEFERRED_IO=y CONFIG_FB_SVGALIB=m # CONFIG_FB_MACMODES is not set CONFIG_FB_BACKLIGHT=y CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y # # Frame buffer hardware drivers # CONFIG_FB_CIRRUS=m CONFIG_FB_PM2=m CONFIG_FB_PM2_FIFO_DISCONNECT=y CONFIG_FB_CYBER2000=m CONFIG_FB_ARC=m CONFIG_FB_ASILIANT=y CONFIG_FB_IMSTT=y CONFIG_FB_VGA16=m CONFIG_FB_UVESA=m CONFIG_FB_VESA=y # CONFIG_FB_EFI is not set # CONFIG_FB_N411 is not set # CONFIG_FB_HGA is not set # CONFIG_FB_S1D13XXX is not set CONFIG_FB_NVIDIA=m CONFIG_FB_NVIDIA_I2C=y # CONFIG_FB_NVIDIA_DEBUG is not set CONFIG_FB_NVIDIA_BACKLIGHT=y # CONFIG_FB_RIVA is not set CONFIG_FB_LE80578=m CONFIG_FB_CARILLO_RANCH=m CONFIG_FB_INTEL=m # CONFIG_FB_INTEL_DEBUG is not set CONFIG_FB_INTEL_I2C=y CONFIG_FB_MATROX=m CONFIG_FB_MATROX_MILLENIUM=y CONFIG_FB_MATROX_MYSTIQUE=y CONFIG_FB_MATROX_G=y CONFIG_FB_MATROX_I2C=m CONFIG_FB_MATROX_MAVEN=m CONFIG_FB_MATROX_MULTIHEAD=y CONFIG_FB_RADEON=m CONFIG_FB_RADEON_I2C=y CONFIG_FB_RADEON_BACKLIGHT=y # CONFIG_FB_RADEON_DEBUG is not set CONFIG_FB_ATY128=m CONFIG_FB_ATY128_BACKLIGHT=y CONFIG_FB_ATY=m CONFIG_FB_ATY_CT=y CONFIG_FB_ATY_GENERIC_LCD=y CONFIG_FB_ATY_GX=y CONFIG_FB_ATY_BACKLIGHT=y CONFIG_FB_S3=m CONFIG_FB_SAVAGE=m CONFIG_FB_SAVAGE_I2C=y CONFIG_FB_SAVAGE_ACCEL=y CONFIG_FB_SIS=m CONFIG_FB_SIS_300=y CONFIG_FB_SIS_315=y CONFIG_FB_NEOMAGIC=m CONFIG_FB_KYRO=m CONFIG_FB_3DFX=m # CONFIG_FB_3DFX_ACCEL is not set CONFIG_FB_VOODOO1=m CONFIG_FB_VT8623=m CONFIG_FB_TRIDENT=m # CONFIG_FB_TRIDENT_ACCEL is not set CONFIG_FB_ARK=m CONFIG_FB_PM3=m CONFIG_FB_GEODE=y CONFIG_FB_GEODE_LX=m CONFIG_FB_GEODE_GX=m CONFIG_FB_GEODE_GX1=m # CONFIG_FB_VIRTUAL is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_CORGI=m CONFIG_BACKLIGHT_PROGEAR=m CONFIG_BACKLIGHT_CARILLO_RANCH=m # # Display device support # CONFIG_DISPLAY_SUPPORT=m # # Display hardware drivers # # # Console display driver support # CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_VIDEO_SELECT=y CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=m # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set CONFIG_FONTS=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y # CONFIG_FONT_6x11 is not set # CONFIG_FONT_7x14 is not set CONFIG_FONT_PEARL_8x8=y CONFIG_FONT_ACORN_8x8=y CONFIG_FONT_MINI_4x6=y CONFIG_FONT_SUN8x16=y # CONFIG_FONT_SUN12x22 is not set # CONFIG_FONT_10x18 is not set # CONFIG_LOGO is not set # # Sound # CONFIG_SOUND=m # # Advanced Linux Sound Architecture # CONFIG_SND=m CONFIG_SND_TIMER=m CONFIG_SND_PCM=m CONFIG_SND_HWDEP=m CONFIG_SND_SEQUENCER=m # CONFIG_SND_SEQ_DUMMY is not set CONFIG_SND_OSSEMUL=y CONFIG_SND_MIXER_OSS=m CONFIG_SND_PCM_OSS=m CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_DYNAMIC_MINORS=y CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=y # # Generic devices # CONFIG_SND_PCSP=m CONFIG_SND_AC97_CODEC=m # CONFIG_SND_DUMMY is not set # CONFIG_SND_VIRMIDI is not set # CONFIG_SND_MTPAV is not set # CONFIG_SND_MTS64 is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set # CONFIG_SND_PORTMAN2X4 is not set # # PCI devices # # CONFIG_SND_AD1889 is not set # CONFIG_SND_ALS300 is not set # CONFIG_SND_ALS4000 is not set # CONFIG_SND_ALI5451 is not set # CONFIG_SND_ATIIXP is not set # CONFIG_SND_ATIIXP_MODEM is not set # CONFIG_SND_AU8810 is not set # CONFIG_SND_AU8820 is not set # CONFIG_SND_AU8830 is not set # CONFIG_SND_AW2 is not set # CONFIG_SND_AZT3328 is not set # CONFIG_SND_BT87X is not set # CONFIG_SND_CA0106 is not set # CONFIG_SND_CMIPCI is not set # CONFIG_SND_OXYGEN is not set # CONFIG_SND_CS4281 is not set # CONFIG_SND_CS46XX is not set # CONFIG_SND_CS5530 is not set # CONFIG_SND_DARLA20 is not set # CONFIG_SND_GINA20 is not set # CONFIG_SND_LAYLA20 is not set # CONFIG_SND_DARLA24 is not set # CONFIG_SND_GINA24 is not set # CONFIG_SND_LAYLA24 is not set # CONFIG_SND_MONA is not set # CONFIG_SND_MIA is not set # CONFIG_SND_ECHO3G is not set # CONFIG_SND_INDIGO is not set # CONFIG_SND_INDIGOIO is not set # CONFIG_SND_INDIGODJ is not set # CONFIG_SND_EMU10K1 is not set # CONFIG_SND_EMU10K1X is not set # CONFIG_SND_ENS1370 is not set # CONFIG_SND_ENS1371 is not set # CONFIG_SND_ES1938 is not set # CONFIG_SND_ES1968 is not set # CONFIG_SND_FM801 is not set CONFIG_SND_HDA_INTEL=m CONFIG_SND_HDA_HWDEP=y CONFIG_SND_HDA_CODEC_REALTEK=y CONFIG_SND_HDA_CODEC_ANALOG=y CONFIG_SND_HDA_CODEC_SIGMATEL=y CONFIG_SND_HDA_CODEC_VIA=y CONFIG_SND_HDA_CODEC_ATIHDMI=y CONFIG_SND_HDA_CODEC_CONEXANT=y CONFIG_SND_HDA_CODEC_CMEDIA=y CONFIG_SND_HDA_CODEC_SI3054=y CONFIG_SND_HDA_GENERIC=y # CONFIG_SND_HDA_POWER_SAVE is not set # CONFIG_SND_HDSP is not set # CONFIG_SND_HDSPM is not set # CONFIG_SND_HIFIER is not set # CONFIG_SND_ICE1712 is not set # CONFIG_SND_ICE1724 is not set CONFIG_SND_INTEL8X0=m CONFIG_SND_INTEL8X0M=m # CONFIG_SND_KORG1212 is not set # CONFIG_SND_MAESTRO3 is not set # CONFIG_SND_MIXART is not set # CONFIG_SND_NM256 is not set # CONFIG_SND_PCXHR is not set # CONFIG_SND_RIPTIDE is not set # CONFIG_SND_RME32 is not set # CONFIG_SND_RME96 is not set # CONFIG_SND_RME9652 is not set # CONFIG_SND_SONICVIBES is not set # CONFIG_SND_TRIDENT is not set # CONFIG_SND_VIA82XX is not set # CONFIG_SND_VIA82XX_MODEM is not set # CONFIG_SND_VIRTUOSO is not set # CONFIG_SND_VX222 is not set # CONFIG_SND_YMFPCI is not set CONFIG_SND_AC97_POWER_SAVE=y CONFIG_SND_AC97_POWER_SAVE_DEFAULT=30 # # USB devices # # CONFIG_SND_USB_AUDIO is not set # CONFIG_SND_USB_USX2Y is not set # CONFIG_SND_USB_CAIAQ is not set # # PCMCIA devices # # CONFIG_SND_VXPOCKET is not set # CONFIG_SND_PDAUDIOCF is not set # # System on Chip audio support # # CONFIG_SND_SOC is not set # # ALSA SoC audio for Freescale SOCs # # # SoC Audio for the Texas Instruments OMAP # # # Open Sound System # # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=m CONFIG_HID_SUPPORT=y CONFIG_HID=m # CONFIG_HID_DEBUG is not set CONFIG_HIDRAW=y # # USB Input Devices # CONFIG_USB_HID=m CONFIG_USB_HIDINPUT_POWERBOOK=y # 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_SUPPORT=y 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 # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set # # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y # CONFIG_USB_DEVICE_CLASS is not set # CONFIG_USB_DYNAMIC_MINORS is not set CONFIG_USB_SUSPEND=y # CONFIG_USB_OTG is not set # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set # # USB Host Controller Drivers # CONFIG_USB_EHCI_HCD=m 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_HCD_SSB is not set # 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_U132_HCD=m CONFIG_USB_SL811_HCD=m CONFIG_USB_SL811_CS=m CONFIG_USB_R8A66597_HCD=m # # USB Device Class drivers # CONFIG_USB_ACM=m 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_ISD200=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_ONETOUCH is not set CONFIG_USB_STORAGE_KARMA=y # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set CONFIG_USB_LIBUSUAL=y # # USB Imaging devices # CONFIG_USB_MDC800=m CONFIG_USB_MICROTEK=m CONFIG_USB_MON=y # # USB port drivers # CONFIG_USB_USS720=m CONFIG_USB_SERIAL=m CONFIG_USB_EZUSB=y CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_AIRCABLE=m CONFIG_USB_SERIAL_AIRPRIME=m CONFIG_USB_SERIAL_ARK3116=m CONFIG_USB_SERIAL_BELKIN=m CONFIG_USB_SERIAL_CH341=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 is not set CONFIG_USB_SERIAL_EDGEPORT=m CONFIG_USB_SERIAL_EDGEPORT_TI=m CONFIG_USB_SERIAL_GARMIN=m CONFIG_USB_SERIAL_IPW=m # 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=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_OTI6858=m # CONFIG_USB_SERIAL_SPCP8X5 is not set 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_SERIAL_DEBUG=m # # USB Miscellaneous drivers # CONFIG_USB_EMI62=m CONFIG_USB_EMI26=m CONFIG_USB_ADUTUX=m CONFIG_USB_AUERSWALD=m CONFIG_USB_RIO500=m CONFIG_USB_LEGOTOWER=m CONFIG_USB_LCD=m CONFIG_USB_BERRY_CHARGE=m CONFIG_USB_LED=m 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=m CONFIG_USB_FTDI_ELAN=m CONFIG_USB_APPLEDISPLAY=m CONFIG_USB_SISUSBVGA=m # CONFIG_USB_SISUSBVGA_CON is not set CONFIG_USB_LD=m CONFIG_USB_TRANCEVIBRATOR=m CONFIG_USB_IOWARRIOR=m # CONFIG_USB_TEST is not set CONFIG_USB_ATM=m CONFIG_USB_SPEEDTOUCH=m CONFIG_USB_CXACRU=m CONFIG_USB_UEAGLEATM=m CONFIG_USB_XUSBATM=m CONFIG_USB_GADGET=m # CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set # CONFIG_USB_GADGET_DEBUG_FS is not set CONFIG_USB_GADGET_SELECTED=y CONFIG_USB_GADGET_AMD5536UDC=y CONFIG_USB_AMD5536UDC=m # CONFIG_USB_GADGET_ATMEL_USBA is not set # CONFIG_USB_GADGET_FSL_USB2 is not set # CONFIG_USB_GADGET_NET2280 is not set # CONFIG_USB_GADGET_PXA2XX is not set # CONFIG_USB_GADGET_M66592 is not set # CONFIG_USB_GADGET_GOKU is not set # CONFIG_USB_GADGET_LH7A40X is not set # CONFIG_USB_GADGET_OMAP is not set # CONFIG_USB_GADGET_S3C2410 is not set # CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_DUMMY_HCD is not set CONFIG_USB_GADGET_DUALSPEED=y CONFIG_USB_ZERO=m CONFIG_USB_ETH=m CONFIG_USB_ETH_RNDIS=y CONFIG_USB_GADGETFS=m CONFIG_USB_FILE_STORAGE=m # CONFIG_USB_FILE_STORAGE_TEST is not set CONFIG_USB_G_SERIAL=m # CONFIG_USB_MIDI_GADGET is not set # CONFIG_USB_G_PRINTER is not set CONFIG_MMC=m # CONFIG_MMC_DEBUG is not set # CONFIG_MMC_UNSAFE_RESUME is not set # # MMC/SD Card Drivers # CONFIG_MMC_BLOCK=m CONFIG_MMC_BLOCK_BOUNCE=y CONFIG_SDIO_UART=m # # MMC/SD Host Controller Drivers # CONFIG_MMC_SDHCI=m CONFIG_MMC_RICOH_MMC=m CONFIG_MMC_WBSD=m CONFIG_MMC_TIFM_SD=m # CONFIG_MEMSTICK is not set CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=m # # LED drivers # # CONFIG_LEDS_CLEVO_MAIL is not set # # LED Triggers # CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=m CONFIG_LEDS_TRIGGER_HEARTBEAT=m # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set # CONFIG_EDAC is not set CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y 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=y CONFIG_RTC_DRV_TEST=m # # I2C RTC drivers # CONFIG_RTC_DRV_DS1307=m CONFIG_RTC_DRV_DS1374=m CONFIG_RTC_DRV_DS1672=m CONFIG_RTC_DRV_MAX6900=m CONFIG_RTC_DRV_RS5C372=m CONFIG_RTC_DRV_ISL1208=m CONFIG_RTC_DRV_X1205=m CONFIG_RTC_DRV_PCF8563=m CONFIG_RTC_DRV_PCF8583=m CONFIG_RTC_DRV_M41T80=m CONFIG_RTC_DRV_M41T80_WDT=y # CONFIG_RTC_DRV_S35390A is not set # # SPI RTC drivers # # # Platform RTC drivers # # CONFIG_RTC_DRV_CMOS is not set # CONFIG_RTC_DRV_DS1511 is not set CONFIG_RTC_DRV_DS1553=m CONFIG_RTC_DRV_DS1742=m CONFIG_RTC_DRV_STK17TA8=m CONFIG_RTC_DRV_M48T86=m CONFIG_RTC_DRV_M48T59=m CONFIG_RTC_DRV_V3020=m # # on-CPU RTC drivers # # CONFIG_DMADEVICES is not set # CONFIG_AUXDISPLAY is not set CONFIG_UIO=m CONFIG_UIO_CIF=m # CONFIG_UIO_SMX is not set # # Firmware Drivers # CONFIG_EDD=y # CONFIG_EDD_OFF is not set # CONFIG_DELL_RBU is not set # CONFIG_DCDBAS is not set CONFIG_DMIID=y # CONFIG_ISCSI_IBFT_FIND is not set # # 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 is not set CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_FS_MBCACHE=m CONFIG_REISERFS_FS=m # 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=m CONFIG_JFS_POSIX_ACL=y CONFIG_JFS_SECURITY=y # CONFIG_JFS_DEBUG is not set CONFIG_JFS_STATISTICS=y CONFIG_FS_POSIX_ACL=y CONFIG_XFS_FS=m CONFIG_XFS_QUOTA=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y # CONFIG_XFS_DEBUG is not set CONFIG_GFS2_FS=m CONFIG_GFS2_FS_LOCKING_NOLOCK=m CONFIG_GFS2_FS_LOCKING_DLM=m CONFIG_OCFS2_FS=m CONFIG_OCFS2_FS_O2CB=m CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m CONFIG_OCFS2_DEBUG_MASKLOG=y # CONFIG_OCFS2_DEBUG_FS is not set CONFIG_DNOTIFY=y CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y CONFIG_PRINT_QUOTA_WARNING=y CONFIG_QFMT_V1=m CONFIG_QFMT_V2=m CONFIG_QUOTACTL=y CONFIG_AUTOFS_FS=m CONFIG_AUTOFS4_FS=m CONFIG_FUSE_FS=m CONFIG_GENERIC_ACL=y # # CD-ROM/DVD Filesystems # CONFIG_ISO9660_FS=m 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="iso8859-1" CONFIG_NTFS_FS=m # CONFIG_NTFS_DEBUG is not set # CONFIG_NTFS_RW is not set # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_VMCORE=y CONFIG_PROC_SYSCTL=y CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y # CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_CONFIGFS_FS=m # # Miscellaneous filesystems # CONFIG_ADFS_FS=m # CONFIG_ADFS_FS_RW is not set CONFIG_AFFS_FS=m CONFIG_ECRYPT_FS=m CONFIG_HFS_FS=m CONFIG_HFSPLUS_FS=m CONFIG_BEFS_FS=m # CONFIG_BEFS_DEBUG is not set CONFIG_BFS_FS=m CONFIG_EFS_FS=m CONFIG_CRAMFS=y CONFIG_VXFS_FS=m CONFIG_MINIX_FS=m CONFIG_HPFS_FS=m CONFIG_QNX4FS_FS=m CONFIG_ROMFS_FS=m CONFIG_SYSV_FS=m CONFIG_UFS_FS=m # CONFIG_UFS_FS_WRITE is not set # CONFIG_UFS_DEBUG is not set CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=m CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y CONFIG_NFSD=m CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_V4=y CONFIG_LOCKD=m CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=m CONFIG_NFS_ACL_SUPPORT=m CONFIG_NFS_COMMON=y CONFIG_SUNRPC=m CONFIG_SUNRPC_GSS=m # CONFIG_SUNRPC_BIND34 is not set CONFIG_RPCSEC_GSS_KRB5=m CONFIG_RPCSEC_GSS_SPKM3=m CONFIG_SMB_FS=m # CONFIG_SMB_NLS_DEFAULT is not set CONFIG_CIFS=m # CONFIG_CIFS_STATS is not set # CONFIG_CIFS_WEAK_PW_HASH is not set # CONFIG_CIFS_XATTR is not set # CONFIG_CIFS_DEBUG2 is not set # CONFIG_CIFS_EXPERIMENTAL is not set CONFIG_NCP_FS=m CONFIG_NCPFS_PACKET_SIGNING=y CONFIG_NCPFS_IOCTL_LOCKING=y CONFIG_NCPFS_STRONG=y CONFIG_NCPFS_NFS_NS=y CONFIG_NCPFS_OS2_NS=y # CONFIG_NCPFS_SMALLDOS is not set CONFIG_NCPFS_NLS=y CONFIG_NCPFS_EXTRAS=y CONFIG_CODA_FS=m # CONFIG_CODA_FS_OLD_API is not set CONFIG_AFS_FS=m # CONFIG_AFS_DEBUG is not set # # Partition Types # CONFIG_PARTITION_ADVANCED=y CONFIG_ACORN_PARTITION=y # CONFIG_ACORN_PARTITION_CUMANA is not set # CONFIG_ACORN_PARTITION_EESOX is not set CONFIG_ACORN_PARTITION_ICS=y # CONFIG_ACORN_PARTITION_ADFS is not set # CONFIG_ACORN_PARTITION_POWERTEC is not set CONFIG_ACORN_PARTITION_RISCIX=y CONFIG_OSF_PARTITION=y CONFIG_AMIGA_PARTITION=y CONFIG_ATARI_PARTITION=y CONFIG_MAC_PARTITION=y CONFIG_MSDOS_PARTITION=y CONFIG_BSD_DISKLABEL=y CONFIG_MINIX_SUBPARTITION=y CONFIG_SOLARIS_X86_PARTITION=y CONFIG_UNIXWARE_DISKLABEL=y CONFIG_LDM_PARTITION=y # CONFIG_LDM_DEBUG is not set CONFIG_SGI_PARTITION=y CONFIG_ULTRIX_PARTITION=y CONFIG_SUN_PARTITION=y CONFIG_KARMA_PARTITION=y CONFIG_EFI_PARTITION=y CONFIG_SYSV68_PARTITION=y CONFIG_NLS=y CONFIG_NLS_DEFAULT="cp437" 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=m 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 CONFIG_DLM=m # CONFIG_DLM_DEBUG is not set # # Kernel hacking # CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_PRINTK_TIME=y # CONFIG_ENABLE_WARN_DEPRECATED is not set # CONFIG_ENABLE_MUST_CHECK is not set CONFIG_FRAME_WARN=0 CONFIG_MAGIC_SYSRQ=y CONFIG_UNUSED_SYMBOLS=y CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set CONFIG_DETECT_SOFTLOCKUP=y CONFIG_SCHED_DEBUG=y CONFIG_SCHEDSTATS=y CONFIG_TIMER_STATS=y # CONFIG_DEBUG_OBJECTS 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 is not set # CONFIG_DEBUG_MUTEXES is not set # CONFIG_DEBUG_LOCK_ALLOC is not set # CONFIG_PROVE_LOCKING is not set # CONFIG_LOCK_STAT is not set CONFIG_DEBUG_SPINLOCK_SLEEP=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set CONFIG_STACKTRACE=y # CONFIG_DEBUG_KOBJECT is not set # CONFIG_DEBUG_BUGVERBOSE is not set # CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_WRITECOUNT 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_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_LKDTM is not set # CONFIG_FAULT_INJECTION is not set CONFIG_LATENCYTOP=y # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set CONFIG_SAMPLES=y CONFIG_SAMPLE_KOBJECT=m CONFIG_SAMPLE_KPROBES=m CONFIG_SAMPLE_KRETPROBES=m # CONFIG_KGDB is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_NONPROMISC_DEVMEM is not set CONFIG_EARLY_PRINTK=y # CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUG_PER_CPU_MAPS is not set # CONFIG_X86_PTDUMP is not set CONFIG_DEBUG_RODATA=y # CONFIG_DIRECT_GBPAGES is not set # CONFIG_DEBUG_RODATA_TEST is not set # CONFIG_DEBUG_NX_TEST is not set CONFIG_X86_MPPARSE=y # CONFIG_IOMMU_DEBUG is not set 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 is not set # CONFIG_IO_DELAY_0XED is not set # CONFIG_IO_DELAY_UDELAY is not set CONFIG_IO_DELAY_NONE=y CONFIG_DEFAULT_IO_DELAY_TYPE=3 # CONFIG_DEBUG_BOOT_PARAMS is not set # CONFIG_CPA_DEBUG is not set # # Security options # CONFIG_KEYS=y # CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y # CONFIG_SECURITY_NETWORK_XFRM is not set CONFIG_SECURITY_CAPABILITIES=y # CONFIG_SECURITY_FILE_CAPABILITIES is not set CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 CONFIG_SECURITY_SELINUX_DISABLE=y CONFIG_SECURITY_SELINUX_DEVELOP=y CONFIG_SECURITY_SELINUX_AVC_STATS=y CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 # CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set # CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set CONFIG_XOR_BLOCKS=m CONFIG_ASYNC_CORE=m CONFIG_ASYNC_MEMCPY=m CONFIG_ASYNC_XOR=m CONFIG_CRYPTO=y # # Crypto core or helper # CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_AEAD=m CONFIG_CRYPTO_BLKCIPHER=m CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_GF128MUL=m CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_CRYPTD=m CONFIG_CRYPTO_AUTHENC=m CONFIG_CRYPTO_TEST=m # # Authenticated Encryption with Associated Data # # CONFIG_CRYPTO_CCM is not set # CONFIG_CRYPTO_GCM is not set # CONFIG_CRYPTO_SEQIV is not set # # Block modes # CONFIG_CRYPTO_CBC=m # CONFIG_CRYPTO_CTR is not set CONFIG_CRYPTO_CTS=m CONFIG_CRYPTO_ECB=m CONFIG_CRYPTO_LRW=m CONFIG_CRYPTO_PCBC=m CONFIG_CRYPTO_XTS=m # # Hash modes # CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_XCBC=m # # Digest # CONFIG_CRYPTO_CRC32C=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_SHA1=m CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_TGR192=m CONFIG_CRYPTO_WP512=m # # Ciphers # CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_AES_X86_64=m CONFIG_CRYPTO_ANUBIS=m CONFIG_CRYPTO_ARC4=m CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_CAST5=m CONFIG_CRYPTO_CAST6=m CONFIG_CRYPTO_DES=m CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_KHAZAD=m # CONFIG_CRYPTO_SALSA20 is not set # CONFIG_CRYPTO_SALSA20_X86_64 is not set CONFIG_CRYPTO_SEED=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_TEA=m CONFIG_CRYPTO_TWOFISH=m CONFIG_CRYPTO_TWOFISH_COMMON=m CONFIG_CRYPTO_TWOFISH_X86_64=m # # Compression # CONFIG_CRYPTO_DEFLATE=m # CONFIG_CRYPTO_LZO is not set CONFIG_CRYPTO_HW=y # CONFIG_CRYPTO_DEV_HIFN_795X is not set CONFIG_HAVE_KVM=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=m CONFIG_KVM_INTEL=m CONFIG_KVM_AMD=m CONFIG_VIRTIO=m CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m CONFIG_VIRTIO_BALLOON=m # # Library routines # CONFIG_BITREVERSE=y CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_CRC_CCITT=m CONFIG_CRC16=m CONFIG_CRC_ITU_T=m CONFIG_CRC32=y CONFIG_CRC7=m CONFIG_LIBCRC32C=m 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 CONFIG_CHECK_SIGNATURE=y ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 0:14 Horrendous Audio Stutter - current git Parag Warudkar @ 2008-05-02 8:34 ` Peter Zijlstra 2008-05-02 10:32 ` Frans Pop ` (2 more replies) 0 siblings, 3 replies; 49+ messages in thread From: Peter Zijlstra @ 2008-05-02 8:34 UTC (permalink / raw) To: Parag Warudkar; +Cc: Ingo Molnar, LKML, Frans Pop On Thu, 2008-05-01 at 20:14 -0400, Parag Warudkar wrote: > Hi Ingo, Peter > > Under kernel compilation load (make -j8) audio is very much unusable > on current linux-2.6.git - The stutter is so bad I can hardly tell > what song I am listening to :) > Even with make -j4 it still skips but not that badly. > > I am running Ubuntu Hardy (Pulseaudio) on a quad core machine and > switching back to Ubuntu shipped kernel (2.6.24-16) resolves the issue > totally. > > ..config below. Revert of e22ecef1d2658ba54ed7d3fdb5d60829fb434c23 > fixed similar issue. So you're saying reverting e22ecef1 fixes the issue? - as have others. The initial rationale for the change was: vruntime and walltime are related by a factor of rq->weight, hence compensate for that. However that in itself has a flaw, we're comparing vruntime to process runtime time, _NOT_ walltime. And vruntime and process runtime do not have that factor so the compensation is unneeded. However that still leaves me puzzled on why it would cause such bad regression. The current code reads like: /* * delta *= w / rw */ static inline unsigned long calc_delta_weight(unsigned long delta, struct sched_entity *se); /* sleeps upto a single latency don't count. */ if (sched_feat(NEW_FAIR_SLEEPERS)) { if (sched_feat(NORMALIZED_SLEEPER)) vruntime -= calc_delta_weight(sysctl_sched_latency, se); else vruntime -= sysctl_sched_latency; } So what we do is _shrink_ the bonus the busier we get (the more tasks we get, the higher the total runqueue weight (rw) hence delta will get smaller) The thing is, I once asked Frans to test !NEW_FAIR_SLEEPERS and he reported that that also solves the problem. So no bonus is good, and a fixed bonus is good, but a variable bonus that is between these two values is not. Parag, would you also test with !NEW_FAIR_SLEEPERS to see if that solves your problem? The easiest way to disable it is (assumes you have debugfs mounted at /debug): # echo NO_NEW_FAIR_SLEEPERS > /debug/sched_features You can also disable NORMALIZED_SLEEPER that way (of course you would first have to enable NEW_FAIR_SLEEPERS again): # echo NO_NORMALIZED_SLEEPER > /debug/sched_features You can get a current status of all the flags using: # cat /debug/sched_features So by default we have both enabled; could you report if either NO_NEW_FAIR_SLEEPERS NEW_FAIR_SLEEPERS + NO_NORMALIZED_SLEEPERS works for you? Also, could you apply this patch, and report the bonus_max value for your music player under all three scenarios? I use amarok and use the following line, something similar should also work for PA. # grep bonus_max `grep -l amarokapp /proc/*/task/*/sched` All of the above assumes you have: CONFIG_SCHED_DEBUG=y CONFIG_SCHEDSTATS=y CONFIG_DEBUG_FS=y --- Index: linux-2.6-2/include/linux/sched.h =================================================================== --- linux-2.6-2.orig/include/linux/sched.h +++ linux-2.6-2/include/linux/sched.h @@ -977,6 +977,7 @@ struct sched_entity { u64 block_max; u64 exec_max; u64 slice_max; + u64 bonus_max; u64 nr_migrations; u64 nr_migrations_cold; Index: linux-2.6-2/kernel/sched.c =================================================================== --- linux-2.6-2.orig/kernel/sched.c +++ linux-2.6-2/kernel/sched.c @@ -2587,6 +2587,7 @@ static void __sched_fork(struct task_str p->se.block_max = 0; p->se.exec_max = 0; p->se.slice_max = 0; + p->se.bonus_max = 0; p->se.wait_max = 0; #endif Index: linux-2.6-2/kernel/sched_debug.c =================================================================== --- linux-2.6-2.orig/kernel/sched_debug.c +++ linux-2.6-2/kernel/sched_debug.c @@ -325,6 +325,7 @@ void proc_sched_show_task(struct task_st PN(se.block_max); PN(se.exec_max); PN(se.slice_max); + PN(se.bonus_max); PN(se.wait_max); PN(se.wait_sum); P(se.wait_count); @@ -402,6 +403,7 @@ void proc_sched_set_task(struct task_str p->se.block_max = 0; p->se.exec_max = 0; p->se.slice_max = 0; + p->se.bonus_max = 0; p->se.nr_migrations = 0; p->se.nr_migrations_cold = 0; p->se.nr_failed_migrations_affine = 0; Index: linux-2.6-2/kernel/sched_fair.c =================================================================== --- linux-2.6-2.orig/kernel/sched_fair.c +++ linux-2.6-2/kernel/sched_fair.c @@ -662,9 +662,12 @@ place_entity(struct cfs_rq *cfs_rq, stru if (!initial) { /* sleeps upto a single latency don't count. */ if (sched_feat(NEW_FAIR_SLEEPERS)) { - if (sched_feat(NORMALIZED_SLEEPER)) - vruntime -= calc_delta_weight(sysctl_sched_latency, se); - else + if (sched_feat(NORMALIZED_SLEEPER)) { + unsigned long bonus; + bonus = calc_delta_weight(sysctl_sched_latency, se); + schedstat_set(se->bonus_max, max_t(u64, se->bonus_max, bonus)); + vruntime -= bonus; + } else vruntime -= sysctl_sched_latency; } ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 8:34 ` Peter Zijlstra @ 2008-05-02 10:32 ` Frans Pop 2008-05-02 10:35 ` Peter Zijlstra 2008-05-02 11:10 ` Parag Warudkar 2008-05-07 8:26 ` Frans Pop 2 siblings, 1 reply; 49+ messages in thread From: Frans Pop @ 2008-05-02 10:32 UTC (permalink / raw) To: Peter Zijlstra; +Cc: Parag Warudkar, Ingo Molnar, LKML On Friday 02 May 2008, Peter Zijlstra wrote: > So by default we have both enabled; could you report if either > NO_NEW_FAIR_SLEEPERS > NEW_FAIR_SLEEPERS + NO_NORMALIZED_SLEEPERS > works for you? Both work for me. Tested with current git head (mainline) + your patch. > Also, could you apply this patch, and report the bonus_max value for > your music player under all three scenarios? I've restarted amarok and the glibc build each time after change to sched_features. # cat sched_features NEW_FAIR_SLEEPERS WAKEUP_PREEMPT START_DEBIT AFFINE_WAKEUPS CACHE_HOT_BUDDY SYNC_WAKEUPS HRTICK NO_DOUBLE_TICK NORMALIZED_SLEEPER DEADLINE => skips in music (amarok) /proc/20734/task/20734/sched:se.bonus_max : 40960.000000 /proc/20734/task/20775/sched:se.bonus_max : 40960.000000 /proc/20734/task/20779/sched:se.bonus_max : 40960.000000 /proc/20734/task/20780/sched:se.bonus_max : 40960.000000 /proc/20734/task/20781/sched:se.bonus_max : 40960.000000 /proc/20734/task/20782/sched:se.bonus_max : 39.960966 /proc/20734/task/20799/sched:se.bonus_max : 40960.000000 # echo NO_NEW_FAIR_SLEEPERS >sched_features => no skips in music /proc/26357/task/26357/sched:se.bonus_max : 0.000000 /proc/26357/task/26362/sched:se.bonus_max : 0.000000 /proc/26357/task/26366/sched:se.bonus_max : 0.000000 /proc/26357/task/26367/sched:se.bonus_max : 0.000000 /proc/26357/task/26368/sched:se.bonus_max : 0.000000 /proc/26357/task/26369/sched:se.bonus_max : 0.000000 /proc/26357/task/9705/sched:se.bonus_max : 0.000000 # echo NEW_FAIR_SLEEPERS >sched_features # echo NO_NORMALIZED_SLEEPER >sched_features => no skips in music /proc/13352/task/13352/sched:se.bonus_max : 0.000000 /proc/13352/task/13357/sched:se.bonus_max : 0.000000 /proc/13352/task/13361/sched:se.bonus_max : 0.000000 /proc/13352/task/13362/sched:se.bonus_max : 0.000000 /proc/13352/task/13363/sched:se.bonus_max : 0.000000 /proc/13352/task/13364/sched:se.bonus_max : 0.000000 /proc/13352/task/27595/sched:se.bonus_max : 0.000000 Cheers, FJP ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 10:32 ` Frans Pop @ 2008-05-02 10:35 ` Peter Zijlstra 2008-05-02 11:08 ` Peter Zijlstra 0 siblings, 1 reply; 49+ messages in thread From: Peter Zijlstra @ 2008-05-02 10:35 UTC (permalink / raw) To: Frans Pop; +Cc: Parag Warudkar, Ingo Molnar, LKML On Fri, 2008-05-02 at 12:32 +0200, Frans Pop wrote: > On Friday 02 May 2008, Peter Zijlstra wrote: > > So by default we have both enabled; could you report if either > > NO_NEW_FAIR_SLEEPERS > > NEW_FAIR_SLEEPERS + NO_NORMALIZED_SLEEPERS > > works for you? > > Both work for me. Tested with current git head (mainline) + your patch. > > > Also, could you apply this patch, and report the bonus_max value for > > your music player under all three scenarios? > > I've restarted amarok and the glibc build each time after change to > sched_features. > > # cat sched_features > NEW_FAIR_SLEEPERS WAKEUP_PREEMPT START_DEBIT AFFINE_WAKEUPS CACHE_HOT_BUDDY > SYNC_WAKEUPS HRTICK NO_DOUBLE_TICK NORMALIZED_SLEEPER DEADLINE > > => skips in music (amarok) > > /proc/20734/task/20734/sched:se.bonus_max : 40960.000000 > /proc/20734/task/20775/sched:se.bonus_max : 40960.000000 > /proc/20734/task/20779/sched:se.bonus_max : 40960.000000 > /proc/20734/task/20780/sched:se.bonus_max : 40960.000000 > /proc/20734/task/20781/sched:se.bonus_max : 40960.000000 > /proc/20734/task/20782/sched:se.bonus_max : 39.960966 > /proc/20734/task/20799/sched:se.bonus_max : 40960.000000 Ok, that's _WAY_ too big, something went seriously wrong. Thanks! ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 10:35 ` Peter Zijlstra @ 2008-05-02 11:08 ` Peter Zijlstra 2008-05-02 11:37 ` Frans Pop 0 siblings, 1 reply; 49+ messages in thread From: Peter Zijlstra @ 2008-05-02 11:08 UTC (permalink / raw) To: Frans Pop; +Cc: Parag Warudkar, Ingo Molnar, LKML On Fri, 2008-05-02 at 12:35 +0200, Peter Zijlstra wrote: > On Fri, 2008-05-02 at 12:32 +0200, Frans Pop wrote: > > On Friday 02 May 2008, Peter Zijlstra wrote: > > > So by default we have both enabled; could you report if either > > > NO_NEW_FAIR_SLEEPERS > > > NEW_FAIR_SLEEPERS + NO_NORMALIZED_SLEEPERS > > > works for you? > > > > Both work for me. Tested with current git head (mainline) + your patch. > > > > > Also, could you apply this patch, and report the bonus_max value for > > > your music player under all three scenarios? > > > > I've restarted amarok and the glibc build each time after change to > > sched_features. > > > > # cat sched_features > > NEW_FAIR_SLEEPERS WAKEUP_PREEMPT START_DEBIT AFFINE_WAKEUPS CACHE_HOT_BUDDY > > SYNC_WAKEUPS HRTICK NO_DOUBLE_TICK NORMALIZED_SLEEPER DEADLINE > > > > => skips in music (amarok) > > > > /proc/20734/task/20734/sched:se.bonus_max : 40960.000000 > > /proc/20734/task/20775/sched:se.bonus_max : 40960.000000 > > /proc/20734/task/20779/sched:se.bonus_max : 40960.000000 > > /proc/20734/task/20780/sched:se.bonus_max : 40960.000000 > > /proc/20734/task/20781/sched:se.bonus_max : 40960.000000 > > /proc/20734/task/20782/sched:se.bonus_max : 39.960966 > > /proc/20734/task/20799/sched:se.bonus_max : 40960.000000 > > Ok, that's _WAY_ too big, something went seriously wrong. Thanks! In fact, that is exactly 1024 time too large. How does this work for you: Index: linux-2.6-2/kernel/sched_fair.c =================================================================== --- linux-2.6-2.orig/kernel/sched_fair.c +++ linux-2.6-2/kernel/sched_fair.c @@ -685,6 +685,7 @@ enqueue_entity(struct cfs_rq *cfs_rq, st * Update run-time statistics of the 'current'. */ update_curr(cfs_rq); + account_entity_enqueue(cfs_rq, se); if (wakeup) { place_entity(cfs_rq, se, 0); @@ -695,7 +696,6 @@ enqueue_entity(struct cfs_rq *cfs_rq, st check_spread(cfs_rq, se); if (se != cfs_rq->curr) __enqueue_entity(cfs_rq, se); - account_entity_enqueue(cfs_rq, se); } static void update_avg(u64 *avg, u64 sample) ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 11:08 ` Peter Zijlstra @ 2008-05-02 11:37 ` Frans Pop 2008-05-02 11:39 ` Peter Zijlstra 0 siblings, 1 reply; 49+ messages in thread From: Frans Pop @ 2008-05-02 11:37 UTC (permalink / raw) To: Peter Zijlstra; +Cc: Parag Warudkar, Ingo Molnar, LKML On Friday 02 May 2008, Peter Zijlstra wrote: > > Ok, that's _WAY_ too big, something went seriously wrong. Thanks! > > In fact, that is exactly 1024 time too large. > > How does this work for you: Changes nothing. Values of bonus_max are unchanged and still skips. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 11:37 ` Frans Pop @ 2008-05-02 11:39 ` Peter Zijlstra 2008-05-02 11:45 ` Frans Pop 2008-05-02 12:06 ` Frans Pop 0 siblings, 2 replies; 49+ messages in thread From: Peter Zijlstra @ 2008-05-02 11:39 UTC (permalink / raw) To: Frans Pop; +Cc: Parag Warudkar, Ingo Molnar, LKML On Fri, 2008-05-02 at 13:37 +0200, Frans Pop wrote: > On Friday 02 May 2008, Peter Zijlstra wrote: > > > Ok, that's _WAY_ too big, something went seriously wrong. Thanks! > > > > In fact, that is exactly 1024 time too large. > > > > How does this work for you: > > Changes nothing. Values of bonus_max are unchanged and still skips. Humm, I saw some bonus_max spikes on my laptop which were fixed by that patchlet, ah well, the hunt goes on. Thanks! ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 11:39 ` Peter Zijlstra @ 2008-05-02 11:45 ` Frans Pop 2008-05-02 11:51 ` Peter Zijlstra 2008-05-02 12:06 ` Frans Pop 1 sibling, 1 reply; 49+ messages in thread From: Frans Pop @ 2008-05-02 11:45 UTC (permalink / raw) To: Peter Zijlstra; +Cc: Parag Warudkar, Ingo Molnar, LKML On Friday 02 May 2008, Peter Zijlstra wrote: > On Fri, 2008-05-02 at 13:37 +0200, Frans Pop wrote: > > On Friday 02 May 2008, Peter Zijlstra wrote: > > > > Ok, that's _WAY_ too big, something went seriously wrong. Thanks! > > > > > > In fact, that is exactly 1024 time too large. > > > > > > How does this work for you: > > > > Changes nothing. Values of bonus_max are unchanged and still skips. > > Humm, I saw some bonus_max spikes on my laptop which were fixed by that > patchlet, ah well, the hunt goes on. Oh! Hang on. I just checked and saw that I made the change in dequeue_entity() instead of enqueue_entity(). Let me try again. For code symmetry I guess both should probably be changed? Sorry for the mistake. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 11:45 ` Frans Pop @ 2008-05-02 11:51 ` Peter Zijlstra 0 siblings, 0 replies; 49+ messages in thread From: Peter Zijlstra @ 2008-05-02 11:51 UTC (permalink / raw) To: Frans Pop; +Cc: Parag Warudkar, Ingo Molnar, LKML On Fri, 2008-05-02 at 13:45 +0200, Frans Pop wrote: > On Friday 02 May 2008, Peter Zijlstra wrote: > > On Fri, 2008-05-02 at 13:37 +0200, Frans Pop wrote: > > > On Friday 02 May 2008, Peter Zijlstra wrote: > > > > > Ok, that's _WAY_ too big, something went seriously wrong. Thanks! > > > > > > > > In fact, that is exactly 1024 time too large. > > > > > > > > How does this work for you: > > > > > > Changes nothing. Values of bonus_max are unchanged and still skips. > > > > Humm, I saw some bonus_max spikes on my laptop which were fixed by that > > patchlet, ah well, the hunt goes on. > > Oh! Hang on. I just checked and saw that I made the change in > dequeue_entity() instead of enqueue_entity(). Let me try again. > > For code symmetry I guess both should probably be changed? Symetry would actually make it something like: enqueue() A B C dequeu() C B A But I just quickly checked the code and I can't see any ill effect of mis-placing that code in dequeue() too. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 11:39 ` Peter Zijlstra 2008-05-02 11:45 ` Frans Pop @ 2008-05-02 12:06 ` Frans Pop 2008-05-02 12:22 ` Parag Warudkar 1 sibling, 1 reply; 49+ messages in thread From: Frans Pop @ 2008-05-02 12:06 UTC (permalink / raw) To: Peter Zijlstra; +Cc: Parag Warudkar, Ingo Molnar, LKML On Friday 02 May 2008, Peter Zijlstra wrote: > On Fri, 2008-05-02 at 13:37 +0200, Frans Pop wrote: > > On Friday 02 May 2008, Peter Zijlstra wrote: > > > > Ok, that's _WAY_ too big, something went seriously wrong. Thanks! > > > > > > In fact, that is exactly 1024 time too large. > > > > > > How does this work for you: > > > > Changes nothing. Values of bonus_max are unchanged and still skips. > > Humm, I saw some bonus_max spikes on my laptop which were fixed by that > patchlet, ah well, the hunt goes on. Looks like you've got it after all! With the patch in the correct place there are no more skips and I now get: /proc/5182/task/5182/sched:se.bonus_max : 39.960966 /proc/5182/task/5263/sched:se.bonus_max : 39.960966 /proc/5182/task/5267/sched:se.bonus_max : 39.960966 /proc/5182/task/5268/sched:se.bonus_max : 39.960966 /proc/5182/task/5269/sched:se.bonus_max : 39.960966 /proc/5182/task/5270/sched:se.bonus_max : 19.990234 /proc/5182/task/5661/sched:se.bonus_max : 39.960966 Note (mostly for Parag) that I had GROUP_SCHED disabled for these tests, but for me that did make not any difference with my 2.6.25-rc tests for this issue, nor with my tests using sched-devel earlier in the .26 merge window. Feel free to add my Tested-by: Frans Pop <elendil@planet.nl> Cheers, FJP ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 12:06 ` Frans Pop @ 2008-05-02 12:22 ` Parag Warudkar 2008-05-02 13:21 ` Dhaval Giani 0 siblings, 1 reply; 49+ messages in thread From: Parag Warudkar @ 2008-05-02 12:22 UTC (permalink / raw) To: Frans Pop; +Cc: Peter Zijlstra, Ingo Molnar, LKML On Fri, May 2, 2008 at 8:06 AM, Frans Pop <elendil@planet.nl> wrote: > Note (mostly for Parag) that I had GROUP_SCHED disabled for these tests, but > for me that did make not any difference with my 2.6.25-rc tests for this > issue, nor with my tests using sched-devel earlier in the .26 merge window. > Strange - without the _enqueue patch from Peter, stutter is reduced to an almost acceptable level for me if I just disable GROUP_SCHED. With Peter's patch - I have tested multiple times and the stutter is completely eliminated. So +1 for Peter's patch. Mike recalls a regression that may be related - so it is possible you were running w/o the affecting change. Anyway - all is well in sched-land for now. Rejoice! Parag ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 12:22 ` Parag Warudkar @ 2008-05-02 13:21 ` Dhaval Giani 0 siblings, 0 replies; 49+ messages in thread From: Dhaval Giani @ 2008-05-02 13:21 UTC (permalink / raw) To: Parag Warudkar; +Cc: Frans Pop, Peter Zijlstra, Ingo Molnar, LKML On Fri, May 02, 2008 at 08:22:04AM -0400, Parag Warudkar wrote: > On Fri, May 2, 2008 at 8:06 AM, Frans Pop <elendil@planet.nl> wrote: > > Note (mostly for Parag) that I had GROUP_SCHED disabled for these tests, but > > for me that did make not any difference with my 2.6.25-rc tests for this > > issue, nor with my tests using sched-devel earlier in the .26 merge window. > > > > Strange - without the _enqueue patch from Peter, stutter is reduced to > an almost acceptable level for me if I just disable GROUP_SCHED. > With Peter's patch - I have tested multiple times and the stutter is > completely eliminated. So +1 for Peter's patch. > Not really, we can do better. I still see stutters and noticable delays in keypresses making it to the console even with Peter's patches. /me tries to fix this one :-/ Peter, any more patches to try out? thanks, -- regards, Dhaval ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 8:34 ` Peter Zijlstra 2008-05-02 10:32 ` Frans Pop @ 2008-05-02 11:10 ` Parag Warudkar 2008-05-02 12:09 ` Mike Galbraith 2008-05-07 8:26 ` Frans Pop 2 siblings, 1 reply; 49+ messages in thread From: Parag Warudkar @ 2008-05-02 11:10 UTC (permalink / raw) To: Peter Zijlstra; +Cc: Ingo Molnar, LKML, Frans Pop, Mike Galbraith On Fri, May 2, 2008 at 4:34 AM, Peter Zijlstra <a.p.zijlstra@chello.nl> wrote: > On Thu, 2008-05-01 at 20:14 -0400, Parag Warudkar wrote: > > Parag, would you also test with !NEW_FAIR_SLEEPERS to see if that solves > your problem? > > The easiest way to disable it is (assumes you have debugfs mounted > at /debug): > > # echo NO_NEW_FAIR_SLEEPERS > /debug/sched_features Seems to make it stutter a little less - but still not usable. > > You can also disable NORMALIZED_SLEEPER that way (of course you would > first have to enable NEW_FAIR_SLEEPERS again): > > # echo NO_NORMALIZED_SLEEPER > /debug/sched_features > No significant difference from NO_NEW_FAIR_SLEEPERS that I can tell. > So by default we have both enabled; could you report if either > > NO_NEW_FAIR_SLEEPERS > > NEW_FAIR_SLEEPERS + NO_NORMALIZED_SLEEPERS > > works for you? I would say no - the audio still is unusable - slightly better with NO_NEW_FAIR_SLEEPERS, no difference with the other. But per Mike's suggestion if I disable CONFIG_GROUP_SCHED , CONFIG_FAIR_GROUP_SCHED and CONFIG_USER_SCHED, even with NEW_FAIR_SLEEPERS audio is good again, which does not change with NO_NEW_FAIR_SLEEPERS. (No skips for long time under -j8 - still skips a _very_ tiny bit - noticeable if I listen too carefully - but we can ignore that for the time being.) Mike - the GROUP_SCHED stuff is set to y in the Ubuntu kernel and I have no audio skips - may be a regression introduced after 2.6.24? But why is the GROUP_SCHED stuff default y if it so unusable? > > Also, could you apply this patch, and report the bonus_max value for > your music player under all three scenarios? > I see Frans already reported that and there was some conclusion - let me know if more data will help. Thanks! Parag ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 11:10 ` Parag Warudkar @ 2008-05-02 12:09 ` Mike Galbraith 2008-05-02 12:21 ` Parag Warudkar 0 siblings, 1 reply; 49+ messages in thread From: Mike Galbraith @ 2008-05-02 12:09 UTC (permalink / raw) To: Parag Warudkar; +Cc: Peter Zijlstra, Ingo Molnar, LKML, Frans Pop [-- Attachment #1: Type: text/plain, Size: 349 bytes --] On Fri, 2008-05-02 at 07:10 -0400, Parag Warudkar wrote: > Mike - the GROUP_SCHED stuff is set to y in the Ubuntu kernel and I > have no audio skips - may be a regression introduced after 2.6.24? Hm. I've stumbled across a regression that may be related. Can you please try the attached with group scheduling enabled in current git? -Mike [-- Attachment #2: revert_8f1bc385cfbab474db6c27b5af1e439614f3025c.diff --] [-- Type: text/x-patch, Size: 5898 bytes --] commit 8f1bc385cfbab474db6c27b5af1e439614f3025c Author: Peter Zijlstra <a.p.zijlstra@chello.nl> Date: Sat Apr 19 19:45:00 2008 +0200 sched: fair: weight calculations In order to level the hierarchy, we need to calculate load based on the root view. That is, each task's load is in the same unit. A / \ B 1 / \ 2 3 To compute 1's load we do: weight(1) -------------- rq_weight(A) To compute 2's load we do: weight(2) weight(B) ------------ * ----------- rq_weight(B) rw_weight(A) This yields load fractions in comparable units. The consequence is that it changes virtual time. We used to have: time_{i} vtime_{i} = ------------ weight_{i} vtime = \Sum vtime_{i} = time / rq_weight. But with the new way of load calculation we get that vtime equals time. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu> Index: linux-2.6.26.git/kernel/sched.c =================================================================== --- linux-2.6.26.git.orig/kernel/sched.c +++ linux-2.6.26.git/kernel/sched.c @@ -1429,9 +1429,6 @@ static void __resched_task(struct task_s */ #define SRR(x, y) (((x) + (1UL << ((y) - 1))) >> (y)) -/* - * delta *= weight / lw - */ static unsigned long calc_delta_mine(unsigned long delta_exec, unsigned long weight, struct load_weight *lw) @@ -1454,6 +1451,12 @@ calc_delta_mine(unsigned long delta_exec return (unsigned long)min(tmp, (u64)(unsigned long)LONG_MAX); } +static inline unsigned long +calc_delta_fair(unsigned long delta_exec, struct load_weight *lw) +{ + return calc_delta_mine(delta_exec, NICE_0_LOAD, lw); +} + static inline void update_load_add(struct load_weight *lw, unsigned long inc) { lw->weight += inc; Index: linux-2.6.26.git/kernel/sched_fair.c =================================================================== --- linux-2.6.26.git.orig/kernel/sched_fair.c +++ linux-2.6.26.git/kernel/sched_fair.c @@ -334,34 +334,6 @@ int sched_nr_latency_handler(struct ctl_ #endif /* - * delta *= w / rw - */ -static inline unsigned long -calc_delta_weight(unsigned long delta, struct sched_entity *se) -{ - for_each_sched_entity(se) { - delta = calc_delta_mine(delta, - se->load.weight, &cfs_rq_of(se)->load); - } - - return delta; -} - -/* - * delta *= rw / w - */ -static inline unsigned long -calc_delta_fair(unsigned long delta, struct sched_entity *se) -{ - for_each_sched_entity(se) { - delta = calc_delta_mine(delta, - cfs_rq_of(se)->load.weight, &se->load); - } - - return delta; -} - -/* * The idea is to set a period in which each task runs once. * * When there are too many tasks (sysctl_sched_nr_latency) we have to stretch @@ -390,54 +362,47 @@ static u64 __sched_period(unsigned long */ static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) { - return calc_delta_weight(__sched_period(cfs_rq->nr_running), se); + u64 slice = __sched_period(cfs_rq->nr_running); + + for_each_sched_entity(se) { + cfs_rq = cfs_rq_of(se); + + slice *= se->load.weight; + do_div(slice, cfs_rq->load.weight); + } + + + return slice; } /* * We calculate the vruntime slice of a to be inserted task * - * vs = s*rw/w = p + * vs = s/w = p/rw */ static u64 sched_vslice_add(struct cfs_rq *cfs_rq, struct sched_entity *se) { unsigned long nr_running = cfs_rq->nr_running; + unsigned long weight; + u64 vslice; if (!se->on_rq) nr_running++; - return __sched_period(nr_running); -} - -/* - * The goal of calc_delta_asym() is to be asymmetrically around NICE_0_LOAD, in - * that it favours >=0 over <0. - * - * -20 | - * | - * 0 --------+------- - * .' - * 19 .' - * - */ -static unsigned long -calc_delta_asym(unsigned long delta, struct sched_entity *se) -{ - struct load_weight lw = { - .weight = NICE_0_LOAD, - .inv_weight = 1UL << (WMULT_SHIFT-NICE_0_SHIFT) - }; + vslice = __sched_period(nr_running); for_each_sched_entity(se) { - struct load_weight *se_lw = &se->load; + cfs_rq = cfs_rq_of(se); - if (se->load.weight < NICE_0_LOAD) - se_lw = &lw; + weight = cfs_rq->load.weight; + if (!se->on_rq) + weight += se->load.weight; - delta = calc_delta_mine(delta, - cfs_rq_of(se)->load.weight, se_lw); + vslice *= NICE_0_LOAD; + do_div(vslice, weight); } - return delta; + return vslice; } /* @@ -454,7 +419,11 @@ __update_curr(struct cfs_rq *cfs_rq, str curr->sum_exec_runtime += delta_exec; schedstat_add(cfs_rq, exec_clock, delta_exec); - delta_exec_weighted = calc_delta_fair(delta_exec, curr); + delta_exec_weighted = delta_exec; + if (unlikely(curr->load.weight != NICE_0_LOAD)) { + delta_exec_weighted = calc_delta_fair(delta_exec_weighted, + &curr->load); + } curr->vruntime += delta_exec_weighted; } @@ -663,7 +632,8 @@ place_entity(struct cfs_rq *cfs_rq, stru /* sleeps upto a single latency don't count. */ if (sched_feat(NEW_FAIR_SLEEPERS)) { if (sched_feat(NORMALIZED_SLEEPER)) - vruntime -= calc_delta_weight(sysctl_sched_latency, se); + vruntime -= calc_delta_fair(sysctl_sched_latency, + &cfs_rq->load); else vruntime -= sysctl_sched_latency; } @@ -1162,10 +1132,11 @@ static unsigned long wakeup_gran(struct unsigned long gran = sysctl_sched_wakeup_granularity; /* - * More easily preempt - nice tasks, while not making it harder for - * + nice tasks. + * More easily preempt - nice tasks, while not making + * it harder for + nice tasks. */ - gran = calc_delta_asym(sysctl_sched_wakeup_granularity, se); + if (unlikely(se->load.weight > NICE_0_LOAD)) + gran = calc_delta_fair(gran, &se->load); return gran; } ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 12:09 ` Mike Galbraith @ 2008-05-02 12:21 ` Parag Warudkar 2008-05-02 12:37 ` Mike Galbraith 0 siblings, 1 reply; 49+ messages in thread From: Parag Warudkar @ 2008-05-02 12:21 UTC (permalink / raw) To: Mike Galbraith; +Cc: Peter Zijlstra, Ingo Molnar, LKML, Frans Pop On Fri, May 2, 2008 at 8:09 AM, Mike Galbraith <efault@gmx.de> wrote: > Hm. I've stumbled across a regression that may be related. Can you > please try the attached with group scheduling enabled in current git? In file included from kernel/sched.c:1902: kernel/sched_fair.c: In function 'print_cfs_rq_tasks': kernel/sched_fair.c:1602: error: implicit declaration of function 'calc_delta_weight' kernel/sched_fair.c:1603: warning: format '%lu' expects type 'long unsigned int', but argument 5 has type 'int' make[1]: *** [kernel/sched.o] Error 1 make: *** [kernel] Error 2 'calc_delta_weight' or a replacement not found easily to fix it up! Thanks Parag ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 12:21 ` Parag Warudkar @ 2008-05-02 12:37 ` Mike Galbraith 2008-05-02 15:02 ` Mike Galbraith 2008-05-03 7:13 ` Frans Pop 0 siblings, 2 replies; 49+ messages in thread From: Mike Galbraith @ 2008-05-02 12:37 UTC (permalink / raw) To: Parag Warudkar; +Cc: Peter Zijlstra, Ingo Molnar, LKML, Frans Pop [-- Attachment #1: Type: text/plain, Size: 805 bytes --] On Fri, 2008-05-02 at 08:21 -0400, Parag Warudkar wrote: > On Fri, May 2, 2008 at 8:09 AM, Mike Galbraith <efault@gmx.de> wrote: > > Hm. I've stumbled across a regression that may be related. Can you > > please try the attached with group scheduling enabled in current git? > > In file included from kernel/sched.c:1902: > kernel/sched_fair.c: In function 'print_cfs_rq_tasks': > kernel/sched_fair.c:1602: error: implicit declaration of function > 'calc_delta_weight' > kernel/sched_fair.c:1603: warning: format '%lu' expects type 'long > unsigned int', but argument 5 has type 'int' > make[1]: *** [kernel/sched.o] Error 1 > make: *** [kernel] Error 2 > > 'calc_delta_weight' or a replacement not found easily to fix it up! Oops, I have an unrelated patch in my tree which you also need. -Mike [-- Attachment #2: revert_7ba2e74ab5a0518bc953042952dd165724bc70c9.diff --] [-- Type: text/x-patch, Size: 1487 bytes --] commit 7ba2e74ab5a0518bc953042952dd165724bc70c9 Author: Peter Zijlstra <a.p.zijlstra@chello.nl> Date: Sat Apr 19 19:45:00 2008 +0200 sched: debug: show a weight tree Print a tree of weights. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu> Index: linux-2.6.26.git/kernel/sched_fair.c =================================================================== --- linux-2.6.26.git.orig/kernel/sched_fair.c +++ linux-2.6.26.git/kernel/sched_fair.c @@ -1611,30 +1611,6 @@ static const struct sched_class fair_sch }; #ifdef CONFIG_SCHED_DEBUG -static void -print_cfs_rq_tasks(struct seq_file *m, struct cfs_rq *cfs_rq, int depth) -{ - struct sched_entity *se; - - if (!cfs_rq) - return; - - list_for_each_entry_rcu(se, &cfs_rq->tasks, group_node) { - int i; - - for (i = depth; i; i--) - seq_puts(m, " "); - - seq_printf(m, "%lu %s %lu\n", - se->load.weight, - entity_is_task(se) ? "T" : "G", - calc_delta_weight(SCHED_LOAD_SCALE, se) - ); - if (!entity_is_task(se)) - print_cfs_rq_tasks(m, group_cfs_rq(se), depth + 1); - } -} - static void print_cfs_stats(struct seq_file *m, int cpu) { struct cfs_rq *cfs_rq; @@ -1642,9 +1618,6 @@ static void print_cfs_stats(struct seq_f rcu_read_lock(); for_each_leaf_cfs_rq(cpu_rq(cpu), cfs_rq) print_cfs_rq(m, cpu, cfs_rq); - - seq_printf(m, "\nWeight tree:\n"); - print_cfs_rq_tasks(m, &cpu_rq(cpu)->cfs, 1); rcu_read_unlock(); } #endif ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 12:37 ` Mike Galbraith @ 2008-05-02 15:02 ` Mike Galbraith 2008-05-02 15:49 ` Frans Pop 2008-05-03 7:13 ` Frans Pop 1 sibling, 1 reply; 49+ messages in thread From: Mike Galbraith @ 2008-05-02 15:02 UTC (permalink / raw) To: Parag Warudkar; +Cc: Peter Zijlstra, Ingo Molnar, LKML, Frans Pop On Fri, 2008-05-02 at 14:37 +0200, Mike Galbraith wrote: > On Fri, 2008-05-02 at 08:21 -0400, Parag Warudkar wrote: > > On Fri, May 2, 2008 at 8:09 AM, Mike Galbraith <efault@gmx.de> wrote: > > > Hm. I've stumbled across a regression that may be related. Can you > > > please try the attached with group scheduling enabled in current git? > > > > In file included from kernel/sched.c:1902: > > kernel/sched_fair.c: In function 'print_cfs_rq_tasks': > > kernel/sched_fair.c:1602: error: implicit declaration of function > > 'calc_delta_weight' > > kernel/sched_fair.c:1603: warning: format '%lu' expects type 'long > > unsigned int', but argument 5 has type 'int' > > make[1]: *** [kernel/sched.o] Error 1 > > make: *** [kernel] Error 2 > > > > 'calc_delta_weight' or a replacement not found easily to fix it up! > > Oops, I have an unrelated patch in my tree which you also need. I see that Peter has a fix, so don't bother. -Mike ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 15:02 ` Mike Galbraith @ 2008-05-02 15:49 ` Frans Pop 2008-05-02 18:53 ` Frans Pop 2008-05-02 19:38 ` Horrendous Audio Stutter - current git Mike Galbraith 0 siblings, 2 replies; 49+ messages in thread From: Frans Pop @ 2008-05-02 15:49 UTC (permalink / raw) To: Mike Galbraith; +Cc: Parag Warudkar, Peter Zijlstra, Ingo Molnar, LKML On Friday 02 May 2008, Mike Galbraith wrote: > On Fri, 2008-05-02 at 14:37 +0200, Mike Galbraith wrote: > > On Fri, 2008-05-02 at 08:21 -0400, Parag Warudkar wrote: > > > On Fri, May 2, 2008 at 8:09 AM, Mike Galbraith <efault@gmx.de> wrote: > > > > Hm. I've stumbled across a regression that may be related. Can > > > > you please try the attached with group scheduling enabled in > > > > current git? > > > > > > In file included from kernel/sched.c:1902: > > > kernel/sched_fair.c: In function 'print_cfs_rq_tasks': > > > kernel/sched_fair.c:1602: error: implicit declaration of function > > > 'calc_delta_weight' > > > kernel/sched_fair.c:1603: warning: format '%lu' expects type 'long > > > unsigned int', but argument 5 has type 'int' > > > make[1]: *** [kernel/sched.o] Error 1 > > > make: *** [kernel] Error 2 > > > > > > 'calc_delta_weight' or a replacement not found easily to fix it up! > > > > Oops, I have an unrelated patch in my tree which you also need. > > I see that Peter has a fix, so don't bother. Maybe not. It looks like Parag may have been seeing a combination of two different issues: the one that Peter fixed and one related to group scheduling. As I had group scheduling disabled, I only saw the first one. But my audio skips were a lot less severe than Parag described. And disabling group scheduling helped solve the problem for him. So it may well still be worth following up on this. Cheers, FJP ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 15:49 ` Frans Pop @ 2008-05-02 18:53 ` Frans Pop 2008-05-02 19:27 ` Mike Galbraith 2008-05-02 19:38 ` Horrendous Audio Stutter - current git Mike Galbraith 1 sibling, 1 reply; 49+ messages in thread From: Frans Pop @ 2008-05-02 18:53 UTC (permalink / raw) To: Mike Galbraith; +Cc: Parag Warudkar, Peter Zijlstra, Ingo Molnar, LKML On Friday 02 May 2008, Frans Pop wrote: > As I had group scheduling disabled, I only saw the first one. But my > audio skips were a lot less severe than Parag described. And disabling > group scheduling helped solve the problem for him. > > So it may well still be worth following up on this. I have just tested a kernel with GROUP_SCHED enabled (with Peter's patch still included) and can confirm that enabling group scheduling causes serious latencies. Skips are much more frequent than with the issue that was just solved. latencytop shows (different samples) Scheduler: waiting for cpu 537.7 msec Scheduler: waiting for cpu 172.0 msec Scheduler: waiting for cpu 414.6 msec Scheduler: waiting for cpu 455.7 msec Scheduler: waiting for cpu 446.5 msec I think I also see why.... # grep bonus_max `grep -l amarokapp /proc/*/task/*/sched` /proc/4725/task/20645/sched:se.bonus_max : 122640.203776 /proc/4725/task/4725/sched:se.bonus_max : 122640.203776 /proc/4725/task/4793/sched:se.bonus_max : 41902109.884416 /proc/4725/task/4797/sched:se.bonus_max : 41902109.884416 /proc/4725/task/4798/sched:se.bonus_max : 41902109.884416 /proc/4725/task/4799/sched:se.bonus_max : 40880.046080 /proc/4725/task/4800/sched:se.bonus_max : 19.970683 ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 18:53 ` Frans Pop @ 2008-05-02 19:27 ` Mike Galbraith 2008-05-02 19:56 ` 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) Peter Zijlstra 0 siblings, 1 reply; 49+ messages in thread From: Mike Galbraith @ 2008-05-02 19:27 UTC (permalink / raw) To: Frans Pop; +Cc: Parag Warudkar, Peter Zijlstra, Ingo Molnar, LKML On Fri, 2008-05-02 at 20:53 +0200, Frans Pop wrote: > On Friday 02 May 2008, Frans Pop wrote: > > As I had group scheduling disabled, I only saw the first one. But my > > audio skips were a lot less severe than Parag described. And disabling > > group scheduling helped solve the problem for him. > > > > So it may well still be worth following up on this. > > I have just tested a kernel with GROUP_SCHED enabled (with Peter's patch > still included) and can confirm that enabling group scheduling causes > serious latencies. > Skips are much more frequent than with the issue that was just solved. > > latencytop shows (different samples) > Scheduler: waiting for cpu 537.7 msec > Scheduler: waiting for cpu 172.0 msec > Scheduler: waiting for cpu 414.6 msec > Scheduler: waiting for cpu 455.7 msec > Scheduler: waiting for cpu 446.5 msec > > I think I also see why.... > > # grep bonus_max `grep -l amarokapp /proc/*/task/*/sched` > /proc/4725/task/20645/sched:se.bonus_max : 122640.203776 > /proc/4725/task/4725/sched:se.bonus_max : 122640.203776 > /proc/4725/task/4793/sched:se.bonus_max : 41902109.884416 > /proc/4725/task/4797/sched:se.bonus_max : 41902109.884416 > /proc/4725/task/4798/sched:se.bonus_max : 41902109.884416 > /proc/4725/task/4799/sched:se.bonus_max : 40880.046080 > /proc/4725/task/4800/sched:se.bonus_max : 19.970683 Hm. I enabled group scheduling, with Peter's patch + revert of the commit that is giving me grief + the below, and it seems to work ok here. Definitely no sound skips even under quite hefty load. The below _seems_ to make a difference stand-alone, but subjective things like 'lurches' require _very_ much testing... you tend to see what you want to see with such things. As you can see, I thought about submitting it, but I have way too much subjective poison in my system from testing this and that while reading source. Fix undesirable rq.clock update noops. Signed-off-by: Mike Galbraith <efault@gmx.de> Index: linux-2.6.26.git/kernel/sched.c =================================================================== --- linux-2.6.26.git.orig/kernel/sched.c +++ linux-2.6.26.git/kernel/sched.c @@ -668,9 +668,6 @@ static void __update_rq_clock(struct rq s64 delta = now - prev_raw; u64 clock = rq->clock; -#ifdef CONFIG_SCHED_DEBUG - WARN_ON_ONCE(cpu_of(rq) != smp_processor_id()); -#endif /* * Protect against sched_clock() occasionally going backwards: */ @@ -3009,8 +3006,8 @@ static void double_rq_lock(struct rq *rq spin_lock(&rq1->lock); } } - update_rq_clock(rq1); - update_rq_clock(rq2); + __update_rq_clock(rq1); + __update_rq_clock(rq2); } /* @@ -3860,7 +3857,7 @@ redo: /* Attempt to move tasks */ double_lock_balance(this_rq, busiest); /* this_rq->clock is already updated */ - update_rq_clock(busiest); + __update_rq_clock(busiest); ld_moved = move_tasks(this_rq, this_cpu, busiest, imbalance, sd, CPU_NEWLY_IDLE, &all_pinned); @@ -3959,8 +3956,8 @@ static void active_load_balance(struct r /* move a task from busiest_rq to target_rq */ double_lock_balance(busiest_rq, target_rq); - update_rq_clock(busiest_rq); - update_rq_clock(target_rq); + __update_rq_clock(busiest_rq); + __update_rq_clock(target_rq); /* Search for an sd spanning us and the target CPU. */ for_each_domain(target_cpu, sd) { Index: linux-2.6.26.git/kernel/sched_fair.c =================================================================== --- linux-2.6.26.git.orig/kernel/sched_fair.c +++ linux-2.6.26.git/kernel/sched_fair.c @@ -1221,7 +1221,7 @@ static void check_preempt_wakeup(struct int se_depth, pse_depth; if (unlikely(rt_prio(p->prio))) { - update_rq_clock(rq); + __update_rq_clock(rq); update_curr(cfs_rq); resched_task(curr); return; ^ permalink raw reply [flat|nested] 49+ messages in thread
* 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) 2008-05-02 19:27 ` Mike Galbraith @ 2008-05-02 19:56 ` Peter Zijlstra 2008-05-02 20:38 ` Guillaume Chazarain ` (2 more replies) 0 siblings, 3 replies; 49+ messages in thread From: Peter Zijlstra @ 2008-05-02 19:56 UTC (permalink / raw) To: Mike Galbraith Cc: Frans Pop, Parag Warudkar, Ingo Molnar, LKML, Guillaume Chazarain, Andi Kleen On Fri, 2008-05-02 at 21:27 +0200, Mike Galbraith wrote: That's a quite horrible patch for some of us, but I think I know why you did that, and I think your fancy Q6600 has a stable enough TSC to pull it off. Let me try and come up with something slightly less horrible > Fix undesirable rq.clock update noops. > > Signed-off-by: Mike Galbraith <efault@gmx.de> > > Index: linux-2.6.26.git/kernel/sched.c > =================================================================== > --- linux-2.6.26.git.orig/kernel/sched.c > +++ linux-2.6.26.git/kernel/sched.c > @@ -668,9 +668,6 @@ static void __update_rq_clock(struct rq > s64 delta = now - prev_raw; > u64 clock = rq->clock; > > -#ifdef CONFIG_SCHED_DEBUG > - WARN_ON_ONCE(cpu_of(rq) != smp_processor_id()); > -#endif > /* > * Protect against sched_clock() occasionally going backwards: > */ > @@ -3009,8 +3006,8 @@ static void double_rq_lock(struct rq *rq > spin_lock(&rq1->lock); > } > } > - update_rq_clock(rq1); > - update_rq_clock(rq2); > + __update_rq_clock(rq1); > + __update_rq_clock(rq2); > } > > /* > @@ -3860,7 +3857,7 @@ redo: > /* Attempt to move tasks */ > double_lock_balance(this_rq, busiest); > /* this_rq->clock is already updated */ > - update_rq_clock(busiest); > + __update_rq_clock(busiest); > ld_moved = move_tasks(this_rq, this_cpu, busiest, > imbalance, sd, CPU_NEWLY_IDLE, > &all_pinned); > @@ -3959,8 +3956,8 @@ static void active_load_balance(struct r > > /* move a task from busiest_rq to target_rq */ > double_lock_balance(busiest_rq, target_rq); > - update_rq_clock(busiest_rq); > - update_rq_clock(target_rq); > + __update_rq_clock(busiest_rq); > + __update_rq_clock(target_rq); > > /* Search for an sd spanning us and the target CPU. */ > for_each_domain(target_cpu, sd) { > Index: linux-2.6.26.git/kernel/sched_fair.c > =================================================================== > --- linux-2.6.26.git.orig/kernel/sched_fair.c > +++ linux-2.6.26.git/kernel/sched_fair.c > @@ -1221,7 +1221,7 @@ static void check_preempt_wakeup(struct > int se_depth, pse_depth; > > if (unlikely(rt_prio(p->prio))) { > - update_rq_clock(rq); > + __update_rq_clock(rq); > update_curr(cfs_rq); > resched_task(curr); > return; > Ok, the the below would need something that relates tick_timestamp's to one another.. probably sucks without it.. OTOH, Andi said he was working on a fastish global sched_clock() thingy, Andi got a link to that code? Index: linux-2.6-2/kernel/sched.c =================================================================== --- linux-2.6-2.orig/kernel/sched.c +++ linux-2.6-2/kernel/sched.c @@ -560,6 +560,7 @@ struct rq { unsigned long next_balance; struct mm_struct *prev_mm; + spinlock_t clock_lock; u64 clock, prev_clock_raw; s64 clock_max_delta; @@ -657,20 +658,25 @@ static inline void update_last_tick_seen } #endif +#define cpu_rq(cpu) (&per_cpu(runqueues, (cpu))) +#define this_rq() (&__get_cpu_var(runqueues)) +#define task_rq(p) cpu_rq(task_cpu(p)) +#define cpu_curr(cpu) (cpu_rq(cpu)->curr) + /* * Update the per-runqueue clock, as finegrained as the platform can give * us, but without assuming monotonicity, etc.: */ -static void __update_rq_clock(struct rq *rq) +static void ___update_rq_clock(struct rq *rq, u64 now) { u64 prev_raw = rq->prev_clock_raw; - u64 now = sched_clock(); s64 delta = now - prev_raw; u64 clock = rq->clock; #ifdef CONFIG_SCHED_DEBUG WARN_ON_ONCE(cpu_of(rq) != smp_processor_id()); #endif + spin_lock(&rq->clock_lock); /* * Protect against sched_clock() occasionally going backwards: */ @@ -699,12 +705,31 @@ static void __update_rq_clock(struct rq rq->prev_clock_raw = now; rq->clock = clock; + spin_unlock(&rq->clock_lock); +} + +static void __update_rq_clock(struct rq *rq) +{ + ___update_rq_clock(rq, sched_clock()); +} + +static void __update_remote_rq_clock(struct rq *rq) +{ + u64 now = sched_clock(); + struct rq *this_rq = this_rq(); + + now -= this_rq->tick_timestamp; + now += rq->tick_timestamp; + + ___update_rq_clock(rq, now); } static void update_rq_clock(struct rq *rq) { if (likely(smp_processor_id() == cpu_of(rq))) __update_rq_clock(rq); + else + __update_remote_rq_clock(rq); } /* @@ -717,11 +742,6 @@ static void update_rq_clock(struct rq *r #define for_each_domain(cpu, __sd) \ for (__sd = rcu_dereference(cpu_rq(cpu)->sd); __sd; __sd = __sd->parent) -#define cpu_rq(cpu) (&per_cpu(runqueues, (cpu))) -#define this_rq() (&__get_cpu_var(runqueues)) -#define task_rq(p) cpu_rq(task_cpu(p)) -#define cpu_curr(cpu) (cpu_rq(cpu)->curr) - /* * Tunables that become constants when CONFIG_SCHED_DEBUG is off: */ @@ -8147,6 +8167,7 @@ void __init sched_init(void) rq = cpu_rq(i); spin_lock_init(&rq->lock); + spin_lock_init(&rq->clock_lock); lockdep_set_class(&rq->lock, &rq->rq_lock_key); rq->nr_running = 0; rq->clock = 1; ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) 2008-05-02 19:56 ` 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) Peter Zijlstra @ 2008-05-02 20:38 ` Guillaume Chazarain 2008-05-02 20:46 ` Peter Zijlstra 2008-05-02 21:48 ` David Miller 2008-05-03 6:20 ` 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) Mike Galbraith 2 siblings, 1 reply; 49+ messages in thread From: Guillaume Chazarain @ 2008-05-02 20:38 UTC (permalink / raw) To: Peter Zijlstra Cc: Mike Galbraith, Frans Pop, Parag Warudkar, Ingo Molnar, LKML, Andi Kleen On Fri, May 2, 2008 at 9:56 PM, Peter Zijlstra <a.p.zijlstra@chello.nl> wrote: > Let me try and come up with something slightly less horrible Does this obsolete Ingo's "sched: make cpu_clock() globally synchronous"? http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=27ec4407790d075c325e1f4da0a19c56953cce23 My laptop is UP, so I cannot test this :-( -- Guillaume ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) 2008-05-02 20:38 ` Guillaume Chazarain @ 2008-05-02 20:46 ` Peter Zijlstra 2008-05-02 22:00 ` 'global' rq->clock David Miller 0 siblings, 1 reply; 49+ messages in thread From: Peter Zijlstra @ 2008-05-02 20:46 UTC (permalink / raw) To: Guillaume Chazarain Cc: Mike Galbraith, Frans Pop, Parag Warudkar, Ingo Molnar, LKML, Andi Kleen On Fri, 2008-05-02 at 22:38 +0200, Guillaume Chazarain wrote: > On Fri, May 2, 2008 at 9:56 PM, Peter Zijlstra <a.p.zijlstra@chello.nl> wrote: > > Let me try and come up with something slightly less horrible > > Does this obsolete Ingo's "sched: make cpu_clock() globally synchronous"? > > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=27ec4407790d075c325e1f4da0a19c56953cce23 > > My laptop is UP, so I cannot test this :-( It doesn't, I'm just throwing around code/ideas. We should probably come up with some clock lib that builds the various clocks: rq->clock and cpu_clock() from sched_clock() depending on some architecture supplied hints. We can toss most of this code on archs like power64, sparc64 and s390x which have stable clocks. It just seems wrong to do all this on these archs, but don't have much choice on x86. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-02 20:46 ` Peter Zijlstra @ 2008-05-02 22:00 ` David Miller 0 siblings, 0 replies; 49+ messages in thread From: David Miller @ 2008-05-02 22:00 UTC (permalink / raw) To: a.p.zijlstra Cc: guichaz, efault, elendil, parag.warudkar, mingo, linux-kernel, andi From: Peter Zijlstra <a.p.zijlstra@chello.nl> Date: Fri, 02 May 2008 22:46:05 +0200 > We can toss most of this code on archs like power64, sparc64 and s390x > which have stable clocks. It just seems wrong to do all this on these > archs, but don't have much choice on x86. All of this scheduler runqueue clock business is probably solving the x86 TSC issue on the wrong level. I suggest having a char with Andi Kleen about these issues, he's had some good ideas in the past which were ignored for whatever reasons... ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-02 19:56 ` 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) Peter Zijlstra 2008-05-02 20:38 ` Guillaume Chazarain @ 2008-05-02 21:48 ` David Miller 2008-05-02 10:09 ` Arjan van de Ven 2008-05-02 22:07 ` Peter Zijlstra 2008-05-03 6:20 ` 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) Mike Galbraith 2 siblings, 2 replies; 49+ messages in thread From: David Miller @ 2008-05-02 21:48 UTC (permalink / raw) To: a.p.zijlstra Cc: efault, elendil, parag.warudkar, mingo, linux-kernel, guichaz, andi From: Peter Zijlstra <a.p.zijlstra@chello.nl> Date: Fri, 02 May 2008 21:56:26 +0200 > Ok, the the below would need something that relates tick_timestamp's to > one another.. probably sucks without it.. > > OTOH, Andi said he was working on a fastish global sched_clock() thingy, > Andi got a link to that code? While I'm fine with this kind of stuff being added to constantly cope with x86's joke of a TSC register implementation, it's starting to become an enormous burdon for platforms where the TICK source actually works properly. Heck, on my Niagara2 chips, all 64 cpus use the same physical register for the TICK source, it physically can't get desynchronized :-) So, a way to turn all of this muck off would be much appreciated. I'm happy to test anything on sparc64, and I'm sure the powerpc folks are as well. And I also heard a rumor that Peter has access to a machine with a stable tick source for testing :-) ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-02 21:48 ` David Miller @ 2008-05-02 10:09 ` Arjan van de Ven 2008-05-04 12:12 ` Peter Zijlstra 2008-05-02 22:07 ` Peter Zijlstra 1 sibling, 1 reply; 49+ messages in thread From: Arjan van de Ven @ 2008-05-02 10:09 UTC (permalink / raw) To: David Miller Cc: a.p.zijlstra, efault, elendil, parag.warudkar, mingo, linux-kernel, guichaz, andi On Fri, 02 May 2008 14:48:27 -0700 (PDT) David Miller <davem@davemloft.net> wrote: > From: Peter Zijlstra <a.p.zijlstra@chello.nl> > Date: Fri, 02 May 2008 21:56:26 +0200 > > > Ok, the the below would need something that relates > > tick_timestamp's to one another.. probably sucks without it.. > > > > OTOH, Andi said he was working on a fastish global sched_clock() > > thingy, Andi got a link to that code? > > While I'm fine with this kind of stuff being added to constantly cope > with x86's joke of a TSC register implementation, it's starting to > become an enormous burdon for platforms where the TICK source actually > works properly. it's a sad affair indeed. On some systems it counts cycles, on other systems it counts time. On most systems it stops while idle, on others it keeps running. On most systems its not very synchronized between packages, and on some systems it's not even synchronized between cores. I'm not convinced TSC is the right thing for the scheduler in the first place; on current x86 systems TSC counts "time" not "work done". Now of course "time" is an approximation for "work done", but not a very good one given the presence of what effectively is variable cpu speeds (software CPU frequency control is only part of that; there's also the finegrained hardware level frequency control as done by what marketing people call "Intel Dynamic Acceleration technology"). [*] I and others have talked to Peter about this already, and I'm sure we'll talk more about it in the future as well.. at some point this part of CFS needs to fundamentally be cleaned up. Since this gets into a debate about what fairness means ;( [*] The converse is also true; cycles aren't a good representation of time either; this makes cycle based profilers a bit iffy if you're interested in where the system spends time rather than where it spends cycles. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-02 10:09 ` Arjan van de Ven @ 2008-05-04 12:12 ` Peter Zijlstra 0 siblings, 0 replies; 49+ messages in thread From: Peter Zijlstra @ 2008-05-04 12:12 UTC (permalink / raw) To: Arjan van de Ven Cc: David Miller, efault, elendil, parag.warudkar, mingo, linux-kernel, guichaz, andi On Fri, 2008-05-02 at 03:09 -0700, Arjan van de Ven wrote: > On Fri, 02 May 2008 14:48:27 -0700 (PDT) > David Miller <davem@davemloft.net> wrote: > > > From: Peter Zijlstra <a.p.zijlstra@chello.nl> > > Date: Fri, 02 May 2008 21:56:26 +0200 > > > > > Ok, the the below would need something that relates > > > tick_timestamp's to one another.. probably sucks without it.. > > > > > > OTOH, Andi said he was working on a fastish global sched_clock() > > > thingy, Andi got a link to that code? > > > > While I'm fine with this kind of stuff being added to constantly cope > > with x86's joke of a TSC register implementation, it's starting to > > become an enormous burdon for platforms where the TICK source actually > > works properly. > > it's a sad affair indeed. On some systems it counts cycles, on other > systems it counts time. On most systems it stops while idle, on others > it keeps running. On most systems its not very synchronized between > packages, and on some systems it's not even synchronized between cores. > > I'm not convinced TSC is the right thing for the scheduler in the first > place; on current x86 systems TSC counts "time" not "work done". Now of > course "time" is an approximation for "work done", but not a very good > one given the presence of what effectively is variable cpu speeds > (software CPU frequency control is only part of that; there's also the > finegrained hardware level frequency control as done by what marketing > people call "Intel Dynamic Acceleration technology"). [*] > > I and others have talked to Peter about this already, and I'm sure we'll > talk more about it in the future as well.. at some point this part of > CFS needs to fundamentally be cleaned up. Since this gets into a debate > about what fairness means ;( > [*] The converse is also true; cycles aren't a good representation of > time either; this makes cycle based profilers a bit iffy if you're > interested in where the system spends time rather than where it spends > cycles. My current view on this is that per cpu scheduling should use a time based clock, whereas smp load balancing can take the cycle (ie work) counter to balance different work/time loads and estimate core power. As for using the TSC, I'm afraid we just don't have any choice. Although I guess we could dynamically detect some counter on new cpus and use that when available. But the TSC is the only thing available on a lot of existing machines. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-02 21:48 ` David Miller 2008-05-02 10:09 ` Arjan van de Ven @ 2008-05-02 22:07 ` Peter Zijlstra 2008-05-03 8:28 ` Ingo Molnar 1 sibling, 1 reply; 49+ messages in thread From: Peter Zijlstra @ 2008-05-02 22:07 UTC (permalink / raw) To: David Miller Cc: efault, elendil, parag.warudkar, mingo, linux-kernel, guichaz, andi On Fri, 2008-05-02 at 14:48 -0700, David Miller wrote: > From: Peter Zijlstra <a.p.zijlstra@chello.nl> > Date: Fri, 02 May 2008 21:56:26 +0200 > > > Ok, the the below would need something that relates tick_timestamp's to > > one another.. probably sucks without it.. > > > > OTOH, Andi said he was working on a fastish global sched_clock() thingy, > > Andi got a link to that code? > > While I'm fine with this kind of stuff being added to constantly cope > with x86's joke of a TSC register implementation, it's starting to > become an enormous burdon for platforms where the TICK source actually > works properly. > > Heck, on my Niagara2 chips, all 64 cpus use the same physical register > for the TICK source, it physically can't get desynchronized :-) > > So, a way to turn all of this muck off would be much appreciated. > I'm happy to test anything on sparc64, and I'm sure the powerpc > folks are as well. > > And I also heard a rumor that Peter has access to a machine with a > stable tick source for testing :-) Yeah, I was thinking of a way for architectures to signify how much help they need building the various clocks. Sparc, power and s390 would not need any help. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-02 22:07 ` Peter Zijlstra @ 2008-05-03 8:28 ` Ingo Molnar 2008-05-03 9:05 ` David Miller 0 siblings, 1 reply; 49+ messages in thread From: Ingo Molnar @ 2008-05-03 8:28 UTC (permalink / raw) To: Peter Zijlstra Cc: David Miller, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi * Peter Zijlstra <a.p.zijlstra@chello.nl> wrote: > Yeah, I was thinking of a way for architectures to signify how much > help they need building the various clocks. Sparc, power and s390 > would not need any help. there's already such a mechanism in sched-devel.git (and has been there for a week or two): an architecture can set time_sync_thresh to -1LL during early bootup and essentially disable all the synchronization logic. Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 8:28 ` Ingo Molnar @ 2008-05-03 9:05 ` David Miller 2008-05-03 10:10 ` Ingo Molnar 0 siblings, 1 reply; 49+ messages in thread From: David Miller @ 2008-05-03 9:05 UTC (permalink / raw) To: mingo Cc: a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi From: Ingo Molnar <mingo@elte.hu> Date: Sat, 3 May 2008 10:28:50 +0200 > * Peter Zijlstra <a.p.zijlstra@chello.nl> wrote: > > > Yeah, I was thinking of a way for architectures to signify how much > > help they need building the various clocks. Sparc, power and s390 > > would not need any help. > > there's already such a mechanism in sched-devel.git (and has been there > for a week or two): an architecture can set time_sync_thresh to -1LL > during early bootup and essentially disable all the synchronization > logic. Does it remove all of the code too? :-) Please give us a config boolean. The only platform for which a run-time knob is even necessary is x86. Thanks. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 9:05 ` David Miller @ 2008-05-03 10:10 ` Ingo Molnar 2008-05-03 19:27 ` David Miller 2008-05-03 19:28 ` David Miller 0 siblings, 2 replies; 49+ messages in thread From: Ingo Molnar @ 2008-05-03 10:10 UTC (permalink / raw) To: David Miller Cc: a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi * David Miller <davem@davemloft.net> wrote: > > there's already such a mechanism in sched-devel.git (and has been > > there for a week or two): an architecture can set time_sync_thresh > > to -1LL during early bootup and essentially disable all the > > synchronization logic. > > Does it remove all of the code too? :-) > > Please give us a config boolean. The only platform for which a > run-time knob is even necessary is x86. yeah, will try something like that too. the thing is, core kernel folks have to resist such pressures _somewhat_. Architecture maintainers will put pressure on us from two directions: if a particular generic feature only helps _another_ architecture, they find it a nuisance and want it to be gone as much as possible. If a particular feature helps them, they want it supported and default-enabled as much as possible. In fact, complaints come if a generic-looking feature shows up in one architecture only. (recent example: inlining optimizations ;-) And you are totally right about sched_clock() being dead on accurate an globally synchronous on sparc64 - and you are right to find _any_ issue about it a nuisance. I totally envy you that sparc64's sched_clock() is so simple - it should have been like that on x86 years ago, if hw designers werent so impotent about it. ( although please note that the growing generalization that goes on _did_ find a subtle nohz problem on sparc64 early in the merge window, so it's not like these changes are totally useless to you. ) but it all goes in the other direction as well: many folks find endianness problems a nuisance on x86, many folks find TLB and explicit cache coherence complications a nuisance on x86 as well. The bus-to-phys complication which is an identity on x86. Etc. etc. But the core kernel is a conscious and intelligent union of all architecture's needs, and often we maintain complications even if they make no sense on the most popular platform. I think it makes strategic sense because it keep the kernel truly generic and truly clean. It also keeps architectures honest: even today the x86 architecture is still not as clean as sparc64 for example. so please be patient, we are working on it :) Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 10:10 ` Ingo Molnar @ 2008-05-03 19:27 ` David Miller 2008-05-03 19:37 ` Ingo Molnar 2008-05-03 22:30 ` Benjamin Herrenschmidt 2008-05-03 19:28 ` David Miller 1 sibling, 2 replies; 49+ messages in thread From: David Miller @ 2008-05-03 19:27 UTC (permalink / raw) To: mingo Cc: a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi From: Ingo Molnar <mingo@elte.hu> Date: Sat, 3 May 2008 12:10:16 +0200 > ( although please note that the growing generalization that goes on > _did_ find a subtle nohz problem on sparc64 early in the merge window, > so it's not like these changes are totally useless to you. ) Note that this bug theoretically exists on every platform, even x86, and only sparc64 is fixed at the moment by adding the irq_{entry,exit}() guards around all of it's IPI handlers. Just a reminder. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 19:27 ` David Miller @ 2008-05-03 19:37 ` Ingo Molnar 2008-05-03 22:30 ` Benjamin Herrenschmidt 1 sibling, 0 replies; 49+ messages in thread From: Ingo Molnar @ 2008-05-03 19:37 UTC (permalink / raw) To: David Miller Cc: a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi * David Miller <davem@davemloft.net> wrote: > From: Ingo Molnar <mingo@elte.hu> > Date: Sat, 3 May 2008 12:10:16 +0200 > > > ( although please note that the growing generalization that goes on > > _did_ find a subtle nohz problem on sparc64 early in the merge > > window, so it's not like these changes are totally useless to you. > > ) > > Note that this bug theoretically exists on every platform, even x86, > and only sparc64 is fixed at the moment by adding the > irq_{entry,exit}() guards around all of it's IPI handlers. > > Just a reminder. yeah, indeed - it's masked on x86 by the suckiness of most clockevents hw timers. We dont get unlimited sleep time like sparc64 does :-/ Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 19:27 ` David Miller 2008-05-03 19:37 ` Ingo Molnar @ 2008-05-03 22:30 ` Benjamin Herrenschmidt 2008-05-03 22:38 ` Ingo Molnar 1 sibling, 1 reply; 49+ messages in thread From: Benjamin Herrenschmidt @ 2008-05-03 22:30 UTC (permalink / raw) To: David Miller Cc: mingo, a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi On Sat, 2008-05-03 at 12:27 -0700, David Miller wrote: > > ( although please note that the growing generalization that goes on > > _did_ find a subtle nohz problem on sparc64 early in the merge > window, > > so it's not like these changes are totally useless to you. ) > > Note that this bug theoretically exists on every platform, > even x86, and only sparc64 is fixed at the moment by adding > the irq_{entry,exit}() guards around all of it's IPI handlers. What is the bug ? IPIs on power are normal interrupts, so they do happen in irq_entry/exit blocks but I'm curious to know what the root bug is :-) Ben. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 22:30 ` Benjamin Herrenschmidt @ 2008-05-03 22:38 ` Ingo Molnar 2008-05-03 23:04 ` David Miller 2008-05-04 2:22 ` Benjamin Herrenschmidt 0 siblings, 2 replies; 49+ messages in thread From: Ingo Molnar @ 2008-05-03 22:38 UTC (permalink / raw) To: Benjamin Herrenschmidt Cc: David Miller, a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi * Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote: > > On Sat, 2008-05-03 at 12:27 -0700, David Miller wrote: > > > ( although please note that the growing generalization that goes on > > > _did_ find a subtle nohz problem on sparc64 early in the merge > > window, > > > so it's not like these changes are totally useless to you. ) > > > > Note that this bug theoretically exists on every platform, even x86, > > and only sparc64 is fixed at the moment by adding the > > irq_{entry,exit}() guards around all of it's IPI handlers. > > What is the bug ? > > IPIs on power are normal interrupts, so they do happen in > irq_entry/exit blocks but I'm curious to know what the root bug is :-) on nohz we still keep jiffies uptodate - despite there not being an explicit 'keep jiffies uptodate' tick interrupt anymore. So on every irq_enter() we roll jiffies forward - if needed - and thus emulate jiffies behavior to drivers and core kernel code, etc. if an IPI on Power does not do an irq_enter() then you might miss out on updated jiffies. That might not matter for most jiffies, but you might also miss out on the 'touch the softlockup watchdog because we just woke from idle' action. This is what triggered the false positive warnings on Sparc64. the same bug existed on x86 too: that too does a few IPIs without irq_enter/irq_exit. We now removed the softlockup dependency so it should not be required to do an irq_enter()/exit anymore - unless the code that the IPI uses accesses jiffies. (but that would be unusual) Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 22:38 ` Ingo Molnar @ 2008-05-03 23:04 ` David Miller 2008-05-03 23:36 ` David Miller 2008-05-04 2:22 ` Benjamin Herrenschmidt 1 sibling, 1 reply; 49+ messages in thread From: David Miller @ 2008-05-03 23:04 UTC (permalink / raw) To: mingo Cc: benh, a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi From: Ingo Molnar <mingo@elte.hu> Date: Sun, 4 May 2008 00:38:44 +0200 > the same bug existed on x86 too: that too does a few IPIs without > irq_enter/irq_exit. We now removed the softlockup dependency so it > should not be required to do an irq_enter()/exit anymore - unless the > code that the IPI uses accesses jiffies. (but that would be unusual) That move doesn't solve the problem, I'm strongly certain arch's still need to add the irq_{enter,exit}(). I'll revert the irq_{enter,exit}() changes on one of my sparc64 boxes to validate this later today. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 23:04 ` David Miller @ 2008-05-03 23:36 ` David Miller 2008-05-03 23:38 ` Ingo Molnar 0 siblings, 1 reply; 49+ messages in thread From: David Miller @ 2008-05-03 23:36 UTC (permalink / raw) To: mingo Cc: benh, a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi From: David Miller <davem@davemloft.net> Date: Sat, 03 May 2008 16:04:08 -0700 (PDT) > From: Ingo Molnar <mingo@elte.hu> > Date: Sun, 4 May 2008 00:38:44 +0200 > > > the same bug existed on x86 too: that too does a few IPIs without > > irq_enter/irq_exit. We now removed the softlockup dependency so it > > should not be required to do an irq_enter()/exit anymore - unless the > > code that the IPI uses accesses jiffies. (but that would be unusual) > > That move doesn't solve the problem, I'm strongly certain > arch's still need to add the irq_{enter,exit}(). > > I'll revert the irq_{enter,exit}() changes on one of my > sparc64 boxes to validate this later today. False alarm, which is good news, thanks Ingo. I can revert the following it seems: commit 2664ef44cf5053d2b7dff01cecac70bc601a5f68 Author: David S. Miller <davem@davemloft.net> Date: Fri Apr 25 03:11:37 2008 -0700 [SPARC64]: Wrap SMP IPIs with irq_enter()/irq_exit(). Otherwise all sorts of bad things can happen, including spurious softlockup reports. Other platforms have this same bug, in one form or another, just don't see the issue because they don't sleep as long as sparc64 can in NOHZ. Thanks to some brilliant debugging by Peter Zijlstra. Signed-off-by: David S. Miller <davem@davemloft.net> diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 524b889..409dd71 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c @@ -866,14 +866,21 @@ void smp_call_function_client(int irq, struct pt_regs *regs) void *info = call_data->info; clear_softint(1 << irq); + + irq_enter(); + + if (!call_data->wait) { + /* let initiator proceed after getting data */ + atomic_inc(&call_data->finished); + } + + func(info); + + irq_exit(); + if (call_data->wait) { /* let initiator proceed only after completion */ - func(info); atomic_inc(&call_data->finished); - } else { - /* let initiator proceed after getting data */ - atomic_inc(&call_data->finished); - func(info); } } @@ -1032,7 +1039,9 @@ void smp_receive_signal(int cpu) void smp_receive_signal_client(int irq, struct pt_regs *regs) { + irq_enter(); clear_softint(1 << irq); + irq_exit(); } void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) @@ -1040,6 +1049,8 @@ void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) struct mm_struct *mm; unsigned long flags; + irq_enter(); + clear_softint(1 << irq); /* See if we need to allocate a new TLB context because @@ -1059,6 +1070,8 @@ void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) load_secondary_context(mm); __flush_tlb_mm(CTX_HWBITS(mm->context), SECONDARY_CONTEXT); + + irq_exit(); } void smp_new_mmu_context_version(void) @@ -1217,6 +1230,8 @@ void smp_penguin_jailcell(int irq, struct pt_regs *regs) { clear_softint(1 << irq); + irq_enter(); + preempt_disable(); __asm__ __volatile__("flushw"); @@ -1229,6 +1244,8 @@ void smp_penguin_jailcell(int irq, struct pt_regs *regs) prom_world(0); preempt_enable(); + + irq_exit(); } /* /proc/profile writes can call this, don't __init it please. */ ^ permalink raw reply related [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 23:36 ` David Miller @ 2008-05-03 23:38 ` Ingo Molnar 2008-05-03 23:40 ` David Miller 0 siblings, 1 reply; 49+ messages in thread From: Ingo Molnar @ 2008-05-03 23:38 UTC (permalink / raw) To: David Miller Cc: benh, a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi * David Miller <davem@davemloft.net> wrote: > From: David Miller <davem@davemloft.net> > Date: Sat, 03 May 2008 16:04:08 -0700 (PDT) > > > From: Ingo Molnar <mingo@elte.hu> > > Date: Sun, 4 May 2008 00:38:44 +0200 > > > > > the same bug existed on x86 too: that too does a few IPIs without > > > irq_enter/irq_exit. We now removed the softlockup dependency so it > > > should not be required to do an irq_enter()/exit anymore - unless the > > > code that the IPI uses accesses jiffies. (but that would be unusual) > > > > That move doesn't solve the problem, I'm strongly certain > > arch's still need to add the irq_{enter,exit}(). > > > > I'll revert the irq_{enter,exit}() changes on one of my > > sparc64 boxes to validate this later today. > > False alarm, which is good news, thanks Ingo. I can revert the > following it seems: > > commit 2664ef44cf5053d2b7dff01cecac70bc601a5f68 > Author: David S. Miller <davem@davemloft.net> > Date: Fri Apr 25 03:11:37 2008 -0700 > > [SPARC64]: Wrap SMP IPIs with irq_enter()/irq_exit(). ah, good! It really looks like unnecessary overhead for the "simple IPIs". But ... i'm wondering ... what about softirq processing? Do these IPIs process softirqs on the way out? In that case the non-processed jiffies might be a problem. it's all a bit messy. I wish we could start turning jiffies into a function (which would just read GTOD and estimate jiffies from there), but i fear we are not there yet ... Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 23:38 ` Ingo Molnar @ 2008-05-03 23:40 ` David Miller 2008-05-03 23:47 ` Ingo Molnar 0 siblings, 1 reply; 49+ messages in thread From: David Miller @ 2008-05-03 23:40 UTC (permalink / raw) To: mingo Cc: benh, a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi From: Ingo Molnar <mingo@elte.hu> Date: Sun, 4 May 2008 01:38:25 +0200 > ah, good! It really looks like unnecessary overhead for the "simple > IPIs". But ... i'm wondering ... what about softirq processing? Do these > IPIs process softirqs on the way out? In that case the non-processed > jiffies might be a problem. > > it's all a bit messy. I wish we could start turning jiffies into a > function (which would just read GTOD and estimate jiffies from there), > but i fear we are not there yet ... I think Peter Z. made a good point that we probably need to keep it there for smp_call_function() receivers, so that the called functions can test the context they are in accurately. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 23:40 ` David Miller @ 2008-05-03 23:47 ` Ingo Molnar 0 siblings, 0 replies; 49+ messages in thread From: Ingo Molnar @ 2008-05-03 23:47 UTC (permalink / raw) To: David Miller Cc: benh, a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi * David Miller <davem@davemloft.net> wrote: > From: Ingo Molnar <mingo@elte.hu> > Date: Sun, 4 May 2008 01:38:25 +0200 > > > ah, good! It really looks like unnecessary overhead for the "simple > > IPIs". But ... i'm wondering ... what about softirq processing? Do these > > IPIs process softirqs on the way out? In that case the non-processed > > jiffies might be a problem. > > > > it's all a bit messy. I wish we could start turning jiffies into a > > function (which would just read GTOD and estimate jiffies from there), > > but i fear we are not there yet ... > > I think Peter Z. made a good point that we probably need to keep it > there for smp_call_function() receivers, so that the called functions > can test the context they are in accurately. hm, good point, i missed that aspect. Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 22:38 ` Ingo Molnar 2008-05-03 23:04 ` David Miller @ 2008-05-04 2:22 ` Benjamin Herrenschmidt 1 sibling, 0 replies; 49+ messages in thread From: Benjamin Herrenschmidt @ 2008-05-04 2:22 UTC (permalink / raw) To: Ingo Molnar Cc: David Miller, a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi > on nohz we still keep jiffies uptodate - despite there not being an > explicit 'keep jiffies uptodate' tick interrupt anymore. So on every > irq_enter() we roll jiffies forward - if needed - and thus emulate > jiffies behavior to drivers and core kernel code, etc. > > if an IPI on Power does not do an irq_enter() then you might miss out on > updated jiffies. That might not matter for most jiffies, but you might > also miss out on the 'touch the softlockup watchdog because we just woke > from idle' action. This is what triggered the false positive warnings on > Sparc64. > > the same bug existed on x86 too: that too does a few IPIs without > irq_enter/irq_exit. We now removed the softlockup dependency so it > should not be required to do an irq_enter()/exit anymore - unless the > code that the IPI uses accesses jiffies. (but that would be unusual) Allright, so it looks like we don't have a problem today, though I'll be careful if some of our CPUs come up with more fancy ways to do IPIs. Currently they are just normal interrupts, so we do irq_enter/exit and we process softirqs on the way out. Ben. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 10:10 ` Ingo Molnar 2008-05-03 19:27 ` David Miller @ 2008-05-03 19:28 ` David Miller 2008-05-03 19:39 ` Ingo Molnar 1 sibling, 1 reply; 49+ messages in thread From: David Miller @ 2008-05-03 19:28 UTC (permalink / raw) To: mingo Cc: a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi From: Ingo Molnar <mingo@elte.hu> Date: Sat, 3 May 2008 12:10:16 +0200 > The bus-to-phys complication which is an identity on x86. Etc. etc. And you guys have IOMMUs now, aren't you glad all of this nice DMA API infrastructure exists already and has been tested for years? :-)))) ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock 2008-05-03 19:28 ` David Miller @ 2008-05-03 19:39 ` Ingo Molnar 0 siblings, 0 replies; 49+ messages in thread From: Ingo Molnar @ 2008-05-03 19:39 UTC (permalink / raw) To: David Miller Cc: a.p.zijlstra, efault, elendil, parag.warudkar, linux-kernel, guichaz, andi * David Miller <davem@davemloft.net> wrote: > From: Ingo Molnar <mingo@elte.hu> > Date: Sat, 3 May 2008 12:10:16 +0200 > > > The bus-to-phys complication which is an identity on x86. Etc. etc. > > And you guys have IOMMUs now, aren't you glad all of this nice DMA API > infrastructure exists already and has been tested for years? :-)))) yes :) But i hope we'll never have to flush caches by hand or change endianness ;-) Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) 2008-05-02 19:56 ` 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) Peter Zijlstra 2008-05-02 20:38 ` Guillaume Chazarain 2008-05-02 21:48 ` David Miller @ 2008-05-03 6:20 ` Mike Galbraith 2 siblings, 0 replies; 49+ messages in thread From: Mike Galbraith @ 2008-05-03 6:20 UTC (permalink / raw) To: Peter Zijlstra Cc: Frans Pop, Parag Warudkar, Ingo Molnar, LKML, Guillaume Chazarain, Andi Kleen On Fri, 2008-05-02 at 21:56 +0200, Peter Zijlstra wrote: > On Fri, 2008-05-02 at 21:27 +0200, Mike Galbraith wrote: > > That's a quite horrible patch for some of us, but I think I know why you > did that, and I think your fancy Q6600 has a stable enough TSC to pull > it off. Oh, yeah, that's right. Bah, let them eat cake ;-) -Mike ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 15:49 ` Frans Pop 2008-05-02 18:53 ` Frans Pop @ 2008-05-02 19:38 ` Mike Galbraith 1 sibling, 0 replies; 49+ messages in thread From: Mike Galbraith @ 2008-05-02 19:38 UTC (permalink / raw) To: Frans Pop; +Cc: Parag Warudkar, Peter Zijlstra, Ingo Molnar, LKML On Fri, 2008-05-02 at 17:49 +0200, Frans Pop wrote: > On Friday 02 May 2008, Mike Galbraith wrote: > > On Fri, 2008-05-02 at 14:37 +0200, Mike Galbraith wrote: > > > On Fri, 2008-05-02 at 08:21 -0400, Parag Warudkar wrote: > > > > On Fri, May 2, 2008 at 8:09 AM, Mike Galbraith <efault@gmx.de> wrote: > > > > > Hm. I've stumbled across a regression that may be related. Can > > > > > you please try the attached with group scheduling enabled in > > > > > current git? > > > > > > > > In file included from kernel/sched.c:1902: > > > > kernel/sched_fair.c: In function 'print_cfs_rq_tasks': > > > > kernel/sched_fair.c:1602: error: implicit declaration of function > > > > 'calc_delta_weight' > > > > kernel/sched_fair.c:1603: warning: format '%lu' expects type 'long > > > > unsigned int', but argument 5 has type 'int' > > > > make[1]: *** [kernel/sched.o] Error 1 > > > > make: *** [kernel] Error 2 > > > > > > > > 'calc_delta_weight' or a replacement not found easily to fix it up! > > > > > > Oops, I have an unrelated patch in my tree which you also need. > > > > I see that Peter has a fix, so don't bother. > > Maybe not. It looks like Parag may have been seeing a combination of two > different issues: the one that Peter fixed and one related to group > scheduling. There are definitely issues with that commit, but I'm not at all sure they manifest themselves with this workload in any heavy-weight way. My thought was only that it's negative effects could be compounded by group scheduling. -Mike ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 12:37 ` Mike Galbraith 2008-05-02 15:02 ` Mike Galbraith @ 2008-05-03 7:13 ` Frans Pop 2008-05-03 7:39 ` Mike Galbraith 1 sibling, 1 reply; 49+ messages in thread From: Frans Pop @ 2008-05-03 7:13 UTC (permalink / raw) To: Mike Galbraith; +Cc: Parag Warudkar, Peter Zijlstra, Ingo Molnar, LKML On Friday 02 May 2008, Mike Galbraith wrote: > On Fri, 2008-05-02 at 08:21 -0400, Parag Warudkar wrote: > > On Fri, May 2, 2008 at 8:09 AM, Mike Galbraith <efault@gmx.de> wrote: > > > Hm. I've stumbled across a regression that may be related. Can you > > > please try the attached with group scheduling enabled in current > > > git? > > > > In file included from kernel/sched.c:1902: > > kernel/sched_fair.c: In function 'print_cfs_rq_tasks': > > kernel/sched_fair.c:1602: error: implicit declaration of function > > 'calc_delta_weight' > > kernel/sched_fair.c:1603: warning: format '%lu' expects type 'long > > unsigned int', but argument 5 has type 'int' > > make[1]: *** [kernel/sched.o] Error 1 > > make: *** [kernel] Error 2 > > > > 'calc_delta_weight' or a replacement not found easily to fix it up! > > Oops, I have an unrelated patch in my tree which you also need. Based on Mike's mails I have quickly tried reverting the following two commits to see if that would fix the GROUP_SCHED related regression, but I still get a merge error with the second one in sched_fair.c: $ git revert 7ba2e74ab5 $ git revert 8f1bc385cf I don't feel comfortable solving the conflict myself as I'd have absolutely no idea what I'd be doing and it all seems to require a lot of precision. As other suggested patches don't seem ready for testing yet, I'll just wait for further instructions :-) Cheers, FJP ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-03 7:13 ` Frans Pop @ 2008-05-03 7:39 ` Mike Galbraith 0 siblings, 0 replies; 49+ messages in thread From: Mike Galbraith @ 2008-05-03 7:39 UTC (permalink / raw) To: Frans Pop; +Cc: Parag Warudkar, Peter Zijlstra, Ingo Molnar, LKML On Sat, 2008-05-03 at 09:13 +0200, Frans Pop wrote: > Based on Mike's mails I have quickly tried reverting the following two > commits to see if that would fix the GROUP_SCHED related regression, but I > still get a merge error with the second one in sched_fair.c: > $ git revert 7ba2e74ab5 > $ git revert 8f1bc385cf > > I don't feel comfortable solving the conflict myself as I'd have absolutely > no idea what I'd be doing and it all seems to require a lot of precision. > > As other suggested patches don't seem ready for testing yet, I'll just wait > for further instructions :-) You probably shouldn't bother. GROUP_SCHED needs Peter's EEVDF help regardless of whether 8f1bc385cf is playing a significant role or not. -Mike ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-02 8:34 ` Peter Zijlstra 2008-05-02 10:32 ` Frans Pop 2008-05-02 11:10 ` Parag Warudkar @ 2008-05-07 8:26 ` Frans Pop 2008-05-07 8:32 ` Ingo Molnar 2 siblings, 1 reply; 49+ messages in thread From: Frans Pop @ 2008-05-07 8:26 UTC (permalink / raw) To: Peter Zijlstra; +Cc: Parag Warudkar, Ingo Molnar, LKML, Mike Galbraith On Friday 02 May 2008, Peter Zijlstra wrote: > > Under kernel compilation load (make -j8) audio is very much unusable > > on current linux-2.6.git - The stutter is so bad I can hardly tell > > what song I am listening to :) > > Even with make -j4 it still skips but not that badly. What's the current status here? With mainline v2.6.26-rc1-110-ga153063 (which has latest sched patches), I still get very bad audio skips with GROUP_SCHED enabled. Cheers, FJP ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Horrendous Audio Stutter - current git 2008-05-07 8:26 ` Frans Pop @ 2008-05-07 8:32 ` Ingo Molnar 0 siblings, 0 replies; 49+ messages in thread From: Ingo Molnar @ 2008-05-07 8:32 UTC (permalink / raw) To: Frans Pop; +Cc: Peter Zijlstra, Parag Warudkar, LKML, Mike Galbraith * Frans Pop <elendil@planet.nl> wrote: > On Friday 02 May 2008, Peter Zijlstra wrote: > > > Under kernel compilation load (make -j8) audio is very much unusable > > > on current linux-2.6.git - The stutter is so bad I can hardly tell > > > what song I am listening to :) > > > Even with make -j4 it still skips but not that badly. > > What's the current status here? > With mainline v2.6.26-rc1-110-ga153063 (which has latest sched > patches), I still get very bad audio skips with GROUP_SCHED enabled. there's no solution for now, the latency targets are still not working under the group scheduler. Upstream we've made it non-default and marked it EXPERIMENTAL. Peter has a new updated group scheduler queue that i'm testing right now, perhaps it can be pushed out to sched-devel/latest later today. But that is v2.6.27 material. Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
end of thread, other threads:[~2008-05-07 8:33 UTC | newest] Thread overview: 49+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-05-02 0:14 Horrendous Audio Stutter - current git Parag Warudkar 2008-05-02 8:34 ` Peter Zijlstra 2008-05-02 10:32 ` Frans Pop 2008-05-02 10:35 ` Peter Zijlstra 2008-05-02 11:08 ` Peter Zijlstra 2008-05-02 11:37 ` Frans Pop 2008-05-02 11:39 ` Peter Zijlstra 2008-05-02 11:45 ` Frans Pop 2008-05-02 11:51 ` Peter Zijlstra 2008-05-02 12:06 ` Frans Pop 2008-05-02 12:22 ` Parag Warudkar 2008-05-02 13:21 ` Dhaval Giani 2008-05-02 11:10 ` Parag Warudkar 2008-05-02 12:09 ` Mike Galbraith 2008-05-02 12:21 ` Parag Warudkar 2008-05-02 12:37 ` Mike Galbraith 2008-05-02 15:02 ` Mike Galbraith 2008-05-02 15:49 ` Frans Pop 2008-05-02 18:53 ` Frans Pop 2008-05-02 19:27 ` Mike Galbraith 2008-05-02 19:56 ` 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) Peter Zijlstra 2008-05-02 20:38 ` Guillaume Chazarain 2008-05-02 20:46 ` Peter Zijlstra 2008-05-02 22:00 ` 'global' rq->clock David Miller 2008-05-02 21:48 ` David Miller 2008-05-02 10:09 ` Arjan van de Ven 2008-05-04 12:12 ` Peter Zijlstra 2008-05-02 22:07 ` Peter Zijlstra 2008-05-03 8:28 ` Ingo Molnar 2008-05-03 9:05 ` David Miller 2008-05-03 10:10 ` Ingo Molnar 2008-05-03 19:27 ` David Miller 2008-05-03 19:37 ` Ingo Molnar 2008-05-03 22:30 ` Benjamin Herrenschmidt 2008-05-03 22:38 ` Ingo Molnar 2008-05-03 23:04 ` David Miller 2008-05-03 23:36 ` David Miller 2008-05-03 23:38 ` Ingo Molnar 2008-05-03 23:40 ` David Miller 2008-05-03 23:47 ` Ingo Molnar 2008-05-04 2:22 ` Benjamin Herrenschmidt 2008-05-03 19:28 ` David Miller 2008-05-03 19:39 ` Ingo Molnar 2008-05-03 6:20 ` 'global' rq->clock (was Re: Horrendous Audio Stutter - current git) Mike Galbraith 2008-05-02 19:38 ` Horrendous Audio Stutter - current git Mike Galbraith 2008-05-03 7:13 ` Frans Pop 2008-05-03 7:39 ` Mike Galbraith 2008-05-07 8:26 ` Frans Pop 2008-05-07 8:32 ` Ingo Molnar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox