All of lore.kernel.org
 help / color / mirror / Atom feed
* Linux 2.6.24-rc5 x86 architecture no longer Oopses...
@ 2007-12-20 22:40 Trond Myklebust
  2007-12-20 22:54 ` Andrew Morton
  0 siblings, 1 reply; 19+ messages in thread
From: Trond Myklebust @ 2007-12-20 22:40 UTC (permalink / raw)
  To: Andrew Morton, tglx, mingo, hpa; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1563 bytes --]

I just got the following interesting behaviour. Never mind why the
original Oops (I was testing some experimental RPC patches), but there
appears to be a BUG_ON() triggered inside the dump() call.

Oops occurred with a build based on this afternoon's git tree from Linus
(v2.6.24-rc5-317-gfaa4877)...

Cheers
  Trond
---------

BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
printing eip: f8bcc8b3 *pde = 00000000 
BUG: using smp_processor_id() in preemptible [00000001] code: mount.nfs4/2970
caller is die+0x59/0x202
Pid: 2970, comm: mount.nfs4 Not tainted 2.6.24-rc5-ga747a088 #1
 [<c0405170>] show_trace_log_lvl+0x1a/0x2f
 [<c0405a76>] show_trace+0x12/0x14
 [<c0405dc6>] dump_stack+0x6c/0x72
 [<c04e4cd8>] debug_smp_processor_id+0xa0/0xb4
 [<c0405462>] die+0x59/0x202
 [<c05b3e7d>] do_page_fault+0x557/0x63e
 [<c05b252a>] error_code+0x72/0x78
 [<f8bd821c>] rpcb_create+0x7c/0x84 [sunrpc]
 [<f8bd8552>] rpcb_register+0x127/0x18c [sunrpc]
 [<f8bd31d2>] svc_register+0xcf/0x14c [sunrpc]
 [<f8bd399f>] __svc_create+0x19a/0x1b3 [sunrpc]
 [<f8bd3b21>] svc_create+0x13/0x15 [sunrpc]
 [<f8c74beb>] nfs_callback_up+0x71/0x126 [nfs]
 [<f8c53cfe>] nfs_get_client+0x14e/0x3a2 [nfs]
 [<f8c53f88>] nfs4_set_client+0x36/0x14f [nfs]
 [<f8c54739>] nfs4_create_server+0x8e/0x36c [nfs]
 [<f8c5c6f1>] nfs4_get_sb+0x2ef/0x3f3 [nfs]
 [<c0477e40>] vfs_kern_mount+0x7d/0xf1
 [<c0477f02>] do_kern_mount+0x37/0xbd
 [<c048a6fb>] do_mount+0x5c3/0x61d
 [<c048a7c4>] sys_mount+0x6f/0xa9
 [<c04040b2>] sysenter_past_esp+0x5f/0xa5
 =======================


[-- Attachment #2: config_longyearbyen --]
[-- Type: text/plain, Size: 60702 bytes --]

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24-rc5
# Thu Dec 20 16:16:24 2007
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
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_SEMAPHORE_SLEEPERS=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_QUICKLIST=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set
CONFIG_ARCH_SUPPORTS_OPROFILE=y
# CONFIG_ZONE_DMA32 is not set
CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_X86_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_KTIME_SCALAR=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
# CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
CONFIG_AUDIT=y
# CONFIG_AUDITSYSCALL is not set
CONFIG_IKCONFIG=m
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=16
# CONFIG_CGROUPS is not set
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_FAIR_USER_SCHED=y
# CONFIG_FAIR_CGROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_KMOD=y
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBD=y
# CONFIG_BLK_DEV_IO_TRACE is not set
CONFIG_LSF=y
# CONFIG_BLK_DEV_BSG is not set

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

#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
# CONFIG_NO_HZ is not set
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_VSMP is not set
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
CONFIG_MPENTIUM4=y
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_GENERIC_CPU is not set
# CONFIG_X86_GENERIC is not set
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=4
CONFIG_HPET_TIMER=y
CONFIG_NR_CPUS=8
CONFIG_SCHED_SMT=y
# CONFIG_SCHED_MC is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=m
CONFIG_X86_MCE_P4THERMAL=y
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set
CONFIG_MICROCODE=m
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPARSEMEM_STATIC=y
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_NR_QUICK=1
CONFIG_VIRT_TO_BUS=y
# CONFIG_HIGHPTE is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_EFI=y
CONFIG_IRQBALANCE=y
CONFIG_BOOT_IOREMAP=y
CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_KEXEC=y
CONFIG_CRASH_DUMP=y
CONFIG_PHYSICAL_START=0x400000
CONFIG_RELOCATABLE=y
CONFIG_PHYSICAL_ALIGN=0x400000
CONFIG_HOTPLUG_CPU=y
CONFIG_COMPAT_VDSO=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

#
# Power management options
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP_SMP=y
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND_SMP_POSSIBLE=y
CONFIG_SUSPEND=y
CONFIG_HIBERNATION_SMP_POSSIBLE=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION=""
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_PROCFS=y
CONFIG_ACPI_PROCFS_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_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=2000
CONFIG_ACPI_DEBUG=y
# CONFIG_ACPI_DEBUG_FUNC_TRACE 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=m
CONFIG_APM=m
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
# CONFIG_APM_DO_ENABLE is not set
# CONFIG_APM_CPU_IDLE is not set
# CONFIG_APM_DISPLAY_BLANK is not set
# CONFIG_APM_ALLOW_INTS is not set
# CONFIG_APM_REAL_MODE_POWER_OFF is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
# 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=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m

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

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

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCIEPORTBUS is not set
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
CONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not set
CONFIG_HT_IRQ=y
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_PCCARD is not set
CONFIG_HOTPLUG_PCI=m
CONFIG_HOTPLUG_PCI_FAKE=m
CONFIG_HOTPLUG_PCI_COMPAQ=m
CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
CONFIG_HOTPLUG_PCI_IBM=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_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
CONFIG_XFRM_SUB_POLICY=y
CONFIG_XFRM_MIGRATE=y
CONFIG_NET_KEY=m
CONFIG_NET_KEY_MIGRATE=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_TUNNEL=m
CONFIG_INET_TUNNEL=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
CONFIG_INET_LRO=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=y
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=y
# 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 is not set
CONFIG_DEFAULT_TCP_CONG="bic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IP_VS is not set
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=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
CONFIG_INET6_XFRM_MODE_TUNNEL=m
CONFIG_INET6_XFRM_MODE_BEET=m
CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
CONFIG_IPV6_SIT=m
CONFIG_IPV6_TUNNEL=m
# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETLABEL is not set
CONFIG_NETWORK_SECMARK=y
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_BRIDGE_NETFILTER=y

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK_ENABLED=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_CT_ACCT=y
CONFIG_NF_CONNTRACK_MARK=y
# CONFIG_NF_CONNTRACK_SECMARK is not set
# CONFIG_NF_CONNTRACK_EVENTS 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=m
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_TRACE=m
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_STATE=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 is not set
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_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_IP_NF_TARGET_SAME=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_TFTP=m
CONFIG_NF_NAT_AMANDA=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_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m

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

#
# Bridge: Netfilter Configuration
#
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_T_NAT=m
CONFIG_BRIDGE_EBT_802_3=m
CONFIG_BRIDGE_EBT_AMONG=m
CONFIG_BRIDGE_EBT_ARP=m
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_LIMIT=m
CONFIG_BRIDGE_EBT_MARK=m
CONFIG_BRIDGE_EBT_PKTTYPE=m
CONFIG_BRIDGE_EBT_STP=m
CONFIG_BRIDGE_EBT_VLAN=m
CONFIG_BRIDGE_EBT_ARPREPLY=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_MARK_T=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
# CONFIG_BRIDGE_EBT_ULOG is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
CONFIG_BRIDGE=m
CONFIG_VLAN_8021Q=m
# CONFIG_DECNET is not set
CONFIG_LLC=m
CONFIG_LLC2=m
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
CONFIG_NET_SCHED=y

#
# Queueing/Scheduling
#
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_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=y
CONFIG_CLS_U32_MARK=y
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_EMATCH_NBYTE=m
CONFIG_NET_EMATCH_U32=m
CONFIG_NET_EMATCH_META=m
CONFIG_NET_EMATCH_TEXT=m
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=m
CONFIG_NET_ACT_GACT=m
CONFIG_GACT_PROB=y
CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_IPT=m
CONFIG_NET_ACT_NAT=m
CONFIG_NET_ACT_PEDIT=m
# CONFIG_NET_ACT_SIMP is not set
# CONFIG_NET_CLS_POLICE is not set
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NET_TCPPROBE is not set
# CONFIG_HAMRADIO is not set
CONFIG_IRDA=m

#
# IrDA protocols
#
CONFIG_IRLAN=m
CONFIG_IRNET=m
CONFIG_IRCOMM=m
CONFIG_IRDA_ULTRA=y

#
# IrDA options
#
CONFIG_IRDA_CACHE_LAST_LSAP=y
CONFIG_IRDA_FAST_RR=y
# CONFIG_IRDA_DEBUG is not set

#
# Infrared-port device drivers
#

#
# SIR device drivers
#
CONFIG_IRTTY_SIR=m

#
# Dongle support
#
CONFIG_DONGLE=y
CONFIG_ESI_DONGLE=m
CONFIG_ACTISYS_DONGLE=m
CONFIG_TEKRAM_DONGLE=m
CONFIG_TOIM3232_DONGLE=m
CONFIG_LITELINK_DONGLE=m
CONFIG_MA600_DONGLE=m
CONFIG_GIRBIL_DONGLE=m
CONFIG_MCP2120_DONGLE=m
CONFIG_OLD_BELKIN_DONGLE=m
CONFIG_ACT200L_DONGLE=m
CONFIG_KINGSUN_DONGLE=m
CONFIG_KSDAZZLE_DONGLE=m
CONFIG_KS959_DONGLE=m

#
# Old SIR device drivers
#

#
# Old Serial dongle support
#

#
# FIR device drivers
#
CONFIG_USB_IRDA=m
CONFIG_SIGMATEL_FIR=m
# CONFIG_NSC_FIR is not set
# CONFIG_WINBOND_FIR is not set
CONFIG_TOSHIBA_FIR=m
# CONFIG_SMC_IRCC_FIR is not set
# CONFIG_ALI_FIR is not set
CONFIG_VLSI_FIR=m
# CONFIG_VIA_FIR is not set
CONFIG_MCS_FIR=m
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_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_HCIVHCI=m
# CONFIG_AF_RXRPC is not set

#
# Wireless
#
CONFIG_CFG80211=m
CONFIG_NL80211=y
CONFIG_WIRELESS_EXT=y
CONFIG_MAC80211=m
CONFIG_MAC80211_RCSIMPLE=y
# CONFIG_MAC80211_DEBUGFS 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_IEEE80211_SOFTMAC=m
# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
CONFIG_RFKILL=m
CONFIG_RFKILL_INPUT=m
# CONFIG_NET_9P is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set
CONFIG_DEBUG_DEVRES=y
# 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 is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_GSC is not set
# CONFIG_PARPORT_AX88796 is not set
CONFIG_PARPORT_1284=y
CONFIG_PARPORT_NOT_PC=y
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set

#
# Protocols
#
# CONFIG_ISAPNP is not set
# CONFIG_PNPBIOS is not set
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_FD=m
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RAM_BLOCKSIZE=4096
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_MISC_DEVICES is not set
CONFIG_EEPROM_93CX6=m
CONFIG_IDE=m
CONFIG_BLK_DEV_IDE=m

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

#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=m
CONFIG_BLK_DEV_PLATFORM=m
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_IDEPNP is not set

#
# PCI IDE chipsets support
#
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
# CONFIG_IDEPCI_PCIBUS_ORDER is not set
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=m
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_IT8213 is not set
# CONFIG_BLK_DEV_IT821X is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
CONFIG_BLK_DEV_SVWKS=m
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_BLK_DEV_TC86C001 is not set
# CONFIG_IDE_ARM is not set

#
# Other IDE chipsets support
#

#
# Note: most of these also require special kernel boot parameters
#
# CONFIG_BLK_DEV_4DRIVES is not set
# CONFIG_BLK_DEV_ALI14XX is not set
# CONFIG_BLK_DEV_DTC2278 is not set
# CONFIG_BLK_DEV_HT6560B is not set
# CONFIG_BLK_DEV_QD65XX is not set
# CONFIG_BLK_DEV_UMC8672 is not set
CONFIG_BLK_DEV_IDEDMA=y
CONFIG_IDE_ARCH_OBSOLETE_INIT=y
# CONFIG_BLK_DEV_HD is not set

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

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=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 is not set
CONFIG_SCSI_WAIT_SCAN=m

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=m
# CONFIG_SCSI_FC_ATTRS is not set
CONFIG_SCSI_ISCSI_ATTRS=m
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=m
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_7000FASST is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 is not set
CONFIG_SCSI_AACRAID=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
CONFIG_AIC7XXX_RESET_DELAY_MS=15000
# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
CONFIG_AIC7XXX_DEBUG_MASK=0
# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
CONFIG_SCSI_AIC7XXX_OLD=m
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC94XX is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_ARCMSR is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_IMM is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_SEAGATE is not set
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_ULTRASTOR is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SRP is not set
# CONFIG_ATA 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=m
# CONFIG_DM_UEVENT is not set
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#
CONFIG_FIREWIRE=m
CONFIG_FIREWIRE_OHCI=m
CONFIG_FIREWIRE_SBP2=m
CONFIG_IEEE1394=m

#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set

#
# Controllers
#
CONFIG_IEEE1394_PCILYNX=m
CONFIG_IEEE1394_OHCI1394=m

#
# Protocols
#
CONFIG_IEEE1394_VIDEO1394=m
CONFIG_IEEE1394_SBP2=m
# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
CONFIG_IEEE1394_ETH1394=m
# CONFIG_IEEE1394_DV1394 is not set
CONFIG_IEEE1394_RAWIO=m
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
CONFIG_IFB=m
CONFIG_DUMMY=m
CONFIG_BONDING=m
CONFIG_MACVLAN=m
CONFIG_EQUALIZER=m
CONFIG_TUN=m
CONFIG_VETH=m
# CONFIG_NET_SB1000 is not set
# CONFIG_IP1000 is not set
# CONFIG_ARCNET is not set
CONFIG_PHYLIB=m

#
# MII PHY device drivers
#
CONFIG_MARVELL_PHY=m
# CONFIG_DAVICOM_PHY is not set
# CONFIG_QSEMI_PHY is not set
# CONFIG_LXT_PHY is not set
# CONFIG_CICADA_PHY is not set
# CONFIG_VITESSE_PHY is not set
# CONFIG_SMSC_PHY is not set
# CONFIG_BROADCOM_PHY is not set
# CONFIG_ICPLUS_PHY is not set
# CONFIG_FIXED_PHY is not set
# CONFIG_MDIO_BITBANG is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_NET_TULIP is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_AC3200 is not set
# CONFIG_APRICOT is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_CS89x0 is not set
# CONFIG_EEPRO100 is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
CONFIG_8139TOO_TUNE_TWISTER=y
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_SC92031 is not set
# CONFIG_NET_POCKET is not set
CONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_E1000E is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SKGE is not set
CONFIG_SKY2=m
# CONFIG_SKY2_DEBUG is not set
# CONFIG_SK98LIN is not set
# CONFIG_VIA_VELOCITY is not set
CONFIG_TIGON3=m
# CONFIG_BNX2 is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set

#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
CONFIG_WLAN_80211=y
# CONFIG_IPW2100 is not set
# CONFIG_IPW2200 is not set
# CONFIG_LIBERTAS is not set
# CONFIG_AIRO is not set
CONFIG_HERMES=m
# CONFIG_PLX_HERMES is not set
# CONFIG_TMD_HERMES is not set
# CONFIG_NORTEL_HERMES is not set
# CONFIG_PCI_HERMES is not set
# CONFIG_ATMEL is not set
# CONFIG_PRISM54 is not set
CONFIG_USB_ZD1201=m
CONFIG_RTL8187=m
CONFIG_ADM8211=m
CONFIG_P54_COMMON=m
CONFIG_P54_USB=m
CONFIG_P54_PCI=m
CONFIG_IWLWIFI=y
# CONFIG_IWLWIFI_DEBUG is not set
CONFIG_IWLWIFI_SENSITIVITY=y
CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y
CONFIG_IWLWIFI_QOS=y
CONFIG_IWL4965=m
CONFIG_IWL3945=m
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
# CONFIG_HOSTAP_PLX is not set
# CONFIG_HOSTAP_PCI is not set
CONFIG_BCM43XX=m
CONFIG_BCM43XX_DEBUG=y
CONFIG_BCM43XX_DMA=y
CONFIG_BCM43XX_PIO=y
CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
# CONFIG_BCM43XX_DMA_MODE is not set
# CONFIG_BCM43XX_PIO_MODE is not set
CONFIG_B43=m
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
# CONFIG_B43_DEBUG is not set
CONFIG_B43_DMA=y
CONFIG_B43_PIO=y
CONFIG_B43_DMA_AND_PIO_MODE=y
# CONFIG_B43_DMA_MODE is not set
# CONFIG_B43_PIO_MODE is not set
CONFIG_B43LEGACY=m
CONFIG_B43LEGACY_PCI_AUTOSELECT=y
CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
CONFIG_B43LEGACY_DEBUG=y
CONFIG_B43LEGACY_DMA=y
CONFIG_B43LEGACY_PIO=y
CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
# CONFIG_B43LEGACY_DMA_MODE is not set
# CONFIG_B43LEGACY_PIO_MODE is not set
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG 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_RT2400PCI=m
# CONFIG_RT2400PCI_RFKILL is not set
CONFIG_RT2500PCI=m
# CONFIG_RT2500PCI_RFKILL is not set
CONFIG_RT61PCI=m
# CONFIG_RT61PCI_RFKILL is not set
CONFIG_RT2500USB=m
# CONFIG_RT73USB is not set
# CONFIG_RT2X00_DEBUG is not set

#
# USB Network Adapters
#
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_CDCETHER=m
CONFIG_USB_NET_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 is not set
CONFIG_USB_KC2190=y
CONFIG_USB_NET_ZAURUS=m
# CONFIG_WAN 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_PPPOL2TP=m
CONFIG_SLIP=m
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLHC=m
CONFIG_SLIP_SMART=y
CONFIG_SLIP_MODE_SLIP6=y
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=m
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

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

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

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_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 is not set
CONFIG_MOUSE_APPLETOUCH=m
# CONFIG_MOUSE_INPORT is not set
# CONFIG_MOUSE_LOGIBM is not set
# CONFIG_MOUSE_PC110PAD is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_WISTRON_BTNS is not set
# CONFIG_INPUT_ATLAS_BTNS is not set
# CONFIG_INPUT_ATI_REMOTE is not set
# CONFIG_INPUT_ATI_REMOTE2 is not set
# CONFIG_INPUT_KEYSPAN_REMOTE is not set
# CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set
CONFIG_INPUT_UINPUT=m

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

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

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=32
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
# CONFIG_SERIAL_8250_FOURPORT is not set
# CONFIG_SERIAL_8250_ACCENT is not set
# CONFIG_SERIAL_8250_BOCA is not set
# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
# CONFIG_SERIAL_8250_HUB6 is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=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=m
CONFIG_HW_RANDOM_INTEL=m
# CONFIG_HW_RANDOM_AMD is not set
# CONFIG_HW_RANDOM_GEODE is not set
# CONFIG_HW_RANDOM_VIA is not set
CONFIG_NVRAM=m
CONFIG_RTC=m
CONFIG_GEN_RTC=m
CONFIG_GEN_RTC_X=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not set
CONFIG_HPET=y
CONFIG_HPET_RTC_IRQ=y
CONFIG_HPET_MMAP=y
CONFIG_HANGCHECK_TIMER=m
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
CONFIG_I2C=m
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=m

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

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

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

#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
CONFIG_W1=m
CONFIG_W1_CON=y

#
# 1-wire Bus Masters
#
CONFIG_W1_MASTER_MATROX=m
CONFIG_W1_MASTER_DS2490=m
CONFIG_W1_MASTER_DS2482=m

#
# 1-wire Slaves
#
CONFIG_W1_SLAVE_THERM=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_DS2433=m
CONFIG_W1_SLAVE_DS2433_CRC=y
CONFIG_W1_SLAVE_DS2760=m
CONFIG_POWER_SUPPLY=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_PDA_POWER=m
CONFIG_BATTERY_DS2760=m
# CONFIG_HWMON is not set
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set

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

#
# ISA-based Watchdog Cards
#
# CONFIG_PCWATCHDOG is not set
# CONFIG_MIXCOMWD is not set
# CONFIG_WDT is not set

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

#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set

#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
CONFIG_SSB=m
CONFIG_SSB_PCIHOST_POSSIBLE=y
CONFIG_SSB_PCIHOST=y
# 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

#
# Multimedia devices
#
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_VIDEO_V4L2=y
# CONFIG_VIDEO_CAPTURE_DRIVERS is not set
# CONFIG_RADIO_ADAPTERS is not set
# CONFIG_DVB_CORE is not set
# CONFIG_DAB is not set

#
# Graphics support
#
CONFIG_AGP=m
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=m
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
# CONFIG_AGP_EFFICEON is not set
CONFIG_DRM=m
# CONFIG_DRM_TDFX is not set
CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
# CONFIG_DRM_I810 is not set
# CONFIG_DRM_I830 is not set
# CONFIG_DRM_I915 is not set
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_SIS is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not set
CONFIG_VGASTATE=m
CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=m
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_DDC=m
CONFIG_FB_CFB_FILLRECT=m
CONFIG_FB_CFB_COPYAREA=m
CONFIG_FB_CFB_IMAGEBLIT=m
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_SYS_FOPS is not set
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set
# 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 is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
CONFIG_FB_VGA16=m
CONFIG_FB_UVESA=m
# CONFIG_FB_HECUBA is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_I810 is not set
# CONFIG_FB_LE80578 is not set
# CONFIG_FB_INTEL is not set
# CONFIG_FB_MATROX is not set
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 is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_CYBLA is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_GEODE is not set
# CONFIG_FB_VIRTUAL is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_CORGI=m
# CONFIG_BACKLIGHT_PROGEAR is not set

#
# 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_MDA_CONSOLE is not set
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 is not set
# CONFIG_FONT_ACORN_8x8 is not set
# CONFIG_FONT_MINI_4x6 is not set
# CONFIG_FONT_SUN8x16 is not set
# 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_RAWMIDI=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_RTCTIMER=m
CONFIG_SND_SEQ_RTCTIMER_DEFAULT=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

#
# Generic devices
#
CONFIG_SND_MPU401_UART=m
CONFIG_SND_OPL3_LIB=m
CONFIG_SND_VX_LIB=m
CONFIG_SND_AC97_CODEC=m
# CONFIG_SND_DUMMY is not set
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
CONFIG_SND_MTS64=m
CONFIG_SND_SERIAL_U16550=m
CONFIG_SND_MPU401=m
CONFIG_SND_PORTMAN2X4=m
CONFIG_SND_SB_COMMON=m
CONFIG_SND_SB16_DSP=m

#
# ISA devices
#
# CONFIG_SND_ADLIB is not set
# CONFIG_SND_AD1816A is not set
# CONFIG_SND_AD1848 is not set
# CONFIG_SND_ALS100 is not set
# CONFIG_SND_AZT2320 is not set
# CONFIG_SND_CMI8330 is not set
# CONFIG_SND_CS4231 is not set
# CONFIG_SND_CS4232 is not set
# CONFIG_SND_CS4236 is not set
# CONFIG_SND_DT019X is not set
# CONFIG_SND_ES968 is not set
# CONFIG_SND_ES1688 is not set
# CONFIG_SND_ES18XX is not set
# CONFIG_SND_SC6000 is not set
# CONFIG_SND_GUSCLASSIC is not set
# CONFIG_SND_GUSEXTREME is not set
# CONFIG_SND_GUSMAX is not set
# CONFIG_SND_INTERWAVE is not set
# CONFIG_SND_INTERWAVE_STB is not set
# CONFIG_SND_OPL3SA2 is not set
# CONFIG_SND_OPTI92X_AD1848 is not set
# CONFIG_SND_OPTI92X_CS4231 is not set
# CONFIG_SND_OPTI93X is not set
# CONFIG_SND_MIRO is not set
# CONFIG_SND_SB8 is not set
# CONFIG_SND_SB16 is not set
# CONFIG_SND_SBAWE is not set
# CONFIG_SND_SGALAXY is not set
# CONFIG_SND_SSCAPE is not set
# CONFIG_SND_WAVEFRONT is not set

#
# PCI devices
#
CONFIG_SND_AD1889=m
CONFIG_SND_ALS300=m
CONFIG_SND_ALS4000=m
CONFIG_SND_ALI5451=m
CONFIG_SND_ATIIXP=m
CONFIG_SND_ATIIXP_MODEM=m
CONFIG_SND_AU8810=m
CONFIG_SND_AU8820=m
CONFIG_SND_AU8830=m
CONFIG_SND_AZT3328=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
CONFIG_SND_CA0106=m
CONFIG_SND_CMIPCI=m
CONFIG_SND_CS4281=m
CONFIG_SND_CS46XX=m
CONFIG_SND_CS46XX_NEW_DSP=y
CONFIG_SND_CS5530=m
CONFIG_SND_CS5535AUDIO=m
CONFIG_SND_DARLA20=m
CONFIG_SND_GINA20=m
CONFIG_SND_LAYLA20=m
CONFIG_SND_DARLA24=m
CONFIG_SND_GINA24=m
CONFIG_SND_LAYLA24=m
CONFIG_SND_MONA=m
CONFIG_SND_MIA=m
CONFIG_SND_ECHO3G=m
CONFIG_SND_INDIGO=m
CONFIG_SND_INDIGOIO=m
CONFIG_SND_INDIGODJ=m
CONFIG_SND_EMU10K1=m
CONFIG_SND_EMU10K1X=m
CONFIG_SND_ENS1370=m
CONFIG_SND_ENS1371=m
CONFIG_SND_ES1938=m
CONFIG_SND_ES1968=m
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X_BOOL=y
CONFIG_SND_FM801_TEA575X=m
CONFIG_SND_HDA_INTEL=m
# CONFIG_SND_HDA_HWDEP is not set
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=m
CONFIG_SND_HDSPM=m
CONFIG_SND_ICE1712=m
CONFIG_SND_ICE1724=m
CONFIG_SND_INTEL8X0=m
CONFIG_SND_INTEL8X0M=m
CONFIG_SND_KORG1212=m
CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=y
CONFIG_SND_MAESTRO3=m
CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=y
CONFIG_SND_MIXART=m
CONFIG_SND_NM256=m
CONFIG_SND_PCXHR=m
CONFIG_SND_RIPTIDE=m
CONFIG_SND_RME32=m
CONFIG_SND_RME96=m
CONFIG_SND_RME9652=m
CONFIG_SND_SONICVIBES=m
CONFIG_SND_TRIDENT=m
CONFIG_SND_VIA82XX=m
CONFIG_SND_VIA82XX_MODEM=m
CONFIG_SND_VX222=m
CONFIG_SND_YMFPCI=m
CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y
CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0

#
# USB devices
#
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_USX2Y=m
CONFIG_SND_USB_CAIAQ=m
CONFIG_SND_USB_CAIAQ_INPUT=y

#
# System on Chip audio support
#
CONFIG_SND_SOC=m

#
# SoC Audio support for SuperH
#

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

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

#
# USB HID Boot Protocol drivers
#
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
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

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

#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_SPLIT_ISO=y
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=y
# 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_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_KARMA=y
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

#
# USB Serial Converter support
#
CONFIG_USB_SERIAL=m
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=m
CONFIG_USB_SERIAL_EDGEPORT=m
CONFIG_USB_SERIAL_EDGEPORT_TI=m
CONFIG_USB_SERIAL_GARMIN=m
CONFIG_USB_SERIAL_IPW=m
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
CONFIG_USB_SERIAL_KEYSPAN=m
CONFIG_USB_SERIAL_KEYSPAN_MPR=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_HP4X=m
CONFIG_USB_SERIAL_SAFE=m
CONFIG_USB_SERIAL_SAFE_PADDED=y
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
CONFIG_USB_EZUSB=y

#
# 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=y
CONFIG_USB_LD=m
CONFIG_USB_TRANCEVIBRATOR=m
CONFIG_USB_IOWARRIOR=m
# CONFIG_USB_TEST is not set

#
# USB DSL modem support
#

#
# USB Gadget Support
#
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 is not set
# CONFIG_USB_GADGET_ATMEL_USBA is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
CONFIG_USB_GADGET_NET2280=y
CONFIG_USB_NET2280=m
# 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 is not set
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=m
# CONFIG_MMC is not set
# CONFIG_NEW_LEDS is not set
CONFIG_INFINIBAND=m
# CONFIG_INFINIBAND_USER_MAD is not set
# CONFIG_INFINIBAND_USER_ACCESS is not set
CONFIG_INFINIBAND_ADDR_TRANS=y
# CONFIG_INFINIBAND_MTHCA is not set
# CONFIG_INFINIBAND_AMSO1100 is not set
# CONFIG_MLX4_INFINIBAND is not set
# CONFIG_INFINIBAND_IPOIB is not set
# CONFIG_INFINIBAND_SRP is not set
# CONFIG_INFINIBAND_ISER is not set
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=m
CONFIG_RTC_CLASS=m

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

#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
# CONFIG_RTC_DRV_M41T80 is not set

#
# SPI RTC drivers
#

#
# Platform RTC drivers
#
CONFIG_RTC_DRV_CMOS=m
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_V3020 is not set

#
# on-CPU RTC drivers
#
# CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_VIRTUALIZATION is not set

#
# Userspace I/O
#
# CONFIG_UIO is not set

#
# Firmware Drivers
#
CONFIG_EDD=m
CONFIG_EFI_VARS=m
CONFIG_DELL_RBU=m
CONFIG_DCDBAS=m
CONFIG_DMIID=y

#
# 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=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
# CONFIG_XFS_QUOTA is not set
CONFIG_XFS_SECURITY=y
CONFIG_XFS_POSIX_ACL=y
# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
CONFIG_ROMFS_FS=m
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_PRINT_QUOTA_WARNING is not set
CONFIG_QFMT_V1=m
CONFIG_QFMT_V2=m
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=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=y
CONFIG_HUGETLB_PAGE=y
CONFIG_CONFIGFS_FS=m

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
CONFIG_ECRYPT_FS=m
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS 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_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=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_XPRT_RDMA=m
CONFIG_SUNRPC_BIND34=y
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_RPCSEC_GSS_SPKM3=m
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
CONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not set
CONFIG_NLS=m
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 is not set
CONFIG_INSTRUMENTATION=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=m
CONFIG_KPROBES=y
CONFIG_MARKERS=y

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
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 is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
CONFIG_DEBUG_SLAB=y
CONFIG_DEBUG_SLAB_LEAK=y
CONFIG_DEBUG_PREEMPT=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
CONFIG_LOCK_STAT=y
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_HIGHMEM=y
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
CONFIG_DEBUG_LIST=y
CONFIG_DEBUG_SG=y
CONFIG_FRAME_POINTER=y
# CONFIG_FORCED_INLINING is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
CONFIG_RCU_TORTURE_TEST=m
CONFIG_LKDTM=m
CONFIG_FAULT_INJECTION=y
CONFIG_FAILSLAB=y
CONFIG_FAIL_PAGE_ALLOC=y
CONFIG_FAIL_MAKE_REQUEST=y
CONFIG_FAULT_INJECTION_DEBUG_FS=y
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
# CONFIG_SAMPLES is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set

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

#
# Security options
#
CONFIG_KEYS=y
CONFIG_KEYS_DEBUG_PROC_KEYS=y
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_CAPABILITIES=y
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
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
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ABLKCIPHER=m
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_HASH=m
CONFIG_CRYPTO_MANAGER=m
CONFIG_CRYPTO_HMAC=m
CONFIG_CRYPTO_XCBC=m
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_XTS=m
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
CONFIG_CRYPTO_TWOFISH_586=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_AES_586=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_CAMELLIA=m
# CONFIG_CRYPTO_TEST is not set
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_PADLOCK=y
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
CONFIG_CRYPTO_DEV_GEODE=m

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
CONFIG_AUDIT_GENERIC=y
CONFIG_ZLIB_INFLATE=m
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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-20 22:40 Linux 2.6.24-rc5 x86 architecture no longer Oopses Trond Myklebust
@ 2007-12-20 22:54 ` Andrew Morton
  2007-12-20 22:56   ` Andrew Morton
                     ` (2 more replies)
  0 siblings, 3 replies; 19+ messages in thread
From: Andrew Morton @ 2007-12-20 22:54 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: tglx, mingo, hpa, linux-kernel

On Thu, 20 Dec 2007 17:40:47 -0500
Trond Myklebust <trond.myklebust@fys.uio.no> wrote:

> I just got the following interesting behaviour. Never mind why the
> original Oops (I was testing some experimental RPC patches), but there
> appears to be a BUG_ON() triggered inside the dump() call.
> 
> Oops occurred with a build based on this afternoon's git tree from Linus
> (v2.6.24-rc5-317-gfaa4877)...
> 
> Cheers
>   Trond
> ---------
> 
> BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
> printing eip: f8bcc8b3 *pde = 00000000 
> BUG: using smp_processor_id() in preemptible [00000001] code: mount.nfs4/2970
> caller is die+0x59/0x202
> Pid: 2970, comm: mount.nfs4 Not tainted 2.6.24-rc5-ga747a088 #1
>  [<c0405170>] show_trace_log_lvl+0x1a/0x2f
>  [<c0405a76>] show_trace+0x12/0x14
>  [<c0405dc6>] dump_stack+0x6c/0x72
>  [<c04e4cd8>] debug_smp_processor_id+0xa0/0xb4
>  [<c0405462>] die+0x59/0x202
>  [<c05b3e7d>] do_page_fault+0x557/0x63e
>  [<c05b252a>] error_code+0x72/0x78
>  [<f8bd821c>] rpcb_create+0x7c/0x84 [sunrpc]
>  [<f8bd8552>] rpcb_register+0x127/0x18c [sunrpc]
>  [<f8bd31d2>] svc_register+0xcf/0x14c [sunrpc]
>  [<f8bd399f>] __svc_create+0x19a/0x1b3 [sunrpc]
>  [<f8bd3b21>] svc_create+0x13/0x15 [sunrpc]
>  [<f8c74beb>] nfs_callback_up+0x71/0x126 [nfs]
>  [<f8c53cfe>] nfs_get_client+0x14e/0x3a2 [nfs]
>  [<f8c53f88>] nfs4_set_client+0x36/0x14f [nfs]
>  [<f8c54739>] nfs4_create_server+0x8e/0x36c [nfs]
>  [<f8c5c6f1>] nfs4_get_sb+0x2ef/0x3f3 [nfs]
>  [<c0477e40>] vfs_kern_mount+0x7d/0xf1
>  [<c0477f02>] do_kern_mount+0x37/0xbd
>  [<c048a6fb>] do_mount+0x5c3/0x61d
>  [<c048a7c4>] sys_mount+0x6f/0xa9
>  [<c04040b2>] sysenter_past_esp+0x5f/0xa5
>  =======================

Yes - I don't know why the smp_processor_id() test has suddenly started
triggering in there.

I have a sledgehammer fix (below) which Ingo went all complicated about and
I assumed he had it in hand, but I can't see any patches anywhere?

I'd expect the kernel to spit that warning and then proceed with the usual
oops report - that's what it did in Miles Lane's case.  But it seems in
your case that the whole oops report simply vanished?


 arch/x86/kernel/traps_32.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff -puN arch/x86/kernel/traps_32.c~i386-use-raw_smp_processor_id-in-die arch/x86/kernel/traps_32.c
--- a/arch/x86/kernel/traps_32.c~i386-use-raw_smp_processor_id-in-die
+++ a/arch/x86/kernel/traps_32.c
@@ -376,7 +376,7 @@ void die(const char * str, struct pt_reg
 		console_verbose();
 		__raw_spin_lock(&die.lock);
 		raw_local_save_flags(flags);
-		die.lock_owner = smp_processor_id();
+		die.lock_owner = raw_smp_processor_id();
 		die.lock_owner_depth = 0;
 		bust_spinlocks(1);
 	}
@@ -636,7 +636,7 @@ static __kprobes void
 mem_parity_error(unsigned char reason, struct pt_regs * regs)
 {
 	printk(KERN_EMERG "Uhhuh. NMI received for unknown reason %02x on "
-		"CPU %d.\n", reason, smp_processor_id());
+		"CPU %d.\n", reason, raw_smp_processor_id());
 	printk(KERN_EMERG "You have some hardware problem, likely on the PCI bus.\n");
 
 #if defined(CONFIG_EDAC)
@@ -684,7 +684,7 @@ unknown_nmi_error(unsigned char reason, 
 	}
 #endif
 	printk(KERN_EMERG "Uhhuh. NMI received for unknown reason %02x on "
-		"CPU %d.\n", reason, smp_processor_id());
+		"CPU %d.\n", reason, raw_smp_processor_id());
 	printk(KERN_EMERG "Do you have a strange power saving mode enabled?\n");
 	if (panic_on_unrecovered_nmi)
                 panic("NMI: Not continuing");
@@ -708,7 +708,7 @@ void __kprobes die_nmi(struct pt_regs *r
 	bust_spinlocks(1);
 	printk(KERN_EMERG "%s", msg);
 	printk(" on CPU%d, ip %08lx, registers:\n",
-		smp_processor_id(), regs->ip);
+		raw_smp_processor_id(), regs->ip);
 	show_registers(regs);
 	console_silent();
 	spin_unlock(&nmi_print_lock);
_


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-20 22:54 ` Andrew Morton
@ 2007-12-20 22:56   ` Andrew Morton
  2007-12-20 23:06     ` Trond Myklebust
  2007-12-21  0:55     ` Rafael J. Wysocki
  2007-12-20 23:04   ` Trond Myklebust
  2007-12-20 23:47   ` Ingo Molnar
  2 siblings, 2 replies; 19+ messages in thread
From: Andrew Morton @ 2007-12-20 22:56 UTC (permalink / raw)
  To: trond.myklebust, tglx, mingo, hpa, linux-kernel; +Cc: Rafael J. Wysocki

On Thu, 20 Dec 2007 14:54:15 -0800
Andrew Morton <akpm@linux-foundation.org> wrote:

> On Thu, 20 Dec 2007 17:40:47 -0500
> Trond Myklebust <trond.myklebust@fys.uio.no> wrote:
> 
> > I just got the following interesting behaviour. Never mind why the
> > original Oops (I was testing some experimental RPC patches), but there
> > appears to be a BUG_ON() triggered inside the dump() call.
> > 
> > Oops occurred with a build based on this afternoon's git tree from Linus
> > (v2.6.24-rc5-317-gfaa4877)...
> > 
> > Cheers
> >   Trond
> > ---------
> > 
> > BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
> > printing eip: f8bcc8b3 *pde = 00000000 
> > BUG: using smp_processor_id() in preemptible [00000001] code: mount.nfs4/2970
> > caller is die+0x59/0x202
> > Pid: 2970, comm: mount.nfs4 Not tainted 2.6.24-rc5-ga747a088 #1
> >  [<c0405170>] show_trace_log_lvl+0x1a/0x2f
> >  [<c0405a76>] show_trace+0x12/0x14
> >  [<c0405dc6>] dump_stack+0x6c/0x72
> >  [<c04e4cd8>] debug_smp_processor_id+0xa0/0xb4
> >  [<c0405462>] die+0x59/0x202
> >  [<c05b3e7d>] do_page_fault+0x557/0x63e
> >  [<c05b252a>] error_code+0x72/0x78
> >  [<f8bd821c>] rpcb_create+0x7c/0x84 [sunrpc]
> >  [<f8bd8552>] rpcb_register+0x127/0x18c [sunrpc]
> >  [<f8bd31d2>] svc_register+0xcf/0x14c [sunrpc]
> >  [<f8bd399f>] __svc_create+0x19a/0x1b3 [sunrpc]
> >  [<f8bd3b21>] svc_create+0x13/0x15 [sunrpc]
> >  [<f8c74beb>] nfs_callback_up+0x71/0x126 [nfs]
> >  [<f8c53cfe>] nfs_get_client+0x14e/0x3a2 [nfs]
> >  [<f8c53f88>] nfs4_set_client+0x36/0x14f [nfs]
> >  [<f8c54739>] nfs4_create_server+0x8e/0x36c [nfs]
> >  [<f8c5c6f1>] nfs4_get_sb+0x2ef/0x3f3 [nfs]
> >  [<c0477e40>] vfs_kern_mount+0x7d/0xf1
> >  [<c0477f02>] do_kern_mount+0x37/0xbd
> >  [<c048a6fb>] do_mount+0x5c3/0x61d
> >  [<c048a7c4>] sys_mount+0x6f/0xa9
> >  [<c04040b2>] sysenter_past_esp+0x5f/0xa5
> >  =======================
> 

btw, I think we should track this as a regression, please.  It may not
strictly be a regression: the same problem might happen under 2.6.23,
although reports are only agaisnt 2.6.24-rc.

But things which impact our ability to get clean oops reports are critical
problems.



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-20 22:54 ` Andrew Morton
  2007-12-20 22:56   ` Andrew Morton
@ 2007-12-20 23:04   ` Trond Myklebust
  2007-12-20 23:47   ` Ingo Molnar
  2 siblings, 0 replies; 19+ messages in thread
From: Trond Myklebust @ 2007-12-20 23:04 UTC (permalink / raw)
  To: Andrew Morton; +Cc: tglx, mingo, hpa, linux-kernel


On Thu, 2007-12-20 at 14:54 -0800, Andrew Morton wrote:
> On Thu, 20 Dec 2007 17:40:47 -0500
> Trond Myklebust <trond.myklebust@fys.uio.no> wrote:
> 
> > I just got the following interesting behaviour. Never mind why the
> > original Oops (I was testing some experimental RPC patches), but there
> > appears to be a BUG_ON() triggered inside the dump() call.
> > 
> > Oops occurred with a build based on this afternoon's git tree from Linus
> > (v2.6.24-rc5-317-gfaa4877)...
> > 
> > Cheers
> >   Trond
> > ---------
> > 
> > BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
> > printing eip: f8bcc8b3 *pde = 00000000 
> > BUG: using smp_processor_id() in preemptible [00000001] code: mount.nfs4/2970
> > caller is die+0x59/0x202
> > Pid: 2970, comm: mount.nfs4 Not tainted 2.6.24-rc5-ga747a088 #1
> >  [<c0405170>] show_trace_log_lvl+0x1a/0x2f
> >  [<c0405a76>] show_trace+0x12/0x14
> >  [<c0405dc6>] dump_stack+0x6c/0x72
> >  [<c04e4cd8>] debug_smp_processor_id+0xa0/0xb4
> >  [<c0405462>] die+0x59/0x202
> >  [<c05b3e7d>] do_page_fault+0x557/0x63e
> >  [<c05b252a>] error_code+0x72/0x78
> >  [<f8bd821c>] rpcb_create+0x7c/0x84 [sunrpc]
> >  [<f8bd8552>] rpcb_register+0x127/0x18c [sunrpc]
> >  [<f8bd31d2>] svc_register+0xcf/0x14c [sunrpc]
> >  [<f8bd399f>] __svc_create+0x19a/0x1b3 [sunrpc]
> >  [<f8bd3b21>] svc_create+0x13/0x15 [sunrpc]
> >  [<f8c74beb>] nfs_callback_up+0x71/0x126 [nfs]
> >  [<f8c53cfe>] nfs_get_client+0x14e/0x3a2 [nfs]
> >  [<f8c53f88>] nfs4_set_client+0x36/0x14f [nfs]
> >  [<f8c54739>] nfs4_create_server+0x8e/0x36c [nfs]
> >  [<f8c5c6f1>] nfs4_get_sb+0x2ef/0x3f3 [nfs]
> >  [<c0477e40>] vfs_kern_mount+0x7d/0xf1
> >  [<c0477f02>] do_kern_mount+0x37/0xbd
> >  [<c048a6fb>] do_mount+0x5c3/0x61d
> >  [<c048a7c4>] sys_mount+0x6f/0xa9
> >  [<c04040b2>] sysenter_past_esp+0x5f/0xa5
> >  =======================
> 
> Yes - I don't know why the smp_processor_id() test has suddenly started
> triggering in there.
> 
> I have a sledgehammer fix (below) which Ingo went all complicated about and
> I assumed he had it in hand, but I can't see any patches anywhere?
> 
> I'd expect the kernel to spit that warning and then proceed with the usual
> oops report - that's what it did in Miles Lane's case.  But it seems in
> your case that the whole oops report simply vanished?

No. I found what I assume is the remainder of the original a couple of
pages further down...

Trond


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-20 22:56   ` Andrew Morton
@ 2007-12-20 23:06     ` Trond Myklebust
  2007-12-21  0:55     ` Rafael J. Wysocki
  1 sibling, 0 replies; 19+ messages in thread
From: Trond Myklebust @ 2007-12-20 23:06 UTC (permalink / raw)
  To: Andrew Morton; +Cc: tglx, mingo, hpa, linux-kernel, Rafael J. Wysocki


On Thu, 2007-12-20 at 14:56 -0800, Andrew Morton wrote:
> btw, I think we should track this as a regression, please.  It may not
> strictly be a regression: the same problem might happen under 2.6.23,
> although reports are only agaisnt 2.6.24-rc.
> 
> But things which impact our ability to get clean oops reports are critical
> problems.

I second that opinion...

Trond


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-20 22:54 ` Andrew Morton
  2007-12-20 22:56   ` Andrew Morton
  2007-12-20 23:04   ` Trond Myklebust
@ 2007-12-20 23:47   ` Ingo Molnar
  2007-12-21  0:02     ` Andrew Morton
  2007-12-21  0:19     ` Andrew Morton
  2 siblings, 2 replies; 19+ messages in thread
From: Ingo Molnar @ 2007-12-20 23:47 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Trond Myklebust, tglx, mingo, hpa, linux-kernel


* Andrew Morton <akpm@linux-foundation.org> wrote:

> Yes - I don't know why the smp_processor_id() test has suddenly 
> started triggering in there.

it's a "must not happen".

here:

>  		__raw_spin_lock(&die.lock);
>  		raw_local_save_flags(flags);
> -		die.lock_owner = smp_processor_id();
> +		die.lock_owner = raw_smp_processor_id();

we just disabled irqs with raw_local_save_flags().


here:

>  mem_parity_error(unsigned char reason, struct pt_regs * regs)
>  {
>  	printk(KERN_EMERG "Uhhuh. NMI received for unknown reason %02x on "
> -		"CPU %d.\n", reason, smp_processor_id());
> +		"CPU %d.\n", reason, raw_smp_processor_id());
>  	printk(KERN_EMERG "You have some hardware problem, likely on the PCI bus.\n");

we are straight into an NMI which has hardirqs disabled.


>  	printk(KERN_EMERG "Uhhuh. NMI received for unknown reason %02x on "
> -		"CPU %d.\n", reason, smp_processor_id());
> +		"CPU %d.\n", reason, raw_smp_processor_id());

ditto.

> @@ -708,7 +708,7 @@ void __kprobes die_nmi(struct pt_regs *r
>  	bust_spinlocks(1);
>  	printk(KERN_EMERG "%s", msg);
>  	printk(" on CPU%d, ip %08lx, registers:\n",
> -		smp_processor_id(), regs->ip);
> +		raw_smp_processor_id(), regs->ip);

same.

it needs to be found out why the preempt_count suddenly went to zero. Is 
task struct corruption out of question?

	Ingo

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-20 23:47   ` Ingo Molnar
@ 2007-12-21  0:02     ` Andrew Morton
  2007-12-21  0:05       ` Ingo Molnar
  2007-12-21  0:19     ` Andrew Morton
  1 sibling, 1 reply; 19+ messages in thread
From: Andrew Morton @ 2007-12-21  0:02 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel

On Fri, 21 Dec 2007 00:47:59 +0100
Ingo Molnar <mingo@elte.hu> wrote:

> it needs to be found out why the preempt_count suddenly went to zero. Is 
> task struct corruption out of question?

Strictly we shouldn't care - we _know_ we've already hit a kernel bug and
who knows, perhaps that buggy code did an unbalanced preempt_disable().  So
make the oops code more robust.  

otoh, we don't want to be hiding a bug.  What piece of code guarantees that
we ender the oops code with preemption disabled?


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21  0:02     ` Andrew Morton
@ 2007-12-21  0:05       ` Ingo Molnar
  0 siblings, 0 replies; 19+ messages in thread
From: Ingo Molnar @ 2007-12-21  0:05 UTC (permalink / raw)
  To: Andrew Morton; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel


* Andrew Morton <akpm@linux-foundation.org> wrote:

> On Fri, 21 Dec 2007 00:47:59 +0100
> Ingo Molnar <mingo@elte.hu> wrote:
> 
> > it needs to be found out why the preempt_count suddenly went to zero. Is 
> > task struct corruption out of question?
> 
> Strictly we shouldn't care - we _know_ we've already hit a kernel bug 
> and who knows, perhaps that buggy code did an unbalanced 
> preempt_disable().  So make the oops code more robust.
> 
> otoh, we don't want to be hiding a bug.  What piece of code guarantees 
> that we ender the oops code with preemption disabled?

i looked at the patch you sent - and there the proof was in the sections 
i quoted.

	Ingo

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-20 23:47   ` Ingo Molnar
  2007-12-21  0:02     ` Andrew Morton
@ 2007-12-21  0:19     ` Andrew Morton
  2007-12-21  0:30       ` Ingo Molnar
  1 sibling, 1 reply; 19+ messages in thread
From: Andrew Morton @ 2007-12-21  0:19 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel

On Fri, 21 Dec 2007 00:47:59 +0100
Ingo Molnar <mingo@elte.hu> wrote:

> >  		__raw_spin_lock(&die.lock);
> >  		raw_local_save_flags(flags);
> > -		die.lock_owner = smp_processor_id();
> > +		die.lock_owner = raw_smp_processor_id();
> 
> we just disabled irqs with raw_local_save_flags().

<chases x86 spaghetti for a while>

raw_local_save_flags() doesn't disable interrupts?

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21  0:19     ` Andrew Morton
@ 2007-12-21  0:30       ` Ingo Molnar
  2007-12-21  0:40         ` Andrew Morton
  0 siblings, 1 reply; 19+ messages in thread
From: Ingo Molnar @ 2007-12-21  0:30 UTC (permalink / raw)
  To: Andrew Morton; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel


* Andrew Morton <akpm@linux-foundation.org> wrote:

> On Fri, 21 Dec 2007 00:47:59 +0100
> Ingo Molnar <mingo@elte.hu> wrote:
> 
> > >  		__raw_spin_lock(&die.lock);
> > >  		raw_local_save_flags(flags);
> > > -		die.lock_owner = smp_processor_id();
> > > +		die.lock_owner = raw_smp_processor_id();
> > 
> > we just disabled irqs with raw_local_save_flags().
> 
> <chases x86 spaghetti for a while>
> 
> raw_local_save_flags() doesn't disable interrupts?

argh. Indeed! (I wanted us to fix that misleading name eons ago, to 
*_save_flags_only(), but some stupid bikeshed painting discussion 
prevented it from ever happening.)

that should have been raw_local_irq_save(flags)!

but ... why is it done like that? Why do we first take the die.lock and 
disable interrupts afterwards? It's highly weird. 64-bit does it all 
correctly in traps_64.c, so unification will help us out - but so far 
perhaps the patch below we should do in 2.6.24?

	Ingo

------------>
Subject: x86: fix die() to not be preemptible
From: Ingo Molnar <mingo@elte.hu>

Andrew "Eagle Eye" Morton noticed that we use raw_local_save_flags()
instead of raw_local_irq_save(flags) in die().

do it correctly - and first disable interrupts, then take the spinlock.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/kernel/traps_32.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

Index: linux-x86.q/arch/x86/kernel/traps_32.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/traps_32.c
+++ linux-x86.q/arch/x86/kernel/traps_32.c
@@ -373,14 +373,13 @@ void die(const char * str, struct pt_reg
 
 	if (die.lock_owner != raw_smp_processor_id()) {
 		console_verbose();
+		raw_local_irq_save(flags);
 		__raw_spin_lock(&die.lock);
-		raw_local_save_flags(flags);
 		die.lock_owner = smp_processor_id();
 		die.lock_owner_depth = 0;
 		bust_spinlocks(1);
-	}
-	else
-		raw_local_save_flags(flags);
+	} else
+		raw_local_irq_save(flags);
 
 	if (++die.lock_owner_depth < 3) {
 		unsigned long esp;

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21  0:30       ` Ingo Molnar
@ 2007-12-21  0:40         ` Andrew Morton
  2007-12-21  0:44           ` Ingo Molnar
  2007-12-21 10:27           ` Ingo Molnar
  0 siblings, 2 replies; 19+ messages in thread
From: Andrew Morton @ 2007-12-21  0:40 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel

On Fri, 21 Dec 2007 01:30:35 +0100
Ingo Molnar <mingo@elte.hu> wrote:

> 
> * Andrew Morton <akpm@linux-foundation.org> wrote:
> 
> > On Fri, 21 Dec 2007 00:47:59 +0100
> > Ingo Molnar <mingo@elte.hu> wrote:
> > 
> > > >  		__raw_spin_lock(&die.lock);
> > > >  		raw_local_save_flags(flags);
> > > > -		die.lock_owner = smp_processor_id();
> > > > +		die.lock_owner = raw_smp_processor_id();
> > > 
> > > we just disabled irqs with raw_local_save_flags().
> > 
> > <chases x86 spaghetti for a while>
> > 
> > raw_local_save_flags() doesn't disable interrupts?
> 
> argh. Indeed! (I wanted us to fix that misleading name eons ago, to 

The naming of those functions is truly awful and it goes back to year 0.

> *_save_flags_only(), but some stupid bikeshed painting discussion 
> prevented it from ever happening.)

local_read_flags().

> that should have been raw_local_irq_save(flags)!

So raw_local_save_flags() and raw_local_irq_save() have different semantics.

omigawd, what have we done?

> but ... why is it done like that? Why do we first take the die.lock and 
> disable interrupts afterwards? It's highly weird. 64-bit does it all 
> correctly in traps_64.c, so unification will help us out - but so far 
> perhaps the patch below we should do in 2.6.24?
> 
> 	Ingo
> 
> ------------>
> Subject: x86: fix die() to not be preemptible
> From: Ingo Molnar <mingo@elte.hu>
> 
> Andrew "Eagle Eye" Morton noticed that we use raw_local_save_flags()
> instead of raw_local_irq_save(flags) in die().
> 
> do it correctly - and first disable interrupts, then take the spinlock.
> 
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
> ---
>  arch/x86/kernel/traps_32.c |    7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> Index: linux-x86.q/arch/x86/kernel/traps_32.c
> ===================================================================
> --- linux-x86.q.orig/arch/x86/kernel/traps_32.c
> +++ linux-x86.q/arch/x86/kernel/traps_32.c
> @@ -373,14 +373,13 @@ void die(const char * str, struct pt_reg
>  
>  	if (die.lock_owner != raw_smp_processor_id()) {
>  		console_verbose();
> +		raw_local_irq_save(flags);
>  		__raw_spin_lock(&die.lock);
> -		raw_local_save_flags(flags);
>  		die.lock_owner = smp_processor_id();
>  		die.lock_owner_depth = 0;
>  		bust_spinlocks(1);
> -	}
> -	else
> -		raw_local_save_flags(flags);
> +	} else
> +		raw_local_irq_save(flags);
>  
>  	if (++die.lock_owner_depth < 3) {
>  		unsigned long esp;

Looks sane.

I suppose there's some reason why we can't just use spin_lock_irqsave(). 
But that reason was either so obvious or so unimportant that a comment was
not needed.  Sigh.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21  0:40         ` Andrew Morton
@ 2007-12-21  0:44           ` Ingo Molnar
  2007-12-21 10:27           ` Ingo Molnar
  1 sibling, 0 replies; 19+ messages in thread
From: Ingo Molnar @ 2007-12-21  0:44 UTC (permalink / raw)
  To: Andrew Morton; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel


* Andrew Morton <akpm@linux-foundation.org> wrote:

> > +		raw_local_irq_save(flags);
> >  		__raw_spin_lock(&die.lock);
> > -		raw_local_save_flags(flags);
> >  		die.lock_owner = smp_processor_id();
> >  		die.lock_owner_depth = 0;
> >  		bust_spinlocks(1);
> > -	}
> > -	else
> > -		raw_local_save_flags(flags);
> > +	} else
> > +		raw_local_irq_save(flags);
> >  
> >  	if (++die.lock_owner_depth < 3) {
> >  		unsigned long esp;
> 
> Looks sane.
> 
> I suppose there's some reason why we can't just use 
> spin_lock_irqsave(). But that reason was either so obvious or so 
> unimportant that a comment was not needed.  Sigh.

bug was introduced via:

  commit 39743c9ef717fd4f2b5583f010115c5f2482b8ae
  Author: Andi Kleen <ak@suse.de>
  Date:   Fri Oct 19 20:35:03 2007 +0200

      x86: use raw locks during oopses

-               spin_lock_irqsave(&die.lock, flags);
+               __raw_spin_lock(&die.lock);
+               raw_local_save_flags(flags);

that is not a correct open-coding of spin_lock_irqsave(): both the 
ordering is wrong (irqs should be disabled _first_), and the wrong 
flags-saving API was used.

so this is a post-2.6.23 regression and the fix is (now) obvious.

	Ingo

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-20 22:56   ` Andrew Morton
  2007-12-20 23:06     ` Trond Myklebust
@ 2007-12-21  0:55     ` Rafael J. Wysocki
  2007-12-21 10:19       ` Ingo Molnar
  1 sibling, 1 reply; 19+ messages in thread
From: Rafael J. Wysocki @ 2007-12-21  0:55 UTC (permalink / raw)
  To: Andrew Morton; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel

On Thursday, 20 of December 2007, Andrew Morton wrote:
> On Thu, 20 Dec 2007 14:54:15 -0800
> Andrew Morton <akpm@linux-foundation.org> wrote:
> 
> > On Thu, 20 Dec 2007 17:40:47 -0500
> > Trond Myklebust <trond.myklebust@fys.uio.no> wrote:
> > 
> > > I just got the following interesting behaviour. Never mind why the
> > > original Oops (I was testing some experimental RPC patches), but there
> > > appears to be a BUG_ON() triggered inside the dump() call.
> > > 
> > > Oops occurred with a build based on this afternoon's git tree from Linus
> > > (v2.6.24-rc5-317-gfaa4877)...
> > > 
> > > Cheers
> > >   Trond
> > > ---------
> > > 
> > > BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
> > > printing eip: f8bcc8b3 *pde = 00000000 
> > > BUG: using smp_processor_id() in preemptible [00000001] code: mount.nfs4/2970
> > > caller is die+0x59/0x202
> > > Pid: 2970, comm: mount.nfs4 Not tainted 2.6.24-rc5-ga747a088 #1
> > >  [<c0405170>] show_trace_log_lvl+0x1a/0x2f
> > >  [<c0405a76>] show_trace+0x12/0x14
> > >  [<c0405dc6>] dump_stack+0x6c/0x72
> > >  [<c04e4cd8>] debug_smp_processor_id+0xa0/0xb4
> > >  [<c0405462>] die+0x59/0x202
> > >  [<c05b3e7d>] do_page_fault+0x557/0x63e
> > >  [<c05b252a>] error_code+0x72/0x78
> > >  [<f8bd821c>] rpcb_create+0x7c/0x84 [sunrpc]
> > >  [<f8bd8552>] rpcb_register+0x127/0x18c [sunrpc]
> > >  [<f8bd31d2>] svc_register+0xcf/0x14c [sunrpc]
> > >  [<f8bd399f>] __svc_create+0x19a/0x1b3 [sunrpc]
> > >  [<f8bd3b21>] svc_create+0x13/0x15 [sunrpc]
> > >  [<f8c74beb>] nfs_callback_up+0x71/0x126 [nfs]
> > >  [<f8c53cfe>] nfs_get_client+0x14e/0x3a2 [nfs]
> > >  [<f8c53f88>] nfs4_set_client+0x36/0x14f [nfs]
> > >  [<f8c54739>] nfs4_create_server+0x8e/0x36c [nfs]
> > >  [<f8c5c6f1>] nfs4_get_sb+0x2ef/0x3f3 [nfs]
> > >  [<c0477e40>] vfs_kern_mount+0x7d/0xf1
> > >  [<c0477f02>] do_kern_mount+0x37/0xbd
> > >  [<c048a6fb>] do_mount+0x5c3/0x61d
> > >  [<c048a7c4>] sys_mount+0x6f/0xa9
> > >  [<c04040b2>] sysenter_past_esp+0x5f/0xa5
> > >  =======================
> > 
> 
> btw, I think we should track this as a regression, please.

Added, http://bugzilla.kernel.org/show_bug.cgi?id=9610, thanks.


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21  0:55     ` Rafael J. Wysocki
@ 2007-12-21 10:19       ` Ingo Molnar
  0 siblings, 0 replies; 19+ messages in thread
From: Ingo Molnar @ 2007-12-21 10:19 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Andrew Morton, trond.myklebust, tglx, mingo, hpa, linux-kernel


* Rafael J. Wysocki <rjw@sisk.pl> wrote:

> > btw, I think we should track this as a regression, please.
> 
> Added, http://bugzilla.kernel.org/show_bug.cgi?id=9610, thanks.

fixed by:

 commit c0a698b7443a9fce76b0a849f06c45ac78f3b0a0
 Author: Ingo Molnar <mingo@elte.hu>
 Date:   Fri Dec 21 01:27:19 2007 +0100

    x86: fix die() to not be preemptible

    Andrew "Eagle Eye" Morton noticed that we use raw_local_save_flags()
    instead of raw_local_irq_save(flags) in die(). This allows the
    preemption of oopsing contexts - which is highly undesirable. It also
    causes CONFIG_DEBUG_PREEMPT to complain, as reported by Miles Lane.


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21  0:40         ` Andrew Morton
  2007-12-21  0:44           ` Ingo Molnar
@ 2007-12-21 10:27           ` Ingo Molnar
  2007-12-21 10:42             ` Andrew Morton
  1 sibling, 1 reply; 19+ messages in thread
From: Ingo Molnar @ 2007-12-21 10:27 UTC (permalink / raw)
  To: Andrew Morton; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel


* Andrew Morton <akpm@linux-foundation.org> wrote:

> > > raw_local_save_flags() doesn't disable interrupts?
> > 
> > argh. Indeed! (I wanted us to fix that misleading name eons ago, to 
> 
> The naming of those functions is truly awful and it goes back to year 0.
> 
> > *_save_flags_only(), but some stupid bikeshed painting discussion 
> > prevented it from ever happening.)
> 
> local_read_flags().
> 
> > that should have been raw_local_irq_save(flags)!
> 
> So raw_local_save_flags() and raw_local_irq_save() have different semantics.
> 
> omigawd, what have we done?

i really tried to get this fixed years ago - but did not think of 
local_read_flags as a solution. The patch below fixes this.

(if it's too burdensome to carry right now then i can regenerate this 
patch in 30 seconds in the 2.6.25 merge window - but please remind me 
then. Perhaps put in a patch into your queue that adds a comment to 
remind me :-) )

	Ingo

-------------->
Subject: rename: local_save_flags => local_read_flags
From: Ingo Molnar <mingo@elte.hu>

The bug in commit c0a698b744 could have been avoided if
local_save_flags and local_irq_save wasnt so similarly
named. The syntax is similar as well.

rename all local_save_flags variants to local_read_flags,
as suggested by Andrew Morton.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 Documentation/cli-sti-removal.txt  |    4 ++--
 arch/cris/arch-v10/mm/fault.c      |    2 +-
 arch/cris/arch-v10/mm/tlb.c        |    2 +-
 arch/cris/arch-v32/kernel/time.c   |    2 +-
 arch/cris/arch-v32/kernel/traps.c  |    2 +-
 arch/powerpc/kernel/traps.c        |    2 +-
 arch/x86/kernel/apm_32.c           |    2 +-
 arch/x86/kernel/io_apic_32.c       |    2 +-
 arch/x86/kernel/io_apic_64.c       |    2 +-
 arch/x86/kernel/setup64.c          |    2 +-
 arch/xtensa/mm/tlb.c               |    6 +++---
 drivers/block/ataflop.c            |    2 +-
 drivers/scsi/arm/acornscsi.c       |    2 +-
 drivers/scsi/atari_NCR5380.c       |    2 +-
 drivers/scsi/sun3_NCR5380.c        |    2 +-
 drivers/serial/68328serial.c       |    2 +-
 drivers/serial/crisv10.c           |    2 +-
 drivers/serial/mcfserial.c         |    2 +-
 include/asm-alpha/system.h         |    2 +-
 include/asm-arm/irqflags.h         |    4 ++--
 include/asm-avr32/irqflags.h       |   10 +++++-----
 include/asm-blackfin/system.h      |    4 ++--
 include/asm-cris/arch-v10/system.h |    4 ++--
 include/asm-cris/arch-v32/system.h |    4 ++--
 include/asm-frv/system.h           |    8 ++++----
 include/asm-h8300/system.h         |    2 +-
 include/asm-ia64/system.h          |    6 +++---
 include/asm-m32r/system.h          |    4 ++--
 include/asm-m68k/system.h          |    6 +++---
 include/asm-m68knommu/system.h     |    6 +++---
 include/asm-mips/irqflags.h        |    6 +++---
 include/asm-parisc/system.h        |    4 ++--
 include/asm-powerpc/hw_irq.h       |    4 ++--
 include/asm-powerpc/irqflags.h     |    2 +-
 include/asm-powerpc/spinlock.h     |    2 +-
 include/asm-s390/irqflags.h        |    2 +-
 include/asm-sh/irqflags.h          |    8 ++++----
 include/asm-sh64/system.h          |    4 ++--
 include/asm-sparc/irqflags.h       |    2 +-
 include/asm-sparc64/irqflags.h     |   10 +++++-----
 include/asm-um/system-generic.h    |    8 ++++----
 include/asm-v850/system.h          |    6 +++---
 include/asm-x86/irqflags.h         |   12 ++++++------
 include/asm-x86/paravirt.h         |    4 ++--
 include/asm-xtensa/system.h        |    4 ++--
 include/linux/ide.h                |    2 +-
 include/linux/interrupt.h          |    2 +-
 include/linux/irqflags.h           |    4 ++--
 48 files changed, 94 insertions(+), 94 deletions(-)

Index: linux-x86.q/Documentation/cli-sti-removal.txt
===================================================================
--- linux-x86.q.orig/Documentation/cli-sti-removal.txt
+++ linux-x86.q/Documentation/cli-sti-removal.txt
@@ -96,7 +96,7 @@ released.
 drivers that want to disable local interrupts (interrupts on the
 current CPU), can use the following five macros:
 
-  local_irq_disable(), local_irq_enable(), local_save_flags(flags),
+  local_irq_disable(), local_irq_enable(), local_read_flags(flags),
   local_irq_save(flags), local_irq_restore(flags)
 
 but beware, their meaning and semantics are much simpler, far from
@@ -107,7 +107,7 @@ SMP meaning:
 
     local_irq_enable()        => turn local IRQs on
 
-    local_save_flags(flags)   => save the current IRQ state into flags. The
+    local_read_flags(flags)   => save the current IRQ state into flags. The
                                  state can be on or off. (on some
                                  architectures there's even more bits in it.)
 
Index: linux-x86.q/arch/cris/arch-v10/mm/fault.c
===================================================================
--- linux-x86.q.orig/arch/cris/arch-v10/mm/fault.c
+++ linux-x86.q/arch/cris/arch-v10/mm/fault.c
@@ -80,7 +80,7 @@ handle_mmu_bus_fault(struct pt_regs *reg
 	 * do_page_fault may have flushed the TLB so we have to restore
 	 * the MMU registers.
 	 */
-	local_save_flags(flags);
+	local_read_flags(flags);
 	local_irq_disable();
 	pmd = (pmd_t *)(pgd + pgd_index(address));
 	if (pmd_none(*pmd))
Index: linux-x86.q/arch/cris/arch-v10/mm/tlb.c
===================================================================
--- linux-x86.q.orig/arch/cris/arch-v10/mm/tlb.c
+++ linux-x86.q/arch/cris/arch-v10/mm/tlb.c
@@ -147,7 +147,7 @@ dump_tlb_all(void)
 	
 	printk("TLB dump. LO is: pfn | reserved | global | valid | kernel | we  |\n");
 
-	local_save_flags(flags);
+	local_read_flags(flags);
 	local_irq_disable();
 	for(i = 0; i < NUM_TLB_ENTRIES; i++) {
 		*R_TLB_SELECT = ( IO_FIELD(R_TLB_SELECT, index, i) );
Index: linux-x86.q/arch/cris/arch-v32/kernel/time.c
===================================================================
--- linux-x86.q.orig/arch/cris/arch-v32/kernel/time.c
+++ linux-x86.q/arch/cris/arch-v32/kernel/time.c
@@ -336,7 +336,7 @@ time_init(void)
 	   driver or infrastructure support yet.  */
         {
           unsigned long flags;
-          local_save_flags(flags);
+          local_read_flags(flags);
           flags |= (1<<30); /* NMI M flag is at bit 30 */
           local_irq_restore(flags);
         }
Index: linux-x86.q/arch/cris/arch-v32/kernel/traps.c
===================================================================
--- linux-x86.q.orig/arch/cris/arch-v32/kernel/traps.c
+++ linux-x86.q/arch/cris/arch-v32/kernel/traps.c
@@ -153,7 +153,7 @@ die_if_kernel(const char *str, struct pt
 void arch_enable_nmi(void)
 {
 	unsigned long flags;
-	local_save_flags(flags);
+	local_read_flags(flags);
 	flags |= (1<<30); /* NMI M flag is at bit 30 */
 	local_irq_restore(flags);
 }
Index: linux-x86.q/arch/powerpc/kernel/traps.c
===================================================================
--- linux-x86.q.orig/arch/powerpc/kernel/traps.c
+++ linux-x86.q/arch/powerpc/kernel/traps.c
@@ -122,7 +122,7 @@ int die(const char *str, struct pt_regs 
 		if (machine_is(powermac))
 			pmac_backlight_unblank();
 	} else {
-		local_save_flags(flags);
+		local_read_flags(flags);
 	}
 
 	if (++die.lock_owner_depth < 3) {
Index: linux-x86.q/arch/x86/kernel/apm_32.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/apm_32.c
+++ linux-x86.q/arch/x86/kernel/apm_32.c
@@ -535,7 +535,7 @@ static inline void apm_restore_cpus(cpum
 static inline unsigned long __apm_irq_save(void)
 {
 	unsigned long flags;
-	local_save_flags(flags);
+	local_read_flags(flags);
 	if (apm_info.allow_ints) {
 		if (irqs_disabled_flags(flags))
 			local_irq_enable();
Index: linux-x86.q/arch/x86/kernel/io_apic_32.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/io_apic_32.c
+++ linux-x86.q/arch/x86/kernel/io_apic_32.c
@@ -1885,7 +1885,7 @@ static int __init timer_irq_works(void)
 	if (no_timer_check)
 		return 1;
 
-	local_save_flags(flags);
+	local_read_flags(flags);
 	local_irq_enable();
 	/* Let ten ticks pass... */
 	mdelay((10 * 1000) / HZ);
Index: linux-x86.q/arch/x86/kernel/io_apic_64.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/io_apic_64.c
+++ linux-x86.q/arch/x86/kernel/io_apic_64.c
@@ -1284,7 +1284,7 @@ static int __init timer_irq_works(void)
 	unsigned long t1 = jiffies;
 	unsigned long flags;
 
-	local_save_flags(flags);
+	local_read_flags(flags);
 	local_irq_enable();
 	/* Let ten ticks pass... */
 	mdelay((10 * 1000) / HZ);
Index: linux-x86.q/arch/x86/kernel/setup64.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/setup64.c
+++ linux-x86.q/arch/x86/kernel/setup64.c
@@ -292,5 +292,5 @@ void __cpuinit cpu_init (void)
 
 	fpu_init(); 
 
-	raw_local_save_flags(kernel_eflags);
+	raw_local_read_flags(kernel_eflags);
 }
Index: linux-x86.q/arch/xtensa/mm/tlb.c
===================================================================
--- linux-x86.q.orig/arch/xtensa/mm/tlb.c
+++ linux-x86.q/arch/xtensa/mm/tlb.c
@@ -65,7 +65,7 @@ void flush_tlb_mm(struct mm_struct *mm)
 {
 	if (mm == current->active_mm) {
 		int flags;
-		local_save_flags(flags);
+		local_read_flags(flags);
 		__get_new_mmu_context(mm);
 		__load_mmu_context(mm);
 		local_irq_restore(flags);
@@ -95,7 +95,7 @@ void flush_tlb_range (struct vm_area_str
 	printk("[tlbrange<%02lx,%08lx,%08lx>]\n",
 			(unsigned long)mm->context, start, end);
 #endif
-	local_save_flags(flags);
+	local_read_flags(flags);
 
 	if (end-start + (PAGE_SIZE-1) <= _TLB_ENTRIES << PAGE_SHIFT) {
 		int oldpid = get_rasid_register();
@@ -129,7 +129,7 @@ void flush_tlb_page (struct vm_area_stru
 	if(mm->context == NO_CONTEXT)
 		return;
 
-	local_save_flags(flags);
+	local_read_flags(flags);
 
        	oldpid = get_rasid_register();
 
Index: linux-x86.q/drivers/block/ataflop.c
===================================================================
--- linux-x86.q.orig/drivers/block/ataflop.c
+++ linux-x86.q/drivers/block/ataflop.c
@@ -1476,7 +1476,7 @@ void do_fd_request(struct request_queue 
 	stdma_lock(floppy_irq, NULL);
 
 	atari_disable_irq( IRQ_MFP_FDC );
-	local_save_flags(flags);	/* The request function is called with ints
+	local_read_flags(flags);	/* The request function is called with ints
 	local_irq_disable();		 * disabled... so must save the IPL for later */ 
 	redo_fd_request();
 	local_irq_restore(flags);
Index: linux-x86.q/drivers/scsi/arm/acornscsi.c
===================================================================
--- linux-x86.q.orig/drivers/scsi/arm/acornscsi.c
+++ linux-x86.q/drivers/scsi/arm/acornscsi.c
@@ -316,7 +316,7 @@ acornscsi_csdelay(unsigned int cs)
 
     target_jiffies = jiffies + 1 + cs * HZ / 100;
 
-    local_save_flags(flags);
+    local_read_flags(flags);
     local_irq_enable();
 
     while (time_before(jiffies, target_jiffies)) barrier();
Index: linux-x86.q/drivers/scsi/atari_NCR5380.c
===================================================================
--- linux-x86.q.orig/drivers/scsi/atari_NCR5380.c
+++ linux-x86.q/drivers/scsi/atari_NCR5380.c
@@ -1066,7 +1066,7 @@ static void NCR5380_main(struct work_str
 		return;
 	main_running = 1;
 
-	local_save_flags(flags);
+	local_read_flags(flags);
 	do {
 		local_irq_disable();	/* Freeze request queues */
 		done = 1;
Index: linux-x86.q/drivers/scsi/sun3_NCR5380.c
===================================================================
--- linux-x86.q.orig/drivers/scsi/sun3_NCR5380.c
+++ linux-x86.q/drivers/scsi/sun3_NCR5380.c
@@ -1063,7 +1063,7 @@ static void NCR5380_main (struct work_st
     	return;
     main_running = 1;
 
-    local_save_flags(flags);
+    local_read_flags(flags);
     do {
 	local_irq_disable(); /* Freeze request queues */
 	done = 1;
Index: linux-x86.q/drivers/serial/68328serial.c
===================================================================
--- linux-x86.q.orig/drivers/serial/68328serial.c
+++ linux-x86.q/drivers/serial/68328serial.c
@@ -746,7 +746,7 @@ static int rs_write(struct tty_struct * 
 	if (!tty || !info->xmit_buf)
 		return 0;
 
-	local_save_flags(flags);
+	local_read_flags(flags);
 	while (1) {
 		local_irq_disable();		
 		c = min_t(int, count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
Index: linux-x86.q/drivers/serial/crisv10.c
===================================================================
--- linux-x86.q.orig/drivers/serial/crisv10.c
+++ linux-x86.q/drivers/serial/crisv10.c
@@ -3166,7 +3166,7 @@ static int rs_raw_write(struct tty_struc
 	SIMCOUT(buf, count);
 	return count;
 #endif
-	local_save_flags(flags);
+	local_read_flags(flags);
 	DFLOW(DEBUG_LOG(info->line, "write count %i ", count));
 	DFLOW(DEBUG_LOG(info->line, "ldisc %i\n", tty->ldisc.chars_in_buffer(tty)));
 
Index: linux-x86.q/drivers/serial/mcfserial.c
===================================================================
--- linux-x86.q.orig/drivers/serial/mcfserial.c
+++ linux-x86.q/drivers/serial/mcfserial.c
@@ -770,7 +770,7 @@ static int mcfrs_write(struct tty_struct
 	if (!tty || !info->xmit_buf)
 		return 0;
 	
-	local_save_flags(flags);
+	local_read_flags(flags);
 	while (1) {
 		local_irq_disable();		
 		c = min(count, (int) min(((int)SERIAL_XMIT_SIZE) - info->xmit_cnt - 1,
Index: linux-x86.q/include/asm-alpha/system.h
===================================================================
--- linux-x86.q.orig/include/asm-alpha/system.h
+++ linux-x86.q/include/asm-alpha/system.h
@@ -281,7 +281,7 @@ extern int __min_ipl;
 
 #define local_irq_disable()			do { setipl(IPL_MAX); barrier(); } while(0)
 #define local_irq_enable()			do { barrier(); setipl(IPL_MIN); } while(0)
-#define local_save_flags(flags)	((flags) = rdps())
+#define local_read_flags(flags)	((flags) = rdps())
 #define local_irq_save(flags)	do { (flags) = swpipl(IPL_MAX); barrier(); } while(0)
 #define local_irq_restore(flags)	do { barrier(); setipl(flags); barrier(); } while(0)
 
Index: linux-x86.q/include/asm-arm/irqflags.h
===================================================================
--- linux-x86.q.orig/include/asm-arm/irqflags.h
+++ linux-x86.q/include/asm-arm/irqflags.h
@@ -106,10 +106,10 @@
 /*
  * Save the current interrupt enable state.
  */
-#define raw_local_save_flags(x)					\
+#define raw_local_read_flags(x)					\
 	({							\
 	__asm__ __volatile__(					\
-	"mrs	%0, cpsr		@ local_save_flags"	\
+	"mrs	%0, cpsr		@ local_read_flags"	\
 	: "=r" (x) : : "memory", "cc");				\
 	})
 
Index: linux-x86.q/include/asm-avr32/irqflags.h
===================================================================
--- linux-x86.q.orig/include/asm-avr32/irqflags.h
+++ linux-x86.q/include/asm-avr32/irqflags.h
@@ -10,13 +10,13 @@
 
 #include <asm/sysreg.h>
 
-static inline unsigned long __raw_local_save_flags(void)
+static inline unsigned long __raw_local_read_flags(void)
 {
 	return sysreg_read(SR);
 }
 
-#define raw_local_save_flags(x)					\
-	do { (x) = __raw_local_save_flags(); } while (0)
+#define raw_local_read_flags(x)					\
+	do { (x) = __raw_local_read_flags(); } while (0)
 
 /*
  * This will restore ALL status register flags, not only the interrupt
@@ -48,14 +48,14 @@ static inline int raw_irqs_disabled_flag
 
 static inline int raw_irqs_disabled(void)
 {
-	unsigned long flags = __raw_local_save_flags();
+	unsigned long flags = __raw_local_read_flags();
 
 	return raw_irqs_disabled_flags(flags);
 }
 
 static inline unsigned long __raw_local_irq_save(void)
 {
-	unsigned long flags = __raw_local_save_flags();
+	unsigned long flags = __raw_local_read_flags();
 
 	raw_local_irq_disable();
 
Index: linux-x86.q/include/asm-blackfin/system.h
===================================================================
--- linux-x86.q.orig/include/asm-blackfin/system.h
+++ linux-x86.q/include/asm-blackfin/system.h
@@ -92,7 +92,7 @@ extern unsigned long irq_flags;
 	)
 #endif
 
-#define local_save_flags(x) \
+#define local_read_flags(x) \
 	__asm__ __volatile__( \
 		"cli %0;" \
 		"sti %0;" \
@@ -117,7 +117,7 @@ extern unsigned long irq_flags;
 #define	irqs_disabled()				\
 ({						\
 	unsigned long flags;			\
-	local_save_flags(flags);		\
+	local_read_flags(flags);		\
 	!irqs_enabled_from_flags(flags);	\
 })
 
Index: linux-x86.q/include/asm-cris/arch-v10/system.h
===================================================================
--- linux-x86.q.orig/include/asm-cris/arch-v10/system.h
+++ linux-x86.q/include/asm-cris/arch-v10/system.h
@@ -45,7 +45,7 @@ struct __xchg_dummy { unsigned long a[10
 #define __xg(x) ((struct __xchg_dummy *)(x))
 
 /* interrupt control.. */
-#define local_save_flags(x)	__asm__ __volatile__ ("move $ccr,%0" : "=rm" (x) : : "memory");
+#define local_read_flags(x)	__asm__ __volatile__ ("move $ccr,%0" : "=rm" (x) : : "memory");
 #define local_irq_restore(x) 	__asm__ __volatile__ ("move %0,$ccr" : : "rm" (x) : "memory");
 #define local_irq_disable() 	__asm__ __volatile__ ( "di" : : :"memory");
 #define local_irq_enable()	__asm__ __volatile__ ( "ei" : : :"memory");
@@ -53,7 +53,7 @@ struct __xchg_dummy { unsigned long a[10
 #define irqs_disabled()			\
 ({					\
 	unsigned long flags;		\
-	local_save_flags(flags);	\
+	local_read_flags(flags);	\
 	!(flags & (1<<5));		\
 })
 
Index: linux-x86.q/include/asm-cris/arch-v32/system.h
===================================================================
--- linux-x86.q.orig/include/asm-cris/arch-v32/system.h
+++ linux-x86.q/include/asm-cris/arch-v32/system.h
@@ -45,7 +45,7 @@ struct __xchg_dummy { unsigned long a[10
 #define __xg(x) ((struct __xchg_dummy *)(x))
 
 /* Used for interrupt control. */
-#define local_save_flags(x) \
+#define local_read_flags(x) \
 	__asm__ __volatile__ ("move $ccs, %0" : "=rm" (x) : : "memory");
 
 #define local_irq_restore(x) \
@@ -58,7 +58,7 @@ struct __xchg_dummy { unsigned long a[10
 ({				\
 	unsigned long flags;	\
 				\
-	local_save_flags(flags);\
+	local_read_flags(flags);\
 	!(flags & (1 << I_CCS_BITNR));	\
 })
 
Index: linux-x86.q/include/asm-frv/system.h
===================================================================
--- linux-x86.q.orig/include/asm-frv/system.h
+++ linux-x86.q/include/asm-frv/system.h
@@ -70,7 +70,7 @@ do {								\
 		     );						\
 } while(0)
 
-#define local_save_flags(flags)					\
+#define local_read_flags(flags)					\
 do {								\
 	typecheck(unsigned long, flags);			\
 	asm volatile("movsg ccr,%0"				\
@@ -86,12 +86,12 @@ do {								\
 } while(0)
 
 #define irqs_disabled() \
-	({unsigned long flags; local_save_flags(flags); flags; })
+	({unsigned long flags; local_read_flags(flags); flags; })
 
 #define	local_irq_save(flags)			\
 do {						\
 	typecheck(unsigned long, flags);	\
-	local_save_flags(flags);		\
+	local_read_flags(flags);		\
 	local_irq_disable();			\
 } while(0)
 
@@ -137,7 +137,7 @@ do {							\
 		     : "memory");			\
 } while(0)
 
-#define __local_save_flags(flags)		\
+#define __local_read_flags(flags)		\
 do {						\
 	typecheck(unsigned long, flags);	\
 	asm("movsg psr,%0"			\
Index: linux-x86.q/include/asm-h8300/system.h
===================================================================
--- linux-x86.q.orig/include/asm-h8300/system.h
+++ linux-x86.q/include/asm-h8300/system.h
@@ -72,7 +72,7 @@ asmlinkage void resume(void);
 #define local_irq_enable()      __sti()
 #define local_irq_save(x)	({ __save_flags(x); local_irq_disable(); })
 #define local_irq_restore(x)	__restore_flags(x)
-#define local_save_flags(x)     __save_flags(x)
+#define local_read_flags(x)     __save_flags(x)
 
 /*
  * Force strict CPU ordering.
Index: linux-x86.q/include/asm-ia64/system.h
===================================================================
--- linux-x86.q.orig/include/asm-ia64/system.h
+++ linux-x86.q/include/asm-ia64/system.h
@@ -160,7 +160,7 @@ do {								\
 do {								\
 	unsigned long old_psr, psr = (x);			\
 								\
-	local_save_flags(old_psr);				\
+	local_read_flags(old_psr);				\
 	__local_irq_restore(psr);				\
 	if ((old_psr & IA64_PSR_I) && !(psr & IA64_PSR_I))	\
 		__save_ip();					\
@@ -173,12 +173,12 @@ do {								\
 #endif /* !CONFIG_IA64_DEBUG_IRQ */
 
 #define local_irq_enable()	({ ia64_stop(); ia64_ssm(IA64_PSR_I); ia64_srlz_d(); })
-#define local_save_flags(flags)	({ ia64_stop(); (flags) = ia64_getreg(_IA64_REG_PSR); })
+#define local_read_flags(flags)	({ ia64_stop(); (flags) = ia64_getreg(_IA64_REG_PSR); })
 
 #define irqs_disabled()				\
 ({						\
 	unsigned long __ia64_id_flags;		\
-	local_save_flags(__ia64_id_flags);	\
+	local_read_flags(__ia64_id_flags);	\
 	(__ia64_id_flags & IA64_PSR_I) == 0;	\
 })
 
Index: linux-x86.q/include/asm-m32r/system.h
===================================================================
--- linux-x86.q.orig/include/asm-m32r/system.h
+++ linux-x86.q/include/asm-m32r/system.h
@@ -84,7 +84,7 @@ static inline void local_irq_disable(voi
 }
 #endif	/* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */
 
-#define local_save_flags(x) \
+#define local_read_flags(x) \
 	__asm__ __volatile__("mvfc %0,psw" : "=r"(x) : /* no input */)
 
 #define local_irq_restore(x) \
@@ -115,7 +115,7 @@ static inline void local_irq_disable(voi
 #define irqs_disabled()					\
 	({						\
 		unsigned long flags;			\
-		local_save_flags(flags);		\
+		local_read_flags(flags);		\
 		!(flags & 0x40);			\
 	})
 
Index: linux-x86.q/include/asm-m68k/system.h
===================================================================
--- linux-x86.q.orig/include/asm-m68k/system.h
+++ linux-x86.q/include/asm-m68k/system.h
@@ -73,18 +73,18 @@ asmlinkage void resume(void);
 })
 #endif
 #define local_irq_disable() asm volatile ("oriw  #0x0700,%%sr": : : "memory")
-#define local_save_flags(x) asm volatile ("movew %%sr,%0":"=d" (x) : : "memory")
+#define local_read_flags(x) asm volatile ("movew %%sr,%0":"=d" (x) : : "memory")
 #define local_irq_restore(x) asm volatile ("movew %0,%%sr": :"d" (x) : "memory")
 
 static inline int irqs_disabled(void)
 {
 	unsigned long flags;
-	local_save_flags(flags);
+	local_read_flags(flags);
 	return flags & ~ALLOWINT;
 }
 
 /* For spinlocks etc */
-#define local_irq_save(x)	({ local_save_flags(x); local_irq_disable(); })
+#define local_irq_save(x)	({ local_read_flags(x); local_irq_disable(); })
 
 #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
 
Index: linux-x86.q/include/asm-m68knommu/system.h
===================================================================
--- linux-x86.q.orig/include/asm-m68knommu/system.h
+++ linux-x86.q/include/asm-m68knommu/system.h
@@ -79,18 +79,18 @@ asmlinkage void resume(void);
 #define local_irq_disable() asm volatile ("oriw  #0x0700,%%sr": : : "memory")
 #endif
 
-#define local_save_flags(x) asm volatile ("movew %%sr,%0":"=d" (x) : : "memory")
+#define local_read_flags(x) asm volatile ("movew %%sr,%0":"=d" (x) : : "memory")
 #define local_irq_restore(x) asm volatile ("movew %0,%%sr": :"d" (x) : "memory")
 
 /* For spinlocks etc */
 #ifndef local_irq_save
-#define local_irq_save(x) do { local_save_flags(x); local_irq_disable(); } while (0)
+#define local_irq_save(x) do { local_read_flags(x); local_irq_disable(); } while (0)
 #endif
 
 #define	irqs_disabled()			\
 ({					\
 	unsigned long flags;		\
-	local_save_flags(flags);	\
+	local_read_flags(flags);	\
 	((flags & 0x0700) == 0x0700);	\
 })
 
Index: linux-x86.q/include/asm-mips/irqflags.h
===================================================================
--- linux-x86.q.orig/include/asm-mips/irqflags.h
+++ linux-x86.q/include/asm-mips/irqflags.h
@@ -97,7 +97,7 @@ static inline void raw_local_irq_disable
 }
 
 __asm__(
-	"	.macro	raw_local_save_flags flags			\n"
+	"	.macro	raw_local_read_flags flags			\n"
 	"	.set	push						\n"
 	"	.set	reorder						\n"
 #ifdef CONFIG_MIPS_MT_SMTC
@@ -108,9 +108,9 @@ __asm__(
 	"	.set	pop						\n"
 	"	.endm							\n");
 
-#define raw_local_save_flags(x)						\
+#define raw_local_read_flags(x)						\
 __asm__ __volatile__(							\
-	"raw_local_save_flags %0"					\
+	"raw_local_read_flags %0"					\
 	: "=r" (x))
 
 __asm__(
Index: linux-x86.q/include/asm-parisc/system.h
===================================================================
--- linux-x86.q.orig/include/asm-parisc/system.h
+++ linux-x86.q/include/asm-parisc/system.h
@@ -49,7 +49,7 @@ extern struct task_struct *_switch_to(st
 } while(0)
 
 /* interrupt control */
-#define local_save_flags(x)	__asm__ __volatile__("ssm 0, %0" : "=r" (x) : : "memory")
+#define local_read_flags(x)	__asm__ __volatile__("ssm 0, %0" : "=r" (x) : : "memory")
 #define local_irq_disable()	__asm__ __volatile__("rsm %0,%%r0\n" : : "i" (PSW_I) : "memory" )
 #define local_irq_enable()	__asm__ __volatile__("ssm %0,%%r0\n" : : "i" (PSW_I) : "memory" )
 
@@ -61,7 +61,7 @@ extern struct task_struct *_switch_to(st
 #define irqs_disabled()			\
 ({					\
 	unsigned long flags;		\
-	local_save_flags(flags);	\
+	local_read_flags(flags);	\
 	(flags & PSW_I) == 0;		\
 })
 
Index: linux-x86.q/include/asm-powerpc/hw_irq.h
===================================================================
--- linux-x86.q.orig/include/asm-powerpc/hw_irq.h
+++ linux-x86.q/include/asm-powerpc/hw_irq.h
@@ -43,7 +43,7 @@ extern void local_irq_restore(unsigned l
 extern void iseries_handle_interrupts(void);
 
 #define local_irq_enable()	local_irq_restore(1)
-#define local_save_flags(flags)	((flags) = local_get_flags())
+#define local_read_flags(flags)	((flags) = local_get_flags())
 #define local_irq_save(flags)	((flags) = local_irq_disable())
 
 #define irqs_disabled()		(local_get_flags() == 0)
@@ -105,7 +105,7 @@ static inline void local_irq_save_ptr(un
 	__asm__ __volatile__("": : :"memory");
 }
 
-#define local_save_flags(flags)	((flags) = mfmsr())
+#define local_read_flags(flags)	((flags) = mfmsr())
 #define local_irq_save(flags)	local_irq_save_ptr(&flags)
 #define irqs_disabled()		((mfmsr() & MSR_EE) == 0)
 
Index: linux-x86.q/include/asm-powerpc/irqflags.h
===================================================================
--- linux-x86.q.orig/include/asm-powerpc/irqflags.h
+++ linux-x86.q/include/asm-powerpc/irqflags.h
@@ -11,7 +11,7 @@
 #define _ASM_IRQFLAGS_H
 
 /*
- * Get definitions for raw_local_save_flags(x), etc.
+ * Get definitions for raw_local_read_flags(x), etc.
  */
 #include <asm-powerpc/hw_irq.h>
 
Index: linux-x86.q/include/asm-powerpc/spinlock.h
===================================================================
--- linux-x86.q.orig/include/asm-powerpc/spinlock.h
+++ linux-x86.q/include/asm-powerpc/spinlock.h
@@ -126,7 +126,7 @@ static void __inline__ __raw_spin_lock_f
 	while (1) {
 		if (likely(__spin_trylock(lock) == 0))
 			break;
-		local_save_flags(flags_dis);
+		local_read_flags(flags_dis);
 		local_irq_restore(flags);
 		do {
 			HMT_low();
Index: linux-x86.q/include/asm-s390/irqflags.h
===================================================================
--- linux-x86.q.orig/include/asm-s390/irqflags.h
+++ linux-x86.q/include/asm-s390/irqflags.h
@@ -83,7 +83,7 @@ static inline unsigned long raw_local_ir
 	return __raw_local_irq_stnsm(0xfc);
 }
 
-#define raw_local_save_flags(x)						\
+#define raw_local_read_flags(x)						\
 do {									\
 	typecheck(unsigned long, x);					\
 	(x) = __raw_local_irq_stosm(0x00);				\
Index: linux-x86.q/include/asm-sh/irqflags.h
===================================================================
--- linux-x86.q.orig/include/asm-sh/irqflags.h
+++ linux-x86.q/include/asm-sh/irqflags.h
@@ -62,7 +62,7 @@ static inline void clear_bl_bit(void)
 	);
 }
 
-static inline unsigned long __raw_local_save_flags(void)
+static inline unsigned long __raw_local_read_flags(void)
 {
 	unsigned long flags;
 
@@ -77,8 +77,8 @@ static inline unsigned long __raw_local_
 	return flags;
 }
 
-#define raw_local_save_flags(flags) \
-		do { (flags) = __raw_local_save_flags(); } while (0)
+#define raw_local_read_flags(flags) \
+		do { (flags) = __raw_local_read_flags(); } while (0)
 
 static inline int raw_irqs_disabled_flags(unsigned long flags)
 {
@@ -87,7 +87,7 @@ static inline int raw_irqs_disabled_flag
 
 static inline int raw_irqs_disabled(void)
 {
-	unsigned long flags = __raw_local_save_flags();
+	unsigned long flags = __raw_local_read_flags();
 
 	return raw_irqs_disabled_flags(flags);
 }
Index: linux-x86.q/include/asm-sh64/system.h
===================================================================
--- linux-x86.q.orig/include/asm-sh64/system.h
+++ linux-x86.q/include/asm-sh64/system.h
@@ -96,7 +96,7 @@ static __inline__ void local_irq_disable
 			     : "r" (__dummy1));
 }
 
-#define local_save_flags(x) 						\
+#define local_read_flags(x) 						\
 (__extension__ ({	unsigned long long __dummy=SR_MASK_LL;		\
 	__asm__ __volatile__(						\
 		"getcon	" __SR ", %0\n\t"				\
@@ -123,7 +123,7 @@ static __inline__ void local_irq_disable
 #define irqs_disabled()			\
 ({					\
 	unsigned long flags;		\
-	local_save_flags(flags);	\
+	local_read_flags(flags);	\
 	(flags != 0);			\
 })
 
Index: linux-x86.q/include/asm-sparc/irqflags.h
===================================================================
--- linux-x86.q.orig/include/asm-sparc/irqflags.h
+++ linux-x86.q/include/asm-sparc/irqflags.h
@@ -24,7 +24,7 @@ static inline unsigned long getipl(void)
         return retval;
 }
 
-#define raw_local_save_flags(flags) ((flags) = getipl())
+#define raw_local_read_flags(flags) ((flags) = getipl())
 #define raw_local_irq_save(flags)   ((flags) = __raw_local_irq_save())
 #define raw_local_irq_disable()     ((void) __raw_local_irq_save())
 #define raw_irqs_disabled()         ((getipl() & PSR_PIL) != 0)
Index: linux-x86.q/include/asm-sparc64/irqflags.h
===================================================================
--- linux-x86.q.orig/include/asm-sparc64/irqflags.h
+++ linux-x86.q/include/asm-sparc64/irqflags.h
@@ -12,7 +12,7 @@
 
 #ifndef __ASSEMBLY__
 
-static inline unsigned long __raw_local_save_flags(void)
+static inline unsigned long __raw_local_read_flags(void)
 {
 	unsigned long flags;
 
@@ -24,8 +24,8 @@ static inline unsigned long __raw_local_
 	return flags;
 }
 
-#define raw_local_save_flags(flags) \
-		do { (flags) = __raw_local_save_flags(); } while (0)
+#define raw_local_read_flags(flags) \
+		do { (flags) = __raw_local_read_flags(); } while (0)
 
 static inline void raw_local_irq_restore(unsigned long flags)
 {
@@ -64,7 +64,7 @@ static inline int raw_irqs_disabled_flag
 
 static inline int raw_irqs_disabled(void)
 {
-	unsigned long flags = __raw_local_save_flags();
+	unsigned long flags = __raw_local_read_flags();
 
 	return raw_irqs_disabled_flags(flags);
 }
@@ -74,7 +74,7 @@ static inline int raw_irqs_disabled(void
  */
 static inline unsigned long __raw_local_irq_save(void)
 {
-	unsigned long flags = __raw_local_save_flags();
+	unsigned long flags = __raw_local_read_flags();
 
 	raw_local_irq_disable();
 
Index: linux-x86.q/include/asm-um/system-generic.h
===================================================================
--- linux-x86.q.orig/include/asm-um/system-generic.h
+++ linux-x86.q/include/asm-um/system-generic.h
@@ -8,7 +8,7 @@
 #undef local_irq_restore
 #undef local_irq_disable
 #undef local_irq_enable
-#undef local_save_flags
+#undef local_read_flags
 #undef local_irq_restore
 #undef local_irq_enable
 #undef local_irq_disable
@@ -23,12 +23,12 @@ extern int get_signals(void);
 extern void block_signals(void);
 extern void unblock_signals(void);
 
-#define local_save_flags(flags) do { typecheck(unsigned long, flags); \
+#define local_read_flags(flags) do { typecheck(unsigned long, flags); \
 				     (flags) = get_signals(); } while(0)
 #define local_irq_restore(flags) do { typecheck(unsigned long, flags); \
 				      set_signals(flags); } while(0)
 
-#define local_irq_save(flags) do { local_save_flags(flags); \
+#define local_irq_save(flags) do { local_read_flags(flags); \
                                    local_irq_disable(); } while(0)
 
 #define local_irq_enable() unblock_signals()
@@ -37,7 +37,7 @@ extern void unblock_signals(void);
 #define irqs_disabled()                 \
 ({                                      \
         unsigned long flags;            \
-        local_save_flags(flags);        \
+        local_read_flags(flags);        \
         (flags == 0);                   \
 })
 
Index: linux-x86.q/include/asm-v850/system.h
===================================================================
--- linux-x86.q.orig/include/asm-v850/system.h
+++ linux-x86.q/include/asm-v850/system.h
@@ -37,14 +37,14 @@ extern void *switch_thread (struct threa
 #define local_irq_enable()	__asm__ __volatile__ ("ei")
 #define local_irq_disable()	__asm__ __volatile__ ("di")
 
-#define local_save_flags(flags) \
+#define local_read_flags(flags) \
   __asm__ __volatile__ ("stsr %1, %0" : "=r" (flags) : "i" (SR_PSW))
 #define local_restore_flags(flags) \
   __asm__ __volatile__ ("ldsr %0, %1" :: "r" (flags), "i" (SR_PSW))
 
 /* For spinlocks etc */
 #define	local_irq_save(flags) \
-  do { local_save_flags (flags); local_irq_disable (); } while (0) 
+  do { local_read_flags (flags); local_irq_disable (); } while (0) 
 #define local_irq_restore(flags) \
   local_restore_flags (flags);
 
@@ -52,7 +52,7 @@ extern void *switch_thread (struct threa
 static inline int irqs_disabled (void)
 {
 	unsigned flags;
-	local_save_flags (flags);
+	local_read_flags (flags);
 	return !!(flags & 0x20);
 }
 
Index: linux-x86.q/include/asm-x86/irqflags.h
===================================================================
--- linux-x86.q.orig/include/asm-x86/irqflags.h
+++ linux-x86.q/include/asm-x86/irqflags.h
@@ -60,7 +60,7 @@ static inline void native_halt(void)
 #else
 #ifndef __ASSEMBLY__
 
-static inline unsigned long __raw_local_save_flags(void)
+static inline unsigned long __raw_local_read_flags(void)
 {
 	return native_save_fl();
 }
@@ -103,7 +103,7 @@ static inline void halt(void)
  */
 static inline unsigned long __raw_local_irq_save(void)
 {
-	unsigned long flags = __raw_local_save_flags();
+	unsigned long flags = __raw_local_read_flags();
 
 	raw_local_irq_disable();
 
@@ -131,8 +131,8 @@ static inline unsigned long __raw_local_
 #endif /* CONFIG_PARAVIRT */
 
 #ifndef __ASSEMBLY__
-#define raw_local_save_flags(flags) \
-		do { (flags) = __raw_local_save_flags(); } while (0)
+#define raw_local_read_flags(flags) \
+		do { (flags) = __raw_local_read_flags(); } while (0)
 
 #define raw_local_irq_save(flags) \
 		do { (flags) = __raw_local_irq_save(); } while (0)
@@ -144,7 +144,7 @@ static inline int raw_irqs_disabled_flag
 
 static inline int raw_irqs_disabled(void)
 {
-	unsigned long flags = __raw_local_save_flags();
+	unsigned long flags = __raw_local_read_flags();
 
 	return raw_irqs_disabled_flags(flags);
 }
@@ -165,7 +165,7 @@ static inline void trace_hardirqs_fixup_
 
 static inline void trace_hardirqs_fixup(void)
 {
-	unsigned long flags = __raw_local_save_flags();
+	unsigned long flags = __raw_local_read_flags();
 
 	trace_hardirqs_fixup_flags(flags);
 }
Index: linux-x86.q/include/asm-x86/paravirt.h
===================================================================
--- linux-x86.q.orig/include/asm-x86/paravirt.h
+++ linux-x86.q/include/asm-x86/paravirt.h
@@ -1124,7 +1124,7 @@ extern struct paravirt_patch_site __para
 #define PV_FLAGS_ARG "D"
 #endif
 
-static inline unsigned long __raw_local_save_flags(void)
+static inline unsigned long __raw_local_read_flags(void)
 {
 	unsigned long f;
 
@@ -1176,7 +1176,7 @@ static inline unsigned long __raw_local_
 {
 	unsigned long f;
 
-	f = __raw_local_save_flags();
+	f = __raw_local_read_flags();
 	raw_local_irq_disable();
 	return f;
 }
Index: linux-x86.q/include/asm-xtensa/system.h
===================================================================
--- linux-x86.q.orig/include/asm-xtensa/system.h
+++ linux-x86.q/include/asm-xtensa/system.h
@@ -17,7 +17,7 @@
 
 /* interrupt control */
 
-#define local_save_flags(x)						\
+#define local_read_flags(x)						\
 	__asm__ __volatile__ ("rsr %0,"__stringify(PS) : "=a" (x));
 #define local_irq_restore(x)	do {					\
 	__asm__ __volatile__ ("wsr %0, "__stringify(PS)" ; rsync" 	\
@@ -42,7 +42,7 @@ static inline void local_irq_enable(void
 static inline int irqs_disabled(void)
 {
 	unsigned long flags;
-	local_save_flags(flags);
+	local_read_flags(flags);
 	return flags & 0xf;
 }
 
Index: linux-x86.q/include/linux/ide.h
===================================================================
--- linux-x86.q.orig/include/linux/ide.h
+++ linux-x86.q/include/linux/ide.h
@@ -1394,7 +1394,7 @@ extern struct mutex ide_cfg_mtx;
  * ide_drive_t->hwif: constant, no locking
  */
 
-#define local_irq_set(flags)	do { local_save_flags((flags)); local_irq_enable_in_hardirq(); } while (0)
+#define local_irq_set(flags)	do { local_read_flags((flags)); local_irq_enable_in_hardirq(); } while (0)
 
 extern struct bus_type ide_bus_type;
 
Index: linux-x86.q/include/linux/interrupt.h
===================================================================
--- linux-x86.q.orig/include/linux/interrupt.h
+++ linux-x86.q/include/linux/interrupt.h
@@ -213,7 +213,7 @@ static inline void __deprecated sti(void
 }
 static inline void __deprecated save_flags(unsigned long *x)
 {
-	local_save_flags(*x);
+	local_read_flags(*x);
 }
 #define save_flags(x) save_flags(&x)
 static inline void __deprecated restore_flags(unsigned long x)
Index: linux-x86.q/include/linux/irqflags.h
===================================================================
--- linux-x86.q.orig/include/linux/irqflags.h
+++ linux-x86.q/include/linux/irqflags.h
@@ -80,13 +80,13 @@
 		raw_safe_halt();				\
 	} while (0)
 
-#define local_save_flags(flags)		raw_local_save_flags(flags)
+#define local_read_flags(flags)		raw_local_read_flags(flags)
 
 #define irqs_disabled()						\
 ({								\
 	unsigned long flags;					\
 								\
-	raw_local_save_flags(flags);				\
+	raw_local_read_flags(flags);				\
 	raw_irqs_disabled_flags(flags);				\
 })
 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21 10:27           ` Ingo Molnar
@ 2007-12-21 10:42             ` Andrew Morton
  2007-12-21 11:12               ` Ingo Molnar
  0 siblings, 1 reply; 19+ messages in thread
From: Andrew Morton @ 2007-12-21 10:42 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel

On Fri, 21 Dec 2007 11:27:27 +0100 Ingo Molnar <mingo@elte.hu> wrote:

> > local_read_flags().
> > 
> > > that should have been raw_local_irq_save(flags)!
> > 
> > So raw_local_save_flags() and raw_local_irq_save() have different semantics.
> > 
> > omigawd, what have we done?
> 
> i really tried to get this fixed years ago - but did not think of 
> local_read_flags as a solution. The patch below fixes this.
> 
> (if it's too burdensome to carry right now then i can regenerate this 
> patch in 30 seconds in the 2.6.25 merge window - but please remind me 
> then. Perhaps put in a patch into your queue that adds a comment to 
> remind me :-) )

I'd suggest that we add a local_read_flags() along with local_save_flags().
Then I can merge the parts of the patch which don't get destroyed by ongoing
churn and then we can come in and clean up the stragglers later.

box:/usr/src/25> grep -l local_save_flags patches/*.patch 
patches/git-perfmon.patch
patches/git-sh.patch
patches/git-x86.patch
patches/i386-use-raw_smp_processor_id-in-die.patch
patches/mn10300-add-the-mn10300-am33-architecture-to-the-kernel.patch
patches/origin.patch



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21 10:42             ` Andrew Morton
@ 2007-12-21 11:12               ` Ingo Molnar
  2007-12-21 11:34                 ` Andrew Morton
  0 siblings, 1 reply; 19+ messages in thread
From: Ingo Molnar @ 2007-12-21 11:12 UTC (permalink / raw)
  To: Andrew Morton; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel


* Andrew Morton <akpm@linux-foundation.org> wrote:

> I'd suggest that we add a local_read_flags() along with 
> local_save_flags(). Then I can merge the parts of the patch which 
> don't get destroyed by ongoing churn and then we can come in and clean 
> up the stragglers later.

ah, indeed.

like the patch below? (Only local_save_flags() should be used by drivers 
- but i stuck in the other variants as well for completeness.)

	Ingo

-------------------->
Subject: migration helpers for local_save_flags => local_read_flags rename
From: Ingo Molnar <mingo@elte.hu>

prepare for renaming of all local_save_flags variants to local_read_flags,
via migration helpers, as suggested by Andrew Morton.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 include/linux/irqflags.h |    9 +++++++++
 1 file changed, 9 insertions(+)

Index: linux-x86.q/include/linux/irqflags.h
===================================================================
--- linux-x86.q.orig/include/linux/irqflags.h
+++ linux-x86.q/include/linux/irqflags.h
@@ -93,4 +93,13 @@
 #define irqs_disabled_flags(flags)	raw_irqs_disabled_flags(flags)
 #endif		/* CONFIG_X86 */
 
+/*
+ * Migration helpers - the proper API is the local_read_flags API.
+ * Will go away in v2.6.26.
+ */
+#define local_save_flags		local_read_flags
+#define __local_save_flags		__local_read_flags
+#define raw_local_save_flags		raw_local_read_flags
+#define __raw_local_save_flags		__raw_local_read_flags
+
 #endif

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21 11:12               ` Ingo Molnar
@ 2007-12-21 11:34                 ` Andrew Morton
  2007-12-21 12:31                   ` Ingo Molnar
  0 siblings, 1 reply; 19+ messages in thread
From: Andrew Morton @ 2007-12-21 11:34 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel

On Fri, 21 Dec 2007 12:12:07 +0100 Ingo Molnar <mingo@elte.hu> wrote:

> 
> * Andrew Morton <akpm@linux-foundation.org> wrote:
> 
> > I'd suggest that we add a local_read_flags() along with 
> > local_save_flags(). Then I can merge the parts of the patch which 
> > don't get destroyed by ongoing churn and then we can come in and clean 
> > up the stragglers later.
> 
> ah, indeed.
> 
> like the patch below? (Only local_save_flags() should be used by drivers 
> - but i stuck in the other variants as well for completeness.)
> 
> 	Ingo
> 
> -------------------->
> Subject: migration helpers for local_save_flags => local_read_flags rename
> From: Ingo Molnar <mingo@elte.hu>
> 
> prepare for renaming of all local_save_flags variants to local_read_flags,
> via migration helpers, as suggested by Andrew Morton.
> 
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
> ---
>  include/linux/irqflags.h |    9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> Index: linux-x86.q/include/linux/irqflags.h
> ===================================================================
> --- linux-x86.q.orig/include/linux/irqflags.h
> +++ linux-x86.q/include/linux/irqflags.h
> @@ -93,4 +93,13 @@
>  #define irqs_disabled_flags(flags)	raw_irqs_disabled_flags(flags)
>  #endif		/* CONFIG_X86 */
>  
> +/*
> + * Migration helpers - the proper API is the local_read_flags API.
> + * Will go away in v2.6.26.
> + */
> +#define local_save_flags		local_read_flags
> +#define __local_save_flags		__local_read_flags
> +#define raw_local_save_flags		raw_local_read_flags
> +#define __raw_local_save_flags		__raw_local_read_flags
> +

Looks good.  We also have local_irq_save(), raw_local_irq_save() and
__raw_local_irq_save() which might or might not disable interrupts.  (Do we
really need three flavours of these?)

I guess that people's understanding of spin_lock_irqsave() (note the
irqsave versus irq_save inconsistency) is sufficiently good for nobody to
get tripped up by local_irq_save().  But it's a poor name nonetheless.


It'd be nice to move away from macros too if poss?

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Linux 2.6.24-rc5 x86 architecture no longer Oopses...
  2007-12-21 11:34                 ` Andrew Morton
@ 2007-12-21 12:31                   ` Ingo Molnar
  0 siblings, 0 replies; 19+ messages in thread
From: Ingo Molnar @ 2007-12-21 12:31 UTC (permalink / raw)
  To: Andrew Morton; +Cc: trond.myklebust, tglx, mingo, hpa, linux-kernel


* Andrew Morton <akpm@linux-foundation.org> wrote:

> > +/*
> > + * Migration helpers - the proper API is the local_read_flags API.
> > + * Will go away in v2.6.26.
> > + */
> > +#define local_save_flags		local_read_flags
> > +#define __local_save_flags		__local_read_flags
> > +#define raw_local_save_flags		raw_local_read_flags
> > +#define __raw_local_save_flags		__raw_local_read_flags
> > +
> 
> Looks good.  We also have local_irq_save(), raw_local_irq_save() and 
> __raw_local_irq_save() which might or might not disable interrupts.  
> (Do we really need three flavours of these?)

all disable interrupts. All the raw_ and __ APIs are for internal use 
only, they should _not_ be used by anything but directly lockdep related 
code.

> I guess that people's understanding of spin_lock_irqsave() (note the 
> irqsave versus irq_save inconsistency) is sufficiently good for nobody 
> to get tripped up by local_irq_save().  But it's a poor name 
> nonetheless.

yeah, but it's the historic name that stems from the old cli() API that 
had "global scope". I guess these days people know that irq-disabling is 
a CPU-local business, not a global thing? I cannot think of any good 
alternative name though.

	Ingo

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2007-12-21 12:31 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-12-20 22:40 Linux 2.6.24-rc5 x86 architecture no longer Oopses Trond Myklebust
2007-12-20 22:54 ` Andrew Morton
2007-12-20 22:56   ` Andrew Morton
2007-12-20 23:06     ` Trond Myklebust
2007-12-21  0:55     ` Rafael J. Wysocki
2007-12-21 10:19       ` Ingo Molnar
2007-12-20 23:04   ` Trond Myklebust
2007-12-20 23:47   ` Ingo Molnar
2007-12-21  0:02     ` Andrew Morton
2007-12-21  0:05       ` Ingo Molnar
2007-12-21  0:19     ` Andrew Morton
2007-12-21  0:30       ` Ingo Molnar
2007-12-21  0:40         ` Andrew Morton
2007-12-21  0:44           ` Ingo Molnar
2007-12-21 10:27           ` Ingo Molnar
2007-12-21 10:42             ` Andrew Morton
2007-12-21 11:12               ` Ingo Molnar
2007-12-21 11:34                 ` Andrew Morton
2007-12-21 12:31                   ` Ingo Molnar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.